Ayuda C++

Publicado en 'Programación' por daaanieeel, 16 Oct 2014.





  1. daaanieeel

    daaanieeel Miembro frecuente

    Registro:
    27 Abr 2014
    Mensajes:
    115
    Likes:
    10




    Hola, he estado algo oxidado con C++ y ahora me están enseñando con otro método, aprendí con scanf, printf, etc y me están enseñando con cout, cin, etc por lo que a veces me confundo un poco, así que necesito algo de ayuda, más que una resolución completa quisiera una guía sobre cómo empezar para terminar estos ejercicios.

    Gracias de antemano.

    [​IMG]
     


  2. genelyk

    genelyk Suspendido

    Registro:
    25 Feb 2011
    Mensajes:
    3,154
    Likes:
    1,053
    de nuevo volveremos hacer la tarea de los demas..... me rei mucho cuando dices " otro metodo" , solo cambia de libreria a iostream .... dios estas universidades ..
     
  3. daricardo

    daricardo Miembro de plata

    Registro:
    17 Set 2011
    Mensajes:
    2,585
    Likes:
    654
    Alas peruanas???
     
  4. edgar_007

    edgar_007 Miembro maestro

    Registro:
    11 May 2012
    Mensajes:
    535
    Likes:
    150
    Haz tu seudocodigo donde están los tipos de datos que vas a usar así como los pasos para recibir datos de entradas la lógica para procesar dichos datos y como mostrar los datos de salida. Busca en google como usar la libreria iostream en C++

    Saludos
     
    A daaanieeel le gustó este mensaje.
  5. daaanieeel

    daaanieeel Miembro frecuente

    Registro:
    27 Abr 2014
    Mensajes:
    115
    Likes:
    10
    Repito, yo aprendí con otros métodos, scanf, printf, etc y me iba de lo mejor, me gusta y lo aprendí bien aprobando con nota sobresaliente, obviamente la lógica es la misma y eso no cambia, el problema es que el libro que tengo solo lo explica con ese método no con el "nuevo".

    Otro problema que tengo, estaba acostumbrado al Dev C++, intento aplicar el nuevo método ahí pero no se puede directamente, tengo que hacer las cosas diferente como <iostream> en vez de <iostream.h>, agregar una que otra línea más, etc, el programa que se está usando en mi clase es el Bordland, que a mi parecer es poco práctico a comparación del Dev C++, pero bueno, a adaptarse.

    No sé si solo aplicarlo con el método que ya tenía ya que a lo mejor habrán más diferencias mientras más complicado sea el código.

    Para finalizar, mi suerte es tan grande que el USB donde tenía guardados mis avances y las clases se llenó de virus (como siempre en las PC de laboratorio) y tuve que formatearlo y solo me quedaron 2 bloc de notas.

    Por último a ver si lees mejor :v, nunca pido una resolución completa, solo un "empujón" ya que no soy ajeno al lenguaje :).

    @edgar_007 sí gracias, eso estoy haciendo :D, lo malo es que como podrás ver, al buscar un problema lo encuentras de mil maneras y eso es poco práctico para ir aprendiéndolo, solo sirve para un copiar y pegar, ya que en un lado está de una manera y otro ejercicio de una distinta, etc :/
     
    Última edición: 16 Oct 2014
  6. edgar_007

    edgar_007 Miembro maestro

    Registro:
    11 May 2012
    Mensajes:
    535
    Likes:
    150
    A daaanieeel le gustó este mensaje.
  7. daaanieeel

    daaanieeel Miembro frecuente

    Registro:
    27 Abr 2014
    Mensajes:
    115
    Likes:
    10
    Gracias, ahora a completar la hoja entonces :D

    Saludos.
     
  8. eduar2083

    eduar2083 Miembro frecuente

    Registro:
    26 Jul 2011
    Mensajes:
    224
    Likes:
    46
    Hola,
    scanf y printf y son funciones que se encuentran definidas en el header stdio.h del compilador C y que también son soportadas por el compilador de C++ aunque esta compatibilidad es una de las características más criticadas de C++. Se utilizan para leer desde el flujo de entrada estándar e imprimir hacia el flujo de salida estándar respectivamente. En C++ se utilizan los objetos cin y cout para tales propósitos.
    Respecto a los ejercicios intenta resolverlos y postea tú código, sólo de esa manera creo que alguien pueda ayudarte y también aprendes.

    Saludos.
     
  9. daaanieeel

    daaanieeel Miembro frecuente

    Registro:
    27 Abr 2014
    Mensajes:
    115
    Likes:
    10
    Claro, justo eso estaba viendo, que scanf y printf eran de C, no de C++ aunque también podían ser usados allí, siendo así en un primer momento debieron enseñarme con cout y cin y no del otro método creo yo :/.

    Tengo entendido que cout viene a ser como printf, entonces cin vendría a ser como scanf o me equivoco?, a decir verdad pensaba que era más como una señalización de que ahí acaba la línea o algo por el estilo, por otro lado endl es para pasar a la siguiente línea cierto?.

    Lo que me confunde un poco también es el uso de los << o >>, para guardar una variable y imprimirla en el programa sí sé, pero no me queda muy claro cuando quiero pasar a la siguiente línea con endl hacia dónde debe señalar.

    Lo que sucede es que he visto que el cout y cin lo dividen en 2 líneas para estar más ordenados, a mi me están poniendo todo en una de esta manera:

    HTML:
    #include <conio.h>
    #include <iostream.h>
    void main()
    {
        int a, b, c;
        cout<<"Ingresar a: ";cin>>a;
        cout<<"Ingresar b: ";cin>>b;
       c=a+b;
       cout<<"La suma es: "<<c;
       getch();
    }
    
    Creo que por ese motivo es que me surgen varias confusiones sobre todo en el orden de los "<< >>"

    Por ejemplo el ejercicio 2 lo tengo desarrollado así:

    HTML:
    #include <conio.h>
    #include <iostream.h>
    void main()
    {
        int a, b, c, d, e, f, num, num1=0;
        cout<<"Ingresar numero de 6 cifras: ";cin>>num;
       a=(num/100000);
       num1=num1+a;
       b=(num-(a*100000))/10000;
       num1=num1+(b*10);
       c=(num-(a*100000)-(b*10000))/1000;
       num1=num1+(c*100);
       d=(num-(a*100000)-(b*10000)-(c*1000))/100;
       num1=num1+(d*1000);
       e=(num-(a*100000)-(b*10000)-(c*1000)-(d*100))/10;
       num1=num1+(e*10000);
       f=(num-(a*100000)-(b*10000)-(c*1000)-(d*100)-(e*10));
       num1=num1+(f*100000);
       cout<<"El numero invertido es: "<<num1;
       getch();
    }
    
    El programa cumple, pero no creo equivocarme al pensar que hay una forma de abreviar los pasos.
     
    Última edición: 16 Oct 2014
  10. AiApaec

    AiApaec Miembro frecuente

    Registro:
    1 May 2014
    Mensajes:
    58
    Likes:
    14
    pasu! estoy más oxidado con c++, pero tu soluciòn para el problema 2 puede ser mejorada:
    Código:
    #include <iostream>
    
    //variables globales:
    const int TAM_ARRAY = 6;
    
    int main (int argc, char *argv[])
    {
       char numero[TAM_ARRAY];
       char invertido[TAM_ARRAY];
      
      std::cout <<"Escriba un numero de "<<TAM_ARRAY<<" digitos: "<<std::endl;
      std::cin >> numero;
      std::cout <<"Invirtiendo numero...";
      
      for(int i=0; i<TAM_ARRAY;i++)
      {
         invertido[i] = numero[TAM_ARRAY-1-i];
      }
      
      std::cout <<"resultado: "<<invertido<<std::endl;  
    }
    
     
  11. eduar2083

    eduar2083 Miembro frecuente

    Registro:
    26 Jul 2011
    Mensajes:
    224
    Likes:
    46
    Claro, printf es análogo al cout mientras que scanf es análogo al cin.
    Lo ideal es empezar primero con Lenguaje C para reconocer el terreno del la programación procedural y luego migrar hacia C++ para ver POO.
    endl es lo mismo que "\r\n" (retorno de carro + salto de linea)
    << es el operador de inserción y apunta hacia el objeto donde se enviarán los datos, Por ejemplo:

    cout << "Ingrese un entero:";

    Esto indica que debe enviar el texto hacia el objeto cout que representa el flujo de salida estándar (La pantalla)
    Por su contraparte, >> es el operador de extracción lee información desde el flujo se entrada estándar (El teclado) y la almacena hacia una variable a la que apunta, por ejemplo:

    cin >> variable;

    El hecho que lo coloquen en una sola linea no significa que está mal, bien podrían ir en lineas separadas con el mismo resultado, recuerda que el punto y coma es el operador para separar instrucciones.
    endl como ya te indiqué se utiliza para un salto de linea en una impresión por pantalla o archivo, no para saltar lineas a nivel de código fuente.

    Por otro lado:
    - Evita el uso de la nefasta conio propia de compiladores Borland.
    - Los compiladores modernos de C++ no obligan especificar la extensión .h en los headers, se considera una buena práctica.
    - Asimismo se recomienda que main retorne un valor al Sistema Operativo para indicar si el programa se ejecutó con éxito.

    Corrigiendo algunas cosas de tu código anterior, para adaptarlo al estándar C++ quedaría así:
    Código:
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main()
    {
        int a, b, c;
    
        cout << "Ingresar a: ";
        cin >> a;
    
        cout << "Ingresar b: ";
        cin >> b;
    
        c = a + b;
    
        cout << endl << "La suma es: " << c << endl << endl;
    
        system("pause");
    
        return EXIT_SUCCESS;
    }
    
    Para empezar está bien, pero cumplirá para números de 6 cifras no más ni menos. Una solución más flexible sería tratar el el valor como un string y recorrerlo a la inversa:
    Código:
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    
    using namespace std;
    
    int main()
    {
        char* cadena = new char[100];
    
        cout << "Deme un numero: ";
        cin.getline(cadena, 100);
    
        cout << "El numero invertido es: ";
        for (int i = strlen(cadena) - 1; i >= 0; --i)
            cout << cadena[i];
    
        cout << endl;
    
        delete cadena;
    
        return EXIT_SUCCESS;
    }
    
    
    Saludos.