|
28.11.2009, 18:49
|
#1
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Помогите решить задачку
Создайте класс, определяющий некоторый тип вещественных чисел, имеющий конструктор, операторы +, -, * функцию вывода на экран - print. Написать простой пример программы, использующей числа данного типа и операции над ними с выводом результатов на экран.
Одно из выражений должно содержать 2 числа данного типа, а также константу встроенного типа: char, int или float. Для этого выражения объяснить какие и в какой последовательности операции и преобразования используются и почему.
Основной конструктор должен иметь один параметр типа float и формировать объект эквивалентного значения в формате двух int чисел. Также создайте дополнительный конструктор, который получает два параметра типа int, которые представляют собой внутренний формат хранения чисел с возможной нормализацией в случае необходимости..
Плавающей арифметики в реализации не использовать.
Вариант 1.
Вещественное число плавающего формата. Мант. и эксп. - 10 бит целые.
Число представлено в формате: А=0.Мант*2^Эксп
Вариант 2.
Вещественное число плавающего формата. Мант. и эксп. - 10 бит целые.
Число представлено в формате: А=0.Мант*10^Эксп
Вариант 3.
Вещественное число фиксированного формата. Целая и дробная части - 10 бит целые.
Число представлено в формате: А=Цел.Дроб
Вариант 4.
Дробное число. Числитель и знаменатель - 10 бит целые.
Число представлено в формате: А=Числ/Знам
|
Помогите пожалуйста. Требуется только вариант №4, а я в CИ не силён.
Вобще не представляю как создать такой класс.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
Последний раз редактировалось Randomize, 01.12.2009 в 05:40.
|
(Offline)
|
|
01.12.2009, 05:40
|
#2
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Помогите решить задачку
Никто не поможет?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
09.12.2009, 03:31
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Помогите решить задачку
Первое:
я так и невпёр в приматскую шуточку:
как разбить float на два числа о0 я понимаю разбить int - это факторизация.
Для флоата нам досточно узнать число знаков после запятой (1.23 = 123/100)
Попытки поколдовать с последовательным сдвигом FP путём умножения на 10 и вычисления разницы между floor() и получившимся числом проваливаются из-за точности.
Т.е. я хотел бы так:
1.23 преобразуем:
0 1.23-1=0.23 далее
1 12.3-12=0.3 далее
2 123-123=0 готово //хрен!
Прочитал ТЗ ещё раз. Собственно индусоидность кода нигде не фиксируется (как и используемые функции СИ++). Нахреначил говнокодище.
char t[30];
sprintf(t,"%f",x);
char* ptr=strstr(t,".");
int n=ptr-(char*)t;
int m;
for(m=strlen(t)-1;m>n;m--){
if(t[m]!='0')break;
}
int d=m-n;
this->up=x*pow(10,d);
this->down=pow(10,d);
единственное что напрягает - во всех ли платформах юзается точка как десятичный разделитель?
Второе:
Дробное число. Числитель и знаменатель - 10 бит целые.
|
Это чо-чо? Битовые поля что-ли?
short up:10;
short down:10;
Проблема перемещается в функцию вывода - необходимо выковрять 10 значащих бит из 16-битного слова. Просто замаскировать их не вышло - хрен его знает как оргнизовал это дело компилятор (или же надо круить rfc для шортов?), но ождиаемый эффект конструкция &1023 не дала.
Потому я просто забил =\
Вот что вышло в итоге:
файл NUMBER.h
#ifndef _NUMBER_H_
#define _NUMBER_H_
class NUMBER{
private:
short up;
short down;
public:
NUMBER(float x);
NUMBER(int Up,int Down);
NUMBER operator+(const NUMBER &x);
NUMBER operator-(const NUMBER &x);
NUMBER operator*(const NUMBER &x);
NUMBER operator*(int x);
void PRINT();
};
#endif
файл NUMBER.cpp
#include<iostream.h>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include"NUMBER.h"
NUMBER::NUMBER(int Up,int Down){
this->down=Down;
this->up=Up;
}
NUMBER::NUMBER(float x){
char t[30];
sprintf(t,"%f",x);
char* ptr=strstr(t,".");
int n=ptr-(char*)t;
int m;
for(m=strlen(t)-1;m>n;m--){
if(t[m]!='0')break;
}
int d=m-n;
this->up=x*pow(10,d);
this->down=pow(10,d);
}
void NUMBER::PRINT(){
cout<<(this->up)<<" / "<<(this->down)<<endl;
}
NUMBER NUMBER::operator +(const NUMBER &x){
return NUMBER(x.up*this->down+this->up*x.down,x.down*this->down);
}
NUMBER NUMBER::operator -(const NUMBER &x){
return NUMBER(x.up*this->down-this->up*x.down,x.down*this->down);
}
NUMBER NUMBER::operator *(const NUMBER &x){
return NUMBER(x.up*this->up,x.down*this->down);
}
NUMBER NUMBER::operator *(int x){
return NUMBER(x*this->up,this->down);
}
файл main.cpp
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include"NUMBER.h"
void main(){
NUMBER Q(1.3);
Q.PRINT();
NUMBER R=Q*2;
R.PRINT();
NUMBER T(6,5);
T.PRINT();
NUMBER Z=R-T*2;
Z.PRINT();
NUMBER F=Z+T;
F.PRINT();
getch();
}
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
06.01.2010, 15:35
|
#4
|
Оператор ЭВМ
Регистрация: 16.07.2009
Адрес: Пятигорск
Сообщений: 39
Написано 4 полезных сообщений (для 4 пользователей)
|
Добрые люди ПОЖАЛУЙСТА помогите решить задачки.
Пришли задания с учебниками из Ставрополя, получил я их только сегодня (хотя должен был получить 2 декабря, шли долго из института), а cдавать нужно уже 14 января. Я в С++ нуль, выучить не успею, ещё и сделать.
Помогите плиз. Там наверняка не сложные задачки для таких профов как вы А C++ я буду учить, изучу ваши ответы и следующие задания сделаю сам.
Ответы надо в архиве выложить, чтоб поиском вдруг не нашли меня здесь
А схемы алгоритмов можно накарякать где угодно, даже в строчку, я разберу потом.
Скачать задачки (73 Кб)
Ну что мне некто не поможет?
Последний раз редактировалось jimon, 08.01.2010 в 12:32.
|
(Offline)
|
|
06.01.2010, 21:10
|
#5
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Помогите решить задачку
догадливый
__________________
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
|
|
06.01.2010, 22:09
|
#6
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Помогите решить задачку
Пришли задания с учебниками из Ставрополя, получил я их только сегодня
|
штемпель на почтовом документе о дате прибытия корреспонденции - документ, подтверждающий, что ты не придумал эту историю (там указывается дата). Таким образом, если ты не мог выполнить задание, по причине задержки учебников (и это оговорено с учебным заведением) - у тебя есть аргумент.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
08.01.2010, 11:17
|
#7
|
Оператор ЭВМ
Регистрация: 16.07.2009
Адрес: Пятигорск
Сообщений: 39
Написано 4 полезных сообщений (для 4 пользователей)
|
Так а это не отмазка от того что задание не могу сделть
И задержала не почта, а Жаба Классный руководитель!
Эх люди вы не добрые Придётся за оставшиеся дни выучить то, что за месяц нужно было выучить
Последний раз редактировалось jimon, 08.01.2010 в 12:32.
|
(Offline)
|
|
08.01.2010, 11:57
|
#8
|
AnyKey`щик
Регистрация: 10.11.2008
Сообщений: 18
Написано 4 полезных сообщений (для 5 пользователей)
|
Ответ: Помогите решить задачку
Сообщение от xsnakes
Эх люди вы не добрые Придётся за оставшиеся дни выучить то, что за месяц нужно было выучить
|
Ты денег людям предложи.. Сразу подобреют..
__________________
Шутить надо так, чтобы потом не было мучительно больно за бесцельно выбитые зубы.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо ISergey за это полезное сообщение:
|
|
08.01.2010, 15:24
|
#9
|
Оператор ЭВМ
Регистрация: 16.07.2009
Адрес: Пятигорск
Сообщений: 39
Написано 4 полезных сообщений (для 4 пользователей)
|
Ответ: Помогите решить задачку
А у меня привод деньги не читает! Как я отправлю? :D
|
(Offline)
|
|
08.01.2010, 16:02
|
#10
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Помогите решить задачку
переводом, по эмайлу или заказным письмом.
|
(Offline)
|
|
08.01.2010, 16:16
|
#11
|
Оператор ЭВМ
Регистрация: 16.07.2009
Адрес: Пятигорск
Сообщений: 39
Написано 4 полезных сообщений (для 4 пользователей)
|
Ответ: Помогите решить задачку
От делать нечего Я лучше ещё на 100 форумах напишу такое, кто-то да решит.
А этот форум в чёрный список тут не помогают.
А если б я по одной задаче спрашивал, то решили б, но поисковик найдёт меня тут
|
(Offline)
|
|
08.01.2010, 16:52
|
#12
|
Бывалый
Регистрация: 29.03.2007
Сообщений: 662
Написано 199 полезных сообщений (для 448 пользователей)
|
Ответ: Помогите решить задачку
Сообщение от xsnakes
А этот форум в чёрный список
|
Одним попрошайкой меньше.
Следующий! (с)
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Android за это полезное сообщение:
|
|
24.01.2010, 19:02
|
#13
|
Оператор ЭВМ
Регистрация: 16.07.2009
Адрес: Пятигорск
Сообщений: 39
Написано 4 полезных сообщений (для 4 пользователей)
|
Ответ: Помогите решить задачку
Помогите
Идет k-я секунда суток. Определить сколько полных часов X и полных минут Y прошло к этому моменту.
|
(Offline)
|
|
24.01.2010, 19:15
|
#14
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Помогите решить задачку
былы-бы власть, сам-бы тебя выкинул нафиг, чтоб в армию забрали, и ты не мог поганить отечественный игрострой или что-либо другое
|
(Offline)
|
|
24.01.2010, 19:24
|
#15
|
Оператор ЭВМ
Регистрация: 16.07.2009
Адрес: Пятигорск
Сообщений: 39
Написано 4 полезных сообщений (для 4 пользователей)
|
Ответ: Помогите решить задачку
ты че флудишь
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:38.
|