Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 11
1

Переписать в новый файл строки по возрастанию длины

29.03.2015, 12:49. Показов 1090. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Переписать из файла f1 (содержащего строки разной длинны) строки по возрастанию длинны в файл f2.
Запуталась с циклами конкретно
Подскажите, пожалуйста.
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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    FILE *f1, *f2;
    char s1[1000], s2[1000];
    f1 = fopen("C:...f1.txt", "r");
    f2 = fopen("C:...f2.txt", "w");
    if (f1 == NULL)
        printf("Error");
    else
    {
        int n = 0;
        while (fgets(s1, 1000, f1))
            n++;
        cout << "n=" << n;
        int *num = new int [n];
        for (int i = 0; i < n; i++)
        {
            rewind(f1);
            for (int k = 0; k < n - i; k++)
                fgets(s1, 1000, f1);
            if (s1[strlen(s1) - 1] == '\n')
                s1[strlen(s1) - 1] = '\0';
            int min = 0;
            for (int d = 1; d < n; d++)
            {
                num[d] = strlen(s1);
                if (num[d] < num[min])
                min = d;
            }
            fputs(s1, f2);
        }
    }
    fclose(f2);
    fclose(f1);
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2015, 12:49
Ответы с готовыми решениями:

Переписать в новый файл строки максимальной длины
Тема: Типизированные файлы

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

Переписать в новый файл строки парной длины предыдущего файла
Создать текстовый файл, состоящий из N строк. Переписать в новый файл строки парной длины...

Переписать в новый файл все его строки четной длины
Дан текстовый файл. Переписать в новый файл все его строки четной длины.. Помогите пожалуйста...

3
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
29.03.2015, 12:53 2
Почему Вы с файлом работаете через Сишные функции ввода-вывода,
а с консолью через iostream?
Как-то это некошерно!

Есть специальные (ассоциативные) контейнеры для хранения данных в отсортированном виде.
С их помощью решение вашей задачи делается в несколько строчек
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 <iostream>
#include <fstream>
#include <set>
#include <string>
using namespace std;
int main()
{
    ifstream inf("file.txt");   // исходные данные в файле file.txt
    ofstream outf("file_result.txt"); // результат в файле file_result.txt
    if(inf && outf) // проверим, что файлы открылись
    {
        multiset<string> ms; // ассоциативный контейнер строк отсортированных по алфавиту
        string str;
        while(getline(inf,str)) // читаем построчно в строку str
            ms.insert(str); // вставляем str в контейнер
        inf.close(); // входной файл закрываем
        for(multiset<string>::iterator p=ms.begin();p!=ms.end();++p) // проходим по всем элементам контейнер
            outf<<*p<<endl; // выводим содержимое контейнера в файл по порядку
        outf.close(); // закрываем файл
        cout<<"Result in file_result.txt\n"; // сообщаем, что работа закончена
    }
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 11
29.03.2015, 13:13  [ТС] 3
спасибо
по мере того как учат, так и работаем
некорректный вариант вообще можно как-то доработать или там совсем глухо?)
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
29.03.2015, 13:47 4
Цитата Сообщение от Annushkaa Посмотреть сообщение
for (int d = 1; d < n; d++)
{
num[d] = strlen(s1); // Здесь определяется длина одной и той же строки
if (num[d] < num[min])
min = d;
}
Вообще алгоритм просматривается очень плохо.
Если так уж хочется с массивом, то вот массив строк
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
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
    ifstream f1("C:...f1.txt");
    ofstream f2("C:...f2.txt");
    if (!f1 || !f2 )
       cout<<"Error";
    else
    {
        string s1[1000]; // не более 1000 строк
        int n=0;
        while( getline(f1,s1[n]) && n<1000 )
            n++;
        f1.close();
        sort(s1,s1+n);
        for(int i=0;i<n;i++)
            f2<<s1[i]<<endl;
        f2.close();
    }
    system("pause");
    return 0;
}
1
29.03.2015, 13:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2015, 13:47
Помогаю со студенческими работами здесь

Переписать в новый файл все строки четной длины исходного файла
Дан текстовый файл. Переписать в новый файл все его строки четной длины. помогите пожалуйста

Текстовые файлы. Переписать в новый текстовый файл все слова наименьшей длины
В текстовом файле хранится некоторая последовательность слов, между соседними словами-запятая, за...

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

В новый файл переписать строки данного, вставляя символ ‘!’ после каждой строки
Дан файл, содержащий несколько строк. В новый файл переписать строки данного, вставляя символ ‘!’ ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru