-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvariant14.cpp
73 lines (66 loc) · 3.07 KB
/
variant14.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
* Задание за курсова работа вариант 14:
* Даден е двумерен масив A[N,N], където N е цяло число в интервала [2,6] и се въвежда от клавиатурата.
* Да се състави програма, която въвежда стойностите на елементите на масива и реализира следното:
* 1. Намира броя на елементите на масива, които имат стойност по-малка от сумата на индексите им
* 2. Формира нов масив C, който съдържа елементите от масива А, които са разположение под главния диагонал
* 3. Извежда на екрана променения масив в табличен вид
*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main() {
SetConsoleOutputCP(1251); //активира кирилицата в конзолата
int N; //създадохме променлива, в която ще вкараме бройката на редовете и стълбовете
/*
* с цикъл do-while ще следим дали въведеното числа за редове и стълбове влизат в интервала [2,6]
*/
do
{
printf("Въведете броят на редовете и стълбовете (цяло число в интевал [2,6]): ");
scanf("%d", &N); //въвеждаме стойност цяло число за n от конзолата след горния надпис
}while(N<=2 || N>=6);
/*
* while(N<=2 || N>=6); - така следим дали въведеното число не е
* по-малко или равно от 2 или по-голямо или равно от 14
* и ако е, ще ни кара да въвеждаме стойност наново, т.е. ще изпълнява цикъла докато
* не въведем число в интевала от 2 до 6 (т.е. м/у 2 и 6, но без 2 и 6)
*/
float A[N][N]; //създаваме двумерен масив,който има N на брой редове и N стълбове
int br=0; //с br ще следим броя на елементите, които отговарят на критерия в точка 1 от заданието
int counter=0; //с counter ще следим броя на елемените, който са под главния диагонал
printf("\nВъведете елементите на двумерния масив A:\n");
//следва цикъл в цикъл за обхождане на целия масив и въвеждане на елементите:
for(int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
printf("A[%d][%d]= ", i, j); //изписва A[0][0]=, A[0][1]=, A[0][2]= и т.н.
scanf("%f", &A[i][j]); //въвеждаме стойност за елемент на масива от клавиатурата
if(A[i][j]<(i+j)) br++; //по точка 1 покачваме br с едно когато намери такъв елемент
if(i>j) counter++; //добавяме едно към counter когато намери елемент по точка 2
}
}
printf("\nБрой елементи, които имат стойност по-малка от сумата на индексите им: %d\n", br);
float C[counter]; //създаваме масив C с брой елементи равен на counter (елем. под гл. диагонал)
int index=0; //с index ще следим елементите за масив C, когато им присвояваме елементи от A
for(int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
if(i>j) //ако е под главния диагонал индекса на реда е по-голям от този на стълба
{
C[index]=A[i][j];
index++; //след като присвоим стойнсот на C трябва да вдигнем индекса с 1 за сл. ел.
}
}
}
printf("\nМасив C, съдържащ елементите само под главния диагонал на масив A изглежда така:\n");
for(int i=0; i<counter; i++) //цикъл for за обхождане на масив B
{
printf("%f\t", C[i]); //принтване стойностите на елементите на масив C таблично
} printf("\n\n");
//Когато използваме \n в printf това означава нов ред след него.
system("pause"); //задържа конзоалта до натискането на клавиш (Press any key to continue . . .)
return 0;
}