frazioni in c

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
macisamuele
Prode Principiante
Messaggi: 162
Iscrizione: giovedì 8 marzo 2007, 22:44

frazioni in c

Messaggio 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
macisamuele
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: frazioni in c

Messaggio 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
:)
Andrea88
Prode Principiante
Messaggi: 156
Iscrizione: mercoledì 1 novembre 2006, 17:46

Re: frazioni in c

Messaggio 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 XD) e fai un banale printf("%d/%d",numeratore,denominatore) .. spero sia stato di aiuto ..
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: frazioni in c

Messaggio 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
Avatar utente
macisamuele
Prode Principiante
Messaggi: 162
Iscrizione: giovedì 8 marzo 2007, 22:44

Re: frazioni in c

Messaggio da macisamuele »

cioè???
macisamuele
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: frazioni in c

Messaggio 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  :'(


;D
Avatar utente
macisamuele
Prode Principiante
Messaggi: 162
Iscrizione: giovedì 8 marzo 2007, 22:44

Re: frazioni in c

Messaggio 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???
macisamuele
Andrea88
Prode Principiante
Messaggi: 156
Iscrizione: mercoledì 1 novembre 2006, 17:46

Re: frazioni in c

Messaggio 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 ;)
Avatar utente
macisamuele
Prode Principiante
Messaggi: 162
Iscrizione: giovedì 8 marzo 2007, 22:44

Re: frazioni in c

Messaggio da macisamuele »

si ok...ma come faccio a contare i numeri dopo la virgola???
macisamuele
Andrea88
Prode Principiante
Messaggi: 156
Iscrizione: mercoledì 1 novembre 2006, 17:46

Re: frazioni in c

Messaggio da Andrea88 »

Moltiplichi per 10 fin qnd non diventa un intero e conti qnt volte hai moltiplicato ...
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: frazioni in c

Messaggio 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);



}
Avatar utente
macisamuele
Prode Principiante
Messaggi: 162
Iscrizione: giovedì 8 marzo 2007, 22:44

Re: frazioni in c

Messaggio 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
macisamuele
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: frazioni in c

Messaggio 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$ 
Avatar utente
macisamuele
Prode Principiante
Messaggi: 162
Iscrizione: giovedì 8 marzo 2007, 22:44

Re: frazioni in c

Messaggio 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
macisamuele
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: frazioni in c

Messaggio da danilo84 »

ah ok  ;D
Avatar utente
macisamuele
Prode Principiante
Messaggi: 162
Iscrizione: giovedì 8 marzo 2007, 22:44

Re: frazioni in c

Messaggio 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???
macisamuele
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: frazioni in c

Messaggio da danilo84 »

Se vuoi ti posto il codice per ridurre le frazioni  ;D
Avatar utente
macisamuele
Prode Principiante
Messaggi: 162
Iscrizione: giovedì 8 marzo 2007, 22:44

Re: frazioni in c

Messaggio 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!
macisamuele
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: frazioni in c

Messaggio 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:

Codice: Seleziona tutto

while(x>0)
    //codice
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

Codice: Seleziona tutto

do {
  //codice
}while(x>0);
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.
Andrea88
Prode Principiante
Messaggi: 156
Iscrizione: mercoledì 1 novembre 2006, 17:46

Re: frazioni in c

Messaggio 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
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti