Está en la página 1de 11

1

PraLENC6
Prof: Dra. Bertila García Díaz PRACTICA DIRIGIDA NRO 6 de Dev C++
Arreglo de Estructuras y Cadenas

Objetivos
1) Uso de Estructuras para definición de Archivos.
2) Uso de Cadenas como herramienta de ayuda en la programación.

I.- Estructuras

1.- Digita el siguiente programa, grábalo con el nombre pd6-01 y determina cual es el resultado
de su ejecución
/* pr6-01: ingresa nombre, apellido y salario en una estructura llamada dato y
luego imprime - estru1*/
#include<conio.h>
#include<iostream>
using namespace std;
main ()
{
struct ficha{char nombre [30];
char apellido[30];
float salario;
}dato;
//ingreso
cout<<"\ningrese nombre:";cin>>dato.nombre;
cout<<"\ningrese apellido:";cin>>dato.apellido;
cout<<"\ningrese salario:";cin>>dato. salario;
//muestra
cout<<"\nSalario de "<<dato.apellido<<" es :"<<dato.salario;
getch();

2.- Modifica el programa anterior de tal manera que pueda Ud. ingresa el nombre, apellido y
estatura de una persona. Grábalo como pd6-02.

3.- Digita el siguiente programa, grábalo con el nombre pd6-03 y determina cual es el resultado
de su ejecución. (arrays de estructuras)

/* pd6-03 ingresa arrays en forma de estructura y luego los lista - estru4*/


#include<iostream>
#include<iomanip>
#include<stdio.h>
#include<conio.h>
void ingresa();
void imprime();
int i;
struct alumno{
char nombre[20];
int edad;
}lista[10];
using namespace std;

main()
{
//clrscr();
2

ingresa();
imprime();
getch();
}
//ingresa
void ingresa()
{
for (i=0;i<10;i++)
{
cout<<"\ningrese nombre "<<(i+1)<<":";
fflush(stdin);
gets(lista[i].nombre);
cout<<"\ningrese edad "<<(i+1)<<".";
cin>>lista[i].edad;
}
}
/*imprimir*/
void imprime()
{
cout << setiosflags(ios::left);
cout<<"\n\t\t LISTADO DE ALUMNOS"<<endl;
cout<<setw(30)<<"NOMBRE"<<setw(10)<<"EDAD"<<endl;
for(i=0;i<10;i++)

cout<<setw(30)<<lista[i].nombre<<setw(10)<<lista[i].edad<<endl;
}
4.- Modifica el programa anterior de tal manera que pueda Ud. ingresar el nombre y estatura de
una persona. Grábalo como pd6-04.

5.- Digita el siguiente programa, grábalo con el nombre de Pd6-05 y determina cuál es el
resultado de su ejecución: (Estructuras y Funciones)

/* Ingresa los codigos, nombres y notas de 10 personas y luego muestra cuántos


están aprobados y cuántos desaprobados pd6_5*/
#include<iostream.h>
#include<iomanip.h>
#include<stdio.h>
#include<conio.h>
//variables globales
struct alumnos
{int codigo;
char nombre[15];
int nota;
}datos [10];
void mostrar(void);
void ingresar(void);
using namespace std;
main()
{
ingresar();
mostrar();
getch();
return 0;
}
3

/* rutinas sin pase de parametros*/


void ingresar(void)
{
int i;
for(i=0;i<5;i++)
{
cout<<"ingrese alumno Nro "<<(i+1)<<":"<<endl;
cout<<"\ncodigo:";cin>>datos[i].codigo;
cout<<"Nombre:";
fflush(stdin);gets(datos[i].nombre);
cout<<"\nNota:";cin>>datos[i].nota;
}
}
/*mostrar*/
void mostrar(void)
{
int i ,aprob=0,desaprob=0;
cout << setiosflags(ios::left);
cout<<"\n\t\t LISTADO DE ALUMNOS"<<endl;
cout<<setw(10)<<"Nro"<<setw(10)<<"CODIGO"<<setw(30)<<"NOMBRE"<<setw
(10)<<"NOTA"<<endl;
for(i=0;i<5;i++)
{
cout<<setw(10)<<(i+1)<<setw(10)<<datos[i].codigo<<setw(30)<<datos[i].nombre<
<setw(10)
<<datos[i].nota<<endl;
if (datos[i].nota >= 11)
aprob++;
else
desaprob++;
}
cout<<"\n Aprobados: "<<aprob<<endl;
cout<<"\n Desaprobados: "<<desaprob<<endl;
}

6.- Modifica el Programa anterior, de tal manera que determine el promedio de notas de los
alumnos y luego los muestre. grábalo como Pd6-06

FUNCIONES DE CADENA
II.- Ejecuta los sgtes programas de cadenas de caracteres y determina el resultado de su
ejecución.

7.- .- Digita el siguiente programa, grábalo con el nombre pd6-07 y determina cual es el
resultado de su ejecución

/* cadenita */
#include <stdio.h>
#include <conio.h>
#include <string.h>
4

#include <iostream>
#define MAXIMO 80
using namespace std;
main()
{
char s[MAXIMO], s2[MAXIMO];
cout<<"ingrese cadena:";
gets(s);
cout<<"la cadena es:";
puts(s);
cout<<"longitud:"<<strlen(s)<<endl;
cout<<"Mayuscula:"<<strupr(s)<<endl;
cout<<"minuscula:"<<strlwr(s)<<endl;
strcpy(s2,s);
cout<<"copia:"<<s2<<endl;
getch();
return 0;
}

8.- Digita el siguiente programa, grábalo con el nombre pd6-08 y determina cual es el resultado
de su ejecución.
/* cadena16 compara y concatena 2 cadenas*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
#define MAXIMO 80
using namespace std;
main()
{
clrscr();
char s1[MAXIMO], s2[MAXIMO];
int n;
cout<<"\ningrese cadena 1:";gets(s1);
cout<<"\ningrese cadena 2:";gets(s2);
cout<<"\nla cadena 1 es:";puts(s1);
cout<<"\nla cadena 2 es:"; puts(s2);

/* compara*/
n=strcmp(s1,s2);
if (n==0)
cout<<"la cadena “<<s1<<” es igual a "<<s2;
else
if (n>0)
cout<<"la cadena “<<s1<<” es mayor a "<<s2;
else
if (n<0)
cout<<"la cadena “<<s1<<” es menor a "<<s2;

/* compara si son iguales en una sola instrucción*/


if (!(strcmp(s1,s2))) /* si no son diferentes*/
cout<<"\nla cadena “<<s1<<” es igual a "<<s2;
/* concatena*/
strcat(s1,s2);
5

cout<<"\nla cadena concatenada es: "<<s1;


getch();
return 0;
}
9.- .- Digita el siguiente programa, grábalo con el nombre pd6-09 y determina cual es el
resultado de su ejecución

/* cadena17 */
/* Convierte cadenas numericas*/
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
#define MAXIMO 80
using namespace std;
main()
{
char s[MAXIMO];
cout<<"\ningrese cadena numerica:";gets(s);
cout<<"\nla cadena es:";puts(s);
cout<<"\nel numero entero es :"<<atoi(s)<<endl;
cout<<"\nel numero entero largo es :"<<atol(s)<<endl;
cout<<"\nel numero float es :"<<atof(s)<<endl;
getch();
}
10.- Digita el siguiente programa, grábalo con el nombre pd6-10 y determina cual es el
resultado de su ejecución

/*cade10 lee un arreglo de cadenas y cuenta el numero de vocales usando toupper-Ctype.h*/


#include<stdio.h>
#include<string.h>
#include<iostream>
#include<ctype.h>
#include<conio.h>
using namespace std;
main()
{ int i=0,vocales=0,Otros=0;
clrscr();
char s[80]; /* separa un arreglo de caracteres*/
cout<<”\n Ingrese cadena:”;
fflush(stdin);
gets(s);/* lee una cadena del teclado */
while(s[i])
{
s[i]=toupper(s[i]);
switch(s[i]) {
case 'A': ++vocales;break;
case 'E': ++vocales;break;
case 'I': ++vocales;break;
case 'O': ++vocales;break;
case 'U': ++vocales;break;
case ' ': break;
default: ++Otros;
}
6

++i;
}
cout<<"vocales : "<<vocales<<endl;
cout<<"Otros : "<<Otros<<endl;
getch(); }

11.- Digita el siguiente programa, grábalo con el nombre pd6-11 y determina cual es el
resultado de su ejecución.

/*cadena14 ingresa 5 lineas de texto y luego los imprime*/


#include<stdio.h>
#include<string.h>
#include<iostream>
#include<conio.h>
using namespace std;
main()
{
int i;
struct arre{
char cad[80];}arreglo[5];
cout<<"\nIngrese 5 líneas de texto: "<<endl;
for (i=0;i<5;i++)
gets(arreglo[i].cad);

cout<<"\nMostrar 5 líneas de texto: "<<endl;


for (i=0;i<5;i++)
puts(arreglo[i].cad);
getch();
return 0;
}

12.- Digita el siguiente programa, grábalo con el nombre pd6-12 y determina cual es el
resultado de su ejecución

/* ordena alfabeticamente 5 elementos de un arreglo*/


/* usa el método de la burbuja*/
#define NUM_PER 5
#include<string.h>
#include<ctype.h>
#include<iostream>
#include<iomanip>
struct persona
{
char nombre[30];
int edad;
char sexo;
}A[NUM_PER];
void otro_reg();
void ordenar();
int i,j;
using namespace std;
7

main()
{
char opcion;
do{ //Pantalla Principal
cout<<"ELIJA UNA OPCION CON EL TECLADO"<<endl;
cout<<"\n(A) Ingresar Datos";
cout<<"\n(L) Ordenar";
cout<<"\n(T) Terminar\n\n\n\n\n\n";
opcion = tolower(getche());
switch(opcion)
{
case 't':break;
case 'a': otro_reg();break;
case 'l':ordenar();break;
}
}while(opcion!='t');
getch();
return 0;
}
//agregar
void otro_reg()
{
for(i=0; i<NUM_PER; i++){
cout<<"\n Introduzca un nombre : ";
fflush(stdin);
gets(A[i].nombre);
cout<<"\n Edad: ";cin>>A[i].edad;
cout<<"\n sexo: ";cin>>A[i].sexo;
}}
void ordenar()
{
persona aux;
for(i=0;i<NUM_PER-1;i++)
for(j=0;j<NUM_PER-1-i;j++)
{
if(strcmp(A[j].nombre,A[j+1].nombre)>0)
{
aux=A[j];
A[j]=A[j+1];
A[j+1]=aux;
}
};
//lista array ordenado
setiosflags(ios::left);
cout<<setw(20)<<"NOMBRE"<<setw(10)<<"EDAD"<<setw(10)<<"SEXO"<<endl;
for(i=0;i<NUM_PER;i++)
{
cout<<setw(20)<< A[i].nombre <<setw(10)<< A[i].edad<<setw(10)<<A[i].sexo <<endl;
} getch();
}
8

13.- Digita el siguiente programa, grábalo con el nombre pd6-13 y determina cual es el
resultado de su ejecución

/* bcarac Cuenta el número de veces que se repite un carácter en una cadena*/


#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#define MAXIMO 80
int cuentach(char cad [], char CH);
using namespace std;
main()
{
char cadena [80];
char ch;
cout<<"\n Ingrese cadena:";
gets(cadena);
strupr(cadena);

cout<<"\ningrese el caracter a buscar:";


ch=getchar();
ch=toupper(ch);
cout<<ch<<" esta "<<cuentach(cadena, ch)<<" veces";
getch();
}

int cuentach(char cad [], char CH)

{
int len,cont=0;
len=strlen(cad);
for(int i=0; i<len; i++)
if ( cad [i] == CH)
cont++;
return cont;
}

PRACTICA CALIFICADA Nro 6

Utilize funciones en todos los programas:

1.- Hacer un programa que mediante un arreglo de estructuras ingrese:


9

Nombre, Sueldo de 5 personas, y luego muestre los sueldos de las personas que ganan más de
2000. Grabar como pr6-1. Grabar como pr6-1

2.-Diseñar un programa que ingrese los datos (nombre, codigo, edad y sexo) de 5 empleados de
una compañía e imprima la lista de empleados ordenados alfabéticamente por el nombre.
Grabar como pr6-2

3.- Un array de estructuras contiene la descripción de personas para efectos estadísticos. Cada
estructura tiene los campos:
nombre, edad, sexo, altura, color de piel, color de ojos, nacionalidad
Escribir un programa que mediante un menú realice: Grabar como pr6-3.
a) lea y almacene datos en este array,
b) ordene el array por orden alfabético de nombres
c) imprima su contenido.

4.- Desarrolle un programa, que presente el sgte menú:


a.- introducir notas
b.- Listar promedio final por pantalla
c.- Salir
Donde la estructura de los datos es la sgte:
Codigo (int)
Nombre char[30]
Parcial (int)
Final (int)
Trabajo (int)
Y PF= (parcial + final + trabajo) /3
Asuma que el nro máximo de alumnos es 30.- Grabar como pr6-4.

5.- Un médico almacena la siguiente información de sus pacientes: nombre, dirección, teléfono,
fecha última visita, si es o no privado, si tiene alergias, y un campo de observaciones. Se desea
un programa con las siguientes opciones:
a) Introducción de registros interactivamente.
b) Imprimir en pantalla toda la información del paciente
c) Dado un nombre de un paciente encontrar la fecha de la última visita
d) Listar todos los pacientes con alergias
e) Listar alfabéticamente todos los pacientes privados
f) Imprimir todo el listado completo de paciente
Grabar como pr6-5.

6.- Desarrolle un programa, que presente el sgte menú:


a) Introducir datos
b) Listar sueldo neto por pantalla y los datos de cada persona
c) Salir
Donde la estructura es la sgte:
Codigo (int)
Nombre char[30]
Ingre1 float
Ingre2 float
Descu1 float
Descu2 float

Y SNETO = (ingre1 + ingre2) - (descu1 + descu2)


Asuma que el nro máximo de trabajadores es 20. Grabar como pr6-6
10

7.- Contabilizar el número de palabras contenidas en una frase ingresada desde el teclado
considerando la posibilidad que haya más de un espacio en blanco entre 2 palabras. Asumir
además que la frase NO empieza con espacios en blancos.
Grabar como pr6-7

8.- Determinar si una cadena de caracteres es un palíndromo (un palíndromo es un texto que se
lee igual hacia la derecha o hacia la izquierda) ej: radar – Use función con pase de parámetros
Grabar como pr6-8

9.- Diseñar una función cuentach que retorne el número de repeticiones de una carácter en una
cadena. La función debe recibir como parámetros la cadena y el carácter. Escriba luego un
programa que ingrese una cadena y determine el número de repeticiones de cada una de las
vocales no tildadas. Grabar como pr6-9

10.- Diseñar una función que lea 2 cadenas y luego reporte una cadena formada por: los
caracteres combinados de las cadenas. Ej: “HOLA” y “MUNDO” -> “HMOULNADO”

11.- contar el número de ocurrencias de la letra ‘e’ en el flujo de entrada.

Trabajo Final

12.- Escribir un programa que haga eco del flujo de entrada y luego ponga en mayúscula la
primera letra de cada palabra.

13.- Escribir una función que extraiga los enteros del flujo de entrada

14.- Escribir un programa que lea una secuencia de nombres, uno por línea, los ordene y, a
continuación, los presente en pantalla.

15.- Escribir un programa que haga uso de una función invertir() para invertir una cadena leída
del teclado
16.- Escriba un programa que lea una cadena e imprima una tabla que indique el
número de palabras de una letra, de dos letra, de tres letras, etc..(considere máximo 10
letras) que hay en el texto. Por ejemplo, la frase:

Si es más noble para la mente sufrir


Contiene:
Longitud de la palabra Veces
1 0
2 3
3 1
4 1
5 2
6 1
7 0
8 0
9 0
10 0

17.-Escriba un programa que lea varias líneas de texto e imprima una tabla que indique el
número de veces que sucede cada palabra del texto. La primera versión del programa deberá
11

incluir las palabras de la tabla en el mismo orden en que aparecen en el texto. Por ejemplo, las
líneas
ser o n o ser: ésa es la cuestión
si es más n ob le p ara la men te su frir

contienen la palabra “ser” dos veces, la palabra “más” una vez, “no” una vez, etc. Después
deberá intentar una impresión más interesante en la que las palabras aparezcan ordenadas
alfabéticamente.

18.- Elaborar un programa que ejecute y defina una función borrar (c,p,n). la función convierte
la cadena c a la cadena que se forma eliminándole n caracteres a partir de la posición p.

19.- Elaborar un programa en el que se ingrese por teclado un arreglo de 5 cadenas. Luego el
programa debe permitir el ingreso de una sexta cadena más pequeña. El programa debe mostrar
en consola las cadenas del arreglo que tengan, por lo menos, dos veces la cadena más pequeña.
Definir y ejecutar una función que tenga dos argumentos: la cadena del arreglo y la subcadena a
buscar.

También podría gustarte