asjkl
04-01-2015, 21:27
Salve mi potete correggere questo esercizio, dato che non se è giusto??
/*Scrivere un programma C++ che, letta da input una sequenza di caratteri terminata dal tappo *
(ASTERISCO) individui le lettere dell’alfabeto inglese minuscole, per ciascuna di esse conti il numero di
occorrenze e stampi su standard output la lettera più frequente e il numero di volte che questa occorre. In
caso di parità la lettera da stampare è quella che viene prima secondo l’ordine alfabetico. Nel caso in cui la
sequenza non contenga lettere dell’alfabeto minuscole, stampare la parola VUOTA.
ATTENZIONE
Affinché il programma possa essere gestito correttamente dal valutatore automatico è necessario inviare
in stampa esclusivamente la lettera più frequente con il rispettivo numero di occorrenze, sulla stessa linea
e separati da uno spazio, oppure la parola VUOTA, senza aggiungere endl, altre spaziature, o stampe di
altro tipo.
ESEMPI:
Se la sequenza in input fosse a C Z a ) b b – H z * il programma dovrebbe stampare
a 2
Infatti, vi sono 2 occorrenze della lettera a, due occorrenze della lettera b e un’occorrenza della lettera z,
quindi le lettere più frequenti sono a e b ma deve essere stampata la a perché viene prima in ordine
alfabetico.
Se la sequenza in input fosse C C * il programma dovrebbe stampare
VUOTA*/
#include<iostream>
using namespace std;
const int n = 50;
int controllo(char [], char, int);
int main(){
char A[n]={};
char lettera;
char max;
int cont=0;
cin >> lettera;
max = lettera;
while(lettera != '*'){
if(lettera >= 'a' && lettera <= 'z'){
A[cont]=lettera;
cont++;
if(lettera < max)
max = lettera;
}
cin >> lettera;
}
unsigned contatore = controllo(A, max, cont);
if(contatore == 0)
cout<<"VUOTA";
else
if(contatore > 0)
cout<< max << " " << contatore;
return 0;
}
int controllo(char A[], char max, int cont){
int contatore=0;
for(int x=0; x<cont; x++){
if(A[x]== max)
contatore++;
}
return contatore;
}
/*Scrivere un programma C++ che, letta da input una sequenza di caratteri terminata dal tappo *
(ASTERISCO) individui le lettere dell’alfabeto inglese minuscole, per ciascuna di esse conti il numero di
occorrenze e stampi su standard output la lettera più frequente e il numero di volte che questa occorre. In
caso di parità la lettera da stampare è quella che viene prima secondo l’ordine alfabetico. Nel caso in cui la
sequenza non contenga lettere dell’alfabeto minuscole, stampare la parola VUOTA.
ATTENZIONE
Affinché il programma possa essere gestito correttamente dal valutatore automatico è necessario inviare
in stampa esclusivamente la lettera più frequente con il rispettivo numero di occorrenze, sulla stessa linea
e separati da uno spazio, oppure la parola VUOTA, senza aggiungere endl, altre spaziature, o stampe di
altro tipo.
ESEMPI:
Se la sequenza in input fosse a C Z a ) b b – H z * il programma dovrebbe stampare
a 2
Infatti, vi sono 2 occorrenze della lettera a, due occorrenze della lettera b e un’occorrenza della lettera z,
quindi le lettere più frequenti sono a e b ma deve essere stampata la a perché viene prima in ordine
alfabetico.
Se la sequenza in input fosse C C * il programma dovrebbe stampare
VUOTA*/
#include<iostream>
using namespace std;
const int n = 50;
int controllo(char [], char, int);
int main(){
char A[n]={};
char lettera;
char max;
int cont=0;
cin >> lettera;
max = lettera;
while(lettera != '*'){
if(lettera >= 'a' && lettera <= 'z'){
A[cont]=lettera;
cont++;
if(lettera < max)
max = lettera;
}
cin >> lettera;
}
unsigned contatore = controllo(A, max, cont);
if(contatore == 0)
cout<<"VUOTA";
else
if(contatore > 0)
cout<< max << " " << contatore;
return 0;
}
int controllo(char A[], char max, int cont){
int contatore=0;
for(int x=0; x<cont; x++){
if(A[x]== max)
contatore++;
}
return contatore;
}