/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Codigo queda en un loop

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
mshadow14



Registrado: 10 Mar 2014
Mensajes: 2

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com