М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Zvezba1111111
Zvezba1111111
31.03.2020 21:33 •  Информатика

нужна . С++

Мне нужно превратить (int mat[n][m]) в указатель так чтобі это работало((

#include

#include

#include

#include

#include

using namespace std;

int main()

{

setlocale(LC_ALL, "Ukr");

const 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[n][m];

srand(time(NULL));

printf("Була:\n ");

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

for (int j = 0; j < m; j++)

mat[i][j] = rand() % 21 - 10;

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

{

for (int j = 0; j < m; j++)

printf("%d ", mat[i][j]);

printf("\n");

}

printf("Cтала:\n ");

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

{

int* temp = new int[n];

temp[i] = mat[n - 1][i];

mat[n - 1][i] = mat[i][0];

mat[i][0] = temp[i];

}

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

{

for (int j = 0; j < m; j++)

printf("%d ", mat[i][j]);

printf("\n");

}

return 0;

}

👇
Ответ:

Так работать оно никак не будет по 2 причинам

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

{

int* temp = new int[n];

temp[i] = mat[n - 1][i];

mat[n - 1][i] = mat[i][0];

mat[i][0] = temp[i];

}

1. у тебя mat[n][m], а ты пытаешься че-то там обратиться к mat[n - 1][i], а i бегает по n. Ты не написал че должна делать прога, потому сам приведи индексы в чувство.

2. ты зачем то создаёшь новый масив temp, не очищаешь память, но ладно это, так ты создаёшь его для хранения 1 значения. mat[x][y] в данном случае вернёт просто int, потому и делай int temp = mat[x][y] или если так нужен указатель, то int* temp =&mat[x][y] , а ещё лучше почитай про std::swap (как я понял, это надо чтоб поменять местами значения 2 элементов)

4,4(3 оценок)
Ответ:
motakina12
motakina12
31.03.2020

Объяснение:

С использованием арифметики указателей будет так на чистом С:

В программе, я так понимаю, требовалось поменять 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;

}

4,7(79 оценок)
Открыть все ответы
Ответ:
Сашенька228
Сашенька228
31.03.2020
Program yeah;const N=15;const M=15;var A:array [1..N,1..M] of integer;i,j,b,c,x,y:integer;beginrandomize;write('матрица: ');writeln;for i:=1 to N do begin   for j:=1 to M do beginA[i,j]:=random(100);write(A[i,j]:3);end;writeln;end;c:=1;while c<16 do beginfor i:=1 to N do begin   for j:=1 to M do beginb:=A[1,c];end;end;x:=x+b;c:=c+1;end;writeln('сумма первой строчки: ',x);c:=1;while c<16 do beginfor i:=1 to N do begin   for j:=1 to M do beginb:=A[15,c];end;end;y:=y+b;c:=c+1;end;writeln('сумма последней строчки: ',y);x:=x+y;writeln('общая сумма: ',x);end.
4,7(1 оценок)
Ответ:
Diana4441
Diana4441
31.03.2020
Вычислительная техника является важнейшим компонентом процесса вычислений и обработки данных. первыми приспособлениями для вычислений были, вероятно, всем известные счётные палочки, которые и сегодня используются в начальных классах многих школ для обучения счёту. развиваясь, эти приспособления становились более сложными, например, такими как финикийские глиняные фигурки, также предназначаемые для наглядного представления количества считаемых предметов. такими приспособлениями, похоже, пользовались торговцы и счетоводы того времени.
4,6(12 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