Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.01.2017
Сообщений: 52
1

Обработка матриц с использованием файлов и потоков

07.12.2017, 00:55. Показов 1075. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание такое:
Создать класс matrica с заранее неизвестным количеством элементов.
Предусмотреть члены-функции:
1) Введение с файла количества строк, количества столбцов матрицы и значений ее элементов;
2) Обработки матрицы с целью найти сумму и количество положительных элементов;
3) Вывод в другой файл матрицы и полученных результатов.
Надо использовать конструкторы файловых потоков ifstream, ofstream.
Я еще хочу для проверки выводить во время работы программы, чтобы понимать, работает или нет..

Я не совсем эту тему хорошо понимаю, хочу разобраться. А так же как должны быть в блокноте оформлены числа, пробел или с новой строки, а как их потом считывать.. Прошу помощи
Вот код, который не хочет как нужно работать:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
 
using namespace std;
 
class matrica
{
    float **M;
    int row, column, kol_pos;
    float sum;
public:
 
    matrica()
    {
        M = new float *[row];
        for (int i = 0; i < row; i++)
            M[i] = new float[column];
    }
 
    void vvod(char * S)
    {
        ifstream ifs(S);
        ifs >> row;
        ifs >> column;
        cout << row << endl;
        cout << column << endl;
        for (int i = 0; i < row; i++)
            for (int j = 0; j < column; j++)
            {
                ifs >> M[i][j];
                cout << M[i][j] << " ";
            }
    }
 
    void vivod(char * S)
    {
        ofstream ofs(S);
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < column; j++)
                ofs << M[i][j] << " ";
            ofs << endl;
        }
        ofs << sum;
        ofs << kol_pos;
    }
 
    void zadacha()
    {
        sum = 0;
        kol_pos = 0;
        for (int i = 0; i < row; i++)
            for (int j = 0; j < column; j++)
            {
                sum += M[i][j];
                if (M[i][j] > 0)
                    kol_pos++;
            }
    }
};
 
int main()
{
    matrica a;
    a.vvod("1.txt");
    a.zadacha();
    a.vivod("2.txt");
 
    _getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2017, 00:55
Ответы с готовыми решениями:

Запись файлов с использованием потоков. Вывод в результирующий файл
Необходимо создать 9 файлов (1.txt, 2.txt и т.д.) В каждом файле будет символ, соответствующий ...

Обработка файлов с созданием и использованием файла со списком имён файлов, исключаемых при данной обработке
Эх, чтобы я без вас делал то ;) Доброго времени суток! Задача сценария: просматривать файлы в...

C++ Builder Обработка структур с использованием файлов
не в консоли. Вычислить общий средний балл всех студентов и распечатать список студентов...

Обработка строковых данных с использованием внешних файлов
Люди добрые, есть такая проблемка, в общем имеется текст: &quot;The Old Man and the Sea is the story of...

1
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
07.12.2017, 06:25 2
Цитата Сообщение от tanyalev Посмотреть сообщение
как должны быть в блокноте оформлены числа
Числа из потока читаются до любого пробельного символа.
Так что, заполняйте файл так, как Вам удобнее.

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
 
using namespace std;
 
class matrica
{
    float **M;
    int row, column;
public:
 
    matrica(int n,int m):column(m),row(n)
    {
        M = new float *[row];
        for (int i = 0; i < row; i++)
        {
            M[i] = new float[column];
            for (int j = 0; j < m; j++)
                M[i][j]=0;
        }
    }
 
    bool vvod(char * S)
    {
        ifstream ifs(S);
        if(ifs)
        {
            ifs >> row;
            ifs >> column;
            //cout << row << endl;
            //cout << column << endl;
            for (int i = 0; i < row; i++)
                for (int j = 0; j < column; j++)
                {
                    ifs >> M[i][j];
                    //cout << M[i][j] << " ";
                }
                ifs.close();
                return true;
        }
        return false;
    }
 
    bool vivod(char * S)
    {
        ofstream ofs(S);
        if(ofs)
        {
            for (int i = 0; i < row; i++)
            {
                for (int j = 0; j < column; j++)
                    ofs << M[i][j] << " ";
                ofs << endl;
            }
            //ofs << sum;
            //ofs << kol_pos;
            ofs.close();
            return true;
        }
        return false;
    }
 
    float zadacha(int& kol_pos)
    {
        float sum = 0;
        kol_pos = 0;
        for (int i = 0; i < row; i++)
            for (int j = 0; j < column; j++)
            {
                sum += M[i][j];
                if (M[i][j] > 0)
                    kol_pos++;
            }
    return sum;
    }
};
 
int main()
{
    matrica a(3,4);
    if(a.vvod("1.txt"))
        cout<<"input ok";
    else
        cout<<"input error";
    int k;
    float total=a.zadacha(k);
    cout<<"sum="<<total<<" positive n="<<k<<endl;
    if(a.vivod("2.txt"))
        cout<<"otput ok";
    else
        cout<<"output error";
 
    _getch();
    return 0;
}
1
07.12.2017, 06:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2017, 06:25
Помогаю со студенческими работами здесь

Пакетная обработка файлов с использованием программы для сжатия изображений
Всем доброго дня. Я использую софтину pngout для сжатия картинок для сайта. Я написал простейший...

Системное программирование. Последовательная обработка файлов с использованием отображения в память
Не могу разобраться, почему программа выводит одно и то же. Как ни менял бы содержимое файлов, сами...

Авторизация с использованием потоков
Пытаюсь сделать авторизацию пользователей, подключив базу данных access. Как реализовать через...

Помощь с использованием потоков
Добрый вечер, вот пишу программу, которая создает 2 потока, первый считает в файле кол-во символов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru