Академический Документы
Профессиональный Документы
Культура Документы
IMFORMATICA INDUSTRIAL II
ALUMNA:
GAMBINI GONZALES, Rubi
CODIGO:
1025120215
TEMA:
Solucin de Laboratorio n5 y n6
1.- TEMA: CADENAS Y PUNTEROS
2.- TEMA: ESTRUCTURAS-
UNIONES
UNIVERSIDAD NACIONAL DEL CALLAO
LABORATORIO N 5
1.- TEMA: CADENAS Y PUNTEROS
2.- OBJETIVOS:
* Tratar una cadena de caracteres como apuntador y manipular el contenido de la misma con
apuntadores.
Ejemplo de cadenas.
Char nombre [15];// cadena llamada nombre de tamao 15
Char direccin [30];//CADENA LLAMADA DIRECCION DE TAMAO 30
Los datos se almacenan en la cadena de manera anloga a un arreglo, con la salvedad que el ultimo
carter de la cadena es el carcter NULL o `\0` .
Entre las funciones cadenas tenemos: strcpy(copia una cadena en otra), strcat(aade una cadena a otra),
strchr(obtiene la cadena que se encuentra a partir de la primera aparicin de un carcter de una cadena
inicial), strcmp(compara dos cadenas), strlen, strlwr, strupr, entre otras.
Punteros:
Es tipo de dato permite almacenar una direccin de memoria.
Ejemplo:
Int *p; // puntero a enteros.
Flota *pto; // puntero a real
Char *mensaje; // puntero a una cadena
Aritmtica de punteros:
A[0] = *(A+0) = *A
..
EJERCICIO A DESARROLLAR:
5.1.- Escribir un programa que en un texto de 15 lneas de 60 caracteres cada lnea determine la
cantidad de prrafos de que consta el texto, as como el nmero de veces que se repite la palabra
ITEM.
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdio.h>
struct texto
char letra[60];
};
texto linea[15];
void main()
int I,T,E,M;
I=T=E=M=0;
cout<<"\tTEXTO:\n";
for(int i=0;i<15;i++)
{cout<<i<<": ";gets(linea[i].letra);
for(int j=0;j<60;j++)
if(linea[i].letra[j]=='i')
{I++;
if(linea[i].letra[j]=='t')
{T++;
if(linea[i].letra[j]=='e')
{E++;
if(linea[i].letra[j]=='m')
{M++;
cout<<"\nNUMERO DE REPETICIONES\n";
cout<<"\nI: "<<I;
cout<<"\nT: "<<T;
cout<<"\nE: "<<E;
cout<<"\nM: "<<M;
getch();
5.2.- Escribir un programa que lea un texto de como mximo 50 lneas, cada lnea con un mximo
de 80 caracteres. Una vez ledo el texto intercambiar la lnea de mayor longitud por la lnea de
menor longitud.
5.3.- Se quiere leer un texto de como mximo 30lineas, de 60 caracteres cada lnea. Luego
determine la cantidad de veces que se repiten las letras U,N.A.C.
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdio.h>
struct texto
char letra[60];
};
texto linea[30];
void main()
int U,N,A,C;
U=N=A=C=0;
cout<<"\tTEXTO:\n";
for(int i=0;i<30;i++)
{cout<<i<<": ";gets(linea[i].letra);
for(int j=0;j<60;j++)
if(linea[i].letra[j]=='u')
{U++;
if(linea[i].letra[j]=='n')
{N++;
if(linea[i].letra[j]=='a')
{A++;
if(linea[i].letra[j]=='c')
{C++;
}
}
cout<<"\nNUMERO DE REPETICIONES\n";
cout<<"\nU: "<<U;
cout<<"\nN: "<<N;
cout<<"\nA: "<<A;
cout<<"\nC: "<<C;
getch();
5.4.- Escribir un programa en el que se lean 20 lneas de texto, cada lnea con un mximo de 60
caracteres. Mostrar por pantalla el nmero de vocales que tiene cada lnea.
#include<iostream.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
int main()
char lista[20][60],conv;
int vocal,j;
cout<<"\t\tEscribir texto\n";
for(int i=1;i<=20;i++)
cin.getline(lista[i],60);
cout<<"\nNumero de vocales\n";
for(int i=1;i<=20;i++)
{ vocal=0;
{ conv= tolower(lista[i][j]);
if(conv=='a' || conv=='e' || conv=='i' || conv=='o' || conv=='u')
vocal++; }
getch();
5.5.- Escribir un programa para generar una matriz de 5 x 6 elementos reales, multiplicar la
primera columna por cualquier otra y mostrar la suma de los productos. El programa debe
descomponerse en subproblemas y utilizar punteros para acceder a los elementos de la matriz.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<iomanip.h>
#include<stdlib.h>
#include<fstream.h>
#include<ctype.h>
entrada();
multiplicar();
getch();
void entrada()
clrscr();
cout<<"-----------------------------------------------"<<endl;
cout<<"\nFila(1)"<<endl;
cout<<"Fila(2)"<<endl;
cout<<"Fila(3)"<<endl;
cout<<"Fila(4)"<<endl;
cout<<"Fila(5)"<<endl;
gotoxy(11+6*j,6+1*i); cin>>a[i][j];}
cin>>colum;
void multiplicar()
if (colum==2)
{ mult=a[i][0]*a[i][1];
sum=sum+mult;
else if (colum==3)
{ mult=a[i][0]*a[i][2];
sum=sum+mult;
else if (colum==4)
{ mult=a[i][0]*a[i][3];
sum=sum+mult;
else if (colum==5)
{ mult=a[i][0]*a[i][4];
sum=sum+mult;
else if (colum==6)
{ mult=a[i][0]*a[i][5];
sum=sum+mult;
}
5.6.- Escribir un programa para generar una matriz de 6 x 7 elementos enteros y luego use
punteros para determinar la sumatoria del arreglo y el mayor valor del arreglo.
#include<iostream.h>
#include<conio.h>
{ int i,j,k;
k=0;
for(i=0;i<6;i++)
{for(j=0;j<7;j++)
{cin>>M[i][j];
T[k]=M[i][j];
k++;
{ int i,j;
for(i=0;i<6;i++)
{ for(j=0;j<7;j++)
cout<<"["<<M[i][j]<<"]";cout<<"\n";
cout<<endl;
{ float suma=0;
float *a;
a=T;
for(int i=0;i<42;i++)
{suma=suma+*(a+i);
}
float mayor;
mayor=*b;
for(int i=0;i<42;i++)
if(*(b+i)>mayor)
mayor=*(b+i);
return mayor;
void main()
float tabla[42],matriz[6][7];
float Min,Max;
leermatriz(matriz,tabla);
mostrarmatriz(matriz);
Max=may(tabla);
sumarmatriz(tabla);
getch();
}
7.- Escribir un numero entero de longitud variable (mximo 20dgitos) y almacene sus dgitos en
una cadena. Sugerencia capturar los dgitos como caracteres.
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
#include<string.h>
#include<stdio.h>
void main()
{ char numero[21];
int pos=0;
gets(numero);
cin>>pos;
{ if (i+1==pos)
getch();
}
LABORATORIO N6
1- TEMA: ESTRUCTURAS-UNIONES
2- OBJETIVOS
3- FUNDAMENTO TEORICO
3.1-ESTRUCTURA
En muchos casos los programas necesitan agrupar informacin relacionada que no es del mismo tipo.
Por ejemplo supongamos que el programa trabaja con registros de empleado. Se debe seguir la pista al
nombre, edad, salario, direccin, etc. Para almacenar esta informacin, el programa necesitara variables
tipo char, int, float,char. Cuando es necesario guardar informacin de tipo diferente, el programa puede
utilizar una estructura.
Una estructura especifica una plantilla en la cual pueda posteriormente declarar una variable.
Struct Nombre {
Int miembro1;
Int miembro2;
Int miembro3;
} Variable;
PROBLEMAS RESUELTOS:
4.1 Escribe un programa de facturacin de clientes (50 clientes), cada cliente tiene un nombre,
cdigo, nmero de unidades solicitadas, precio de cada unidad y el estado en que se encuentra:
Moroso, atrasado, al da. El programa debe permitir obtener el siguiente listado:
-cliente al da.
#include<iostream.h>
#include<conio.h>
#include<string.h>sss
#include<ctype.h>
#include<stdio.h>
struct persona
{char nombre[30];
char codigo[10];
int unidades;
int precio;
char estado;
};
void main()
{int n;
float factura[50];
cin>>n;
for(int i=1;i<=n;i++)
{cout<<"Ingrese el nombre:";gets(cliente[i].nombre);
cout<<"Ingrese el codigo:";gets(cliente[i].codigo);
cout<<endl;
factura[i]=cliente[i].unidades*cliente[i].precio;
for(int i=1;i<=n;i++)
{if(cliente[i].estado=='M')
{cout<<cliente[i].nombre;
cout<<endl;
for(int i=1;i<=n;i++)
{if(cliente[i].estado=='A')
{cout<<cliente[i].nombre;
cout<<endl;
for(int i=1;i<=n;i++)
{if(cliente[i].estado=='D')
{cout<<cliente[i].nombre;
cout<<endl;
for(int i=1;i<=n;i++)
{cout<<cliente[i].nombre<<endl;
cout<<factura[i]<<endl;
getch();
4.2-Escribe un programa para calcular el nmero de das que hay entre dos fechas; declarar fecha
como una estructura.
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdio.h>
#include<stdlib.h>
struct DATOS
{int d;
int m;
int a;
int dias;
};
DATOS fecha[2];
void main()
int tiempo;
DATOS fecha[2];
clrscr();
for(int i=1;i<=2;i++)
{cout<<"INGRESE FECHA:";cout<<endl;
cout<<"Dia: ";cin>>fecha[i].d;
cout<<endl;
cout<<"Mes: ";cin>>fecha[i].m;
cout<<endl;
cout<<"Ao: ";cin>>fecha[i].a;
cout<<endl;
fecha[i].dias=fecha[i].d+fecha[i].m*30+fecha[i].a*365;
cout<<endl;
if(fecha[1].dias-fecha[2].dias>=0)
{tiempo=fecha[1].dias-fecha[2].dias;}
else
{tiempo=fecha[2].dias-fecha[1].dias;}
cout<<"\n EL NUMERO DE DIAS ENTRE LAS DOS FECHAS ES: "<<tiempo<<"\t DIAS"<<endl;
getch();
4.3-Un club deportivo tiene un patrn de 100 socios, con la siguiente informacin:
Nombre del socio (char25), cdigo del socio (char 4), direccin del socio (char 25), telfono (char
8), fecha de ingreso (char 9), clases de socio, los cuales son: Fundador, honorario y normal. Se
pide desarrollar un programa que permita:
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdio.h>
#include<stdlib.h>
struct fecha
{int d;
int m;
int a;
};
struct SOCIO
{char nombres[25];
char codigo[4];
char direccion[25];
char telefono[10];
fecha fecha_ingreso;
char clasesocio[10];
int cotizames;
};
SOCIO club[2];
void main()
{int n;
float t;
clrscr();
cin>>n;
for(int i=0;i<n;i++)
{cout<<"\nSOCIO: "<<(i+1)<<endl;
cout<<"\tDia: ";cin>>club[i].fecha_ingreso.d;
cout<<"\tMes: ";cin>>club[i].fecha_ingreso.m;
cout<<"\tAo: ";cin>>club[i].fecha_ingreso.a;
mostrar(n);
t=totalcotizacion(n);
getch();
void mostrar(int n)
{for(int i=0;i<n;i++)
{cout<<"\n\nSocio: "<<(i+1)<<endl;
cout<<"Nombre: "<<club[i].nombres<<endl;
cout<<"Direccion: "<<club[i].direccion<<endl;
cout<<"Telefono: "<<club[i].telefono<<endl;
float totalcotizacion(int n)
{
float s=0;
{s=s+club[i].cotizames;
return s;
4.4-se quiere informatizar los resultados obtenidos por los quipos de vley y futbol de Liga
Deportiva del Callao. La informacin de cada quipo es:
Nombre del equipo, nmero de victorias, numero de derrotas, para los equipos de vley aadir la
siguiente informacin:
Numero de empates, nmero de goles a favor, nmero de goles en contra, nombre del goleador
del equipo, nmero de goles del goleador.
Desarrollar un programa que utilice estructuras anidadas, para introducir la informacin de todos
los equipos integrantes de ambas ligas. Ambas ligas tienen 15 equipos.
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdio.h>
#include<stdlib.h>
struct data
{char nom_equip[15];
int num_vict;
int num_derr;
};
struct voley
{data dat_voley;
int perd_balon;
char mej_anot[20];
};
struct goleador
{char nombre[20];
int goles;
};
struct futboll
{data dat_futboll;
goleador gole_equip;
int empates;
int gol_fav;
int gol_cont;
};
voley a[16];
futboll b[16];
void main()
cout<<"\tEQUIPOS DE VOLEY\t"<<endl;
for(int i=0;i<1;i++)
cout<<endl;
cout<<endl;
cout<<endl;
cout<<"Numero de perdidas del balon: ";cin>>a[i].perd_balon;
cout<<endl;
cout<<endl;
cout<<"\tEQUIPOS DE FUTBOLL\t"<<endl;
for(int i=0;i<1;i++)
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
getch();
4.5-un punto en el plano se puede representar mediante una estructura con dos campos.
Escribir un programa que realice las siguientes operaciones con puntos en el plano:
a) Dados dos puntos calcular la distancia entre ellos.
b) Dados dos puntos determinar la ecuacin de la recta que pasa por ellos.
c) Dados tres puntos, que representa los vrtice de un tringulo calcular su rea.
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
struct plano
{int x;
int y;
};
plano nuevo[5];
void main()
{float a,d,areat;
float h,k;
float dist;
for(int i=1;i<=2;i++)
cout<<"Punto "<<i<<":"<<"\n";
cout<<"X: ";cin>>nuevo[i].x;cout<<endl;
cout<<"Y: ";cin>>nuevo[i].y;cout<<endl;
dist= distancia(d);
cout<<"LA DISTANCIA ES:\n";
cout<<dist;
cout<<"\n";
for(int i=1;i<=2;i++)
cout<<"Punto "<<i<<":"<<"\n";
cout<<"X: ";cin>>nuevo[i].x;cout<<endl;
cout<<"Y: ";cin>>nuevo[i].y;cout<<endl;
h= nuevo[2].y-nuevo[1].y;
k= nuevo[2].x-nuevo[1].x;
cout<<"Y="<<h<<"/"<<k<<"(X-"<<nuevo[1].x<<")+"<<nuevo[1].y;
cout<<"\n";
for(int i=1;i<=3;i++)
cout<<"Punto "<<i<<":"<<"\n";
cout<<"X: ";cin>>nuevo[i].x;cout<<endl;
cout<<"Y: ";cin>>nuevo[i].y;cout<<endl;
area(a);
areat=area(a);
cout<<abs(areat);
getch();
float distancia(float d)
{float m,n;
m=abs(nuevo[1].x-nuevo[2].x);
n=abs(nuevo[1].y-nuevo[2].y);
d=sqrt(pow(m,2)+pow(n,2));
return d;
float area(float a)
{float v1,v2,v3,v4,v5,v6;
v1= nuevo[1].x*nuevo[2].y;
v2= nuevo[2].x*nuevo[3].y;
v3= nuevo[3].x*nuevo[1].y;
v4= nuevo[2].x*nuevo[1].y;
v5= nuevo[3].x*nuevo[2].y;
v6= nuevo[1].x*nuevo[3].y;
a=0.5*(v1+v2+v3-v4-v5-v6);
return a;
4.6- Modifique el programa facturacin de cliente de tal modo que se pueda obtener los siguientes
resultados:
#include<conio.h>
#include<math.h>
#include<iostream.h>
#include<stdio.h>
void main()
{ clrscr();
char nombre[100][10],codigo[10]; //nombre[100][10] significa 100 vectores que contienen nombres 10
caracteres cada uno ,se considero un numero grande puesto que luego sera reemplazado por la cantidad
de clientes
int unidades,estado[100],n,i;
float precio,cant[100];
for(i=0;i<n;i++)
{
unidades=0;
precio=0;
cout<<"\n-\t-CLIENTE "<<i+1<<"\n\n";
cout<<"Ingrese nombre";gets(nombre[i]);
cout<<"Ingrese codigo";cin>>codigo;
cout<<"Ingrese unidades solicitadas";cin>>unidades;
cout<<"Ingrese el precio por unidad ";cin>>precio;
cant[i]=precio*unidades;
do
{cout<<"Ingrese el estado ";cin>>estado[i];}
while(estado[i]!=1 && estado[i]!=3);
}
getch();
}
4.7-Se quiere leer un texto de como mximo 20 lneas, de 60 caracteres cada lnea.
Luego determine la cantidad de veces que se repiten las letras I,T,E,M. usar preferentemente
estructuras.
#include<conio.h>
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
#include<math.h>
struct DATOS
{char texto[60];
};
void main()
int c=0,k=0,i,I=0,T=0,E=0,M=0;
for(i=1;i<=20;i++)
{gets(mensaje.texto);
while(mensaje.texto[k]!='\0')
{switch(toupper(mensaje.texto[k]))
k++;
k=0;
getch();
4.8- La empresaA&T S.A.C, dispone de dos almacenes de productos terminados para sus
plantas de Ate y Puente Piedra. El almacn de la planta de Ate, dispone de la siguiente data:
cdigo de producto char 5, nombre del producto char 15, descripcin del producto char 20, precio
float, cantidad int. El almacn de Puente Piedra adems de los campos indicados anteriormente
contiene los campos: ubicacin producto char 3, stock mnimo y stock de seguridad del producto
tipo int. Se pide utilizar estructuras anidadas y funciones para:
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdio.h>
#include<stdlib.h>
struct BASE1
{char codigo_prod[5];
char nombre_prod[15];
char descripcion_prod[20];
float precio;
int cantidad;
};
struct BASE2
{BASE1 data;
char ubicacion_prod[3];
int stock;
};
BASE1 ate[50];
BASE2 puente[50];
void main()
{int n,k,i,j;
float costoate,costopuente;
clrscr();
cout<<"\tPLANTA DE ATE"<<endl;
for(int i=1;i<=n;i++)
{cout<<"Producto ["<<i<<"]"<<endl;
cout<<"nombre: ";gets(ate[i].nombre_prod);cout<<endl;
cout<<"codigo: ";gets(ate[i].codigo_prod);cout<<endl;
cout<<"descripccion: ";gets(ate[i].descripcion_prod);cout<<endl;
cout<<"precio: ";cin>>ate[i].precio;cout<<endl;
cout<<"cantidad: ";cin>>ate[i].cantidad;cout<<endl;
costoate=costoate+(ate[i].precio*ate[i].cantidad);
for(int j=1;j<=k;j++)
{cout<<"Producto ["<<j<<"]"<<endl;
cout<<"nombre: ";gets(puente[j].data.nombre_prod);cout<<endl;
cout<<"codigo: ";gets(puente[j].data.codigo_prod);cout<<endl;
cout<<"descripccion: ";gets(puente[j].data.descripcion_prod);cout<<endl;
cout<<"precio: ";cin>>puente[j].data.precio;cout<<endl;
cout<<"cantidad: ";cin>>puente[j].data.cantidad;cout<<endl;
cout<<"ubicacion: ";gets(puente[j].ubicacion_prod);cout<<endl;
cout<<"\t\t\nRELACION GENERAL"<<endl;
mostrar(n,k);
for(j=1;j<=k;j++)
cout<<"\n";
cout<<"\t\nALMACEN DE ATE\n"<<endl<<costoate<<endl;
cout<<"\t\nALMACEN DE ATE\n"<<endl;
mayor1(n);
mayor2(k);
getch();
{ cout<<"\t\nPLANTA DE ATE\n"<<endl;
for(int i=1;i<=n;i++)
cout<<"PRODUCTO: "<<i<<endl;
cout<<"NOMBRE: "<<ate[i].nombre_prod<<endl;
cout<<"CODIGO: "<<ate[i].codigo_prod<<endl;
cout<<"DESCRIPCION: "<<ate[i].descripcion_prod<<endl;
cout<<"CANTIDAD: "<<ate[i].cantidad<<endl;
cout<<"PRECIO: "<<ate[i].precio;cout<<endl;
for(int j=1;j<=k;j++)
cout<<"PRODUCTO: "<<j<<endl;
cout<<"NOMBRE: "<<puente[j].data.nombre_prod<<endl;
cout<<"CODIGO: "<<puente[j].data.codigo_prod<<endl;
cout<<"DESCRIPCION: "<<puente[j].data.descripcion_prod<<endl;
cout<<"CANTIDAD: "<<puente[j].data.cantidad<<endl;
cout<<"PRECIO: "<<puente[j].data.precio<<endl;
cout<<"UBICACION: "<<puente[j].ubicacion_prod<<endl;
cout<<"\n";
getch();
void mayor1(int n)
{int i;
int h;
float mayor=0;
for(int i=1;i<=n;i++)
{if(ate[i].precio>mayor)
{mayor=ate[i].precio;
h=i;
cout<<ate[h].nombre_prod;
}
void mayor2 (int k)
{float mayor=0;
int j;
int h;
for(int j=1;j<=k;j++)
{if(puente[j].data.precio>mayor)
{mayor=puente[j].data.precio>mayor;
h=j;
cout<<puente[h].data.nombre_prod;