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

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

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

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

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, столбиком. Но выдает начиная от...

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

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

Что не так в коде
Подскажите что не так в коде fstream fs; fs.open(file, fstream::in |fstream::out |...

4
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
23.03.2019, 14:02 2
Код
../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  [ТС] 3
Исправил, все-таки не в этом дело
0
 Аватар для vlisp
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,237
23.03.2019, 14:23 4
у тебя все не так в коде от слова совсем, просто треш, индусы отдыхают...
Для начала заведи тип "тип треугольника"
Затем добавь метод для расчета длины ребра треугольника,
дальше добавь метод, для расчета периметра,
дальше добавь метод для расчета площади.


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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru