Problema senza array

di il
34 risposte

34 Risposte - Pagina 2

  • Re: Problema senza array

    Comunque, nella mia ignoranza sul C++, pure la classe string usa i vettori.
  • Re: Problema senza array

    vbextreme ha scritto:


    comunque, nella mia ignoranza sul C++, pure la classe string usa i vettori.
    Ovviamente ... infatti non ha senso non usare i vettori ma usare le classi che usano i vettori ...
  • Re: Problema senza array

    vbextreme ha scritto:


    comunque, nella mia ignoranza sul C++, pure la classe string usa i vettori.
    certo, ma se in c++ ti chiedessi di fare un esercizio senza utilizzare gli array, non è specificato che non puoi usare la classe string.
  • Re: Problema senza array

    oregon ha scritto:


    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 ...
    Ho provato a fare l'esercizio come mi avevi consigliato e sono arrivato a questo punto:
    #include <stdio.h>
    
        char Nome;
        int i=0;
    	float prezzo,somma=0,sconto,prezzofinale;
    	void fine();
    	void prezzofra();
    	void NomeProdotto();
    	
    	int main(){
    	printf("BENVENUTO!\n Il programma calcola il 10% della spesa complessiva\n");
    	void NomeProdotto();
    }
    	
    		
    void NomeProdotto(){	
    		printf("Inserisci il nome del prodotto:");
    		scanf("%s",Nome);
    		
    		if(Nome=="S"){
    			if(Nome=="t"){
    				if(Nome=="o"){
    					if(Nome=="p"){
    						void fine();
    						
    					}else{
    						void prezzo();
    					}
    				}else{
    						void prezzo();
    					}
    			}else{
    						void prezzo();
    					}
    		}else{
    						void prezzo();
    					}
    				}
    				
    				
    void prezzofra(){
    	printf("\nInserisci il prezzo del prodotto:");
    	scanf("%f", prezzo);
    	somma+=prezzo;
    	i++;
    	void NomeProdotto();
    }
    
    void fine(){
    	sconto=somma/10;
    	prezzofinale=somma-sconto;
    	
    	printf("\n Prezzo finale: %f", prezzofinale);
    	printf("\nSconto applicato: %f", sconto);
    	printf("\n Prodotti acquistati: %d", i);
    	
    	system("PAUSE");
    	}
    Cos'è che sbaglio nei vari IF ?
  • Re: Problema senza array

    Tutto ...

    Se Nome è un char allora non devi usare %s ma %c nella scanf (ma sarebbe meglio usare la getchar) ...

    Le if in sequenza non hanno senso dato che la variabile può essere uguale ad S ma non sarà uguale alle altre lettere ovviamente. La logica è sbagliata, i controlli vanno fatti in un ciclo con un contatore. E il confronto va fatto con singoli apici 'S' ...

    Ma poi, non avevi detto che avevi scelto di usare i vettori di char (le stringhe) e non gli array? Non ci sto capendo più nulla ...
  • Re: Problema senza array

    oregon ha scritto:


    Tutto ...

    Se Nome è un char allora non devi usare %s ma %c nella scanf (ma sarebbe meglio usare la getchar) ...

    Le if in sequenza non hanno senso dato che la variabile può essere uguale ad S ma non sarà uguale alle altre lettere ovviamente. La logica è sbagliata, i controlli vanno fatti in un ciclo con un contatore. E il confronto va fatto con singoli apici 'S' ...

    Ma poi, non avevi detto che avevi scelto di usare i vettori di char (le stringhe) e non gli array? Non ci sto capendo più nulla ...

    Ahahah scusami, ho parlato con il prof e non voleva vedere nessun array. Non ho capito bene come controllare ogni singola lettera. Non so come far controllare ad esempio la seconda, terza ecc lettera del nome inserito e l'unico modo che conosco comporta l'uso di una stringa(anche se le avessi usate, avrei proceduto in altro modo e non a fare il controllo ad ogni singola lettera). Stavo pensando ad un ciclo for, ma non so proprio da dove iniziare
  • Re: Problema senza array

    Nessun array? comprese le stringhe?
    mi mancano le parole...

    comunque, una soluzione che mi viene in mente (molto, molto macchinosa, ma penso che sia il prof che si voglia complicare la vita, vorrei vederlo correggere questo compito) sarebbe prendere in input un carattere per volta finché l'utente non inserisce l'eof (ctrl+z su windows).
    ti salvi un contatore, finché questo non arriva a 4 controlli se il carattere appena inserito equivale a 's', 't', 'o', 'p'.
    esempio:
    char carattere;
    int counter = 0;
    bool first = false; // indica se il primo carattere è una s
    bool begin = false; // variabile che diventa true non appena viene inserito un carattere
    
    do
    {
    	printf("Inserisci il prossimo carattere da leggere: ");
    	fflush(stdin); // bruttissimo ma necessario per ripulire il buffer
    	scanf("%c", &carattere);
    	
    	if (begin == false && (carattere == 's' || carattere == 'S'))
    		first = true;
    		
    	begin = true;
    	
    		
    	if (first == true && (counter == 0 && (carattere == 's' || carattere == 'S')) || (counter == 1 && (carattere == 't' || carattere == 'T')) || (counter == 2 && (carattere == 'o' || carattere == 'O')) || (counter == 3 && (carattere == 'p' || carattere == 'P'))
    		++counter;
    	else
    		counter = 0;
    	
    } while (carattere != EOF && counter != 4);
    non so quanto sia corretto questo codice (è talmente illogico che ho fatto fatica pure a scriverlo)... provalo e dimmi...

    ma prova a chiedergli se quindi (dato che non vuole array) l'inserimento del codice del prodotto deve avvenire carattere per carattere... e dicci che cosa risponde...
    e tanto per curiosità, non hai provato a confrontarti con i tuoi compagni? loro come stanno andando avanti?
  • Re: Problema senza array

  • Re: Problema senza array

    Che vuol dire "inserire tutta la parola e non solo i caratteri"?

    Quello che dici non ha senso, avrai veramente capito male.
  • Re: Problema senza array

    oregon ha scritto:


    Che vuol dire "inserire tutta la parola e non solo i caratteri"?

    Quello che dici non ha senso, avrai veramente capito male.
    Essendo io ad un livello molto ma molto basso nella programmazione, non so cosa sia un counter, pensavo che dovessi inserire una lettera alla volta. Metà del codice che mi ha inviato Çlÿkÿ~,che ringrazio, non riesco sinceramente a capirlo. Pensavo fosse una cosa semplice ma a quanto pare non sembrerebbe così
  • Re: Problema senza array

    Questo che dici adesso contrasta con quanto hai detto prima.

    Una cosa è non comprendere un codice che ti è stato proposto, altro dire che non è quello che ti serve perché il professore vuole "inserire tutta la parola e non solo i caratteri".
  • Re: Problema senza array

    L'unica risposta sensata al problema è la sua impossibile implementazione.
    Non si può scrivere un programma senza vettori, la stessa memoria è un vettore.
    Per aggirare la sciocca domanda:
    
        uint64_t a,b,c,d,e,f,g,h,i,l,m,n,o,p,q,r,s,t;
        char* vettore= &t;
    
    quella è la dimostrazione che la memoria stessa è un vettore quindi non si può creare un programma senza usare i vettori.

    Quindi io eseguire l'esercizio usando i vettori solo ove necessari, quindi solo per prelevare e confrontare il nome.
  • Re: Problema senza array

    Il programma mi continua a crashare e non capisco dove sbaglio
    #include <stdio.h>
    #include <string.h>
    
        char Nome[10];
        char c='%';
        char Nome2[] = "Stop";
        int i=0;
       float prezzo,somma=0,sconto,prezzofinale;
       void fine();
       void NomeProdotto();
       
       int main(){
       printf("\t\t\tBENVENUTO!\n Il programma calcola il 10%c della spesa complessiva\n",c);
       NomeProdotto();
       return 0;
    }
       
          
    void NomeProdotto(){   
    do{
         printf("Inserisci il nome del prodotto:");
         fgets(Nome, sizeof(Nome), stdin);
         if (strcmp(Nome, Nome2) == 0){
         	fine();
         }else{
    	 printf("\nInserisci il prezzo del prodotto:");
            scanf("%f", prezzo);
       somma+=prezzo;
       i++;
    }
       } while (strcmp(Nome,Nome2) != 0);
       }
          
    
    void fine(){
       sconto=somma/10;
       prezzofinale=somma-sconto;
       
       printf("\n Prezzo finale: %f", prezzofinale);
       printf("\nSconto applicato: %f", sconto);
       printf("\n Prodotti acquistati: %d", i);
       }
    Qualcuno riesce a dirmi dove?
  • Re: Problema senza array

    Nella scanf "&prezzo" devi dargli il puntatore.
    Se vuoi visualizzare il carattere percentuale nella printf devevi fare
    
    printf("%%");
    
  • Re: Problema senza array

    vbextreme ha scritto:


    nella scanf "&prezzo" devi dargli il puntatore.
    Se vuoi visualizzare il carattere percentuale nella printf devevi fare
    
    printf("%%");
    
    Grazie mille!

    Ringrazio tutti per avermi aiuto! Grazie veramente di cuore!
Devi accedere o registrarti per scrivere nel forum
34 risposte