PDA

View Full Version : [C++]Non riesco a trovare un errore


Gogeta ss4
17-09-2004, 15:30
Ecco il codice:



#include "stdafx.h"
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <iomanip.h>
#include <stdlib.h>

struct struttura_dipendente
{
char codice[5];
char nome[50];
char cognome[50];
float stipendio;
};

typedef struttura_dipendente dipendenti;

struct lista_dipendenti
{
dipendenti info;
struct lista_dipendenti *next;
};

typedef lista_dipendenti lista;


void inserisci(void);
void visualizza(void);
bool controllo_lista(void);

lista *punt_lista=NULL;
char cerca[5];

int main(int argc, char* argv[])
{
int scelta;
bool controllo;
do
{
cout <<setw (25) <<"\nMENU' PRINCIPALE";
cout <<setw (15) <<"\n1)Inserisci Dipendente";
cout <<setw (15) <<"\n2)Ricerca Dipendente";
cout <<setw (15) <<"\nUscita";
cout <<setw (25) <<"Scelta: ";
cin >>scelta;
switch (scelta)
{
case 1: inserisci();
break;
case 2: controllo=controllo_lista();
if(controllo==false)
cout <<"Non hai inserito nessun dipendente in lista";
else
visualizza();
break;
case 0: exit(EXIT_SUCCESS);
default: cout <<"Opzione Inesistente";
}
} while (scelta!=0);
return 0;
}

//Definizione delle funzioni

void inserisci ()
{
register lista *p;
system ("cls");
p=new lista;
cout <<setw (25) <<"\nIscrizione Nuovo Dipendente";
cout <<"\nInserisci il codice di riconoscimento del dipendente: ";
cin >>p->info.codice;
cin.ignore(80,'\n');
cout <<"\nInserisci il nome del dipendente: ";
cin.getline(p->info.nome,50);
cout <<"\nInserisci il cognome del dipendente: ";
cin.getline(p->info.cognome,50);
cout <<"\nInserisci lo stipendio del dipendente: ";
cin >>p->info.stipendio;
if(punt_lista==NULL)
{
p->next=NULL;
punt_lista=p;
}
else
{
p->next=punt_lista;
punt_lista=p;
}
}

void visualizza ()
{
bool trovato=false;
register lista *p;
system ("cls");
for(p=punt_lista;p!=NULL,trovato==false;p=p->next)
{
if(strcmp(cerca,p->info.codice)==0)
{
trovato=true;
cout <<setw (25) <<"\nDipendete Trovato!";
cout <<"\nNome: " <<p->info.nome;
cout <<"\nCognome: " <<p->info.cognome;
cout <<"\nStipendio: " <<p->info.stipendio;
}
}
if(trovato==false)
cout <<"Codice Inesistente";
}

bool controllo_lista()
{
if(punt_lista==NULL)
return false;
else
return true;
}



L'inserimento non mi da problemi, quando perņ faccio la visualizzazione mi si blocca alla strcmp della funzione, dove sbaglio??

ilsensine
17-09-2004, 15:40
Questo corregge l'access violation:

--- lista.cpp.org 2004-09-17 15:38:51.000000000 +0200
+++ lista.cpp 2004-09-17 15:42:37.000000000 +0200
@@ -94,7 +94,7 @@
bool trovato=false;
register lista *p;
system ("cls");
- for(p=punt_lista;p!=NULL,trovato==false;p=p->next)
+ for(p=punt_lista;p!=NULL && trovato==false;p=p->next)
{
if(strcmp(cerca,p->info.codice)==0)
{


Nota che la ricerca non puņ avere buon fine, se non metti qualcosa nella variabile "cerca" ;)

Gogeta ss4
17-09-2004, 15:45
LoL :D

Gogeta ss4
17-09-2004, 15:51
Adesso funzia tutto, senti nel main non mi vede le setw come mai ??

ilsensine
17-09-2004, 15:58
Boh io ho messo un bel
#define setw(x) ""
per compilarlo sul mio computer (con linux)

Non conosco quella funzione.

Gogeta ss4
17-09-2004, 16:03
in pratica dovrebbe spostare di 4 spazi verso destra e poi scrivere MENU' PRINCIPALE ma non lo fa, sai come fare ?

Gogeta ss4
17-09-2004, 16:13
messo apposto :sofico: :sofico: