Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Философия программирования на C++ Выпуск 19. Yet another program


Всем привет!

Сегодня мы не будем рассматривать почти ничего нового, а попробуем уже с новыми знаниями написать более-менее полезную программу!

Итак, начнем с идеи. С этого всегда начинаются все программы. Сначала придумывать что сделать, потом как это сделать, а дальше остается только написать и отладить (об отладке мы поговорим чуточку позже...) 

Я предлагаю написать следующую программу (да, вы можете присылать свои идеи и вопросы нам на почту: mystic@online-compiler.ru ) - хотя ее полезность очень сомнительна:

#include <iostream>
using namespace std;
int main() {
    //! Программа вычисляет сумму, произведение и среднее арифметическое введенных чисел
    float number = 0;  // Здесь мы будем хранить введенное вещественно число
    int count = 0;  // А здесь - количество уже введенных чисел
    float sum = 0;  // Тут, соответственно, - сумма
    float multiply = 1.;  // Произведение
    cout << "Please, enter next number (0 for exit): " << endl;
    for (cin >> number; number != 0.; cin >> number) {  // Да, здесь можно писать даже такой код!
        // Здесь очевидно уже введено ненулевое число
        count++;  // Увеличиваем количество введенных чисел
        sum += number;  // Добавляем число к сумме
        multiply *= number;  // Домножаем к произведению
        cout << "Please, enter next number (0 for exit): " << endl;
    }
    // Сюда программа дойдет, когда будет введен 0
    cout << "Sum: " << sum << endl;
    cout << "Mult: " << multiply << endl;
    cout << "Average: " << sum / count << endl;  // Среднее арифметическое - сумму делим на количество
}

Здесь для вас не должно быть ничего нового. Единственное, стоит отметить о нестандартном использовании цикла for. Мы уже говорили, что в нем можно писать любой код - и здесь мы это продемонстрировали. Сначала в инициализации мы вводим с клавиатуры число, затем идет проверка что оно не равно нулю, выполняется тело цикла, и снова вводи число и проверяем, что оно не равно нулю!

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

Итак, мы немного вспомнили про циклы, вещественные числа, добавили оператор *= (это домножить число на то, что стоит справа - совсем как += ). Теперь мы сможем двигаться дальше - впереди нас ждут новые типы данных (на этот раз мы рассмотрим почти все стандартные типы, не только целые и вещественные числа). Мы научимся считывать символы (введенные с клавиатуры).

А сейчас задание на дом: перепишите текущий код через цикл while, свои решения можете присылать нам на почту, мы их рассмотрим и подскажем вам что нужно поправить!

e-mail: mystic@online-compiler.ru 

Всем спасибо, что остаетесь с нами! До следующих выпусков! 


В избранное