| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
mshadow14
Registrado: 10 Mar 2014 Mensajes: 2
| Publicado: 10/03/2014 6:31 pm | | | Título: Codigo queda en un loop |
| Hola gente ando intentado hacer un programa y termine mi codigo, estoy usando codeblocks para trabajarlo pero al correrlo se queda en un loop.
#include<iostream> #include<conio.h> using namespace std;
FILE *DOC;
int main() { DOC = fopen("contabilidad del dia.doc","w"); float c1; float c2; float c3; float ct; float cv; string dia; int mesero; float sw; float swc; swc=1; sw=1; c1=0; c2=0; c3=0; cout<<"ingrese el dia"; cin>>dia; while (swc==1) cout<<"Ingrese el codigo del mesero"; cin>>mesero; switch (mesero) { case 1: while (sw==1) cout<<"Ingrese la cantidad vendida 1"; cin>>cv; c1=c1+cv; cout<<"Desea continuar"; cin>>sw;
break; case 2: while (sw==1) cout<<"Ingrese la cantidad vendida 2"; cin>>cv; c2=c2+cv; cout<<"Desea continuar"; cin>>sw;
break; case 3: while (sw==1) cout<<"Ingrese la cantidad vendida 3"; cin>>cv; c3=c3+cv; cout<<"Desea continuar"; cin>>sw;
break; } sw=1; cout<<"Ingrese si desea continuar"; cin>>swc;
cout<<dia; ct=c1+c2+c3; cout<<"el total vendido por este mesero es "<<c1<<endl; cout<<"el total vendido por este mesero es "<<c2<<endl; cout<<"el total vendido por este mesero es "<<c3<<endl; cout<<"El total del dia es de "<<ct<<" Pesos"<<endl; return 0; }
Pues ese es el codigo, gracias de antemano |
|
| Volver arriba | |
 |
rir3760

Registrado: 01 Oct 2004 Mensajes: 7530 Ubicación: Mexico
| Publicado: 10/03/2014 7:45 pm | | | Título: |
| El primer problema es el archivo de datos, no lo utilizas en el programa.
El problema principal se debe a los bucles while ya que al no utilizar llaves su cuerpo es la sentencia que le sigue, por ejemplo el primero es:
| Código: | swc = 1;
// ...
while (swc == 1) cout << "Ingrese el codigo del mesero"; |
Como la condición "swc == 1" es verdadera y en su cuerpo no se cambia el valor de la variable "swc" ello resulta en un bucle infinito. Mismo caso con los demás bucles.
Para que se ejecute de forma continua debes utilizar un bucle do ... while donde su cuerpo sea la entrada de datos, justo después de este colocas la impresión de los resultados. De esta forma:
| Código: | #include <iostream> using namespace std;
int main() { float c1 = 0; float c2 = 0; float c3 = 0; float ct; float cv; string dia; int mesero; int continuar; cout << "Ingrese el dia: "; cin >> dia; do { cout<<"Ingrese el codigo del mesero: "; cin >> mesero; switch (mesero) { case 1: cout << "Ingrese la cantidad vendida 1: "; cin >> cv; c1 = c1 + cv; break; case 2: cout << "Ingrese la cantidad vendida 2: "; cin >> cv; c2 = c2 + cv; break; case 3: cout << "Ingrese la cantidad vendida 3: "; cin >> cv; c3 = c3 + cv; break; } cout << "Desea continuar? (1 = Si, 0 = No) "; cin >> continuar; }while (continuar == 1); cout << "Total mesero 1: " << c1 << endl; cout << "Total mesero 2: " << c2 << endl; cout << "Total mesero 3: " << c3 << endl; ct = c1 + c2 + c3; cout << "Total del dia " << dia << ": " << ct << endl; return 0; } |
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 |
|
| Volver arriba | |
 |
mshadow14
Registrado: 10 Mar 2014 Mensajes: 2
| Publicado: 11/03/2014 7:06 pm | | | Título: |
| | Muchas gracias por tu ayuda, ya pude resolver el problema que tenia, ahora lo unico que noto es que no me esta escribiendo los resultados que deberian salir al fina. |
|
| Volver arriba | |
 |
|
rir3760

Registrado: 01 Oct 2004 Mensajes: 7530 Ubicación: Mexico
| Publicado: 11/03/2014 7:43 pm | | | Título: |
| En mi caso el programa funciona correctamente y genera los resultados esperados, ¿A que te refieres con "no me esta escribiendo los resultados que deberian"?
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 |
|
| Volver arriba | |
 |
|
|