Autor
|
Tema: Ayuda con codigo C++ (Leído 16,846 veces)
|
rjobel
Desconectado
Mensajes: 5
|
Buen día. Estoy estudiando programación, apenas iniciando. Nos pidieron un programa donde usemos struct. Consultando ejemplos hice un programa, pero no compila. Me marca errores en la linea final. La verdad no se donde esta el problema. Los errores y el codigo completo abajo. ¿Podrían ayudarme para que el programa compile? Gracias por adelantado.
Errores: error: expected `while' at end of input error: expected `(' at end of input error: expected primary-expression at end of input error: expected `)' at end of input error: expected `;' at end of input error: expected `}' at end of input
Codigo: #include <stdio.h> #include <stdlib.h> #include <conio.h>
main(){ struct prod{ char nomProd[30]; char fecha[10]; char categoria[20]; float costo; float pVenta; } prod[50]; int cv=0, opc, clave; /*Arreglo de tipo estructura*/ do{ printf ("Abarrotes Bel-Yes - Registro de Productos \n\n"); printf ("Opciones \n"); printf ("1) Registrar producto \n"); printf ("2) Buscar prudcto \n"); printf ("3) Salir \n\n"); printf ("Elige una opcion"); scanf ("%d", &opc); switch (opc){ /*Opciones*/ case 1: /*Entrada de datos del producto*/ if (cv>=50) printf ("No hay espacio para mas productos en el abarrotes \n"); else { printf ("Ingresa los datos del producto \n"); printf ("Clave %d \n", cv); printf ("Nombre del Producto: "); fflush (stdin); gets (prod[cv].nomProd); printf ("Fecha de Entrada: [dd/mm/aa]"); gets (prod[cv].fecha); printf ("Categoria del Producto: "); gets (prod[cv].categoria); printf ("Costo del Producto: "); scanf ("%f", &prod[cv].costo); cv=cv+1; } break; case 2: /*Busqueda de producto por clave*/ printf ("introduzca la clave a buscar \n"); scanf ("%d", &clave); while (clave<0 || clave>=50){ printf ("Nombre del Producto: %s \n", prod[clave].nomProd); printf ("Fecha de Entrada: %s \n", prod[clave].fecha); printf ("Categoria: %s \n", prod[clave].categoria); printf ("Costo del Producto: %f \n", prod[clave].costo); break; case 3: break; default: printf ("Esa es una opcion invalida \n"); break; system("pause"); } }while (opc!='3'); }
|
|
|
En línea
|
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
Existe algo llamado GESHI
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
1) No tienes todas las llaves cerradas. Revísalas 2) Eso no es programación estructurada, eso son muchos espacios. Usa el tabulador y estructura bien el código. 3) Tienes faltas de ortografía en los printf (); 4) Usas las funciones inseguras fflush () y gets (). 5) El código es muy largo, se puede acortar. 6) NUNCA uses Conio. 7) Main se debe declarar como un "int main". PS: La próxima vez usa las etiquetas GeShi #include <stdio.h> int main () { printf ("Esto es un ejemplo de etiqueta GeShi.\n"); printf ("A que se ve mejor?\n"); return 0; }
Un saludo. Sagrini
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
Slava_TZD
Wiki
Desconectado
Mensajes: 1.466
♪ [8675309] ♪
|
Eso no es C++. Así me compila sin problemas y creo que hace lo que deseas. Como te han dicho, si no tabulas correctamente, se hace complicado leer. No incluyas cabeceras por que suenen bien si luego no haces uso de ellas... (conio!) #include <stdio.h> #include <stdlib.h> main(){ struct prod { char nomProd[30]; char fecha[10]; char categoria[20]; float costo; float pVenta; } prod[50]; int cv=0, opc, clave; do { printf ("Abarrotes Bel-Yes - Registro de Productos \n\n"); printf ("1) Registrar producto \n"); printf ("2) Buscar prudcto \n"); switch (opc) { case 1: if (cv >=50) printf ("No hay espacio para mas productos en el abarrotes \n"); else { printf ("Ingresa los datos del producto \n"); printf ("Nombre del Producto: "); printf ("Fecha de Entrada: [dd/mm/aa]"); printf ("Categoria del Producto: "); gets (prod [cv ]. categoria); printf ("Costo del Producto: "); scanf ("%f", &prod [cv ]. costo); cv=cv+1; } break; case 2: /*Busqueda de producto por clave*/ printf ("introduzca la clave a buscar \n"); while (clave>0 || clave<=50){ printf ("Nombre del Producto: %s \n", prod [clave ]. nomProd); printf ("Fecha de Entrada: %s \n", prod [clave ]. fecha); printf ("Categoria: %s \n", prod [clave ]. categoria); printf ("Costo del Producto: %f \n", prod [clave ]. costo); break; default: printf ("Esa es una opcion invalida \n"); break; } } } while(opc!='3'); }
|
|
« Última modificación: 6 Abril 2011, 10:50 am por Tzhed »
|
En línea
|
The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
|
|
|
elviscaspa
Desconectado
Mensajes: 1
|
Hola, soy nuevo en esto y quería pedir ayuda. Sabriaís como puedo insertar un espacio en un string cuando detecte "_" ____________________________________________________ ... .. .
else { if(depth==1) { cout<<n->info.get_label()<<"_[ "; }
El problema es que no se como se puede declarar n->info.get_label() a string y posteriormente tratarlo, de modo que si encuentra una barra_baja haga una cosa u otra.
Gracias de antemano. Un saludo
|
|
|
En línea
|
|
|
|
rjobel
Desconectado
Mensajes: 5
|
Gracias a todos por sus respuestas.
Encontre que le faltaba una llave antes del último while. Apenas tengo unos meses estudiando C++ (y programación en realidad), así que estoy en pañales aun. Espero ir mejorando mis códigos.
Dos duda solamente:
1) ¿Es posible crear una version modular (usando funciones) de ese programa?
2) ¿Como uso GESHI? Ya lo descargue pero no se como instalarlo o usarlo. Disculpen mi ignorancia, pero si no pregunto no voy a saber como hacerlo.
Saludos
|
|
|
En línea
|
|
|
|
RyogiShiki
Desconectado
Mensajes: 745
げんしけん - Hikkikomori FTW!!!
|
Gracias a todos por sus respuestas.
Encontre que le faltaba una llave antes del último while. Apenas tengo unos meses estudiando C++ (y programación en realidad), así que estoy en pañales aun. Espero ir mejorando mis códigos.
Dos duda solamente:
1) ¿Es posible crear una version modular (usando funciones) de ese programa?
2) ¿Como uso GESHI? Ya lo descargue pero no se como instalarlo o usarlo. Disculpen mi ignorancia, pero si no pregunto no voy a saber como hacerlo.
Saludos
Estas son las Etiquetas GeSHi: Las encuentras en el editor de texto del foro, y te generaran unas etiquetas para poner tu codigo. Y si puedes resolver cualquier problema de manera funcional o modular (imagino que hasta cierto grado de complejidad, donde otro paradigma seria más efectivo y flexible), por ejemplo, y es solo un ejemplo porque no he visto el código puedes convertir el proceso lógico de cada una de las operaciones correspondientes a cada item del menú en una función diferente. Saludos
|
|
« Última modificación: 7 Abril 2011, 21:01 pm por gankutsuo »
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Remarcaré mi respuesta, seguís teniendo fallos ya indicados. Y de paso ya indico lo del GeShi... 1) No tienes todas las llaves cerradas. Revísalas 2) Eso no es programación estructurada, eso son muchos espacios. Usa el tabulador y estructura bien el código. 3) Tienes faltas de ortografía en los printf (); 4) Usas las funciones inseguras fflush () y gets (). 5) El código es muy largo, se puede acortar. 6) NUNCA uses Conio. 7) Main se debe declarar como un "int main". PS: La próxima vez usa las etiquetas GeShi #include <stdio.h> int main () { printf ("Esto es un ejemplo de etiqueta GeShi.\n"); printf ("A que se ve mejor?\n"); return 0; }
[/b] Y luego... sí, piensa cómo quieres dividirlas. Mira ejemplos, no hay forma...
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
rjobel
Desconectado
Mensajes: 5
|
Bueno, aqui esta de nuevo el código pero ahora con funciones. El programa compila, pero no funciona, pues no ejecuta cada una de las funciones. Como les comenté antes, soy nuevo en esto y no dispongo de un profesor (estudio online), así que si ven donde está el error les voy a agradecer mucho me lo hagan saber. Se supone que mañana durante el día debo enviar esta tarea y de verdad necesito su ayuda. Se que aun tengo que mejorar en las tabulaciones, pero al menos ahora si use GESHI. Este es el código. #include <stdio.h> #include <stdlib.h> /*Declaración de Variables*/ struct prod{ char nomProd[30]; char fecha[10]; char categoria[20]; float costo; } prod[50];/*Arreglo de tipo estructura*/ int entrada(void); int buscar(void); int precio(void); main() { int c=0, opc, clave; do{ printf ("Abarrotes Bel-Yes - Registro de Productos \n\n"); printf ("Opciones \n"); printf ("1) Registrar producto \n"); printf ("2) Buscar producto \n"); printf ("3) Precio de venta \n"); printf ("4) Salir \n\n"); printf ("Elige una opcion: \n"); scanf ("%d", &opc); } while (opc!=4); { switch (opc){ /*Opciones*/ case 1: entrada(); break; case 2: buscar(); break; case 3: precio(); break; default: printf ("Esa es una opcion invalida \n"); return 0; break; } } } /*Declaracion de Funciones*/ int entrada() { int c=0; if (c>=50) printf ("No hay espacio para mas productos en el abarrotes \n"); else { printf ("Ingresa los datos del producto \n"); printf ("Clave %.2d \n", c); printf ("Nombre del Producto: "); fflush (stdin); gets (prod[c].nomProd); printf ("Fecha de Entrada[dd/mm/aa]: "); gets (prod[c].fecha); printf ("Categoria del Producto: "); gets (prod[c].categoria); printf ("Costo del Producto: "); scanf ("%f", &prod[c].costo); c=c+1; } system ("pause"); system ("cls"); } int buscar() { int clave; printf ("Ingresa la clave a buscar [0-50] \n"); scanf ("%d", &clave); while (clave<=50 || clave>0){ printf ("Nombre del Producto: %s \n", prod[clave].nomProd); printf ("Fecha de Entrada: %s \n", prod[clave].fecha); printf ("Categoria: %s \n", prod[clave].categoria); printf ("Costo del Producto: %.2f pesos\n\n\n", prod[clave].costo); system ("pause"); system ("cls"); } } int precio() { int clave; printf ("Ingresa la clave a buscar [0-50] \n"); scanf ("%d", &clave); while (clave<=50 || clave>0){ printf ("Nombre del Producto: %s \n", prod[clave].nomProd); printf ("El precio sugerido de Venta es: %.2f pesos\n\n\n", (prod[clave].costo)*1.30); system ("pause"); system ("cls"); break; } }
|
|
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
Tu do while está mal organizado, me da la impresión: ejemplo: do{ lo_que_sea() }while(algo); //todo lo que siga no tiene que ver con el bucle
Mientras que tu código se organiza de la siguiente manera: do{ imprimir }while(opción!=4); switch(opcion)
Resultado? Cuando salgas del bucle, tu programa sale, porque la propia opción 4, es la que según tu switch finaliza el programa. Corrección? el switch debería ir dentro del do:while do{ printf ("Abarrotes Bel-Yes - Registro de Productos \n\n"); printf ("1) Registrar producto \n"); printf ("2) Buscar producto \n"); printf ("3) Precio de venta \n"); printf ("Elige una opcion: \n"); } switch (opc){ /*Opciones*/ case 1: entrada(); break; case 2: buscar(); break; case 3: precio(); break; default: printf ("Esa es una opcion invalida \n"); return 0; break; } }while (opc!=4);
Y a menos que me haya dejado alguna llave por abrir o cerrar al copiar y corregir la posición del switch, eso debería funcionarte.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con Codigo
Programación Visual Basic
|
Mitsu_POWA
|
1
|
2,123
|
26 Julio 2005, 00:25 am
por byebye
|
|
|
Ayuda Con Un Codigo
Programación Visual Basic
|
Nichas
|
3
|
2,235
|
26 Agosto 2005, 02:23 am
por ZEALOT
|
|
|
Ayuda con codigo en C (no me ejecuta un for y necesito ayuda)
« 1 2 3 »
Programación C/C++
|
Søra
|
22
|
12,482
|
22 Mayo 2010, 00:22 am
por Littlehorse
|
|
|
¿Cuál es la diferencia entre código objeto, código máquina y código binario?
Programación General
|
Aikanáro Anário
|
9
|
30,302
|
23 Diciembre 2010, 15:19 pm
por pucheto
|
|
|
Ayuda con código mutante C
Programación C/C++
|
NeoB
|
4
|
4,249
|
28 Enero 2014, 21:54 pm
por systemfirst97
|
|