Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Daniel_Ruiz en 16 Abril 2013, 17:07 pm



Título: Que esta mal en este codigo
Publicado por: Daniel_Ruiz en 16 Abril 2013, 17:07 pm
Bueno que esta mal en este codigo¿?

al ejecutarlo que dice q a encontrado un error

Código:
#include <iostream>
#include <stdio.h>

using namespace std;

char a;

char s;
char r;


main()
{
printf("(s)Suma (R)Resta");

scanf("%s",a);

if(a == s)
{
printf("Realizas suma");
}
else if(a == r)
{
printf("Realizas suma");
}

return 0;
}


Título: Re: Que esta mal en este codigo
Publicado por: leosansan en 16 Abril 2013, 17:23 pm
Creo que te has hecho un potaje mental mezclando instrucciones de C y C++, no es que esté mal, pero ni procede ni incluyes las librerías necesarias para ello.

Te lo dejo en C++:


Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. char a;
  5.  
  6. int main()
  7. {
  8. cout<<"(s)Suma (R)Resta";
  9. cin>>a;
  10. if(a == 's')
  11. {
  12. cout<<"Realizas suma";
  13. }
  14. else if(a == 'r')
  15. {
  16. cout<<"Realizas resta";
  17. }
  18. return 0;
  19. }
  20.  

No confundas las variables con los valores que van/pueden tomar. En este caso s y r son valores que puede tomar la variable a, no variables en sí.

Saluditos!  ....
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Que esta mal en este codigo
Publicado por: Daniel_Ruiz en 16 Abril 2013, 17:32 pm
Haci lo tengo

Código:
#include <iostream>
#include <stdio.h>

using namespace std;
 
char a;

int primero;
int segundo;

int main()
{
cout<<"(S)Suma (R)Resta\n\n\n";
cin>>a;
if(a == 's')
{
printf("Ingresa el primer numero");
scanf("%u",primero);
printf("Ingresa el Segundo numero");
scanf("%u",segundo);
printf("Total",primero + segundo);
}
else if(a == 'r')
{
cout<<"Realizas resta";
}
return 0;
}
Pero me sigue el mismo error :S


Título: Re: Que esta mal en este codigo
Publicado por: mr.blood en 16 Abril 2013, 17:34 pm
Y ese scanf te deberia quedar scanf("%c", &a);

EDITO:

Pon el simbolo & antes de la variable en un scanf. No mezcles lenguajes, usa C o C++, pero no los dos ;).

Sa1uDoS


Título: Re: Que esta mal en este codigo
Publicado por: Daniel_Ruiz en 16 Abril 2013, 17:37 pm
Lol Pero cuales son las cosas de c que estoy usando :s


Título: Re: Que esta mal en este codigo
Publicado por: mr.blood en 16 Abril 2013, 17:41 pm
De C++ los cin los cout y la #include <iostream>

De C los scanf y los printf y la #include <stdio.h>

Código
  1. #include <stdio.h>
  2.  
  3.  
  4. int main()
  5. {
  6. char a;
  7.  
  8. int primero;
  9. int segundo;
  10.  
  11. puts("(S)Suma (R)Resta\n\n\n");
  12. scanf("%c", &u);
  13. if(a == 's')
  14. {
  15. puts("Ingresa el primer numero");
  16. scanf("%u",&primero);
  17. puts("Ingresa el Segundo numero");
  18. scanf("%u",&segundo);
  19. puts("Total",primero + segundo);
  20. }
  21. else if(a == 'r')
  22. {
  23. puts("Realizas resta");
  24. }
  25. return 0;
  26. }

Por favor, define las variables en sus funciones, no globalmente ;). Prueba ese codigo en C y comentanos si te funciona. No conozco C++, por lo que no puedo darte un ejemplo en ese lenguaje.

Sa1uDoS


Título: Re: Que esta mal en este codigo
Publicado por: Daniel_Ruiz en 16 Abril 2013, 17:51 pm
Acabe de crear este :S

Código:
#include <iostream>
using namespace std;
 
char a;
 
int uno;
int dos;

int main()
{
cout<<"(S)Suma (R)Resta (M)Multiplicacion (D)Division\n\n";
cin>>a;
if(a == 's' == 'S')
{
cout<<"Ingresa un numero\n\n";
cin >>uno;
cout<<"Ingresa otro numero\n\n";
cin >>dos;
cout<<"Total Suma = \n"<< uno + dos ;

}
else if(a == 'r'== 'R')
{
cout<<"Ingresa un numero\n\n";
cin >>uno;
cout<<"Ingresa otro numero\n\n";
cin >>dos;
cout<<"Total Resta = \n"<< uno - dos ;
}
else if(a == 'm'|| 'M')
{
cout<<"Ingresa un numero\n\n";
cin >>uno;
cout<<"Ingresa otro numero\n\n";
cin >>dos;
cout<<"Total Multiplicacion = \n"<< uno * dos ;
}
else if(a == 'd'|| 'D')
{
cout<<"Ingresa un numero\n\n";
cin >>uno;
cout<<"Ingresa otro numero\n\n";
cin >>dos;
cout<<"Total Division = \n"<< uno / dos ;
}
return 0;
}


Título: Re: Que esta mal en este codigo
Publicado por: leosansan en 16 Abril 2013, 17:58 pm

Mucho mejor, ahora estas en C++  ;).

Pero los if no están bien, serían algo como esto:


Código
  1. if(a == 's' || a== 'S')

Es decir, debes repetir la variable en cada caso. Y así en todos los if que tienes.

Muy bien campeón, así da gusto ayudar.

Saluditos!. ....
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Que esta mal en este codigo
Publicado por: Daniel_Ruiz en 16 Abril 2013, 18:01 pm
Mucho mejor, ahora estas en C++  ;).

Pero los if no están bien, serían algo como esto:


Código
  1. if(a == 's' || a== 'S')

Es decir, debes repetir la variable en cada caso. Y así en todos los if que tienes.

Muy bien campeón, así da gusto ayudar.

Saluditos!. ....
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)

Jejeje Muchas Gracias espero aprender de Ti Maestro  ;-)

Edit Listo termine mi primer calculadora Gracias :p

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. char a;
  5.  
  6. int uno;
  7. int dos;
  8.  
  9. int main()
  10. {
  11. cout<<"(S)Suma (R)Resta (M)Multiplicacion (D)Division\n\n";
  12. cin>>a;
  13. if(a == 's'||a == 'S')
  14. {
  15. cout<<"Ingresa un numero\n\n";
  16. cin >>uno;
  17. cout<<"Ingresa otro numero\n\n";
  18. cin >>dos;
  19. cout<<"Total Suma = \n"<< uno + dos ;
  20. }
  21. else if(a == 'r'||a == 'R')
  22. {
  23. cout<<"Ingresa un numero\n\n";
  24. cin >>uno;
  25. cout<<"Ingresa otro numero\n\n";
  26. cin >>dos;
  27. cout<<"Total Resta = \n"<< uno - dos ;
  28. }
  29. else if(a == 'm'|| a == 'M')
  30. {
  31. cout<<"Ingresa un numero\n\n";
  32. cin >>uno;
  33. cout<<"Ingresa otro numero\n\n";
  34. cin >>dos;
  35. cout<<"Total Multiplicacion = \n"<< uno * dos ;
  36. }
  37. else if(a == 'd'||a == 'D')
  38. {
  39. cout<<"Ingresa un numero\n\n";
  40. cin >>uno;
  41. cout<<"Ingresa otro numero\n\n";
  42. cin >>dos;
  43. cout<<"Total Division = \n"<< uno / dos ;
  44. }
  45. return 0;
  46. }


Título: Re: Que esta mal en este codigo
Publicado por: leosansan en 16 Abril 2013, 18:13 pm
Jejeje Muchas Gracias espero aprender de Ti ......  ;-)

Edit Listo termine mi primer calculadora Gracias :p


Por cierto, cuando vayas a poner un código usa las etiquetas GeSHi y eliges la de C++, y en medio de las etiquetas que aparecen "pegas" tu código,así el código sale coloreado y es más fácil para los que te ayuden leer el código

¡¡¡¡Enhorabuena¡¡¡¡

Saluditos!. ....
(http://i1280.photobucket.com/albums/a497/leosansan/leosan1/emoticonos82_zps76126c24.gif)


Título: Re: Que esta mal en este codigo
Publicado por: 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
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. char a;
  7.  
  8. int uno;
  9. int dos;
  10.  
  11. cout<<"(S)Suma (R)Resta (M)Multiplicacion (D)Division\n\n";
  12. cin>>a;
  13. if(a!='r' && a!='R' && a!='s' && a!='S' && a!='d' && a!='D' && a!='m' && a!='M')
  14. {
  15. cout<<"Ingresa una opcion valida\n";
  16. return 1;
  17. }
  18. cout<<"Ingresa un numero\n\n";
  19. cin >>uno;
  20. cout<<"Ingresa otro numero\n\n";
  21. cin >>dos;
  22. if(a == 's'||a == 'S')
  23. {
  24. cout<<"Total Suma = \n"<< uno + dos ;
  25. }
  26. else if(a == 'r'||a == 'R')
  27. {
  28. cout<<"Total Resta = \n"<< uno - dos ;
  29. }
  30. else if(a == 'm'|| a == 'M')
  31. {
  32. cout<<"Total Multiplicacion = \n"<< uno * dos ;
  33. }
  34. else if(a == 'd'||a == 'D')
  35. {
  36. cout<<"Total Division = \n"<< uno / dos ;
  37. }
  38. return 0;
  39. }
  40.  

Sa1uDoS


Título: Re: Que esta mal en este codigo
Publicado por: Daniel_Ruiz en 16 Abril 2013, 18:17 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
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. char a;
  7.  
  8. int uno;
  9. int dos;
  10.  
  11. cout<<"(S)Suma (R)Resta (M)Multiplicacion (D)Division\n\n";
  12. if(a!='r' && a!='R' && a!='s' && a!='S' && a!='d' && a!='D' && a!='m' && a!='M')
  13. {
  14. cout<<"Ingresa una opcion valida\n";
  15. return 1;
  16. }
  17. cin>>a;
  18. cout<<"Ingresa un numero\n\n";
  19. cin >>uno;
  20. cout<<"Ingresa otro numero\n\n";
  21. cin >>dos;
  22. if(a == 's'||a == 'S')
  23. {
  24. cout<<"Total Suma = \n"<< uno + dos ;
  25. }
  26. else if(a == 'r'||a == 'R')
  27. {
  28. cout<<"Total Resta = \n"<< uno - dos ;
  29. }
  30. else if(a == 'm'|| a == 'M')
  31. {
  32. cout<<"Total Multiplicacion = \n"<< uno * dos ;
  33. }
  34. else if(a == 'd'||a == 'D')
  35. {
  36. cout<<"Total Division = \n"<< uno / dos ;
  37. }
  38. return 0;
  39. }
  40.  

Sa1uDoS

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


Título: Re: Que esta mal en este codigo
Publicado por: amchacon en 16 Abril 2013, 19:00 pm
Código
  1.  
  2. cout<<"(S)Suma (R)Resta (M)Multiplicacion (D)Division\n\n";
  3. if(a!='r' && a!='R' && a!='s' && a!='S' && a!='d' && a!='D' && a!='m' && a!='M')
  4. {
  5. cout<<"Ingresa una opcion valida\n";
  6. return 1;
  7. }
  8. cin>>a;

Esto... No deberías hacer la comprobación después de introducir los datos?


Título: Re: Que esta mal en este codigo
Publicado por: mr.blood en 16 Abril 2013, 19:03 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


Título: Re: Que esta mal en este codigo
Publicado por: 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

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. main()
  6. {
  7.  
  8. int dia;
  9. int mes;
  10. int ao;
  11.  
  12. cout<<"Ingrese El dia : ";
  13. cin>>dia;
  14. cout<<"Ingrese El Mes : ";
  15. cin>>mes;
  16. cout<<"Ingrese El Año : ";
  17. cin>>ao;
  18. if(mes == 1)
  19. {
  20. cout<<"Dia:"<<dia<<" Mes: Enero"<<" ano:"<<ao;
  21.  
  22. }
  23. else if(mes == 2)
  24. {
  25. cout<<"Dia:"<<dia<<" Mes: Febrero"<<" ano:"<<ao;
  26.  
  27. }
  28. else if(mes == 3)
  29. {
  30. cout<<"Dia:"<<dia<<" Mes: Marzo"<<" ano:"<<ao;
  31.  
  32. }
  33. else if(mes == 4)
  34. {
  35. cout<<"Dia:"<<dia<<" Mes: Abril"<<" ano:"<<ao;
  36.  
  37. }
  38. else if(mes == 5)
  39. {
  40. cout<<"Dia:"<<dia<<" Mes: Mayo"<<" ano:"<<ao;
  41.  
  42. }
  43. else if(mes == 6)
  44. {
  45. cout<<"Dia:"<<dia<<" Mes: Junio"<<" ano:"<<ao;
  46.  
  47. }
  48. else if(mes == 7)
  49. {
  50. cout<<"Dia:"<<dia<<" Mes: Julio"<<" ano:"<<ao;
  51.  
  52. }
  53. else if(mes == 8)
  54. {
  55. cout<<"Dia:"<<dia<<" Mes: Agosto"<<" ano:"<<ao;
  56.  
  57. }
  58. else if(mes == 9)
  59. {
  60. cout<<"Dia:"<<dia<<" Mes: Septiembre"<<" ano:"<<ao;
  61.  
  62. }
  63. else if(mes == 10)
  64. {
  65. cout<<"Dia:"<<dia<<" Mes: Octubre"<<" ano:"<<ao;
  66.  
  67. }
  68. else if(mes == 11)
  69. {
  70. cout<<"Dia:"<<dia<<" Mes: Noviembre"<<" ano:"<<ao;
  71.  
  72. }
  73. else if(mes == 12)
  74. {
  75. cout<<"Dia:"<<dia<<" Mes: Diciembre"<<" ano:"<<ao;
  76.  
  77. }
  78. else
  79. {
  80.  
  81. cout<<"No ingresaste el Mes Correcto Max 12!";
  82.  
  83. }
  84.  
  85.  
  86. return 0;
  87. }

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.


Título: Re: Que esta mal en este codigo
Publicado por: leosansan en 16 Abril 2013, 19:36 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
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. char a;
  8. int uno,dos;
  9.    cout<<"(S)Suma (R)Resta (M)Multiplicacion (D)Division\n\n";
  10. cin>>a;
  11.    while(a!='r' && a!='R' && a!='s' && a!='S' && a!='d' && a!='D' && a!='m' && a!='M')
  12. {
  13. cout<<"Ingresa una opcion valida\n";
  14. cin>>a;
  15. }
  16. cout<<"Ingresa un numero\n\n";
  17. cin >>uno;
  18. cout<<"Ingresa otro numero\n\n";
  19. cin >>dos;
  20. if(a == 's'||a == 'S')
  21. {
  22. cout<<"Total Suma = "<< uno + dos ;
  23. }
  24. else if(a == 'r'||a == 'R')
  25. {
  26. cout<<"Total Resta = "<< uno - dos ;
  27. }
  28. else if(a == 'm'|| a == 'M')
  29. {
  30. cout<<"Total Multiplicacion = "<< uno * dos ;
  31. }
  32. else if(a == 'd'||a == 'D')
  33. {
  34. cout<<"Total Division = "<< uno / dos ;
  35. }
  36. return EXIT_SUCCESS;
  37. }
  38.  

Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Que esta mal en este codigo
Publicado por: leosansan en 16 Abril 2013, 20:04 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
  1. #include <iostream>
  2. #include<clocale>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    setlocale(LC_ALL, "Spanish");
  8.    char Mes [12][11]={"ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO","AGOSTO","SEPTIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE"};
  9. int dia;
  10. int mes;
  11. int ao;
  12.  
  13. cout<<"Ingrese El día : ";
  14. cin>>dia;
  15. cout<<"Ingrese El Mes : ";
  16. cin>>mes;
  17. cout<<"Ingrese El Año : ";
  18. cin>>ao;
  19.  
  20. cout<<"Día:"<<dia<<" Mes: "<<Mes [mes-1]<<" año:"<<ao;
  21.  
  22.  
  23. return 0;
  24. }
  25.  

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!. ....
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)

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


Título: Re: Que esta mal en este codigo
Publicado por: mr.blood en 16 Abril 2013, 20:06 pm
Para que no hagas tantos if.

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. char listameses[][11]={"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"};
  6. int dia, mes, año;
  7.  
  8. puts("Introduce un dia: ");
  9. scanf("%i", &dia);
  10. puts("Introduce un mes: ");
  11. scanf("%i", &mes);
  12. puts("Introduce un año: ");
  13. scanf("%i", &año);
  14. /* Puedes saltarte el siguiente control de errores */
  15. 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))
  16. {
  17. puts("Introduce los datos correctamente\n");
  18. return 1;
  19. }
  20. printf("%i de %s de %i\n", dia, listameses[mes-1], año);
  21. return 0;
  22. }
  23.  

Sa1uDoS


Título: Re: Que esta mal en este codigo
Publicado por: 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


Título: Re: Que esta mal en este codigo
Publicado por: mr.blood en 17 Abril 2013, 07:38 am
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