#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <iomanip>
using namespace std;
typedef vector< vector<int> > T;
ostream &operator<<(ostream &output,const T &mass)
{
for(size_t i = 0;i<mass.size();++i){
for(size_t j = 0;j<mass.size();++j)
output<<setw(5)<<mass[j];
output<<"\n\n";
}
return output;
}
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(0));
size_t n;
do{
cout<<"Enter SIZE of matrix,SIZE > 0"<<endl;
cin>>n;
}while(n <= 0);
T mass(n, vector<int>(n));
for(size_t i = 0;i<n;++i){
for(size_t j = 0;j<n;++j)
mass[j] = rand() % 100;
}
cout<<mass;
vector<int> coll;
size_t k;
do{
cout<<"Enter number of n < k >= 0"<<endl;
cin>>k;
}while(k < 0||k > n);
for(size_t i = 0;i<n;++i){
for(size_t j = 0;j<n;++j)
coll.push_back(mass[j]);
}
copy(coll.begin(),coll.end(),
ostream_iterator<int>(cout," "));
cout<<endl;
vector<int> coll1(mass[k]);
copy(coll1.begin(),coll1.end(),
ostream_iterator<int>(cout," "));
cout<<endl;
vector<int>::iterator first = find(coll.begin(),coll.end(),
*coll1.begin());
vector<int>::iterator last = find(coll.begin(),coll.end(),
*(--coll1.end()));
coll.erase(first,++last);
copy(coll.begin(),coll.end(),
ostream_iterator<int>(cout," "));
cout<<endl;
return 0;
}
матрица-массив удалить строку(С++)
кто знает,помогите,пожалуйста!!
Потом неплохо бы указать язык, на котором писать надо, да и задание описано немного туманно. Из твоего описания пришла к выводу, что речь о двухмерной, квадратной матрице, с которой надо работать как с одномерным массивом.
дело в том, что я сама получила задание и не оч его понимаю.но, судя по всему,вы правы... матрицу преобразовать в одномерный массив и далее циклом for пробегать K*N элементов начиная с (K*N)+1 элемента удалять N элементов и распечатывать...
Вот решение с использоваением STL.Создаем вектор векторов(матрицу)записываем ее в одномерный динамический массив.Вводим номер строки,которую хотим удалить и удаляем из одномерного массива нужный диапазон.
спасибо огромное...теперь буду разбираться....так все сложно и непонятно(((
вот он пишет введите к, а дальше?? coll begin?vektor?coll end. спасибо
Код:
...for(size_t i = 0;i<n;++i){
for(size_t j = 0;j<n;++j)
coll.push_back(mass[j]);
}...
for(size_t j = 0;j<n;++j)
coll.push_back(mass[j]);
}...
coll - динамический массив или вектор(класс,который реализует динамический массив)Это одномерный массив,заполняем его элементами матрицы,для чего вызываем ф-ию push_back(),т.е. вставляем элемент в конец массива.Далее...
Код:
...copy(coll.begin(),coll.end(),
ostream_iterator<int>(cout," "));
cout<<endl;...
ostream_iterator<int>(cout," "));
cout<<endl;...
Код:
for(size_t i = 0;i < coll.size();++i)
cout<<coll<<' ';
cout<<coll<<' ';
к.Распечатывем удаляемую строку.
Код:
...vector<int> coll1(mass[k]);
copy(coll1.begin(),coll1.end(),
ostream_iterator<int>(cout," "));
cout<<endl;...
copy(coll1.begin(),coll1.end(),
ostream_iterator<int>(cout," "));
cout<<endl;...
Код:
...vector<int>::iterator first = find(coll.begin(),coll.end(),
*coll1.begin());
vector<int>::iterator last = find(coll.begin(),coll.end(),
*(--coll1.end()));...
*coll1.begin());
vector<int>::iterator last = find(coll.begin(),coll.end(),
*(--coll1.end()));...
Код:
...
coll.erase(first,++last);
...
coll.erase(first,++last);
...
Тут происходит удаление.И потом опять распечатываем массив,но уже без удаляемой строки.Что STL не учите ? Какое решение надо ?
большое спасибо.мы работем в visual studio win32 console application
а это в какой программе написано?
Цитата: vorovaika
а это в какой программе написано?
Это Visual Studio 2005 , Win32 Console Application.Вопрос в другом - вы STL учите ? Или надо решение без STL.
честно говоря,не знаю даже что это...не учим
Цитата: vorovaika
честно говоря,не знаю даже что это...не учим
Вот код без STL.
Код:
#include <iostream>
#include <ctime>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(0));
size_t row,col;
cout<<"Input row > 0"<<endl;
do{
cin>>row;
}while(row < 0);
cout<<"Input row > 0"<<endl;
do{
cin>>col;
}while(col < 0);
int **mass = new int*[row];
for(size_t i = 0;i < row;++i){
mass = new int[col];
for(size_t j = 0;j < col;++j)
mass[j] = rand() % 100;
}
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j)
cout<<'\t'<<mass[j];
cout<<"\n\n";
}
int *array = new int[row * col];
size_t k = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
array[k] = mass[j];
++k;
}
}
for(size_t i = 0;i < row * col;++i)
cout<<array<<' ';
cout<<endl;
int *arr = new int[col];
size_t number;
cout<<"Input row < number > 0"<<endl;
do{
cin>>number;
}while(number < 0||number >= row);
k = 0;
int count = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
if(i == number){
arr[k] = count;
++k;
}
++count;
}
}
for(size_t i = 0;i < col;++i)
cout<<arr<<' ';
cout<<endl;
int m = 0;
int l = 0;
int *temp = new int[row * col - col];
for(size_t i = 0;i < row * col;++i){
if(i != arr[m]){
temp[l] = array;
++l;
}
else ++m;
}
delete[] array;
array = new int[row * col - col];
for(size_t i = 0;i < row * col - col;++i)
array = temp;
for(size_t i = 0;i < row * col - col;++i)
cout<<array<<' ';
cout<<endl;
for(size_t i = 0;i < row;++i)
delete[] mass;
delete[] mass;
delete[] array;
delete[] arr;
delete[] temp;
return 0;
}
#include <ctime>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(0));
size_t row,col;
cout<<"Input row > 0"<<endl;
do{
cin>>row;
}while(row < 0);
cout<<"Input row > 0"<<endl;
do{
cin>>col;
}while(col < 0);
int **mass = new int*[row];
for(size_t i = 0;i < row;++i){
mass = new int[col];
for(size_t j = 0;j < col;++j)
mass[j] = rand() % 100;
}
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j)
cout<<'\t'<<mass[j];
cout<<"\n\n";
}
int *array = new int[row * col];
size_t k = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
array[k] = mass[j];
++k;
}
}
for(size_t i = 0;i < row * col;++i)
cout<<array<<' ';
cout<<endl;
int *arr = new int[col];
size_t number;
cout<<"Input row < number > 0"<<endl;
do{
cin>>number;
}while(number < 0||number >= row);
k = 0;
int count = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
if(i == number){
arr[k] = count;
++k;
}
++count;
}
}
for(size_t i = 0;i < col;++i)
cout<<arr<<' ';
cout<<endl;
int m = 0;
int l = 0;
int *temp = new int[row * col - col];
for(size_t i = 0;i < row * col;++i){
if(i != arr[m]){
temp[l] = array;
++l;
}
else ++m;
}
delete[] array;
array = new int[row * col - col];
for(size_t i = 0;i < row * col - col;++i)
array = temp;
for(size_t i = 0;i < row * col - col;++i)
cout<<array<<' ';
cout<<endl;
for(size_t i = 0;i < row;++i)
delete[] mass;
delete[] mass;
delete[] array;
delete[] arr;
delete[] temp;
return 0;
}
На самом деле без STL труднее решать.STL - Standart Templates Library, библиотека стандартных шаблонов.Если не учите в институте - учи самостоятельно.Один известный программист,как то рассуждая об STL выразился так:
Цитата: Крис Х.Паппас
STL напоминает, в некотором роде, как-будто вы многие годы сражались с курсами алгебры и высшей математики, а после этого вам дали великолепный научный калькулятор,который может делать за вас все то чему вы научились.
спасибо Вам большущее!!!
нужно выделить красным цветом в массиве и в матрице ....ПРОСТИТЕ,но у меня не получается решить этe проблемe...
Код:
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
HANDLE hStdout;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdout, BACKGROUND_INTENSITY);
SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN);
srand(time(0));
size_t row,col, number;
cout<<"Input row > 0\n";
cin>>row;
cout<<"Input col> 0\n";
cin>>col;
cout<<"Input row < number > 0\n";
cin>>number;
int **mass = new int*[row];
for(size_t i = 0;i < row;++i){
mass = new int[col];
for(size_t j = 0;j < col;++j)
mass[j] = rand() % 100;
}
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j)
cout<<'\t'<<mass[j];
cout<<"\n\n";
}
int *array = new int[row * col];
size_t k = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
array[k] = mass[j];
++k;
}
}
for(size_t i = 0;i < row * col;++i)
cout<<array<<' ';
cout<<endl;
int *arr = new int[col];
k = 0;
int count = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
if(i == number){
arr[k] = count;
++k;
}
++count;
}
}
for(size_t i = 0;i < col;++i)
cout<<endl;
int m = 0;
int l = 0;
int *temp = new int[row * col - col];
for(size_t i = 0;i < row * col;++i){
if(i != arr[m]){
temp[l] = array;
++l;
}
else ++m;
}
delete[] array;
array = new int[row * col - col];
for(size_t i = 0;i < row * col - col;++i)
array = temp;
for(size_t i = 0;i < row * col - col;++i)
cout<<array<<' ';
for(size_t i = 0;i < row;++i)
delete[] mass;
delete[] mass;
delete[] array;
delete[] arr;
delete[] temp;
return 0;
}
#include <iostream>
#include <ctime>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
HANDLE hStdout;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdout, BACKGROUND_INTENSITY);
SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN);
srand(time(0));
size_t row,col, number;
cout<<"Input row > 0\n";
cin>>row;
cout<<"Input col> 0\n";
cin>>col;
cout<<"Input row < number > 0\n";
cin>>number;
int **mass = new int*[row];
for(size_t i = 0;i < row;++i){
mass = new int[col];
for(size_t j = 0;j < col;++j)
mass[j] = rand() % 100;
}
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j)
cout<<'\t'<<mass[j];
cout<<"\n\n";
}
int *array = new int[row * col];
size_t k = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
array[k] = mass[j];
++k;
}
}
for(size_t i = 0;i < row * col;++i)
cout<<array<<' ';
cout<<endl;
int *arr = new int[col];
k = 0;
int count = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
if(i == number){
arr[k] = count;
++k;
}
++count;
}
}
for(size_t i = 0;i < col;++i)
cout<<endl;
int m = 0;
int l = 0;
int *temp = new int[row * col - col];
for(size_t i = 0;i < row * col;++i){
if(i != arr[m]){
temp[l] = array;
++l;
}
else ++m;
}
delete[] array;
array = new int[row * col - col];
for(size_t i = 0;i < row * col - col;++i)
array = temp;
for(size_t i = 0;i < row * col - col;++i)
cout<<array<<' ';
for(size_t i = 0;i < row;++i)
delete[] mass;
delete[] mass;
delete[] array;
delete[] arr;
delete[] temp;
return 0;
}
help,please
Код:
#include <iostream>
#include <ctime>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
HANDLE hStdout, hStdin;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
DWORD NewColor(WORD &);
int _tmain(int argc, _TCHAR* argv[])
{
DWORD fdwOldMode;
WORD wOldColorAttrs;
hStdin = GetStdHandle(STD_INPUT_HANDLE);
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
srand(time(0));
size_t row,col, number;
wOldColorAttrs = csbiInfo.wAttributes;
cout<<"Input row > 0\n";
cin>>row;
cout<<"Input col> 0\n";
cin>>col;
cout<<"Input row < number > 0\n";
cin>>number;
if (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo))
{
MessageBox(NULL, TEXT("GetConsoleScreenBufferInfo"),
TEXT("Console Error"), MB_OK);
return 0;
}
int **mass = new int*[row];
for(size_t i = 0;i < row;++i){
mass = new int[col];
for(size_t j = 0;j < col;++j)
mass[j] = rand() % 100;
}
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
if(i != number){
cout<<'\t'<<mass[j];
}else
{
NewColor(wOldColorAttrs);
cout<<'\t'<<mass[j];
if (! GetConsoleMode(hStdin, &fdwOldMode))
{
cout<<"Console Error"<<endl;
return 0;
}
SetConsoleMode(hStdin, fdwOldMode);
SetConsoleTextAttribute(hStdout, wOldColorAttrs);
}
}
cout<<"\n\n";
}
int *array = new int[row * col];
size_t k = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
array[k] = mass[j];
++k;
}
}
int *arr = new int[col];
k = 0;
int count = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
if(i == number){
arr[k] = count;
++k;
}
++count;
}
}
size_t j = 0;
for(size_t i = 0;i < row * col;++i){
if(i == arr[j]){
NewColor(wOldColorAttrs);
cout<<array<<' ';
if (! GetConsoleMode(hStdin, &fdwOldMode))
{
cout<<"Console Error"<<endl;
return 0;
}
SetConsoleMode(hStdin, fdwOldMode);
SetConsoleTextAttribute(hStdout, wOldColorAttrs);
++j;
}else
cout<<array<<' ';
}
cout<<"\n\n";
int m = 0;
int l = 0;
int *temp = new int[row * col - col];
for(size_t i = 0;i < row * col;++i){
if(i != arr[m]){
temp[l] = array;
++l;
}
else ++m;
}
delete[] array;
array = new int[row * col - col];
for(size_t i = 0;i < row * col - col;++i)
array = temp;
for(size_t i = 0;i < row * col - col;++i)
cout<<array<<' ';
for(size_t i = 0;i < row;++i)
delete[] mass;
delete[] mass;
delete[] array;
delete[] arr;
delete[] temp;
return 0;
}
DWORD NewColor(WORD &wOldColorAttrs)
{
if (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo))
{
cout<<"Console Error!!!"<<endl;
return 0;
}
wOldColorAttrs = csbiInfo.wAttributes;
if (! SetConsoleTextAttribute(hStdout, FOREGROUND_RED |
FOREGROUND_INTENSITY))
{
cout<<"Console Error"<<endl;
return 0;
}
return 0;
}
#include <ctime>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
HANDLE hStdout, hStdin;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
DWORD NewColor(WORD &);
int _tmain(int argc, _TCHAR* argv[])
{
DWORD fdwOldMode;
WORD wOldColorAttrs;
hStdin = GetStdHandle(STD_INPUT_HANDLE);
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
srand(time(0));
size_t row,col, number;
wOldColorAttrs = csbiInfo.wAttributes;
cout<<"Input row > 0\n";
cin>>row;
cout<<"Input col> 0\n";
cin>>col;
cout<<"Input row < number > 0\n";
cin>>number;
if (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo))
{
MessageBox(NULL, TEXT("GetConsoleScreenBufferInfo"),
TEXT("Console Error"), MB_OK);
return 0;
}
int **mass = new int*[row];
for(size_t i = 0;i < row;++i){
mass = new int[col];
for(size_t j = 0;j < col;++j)
mass[j] = rand() % 100;
}
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
if(i != number){
cout<<'\t'<<mass[j];
}else
{
NewColor(wOldColorAttrs);
cout<<'\t'<<mass[j];
if (! GetConsoleMode(hStdin, &fdwOldMode))
{
cout<<"Console Error"<<endl;
return 0;
}
SetConsoleMode(hStdin, fdwOldMode);
SetConsoleTextAttribute(hStdout, wOldColorAttrs);
}
}
cout<<"\n\n";
}
int *array = new int[row * col];
size_t k = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
array[k] = mass[j];
++k;
}
}
int *arr = new int[col];
k = 0;
int count = 0;
for(size_t i = 0;i < row;++i){
for(size_t j = 0;j < col;++j){
if(i == number){
arr[k] = count;
++k;
}
++count;
}
}
size_t j = 0;
for(size_t i = 0;i < row * col;++i){
if(i == arr[j]){
NewColor(wOldColorAttrs);
cout<<array<<' ';
if (! GetConsoleMode(hStdin, &fdwOldMode))
{
cout<<"Console Error"<<endl;
return 0;
}
SetConsoleMode(hStdin, fdwOldMode);
SetConsoleTextAttribute(hStdout, wOldColorAttrs);
++j;
}else
cout<<array<<' ';
}
cout<<"\n\n";
int m = 0;
int l = 0;
int *temp = new int[row * col - col];
for(size_t i = 0;i < row * col;++i){
if(i != arr[m]){
temp[l] = array;
++l;
}
else ++m;
}
delete[] array;
array = new int[row * col - col];
for(size_t i = 0;i < row * col - col;++i)
array = temp;
for(size_t i = 0;i < row * col - col;++i)
cout<<array<<' ';
for(size_t i = 0;i < row;++i)
delete[] mass;
delete[] mass;
delete[] array;
delete[] arr;
delete[] temp;
return 0;
}
DWORD NewColor(WORD &wOldColorAttrs)
{
if (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo))
{
cout<<"Console Error!!!"<<endl;
return 0;
}
wOldColorAttrs = csbiInfo.wAttributes;
if (! SetConsoleTextAttribute(hStdout, FOREGROUND_RED |
FOREGROUND_INTENSITY))
{
cout<<"Console Error"<<endl;
return 0;
}
return 0;
}
СПАСИБО!!!