Wednesday, September 24, 2014

Segundo Parcialito (2º Cuatrimestre 2014)

Parcialito II Informática II
Apellido y Nombre:__________________________________

Se quiere realizar un control sobre los productos de un supermercado. Para esto se cuenta con dos estructuras:

  • struct s_producto, que representa un producto a la venta (nombre, marca, cantidad, fecha de elaboración, fecha de vencimiento)
  • struct s_fecha, que representa una fecha calendario (dia,mes,año)
Realizar un programa que, utilizando las estructuras mencionadas, permita registrar por teclado 3 productos (con todos sus datos completos) e informe cuantos ya superaron su fecha de vencimiento.

Aclaraciones: las fechas de la estructura struct s_producto deben ser de tipo struct s_fecha, y los productos ingresados deben ser almacenados en un arreglo de 3 posiciones de tipo struct s_producto.




Resuelto:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 30

struct s_fecha
{
    int dia,mes,ano;
};

struct s_producto
{
    char nombre[30];
    char marca [30];
    int cantidad;
    struct s_fecha elaboracion;
    struct s_fecha vencimiento;
};

int main()
{
    struct s_fecha hoy= {24,9,2014};
    struct s_producto producto[3];
    int i=0,r=0,vencidos;
    char l='a', aux;
    for(r=0; r<3; r++)
    {
        printf("Ingrese el nombre del producto %d:\n", r+1);
        aux='a';
        while(aux!='\r')
        {
            aux=getche();
            if(aux!='\r')
            {
                l=aux;
                producto[r].nombre[i]=l;
                i++;
            }
        }
        producto[r].nombre[i]='\0';
        aux='a';
        printf("\nIngrese la marca del producto:\n");
        while(aux!='\r')
        {
            aux=getche();
            if(aux!='\r')
            {
                l=aux;
                producto[r].marca[i]=l;
                i++;
            }
        }
        producto[r].marca[i]='\0';

        printf("\nIngrese la cantidad:\n");
        scanf("%d", &producto[r].cantidad);

        printf("\nIngrese la fecha de elaboracion: \nDia:");
        scanf("%d", &producto[r].elaboracion.dia);
        printf("\nMes:");
        scanf("%d", &producto[r].elaboracion.mes);
        printf("\nAño:");
        scanf("%d", &producto[r].elaboracion.ano);

        printf("\nIngrese la fecha de vencimiento: \nDia:");
        scanf("%d", &producto[r].vencimiento.dia);
        printf("\nMes:");
        scanf("%d", &producto[r].vencimiento.mes);
        printf("\nAño:");
        scanf("%d", &producto[r].vencimiento.ano);

        printf("\n______________________________________________________\n");
    }
    vencidos=contar_vencidos(producto);

    printf("De los 3 productos ingresados, %d estan vencidos a la fecha. (%d/%d/%d)",vencidos,hoy.dia,hoy.mes,hoy.ano);
    return 0;
}
int contar_vencidos(struct s_producto producto[])
{
    int i, cont=0;
    struct s_fecha hoy= {24,9,2014};

    for(i=0; i<3; i++)
    {
        if(producto[i].vencimiento.ano<hoy.ano)
        {
            cont++;
        }
        else
        {
            if(producto[i].vencimiento.ano==hoy.ano)
            {
                if(producto[i].vencimiento.mes<hoy.mes)
                    cont++;
                else
                {
                    if(producto[i].vencimiento.mes==hoy.mes)
                    {
                        if(producto[i].vencimiento.dia<hoy.dia)
                            cont++;
                    }
                }
            }
        }
    }
    return cont;
}

Thursday, September 4, 2014

Primer Parcialito | 2º Cuatrimestre 2014 | Informática II

1)Armar una función que cargue una matriz de unsigned int de NxM.
2)Armar una función que muestre una matriz de unsigned int de NxM.
3)Armar una función que ponga en 1 los bits '3' y '5' de una variable unsigned int.
4)Armar un programa que cargue una matriz NxM, la muestre, y luego ponga en 1 los bits '3' y '5' de cada una de las posiciones de la matriz para mostrarla de nuevo luego de hecha la transformación.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define N 3
#define M 4

void cargar_matriz ( unsigned int mat [N][M]);
void mostrar_matriz ( unsigned int mat [N][M]);
unsigned int transformar ( unsigned int num);

int main()
{
    unsigned int mat[N][M];
    srand(time(NULL));
    cargar_matriz (mat);
    mostrar_matriz(mat);
    transformar_matriz (mat);
    printf("Matriz transformada:\n");
    mostrar_matriz (mat);

    return 0;
}

void cargar_matriz (unsigned int mat [N][M])
{
        int i,j;
        for(i=0;i<N;i++)
        {
            for(j=0;j<M;j++)
            {
                mat[i][j]=rand()%6;
            }
        }
}
void mostrar_matriz (unsigned int mat [N][M])
{
    int i,j;
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            printf("|%d|", mat[i][j]);
        }
        printf("\n");
    }
}
unsigned int transformar ( unsigned int num)
{
    unsigned int mask=pow(2,5)+pow(2,3);

    return num|mask;

}
void transformar_matriz (unsigned int mat [N][M])
{
    int i,j;
        for(i=0;i<N;i++)
        {
            for(j=0;j<M;j++)
            {
                mat[i][j]=transformar(mat[i][j]);
            }
        }
}