Necesito ayuda en un programa!

Iniciado por Juan821, 5 Junio 2014, 04:50 AM

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

Juan821

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

engel lex

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?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Juan821

Cita de: 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?
#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

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Juan821

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?

Drewermerc

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

engel lex

aquí hay un ejemplo
Código (cpp) [Seleccionar]
#include <iostream>
#include <iomanip>
#include <string>
#include <stdio.h>
#include <cstdlib>
#include <sqlite3.h> /* incluimos la cabecera de la libreria libsqlite3*/

using namespace std;

int main(int argc, char *argv[])
{
   sqlite3 *db;                /* Definimos un puntero a la base de datos */
   sqlite3_stmt *resultado;    /* Definimos un puntero a la respuesta de la consulta*/
   int msg;                    /* valor de retorno de las sentencias */
   string sentencia;           /* string para las sentencias */
   const char* siguiente;      /* puntero a la siguiente sentencia */
   char* error;                /* variable para el mensaje de error */

   msg = sqlite3_open("pucara.db",&db);    /* creo el archivo para la base de datos */
   if (msg!=SQLITE_OK)                     /* verifico si hay error */
   {
       cout << "Error al crear la base de datosn" << endl;
       exit(1);
   }

   sentencia = "DROP TABLE IF EXISTS hosts;";  /* compongo un sentencia para crear la base de datos*/
   sentencia += "CREATE TABLE hosts (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, ip TEXT NOT NULL, mac TEXT NOT NULL, nombre TEXT);";
   msg = sqlite3_exec(db,sentencia.c_str(),NULL,NULL,&error);  /* ejecuto la sentencia */
   if (msg!=SQLITE_OK)     /* verifico si hay error */
   {
       cout << error << endl;
       exit(2);
   }

   sentencia = "insert into hosts (id, ip, mac) values ('1', '192.168.0.1', '00:27:0e:00:00:00');"; /* compongo una nueva sentencias */
   msg = sqlite3_exec(db,sentencia.c_str(),NULL,NULL,&error);  /* ejecuto la sentencia */
   if (msg!=SQLITE_OK)     /* verifico si hay error */
   {
       cout << error << endl;
       exit(2);
   }

   sentencia = "SELECT * FROM hosts ORDER BY ip;"; /* compongo una sentencia de consulta */
   msg = sqlite3_prepare(db,sentencia.c_str(),sentencia.length(),&resultado,&siguiente);   /* ejecuto la sentencia */
   if (msg!=SQLITE_OK) /* verifico si hay error */
   {
       cout << "Error en la consulta" << endl;
       exit(3);
   }

   while (sqlite3_step(resultado)==SQLITE_ROW) /* imprimo el resultado de la consulta */
   {
       cout << sqlite3_column_int(resultado, 0) << " | ";
       cout << sqlite3_column_text(resultado, 1) << " | ";
       cout << sqlite3_column_text(resultado, 2) << endl;
   }

   sqlite3_close(db);      /* cierro la base de datos*/
   return 0;


solo te tienes que bajar las librerias de sql lite (creo que son estas) y en el linker -lsqlite3


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


-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...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Juan821

Cita de: engel lex en  5 Junio 2014, 05:20 AM
aquí hay un ejemplo
Código (cpp) [Seleccionar]
#include <iostream>
#include <iomanip>
#include <string>
#include <stdio.h>
#include <cstdlib>
#include <sqlite3.h> /* incluimos la cabecera de la libreria libsqlite3*/

using namespace std;

int main(int argc, char *argv[])
{
   sqlite3 *db;                /* Definimos un puntero a la base de datos */
   sqlite3_stmt *resultado;    /* Definimos un puntero a la respuesta de la consulta*/
   int msg;                    /* valor de retorno de las sentencias */
   string sentencia;           /* string para las sentencias */
   const char* siguiente;      /* puntero a la siguiente sentencia */
   char* error;                /* variable para el mensaje de error */

   msg = sqlite3_open("pucara.db",&db);    /* creo el archivo para la base de datos */
   if (msg!=SQLITE_OK)                     /* verifico si hay error */
   {
       cout << "Error al crear la base de datosn" << endl;
       exit(1);
   }

   sentencia = "DROP TABLE IF EXISTS hosts;";  /* compongo un sentencia para crear la base de datos*/
   sentencia += "CREATE TABLE hosts (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, ip TEXT NOT NULL, mac TEXT NOT NULL, nombre TEXT);";
   msg = sqlite3_exec(db,sentencia.c_str(),NULL,NULL,&error);  /* ejecuto la sentencia */
   if (msg!=SQLITE_OK)     /* verifico si hay error */
   {
       cout << error << endl;
       exit(2);
   }

   sentencia = "insert into hosts (id, ip, mac) values ('1', '192.168.0.1', '00:27:0e:00:00:00');"; /* compongo una nueva sentencias */
   msg = sqlite3_exec(db,sentencia.c_str(),NULL,NULL,&error);  /* ejecuto la sentencia */
   if (msg!=SQLITE_OK)     /* verifico si hay error */
   {
       cout << error << endl;
       exit(2);
   }

   sentencia = "SELECT * FROM hosts ORDER BY ip;"; /* compongo una sentencia de consulta */
   msg = sqlite3_prepare(db,sentencia.c_str(),sentencia.length(),&resultado,&siguiente);   /* ejecuto la sentencia */
   if (msg!=SQLITE_OK) /* verifico si hay error */
   {
       cout << "Error en la consulta" << endl;
       exit(3);
   }

   while (sqlite3_step(resultado)==SQLITE_ROW) /* imprimo el resultado de la consulta */
   {
       cout << sqlite3_column_int(resultado, 0) << " | ";
       cout << sqlite3_column_text(resultado, 1) << " | ";
       cout << sqlite3_column_text(resultado, 2) << endl;
   }

   sqlite3_close(db);      /* cierro la base de datos*/
   return 0;


solo te tienes que bajar las librerias de sql lite (creo que son estas) y en el linker -lsqlite3


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


-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

engel lex

Cita de: Juan821 en  5 Junio 2014, 05:25 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

-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)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Juan821

Cita de: engel lex en  5 Junio 2014, 05:31 AM
no seas flojo! XD piensa un poco! podrías hacerlo modificando mi explicacion y documento! XD

-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?