No me ejecuta el printf

Iniciado por GonzaJava, 13 Abril 2018, 04:14 AM

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

GonzaJava

Hola, no me ejecuta el printf, compile y esta bien pero no me lo ejecuta. aqui esta

#include<stdio.h>
#include<string.h>


int main()
{
      char periodo[50];
      char pintor[50];
      char nacion[50];
      
         printf("Ingrese periodo: ");
         scanf("%s", periodo);
      
      
      if ((strcmp (periodo, "Prehistorico")==0) || (strcmp(periodo, "egipcio")==0)){


               printf("Galeria 1 \n");

      }      
      
          else if ((strcmp(periodo, "renacimiento")==0)){
         

 

               printf("Ingrese nombre del pintor: ");
               scanf("%s", pintor);
         }
         else if ((strcmp (pintor, "Leonardo")==0) || (strcmp(pintor, "Michelangelo")==0)){
         
               printf ("Galeria 2 \n");
            }   
         else if (strcmp(pintor, "Rafael")==0){
      

               printf ("Galeria 3");
         }   
         else if ((strcmp (pintor, "Tiziano")==0) || (strcmp(pintor, "Boticelli")==0)){
         

               printf("Galeria 4");
         }   
         else if ((strcmp (pintor, "Greco")==0) || (strcmp(pintor, "Tintoretto")==0)){
         

               printf("Galeria 5a");
         }
         else if (strcmp(pintor, "Bellini")==0){
         

               printf("Galeria 5b");
         }   
         else {
         
               printf("No hay obras de este pintor");
         }
      
   return 0;

}

MAFUS

Haz un pantallazo de cuando te falla.

GonzaJava

Osea el programa me dice:

Inserte periodo: (si pongo "egipcio" me aparece "galeria 1" eso esta bien, pero si pongo "renacimiento" me aparece "Ingrese pintor: " eso esta bien) el problema es despues, cuando me pide que ingrese el pintor, lo ingreso y tendria que aparecerme la galeria en la que esta pero no me aparece nada..

Kenji-chan

eso es porque solo capturas el nombre del pintor pero no le dices que hacer con el despues

#include<stdio.h>
#include<string.h>

int main(){
char periodo[50];
char pintor[50];
char nacion[50];

printf("Ingrese periodo: ");
scanf("%s", periodo);

if ((strcmp (periodo, "Prehistorico")==0) || (strcmp(periodo, "egipcio")==0)){
printf("Galeria 1 \n");
}else if ((strcmp(periodo, "renacimiento")==0)){
printf("Ingrese nombre del pintor: ");
scanf("%s", pintor);
/*a qui solo capturas el nombre despues de capturarlo sale de todos los else if
  sin pasar por ningun otro*/
}else if ((strcmp (pintor, "Leonardo")==0) || (strcmp(pintor, "Michelangelo")==0)){
printf ("Galeria 2 \n");
}else if (strcmp(pintor, "Rafael")==0){
printf ("Galeria 3");
}else if ((strcmp (pintor, "Tiziano")==0) || (strcmp(pintor, "Boticelli")==0)){
printf("Galeria 4");
}else if ((strcmp (pintor, "Greco")==0) || (strcmp(pintor, "Tintoretto")==0)){
printf("Galeria 5a");
}else if (strcmp(pintor, "Bellini")==0){
printf("Galeria 5b");
}else {
printf("No hay obras de este pintor");
}

return 0;
}

MAFUS

 Correcto. El else que hay justo después hace que continúe la cadena de ifs en vez de iniciar una nueva toma de decisiones.

GonzaJava