Que esta mal en este codigo

Iniciado por Daniel_Ruiz, 16 Abril 2013, 17:07 PM

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

mr.blood

#10
Animo!
Un consejo, las variables decláralas dentro de main, no fuera, ya entenderás por qué.

Y en vez de pedir los números en cada if, los pides antes de los if y te ahorras lineas.

Solo tendrías que implementar un "control de errores" por si introducen una letra que no sea válida.

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main()
{
char a;

int uno;
int dos;

cout<<"(S)Suma (R)Resta (M)Multiplicacion (D)Division\n\n";
cin>>a;
if(a!='r' && a!='R' && a!='s' && a!='S' && a!='d' && a!='D' && a!='m' && a!='M')
{
cout<<"Ingresa una opcion valida\n";
return 1;
}
cout<<"Ingresa un numero\n\n";
cin >>uno;
cout<<"Ingresa otro numero\n\n";
cin >>dos;
if(a == 's'||a == 'S')
{
cout<<"Total Suma = \n"<< uno + dos ;
}
else if(a == 'r'||a == 'R')
{
cout<<"Total Resta = \n"<< uno - dos ;
}
else if(a == 'm'|| a == 'M')
{
cout<<"Total Multiplicacion = \n"<< uno * dos ;
}
else if(a == 'd'||a == 'D')
{
cout<<"Total Division = \n"<< uno / dos ;
}
return 0;
}


Sa1uDoS

Daniel_Ruiz

Cita de: mr.blood en 16 Abril 2013, 18:14 PM
Animo!
Un consejo, las variables decláralas dentro de main, no fuera, ya entenderás por qué.

Y en vez de pedir los números en cada if, los pides antes de los if y te ahorras lineas.

Solo tendrías que implementar un "control de errores" por si introducen una letra que no sea válida.

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main()
{
char a;

int uno;
int dos;

cout<<"(S)Suma (R)Resta (M)Multiplicacion (D)Division\n\n";
if(a!='r' && a!='R' && a!='s' && a!='S' && a!='d' && a!='D' && a!='m' && a!='M')
{
cout<<"Ingresa una opcion valida\n";
return 1;
}
cin>>a;
cout<<"Ingresa un numero\n\n";
cin >>uno;
cout<<"Ingresa otro numero\n\n";
cin >>dos;
if(a == 's'||a == 'S')
{
cout<<"Total Suma = \n"<< uno + dos ;
}
else if(a == 'r'||a == 'R')
{
cout<<"Total Resta = \n"<< uno - dos ;
}
else if(a == 'm'|| a == 'M')
{
cout<<"Total Multiplicacion = \n"<< uno * dos ;
}
else if(a == 'd'||a == 'D')
{
cout<<"Total Division = \n"<< uno / dos ;
}
return 0;
}


Sa1uDoS

Vale gracias Anotado y Listo ya use las etiquetas Ponganme una Tare haber si la puedo hacer :P
Importante


Bueno Necesito de su ayuda estoy montando una microempresa, Y estoy reuniendo Quemadoras de Dvd - Cd , Soy de Colombia Bogota si quieres apoyarme enviame un Mp Por Favor!.

amchacon

#12
Cita de: mr.blood en 16 Abril 2013, 18:14 PM
Código (cpp) [Seleccionar]


cout<<"(S)Suma (R)Resta (M)Multiplicacion (D)Division\n\n";
if(a!='r' && a!='R' && a!='s' && a!='S' && a!='d' && a!='D' && a!='m' && a!='M')
{
cout<<"Ingresa una opcion valida\n";
return 1;
}
cin>>a;


Esto... No deberías hacer la comprobación después de introducir los datos?
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

mr.blood

Cita de: amchacon en 16 Abril 2013, 19:00 PM
Esto... No deberías hacer la comprobación después de introducir los datos?

EPIC FAIL! jajaja

Lo edite a toda prisa en el propio post y ni me di cuenta, buena vista ;). EDITADO.

Sa1uDoS

Daniel_Ruiz

#14
Bueno miren hice este pequeño programa dice la fecha en formato dia mes año

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

main()
{

int dia;
int mes;
int ao;

cout<<"Ingrese El dia : ";
cin>>dia;
cout<<"Ingrese El Mes : ";
cin>>mes;
cout<<"Ingrese El Año : ";
cin>>ao;
if(mes == 1)
{
cout<<"Dia:"<<dia<<" Mes: Enero"<<" ano:"<<ao;

}
else if(mes == 2)
{
cout<<"Dia:"<<dia<<" Mes: Febrero"<<" ano:"<<ao;

}
else if(mes == 3)
{
cout<<"Dia:"<<dia<<" Mes: Marzo"<<" ano:"<<ao;

}
else if(mes == 4)
{
cout<<"Dia:"<<dia<<" Mes: Abril"<<" ano:"<<ao;

}
else if(mes == 5)
{
cout<<"Dia:"<<dia<<" Mes: Mayo"<<" ano:"<<ao;

}
else if(mes == 6)
{
cout<<"Dia:"<<dia<<" Mes: Junio"<<" ano:"<<ao;

}
else if(mes == 7)
{
cout<<"Dia:"<<dia<<" Mes: Julio"<<" ano:"<<ao;

}
else if(mes == 8)
{
cout<<"Dia:"<<dia<<" Mes: Agosto"<<" ano:"<<ao;

}
else if(mes == 9)
{
cout<<"Dia:"<<dia<<" Mes: Septiembre"<<" ano:"<<ao;

}
else if(mes == 10)
{
cout<<"Dia:"<<dia<<" Mes: Octubre"<<" ano:"<<ao;

}
else if(mes == 11)
{
cout<<"Dia:"<<dia<<" Mes: Noviembre"<<" ano:"<<ao;

}
else if(mes == 12)
{
cout<<"Dia:"<<dia<<" Mes: Diciembre"<<" ano:"<<ao;

}
else
{

cout<<"No ingresaste el Mes Correcto Max 12!";

}


return 0;
}


Y me gustaria hacer este pero no se como :s

Ejercicio 308
Realizar un programa que permita elegir el formato (windows o linux) y permita escribir un determinado texto de cualquier tamaño y guardarlo en un archivo ascii con el formato especificado llamado c:\texto.txt.
Los archivos de texto windows tienen como marcador de final de línea la secuencia CR (retorno de carro ascii=13) y LF (line feed ascii=10). Los de Linux solo tienen LF.
Importante


Bueno Necesito de su ayuda estoy montando una microempresa, Y estoy reuniendo Quemadoras de Dvd - Cd , Soy de Colombia Bogota si quieres apoyarme enviame un Mp Por Favor!.

leosansan

Cita de: mr.blood en 16 Abril 2013, 19:03 PM
EPIC FAIL! jajaja

Lo edite a toda prisa en el propio post y ni me di cuenta, buena vista ;). EDITADO.

Sa1uDoS

Y además darle la opción a que ingrese otro valor en lugar de "cerrarle" el programa:

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
char a;
int uno,dos;
    cout<<"(S)Suma (R)Resta (M)Multiplicacion (D)Division\n\n";
cin>>a;
    while(a!='r' && a!='R' && a!='s' && a!='S' && a!='d' && a!='D' && a!='m' && a!='M')
{
cout<<"Ingresa una opcion valida\n";
cin>>a;
}
cout<<"Ingresa un numero\n\n";
cin >>uno;
cout<<"Ingresa otro numero\n\n";
cin >>dos;
if(a == 's'||a == 'S')
{
cout<<"Total Suma = "<< uno + dos ;
}
else if(a == 'r'||a == 'R')
{
cout<<"Total Resta = "<< uno - dos ;
}
else if(a == 'm'|| a == 'M')
{
cout<<"Total Multiplicacion = "<< uno * dos ;
}
else if(a == 'd'||a == 'D')
{
cout<<"Total Division = "<< uno / dos ;
}
return EXIT_SUCCESS;
}


Saluditos!. ...

leosansan

#16
Cita de: Daniel_Ruiz en 16 Abril 2013, 19:14 PM
Bueno miren hice este pequeño programa dice la fecha en formato dia mes año


Bien, aunque un poco largo.

Antes de meterte en ficheros te aconsejo practiques con bucles, switch y arrays.

Por ejemplo tu código de día, mes y año podrías abreviarlo con el uso de array:


Código (cpp) [Seleccionar]

#include <iostream>
#include<clocale>
using namespace std;

int main()
{
   setlocale(LC_ALL, "Spanish");
   char Mes [12][11]={"ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO","AGOSTO","SEPTIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE"};
int dia;
int mes;
int ao;

cout<<"Ingrese El día : ";
cin>>dia;
cout<<"Ingrese El Mes : ";
cin>>mes;
cout<<"Ingrese El Año : ";
cin>>ao;

cout<<"Día:"<<dia<<" Mes: "<<Mes [mes-1]<<" año:"<<ao;


return 0;
}


Ya sé que es simple, no implemento condiciones de verificación de día y mes, pero es como un simple ejemplo de uso de un array.

Por cierto, te falto "int" antes de main, ten en cuenta que retorna cero, luego main es una función de tipo int, así a lo simple.

Y el uso de la librería clocale y luego lo de "spanish" es para que en lo que se va a imprimir salgan los caracteres hispanos en lugar de símbolos raros. Permite el uso de acentos y de la "ñ", eso sí ¡cuidado¡ porque usa como caracter para los decimales la coma en lugar del punto que es más anglosajón.

Y lo dicho, mi consejo es que te centres en lo que vas viendo hasta ahora, los ficheros ya tendrán su momento.

Saluditos!. ....


P.D: Sorry por no haber editado el anterior post y meter este. He metido la pata  >:D

mr.blood

Para que no hagas tantos if.

#include <stdio.h>

int main()
{
char listameses[][11]={"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"};
int dia, mes, año;

puts("Introduce un dia: ");
scanf("%i", &dia);
puts("Introduce un mes: ");
scanf("%i", &mes);
puts("Introduce un año: ");
scanf("%i", &año);
/* Puedes saltarte el siguiente control de errores */
if(mes>12 || dia<1 || ((mes<6 && mes%2==1) && dia>31) || ((mes<6 && mes%2==0 && mes!=2) && dia>30) || (mes==2 && dia>28 && año%4!=0) || (mes==2 && dia>29 && año%4==0) || ((mes>6 && mes%2==0) && dia>31) || ((mes>6 && mes%2==1) && dia>31))
{
puts("Introduce los datos correctamente\n");
return 1;
}
printf("%i de %s de %i\n", dia, listameses[mes-1], año);
return 0;
}


Sa1uDoS

Senior++

No hace falta usar la librería Iostream y usar la funcion cout y Cin yo personalmente prefiero usar la librería Stdio.h  como ati te resulte mas comodo :P
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

mr.blood

Cita de: Senior++ en 16 Abril 2013, 21:04 PM
No hace falta usar la librería Iostream y usar la funcion cout y Cin yo personalmente prefiero usar la librería Stdio.h  como ati te resulte mas comodo :P

Pues estas usando librerias de C en C++ xD.

Sa1uDoS