Одномерные массивы

Понятие массива и правила описания массивов в программах на языке С. Рассмотрение основных алгоритмов обработки одномерных массивов. Примеры программ на языке С для всех рассмотренных алгоритмов. Примеры решения задач по обработке одномерных массивов.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 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]=1

a[1]=3

a[2]=0

a[3]=x6

a[4]=-3

a[5]=7

a[6]=4

a[7]=0

a[8]=1

t1=2 t2=7 max=7

2)

Массив A:

a[0]=0

a[1]=1

a[2]=-2

a[3]=4

a[4]=0

t1=0 t2=4 max=4

3)

Массив A:

a[0]=1

a[1]=2

a[2]=0

a[3]=5

a[4]=0

a[5]=3

a[6]=8

a[7]=0

a[8]=3

a[9]=1

t1=2 t2=7 max=8

4)

Массив A:

a[0]=1

a[1]=2

a[2]=3

a[3]=4

В массиве нет нулей

5)

Массив A:

a[0]=1

a[1]=0

a[2]=2

a[3]=3

a[4]=4

В массиве только один ноль или они располагаются друг за другом

t1=1 t2=1 max=0

6)

Массив A:

a[0]=1

a[1]=2

a[2]=0

a[3]=0

a[4]=5

a[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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.