Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema agregando codigo para repetir programa

Estas en el tema de Problema agregando codigo para repetir programa en el foro de C/C++ en Foros del Web. Hola q tal! lo que pasa es q tengo el siguiente codigo de un programa que convierte numeros arabigos a numeros romanos @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 02/06/2011, 17:00
Avatar de George1217  
Fecha de Ingreso: junio-2009
Ubicación: Mexico
Mensajes: 164
Antigüedad: 15 años
Puntos: 8
Pregunta Problema agregando codigo para repetir programa

Hola q tal! lo que pasa es q tengo el siguiente codigo de un programa que convierte numeros arabigos a numeros romanos

Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<conio.h>
  3.  
  4.  
  5. main()
  6. {
  7. int arabigo;      //Entero de la variable del numero arabigo
  8. void romanos(int);
  9.     do    {
  10.        printf("Inserte un numero mayor a 0: "); //El usuario insera un numero
  11.        scanf("%d",&arabigo); //Se guarda el numero en la variable correspondiete
  12.        
  13.        if(arabigo<1){ //pequeña condicion... en caso de introducir un numero menor a 1
  14.        printf("Que haces?! el numero debe d ser mayor a 0\n");
  15.        }else{
  16.        //los numeros romanos mayores a 4000 llevan una raya horizontal arriba por tal razon solo
  17.        //se tomaran numeros menores a 4000, para poder mostrarlos en pantalla correctamente      
  18.        if(arabigo<4000){
  19.          romanos(arabigo);
  20.        }
  21.     }
  22. }
  23. //mientras el numero arabigo (normal) sea menor a 1 se seguira pidiendo
  24. //al usuario que inserte un numero mayor a 0
  25.     while(arabigo<1);{                  
  26.     getchar();
  27.     getchar();
  28.     return 0;
  29. }
  30. }
  31.  
  32.  
  33.  
  34. void romanos(int arabigo){
  35.      
  36. //Mientras el numero arabigo (normal) sea mayor o igual a 1000
  37. //Se imprimira en pantalla su equivalente en romano
  38.    while(arabigo>=1000){
  39.                   arabigo-=1000;
  40.                   printf("M");
  41.                   }
  42.    while(arabigo>=900){
  43.                  arabigo-=900;
  44.                  printf("CM");
  45.                  }
  46.    while(arabigo>=500){
  47.                  arabigo-=500;printf("D");
  48.                  }
  49.    while(arabigo>=400){
  50.                  arabigo-=400;
  51.                  printf("CD");
  52.                  }
  53.    while(arabigo>=100){
  54.                  arabigo-=100;
  55.                  printf("C");
  56.                  }
  57.    while(arabigo>=90){
  58.                 arabigo-=90;
  59.                 printf("XC");
  60.                 }
  61.    while(arabigo>=50){
  62.                 arabigo-=50;
  63.                 printf("L");
  64.                 }
  65.    while(arabigo>=40){
  66.                 arabigo-=40;
  67.                 printf("XL");
  68.                 }
  69.    while(arabigo>=10){
  70.                 arabigo-=10;
  71.                 printf("X");
  72.                 }
  73.    while(arabigo>=9){
  74.                arabigo-=9;
  75.                printf("IX");
  76.                }
  77.    while(arabigo>=5){
  78.                arabigo-=5;
  79.                printf("V");
  80.                }
  81.    while(arabigo>=4){
  82.                arabigo-=4;
  83.                printf("IV");
  84.                }
  85.    while(arabigo>=1){
  86.                arabigo-=1;
  87.                printf("I");
  88.                }
  89. }

El problema que tengo es que necesito agregar lo siguiente para poder "repetir el programa" en caso de que el usuario necesite convertir otro numero, pero he intentado varias veces y me da errores al compilarlo

Código C++:
Ver original
  1. char respuesta[1];
  2.  
  3.  
  4. printf("Desea repetir la operacion [S/N]: ");
  5. scanf("%s",&respuesta);
  6. }while(respuesta!='N'&&respuesta!='n');
  7. return 0;
  8. }

Alguien me podria ayudar diciendome en que parte del programa debo de poner el codigo para que se repita ? desde ya, muchas gracias!
__________________
Yo Ho! Yo Ho!
  #2 (permalink)  
Antiguo 02/06/2011, 17:31
Avatar de mko
mko
 
Fecha de Ingreso: agosto-2010
Ubicación: la vida es un riesgo
Mensajes: 101
Antigüedad: 13 años, 9 meses
Puntos: 14
Respuesta: Problema agregando codigo para repetir programa

aver hacr rato que no codifico en c++
aver inicializa una variable por ejemplo r==si;

r como tipo char o string
esto es para que te des la idea de como seria

while(r==si)
{
tu bloque de instrucciones del codigo que tienes

>>aqui tu pregunta decea continuar con otro numero presion si / no
aui capturas el valor en la variable r

}
mientras tecles si continura pidiendo ciclandose y cuando r=no se saldra prueba de esta menera es una idea claro
__________________
cuando no esperas nada y obtienes todo eso es destino
  #3 (permalink)  
Antiguo 02/06/2011, 17:47
Avatar de George1217  
Fecha de Ingreso: junio-2009
Ubicación: Mexico
Mensajes: 164
Antigüedad: 15 años
Puntos: 8
Respuesta: Problema agregando codigo para repetir programa

Gracias por responder mko, eso es precisamente lo que quiero hacer lo q pasa es que como quiera q lo agregue me marca errores d compilacion un ejemplo del error que me marca es

Cita:
`respuesta' undeclared (first use this function)
=/
__________________
Yo Ho! Yo Ho!
  #4 (permalink)  
Antiguo 02/06/2011, 19:59
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Problema agregando codigo para repetir programa

Es que estas confundiendo tipos de datos.


Código C:
Ver original
  1. char respuesta;
  2. do{
  3. printf("Desea repetir la operacion [S/N]: ");
  4. scanf("%c",&respuesta);
  5. }while(respuesta!='N'&&respuesta!='n');
  6. return 0;

Las array de caracteres no se pueden comparar simplemente con un =. debes usar strcmp. Pero para esta opcion no conviente usar arraglos. Simplemente con Char funciona bien.
Por lo uqe dice el error, la variable respuesta no estaba declarada. Podrias mostrar bien completo el codigo.
  #5 (permalink)  
Antiguo 03/06/2011, 10:54
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 1 mes
Puntos: 8
Respuesta: Problema agregando codigo para repetir programa

Primero que nada...

Código C:
Ver original
  1. scanf("%c", &respuesta);

Está MAL... las cadenas y carácteres no usan & en scanf...

Debería ser:

Código C:
Ver original
  1. scanf("%c", respuesta);

Saludos!
  #6 (permalink)  
Antiguo 03/06/2011, 19:10
Avatar de George1217  
Fecha de Ingreso: junio-2009
Ubicación: Mexico
Mensajes: 164
Antigüedad: 15 años
Puntos: 8
Respuesta: Problema agregando codigo para repetir programa

He vuelto con el problema resuelto

Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. main(){
  5. int arabigo;
  6. int respuesta;
  7.  
  8. do {
  9. printf("Inserte un numero mayor a 0: ");
  10. scanf("%i",&arabigo);
  11.  
  12. printf("\n------------\n");
  13. while(arabigo>=1000){arabigo-=1000;printf("M");}
  14. while(arabigo>=900){arabigo-=900;printf("CM");;}
  15. while(arabigo>=500){arabigo-=500;printf("D");;}
  16. while(arabigo>=400){arabigo-=400;printf("CD");}
  17. while(arabigo>=100){arabigo-=100;printf("C");}
  18. while(arabigo>=90){arabigo-=90;printf("XC");}
  19. while(arabigo>=50){arabigo-=50;printf("L");}
  20. while(arabigo>=40){arabigo-=40;printf("XL");}
  21. while(arabigo>=10){arabigo-=10;printf("X");}
  22. while(arabigo>=9){arabigo-=9;printf("IX");}
  23. while(arabigo>=5){arabigo-=5;printf("V");}
  24. while(arabigo>=4){arabigo-=4;printf("IV");}
  25. while(arabigo>=1){arabigo-=1;printf("I");}
  26. printf("\n------------\n");
  27.  
  28. system("PAUSE");
  29. printf("Deseas convertir otro numero? \nSI=1 NO=2\n");
  30. scanf("%i",&respuesta);
  31. system("CLS");
  32. }
  33.  
  34. while (respuesta==1);
  35. return 0;
  36. }

En lugar de pedir una letra S o N, pide para repetir el numero 1, y 2 para salir x_X
__________________
Yo Ho! Yo Ho!
  #7 (permalink)  
Antiguo 03/06/2011, 19:23
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Problema agregando codigo para repetir programa

Te equivocas. Para una variable del tipo char si se necesitan usar el operador &.
Para un arreglo de char no deberias, porque la variable por si sola es un puntero.

Saludos
  #8 (permalink)  
Antiguo 03/06/2011, 19:27
Avatar de George1217  
Fecha de Ingreso: junio-2009
Ubicación: Mexico
Mensajes: 164
Antigüedad: 15 años
Puntos: 8
Respuesta: Problema agregando codigo para repetir programa

Aca esta para que en lugar de 1 o 2 sea S o N, gracias por la ayudaaa!!!

Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. main(){
  5. int arabigo;
  6. char respuesta;
  7.  
  8. do {
  9. printf("Inserte un numero mayor a 0: ");
  10. scanf("%i",&arabigo);
  11. printf("\n------------\n");
  12. while(arabigo>=1000){arabigo-=1000;printf("M");}
  13. while(arabigo>=900){arabigo-=900;printf("CM");;}
  14. while(arabigo>=500){arabigo-=500;printf("D");;}
  15. while(arabigo>=400){arabigo-=400;printf("CD");}
  16. while(arabigo>=100){arabigo-=100;printf("C");}
  17. while(arabigo>=90){arabigo-=90;printf("XC");}
  18. while(arabigo>=50){arabigo-=50;printf("L");}
  19. while(arabigo>=40){arabigo-=40;printf("XL");}
  20. while(arabigo>=10){arabigo-=10;printf("X");}
  21. while(arabigo>=9){arabigo-=9;printf("IX");}
  22. while(arabigo>=5){arabigo-=5;printf("V");}
  23. while(arabigo>=4){arabigo-=4;printf("IV");}
  24. while(arabigo>=1){arabigo-=1;printf("I");}
  25. printf("\n------------\n");
  26. system("PAUSE");
  27. printf("Deseas convertir otro numero (s/n) ?\n");
  28. scanf("%s", &respuesta);
  29. system("CLS");
  30. }
  31. while(respuesta=='s' || respuesta=='S');
  32. return 0;
  33. }

Cita:
Iniciado por sam90 Ver Mensaje
Te equivocas. Para una variable del tipo char si se necesitan usar el operador &.
Para un arreglo de char no deberias, porque la variable por si sola es un puntero.
Saludos
Por cierto quitandole el & dejaba de responder el programa!
__________________
Yo Ho! Yo Ho!
  #9 (permalink)  
Antiguo 04/06/2011, 06:27
Avatar de Ventru3  
Fecha de Ingreso: noviembre-2010
Ubicación: Disneylandia
Mensajes: 86
Antigüedad: 13 años, 6 meses
Puntos: 13
Respuesta: Problema agregando codigo para repetir programa

Dejaba de responder porque lo almacenabas mal. No es %s es %c en este caso. En la recogida de cadena no se pone nunca &. Te recomiendo que utilices gets(); en vez de scanf.

Etiquetas: programa, repetir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:02.