Форум программистов, компьютерный форум CyberForum.ru

Файлы - C++

Восстановить пароль Регистрация
 
KristinaOchkina
0 / 0 / 0
Регистрация: 22.12.2010
Сообщений: 7
21.01.2011, 12:05     Файлы #1
Ребят, есть задание, перемножить две матрицы и вывести максимальный элемент.

Я написала простую программу.

Необходимо ее переделать так, что бы матрица1 и матрица2 считывались с разных текстовых файлов, в которых было записано, например, информация в первом файле:

2 2 5 8 7 9

где 2 2 - размерность матрицы,
5 8 7 9 - элементы матрицы;

а результат перемножения матриц и максимальный элемент, хранились в третьем файле. Причем, что бы имена первых двух файлов можно было ввести и считывать с указанных, введенных двух файлов.
Еще, как сделать, что бы массивы задать не указанной размерности (если я захочу массив 101х101 у меня уже программа не будет работать), а что бы я могла ввести любую размерность ( в пределах допустимого типа) и программа работала.

Подскажите, пожалуйста, кто что знает =)) Пусть даже по кусочкам, все равно это огромная помощь! ) Заранее большое спасибо!! )

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "StdAfx.h"
#include <iostream>
 
using namespace std;
 
int m3[100][100];
 
int main()
{ double m1[100][100], m2[100][100];
  int  i, j, k, l,m,n, s,imax, jmax, max;
  
 
   cin>>l>>n;
   for (i=0; i<n; i++)
   for (j=0; j<l; j++)
        cin>>m2[i][j];
 
   cin>>m>>n;
   for (i=0; i<m; i++)
   for (j=0; j<n; j++)
       cin>>m1[i][j]; 
     cout<<endl;
 
    for (i=0; i<m; i++)
    for (j=0; j<l; j++) {
        s=0;
        for (k=0; k<l; k++)
        s=s+m1[i][k]*m2[k][j];
        m3[i][j]=s;
                        }   
    max=m3[0][0];
    for (i=0; i<m; i++)
    for (j=0; j<l; j++) {
    if (m3[i][j]>max){ 
        max=m3[i][j]; 
        }
                        }
 
 
    for (i=0; i<m; i++){
    for (j=0; j<l; j++)
       cout<<m3[i][j]<<" ";
    cout<<endl;       }
 
    cout<<max;
     
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2011, 12:05     Файлы
Посмотрите здесь:

Файлы С++ C++
C++ Файлы
C++ файлы
C++ файлы в С++
Файлы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.01.2011, 13:48     Файлы #2
KristinaOchkina, отдалённо похожая задача. Правда, оно там на С, и массив, считанный из одного файла, в другой перекладывает, но общие принципы можно разглядеть...
Имена входных файлов на С++ можно например вот так получать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>
...
std::string name;
std::cout << "First file name: ";
std::cin >> name;
std::ifstream ifs1(name.c_str());
if ( ! ifs1.is_open() ){
  // вывести сообщение об ошибке открытия файла и завершить программу
}
 
...
int **matrix1, rows1, columns1;
ifs1 >> rows1, columns1;
matrix1 = new int* [rows1];
for ( int i = 0; i < rows1; ++i )
  matrix1[i] = new int [columns];
for ( int i = 0; i < rows; ++i )
  for ( int j = 0; j < columns; ++j )
    ifs1 >> matrix1[i][j];
ifs1.close();
...
std::cout << "Second file name: ";
std::cin >> name;
std::ifstream ifs2(name.c_str());
...
...
// когда матрицы больше не нужны
for ( int i = 0; i < rows1; ++i )
  delete [] matrix1[i];
delete [] matrix1;
...
KristinaOchkina
0 / 0 / 0
Регистрация: 22.12.2010
Сообщений: 7
21.01.2011, 14:06  [ТС]     Файлы #3
Спасибо! Вот с одним файлом я пробовала, только через функцию freopen , указывая с новой строки значения для первой ив второй матрицы и программа работала правильно, а вот считывать с двух файлов уже проблема возникла... может кто еще знает, ответит..)) Но все равно спасибо!))

Добавлено через 4 минуты
Цитата Сообщение от easybudda Посмотреть сообщение
ifstream ifs1(name.c_str());
if ( ! ifs1.is_open() ){
если вот это рассмотреть не для частного случая а в общем, как я понимаю:
ifs1 - функция работы с файлом, может быть любого имени
name - имя вводимого файла,
.c_str() - а вот это что? как раз-таки ввода имения файла, который необходимо открыть?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.01.2011, 14:14     Файлы #4
Цитата Сообщение от KristinaOchkina Посмотреть сообщение
ifs1 - функция работы с файлом
ifs1 - имя объекта класса ifstream, которому в конструкторе передаётся имя файла в виде С-строки
name - объект класса string, метод которого c_str() как-раз возвращает содержимое в виде С-строки...
KristinaOchkina
0 / 0 / 0
Регистрация: 22.12.2010
Сообщений: 7
22.01.2011, 17:59  [ТС]     Файлы #5
спасибо))
Yandex
Объявления
22.01.2011, 17:59     Файлы
Ответ Создать тему
Опции темы

Текущее время: 03:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru