![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
InFuz |
![]()
Сообщение
#1
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 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 |
![]()
Сообщение
#2
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
Есть много комментариев по 2 части.
Зачем записывать в файл n, а потом вводить его с клавы? Что-то уж одно) fread(a,sizeof(int),1,f); - во-первых, надо сначала выделить память под указатель, а потом уж читать в него. во-вторых, зачем читать в массив double? Формально ничего криминального, там тип входного параметра void*, но логики не вижу. Тут уж Вы должны n прочитать. a-new double[n]; - очепяточка? sym=sym+a[i]; - вообще ужас))) Куда дробные части денутся?) К целому прибавлять double'ы, это надо же. if(a[i]>(sym/s)) - а Вы в курсе, что sym / s -это целочисленное деление? Если делить одно целое на другое, то получится опять же целое. Например 10/3 = 3 А сравниваете Вы с double, так что ошибки вполне могут иметь место) Последние две ошибки убиваются одним выстрелом: объявлением sym как double. b-new double[s]; - и вновь очепяточка. Да, кстати, и почему именно s? Их там всегда будет меньше. if (t=-1) cout<<"Net takix 4isel!"; - целых два косяка. Во-первых, (t==-1), во-вторых, если уж t и принимает такое значение, то цикл не прогонится не разу. Так что следует сделать if, а уж внутри if цикл. Остальное дело вкуса. Хотя мне лично непонятно, почему в одном случае потоки cin и cout, а в другом fopen, fread, fwrite - либо STL, либо C Library) |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 22:23 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru