0% encontró este documento útil (0 votos)
41 vistas58 páginas

Ejercicios Resueltos de C - Estructuras - 1

El documento presenta varios ejercicios de programación en C que involucran la creación y manipulación de estructuras para almacenar información sobre jugadores de fútbol, empleados, alumnos, personas y una agenda. Cada ejercicio incluye la definición de estructuras, la carga de datos, y operaciones como listado, modificación y ordenamiento de información. Se abordan temas como validación de datos, uso de arreglos y funciones básicas de entrada/salida.

Cargado por

jorge
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
41 vistas58 páginas

Ejercicios Resueltos de C - Estructuras - 1

El documento presenta varios ejercicios de programación en C que involucran la creación y manipulación de estructuras para almacenar información sobre jugadores de fútbol, empleados, alumnos, personas y una agenda. Cada ejercicio incluye la definición de estructuras, la carga de datos, y operaciones como listado, modificación y ordenamiento de información. Se abordan temas como validación de datos, uso de arreglos y funciones básicas de entrada/salida.

Cargado por

jorge
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

EJERCICIO 1

Crear una estructura llamada "jugador", que almacene la siguiente información sobre
jugadores de fútbol:
nombre del jugador
nombre del equipo
cantidad de partidos jugados
cantidad de goles convertidos
promedio de goles por partido
Utilizando la estructura, declarar un array de 100 elementos de estructuras de ese tipo.
Escribir un programa que cargue los datos del array. Se ingresan: nombre del jugador,
nombre del equipo,cantidad de partidos jugados y cantidad de goles convertidos. Por cada
jugador se calcula el promedio de
goles por partido y se almacena en el miembro la información contenida en el array
( nombre del jugador,nombre del equipo, cantidad de partidos jugados, cantidad de goles
convertidos y promedio de goles por partido.

#include <stdio.h>

#include <conio.h>

#define TAM 3

struct persona

char nombre[50];

char equipo[100];

int partidos;

int goles;

float promedio;

};

void main()

struct persona jugadores[TAM];

int i;

float auxf;

for(i=0;i<TAM;i++)
{

clrscr();

printf("FICHA DE JUGADOR\n\n");

printf("NOMBRE:");fflush(stdin);gets(jugadores[i].nombre);

printf("EQUIPO:");fflush(stdin);gets(jugadores[i].equipo);

printf("PARTIDOS:");scanf("%d",&jugadores[i].partidos);

printf("GOLES:");scanf("%d",&jugadores[i].goles);

jugadores[i].promedio =(float) jugadores[i].goles / jugadores[i].partidos;

// VALIDAR LA INFORMACION INGRESADA

for(i=0;i<TAM;i++)

printf("\nNOMBRE %s EQUIPO %s PARTIDOS %d GOLES %d PROMEDIO

DE GOLES %.2f POR

PARTIDO",jugadores[i].nombre,jugadores[i].equipo,jugadores[i].partidos,jugadores[i].

goles,jugadores[i].promedio);

getch();

EJERCICIO 2

Leer 10 estructuras del arreglo "empleado" que contiene la siguiente info:


nombre
dirección ( calle, número, localidad)
edad
sexo ( M = masculino, F = femenino)
a) Listar los empleados menores de 25 años
b) Listar los empleados que viven en Avellaneda
c) Listar los empleados que viven en Avellaneda menores de 25 años
d) Ordenar el vector por nombre y listarlo

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <ctype.h>
#define TAM 3

struct direccion

char calle[100],numero[20],localidad[50];

};

struct personas

char nombre[30];

int edad;

char sexo;

struct direccion domicilio;

};

void main()

struct personas empleados[TAM],auxst;

int i,j;

char auxs[100];

clrscr();

for(i=0;i<TAM;i++)

printf("\nNOMBRE:");fflush(stdin);gets(empleados[i].nombre);

printf("DIRECCION\n");

printf("\tCALLE:");fflush(stdin);gets(empleados[i].[Link]);

printf("\tN§:");fflush(stdin);gets(empleados[i].[Link]);

printf("\tLOCALIDAD:");fflush(stdin);gets(auxs);

strcpy(empleados[i].[Link],strlwr(auxs));// PASO LA

CADENA A MINUSCULA

printf("EDAD:");scanf("%d",&empleados[i].edad);
printf("SEXO f/m:");empleados[i].sexo = getche();

// VALIDAR TODOS LOS DATOS INGRESADOS SI LO DESEAN

clrscr();

// LISTADO DE LOS EMPLEADOS MENORES DE 25 A¥OS

for(i=0;i<TAM;i++)

if(empleados[i].edad < 25)

printf("\nNOMBRE %s",empleados[i].nombre);// PONER LOS

DEMAS DATOS

getch();

clrscr();

// LISTADO DE LOS EMPLEADOS DE AVELLANEDA

for(i=0;i<TAM;i++)

if(strcmp(empleados[i].[Link],"avellaneda") == 0)

printf("\nNOMBRE %s",empleados[i].nombre);

getch();

clrscr();

// LISTADO DE LOS EMPLEADOS QUE VIVEN EN AVELLANEDA Y MENORES DE 25

A¥OS

for(i=0;i<TAM;i++)

if(empleados[i].edad < 25 &&

strcmp(empleados[i].[Link],"avellaneda") == 0)

printf("\nNOMBRE %s",empleados[i].nombre);

getch();

// ORDENADO ALFABETICAMENTE

clrscr();

for(i=0;i<TAM-1;i++)

for(j=i+1;j<TAM;j++)

if(strcmp(empleados[i].nombre,empleados[j].nombre)>0)

{
auxst = empleados[i];

empleados[i] = empleados[j];

empleados[j] = auxst;

for(i=0;i<TAM;i++)

printf("\nNOMBRE %s",empleados[i].nombre);

getch();

EJERCICIO 3

Se ingresa el apellido, la nota y el legajo de los 30 alumnos de un curso. Realizar un


programa que me permita modificar los datos ingresados hasta que el usuario lo determine.
Para ello se ingresa el legajo y la nota a modificar. Si no encuentra el legajo se deberá
mostrar un mensaje de error

#include <stdio.h>

#include <conio.h>

#include <string.h>

#define TAM 3

struct alumno

char apellido[20];

float nota,legajo;

};

void main()

struct alumno curso[TAM];

int i,j,flag;

char mod;

float leg;

for(i=0;i<TAM;i++)//INGRESO DE DATOS

{
clrscr();

printf("\nNOTAS\n*****\n\n");

printf("APELLIDO:");

fflush(stdin);

gets(curso[i].apellido);

printf("NOTA:");

scanf(" %f",&curso[i].nota);

printf("LEGAJO:");

scanf(" %f",&curso[i].legajo);

do

{ clrscr();

printf("\nNOTAS\n*****\n");

printf("\nDESEA MODIFICAR ALGUNA NOTA s/n ? \n\nINGRESE OPCION:

");

mod = getche();

if(mod!='s'&&mod!='n')

printf(" <--- ERROR");getch();

if(mod == 's')

printf("\nINGRESE LEGAJO:");scanf("%f",&leg);

for(i=0;i<TAM;i++)

flag = 0;
if(curso[i].legajo == leg)

printf("\nANTERIOR NOTA: %.2f",curso[i].nota);

printf("\nINGRESE NUEVA NOTA:");

scanf("%f",&curso[i].nota);

flag = 1;

break;

if(flag == 0)

printf("\nEL LEGAJO %.f, NO SE ENCUENTRA",leg);

getch();

}while(mod != 'n');

EJERCICIO 4

Se ingresa nombre, sexo y edad de 100 personas. Se pide averiguar la cantidad de mujeres
tienen entre 20 y 30 años y cuantos hombres son menores a 37 años.

#include <stdio.h>

#include <conio.h>

#define TAM 100

struct registro

{
char nombre[40];

char sexo;

int edad;

};

void main()

struct registro persona[TAM];

int i,mujeres=0,hombres=0;

for(i=0;i<TAM;i++)

clrscr();

printf("INGRESE NOMBRE:");

fflush(stdin);

gets(persona[i].nombre);

// VALIDAR QUE NO TENGA MAS DE 40 CARACTERES

printf("INGRESE SEXO (f)emenino (m)asculino:");

persona[i].sexo = getche();

// VALIDAR QUE NO INGRESE DISTINO DE f y m

printf("\nINGRESE EDAD:");

scanf("%d",&persona[i].edad);

// VALIDAR QUE NO SEA MAYOR A 0

if(persona[i].sexo == 'f')

if(persona[i].edad > 20 && persona[i].edad < 30)

mujeres++;

if(persona[i].sexo == 'm' && persona[i].edad < 37)

hombres++;

clrscr();

printf("\nMUJERES ENTRE 20 y 30 a¤os %d",mujeres);


printf("\nHOMBRES MENORES DE 37 a¤os %d",hombres);

getch();

EJERCICIO 5

Para un censo se debe tomar la edad, el nombre, la dirección y teléfono de 100 personas.
Realizar el programa que permita cargar los datos, mostrarlos ordenados alfabéticamente
por apellido.

#include <stdio.h>

#include <conio.h>

#include <string.h>

#define TAM 3

struct registros

int edad;

char nombre[40],direccion[100],tel[15];

};

void main()

struct registros personas[TAM],auxst;

int i,j;

for(i=0;i<TAM;i++)

clrscr();

printf("INGRESE NOMBRE:");

fflush(stdin);

gets(personas[i].nombre);

// VALIDAR QUE NO SUPERE LOS 40 CARACTERES

printf("INGRESE EDAD:");

scanf("%d",&personas[i].edad);
// VALIDAR QUE NO SEA MENOR DE 0

printf("INGRESE DIRECCION:");

fflush(stdin);

gets(personas[i].direccion);

// VALIDAR QUE NO SUPERE LOS 100 CARACTERES

printf("INGRESE TEL:");

fflush(stdin);

gets(personas[i].tel);

// VALIDAR

// ORDENO ALFABETICAMENTE POR APELLIDO

for(i=0;i<TAM-1;i++)

for(j=i+1;j<TAM;j++)

if(strcmp(personas[i].nombre,personas[j].nombre)>0)

auxst = personas[i];

personas[i] = personas[j];

personas[j] = auxst;

for(i=0;i<TAM;i++)

printf("\nNOMBRE %s EDAD %d DIRECCION %s TEL

%s",personas[i].nombre,personas[i].edad,personas[i].direccion,personas[i].tel);

getch();

EJERCICIO 6

Realizar una agenda para guardar los datos de hasta 200 personas de las cuales se toman
los siguientesdatos:
Nombre
Apellido
Dirección
Localidad
Código Postal
Fecha de nacimiento ( Día, Mes y Año)
Utilizar estructuras anidadas.
Se pide que una vez cargados los datos, se disponga de un menú de opciones que me
permita hacer las siguientes consultas:
1- Consulta por apellido
2- Consulta por localidad
3- Consulta por Año de nacimiento
4- Consulta por cumpleaños

#include <stdio.h>

#include <conio.h>

#include <string.h>

#define TAM 2

struct fecha

int dia,mes,anio;

};

struct datos

struct fecha fechanac;

char nombre[40],apellido[40];

char direccion[100],localidad[100];

int codigo;

};

void main()

struct datos agenda[TAM];

int i,flag,auxi,auxib;

char op,seguir='n',auxs[100];

// CARGA DE LOS DATOS


for(i=0;i<TAM;i++)

clrscr();

printf("NOMBRE:");fflush(stdin);gets(agenda[i].nombre);

printf("APELLIDO:");fflush(stdin);gets(agenda[i].apellido);

printf("DIRECCION:");fflush(stdin);gets(agenda[i].direccion);

printf("LOCALIDAD:");fflush(stdin);gets(agenda[i].localidad);

printf("COD POSTAL:");scanf("%d",&agenda[i].codigo);

printf("FECHA NACIMIENTO...");

printf("\n\tDIA xx/:");scanf("%d",&agenda[i].[Link]);

printf("\tMES xx/:");scanf("%d",&agenda[i].[Link]);

printf("\tA¥O xxxx:");scanf("%d",&agenda[i].[Link]);

// VALIDAR TODOS LOS DATOS

do

clrscr();

printf("1<--- CONSULTA POR APELLIDO\n");

printf("2<--- CONSULTA POR LOCALIDAD\n");

printf("3<--- CONSULTA POR A¥O DE NACIMIENTO\n");

printf("4<--- CONSULTA POR CUMPLEA¥OS\n");

printf("0<--- SALIR");

printf("\nINGRESAR OPCION:");

op = getche();

switch(op)

case '1':

clrscr();

printf("INGRESE APELLIDO A BUSCAR:");


fflush(stdin);

gets(auxs);

flag = 0;

for(i=0;i<TAM;i++)

if(strcmp(auxs,agenda[i].apellido)==0)

printf("\n\nNOMBRE:

%s",agenda[i].nombre);

printf("\nAPELLIDO: %s",agenda[i].apellido);

printf("\nDIRECCION:

%s",agenda[i].direccion);

printf("\nLOCALIDAD:

%s",agenda[i].localidad);

printf("\nCODIGO POSTAL:

%d",agenda[i].codigo);

printf("\nFECHA NACIMIENTO:

%d/%d/%d",agenda[i].[Link],agenda[i].[Link],agenda[i].[Link]);

flag = 1;

if(flag == 0)

printf("\nNO SE ENCONTRO DATO");

getch();

break;

case '2':

clrscr();

printf("INGRESE LOCALIDAD A BUSCAR:");

fflush(stdin);

gets(auxs);
flag = 0;

for(i=0;i<TAM;i++)

if(strcmp(auxs,agenda[i].localidad)==0)

printf("\n\nNOMBRE:

%s",agenda[i].nombre);

printf("\nAPELLIDO: %s",agenda[i].apellido);

printf("\nDIRECCION:

%s",agenda[i].direccion);

printf("\nLOCALIDAD:

%s",agenda[i].localidad);

printf("\nCODIGO POSTAL:

%d",agenda[i].codigo);

printf("\nFECHA NACIMIENTO:

%d/%d/%d",agenda[i].[Link],agenda[i].[Link],agenda[i].[Link]);

flag = 1;

if(flag == 0)

printf("\nNO SE ENCONTRO DATO");

getch();

break;

case '3':

clrscr();

printf("INGRESE A¥O NACIMIENTO A BUSCAR /xxxx:");

scanf("%d",&auxi);

flag = 0;

for(i=0;i<TAM;i++)

if(auxi == agenda[i].[Link])
{

printf("\n\nNOMBRE:

%s",agenda[i].nombre);

printf("\nAPELLIDO: %s",agenda[i].apellido);

printf("\nDIRECCION:

%s",agenda[i].direccion);

printf("\nLOCALIDAD:

%s",agenda[i].localidad);

printf("\nCODIGO POSTAL:

%d",agenda[i].codigo);

printf("\nFECHA NACIMIENTO:

%d/%d/%d",agenda[i].[Link],agenda[i].[Link],agenda[i].[Link]);

flag = 1;

if(flag == 0)

printf("\nNO SE ENCONTRO DATO");

getch();

break;

case '4':

clrscr();

printf("INGRESE FECHA DE CUMPLEA¥OS");

printf("\nDIA xx/:");scanf("%d",&auxi);

printf("MES xx/:");scanf("%d",&auxib);

flag = 0;

for(i=0;i<TAM;i++)

if(auxi == agenda[i].[Link] && auxib ==

agenda[i].[Link])

{
printf("\n\nNOMBRE:

%s",agenda[i].nombre);

printf("\nAPELLIDO: %s",agenda[i].apellido);

printf("\nDIRECCION:

%s",agenda[i].direccion);

printf("\nLOCALIDAD:

%s",agenda[i].localidad);

printf("\nCODIGO POSTAL:

%d",agenda[i].codigo);

printf("\nFECHA NACIMIENTO:

%d/%d/%d",agenda[i].[Link],agenda[i].[Link],agenda[i].[Link]);

flag = 1;

if(flag == 0)

printf("\nNO SE ENCONTRO DATO");

getch();

break;

case '0':

printf(" <--- SALIR s/n ?");

seguir = getch();

// VALIDAR

break;

default:

printf(" <--- OPCION INCORRECTA");

getch();

}while(seguir== 'n');

}
EJERCICIO 7

Realizar un programa con un menú de opciones para hacer altas, bajas y modificaciones
(ABM) de una agenda.

#include <stdio.h>

#include <conio.h>

#include <string.h>

#define TAM 10

struct datos

char nombre[40];

char tel[20];

};

void main()

struct datos agenda[TAM];

int i,j,k,flag,ant=0,flagb = 0;

char op,auxs[60],seguir = 'n',auxsb[50];

do

clrscr();

printf("1<--- INGRESAR DATOS\n");

printf("2<--- MODIFICAR DATOS\n");

printf("3<--- ELIMINAR DATOS\n");

printf("4<--- MOSTRAR DATOS\n");

printf("0<--- SALIR\n");

printf("\nINGRESE OPCION:");

op = getche();
switch(op)

case '1':

flagb = 1;

clrscr();

printf("INGRESE NOMBRE:");

fflush(stdin);

gets(auxs);

printf("INGRESE TEL:");

fflush(stdin);

gets(auxsb);

flag = 0;

for(i=ant;i<TAM;)

if(ant!= TAM)

flag = 1;

strcpy(agenda[i].nombre,auxs);

strcpy(agenda[i].tel,auxsb);

ant = i+1;

break;

if(flag==0)

printf("\nNO HAY MAS CAPACIDAD PARA GUARDAR

DATOS");

getch();
}

break;

case '2':

if(flagb == 0)

printf(" <--- NO INGRESO DATOS");

getch();

else

clrscr();

printf("1§ INGRESE NOMBRE Y 2§ TELEFONO\n\n");

printf(":");

fflush(stdin);

gets(auxs);

printf(":");

fflush(stdin);

gets(auxsb);

flag = 0;

for(i=0;i<ant;i++)

if(strcmp(auxs,agenda[i].nombre)==0 &&

strcmp(auxsb,agenda[i].tel)==0)

flag = 1;

printf("INGRESE NUEVO NOMBRE:");

fflush(stdin);

gets(agenda[i].nombre);

printf("INGRESE NUEVO

TELEFONO:");

fflush(stdin);
gets(agenda[i].tel);

break;

if(flag == 0)

printf("\nNO SE ENCONTRO DATO");

getch();

break;

case '3':

if(flagb == 0)

printf(" <--- NO INGRESO DATOS");

getch();

else

clrscr();

printf("1§ INGRESE NOMBRE Y 2§ TEL DE LOS

DATOS A BORRAR\n\n");

printf(":");

fflush(stdin);

gets(auxs);

printf(":");

fflush(stdin);

gets(auxsb);

flag = 0;

for(i=0;i<ant;i++)

if(strcmp(auxs,agenda[i].nombre)==0 &&
strcmp(auxsb,agenda[i].tel)==0)

flag = 1;

for(j=i;j<ant-1;j++)

for(k=j+1;k<ant;k++)

strcpy(agenda[j].nombre,agenda[k].nombre);

strcpy(agenda[j].tel,agenda[k].tel);

break;

ant = ant - 1;

break;

if(flag==0)

printf("\nNO SE ENCONTRO DATO");

getch();

break;

case '4':

if(flagb==0)

printf(" <--- NO INGRESO DATOS");

else

printf("\n");
for(i=0;i<ant;i++)

printf("\nNOMBRE %s TELEFONO

%s",agenda[i].nombre,agenda[i].tel);

getch();

break;

case '0':

printf(" <--- SALIR s/n ?");

seguir = getch();

// VALIDAR

break;

default:

printf(" <--- OPCION INCORRECTA");

getch();

}while(seguir == 'n');

EJERCICIO 8

Armar 2 estructuras:
producto: cliente:
código código
precio unitario datos ( nombre y dirección)
descripción monto acumulado de compras
stock

a) Cargar los productos (100) y los clientes (45). Ambas cargas deben realizarse una sola
vez.
b) Ingresando código del cliente, código del producto y cantidad vendida, confeccionar la
factura correspondiente realizando los siguientes controles:
- Verificar que cantidad vendida no supere existencia en stock
- Debitar stock en cada venta
- Actualizar monto acumulado de compras de cada cliente
c) Mostrar por pantalla la factura
d) Listar los clientes cuyo monto acumulado de compras supere $1000
#include <stdio.h>

#include <conio.h>

#define TAM 5

struct productos

float codpro,precio,stock;

char descripcion[200];

};

struct cliente

float codcli,monto;

char nombre[40],direccion[200];

struct productos cliprod;

};

void main()

struct cliente cli[TAM];

int i,flag=0,flag1=0,guard,no=0;

float auxf;

char seguir;

for(i=0;i<TAM;i++)

clrscr();

if(i<3)// PARA CARGAR LOS CLIENTE

printf("CODIGO CLIENTE:");

scanf("%f",&auxf);

cli[i].codcli = auxf;
printf("NOMBRE:");

fflush(stdin);

gets(cli[i].nombre);

printf("DIRECCION:");

fflush(stdin);

gets(cli[i].direccion);

cli[i].monto = 0;

clrscr();

printf("CODIGO PRODUCTO:");

scanf("%f",&auxf);

cli[i].[Link] = auxf;

printf("PRECIO UNIDAD:");

scanf("%f",&auxf);

cli[i].[Link] = auxf;

printf("DESCRIPCION:");

fflush(stdin);

gets(cli[i].[Link]);

printf("STOCK:");

scanf("%f",&auxf);

cli[i].[Link] = auxf;

// VALIDAR TODOS LOS DATOS ANTERIORES SI LO DESEAN

}
do

do

clrscr();

printf("VENTA\n");

printf("CODIGO CLIENTE:");

scanf("%f",&auxf);

flag = 0;

for(i=0;i<TAM-2;i++)

if(auxf == cli[i].codcli)

flag = 1;

printf("CODIGO PRODUCTO:");

scanf("%f",&auxf);

flag1 = 0;

for(i=0;i<TAM;i++)

if(auxf == cli[i].[Link])

flag1 = 1;

printf("CANTIDAD VENDIDAD:");

scanf("%f",&auxf);

if(auxf > cli[i].[Link])

printf("NO HAY CANTIDAD

SUFICIENTE DE STOCK (CANTIDAD %.f)",cli[i].[Link]);

no = 1;

break;

else
{

cli[i].[Link]-= auxf;

cli[i].monto+= auxf *

cli[i].[Link];

guard = i;

break;

if(flag == 0)

printf("\nCODIGO CLIENTE NO ENCONTRADO");getch();

if(flag1 == 0)

printf("\nCODIGO PRODUCTO NO ENCONTRADO");getch();

}while(flag == 0 || flag1 == 0);

if(no == 0)

clrscr();

// AQUI MUESTRO LA FACTURA FALTAN LOS DEMAS DATOS A MOSTRAR

printf("\nCODIGO CLIENTE: %.f",cli[guard].codcli);

printf("\nCODIGO FACTURA: %.f",cli[guard].[Link]);

printf("\n\nDESEA CONTINUAR s/n ?");

seguir = getch();

// VALIDAR

}while(seguir=='s');

getch();

printf("\n\nCLIENTES QUE SUPERARON LOS 1000$");

flag=0;

for(i=0;i<TAM;i++)
if(cli[i].monto > 1000)

printf("\nCODIGO CLIENTE: %.f",cli[i].codcli);

flag = 1;

if(flag==0)

printf(" NO HAY NINGUN CLIENTE QUE LO SUPERE");

getch();

EJERCICIO 9

En una biblioteca se registran los libros existentes, informándose:


CODIGO DE LIBRO ( De 1 a 100, caso contrario informar error y volver a ingresar)
CANTIDAD DE EJEMPLARES
AUTOR
TITULO
Luego de registradas las existencias se visualiza un menú que permite al bibliotecario elegir
alguna de las siguientes opciones:
OPCION 1: PRESTAMOS DE LIBROS
El bibliotecario ingresar:
CODIGO DE LIBRO ( De 1 a 100, caso contrario informar error y volver a ingresar)
El programa debe mostrar el autor y el título y sólo se presta el libro si la cantidad de
ejemplares es mayor a [Link] el usuario confirma el préstamo restar 1 a la cantidad de
ejemplares.
Si la cantidad de ejempalres es 1, mostrar la leyenda "Solo queda el ejemplar de lectura en
sala" y no se registra el préstamo.
OPCION 2: DEVOLUCIÓN DE LIBROS
El bibliotecario ingresa:
CODIGO DE LIBRO ( de 1 a 100, caso contrario informar error y volver a ingresar)
El programa debe mostrar el autor y el título y si el usuario confirma, registrar la devolución
sumando 1 a la cantidad de ejemplares.
OPCION 3: FIN
Significa que no se sigue trabajando con el menú de opciones y que antes de finalizar debe
informar lo siguiente:
Listado ordenado en forma decreciente por cantidad de veces que se prestó un libro:
TITULO AUTOR VECES PRESTADO
xxxxx xxxxx xxx

#include <stdio.h>

#include <conio.h>

#include <string.h>
#define TAM 3

struct lib

int codigo,ejemplares;

char autor[50],titulo[100];

};

void main()

struct lib libros[TAM],auxst;

int i,j,flag=0,auxi,prestados[TAM];

char auxs[200],op,seguro;

int ingreso[TAM]; // VARIABLE PARA GUARDAR LA CANTIDAD DE LIBROS

EXISTENTES

clrscr();

for(i=0;i<TAM;i++)

libros[i].codigo = 0;

prestados[i] = 0;

for(i=0;i<TAM;)

printf("\nINGRESE %d§ CODIGO:",i+1);

scanf("%d",&auxi);

flag = 0;

// VALIDO

while(auxi<1 || auxi>TAM)

printf("REINGRESE %d§ CODIGO:",i+1);


scanf("%d",&auxi);

// PARA NO INGRESAR DOS VECES UN MISMO NUMERO

for(j=0;j<TAM;j++)

if(auxi == libros[j].codigo)

flag = 1;

if(flag!=1)

libros[i].codigo = auxi;

printf("INGRESE CANTIDAD DE EJEMPLARES:");

scanf("%d",&auxi);

while(auxi<0)

printf("REINGRESE CANTIDAD DE EJEMPLARES:");

scanf("%d",&auxi);

libros[i].ejemplares = auxi;

ingreso[i] = auxi;

printf("INGRESE AUTOR:");

fflush(stdin);

gets(auxs);

while(strlen(auxs)>50)

printf("REINGRESE AUTOR:");

fflush(stdin);

gets(auxs);
}

strcpy(libros[i].autor,auxs);

printf("INGRESE TITULO DE LA OBRA:");

fflush(stdin);

gets(auxs);

while(strlen(auxs)>100)

printf("REINGRESE TITULO DE LA OBRA:");

fflush(stdin);

gets(auxs);

strcpy(libros[i].titulo,auxs);

i++;

}// CIERRO IF DEL FLAG

}// CIERRE FOR i

do

clrscr();

printf("\n1 <--- PRESTAMOS DE LIBROS");

printf("\n2 <--- DEVOLUCION DE LIBROS");

printf("\n3 <--- SALIR");

printf("\n\nINGRESE OPCION:");

op = getche();

switch(op)

case '1':
clrscr();

printf("INGRESE CODIGO DEL LIBRO:");

scanf("%d",&auxi);

while(auxi<1 || auxi>TAM)

printf("REINGRESE CODIGO DEL LIBRO:");

scanf("%d",&auxi);

for(i=0;i<TAM;i++)

if(auxi == libros[i].codigo)

printf("TITULO DEL LIBRO

%s",libros[i].titulo);

printf(" AUTOR DEL LIBRO

%s",libros[i].autor);

if(libros[i].ejemplares >1)

libros[i].ejemplares--;

prestados[i]++;

printf("\n\nLIBRO PRESTADO,

CANTIDAD ACTUAL %d",libros[i].ejemplares);

getch();

break;

else

printf("\n\nSOLO QUEDA EL

EJEMPLAR DE LECTURA EN SALA (NO SE PUEDE PRESTAR)");

getch();
break;

break;

case '2':

clrscr();

printf("INGRESE CODIGO DEL LIBRO:");

scanf("%d",&auxi);

while(auxi<1 || auxi>TAM)

printf("REINGRESE CODIGO DEL LIBRO:");

scanf("%d",&auxi);

for(i=0;i<TAM;i++)

if(auxi == libros[i].codigo)

if(libros[i].ejemplares == ingreso[i])

printf("\nERROR NO SE PRESTO

NINGUN EJEMPLAR CON ESE CODIGO");

getch();

break;

else

printf("TITULO DEL LIBRO

%s",libros[i].titulo);

printf(" AUTOR DEL LIBRO


%s",libros[i].autor);

printf("\n\nESTA SEGURO DE

ENTREGAR EL LIBRO s/n ?");

seguro = getch();

while(seguro!='s' && seguro!='n')

printf(" s/n ???");

seguro = getch();

if(seguro == 's')

libros[i].ejemplares++;

printf("\n\nLIBRO

INGRESADO, CANTIDAD ACTUAL %d",libros[i].ejemplares);

getch();

break;

else

printf("\n\nLIBRO NO

INGRESADO");

getch();

break;

break;

case '3':
// ORDENAMIENTO

for(i=0;i<TAM-1;i++)

for(j=i+1;j<TAM;j++)

if(prestados[i]<prestados[j])

auxst = libros[i];

libros[i] = libros[j];

libros[j] = auxst;

auxi = prestados[i];

prestados[i] = prestados[j];

prestados[j] = auxi;

break;

default:

printf(" <--- OPCION INCORRECTA");

getch();

}// CIERRO SWITCH

}while(op!='3');

printf("\n");// PARA QUE NO QUEDE PEGADA LA LISTA AL MENU

for(i=0;i<TAM;i++)

printf("\nTITULO: %s AUTOR: %s VECES PRESTADO:

%d",libros[i].titulo,libros[i].autor,prestados[i]);

getch();

}
EJERCICIO 10

Una empresa registra de su depósito su existencia, informando:


CODIGO DE ARTICULO ( de 1 a 30, caso contrario informar error y volver a ingresar)
DESCRIPCIÓN DEL ARTICULO
CANTIDAD EN STOCK
PRECIO UNITARIO
Luego del registro de stock se visualiza un menú de opciones que permite al usuario elegir
alguna de las siguientes:
OPCION A: registrar compras y ventas, para lo cual informar:
CODIGO DE ARTICULO ( de 1 a 30, caso contrario informar error y volver a ingresar)
CODIGO DE MOVIMIENTO ( 1 o 2 caso contrario se informa error vuelve a ingresar). El
código 1 indica una venta y 2 una compra
CANTIDAD ( comprada o vendidad de acuerdo al código del movimiento) Preparar esta
opción para que se continúe trabajando con ella hasta que el usuario decida terminar y
pasar al menú principal.
OPCION B: consultar el precio unitario de un artí[Link] usuario ingresa el Código de artículo
( de 1 a 30, caso contrario informar error y volver a ingresar) y el sistema muestra la
descripción del artículo y el precio unitario.
OPCION C: consultar existencia en stock de un artí[Link] usuario ingresa el Código de
artículo ( de 1 a 30, caso contrario informar error y volver a ingresar) y el sistema muestra
la descripción del artículo y la existencia.
OPCION D: finalizar la ejecución del programa.

#include <stdio.h>

#include <conio.h>

#define TAM 3

struct empresa

int art;

char descripcion[100];

int stock;

float precio;

};

void main()

struct empresa mercaderia[TAM];

int i,j,auxi,flag,cod;
float auxf;

char op,seguir='n';

clrscr();

for(i=0;i<TAM;i++)

mercaderia[i].art = 0;

for(i=0;i<TAM;i++)

do

clrscr();

printf("INGRESE CODIGO DEL ARTICULO:");

scanf("%d",&auxi);

while(auxi<1 || auxi>TAM)

printf("REINGRESE CODIGO DEL ARTICULO:");

scanf("%d",&auxi);

for(j=0,flag=0;j<TAM;j++)

if(auxi == mercaderia[j].art)

flag = 1;

break;

}while(flag == 1);

mercaderia[i].art = auxi;

printf("INGRESE DESCRIPCION DEL ARTICULO:");

fflush(stdin);
gets(mercaderia[i].descripcion);

// VALIDAR DESCRIPCION QUE NO PASE LOS 100 CARACTERES

printf("INGRESE CANTIDAD DE STOCK:");

scanf("%d",&mercaderia[i].stock);

// VALIDAR QUE NO SEA MENOR A 0

printf("INGRESE PRECIO UNITARIO DEL ARTICULO:");

scanf("%f",&auxf);

// VALIDAR QUE NO SEA MENOR A 0

mercaderia[i].precio = auxf;

do

clrscr();

printf("1<--- OPCION A\n");

printf("2<--- OPCION B\n");

printf("3<--- OPCION C\n");

printf("4<--- OPCION D\n");

printf("\nELIGA OPCION:");

op = getche();

switch(op)

case '1':

do

{
clrscr();

printf("INGRESE CODIGO DEL ARTICULO:");

scanf("%d",&cod);

while(cod<1 || cod>TAM)

printf("REINGRESE CODIGO DEL

ARTICULO:");

scanf("%d",&cod);

printf("INGRESE CODIGO 1 <--- VENTA 2 <---

COMPRA:");

scanf("%d",&auxi);

// VALIDAR

if(auxi == 1)

printf("INGRESE CANTIDAD PARA

VENDER:");

scanf("%d",&auxi);

// VALIDAR QUE NO SEA MENOR A 0

if(mercaderia[cod-1].stock < auxi)

printf("\nNO SE HACE LA VENTA NO

HAY CANTIDAD SUFICIENTE DE STOCK");

getch();

else

printf("\nSTOCK VENDIDOS");
getch();

mercaderia[cod-1].stock-= auxi;

auxi = 0;

if(auxi == 2)

printf("INGRESE CANTIDAD PARA

COMPRAR:");

scanf("%d",&auxi);

// VALIDAR QUE NO SEA MENOR A 0

mercaderia[cod-1].stock+= auxi;

printf("\n\nDESEA CONTINUAR s/n ?");

seguir = getch();

// VALIDAR QUE INGRESE SOLO S Y N

}while(seguir == 's');

seguir = 'n';

break;

case '2':

clrscr();

printf("INGRESE CODIGO DEL ARTICULO:");

scanf("%d",&cod);

while(cod<1 || cod>TAM)

printf("REINGRESE CODIGO DEL ARTICULO:");

scanf("%d",&cod);

printf("\nARTICULO %d",cod);

printf("\nPRECIO UNITARIO %.2f",mercaderia[cod-


1].precio);

printf("\nDESCRIPCION: %s",mercaderia[cod-

1].descripcion);

getch();

break;

case '3':

clrscr();

printf("INGRESE CODIGO DEL ARTICULO:");

scanf("%d",&cod);

while(cod<1 || cod>TAM)

printf("REINGRESE CODIGO DEL ARTICULO:");

scanf("%d",&cod);

printf("\nARTICULO %d",cod);

printf("\nSTOCK %d",mercaderia[cod-1].stock);

printf("\nDESCRIPCION: %s",mercaderia[cod-

1].descripcion);

getch();

break;

case '4':

printf("\n\nESTA SEGURO DE SALIR s/n ?");

seguir = getch();

// VALIDAR

break;

default:

printf("<--- OPCION INCORRECTA");

getch();

}while(seguir == 'n');
}

La estructura la definimos entre los #include o si los hubiere los #define y el void main

Definición de la estructura

struct ejemplo // "ejemplo" es el nombre de la misma


{
int edad;
float sueldo;
char nombre[30];
}; // recordar siempre el ";" despues del cierre de la "}"

Declaración de una o varias estructuras

void main()
{
struct ejemplo num,vecs[TAM];

La declaración se hace como cualquier variable, la diferencia es que no le damos un tipo de


dato especifico, por que ya le pasamos por referencia las variables que contiene la
estructura ejemplo con sus respectivos tipos de datos

Ingresos de datos

Los ingresos de datos es simil a las variables simples lo unico que hay que utilizar es el "."
(punto) y a la variable que se le hace referencia dentro de esa estructura

printf("EDAD:");
scanf("%d",&[Link]);

printf("SUELDO:");
scanf("%f",&[Link]);

printf("EDAD:");
scanf("%d",&vecs[y].edad);

printf("SUELDO:");
scanf("%f",&vecs[y].sueldo); <--- ERROR

scanf("%f",&aux);
vecs[y].sueldo = aux; <--- OK

Las estructuras que contengan una variable del tipo de dato float y declaremos un vector
de esa estructura, no se podra hacer el ingreso de dato como lo marcado "ERROR".

Mostrar datos

printf("EDAD %d",[Link]);
printf("EDAD %d",vecs[y].edad);

printf("SUELDO %f",vecs[y].sueldo);

Ordenamiento

El ordenamiento es igual como si fuera un vector

for(y=0;y<TAM-1;y++)
for(j=y+1;j<TAM;j++)
if(vecs[y].variable > vecs[j].variable)
{
aux = vecs[y];
vecs[y] = vecs[j];
vecs[j] = aux;
}

Recordar siempre que la variable del tipo aux sea igual al tipo de estructura que estemos
ordenando
Utilize la "y" por que con la "i" tenia problemas con la fuentes de la web

Estructuras anidadas

Tener en cuenta que cuando usamos estructuras anidadas que la principal debe ser la
ultima en ser definida, en este caso es personas y las estructuras secundarias como fechas
siempre antes de la principal.

Ejemplo:

# ............

struct fechas
{
int dia, mes, anio;
};

struct personas
{
char nombre[20],apellido[20];
int edad;
struct fechas fnaci, fing;
float sueldo;
};

void main()
{
struct personas persona1;

/*
Persona1 es del tipo struct personas, es decir las variables declaradas
dentro de estruct personas ahora son parte tambien de personas1 y a su
vez las estructuras que esten dentro de la misma struct personas; en este
caso estruct fechas.
*/

// INGRESO DE DATOS

gets([Link]);
gets([Link]);
scanf("%d",&[Link]);
scanf("%d",&[Link]);
scanf("%d",&[Link]);
scanf("%d",&[Link]);
scanf("%d",&[Link]);
scanf("%d",&[Link]);
scanf("%d",&[Link]);
scanf("%d",&[Link]);

// MOSTRAR DATOS

ES LO MISMO USANDO PRINTF Y SIN EL &

/* Para ver mejor como funciona un vector, simple ejercicio */

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

void main()
{

int numero,r,vector[10],x=0,r2;
char seguir ='s';

do
{
clrscr();

cprintf("\nIngrese posici¢n donde guardar un n£mero (0 a 9):");


scanf("%d",&r);

while(r<0 || r>9)
{
printf("................tiene que ser del 0 al 9:");
scanf("%d",&r);
}
printf("\n\n[No estaba con ganas para validar]");
printf("\nIngrese un n£mero del rango indicado (-32768 a 32767):");
scanf("%d",&numero);

/*

Si ingresa un número distinto a los del rango sucederia


un desbordamiento de búfer (del inglés buffer overflow)
es un error de software que se produce cuando se copia
una cantidad más grande de datos sobre un área más pequeña
sin interrumpir la operación, sobreescribiendo otras zonas
de memoria.

*/

printf("\nEl NUMERO %d SE GUARDO EN LA POSICION %d",numero,r);


getch();
clrscr();
printf("\n\nLa posici¢n %d en el vector seria el lugar %d para guardar el
%d\n",r,r+1,numero);
printf("\n\nPOSICIONES\n\nLUGAR\tVECTOR\n\n");
if(r==0)
printf("1\t|0| <--- %d\n\n",numero);
else
printf("1\t|0|\n\n");
if(r==1)
printf("2\t|1| <--- %d\n\n",numero);
else
printf("2\t|1|\n\n");
if(r==2)
printf("3\t|2| <--- %d\n\n",numero);
else
printf("3\t|2|\n\n");
if(r==3)
printf("4\t|3| <--- %d\n\n",numero);
else
printf("4\t|3|\n\n");
if(r==4)
printf("5\t|4| <--- %d\n\n",numero);
else
printf("5\t|4|\n\n");
if(r==5)
printf("6\t|5| <--- %d\n\n",numero);
else
printf("6\t|5|\n\n");
if(r==6)
printf("7\t|6| <--- %d\n\n",numero);
else
printf("7\t|6|\n\n");
if(r==7)
printf("8\t|7| <--- %d\n\n",numero);
else
printf("8\t|7|\n\n");
if(r==8) // < ------donde sale la carita, va el 8 y luego parentesis
cerrando.
printf("9\t|8| <--- %d\n\n",numero);
else
printf("9\t|8|\n\n");

if(r==9)
printf("10\t|9| <--- %d\n\n",numero);
else
printf("10\t|9|\n");

vector[r] = numero;

printf("\n\nLa posici¢n %d del vector guarda el dato %d",r,vector[r]);

r2 = r;
getch();
clrscr();

printf("\n\nDATOS GUARDADOS EN VECTOR\n\r*************************\


n\n");

for(r=0;r<=9;r++)// para mostrar el vector


printf("\n\n%d\t%d",x++,vector[r]);

x=0;

printf("\n\n\n\rEl n£mero %d se guardo satisfactoriamente en la


posici¢n %d",numero,r2);
getch();

printf("\n\nDesea borrar todo el vector s/n ?");


seguir = getch();

while(seguir!='s' && seguir!='n')


{
printf("\n\nDesea borrar todo el vector s/n ?");
seguir = getch();

if(seguir =='s')
{
printf(", esta seguro s/n ???");
seguir = getch();
if(seguir=='n')
printf(" OK, no se borrara!");
if(seguir=='s')
{
clrscr();
printf("\nVector borrado\n**************\n");
for(r=0;r<=9;r++)// para mostrar el vector
printf("\n\n%d\t%d",x++,vector[r]= 0);

x=0;
}
}

printf("\n\n\nDesea continuar s/n ?");


seguir = getch();

while(seguir!='s' && seguir!='n')


{
printf("Desea continuar s/n ?");
seguir = getch();
}

}while(seguir=='s');

/* Ante cualquier duda consulte con su programadologo o deje su comentario*/


Ejercicio 1. Copia de arrays
Crear un programa que contenga una función llamada copiarArray )
que reciba dos arrays y el tamaño de los mismos (deben de ser del
mismo tamaño) y que consiga copia en el segundo array el contenido
del primero

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

void copiarArray(int a[], int b[], int tamanio);


void escribirArray(int a[], int tamanio);

int main(){
/* Comprobación de la función*/
int uno[]={2,4,5,6,7,8,9,11};
int dos[8];
printf("Array uno:\n");
escribirArray(uno,8);
copiarArray(uno,dos,8);
printf("Array dos:\n");
escribirArray(dos,8);
getch();
}

/* Escribe el contenido de un array de enteros por pantalla */


void escribirArray(int a[], int tamanio){
int i;
for(i=0;i<tamanio;i++)
printf("%d ",a[i]);
printf("\n");
}

/* Copia el contenido del array b en el array a. Se supone


que ambos arrays son del mismo tamanio*/
void copiarArray(int a[], int b[], int tamanio){
int i;
for(i=0;i<tamanio;i++){
b[i]=a[i];
}
}

Ejercicio 2. Ordenar pares e impares


Crear un programa llamado paresImpares que cree un array de 100
números aleatorios del 1 al 1000. Una vez creado, mostrar el
contenido y después organizarlo de forma que estén juntos los
elementos pares y los impares. Después, volver a mostrar el array

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

#define TAM 100

void escribirArray(int a[], int tamanio);

int main(){
int a[TAM];
int par[TAM]={0};
int impar[TAM]={0};
int i,j;

srand(time(NULL));
/*Relleno inicial del array a*/
for(i=0;i<TAM;i++){
a[i]=rand()%100+1;
}
/* Escritura del contenido del primer array*/
printf("Primer array:\n");
escribirArray(a,TAM);
/* Grabación de los pares y los impares en los otros arrays*/
for(i=0;i<TAM;i++){
if(a[i]%2==0)
par[i]=a[i];
else
impar[i]=a[i];
}
/* Escritura del array par e impar*/
printf("\nPar:\n");
escribirArray(par,TAM);
printf("\nImpar:\n");
escribirArray(impar,TAM);
/* Mezcla de ambos arrays en el array a
y escritura del resultado final*/

j=0;/*j es el índice del array a.


Sólo se mueve cuando se insertan en él números*/
/*recorrido del array par e impar e inserción de los números
pares que contenga (todos los que sean distintos de 0)
se añade al array a desde la primera posición del mismo*/
for(i=0;i<TAM;i++){
if(par[i]!=0) {
a[j]=par[i];
j++;
}
}
/*recorrido del array impar e inserción de los números
impares que contenga desde la posición en la que quedó j*/
for(i=0;i<TAM;i++){
if(impar[i]!=0) {
a[j]=impar[i];
j++;
}
}
/*Resultado final*/
printf("\resultado final:\n");
escribirArray(a,TAM);
} /* fin main */

/* Escribe el contenido de un array de enteros por pantalla */


void escribirArray(int a[], int tamanio){
int i;
for(i=0;i<tamanio;i++){
printf("%d ",a[i]);
}
printf("\n");
}

Ejercicio 3. Vendedores
Crear un programa llamado vendedores que cree un array de 18 X 10
indicando que poseemos una empresa de 18 vendedores cada uno de
los cuales vende 10 productos.
El array almacena los ingresos obtenidos por cada vendedor en cada
producto, de modo que un menú permite almacenar los ingresos,
revisar el total de cada vendedor y obtener los ingresos totales

#include <conio.h>
#include <stdio.h>
#define N_VENDEDORES 18
#define N_PRODUCTOS 10

/* Función que muestra el menú del programa y retorna


el número de menú elegido por el usuario */
int mostrarMenu();

/* Función que calcula el total de todas las ventas*/


double mostrarTotal(double v[][N_PRODUCTOS]);

/* Función que calcula el total de ventas de un vendedor*/


double totalVendedor(double v[][N_PRODUCTOS], int nVendedor);

int main(){
double ventas[N_VENDEDORES][N_PRODUCTOS]={0};
int resp=mostrarMenu();
int nvend, nprod;
double cantidad;

while(resp!=4){
switch(resp){
case 1:
printf("Numero de vendedor:
");scanf("%d",&nvend);
printf("Numero de producto:
");scanf("%d",&nprod);
printf("Cantidad ventida:
");scanf("%lf",&cantidad);
ventas[nvend][nprod]=cantidad;
break;
case 2:
printf("Numero de vendedor:
");scanf("%d",&nvend);
printf("Ventas total del vendedor %d=%.2lf\n",
nvend,totalVendedor(ventas,nvend));
break;
case 3:
printf("Total de ventas=%.2lf\n",
mostrarTotal(ventas));
break;
}
resp=mostrarMenu();
}
getch();
}
int mostrarMenu(){
int resp;
printf("\n\n");
printf("1) Añadir datos\n");
printf("2) Mostrar total de vendedor\n");
printf("3) Mostrar total de ventas\n");
printf("4) Salir\n");
scanf("%d",&resp);
return resp;
}

double mostrarTotal(double v[][N_PRODUCTOS]){


double resp=0;
int i,j;
for(i=0;i<N_VENDEDORES;i++){
for(j=0;j<N_PRODUCTOS;j++){
resp+=v[i][j];
}
}
return resp;
}
double totalVendedor(double v[][N_PRODUCTOS], int nVendedor){
double resp=0;
int i;
for(i=0;i<N_PRODUCTOS;i++){
resp+=v[nVendedor][i];
}
return resp;
}

Ejercicio 4. Reserva de asientos


Crear un programa que mediante un menú admita reservar o cancelar
asientos de un avión, así como mostrar qué asientos están ocupados y
libreas actualmente.
El array tendrá 25 filas y 4 columnas

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

#define N_FILAS 25
#define N_COLUMNAS 4
#define LIBRE 0
#define OCUPADO 1

/* Función que muestra el menú del programa y retorna


el número de menú elegido por el usuario */
int mostrarMenu();

void reservarAsiento(int a[][N_COLUMNAS]);


void cancelarAsiento(int a[][N_COLUMNAS]);
void mostrarOcupacion(int a[][N_COLUMNAS]);

int main(){
/* Los asientos inicialmente están libres*/
int asiento[N_FILAS][N_COLUMNAS]={0};
int resp=mostrarMenu();

while(resp!=4){
switch(resp){
case 1:
reservarAsiento(asiento);
break;
case 2:
cancelarAsiento(asiento);
break;
case 3:
mostrarOcupacion(asiento);
break;
}
resp=mostrarMenu();
}
getch();
}

int mostrarMenu(){
int resp;
printf("\n\n");
printf("1) Reservar Asiento\n");
printf("2) Cancelar Asiento\n");
printf("3) Mostrar Ocupacion\n");
printf("4) Salir\n");
scanf("%d",&resp);
return resp;
}

void reservarAsiento(int a[][N_COLUMNAS]){


int fila, col;

printf("Escriba la fila del asiento a reservar: ");scanf("%d",&fila);


printf("Escriba la columna del asiento a reservar:
");scanf("%d",&col);

if(a[fila][col]==OCUPADO) printf("Ese asiento ya está


reservado\n");
else {
a[fila][col]=OCUPADO;
printf("Reserva realizada\n");
}
}

void cancelarAsiento(int a[][N_COLUMNAS]){


int fila, col;

printf("Escriba la fila del asiento a cancelar: ");scanf("%d",&fila);


printf("Escriba la columna del asiento a cancelar:
");scanf("%d",&col);

if(a[fila][col]==LIBRE) printf("Ese asiento no está ocupado\n");


else {
a[fila][col]=LIBRE;
printf("Cancelación realizada\n");
}
}

void mostrarOcupacion(int a[][N_COLUMNAS]){


int i,j;

for(i=0;i<N_FILAS;i++){
for(j=0;j<N_COLUMNAS;j++){
printf("fila %d, columna %d ",i,j);
if(a[i][j]==LIBRE) printf("Libre\n");
else printf("Ocupado\n");
}
}
}
Ejercicio 5. Contar letras repetidas
Crear un programa que cree un array con 1000 letras mayúsculas
aleatorias y que cuenta cuántas veces aparece cada letra en el array

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

#define TAM 1000

void escribirArray(char a[], int tamanio);

int main(){
char letra[TAM];
/* Array que contendrá las letras de la A a la Z*/
char AaZ[26];
/* contadores*/
int i,j,cont;

srand(time(NULL));
/* Relleno del array de letras */
for(i=65;i<=90;i++){
AaZ[i-65]=i;
}
/*Relleno inicial del array aleatorio*/
for(i=0;i<TAM;i++){
/*genera caracteres del ASCII 65 al 90,
de la letra A a Z */
letra[i]=rand()%26+65;
}
/* Escritura del contenido del primer array*/
printf("Array inicial:\n");
escribirArray(letra,TAM);
/* El bucle recorre el array que contiene las letras de la A
a la Z y cuenta cada vez que aparece cada letra en el array de
letras
aleatorias*/
for(i=0;i<26;i++){
cont=0;
for(j=0;j<TAM;j++){
if(AaZ[i]==letra[j]) cont++;
}
printf("La letra %c aparece %i veces\n",65+i,cont);
}

getch();
}

/* Escribe el contenido de un array de enteros por pantalla */


void escribirArray(char a[], int tamanio){
int i;
for(i=0;i<tamanio;i++){
printf("%c ",a[i]);
}
printf("\n");
}
Estructura básica que pide, nombre, apellido, teléfono y edad y lo muestra por pantalla

#include <stdio.h>

struct estructura_amigo { /* Definimos la estructura estructura_amigo */


char nombre[30];
char apellido[40];
char telefono[10];
char edad;
};

struct estructura_amigo amigo;

void main()
{
printf( "Escribe el nombre del amigo: " );
fflush( stdout );
scanf( "%s", &[Link] );
printf( "Escribe el apellido del amigo: " );
fflush( stdout );
scanf( "%s", &[Link] );
printf( "Escribe el número de teléfono del amigo: " );
fflush( stdout );
scanf( "%s", &[Link] );
printf( "El amigo %s %s tiene el número: %s.\n", [Link],
[Link], [Link] );
}

/*Este ejemplo estaría mejor usando gets que scanf, ya que puede haber nombres
compuestos
que scanf no cogería por los espacios.*/

Determinar cual es la persona mayor de un grupo de 5 personas

/* Determinar cual es la persona mayor de un grupo de


5 personas, por cada persona se ingresa
dd Dia
mm mes
aa año de nacimiento
suponga que todos los meses son de 30 dias y
el año es de 360 dias
*/
#include<stdio.h>
main()
{
int dd,mm,aa;
int hdd,hmm,haa;
int i,mayor;
float maxedad;
float t1,t2,edad;
maxedad = 0;
printf("Ingrese la fecha de hoy [dd mm aaaa]\n:");
scanf("%d %d %d",&hdd,&hmm,&haa);
// tiempo transcurrido hasta hoy
t1= (haa-1)*360 +(hmm-1)*30 + hdd;
printf("Ahora ingresar EDADES:\n");
printf("----------------------\n");
for(i=1;i<=5;i++)
{
printf(" %d.- Ingrese [dd mm aaaa]\n:",i);
scanf("%d %d %d",&dd,&mm,&aa);
//tiempo transcurrido hasta la fecha de nacimiento
t2= (aa-1)*360 +(mm-1)*30 + dd;
// edad
edad=(t1-t2)/360.0;
if (edad > maxedad)
{
maxedad = edad;
mayor=i;
}
}
printf("la persona ingresada en la posicion %d es la mayor\n",mayor);
printf("Su edad es: %f \n",maxedad);
return 0;
}

Estructura básica que pide, nombre, apellido, teléfono y edad y lo muestra por pantalla

#include <stdio.h>

struct estructura_amigo { /* Definimos la estructura estructura_amigo */


char nombre[30];
char apellido[40];
char telefono[10];
char edad;
};

struct estructura_amigo amigo;

void main()
{
printf( "Escribe el nombre del amigo: " );
fflush( stdout );
scanf( "%s", &[Link] );
printf( "Escribe el apellido del amigo: " );
fflush( stdout );
scanf( "%s", &[Link] );
printf( "Escribe el número de teléfono del amigo: " );
fflush( stdout );
scanf( "%s", &[Link] );
printf( "El amigo %s %s tiene el número: %s.\n", [Link],
[Link], [Link] );
}
/*Este ejemplo estaría mejor usando gets que scanf, ya que puede haber nombres
compuestos
que scanf no cogería por los espacios.*/

También podría gustarte