Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Поменять местами строчки в файле - C++

02.03.2014, 17:31. Просмотров 387. Ответов 9
Метки нет (Все метки)

В общем я уже знаю как при помощи fstream открывать файл, извлекать или записывать туда информацию.
Однако я не знаю, как переместить указатель на нужные строчки и при помощи дополнительной переменной поменять их местами.

Очень прошу помочь, в интернете смотрел ничего путнего не нашел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2014, 17:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поменять местами строчки в файле (C++):

Поменять местами строчки матрицы - C++
написал такой код, и он не компилируеться((( #include <iostream> #include<ctime> #include <math.h> #include<conio.h> ...

Поменять местами слова в файле - C++
В исходном текстовом файле (создать и ввести) первое слово поменять местами со вторым. Дополнительных массивов и файлов не использовать. ...

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

Поменять местами столбец L и строку K местами квадратной матрицы 4х4 - C++
#include "stdafx.h" #include <iostream> using namespace std; #define N 4 #define M 4 int _tmain(int argc, _TCHAR* argv) {...

В двумерном массиве поменять местами максимальный и минимальный элемент местами - C++
Написать фрагмент программы для решения следующей задачи.В двумерном массиве поменять местами максимальный и минимальный элемент местами....

В бинарном файле поменять местами элементы, что стоят на парных местах с элементами, что стоят на непарных местах - C++
Помогите пожалуйста написать код. В бинарном файле поменять местами элементы, что стоят на парных местах с элементами, что стоят на...

9
zss
Модератор
Эксперт С++
6634 / 6196 / 2051
Регистрация: 18.12.2011
Сообщений: 16,155
Завершенные тесты: 1
02.03.2014, 17:50 #2
Удобнее всего открыть на запись новый файл.
Потом читайте исходный файл по строкам последовательно
и запоминаете строки, подлежащие перестановке.
Перематывает файл на начало, снова читаете его последовательно
и пишите в выходной файл, а в тот момент,
когда нужно будет вставить другую строку,
вставляете ее, а потом пишите дальше.
1
balizort
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 9
02.03.2014, 20:42  [ТС] #3
Кто скажет, где я ошибся?! Необходимо чтобы менялись местами созданые структуры, а они не хотят.
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
int R2()
{
    system("cls");
    string naz;
    int i = 0;
    struct Obm sm[100];
    ifstream sporti("studio.txt");
    while (!sporti.eof())
    {
        if(!sporti.eof())
        {
            getline(sporti,naz);
            sm[i].spr = naz; i++;
        }
    }
    sm[5].spr = sm[1].spr;
    sm[1].spr = sm[2].spr;
    sm[2].spr = sm[5].spr;
    sm[5].spr = 'NULL';
    sporti.close();
    int j = 0;
    //ofstream sportj("studio.txt");
    for (int j=0; j<i;j++)
    {
        cout << sm[j].spr << endl;
    }
    //sportj.close();
    system("pause");
    system("cls");
    return 0;
}
0
zss
Модератор
Эксперт С++
6634 / 6196 / 2051
Регистрация: 18.12.2011
Сообщений: 16,155
Завершенные тесты: 1
02.03.2014, 21:19 #4
Цитата Сообщение от balizort Посмотреть сообщение
sm[5].spr = 'NULL';
Надо
sm[5].spr = "NULL";
Приведите объявление struct Obm
Возможно, присвоение по умолчанию к ней неприменимо.
Если spr - строка символов, то надо копировать строки:
C++
1
strcpy(sm[5].spr ,sm[1].spr);
0
balizort
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 9
03.03.2014, 19:11  [ТС] #5
Про структуру:

C++
1
2
3
4
struct Obm
{
    string spr;
};
0
zss
Модератор
Эксперт С++
6634 / 6196 / 2051
Регистрация: 18.12.2011
Сообщений: 16,155
Завершенные тесты: 1
03.03.2014, 19:20 #6
Цитата Сообщение от zss Посмотреть сообщение
sm[5].spr = "NULL";
После исправления кавычек на двойные работает?
0
balizort
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 9
03.03.2014, 19:49  [ТС] #7
Нет не работает. Не меняет местами почему-то.
0
mishelle92
64 / 63 / 21
Регистрация: 09.10.2012
Сообщений: 204
Завершенные тесты: 1
03.03.2014, 20:05 #8
Цитата Сообщение от balizort Посмотреть сообщение
C++
1
2
3
sm[5].spr = sm[1].spr;
sm[1].spr = sm[2].spr;
sm[2].spr = sm[5].spr;
Сильно не вникал, но не в том ошибка, что 5-му элементу присваивается 1-ый, а потом 2-му 5-ый (он уже стал равен 1-му)
0
balizort
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 9
03.03.2014, 20:31  [ТС] #9
Получается
5 элемент равен 1
1 элемент равен 2
2 элемент равен 5
тоесть происходит смена 1 и 2 элементов через третью переменную.
0
zss
Модератор
Эксперт С++
6634 / 6196 / 2051
Регистрация: 18.12.2011
Сообщений: 16,155
Завершенные тесты: 1
03.03.2014, 21:27 #10
Вот в этом коде все прекрасно меняется.
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
#include <iostream>
#include <string>
using namespace std;
struct Obm
{
    string spr;
};
int main()
{
    string naz;
    struct Obm sm[6];
    for(char i='1';i<'6';i++)
    {
            naz="str ";
            naz.push_back(i);
            sm[i-'1'].spr = naz;
    }
    for (int j=0; j<6;j++)
    {
        cout << sm[j].spr << endl;
    }
    sm[5].spr = sm[1].spr;
    sm[1].spr = sm[2].spr;
    sm[2].spr = sm[5].spr;
    sm[5].spr = "NULL";
    for (int j=0; j<6;j++)
    {
        cout << sm[j].spr << endl;
    }
    system("pause");
    return 0;
}
Может проблема в файле "studio.txt"?
0
03.03.2014, 21:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2014, 21:27
Привет! Вот еще темы с ответами:

Поменять местами элементы - C++
// Lab5. Задача 1.cpp : Defines the entry point for the console application. // Задан двумерный массив float a. Поменять местами max...

Поменять массивы местами - C++
Дано два одинакового размера массива А и В, нужно сделать так что бы при выводе в массив А занеслись числа из В, а в массив В числа из...

Поменять слова местами - C++
Задача такая: Поменять слова в сообщении по принципу: первое с n/2+1 словом, второе с n/2+2 словом, i-тое с n/2+i словом и т.д (n-число...

Поменять местами переменные - C++
Здравствуйте! При решении задач, возник вопрос в правильности решения (код работает корректно, но сверяю свое решение с решением в интернет...


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

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

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