PDA

View Full Version : Problema con le struct


francescosalvaggio
13-11-2006, 09:30
expected primary-expression before '.' token

/*Catena di anelli*/
#include <iostream>
#include <cstdlib>
#include <conio.h>

using namespace std;

struct anello
{
bool tipo;
/*true = ferro - false = rame*/
bool catena[1000];
};

const int maxrame = 5;

anello carica_catena(const int ramemassimo, int num, anello catena[1000])
{
for(int i=0; i<num; i++)
{
anello.catena[i] = false;

}
}

int main()
{
char scelta;
bool flag = false, tipo;
int n = 0;

do
{
system("cls");
cout << " I ) Inizializza catena vuota." << endl;
cout << " A ) Aggiungi anello." << endl;
cout << " E ) Elimina anello." << endl;
cout << " S ) Stampa della catena." << endl;
cout << " ..::Any key fot exit::.." << endl;
cin >> scelta;
switch(scelta)
{
case 'I':
cout << "Numero di anelli vuoi caricare:";
cin >> n;
carica_catena(maxrame,n,catena);
break;
case 'A':
break;
case 'E':
break;
case 'S':
break;
default:
flag = true;
}
}
while(flag != true);
getch();
return 0;
}


Ho scritto questo codice ma mi da un errore alla riga 21
del tipo : 21 expected primary-expression before '.' token
ed alla riga 46 `catena' undeclared (first use this function)
come lo posso risolvere.

francescosalvaggio
13-11-2006, 09:51
Per chi non l'avesse riconsciuto è c++ nessuno può darmi una mano ???
Non capisco cosa vuol dire l'errore alla riga 20 expected primary-expression before '.' token

andbin
13-11-2006, 10:16
C'è un po' di confusione (credo):
anello carica_catena(const int ramemassimo, int num, anello catena[1000])
{
for(int i=0; i<num; i++)
{
anello.catena[i] = false;Allora: anello è la struct, quindi non puoi fare anello.<qualcosa>. Il parametro passato è un array di 1000 elementi di tipo anello, quindi dovresti fare catena[i].<qualcosa>. Ma dentro la struct hai 'catena' che è un array di 1000 bool .... quindi non è ben chiaro quello che vuoi fare. :stordita:

francescosalvaggio
13-11-2006, 10:30
#include <iostream>
#include <cstdlib>
#include <conio.h>

using namespace std;

struct anello
{
bool tipo;
/*true = ferro - false = rame*/
};

const int maxrame = 5;

void carica_catena(const int ramemassimo, int num, anello catena[1000])
{
for(int i=0; i<num; i++)
{
anello.catena[i] = 20;
cout << anello.catena[i];
}
}


int main()
{
anello catena[1000];
char scelta;
bool flag = false, materiale;
int n = 0, pos = 0, sceglitipo;

do
{
system("cls");
cout << " I ) Inizializza catena vuota." << endl;
cout << " A ) Aggiungi anello." << endl;
cout << " E ) Elimina anello." << endl;
cout << " S ) Stampa della catena." << endl;
cout << " ..::Any key fot exit::.." << endl;
cin >> scelta;
switch(scelta)
{
case 'I':
cout << "Numero di anelli vuoi caricare: ";
cin >> n;
carica_catena(maxrame,n,catena);
break;
case 'A':
break;
case 'E':
break;
case 'S':
break;
default:
flag = true;
}
}
while(flag != true);
getch();
return 0;
}


ho cambiato in questo modo ma mi da sempre il solito errore dentro la funzione carica catena.

andbin
13-11-2006, 10:48
void carica_catena(const int ramemassimo, int num, anello catena[1000])
{
for(int i=0; i<num; i++)
{
anello.catena[i] = 20;
cout << anello.catena[i];
}
}catena[i].tipo = <un bool>;

francescosalvaggio
13-11-2006, 11:04
Grazie ora funziona. ma non è che così facendo perdo la logica delle struct e trasformo il programma in una grande tabella? Forse mi sbaglio

andbin
13-11-2006, 11:14
Grazie ora funziona. ma non è che così facendo perdo la logica delle struct e trasformo il programma in una grande tabella? Forse mi sbaglioDipende da cosa devi fare di preciso .... nell'ultimo tuo codice nella struct anello hai solo un bool tipo. A quel punto basta fare un array di bool:
bool catena[1000]