Member 13565402 Ответов: 3

Как я могу вернуть следующее значение после возврата предыдущего значения?


Я хочу вернуть область круга, и у меня есть два радиуса в txt-файле, но он возвращает только один радиус для области, так как же я могу вернуть радиус один за другим для области?

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

#include <iostream>
using namespace std;
class Circle{
	
	private:
		double radius;
	public:
		Circle(){}
		double getArea();
};
double Circle::getArea()
{
	ifstream fin;
	fin.open("shape-in2.txt");
	
	char check;
	while(!fin.eof())
	{
		fin>>check;
		if(check=='C')
		{
			fin>>xCoordinate;
			fin>>yCoordinate;
			fin>>radius;
		}
	}
	return radius*radius*3.142;
	
}
int main(){
Circle c;
cout<<c.getArea();
}

/*file contains
C 3 6 7
B 1 2 3
C 5 7 8


*/

CPallini

Я тебя не понял. Что ты хочешь сделать?

3 Ответов

Рейтинг:
1

Jochen Arndt

Вы можете использовать вектор - ссылка на C++ [^] для хранения и возврата нескольких значений:

#include <vector>

std::vector<double> Circle::getAreas()
{
    std::vector<double> result;
    ifstream fin;
    fin.open("shape-in2.txt");
    while(!fin.eof())
    {
        char check;
        fin>>check;
        // EDIT: Must read all data here; not only when first letter is C
        //if(check=='C')
        //{
            int xCoordinate, yCoordinate, radius;
            fin>>xCoordinate;
            fin>>yCoordinate;
            fin>>radius;
        if(check=='C')
        {
            // Append area value to vector
            result.push_back(radius*radius*3.142);
        }
    }
    return result;
}

int main()
{
    Circle c;
    std::vector<double> areas = c.getAreas();
    // Iterate over areas items here to print each value
    return 0;
}

[РЕДАКТИРОВАТЬ]
Обратите также внимание, что все данные должны быть считаны из файла, даже если первая буква не является "с".
[/РЕДАКТИРОВАТЬ]


CPallini

5.

Рейтинг:
0

Richard MacCutchan

Начните с создания класса, который имеет дело только со значениями и вычислениями. Конструктор класса должен принимать один параметр-радиус окружности. Затем вы можете вызвать метод для вычисления и возврата площади. У вас может быть другой метод, который принимает координаты и показывает положение круга. Создайте цикл в вашей основной функции, которая читает файл данных, создает круги для каждого набора значений.


CPallini

5.

Рейтинг:
0

Patrice T

Цитата:
Как я могу вернуть следующее значение после возврата предыдущего значения?

Первым шагом является исправление ошибок, которые вы получаете, когда вы компилируете код.
Вы используете xCoordinate и yCoordinate- но вы их не определяете.
Тогда у вас есть логические ошибки: код не делает то, что вы хотите, потому что вы сказали ему делать иначе, нет никакой магии, вам нужно узнать, как все работает. Используйте отладчик, чтобы увидеть, что и как делает ваш код.

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

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.