Pagina 1 di 2
frazioni in c
Inviato: lunedì 21 maggio 2007, 14:42
da macisamuele
raga io ho scritto un programma di matrici ma comu risultato ad esempio mi esce 0.20...si sa ke esso equivale a 1/5 ma...esiste una funzione in grado di trasformarlo in frazione???se si mi aiutate???grazie
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 15:06
da difesaparcosempione
Secondo me non esiste ..
dovresti fartela ..
Poi dovrà tornare una stringa tipo ("1/5") oppure una copia di numeri interi ( nominatore e denominatore )
ciao

Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 15:42
da Andrea88
Non credo ci sia in quelle "base" .. cmq nn dovrebbe essere difficile fai una funzioni ke trova il denominatore e numeratore (c'era una formula matematica ma nn ho voglia di cercarla

) e fai un banale printf("%d/%d",numeratore,denominatore) .. spero sia stato di aiuto ..
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 16:27
da danilo84
Puoi fare cosi anche. Chidere in maniera distinta parte intera e decimale. In base alla lunghezza del numero decimale moltiplichi e dividi. Cioè:
Es.: Intera: 5 Decimale 49
La parte decimale ha 2 cifre (quindi aggiungi 2 zeri), e fai cosi:
549=(5.49*100) / 100
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 16:28
da macisamuele
cioè???
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 16:38
da danilo84
Cioè...in base al numero di cifre decimali moltiplichi.
Se hai 2 cifre decimali fai per 100, se ne hai 3 moltiplichi per 1000.
Il numeratore lo ottieni togliendo la virgola. Il denominatore è 10, 100, 1000...dipende dal numero delle cifre decimali.
Quindi 6.29 è uguale a 629/100
Spero di essere stato chiaro :'(

Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 16:40
da macisamuele
si ho capito ma...come potrei far fare tutto al programma???
in pratica io vorrei che mi uscisse come risultato direttamente la frazione...
praticamente tu hai qualke idea di come dovrei fare x far contare al compilatore i numeri dopo la virgola???
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 16:40
da Andrea88
Cmq dovrebbe esserci una funzioni ke ti "tiri fuori" la parte decimale .. per qll intera basta fare:
int parte_intera;
float numero_frazionario=35.3543;
parte_intera=numero_frazionario;
se fai csì tronca in automatico il numero float per farlo stare in un int

Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 16:41
da macisamuele
si ok...ma come faccio a contare i numeri dopo la virgola???
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 17:39
da Andrea88
Moltiplichi per 10 fin qnd non diventa un intero e conti qnt volte hai moltiplicato ...
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 20:25
da danilo84
Vedi se questo ti sta bene.
Codice: Seleziona tutto
#include <stdio.h>
main() {
int intero=0,decimale=0,numeratore=0,denominatore=1,i=0,cont=1,app=0;
printf("Inserire la parte intera: ");
scanf("%d",&intero);
printf("Inserire la parte decimale: ");
scanf("%d",&decimale);
app=decimale;
do {
app=app/10;
cont++;
}while(app>10);
for (i=0;i<cont;i++) {
intero*=10;
denominatore*=10;
}
numeratore=intero+decimale;
printf("\n\nLa frazione e': %d/%d\n",numeratore,denominatore);
}
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 22:48
da macisamuele
danilo a me il programma che hai scritto non mi funiziona bene...poi con calma cercherò di trovare 1 soluzione...se ci riesco ti farò sapere e in caso ti mando il programma ok???ciao
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 22:55
da danilo84
cosa c'è che nn va?
questo è il mio output:
Codice: Seleziona tutto
xlinux@xlinux:~/Programmazione$ ./fra
Inserire la parte intera: 455
Inserire la parte decimale: 987
La frazione e': 455987/1000
xlinux@xlinux:~/Programmazione$
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 23:00
da macisamuele
il tuo programma è buono...crea bene la frazione il fatto è solo che visto che non so cosa fare quando sono a casa mi voglio mettere anke a far semplificare la frazione....in modo che mi esca tipo 1/2...e roba simile e no 4/8....
ok??? grazie comunque
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 23:01
da danilo84
ah ok

Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 23:39
da macisamuele
danilo guarda ke riflettendo credo di aver trovato la soluzione per fare quello che dico io...prendendo spuntu dal programma che hai scritto tu!domani scrivo il programma per bene e poi lo posto ok???
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 23:45
da danilo84
Se vuoi ti posto il codice per ridurre le frazioni

Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 23:48
da macisamuele
no grazie comunque almeno mi diverto un pokino ok???magari xò mi potresti spiegare l'uso del do-while xkè non sono mai riuscito a capirlo!
Re: frazioni in c
Inviato: lunedì 21 maggio 2007, 23:57
da danilo84
Parentesi, li metti il while e non il do-while, altrimenti il conteggio ti viene sballato se metti il denominatore di una cifra
Codice: Seleziona tutto
int cont=0;
app=decimale;
while(app>10) {
app=app/10;
cont++;
}
for (i=0;i<cont+1;i++) {
intero*=10;
denominatore*=10;
}
Il do-while ripete, ALMENO una volta, il codice che ci scrivi dentro e cicla fino a quando la condizione è vera, altrimenti termina il ciclo.
il while ripete il ciclo fino a quando la condizione è vera, ma potrebbe anche non entrare mai nel ciclo.
Se tu scrivi:
entra nel ciclo solo se x è maggiore di 0 e ripeterà il ciclo solo se x sarà ancora maggiore di 0, se x diventa minore di 0 allora esce
entra nel ciclo sicuramente una volta. Dopo che ilcodice è stato eseguito una volta, controlla il valore della x. Se è vero, cioè x>0, ripete il ciclo, altrimenti esce.
Re: frazioni in c
Inviato: martedì 22 maggio 2007, 18:55
da Andrea88
Però è brutto chiedere prima la parte intera e poi la decimale .. sarebbe meglio chiedere solamente il numero decimale e poi lasciare il programma che estrapoli le due parti :P