Buonasera a tutti, ho un problema con questo programma: dato un array di dimensioni sconosciute preso da file, individuare nella sequenza numeri palindromi. Premetto che il testo dato lo trovo un pò ambiguo perchè non capisco se si riferisce alla caselle dell'array (es. 1|2|2|1|)diciamo così o proprio ai numeri al suo interno. Inizialmente ho fatto il programma in base alla prima interpretazione e non ho avuto problemi, al contrario invece della seconda. Il problema in sostanza è che non mi stampa l'avviso che la casella considerata presenta un numero palindromo, se invece metto la condizione inversa allora mi stampa il messaggio che non sono palindromi tante volte quando lo è la lunghezza dell'array,nel mio caso l'array è lungo 12 e mi esce 12 volte l'avviso il numero non è palindromo. Allora per chiarire int numeri l'ho usato per contare quanti numeri ci sono nel file riguardo la questione stampare, buff è una copia di numeri,quella su cui vado a lavorare, rest invece l'ho usata per salvare il resto e inv l'ho usata per fare l'inverso del numero per vedere se coincide con buff
codice:
#include <iostream>#include <fstream>
#include <cstdlib>
using namespace std;
void leggi (int *vet,int dim);
void stampa(int *vet,int dim);
int main()
{
int buff,rest,inv;
int dim = 0;
int numeri;
fstream file;
file.open("dati.txt",ios::in);
if(!file)
cout << "Errore Apertura File";
while(file >> numeri)
{
buff = numeri;
dim++;
do{
rest=buff%10;
inv=(inv*10)+rest;
buff=buff/10;
}while(buff!=0);
if(inv!=numeri)
cout<<"Non Sono Palindromi\n";
}
cout << "La dimensione del vettore e': " << dim;
int *vet;
vet = new int[dim];
leggi(vet,dim);
cout << "Il vettore stampato e': ";
stampa(vet,dim);
cout << "\n\n";
cout << "\n\n";
system("pause");
}
void leggi (int *vet,int dim)
{
fstream file;
file.open("dati.txt",ios::in);
if(!file)
{
cout<<"File non trovato"<<endl;
}
for(int i=0;i<dim;i++)
{
file>>vet[i];
}
file.close();
cout << "\n\n";
}
void stampa(int *vet,int dim)
{
for(int i=0;i<dim;i++)
{
cout<< " | " << vet[i]<< " | ";
}
cout << "\n\n";
}