Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.02.2019
Сообщений: 42

Что не так в коде?

23.03.2019, 14:00. Показов 464. Ответов 4

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста найти и исправить ошибки в программе. Не компилируется

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <iostream>
using namespace std;
 
struct Point1
{
    float x, y;
};
 
struct triangle
{
    char *type;         // тип треугольника
    Point1 *Points;
    float perimeter;            // периметр треугольника
    float square;       // площадь треугольника
};
 
float Find_perimeter(Point1 *P, int size = 3)
{
    float Len = 0;
    for (int j = 0; j < size - 1; j++)
    {
        Len += sqrt((P[j].x - P[j + 1].x)*(P[j].x - P[j + 1].x) + (P[j].y - P[j + 1].y)*(P[j].y - P[j + 1].y));
    }
    Len += sqrt((P[0].x - P[size - 1].x)*(P[0].x - P[size - 1].x) + (P[0].y - P[size - 1].y)*(P[0].y - P[size - 1].y));
    return Len;
}
 
float Find_square(Point1 *P)
{
    float Sqr = 0;
    Sqr = (P[0].x - P[2].x)*(P[1].y - P[2].y) - (P[1].x - P[2].x)*(P[0].y - P[2].y);
    Sqr = fabs(0.5*(Sqr));
    return Sqr;
}
 
void Find_type(Point1 *P, triangle *Str)
{
    cout << endl;
    char t[40]; // тип треугольника
    int tiangle_type;
    float a = sqrt((P[0].x - P[1].x)*(P[0].x - P[1].x) + (P[0].y - P[1].y)*(P[0].y - P[1].y));
    float b = sqrt((P[1].x - P[2].x)*(P[1].x - P[2].x) + (P[1].y - P[2].y)*(P[1].y - P[2].y));
    float c = sqrt((P[0].x - P[2].x)*(P[0].x - P[2].x) + (P[0].y - P[2].y)*(P[0].y - P[2].y));
    if ((a + b > c) && (a + c > b) && (b + c > a)) tiangle_type = 0;
    else if (a == b == c) tiangle_type = 1;
    else if ((a == b) || (a == c) || (c == b)) tiangle_type = 2;
    else if ((a * a == b * b + c * c) || (c * c == b * b + a * a) || (b * b == a * a + c * c)) tiangle_type = 3;
    else if ((a * a < b * b + c * c) || (c * c < b * b + a * a) || (b * b < a * a + c * c)) tiangle_type = 4;
    else if ((a * a > b * b + c * c) || (c * c > b * b + a * a) || (b * b > a * a + c * c)) tiangle_type = 5;
    else tiangle_type = 0;
    switch (tiangle_type)
    {
    case 0: strcpy(t, "Triangle does not exist."); break;
    case 1: strcpy(t, "Triangle is equilateral."); break;
    case 2: strcpy(t, "Triangle is isosceles."); break;
    case 3: strcpy(t, "Triangle is rectangular."); break;
    case 4: strcpy(t, "Triangle is acute-angled."); break;
    case 5: strcpy(t, "Triangle is obtuse."); break;
    default: strcpy(t, "Triangle does not exist.");
    }
    Str->type = new char[strlen(t)];
    strcpy(Str->type, t);
}
 
void Input(triangle *Str, int size = 3)
{
    Str->Points = new Point1[size];
    cout << "Enter the points:" << endl;
    for (int i = 0; i < size; i++)
    {
        cout << "[x" << i + 1 << "]: ";
        cin >> Str->Points[i].x;
        cout << "[y" << i + 1 << "]: ";
        cin >> Str->Points[i].y;
    }
}
 
void Output(triangle *Str, int size = 3)
{
    for (int i = 0; i < size; i++)
    {
        cout << "P[" << Str->Points[i].x << "," << Str->Points[i].y << "] ";
    }
    cout << endl << "Type of tiangle: " << Str->type << endl;
    cout << "Perimeter of tiangle: " << Str->perimeter << endl;
    cout << "Square of tiangle: " << Str->square << endl;
}
 
int main()
{
    int n, i;
    cout << "Enter the number of triangles: " << endl;
    cin >> n;
    triangle *S;
    S = new triangle;
    Input(S);
    Find_type(S->Points, S);
    S->perimeter = Find_perimeter(S->Points);
    S->square = Find_square(S->Points);
    Output(S);
    triangle  *arrs = new triangle[n];
    for (i = 0; i < n; i++)
    {
        Find_type(S->Points, &arrs[i]);
        arrs[i].perimeter = Find_perimeter(arrs[i].Points);
        Output(&arrs[i]);
    }
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2019, 14:00
Ответы с готовыми решениями:

Что в коде ни так? while не работает так, как ожидаю
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но выдает начиная от 702 до 1000. Что ни так понимаю, где...

ЧТо не так в коде?
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;vector&gt; using namespace std; ...

Что не так в коде?
Должен записывать значения в файл, а начинается так называемая &quot;матрица&quot; и в файл записывается число -858993460. #include...

4
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
23.03.2019, 14:02
Code
1
2
3
../src/main.cc: In function ‘void Find_type(Point1*, triangle*)’:
../src/main.cc:49:14: warning: suggest parentheses around comparison in operand of ‘==’ [-Wparentheses]
   else if (a == b == c)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <cmath>
#include <cstring>
 
#include <iostream>
using namespace std;
 
struct Point1 {
  float x, y;
};
 
struct triangle {
  char *type;  // тип треугольника
  Point1 *Points;
  float perimeter;  // периметр треугольника
  float square;     // площадь треугольника
};
 
float Find_perimeter(Point1 *P, int size = 3) {
  float Len = 0;
  for (int j = 0; j < size - 1; j++) {
    Len += sqrt((P[j].x - P[j + 1].x) * (P[j].x - P[j + 1].x) +
                (P[j].y - P[j + 1].y) * (P[j].y - P[j + 1].y));
  }
  Len += sqrt((P[0].x - P[size - 1].x) * (P[0].x - P[size - 1].x) +
              (P[0].y - P[size - 1].y) * (P[0].y - P[size - 1].y));
  return Len;
}
 
float Find_square(Point1 *P) {
  float Sqr = 0;
  Sqr = (P[0].x - P[2].x) * (P[1].y - P[2].y) -
        (P[1].x - P[2].x) * (P[0].y - P[2].y);
  Sqr = fabs(0.5 * (Sqr));
  return Sqr;
}
 
void Find_type(Point1 *P, triangle *Str) {
  cout << endl;
  char t[40];  // тип треугольника
  int tiangle_type;
  float a = sqrt((P[0].x - P[1].x) * (P[0].x - P[1].x) +
                 (P[0].y - P[1].y) * (P[0].y - P[1].y));
  float b = sqrt((P[1].x - P[2].x) * (P[1].x - P[2].x) +
                 (P[1].y - P[2].y) * (P[1].y - P[2].y));
  float c = sqrt((P[0].x - P[2].x) * (P[0].x - P[2].x) +
                 (P[0].y - P[2].y) * (P[0].y - P[2].y));
  if ((a + b > c) && (a + c > b) && (b + c > a))
    tiangle_type = 0;
  else if (a == b == c)
    tiangle_type = 1;
  else if ((a == b) || (a == c) || (c == b))
    tiangle_type = 2;
  else if ((a * a == b * b + c * c) || (c * c == b * b + a * a) ||
           (b * b == a * a + c * c))
    tiangle_type = 3;
  else if ((a * a < b * b + c * c) || (c * c < b * b + a * a) ||
           (b * b < a * a + c * c))
    tiangle_type = 4;
  else if ((a * a > b * b + c * c) || (c * c > b * b + a * a) ||
           (b * b > a * a + c * c))
    tiangle_type = 5;
  else
    tiangle_type = 0;
  switch (tiangle_type) {
    case 0:
      strcpy(t, "Triangle does not exist.");
      break;
    case 1:
      strcpy(t, "Triangle is equilateral.");
      break;
    case 2:
      strcpy(t, "Triangle is isosceles.");
      break;
    case 3:
      strcpy(t, "Triangle is rectangular.");
      break;
    case 4:
      strcpy(t, "Triangle is acute-angled.");
      break;
    case 5:
      strcpy(t, "Triangle is obtuse.");
      break;
    default:
      strcpy(t, "Triangle does not exist.");
  }
  Str->type = new char[strlen(t)];
  strcpy(Str->type, t);
}
 
void Input(triangle *Str, int size = 3) {
  Str->Points = new Point1[size];
  cout << "Enter the points:" << endl;
  for (int i = 0; i < size; i++) {
    cout << "[x" << i + 1 << "]: ";
    cin >> Str->Points[i].x;
    cout << "[y" << i + 1 << "]: ";
    cin >> Str->Points[i].y;
  }
}
 
void Output(triangle *Str, int size = 3) {
  for (int i = 0; i < size; i++) {
    cout << "P[" << Str->Points[i].x << "," << Str->Points[i].y << "] ";
  }
  cout << endl << "Type of tiangle: " << Str->type << endl;
  cout << "Perimeter of tiangle: " << Str->perimeter << endl;
  cout << "Square of tiangle: " << Str->square << endl;
}
 
int main() {
  int n, i;
  cout << "Enter the number of triangles: " << endl;
  cin >> n;
  triangle *S;
  S = new triangle;
  Input(S);
  Find_type(S->Points, S);
  S->perimeter = Find_perimeter(S->Points);
  S->square = Find_square(S->Points);
  Output(S);
  triangle *arrs = new triangle[n];
  for (i = 0; i < n; i++) {
    Find_type(S->Points, &arrs[i]);
    arrs[i].perimeter = Find_perimeter(arrs[i].Points);
    Output(&arrs[i]);
  }
  return 0;
}
0
0 / 0 / 0
Регистрация: 27.02.2019
Сообщений: 42
23.03.2019, 14:05  [ТС]
Исправил, все-таки не в этом дело
0
 Аватар для vlisp
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,360
23.03.2019, 14:23
у тебя все не так в коде от слова совсем, просто треш, индусы отдыхают...
Для начала заведи тип "тип треугольника"
Затем добавь метод для расчета длины ребра треугольника,
дальше добавь метод, для расчета периметра,
дальше добавь метод для расчета площади.


Если ты не в курсе, то тут раздел по с++
С++ - это объектно-ориентированный язык.
А у тебя код в стиле С
Возьми любой учебник по С++ и почитай как создавать классы и объекты
0
0 / 0 / 0
Регистрация: 27.02.2019
Сообщений: 42
23.03.2019, 14:47  [ТС]
Спасибо за конструктивную критику, я бы сам сделал РЕАЛЬНО по другому. Но, к сожалению, этот код сделан на основе требований и примера нашего препода из университета. Ничего не могу поделать с этим, поэтому ... извини, про ООП в курсе, но требования, есть требования.

P.S. Ошибка найдена. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.03.2019, 14:47
Помогаю со студенческими работами здесь

Что не так в коде
Подскажите что не так в коде fstream fs; fs.open(file, fstream::in |fstream::out | fstream::app); fstream::app не хочет принимать

что не так в коде?
Не обходимо составить массив и заполнить его по правилу: {x}_{1} = 1; {x}_{i} = i * {x}_{i-1} + 1/i i = 1,2,3,....,n Основная...

что в коде не так?
#include &lt;string.h&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; #include &lt;stdlib.h&gt; #include &lt;windows.h&gt; void...

Что не так в коде?
#include &quot;pch.h&quot; #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;ctime&gt; using namespace std; int main(int...

Что не так в коде?
#include &lt;stdio.h&gt; int main(void) { int x; double sq = 1.428e2; int t = (int)(sq+0.5), u = -t/10; int y= (int)sq % 10...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru