Одномерные массивы
Понятие массива и правила описания массивов в программах на языке С. Рассмотрение основных алгоритмов обработки одномерных массивов. Примеры программ на языке С для всех рассмотренных алгоритмов. Примеры решения задач по обработке одномерных массивов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | русский |
Дата добавления | 22.02.2011 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Решение
Таблица соответствия переменных
Переменные в задаче |
Имя на языке Си |
Тип |
Комментарий |
|
A[] |
A[] |
float |
Одномерный статический массив |
|
n |
n |
int |
Количество элементов массива |
|
P |
P |
float |
Произведение отрицательных чисел |
|
X |
x |
float |
Заданное число |
|
k |
k |
int |
Количество чисел меньших X |
|
- |
k1 |
int |
Количество отрицательных чисел |
|
- |
i |
int |
Номер элемента массива; параметр цикла |
Графическая схема алгоритма
Описание алгоритма
1. блоки 1 - 2 вводятся исходные данные;
2. блоки 3 - 9 вычисление и вывод количества K меньших заданного X;
3. блоки 10 - 18 вычисление количества K1 и произведения P отрицательных элементов массива стоящих на четных местах;
4. блоки 18 - 20 проверка на наличие в массиве отрицательных чисел на четных местах и в случаи выполнения проверки вывод их произведения P.
Листинг программы
#include <stdio.h>
#include <math.h>
main ()
{
float P, A[10], x; //Описание переменных
int i, k1, k, n;
puts (“ Введите число x”);
scanf (“%f”, &x); // Ввод x
puts (“ Введите число элементов массива А”);
scanf (“%d”, &n);
for (i=0; i<n; i++) // Ввод массива
{
printf(“Введите число A[%d]=”, i);
scanf(“%f”, &A[i]);
}
puts(“Массив А”); // Вывод массива
for (i=0; i<n; i++)
printf(“%.2f “, A[i]);
printf(“\n”);
printf(“ x=%.3f \n”, x); // Вывод x
k=0;
for (i=0; i<n; i++)
if (A[i]<x) k=k+1; // Определение кол-ва чисел <x
printf(“ k=%d\n” ,k);
P=1;
k1=0;
for (i=1; i<n; i=i+2)
if (A[i]<0)
{ // Вычисление произведения
P=P*A[i]; // отрицательных чисел
k1=k1+1; // стоящих на четных местах
}
if (k1==0)
printf(“В массиве на чётных местах нет отрицательных чисел \n”);
else
printf(“ P=%6.2f \n” ,P);
}
Тесты
1)
Массив А
3.00 6.00 10.00 -7.00 -3.00 -7.00 -5.00 17.00 6.00 10.00
x=10.000
k=7
P= 49.00
2)
Массив А
2.00 9.00 4.00 6.00 7.00 8.00
x=0.000
k=0
В массиве на чётных местах нет отрицательных чисел
Задача 2.
Вычисление сумм, количеств и произведений элементов массива
Предполагается, что задан массив чисел. Программа должна:
1) вводить размерность и элементы массива;
2) вводить некоторые дополнительные числа;
3) выполнять действия в соответствии с условием задачи;
4) выводить исходные данные и результаты вычислений.
Исходные данные для отладки программы выбрать самостоятельно. Массив объявить как динамический.
Задание:
В одномерном массиве A размерностью n, найти максимальный элемент, расположенный между первым и последним нулевыми элементами массива.
Решение
Таблица соответствия переменных
Переменные в задаче |
Имя на языке Си |
Тип |
Комментарий |
|
max |
max |
int |
Максимальное число |
|
A[] |
A[] |
int |
Одномерный динамический массив |
|
n |
n |
int |
Количество элементов |
|
- |
t1 |
int |
Индекс первого нулевого элемента |
|
- |
t2 |
int |
Индекс последнего нулевого элемента |
|
- |
i |
int |
Номер элемента массива; параметр цикла |
Описание алгоритма
1. блоки 1 - 2 ввод/вывод исходного массива A[];
2. блоки 3 - 5 поиск первого нулевого элемента в массиве;
3. блоки 6 - 7 проверка на наличие в массиве хотя бы одного нулевого элемента и в случаи их отсутствия вывод сообщения «В массиве нет нулей» и переход на конец алгоритма;
4. блоки 8 - 12 поиск последнего нулевого элемента в массиве и сохранение позиции первого нуля в t1, а последнего в t2;
5. блоки 13 - 14 проверка расположения нулевых элементов в массиве и в случаи ошибки вывод сообщения «В массиве только один ноль или они располагаются друг за другом» » и переход на конец алгоритма;
6. блоки 15 - 21 в случаи выполнения проверки (блок 13) поиск максимального элемента между крайними нулевыми элементами и вывод полученного результата.
Графическая схема алгоритма
Листинг программы
#include <stdio.h>
main()
{
int i,t1,t2,n,max;
puts("Введите число элементов массива А");
scanf ("%d", &n);
int*A=new int[n]; //выделение памяти под массив
for(i=0;i<n;i++) //ввод массива
{
printf("a[%2d]=",i);
scanf("%d",&A[i]);
}
puts("Массив A:");
for(i=0;i<n;i++) //вывод массива
printf("a[%d]=%d\n",i,A[i]);
i=0;
while(i<n && A[i]!=0) i=i+1; //поиск позиции первого нуля
if(i>=n)
printf("В массиве нет нулей \n");
else
{
t1=i;
i=n-1;
while(i>=t1 && A[i]!=0) i=i-1; //поиск позиции последнего нуля
t2=i;
if(t1==t2 || t1==t2-1)
printf("В массиве только один ноль или они располагаются друг за другом\n");
else
{
max=A[t1+1];
for(i=t1+1;i<t2;i++)
if(A[i]>max) max=A[i]; //поиск максимального элемента
printf("t1=%d t2=%d max=%d \n",t1,t2,max);
}
}
delete[] A; // освобождение динамической памяти
}
Тесты
1)Массив A:a[0]=1a[1]=3a[2]=0a[3]=x6a[4]=-3a[5]=7a[6]=4a[7]=0a[8]=1t1=2 t2=7 max=7 |
2)Массив A:a[0]=0a[1]=1a[2]=-2a[3]=4a[4]=0t1=0 t2=4 max=4 |
3)Массив A:a[0]=1a[1]=2a[2]=0a[3]=5a[4]=0a[5]=3a[6]=8a[7]=0a[8]=3a[9]=1t1=2 t2=7 max=8 |
|
4)Массив A:a[0]=1a[1]=2a[2]=3a[3]=4В массиве нет нулей |
5)Массив A:a[0]=1a[1]=0a[2]=2a[3]=3a[4]=4В массиве только один ноль или они располагаются друг за другомt1=1 t2=1 max=0 |
6)Массив A:a[0]=1a[1]=2a[2]=0a[3]=0a[4]=5a[5]=2В массиве только один ноль или они располагаются друг за другом |
Размещено на http://www.allbest.ru/
Подобные документы
Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.
лабораторная работа [12,8 K], добавлен 02.12.2014Ознакомление с особенностями программной реализации алгоритмов преобразования одномерных массивов. Исследование развития вычислительной техники, которое подразумевает использование компьютерных и информационных технологий. Изучение интерфейса программы.
курсовая работа [1,0 M], добавлен 02.06.2017Широкое использование компьютерных и информационных технологий. Концепции типов данных. Алгоритмы сортировки одномерных массивов. Описание двумерного массива Паскаля. Методы доступа к элементам массивов. Индексные, динамические и гетерогенные массивы.
курсовая работа [66,3 K], добавлен 07.12.2010Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.
методичка [17,8 K], добавлен 25.11.2010Изучение понятия и основных видов массивов. Ввод массива с клавиатуры и вывод на экран. Сортировка массивов. Метод простых обменов (пузырьковая сортировка). Сортировка простым выбором и простым включением. Решение задач с использованием массивов Паскаля.
курсовая работа [82,1 K], добавлен 18.03.2013Иерархическая структура производного типа данных в языке Паскаль. Определение массива как упорядоченного набора фиксированного количества некоторых значений. Сортировка одномерных и двумерных массивов методом простых обменов, простым выбором и включением.
курсовая работа [48,8 K], добавлен 27.11.2010Работа с массивами, их ввод и вывод, организация программ циклической структуры. Способы описания и использования массивов, алгоритмы их сортировки, сортировка выбором и вставками. Алгоритмы поиска элемента в неупорядоченном и упорядоченном массивах.
лабораторная работа [14,2 K], добавлен 03.10.2010Массив как пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Расположение в последовательных ячейках памяти, обозначение именем массива и индексом, инициализация. Передача одномерных и двумерных массивов в функцию.
лабораторная работа [32,6 K], добавлен 06.07.2009Составление программы разветвляющейся структуры для вычисления заданной функции. Нахождение произведения чётных и нечётных первых чисел натурального ряда. Приёмы программирования обработки одномерных массивов. Расчет суммы положительных элементов массива.
контрольная работа [1,3 M], добавлен 20.12.2012Объявление, выделение, освобождение памяти под динамические массивы. Обращение к элементам. Решение задач с использованием динамических массивов на языке C++. Разработка и реализация программы для формирования и обработки динамического двумерного массива.
курсовая работа [813,4 K], добавлен 13.06.2014