Práctica C

Hola, vereis, estoy haciendo una práctica de C, y he conseguido ya el resultado esperado, el problema es que el programa debe terminar cuando el usuario quiera y no soy capaz de implementar eso... Lo he intentando con un do while antes del bucle for de la variable i, pero no hay manera... Os agradecería que me echaseis una mano!
#include <stdio.h>
#include <string.h>
typedef   char Tarticulo [5][21];
typedef   int Tunidades [5];
void main(){
   Tarticulo articulos;
   Tunidades unidades;
   char art[21];
   int i, j, uds, repetido = 0;
   for(i=0; i<5; i++){
      unidades[i] = -1;
   }
   for(i=0; i<5; i++){
      fflush(stdin);
      repetido = 0;
      printf("Introduzca el nombre del articulo y las unidades\n");
      fgets(art,21,stdin);
      scanf("%i", &uds);
      for(j=0; j<5; j++){
         if((strcmp(art, articulos[j])) == 0){
            unidades[j] = unidades[j] + uds;
            repetido = 1;
         }
      }
      if(repetido == 0){
         for(j=0; j<5; j++){
            if ((unidades[j] == -1)&&(strcmp(art, articulos[j])!=0)){
               strcpy (articulos[j],art);
               unidades[j] = uds;
               j=5;
         }


         }
      }
}
   for(i=0; i<5; i++){
      printf("El articulo %s tiene %i unidades\n", articulos[i], unidades[i]);
   }
   getch();
}
pues haz un char salir = 'n' y un do bucle + preguntar si quiere salir while salir == 'n'

Mirando que te introduzcan solo n y s, limpiando pantalla, etc
Y porque no haces un menu?¿

Es decir, una pantalla con 2 opciones.

1. Introducir nuevo artículo
2. Salir

Se quedará esperando una acción, si pulsas 2 se sale, si pulsas 1 entras en eso que tienes, y cuando termines de introducir un artículo, preguntas si quieres introducir otro o volver al menú. Yo siempre lo hacía así.
Muchas gracias Darix, al final me he liado un poco y lo he hecho de otra forma, porque el límite de artículos a introducir siempre es 5 y no más:
#include <stdio.h>
#include <string.h>
typedef   char Tarticulo [5][21];
typedef   int Tunidades [5];
void main(){
   Tarticulo articulos;
   Tunidades unidades;
   char art[21];
   char seguir = 'n';
   int i, j, uds, aux, repetido = 0;
   for(i=0; i<5; i++){
      unidades[i] = -1;
   }
   for(i=0; i<5; i++){
      fflush(stdin);
      repetido = 0;
      printf("Introduzca el nombre del articulo y las unidades\n");
      fgets(art,21,stdin);
      scanf("%i", &uds);
      for(j=0; j<5; j++){
         if((strcmp(art, articulos[j])) == 0){
            unidades[j] = unidades[j] + uds;
            repetido = 1;
            i--;
         }
      }
      if(repetido == 0){
         for(j=0; j<5; j++){
            if ((unidades[j] == -1)&&(strcmp(art, articulos[j])!=0)){
               strcpy (articulos[j],art);
               unidades[j] = uds;
               j=5;
         }


         }
      }
      if(i<4){
      printf("Si quiere salir, introduzca s \n");
        seguir=getch();
      if(seguir == 's'){
         aux=i+1;
         i=5;
      }
   }else(aux=i+1);
}
   for(i=0; i<aux; i++){
      printf("El articulo %s tiene %i unidades\n", articulos[i], unidades[i]);
   }
   getch();
}
A coñe, entendia que querias repetir todo el programa, que el codigo me lo mire muy en diagonal
Eruanion escribió:Y porque no haces un menu?¿

Es decir, una pantalla con 2 opciones.

1. Introducir nuevo artículo
2. Salir

Se quedará esperando una acción, si pulsas 2 se sale, si pulsas 1 entras en eso que tienes, y cuando termines de introducir un artículo, preguntas si quieres introducir otro o volver al menú. Yo siempre lo hacía así.


Me la apunto para las siguientes prácticas, gracias Eruanion!
darix escribió:A coñe, entendia que querias repetir todo el programa, que el codigo me lo mire muy en diagonal


No te preocupes, tampoco es que yo especificase demasiado, aun así me has servido de inspiración, [+risas] [+risas]
5 respuestas