Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Assegnare una stringa ad una matrice con una funzione!

    Salve ragazzi,
    sto impazzendo nel cercare di passare una matrice di caratteri ad una funzione, allo scopo di inserire in un listino prezzi ( la matrice) il nome di un prodotto e assegnare sempre tramite la funzione un certo prezzo ( se è libera). Posto il codice che ho scritto:


    #include <stdio.h>
    #include <stdlib.h>
    #define N 5
    #define M 100
    #include <ctype.h>
    #include<string.h>
    int insert_product(char warehouse[][M], int, float price[],char , float );
    void print_all(char , float , int , float , float);
    int main()
    {
    char warehouse[N][M],s[M];;
    int x,i;
    float price[N], newprice, max=0, avg=0;
    for(i=0;i<N;i++){
    price[i]=-2;
    }
    do{
    printf("Inserire 1 per inserire nuovi prodotti con relativo prezzo, 2 per stampare il listino, 3 per uscire dal programma:\n");
    scanf("%d", &x);
    if(x==1){
    for(i=0;i<N;i++){
    printf("Inserisci il nuovo prodotto:\n");
    scanf("%s", s);
    printf("Inserisci il suo prezzo:\n");
    scanf("%f", &newprice);
    printf("%d", insert_product(warehouse, i, price, s, newprice));
    }
    }
    else if(x==2){
    for(i=0; i<N; i++){
    print_all(warehouse, price, i, &avg, &max);
    printf("Massimo dei prezzi: %f, Media attuale %f", max, avg);
    }}
    }while (x!=3);
    return 0;
    }
    void print_all(char warehouse[][M], float price[], int n, float *avg, float *max){
    float media, mas=0, somma=0;
    int n=0;
    if (price[i]!=-2){
    printf("Prodotto %d: %s Prezzo: %f\n", i+1, warehouse[i][M], price[i]);
    if (price[i]>mas){
    mas = price[i];
    n++;
    somma= somma+ price[i];
    }
    }
    media= (float) somma/n;
    *avg=media;
    *max= mas;
    return 0;
    }
    int insert_product(char warehouse[][M], int i, float price[],char s, float y){
    int s=1, c=0;
    if (price[i]==-2){
    sprintf(warehouse[i][M], s);
    price[i]=y;
    }
    else if (price[i]>0){
    c++;
    }
    if (c==N){
    s=0;
    }
    return s;
    }




    da notare che il programma deve permettere di inserire questi prodotti con i relativi prezzi se la casella del vettore dei prezzi è libera (indicata con il -2) in caso contrario sarà occupata (deve passare oltre) se sono tutte occupate deve restituire un certo valore ( 0 ) così se l'inserimento ha avuto successo (1) e poi, una volta risolto il mio problema, dovrò anche controllare che il prodotto non sia già presente ( dovrà dare un 2 in caso).
    Avevo pensato di implementare così il mio ciclo, inserendo una stringa s[M] e poi passarla alla funzione per poi sprint nella mia warehouse[RIGA(i)][M] (listino prezzi). Ma mi dà un errore circa il passaggio della matrice nella funzione, probabilmente sbaglio sintassi ( non l'ho mai fatto ), qualcuno può darmi una mano? ( se c'è qualche errore poi di logica quello è ancora tutto da ricontrollare xD )
    Inoltre c'è una print_all function che restituisce una media e un valore massimo attuale del listino attuale e che deve stampare i prodotti e i prezzi presenti nel listino in quel momento! ( anche li stesso errore , sono bloccato). E' del tipo warning: passing argument 4 of insert_product makes integer from pointer without a cast... credo che cerchi di dirmi che la stringa che passo non possa essere passata in quel modo.. come faccio? lo dice anche per l'altra funzione per la WAREHOUSE ( argument 1)... Help!!
    Ultima modifica di Franzcecco; 09-12-2015 a 02:40

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Ma hai specifici errori?

    Usa i tag code per il codice nel forum.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Ma hai specifici errori?

    Usa i tag code per il codice nel forum.
    Credo di aver risolto, nel prototipo della funzione non ho dichiarato le parentesi per i char di vettori!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.