Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: xmbeat92 en 30 Septiembre 2010, 08:22 am



Título: Ayuda con C++, Ejercicio Simple [Soy Novato]
Publicado por: xmbeat92 en 30 Septiembre 2010, 08:22 am
Buen dia/noche foreros, pues la verdad yo he programado en vb y pues siempre me ha interesado c++, y finalmente hoy he decido empezar, me descargue el codebloks, devc++ y un tuto, y todo bien conforme a la lectura, pero un ejercicio propuesto q tenia el libro lo pegue en el dev y no quiso correr, me arrojaba unos warnings y no se q mas (no estoy familiarizado), este es el code:
Código
  1. #include <iostream.h>; // librería para uso de cout
  2. int main() // función principal
  3. {
  4. int i = 1; // variable para bucles
  5. bool sumar = true; // Siguiente operación es sumar o restar
  6. bool terminado = false; // Se ha alcanzado la condición de fin
  7. do { // Hacer
  8. cout << i; // muestra el valor en pantalla
  9. terminado = (i == 23); // Actualiza condición de fin
  10. if(terminado) cout << "."; else cout << ", "; // Puntuación,
  11. separadores
  12. if(sumar) i += 4; else i -= 2; // Calcula siguiente elemento
  13. sumar = !sumar; // Cambia la siguiente operación
  14. } while(!terminado); // ... mientras no se termine
  15. cout << endl; // Cambio de línea


pero buscando en otros codes q vi externos vi q usaban <iostream> sin h
y que hacian uso del namespace, asi que tratando de hacer mi primer code hice esto:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int i, num, j, r;
  8.    cout<<"Ingrese el numero de filas:" << endl;
  9.    cin >>num;
  10.    for (i=0;i++<num;)
  11.    {
  12.        for (j=0; j++<i*2;)
  13.        {
  14.            if (j>i)
  15.            {
  16.               r=i-(j-i);
  17.               if (r>0) cout<< r;  
  18.            }
  19.            else cout<<j;
  20.        }
  21.        cout<<endl;
  22.    }
  23.    system("PAUSE");
  24.    return 0;
  25. }
  26.  
  27.  
  28.  
que  vendria siendo el triangulo de pascal
pero lo q me frusta es que pase mucho tiempo tratando de averiguar por q no corria el programa sin el uso de namespace ademas de las cabeceras q no tenian h,
se que esto es una novatada para todos pero necesito su orientacion!!, otra cosa q quiero senalar es que poniendo ese code q hice en codeblocks no funciona,  es mas ni compila ni nada, cosa q no me agrada porq me gusta mas su entorno
q me recomiendan otro tuto de c++ por q el q tengo no quiere jalar algunas cosas. Gracias!!
Agradeceria cualquier explicacion y de como arreglar el codeblocks.
Mil disculpas por esta novatada!!


Título: Re: Ayuda con C++, Ejercicio Simple [Soy Novato]
Publicado por: Akai en 30 Septiembre 2010, 10:45 am
Con tu segundo código, compila si le quitas el system("pause"). En C funcionaría, pero en C++ me parece que no puedes hacer llamadas al sistema de esta forma (alguien que concrete esto, por favor). Por otro lado, si usas codeblocks no necesitas un pause, ya que cuando compilas y ejectuas dentro del propio IDE él mismo para el programa después que este finalice.

Turbo C, dev c++ y alguno más están obsoletos, como Littlehorse (y otros) han dicho ya en muchas ocasiones, es mejor utilizar Codeblocks o Visual C++

[...]

En lo personal, te recomendaría que instales otro entorno de trabajo:

  • Visual C++ Express (http://www.microsoft.com/express/Downloads/#2010-Visual-CPP)
  • Code::Blocks (http://www.codeblocks.org/)



Por otro lado, a diferencia de C, las librerías suelen incluirse sin el .h, como ya has visto.

Sobre el namespace, te recomendaría que leyeses sobre espacio de nombres (http://es.wikipedia.org/wiki/Espacio_de_nombres). Como pequeño resumen se podría decir que el espacio de nombres es el apellido de las variables, algo que diferencia variables de un mismo nombre. Según tengo entendido no es algo que se emplee demasiado a menos que trabajes en proyectos grandes / con diferentes personas que es cuando se pueden dar casos de variables homónimas.

EDIT: Codeblocks no te avisaba del error? ¿qué compilador dentro de codeblocks estás usando? Mira también de activar en las opciones del compilador (settings -> compiler and debugger) lo siguiente: -Wall, -pedantic.


Título: Re: Ayuda con C++, Ejercicio Simple [Soy Novato]
Publicado por: Littlehorse en 30 Septiembre 2010, 10:59 am
Lo de iostream.h, en C++ es una declaración de archivos de cabecera obsoleta. En otros hilos lo he explicado a fondo pero creo que lo ideal seria que leas este link (http://members.gamedev.net/sicrane/articles/iostream.html) ya que abarca el tema en forma mas detallada.

Lo de las llamadas al sistema, si, como poder hacerlas podes, por supuesto es poco recomendable. Tampoco es que sea terrible hacerlo en un ejercicio de universidad pero en definitiva las malas costumbres se quitan de a poco así que lo ideal seria no utilizarlas. Mas allá de eso, system se encuentra en el archivo de cabecera cstdlib (stdlib.h en C) el cual no esta declarado en el código.

En cuanto al namespace, si, es tal como has dicho, generalmente se utiliza para evitar colisiones en los nombres lo cual por supuesto es mas factible en proyectos grandes y/o grupos de trabajo.

Es bastante temprano, así que si me olvide de responder algo me avisan.

Saludos!


Título: Re: Ayuda con C++, Ejercicio Simple [Soy Novato]
Publicado por: xmbeat92 en 1 Octubre 2010, 07:47 am
entonces el tuto q se supone es de c++ debo dejarlo y conseguirme otro mas moderno, y a lo de codeblocks me aparece esto
"C++ - Debug" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...
Nothing to be done.