Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

23.12.2005, 01:32
|
|
Участник форума
Регистрация: 13.10.2005
Сообщений: 210
Провел на форуме: 371736
Репутация:
14
|
|
Программа для универа
Я прошу помочь решить одну проблему, но проблема не типа "Решите мне задачу", просто до меня не дойдет как сделать следующее:
"Дан текстовый файл с неизвестным количеством вещественных чисел Написать функцию для определения есть ли среди них число у которого равны сумма цифр целой и дробной части"
У меня получилось сделать так, чтобы прграмма отвечала на каждое число, равны ли его сумма дробной и целой части:
#include <conio.h>
#include <fstream.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
void main()
{
char fni[256];
const N = 100;
cout<<"enter filename of input file\n";
cin>>fni;
double* pn=new double[N];
fstream fi;
fstream fo;
fi.open(fni,ios::in);
for(int i=0;(!fi.eof())&&(i<N);i++)
{
fi>>pn[i];
char a[20],b[20];
sprintf(b,"%f",pn[i]-((int)pn[i]));
char* tb=b;
tb+=2;
while(*tb=='0') tb++;
sprintf(a,"%d",(int)pn[i]);
int ia=0,ib=0;
char tmp[2];
for(int j=0;j<20;j++)
{
tmp[0]=a[j]; tmp[1]='\0';
ia+=atoi(tmp);
}
for(int j=0;tb[j]!='\0';j++)
{
tmp[0]=tb[j]; tmp[1]='\0';
ib+=atoi(tmp);
}
if(ia==ib) fo<<printf("DA - EST");
else printf("NET - NETU");
}
delete [] pn;
fi.close();
fo.close();
getch();
}
Потом, я парился парился и допарился, что выводит ответ один, но лишь для первого числа в файле:
#include <conio.h>
#include <fstream.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
char fni[256];
const N=100;
cout<<"enter filename of input file\n";
cin>>fni;
double* pn=new double[N];
fstream fi;
fstream fo;
fi.open(fni,ios::in);
for(int i=0;(!fi.eof())&&(i<N);i++)
{
fi>>pn[i];
char a[20],b[20];
sprintf(b,"%f",pn[i]-((int)pn[i]));
char* tb=b;
tb+=2;
while(*tb=='0') tb++;
sprintf(a,"%d",(int)pn[i]);
int ia=0,ib=0;
char tmp[2];
for(int j=0;j<20;j++)
{
tmp[0]=a[j]; tmp[1]='\0';
ia+=atoi(tmp);
}
for(int j=0;tb[j]!='\0';j++)
{
tmp[0]=tb[j]; tmp[1]='\0';
ib+=atoi(tmp);
}
if(ia==ib) printf("DA - EST");
else printf("NET - NETU");
getch();
return 0;
}}
А мне нужно, чтобы программа не по первому числу отвечала, а анализируя все. Никто не возьмется меня поправить?
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|