Ayuda con este programa!

Iniciado por ulainava, 15 Marzo 2015, 21:49 PM

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

ulainava

Holi, soy nuevo en este foro, ahora q estoy programando tengo un pequeño problema con uno de los programas q realizo, epero me puedan ayudar.

Citar#include <stdio.h>
#include <string.h>
int Buscar( char f[][15], int n, char *c);

main(){
char f[22][15]={"Arándano", "Frambuesa","Fresa","Grosella","Zarzamora","Limón", "Mandarina","Naranja","Pomelo","Melón","Sandía","Albaricoque","Cereza","Ciruela","Higo","Kaki","Manzana","Melocotón","Nectarina","Níspero","Pera","Uva"};
char p[22][4]={"43","12","23","45","34","23","35","45","64","34","23","23","43","45","23","34","45","12","34","36","38","38"};


char c[15];
int ret;
int j;

printf("Que fruta desea comprar:\t");
gets(c);
j=Buscar(f,22,c);
printf("Costo de la Fruta es de $%s",p[j]);

int Buscar(char f[][15], int n, char *c){
int i;
do{
    if(strcmpi(c,f)==0){
        return i;
    }
    i++;
}while(i<n);
return -1;
}



Este es el código. Lo q quiero q haga el programa es q al ingresar el nombre de una fruta, me de el costo de esta, para eso inicialize dos arreglos. Pero tengo un problema ya q al compilar me arroja un error en la  ultima llave } y me manda d error: expected declaration or statement at end of input. Me gustaría q me ayudaran a corregir el error y si le pudieran echar un vistazo al programa para q vean si la lógica, es adecuada y correcta. Se lo agradecería mucho, Saludos!!!

ivancea96

No cerraste la llave del main(). Pon una '}' después del printf, antes de al declaración de la función "buscar", y debería ir.

ulainava

Gracias, XD aunque ahora la lógica de mi programa esta mal jejeje. Lo resolveré, es q cuando te desesperas luego uno no alcanza a ver esos errores pequeñitos; Pero se te agradece. Thanks!

rir3760

Cita de: ulainava en 15 Marzo 2015, 21:49 PMtengo un pequeño problema con uno de los programas q realizo, epero me puedan ayudar.
Cuando publiques código fuente por favor utiliza las etiquetas de código. Estas se agregan mediante el cuadro desplegable con el texto "GeSHi" en la pagina de composición de mensajes, solo tienes que seleccionar ahí el lenguaje (C, C++, etc.).

----

En cuanto a la función buscar el error es no inicializar la variable "i" con el valor cero y también deberías en la función main verificar su valor de retorno en caso de no encontrarse la cadena.

Otra opción es utilizar el valor N (numero de elementos) para indicar que no se encontró la cadena, de esta forma:
if ((j = Buscar (f, 22, c)) == 22) /* Hay que evitar magic numbers */
   printf("No se encontro la fruta");
else
   printf("Costo de la Fruta es de $%s\n", p[j]);

/* ... */

int Buscar(char f[][15], int n, char *c)
{
   int i;
   
   for (i = 0; i < 22 && strcmpi(c, f[i]) != 0; i++)
      ;
   
   return i;
}


Ya por ultimo evita usar la función gets, las razones de ello en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

ulainava

#4
Gracias por sus respuestas, ya hace tiempo q resolví este problema
#include <stdio.h>
#include <string.h>
int Buscar( char f[][15], int n, char *q);

main(){
char f[10][15]={"Melon", "Cebolla","Papa","Jitomate","Fresa","Mango", "Zanahoria","Papino","Aguacate","Limon:"};
int  p[10]={43,12,23,45,32,23,35,45,64,34};
int i;
printf("\n Tenemos:");
for(i=0;i<=10;i++){
   printf(" \n\n %s", f[i]);
}
char c[15];
int ret;
int j;

printf("Escoge la fruta o verdura:\n");
gets(c);
ret=Buscar(f,22,c);
for(j=0;j<=10;j++){
  if(ret==p[j]){
   printf(" \nCuesta:",p[j]);
  }else if(ret==-1){
  printf(" \nNo Hay Banda");
  }
}
}

int Buscar(char f[][15],int n, char *q){
int i, pos;
do{
   if(strcmpi(q,f[i])==0){
       return i;
   }
   i++;
}while(i<n);
return -1;
}




Mod: Al publicar codigo usa las etiqeutas GeSHi como indicó rir3760, las etiquetas quote son para citas, si tienes duda sobre las etiqeutas GeSHi, aquí estan