Решения задач acmp.ru
Главная
Вход
Регистрация
Вторник, 29.09.2020, 01:16Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Pascal [121]
C++ [76]

Поиск

Мини-чат
200

Легкий заработок!

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Файлы » C++

0363 Длинное произведение

Скачать файл можно после просмотра рекламы:

05.06.2012, 03:08
#include <stdio.h>
#include <memory.h>

struct arrInt
{
char * data;
int length;

void ReadFromFile(FILE *f);
void WriteToFile(FILE *f);
void Print();
arrInt operator * (arrInt& other);
};

void    arrInt::ReadFromFile (FILE *f)
{
char * tmp = new char [2505];
length = 0;

do
{
fscanf(f, "%c", tmp + length);
} while (tmp [length] >= '0' && tmp [length++] <='9');

data = new char [length + 2];
for (int i = 0; i<length; i++)
data [i] = tmp [length - i - 1] - 48;

delete []    tmp;
}

void    arrInt::WriteToFile (FILE *f)
{
bool started = false;
for (int i = this->length - 1; i >= 0; i--)
{
if (started)
fprintf(f, "%d", this->data [i]);
else
if (this->data [i])
{
started = true;
fprintf(f, "%d", this->data [i]);
}
}
if (!started)
fprintf(f, "0");

fprintf(f, " ");
}

void    arrInt::Print()
{
for (int i = this->length - 1; i >= 0; i--)
printf("%d", this->data [i]);
printf("\n");
}

arrInt arrInt::operator*(arrInt& other)
{
arrInt result;
result.data = new char [this->length + other.length + 2];
memset(result.data, 0, sizeof(char) * (this->length + other.length + 2));
result.length = this->length + other.length + 2;

char tmp = 0;
for (int i = 0; i < other.length; i++)
{
for (int j = 0; j<this->length; j++)
{
tmp = this->data [j] * other.data[i] + result.data [i + j];
result.data [i + j] = tmp % 10;
result.data [i + j + 1] += tmp / 10;
}
}

return result;
}

int main()
{
arrInt i1, i2, i3;

FILE *f = fopen("input.txt", "r");
i1.ReadFromFile(f);
i2.ReadFromFile(f);
fclose(f);

i3 = i1 * i2;

f = fopen("output.txt", "wt");
i3.WriteToFile(f);
fclose(f);

return 0;

Категория: C++ | Добавил: shum
Просмотров: 1543 | Загрузок: 0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Это интересно!


Copyright MyCorp © 2020