Ошибка в коде с алгоритмом STL
- Составить шаблон функции печати сформированного вами век-тора для любых типов его элементов. Размеры вектора в функцию не передавать!
- Реализовать требуемый алгоритм задания методами контейнера vector и алгоритмами STL.
- Если это не противоречит условию задачи, то заполнение век-тора производить с помощью функций rand иgenerate.
Сформировать и напечатать произвольную квадратную матрицу с целыми элементами, вводя с клавиатуры ее размер N. Определить сумму и произведение элементов каждой строки, исключая первый и последний элемент.
#include <bits/stdc++.h>
using namespace std;
int main()
{
srand(time(0));
setlocale(LC_ALL, "rus_rus.1251");
vector<vector<int> >dvec;
int N;
int i,j;
int s,p;
cout<<"Ââåäèòå ÷èñëî,êîòîðîå áóäåò ðàâíî êîëè÷å÷òâó ñòðîê è ñòîëáöîâ"<< "\t";
cin>>N;
cout<<endl;
for(int i = 0; i<N; i++)
{
vector<int> vec;
for(int j = 0;j<N; j++)
{
vec.push_back(rand()%100-50);
dvec.push_back(vec);
cout<<dvec[i][j]<<"\t";
}
cout << endl;
}
for(i = 0; i< N; i++)
{
for(int j = 0; j<N; j++)
{
if(j!=0 && j!=N)
{
s+=dvec[i][j];
p*=dvec[i][j];
}
}
cout<< i << "-é ñòðîêè"<<" "<<"Ñóììà"<<"="<< s<< "\t"<<"Ïðîèçâåäåíèå"<< "="<< p << endl;
}
}
Ошибка: неверно заполняет и считает матрицы:
Ответы (1 шт):
Внимательно посмотрите на вот этот участок кода:
vector<int> vec;
for (int j = 0; j < N; j++)
{
vec.push_back(rand() % 100 - 50);
dvec.push_back(vec);
cout << dvec[i][j] << "\t";
}
Что тут происходит? Вы добавляете первый элемент в vec и сразу добавляете вектор в dvec. Потом добавляете 2 элемент и опять добавляете в dvec. По этому у вас получается некая лесенка из сгенерированных элементов.
Правильней будет сначала заполнить строку vec, а потом уже её добавлять в dvec. Например так:
vector<int> vec;
for (int j = 0; j < N; j++)
{
vec.push_back(rand() % 100 - 50);
cout << vec[j] << "\t";
}
dvec.push_back(vec);
Так же хотел сказать про внутренний цикл, где находится сумма и произведение. Не легче начать с j = 1 и идти до j < N - 1, а не использовать if?

![https://i.stack.imgur.com/VJqzJ.png][1]](https://i.stack.imgur.com/eAGiT.png)