Нужно создать массив, который состоит из положительных значений на главной диагонали двухмерной матрицы.
Использую динамический массив, но у меня что-то не получается, выводит одно число - -84663632
- для всех элементов.
Вот код:
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
int main()
{
srand(time(NULL));
int igor[5][5];
int* ptrIgor = new int[6];
cout << endl;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
igor[i][j] = rand() % 41 - 20;
cout << setw(5) << igor[i][j];
}
cout << endl;
}
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (i == j)
{
igor[i][j] = ptrIgor[i];
}
}
}
for (int k = 0; k < 6; k++)
{
cout << setw(5) << ptrIgor[k];
}
delete[] ptrIgor;
cout << endl;
system("pause");
return 0;
}
Для начала - может, здесь
igor[i][j] = ptrIgor[i];
нужно поменять операнды местами? Вы же хотите хранить данные в ptrIgor
, а не мусорить в igor
?
Затем, у вас матрица 5x5, но вы, судя по
for (int k = 0; k < 6; k++)
{
cout << setw(5) << ptrIgor[k];
}
считаете, что будет шесть положительных элементов на диагонали?
Впрочем, вы в ptrIgor
записываете почему-то все диагональные значения, а не только положительные. Да и как-то вы это странно делаете - не проще ли
for (int i = 0; i < 5; i++)
if (igor[i][i] > 0) ptrIgor[count++] = igor[i][i];
где count
- счетчик. Вот окончательное решение:
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
int main()
{
srand(time(nullptr));
int igor[5][5];
int* ptrIgor = new int[5];
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
igor[i][j] = rand() % 41 - 20;
cout << setw(5) << igor[i][j];
}
cout << endl;
}
cout << endl << endl;
int count = 0;
for (int i = 0; i < 5; i++)
if (igor[i][i] > 0)
{
ptrIgor[count++] = igor[i][i];
}
for (int k = 0; k < count; k++)
{
cout << setw(5) << ptrIgor[k];
}
cout << endl;
delete[] ptrIgor;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Задача такова: нужно реализовать функцию, которая будет считывать строку с файла и записывать ее поэлементно в списокНе посимвольно, все...
Имеется рекурсивный методТак вот, при больших входных значения получаем stack overflow
Как можно реализовать перегрузку операции >> так, чтоб выражение a>>b>>c (a,b,c - объекты одного класса) работало следующим образом: