Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Juan821 en 5 Junio 2014, 04:50 am



Título: Necesito ayuda en un programa!
Publicado por: Juan821 en 5 Junio 2014, 04:50 am
En c++ necesito una base de datos que me guarde una pregunta 4 respuestas y la correcta he pensado en hacerlo con una matriz pero como lo haría o que podria hacer les agradeceria su ayuda


Título: Re: Necesito ayuda en un programa!
Publicado por: engel lex en 5 Junio 2014, 04:52 am
necesitas toda una conexión a base de datos, o un simple programa con 4 opciones de respuesta?

que sabes de c++? que llevas hecho?


Título: Re: Necesito ayuda en un programa!
Publicado por: Juan821 en 5 Junio 2014, 04:58 am
necesitas toda una conexión a base de datos, o un simple programa con 4 opciones de respuesta?

que sabes de c++? que llevas hecho?
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;
int His();
int   Cien();
int Depor();
int Geo();
int c=1;
int main()
   {
      int s,tot,u=0;
      srand(time(NULL));
       while (c==1)
      {
      cout<<"Presione cualquier tecla para escoger su categoria"<<endl;
      getch();
      s=rand()% 4 + 1;
      
      switch (s)
      {
      case 1:
         {
            His();
            break;
         }
      case 2:
         {
             Cien();
            break;
         }
      case 3:
         {
             Depor();
            break;
         }
      case 4:
         {
            Geo();
            break;
         }
      }
      }
      system ("pause");
      return 0;
   }

int His()
{
   system ("cls");
   cout<<"<===============Su categoria es historia===============>"<<endl;
   cout<<"Presione cualquier tecla para darle su pregunta"<<endl;
   getch();
   return 0;
}
int Depor()
{
   system ("cls");
   cout<<"<===============Su categoria es Ciencia===============>"<<endl;
   cout<<"Presione cualquier tecla para darle su pregunta"<<endl;
   getch();
   return 0;
}
int Cien()
{
   system ("cls");
   cout<<"<===============Su categoria es Deportes===============>"<<endl;
   cout<<"Presione cualquier tecla darle su pregunta"<<endl;
   getch();
   return 0;
}
int Geo()
{
   system ("cls");
   cout<<"<===============Su categoria es Deportes===============>"<<endl;
   cout<<"Presione cualquier tecla para darle su pregunta"<<endl;
   getch();
   return 0;
}



eso es lo que llevo hecho pero necesito una base de datos para poder poner las preguntas pongo nuevamente un numero aleatorio para la pregunta y este escogera el campo de ese numero luego se imprimiria la pregunta y las repuestas que estan en la base de datos y se compararia la respuesta correcta que tambien esta en la base de datos en otro campo seria algo asi yo se de Access pero he programado en otro lenguaje en c++ no se como hacer esto


Título: Re: Necesito ayuda en un programa!
Publicado por: engel lex en 5 Junio 2014, 05:07 am
la dificultad de tu programa acaba de subir de 1 a 5 sobre 10 XD


si consigo algo sobre como usar slqlite o access con c++ aviso


Título: Re: Necesito ayuda en un programa!
Publicado por: Juan821 en 5 Junio 2014, 05:13 am
Si la otra seria extender el codigo a 500000 lineas para poner las preguntas a punta ifs o cases jajajajajaja pero no jajajaja pero las matrices cuantos caracteres aceptan solo uno?


Título: Re: Necesito ayuda en un programa!
Publicado por: Drewermerc en 5 Junio 2014, 05:18 am
tambien o que podrias usar son estructuras o uso de archivo donde guardes las respuestas.
aqui hay algo sobre sqlite.
http://c.conclase.net/sqlite/?cap=013


Título: Re: Necesito ayuda en un programa!
Publicado por: engel lex en 5 Junio 2014, 05:20 am
aquí hay un ejemplo
Código
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4. #include <stdio.h>
  5. #include <cstdlib>
  6. #include <sqlite3.h> /* incluimos la cabecera de la libreria libsqlite3*/
  7.  
  8. using namespace std;
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12.    sqlite3 *db;                /* Definimos un puntero a la base de datos */
  13.    sqlite3_stmt *resultado;    /* Definimos un puntero a la respuesta de la consulta*/
  14.    int msg;                    /* valor de retorno de las sentencias */
  15.    string sentencia;           /* string para las sentencias */
  16.    const char* siguiente;      /* puntero a la siguiente sentencia */
  17.    char* error;                /* variable para el mensaje de error */
  18.  
  19.    msg = sqlite3_open("pucara.db",&db);    /* creo el archivo para la base de datos */
  20.    if (msg!=SQLITE_OK)                     /* verifico si hay error */
  21.    {
  22.        cout << "Error al crear la base de datosn" << endl;
  23.        exit(1);
  24.    }
  25.  
  26.    sentencia = "DROP TABLE IF EXISTS hosts;";  /* compongo un sentencia para crear la base de datos*/
  27.    sentencia += "CREATE TABLE hosts (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, ip TEXT NOT NULL, mac TEXT NOT NULL, nombre TEXT);";
  28.    msg = sqlite3_exec(db,sentencia.c_str(),NULL,NULL,&error);  /* ejecuto la sentencia */
  29.    if (msg!=SQLITE_OK)     /* verifico si hay error */
  30.    {
  31.        cout << error << endl;
  32.        exit(2);
  33.    }
  34.  
  35.    sentencia = "insert into hosts (id, ip, mac) values ('1', '192.168.0.1', '00:27:0e:00:00:00');"; /* compongo una nueva sentencias */
  36.    msg = sqlite3_exec(db,sentencia.c_str(),NULL,NULL,&error);  /* ejecuto la sentencia */
  37.    if (msg!=SQLITE_OK)     /* verifico si hay error */
  38.    {
  39.        cout << error << endl;
  40.        exit(2);
  41.    }
  42.  
  43.    sentencia = "SELECT * FROM hosts ORDER BY ip;"; /* compongo una sentencia de consulta */
  44.    msg = sqlite3_prepare(db,sentencia.c_str(),sentencia.length(),&resultado,&siguiente);   /* ejecuto la sentencia */
  45.    if (msg!=SQLITE_OK) /* verifico si hay error */
  46.    {
  47.        cout << "Error en la consulta" << endl;
  48.        exit(3);
  49.    }
  50.  
  51.    while (sqlite3_step(resultado)==SQLITE_ROW) /* imprimo el resultado de la consulta */
  52.    {
  53.        cout << sqlite3_column_int(resultado, 0) << " | ";
  54.        cout << sqlite3_column_text(resultado, 1) << " | ";
  55.        cout << sqlite3_column_text(resultado, 2) << endl;
  56.    }
  57.  
  58.    sqlite3_close(db);      /* cierro la base de datos*/
  59.    return 0;

solo te tienes que bajar las librerias de sql lite (creo que son estas (http://www.sqlite.org/download.html)) y en el linker -lsqlite3


la otra opcion más discreta simple y sensata es crear un archivo de texto y componerlo algo como

Código:
-GEOGRAFIA
¿Cual es la capital de iran?
¿en que pais nacio napoleon?
-HISTORIA
¿en que año nacio Simon Bolivar?
¿en que año murio Franco?
-CIENCIA
¿con que otro nombre se conoce el nitrotolueno?
¿cuantos atomos exactamente hay en el planeta tierra?
(fíjate que todo sin acento, si no tendrás que implantar métodos para manejarlos)

en este caso usas getline para ir recorriendo el texto linea a linea, hasta conseguir por ejemplo "-GEOGRAFIA" luego con un numero aleatorio (en mi caso del 1 al 2) es la cantidad de linea a avanzar... si es 2, haces 2 veces getline para obtener la segunda pregunta...


Título: Re: Necesito ayuda en un programa!
Publicado por: Juan821 en 5 Junio 2014, 05:25 am
aquí hay un ejemplo
Código
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4. #include <stdio.h>
  5. #include <cstdlib>
  6. #include <sqlite3.h> /* incluimos la cabecera de la libreria libsqlite3*/
  7.  
  8. using namespace std;
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12.    sqlite3 *db;                /* Definimos un puntero a la base de datos */
  13.    sqlite3_stmt *resultado;    /* Definimos un puntero a la respuesta de la consulta*/
  14.    int msg;                    /* valor de retorno de las sentencias */
  15.    string sentencia;           /* string para las sentencias */
  16.    const char* siguiente;      /* puntero a la siguiente sentencia */
  17.    char* error;                /* variable para el mensaje de error */
  18.  
  19.    msg = sqlite3_open("pucara.db",&db);    /* creo el archivo para la base de datos */
  20.    if (msg!=SQLITE_OK)                     /* verifico si hay error */
  21.    {
  22.        cout << "Error al crear la base de datosn" << endl;
  23.        exit(1);
  24.    }
  25.  
  26.    sentencia = "DROP TABLE IF EXISTS hosts;";  /* compongo un sentencia para crear la base de datos*/
  27.    sentencia += "CREATE TABLE hosts (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, ip TEXT NOT NULL, mac TEXT NOT NULL, nombre TEXT);";
  28.    msg = sqlite3_exec(db,sentencia.c_str(),NULL,NULL,&error);  /* ejecuto la sentencia */
  29.    if (msg!=SQLITE_OK)     /* verifico si hay error */
  30.    {
  31.        cout << error << endl;
  32.        exit(2);
  33.    }
  34.  
  35.    sentencia = "insert into hosts (id, ip, mac) values ('1', '192.168.0.1', '00:27:0e:00:00:00');"; /* compongo una nueva sentencias */
  36.    msg = sqlite3_exec(db,sentencia.c_str(),NULL,NULL,&error);  /* ejecuto la sentencia */
  37.    if (msg!=SQLITE_OK)     /* verifico si hay error */
  38.    {
  39.        cout << error << endl;
  40.        exit(2);
  41.    }
  42.  
  43.    sentencia = "SELECT * FROM hosts ORDER BY ip;"; /* compongo una sentencia de consulta */
  44.    msg = sqlite3_prepare(db,sentencia.c_str(),sentencia.length(),&resultado,&siguiente);   /* ejecuto la sentencia */
  45.    if (msg!=SQLITE_OK) /* verifico si hay error */
  46.    {
  47.        cout << "Error en la consulta" << endl;
  48.        exit(3);
  49.    }
  50.  
  51.    while (sqlite3_step(resultado)==SQLITE_ROW) /* imprimo el resultado de la consulta */
  52.    {
  53.        cout << sqlite3_column_int(resultado, 0) << " | ";
  54.        cout << sqlite3_column_text(resultado, 1) << " | ";
  55.        cout << sqlite3_column_text(resultado, 2) << endl;
  56.    }
  57.  
  58.    sqlite3_close(db);      /* cierro la base de datos*/
  59.    return 0;

solo te tienes que bajar las librerias de sql lite (creo que son estas (http://www.sqlite.org/download.html)) y en el linker -lsqlite3


la otra opcion más discreta simple y sensata es crear un archivo de texto y componerlo algo como

Código:
-GEOGRAFIA
¿Cual es la capital de iran?
¿en que pais nacio napoleon?
-HISTORIA
¿en que año nacio Simon Bolivar?
¿en que año murio Franco?
-CIENCIA
¿con que otro nombre se conoce el nitrotolueno?
¿cuantos atomos exactamente hay en el planeta tierra?
(fíjate que todo sin acento, si no tendrás que implantar métodos para manejarlos)

en este caso usas getline para ir recorriendo el texto linea a linea, hasta conseguir por ejemplo "-GEOGRAFIA" luego con un numero aleatorio (en mi caso del 1 al 2) es la cantidad de linea a avanzar... si es 2, haces 2 veces getline para obtener la segunda pregunta...
pero en el ultimo caso cuales serian las respuestas eso es lo que hay que definir


Título: Re: Necesito ayuda en un programa!
Publicado por: engel lex en 5 Junio 2014, 05:31 am
pero en el ultimo caso cuales serian las respuestas eso es lo que hay que definir

no seas flojo! XD piensa un poco! podrías hacerlo modificando mi explicacion y documento! XD

Código:
-GEOGRAFIA
¿Cual es la capital de iran?
europa
america
teheran*
francia
¿en que pais nacio napoleon?
jabon
elefante
francia*
al otro lado del mar
-HISTORIA
¿en que año nacio Simon Bolivar?
58896 de la segunda era del del imperio estela
1000ac
tocino
1783dc*
¿en que año murio Franco?
1
2*
3
4
-CIENCIA
¿con que otro nombre se conoce el nitrotolueno?
ntt
tnt*
qrx
tjv
¿cuantos atomos exactamente hay en el planeta tierra?
42*
10e100
la tuya por si acaso
npi

el codigo en lugar de moverse de 1 en 1 para buscar la pregunta al azar, se mueve de 1*4 en 1*4 para buscar la pregunta al azar, las siguientes 4 lineas son las opciones y si consigue un asterisco en una linea esa es la verdadera (claro está no vas a mostrar el asterisco)


Título: Re: Necesito ayuda en un programa!
Publicado por: Juan821 en 5 Junio 2014, 05:35 am
no seas flojo! XD piensa un poco! podrías hacerlo modificando mi explicacion y documento! XD

Código:
-GEOGRAFIA
¿Cual es la capital de iran?
europa
america
teheran*
francia
¿en que pais nacio napoleon?
jabon
elefante
francia*
al otro lado del mar
-HISTORIA
¿en que año nacio Simon Bolivar?
58896 de la segunda era del del imperio estela
1000ac
tocino
1783dc*
¿en que año murio Franco?
1
2*
3
4
-CIENCIA
¿con que otro nombre se conoce el nitrotolueno?
ntt
tnt*
qrx
tjv
¿cuantos atomos exactamente hay en el planeta tierra?
42*
10e100
la tuya por si acaso
npi

el codigo en lugar de moverse de 1 en 1 para buscar la pregunta al azar, se mueve de 1*4 en 1*4 para buscar la pregunta al azar, las siguientes 4 lineas son las opciones y si consigue un asterisco en una linea esa es la verdadera (claro está no vas a mostrar el asterisco)
jajjaa si yo pense eso esto se haria con blocs de notas estos codigos los buscare en internet muchas gracias si estoy mas avanzado en estos codigos te puedo consultar par cosas que me surgen en mi mente luego si no las soluciono?


Título: Re: Necesito ayuda en un programa!
Publicado por: engel lex en 5 Junio 2014, 05:38 am
si, mi intencion exactamene es que lo hagas facil, un txt con block de notas y listo XD

solo necesitas strings y leer archivo...


Título: Re: Necesito ayuda en un programa!
Publicado por: Juan821 en 5 Junio 2014, 05:46 am
si, mi intencion exactamene es que lo hagas facil, un txt con block de notas y listo XD

solo necesitas strings y leer archivo...

necesito ejemplos no encuentro los ejemplos de los codigos que se necesitan es para un proyecto perdona la insistencia.


Título: Re: Necesito ayuda en un programa!
Publicado por: engel lex en 5 Junio 2014, 05:58 am
todo lo que necesitas está en google:
-leer archivos (linea a lines)
-usar string (para guardar la pregunta y posibles respuestas, tambien para eliminar el asterisco)
-usar ciclos
-usar arreglos para guardar las opciones


basicamente el programa va así


mostrar: "seleccione categoría"
leer categoría
generar numero al azar
(for) por cada linea en el archivo
     si la linea = a la categoría escogida
         avanzar numero al azar*5 lineas
         guardar en una variable la pregunta
         guardar en un array las 4 posibles respuestas
         guardar valor de respuesta correcta
mostrar pregunta
mostrar opciones de respuestas
leer respuesta
si respuesta es correcta
    mostrar: "felicitaciones"