Duda con do-while

Iniciado por cazagavilan, 17 Abril 2011, 18:21 PM

0 Miembros y 1 Visitante están viendo este tema.

cazagavilan

Hola, tengo que hacer un mini menu que me permita hacer una suma o salir del programa lo he intentado ( como no ) pero nada no me sale .Cuando sumo me salen numeros raros y si quiero salir del programa sale pero tengo que poner 0 dos veces.
Código (cpp) [Seleccionar]
#include "stdafx.h"
#include <iostream>
using namespace std;

int main()

{
int a;
int b;
    int suma;
(suma = a+b);
do{
cout <<"****************************************\n";
cout <<"*****                                                     *****\n";
cout <<"****                                                        ****\n";
cout <<"***                                                           ***\n";
cout <<"**                                                              **\n";
cout <<"*                CALCULADORA DE SUMAS           *\n";
cout <<"**                                                              **\n";
cout <<"***                                                           ***\n";
cout <<"****                                                        ****\n";
cout <<"*****                                                     *****\n";
cout <<"****************************************\n";

cout <<"Escriba las dos cifras a sumar o pulse la tecla cero para salir: \n";
    cin >> a >> b;
cout << a << "+" << b << "=" << suma <<"\n";
}while (a <= 0);
return 0;
}



Tambien me da este error :warning C4700: se utilizó la variable local 'a' sin inicializar.
warning C4700: se utilizó la variable local 'b' sin inicializar.

A ver si me podeis ayudar, Gracias.


Shell Root

#1
El mismo error te da la respuesta.
Código (cpp) [Seleccionar]
#include <stdio.h>

int sNum1   = 0;
int sNum2   = 0;
int sResult = 0;

int main(){
   printf("Ingrese numero 1: ");
   scanf("%d", &sNum1);

   printf("Ingrese numero 2: ");
   scanf("%d", &sNum2);

   sResult = sNum1 + sNum2;

   printf("%d\n", sResult);

}


Código (PoC) [Seleccionar]
alex@shellroot:~/Escritorio$ g++ PoC.cpp
alex@shellroot:~/Escritorio$ ./a.out
Ingrese numero 1: 4
Ingrese numero 2: 3
7

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

ssaammuu

#2
Es que estas haciendo la suma antes de extraer los valores
cin>>a>>b y después suma = a+b;

otra cosa, tienes puesto que el bucle se repita mientras a sea menor o igual a 0, por lo que dice tu programa creo que sería , while(a!=0)

cazagavilan

jaja gracias me has encendido la bombilla. ahora tengo que solucionar lo del 0 a ver que tal me sale

cazagavilan

Si es que he hecho tantas pruebas que ya no se ni lo que ponia pero ahora haciendolo asi: a!=0 me sigue pidiendo dos ceros y haciendo la suma de los mismos, no tendria que salir el cero y cerrarse el programa?

ssaammuu

Te recomiendo que el bucle lo hagas infinito es decir while(1) y tras extraer a, mires se es igual a 0, si lo es, sales del bucle...

//codigo...
cout <<"Escriba las dos cifras a sumar o pulse la tecla cero para salir: \n";
    cin >> a;
    if (a==0)return 0;
    cin >> b;
    (suma = a+b);
cout << a << "+" << b << "=" << suma <<"\n";
}while (1);
//codigo...

cazagavilan