Ayuda con problema básico lenguaje C.

Iniciado por Shett, 15 Noviembre 2016, 03:30 AM

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

Shett

Bueno la verdad trate de hacerlo hasta donde pude, me cuesta entender el while (se que tengo que volver a leer la variable pero nose en donde)  todavía.Me gustaría que me ayuden a completarlo(para entenderlo),  y también quería saber¿esta bien la parte del vector para mostrar el total?. Muchas gracias. Si no entienden algo de lo que hice me avisan.

/*En una casa de ropa se ofrece tres prendas en promocion. Las tres prendas posibles con sus repectivos precios son:
1- Camisa, la cual cuesta $400.
2-Pantalon, el cual cuesta $1000.
3-Campera, la cual cuesta $1500.

De acuerdo a la opcion elegida tenemos la posibilidad de elegir la promocion para dicha opcion o simplemente tomar solo la opcion elegida.

  -Camisa.
   a) Camisa+remera ($200 mas).
   b) Camisa sola.
   
    -Pantalon.
    a)Pantalon+medias ($100 mas).
   b) Pantalon solo.
     
  -Campera.
   a)Campera+camisa ($200 mas):
    b) Campera sola.
   
    Informar el precio final de acuerdo a las opciones elegidas, sumando los adicionales correspondientes segun la promocion seleccionada. Esto se debera almacenar en un vector de 3 posiciones que contendra los saldos totales de las
    opciones. Asi mismo se informara por separado a cuanto asciende el saldo total de la compra.*/
   
   
   
   
     #include<stdio.h>
     #include<conio.h>
     
     int main (){
     
      int cat=0,opc=0,vec[3];
      char c;
     
      printf ("\n¿Desea realizar una nueva compra o adquirir otro producto? Presione la tecla s para continuar.");
      scanf ("%c",&c);
     
         while (c=='s')
         {



printf ("\t\tTienda de ropa.");
      printf ("\nCatalogo de productos.");
      printf ("\n Seleccione la opcion que desee a continuacion: \n 1.Camisa. \n2.Pantalon. \n3.Campera.");
     
      switch (cat)
      {
      case 1: printf ("\n La opcion elegida posee la siguiente promocion: Camisa+remera ($200 mas), para seleccionar la promocion presione la tecla 1, y cualquier otra tecla para el producto solo.");
               scanf ("%i",&opc);
               if(opc==1)
               {
                vec[1]=600;
  }
  else
  {
  vec[1]=400;
  }
      break;
     
      case 2: printf ("\n La opcion elegida posee la siguiente promocion: Pantalon+medias ($100 mas), para seleccionar la promocion presione la tecla 1, y cualquier otra tecla para el producto solo.");
               scanf ("%i",&opc);
               if(opc==1)
               {
                vec[2]=1100;
  }
  else
  {
  vec[2]=1000;
  }
      break;
      case 3: printf ("\n La opcion elegida posee la siguiente promocion: Campera+camisa ($200 mas), para seleccionar la promocion presione la tecla 1, y cualquier otra tecla para el producto solo.");
               scanf ("%i",&opc);
               if(opc==1)
               {
                vec[3]=1700;
  }
  else
  {
  vec[3]=1500;
  }
      break;
         
          default: printf ("\nOpcion ingresada invalida");
         
     
}

}
     
        int tot=0;
     
      tot=vec[1]+vec[2]+vec[3];
      printf ("El total a pagar es de:$%i",tot);
     
     
      getch ();
      return 0;
}


MOD: Etiqueta GeSHi.

Beto Ventura

Un consejo, que uses nombres de variables más claro. Si tu código es autocomentado resulta más rápida la tarea de depuración.
Te dejo este video que espero te sirva para despejar tus dudas sobre el bucle while

[youtube=640,360]https://www.youtube.com/watch?v=jObYgEhC4vs[/youtube]

Cita de: Shett en 15 Noviembre 2016, 03:30 AM
¿esta bien la parte del vector para mostrar el total?

Un vector, arreglo o array es una variable que contiene elementos del mismo tipo uno consecutivo al otro, comenzando con su primer elemento en la posición 0. Acá en tu programa vos estás declarando un arreglo del tipo entero de 3 elementos, al final de tu programa sumas todos los elementos y guardas ese valor en la variable "tot". El error en esa parte de tu programa es que estás sumando un elemento de más que no corresponde a tu arreglo.
La correción seria la siguiente:

tot= vec[0]+vec[1]+vec[2];

También tenes el mismo error dentro de los case del switch. Básicamente, tene en cuenta que la primer posición siempre es 0  y no 1, y que la ultima posición del arreglo, en este caso, seria 2 y no 3.

Por último hay un par de errores para mi gusto que tienen que ver con la manera en la que escribís tu código, pero es porque yo personalmente soy medio hincha bolas con unas cosas jeje, si querés hablame por mensaje privado y te las comento. Es mejor que las corrijas desde temprano así no te mal acostumbras.[/pre]

Shett

Bueno muchas gracias por contestar cuando llegue a mi casa arreglo eso y voy a ver si logro hacer funcionar la parte del while osea el concepto lo tengo pero me confundo al aplicarlo.

engel lex

int cat=0,opc=0,vec[3];
      char c;

      printf ("\n¿Desea realizar una nueva compra o adquirir otro producto? Presione la tecla s para continuar.");
      scanf ("%c",&c);

         while (c=='s')


dentro del while alguna vez le cambias el valor a la variable "c"?
-qué pasa si nunca se lo cambias?
-cómo se lo cambiaste originalmente y como tienes que cambiarlo ahora?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Shett

Cita de: engel lex en 15 Noviembre 2016, 16:09 PM
int cat=0,opc=0,vec[3];
      char c;

      printf ("\n¿Desea realizar una nueva compra o adquirir otro producto? Presione la tecla s para continuar.");
      scanf ("%c",&c);

         while (c=='s')


dentro del while alguna vez le cambias el valor a la variable "c"?
-qué pasa si nunca se lo cambias?
-cómo se lo cambiaste originalmente y como tienes que cambiarlo ahora?

No nunca le cambio el valor a c.
   -Yo suponía que si no se lo cambiaba por ejemplo ingresaba una n, salia del bucle y del programa pero creo que no es así.
Y la otra pregunta no la entendí. Perdón por mi ignorancia.

engel lex

CitarNo nunca le cambio el valor a c.
   -Yo suponía que si no se lo cambiaba por ejemplo ingresaba una n, salia del bucle y del programa pero creo que no es así.
Y la otra pregunta no la entendí. Perdón por mi ignorancia.

el bucle valora "c", si "c" no deja de ser 's' jamas saldrá

si cambias c


char c; //<-declaras "c"

      printf ("\n¿Desea realizar una nueva compra o adquirir otro producto? Presione la tecla s para continuar.");
      scanf ("%c",&c); //<-cambias "c" por un valor ingresado por el usuario

         while (c=='s') //<- se repite hasta que "c" deje de ser 's'
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Shett

Cita de: engel lex en 15 Noviembre 2016, 18:52 PM
el bucle valora "c", si "c" no deja de ser 's' jamas saldrá

si cambias c


char c; //<-declaras "c"

      printf ("\n¿Desea realizar una nueva compra o adquirir otro producto? Presione la tecla s para continuar.");
      scanf ("%c",&c); //<-cambias "c" por un valor ingresado por el usuario

         while (c=='s') //<- se repite hasta que "c" deje de ser 's'

Perdon por mi ignorancia pero ¿te referis al nombre de la variable?

engel lex

lee el comentario en ese ultimo codigo...

no, no puedes cambiarle el nombre a una variable... al decir cambiar, es cambiar el contenido
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.