Duda con este codigo...

Iniciado por RSA, 20 Septiembre 2012, 06:12 AM

0 Miembros y 1 Visitante están viendo este tema.

RSA

Buenas gente! Como van? Espero que todo bien! Tengo una duda, como veran a continuacion en el ejercicio, soy principiante, me pide que imprima todas las tablas del 1 al 9, elabore el codigo pero no se si esta bien, ya que al compilar no hace lo que realmente pide el ejercicio, espero alguno pueda decirme si ve algun error o algo, saludos!  ;D

# include <stdio.h>
# include <stdlib.h>

main()
{
     int a=1, b=1, total=1;
     while (a<10)
     {
           printf ("%d x %d = %d \n "), b, a, total;
           a=a+1;
           if (a=10)
           {
                    a=1;
                    b=b+1;
           }
           if (b=10)
           {
                    a=100;
           }
           total=a*b;
     }
system ("PAUSE");
return 0;
}

ecfisa

Hola RSA.

Necesitas que la variable b tome valores de 1 hasta 10 por cada incremento de la variable a, por lo que vas a necesitar un while anidado para obtenerlos.


#include <stdio.h>

main() {
  int a=1, b;

  while (a < 10) {
    printf("Tabla del %2d \n------------\n",a);
    b = 0;
    while (b++ < 10)
      printf ("%2d x %2d = %2d \n", b, a, a*b);
    printf("\n");
    a++;
  }
  getchar();
  return 0;
}


Saludos.

SokarTefnut

#2
El printf lo estas usando mal, deberia ser  printf ("%d x %d = %d \n ", b, a, total);
En las lineas resaltadas estas realizando una asignacion de valor, con el operador (=),
deberias utilizar el operador de comparacion (==)


# include <stdio.h>
# include <stdlib.h>
main()
{
     int a=1, b=1, total=1;
     while (a<10)
     {
           printf ("%d x %d = %d \n "), b, a, total; // cambiar por  printf ("%d x %d = %d \n ", b, a, total);
           a=a+1;           // puesdes usar a++
             if (a=10)   // debes utilizar  if (a==10)
           {
                    a=1;
                    b=b+1;  
           }
           if (b=10)        // debes utilizar  if (b==10)
           {
                    a=100;
           }
           total=a*b;
     }
system ("PAUSE");
return 0;
}
"Saber romper medidas de seguridad no hace que seas hacker, al igual que saber hacer un puente en un coche no te convierte en un ingeniero de automoción"
-- Eric Raymond -- http://en.wikipedia.org/wiki/Eric_S._Raymond

0xDani

Y algo que no te han dicho, y en realidad es una tonteria, pero en C/C++ en vez de a=a + 1; puedes hacer a++.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

RSA

Cita de: ecfisa en 20 Septiembre 2012, 09:00 AM
Hola RSA.

Necesitas que la variable b tome valores de 1 hasta 10 por cada incremento de la variable a, por lo que vas a necesitar un while anidado para obtenerlos.


#include <stdio.h>

main() {
  int a=1, b;

  while (a < 10) {
    printf("Tabla del %2d \n------------\n",a);
    b = 0;
    while (b++ < 10)
      printf ("%2d x %2d = %2d \n", b, a, a*b);
    printf("\n");
    a++;
  }
  getchar();
  return 0;
}


Saludos.

Muchas gracias por tu ayuda! Lo he probado y si, funciona, ahora, para que sirve la siguiente linea? Es que todavia no la hemos dado, o sea supongo que si resuelvo el codigo con cosas que supuestamente no hemos aprendido, no se si me lo acepten...

  getchar();

Saludos!

Cita de: SokarTefnut en 20 Septiembre 2012, 09:25 AM
El printf lo estas usando mal, deberia ser  printf ("%d x %d = %d \n ", b, a, total);
En las lineas resaltadas estas realizando una asignacion de valor, con el operador (=),
deberias utilizar el operador de comparacion (==)


# include <stdio.h>
# include <stdlib.h>
main()
{
      int a=1, b=1, total=1;
      while (a<10)
      {
            printf ("%d x %d = %d \n "), b, a, total; // cambiar por  printf ("%d x %d = %d \n ", b, a, total);
            a=a+1;           // puesdes usar a++
              if (a=10)   // debes utilizar  if (a==10)
            {
                     a=1;
                     b=b+1; 
            }
            if (b=10)        // debes utilizar  if (b==10)
            {
                     a=100;
            }
            total=a*b;
      }
system ("PAUSE");
return 0;
}

Gracias por tu ayuda! Y si, definitivamente el error mas grande era que solo usaba un = y debia ir ==, al cambiarlo me ha funcionado perfectamente, muchisimas gracias!!

Cita de: 0xDani en 20 Septiembre 2012, 15:42 PM
Y algo que no te han dicho, y en realidad es una tonteria, pero en C/C++ en vez de a=a + 1; puedes hacer a++.

Saludos.

Puede ser mas comodo, lo sabia pero no suelo usarlo por falta de costumbre, hace unos meses aprendi algo en pseudocodigos y siempre usabamos a<- a+1, por esta cuestion, de usarlo asi, creo que me acostumbre e intento hacerlo asi en c++ pero bueno, capaz me tenga que acostumbrar mas al c++ y dejar de lado las costumbres que aprendi en pseudocodigos y usar mas que nada codigos de este lenguaje, muchisimas gracias crack! Ahora me queda seguir aprendiendo mas cosas, para ir avanzando un poco =)

ecfisa

Citarpara que sirve la siguiente linea?
Hola RSA

getchar() espera un caracter de la entrada estandar, en este caso cumple la misma finalidad que system ("PAUSE").


Saludos.