Пример выполнения первого семинара (1153712)
Текст из файла
Пример выполнения семинара 1 по курсу «Программирование и Основы Алгоритмизации 1/2»
Задание 1 (задачи раздела 5 семинара)
Условие
А—начальная стоимость оборудования. В первый год эксплуатации стоимость оборудования снижается на В руб., а в каждый следующий год снижение стоимости уменьшается на р % (относительно предыдущего года). Определить, через сколько лет стоимость оборудования станет меньше А/2. Рассматривать срок не более N лет.
Состав данных
Имя | Смысл | Тип | Структура |
Исходные данные | |||
A | начальная стоимость оборудования | вещественный | простая переменная |
B | начальное снижение стоимости | вещественный | простая переменная |
р | процентное уменьшение снижения стоимости | вещественный | простая переменная |
N | максимальное число лет | целый | простая переменная |
Выходные данные | |||
i | искомый номер года | целый | простая переменная |
Промежуточные переменные | |||
At | текущая стоимость оборудования | вещественный | простая переменная |
Bt | текущее ежегодное снижение стоимости | вещественный | простая переменная |
Ф
орма ввода1
Ф
орма вывода
Блок-схема алгоритма
Программа на СИ (консольное приложение MS Visual Studio 2008)
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
double A,B,p,At,Bt; int N,i;
cout<<"A, B, p, N\n";
cin>>A>>B>>p>>N;
At=A; Bt=B; i=1;
while (At>=A/2 && i<=N)
{
At=At-Bt;
Bt=Bt-Bt*p/100;
i=i+1;
}
if (At<A/2)
{
i=i-1;
cout<<"i="<<i;
}
else
cout<<"Time is over"<<endl;
_getch();
}
Задание 2 (Задачи раздела 6 семинара)
Условие
Дан массив а из N элементов (N10). Вычислить произведение элементов массива, меньших заданного значения с.
Состав данных
Имя | Смысл | Тип | Структура |
Исходные данные | |||
с | заданное значение | веществ. | простая переменная |
N | число элементов массива | целый | простая переменная |
а | заданный массив | веществ. | одномерный массив из 10 элементов |
Выходные данные | |||
р | произведение элементов массива, удовлетворяющих условию | веществ. | простая переменная |
Промежуточные данные | |||
i | счетчик элементов массива | целый | простая переменная |
k | количество элементов, удовлетворяющих условию | целый | простая переменная |
Примечание 1. Структура массива а предполагает отведение под а десяти ячеек памяти. В программе описывается массив а из десяти элементов, a используются лишь первые N них. Пользователь данной программы должен помнить, что вводимое значение числа элементов массива должно находиться в интервале 1N10. Проверка корректности введенного значения N, несомненно, улучшила бы надежность программы; с целью упрощения программы мы не делаем такой проверки. Для устранения необходимости распределения памяти под массив «по максимуму» в любом алгоритмическом языке, требующем компиляции, следует использовать операторы динамического распределения памяти. Этот материал будет рассмотрен в следующих занятиях.
Ф
орма ввода
Форма вывода
Блок-схема алгоритма
Примечание 2.
Для накапливания произведения необходимо перед циклом переменной р присвоить начальное значение 1 (умножение на 1 не изменяет произведение). Переменная k нужна для выявления ситуации отсутствия элементов, меньших заданного значения; развилка после цикла позволяет обнаружить эту ситуацию.
Программа на СИ (консольное приложение MS Visual Studio 2008)
#include <stdio.h>
#include <conio.h>
void main()
{float a[10],c,p; int N,k,i;
printf("Input N, c\n");
scanf_s("%d%f",&N,&c);
printf("Input a of %d elements\n",N);
/* Далее цикл для поэлементного ввода массива*/
for (i=0; i<N; i++)
scanf_s("%f", &a[i]);/*Далее алгоритм по блок-схеме*/
p=1; k=0;
for (i=0; i<N; i++)
if (a[i]<c)
{ p=p*a[i];
k=k+1;
}
if (k==0)
printf("no such element\n");
else
printf(" p=%f \n",p);
_getch();
}
Примечание 3. Для выявления ситуации отсутствия элементов, меньших заданного значения; необязательно вычислять количество таких элементов. Достаточно переменной k присвоить значение 0 до начала цикла (как было сделано выше), а при выполнении условия поменять значение k на 1 (то есть вместо оператора k=k+1 использовать оператор k=1). Тогда переменная k будет играть роль индикатора (флажка) наличия элементов, удовлетворяющих условию. Алгоритм с индикатором k предусматривает выполнение меньшего количества операций сложения, и поэтому является более быстродействующим.
Задание 3 (Задачи раздела 7 семинара)
Условие
Дана матрица а из N строк и M столбцов (N5, M5). Для каждой строки матрицы найти сумму элементов и определить число строк, для которых эта сумма положительна.
Состав данных
Имя | Смысл | Тип | Структура |
Исходные данные | |||
N | число строк матрицы | целый | простая переменная |
М | число столбцов | целый | простая переменная |
а | заданная матрица | вещественный | двумерный массив размером 5*5 |
Выходные данные | |||
i | счетчик строк матрицы | целый | простая переменная |
s | сумма элементов i-ой строки | вещественный | простая переменная |
k | число строк с положительной суммой элементов | целый | простая переменная |
Промежуточные данные | |||
j | счетчик столбцов матрицы | целый | простая переменная |
Примечание 4. Считая s простой переменной, мы предполагаем, что значения сумм всех строк должны последовательно записываться в одну ячейку памяти. В этом случае в одном цикле по строкам мы должны вычислить сумму элементов строки s, вывести s и сравнить ее с нулем для вычисления k. Можно было объявить s как одномерный массив (число его элементов равно числу строк матрицы); тогда алгоритм обработки мог бы состоять из двух последовательных циклов по строкам: в первом из них вычислялись бы все элементы массива s и накапливалось значение k, а во втором производился бы вывод значений элементов массива s.
Таким образом, этот несложный пример иллюстрирует два очень важных положения:
-
выбор структуры данных (простая переменная или массив) может быть неоднозначен;
-
выбор структуры данных влияет на алгоритм.
Форма ввода
Ф
орма вывода
Блок-схема алгоритма
П
римечание 5. Обратите внимание на нумерацию блоков схемы, приведенной выше. Нумерация нужна для сложных блок-схем, которые не умещаются на одной странице или некоторые блоки которых отображают обобщенное действие и подлежат последующей детализации. Нумерация не обязательно производится подряд, некоторые блоки могут не иметь номеров. Для рассматриваемой блок-схемы является обобщенным блок 6, его содержание раскрыто ниже. Обратите внимание на значки, с помощью которых показывается связь между исходной и подчиненной блок-схемами. Подставив в исходную блок-схему вместо блока 6 его расшифровку, получим детальный алгоритм решения задачи.
да
Программа на СИ (консольное приложение MS Visual Studio 2008)
#include <stdio.h>
#include <conio.h>
using namespace std;
void main()
{float a[5][5],s; int N,M,k,i,j;
printf("Input N, M\n");
scanf_s("%d%d",&N, &M);
printf("Input a %d * %d\n",N,M);
/* Далее цикл для поэлементного ввода матрицы*/
for (i=0; i<N; i++)
for (j=0; j<M; j++)
scanf_s("%f", &a[i][j]);
printf(“ i s\n”); /*вывод заголовков столбцов*/
/*Далее алгоритм по блок-схеме*/
k=0;
for (i=0; i<N; i++)
{
s=0;
for (j=0; j<M; j++)
s=s+a[i][j];
printf(“ %d %f\n”, i,s);
if (s>0)
{ k=k+1;
}
}
printf(" k=%d \n",k);
_getch();
}
1 Формы ввода и вывода делать необязательно
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.