Salve, dovrei svolgere un progetto assegnatomi in università, il primo punto mi richiede di controllare se e' disponibile all'acquisto una determina rivista ricercandola per nome.
Bene non capisco cosa c'è che non va,mi dice sempre che la rivista non è disponbile.(perdonatemi se sarà un errore banale o grave ma sono alle prime armi con la programmazione)
Di seguito il programma in c:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int mediano;
struct progetto {
char titolo[30];
int codice;
float prezzo;
int scorta;
char genere[30];
char strumenti[50];
};
typedef struct progetto Riviste;
typedef enum {False,True} Logical;
Logical acquisto(char nome[],Riviste rivista[],int n);
void main()
{
char nome[20];
int n=10;
Riviste rivista[10]={
{"Relix",03,3.50,3,"jazz","tromba"},
{"RockSound",04,4.00,5,"rock","batteria,chitarra"},
{"Magnetic",05,4.00,5,"punk","batteria,chitarra,piano"},
{"WeRaveYou",06,5.00,0,"pop","batteria,chitarra"},
{"Attack",07,5.00,2,"pop","batteria,chitarra"},
{"RollingStone",12,6.00,0,"rock","batteria,chitarra,tromba"},
{"ESSEMagazine",15,10.00,10,"pop","piano"},
{"HipHopDX",23,3.00,0,"hip-hop","batteria,chitarra"},
{"FACT",01,12.00,10,"rock","batteria,chitarra,piano,tromba"},
{"CaliforniaRocker",00,20.00,0,"jazz","batteria,chitarra,piano,tromba"},
};
puts("inserire il nome della rivista");
gets(nome);
if (acquisto(nome,rivista,strlen(rivista[mediano].titolo))==True)
printf("la rivista %s e' disponibile all'acquisto il suo prezzo e' %2f",rivista[mediano].titolo, rivista[mediano].prezzo);
else
printf("la rivista %s non e' disponibile",nome);
}
Logical acquisto(char nome[],Riviste rivista[],int n)
{
if(n == 0)
return False;
mediano=(n-1)/2;
if(strcmp(nome,rivista[mediano].titolo)==0 && rivista[mediano].scorta>0)
return True;
else if(strcmp(nome,rivista[mediano].titolo)<0)
return acquisto(nome,rivista,mediano);
else
return acquisto(nome,rivista+mediano+1,
n-mediano-1);
}