Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Duda con métodos distintos de escribir un código

Estas en el tema de Duda con métodos distintos de escribir un código en el foro de C/C++ en Foros del Web. Hola, la profesora nos está enseñando dos formas distintas de escribir para programar en c++, me ha surgido un problema o una duda, y es ...
  #1 (permalink)  
Antiguo 02/11/2015, 00:26
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años
Puntos: 0
Duda con métodos distintos de escribir un código

Hola, la profesora nos está enseñando dos formas distintas de escribir para programar en c++, me ha surgido un problema o una duda, y es que, quiero saber si es lo mismo poner:

Código:
printf("a[%d][%d] = ",i,j);
a ponerlo como:
Código:
cout << "a = " << i,j;
lo mismo para:
Código:
scanf("%f",&a[i][j]);
a ponerlo como:
Código:
 cin >> a[i][j];
yo estoy aprendí de la primera forma, pero es necesario saber las dos, y escribiéndolo de la primera forma si me funciona, de la segunda también corre el programa pero ya no me da el mismo resultado, no se en que me esté equivocando, alguien me ayuda por favor?, gracias de antemano.
  #2 (permalink)  
Antiguo 02/11/2015, 02:03
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Duda con métodos distintos de escribir un código

Para lo que tu vas a necesitar ahora mismo puedes asumir que son iguales.

Sus diferencias no son tan significativas y no merece la pena que centres tus esfuerzos en eso. Céntrate en entender como funcionan los punteros, la gestión de la memoria, el polimorfismo, la sobrecarga de funciones, la herencia... todo lo que aprendas sobre estos temas sí que te va a ser de utilidad.

Un saludo.
  #3 (permalink)  
Antiguo 02/11/2015, 11:08
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años
Puntos: 0
Respuesta: Duda con métodos distintos de escribir un código

Si, lo entiendo, pero es necesario aprender las dos formas para pasar el curso, en este momento me han pedido realizar un programa de ambas maneras por eso mi duda, no me da el mismo resultado de una manera y la otra, a parte de aprender lo que tu haz mencionado. En mi código, por ejemplo el "%d" si no me equivoco es quien da el valor de entero a la variable, si estoy programando de la primera manera. En la segunda solo necesito declarar la variable int antes de utilizarla. Pero cuando uso la parte:
Código:
cout << "a = " << i,j;
el resultado es distinto al
Código:
printf("a[%d][%d] = ",i,j);
creo que mi problema es haber aprendido sólo a programar de la primera forma, ahora no puedo hacer que el programa corra igual de las dos maneras :s si funciona, pero no da el mismo resultado.
  #4 (permalink)  
Antiguo 02/11/2015, 11:32
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Duda con métodos distintos de escribir un código

Código C++:
Ver original
  1. cout << "a = " << i,j;

Ese código no te va a compilar en la vida... nada de "me da un resultado diferente".

En c++ existe la sobrecarga de operadores, y da la casualidad que '<<' se conoce como operador de inserción. Este operador es unario, es decir, únicamente va a aceptar un parámetro.

Llevando esto a C sería como hacer algo tal que (imagínate que puedes tener una función que se llame '<<':

Código C++:
Ver original
  1. <<(cout,"a =");
  2. <<(cout,i,j);

Se ve claramente que en la segunda línea estás intentando llamar a una función con 3 parámetros... que ni existe ni se la espera.

Cada vez que quieres llevar algo a la consola con cout tiene que ir precedido de '<<'. Si quieres volcar dos variables independientes, necesitas usar ese operador para cada una... y si entre medias de las dos variables tienes que introducir una coma... pues otro operador más:

Código C++:
Ver original
  1. std::cout << "a = " << i << "," << j;

Por eso te decía... es mucho más importante aprender los conceptos del lenguaje, como la sobrecarga de funciones. Y has de tener en cuenta que los operadores son tratados prácticamente como funciones y la prueba la tienes en el siguiente ejemplo:

Código C++:
Ver original
  1. int main()
  2. {
  3.   std::operator<<(std::cout,"Una prueba") << std::endl;
  4. }

Que es equivalente a:

Código C++:
Ver original
  1. int main()
  2. {
  3.   std::operator<<(std::cout,"Una prueba");
  4.   std::cout << std::endl;
  5. }

y a:

Código C++:
Ver original
  1. int main()
  2. {
  3.   std::cout << "Una prueba" << std::endl;
  4. }

¿Cómo funciona?

Sobrecarga de operadores. Cuando estudies esa parte entenderás todo esto :)
  #5 (permalink)  
Antiguo 02/11/2015, 14:34
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Duda con métodos distintos de escribir un código

Yo creo que lo que quiere conseguir es esto:
Código C++:
Ver original
  1. cout <<"a ["<<i<<"]["<<j <<"]"<<endl;
No se si cout tiene el método sprintf como pasa en c++Builder con AnsiString que quizás seria más sencillo.
  #6 (permalink)  
Antiguo 03/11/2015, 13:22
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años
Puntos: 0
Respuesta: Duda con métodos distintos de escribir un código

Exacto, me refería a algo como esto:
Código:
cout <<"a ["<<i<<"]["<<j <<"]"<<endl;
a ver si entendí, por ejemplo, yo en mi código tengo esta línea:

Código:
printf("%10.2f\n", l[i][j]);
* comandos con escape: "\n". significa que escribe un fin de línea.
* "%10.2f". los números que aparecen después de un % indican cómo se imprime el otro argumento, la f, indica que es un float, el 10 el ancho y el 2 la precisión.

Eso transformado al otro método debería quedar:

Código:
float p;
 cout << l[i][j] << endl;
Estoy en lo correcto verdad?, supongo que si porque mis códigos ya funcionan bien, hay algún error que tenga o algo que deba saber?, gracias :3
  #7 (permalink)  
Antiguo 03/11/2015, 14:17
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Duda con métodos distintos de escribir un código

Código C:
Ver original
  1. printf("%10.2f\n", l[i][j]);
Sería:
Código C++:
Ver original
  1. cout <<fixed <<setw (10)<<setprecision(2)<< l[i][j] << endl;
Igual me equivoco porque no domino mucho de c++ pero puedes probarlo y me cuentas.
  #8 (permalink)  
Antiguo 03/11/2015, 15:15
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años
Puntos: 0
Respuesta: Duda con métodos distintos de escribir un código

Va, parece que si debería de ser así, investigaré un poco más eso, gracias ;D

Etiquetas: distintos, funcion, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:47.