Buonasera, ho delle difficoltà con questo programma, la cui funzione è quella di memorizzare e, all'occorrenza, modificare le informazioni sui dischi di musica venduti e sui clienti con tessera standard (ci sarebbero anche altri 2 tipi di tessere, ma per semplicità non le ho volute considerare). Preferisco postare il codice "a pezzi" e via via porre le opportune domande:
codice:
/* GESTIONE DEL MAGAZZINO DI DISCHI */
#include <stdio.h>
#include <stdlib.h>
#include <time.h> //serve per la funzione sleep ?
#include <string.h>
/* int main () contentente: switch e istruzioni per l'uso */
int main () {
int scelta;
printf ("**Benvenuto nel magazzino**\n selezionare una scelta:\n");
printf("\n1. visualizza prodotti");
printf("\n2. modifica prodotto");
printf("\n3. visualizza cliente");
printf("\n4. modifica dati cliente");
scanf ("%d", &scelta);
switch (scelta){
case '1': visualizza_prodotto();
break;
case '2': modifica_prodotto();
break;
case '3': visualizza_cliente();
break;
case '4': modifica_cliente();
break;
default: printf ("la scelta selezionata non esiste");
break;
}
system ("PAUSE");
return 0;
}
1) i numeri dello Switch vanno messi tra apici oppure no?
2) per rimandare alla funzione (es. modifica_prodotto) basta scriverla dopo i due punti ":" oppure bisogna scriverla per intero tra parentesi graffe dopo il nome della funzione ?
3) le parentesi tonde dopo il nome della funzione devono rimanere vuote o bisogna aggiungere qualcosa ?
void modifica_prodotto(){
printf ("inserisci il nuovo codice prodotto");
for (i=0; i<10;i++){scanf ("%d",t_magazzino.cod_prodotto);}
printf ("aggiorna la giacenza");
scanf ("%d", &t_magazzino.giacenza);
printf ("inserisci il nuovo prezzo");
scanf ("%f", &t_magazzino.prezzo);
printf ("aggiorna la descrizione");
for (i=0; i<40;i++){scanf ("%s", t_magazzino.descrizione);}
}
void visualizza_prodotto() { }
4)è corretto il modo in cui è stato selezionato il campo della struct ? (es. t_magazzino.cod_prodotto)
/* Struct DISCHI e CLIENTI */
typedef struct magazzino {
int cod_prodotto[10];
int giacenza;
float prezzo;
char descrizione[40];
}t_magazzino;
typedef struct clienti_standard {
int numero_tessera[10];
char citta[2];
char nome_cognome[20];
}t_clienti_standard;
\\) ecco le struct, non ho domande particolari, ne posto il codice solo per vostra utilità
/* creazione e utilizzo del FILE su cui archiviare i dati dei prodotti nel magazzino */
FILE *fp;
fp= fopen ("C:\Users\fisso\Desktop\UNI ING\UNI\INFORMATICA\negozio di dischi\magazzino.txt", "r+");
if (fp==null) { printf ("errore nell apertura del file");
sleep(2); //attendo 2 secondi prima di ripulire lo schermo
system("CLS"); //pulisco lo schermo
goto main; }
/* creazione e utilizzo del FILE su cui archiviare i dati dei clienti standard */
FILE *fp1;
fp1= fopen ("C:\Users\fisso\Desktop\UNI ING\UNI\INFORMATICA\negozio di dischi\clientistandard.txt", "r+");
if (fp1==null) { printf ("errore nell apertura del file");
sleep(2); //attendo 2 secondi prima di ripulire lo schermo
system("CLS"); //pulisco lo schermo
goto main; }
5)qui creo i file di testo su cui lavorare, i puntatori sono corretti ?
6) la funzione
goto main; è scritta correttamente? (so che generalmente si cerca di evitarla, però qui non sembra recare fastidio)
Adesso posto gli errori:
visualizza_prodotto' was not declared in this scope
'modifica_prodotto' was not declared in this scope
'visualizza_cliente' was not declared in this scope
'modifica_cliente' was not declared in this scope
'i' was not declared in this scope (ovvio, non ho dichiarato int i; prima di utilizzarla nel ciclo for)
't_magazzino' was not declared in this scope (proposta: potrei evitare di usare typedef prima delle struct?)
'fp' does not name a type
expected unqualified-id before 'if'
'fp1' does not name a type
expected unqualified-id before 'if'
Scusate la prolissità, ma ho cercato di essere quanto più chiaro possibile. Aspetto le vostre risposte!