Difficoltà con esercizio c++

di Anonimizzato21817 il
30 risposte

30 Risposte - Pagina 2

  • Ho trovato una piccola ottimizzazione per il codice: Dici che va bene?O esiste un ulteriore ottimizzazione.
    
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    int main()
    {
        int n;    
        int nprec;   
        bool stato= false;  
        cout<<"Inserisci una sequenza di numeri\n";
    
        while(n!=0)
        {
            nprec=num;
           cin>>n;
           if (nprec >0 && n <0) 
             stato = true ;
        }
        if(stato=true)
            cout<<"OK\n";
        else
            cout<<"NO\n";
    
        system("pause");
        return 0;
    }
    
  • Quel codice è completamente sbagliato alche che ottimizzazione ...

    Intanto non si scrive

    if(stato=true)

    ma

    if(stato==true)

    e poi num e nprec non assumono alcun valore.

    Lascia stare e studia bene il codice precedente.
  • No scusami , al posto di nprec=num volevo mettere nprec=n.Ho pensato che questa forma del codice più breve risparmiasse un pò di potenza di esecuzione.
  • Secondo me così funziona meglio e non c'è bisogno di fare 2 if
    
    cout<<"Inserisci una serie di numeri, scrivi 0 se vuoi interromperti!\n";
    	cin>>n;
    	//il primo inseriscilo fuori dal ciclo così se == 0 è come se uscisse, altrimenti puoi
    	//fare subito il confronto evitando di stampare ok oppure no alla prima iterazione!
    	while(n!=0){
    		num_prec=n;
    		cin>>n;
    		
    		if((n>0 && num_prec<0) || (n<0 && num_prec>0)){
    			cout<<"\nOk\n";
    		}else{
    			cout<<"\nNo\n";
    		}
    		
    	};
    	
  • Grazie mille per il consoglio
  • Consiglio
  • No ..
  • Perchè no?
  • Non hai capito ancora che il controllo lo devi fare alla fine della sequenze di input e non dentro al ciclo dove ancora la sequenza non è conclusa?

    Almeno per la parte del NO.
  • Io l'avevo fatto così senza interrompere il ciclo quando viene stampato ok, ma anche come l'ho fatto io si può interrompere quando viene stampato ok, certo le condizioni del while sarebbero un po' più astruse, ma in complessivo come l'avevi pensato tu è effettivamente più semplice!
  • H già non ho fatto caso al fatto che i controlli erano dentro il while, anche perchè il codice non era ben indentato.
  • olegfresi ha scritto:


    H già non ho fatto caso al fatto che i controlli erano dentro il while, anche perchè il codice non era ben indentato.
    Quindi? Non va bene
  • Cosa non va bene? La parte del ciclo? Se ti riferisci a quella no.
  • Hai letto e capito cosa ti ho scritto? Te l'ho detto perché non va ... sembra certe volte che tu non riesca a comprendere le spiegazioni...

    Ti ho detto che la if con l'else non può stare all'interno del ciclo... ti è chiaro? La pazienza va bene ma c'è un limite...
  • Si questo l'ho capito qual'è il problema?
Devi accedere o registrarti per scrivere nel forum
30 risposte