RETOS C++

Iniciado por Stakewinner00, 20 Septiembre 2012, 18:20 PM

0 Miembros y 1 Visitante están viendo este tema.

dato000

#90
Perdón por el doble post, pero son cosas diferentes.

Cita de: ecfisa en 21 Septiembre 2012, 04:43 AM
Entiendo, pero por el texto de la consigna "Un programa que diga el nombre de dígitos que tiene el texto introducido ", no interpreté que se tratase de la cantidad de caracteres de la cadena ingresada.

Entonces:
Código (cpp) [Seleccionar]

#include<iostream>

using namespace std;

int main() {
 string texto;

 cout << "Texto: ";
 getline(cin, texto);
 cout << "El texto tiene " << texto.length() << " caracteres.";
 cin.get();
 return 0;
}


Saludos.

mi solución, me falla porque no lee espacios, y averiguando encontre que la solución de ecfisa, es la mejor...

Código (c++) [Seleccionar]

#include <iostream>

using namespace std;

int main() {
 char palabra[100];
 int contador = 0;


 cout << "Digita la palabra:  ";
 cin >> palabra;

 for (int i = 0; i < 100; i++ )
 {
    if ( palabra[i] !=  '\0' )
       contador++;
   else
        break;
 }

 cout << "LA PALABRA TIENE " << contador << " LETRAS";
 return 0;
}


De todas maneras, lo intente XDD buenos retos. Sigo!!



overxfl0w13

RETO 13 (Sudoku)

No consigo entender el enunciado, lo que se ha dado, ¿un sudoku?, no sé como se puede dar un sudoku, lo he interpretado como hacer un sudoku de un tamaño a elegir por el programador, he escogido 4x4 para no alargar el code.
Aquí dejo el source:

Window.hpp
Código (cpp) [Seleccionar]

#include <QtGui>
#include<QMessageBox>
class window : public QMainWindow
{
    Q_OBJECT

    public:

        window();
        void constructWindow();

    public slots:

        void compruebaSudoku();


    private:

        QLineEdit *numero1,*numero2,*numero3,*numero4,*numero5,*numero6,*numero7,*numero8,*numero9,*numero10,
        *numero11,*numero12,*numero13,*numero14,*numero15,*numero16;
        QVBoxLayout *mainLayout;
        QHBoxLayout *primLayout,*segLayout,*terLayout,*cuarLayout;
        QPushButton *acceptButton;
        QWidget *myWindow;
        QMessageBox *finalizado,*error;
};



Window.cpp
Código (cpp) [Seleccionar]

#include "window.hpp"

window::window()
{
    numero1 = new QLineEdit;
    numero2 = new QLineEdit;
    numero3 = new QLineEdit;
    numero4 = new QLineEdit;
    numero5 = new QLineEdit;
    numero6 = new QLineEdit;
    numero7 = new QLineEdit;
    numero8 = new QLineEdit;
    numero9 = new QLineEdit;
    numero10 = new QLineEdit;
    numero11 = new QLineEdit;
    numero12 = new QLineEdit;
    numero13 = new QLineEdit;
    numero14 = new QLineEdit;
    numero15 = new QLineEdit;
    numero16 = new QLineEdit;
    mainLayout = new QVBoxLayout;
    primLayout = new QHBoxLayout;
    segLayout = new QHBoxLayout;
    terLayout = new QHBoxLayout;
    cuarLayout = new QHBoxLayout;
    finalizado = new QMessageBox;
    error = new QMessageBox;
    finalizado->setText("Sudoku Finalizado");
    error->setText("El sudoku introducido no es valido o no es correcto");
    acceptButton = new QPushButton("Aceptar");
    myWindow = new QWidget;
    myWindow->setMaximumSize(200,200);
    myWindow->setMinimumSize(200,200);
    myWindow->setWindowTitle("Sudoku 4x4 Overxfl0w");
    constructWindow();
    QObject::connect(acceptButton,SIGNAL(clicked()),this,SLOT(compruebaSudoku()));
    myWindow->show();
}

void window::constructWindow()
{
    numero2->setText("4");
    numero3->setText("2");
    numero4->setText("3");
    numero5->setText("3");
    numero6->setText("2");
    numero7->setText("1");
    numero8->setText("4");
    numero10->setText("3");
    numero11->setText("4");
    numero15->setText("3");
    numero2->setReadOnly(true);
    numero3->setReadOnly(true);
    numero4->setReadOnly(true);
    numero5->setReadOnly(true);
    numero6->setReadOnly(true);
    numero7->setReadOnly(true);
    numero8->setReadOnly(true);
    numero10->setReadOnly(true);
    numero11->setReadOnly(true);
    numero15->setReadOnly(true);
    primLayout->addWidget(numero1);
    primLayout->addWidget(numero2);
    primLayout->addWidget(numero3);
    primLayout->addWidget(numero4);
    mainLayout->addLayout(primLayout);
    segLayout->addWidget(numero5);
    segLayout->addWidget(numero6);
    segLayout->addWidget(numero7);
    segLayout->addWidget(numero8);
    mainLayout->addLayout(segLayout);
    terLayout->addWidget(numero9);
    terLayout->addWidget(numero10);
    terLayout->addWidget(numero11);
    terLayout->addWidget(numero12);
    mainLayout->addLayout(terLayout);
    cuarLayout->addWidget(numero13);
    cuarLayout->addWidget(numero14);
    cuarLayout->addWidget(numero15);
    cuarLayout->addWidget(numero16);
    mainLayout->addLayout(cuarLayout);
    mainLayout->addWidget(acceptButton);
    myWindow->setLayout(mainLayout);
}

void window::compruebaSudoku()
{
    if(numero1->text() == "1" && numero12->text() == "1" && numero16->text() == "2" && numero14->text() == "1" && numero9->text() == "2" && numero13->text() == "4")
    {
        finalizado->exec();
        exit(0);
    }
    else error->exec();
}


main.cpp
Código (cpp) [Seleccionar]

#include "window.hpp"
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    window window;
    return app.exec();
}





He usado Qt si ves que no puedes compilarlo, te paso el .exe compilado en estático.
[/url]

zonahurbana

Cita de: Stakewinner00 en 30 Septiembre 2012, 11:12 AM
zonahurbana   

a.cpp:6: warning: converting NULL to non-pointer type

yo utilizaria la funcion max(); de la libreria algortihm que te estalvia algunos if.
En CodeBlocks no me muestra error. ¿Usted podría recomendarme algún IDE?
Yo nunca hice eso de inicializar como NULL a un entero. Esta vez lo hice por probar, y como no me daba error, creí que era correcto. Lo que normalmente habría hecho es no inicializar la variable mayor. Ésta adoptaría como primer valor a nros[0]; y ya luego haría las comparaciones. Pero, ¿hay alguna manera de inicializar a un entero de modo que al compararlo siempre sean mayores que él? (Es decir, de modo que cual fuere el primer valor, reemplace a lo que venía por defecto y luego se continúe normalmente el proceso de comparación)
¿Aquella librería de la que usted habla es estándar? Es que siempre están diciendome que evite incluir librería no estándares. ¿Y sobre mi pregunta de la pausa?
Gracias por responder.
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

dato000

2- Crear programa que lea el contenido de un archivo de texto.

umm lo hice a lo simple, corto y claro.

Código (c++) [Seleccionar]
#include <iostream>
#include <fstream>
using namespace std;

int main () {
     ifstream nuevo("prueba.txt");
     char nombre[100];

     nuevo.getline(nombre, 100);
     cout << nombre;

     return 0;
}



overxfl0w13

#94
RETO 5

Código (cpp) [Seleccionar]

#include <iostream>
#include <fstream>
using namespace std;
int main(int argc,char* argv)
{
   char palabraGenerada[10];
   ofstream archivo;
   archivo.open("diccionario.txt",ofstream::app);
   for(int x=97;x<=122;x++)
   {
       for(int y=97;y<=122;y++)
       {
           for(int j=97;j<=122;j++)
           {
               for(int z=97;z<=122;z++)
               {
                   for(int a=97;a<=122;a++)
                   {
                       for(int b=97;b<=122;b++)
                       {
                           for(int m=97;m<=122;m++)
                           {
                               for(int n=97;n<=122;n++)
                               {
                                   for(int p=97;p<=122;p++)
                                   {
                                       archivo << char(x) << char(y) << char(j) << char(z) << char(a) << char(b) << char(m) << char(n) << char(p) << "\n";
                                   }
                               }
                           }
                       }
                   }
               }
           }
       }
   }
   return 0;
}


RETO 6 (Windows 7)

Código (cpp) [Seleccionar]
#include <windows.h>

int main(int argc,char* argv)
{
 SetCursorPos(0, 780);
 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, GetMessageExtraInfo());
 SetCursorPos(320,700);
 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, GetMessageExtraInfo());
 mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, GetMessageExtraInfo());
 return 0;
}


110 puntitos y espero el bonus por ser el primero en el 6 :D

Saludos
[/url]

Stakewinner00

#95
los bonues son por utilizar la funcion max o para crear un buen programa compatible con todo.

como algunos codigos de do-while

PD:Para saber si va el 6 lo tenog k probar, y me da miedo de k no salga error XDXD

PPD:Ya lo probe

overxfl0w13

Cita de: Stakewinner00 en  1 Octubre 2012, 15:02 PM
los bonues son por utilizar la funcion max o para crear un buen programa compatible con todo.

como algunos codigos de do-while

PD:Para saber si va el 6 lo tenog k probar, y me da miedo de k no salga error XDXD
bonus por usar max? no era por el primero o por el codigo más corto? eso pone en el primer post pero bueno xD.
[/url]

Stakewinner00

Cita de: overxfl0w13 en  1 Octubre 2012, 15:12 PM
bonus por usar max? no era por el primero o por el codigo más corto? eso pone en el primer post pero bueno xD.

lo del codigo mas corto si despues añadi lo de max para el numeor más grande

El codigo mas corto o el codigo mas rápido ganara un bónus.

Lo del primero no lo dice.

Cuando tenga tiempo revisare todos los códigos y comprobare cual va más rápido.

PD:Si alguien ve k le sume demasiados puntos o demasiados pocos k se queje 


overxfl0w13

#98
RETO 4

Código (cpp) [Seleccionar]

#include <iostream>
int main(int argc,char* argv)
{
   std::string palabra1,palabra2,palabra3,palabra4;
   std::cin >> palabra1 >> palabra2 >> palabra3 >> palabra4;
   if(palabra1 < palabra2 && palabra1 < palabra3 && palabra1 < palabra4){std::cout <<"La palabra mas pequenya es: " << palabra1 << std::endl;}
   else{if(palabra2 < palabra1 && palabra2 < palabra3 && palabra2 < palabra4){std::cout <<"La palabra mas pequenya es: " << palabra2 << std::endl;}
   else{if(palabra3 < palabra2 && palabra3 < palabra1 && palabra3 < palabra4){std::cout <<"La palabra mas pequenya es: " << palabra3 << std::endl;}
   else{if(palabra4 < palabra2 && palabra4 < palabra3 && palabra4 < palabra1){std::cout <<"La palabra mas pequenya es: " << palabra4 << std::endl;}}}}
   if(palabra1 == palabra2 && palabra1 == palabra3 && palabra1 == palabra4){std::cout <<"Todas las palabras son iguales" << std::endl;}
   return 0;
}
[/url]

Stakewinner00

ahora miro el code peor no seria mejor esto;


#include <iostream>
#include <algorithm>
using namespace std;

int main () {
int a,b,c,d;
cin >> a >> b >> c >> d;

if (max(a,b)>max(c,d)) {
  cout << max(a,b) << endl;
  } else {
    cout << max(c,d) << endl;
}
}


usando max con un solo if basta para comparar los 4 numeros, seguramente hay otras formas pero esta es una.