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

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

Восстановить пароль Регистрация
 
Tan972
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 7
03.04.2014, 11:26     Работа с файлами #1
Помогите пожалуйста, что не правильно,,,не выводит результат в файл

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
#include<iostream.h>;
#include<fstream.h>;
#include<iomanip>;
 
const int N=100;
struct strMark
{
char A[N+1];
char Mk;
char space;
};
 
void main()
{
strMark s;
fstream in, out;
int i,j;
s.space=' ';
cout<<" "<<endl;
in.open("in.txt",ios::in);
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);    
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);
i=-1;
do
    {i++;
     out<<"hello";
     out<<s.A[i];
    }
while(s.A[i]!=s.Mk);    
out.close();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2014, 11:26     Работа с файлами
Посмотрите здесь:

C++ Работа с файлами
C++ Работа с файлами
C++ Работа с файлами
C++ Работа с файлами на С++
работа с файлами C++
C++ [C++] Работа с файлами
C++ Работа с файлами
C++ С++ Работа с файлами!!!!

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
don_keyhot
 Аватар для don_keyhot
4 / 4 / 2
Регистрация: 02.04.2014
Сообщений: 60
03.04.2014, 13:30     Работа с файлами #2
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;
Tan972
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 7
03.04.2014, 14:47  [ТС]     Работа с файлами #3
Спасибо большое!
только она должна заменить последовательности пробелов в заданной строке одним пробелом...

Добавлено через 7 минут
Спасибо большое!
только она должна заменить последовательности пробелов в заданной строке одним пробелом...
Yandex
Объявления
03.04.2014, 14:47     Работа с файлами
Ответ Создать тему
Опции темы

Текущее время: 00:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru