Лёша / laba_nomer_7
.docx
Федеральное государственное автономное образовательное учреждение высшего профессионального образования «СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
Институт космических и информационных технологий институт Вычислительная техника кафедра
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №7 тема
Разработка блок-схем алгоритма, разработка и отладка программ обработки одномерных массивов
Преподаватель __________ ______________ подпись, дата инициалы, фамилия
Студент КИ13-11Б ________________ __________ Сафиуллин Д.В. номер группы номер зачетной книжки подпись, дата инициалы, фамилия
Красноярск 2013
|
Цели работы:
закрепить навыки построения блок-схем алгоритма обработки одномерных массивов: научиться обрабатывать одномерные массивы с использованием индексов и указателей.
Задача:
Заменить минимальный элемент массива средним геометрическим положительных элементов массива. Входной файл lb 4_12. in содержит в первой строке одно число – N (количество элементов массива А). Во второй строке входного файла содержится N чисел, разделенных пробелами, и являющихся элементами массива А. Выходной файл lb 4_12. out - в первой строке число, равное количеству элементов массива А, а во второй – элементы массива А.
Порядок выполнения работы:
В соответствии с поставленной задачей необходимо разработать графическую схему алгоритма, составить два варианта программы (один с индексами, другой с указателями) и отладить их в среде С++, продемонстрировать преподавателю, как изменяются основные переменные в отладочном окне при выполнении программы по шагам, подготовить отчет, пройти тест и защитить лабораторную работу перед преподавателем.
#include <iostream>
#include <clocale>
#include <cstdlib>
void main()
{
using namespace std;
setlocale(LC_ALL, "Russian");
cout << "Введите количество элементов массива: ";
int j;
cin >> j;
const int n(100);
double x[n];
int k(1);
while (k<=j)
{
cout << "Введите " << k << " элемент массива: ";
cin >> x[k];
k++;
}
int l(0); // Найдём кол-во положительных чисел
k=1;
while(k<=j)
{
if(x[k]>0)
l++;
k++;
}
double geom(1); // Среднее геометрическое
k=1;
while(k<=j)
{
if(x[k]>0)
geom=geom*pow(x[k],1.0/l);
k++;
}
double min; // Находим минимальные
k=1;
min=x[1];
while(k<j)
{
k++;
if(min>=x[k])
{
min=x[k];
}
}
k=1; // Заменим минимальные на среднее геометрическое
while(k<j)
{
if(x[k]==min)
x[k]=geom;
k++;
}
for(k=1;k<=j;k++)
cout << x[k] << " ";
system("pause");
}
Проверка
j x[n]
Ввод: 3 2 4 5 Вывод: 3.41995 4 5
Ввод: 6 9 -2 -2 1 3 1 Вывод: 9 2.27951 2.27951 1 3 1
Ввод: 4 -3 -2 -3 9 Вывод: -3 -2 9 9
Проверенно на сайте http://www.wolframalpha.com/