sábado, 23 de marzo de 2013

Más de C++ y tratamiento de cadenas



Ahora ya es cosa de coser y cantar. Los caracteres "<" y ">" que nos dan tanta guerra han sido sustituidos por "&lt" y "&gt" seguidos de punto y coma - ojo con poner el punto y coma, que te la arma -. Así podemos ya poner los programitas en texto para "copiar y pegar", algo que resulta cómodo para luego poder mejorarlos, porque todos son mejorables. Este es el programa del otro día que tiene que ver con cadenas. Un poco mejorado. En él se recurre a los benditos "goto" por los que siempre sentí simpatía, aunque ahora están poco menos que proscritos. Pero de hecho no los han retirado, por algo será. Atención al "cin.ignore(256,'\n')" para mí un verdadero descubrimiento, que nos libra del desagradable "resbalón" de pasar al siguiente campo a la hora de pedir datos.

#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
int main()
{
string nombre[20],direcc[20];
char resp;
int i=0,j,cuenta,T=5;
cout<<"¿Meter nombres o no, s/n: ";
cin>>resp;
if(resp=='n') goto lista;
cin.ignore(256,'\n');
cout<<"Para salir darle sin más al retorno de carro\n";
for(i=0;i<20;i++){
cout<<"Dame el nombre: ";
getline(cin,nombre[i]);
if(nombre[i]=="") break;
cout<<"Dame la dirección: ";
getline(cin,direcc[i]);
}
T=i;
goto imprimir;
//---------------
lista:
nombre[0]="Mario Hevia"; direcc[0]="Calle Mayor, 34";
nombre[1]="Juan Echevarría"; direcc[1]="Urbanización Las Lilas, 12";
nombre[2]="Onésimo Redondo"; direcc[2]="Calle Las Angustias, 134";
nombre[3]="Juan Echanove"; direcc[3]="Plaza de América, 56";
nombre[4]="Olegario Unzúe"; direcc[4]="Plaza de la Constitución, 23";
//---------------
imprimir:
cout<<endl;
cout<<"Nombre              Dirección\n";
cout<<"-----------------------------------------\n";
for(i=0;i<T;i++){
cuenta=0;
for(j=0;j<nombre[i].length();j++)
if(nombre[i][j]<0) cuenta++;
cout<<left<<setw(20+cuenta/2)<<nombre[i];
cout<<setw(30)<<direcc[i];
cout<<endl;
}
cout<<endl;
return 0;
}

No hay comentarios:

Publicar un comentario en la entrada