PDA

Visualizza la versione completa : [C++] Errori di sintassi in ciclo for


Fedegeek
24-01-2012, 23:02
Sto facendo un programma per console in c++ per un esercizio scolastico.
Sono andato in contro però a un problema,non riesco risolvere a questo errore
\es7.cpp(32): error C2059: errore di sintassi: 'for'
Qui c'è il codice:

#include <iostream>
#include <stdlib.h>
#include <string>
#include <sstream>

using namespace std;

struct indi {
string v;
int n;
string p;
} ind;
struct dip
{
string co;
string no;
string ru;
indi ind;
} d[500];
int n,i,sx,dx,k;
dip box;
string pro[500];
int main() {

do {
cout<<"quanti dipendenti ci sono?"<<endl;
cin>>n;
}
while (n < 0 );
system("pause");
}
for ( i=1; i<n; i++ ) {
cout<<"Cognome dipendente n "<<i<<endl;
cin>>d[i].co;
cout<<"Nome dipendente n "<<i<<endl;
cin>>d[i].no;
cout<<"Ruolo dipendente n "<<i<<endl;
cin>>d[i].ru;
cout<<"Via dipendente n "<<i<<endl;
cin>>d[i].ind.v;
cout<<"Numero civico dipendente n "<<i<<endl;
cin>>d[i].ind.n;
cout<<"Provincia dipendente n "<<i<<endl;
cin>>d[i].ind.p;
prov[i]=d[i].ind.p;
}
i=0;
k=n;
while (j<k)
{
j++;
for(i=0;i<k-1;i++);
{
if (pro[i]=pro[i+1])
{
for(i=0,i<n-1,i++);
{
pro[i]=pro[i+1];
k-1
}
}
}
}
while (j<n)
{
j++;
for(i=0;i<n-1;i++);
{
if (d.indi.p[i]>d.indi.p[i+1])
{
box=d[i];
d[i]=d[i+1];
d[i+1]=box;
}
}
}
for (j=0;j<k;j++)
{
cout>>"Dipendenti della provincia ">>pro[j];
for(i=0;i<n;i++)
{
if(d[i].ind.p=pro[j])
{
cout<<"Cognome dipendente n "<<d[i].co<<endl;
cout<<"Nome dipendente n "<<d[i].no<<endl;
cout<<"Ruolo dipendente n "<<d[i].ru<<endl;
cout<<"Via dipendente n "<<d[i].ind.v<<endl;
cout<<"Numero civico dipendente n "<<d[i].ind.n<<endl;
}
}
}
system("pause");
}
Qui invece i vari errori che mi dà:

1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C2059: errore di sintassi: 'for'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C2143: errore di sintassi: ')' mancante prima di ';'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C2143: errore di sintassi: ';' mancante prima di '<'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C4430: identificatore di tipo mancante, verrà utilizzato int. Nota: default-int non è più supportato in C++
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C2086: 'int i': ridefinizione
1> d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(20): vedere la dichiarazione di 'i'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C2143: errore di sintassi: ';' mancante prima di '++'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C4430: identificatore di tipo mancante, verrà utilizzato int. Nota: default-int non è più supportato in C++
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C2086: 'int i': ridefinizione
1> d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(20): vedere la dichiarazione di 'i'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C2059: errore di sintassi: ')'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C2143: errore di sintassi: ';' mancante prima di '{'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(32): error C2447: '{': intestazione di funzione mancante. Elenco formale di tipo obsoleto?
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(47): error C4430: identificatore di tipo mancante, verrà utilizzato int. Nota: default-int non è più supportato in C++
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(47): error C2086: 'int i': ridefinizione
1> d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(20): vedere la dichiarazione di 'i'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(48): error C4430: identificatore di tipo mancante, verrà utilizzato int. Nota: default-int non è più supportato in C++
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(48): error C2086: 'int k': ridefinizione
1> d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(20): vedere la dichiarazione di 'k'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(49): error C2059: errore di sintassi: 'while'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(50): error C2143: errore di sintassi: ';' mancante prima di '{'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(50): error C2447: '{': intestazione di funzione mancante. Elenco formale di tipo obsoleto?
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(64): error C2059: errore di sintassi: 'while'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(65): error C2143: errore di sintassi: ';' mancante prima di '{'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(65): error C2447: '{': intestazione di funzione mancante. Elenco formale di tipo obsoleto?
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C2059: errore di sintassi: 'for'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C2143: errore di sintassi: ')' mancante prima di ';'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C2143: errore di sintassi: ';' mancante prima di '<'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C4430: identificatore di tipo mancante, verrà utilizzato int. Nota: default-int non è più supportato in C++
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C2143: errore di sintassi: ';' mancante prima di '++'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C4430: identificatore di tipo mancante, verrà utilizzato int. Nota: default-int non è più supportato in C++
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C2086: 'int j': ridefinizione
1> d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): vedere la dichiarazione di 'j'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C2059: errore di sintassi: ')'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(78): error C2143: errore di sintassi: ';' mancante prima di '{'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(78): error C2447: '{': intestazione di funzione mancante. Elenco formale di tipo obsoleto?
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(92): error C4430: identificatore di tipo mancante, verrà utilizzato int. Nota: default-int non è più supportato in C++
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(92): error C2365: 'system': ridefinizione. La definizione precedente era 'funzione'
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdlib.h(520): vedere la dichiarazione di 'system'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(92): error C2440: 'inizializzazione': impossibile convertire da 'const char [6]' a 'int'
1> Non vi sono contesti in cui sia possibile eseguire questa conversione
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(93): error C2059: errore di sintassi: '}'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(93): error C2143: errore di sintassi: ';' mancante prima di '}'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(93): error C2059: errore di sintassi: '}'
1>
Utilizzo Microsoft Visual Studio 2010.
Vi ringrazio in anticipo per l'aiuto :)

