Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
2 / 2 / 2
Регистрация: 11.10.2016
Сообщений: 123
1

Оптимизировать программу

10.02.2018, 22:16. Показов 521. Ответов 2
Метки нет (Все метки)

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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
 #include <iostream>
#include <fstream>
#include <cmath>
 
using namespace std;
 
int main (int argc, char* argv[])
{
    setlocale(LC_ALL,"Rus");
 
    ifstream in("matr1.txt");
    int count = 0; // число чисел в файле
    double temp; //Временная переменная
 
    if (in.is_open()) //Если открытие файла прошло успешно
    {   
        while(!in.eof()) // пробегаем пока не встретим конец файла eof
        {
            in >> temp; //в пустоту считываем из файла числа
            count ++; // увеличиваем счетчик числа чисел
        }
    }
    double n = sqrt(double(count));
 
    double **A; // создание двумерного динамического массива
    A = new double*[n];
    for (int i = 0; i < n; i++) 
        A[i] = new double[n];
    
    in.close();//под конец закроем файла
    
    ifstream in2("matr1.txt");  // открываем этот файл для чтения снова
 
    for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                in >> A[i][j];
 
    cout << "Матрица А: " << endl;
    for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
                    cout << A[i][j] << "\t";
            cout << "\n";
        }
    in2.close();
    // тут с матрицей 1 все тоже самое анолагично к  2?
        
    ifstream mn("matr2.txt");
    unsigned int coun = 0; //число чисел в файле
    double temp2; //Временная переменная
 
    if (mn.is_open()) //Если открытие файла прошло успешно
    {   
        while(!mn.eof()) // пробегаем пока не встретим конец файла eof
        {
            mn >> temp2; //в пустоту считываем из файла числа
            coun++; // увеличиваем счетчик числа чисел
        }
    }
 
    double m = sqrt(double(coun));
    
    double **B; // создание двумерного динамического массива
    B = new double*[m];
    for (int i = 0; i < m; i++) 
        B[i] = new double[m];
    
    mn.close();//под конец закроем файла
    
    ifstream mn2 ("matr2.txt");  // открываем этот файл для чтения снова
 
    for (int i = 0; i < m; i++)
            for (int j = 0; j < m; j++)
                mn2 >> B[i][j];
 
    cout << "\nМатрица B: " << endl;
    for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < m; j++)
                    cout << B[i][j] << "\t";
            cout << "\n";
        }
 
    mn2.close();
 
 
    if ( m == n)
    {
        double **C; // создание двумерного динамического массива
        C = new double*[m];
        for (int i = 0; i < m; i++) 
        C[i] = new double[m];
 
        for (int i = 0; i < m; i++)
            for (int j = 0; j < m; j++)
                 C[i][j] = A[i][j] + B[i][j];
 
        cout << "\nМатрица C = A + B " << endl;
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < m; j++)
                    cout << C[i][j] << "\t";
            cout << "\n";
        }
 
        
         ofstream fout("matr3.txt");
         cout << "Результаты матрицы С добавлены в файл!";
         for (int i = 0; i < m; i++){
            for (int j = 0; j < m; j++)
                 fout << C[i][j] << ' '; 
            fout << endl;
         }
    
    } else 
        {
            cout << "Матрицы не равны, пустой файл создан";
             ofstream fout("matr3.txt");
        }
 
    system("pause");
    return 0;
}
Помогите решить проблему с потоками in,in2. Если в программе один поток, допустим in, то значение в массиве не задаются. Каретку в начало файл ставил. Ещё вопрос: как правильно передать файл в качестве параметра функции
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2018, 22:16
Ответы с готовыми решениями:

Необходимо оптимизировать программу
Программа должна суммировать числа получаю минимальное значение. Не проходит часть тестов из-за...

Необходимо оптимизировать программу
Помогите оптимизировать программу, пожалуйста. Происходит ввод данных через файл и последующий их...

Как можно оптимизировать программу?
Здравствуй, Cyberforum. Долго копался в коде, но не вхожу во время) #include &lt;bits/stdc++.h&gt;...

Нужно оптимизировать программу сложность с циклами и условными операторами
Здравствуйте. Недели 2 пытаюсь кодить на с++, что-то получается, что-то не очень. Прошу...

2
║XLR8║
1211 / 908 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
10.02.2018, 23:01 2
Цитата Сообщение от Elllik Посмотреть сообщение
ifstream in2("matr1.txt"); *// открываем этот файл для чтения снова
зачем? http://en.cppreference.com/w/c... ream/seekg

Добавлено через 44 секунды
C++
1
2
3
4
5
6
7
    in.close(); //под конец закроем файла
 
    ifstream in2("matr1.txt"); // открываем этот файл для чтения снова
 
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            in >> A[i][j];
OMG закрыл а потом читаешь?

Добавлено через 2 минуты
Цитата Сообщение от Elllik Посмотреть сообщение
C++
1
2
3
        while(!in.eof()) // пробегаем пока не встретим конец файла eof
        {
            in >> temp; //в пустоту считываем из файла числа
а не проще вот так
C++
1
while (cin >> temp)
Добавлено через 4 минуты
Цитата Сообщение от Elllik Посмотреть сообщение
C++
1
double **A; // создание двумерного динамического массива
Лучше std::vector<std::vector<double>> http://en.cppreference.com/w/cpp/container/vector

Цитата Сообщение от Elllik Посмотреть сообщение
C++
1
2
3
double n = sqrt(double(count));
double **A; // создание двумерного динамического массива
* * A = new double*[n];
Опять 25, A = new double*[n]; что это? Размер массива должен быть, как минимум целым числом.
0
Велосипедист...
351 / 218 / 73
Регистрация: 15.12.2015
Сообщений: 785
10.02.2018, 23:10 3
Цитата Сообщение от outoftime Посмотреть сообщение
а не проще вот так
C++
1
while (cin >> temp)
std::ios::operator bool() не проверяет на EOF.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2018, 23:10

Резать прямоугольник, пока от него не останутся только квадраты. Посчитать их количество. (Оптимизировать программу)
Есть прямоугольник A x B. Нужно отрезать от него как можно больший квадрат и отбросить его (ставя...

Как оптимизировать программу ? Или подскажите другую реализацию. Задача на 47/1000 секунды превышает лимит
Найти и удалить (правым удалением), если существует, вершину с наибольшим ключом из вершин дерева,...

Как оптимизировать программу
Мне не нравится с какой скорости у меня происходит обход стека при синтаксическом анализе текста -...

нужно оптимизировать программу
Задача такая:нужно найти числа в последовательности которая задается с клавиатуры(заранее...

Оптимизировать программу
Помогите ускорить программу! Задача такая: нужно создать массив из двух миллионов случайных чисел...

[Оптимизировать программу]
Доброго времени суток. Как можно увеличить скорость работы программы? В частности, ускорить работу...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru