RICERCA DI UNA STRINGA IN UN RECORD

di il
4 risposte

RICERCA DI UNA STRINGA IN UN RECORD

SALVE RAGAZZI HO FATTO UN PROGRAMMA DOVE IN UN FILE HO LA LISTA DEI LIBRI PRESENTI IN UNA LIBRERIA,ADESSO VOGLIO VEDERE SE UN LIBRO è PRESENTE O MENO NELLA LIBRERIA...PERò METTENDO IL "FOR" SE NEL FILE HO 5 LIBRI MI ESCE :

LIBRO TROVATO
LIBRO NON TROVATO
LIBRO NON TROVATO
LIBRO NON TROVATO
LIBRO NON TROVATO

MI AIUTATE??
.h
#ifndef libreria_h
#define libreria_h
#define NS 256
#define NS 256
#define N 100
typedef char stringa [NS];
typedef char stringa [NS];
typedef struct {
stringa titolo;
stringa autore;
int numero;
int uscita;
}libri;
typedef libri libreria [N];
void leggilibreria (libreria l,int&);
void stampalibreria (libreria l,int);
int ricercauscita (libreria l,int,int);
void ricercalibro (libreria l,int,stringa);
#endif

.cpp
void ricercalibro (libreria l,int riemp,stringa libro){
cout<<"Quale libro vuoi cercare nella libreria?";
cin>>libro;
for (int i=0;i<riemp;i++){
if (strcmp(l.titolo,libro)==0){
cout<<"LIBRO TROVATO NELLA LIBRERIA\n";
cout<<"TITOLO:"<< l.titolo<<" AUTORE:"<< l.autore<<" QUANTITA':"<< l.numero<<" ANNO DI USCITA:"<< l.uscita<<endl;}
else
cout<<"LIBRO NON TROVATO \n";
}}

main.cpp
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <fstream>
#include "libreria.h"
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
libreria l;
stringa s1;
stringa s2;
stringa libro;
int i,riemp,uscita,ric,ric2;
leggilibreria (l,riemp);
stampalibreria (l,riemp);
ric=ricercauscita (l,riemp,uscita);
ricercalibro (l,riemp,libro);


return 0;
}

4 Risposte

  • Re: RICERCA DI UNA STRINGA IN UN RECORD

    Il problema è semplicemente di logica.

    Se tu cercassi un nome in un elenco telefonico, iniziando dal primo e continuando fino alla fine, cosa faresti una volta trovato il nome? Continueresti a cercare?

    E se non trovi il nome, lo dici ogni volta che c'è un nome diverso oppure lo dici solamente alla fine della ricerca, se non hai trovato da nessuna parte il nome?

    Pensa al problema, non al codice ...
  • Re: RICERCA DI UNA STRINGA IN UN RECORD

    Dovrei fare il for solo per controllare e poi nel mai metto il cout
  • Re: RICERCA DI UNA STRINGA IN UN RECORD

    Prova a fare le modifiche che ti vengono in mente ... ma segui questo consiglio ...
    ... il ciclo ti dovrà solo servire per impostare una variabile (a 0/1, falso/vero) che indicherà il risultato della ricerca. Solo in base al valore di questa variabile, fuori dal ciclo, visualizzerai una o l'altra frase ...
  • Re: RICERCA DI UNA STRINGA IN UN RECORD

    Oppure se vuoi conservare la posizione del libro, potresti fargli ritornare un int che:
    è uguale alla posizione se è presente nell'elenco
    -1 se nn è presente nell'elenco
Devi accedere o registrarti per scrivere nel forum
4 risposte