Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ulainava en 15 Marzo 2015, 21:49 pm



Título: Ayuda con este programa!
Publicado por: ulainava en 15 Marzo 2015, 21:49 pm
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!!!


Título: Re: Ayuda con este programa!
Publicado por: ivancea96 en 15 Marzo 2015, 21:52 pm
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.


Título: Re: Ayuda con este programa!
Publicado por: ulainava en 15 Marzo 2015, 22:54 pm
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!


Título: Re: Ayuda con este programa!
Publicado por: rir3760 en 16 Marzo 2015, 02:28 am
tengo 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:
Código
  1. if ((j = Buscar (f, 22, c)) == 22) /* Hay que evitar magic numbers */
  2.   printf("No se encontro la fruta");
  3. else
  4.   printf("Costo de la Fruta es de $%s\n", p[j]);
  5.  
  6. /* ... */
  7.  
  8. int Buscar(char f[][15], int n, char *c)
  9. {
  10.   int i;
  11.  
  12.   for (i = 0; i < 22 && strcmpi(c, f[i]) != 0; i++)
  13.      ;
  14.  
  15.   return i;
  16. }

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| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

Un saludo


Título: Re: Ayuda con este programa!
Publicado por: ulainava en 26 Marzo 2015, 03:27 am
Gracias por sus respuestas, ya hace tiempo q resolví este problema
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. int Buscar( char f[][15], int n, char *q);
  4.  
  5. main(){
  6. char f[10][15]={"Melon", "Cebolla","Papa","Jitomate","Fresa","Mango", "Zanahoria","Papino","Aguacate","Limon:"};
  7. int  p[10]={43,12,23,45,32,23,35,45,64,34};
  8. int i;
  9. printf("\n Tenemos:");
  10. for(i=0;i<=10;i++){
  11.    printf(" \n\n %s", f[i]);
  12. }
  13. char c[15];
  14. int ret;
  15. int j;
  16.  
  17. printf("Escoge la fruta o verdura:\n");
  18. gets(c);
  19. ret=Buscar(f,22,c);
  20. for(j=0;j<=10;j++){
  21.   if(ret==p[j]){
  22.    printf(" \nCuesta:",p[j]);
  23.   }else if(ret==-1){
  24.   printf(" \nNo Hay Banda");
  25.   }
  26. }
  27. }
  28.  
  29. int Buscar(char f[][15],int n, char *q){
  30. int i, pos;
  31. do{
  32.    if(strcmpi(q,f[i])==0){
  33.        return i;
  34.    }
  35.    i++;
  36. }while(i<n);
  37. return -1;
  38. }
  39.  
  40.  
  41.  

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
(http://i.imgur.com/c8wy5q0.png)