Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помощь в решении задачи на С++. Программирование с использованием подпрограмм.

88K
06 мая 2015 года
Енот Иннокентий
2 / / 06.05.2015
Здравствуйте!

Есть задача: Рассчитать потребляемую мощность прибором, включенным в сеть напряжением 220 В, при изменении его сопротивления от 4,5 Ом до 13,5 Ом (шаг изменения 0,5 Ом). Результат оформить в виде таблицы.

Есть мысль, что вручную эту задачу можно решить с помощью формулы: P=U^2/R.

Но как написать программу на языке С++, чтобы она через определенный шаг рассчитывала по формуле значение мощности и потом вывела на экран все мощности сразу, я не понимаю. Помогите пожалуйста.
446
07 мая 2015 года
Meander
487 / / 04.09.2011
Так, например:
Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    double voltage         = 220.0,//volts
           resistance_min  = 4.5,//ohm
           resistance_max  = 13.5,//ohm
           resistance_step = 0.5,//ohm
           resistance,
           power;//W
           
    cout << "The dependence of the power consumption \n";
    cout << "of the load resistance at a voltage of ";
    cout << voltage << " volts.\n" << endl;
    cout << "resistance, ohm" << " | " << "power, W" << endl;
    cout << "-----------------------------------" << endl;
   
    for(resistance = resistance_min; resistance <= resistance_max; resistance += resistance_step){
      power = voltage * voltage / resistance;
      cout << resistance << "\t|\t" << power << endl;
    }
   
    cout << "-----------------------------------" << endl;
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
326
07 мая 2015 года
sadovoya
757 / / 19.11.2005
Выводим шапку таблицы. Далее в цикле меняем R, считаем для него мощность и выводим строку таблицы:
Код:
#include <iostream>
#include <iomanip> //для манипуляторов setw и т.п.
#include <clocale> //для setlocale

using namespace std;

const double RMIN  = 4.5;
const double RMAX  = 13.5;
const double RSTEP = 0.5;
const char *LN = "-------------------------------------------------";
#define WFLD setw(12) //вводим WFLD который будет у нас означать манипулятор
                      //ширины setw(12)


double power(double r); //функция расчета мощ. по значению сопрот.

int main() {
    setlocale(0,"");//для русификации
    cout << "Таблица. Зависимость мощности от сопротивления." << endl;
    cout << LN << endl;
    cout << "|" << WFLD << "R, Ом" << WFLD << "|" << WFLD << "P, Вт"
         << WFLD << "|" << endl;
    cout << LN << endl;
    double R = RMIN;
    while ( !(R > RMAX) ) {
        cout << "|" << WFLD << R << WFLD << "|" << WFLD << power(R)
             << WFLD << "|" << endl;
        R += RSTEP;
    }
    cout << LN << endl;

    return 0;
}

double power(double r) {
    return 220.0*220.0/r;
}
P.S. Ответ Meander вполне годится, свой даю, раз уж его написал. Просто вовремя не заметил, что уже ответили. Еще у вас что-то невнятное в вопросе сказано об использовании подпрограмм. Так я ввел подпрограмму-функцию power для расчета мощности. Еще вывод строк таблицы тоже можно переделать в подпрограмму, если надо. Думаю, справитесь.
446
07 мая 2015 года
Meander
487 / / 04.09.2011
Цитата: sadovoya
P.S. Ответ Meander вполне годится

Когда посмотрел на Ваш код, он показался мне более элегантным чем мой. Хотя длина кодов, примерно, одинакова, Вы применили больше возможностей языка. Но, вот, setlocale меня смущает, однажды использовал ее и все было нормально, а при переносе экзешника на другую машину появились кракозябры. Видимо, это очень древняя функция. А, вообще, по условию ТС можно десятки вариаций программ написать, слишком абстрактно, имхо. Для этой задачи, ключевой совет: используй цикл.

326
07 мая 2015 года
sadovoya
757 / / 19.11.2005
setlocale из заголовка <clocale> - из "сишного" подмножества языка. С ней проблем меньше, чем с "продвинутыми" современными из <locale>. Там все до конца еще не доведено с национальными локалями, как я понял (хотя еще от конкретного компилятора зависит). У меня проблем пока не было, есть только нюансы с кросплатформенностью linux-windows. На форуме была довольно длинная тема по setlocale и "крокозябрам".
88K
07 мая 2015 года
Енот Иннокентий
2 / / 06.05.2015
Цитата: sadovoya
Еще у вас что-то невнятное в вопросе сказано об использовании подпрограмм.


Так эта задача по теме "Программирование с использованием подпрограмм". Спасибо большое.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог