Одномерные и двумерные массивы в языке Cи.




Волжский политехнический институт (филиал) федерального государственного бюджетного образовательного учреждения высшего профессионального образования «Волгоградский государственный технический университет»

(ВПИ (филиал) ВолгГТУ)

 
 
Вечерний факультет


Информатика и технология программирования
Факультет «__________________________________________________»

Кафедра «___________________________________________________»

ЛАБОРАТОРНАЯ РАБОТА №2

 
 
Основы программирования


по дисциплине«____________________________________________»

 
 
Основы программирования на СИ. Массивы. вариант №    


на тему____________________________________________________

______________________________________________________________

 

 
 
Сергей Петрович Иванов


Студент______________________________________________________

(имя, отчество, фамилия)

 

 
 
ВХАЗ-250


Группа________________________

 

Оценка ________________________

 

 
 
ст. преп. Абрамова О. Ф.


Проверил ________________________ _____________________

(подпись и дата подписания) (долж., инициалы и фамилия)

 

Волжский, 2013 г.

 

Лабораторная работа №2

Одномерные и двумерные массивы в языке Cи.

Цель: Изучить алгоритмы работы с одномерными и двумерными массивами и способы их реализации на языке Си.

 

 

Задача:

В одномерном массиве, состоящем из n вещественных элементов:

¨ Распечатать индексы максимальных элементов массива;

¨ Произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

¨ Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине – элементы, стоявшие в четных позициях.

В программе использованы следующие переменные: float a[100], b[100]; int i, j, n, m, k;

n- переменная для хранения количества элементов в массиве;

m - переменная, для хранения максимального элемента массива;

k - переменная, для хранения произведения элементов массива, расположенных между первым и вторым нулевыми элементами;

i – переменная – счетчик, хранит текущий индекс элемента массива;

j - флаг, для проверки есть ли вообще нулевой элемент;

a[100] – одномерный массив;

b[100] – одномерный массив.

 

Блок схема

 

 

 

Листинг программы

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

#include <complex>

#include <conio.h>

#include <iostream>

#include <iomanip>

using namespace std;

int _tmain(int argc, _TCHAR* argv[]) {

float a[100], b[100];

int i, j, n, m = -99999, k = 1;

//ввод границы массива

printf("Vvedite granicy massiva: ");

scanf("%i", &n);

//ввод элементов в массив

for (i = 1; i <= n; i++)

{

printf("a[%i]=", i);

cin>>a[i];

}

// номера максимального элемента массива

for (i = 1; i <= n; i++)

if (a[i] > m) m = a[i];

//вывод индексов максимальных элементов массива

for (i = 1; i <= n; i++)

if (a[i] == m)

cout<<"\nNomer massiva v kotorom naibolshii element: "<<i;

 

// произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

//Нахождение первого 0

m=0;

j=0;

for (i = 1; i <= n; i++)

if (a[i] == 0) { j=j+1;

i = i + 1;

//Нахождение второго 0

for (i; i <= n; i++)

if (a[i] == 0) { j=j+1;

break; }

else

//перемножение между 0

{ m=m+1;

k = k * a[i]; }

}

//проверки на 0

if (k==1 && m==0) cout<<"\n\nNetu nolei\n";

else

if (j<2) cout<<"\n\nTolko 1 nol\n";

else cout << "\n\nProizvedenie massivov mejdy 0: " << k << "\n";

//Преобразовать массив таким образом, чтобы в первой его

//половине располагались элементы, стоявшие в нечетных позициях, а во

//второй половине – элементы, стоявшие в четных позициях.

j=1;

//нахождение не четных и запись в новый массив

for (i = 1; i <= n; i++)

if (i % 2!= 0) {

b[j] = a[i];

j = j + 1;

}

//нахождение четных и запись в тот же новый массив

for (i = 1; i <= n; i++)

if (i % 2 == 0) {

b[j] = a[i];

j = j + 1;

}

//вывод массива

cout<<"\nPreobrazovannii massiv\n\n";

for (int i = 1; i <= n; i++)

cout << setw(3) << b[i];

getch();

return 0;

}

//---------------------------------------------------------------------------

 

 

Результаты тестового прогона программы

Постановка задачи:

Дана матрица А(n,m). Переписать элементы матрицы А, значения которых больше заданного числа С в одномерный массив B.

 

 

Const n= 5;

m= 4;

Var A: array[1..n,1..m] of integer;

B: array[1..n*m] of integer;

I, j, k, c:integer;

begin

writeln (’Введите элементы матрицы А’);

for i:=1 to n do

for j:=1 to m do

read (A[i,j]);

writeln (’Введите с’);

readln (c);

k:= 0;

for i:= 1 to n do

for j:= 1 to m do

if A[i,j]>c

then begin

k:= k+1;

B[k]:= A[i,j]

end;

if k = 0

then writeln (’В матрице А нет элементов, больших с’)

else begin

writeln(’Вывод массива B’);

for i:= 1 to k do

write (B[i], ’ ’)

end

end.

 

Скриншот работы программы

….

 

Постановка задачи:

Дана матрица А(6,3). Отпечатать номер каждой строки матрицы А, в которой второй элемент меньше среднего арифметического элементов этой строки, и число таких строк.

 

const n= 6;

m= 3;

Var A: array[1..n,1..m] of real;

I, j, k: integer;

s, sr: real;

begin

writeln (’Введите элементы матрицы А’);

for i:= 1 to n do

for j:= 1 to m do

read (A[i,j]);

k:= 0;

for i:= 1 to n do

begin

s:= 0;

for j:= 1 to m do

s:= s + A[i,j];

sr:= s/m;

if A[i,2]<sr

then begin

k:= k+1;

writeln (’Номер строки = ’, i)

end

end;

writeln (’Число строк =’, k)

end.

 

 

Скриншот работы программы

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-12-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: