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 {
}
}
}