Académique Documents
Professionnel Documents
Culture Documents
UNIDAD 10
CStrings en C++
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’ .
for (c=0;c<n;c++)
{if (strncmp(A[c],"MAR",3)==0)
puts( A[c] );//muestra las palabras que comienzan con mar
};
cout<<endl<<"Pulse cualquier tecla para continuar";
}
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.
int 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;
int 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).
Ejercicio 10.6.
Escriba un programa que permita ingresar una lista de apellidos y nombres de N profesores de la FICH-UNL
(apellido y nombre se asignan a una sola variable). El programa debe mostrar las direcciones de correo
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;
int 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
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";
Facultad de Ingeniería y Ciencias Hídricas de la UNL
Ingeniería Informática – Fundamentos de Programación
Unidad 10 6
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>
int 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>
int 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";
};//del if
};//del for
cout<<"\n\n\n\n";
for (c=0;c<cp;c++)//muestro las personas que viven en esa calle
puts(personas[c]);