Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Numeri inseriti

    Ciao ragazzi!
    Vorrei il vostro aiuto nella risoluzione del seguente problema:
    Creare un algoritmo che consenta di richiedere numeri finché viene inserito il valore 0 (zero). Alla fine indichi quanti sono stati i numeri positivi e i numeri negativi inseriti.

    Sinceramente non ho l'idea come risolverlo, ci ho provato un sacco di volte e non so come farlo...ho usato la funzione "Math.random()" per generare i numeri. Poi non so più cosa aggiungere...non so altri metodi per risolvere il programma.
    Grazie a tutti in anticipo!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,281

    Re: Numeri inseriti

    Originariamente inviato da JanQuarius
    Creare un algoritmo che consenta di richiedere numeri finché viene inserito il valore 0 (zero). Alla fine indichi quanti sono stati i numeri positivi e i numeri negativi inseriti.

    Sinceramente non ho l'idea come risolverlo, ci ho provato un sacco di volte e non so come farlo...ho usato la funzione "Math.random()" per generare i numeri.
    Richiedere numeri ..... a chi? All'utente? Io lo immagini/suppongo e in tal caso random() non ti serve di certo!

    Devi leggere la rappresentazione di un intero dallo standard-input. E per questo puoi usare svariati approcci, uno abbastanza semplice è usare un java.util.Scanner con il suo nextInt().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ho provato in questo modo...

    codice:
    import java.util.Scanner;
    class Numero_Casuale
    {
    	public static void main (String[]args)
    	{
    		int numero;
    		int zero = 0;
    		int contatore;
    		String numeriPos;
    		String numeriNeg;
    	
    	//costruisco l'oggetto <sc> derivante dalla classe Scanner
    	Scanner sc = new Scanner(System.in);
    	
    	//chiedo,leggo, memorizzo ed elaboro i numeri ricevuti in input
    	do{
    	contatore++;
    	System.out.print("Inserire un numero intero:");
    	numero = sc.nextInt();
    	}while(numero == zero);
    	System.out.println();
    	}
    }
    Come si nota non ho finito l'algoritmo...non riesco a capire come funzione il ciclo(con il metodo do/while). Riesco a fermarlo, ma non so come elencare i numeri positivi e negativi? In che modo potrei farlo?

    p.s. Scusate per le mille domande, il problema è che a scuola ho un prof che insegna malissimo e da lui non capisco una mazza.

  4. #4
    Ti consiglio l'uso di oggetti StringBuffer al posto degli oggetti String, oppure puoi usare le liste (ArrayList oppure LinkedList) in modo da salvare tutti i numeri ricevuti dall'utente.

    Inoltre nel ciclo devi inserire un controllo per verificare se il numero appena inserito dall'utente è positivo o negativo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da JanQuarius
    p.s. Scusate per le mille domande, il problema è che a scuola ho un prof che insegna malissimo e da lui non capisco una mazza.
    Allora partiamo dal vedere cosa ti ha spiegato il professore.
    I cicli cosa non capisci? Come funzionano? La condizione di uscita? La differenza tra while e do while? Questi dubbi qualsiasi sito web di programmazione (anche su html.it) te li spiega a dovere. Il ciclo è sempre un qualcosa che ti consente di ripetere un gruppo di istruzioni, for, while o do-while indicano diversi modi di uscire dal ciclo.

    Per quanto riguarda la memorizzazione dei valori (o la stampa a video) la questione è abbastanza semplice: immagina di dover visualizzare dei cartelli con dei numeri. Il prof ti dice il numero, ma se tu non ti segni da qualche parte il numero, come li memorizzi??
    Ora puoi usare array di interi, liste, metterli su una stringa che poi stampi alla fine, usare stringbuffer o stringbuilder...il punto è, cosa ti ha spiegato il prof?

  6. #6
    Ecco gli algoritmi che abbiamo fatto in classe:

    PRIMO
    codice:
    import java.util.Scanner;
    
    class IndovinaNumero
    {
    	public static void main (String []args)
    	{
    		/*random e' una funzione della classe Math che mi restituisce
    		un numero double(decimale compreso tra 0 e 1)*/
    		int numeroPensato = (int) (100*Math.random ());
    		int numero;
    		/*per contare tutti i tentativi dell'utente
    		bisogna inserire una variabile intera, chiamata contatore*/
    		int contatore = 0;
    		boolean indovinato = false;
    	
    		//creo l'oggetto <t> che deriva dalla classe Scanner
    		Scanner t = new Scanner(System.in);
    			
    			//determino qual'è il numero
    			do 
    			{
    			contatore = contatore + 1;
    			System.out.print("Che numero ho pensato? ");
    			numero = t.nextInt();
    			if (numero == numeroPensato)
    			indovinato = true;
    			else
    			if (numero<numeroPensato)
    			System.out.println("Il numero che ho pensato e' maggiore del tuo");
    			else
    			System.out.println("Il numero che ho pensato e' minore del tuo");
    			}
    			while (!indovinato);
    			System.out.println("Bravo, hai indovinato in "+contatore+" tentativo(i)!");
    	}
    }


    SECONDO
    codice:
    /*
    <<<Inserire 10 numeri e calcolarne la somma>>>
    
    */
    
    import java.util.Scanner;
    
    class DieciNumeri
    {
    	public static void main (String []args)
    	{
    		//dichiaro le variabili
    		int numero;
    		int numeroFinale = 0;
    		int contatore = 0;
    
    
    		//costruisco l'oggetto <sc>, che deriva dalla classe "Scanner"
    		Scanner sc = new Scanner(System.in);
    	
    		//chiedo leggo e memorizzo i numeri in input
    		do
    		{
    		contatore ++;
    		System.out.print("Inserire un numero:");
    		numero = sc.nextInt();
    		numeroFinale = numeroFinale + numero;
    		}
    		while (contatore != 10);//La condizione che definisce la fine del processo
    		System.out.println("La somma dei numeri inseriti e': " + numeroFinale);
    	}
    }
    Dall'ultima lezione il prof a provato a spiegarci il concetto del ciclo, ma come si vede io non l'ho capito. Sinceramente, sento che mi manca qualche base di studio, ma non capisco quale, perchè il prof. insegna in un modo, ma richiede molto di più di quello che ci dice.

    Risposte alle domande di valia:
    -Del ciclo non ne capisco quasi niente se mi riferisco al linguaggio java.
    -Le condizioni d'uscita che abbiamo studiato sono:
    if/else,do/while. Il do o il while apparte non li abbiamo usati.

    Scusa, ma mi sa he non capisco proprio niente...
    Grazie!

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Non è che sei tra i tanti che pensa che teoria e pratica sono due mondi totalmente differenti? non è che pensi che puoi fare esercizi senza leggere la teoria su quello che fai? Mi sembra questo a dire il vero.

    Comunque pensare al concetto di ciclo applicato a java è già un errore: java è solo un linguaggio di programmazione, come può esserlo il C, C++, C#, Cobol e se inizio l'elenco non finisco. Significa che ti cambia la sintassi (cioè le regole che usi per scrivere le istruzioni), non il significato delle stesse. Un po' come parlare lingue straniere, se vuoi dire una cosa e ce l'hai chiara, devi solo applicare le regole della lingua scelta.

    Riguardo al ciclo, avrete un libro di testo o qualcosa, prova a leggerlo. Quando ho iniziato a scrivere codice (e tutt'ora lo faccio ancora) descrivo l'algoritmo in pseudo-linguaggio: cioè descrivo il tutto in italiano o comunque una lingua che mi è vicina.
    Ad esempio se devo inserire numeri finché uno non vale zero, teoricamente fai una roba del genere

    1. leggi numero
    2. numero == 0 --> finito
    3. numero != 0 --> non ho finito, butto l'elemento ad esempio in una stringa che stampo a video e vado avanti
    4. ripeto dal punto 1 fino a quando non incontro la condizione di uscita

    come vedi somiglia molto ad un ciclo che ti ho descritto in italiano, in java faresti una roba del genere:

    codice:
    int numero ; 
    do{ 
       System.out.print("Inserire un numero:");
       numero = sc.nextInt();
       System.out.print("Numero letto bla bla bla : " + numero);
    //qui puoi fare altre cose
    }while (numero != 0)
    questa stessa spiegazione la trovi in un libro di testo qualsiasi, come vedi non dipende dal professore.
    Abbina allo svolgimento degli esercizi la lettura del libro di testo che sicuramente avrete, in modo da capire quello che magari ti sei perso a lezione.
    Se ancora non ti è chiaro, chiedi spiegazioni al prof, sta a scuola per insegnarti a programmare

  8. #8
    Ciao valia!
    Ho letto attentamente tutto quello che hai scritto ed ho guardato il tuo esempio...
    Parlando del libro, lo leggo, sempre. Il problema è che il prof. ci dice delle cose che nel libro non si trovano. Dice che l'algoritmica non si insegna nel libro, ma si aquisisce con il tempo. E quando gli chiedo qualcosa lui mi dice perchè non ho studiato...ma, come faccio a studiare se nel libro non c'è quello che cerco...e quando lui spiega io non riesco a capire. Gli chiedo tante volte a rispiegarmi quello che non capisco , ma tutto finisce con le sue critiche su di me.
    Ok...scusa per il lamento, ma il prof. mi ha rotto seriamente.
    Ti ringrazio un'altra volta per la tua risposta...analizzo subito tutto quello che hai scritto...Ciao!

  9. #9
    Un'altra volta Ciao!

    Ci ho provato a coreggere l'esercizio che ho iniziato e mi è venuta una roba del genere:
    codice:
    //Importo la classe di utilità Scanner
    import java.util.Scanner;
    
    class Numero_Casuale
    {
    	public static void main (String[]args)
    	{
    		int numero;
    		String numeriPari;
    		String numeriDispari;
    	
    	//costruisco l'oggetto <sc> derivante dalla classe Scanner
    	Scanner sc = new Scanner(System.in);
    	
    	
    	do{
    		System.out.print("Inserire un numero intero:");
    			numero = sc.nextInt();
    	if (numero%2==0)
    			numeriPari = numero;
    	else
    			numeriDispari = numero;
    	
    	}while(numero != 0);
    		System.out.println("Ecco i numeri pari:" + numeroPari);
    		System.out.println("Ecco i numeri dispari:" + numeroDispari);
    	}
    }
    Il compilatore mi da 4 errori:

    Numero_Casuale.java:71: incompatible types
    found : int
    required: java.lang.String
    numeriPari = numero;
    ^
    Numero_Casuale.java:73: incompatible types
    found : int
    required: java.lang.String
    numeriDispari = numero;
    ^
    Numero_Casuale.java:76: cannot find symbol
    symbol : variable numeroPari
    location: class Numero_Casuale
    System.out.println("Ecco i numeri pari:" + numeroPari)
    ;
    ^
    Numero_Casuale.java:77: cannot find symbol
    symbol : variable numeroDispari
    location: class Numero_Casuale
    System.out.println("Ecco i numeri dispari:" + numeroDi
    spari);
    ^
    4 errors

    Come si vede i 4 errori sono sulla memorizzazione dei numeri nelle stringhe..proprio quello che mi ha sugerito valia...grazie per il ragionamento e scusami per l'ignoranza...non so come memorizzarle.Ho perso davvero abbastanza...
    Mi potreste dare un suggerimento su come risolvere questi 4 problemi?
    Grazie!

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    per esperienza il prof ha ragione sul fatto che più avanti vai più ti viene facile scrivere algoritmi, ma questo non prescinde il fatto che tu certe cose devi averle chiare. Ora se non sai cosa vuole dire ciclare, come puoi scrivere il programma? Se conosci poco il linguaggio come pensi di risolvere i problemi? So che stai imparando e tutto, ma per esperienza, spesso la pigrizia è di noi studenti (e te lo dice una che di maledizioni ai prof ne ha mandate).

    Detto questo: il fatto che ti memorizzi il numero sulla stringa non vuole affatto dire che puoi fare una roba del genere

    codice:
    int numero = 10;
    String num= numero;
    i tipi non coincidono e giustamente il compilatore ti mette in guardia.
    Ovviamente ti avrà spiegato il concetto di tipi primitivi ecc, sicuramente saprai che ogni tipo può contenere valori solo del tipo specificato: insomma in un int ci puoi mettere un numero, non una lettera. In una stringa ci puoi mettere una lettera, ma anche un numero e bada bene che qui numero si intende la rappresentazione letterale della stringa.

    Per funzionare dovresti dire al compilatore di interpretare quel valore come stringa, cioè fai
    codice:
    int numero = 10;
    String num= "" + numero;
    dove in questo caso hai la stringa "" e l'operatore "+" non fa altro che concatenare alla stringa vuota ("") la rappresentazione letterale del numero. Alla fine è come avere

    num = "10";

    non so se sono chiara.
    Detto questo mi scuso se ho esemplificato troppo il concetto di tipo, ma penso che è importante sia chiaro come assegnare valori e cosa rappresenta una var di un tipo

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.