menu

miércoles, diciembre 28, 2016

Ejercicios 12 en C

1. Crear una lista con N elementos numéricos.Visualizar cinco elementos en cada fila.
Elementos de la lista
-- -- -- -- --
-- -- -- -- --
-- -- -- -- --
Pulse ENTER para continuar

#include <string.h>
#include <ctype.h>

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <termio.h>
#include <sys/ioctl.h>

#define STDINFD  0
#undef getc

int validar_num(char numero[50]);
char inkey(void);

void main()
{
    int i,s,num,l=0;
    char numero[50],c;
    printf("Crear una lista con N elementos númericos.\n");
    do
    {
        printf("Introduce cuantos numeros quieres que sea la lista: ");
        fgets(numero,50,stdin);
        numero[strlen(numero)-1]= 0;
        s=validar_num(numero);
        if(s==0&& strcmp(numero,"0")==0){s=1;}
    }
    while (s != 0);
    num= atoi(numero);
    printf("   Elementos de la lista\n");
    int a[num];
    for (i = 1; i<= num; i++)
    {
        a[i] = random()%101;
        if (i%5==0)
        {
            printf("%5d\n",a[i]);
            l++;
            if(l%3==0)
            {
                c=0;
                printf("\nPulse ENTER para continuar");
                while (c!= 10)
                {
                c=inkey();
                }
                printf("\n");
            }
        }
        else
        {
            printf("%5d",a[i]);
        }

    }
}

int validar_num(char numero[50])
{
    int i=0,v=0,coma=0;
    while (i<strlen(numero)&&v==0)
    {
        if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;
}

char inkey(void) {
  char c;
  struct termio param_ant, params;

  ioctl(STDINFD,TCGETA,&param_ant);

  params = param_ant;
  params.c_lflag &= ~(ICANON|ECHO);
  params.c_cc[4] = 1;

  ioctl(STDINFD,TCSETA,&params);

  fflush(stdin); fflush(stderr); fflush(stdout);
  read(STDINFD,&c,1);

  ioctl(STDINFD,TCSETA,&param_ant);
  return c;
}
/* EOF: kpress.c */


2. Seleccionar el máximo de los números de la lista LISTA(N) y lo lleve a la última posición.
Pasar el maximo al ultimo reorganizando arraymover para atras.

#include <string.h>
#include <ctype.h>
#include <stdio.h>


int validar_num(char numero[50]);


void main()
{
    int i,s,num,max,posi;
    char numero[50];
    printf("Crear una lista con N elementos númericos.\n");
    do
    {
        printf("Introduce cuantos numeros quieres que sea la lista: ");
        fgets(numero,50,stdin);
        numero[strlen(numero)-1]= 0;
        s=validar_num(numero);
        if(s==0&& strcmp(numero,"0")==0){s=1;}
    }
    while (s != 0);
    num= atoi(numero);
    printf("   Elementos de la lista\n");
    int a[num],b[num];
    for (i = 1; i<= num; i++)
    {

        a[i] = random()%101;
        if(i==1){max=a[1];}
        if (a[i]>max)
        {
        max=a[i];
        posi=i;
        }
        if (i%5==0)
        {
            printf("%5d\n",a[i]);

        }
        else
        {
            printf("%5d",a[i]);
        }

    }
    for(i=num; i>=posi;i-=1)
    {
        b[i-1]=a[i];
    }
    for(i=0; i&alt;posi;i++)
    {
        b[i]=a[i];
    }
    b[num]=a[posi];
    printf("   \nTabla cambiada\n");
    for (i = 1; i<= num; i++)
    {
        if (i%5==0)
        {
            printf("%5d\n",b[i]);

        }
        else
        {
            printf("%5d",b[i]);
        }
    }
    printf("\nmaximo= %d, posicion = %d",max,posi);
}

int validar_num(char numero[50])
{
    int i=0,v=0,coma=0;
    while (i<strlen(numero)&&v==0)
    {
        if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;
}

3. Hallar el mínimo y la posición que ocupa en una lista de N elementos. L(N).

#include <string.h>
#include <ctype.h>
#include <stdio.h>


int validar_num(char numero[50]);


void main()
{
    int i,s,num,min,posi;
    char numero[50];
    printf("Crear una lista con N elementos númericos.\n");
    do
    {
        printf("Introduce cuantos numeros quieres que sea la lista: ");
        fgets(numero,50,stdin);
        numero[strlen(numero)-1]= 0;
        s=validar_num(numero);
        if(s==0&& strcmp(numero,"0")==0){s=1;}
    }
    while (s != 0);
    num= atoi(numero);
    printf("   Elementos de la lista\n");
    int a[num],b[num];
    for (i = 1; i<= num; i++)
    {

        a[i] = random()%101;
        if(i==1){min=a[1];}
        if (a[i]<min)
        {
        min=a[i];
        posi=i;
        }
        if (i%5==0)
        {
            printf("%5d\n",a[i]);

        }
        else
        {
            printf("%5d",a[i]);
        }

    }
    printf("\nminimo= %d, posicion = %d",min,posi);
}

int validar_num(char numero[50])
{
    int i=0,v=0,coma=0;
    while (i<strlen(numero)&&v==0)
    {
        if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;
}


4. Dada una lista numérica L(N) generar a partir de ella otra lista , NUEVA(N) que contenga los elementos de la lista anterior multiplicados por un número determinado.Imprimir ambas listas.

#include <string.h>
#include <ctype.h>
#include <stdio.h>


int validar_num(char numero[50]);


void main()
{
    int i,s,num,mul;
    char numero[50];
    printf("Crear una lista con N elementos númericos.\n");
    do
    {
        printf("Introduce cuantos numeros quieres que sea la lista: ");
        fgets(numero,50,stdin);
        numero[strlen(numero)-1]= 0;
        s=validar_num(numero);
        if(s==0&& strcmp(numero,"0")==0){s=1;}
    }
    while (s != 0);
    num= atoi(numero);
    printf("   Elementos de la lista\n");
    int a[num],b[num];
    for (i = 1; i<= num; i++)
    {
        a[i] = random()%101;
        if (i%5==0)
        {
            printf("%5d\n",a[i]);

        }
        else
        {
            printf("%5d",a[i]);
        }
    }
    do
    {
        printf("Introduce numero que quieres multiplicar la lista: ");
        fgets(numero,50,stdin);
        numero[strlen(numero)-1]= 0;
        s=validar_num(numero);
    }
    while (s != 0);
    mul=atoi(numero);
    printf("   Tabla cambiada\n");
    for (i = 1; i<= num; i++)
    {
        b[i]=a[i]*mul;
        if (i%5==0)
        {
            printf("%5d\n",b[i]);

        }
        else
        {
            printf("%5d",b[i]);
        }
    }
}

int validar_num(char numero[50])
{
    int i=0,v=0,coma=0;
    while (i<strlen(numero)&&v==0)
    {
        if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;
}


5. Dada la lista numérica L(N) generar a partir de ella otra lista que contenga los elementos que están en las posiciones pares de L(N).

#include <string.h>
#include <ctype.h>
#include <stdio.h>


int validar_num(char numero[50]);


void main()
{
    int i,s,num,c=0;
    char numero[50];
    printf("Crear una lista con N elementos númericos.\n");
    do
    {
        printf("Introduce cuantos numeros quieres que sea la lista: ");
        fgets(numero,50,stdin);
        numero[strlen(numero)-1]= 0;
        s=validar_num(numero);
        if(s==0&& strcmp(numero,"0")==0){s=1;}
    }
    while (s != 0);
    num= atoi(numero);
    printf("   Elementos de la lista\n");
    int a[num];
    for (i = 1; i<= num; i++)
    {
        a[i] = random()%101;
        if (i%5==0)
        {
            printf("%5d\n",a[i]);
        }
        else
        {
            printf("%5d",a[i]);
        }
    }
    printf("\nTabla con numero de posiciones pares cambiada\n");
    for (i = 1; i<= num; i++)
    {
        if(i%2==0)
        {
            c++;
            if (c%5==0)
            {
            printf("%5d\n",a[i]);
            }
            else
            {
                printf("%5d",a[i]);
            }
        }
    }
}

int validar_num(char numero[50])
{
    int i=0,v=0,coma=0;
    while (i<strlen(numero)&&v==0)
    {
        if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;
}


6. Un restaurante guarda en la lista PLATOS(20) los platos de que dispone y en otra lista paralela PRECIO(20) el valor de cada plato. Nuestro ejercicio debe mostrar al usuario el menú por pantalla , que el usuario escoja los platos que quiere comer y una vez escogidos, sacar la factura de un cliente de la siguiente forma:

RESTAURANTE :EL BUEN COMER

Concepto Cantidad Importe
-- -- --
-- -- --
.
.
.

   Total: ---

#include <string.h>
#include <ctype.h>
#include <stdio.h>


int validar_num(char numero[50]);


void main()
{
   int i,s,num,c=0,b,a=0,tope=0,suma=0;
    int elegido[50],mul[50],total[50],precio[20]={10,20,30,40,50,60,70,80,90,100,10,20,30,40,50,60,70,80,90,100};
    char numero[50];
    char* platos[20]={"Espaguetis","Macarrones","Garbanzos","Lentejas","Arroz","Migas","Gachas","Sardinas","Entrecot","Fruta","Chocolate","Yogurt","Solomillo","Filete","Bistec","Criadillas","Besugo","Merluza","Anguilas","Salmon"};
    printf("Restaurante el buen comer\nListados de platos\n");
    for (i = 0; i< 20; i++)
    {
        if ((1+i)%3==0)
        {
            printf("%2d  %s\t%3d €\n",i+1,platos[i],precio[i]);
        }
        else
        {
             printf("%2d  %s\t%3d €  ",i+1,platos[i],precio[i]);
        }
    }
    do
    {
        do
        {
            printf("\nIntroduce el numero de plato que quieres: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
            s=validar_num(numero);
            if(s==0)
            {
                num= atoi(numero);
                if(num > 0 && num < 21)
                {
                    if (c==0 && tope==0)
                    {
                        elegido[c]=num;
                        mul[c]=1;
                        tope++;
                    }
                    else
                    {
                        for (b=0;b<=c;b++)
                        {
                            if (num == elegido[b])
                            {
                            mul[b]++;
                            a=1;
                            }
                        }
                        if(a==0)
                        {
                        c++;
                        elegido[c]=num;
                        mul[c]=1;;
                        }
                        a=0;
                    }
                }
                else{s=1;}
            }
        }
        while (s != 0);
        do
        {
            printf("Quieres escoger otro plato, escribe s o n: ");
            fgets(numero,50,stdin);
            numero[strlen(numero)-1]= 0;
        }
        while (strcmp(numero,"s") != 0 && strcmp(numero,"n") != 0);//strcmp compara dos cadenas si sale 0 es igual
    }
    while(strcmp(numero,"n") != 0);
    printf("\tRESTAURANTE :EL BUEN COMER\n");
    printf("ID  Concepto Cantidad  Importe\n");
    for(i=0;i<=c;i++)
    {
        total[i]=precio[elegido[i]-1]*mul[i];
        suma=suma+total[i];
        printf("%2d  %s\t%8d\t%7d\n",elegido[i],platos[elegido[i]-1],mul[i],total[i]);
    }
    printf("\t\t\t   TOTAL%7d",suma);
}

int validar_num(char numero[50])
{
    int i=0,v=0,coma=0;
    while (i<strlen(numero)&&v==0)
    {
        if(isdigit(numero[i])!=0)
        {
            i++;
        }
        else
        {
            v=1;
        }
    }
    return v;


}

No hay comentarios:

Publicar un comentario