![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
InFuz |
![]()
Сообщение
#41
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 116 Регистрация: 13.10.2009 Город: Ульяновск Учебное заведение: УлГУ Вы: студент ![]() |
В общем закончили 1 семестр и во втором начался C++ (был и остался Pascal)
Посоветуйте какую нибудь книжку или самоучитель по C++. Пока читаю Г. Шилд "Самоучитель С++" И помогите разобраться с 1 лабой. Мало того, что в С++ пока не рублю так еще и задача... я ее даже на листке не решу не то что уж прогу по ней писать. Известны координаты вершин треугольника ABC: A(x1,y1), B(x2,y2) и C(x3,y3). Найти его площадь и периметр. Нашел в инете пару формул, хотя точно не уверен что те. Вот, что пока смог накорябать. # include <iostream.h> # include <stdio.h> # include <math.h> int main() { int x1,x2,x3,y1,y2,y3; double s,p,a,b,c; cout<<"\n Лабораторная работа №1"; cout<<"\n x1="; cin>>x1; cout<<"\n x2="; cin>>x2; cout<<"\n x3="; cin>>x3; cout<<"\n y1="; cin>>y1; cout<<"\n y2="; cin>>y2; cout<<"\n y3="; cin>>y3; a = sqrt((x1-x2)^2+(y1-y2)^2); b = sqrt((x1-x3)^2+(y1-y3)^2); c = sqrt((x2-x3)^2+(y2-y3)^2); p = a+b+c; cout<<"\n p=" <<p; /* cout<<"p="<<p; s=(x1-x3)*(y2-y3)*(x2-x3)*(y1-y3)/2; cout<<"s="<<s; */ } |
![]() ![]() |
Vahappaday |
![]()
Сообщение
#42
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
ой... а зачем и new и malloc? и ни разу не освобождена память))) ай-яй-яй))
Рекомендую почитать про выделение памяти в некоторых старых версиях Builder'a. Мне один опытный человек говорил, что у Borland был косяк либо с new/delete, либо с malloc/free, скорее с первым. Хотя я могу и ошибаться. getch() после return 0; не имеет смысла. Насчёт нового массива. Есть два варианта. 1. Функция сама изнутри сначала делает проход и считает. 2. Мы должны передавать функции указатель на уже выделенную область памяти. Первый вариант.... понадёжней, что ли. Исключает ошибки при вызове. Если будете делать по второму, то я бы сделал что-то типа int CopySimples(float *src, float *dst); И если передать dst=NULL, то ничего не копировать, а просто считать и возвращать количество элементов. Затем выделять память под такое количество элементов и уже передавать нормальный указатель. Я думаю в этом случае проще реализовать 1-й вариант. Главное, не забывать освобождать память, а то привыкнете. Ну, а насчёт определения простоты, это элементарно, тем более, что вариант уже есть, хотя на мой взгляд можно попроще структурно и ещё немножко оптимизировать. Если уж совсем плохо будет, напишу, а так предлагаю потренироваться самостоятельно. Насчёт сортировки: каким методом сортировать будем? Пузырьком? Чем-то посложнее? Можно вообще воспользоваться встроенным qsort'ом Добавлено: Пришла ещё мысль сделать функцию добавления массива к числу. То есть, мы должны выделить память на 1 больше имеющегося, скопировать старый в новый, дописать новое число, освободить память из под старого, вернуть указатель на новый. Вариантов куча на самом деле)) Определяйтесь, и пробуйте писать. Где будет тяжело - подмогу. |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 28.5.2025, 4:34 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru