Oppure

Loading
06/12/06 18:05
deserto
Sapete dirmi dove ho sbagliato???
Quando faccio la ricerca nn va:
Mi dice sempre che il libro nn è stato trovato.

#include <iostream.h>
#include <stdio.h>
#include <conio.h>

struct biblio
{char code[3];};

biblio teca[10];


void main()
{int i,n;
 char codric[3];
 char trovato;

 // ********* Caricamento *********
 clrscr();
 cout <<"Numero libri da registrare: ";
 cin >> n;
 for (i=0; i<n; i++)
		{cout <<"\n\n";
		 cout <<"Codice libro: ";
		 cin >> (teca[i ].code);
		}

//**** ricerca ****
cout << "Inserisci il codice del libro da ricercare: ";
 cin >> codric;
 trovato= 'f';
 i=0;
 do
 {if (codric == teca[i ].code)
     {cout << "trovato";
      trovato = 't';}
  i++;} while (i<n && trovato=='f');
 if (trovato == 'f')
    {cout << "Il libro non e' stato trovato";}

 getch();
}

Ultima modifica effettuata da pierotofy 07/12/06 4:14
aaa
07/12/06 4:12
pierotofy
Ecco che succede ad insegnare il Pascal a scuola... :asd:

Scherzo.

A parte il fatto che mi sembra bizzarro utilizzare un array di char per contenere un codice ID (suppongo numerico, se così non fosse allora usare i char è ok), oltre all'usare una variabile char per un valore booleano (vero o falso). Per indicare vero o falso in c++ la prossima volta ti consiglio di usare:

bool trovato = true;
if (trovato){
 // ...
}


Comunque il problema è qui:

// ...
 i=0;
do
{[b]if (codric == teca[i ].code)[/b]
{cout << "trovato"; 
// ...


Facendo il confronto tra codric e teca[i ].code, tu non confronti tutti e 3 elementi dell'array, bensì solamente il primo elemento (questo perchè entrambi sono puntatori al primo elemento dell'array). Per risolvere puoi usare la funzione C ANSI:

if (strcmp(codric,teca[i ].code) == 0)


Definita in <string.h>

Oppure ancora più elegantemente modificare il programma definendo codric e teca[i ].code variabili di tipo string, sfruttando la potenza della classe string del c++. In questo modo l'istruzione come l'hai scritta tu andrebbe bene, perchè la classe string del c++ ha l'operatore di uguaglianza overloadato per gestire i confronti.
Ultima modifica effettuata da pierotofy 07/12/06 4:13
Il mio blog: piero.dev
07/12/06 15:39
deserto
grazie mille..:k:..colpa del Pascal e del prof che nn spiega.:D
aaa