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

Работа с файлами: чтение массива

14.03.2015, 23:39. Показов 623. Ответов 5
Метки нет (Все метки)

Программа работает, но выводит космические числа. В чем может быть причина?

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
// File.cpp: определяет точку входа для консольного приложения.
//
#include"stdafx.h"
#include<conio.h>
#include<fstream>
#include<iostream>
using namespace std;
 
int main()
{   
    setlocale(LC_ALL, "Russian");
    cout <<"Автор – Иванов И.И., студент гр. ИСЭбд-11"<< endl;
    cout <<"Вариант № 100"<< endl;
        cout <<"Программа считывает из 2х файлов числа, производит операции с ними и выводит на экран и в файл ЛР9 - 3.txt "<< endl << endl;
    ifstream in_stream;
    ofstream out_stream;
 
    in_stream.open("G:/1 курс/2 семестр/Программирование/ЛР9 - 1.txt");
    if(in_stream.fail())
    {
        cout<<"Ошибка при открытии ЛР9 - 1.txt\n";
        _getch();
        return 0;
    }
    cout<<"Файл ЛР9 - 1.txt открыт\n";
    int n=3;
    int a[3];
    in_stream >> a[3];
    in_stream.close();
    cout <<"Файл ЛР9 - 1.txt закрыт\n";
    
    out_stream.open("G:/1 курс/2 семестр/Программирование/ЛР9 - 2.txt");
    if(out_stream.fail())
    {
        cout<<"Ошибка при открытии ЛР9 - 2.txt\n";
        _getch();
        return 0;
    }
    cout <<"Файл ЛР9 - 2.txt открыт\n";
    int b[3];
    in_stream >> b[3];
    in_stream.close();
    cout <<"Файл ЛР9 - 2.txt закрыт\n";
    
    out_stream.open("G:/1 курс/2 семестр/Программирование/ЛР9 - 3.txt");
    if(out_stream.fail())
    {
        cout<<"Ошибка при открытии ЛР9 - 3.txt\n";
        _getch();
        return 0;
    }
    cout <<"ЛР9 - 3.txt открыт\n";
    int с[3];
        
    for(int i=0;i<n;i++)
        {
            с[i]=a[i]+b[i];
        }
    for(int i=0;i<n;i++)
        cout<< с[i] <<" ";
    for(int i=0;i<n;i++)
    out_stream << с[i] ;
    out_stream.close();
    cout <<"ЛР9 - 3.txt закрыт\n";
    _getch();
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2015, 23:39
Ответы с готовыми решениями:

Работа с файлами, чтение,запись
Привет! 1) Читаю файл: int sum = 0; char data; ifstream inFile; ...

Работа с файлами (запись/чтение данных из бд)
Здравствуйте. Есть код(рабочий) #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include &lt;time.h&gt;...

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

Работа с файлами. Запись и чтение строк
Добавляю строку в файл &quot;text.txt&quot; а потом пытаюсь получить количество строк в этом файле.. ...

