frazioni in c
- macisamuele
- Prode Principiante
- Messaggi: 162
- Iscrizione: giovedì 8 marzo 2007, 22:44
frazioni in c
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
macisamuele
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: frazioni in c
Secondo me non esiste ..
dovresti fartela ..
Poi dovrà tornare una stringa tipo ("1/5") oppure una copia di numeri interi ( nominatore e denominatore )
ciao

dovresti fartela ..
Poi dovrà tornare una stringa tipo ("1/5") oppure una copia di numeri interi ( nominatore e denominatore )
ciao
Re: frazioni in c
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 ..
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: frazioni in c
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
Es.: Intera: 5 Decimale 49
La parte decimale ha 2 cifre (quindi aggiungi 2 zeri), e fai cosi:
549=(5.49*100) / 100
- macisamuele
- Prode Principiante
- Messaggi: 162
- Iscrizione: giovedì 8 marzo 2007, 22:44
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: frazioni in c
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 :'(

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 :'(
- macisamuele
- Prode Principiante
- Messaggi: 162
- Iscrizione: giovedì 8 marzo 2007, 22:44
Re: frazioni in c
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???
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???
macisamuele
Re: frazioni in c
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
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
- macisamuele
- Prode Principiante
- Messaggi: 162
- Iscrizione: giovedì 8 marzo 2007, 22:44
Re: frazioni in c
Moltiplichi per 10 fin qnd non diventa un intero e conti qnt volte hai moltiplicato ...
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: frazioni in c
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);
}- macisamuele
- Prode Principiante
- Messaggi: 162
- Iscrizione: giovedì 8 marzo 2007, 22:44
Re: frazioni in c
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
macisamuele
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: frazioni in c
cosa c'è che nn va?
questo è il mio output:
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$
- macisamuele
- Prode Principiante
- Messaggi: 162
- Iscrizione: giovedì 8 marzo 2007, 22:44
Re: frazioni in c
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
ok??? grazie comunque
macisamuele
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: frazioni in c
ah ok 
- macisamuele
- Prode Principiante
- Messaggi: 162
- Iscrizione: giovedì 8 marzo 2007, 22:44
Re: frazioni in c
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???
macisamuele
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: frazioni in c
Se vuoi ti posto il codice per ridurre le frazioni 
- macisamuele
- Prode Principiante
- Messaggi: 162
- Iscrizione: giovedì 8 marzo 2007, 22:44
Re: frazioni in c
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!
macisamuele
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: frazioni in c
Parentesi, li metti il while e non il do-while, altrimenti il conteggio ti viene sballato se metti il denominatore di una cifra
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.
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 while ripete il ciclo fino a quando la condizione è vera, ma potrebbe anche non entrare mai nel ciclo.
Se tu scrivi:
Codice: Seleziona tutto
while(x>0)
//codice
Codice: Seleziona tutto
do {
//codice
}while(x>0);
Re: frazioni in c
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
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti