oregon ha scritto:
Avranno dimenticato le due costanti ma le puoi aggiungere tu all'inizio ... su non è difficile.
Cosa rappresentano NS e N?
Quali valori puoi usare per le due costanti?
NS dovrebbe essere il numero di caratteri massimo che può avere la stringa, N non lo so.
Ho assegnato sia ad NS che ad N 10 come costante, in poche parole ho modificato così l'inizio del programma:
#include <iostream>
using namespace std;
const int NS=10;
const int N=10;
typedef char stringa[NS];
Ma quando provo a compilare mi esce il seguente errore:
41 29 [Error] 'strcmp' was not declared in this scope
Quindi pensando sia la mancanza della libreria cstring ho aggiunto:
#include <cstring>
Ma dopo tale aggiunta mi da il seguente errore di compilazione:
42 29 [Error] cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '2' to 'int strcmp(const char*, const char*)'
E qui non so veramente quale sia il problema.
oregon ha scritto:
P.S. quando devi riportare gli errori non copiare schermate ma semplicemente copia incolla il primo messaggio d'errore.
Grazie dell'avviso, non lo farò più in futuro.
Codice NON funzionante (ma con aggiunta delle modifiche fatte sopra):
/*Agenda telefonica costruita con array di record*/
#include <iostream>
#include <cstring>
using namespace std;
const int NS=10;
const int N=10;
typedef char stringa[NS];
typedef struct miaAnag{
stringa nome;
stringa cell;
stringa phone;
} Anagrafe;
typedef Anagrafe Elenco[N];
void inzializza(int &r)
{r=0;
}
void inserisci (Elenco E, int& r, Anagrafe elem)
{ E[r++]=elem;
}
void stampaRecord(Anagrafe a)
{ cout<<"*********Informazioni di ****************";
cout<<a.nome<<"*********************\n";
cout<<"cellulare: "<<a.cell<<"\n";
cout<<"telefino fisso: "<<a.phone<<"\n";
}
void stampaElenco(Elenco E, int r)
{ cout<<"*********stampa agendina ****************";
for (int i=0; i<r;i++){
stampaRecord(E[i]);
}
}
void cerca(Elenco E, int r, string nome)
{ bool trovato=false;
int i=0;
while(!trovato && i < r)
{ if(strcmp(E[i].nome, nome)==0)
{ trovato=true;
stampaRecord(E[i]);
}i++;}
if(!trovato){
cout<<"\n "<<nome;
cout<<"******** non presente";
}
}
int main (){
Elenco agendina;
int riemp;
bool esci=false;
int scelta;
Anagrafe a;
stringa nome;
inzializza(riemp);
while (!esci) {
system("clear");
cout<<"********AGENDINA***************\n";
cout<<"1. per inserire\n";
cout<<"2. per stampare tutta l'agenda\n";
cout<<"3. per stampare un telefono\n";
cout<<"4. oer uscire\n";
cin>>scelta;
if (scelta==1) {
cout<<"inserire nome\n";
cin>>a.nome;
cout<<"inserire cell\n";
cin>>a.cell;
cout<<"inserire fisso\n";
cin>>a.phone;
inserisci(agendina, riemp, a);
} else if (scelta==2) {
stampaElenco(agendina, riemp);
system("sleep(10)");
} else if (scelta==3) {
cout<<"chi vuoi cercare??\n";
cin>>nome;
cerca(agendina, riemp, nome);
cout<<"un tasto per proseguire\n";
cin>>scelta;
} else if (scelta==4) esci=true;
}
return 0;
}