5
шКодер самоучка
2145 / 1856 / 907
Регистрация: 09.10.2013
Сообщений: 4,056
Записей в блоге: 7
14.03.2015, 23:50 2
строки 27-28, 40-41 : выход за границы массива, очевидно, предполагалось чтение в цикле
строки 41-42 : попытка чтения из закрытого файла
и много всего другого, вроде строк 32,45 - открытие другого файла без закрытия предыдущего...
0
0 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 49
14.03.2015, 23:52  [ТС] 3
По сути, проблема в том, что он неправильно считывает числа из начальных файлов, отсюда и такой результат. Еще он записывает результат в 2 файл, а не в конечный 3. Нам даны матрицы в 2-х файлах 3*3. Операции производятся только с первой строкой. Может записала их туда неправильно? Как записать матрицы, чтобы он их прочитал правильно?(
0
33 / 33 / 18
Регистрация: 15.05.2013
Сообщений: 236
15.03.2015, 00:30 4
А что внутри?
Цитата Сообщение от Katrin35 Посмотреть сообщение
"G:/1 курс/2 семестр/Программирование/ЛР9 - 1.txt"
Добавлено через 5 минут
Цитата Сообщение от Katrin35 Посмотреть сообщение
Как записать матрицы, чтобы он их прочитал правильно?(
Эмм. Хотя бы так:
123 456 789
321 654 987
987 987 987

В качестве разделителя служит пробел. Потом разобьешь строки и получишь числа. Потыкайся, вроде должна справиться.

Чтобы перевести строку в число и если исп. С++11 загугли std::to_string.
Если С++03, то atoi.
0
0 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 49
15.03.2015, 12:00  [ТС] 5
Исправила несколько ошибок - открывает и закрывает все нормально, записывает теперь в 3-ий файл. Матрицы в файлах записаны правильно. Но не могу преобразовать строки в числа..

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
// File.cpp: определяет точку входа для консольного приложения.
//
#include"stdafx.h"
#include<conio.h>
#include<fstream>
#include<iostream>
#include <cstdlib>
#include <string>
 
using namespace std;
 
int main()
{   
    setlocale(LC_ALL, "Russian");
    cout <<"Автор –"<< endl;
    cout <<"Вариант № 100"<< endl;
    cout <<"Программа считывает из 2х файлов числа, производит операции с ними и выводит на экран и в файл ЛР9 - 3.txt "<< endl << endl;
    ifstream in_stream;
    ofstream out_stream;
 
    in_stream.open("G:/1 курс/2 семестр/Программирование/ЛР9 - 1.txt");
    if(in_stream.fail())
    {
        cout<<"Ошибка при открытии ЛР9 - 1.txt\n";
        _getch();
        return 0;
    }
    cout<<"Файл ЛР9 - 1.txt открыт\n";
    int n=3;
    int a[2];
    
    for(int i=0;i<n;i++)
    cout<< a[i] <<" ";
    in_stream >> a[2];
    in_stream.close();
    cout <<"Файл ЛР9 - 1.txt закрыт\n";
    
    in_stream.open("G:/1 курс/2 семестр/Программирование/ЛР9 - 2.txt");
    if(in_stream.fail())
    {
        cout<<"Ошибка при открытии ЛР9 - 2.txt\n";
        _getch();
        return 0;
    }
    cout <<"Файл ЛР9 - 2.txt открыт\n";
    int b[2];
    for(int i=0;i<n;i++)
    cout<< b[i] <<" ";
    in_stream >> b[2];
    in_stream.close();
    cout <<"Файл ЛР9 - 2.txt закрыт\n";
    
    out_stream.open("G:/1 курс/2 семестр/Программирование/ЛР9 - 3.txt");
    if(out_stream.fail())
    {
        cout<<"Ошибка при открытии ЛР9 - 3.txt\n";
        _getch();
        return 0;
    }
    cout<<"Файл ЛР9 - 3.txt открыт\n";
    int с[2];
        
    for(int i=0;i<n;i++)
        {
            с[i]=a[i]-b[i];
        }
    for(int i=0;i<n;i++)
    cout<< с[i] <<" ";
    cout <<endl;
    for(int i=0;i<n;i++)
    out_stream << с[i] ;
    out_stream.close();
    cout <<"ЛР9 - 3.txt закрыт\n";
    _getch();
    return 0;
}
0
33 / 33 / 18
Регистрация: 15.05.2013
Сообщений: 236
15.03.2015, 15:37 6
Угу, забыл. Если у тебя строка такая "123 456 789", то можно так:
C++
1
in_stream >> a[i];

Вот так правильно:
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
// File.cpp: определяет точку входа для консольного приложения.
#include"stdafx.h"
#include<fstream>
#include<iostream>
#include <string>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout <<"Автор –"<< endl;
    cout <<"Вариант № 100"<< endl;
    cout <<"Программа считывает из 2х файлов числа, производит "
           "операции с ними и выводит на экран и в файл ЛР9 - 3.txt "<< endl << endl;
 
 
    ifstream in_stream("D:\\1.txt");
    if(!in_stream.is_open()){
        cout<<"Ошибка при открытии ЛР9 - 1.txt\n";
        _getch();
        return 0;
    }
    else cout<<"Файл 1.txt открыт\n";
 
    const int SIZE=3;
    int a[SIZE];
    for(int i=0;i<SIZE;i++) {
        in_stream >> a[i];
        cout << a[i] << " ";
    }
 
    cout << endl;
    in_stream.close();
    cout <<"Файл 1.txt закрыт\n";
 
    in_stream.open("D:\\2.txt");
    if(!in_stream.is_open()) {
        cout<<"Ошибка при открытии 2.txt\n";
        _getch();
        return 0;
    }
    else cout <<"Файл 2.txt открыт\n";
 
 
    int b[SIZE];
    for(int i=0;i<SIZE;i++) {
        in_stream >> b[i];
        cout << b[i] << " ";
    }
 
    cout << endl;
    in_stream.close();
    cout <<"Файл 2.txt закрыт\n";
 
    ofstream out_stream("D:\\3.txt");
    if(!out_stream.is_open()) {
        cout<<"Ошибка при открытии 3.txt\n";
        _getch();
        return 0;
    }
    else cout<<"Файл 3.txt открыт\n";
 
 
    int c[3];
    for(int i = 0; i < 3; ++i) {
        c[i] = a[i] - b[i];
        cout << c[i] <<" ";
        out_stream << c[i] << " ";
    }
    out_stream << endl;
    out_stream.close();
 
    cout <<"3.txt закрыт\n";
 
 
    _getch();
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2015, 15:37

Работа с файлами, запись, обработка и чтение
доброго времени суток, мне нужно: Создать текстовый файл, содержащий целые значения, следующего...

Работа с файлами, запись строки в файл и чтение из файла
Короче у меня задание типа записать строку в old.txt, потом считать это, найти самое маленькое...

Работа с файлами(Запись,чтение,работа с данными)
Здравствуйте, никак не могу осилить файлы... Для начала вот само задание: В справочной автовокзала...

Работа с файлами, чтение/работа со строкой
Доброго времени суток. Начал работать с C++ Builder 6. Есть текстовый файл .txt с различными...


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

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

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