Лаб. 4 ОП (Вариант 20)
.docxЗадание 1:
#include <stdlib.h>
#include <clocale>
#include <time.h>
#include <iostream>
#include <iomanip>
void ma(int *c, int n)
{
int *yc;
for (yc = c; yc < (c + n); yc++)
*yc = rand() % 100 - 50;
}
void pm(int *c, int n)
{
int i;
for (i = 0; i < n; i++, c++){
printf("%d",*c);
printf(" ");
}
}
int *ot(int *c, int n)
{
int *yc=c + 0;
int schet=0;
for (int i=0; i<n; i++)
{
if (*(c+i)<0)
{
yc=(c+i);
return yc;
break;
}
if (*(c+i)>0)
{
schet = schet + 1;
}
}
if (schet=n)
{
printf("\nОтрицательных элементов нет!");
}
}
int raz(int *c, int n, int *otr) {
int i;
int len=0;
for (i=0; (c+i) < otr; i++){
len=len + 1;
}
return len;
}
int main() {
setlocale(LC_ALL, "Russian");
srand(time(0));
int const n = 5;
int const n2 = 8;
int m[n];
int m2[n2];
int *col_l1, *col_l2;
int l_raz1, col_p1;
int l_raz2, col_p2;
ma(m, n);
ma(m2, n2);
printf("Массив 1:\n");
pm(m, n);
col_l1=ot(m, n);
printf("\nПоложение первого отрицательного элемента: %p\n", col_l1);
printf("Первый отрицательный элемент: %d\n", *(col_l1));
l_raz1=raz(m, n, col_l1);
printf("Количество элементов до первого отрицательного элемента %d\n", l_raz1);
col_p1=n - l_raz1 - 1;
printf("Количество элементов после первого отрицательного элемента: %d\n", col_p1);
printf("\nМассив 2:\n");
pm(m2, n2);
col_l2=ot(m2, n2);
printf("\nПоложение первого отрицательного элемента: %p\n", col_l2);
printf("Первый отрицательный элемент: %d\n", *(col_l2));
l_raz2=raz(m2, n2, col_l2);
printf("Количество элементов до первого отрицательного элемента %d\n", l_raz2);
col_p2=n2 - l_raz2 - 1;
printf("Количество элементов после первого отрицательного элемента: %d\n", col_p2);
}
Задание 2:
#include <stdlib.h>
#include <clocale>
#include <time.h>
#include <iostream>
#include <iomanip>
void ma(int *c, int n, int m)
{
for(int i = 0; i < n * m; i++){
*(c + i) = rand() % 100-50;
}
}
void pm(int* c, int n, int m){
int j=0;
int sum1=0,sum2=0,sum=0;
for(int i = 0; i < m * n; i++){
if (((i + 1) % m == 0) && (i<n*m/2)){
printf("%4d\n", *(c + i));
j+=m;
}
else{
if(((i + 1) % m == 0) && (i>n*m/2)){
printf("\x1B[32m%4d\033[0m\n", *(c + i));
j+=m;
sum1=sum1+*(c+i);
}
else{
if(((i<m/2+j) && (i<n*m/2)) || ((i+ 1>m/2+j) && (i>n*m/2))){
sum2=sum2+*(c+i);
printf("\x1B[32m%4d\033[0m", *(c + i));
}
else{
printf("%4d", *(c + i));
}
}
}
}
sum=sum+sum1+sum2;
printf("Сумма:%d",sum);
}
int main() {
setlocale(LC_ALL, "Russian");
srand(time(0));
int const n = 12;
int const m = 10;
int c[n][m];
ma(*c, n, m);
pm(*c, n, m);
}