Другие языки программирования и технологии

Дробная часть числа (Задачу нужно решить в С/С++)

Вывести дробную часть заданного положительного вещественного числа А.

Входные данные:
Во входном потоке заданно единственное вещественное число А (A <= 30000).
Пример входного файла (input.txt):
123.123

Выходные данные:
В выходной поток вывести единственное вещественное число с точностью три знака после запятой.
Пример выходного файла (output.txt):
0.123

Помогите плиз! Задачу нужно решить в С/С++
#include <iostream>
#include <fstream>
using namespace std;
void ExeFile(char*& n) { int j,k=0; for(;n[k];k++); for(k--;k>=0;--k) if(n[k]=='\\') break; for(j=0;n[++k];n[j++]=n[k]); n[j]=0; }
int main(int mn,char* nm[])
{
int j,r,k;
char *p;
ExeFile(nm[0]);
if(mn!=3) cerr << nm[0] << " input.txt output.txt\n",exit(1);
ifstream in(nm[1],ios::binary); if(!in) cerr << "File \"" << nm[1] << "\" not open!\n",exit(1);
in.seekg(0,ios::end); r=in.tellg(); in.seekg(0,ios::beg);
p=new char[r+1]; if(!p) cerr << "Mo memory!\n",exit(1);
in.read(p,r); in.close(); p[r]=0;
for(k=0;p[k]!='.'&&p[k];k++);
for(--k,p[j=0]='0',j++;p[k++];p[j++]=p[k]);
ofstream ou(nm[2],ios::binary); if(!ou) cerr << "File \"" << nm[2] << "\" not create!\n",exit(1);
ou.write(p,--j);
ou.close();
delete [] p;
return 0;
}

С округлением:
#include <iostream>
#include <fstream>
using namespace std;
void ExeFile(char*& n) { int j,k=0; for(;n[k];k++); for(k--;k>=0;--k) if(n[k]=='\\') break; for(j=0;n[++k];n[j++]=n[k]); n[j]=0; }
int main(int mn,char* nm[])
{
int j,r,k;
char *p,h[5];
ExeFile(nm[0]);
if(mn!=3) cerr << nm[0] << " input.txt output.txt\n",exit(1);
ifstream in(nm[1],ios::binary); if(!in) cerr << "File \"" << nm[1] << "\" not open!\n",exit(1);
in.seekg(0,ios::end); r=in.tellg(); in.seekg(0,ios::beg);
p=new char[r+1]; if(!p) cerr << "Mo memory!\n",exit(1);
in.read(p,r); in.close();
for(k=0;p[k]!='.'&&p[k];k++);
for(j=0,r=k;p[r]&&j < 4;h[j++]=p[++r]); h[4]=0;
for(;p[r]&&isdigit(p[r]);r++);
int t=((atoi(h)+5)/10)00;
p[0]='0',p[1]='.',p[2]=0x30+t/100,p[3]=0x30+(t/10),p[4]=0x30+t;
for(j=5;p[r];p[j++]=p[r++]);
ofstream ou(nm[2],ios::binary); if(!ou) cerr << "File \"" << nm[2] << "\" not create!\n",exit(1);
ou.write(p,j);
ou.close();
delete [] p;
return 0;
}
Арсен Степанян
Арсен Степанян
76 473
Лучший ответ
Арсен Степанян Там майл 2 строчки зажевал, вот так должно быть:
int t=((atoi(h)+5)/10) % 1000;
p[0]='0',p[1]='.',p[2]=0x30+t/100,p[3]=0x30+(t/10) % 10,p[4]=0x30+t % 10;
#include<fstream>
using namespace std;
int main(){
ifstream infile("input.txt");
ofstream outfile("output.txt");
double a; infile>> a; outfile<< a-(int)a;}
Davron Amonov
Davron Amonov
83 390
оператор %
SS
Somon Saidrahmonov
8 401
Дмитрий Самсонов Как? Полное решение?
используй функцию модф ()
RA
Resul Ali
218
Дмитрий Самсонов не умею подскажите в самом решении. Плиз