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

    [C/C++] Riduzione frazioni

    Ciao a tutti,

    avrei una domandina per voi. Sto scrivendo un programmino che esegua operazioni con i numeri razionali (a/b), solo che quando l'altro giorno ho testato il mio programma ed ho confrontato i risultati con la mia voyage (= calcolatrice molto costosa che fa di tutto ) mi sono accorto che non avevo pensato alla semplificazione :rollo: VVoVe: .
    Qualcuno sa darmi una qualche info (almeno x avere un idea) sulla riduzione di frazioni, oppure un qualche codice??

    Thx in anticipo
    Gnix
    http://www.ptrace.net

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ovvero?

  3. #3
    Ovvero?
    ..uhm.. non sono stato abbastanza chiaro.. :master: . Chiedevo se qualcuno di voi aveva una qualche informazione per capire come fare a semplificare una frazione ad esempio 40/30 in 4/3.
    http://www.ptrace.net

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Bhè... ad esempio, trovando MCD di numeratore e denominatore e dividendo entrambi per quel numero. Algoritmi per trovare MCD li trovi in rete
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Thx! Non ci avevo proprio pensato..
    http://www.ptrace.net

  6. #6
    Questo è un semplice codice che puoi adattare alle tue esigenze , che utilizza l'algoritmo euclideo .
    codice:
    #include <stdio.h>
    
    int getmcd(int,int);
    
    void main()
    {
    	int num,den,mcd;
    	/*valori di prova per il numeratore e il denominatore */
    	num=36;
    	den=39;
    	mcd=getmcd(num,den);
    	printf("%d/%d=",num,den);
    	num=num/mcd;
    	den=den/mcd;
    	printf("%d/%d\n",num,den);
    }
    
    int getmcd(int a,int b)
    {
    	int max,min,tmp;
    
    	max=(a>b) ? a : b;
    	if (max==a)
    		min=b;
    	else
    		min=a;
        while ((max%min)!=0)
    	{
    		max=max-min;
    		if (max<min)
    		{
    			tmp=max;
    			max=min;
    			min=tmp;
    		}
    		
    	}
    	return min;
    }

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 © 2024 vBulletin Solutions, Inc. All rights reserved.