Cat Rabbit Ответов: 2

Что я делаю не так? Он не делает того, для чего предназначен


Создайте структуру для хранения прямоугольника. Структура должна иметь целое число для длины и другое целое число для ширины прямоугольника. Объявите 2 переменные прямоугольника и считайте их от пользователя. Напишите функцию difference_area, которая берет оба прямоугольника,вычисляет разницу их площадей и выводит результат.

#include<iostream>
using namespace std;

struct Rectanglebeta
{
  int width;
  int length;
  int area;
};
int difference_area(Rectanglebeta r1, Rectanglebeta r2)
{
  int sub;

  r1.area = r1.width * r1.length;
  r2.area = r2.width * r2.length;
  sub = rectangle1.area - r2.area;
  return sub;
}
int main()
{

struct Rectanglebeta rectangle1;
struct Rectanglebeta rectangle2;
  cout<<" The width of the 1st Rectangle is: "<<endl;
  cin>>r1.width;
  cout<<" The length of the 1st Rectangle is: "<<endl;
  cin>>r1.length;
  cout<<" The width of the 2nd Rectangle is: "<<endl;
  cin>>r2.width;
  cout<<" The length of the 2nd Rectangle  is: "<<endl;
  cin>>r2.length;
  difference_area(rectangle1, rectangle2);
  return 0;
}


Что я уже пробовал:

Создайте структуру для хранения прямоугольника. Структура должна иметь целое число для длины и другое целое число для ширины прямоугольника. Объявите 2 переменные прямоугольника и считайте их от пользователя. Напишите функцию difference_area, которая берет оба прямоугольника,вычисляет разницу их площадей и выводит результат.

#include<iostream>
using namespace std;

struct Rectanglebeta
{
  int width;
  int length;
  int area;
};
int difference_area(Rectanglebeta r1, Rectanglebeta r2)
{
  int sub;

  r1.area = r1.width * r1.length;
  r2.area = r2.width * r2.length;
  sub = rectangle1.area - r2.area;
  return sub;
}
int main()
{

struct Rectanglebeta rectangle1;
struct Rectanglebeta rectangle2;
  cout<<" The width of the 1st Rectangle is: "<<endl;
  cin>>r1.width;
  cout<<" The length of the 1st Rectangle is: "<<endl;
  cin>>r1.length;
  cout<<" The width of the 2nd Rectangle is: "<<endl;
  cin>>r2.width;
  cout<<" The length of the 2nd Rectangle  is: "<<endl;
  cin>>r2.length;
  difference_area(rectangle1, rectangle2);
  return 0;
}

2 Ответов

Рейтинг:
6

Patrice T

Цитата:
и распечатывает результат.

Ваш код не пытается напечатать какой-либо результат.

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
2

Richard MacCutchan

struct Rectanglebeta rectangle1;
struct Rectanglebeta rectangle2;
  cout<<" The width of the 1st Rectangle is: "<<endl;
  cin>>r1.width;
  cout<<" The length of the 1st Rectangle is: "<<endl;
  cin>>r1.length;

Вы объявляете два прямоугольника rectangle1 и rectangle2, но тогда вы используете имена r1 и r2 чтобы попытаться сослаться на них. Кроме того, вы забыли захватить возвращаемое значение из вызова difference_area и распечатайте его.