Рок C/C++ Вступление. Hello World!



бет9/12
Дата07.02.2022
өлшемі498,5 Kb.
#96247
түріУрок
1   ...   4   5   6   7   8   9   10   11   12
Байланысты:
C общсвед

Урок 6. C/C++ Массивы.


Массив - это набор элементов(данных) одинакового типа, под одним именем, чтобы обратится к элементу массива, нужно задать имя массива и номер элемента. Объявление массива похоже на объявление переменной, отличие лишь в том что нужно добавить количество элементов. Количеством элементов может выступать только целое число или целочисленная константа.
Синтаксис: тип имя_массива[количество элементов];
Например:
const int M=10;
double a[10];
int b[M];
Присвоение:
a[0]=2;
a[4]=8;
Нужно помнить, что нумерация у массивов начинается с 0, следовательно массив из 10 элементов, a[10], будет адресоваться от a[0] до a[9], при обращении к a[10], вероятнее всего произойдет ошибка, либо будут получены неверные данные.
Инициализация:
int a[5] = {1,2,3,4,5};
int b
[5] = {1,2,3};
int d
[] = {1,2,3};
Как вы уже догадались работать с массивами удобнее всего через циклы, т.к. нужно выполнять одно и тоже действие, только с разными ячейками.
Давайте введем вручную 5 значений в массив и потом выведем их на экран используя циклы.
#include
#include
using namespace std;
void main()
{
setlocale (LC_CTYPE,"rus");
int arr
[5];
for (int k=0;k<5;k++)
{
cout<<"Введите элемент №"<cin>>arr
[k];
}
for (int k=0;k<5;k++)
{
cout<<"Элемент №"<}
}
Компилируем нашу программу нажатием ctrl+F5 или (Dedug -> Start without debugging). И видим результат.
Результат
Введите элемент №0: 1
Введите элемент №1: 2
Введите элемент №2: 3
Введите элемент №3: 4
Введите элемент №4: 5
Элемент №0= 1
Элемент №1= 2
Элемент №2= 3
Элемент №3= 4
Элемент №4= 5
Для продолжения нажмите любую клавишу . . .
Например: Дан массив из N целых чисел. Необходимо подсчитать a1-a2+a3-a4+..-aN
Например:
#include
#include
#include
#include
using namespace std;
void main()
{
setlocale (LC_CTYPE,"rus");
int a[50], N;
int sum=0;
srand(time(NULL));

cout<<"Введите кол-во элементов: "; 

cin>>N;


for(int k=0; k

{
a[k]=rand()%9+1;


}

for(int k=0;k

{cout<

for(int k=0; k

{

if (k%2==0)

sum+=a[k];
else
sum-=a[k];
}
cout<cout<<"Сумма = "<cout<}
Компилируем нашу программу нажатием ctrl+F5 или (Dedug -> Start without debugging). И видим результат.
Результат
Введите кол-во элементов: 20
6 4 6 1 4 3 4 7 9 7
8 9 5 3 3 3 3 8 5 6
Сумма = 2
Для продолжения нажмите любую клавишу . . .
Например: Дан массив символов, содержащий как большие, так и малые буквы. Переписать массив так, чтобы большие и малые буквы чередовались. (Если каких-то символов больше – то записать их в конец массива)
Например:
#include
#include
#include
#include
using namespace std;

void main()


{
setlocale (LC_CTYPE,"rus");
const int M=9;
char a[M];
char sch[M];
char bch[M];
int cs=0, cb=0, k;
srand(time(NULL));
for(k=0;k{
cout<<"Введите символ: ";
cin>>a[k];
}
cout<<"Начальный массив\n";
for (k=0;k{
cout<}
cout<<"\n";

for(k=0; k
{
if(a
[k]>=97)
{
sch
[cs]=a[k];

cs++;

}
}


for(k=0;k

{
if(a[k]<=90)


{
bch[cb]=a[k];
cb++;
}
}
cout<<"Маленьких букв "<

if(cs

{
for(k=0;k

if(k%2==0&&cs>0)

{

cs--;



a[k]=sch[cs];
}
else
{
cb--;
a[k]=bch[cb];
}
}
else
{
for(k=0;kif(k%2==0&&cb>0)
{
cb--;
a[k]=bch[cb];
}
else
{
cs--;
a[k]=sch[cs];
}
}
cout<<"Результирующий массив \n";
for (k=0;k{
cout<}
cout<<"\n";
}
Компилируем нашу программу нажатием ctrl+F5 или (Dedug -> Start without debugging). И видим результат.
Результат
Введите символ: a
Введите символ: b
Введите символ: c
Введите символ: d
Введите символ: e
Введите символ: f
Введите символ: A
Введите символ: B
Введите символ: C
Начальный массив
a b c d e f A B C
Маленьких букв 6 больших букв 3
Результирующий массив
C f B e A d c b a
Для продолжения нажмите любую клавишу . . .
Многомерные массивы - это массивы в которых используется 2 или более идентификаторов для нумерации элементов, объявляются они точно так же:
const int M=10, N=15;
const int x=100, y=100, z=100;
double a[10][2];
int b[M][N]; 
int koordinat[x][y][z]; 
Рассмотрим работу с многомерными массивами, на примере двухмерного, для этого нам понадобиться вложенный цикл. Например: Дан двумерный массив размером 10х10 элементов. Необходимо подсчитать сумму элементов, находящихся выше главной диагонали и сумму элементов, находящихся ниже главной диагонали массива.
Например:
#include
#include
#include
#include
using namespace std;

void main()


{
setlocale (LC_CTYPE,"rus");

int num[10][10];


int sum=0, bsum=0;
srand(time(NULL));

for(int k=0; k<10; k++)


{
for(int j=0; j<10; j++)
num[k][j]=5;
}
for(int k=0; k<10; k++)
{
{
for(int j=0; j<10; j++)
cout<}
cout<}

for(int k=0;k<10;k++)


{
for(int j=k+1; j<10; j++)
{
sum+=num[k][j];
}
}
cout<<"Сумма над диагональю = "<for(int k=0;k<10;k++)
{
for(int j=0; j{
bsum+=num[k][j];
}
}
cout<<"Cумма под диаганалью = "<}
Компилируем нашу программу нажатием ctrl+F5 или (Dedug -> Start without debugging). И видим результат.
Результат_Введите_кол-во_элементов:_15_4_2_9_1_9_9_7_4_3_5_2_5_3_8_6_Сумма_=_501_Для_продолжения_нажмите_любую_клавишу_._._.__Задача2'>Результат
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
Сумма над диагональю = 225
Cумма под диаганалью = 225
Для продолжения нажмите любую клавишу . . .
Задача: 
Дан массив из N вещественных чисел. Необходимо подсчитать a1*a1 + a2*a2 + …aN*aN
Решение:
#include
#include
#include
#include
using namespace std;
void main()
{
setlocale (LC_CTYPE,"rus");
int a[50], N;
int sum=0;
srand(time(NULL));
cout<<"Введите кол-во элементов: ";
cin>>N;
for(int k=0; k{
a[k]=rand()%9+1;
}
for(int k=0;k{cout<for(int k=0; k{
sum+=a[k]*a[k];
}
cout<cout<<"Сумма = "<cout<}
Компилируем нашу программу нажатием ctrl+F5 или (Dedug -> Start without debugging). И видим результат.
Результат
Введите кол-во элементов: 15
4 2 9 1 9 9 7 4 3 5
2 5 3 8 6
Сумма = 501
Для продолжения нажмите любую клавишу . . .
Задача2: 
Дан массив целых чисел. Переписать его так, чтобы элементы со значениями меньшими A (вводит пользователь) находились в начале массива, а большие – в конце.
Решение:
#include
#include
#include
#include
using namespace std;
void main()
{
setlocale (LC_CTYPE,"rus");
int a[5];
int b[5]={0};
int N=5;
int counter=0, m, x=0,k=0,j=4, min;
srand(time(NULL));
for(int m=0; m{
a[m]=rand()%19-10;
}
for(int m=0; m{
cout<}
cout<<"\n";
cout<<"Меньше какого значения перемещать элементы в начало массива?";
cin>>min;
for(int x=0;x{
if(a[x]<=min)
{
b[k]=a[x];
k++;
}
if(a[x]>min)
{
b[j]=a[x];
j--;
}
}

for(int m=0; m
{
a[m]=b[m];
}

cout<<"\n";


for(int m=0; m{
cout<}
cout<<"\n";
}
Компилируем нашу программу нажатием ctrl+F5 или (Dedug -> Start without debugging). И видим результат.
Результат
7 8 -5 3 7
Меньше какого значения перемещать элементы в начало массива?3
-5 3 7 8 7
Для продолжения нажмите любую клавишу . . .
Задача3: 
Дан массив целых чисел. Выяснить упорядочены ли они по возрастанию или нет
Решение:
#include
#include
#include
#include
using namespace std;
void main()
{
setlocale (LC_CTYPE,"rus");
int num[5];
int hold=0, j=1;
srand(time(NULL));

for(int k=0; k<5; k++)


{
cout<<"Введите число: ";
cin>>num[k];
}
for(int k=0;k<5;k++)
{
if(num[k]{
hold++;
}
else
{break;}
j++;
}
if(hold==4)
{
cout<<"Упорядоченны\n";
}
else
cout<<"Не упорядоченны\n";
}
Компилируем нашу программу нажатием ctrl+F5 или (Dedug -> Start without debugging). И видим результат.
Результат
Введите число: 1
Введите число: 2
Введите число: 3
Введите число: 4
Введите число: 5
Упорядоченны
Для продолжения нажмите любую клавишу . . .
Задача4: 
Дан массив целых чисел. Найти номер элемента которому принадлежит заданное пользователем значение.
Решение:
#include
#include
#include
#include
using namespace std;
void main()
{
setlocale (LC_CTYPE,"rus");
int num[5];
int hold=0, j=0;
srand(time(NULL));
for(int k=0; k<5; k++)
{
cout<<"Введите число: ";
cin>>num[k];
}
cout<<"Введитне значение, которе будем искать в массиве\n";
cin>>hold;
for(int k=0;k<5;k++)
{
if(num[k]==hold)
{
cout<<"Элемент № "<j++;
break;
}
}

if(j!=1)
{


cout<<"Нет такого значения в массиве\n";
}
}
Компилируем нашу программу нажатием ctrl+F5 или (Dedug -> Start without debugging). И видим результат.
Результат
Введите число: 12
Введите число: 3
Введите число: 4
Введите число: 5
Введите число: 6
Введитне значение, которе будем искать в массиве
4
Элемент № 3
Для продолжения нажмите любую клавишу . . .
Задача5: 
Дан двумерный массив 10х10. Необходимо заменить на 0 значения всех элементов, которые находятся на главной диагонали и ниже ее.
Решение:
#include
#include
#include
#include
using namespace std;
void main()
{
setlocale (LC_CTYPE,"rus");

int num[10][10];


int sum=0, bsum=0;
srand(time(NULL));

for(int k=0; k<10; k++)


{
for(int j=0; j<10; j++)
{num[k][j]=5;}
}

for(int k=0;k<10;k++)


{
for(int j=0; j{
num[k][j]=0;
}
}

for(int k=0; k<10; k++)


{
for(int j=0; j<10; j++)
{
cout<}
cout<}
}
Компилируем нашу программу нажатием ctrl+F5 или (Dedug -> Start without debugging). И видим результат.
Результат
0 5 5 5 5 5 5 5 5 5
0 0 5 5 5 5 5 5 5 5
0 0 0 5 5 5 5 5 5 5
0 0 0 0 5 5 5 5 5 5
0 0 0 0 0 5 5 5 5 5
0 0 0 0 0 0 5 5 5 5
0 0 0 0 0 0 0 5 5 5
0 0 0 0 0 0 0 0 5 5
0 0 0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0 0 0
Для продолжения нажмите любую клавишу . . .
Задача6: 
В двумерном массиве размером N*N элементов найти и вывести на экран столбцы, значения элементов в которых упорядочены по возрастанию.
Решение:
#include
#include
#include
#include
using namespace std;

void main()


{
setlocale (LC_CTYPE,"rus");
const int N=3;
int num[N][N];
int hold=1;
srand(time(NULL));

for(int k=0; k
{
for(int j=0; j{
cout<<"Введите элемент № "<cin>>num[k][j];
}
}

for(int j=0;j
{
hold=1;
for(int k=0; k{
if(num[k][j]{
hold++;
}
if(hold==N)
{
for(int k=0; k{
cout<}
cout<}
}
}
}
Компилируем нашу программу нажатием ctrl+F5 или (Dedug -> Start without debugging). И видим результат.
Результат
Введите элемент № 0-0: 1
Введите элемент № 0-1: 3
Введите элемент № 0-2: 5
Введите элемент № 1-0: 2
Введите элемент № 1-1: 3
Введите элемент № 1-2: 1
Введите элемент № 2-0: 5
Введите элемент № 2-1: 2
Введите элемент № 2-2: 3
1 2 5
Для продолжения нажмите любую клавишу . . .
Перейти к



Достарыңызбен бөлісу:
1   ...   4   5   6   7   8   9   10   11   12




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет