Cómo aprender a programar y no morir en el intento – Parte 9

Cómo aprender a programar y no morir en el intento – Parte 9

Empezamos ya de lleno el 2009, y que mejor que seguir con lo que el 2008 nos dió tantos dolores de cabeza ayudó a entrar de mejor forma al mundo de la programación.

Hoy, en la parte 9, o primera del 2009, seguiremos viendo contenidos del lenguaje C, así como el programa que empezamos a confeccionar en la edición pasada.

Así que los invitamos a seguirnos, como siempre, después del salto.

Cómo aprender a programar y no morir en el intento – Parte 9

Nota: Como siempre, les recomendamos, si es que no lo han hecho, leer los números anteriores de esta guía, los cuales pueden ser encontrados en nuestra categoría de programación.

Si recuerdan el número anterior, en esta ocasión veremos:

Contenidos:

  1. Iteración Switch.
  2. Vectores.
  3. Matrices.
  4. Continuación de la confección de un terminal de venta.

Así que vamos de lleno a la guía de hoy:

1.- Iteración Switch:

En el número anterior, veíamos las iteraciones condicionales if y else, las cuales nos permitían tomar distintos caminos dentro de un programa, dependiendo de una condición determinada. Además, cuando veíamos los números sobre pseudo-lenguaje, conocímos una iteración llamada Switch, la cual presentaba una funcionalidad bastante similar, pero tal como explicábamos aquella vez, es bastante mejor para usar en casos determinados.

El funcionamiento de esta iteración, ya lo hemos detallado en números anteriores, por lo que no adentraremos en repetir lo mismo, si no que veremos como funciona en lenguaje C.

Ahora, una buena pregunta, es ¿Cuándo usar if/else y cuándo usar switch?. La verdad, es que como todo en la programación, es cosa de gustos. A pesar de que pueden haber casos en los que sea más cómodo y/o ordenado usar una iteración sobre otra, las 2 cumplen la misma funcionalidad, por lo que pueden ser usadas sin problemas. En lo personal, lo cual en ningún sentido es un estándar, prefiero usar iteraciones de tipo Switch cuando en los programas definimos algún tipo de menú, por un tema de orden. En un ejemplo más adelante podremos apreciar porque.

Entonces, usando switch en C, lo primero que necesitamos es una variable que tome un valor (todo switch debe ser inicializado por una variable) y conocer los valores, o la mayoría de ellos, que pudiése tomar, como veremos en el siguiente ejemplo.

Además, dentro de los casos, podemos definir un caso por defecto, el cual cubrirá todas las opciones no definidas. Esto es muy útil para prevenir que el usuario ingrese un valor que no tenemos cubierto dentro de nuestras opciones.

Veamos un ejemplo.

Ejemplo: Plantearemos un pequeño menú, y definiremos cada caso, utilizando una iteración de tipo switch.

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

int opcion;

int main()
{
/* A continuación escribimos nuestro menú, tabulando y dando saltos de línea */
printf(“\tMenu”);
printf(“\n1.- Mostrar hola mundo”);
printf(“\n2.- Dar los buenos dias”);
printf(“\n3.- Salir”);
printf(“\nIngrese su opcion: “);
scanf(“%d”,&opcion); /* Leemos la opción que ingrese el usuario */

switch(opcion) // Activamos el switch con la variable opción.
{
case 1:      printf(“\nHola mundo”); /* En el caso que ingrese 1 */
break;
case 2:      printf(“\nBuenos dias”); /* En el caso que ingrese 2 */
break;
case 3:      break; /* En el caso que ingrese 3 */

default:     printf(“\nOpcion no valida”); /* Caso por defecto */
break;
}
getch(); /* Ponemos el programa en pausa hasta que se presione una tecla */
}

Como podemos ver, al final de cada caso, debemos incluir la sentencia break;, que indicará que después de ejecutar las sentencias correspondientes al caso, se debe salir del switch.

Compilamos y probamos. Ahora, como podrán apreciar, este switch solo se ejecuta una vez. En caso de que quisieramos hacerlo repetitivo hasta que se diga salir, podemos insertarlo dentro de un ciclo y poner como condición que se ejecute mientras no se seleccione la opción de salida.

Así de simple es la iteración switch. Es de gran utilidad para ordenar nuestras opciones y en especial para utilizarlo con menús, así que es muy recomendable aprender a usarlo y manejarlo para los programas que vayamos a desarrollar.

2.- Vectores:

Tal como veíamos en pseudo-lenguaje, en la programación existen unas variables especiales conocidas como arreglos, las cuales presentan la facultad de almacenar múltiples valores, ya sea unidimensionalmente o bidimensionalmente. Los vectores representan los primeros.

En C, también podemos utilizar vectores, de la misma forma en la que los planteabamos para pseudocódigo, es decir, declarándolos y rellenándolos según su posición, así como las mismas condiciones para recorrerlos y leerlos.

Tal como en todos los casos, no entraremos a repetir las definiciones que hemos hecho en guías anteriores y sólo nos preocuparemos de su uso en lenguaje C.

Veamos un pequeño ejemplo, para que nos quede todo más claro:

Ejemplo: Declararemos un vector, lo rellenaremos y luego mostraremos su contenido:

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

int vector[5]; // Declaramos el vector

int main()
{
for(int i=0; i<5; i++) /* Definimos un ciclo para llenar el vector */
{
printf(“\nIngrese el valor de la posicion %d del vector: “,i);
scanf(“%d”,&vector[i]); /* Leemos los datos de cada posición */
}
printf(“\nLos valores ingresados fueron: “); /* Mostramos los valores */
for(int i=0;i<5; i++)
{
printf(“%d\t”,vector[i]);
}
getch(); /* Ponemos el programa en pausa hasta que se presione una tecla */
}

Como podemos ver, el procedimiento es el mismo que usabamos para pseudo-código, utilizando ciclos tanto para rellenar posiciones secuencialmente, como para leerlas, accediendo mediante el índice que marcamos con la variable i, que se va moviendo a lo largo del vector.

Ahora, si nos fijamos en el ejemplo, podemos ver que dentro del ciclo for, hemos definido la variable i y no al principio del programa. Esto es posible en este tipo de ciclos, pero esa variable solamente vive dentro del búcle y no después (por eso la volvemos a declarar en el segundo ciclo). Esta es una gran forma de matar variables rápidamente después de su uso y no gastar espacio innecesariamente.

3.- Matrices:

En el caso de las matrices, utilizamos procedimientos bastante similares a los de los vectores, salvo que, siendo arreglos bidimensionales, para recorrer una matriz necesitaremos de 2 ciclos, uno para las filas, y 1 para las columnas.

La definición también varía en el número de dimensiones que declaramos. Si para los vectores hacíamos una declaración del tipo “vector [5]“ por su unidimensionalidad, para las matrices aplicamos una definición del tipo “matriz [5[[5]“, la primera relacionada con sus filas, y la 2da con sus columnas.

Veamos un ejemplo para que nos quede más claro.

Ejemplo: Repetiremos el ejemplo anterior, pero en este caso utilizaremos una matriz:

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

int matriz[3][3]; // Declaramos la matriz

int main()
{
for(int i=0; i<3; i++) /* Definimos un ciclo para las filas */
{
for(int j=0; j<3; j++) /* Otro ciclo para las columnas */
{
printf(“\nIngrese el valor para la fila %d y la columna %d: “,i,j);
scanf(“%d”,&matriz[i][j]);
}
}
printf(“Los valores ingresados son:\n “);
for (int i=0; i<3; i++) /* Mostramos los valores ingresados, tabulando y dando salto de línea para hacer la forma de la matriz */
{
for (int j=0; j<3; j++)
{
printf(“%d\t”,matriz[i][j]);
}
printf(“\n”);
}
getch(); /* Ponemos el programa en pausa hasta que se presione una tecla */
}

El procedimiento es el mismo, pero solo nso enfocamos en recorrer 2 dimensiones en vez de una. A medida que vayamos utilizando vectores y matrices en nuestros programas nos iremos acostumbrando cada vez más a su funcionamiento.

4.- Terminal de venta:

Si recuerdan, al final del número anterior, realizamos la confección de un terminal de venta, en el cual listabamos unos productos y realizabamos una venta, especificando el vuelto correspondiente al cliente.

Hoy, seguiremos trabajando sobre ese terminal, añadiendo la funcionalidad de poder vender más de un producto en una venta y de realizar más de una venta. Si recordamos, teníamos este código:

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

int codigo, cantidad, valor, total, vuelto, pago;

int main()
{
printf(“\t Lista de productos\n”);
printf(“Codigo\t Nombre\t Precio\n”);
printf(“1\t Silla\t 100\n”);
printf(“2\t Puerta\t 350\n”);
printf(“3\t Sillon\t 200\n”);

printf(“\nIngrese el codigo del producto que desea llevar: “);
scanf(“%d”,&codigo);
printf(“\nIngrese la cantidad que desea llevar: “);
scanf(“%d”,&cantidad);

if(codigo==1)
valor=100;
if(codigo==2)
valor=350;
if(codigo==3)
valor=200;

total=valor*cantidad;

printf(“\nEl total es de: %d”,total);
printf(“\nIngrese el pago: “);
scanf(“%d”,&pago);
if(pago<total)
printf(“\nEl pago no es suficiente”);
else
{
vuelto=pago-total;
printf(“\nEl vuelto es de: %d”,vuelto);
}
printf(“\nVenta finalizada”);
getch();

}

Y ahora, añadiendole algunos ciclos, tendremos un código como este:

#include <stdlib.h>
#include <stdio.h>
#include <conio.h> /* Incluimos las librerías */

int codigo, cantidad, valor, total, vuelto, pago; /* Declaramos las variables que usaremos en el proceso */
int ok=1; /* Adicionalmente declaramos una variable ok, que nos servirá de bandera para un ciclo que usaremos */
int opcion=1; /* Declaramos una variable opcion, que regulara si queremos hacer más de una venta */

int main()
{
while(opcion==1)
{
while(codigo!=4) /* Definimos un ciclo que se ejecute siempre que el usuario no presione la tecla para finalizar la venta */
{
printf(“\t Lista de productos\n”); /* Listamos los productos */
printf(“Codigo\t Nombre\t Precio\n”);
printf(“1\t Silla\t 100\n”);
printf(“2\t Puerta\t 350\n”);
printf(“3\t Sillon\t 200\n”);
printf(“\nPara cerrar la venta, presione 4″); /* Añadimos la opción para cerrar la venta */

printf(“\nIngrese el codigo del producto que desea llevar: “); /* Pedimos el código del producto */
scanf(“%d”,&codigo);    /* Leemos el código del producto */
if(codigo==4) /* Si el código es igual a 4, significa que la venta está finalizada, así que cerramos el proceso de venta */
break;
printf(“\nIngrese la cantidad que desea llevar: “); /* Pedimos la cantidad */
scanf(“%d”,&cantidad); /* Leemos la cantidad */

if(codigo==1) /* Igualamos el código para asignar el precio */
valor=100;
if(codigo==2)
valor=350;
if(codigo==3)
valor=200;

total=total+(valor*cantidad); /* A total le asignamos, el total acumulado hasta ahora, más el nuevo valor y nueva cantidad, multiplicados entre sí */

}
printf(“\nEl total es de: %d”,total); /* Saliendo de la venta, indicamos el total */
while(ok==1) /* Declaramos un ciclo con la variable ok, para el proceso de pago y vuelto, así se ejecutará hasta que se pague la cantidad correcta */
{
printf(“\nIngrese el pago: “); /* Solicitamos el pago */
scanf(“%d”,&pago); /* Leemos el pago */
if(pago<total) /* Si el pago es inferior al total, mostramos un mensaje de error */
printf(“\nEl pago no es suficiente”);
else /* De lo contrario, cambiamos el valor de ok para romper el ciclo y mostramos los mensajes de vuelto */
{
ok=0;
vuelto=pago-total;
printf(“\nEl vuelto es de: %d”,vuelto);
}
}

printf(“\n¿Desea hacer otra venta? (1=Si , 0=No): “); /* Preguntamos si desea hacer otra venta */
scanf(“%d,”,&opcion); /* Leemos la respuesta */
}
printf(“\nVenta finalizada”); /* Mensaje final */
getch(); /* Programa en pausa hasta pulsar una tecla */

}

Como podemos apreciar en esta nueva versión, hacemos uso de algunos ciclos. De esta forma, podemos hacer una venta de múltiples productos, y validamos el pago hasta que sea el correcto, para así completar de forma correcta la venta. Además, luego de finalizar una venta, podemos hacer otra automáticamente al señalarlo y de esta forma no necesitamos volver a ejecutar el programa cada vez que queramos vender algo.

Recordemos que nuestro programa lo vamos construyendo de a poco, aún hay muchos puntos que pueden ser mejorados y eso es lo que iremos haciendo en los próximos números. Por ahora lo dejaremos aquí, pero los incentivamos a que vayan añadiendo nuevas cosas de lo que hemos ido aprendiendo.

En la próxima edición de “Cómo aprender a programar y no morir en el intento”:

  1. Método de ordenamiento: El método de la burbuja.
  2. Método de busqueda: Búsqueda secuencial.
  3. Funciones.
  4. Continuación del términal de ventas: Añadiendo un menú.

Como siempre, recuerden que este tutorial ha sido:

Cualquier duda o comentario que puedan tener, los animamos a dejarnos unas líneas en el área habilitada a continuación.

Esperamos que este tutorial haya sido de utilidad para Uds.

Muchas gracias por leer y será hasta una próxima oportunidad.

Staff CLH


Tutoriales relacionados:

MalenaMaomaRegulequeWendyFantabuloso (No hay votos)
Loading ... Loading ...

Escrito por Xabadu

Las tardes gloriosas de domingo y las grandes ovaciones a estadio lleno, no son algo extraño para Xabadu. Luego de ser descubierto a los 4 años en un partido de barrio por los ojeadores del gran Aviación F.C., sacudió el mercado nacional al ser traspasado en $500 pesos chilenos (1 USD) y 3 coca colas al renombrado Estrella Blanca de Lolol. Luego de una impresionante carrera por equipos como Lozapenco, Santa Cruz, Deportivo Lago Chungará y una incursión en la 3a división del futbol de Kazajstan, su record imbatible hasta la fecha de 1257 goles en 20 partidos lo llevo a ser elegido como uno de los arqueros más recordados en la historia pelotera nacional. Una lesión en el colmillo superior derecho lo llevó al retiro el año 2003, pero está de vuelta y sin duda que su jerarquía y experiencia internacional será un gran aporte.



37 Comentarios a “ Cómo aprender a programar y no morir en el intento – Parte 9 ”

  1. ale dice:

    Hola soy nuevo en este tema de la programacion y los tutoriales estan muy buenos ahora estoy en la parte 5 me estoy complicando un poco pero voy entendiendo de a poco..

  2. Luciano dice:

    Que bueno que está esto, me enganche con la programacion, para cuando la parte 10?

  3. Luciano dice:

    Ah, un error, en la parte final del programa, después de preguntar si desea hacer otra venta, si el usuario pone “SI”, vuelve a repetir el mensaje una y otra vez.

  4. Juan Xabadu dice:

    @Luciano: Gracias por tu comentario. La verdad yo lo probé acá antes de la creación del tutorial y no me tiró problemas. Lo revisaré nuevamente de cualquier forma.

    El número 10 viene en camino ;)

    Saludos

  5. pacohac dice:

    desde valencia (spain), entiendo que conio.h, no es una libreria standard, por lo que nuestro compilador, nos esta dando problemas sin resolver, ¿como podemos adaptar a nuestro dec-c++ esta libreria privada?, para seguir con el intento de no morir en el intento.

  6. Juan Xabadu dice:

    @pacohac: El software que estamos usando, Dev-C++ contiene esta librería en la carpeta includes.

    De cualquier forma puedes descargarla desde este enlace.

    Saludos

  7. Kaotic dice:

    Buenas, primero felicitar a los creadores del manual por su gran labor.

    @Luciano, yo he solucionado el error de la venta, “resetando” los valores “ok” y “codigo” que es por el motivo que da “problemas”, la cosa quedaria asi:

    /*despues de*/
    while(opcion==1)
    {
    ok=1; /*<—–*/
    codigo=1; /*<——*/

    Pero yo soy un nobatillo, asi que puede que sea una chapuza xD, pero funciona ^^.

    Y hay una cosa que no comprendo, ami me da error cuando pongo las variables dentro del for :S (ej:for(int i=0; i<5; i++)), las tengo que definir antes para que me las reconozca.

    Un saludo, a la espera de la parte 10 ;) .

  8. ArctiKaL dice:

    Hola primero que todo felicitaciones por el tutorial, esta muy bien explicado y sobre todo empiesa desde lo basico.

    He hecho mi propia “maquina de venta” basada en la del tutorial pero con algunas modificaciones, me gustaria (si tuvieras tiempo) que me dijieras si esta bien o no respecto al orden y de seguir un algoritmo.

    #include
    #include
    #include

    int codigo, cantidad, valor, total, vuelto, pago;
    int nueva=1;
    int pag=1;
    int cod;
    int main()
    {
    while(nueva==1)
    {
    printf(“\n\n\t Lista de productos\n\n”);
    printf(“Codigo\t Nombre\t\t\t Precio\n”);
    printf(“1\t Guitarra\t\t $ 270.000 \n”);
    printf(“2\t Bajo\t\t\t $ 250.000\n”);
    printf(“3\t Teclado\t\t $ 300.000\n”);
    printf(“4\t Bateria\t\t $ 350.000\n”);
    printf(“5\t Amplificador\t\t $ 250.000\n”);
    printf(“\n\tPara Salir, presione 6\n”);
    cod=1;
    while(cod==1)
    {
    printf(“\nIngrese el codigo del producto que desea llevar: “);
    scanf(“%d”,&codigo);
    if(codigo>6)
    printf(“\n\t!!Ingrese Un Codigo Valido!!\n”);
    else
    cod=0;
    }
    if(codigo==6)
    return;
    if(codigo==1)
    valor=270.000;
    if(codigo==2)
    valor=250.000;
    if(codigo==3)
    valor=300.000;
    if(codigo==4)
    valor=350.000;
    if(codigo==5)
    valor=250.000;
    printf(“\n\tIngrese la cantidad que desee llevar: “);
    scanf(“%d”,&cantidad);
    total=total+(cantidad*valor);
    printf(“\n\t\tEl total es : %d”,total);
    printf(“\n\n \t0=Ir a la Caja 1=Hacer otra Compra “);
    scanf(“%d”,&nueva);
    }
    while(pag==1)
    {
    printf(“\n \t\t\tCAJA\n”);
    printf(“\n \tEl Total de la compra es : %d”,total);
    printf(“\n\n\tIngrese el Pago “);
    scanf(“%d”,&pago);
    if(pago<total)
    printf(“\n\n!!El pago No es Suficiente, Ingrese una Cifra Valida!!\n”);
    else
    pag=0;
    }
    vuelto=pago-total;
    printf(“\n\tSu vuelto es de : %d”,vuelto);
    printf(“\n\n\n\t\tVENTA FINALIZADA”);

    getch();
    }

  9. Cristián dice:

    En el ejercicio del vector me da el siguiente error al compilar, EL CÓDIGO esta copiado tal cual sale en el tutorial:
    8 ‘for’ loop initial declaration used outside C99 mode
    14 redefinition of ‘i’
    8 previous definition of ‘i’ was here
    14 ‘for’ loop initial declaration used outside C99 mode
    Que es?
    Muchas gracias

  10. Juan Xabadu dice:

    @ArctiKaL: Según lo que revisé, tu programa no tiene errores. Te felicito por la creatividad para afrontar el problema.

    @Cristián: Al copiar el código directamente desde el tutorial, hay un problema con las comillas dobles y por eso lanza los errores, te recomiendo revisar ese tema.

    Saludos a ambos

  11. Rubén dice:

    Yo tengo una duda. Es curioso, el programa me funciona perfectamente, incluso con modificaciones que yo mismo he hecho a mi propio criterio.

    Sin embargo hay algo que no entiendo. En la parte de “total=total+(valor*cantidad)” ¿cómo es posible que el programa haga la operación si no sabe qué valor asignarle a “total”? (me refiero al primer miembro de la suma).

    Es que le doy vueltas y no lo comprendo y puede que sea una completa absurdez, pero no me cabe en la cabeza.

    Saludos desde Zaragoza (España) y enhorabuena por el tutorial. Yo no tenía ni idea y desde que lo empecé a leer he aprendido mucho.

    ^^

  12. ArctikaL dice:

    Ruben:

    Por lo que yo entendi eso se hace para poder usar los ciclos….

    Por ejemplo en el primer ciclo seria
    (supongamos que compramos 2 cosas de valoe 200

    total=total+(valor*cantidad)
    0 = 0 +( 200 * 2 )

    total= 400

    en el segundo ciclo seria:
    (supongamos que ahora compramos 1 cosa de valor 300)

    total=total+(valor*cantidad)
    400 = 400 +( 300 * 1 )

    entonces se el nuevo valor para total seria lo que esta despues del =, en este caso seria 400 + 300 = 700

  13. Rubén dice:

    Gracias Arctikal.

    Lo pensé al rato de postear la duda. Suele pasar que cuando preguntas en “voz alta” lo que te ronda la cabeza, le encuentras una posible respuesta.

    Llegué a la misma conclusión que tú, al hecho de que el primer total lo asumiría como igual a 0, y seguiría operando a partir de ahí.

    Gracias de nuevo. ^^

  14. Hector dice:

    alguna solucion para el ejemplo del terminal de compra? esque a mi al poner 1 en desea realizar otra venta me sale el total y vuelve a poner si deseo realizar otra venda…e provado varias cosas y nose

  15. kevin dice:

    Hola y gracias por el curso esta exelente, para cuando estará la parte 10 del curso que estoy muy ancioso

  16. anyelo dice:

    hola le agradesco este manual esta muy bueno. saben pienso estudiar sistema el prosimo año y quiero que cuando empiese la universidad saber a programar bien en c.
    ¿creen que sea posible? diganme porfa.
    grasiiiaaaaaaaaaaa

  17. Monique dice:

    Gracias por tu ayuda!

  18. Chileno dice:

    ¿el void main() es lo mismo que el int main() o no ?
    ¿vas a seguir haciendo más tutoriales sobre C?

  19. Chileno dice:

    ¿cuando es adecuado usar las librerias conio.h, stdio.h y stdlib.h (o todas juntas) ?

  20. Xabadu dice:

    @Chileno:

    Sobre tus consultas:

    1.- Si, es lo mismo. main es una función del programa. Si es void o int varía en el tipo de función que es y por ende el valor que retorna (si es void no retorna valor). En general se pueden usar cualquiera de las 2, aunque depende mucho del compilador que estemos utilizando. Hay algunos que no reconocen void.

    2.- Si, es el plan. Aún no hemos terminado la saga. Queremos cubrir algunos temas más antes de pasar a POO.

    3.- Todo depende de las funciones que se vayan a utilizar en el programa. Es recomendable siempre incluir al menos stdio.h y stdlib.h ya que contienen las funciones más básicas del lenguaje. Pero en general ese es el criterio, si no utilizas ninguna función que pertenezca a conio no es necesario añadirlas.

    Saludos!

  21. Chileno dice:

    al compilar el codigo me da error.

  22. Chileno dice:

    el ultimo programa, al compilarlo da error.

  23. Xabadu dice:

    @Chileno: ¿Qué error te da?

  24. OScar dice:

    una consultita.. al compilar cualquier programa en el declaro en ciclo for me arroja el sgte error al momento de compilar:
    ciclo for 2.0.c ‘for’ loop initial declaration used outside C99 mode

  25. OScar dice:

    sorry por molestar de nuevo pero escribi el siguinete codigo
    #include<stdlib.h>
    #include<stdio.h>
    #include<conio.h>
    int codigo, cantidad, valor, total, vuelto, pago;
    int ok=1;
    int opcion=1;

    int main()
    {
    while(opcion==1)
    {
    while(codigo!=4)
    {
    printf(“\t Lista de Productos\n”);
    printf(“Codigo\t Nombre\t Precio\n”);
    printf(“1\t Silla\t 100\n”);
    printf(“2\t Puerta\t 350\n”);
    printf(“3\t Sillon\t 200\n”);
    printf(“\nPara cerrar la venta, presione 4″);

    printf(“\nIngrese el codigo del producto que desea llevar:”);
    scanf(“%d”,&codigo);
    if(codigo==4);
    break;
    printf(“\nIngrese la cantidad del produto que desea llevar: “);
    scanf(“%d”,&cantidad);

    if(codigo==1)
    valor=100;
    if(codigo==2)
    valor=350;
    if(codigo==3)
    valor=200;

    total=total+(valor*cantidad);
    }
    printf(“\nEl total es de: %d”,total);
    while(ok==1)
    {
    printf(“\nIngrese el pago “);
    scanf(“%d”,&pago);
    if(pago<total)
    printf(“\nEl pago no es suficiente”);
    else
    {
    ok=0;
    vuelto=pago-total;
    printf(“\nEl vuelto es de: %d”,vuelto);
    }
    }

    printf(“\n¿DEsea hacer otra venta? (1=Si, 0=No): “);
    scanf(“%d”,&opcion);
    }
    printf(“\nVenta finalizada”);
    getch();

    }
    pero no me funciona, ya que al ingresa el codigo del producto me arroja como respuesta el total =0.. a que se puede deber si alguin me puede hechar una manito ya que copie el de este tutorial y funciona perfecto, ais que no se en que puede estra difiriendo el codigo del tutorial con el que practique yo

  26. Tuko_007 dice:

    Hola buenas tardes,
    Tengo un problema con el compilado del ejemplo de los vectores:
    Me sale un error:
    “‘for’ loop initial declaration used outside C99 mode ”
    Me ha salido este error en el compilado que hice y para solucionarlo e intentar localizarlo copie el ejercicio (cambiandole las comas respectivamente) y me sale el mismo error, y no se como hacer para que funcione.
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>

    int vector[5];

    int main()
    {
    for(int i=0; i<5; i++)
    {
    printf(“\nIngrese el valor de la posicion %d del vector: “,i);
    scanf(“%d”,&vector[i]);
    }
    printf(“\nLos valores que ingresados fueron: “);
    for(int i=5; i<5; i++)
    {
    printf(“%d\t”,vector[i]);
    }
    getch();
    }

  27. Tuko_007 dice:

    Hola buenas tardes de nuevo, he descubierto el fallo!!! (soy el del post anterior.
    En el ejemplo de los vectores, para que funcione correctamente (al menos a mi me funciono asi) es escribiendolo asi:
    int main(i)
    {
    for (i=0; i<5;i++)
    etc…
    mejor dicho, escribiendo “i” en el parentecis de main, y eliminando todos los “int” de las funciones “for” (como en el ejemplo que acabo de escribir).
    Segun lei por ahi, la variable “i” solo debe ser declarada una vez, y si es posible al principio de la funcion.
    Espero que sea de ayuda y perdonad si soy repetitivo.

  28. Xabadu dice:

    @OScar y @Tuko_007: Estuve investigando el error que les aparecía y se debe a que C por defecto se utiliza un estándar de compilación que no permite declarar variables dentro de los ciclos for. Al declarar la variable fuera del ciclo se soluciona el problema.

    En C++ no hay problema de hacerlo de esta forma.

    Saludos!

  29. Tuko_007 dice:

    @Xabadu
    Este mismo fallo me da cuando estoy haciendo las matrices (no se si esta bien escrito) el caso es, ¿Como delcaro las variables fuera del ciclo? Asi?:
    int main(i,j)
    Gracias!!

  30. Tuko_007 dice:

    Buenas de nuevo…
    Siento ser un “cansino”, pero he hecho  de modificado varias cosas (para que me funcionase) en el programa que nos has sujerido para la practica y en este para que funcione el ejemplo al cual hago referencia mas arriba; el codigo me ha quedado asi:
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>

    int matriz[3][3];

    int main(i,j)
    {
    for(i=0; i<3; i++)
    {
    for(j=0; i<3;i++)
    {
    printf(“\nIngrese el valor de la fila %d y la columna %d: “,i,j);
    scanf(“%d”,&matriz[i][j]);
    }
    }
    printf(“\nLos valores ingresados son:\n”);
    for (i=0; i<3; i++)
    {
    for (j=0; j<3; j++)
    {
    printf(“%d\t”,matriz[i][j]);
    }
    printf(“\n”);
    }
    getch();
    }
    En principio a mi me funciona, dime tu opinion…
    Gracias
     
    1CM: Aprovecho para felicitarte por esta guia y que estoy aprendiendo mucho!!
    2CM: En un futuro me gustaria estudiar programación y lo encuentro una muy buena base para empezar.

Comenta