Материал: LR_7_Massivy_i_fayly

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Примеры работы с массивами и файлами

Задача 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);

Порядок выполнения работы.

  1. Ознакомится с теоретической частью лабораторной работы.

  2. Выполнить задание по работе с одномерными массивами в соответствии с вариантом.

  3. Выполнить задание по работе с многомерными массивами в соответствии с вариантом.

  4. Сделать выводы о полученных результатах работы программ.

Содержание отчета

    1. Титульный лист с названием лабораторной работы, номером своего варианта, фамилией студента(ов) и группы.

    2. На первом после титульного листа указать :

- Название работы.

- Цель.

- Задание по варианту.

    1. Текст программы.

    2. Результаты работы программы.

    3. Выводы о полученных результатах работы программы.

Контрольные вопросы

    1. Что такое массив данных, индекс массива, размер массива, размер элемента массива?

    2. Как реализовывается передача массива в функцию, приведите синтаксис;

    3. Опишите функцию ввода элементов в массив;

    4. Опишите функцию вывода элементов из массива;

    5. Опишите функцию заполнения массива случайными значениями;

    6. Этапы работы с файлами;

    7. Режимы работы с файлами;

    8. Основные функции работы с текстовыми файлами.

Список рекомендуемой литературы

  1. Липпман С. Б. Основы программирования на C++: Пер. с англ. — М.:Вильямс, 2002. — 256 с.

  2. Липпман С. Б., Лажойе Ж. Язык программирования С++. Вводный курс: Пер. с англ. — 3-е изд. — М.: ДМК, 2001. — 1104 с.

  3. Страуструп Б. Язык программирования C++: Пер. с англ. — 3-е спец. изд. — М.: Бином, 2003. — 1104 с.

  4. Страуструп Б. Дизайн и эволюция языка C++. Объектно-ориентированный язык программирования: Пер. с англ. — М.: ДМК пресс, Питер, 2006. — 448 с.

  5. Эккель Б. Философия C++. Введение в стандартный C++: Пер. с англ. — 2-е изд. — СПб.: Питер, 2004. — 572 с.

  6. Эккель Б., Эллисон Ч. Философия C++. Практическое программирование: Пер. с англ. — СПб.: Питер, 2004. — 608 с.

Приложение

Варианты заданий на лабораторную работу

Для решения задачи согласно варианту предоставить пользователю возможность выбора варианта ввода (с клавиатуры, случайные числа из диапазона от x до y) и вывода элементов массива. После инициализации массива A следует его сохранить в файл 1. Далее считать данные из файла в массив B, выполнить задание согласно варианту и сохранить результат в файл 2.

    1. Найти сумму отрицательных элементов массива. Все четные элементы массива разделить на 2.

    2. Найти количество элементов массива, больших заданного числа. Найти минимальный элемент массива и вычесть его из всех остальных элементов кроме него самого.

    3. Найти среднее арифметическое элементов массива. Поменять местами элементы, стоящие на четных и нечетных позициях.

    4. Указать индексы всех положительных чисел. Умножить отрицательные элементы массива на 2.

    5. Определить, сколько раз меняется знак в последовательности чисел. Умножить все элементы массива на наименьший отрицательный элемент.

    6. Определить, содержится ли в массиве только одно отрицательное число. Циклически сдвинуть все элементы массива на 1 элемент вправо.

    7. Определить, содержатся ли в массиве хотя бы два отрицательных числа. Если да, прибавить сумму этих чисел ко всем элементам массива, в противном случае оставить массив неизменным.

    8. Указать индексы всех чисел, больших суммы всех чисел. Умножить все элементы массива на наибольший элемент.

    9. Указать, упорядочены ли числа в массиве по убыванию. Если нет, заполнить весь массив членами арифметической прогрессии с заданным начальным значением и разностью.

    10. Определить число элементов массива из диапазона [А;В]. Вычесть из всех четных элементов массива сумму всех элементов массива.

*Для всех заданий предусмотреть обработку исключительных ситуаций. При возникновении ситуации приводящей к исключению текущий шаг должен быть пропущен и программа должна перейти к следующему шагу вычислений. Пользователь должен быть проинформирован о этом.

Источник: https://studfile.net/preview/16485830/