Autor Tema: Ayuda con programa para practica de telcado numerico  (Leído 8073 veces)

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

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Ayuda con programa para practica de telcado numerico
« : enero 30, 2011, 08:50:09 pm »


#include <stdio.h>
#include <conio.h>
#include <iostream>

using namespace std;

main (){

  
int pb=0,pm=0,j,i;
  
int rtau[98];
  
char n[30];
 
  
int rtas[]={24628213,413651,78897,1246,82465882,96423};
  
  
printf("BIENVENIDO AL TEST");
  
cout<<"\n\n Para llevar su registro, por favor digite su nombre ";
  
gets(n);
  
cout<<"\n\n TEST DE DIGITACION \n\n";

  for(
i=0i<=6i++){
      
cout<<"  ";
      
cout<<rtas[i];
      
cout<<" : ";
      
cin>>rtau[i];
  }

  
cout<<"\n CALIFICACION DEL SEÑOR (A) " <<n;

  for (
i=0i<=6i++){
      if (
rtas[i] == rtau[i]){
          
pb pb 1;
      }
  }

  
pm 10 pb;

  
cout<<"\n\n Respuestas acertadas: "<<pb;
  
cout<<"\n\n Respuestas erradas: "<<pm;
     
  
getch ();
}  



Lo que quiero es imprimir el arreglo de numeros rtas[] y que el usuario vaya digitando lo que van apareciendo, al final conparo con los numeros que digito el usuario, y funciona perfectamente si el arreglo rtas[] no supero los 5 elementos, alguna idea de como hacer funcionar esto.

Gracias

Desconectado kerberoz

  • The Communiter-
  • *
  • Mensajes: 3713
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #1 : enero 30, 2011, 09:02:02 pm »
pues me imagino que deberias aumentar el limite superior del ciclo for hasta la cantidad de numeros que tenga el arreglo. Por que ahorita lo tenes hasta cinco numeros.
« Última Modificación: enero 30, 2011, 09:12:33 pm por kerberoz »
El aguinaldo es un invento comunista; pero eso no te molesta, ¿Verdad?

Desconectado JaiMe

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 1485
  • λ | h+
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #2 : enero 30, 2011, 09:59:30 pm »
De donde sacas esos nombres para las variables tan raros? Busca nombres fáciles de entender que ayuden a otros programadores entender el código rápido.

Asumo que esperas un total de 10 respuestas
Código: [Seleccionar]
pm = 10 - pb;
Lo que podes hace es aumentar el numero de elementos en el array con respuestas reales a 10
Código: [Seleccionar]
rtas[]={0,1,2,3,4,5,6,7,8,9};
Luego, iterar sobre cada uno de estos elementos en un loop, y ahí mismo comparar si el input del usuario es correcto.


Intenta con el siguiente codigo

Código: [Seleccionar]
#include <stdio.h>
#include <conio.h>
#include <iostream>

using namespace std;

main (){

  int acertada=0,
      errada=0,
      userInput,
      respuestas[]={0,1,2,3,4,5,6,7,8,9};
  char username[30];

    cout<<"\n\n BIENVENIDO AL TEST DE DIGITACION \n\n";
  cout<<"\n\n Para llevar su registro, por favor digite su nombre ";
  gets(username);

  for(int i=0; i<10; i++){
      cout<<"  " <<respuestas[i] << " : ";
      cin>>userInput;
      userInput == respuestas[i] ? acertada++ : errada++;
  }

  cout<<"\n CALIFICACION DEL SEÑOR (A) " <<username;
  cout<<"\n\n Respuestas acertadas: "<<acertada;
  cout<<"\n\n Respuestas erradas: "<< errada;

  getch ();
}




« Última Modificación: enero 30, 2011, 10:01:12 pm por JaiMe »
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #3 : enero 31, 2011, 01:03:58 pm »
Ecxelente muchas gracias JaiMe  :thumbsup:, ahora lo que sigue es agregar un cronometro.

Me explico:

Que despues de digitar el nombre y dar enter se inicie una especi de cronometro y despues al finalizar la digitacion de todos los datos que se muestran se pare el cronometro y se muestre el tiempo transcurrido.

He visto varios ejemplo pero no funcionan.

Espero puedas ayudarme gracias.

Desconectado JaiMe

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 1485
  • λ | h+
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #4 : enero 31, 2011, 08:47:51 pm »
La librería ctime.h te puede ayudar, solo necesitas dos variables de tipo time_t , para el inicio y fin, luego calculas la diferencia con difftime()

Código: [Seleccionar]
time_t inicio,fin;
 time(&inicio);
 // programa ...
 time(&fin);
 difftime(inicio,fin);
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #5 : enero 31, 2011, 09:48:27 pm »
Algo asi:


#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <time.h>

using namespace std;

main (){

  
int acertada=0,
      
errada=0,
      
userInput,
      
respuestas[]={0,1,2,3,4,5,6,7,8,};
  
char username[30];

    
cout<<"\n\n BIENVENIDO AL TEST DE DIGITACION \n\n";
    
cout<<"\n\n Para llevar su registro, por favor digite su nombre ";
    
gets(username);

    
time_t inicio,fin;
    
time(&inicio);
 
  for(
int i=0i<10i++){
      
cout<<"  " <<respuestas[i] << " : ";
      
cin>>userInput;
      
userInput == respuestas[i] ? acertada++ : errada++;
  }

  
cout<<"\n CALIFICACION DEL SEÑOR (A) " <<username;
  
cout<<"\n\n Respuestas acertadas: "<<acertada;
  
cout<<"\n\n Respuestas erradas: "<< errada;
  
  
time(&fin);
  
cout<<"Tiempo ",difftime(inicio,fin);
  
getch ();
}


No funciona

Desconectado Ideas

  • Sv Member
  • ***
  • Mensajes: 315
  • Jujuy huyo con mis riguas!!
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #6 : enero 31, 2011, 10:11:17 pm »



#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <time.h>

using namespace std;

void main (){

  
int acertada=0,
      
errada=0,
      
userInput,
      
respuestas[]={0,1,2,3,4,5,6,7,8,};
  
char username[30];

    
cout<<"\n\n BIENVENIDO AL TEST DE DIGITACION \n\n";
    
cout<<"\n\n Para llevar su registro, por favor digite su nombre ";
    
gets(username);

    
time_t inicio,fin;
    
inicio=time(NULL);
 
  for(
int i=0i<10i++){
      
cout<<"  " <<respuestas[i] << " : ";
      
cin>>userInput;
      
userInput == respuestas[i] ? acertada++ : errada++;
  }

  
cout<<"\n CALIFICACION DEL SEÑOR (A) " <<username;
  
cout<<"\n\n Respuestas acertadas: "<<acertada;
  
cout<<"\n\n Respuestas erradas: "<< errada;
  
  
fin=time(NULL);
  
cout<<"\nSe demoro: "<<difftime(fin,inicio)<<" segundos";
  
getch ();
}




proba.
Juass

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #7 : enero 31, 2011, 11:07:36 pm »
Muchisimas gracias a todos los que me colboraron en este problema que tenia. Grcias de verdad, todo solucionado.

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #8 : febrero 12, 2011, 02:26:24 pm »
Bueno señores ustedes disculparan pero el problema aun no esta resuelto, el problema es cuando el arreglo respuestas queda de esta manera


respuestas
[]={24628213,413651,78897,1246,82465882,96423,42132589532,2466550,8456792,84652796};


En el DEV C++ me muestra este eror


 C
:\Users\RAM\Desktop\practica_teclado.cpp In function `int main()':
13 C:\Users\RAM\Desktop\practica_teclado.cpp integer constant is too large for "long" type 


Gracias por su ayuda.


Desconectado JaiMe

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 1485
  • λ | h+
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #9 : febrero 12, 2011, 04:37:41 pm »
respuestas[6] = 42132589532 es demasiado grande para ser un integer, incluso para ser del tipo long.

Esto se podría solucionar declarando el array como double o long double. Pero tu programa en realidad no necesita numeric data types, lo mejor seria usar strings.

primero necesitas la siguiente libreria
Código: [Seleccionar]
#include <string>
luego cambia estas dos variables

Código: [Seleccionar]
string userInput,
       respuestas[]={"24628213","413651","78897","1246","82465882","96423","42132589532","2466550","8456792","84652796"};

y cambia

Código: [Seleccionar]
userInput == respuestas[i] ? acertada++ : errada++;
por

Código: [Seleccionar]
respuestas[i].compare(userInput)==0 ? acertada++ : errada++;
Y tendría que funcionar
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #10 : febrero 12, 2011, 06:10:46 pm »
Y tendría que funcionar

Tendria que funionar, y por supuesto que funciono, de nuevo muchas gracias ahora sirve.

Pero aun tengo una pregunta mas (Ud disculpara) en el arreglo puse 100 elementos y funciono perfecto, pero la cuestion es si agrego mas elementos o quito elementos del arreglo tendria que modificar el for:


for(int i=0i<100i++){
      
cout<<"  " <<respuestas[i] << " : ";
      
cin>>userInput;
      
respuestas[i].compare(userInput)==acertada++ : errada++;
  }


En el i<100 estuve buscando en google como contar elementos de un array en C/C++ y no encontre algo claro, mi idea es contar los elementos de un arreglo y guardarlo en una variable de tipo int y asi el i<elementos.

Puedes ayudarme, otra vez.

Gracias.

Desconectado JaiMe

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 1485
  • λ | h+
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #11 : febrero 12, 2011, 06:45:01 pm »
La manera sencilla

Código: [Seleccionar]
int elementos =  sizeof(respuestas)/sizeof(respuestas[0]);
Encontrar el length de un array es algo no trivial en C++, y hay mejores maneras de hacerlo que el codigo que te he dado. Lo recomendable es usar el container vector de la standard library en lugar de arrays, o usar la libreria Boost.
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: Ayuda con programa para practica de telcado numerico
« Respuesta #12 : febrero 12, 2011, 11:04:05 pm »
Bueno pues muchas gracias por tus respuestas y aportes, intente como me dijiste y al imprimir la variable elementos en pantalla me muestra 400 cuando en realidad el arreglo es de solo 100 elementos y pues al correr el programa despues de varias digitaciones se para y se cierra.

Bueno yo creo que no les quitare mas su tiempo con este problema, lo doy por solucionado gracias.