Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь с написанием программы на си! Разработать структуру “bigint” 
:(
    Опции темы
kumiho
Дата 12.1.2023, 02:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.1.2023

Репутация: нет
Всего: нет



Нужна помощь с программой на языке программирования си. С частью задания я справился, но так получилось, что нужна помощь со 2 частью. Умоляю, помогите.

задание:

Разработать собственный тип данных (структуру) “bigint” для
выполнения операций с целыми числами содержащими произвольное
количество знаков.
Структура должна соответствовать следующему интерфейсу:
structure bigint {
char *data;
size_t size;
int neg;
}
Реализовать функции, позволяющие инициализировать переменные типа
bigint:
bigint createBigintFromUnsInt(unsigned long int*);
bigint createBigintFromInt(long int*);
bigint createBigintFromBI(bigint*);
bigint createBigintFromChar(char*);
bigint createBigint();
Реализовать операции с bigint:
bigint add(const bigint* left, const bigint* right); -сложение
bigint sub(const bigint* left, const bigint* right); -вычитание
bigint mul(const bigint* left, const bigint* right); -умножение
bigint div(const bigint* left, const bigint* right); -целочисленное деление
bigint div(const bigint* left, const bigint* right, bigint* res); -деление с
остатком
Реализовать функцию вывода:
void printBigint(const bigint*);

Вот такую программу написал:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
structure bigint
{
char *data;
size_t size;
int neg;
} bigint;
bigint createBigintFromUnsInt(unsigned long int *n)
{
bigint b = {0};
b.neg = 0;
b.size = 0;
b.data = malloc(sizeof(char));
if (*n == 0)
{
b.size = 1;
b.data[0] = 0;
return b;
}
while (*n > 0)
{
b.data = realloc(b.data, ++b.size*sizeof(char));
b.data[b.size - 1] = *n%10;
*n / =10;
}
return b;
}
bigint createBigintFromInt(long int *n)
{
bigint b = {0};
if (*n < 0)
{
b = createBigintFromUnsInt((unsigned long int*)n);
b.neg = 1;
}
else
{
b = createBigintFromUnsInt((unsigned long int*)n);
}
return b;
}
bigint createBigintFromBI(bigint *bi)
{
bigint b = {0};
b.neg = bi->neg;
b.size = bi->size;
b.data = malloc(b.size * sizeof(char));
memcpy(b.data, bi->data, b.size * sizeof(char))
return b;
}
bigint createBigintFromChar(char *str)
{
bigint b = {0};
if (str[0]=='-')
{
b.neg = 1;
str++;
}
else
{
b.neg = 0
}
b.size = strlen(str);
b.data = malloc(b.size * sizeof(char));
for (size_t i =0; i < b.size; i++)
{
b.data[i] = str[b.size - 1 - i] - '0';
}
return b;
}
bigint createBigint()
{
bigint b = {0};
b.neg = 0;
b.size = 1;
b.data = malloc(sizeof(char));
b.data[0] = 0;
return b;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1095 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.