Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
Юлия17071992
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
1

Считать текст из файла, и вывести его на экран, заменив цифры от 0 до 9 словами

14.04.2012, 09:03. Просмотров 3721. Ответов 10
Метки нет (Все метки)

Нужна Программа, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова "ноль", "один",..."девять", начиная каждое предложение с новой строки

Добавлено через 36 секунд
помогите разобраться...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2012, 09:03
Ответы с готовыми решениями:

Считать текст из файла и вывести его на экран, заменив цифры от 0 до 9 на слова
Задачка в С++ Считать текст из файла и вывести его на экран, заменив цифры от...

Файлы: считать текст из файла и вывести его на экран, заменяя...
Помогите пожалуйста с реализацией задачи Написать программу, которая считывает...

Считать текст из файла и вывести на экран его предложения в обратном порядке
Не могу найти ошибку, помогите пожалуйста! #include "stdafx.h" #include...

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

Файл: Считать из файла посимвольно текст и вывести его на экран. Объясните, как это работает.
Дали нам в вузе (1 курс) такой вот код, чтобы считать с файла посимвольно текст...

10
zitxbit
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
14.04.2012, 10:52 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
    FILE* fp = NULL; char* filename = "d:\\in.txt";
    if ((fp = fopen(filename,"r")) == NULL)
        printf("Unable to open file %s\n",filename);
    
    static char ch = '\0';
    static char* digits[] = { "zero", "one", "two" ,"three", "four", 
        "five", "six", "seven", "eight", "nine" }; 
    while ((ch = fgetc(fp)) != EOF)
        if (isdigit(ch)) printf("%s",digits[ch - '0']);
        else if (ch == '.' || 
            ch == '!' || ch == '?') printf("\n");
        else printf("%c",ch);
in.txt
Countdown from one to eight - 1 2 3 4 5 8. Let's output ascending numbers - 9,8,7,6,5,4,3,2,1

Output:
Countdown from one to eight - one two three four five eight
Let's output ascending numbers - nine,eight,seven,six,five,four,three,two,one
0
Юлия17071992
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
15.04.2012, 15:19  [ТС] 3
а как полностью программа будет выглядеть? что-то у меня не работает
0
zitxbit
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
15.04.2012, 15:25 4
То есть как не работает? Сначало создай файл типа d:\\in.txt и заполние его
текстом из предыдущего поста. Потом скомпилируй код ниже, и запусти.
Работает? Дай ответ.

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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <cctype>
 
int main(void)
{
    FILE* fp = NULL; char* filename = "d:\\in.txt";
    if ((fp = fopen(filename,"r")) == NULL)
        printf("Unable to open file %s\n",filename);
    
    static char ch = '\0';
    static char* digits[] = { "zero", "one", "two" ,"three", "four", 
        "five", "six", "seven", "eight", "nine" }; 
    while ((ch = fgetc(fp)) != EOF)
        if (isdigit(ch)) printf("%s",digits[ch - '0']);
        else if (ch == '.' || 
            ch == '!' || ch == '?') printf("\n");
        else printf("%c",ch);
 
    _getch();
 
    return 0;
}
1
Юлия17071992
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 55
16.04.2012, 14:10  [ТС] 5
Работает! Только можешь объяснить как функции работают?
0
zitxbit
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
16.04.2012, 15:04 6
В цикле при помощи функции ch = fgetc(fp) получаем каждый символ
и записываем в переменную ch. Далее сравниваем при помощи ф-ции
isdigit(ch) == true, если значение переменной ch - цифра, вычисляем
индекс слова "zero" - "nine" в массиве digits: ch - '0', и выводим
соответствующее слово на экран, далее если ch - '.','?','!', то печатаем
символ перехода на другую строку "\n". Во всех других случаях печатаем
сам символ ch.
0
Pro100 Andrei
4 / 4 / 0
Регистрация: 19.05.2014
Сообщений: 43
11.11.2014, 11:51 7
спасибо)))))
0
Kukuxumushi
1 / 1 / 0
Регистрация: 19.10.2015
Сообщений: 24
19.10.2015, 01:24 8
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
    string line, text;
    int i, s;
    ifstream myfile("D:\input.txt");
    if (myfile.is_open())
    {
        while (myfile.good())
        {
            getline(myfile, line);
            text = line + text;
        }
        i = 0;
        s = text.length();
        while(text[i]!='\0'){
            
            switch (text[i])
            {
            case '0': { text.replace(i, 1, "zero");   }
                      break;
            case '1':{text.replace(i, 1, "one");  }
                     break;
            case '2':{text.replace(i, 1, "two");  }
                     break;
            case '3':{text.replace(i, 1, "three");  }
                     break;
            case '4':{text.replace(i, 1, "four");   }
                     break;
            case '5':{text.replace(i, 1, "five");  }
                     break;
            case '6':{text.replace(i, 1, "six");  }
                     break;
            case '7':{text.replace(i, 1, "seven"); }
                     break;
            case '8':{text.replace(i, 1, "eight");  }
                     break;
            case '9':{text.replace(i, 1, "nine");  }
                     break;
            case '.':{text.replace(i, 1, ".\n");  }
                     break;
            case '!':{text.replace(i, 1, "!\n");  }
                     break;
            case '?':{text.replace(i, 1, "?\n");  }
                     break;
            
            default: break;
            }
            i++;
        }
        cout << text << endl;
        myfile.close();
    }
    system("pause");
    return 0;
}
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
19.10.2015, 01:32 9
Kukuxumushi, молодец, ты хоть проверял свою программу? Не говоря уже о том что теме больше трёх лет.
0
Kukuxumushi
1 / 1 / 0
Регистрация: 19.10.2015
Сообщений: 24
19.10.2015, 09:59 10
Цитата Сообщение от castaway Посмотреть сообщение
Kukuxumushi, молодец, ты хоть проверял свою программу? Не говоря уже о том что теме больше трёх лет.
Мне потребовалось решить это задание, и я не найдя решения на форуме решил его и поделился. Программа у меня работает. Единственное, что там лишняя строка с поиском длинны строки.
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
19.10.2015, 10:38 11
Обрати внимание на открытие файла. Так не делают. Либо: \\, либо: /.
0
19.10.2015, 10:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2015, 10:38

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

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

Написать программу, которая считывает английский текст из файла и выводит его на экран, заменив каждую первую
Написать программу, которая считывает английский текст из файла и выводит его...


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

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

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