duda c++

Iniciado por peterfly, 30 Junio 2011, 23:23 PM

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

peterfly

#10
error no me da... lo que pasa es que se me cierra sin que me de el resultado cuando esta ejecutado el programa

Acermax

#11
Delante de cada scanf y de cada getchar() pon lo siguiente.
while (getchar()!='\n');
esto limpiará el buffer de entrada, y ya no tendrás problemas de que se cierre justo después de darte el resultado.

Código (cpp) [Seleccionar]

int main (){
   int a,b,c,i;
   char cadena1[40]="milmasmil";
   char cadena2[50];
   char cadena3[40];
   printf("escriba la operacion:  ");
   fgets(cadena1,40,stdin);
   if (cadena1[strlen(cadena1)-1] == '\n')
   cadena1[strlen(cadena1)-1] = '\0';
   i= strcmp(cadena1,"milmasmil");
   if (i==0){
                                   printf("el resultado es 2000");
                                   }
   while (getchar()!='\n');
   getchar();
   return 0;
   }


Por cierto, también cambié el gets por fgets, que es más segura.

peterfly

algo falla... por que e puesto lo sigiente i sigue pasando lo mismo de antes... cuando le pongo la operacion se me cierra... pero no me da error solo cuando pongo "milmasmil" i luego enter se me cierra el programa sin que pueda ver el resultado de dicha operacion...

#include <stdio.h>
#include <string.h>
#include <stdio.h>
int main()
{
int a,b,c;
char palabra [40];

printf("                         calculo \n");
printf("                      __________________ \n");


scanf(" %d",&a);

scanf(" %d",&b);

printf("0+0 \n");
printf("0+1 \n");
printf("0+2 \n");
{
scanf(" %d",&c);


gets(palabra);


scanf("%d",&c);
switch(c){
case 1:
     {
   int a,b,c,i;
    char cadena1[40]="milmasmil";
    char cadena2[50];
    char cadena3[40];
    printf("escriba la operacion:  ");
    fgets(cadena1,40,stdin);
    if (cadena1[strlen(cadena1)-1] == '\n')
    cadena1[strlen(cadena1)-1] = '\0';
    a= strcmp(cadena1,"milmasmil");
    if (i==0){
                                    printf("el resultado es 2000");
                                    }
    while (getchar()!='\n');
                                   
    getchar();
    return 0;
                                    }
     //haz esta operacion.
     break;
     case 2:
         
          //haz esto;
          break;
          case 3:
               //haz lo otro;
               break;
               default:
                       printf("esa opcion no es valida");
                       break;
                       }
                       getchar();
                       return 0;
}
}

Valkyr

Yo creo que deberías leerte un buen manual de C++ antes de ponerte a escribir código como un loco.

Código (cpp) [Seleccionar]
printf("0+2 \n");
{
scanf(" %d",&c);


Ese { no se que pinta hay.

Código (cpp) [Seleccionar]
a= strcmp(cadena1,"milmasmil");
    if (i==0)


¿No sería if(a==0)?

Código (cpp) [Seleccionar]
getchar();
    return 0;
                                    }
     //haz esta operacion.
     break;


¿No te da error?

Saberuneko

Cita de: Acermax en  2 Julio 2011, 04:27 AMDelante de cada scanf y de cada getchar() pon lo siguiente.
while (getchar()!='\n');
esto limpiará el buffer de entrada, y ya no tendrás problemas de que se cierre justo después de darte el resultado.

También se puede, simplemente ejecutar el .exe desde una consola abierta previamente, esto hará que al finalizar la ejecución del programa, no se cierre la misma.