Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Tan972
0 / 0 / 1
Регистрация: 27.03.2014
Сообщений: 7
#1

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

03.04.2014, 11:26. Просмотров 327. Ответов 2
Метки нет (Все метки)

Помогите пожалуйста, что не правильно,,,не выводит результат в файл
http://www.cyberforum.ru/cpp-beginners/thread555455.html

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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2014, 11:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с файлами (C++):

Работа с файлами
У меня вот такая задача. Есть текстовик с неким текстом(не пуст), из него нужно...

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

Работа с файлами С++
Все работает , но проблема вот в чем: Считал все из файла file.txt записал в...

Работа с файлами
Подскажите пожалуйста что не так в программе. Она не открывает заданые файлы....

Работа с файлами С++
Перезаписать текстовый файл, выбросив из него все гласные буквы, новый...

2
don_keyhot
8 / 8 / 6
Регистрация: 02.04.2014
Сообщений: 62
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;
0
Tan972
0 / 0 / 1
Регистрация: 27.03.2014
Сообщений: 7
03.04.2014, 14:47  [ТС] #3
Спасибо большое!
только она должна заменить последовательности пробелов в заданной строке одним пробелом...

Добавлено через 7 минут
Спасибо большое!
только она должна заменить последовательности пробелов в заданной строке одним пробелом...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2014, 14:47
Привет! Вот еще темы с решениями:

Работа с файлами
Здравствуйте! С помощью функции Cap_table() шапку таблицы. Теперь надо с новой...

Работа с файлами
Доброе время суток. Работа с файлами 1. Вывести на экран текст...

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

Работа с файлами на С++
Как сохранить результат вычислений на текстовом файле? Я пробовал открыт...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru