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

Удалить 1 строку из одинаковых строк - C++

Восстановить пароль Регистрация
 
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
20.06.2013, 18:28     Удалить 1 строку из одинаковых строк #1
Если имеются 2 одинаковые строки, функция удаляет обе, а мне нужно, чтобы удаляло только 1 строку.

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
void ubovlyaem()//функция удаления
{
    setlocale(LC_ALL, "Russian");
    int j;char N[25];
    i=0;
    fstream stu("fail.txt",ios::in);//открытие файла для считывания данних
     if(!stu){cout<<"Искомого файла нет\n";exit(1);}
    student *st;// динамическая переменная
    st=new student[100];
    while(!stu.eof())//пока не будет конца файла
    {
        stu>>st[i];//считывание из файла
        i++;
    }
    stu.close();//закрытие файла
    fstream minys("fail.txt",ios::trunc| ios::out);//открытие файла для переписания данных
    if(!minys){cout<<"Искомого файла нет\n";exit(1);}
    cout<<"\nФамилия студента: ";
    cin>>N;
    for(j=0;j<i-1;j++)
    {  if(strcmp(st[j].ost_f(),N)!=0)//сравнение i-ой и фамилии N
{if((j+2)!=i){ minys<<st[j]<<"\n";}else {minys<<st[j]; } }//запись в файл
 }//уменьшаем на 1, понадобится в других функциях
    minys.close();//закрытие
    delete []st;//удаление
 
}
Думаю, дело в этой строке и нужно сделать через case, потому что еще один if не подойдет (if(N==N))

C++
1
2
for(j=0;j<i-1;j++)
    {  if(strcmp(st[j].ost_f(),N)!=0)//сравнение i-ой и фамилии N
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2013, 18:28     Удалить 1 строку из одинаковых строк
Посмотрите здесь:

C++ Сформировать массив строк. Удалить из него строку начинающуюся и заканчивающуюся на одну и ту же букву.
Сформировать динамический массив строк; удалить из него строку с заданным номером C++
Посчитать количество строк и символов, удалить 2-ую строку и отдельно добавить в другой файл C++
C++ Указатели. Сформировать массив строк. Удалить из него самую длинную строку
C++ Записать в файл последовательность строк. Самую длинную строку удалить
C++ Сформировать массив строк. Удалить из него самую короткую строку
C++ Сформировать массив строк. Удалить из него строку начинающуюся на букву «а»
C++ Удалить из массива строк самую короткую строку

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,409
20.06.2013, 18:45     Удалить 1 строку из одинаковых строк #2
Цитата Сообщение от alex-net Посмотреть сообщение
void ubovlyaem()
это ужас

В логику вашей программы тяжело вникнуть т.к. отступы и пробелы расставлены плохо. Непонятно почему нельзя использовать std::string. Чтобы не удаляло два элемента можно ввести флаг(bool переменную) и при удалении первого ставить флаг как "удалять более не требуется".
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
20.06.2013, 18:46  [ТС]     Удалить 1 строку из одинаковых строк #3
MrGluck, это малая часть программы, сама программа на 300 строк, это функция удаления строки.
Yandex
Объявления
20.06.2013, 18:46     Удалить 1 строку из одинаковых строк
Ответ Создать тему
Опции темы

Текущее время: 06:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru