ayuda con control de repetitivas"for" en c++..

Publicado en 'Programación' por alesanand97, 28 Set 2016.





  1. alesanand97

    alesanand97 Miembro frecuente

    Registro:
    12 Jul 2014
    Mensajes:
    224
    Likes:
    7




    buenas, tengo problemas en resolver ejercicios en el cual necesito usar eso, y se me es imposible cuando este viene combinado con if,else y mas for... por ejemplo este codigo que hacer un cuadrado con asteritos:
    #include <iostream>
    #include<conio.h>
    using namespace std;
    void main()
    {
    int n, fila, c, blancos;
    do
    {
    cout << "ingrese el valor de n: ";
    cin >> n;
    } while (n < 1 || n > 9);
    blancos = 39 - n / 2;
    for (fila = 1; fila <= n; fila++)
    {
    for (c = 1; c <= blancos; c++)
    cout << " ";
    if (fila == 1 || fila == n)
    for (c = 1; c <= n; c++)
    cout << "*";
    else
    for (c = 1; c <= n; c++)
    if (c == 1 || c == n)
    cout << "*";
    else
    cout << " ";
    cout << endl;
    }
    _getch();
    }

    hay parecidas a esas en dodne dibujo cuadrados piramides o cualkier figura parecida con numeros,etc. y es que no me entra en la cabeza, y tuve q analizarlo mucho tiempo y como que aveces lo entendia pero al yo intentarlo cambiarlo para hacer otras figuras, se me volvio hacer imposible, osea que razonamiento puedo usar o alguienme explica algun metodo? ademas aun no entiendo muy bien el orden o metodologia que utiliza este lenguaje o su jerarquia....
     


  2. gnox

    gnox Miembro maestro

    Registro:
    3 Ene 2013
    Mensajes:
    794
    Likes:
    252
    - Separa el problema en partes
    - si una parte es muy compleja vuelve a separar
    - antes de usar bucles trata de hacerlo linea por linea e identifica lo que se repite
    - Lo que se repite generalizalo en bucles o funciones.
     
  3. dowa

    dowa Miembro frecuente

    Registro:
    10 Feb 2012
    Mensajes:
    118
    Likes:
    18
    tu código no está tabulado, por eso la tabulación y los comentarios son importantes, permite brindar orden y claridad para el análisis del código fuente. Por lo general los programas complicados se entienden después de releerlos varias veces (como todas las cosas en la vida). Una técnica que puedes usar es usando las salidas por consola (cout) en las partes del programa que no entiendas, a fin de comprobar si el programa sigue la lógica que tu te estas imaginando.
     
  4. INsu

    INsu Miembro nuevo

    Registro:
    19 Ene 2009
    Mensajes:
    11
    Likes:
    1
    Sin los corchetes no se entiende bien, y más si eres novato. Y no ponerle corchetes es solo para los programadores competitivos.

    Código:
    #include <iostream>
    using namespace std;
    int main(){
        int n, fila, c, blancos;
    
        do{
            cout << "ingrese el valor de n: ";
            cin >> n;
        }while (n < 1 || n > 9);
    
        blancos = 39 - n / 2;
    
        for (fila = 1; fila <= n; fila++) {
            for (c = 1; c <= blancos; c++){
                cout << " ";
            }
            if (fila == 1 || fila == n) {
                for (c = 1; c <= n; c++){
                    cout << "*";
                }
            }else{
                for (c = 1; c <= n; c++){
                    if (c == 1 || c == n){
                        cout << "*";
                    } else{
                        cout << " ";
                    }   
                }
            }
            
            cout << endl;
        }
    return 0;
    }
     
  5. alesanand97

    alesanand97 Miembro frecuente

    Registro:
    12 Jul 2014
    Mensajes:
    224
    Likes:
    7
    creo q lo entendi masomenos mejor con los corchetes entonces es decir que el primer for trabaja con todas las pequeñas funciones que tiene en sus parentesis
    osea no es seguido sino q cada pequeña funcion debo entenderla como parte de el primer for y eso unirlo, aunq aun lo veo dificil para yo resolver problemas similares,bueno intentare
     
  6. Phyrox

    Phyrox Miembro nuevo

    Registro:
    17 Dic 2014
    Mensajes:
    23
    Likes:
    1
    si bien la identacion no importa en la sintaxis de C o C++ es una ayuda visual para el programador.. por otro lado en programacion hay un dicho muy usado que es dividi y venceras, como veo que estas empezando te recomiendo que depures tu programa con print es decir donde creas que esta el error hagas un cout para ver si la salida es la que esperas..
     
  7. alesanand97

    alesanand97 Miembro frecuente

    Registro:
    12 Jul 2014
    Mensajes:
    224
    Likes:
    7
    si, me eh dado cuenta, pero cuando intento hacer un nuevo ejercicio otra vez se me hace un mundo, aunque tal vez sea por falta de practica ya que no me han enseñado una metodologia facil de analisis para resolver tales ejercicios...o aveces simplemente los problemas me parecen aaburridos y no dan ganas de hacerlos, no se si la programacion sea lo mio.... me podrias aconsejar ya que elegi esta carrera ya que me gusta los videojuegos me gustaria hacer uno, pero no se si esa es suficiente razon o motivacion:/, osea es normal que me sea tan dificil en el comienzo? necesito tener algun don? xd
     
  8. G_Pisfato

    G_Pisfato Miembro maestro

    Registro:
    15 Nov 2015
    Mensajes:
    443
    Likes:
    49
    Yo hace 6 años no sabía nada (de programar computadoras), la primera vez que decían enseñarme lo "básico", había cosas que no debían estar como la parte de interfaz gráfica de usuario [un verdadero estorbo para aprender].
    Pasó un año y yo no aprendía, no aprendí, me desaprobaron, repetí curso y para no sentirme mal le puse entusiasmo a aprender con otros lenguajes por mi cuenta (no compilados sino interpretados -fue JavaScript el que me hizo aprender-).
    Entré como repitente al curso y lógicamente ya sabía cómo resolver porque era lo mismo dos veces (o sea que hacerla por tercera vez era fácil). Incluso la programación orientada a objetos es más fácil de escribir.
    ...
    Esos puntos suspensivos indican mucha historia; ahora le voy al ensamblador.
     
  9. INsu

    INsu Miembro nuevo

    Registro:
    19 Ene 2009
    Mensajes:
    11
    Likes:
    1
    La verdad, enseñar C/C++ a un novato es un error. Yo ponía la pantalla azul del computador cuando quería guardar en un archivo lo que había en una cola recursiva. Había hecho un virus :V

    Es mucho más difícil hacer algo visual porque estás en una consola cutre ingresando datos por teclado. Según yo es más dable que enseñen primero programación web, porque es mil veces más visual y mucho más sencillo (en PHP). Ahí sí no te asustarían. Y como en tu consola cutre no vez nada interesante, termina siendo aburrido.
     
  10. dowa

    dowa Miembro frecuente

    Registro:
    10 Feb 2012
    Mensajes:
    118
    Likes:
    18
    Me parece que te equivocas, sino como ha hecho mucha gente en los 70, 80 y 90 para aprender a programar y como lo hace mucha gente en la actualidad. Incluso en los colegios de reino unido ya se enseña programación c/c++ (no la mal llamada computación que consiste en aprender windows y office) y es parte de la curricula
    Para mi el problema viene por varios lados:
    1. quien te lo enseña y como lo hace para que tu lo entiendas. Muchos profesores que enseñan c/c++ no tienen metodología.
    2. en lo concerniente a tecnología es mejor aprender directamente de la fuente, es mejor aprender de un libro en ingles que de un libro traducido. En ese sentido es mejor leer los libros de programación de los inventores que el de los profesores de universidad que son autores de libros.
    3. en nuestra actualidad la tecnologia nos ha hecho la vida más fácil y hemos acostumbrado a nuestro cerebro a lo visual, en ese sentido una pantalla de consola nos parece super aburrida, cuando en realidad todos los que realmente dominan programación en assembler, c y c++, fortran usan entorno de consola. El entorno GUI se ha hecho para el programador light que se siente mas a gusto con los dibujos que con las letras.
     
  11. TheRoot

    TheRoot Miembro frecuente

    Registro:
    8 Ene 2015
    Mensajes:
    235
    Likes:
    13
    Amigo un consejo (no lo tomes a mal por favor).

    El problema que presentas es básico y si no lo entiendes, es obvio que tus bases en lógica de programación no son las adecuadas, no tienes aun el pensamiento formado para entender lógica de programación.

    Vuelve a empezar con ejercicios básicos y trata de entenderlos a la perfección, si sigues adelante como estas no veo un buen futuro.

    Trata de resolver sin ayuda problemas como:
    • Suma de n numeros
    • Calcular los primeros 10 números primos
    • Pintar un cuadrado con numeros ascendentes (del 0 al 9)
    • etc etc
    Saludos,
     
  12. INsu

    INsu Miembro nuevo

    Registro:
    19 Ene 2009
    Mensajes:
    11
    Likes:
    1
    C es el lenguaje más usado en el mundo. Es muy potente a pesar de ser un lenguaje 'calato'. Pero también es muy complicado. El manejo de archivos binarios, colas, árboles y otras estructuras de datos avanzadas son más complicados de aprender que la programación web, de lejos. Y en lenguajes de alto nivel ya no usas acceso a memoria. O sea que casi por las puras lo aprendes. Si te refieres solo a las estructuras de control, esas también se pueden aprender en cualquier lenguaje de programación.
     
  13. Edux147

    Edux147 Miembro maestro

    Registro:
    23 Oct 2011
    Mensajes:
    370
    Likes:
    40
    Te sugiero q te mires el video de Video2Brain Curso Programacion C# y c++
    y cada video son de 2 y 3 min que te ayudarán y ser un experto en la programación por cierto son de pago aprox rondan entre 10 Euros a +
    aunque en la web lo puedes encontrar free :hi:
     
    A kgb1968 le gustó este mensaje.