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

Чтение и вывод массива из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ создание двумерного массива http://www.cyberforum.ru/cpp-beginners/thread788179.html
поскажите плиз почему массив не выводится как положено.. (про библиотеки я знаю) #include "stdafx.h" #include <iostream> #include <ctime> #include <cstdlib> #include <stdio.h> #include <iomanip> #include <cmath> using namespace std; const int a=100, b=100;
C++ Удалить из числа вхождение первой цифры Нужно из числа удалить все вхождения первой цифры. Например в числе 123123 первая цифра = 1, мы удаляем её и её вхождения в число и получаем в итоге число 2323. Всё бы хорошо, но хотят чтобы удалили эту первую цифру из числа НЕ конвертируя число в строку. Есть какие-то идеи по поводу алгоритма ? Меня что-то заводит в тупик такое издевательское задание :( http://www.cyberforum.ru/cpp-beginners/thread788177.html
C++ Удаление символов из строки
Условие: Даны натуральное число N, символы s1,...,sn. Удалить из данной последовательности все группы букв вида abcd. Я начинающий программист, вот что у меня получилось: #include <iostream> #include <conio.h> using namespace std; int main () { int n, i; string s; cout<<"Vvedite n"<<endl; cin>>n; cout<<"Vvedite stroku"<<endl;
C++ Защита от дурака. Разбор кода
всем здравствуйте. Прошу помощи. такова ситуация, есть код защиты от ввода букв и отбрасывания пробелов, но не могу разобраться, он не мой. помогите разобраться. float zashita() { char si; char s1={""}; int r2=0,r3=0; float kat1;
C++ Возврат значения С++ http://www.cyberforum.ru/cpp-beginners/thread788159.html
Hi people! Вот такое задание: 1) Реализовать заданную динамическую структуру данных, с которой можно работать через перегруженные операции. 2) Для демонстрации работы программы необходимо реализовать меню, позволяющее вызывать операции реализованной структуры данных. На экране должна отображаться вся последовательность введенных элементов, над которыми производятся действия. Создайте...
C++ Указателю на базовый класс присвоить адрес производного класса class Point { public: Point(float a=0, float b=0) { x=a; y=b; } protected: float x; float y; }; подробнее

Показать сообщение отдельно
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
17.02.2013, 16:30     Чтение и вывод массива из файла
Вы странным образом работаете с индексами массива.
Вы не проверяете выделилась память или открылся поток.
Вы непонятно зачем используете буфер, поток и без вас прекрасно справится с такой задачей.
Вы интерпретируете двумерный массив, как одномерный, можно обойтись одним индексом.
И еще хорошо-бы поставить проверку от дурака при чтении из файла, т.к., если там окажется хотя бы одно число, поток заморозится.
И еще, для экономии места совершенно спокойно можно писать данные в двоичный файл.
И еще, вы не сбрасываете СЧ, поэтому при каждом пуске будут одинаковые числа.
И еще, это программирование на Ц с плюсами, вам тут многие скажут, на С++ нужно использовать возможности С++, те же стандартные контейнеры, алгоритмы и прочее.
Ну и напоследок, ту не мешалобы подключить нормальную обработку исключений через try..catch.
Немного подправил.

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
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
int main() {
    int range = 100, min = 1, a, s;
    cin >> a; // если это строки
    cin >> s; // если это столбцы
    int *arr = new int[a * s];
    int *rarr = new int[a * s];
    if (arr == NULL || rarr == NULL) {
        cerr << "low memory foe array";
        exit(1);
    }
    ofstream fout("matrix.txt");
    if (!fout.is_open()) {
        cerr << "file not found";
        exit(1); // exit with code 1;
    };
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < s; j++) {
            // то перебор элементов делается так
            arr[i * s + j] = rand() % (range + 1) + min;
            cout << setw(5) << arr[i * s + j];
        }
        cout << endl;
    }
    cout << endl;
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < s; j++) {
            fout << arr[i * s + j] << " ";
        }
        fout << endl;
    }
    ifstream fin("matrix.txt");
    // в вашем случае буфер не нужен
 
    if (!fin.is_open()) {
        cerr << "file not found";
        exit(1); // exit with code 1;
    };
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < s; j++) {
            fin >> rarr[i * s + j];
            cout << setw(5) << rarr[i * s + j];
        }
        cout << endl;
    }
    delete[] arr;
    delete[] rarr;
    fin.close();
    cout << endl;
//system("pause");
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru