Professional Documents
Culture Documents
RESPUESTAS Actividades
Sito de la cátedra: http://cursosfich.dyndns.org
Ejercicios
Ejercicio 10.1.
Realice un programa para leer un arreglo lineal de N elementos conteniendo palabras de hasta 12 caracteres.
Luego el programa deberá informar separadamente:
a) El primero de la lista de acuerdo a un orden alfabético.
b) Los elementos del arreglo que ocupan las posiciones pares.
c) Las palabras que comienzan con la sílaba ‘mar’ .
Ejercicio 10.2.
Escriba un programa que permita al usuario leer interactivamente un dato tipo cstring y exhiba un menú con
las opciones: 1. Pasar a Mayúsculas 2. Pasar a Minúsculas. 3. Solo la inicial con mayúsculas.
El programa debe resolver la opción seleccionada por el usuario.
void main(void)
{ char palabra[20];
int op;
cout<<"Ingrese una palabra= ";
gets(palabra);
cout<<"\n\n *** Menu de Opciones ***";
cout<<"\n\n1. Pasar a Mayúsculas\n";
cout<<"2. Pasar a Minúsculas.\n";
cout<<"3. Solo la inicial con mayúsculas\n";
cout<<"4. Salir.\n\n";
while (true){
cin>>op;
switch (op) {
case 1: puts(strupr(palabra));//muestra en mayusculas
break;
case 2: puts (strlwr(palabra));//muestra en minusculas
break;
case 3: {char letra= toupper(palabra[0]);
palabra[0]= letra;
puts (palabra);//muestra la inicial con mayúsculas
};
break;
case 4: abort();//sale del programa
};
};
}
Ejercicio 10.3.
Escriba un programa a partir del cual un usuario pueda ingresar una frase cualquiera y determine a través de
funciones: a) La cantidad de vocales de la frase; b) La cantidad de consonantes; c) La cantidad de letras.
Ejercicio 10.4.
Escriba un programa que permita ingresar una lista de apellidos y nombres de 10 personas (apellido y
nombre se asignan a una sola variable). Utilice para cada persona una variable de tipo cstring. El programa
debe informar un listado con los 10 apellidos y luego un listado con los 10 nombres. Considere apellidos
formados por una única palabra (la presencia del primer espacio en blanco indica el fin del apellido).
#include<iostream.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
using namespace std;
void main(void)
{// Inicializo el arreglo para no ingresarlo por teclado;
char apeynomb[10][50]={"Apellido1 Nombre1","Apellido2 Nombre2","Apellido3 Nombre3","Apellido4
Nombre4","Apellido5 Nombre5","Apellido6 Nombre6","Apellido7 Nombre7","Apellido8 Nombre8","Apellido9
Nombre9","Apellido10 Nombre10"};
char apellido[10][25],nombre[25];
int c;
//Estas lineas estan para cumplir con el enunciado original del ejercicio
// for (c=0;c<10;c++)
// {cout<<"Ingrese el apellido y nombre ("<<c<<"): ";
// gets(apeynomb[c]);};
for (c=0;c<10;c++)
{ strcpy(nombre, strchr(apeynomb[c],' '));
cout<<"\nNombre: "<<nombre;
strncpy(apellido[c],apeynomb[c],strlen(apeynomb[c])-strlen(nombre));
};
cout<<endl<<endl;
for (c=0;c<10;c++)
cout<<"Apellido: "<<apellido[c]<<endl;
}
Ejercicio 10.5.
Escriba un programa que permita ingresar una lista de apellidos y nombres de N personas (apellido y nombre
se asignan a una sola variable). Utilice para cada persona una variable de tipo cstring. El programa debe
informar un listado con los N apellidos y luego un listado con los N nombres. Considere apellidos formados por
una única palabra (la presencia del primer espacio en blanco indica el fin del apellido).
electrónicos (e-mails) de ellos. El dominio asignado a la Facultad para el e-mail es: fich.unl.edu.ar, y el nombre
de usuario se forma con la inicial del nombre y el apellido.
Ejemplo: Si el dato es Marelli Jorge, debe obtenerse: jmarelli@fich.unl.edu.ar
#include<iostream.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
using namespace std;
void main(void)
//Para agilizar la ejecución del programa inicializo la matriz
{char apeynomb[10][50]={"AAA Ape1","BBB Ape2","CCC Ape3","DDD Ape4","EEE
Ape5","FFF Ape6","GGG Ape7","HHH Ape8","III Ape9","JJJ Ape10"};
char email[10][25],apellido[25];
int c,x;
//Estas lineas son para cumplir con el enunciado original del problema
// for (c=0;c<10;c++)
// {cout<<"Ingrese el apellido y nombre ("<<c<<"): ";
// gets(apeynomb[c]);};
for (c=0;c<10;c++)
email[c][0]='\0'; //inicializo el arreglo con cadenas nulas el /0 se pone siempre
al finalizar las cadenas en un
for (c=0;c<10;c++)
{ strlwr(apeynomb[c]);//paso a minusculas
strncat(email[c],apeynomb[c],1);//copio la primer letra del nombre
strcpy(apellido, strchr(apeynomb[c],' '));//extraigo el apellido
for ( x=0; x < (strlen(apellido)-1); x++)//le saco el espacio.
apellido[x]=apellido[x+1];
apellido[x]='\0';//coloco la marca de fin de linea
strcat(email[c],apellido);//agrego el apellido al email
strcat(email[c],"@fich.unl.edu.ar");//agrego el dominio al email
cout<<"\ne-mail: "<<email[c]<<endl;//muestro en pantalla
};
cout<<endl<<endl<<"Pulsa una tecla para continuar";
}
Ejercicio 10.7.
Se ingresan las direcciones de correo electrónicos de un grupo de usuarios de Facultades de la UNL. Se debe
determinar el número de usuarios de las Facultades de Ing. y Ciencias Hídricas (fich) y de Ing. Química (fiq).
Las direcciones tienen la denominación de la facultad a continuación del símbolo @. Ejemplos:
jperez@fiq.unl.edu.ar (Ing. Química), agarcia@fce.unl.edu.ar (Cs Económicas), jprodo@fich.unl.edu.ar (Ing.
y Cs Hídricas), etc.
Ejercicio 10.8.
Escriba una función entera llamada quita_ceros( ) que reciba un arreglo de enteros como parámetro y
su longitud y elimine los ceros del mismo. Debe devolver la cantidad de elementos eliminada. b) Escriba
una sobrecarga de la función anterior que reciba solo un c_string de parámetro y elimine sus espacios en
blanco.
Ejercicio 10.9.
Calcule el promedio de N datos numéricos (correspondientes a calificaciones de un curso de N estudiantes.
Ingrese los datos numéricos empleando cstrings y valide la entrada, solicitando de nuevo el dato si este fuera
no válido (si por error no se ha ingresado un número).
#include<iostream.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
void main(void)
{char nota[10];
int N,x,calificacion;
double c;
float promedio=0;
cout<<"Ingrese la cantidad de Estudiantes (N):";
cin>>N;
cout<<"\nEl formato debe ser numero con decimales (##.##) Ej: 80.31"<<endl;
for (x=0; x<N; x++)
{ cout<<"\nIngrese la nota para el alumno N° "<<x+1<<": ";
cin.getline(nota,10,'.'); //lee el cstring
gets(nota);
calificacion = atoi( nota ); //lo convierte en entero
while (calificacion==0) //si dio 0 hay error
{cout<<"\nUd. debe ingresar un número para la nota: ";
cin.getline(nota,10,'.');
int calificacion= atoi(nota);
}
promedio += calificacion;
}
promedio /= N;
cout<<"\nEl Promedio de las notas es: "<<promedio<<endl;
cout<<endl<<endl<<"Pulsa una tecla para continuar";
}
Ejercicio 10.10
Se analizan los datos de un grupo de personas residentes en la ciudad de Santa Fe.
Se ingresan por cada persona los datos siguientes: Apellido, Nombres, Calle y Número.
a) Informe los nombres de cada calle donde vivan 2 o más personas de la lista.
b) A continuación la lista de personas de esa calle. No muestre aquellas personas que sean únicas en su
calle.
#include<iostream.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <iomanip.h>
void main(void)
{ char apellido[5][15]={"Perez","Lopez","Loyarte","Caballoro","Ceballos"};
char nombre[5][15]={"Juan","Pedro","Horacio","Raul","Victor"};
char calle[5][15]={"Rioja","San Martin","Rioja","Rioja","San Martin"};
int numero[5]={100,111,222,333,444};
char personas[5][50];//Aqui almaceno los datos para la respuesta al item (b)
int c,x,cont,cp;
char auxcalle[15];
//muestro los datos por pantalla
for (c=0;c<5;c++)
cout <<setw(10) <<nombre[c] <<setw(15) <<apellido[c] <<setw(15) <<calle[c]
<<setw(10) <<numero[c] <<endl;
cout<<"\n\n";
cout<<"\n\n\n\n";