Problema senza array

di il
34 risposte

Problema senza array

Ciao!
Sto cercando di fare un problema, ma non riesco a trovare il modo di farlo senza l'utilizzo di un array.
Il problema è il seguente:
Su un insieme di articoli di cui sono dati il nome e il prezzo, viene applicato il 10% di sconto.
L'input dei dati termina quando, alla richiesta del programma “Nome prodotto” viene inserito
“Stop”. Calcolare la somma dei prezzi, lo sconto totale e l'importo finale. Il programma alla fine
stampa i tre valori calcolati. Attenzione: non usare array!


Il mio problema sta nel fatto che quando viene inserito "STOP", il ciclo dell'inserimento dei Nomi dei vari prodotti cessi.

Con gli array avrei usato la funzione strcmp, ma senza non so proprio come fare.

Grazie mille!

34 Risposte

  • Re: Problema senza array

    Devi usare sempre la funzione strcmp. Quando si indica che non devi usare array non ci si riferisce alla stringa necessaria per il nome del prodotto ma ad un array di stringhe per i nomi e per i prezzi.
  • Re: Problema senza array

    Avevo chiesto al professore, e mi ha detto che non dovevo usare gli array, in qualsiasi caso. Con gli array sarei in grado di farlo ma senza proprio non riesco.
  • Re: Problema senza array

    Secondo me intendeva array di stringhe e interi.

    Cioè non così

    char nome[30][50];
    int prezzo[30];

    ma

    char nome[50];
    int prezzo;

    Se poi parliamo di C++ puoi usare le stringhe

    string nome;
    int prezzo;
  • Re: Problema senza array

    Oppure intendeva che anziché usare un array esplicito per il nome devi usare un puntatore che poi allochi dinamicamente (alla fine è comunque un array, ma è un po' più nascosto e non gli devi assegnare a priori una lunghezza). Ma non so se avete studiato questi argomenti.
  • Re: Problema senza array

    Aveva proprio detto che non dovevo usare gli array, neanche per le variabili di tipo char. Non so neanche se sia possibile
  • Re: Problema senza array

    Anche perché per confrontare i caratteri in input uno ad uno dovresti usare un vettore costante tipo

    char *fine = "Stop";

    oppure una serie di if (o uno switch) con un contatore per confrontare i singoli caratteri

    S
    t
    o
    p
    \n

    Se è un esercizio fatto in questo modo, è stupido.
  • Re: Problema senza array

    ... e anche in fase di stampa non potresti in teoria fare printf("Nome prodotto:")...
  • Re: Problema senza array

    candaluar ha scritto:


    ... e anche in fase di stampa non potresti in teoria fare printf("Nome prodotto:")...
    La stampa dei nomi dei prodotti non è richiesta, quindi posso utilizzare lo stesso char che cambia sempre ogni volta immesso un altro nome.
  • Re: Problema senza array

    oregon ha scritto:


    Anche perché per confrontare i caratteri in input uno ad uno dovresti usare un vettore costante tipo

    char *fine = "Stop";

    oppure una serie di if (o uno switch) con un contatore per confrontare i singoli caratteri

    S
    t
    o
    p
    \n

    Se è un esercizio fatto in questo modo, è stupido.
    Mi è nuovo, come faccio a confrontare la prima lettera del nome del prodotto che inserisco che sia S? devo usare sempre strcmp?
  • Re: Problema senza array

    No, dovrai usare un char e una if

    if (c=='S') ....
  • Re: Problema senza array

    Se sei in c++, puoi usare la classe string.
    altrimenti, al 100% intendeva non usare un array di stringhe (quindi matrice di char, come detto da oregon, non puoi usare char nomi[10][50] ma devi usare char nomi[10], che ti permette di salvare una sola stringa).
    ergo, il tuo programma si baserà sostanzialmente solo sui sommatori.
    
    char nome[10]; // nome del prodotto
    const char* endValue = "Stop";
    double totPrezzi = 0, totSconto = 0, totCosto = 0; // sommatori
    
    do
    {
    	fgets(nome, sizeof(nome), stdin); // legge il nome del prodotto
    	
    	if (strcmp(nome, endValue) != 0)
    	{
    		double tmpPrezzo; // prezzo del prodotto appena inserito
    		double tmpPrezzoScont; // prezzo del prodotto con lo sconto applicato
    		scanf("%f", tmpPrezzo);
    		
    		totPrezzi += tmpPrezzo; // totale dei prezzi inseriti finora
    		tmpPrezzoScont = tmpPrezzo - tmpPrezzo * 10 / 100;
    		totSconto += (tmpPrezzo * 10 / 100); 
    		totCosto += tmpPrezzoScont;
    	}
    } while (strcmp(nome, endValue) != 0);
    alla fine effettuerai la stampa dei 3 sommatori.

    credo sia impossibile che il tuo prof. ti abbia impedito di usare le stringhe: sarebbe un esercizio totalmente inutile, inoltre si coglie che la traccia è volta a farti ragionare utilizzando appunto questi sommatori, non a farti smadonnare nel cercare di leggere carattere per carattere.
  • Re: Problema senza array

  • Re: Problema senza array

    oregon ha scritto:


    No, dovrai usare un char e una if

    if (c=='S') ....
    Grazie! Anche se ho lasciato perdere questa via, perchè come hai detto prima risulterebbe abbastanza stupido. Grazie mille!
  • Re: Problema senza array

    justin99 ha scritto:


    Credo che il prof si sia sbagliato
    Avevi scritto

    Avevo chiesto al professore, e mi ha detto che non dovevo usare gli array, in qualsiasi caso.

    quindi o non vi siete capiti e abbiamo perso tempo, o non ci siamo capiti e abbiamo perso tempo ...
Devi accedere o registrarti per scrivere nel forum
34 risposte