Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA] Problemi con funzione % e col resto in generale

    Ciao a tutti
    Devo realizzare un programma che, senza l'ausilio della funzione %, calcoli il resto della divisione tra due interi.
    Ciò che avevo pensato era questo codice:

    codice:
    import java.util.Scanner;
    
    public class CalcoloResto {
    	public static void main(String[] args){
    		
                int q=0;
                int b=0;
                int r=0;
                Scanner tastiera = new Scanner(System.in);
    	
                System.out.println("Inserisci il dividendo");
                int a=tastiera.nextInt();
    
                do{
                    System.out.println("Inserisci il divisore");
    		b=tastiera.nextInt();
    	
    		if(b==0)
                        System.out.println("Inserisci nuovamente il valore del divisore, dev'essere un numero diverso da 0");
                    
                }while(b==0);
                      System.out.println("valore di b ok");
    
                do{
                    q=a/b;
                    r=a-q*b;
                   System.out.println(r);
                }while((r!=0)&&(r!=1)&&(r!=2));
    
                    System.out.println("Il resto e' : "+r);
                    System.out.println("Il resto calcolato con la funzione % e' : "+(a%b));
                }
            }
    Il problema è proprio il while: a che punto mi fermo? Esistono divisioni che diano un resto maggiore di 2 (come parte intera)?
    Ho provato ad inserire 345/123 e ottengo 99 anche col % !!!! Ma il resto non dovrebbe essere 1 circa?

    Aiutatemi vi pregooo !!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Penso che tu abbia avuto un attimo di cortocircuito

    345/123 = 2.8....

    Resto = 345-123*(ParteIntera(345/123)) = 345 - 123*2 = 99;
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Hihi hai ragione ! Ma quanto sono i****a ??
    Il problema è che...cosa scrivo nel while? Che condizione? Non capisco

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    suppongo che l'esercizio fosse per farvi usare il while, per cui, usare la divisione è barare

    Potresti riscrivere:

    codice:
    r = a;
    do {
      r = r - b; 
    }
    while (r => b);
    System.out.println("Resto = "+r);
    In questo modo avrai
    r = 345; //prima di entrare nel while
    r = 345 - 123; //primo giro nel ciclo while (quindi r = 222);
    r = 222 - 123; //secondo giro nel ciclo while (quind r = 99);

    Adesso r < 123, allora esci dal ciclo while e stampi il risultato. funziona?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Funziona perfettamente
    Grazie mille ! non avevo mai pensato a sottrarre il divisore al dividendo VVoVe:

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.