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

    Confronto tra una singola stringa e quella di una matrice.(#C)

    Salve ragazzi!
    Ho una domanda per voi.. spero mi possiate aiutare!
    Scrivendo un programma mi si è presentato il problema di dovere confrontare una singola stringa[M] e quella di una matrice[N][M].
    Penso di dovere utilizzare la funzione strcmp ma non so indicare la stringa facente parte della matrice.
    Passo i dati dal main ad un'altra funzione:
    codice:
    insert_product(char list_products[][M],float list_prices[],int n,int m,char new_product[],float price_new_product)                                |
    {                                                                                    | 
                                                                                         é necessaria? 
    ...
    
    if(strcmp(list_products[i][????],new_product[m])!=0)
                                          |  
                                          |
                                       devo precisarla? e se si come?
    }
    .....
    Vi ringrazio in anticipo!
    Ps. Sono alle prime armi perciò siate più chiari di me chiari per piacere xD.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Confronto tra una singola stringa e quella di una matrice.(#C)

    Semplicemente così

    if(strcmp(list_products[i], new_product)!=0)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Mi da errore.
    Ti posto l'intero programma sperando tu abbia il tempo di dargli un'occhiata.
    Si intende realizzare un programma che riempi o modifichi il listino di un supermercato o roba del genere.
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define N 20+1   /* Il nome del prodotto e' al massimo composto da 20 caratteri. */
    #define M 10+1     /* E' possibile inserire nel listino a massimo 10 prodotti */
    
    int insert_product(char list_products[][M],float list_prices[],int n,int m,char new_product[],
    float price_new_product);
    
    void print_all(char list_products[][M],float list_prices[],int n,float mean_of_prices,float max_price);
    
    int main()
    {
        char list_products[N][M],new_product[M];
        float list_prices[N];
        float price_new_product,max_price=0,mean_of_prices=0;
        int i,x,y;
        char c;
    
        /* Inizializzo il vettore relativo a prezzi a -2: listino prodotti vuoto. */
        for(i=0;i<N;i++) {
            list_prices[i]=-2; }
    
        /* Elenco delle possibili azioni. */
        printf("E' permesso all'utente svolgere tre diverse operazioni.\n");
        printf("1.Inserimento di un nuovo prodotto e relativo prezzo;\n");
        printf("2.stampa elenco dei prodotti e dei relativi prezzi;\n");
        printf("3.uscita dal programma.\n");
    
        printf("L'utente proceda con la scelta.\n");
        scanf("%d",&x);
    
        while(getchar() != '\n');  /* Svuoto il buffer da tastiera. */
    
        switch(x) {
    
        case 1:
    
            printf("Si digiti il nome del prodotto.\n");
    
            for(i=0;i<M;i++) {
                c=getchar();
                if(c=='\n') {
                    break; }
                else {
                new_product[i]=c; }
            }
            new_product[i]='\0';
    
            printf("Il prodotto che si vuole inserire nel listino e'\n>>");
            puts(new_product);
    
            printf("Si immetta il prezzo da assegnagli.\n");
            scanf("%f",&price_new_product);
            printf("Il prezzo scelto da attribuire al prodotto e' %.2f.\n",price_new_product);
    
            y = insert_product(list_products,list_prices,N,new_product,M,price_new_product);
    
            if(y==0)
                printf("Il prodotto e' gia' presente nel listino.\n");
    
            if(y==1)
                 printf("Il prodotto e' stato inserito nel listino.\n");
    
            if(y==2)
                 printf("Nel listino non vi sono più spazi disponibili.\n");
    
        case 2:
    
            printf("Si è scelto di spampare a video il listino dei prodotti e dei relativi prezzi.\n");
            print_all(list_products,list_prices,N,mean_of_prices,max_price);
    
        case 3:
    
            printf("Si e' scelto di chiudere il programma.\n");
            exit(0);
    
        default:
            printf("Operazione non prevista.\n");
        }
    
    
    return 0;
    }
    
    insert_product(char list_products[][M],float list_prices[],int n,int m,char new_product[],float price_new_product)
    {
        int i,j;
        int x;
        int empty_space;
    
        for(j=0;j<n;j++) {
    
            if(list_prices[j]==-2) {
                    empty_space=1; }
            else {
                empty_space=0; }
        }
    
                if(empty_space==1) {
                printf("Nel listino vi sono spazi disponibili per l'inserimento.\n");
    
                    for(i=0;i<n;i++) {
    
                        if(strcmp(list_products[i],new_product)==0) {
                            return 0; }
    
                        if(strcmp(list_products[i],new_product)!=0) {
                            for(i=0;i<n;i++) {
                                if(list_prices[i]==-2) {
                                    list_prices[i]=price_new_product;
                                    strcpy(list_products[i],new_product); }
                            }
                        return 1;
                        }
    
                   }
            }
            else{
               return 2; }
    
    
    }
    
    print_all(char list_products[][M],float list_prices[],int n,float *mean_of_prices,float *max_price)
    {
        int i;
    
        for(i=0;i<n;i++) {
            if(list_prices[i]!=0) {
                printf("Prodotto: %s | Prezzo: %.2f",list_products[i],list_prices[i]);
            }
        }
    
    
    }

  4. #4

    Moderazione

    Benvenuto sul forum! Ti ricordo che il codice va specificato tra tag [CODE] ... [/CODE], altrimenti perde l'indentazione.

    Inoltre, scrivere "mi da errore" non vuol dire niente... specifica che errore ottieni e su che linea, in modo da non costringere chi ti sta aiutando a salvare il programma e compilarlo per darti una mano.

    Per i tag CODE correggo io, in futuro imposta correttamente la discussione fin da subito; nel frattempo ti consiglio di dare un'occhiata al regolamento.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    In ogni caso, venendo al tuo codice, compilandolo ottengo i seguenti errori:
    codice:
    13862334.cpp: In function ‘int main()’:
    13862334.cpp:58:87: error: invalid conversion from ‘char*’ to ‘int’ [-fpermissive]
    13862334.cpp:8:5: error:   initializing argument 4 of ‘int insert_product(char (*)[11], float*, int, int, char*, float)’ [-fpermissive]
    13862334.cpp:58:87: error: invalid conversion from ‘int’ to ‘char*’ [-fpermissive]
    13862334.cpp:8:5: error:   initializing argument 5 of ‘int insert_product(char (*)[11], float*, int, int, char*, float)’ [-fpermissive]
    13862334.cpp: At global scope:
    13862334.cpp:87:114: error: ISO C++ forbids declaration of ‘insert_product’ with no type [-fpermissive]
    13862334.cpp:126:99: error: ISO C++ forbids declaration of ‘print_all’ with no type [-fpermissive]
    mi paiono tutti piuttosto chiari (almeno, rispetto alla media dei messaggi di un compilatore C++ ):
    • gli errori relativi alla riga 58 indicano semplicemente che stai sbagliando a passare i parametri alla insert_product, confronta quello che stai passando con il prototipo dichiarato all'inizio...
    • gli ultimi due errori indicano che, al momento di definire le funzioni insert_product e print_all, non hai specificato il tipo restituito (rispettivamente int e void, come da prototipi).
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.