Re: frazioni in c
Inviato: martedì 22 maggio 2007, 19:04
andrea88 tu x caso hai quelke idea a proposito???cioè hai qualke idea su come separere da un numero la parte intera e quella decimale???
Il forum della comunità italiana di Ubuntu.
https://forum.ubuntu-it.org/
Codice: Seleziona tutto
#include <stdio.h>
main() {
char numero[20];
int j=0;
for (j=0;j<20;j++)
numero[j]='\0';
scanf("%s",&numero);
int intero=0, decimale=0,i;
int flag=1;
for (i=0;i<20;i++) {
if ((numero[i]==',')||(numero[i]=='.'))
flag=0;
if (flag==1)
intero = (intero * 10) + (numero[i] - '0');
else if (numero[i] >= '0' && numero[i] <='9')
decimale = (decimale * 10) + (numero[i] - '0');
}
printf("NUMERO: %d %d",intero,decimale);
}
mmh... mi sa che qualcosa ti manca. Che vuol dire contare i numeri dopo la virgola?macisamuele ha scritto: si ok...ma come faccio a contare i numeri dopo la virgola???
Codice: Seleziona tutto
#include <stdio.h>
main() {
int intero=0,decimale=0,numeratore=0,denominatore=1,i=0,cont=0,app=0;
char numero[20];
int j=0;
for (j=0;j<20;j++)
numero[j]='\0';
printf("\n Inserire il numero nel formato (x.y) oppure (x,y): ");
scanf("%s",&numero);
int flag=1;
for (i=0;i<20;i++) {
if ((numero[i]==',')||(numero[i]=='.'))
flag=0;
if (flag==1)
intero = (intero * 10) + (numero[i] - '0');
else if (numero[i] >= '0' && numero[i] <='9')
decimale = (decimale * 10) + (numero[i] - '0');
}
if (numeratore==0) numeratore=1;
app=decimale;
while(app>10) {
app=app/10;
cont++;
}
for (i=0;i<cont+1;i++) {
intero*=10;
denominatore*=10;
}
numeratore=intero+decimale;
int num=computeGCD(numeratore,denominatore);
do {
numeratore=numeratore/num;
denominatore=denominatore/num;
num=computeGCD(numeratore,denominatore);
} while(num!=1);
printf("\n La frazione e': %d/%d\n",numeratore,denominatore);
}
int computeGCD(long n, long d)
{
long temp = 0;
while (d > 0) {
temp = d;
d = n % d;
n = temp;
}
return n;
}
Codice: Seleziona tutto
#include<stdio.h>
main()
{
float a,ndv;
int npi,ndvi,den,e;
printf("INSERISCI IL NUMERO DA CUI RICAVARE LA FRAZIONE:\t");
scanf("%f",&a);
npi=(int)a;
ndv=a-npi;
ndvi=(int)ndv;
den=1;
printf("parte intera\t\t\t%d\nparte dopo la virgola\t\t%f\n",npi,ndv);
if (ndv==0)
printf("LA FRAZIONE DEL NUMERO E' %.0f/1 -> %.0f\n",a,a);
else {
while (ndv-ndvi!=0) {
npi*=10;
ndv*=10;
ndvi=(int)ndv;
den*=10;
}
printf("LA FRAZIONE NON SEMPLIFICATA E': %d/%d\n",npi+ndvi,den);
e=1;
while (a*e-npi*e!=0) {
e++;
}
printf("%.0f/%d\n",a*e,e);
}
return 0;
}