Объяснение:
С использованием арифметики указателей будет так на чистом С:
В программе, я так понимаю, требовалось поменять 1-ю и последнюю строку в матрице?
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <locale>
#include <new> //для new
using namespace std;
int main()
{
setlocale(LC_ALL, "Ukr");
int n = 3, m = 3;
printf("Кiлькiсть рядкiв матрицi = ");
scanf_s("%d", &n);
printf("Кiлькiсть стовпцiв матрицi = ");
scanf_s("%d", &m);
int** mat;
// Динамічне виділення пам'яті в кучі для матриці
// за до malloc() в стилі С або
// за до new в С++
mat = (int**)malloc(sizeof(int*) * n);
for (int i = 0; i < n; ++i)
*(mat + i) = (int*)malloc(sizeof(int) * m);
srand(time(NULL));
printf("Була:\n");
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
*(*(mat + i) + j) = (int) rand() % 21 - 10;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
printf("%5d", *(*(mat + i) + j));
printf("\n");
}
// Переставити 1-й та останній рядок
printf("Cтала:\n");
int* temp = *mat;
*mat = *(mat + n - 1);
*(mat + n - 1) = temp;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
printf("%5d", *(*(mat + i) + j));
printf("\n");
}
// Звільнення пам'яті з кучі (якщо було new, то delete)
for (int i = 0; i < n; ++i)
free(*(mat + i));
free(mat);
return 0;
}
Поделитесь своими знаниями, ответьте на вопрос:
Даны четыре вещественных числа. определить , сколько из них отрицательных.
a,b,c,d:real;
k:byte;
Begin
k:=0;
Write('Введите четыре вещественных числа: ');
ReadLn(a,b,c,d);
if a<0 then k:=k+1;
if b<0 then k:=k+1;
if c<0 then k:=k+1;
if d<0 then k:=k+1;
WriteLn('Количество отрицательных: ',k);
End.