ciao a tutti, scusate avrei un favore da chiedervi...
mi sono incasinato in un programma che sembrava riuscissi a fare ma poi nell'utilizzo di funzioni mi sono perso e non riesco a venirne fuori! non so come impostare delle funzioni quando queste diventano un po complicate.. avrei bisogno di qualcuno che ha voglia di farmi vedere come devo farle e magari mi spieghi anche il perchè!
qui di seguito copio il testo del programma:
Si scriva un programma in grado di gestire un listino prezzi, ovvero deve
gestire un elenco di prodotti e i loro relativi prezzi in €. Il programma
utilizza su una matrice di caratteri chiamata prodotti di dimensione
NxM e un vettore di numeri decimali chiamato price di dimensione N.
Nel vettore price, il valore -2 indica linea libera, -1 indica che la linea
contiene un prodotto valido a cui non è stato ancora attribuito un prezzo.
All’avvio del programma, il vettore price è totalmente inizializzato a -2.
Il programma deve permettere all'utente di invocare tramite menu le
seguenti operazioni per manipolare il listino:
a. insert_product: è una funzione che permette di includere un nuovo
prodotto (il nome del prodotto deve essere di max M-1 caratteri) nel
listino; restituisce il valore 1 se il prodotto non era ancora presente, 0
se già inserito in precedenza; il prezzo associato al nuovo prodotto è -1
int insert_product(char products[][M], float price[], int n, char new_product[]);
b. print_all: è una funzione che permette di visualizzare a video il
contenuto del listino. Inoltre, la funzione restituisce 2 valori: il prezzo
medio ed il prezzo massimo
void print_all(char products[][M], float price[], int n, float *avg, float *max);
c. update_product: è una funzione che permette di aggiornare il prezzo
di uno specifico prodotto; restituisce 1 se l’aggiornamento è avvenuto
con successo, 0 se il prodotto non esiste.
int update_product(char products[][M], float price[], int n, char product[], int new_price);
d. remove_product: è una funzione che permette di rimuovere un
prodotto dal listino; restituisce 1 se la rimozione è avvenuto con
successo, 0 se il prodotto non esiste; la funzione deve impostare il
valore -2 nel vettore prezzi in corrispondenza dell’elemento rimosso
int remove_product(char products[][M], float price[], int n, char old_product[]);
come vedete mette già il prototipo delle funzioni ma poi non ho proprio idea di come farle perchè funzionino sempre!
se vi interessa qua ho già un inizio di programma che avevo impostato.. fin quando mi sono perso nella prima definizione della funzione!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
#define M 50
int inserire_prodotto(char prodotti[][M], float prezzi[], int n, char nuovo_prodotto[]);
void stampa_tutto(char products[][M], float prezzi[], int n, float *media, float *prezzo_max);
int main()
{
char prodotti[N][M], uscita;
float prezzi[N];
int menu, i, ripetizione, nprodotti, condizione;
ripetizione=0;
nprodotti=-1;
char nuovo_prodotto[M-1];
for(i=0; i<N; i++) {
prezzi[i]=-2;
}
printf("listino prezzi personale:\n\n");
do {
printf("\npremere:");
printf("\n1--> inserire nuovo prodotto");
printf("\n2--> stampare prodotti e relativi prezzi acquisiti");
printf("\n3--> aggiornare prezzo prodotto");
printf("\n4--> eliminare prodotto");
printf("\n5--> uscire dal programma\n");
scanf("%d%*c", &menu);
switch(menu) {
case 1: { nprodotti++;
if(nprodotti>=N) {
printf("\n Raggiunto Numero massimo di elementi consentiti");
}
printf("\n inserire nuovo prodotto:");
scanf("%s", nuovo_prodotto);
condizione=inserire_prodotto(prodotti[nprodotti][M], prezzi[nprodotti], nprodotti, nuovo_prodotto[M-1]);
if(condizione==1) {
printf("\n inserimento completato");
}
else
printf("inserimento prodotto non possibile!\nNOME GIA' PRESENTE!");
break;
}
case 2: {
break;
}
case 3: {
break;
}
case 4: {
break;
}
case 5: {
printf("\n\nSEI SICURO DI VOLER USCIRE?");
printf("\nper uscire premi invio!");
scanf("%c", &uscita);
if(uscita=='\n')
return 0;
}
default: {
printf("\nERRORE digitazione nel menù\n");
break;
}
}
}
while (ripetizione!=1);
return 0;
}
int inserire_prodotto(char prodotti[][M], float prezzi[], int n, char nuovo_prodotto[]) {
int i=0;
printf("\ninserisci nuovo prodotto:");
scanf("%s", nuovo_prodotto);
for(i=0; i<N; i++) {
if(strcmp(prodotti[i], nuovo_prodotto)==0) {
strcpy(prodotti[i], nuovo_prodotto);
prezzi[i]=-1;
}
else {
}
}
}