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

Работа с файлами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как заставить Strncpy вложить в itog часть символов строки str, если дина str больше, чем кол-во нужных нам символов? http://www.cyberforum.ru/cpp-beginners/thread1137761.html
strncpy(itog,str,size+1); cout<<itog; itog вообще не выводится Добавлено через 2 минуты Вот код. #include <iostream> #include <cstring>
C++ Код Хаффмана Всем доброго дня! имеется код хафманна, работает, но считает неправильно! кто может объяснить в чем дело? #include <iostream> #include <vector> #include <map> #include <list> #include <fstream> #include <string> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread1137740.html
Даны действительное число а, многочлен степени n. Получить многочлен (x^2+2ax+3)*P(x) C++
Даны действительное число а, многочлен степени n. Получить многочлен (x^2+2ax+3)*P(x). :help: P(x)={p}_{n}{x}^{n}+{p}_{n-1}{x}^{n-1}+...+{p}_{0}
C++ Достаточно ли книги Страуструпа?
В общем, учу с++ по страуструпу и думаю: " а хватит ли этого???" . Подскажите книгу, по которой учиться дальше? Спасибо!
C++ -Двумерный массив вычислить сумму и число положительных элементов матрицы A[N,N], находящихся над главной диагональю http://www.cyberforum.ru/cpp-beginners/thread1137678.html
Помогите пожалуйста решить, и распишите каждую строку а то будут спрашивать что тут а что там. -Двумерный массив вычислить сумму и число положительных элементов матрицы A, находящихся над главной диагональю.
C++ Выяснить, является ли сумма элементов четвертой строки массива двузначным числом Дан двумерный массив. Выяснить, является ли сумма элементов четвертой строки массива двузначным числом. подробнее

Показать сообщение отдельно
don_keyhot
 Аватар для don_keyhot
4 / 4 / 2
Регистрация: 02.04.2014
Сообщений: 60
03.04.2014, 13:30     Работа с файлами
1) хидеры поправь:
C++
1
2
3
#include <iostream>
#include <fstream>
#include <iomanip>
imho, циклы какие-то мутные, тут все прозрачно, цикл for так и просится
короче вот поправленный вариант, все выводит:
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
#include <iostream>
#include <fstream>
#include <iomanip>
 
using namespace std;
 
const int N = 100;
struct strMark
{
    char A[N + 1];
    char Mk;
    char space;
};
 
 
int main()
{
    strMark s;
 
    fstream in, out;
    
    int i, j;
    s.space = ' ';
    cout << " " << endl;
    
 
    in.open("in.txt", ios::in);  // попытка отрытия файла
    if (in.is_open())            // если удачна, т.е. файл открыт
    {                            // то заносим из него данные в массив A
        i = -1;
        do
        {
            i++;
            in >> s.A[i];
            if ((i == 101) || (in.eof() == 1)) s.A[i] = s.Mk;
        } while (s.A[i] != s.Mk);
    }
    else // попытка отрытия НЕ удачна
    {    // заполняем массив вручную
        for (i = 0; i < 100; i++)
            s.A[i] = i;
        s.A[100] = s.space;
    }
    in.close();
 
    i = 1;
    while (s.A[i] != s.Mk)
    {
        if ((s.A[i] == s.space) && (s.A[i - 1] == s.space))
        {
            j = i;
            while (s.A[j] != s.Mk)
            {
                s.A[j] = s.A[j + 1];
                j++;
            }
            s.Mk--;
        }
        i++;
    }
    
    out.open("out.txt", ios::out);
    out << "hello\n";              // вынес из цикла запись приветствия
 
    i = -1;
    do
    {
        i++;
        //out << "hello\n";        // а зачем здесь это в цикле выводить перед каждым символом?..
        out << s.A[i] << " ";      // выводим символ в файл "out.txt"
        cout << s.A[i] << " ";     // отладка - вывод на экран
 
        // цикл пока НЕ пробел = последний символ в массиве
        // хотя я НЕ понял, а зачем такое мутное условие цикла?
        // мы ведь знаем количество элементов в массиве, так что тут лучше через цикл for() 
        // типа так:
        //  for (i = 0; i < 100; i++)
        //      out << s.A[i] << " ";
    } while (s.A[i] != s.Mk);      
    
    out.close();
 
    cout << endl;
    system("pause");
    
    return 0;
}
Добавлено через 8 минут
зря я заносил в массив символя с 0, управляющие попадут, лучше наверное будет так:
C++
1
  s.A[i] = 48+i;
 
Текущее время: 04:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru