PROGRAMMIAMO
C++ - Conversione minuscolo
Programma per la conversione da maiuscolo a minuscolo

Come esempio finale nella nostra trattazione sulle stringhe, consideriamo il seguente programma che acquisisce una stringa e la converte tutta in caratteri minuscoli usando una funzione minuscolo:

#include <cstdlib>
#include <iostream>
#include <string>
#include <ctype.h>

using namespace std;
void minuscolo(char stringa[]);

int main(int argc, char *argv[])
{
char frase[255];

cout<<"Inserisci una frase da convertire tutta in minuscolo:\n";
cin.getline(frase,255);

minuscolo(frase);

cout<<"La frase convertita in minuscolo e'\n";
cout<<frase<<"\n";

system("PAUSE");
return EXIT_SUCCESS;
}

void minuscolo(char stringa[])
{
int i;
for (i=0; stringa[i]!='\0';i++)
   if (isalpha(stringa[i]))
      stringa[i] = tolower(stringa[i]);
}


Osserviamo anzitutto il prototipo della funzione. Il nome della variabile seguito da parentesi quadre indica che si tratta di un vettore:

void minuscolo(char stringa[]);

Le parentesi quadre però non devono essere indicate nella chiamata alla funzione (vedi anche a questo proposito: passaggio di vettori a una funzione):

minuscolo(frase);

Notiamo ancora che la funzione minuscolo è di tipo void: infatti il passaggio di vettori a una funzione avviene sempre per argomento, cioè la funzione riceve il vettore originale (che può dunque modificare) e non una sua copia. Per questa ragione la funzione minuscolo non deve tornare nessun valore.

Consideriamo ora il ciclo all'interno della funzione:

for (i=0; stringa[i]!='\0';i++)
   if (isalpha(stringa[i]))
      stringa[i] = tolower(stringa[i]);

E' particolarmente significativa la condizione di prosecuzione del ciclo:

stringa[i]!='\0'

Questa condizione, sovente scritta in modo errato da generazioni di studenti (i quali spesso la trasformano in i != '\0', che è invece un errore) significa che il ciclo dev'essere proseguito finché non viene trovato il terminatore di stringa, cioè fino alla fine della stringa stessa.

 

 

link precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it