Задача 1. Найти максимальный элемент массива.
Вначале требуется объявить массив и запросить количество элементов в массиве (не больше количества, которое мы укажем при объявлении массива). Затем следует считать значения элементов массива с клавиатуры, после чего осуществить поиск максимального элемента массива.
Для начала присваиваем максимальному найденному элементу значение первого элемента массива.
max = a[0];
После чего проходим по массиву, сравнивая каждый элемент с максимальным. В случае, если текущий элемент массива окажется больше максимального, его значение присвоится переменной max.
#include <conio.h>
#include <stdio.h>
int main() {
int a[100];
int n;
int max;
printf("n= ");
scanf("%d", &n);
printf("massiv:\n");
for (int i = 0; i<n; i++) {
printf("a[%d]= ", i);
scanf("%d", &a[i]);
}
max = a[0];
for (i = 1; i<10; i++) {
if (a[i] > max) {
max = a[i];
}
}
printf("max element is %d", max);
getch();
return 1;
}
Задание 2. Рассмотрим предыдущую задачу для элементов массива, являющихся случайными числами из отрезка [A,B].
Для этого воспользуемся функцией rand();. Для того, чтобы гарантировать выбор случайных чисел из заданного отрезка, используем выражение:
a[i]= rand() % (B - A + 1) + A;
Для того, чтобы при каждом запуске программы в массив заносились различные случайные числа, используем функцию srand (time (NULL));
Подключим заголовочные файлы:
#include <stdlib.h>
#include <ctime>
Получим следующий код программы:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
int main() {
int a[100];
int n;
int max;
srand (time (NULL));
printf("n= ");
scanf("%d", &n);
printf("massiv:\n");
for (int i = 0; i<n; i++) {
a[i]= rand() % (B - A + 1) + A;
printf("a[%d]= %d", i,a[i]);
}
max = a[0];
for (i = 1; i<10; i++) {
if (a[i] > max) {
max = a[i];
}
}
printf("max element is %d", max);
getch();
return 1;
}
Вывод элементов массива в данном случае происходит в том же цикле, где и заполняется значениями массив.
Задание 3. Пусть размер массива и его элементы заданы в текстовом файле. Организовать ввод массива из файла.
int main() {
int d[100];
int i,N;
FILE *ft;
ft=fopen("f.txt","rt");
fscanf(ft,"%d",&N]);
for(i=0;i<N;i++)
fscanf(ft,"%d",&d[i]);
fclose(ft);
}
Файл f.txt открывается в режиме чтения. В начале из него считывается количество элементов массива, затем сами значения элементов. После завершения работы с файлом, он закрывается.
Для записи элемента массива в файл удобно использовать следующий код:
FILE* f=fopen("а.txt","w+");
for(int i=0; i<12; i++)
fprintf(f,"%d ",a[i]);
fclose(f);
Ознакомится с теоретической частью лабораторной работы.
Выполнить задание по работе с одномерными массивами в соответствии с вариантом.
Выполнить задание по работе с многомерными массивами в соответствии с вариантом.
Сделать выводы о полученных результатах работы программ.
Титульный лист с названием лабораторной работы, номером своего варианта, фамилией студента(ов) и группы.
На первом после титульного листа указать :
- Название работы.
- Цель.
- Задание по варианту.
Текст программы.
Результаты работы программы.
Выводы о полученных результатах работы программы.
Что такое массив данных, индекс массива, размер массива, размер элемента массива?
Как реализовывается передача массива в функцию, приведите синтаксис;
Опишите функцию ввода элементов в массив;
Опишите функцию вывода элементов из массива;
Опишите функцию заполнения массива случайными значениями;
Этапы работы с файлами;
Режимы работы с файлами;
Основные функции работы с текстовыми файлами.
Липпман С. Б. Основы программирования на C++: Пер. с англ. — М.:Вильямс, 2002. — 256 с.
Липпман С. Б., Лажойе Ж. Язык программирования С++. Вводный курс: Пер. с англ. — 3-е изд. — М.: ДМК, 2001. — 1104 с.
Страуструп Б. Язык программирования C++: Пер. с англ. — 3-е спец. изд. — М.: Бином, 2003. — 1104 с.
Страуструп Б. Дизайн и эволюция языка C++. Объектно-ориентированный язык программирования: Пер. с англ. — М.: ДМК пресс, Питер, 2006. — 448 с.
Эккель Б. Философия C++. Введение в стандартный C++: Пер. с англ. — 2-е изд. — СПб.: Питер, 2004. — 572 с.
Эккель Б., Эллисон Ч. Философия C++. Практическое программирование: Пер. с англ. — СПб.: Питер, 2004. — 608 с.
Приложение
Для решения задачи согласно варианту предоставить пользователю возможность выбора варианта ввода (с клавиатуры, случайные числа из диапазона от x до y) и вывода элементов массива. После инициализации массива A следует его сохранить в файл 1. Далее считать данные из файла в массив B, выполнить задание согласно варианту и сохранить результат в файл 2.
Найти сумму отрицательных элементов массива. Все четные элементы массива разделить на 2.
Найти количество элементов массива, больших заданного числа. Найти минимальный элемент массива и вычесть его из всех остальных элементов кроме него самого.
Найти среднее арифметическое элементов массива. Поменять местами элементы, стоящие на четных и нечетных позициях.
Указать индексы всех положительных чисел. Умножить отрицательные элементы массива на 2.
Определить, сколько раз меняется знак в последовательности чисел. Умножить все элементы массива на наименьший отрицательный элемент.
Определить, содержится ли в массиве только одно отрицательное число. Циклически сдвинуть все элементы массива на 1 элемент вправо.
Определить, содержатся ли в массиве хотя бы два отрицательных числа. Если да, прибавить сумму этих чисел ко всем элементам массива, в противном случае оставить массив неизменным.
Указать индексы всех чисел, больших суммы всех чисел. Умножить все элементы массива на наибольший элемент.
Указать, упорядочены ли числа в массиве по убыванию. Если нет, заполнить весь массив членами арифметической прогрессии с заданным начальным значением и разностью.
Определить число элементов массива из диапазона [А;В]. Вычесть из всех четных элементов массива сумму всех элементов массива.
*Для всех заданий предусмотреть обработку исключительных ситуаций. При возникновении ситуации приводящей к исключению текущий шаг должен быть пропущен и программа должна перейти к следующему шагу вычислений. Пользователь должен быть проинформирован о этом.