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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mannoroh666
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 3
#1

Задан файл f1. Сформировать ф2, разбивая ф1 на строки(разделители - точка или 20 символов) - C++

07.06.2016, 16:47. Просмотров 169. Ответов 5
Метки нет (Все метки)

Задан текстовый файл f1.Сформировать файл f2 из файла f1, разбивая его на строки так, чтобы каждая строка оканчивалась точкой, либо содержала 20 символов, если среди них нет точки.(Использовать функции и меню).
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
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <fstream>
#include <io.h>
#include <string.h>
using namespace std;
void proof();
void sozd();
void menu();
char t[200];
string str;
int count,y,m[200],n,k=0,b,i;
 
int main() {
    setlocale(LC_ALL, "rus");
    while(y!=5){
          menu();
          cin >> count;
          switch (count)
          {
             case 1:
             {proof();
             break;
             }
             case 2:
             {sozd();
                 break;
             }
             default:
             cout << "Нео, вы выбрали не ту таблетку!" << endl;
             }
            }
         return 0;
}
void menu(){
    cout << "Сделайте ваш выбор:"<<endl;
          cout<<"1:Выбрать уже существующий файл"<<endl;
          cout<<"2:Использовать вновь создаваемый файл"<<endl;
}
 
//Идеально работает
void sozd(){
    cout<<"Введите текст: ";
    cin.getline(t,200);
    b=strlen(t);
    ofstream F;
            F.open("f1.txt",ios_base::app);
            for (i=0;i<b;i++)
                F<<t[i];
            F.close();
}
 
 
void proof(){
 
    //Тело программы:
    ifstream L("f3.txt");
    ofstream C("f2.txt");
        if (!L.is_open())
                cout << "Файл не может быть открыт!\n";
         else
         {
         for (i=0;i<1;i++)//F3 уже знаем, поэтому знаем и кол-во строк
                    L.getline(t,50);
             for (i=0;i<20;i++)
                         {
                 if (t[i]=='.')      //\0- вместо endl
                     {L.getline(t,i);
                 C<<t[i];
                             }
                 L.getline(t,20);
                 C<<t[20];
             }
                    }
                C.close();
        L.close();
                }
Все никак не получается наладить обработку хотя бы файла ф3 в котором написано:
Рандомный.Текст.Двадцатьпятоедекабря123.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2016, 16:47     Задан файл f1. Сформировать ф2, разбивая ф1 на строки(разделители - точка или 20 символов)
Посмотрите здесь:

Из символов введенной строки сформировать две строки - из цифр и букв - C++
Здраствуйте, помогите пожалуйста с задачей, надо из символов введенной строки сформировать две строки - из цифр и букв

Сформировать строку, считая числа начальной строки соответствующими ASCII-кодами символов результирующей строки - C++
Доброго времени суток! Прошу помощи. Дана строка в виде последовательности разделенных запятыми натуральных чисел 32 ... 255....

Функция работы со строкой символов,заменить разделители - C++
Нужно решить задачу: Написать функцию работы со строкой символов, которая заменит все разделители между словами символом табуляции.

Сформировать новую строку, состоящую из символов цифр исходной строки - C++
Вводится строка. Сформировать новую строку, состоящую из символов цифр исходной строки. Полученную строку преобразовать в число.

Сформировать строку из слов исходной строки в порядке уменьшения количества символов в слове - C++
Всем привет. Всем неравнодушным прошу, помочь. Сделать блок-схему, согласно по данному коду. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

Даны две строки, сформировать третью из символов, которые встречаются более двух раз - C++
Добрый день, помогите с задачей пожалуйста:) Даны две строки, сформировать третью из символов , которые встречаются более двух раз. ...

Из символов строки сформировать одномерный массив и вывести значения его элементов в обратном порядке - C++
Всем привет! такое задание: Описать в виде формулы или словесно рекурсивность задачи Вашего варианта Разработать и отладить программу. ...

Треугольник задан вершинами (x1,y1), (x2,y2), (x3,y3). Принадлежит ли заданная точка (x,y) указанному треугольнику. - C++
Добрый день! Помогите пожалуйста разобраться с прогой... Треугольник задан вершинами (x1,y1), (x2,y2), (x3,y3). Принадлежит ли...

Разбить файл на строки длиной не более 60 символов - C++
Проблема в том, что функция, работает не корректно... А вот понять в чем проблема я чет не могу... (Хотя есть ощущение, что функция...

Переписать строки в другой файл, в которых имеется более 30 символов - C++
Имеется текстовый файл. Переписать его строки в другой файл, в которых имеется более 30 символов Решаю задачу целый день.

Дан текстовый файл F. Получить все его строки, содержащие более 60 символов. На С++ - C++
написал такой код, но он с ограничениями длина строки не больше 256, как сделать его универсальным? для строк любого размера #include...

Задан файл с отрицательными и положительными целыми числами. Записать в другой файл сначала отрицательные, а потом положительные числа - C++
Помогите пожалуйста!!!правда очень важно!! Задан файл с отрицательными и положительными целыми числами. Записать в другой файл сначала...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5240 / 4560 / 1532
Регистрация: 14.04.2014
Сообщений: 18,125
07.06.2016, 17:32     Задан файл f1. Сформировать ф2, разбивая ф1 на строки(разделители - точка или 20 символов) #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
int c, n;
while ((c = L.get()) != EOF)
{
    if (c == '\n') c = ' ';
    C << static_cast<char>(c);
    ++n;
    if ((c == '.' && n <= 20) || n == 20)
    {
        C << endl;
        n = 0;
    }
}
Mannoroh666
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 3
07.06.2016, 18:19  [ТС]     Задан файл f1. Сформировать ф2, разбивая ф1 на строки(разделители - точка или 20 символов) #3
Суть идеи я уловил, но как не менял программу на выводе всегда получаю n-ное кол-во повторяющихся символов в ф2. Почему это происходит?
P.S. А зачем нам static_cast?
nmcf
5240 / 4560 / 1532
Регистрация: 14.04.2014
Сообщений: 18,125
07.06.2016, 19:38     Задан файл f1. Сформировать ф2, разбивая ф1 на строки(разделители - точка или 20 символов) #4
У меня же работает. Вот пример, только без файлов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <sstream>
using namespace std;
 
int main()
{
    istringstream iss("hghhghghgg.gjgjgjdjsieiiaooofpp3334.\nrttt");
    int c, n;
    while ((c = iss.get()) != EOF)
    {
        if (c == '\n') c = ' ';
        cout << static_cast<char>(c);
        ++n;
        if ((c == '.' && n <= 20) || n == 20)
        {
            cout << endl;
            n = 0;
        }
    }
    return 0;
}
Выводит:
Код
hghhghghgg.
gjgjgjdjsieiiaooofpp
3334.
 rttt
Цитата Сообщение от Mannoroh666 Посмотреть сообщение
А зачем нам static_cast?
Чтобы коды вместо символов не выводились.
Mannoroh666
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 3
07.06.2016, 23:46  [ТС]     Задан файл f1. Сформировать ф2, разбивая ф1 на строки(разделители - точка или 20 символов) #5
Спасибо за разъяснения! И последний вопрос(возможно, не по теме): почему компиляторы Eclipse и Dev C++ мне выдали просто одну строку, хотя первый попавшийся компилятор в гугле(http://cpp.sh/ с натройками по умолчанию) выдал нормальный результат. И подскажите нормальный компилятор пожалуйста.
nmcf
5240 / 4560 / 1532
Регистрация: 14.04.2014
Сообщений: 18,125
08.06.2016, 08:56     Задан файл f1. Сформировать ф2, разбивая ф1 на строки(разделители - точка или 20 символов) #6
Может, там не в компиляторе дело, а в выводе. Ты скомпилируй полноценное приложение и отдельно от среды запускай.
Visual Studio попробуй.
Yandex
Объявления
08.06.2016, 08:56     Задан файл f1. Сформировать ф2, разбивая ф1 на строки(разделители - точка или 20 символов)
Ответ Создать тему
Опции темы

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