Un vettore di interi contiene la rappresentazione, cifra per cifra, di un intero: il posto 0
contiene la cifra più significativa, i posto 1 la seconda cifra più significativa e così via... .
Una variabile intera, poi, indica il numero di cifre utili del vettore; una seconda variabile
intera, invece, contiene il numero intero rappresentato nel vettore (in forma “compatta”).
a. Descrivere una struttura/classe idonea a rappresentare quanto sopra.
b. Scrivere una porzione di codice che consenta di caricare da tastiera il vettore di cui
sopra. Il vettore dovrà essere creato dinamicamente di una lunghezza idonea a
contenere le cifre del numero. I valori in ingresso, inoltre, dovranno essere
controllati tramite la funzione guarda (prototipo: int guarda(char)): la funzione
prende in ingresso un carattere e restituisce il numero corrispondente se il carattere
è una cifra (0,1,2,3,...9), -1 altrimenti.
c. Descrivere l’algoritmo che trasforma l’intero in forma compatta.
d. Facoltativo: mettere a punto la funzione guarda.
pensavo di fare in questo modo
- Codice:
#include <iostream>
#include <cstring>
using namespace std;
struct numero{
int* punt;
int dimensione;
int valore;
};
int guarda(char a){
int l;
char b[10]={'0','1','2','3','4','5','6','7','8','9'};
if(strcmp(a,b) == 0) l=a;
return a;
}
int main(){
numero es;
cout<<"inserire dimensione"<<endl;
cin>>es.dimensione;
es.punt=new int[es.dimensione];
for(unsigned int i=0; i<es.dimensione; i++){
int p;
cout<<"carica il vettore"<<endl;
cin>>p;
if(guarda(p) != -1){
es.punt[i]=p;
}else{
continue;
}
}
for(unsigned int i=0; i<es.dimensione; i++){
cout<<es.punt[i]<<endl;
}
return 0;
}
ma non mi permette di confrontare b ed a (ovvero mi da come errore la riga
if(strcmp(a,b) == 0) l=a;
). come posso modificare?oltretutto per il punto c non ho proprio idee. non ho neanche capito cosa dovrebbe fare. come posso fare?