Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213

    [c]Problema confronto tra due stringhe

    Ho due funzioni: una mi chiede di inserire il nome del prodotto che voglio eliminare, l'altro mi prende questo nome, lo confronta con tutti quelli possibili e mi ritorna 1 o 0 a secondo se è stato trovato o no un nome uguale. Non mi da nessun errore in fase di compilazione ma quando lo eseguo e immetto i dati mi restituisce sempre 0.

    Ecco le due function:
    codice:
    /*Funzione per eliminare un prodotto dato il nome*/
    void EliminaProdotto (int mycar[50])
    {
        int i, j, contaprodotti = 0,risultato;
        char deleteprodotto[50];
    
        /*Inserisco la lista prodotti*/
        listaprodotti();
        printf("Codice\tNome\t\tDescrizione\t\t\tCosto\tSconto\n");
    
        /*Mostro la lista*/
        for(i=0;i<50;i++)
        {
            if((j = mycar[i]) != -1)
            {
                printf("%d\t%s\t%s\t%d\t%d\n", elemento[j].codice, elemento[j].nome, elemento[j].desc, elemento[j].costo, elemento[j].sconto);
                contaprodotti += 1;
            }
        }
    
        /*Se i prodotti nel carrello sono 0 mostro che non ci sono prodotti nel carrello*/
        if(contaprodotti == 0)
        {
            printf("Non ci sono prodotti nel carrello\n\n");
        }
    
        printf("Inserisci il nome del prodotto che vuoi eliminare dal carrello = ");
        scanf("%s", deleteprodotto);
        risultato = Delete(mycar, deleteprodotto);
        if(risultato != 0)
        {
            printf("Prodotto eliminato correttamente\n");
        } else {
            printf("Non esiste alcun prodotto con questo nome\n");
        }
    }
    
    int Delete (int mycar[50], char deleteprodotto[50])
    {
        int i,j,successo=0;
        listaprodotti();
    
        for(i=0;i<50 && successo==0;i++)
        {
            if((j = mycar[i]) == -1)
            {
                successo = 0;
            } else if(deleteprodotto == elemento[j].nome)
            {
                j = -1;
                successo = 1;
                return 1;
            }
        }
        return 0;
    }
    Dov'è l'errore? >.<

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Non puoi confrontare delle stringhe semplicemente in questo modo
    codice:
    if (deleteprodotto == elemento[j].nome);
    Devi utilizzare la funzione strcmp.

    Comunque j che variabile è?
    Potresti postare,per completezza,l'intero programma?

    Poi perchè dovresti controllare un ciclo in quel modo?(mi riferisco alla funzione Delete)...non basterebbe un semplice break?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    codice:
    j = mycar[i]
    E' il contenuto dell'array mycar di indice i...Mi serve per richiamare elemento giusto

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Quindi nell'array mycar di indice i...quante tipologie di elementi ci sono?

    Comunque inizia col modificare il confronto fra stringhe usando la strcmp().Se non risolvi posta l'intero programma

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.