ciclo random

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
glprobot1
Prode Principiante
Messaggi: 44
Iscrizione: sabato 26 marzo 2016, 16:17
Desktop: 14.4
Distribuzione: 14.4
Sesso: Maschile

ciclo random

Messaggio da glprobot1 »

Dove ho sbagliato che non riesco a capire????

Codice: Seleziona tutto

import java.util.*;
import java.math.*;

public class CicloEs19 {

	public static void main(String[] args) {
	
		/*Si hanno a disposizione tre premi identici da assegnare in un gruppo di dieci finalisti, ai quali
		 * sono stati associati i numeri da 1 a 10. Scrivere un programma che scelga in modo casuale i numerici
		 * dei tre finalisti che riceveranno un premio. si faccia attenzione a non sorteggiare lo stesso numero
		 * più volte. per esempio, l'estrazione dei finalisti 3, 6, 2 sarebbe valida, ma quella di 3, 3, 11 no
		 * perchè il finalista numero 3 compare due volte e inoltre 11 non è un numero valido per un finalista.
		 * si può semplicemente utilizzare la seguente riga di codice per generare un numero casuale tra 1 a 10
		 * 
		 * int num = (int) (Math.random() * 10) + 1;
		 * */
		
		/*È un po' "contorto". Si può fare in modo più semplice e lineare. Il primo (a) è banale, 
		 * l'estrazione è diretta. Il secondo (b), fai un ciclo while finché il valore estratto è uguale ad a. 
		 * Il terzo idem semplicemente che continui a ciclare se il valore estratto è uguale ad a O b.*/
		
		double num = 1 , a = 0, b = 0, c = 0;
		
		
		System.out.println("Si hanno a disposizione tre premi identici in un gruppo di 10 finalisti: ");
		System.out.println("Ogni finalista devono avere tre premi differenti.");
		
		
	/*	for(int i = 0; i <= 10; i++){
			num = (int) (Math.random() * 10) + 1;
			
				a = num;
			
			for(int y = 0; y < 10; y++){
				num = (int) (Math.random() * 10) + 1;
				
				b = num;
			}
			
			for(int z = 0; z < 10; z++){
				num = (int) (Math.random() * 10) + 1;
				c = num;
			}
			
		} */
		
		
		a =  (int) (Math.random() * 10) + 1;
		
		do{
			b = (int) (Math.random() * 10) + 1;
			c = (int) (Math.random() * 10) + 1;
			
		}while((!(a != b)) || (!(c != b))); // a deve essere maggiore di b

		System.out.println("A:" + a + " B:" + b + " C:" + c);

		
		}	
		
	}




melfnt
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1312
Iscrizione: sabato 15 ottobre 2011, 22:25

Re: ciclo random

Messaggio da melfnt »

Codice: Seleziona tutto

while((!(a != b)) || (!(c != b)));
è un po' contorto, potrebbe essere riscritto così:

Codice: Seleziona tutto

while( a == b ||  c == b  );
Riesci ora a capire dove sbagli? Ovvero riesci a capire quando fra i tre numeri potrebbero essercene due uguali?
(;
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Bing [Bot] e 3 ospiti