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

Тема в разделе "C/C++/C#", создана пользователем Valya, 17 дек 2012.

  1. Valya

    Valya Гость

    Пусть в текстовом файле записаны целые числа разделенные пробелами. Первым числом в файле является размерность квадратной матрицы. Далее в файле расположены построчно элементы матрицы. Перепишите в другой текстовый файл данную матрицу, заменив ее 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;
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    for (int j = 0; j < n; ++j)
    for (int i = 0; i < n; ++i)
    a[i][j] = b[j];
     
  3. Valya

    Valya Гость

    а как сделать так, что бы заменялся именно столбец, номер которого мы вводим с клавиатуры?
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    интересно, меняете матрицу а, а выводите с: foutC << c[j] << " ";
     
  5. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    int i; // номер столбца, номер которого мы ...
    for (int j = 0; j < n; ++j)
    a[j][i] = b[j];
     
  6. Valya

    Valya Гость



    Код (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-столбца, а дальше программа просто не работает(она выходит, но и в файле С ничего не меняется(хотя там должна быть измененная матрица))
    а дальше ничего не деает
     
  7. Valya

    Valya Гость

    я ввожу номер заменяемого стобца, но матрица не изменяется и даже не записывается в файл С.
     
  8. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    for(int i = 0; i < n; i++)             
    { a[i][p]=b[k];}
    что за k?
     
  9. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    >я ввожу номер заменяемого столбца, но матрица не изменяется и даже не записывается в файл С.
    ну да, ведь компьютер тупой, он не понимает, что когда вы меняете элементы матрицы а на элементы массива b с некорректным индексом k, а в файл записываете другой "левый" (неинициализированный) массив c, внезапно значения с должны получиться правильными (с помощью "некой магии высших сил" туда помещается измененная матрица а, которая должна записаться в файл - ибо кода для заполнения с в теме не написали).
     
  10. Valya

    Valya Гость

    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]<< " ";}  //то записываем матрицу в файл С
     
  11. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    как это проявляется?
     
  12. Valya

    Valya Гость

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

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    finB >> l;
    что такое l?
     
  14. Valya

    Valya Гость

    спасибо большое за помощь, но я уже сама разобралась)
     
Загрузка...

Поделиться этой страницей