COMPITO 2 PALINDROMI
#include<iostream>
#include<fstream>
#include<string>
#define MAX_SIZE 100
using namespace std;
struct coppie{
int numero;
int occorrenze;
};
bool is_palindromo(int n);
void carica_numeri(string percorso, coppie lista[], int &riemp);
int is_presente(int n, coppie lista[], int riemp);
void ordina_lista(coppie lista[], int riemp);
void stampa_lista(coppie lista[], int riemp);
int main(){
coppie lista[MAX_SIZE];
string percorso_file;
int riemp = 0;
percorso_file = "C:\\fondamenti\\compito2\\file.txt";
carica_numeri(percorso_file, lista, riemp);
if (riemp == -1){
system("PAUSE");
return -1;
}
ordina_lista(lista, riemp);
stampa_lista(lista, riemp);
system("PAUSE");
return 0;
}
bool is_palindromo(int n){
int a[20], riemp=0;
bool palindromo = true;
int i;
do{
a[riemp] = n % 10;
riemp++;
n /= 10;
} while (n != 0);
i = 0;
while (i < riemp/2 && palindromo){
if (a[i] != a[riemp - i - 1])
palindromo = false;
i++;
}
return palindromo;
}
void carica_numeri(string percorso, coppie lista[], int &riemp){
int n, index;
ifstream mioFile;
mioFile.open(percorso, ios::in);
if (!mioFile){
cout << "Errore nell'apertura!\n";
riemp = -1;
return;
}
while (!mioFile.eof()){
mioFile >> n;
if (is_palindromo(n)){
index = is_presente(n, lista, riemp);
if (index != -1)
lista[index].occorrenze++;
else{
lista[riemp].numero = n;
lista[riemp].occorrenze = 1;
riemp++;
}
}
}
mioFile.close();
}
int is_presente(int n, coppie lista[], int riemp){
bool presente = false;
int i = 0;
int posizione;
while (!presente && i < riemp){
if (lista[i].numero == n){
presente = true;
posizione = i;
}
i++;
}
if (!presente)
posizione = -1;
return posizione;
}
void ordina_lista(coppie lista[], int riemp){
int sw;
coppie temp;
do{
sw = 0;
for (int i = 0; i < riemp - 1; i++){
if (lista[i].occorrenze < lista[i + 1].occorrenze){
temp = lista[i];
lista[i] = lista[i + 1];
lista[i + 1] = temp;
sw++;
}
}
} while (sw > 0);
}
void stampa_lista(coppie lista[], int riemp){
for (int i = 0; i < riemp; i++){
cout << lista[i].numero << " compare " << lista[i].occorrenze << " volte.\n";
}
}
domenica 12 febbraio 2017
Iscriviti a:
Commenti sul post
(
Atom
)
Nessun commento :
Posta un commento