shodan
24-01-2012, 23:09
for(i=0;i<k-1;i++); <-- ????
{
if (pro[i]=pro[i+1])
{
for(i=0 , i<n-1 , i++); <-- ???
{
pro[i]=pro[i+1];
k-1
}
}
}


P.S. Mettil il linguaggio nel titolo. E' obbligatorio.

MacApp
25-01-2012, 01:20
Originariamente inviato da Fedegeek


#include <iostream>
#include <stdlib.h>
#include <string>
#include <sstream>

using namespace std;

struct indi {
string v;
int n;
string p;
} ind;
struct dip
{
string co;
string no;
string ru;
indi ind;
} d[500];
int n,i,sx,dx,k;
dip box;
string pro[500];
int main() {

do {
cout<<"quanti dipendenti ci sono?"<<endl;
cin>>n;
}
while (n < 0 );
system("pause");
}
for ( i=1; i<n; i++ ) {
cout<<"Cognome dipendente n "<<i<<endl;



il "for" è fuori dal main.

Fedegeek
27-01-2012, 14:19
L'ho un po' messo a posto,scusate per l'errore stupido :dhò:
Però ora ho un errore con l'uso delle variabili string.
Questo è il codice


#include <iostream>
#include <stdlib.h>
#include <string>
#include <sstream>
using namespace std;

struct indi {
string v;
int n;
string p;
};
struct dip
{
string co;
string no;
string ru;
indi ind;
};

int main() {
int n,i,sx,dx,k,j;
dip box;
string pro[500];
dip d[500];
do {
cout<<"quanti dipendenti ci sono?"<<endl;
cin>>n;
}
while (n < 0 );
for ( i=1; i<n; i++ ) {
cout<<"Cognome dipendente n "<<i<<endl;
cin>>d[i].co;
cout<<"Nome dipendente n "<<i<<endl;
cin>>d[i].no;
cout<<"Ruolo dipendente n "<<i<<endl;
cin>>d[i].ru;
cout<<"Via dipendente n "<<i<<endl;
cin>>d[i].ind.v;
cout<<"Numero civico dipendente n "<<i<<endl;
cin>>d[i].ind.n;
cout<<"Provincia dipendente n "<<i<<endl;
cin>>d[i].ind.p;
pro[i]=d[i].ind.p;
}
i=0;
k=n;
while (j<k)
{
j++;
for(i=0;i<k-1;i++)
{
if (pro[i]==pro[i+1])
{
for(i=0;i<n-1;i++)
{
pro[i]=pro[i+1];
k=k-1;
}
}
}
}
while (j<n)
{
j++;
for(i=0;i<n-1;i++)
{
if (d[i].ind.p[i]>d[i].ind.p[i+1])
{
box=d[i];
d[i]=d[i+1];
d[i+1]=box;
}
}
}
for (j=0;j<k;j++)
{
cout>>"Dipendenti della provincia ">>pro[j];
for(i=0;i<n;i++)
{
if(d[i].ind.p==pro[j])
{
cout<<"Cognome dipendente n "<<d[i].co<<endl;
cout<<"Nome dipendente n "<<d[i].no<<endl;
cout<<"Ruolo dipendente n "<<d[i].ru<<endl;
cout<<"Via dipendente n "<<d[i].ind.v<<endl;
cout<<"Numero civico dipendente n "<<d[i].ind.n<<endl;
}
}
}
system("pause");
}

E questo è l'errore


1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)': impossibile dedurre un argomento di modello per 'std::basic_istream<_Elem,_Traits> &' da 'std::ostream'
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\string(458): vedere la dichiarazione di 'std::operator >>'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)': impossibile dedurre un argomento di modello per 'std::basic_istream<_Elem,_Traits> &' da 'std::ostream'
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\string(458): vedere la dichiarazione di 'std::operator >>'
1>d:\programmazione\cpp\ripasso\rip\ripasso\ripasso\ es7.cpp(77): error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)': impossibile dedurre un argomento di modello per 'std::basic_istream<_Elem,_Traits> &' da 'std::ostream'
E si ripete un sacco di volte :(

oregon
27-01-2012, 14:24
Per capire i problemi basta andare a leggere attentamente il numero di riga del primo errore (nel tuo caso la 77) che equivale alla

cout<<"Dipendenti della provincia "<<pro[j];

per accorgersi facilmente che deve essere

cout>>"Dipendenti della provincia ">>pro[j];

Fedegeek
27-01-2012, 15:51
Ci sono riuscito!Grazie a tutti per l'aiuto :)

Loading