Замена Столбцов В Матрице.

  • Автор темы Valya
  • Дата начала
V

Valya

#1
Пусть в текстовом файле записаны целые числа разделенные пробелами. Первым числом в файле является размерность квадратной матрицы. Далее в файле расположены построчно элементы матрицы. Перепишите в другой текстовый файл данную матрицу, заменив ее j-столбец числами, прочитанными из третьего текстового файла, содержащие целые числа.

помогите. как написать только то место, где нужно заменить j-стольбец на числа прочитанные из второго файла.


C++:
#include "StdAfx.h"
#include <iostream>
#include <fstream>

#define size 10

using namespace std;

int main()
{
int n, m;									  
int l;								  
int flag;

ifstream finA;								 
ifstream finB;								 
ofstream foutC;								

int a[size][size], b[size], c[size][size];

do{
finA.open("fileA.txt");					 
finB.open("fileB.txt");						 
foutC.open("fileC.txt");					 

finA >> n >> m;						 

cout << "Matrix A" << endl;	  // Файл из которого считываем матрицу
for(int i = 0; i < m; i++)				 
for(int j = 0; j < n; j++)
finA >> a[j][i];			  
// выводим матрицу на экран
for(int i = 0; i < n; i++)											  
{
for(int j = 0; j < m; j++)
cout << a[i][j] << " ";	
cout << endl;
}
int k;
int p;	 

finB >> l;						 // Файл из которого считываем целые числа, что бы 
for(int k= 0; k< l; k++)			 // заменить ими j-столбец 
finB >> b[k];				 

// выводим на экран целые числа, из второго файла
for(int k = 0; k < l; k++)	  
cout << b[k] << " ";
cout << endl;

// как написать так,что бы j-столбец можно было заменить 
// на числа записанные во втором файле
foutC << n << " " << m << " ";			
cout<< "Vvedite nomer stolbza: ";
cin>>p;
cout << "Matrix C" << endl;
for(int i = 0; i < n; i++)				
{ a[i][p]=b[k];}
cout << endl;

//выводим измененную матрицу на экран
for(int i = 0; i < n; i++)				 
for(int j = 0; j < l; j++)
foutC << c[i][j] << " ";

finA.close();
finB.close();
foutC.close();

cout << "Povtorit` vvod? 1-Yes/2-No" << endl;
cin >> flag;
}while(flag == 1);
return 0;
}
 
R

rrrFer

#2
Код:
for (int j = 0; j < n; ++j) 
for (int i = 0; i < n; ++i)
a[i][j] = b[j];
 

hosm

* so what *
18.05.2009
2 442
6
#4
интересно, меняете матрицу а, а выводите с: foutC << c[j] << " ";
 
R

rrrFer

#5
а как сделать так, что бы заменялся именно столбец, номер которого мы вводим с клавиатуры?
Код:
int i; // номер столбца, номер которого мы ...
for (int j = 0; j < n; ++j) 
a[j][i] = b[j];
 
V

Valya

#6
интересно, меняете матрицу а, а выводите с: foutC << c[j] << " ";


C++:
foutC << n << " " << m << " ";			
cout<< "Vvedite nomer stolbza: ";
cin>>p;
cout << "Matrix C" << endl;
for(int i = 0; i < n; i++)				
{ a[i][p]=b[k];}
cout << endl;

//выводим измененную матрицу на экран
for(int i = 0; i < n; i++)				 
for(int j = 0; j < l; j++)
foutC << c[i][р] << " ";
все равно с этим условием, что-то не то. я уже и не знаю как его переписать. но оно не работает.
матрицу на экран выводит, потом мы вводим номер j-столбца, а дальше программа просто не работает(она выходит, но и в файле С ничего не меняется(хотя там должна быть измененная матрица))
а дальше ничего не деает
 

hosm

* so what *
18.05.2009
2 442
6
#9
>я ввожу номер заменяемого столбца, но матрица не изменяется и даже не записывается в файл С.
ну да, ведь компьютер тупой, он не понимает, что когда вы меняете элементы матрицы а на элементы массива b с некорректным индексом k, а в файл записываете другой "левый" (неинициализированный) массив c, внезапно значения с должны получиться правильными (с помощью "некой магии высших сил" туда помещается измененная матрица а, которая должна записаться в файл - ибо кода для заполнения с в теме не написали).
 
V

Valya

#10
Код:
for(int i = 0; i < n; i++)				
{ a[i][p]=b[k];}
что за k?
b[k]-это массив целых чисел, которыми мы должны заменять столбец в failA.

вот я изменила немного код, но он все равно не работает.
C++:
 int p; // номер столбца, номер которого заменяем
cout << "Vvedite nomer zamenyaemogo slolbza: ";	
cin>>p;
for (int i = 0; i< n; ++i)
{ a[ i][ p] = b[ i];} //заменили столбец
// если номер столбца совпадает с введеным номером
for (int i=0;i<n; i++)
{for (int j=0; i<n;i++)
if(j==p)  
b[i]=a[i][j]; 
foutC<< a[i][j]<< " ";}  //то записываем матрицу в файл С
 
V

Valya

#12
она выводит на экран матрицу , дальше массив чисел, затем просит ввести номер заменяемого столбца, ввожу, и все работа программы прекращается и ее приходится закрывать. и также в файле С ничего не записывается.