вторник, 4 марта 2014 г.

Задание 1. ООП. Консольное приложение в СП Visual C++ (Циклы)




Задание


Напишите программу, реализующую Вашу задачу. В программе обязательно должны присутствовать:
  • цикл for;
  • совмещение операции присваивания с бинарными операциями (например, a+=b);
  • операторы scanf и printf . 



 Указания:

Задача предполагает обязательную распечатку таблицы и расчет суммы или числа слагаемых (всех имеющихся или удовлетворяющих некоторому условию).

Рассмотрим задачу
Написать программу, которая распечатывает таблицу стоимости почтовой пересылки для значений веса посылки  от Рn  до Рk кг с шагом 0.5 кг, если пересылка 1 кг стоит 53 руб.  Подсчитать количество строк в таблице. 

План программы:
1.Ввести с клавиатуры значения Рn  и Рk.
2. Напечатать Заголовок таблицы.
3. Написать цикл, на каждом шаге которого
  •  вычисляется текущее значение веса P;
  • вычисляется стоимость пересылки этого веса St;
  •  вычисляется номер строки i;
  • печатается номер строки, вес и стоимость.

4. Закончить печать таблицы
5. Вывести число строк таблицы


Программа будет выглядеть примерно так (см. пояснения после текста программы и комментарии после // в строках):
 

#include <stdio.h> // подключаем библиотеку стандартного ввода-вывода
void main()
{
            float pn,pk,P,St;
            int i=0;
            printf("pn,pk=");    //вывод сопровождающего текста
            scanf("%f%f",&pn,&pk);  //ввод с клавиатуры
            printf("---------------------------- \n");      // печать заголовка таблицы
            printf(" |  i  |    P (kg)   |    St (rub)    |\n");
            printf("---------------------------- \n");
            for(P=pn;P<=pk;P+=0.5)                 //начало цикла Р изменяется от начального
                                                                    //до конечного значений
            {
                        St=P*53;
                        i++;
                        printf(" | %2d   | %6.3f  | %6.3f |\n",i,P,St);
            }                                                                                   //конец цикла
            printf("---------------------------- \n");
            printf(" chislo strok i=%d \n",i);
}

Цикл повторяет выполнение операторов, стоящих в теле цикла, пока условие внутри скобок в строке for верно. Тело цикла составляет один оператор после for() или блок в скобках { }, записанный сразу после for.

Операторы ввода (scanf) и вывода (printf) содержат форматы, которые показывают, как вводить (выводить) данную переменную. Например, формат %d служит для вывода целых данных. %2d   показывает, что на данное отводится 2 позиции. %6.3f показывает, что на выводимое вещественное данное отводится всего 6 позиций, из них 3 –после десятичной точки. Чтобы таблица была прямой, нужно записать такой формат, чтобы в него вмещалось самое длинное выводимое число.
 
В операторе ввода   scanf("%f%f",&pn,&pk);  в скобках записываются в кавычках форматы (по числу вводимых переменных) и ссылки на переменные (их имена со значком &). Если нужно ввести одну переменную целого типа, можно написать scanf("%d",&i);

Если нужно подсчитать не все строки, а часть, например,  количество строк, где стоимость меньше 500 руб, то можно написать так:

         int n=0;   
        for(P=pn;P<=pk;P+=0.5)              //начало цикла Р изменяется от начального
                                                             //до конечного значений
            {
                        St=P*53;
                        if (St<=500) n++;
                        i++;
                        printf(" | %2d   | %6.3f  | %6.3f |\n",i,P,St);
            }    

Комментариев нет:

Отправить комментарий