elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  consulta especifica en C ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: consulta especifica en C ayuda  (Leído 1,409 veces)
jysusxtreme

Desconectado Desconectado

Mensajes: 2


Ver Perfil
consulta especifica en C ayuda
« 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;
}


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: consulta especifica en C ayuda
« Respuesta #1 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


En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines