Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jysusxtreme en 17 Marzo 2015, 00:29 am



Título: consulta especifica en C ayuda
Publicado por: jysusxtreme en 17 Marzo 2015, 00:29 am
alguien que me ayude porfavor lo que pasa esque en el caso 3: consulta especifica de el titulo de una pelicula,,
necesito que me aparescan todos los datos los cuales son id, precio y cantidad ---
#include <string.h>
#include <stdio.h>
int main()
{
int auxid ,id[20],opcion,cantidad[20],precio[20];
int registro=0,y,j,x,posicion,contador=0;
char buscartitulo[15],titulo[20][15],salir;
do
{

printf ("1.-Altas\n");
printf("2.-Ordenacion por id\n");
printf("3.-consulta especifica \n");
printf("4.-bajas\n");
printf("5.- modificacion \n");
printf ("6.-salir");
printf("Que opcion quieres\n ");
scanf("%d",&opcion);
switch(opcion)
{
case 1:
do
{
printf("id pelicula \n ");
scanf("%d",&id[registro]);
printf("titulo pelicula \n");
scanf("%s",titulo[registro]);
printf("precio\n");
scanf("%d",&precio[registro]);
printf("cantidad\n");
scanf("%d",&cantidad[registro]);
registro++;
printf("Quieres ingresar otro s/n \n");
scanf("%s",&salir);
}
while(salir!= 'n'&& registro<20);
break;

//ordenacion
case 2:
for (y=1;y<registro;y++)//y es nuestra ordenacion
for(x=0;x<registro-y;x++)
if(id
  • >id[x+1])
{
auxid=id
  • ;
id
  • =id[x+1];
id[x+1]=auxid;

auxid=precio
  • ;
precio
  • =precio[x+1];
precio[x+1]=auxid;

auxid=cantidad
  • ;
cantidad
  • =cantidad[x+1];
cantidad[x+1]=auxid;
 }
 for(x=0;x<registro;x++)
 printf(" [id]%d [titulo]%s [precio]%d [existencia]%d \n"
 ,id
  • ,titulo
  • ,precio
  • ,cantidad
  • );
break;

//strcpy(auxti,titulo
  • );
//strcpy(titulo
  • ,titulo[x+1]);
//strcpy(titulo[x+1],auxti);

//aqui esta el problema
lo estoy buscando como cadena de caracter en char con %s,,
pero si lo busco con un dato tipo entero si me funciona....//
case 3 :   
contador=1;
x=0;
printf("titulo a buscar ");
scanf("%s",buscartitulo);     ///si lo busco con un entero %d si me funciona
while (contador==1&& x<registro)
{
if(buscartitulo==titulo
  • )
{ posicion=x;
 contador=0;
 }
 x++;
}
if (contador){
printf("No se encontro el titulo que se buscaba\n");}
else
printf ("id es %d precio es %d cantidad es %d \n"
,id[posicion],precio[posicion],cantidad[posicion]);   
break;

case 5:
break;
default:printf("Error");
}
}
while(opcion!=5);
return 0;
}


Título: Re: consulta especifica en C ayuda
Publicado por: rir3760 en 17 Marzo 2015, 02:38 am
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.).

----

El primer error ocurre cuando pides confirmación en el primer caso:
Código
  1. char buscartitulo[15], titulo[20][15], salir;
  2.  
  3. /* ... */
  4.  
  5.   printf ("Quieres ingresar otro s/n \n");
  6.   scanf ("%s", &salir);
  7. }while (salir != 'n' && registro < 20);
Para leer un carácter mediante scanf debes utilizar el especificador de formato " %c", el espacio antes del carácter '%' es necesario para ignorar el espacio blanco (espacio, tabulador, etc.).

El segundo error ocurre en el bloque donde buscas el registro:
Código
  1. printf ("titulo a buscar ");
  2. scanf ("%s", buscartitulo);   ///si lo busco con un entero %d si me funciona
  3. while (contador == 1 && x < registro){
  4.   if (buscartitulo == titulo[x]){ /* <== */
  5.      posicion = x;
  6.      contador = 0;
  7.   }
  8.   x++;
  9. }
  10. if (contador) {
  11.   printf ("No se encontro el titulo que se buscaba\n");
  12. }
  13. else
  14.   printf ("id es %d precio es %d cantidad es %d \n"
  15.           , id[posicion], precio[posicion], cantidad[posicion]);
En C no puedes utilizar el operador de comparación "==" con cadenas, en su lugar debes utilizar la función strcmp. Ejemplos de ellos los puedes consultar mediante el motor de búsqueda de los foros.

Un saludo