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

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

Войти
Регистрация
Восстановить пароль
 
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
#1

функция удаления работает не корректно почему??? - C++

06.11.2011, 06:47. Просмотров 462. Ответов 1
Метки нет (Все метки)

функция удаления в контрольной не работает... возился два дня с ней никак не могу сделать чтоб работала как надо... явно надо по больше читать про работу со списками... но просто время поджимает сдавать контрольную, функция должна удалять элемент после введеного номера, тоесть если ввел номер один то удалить должна элемент под номером два, у меня получается что ввожу 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
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
# include <iostream>              // класс для работы с вводом-выводом
# include <windows.h>             // для функции    CharToOem();
# include <fstream>           // класс для работы с файлом
 
using namespace std;
    char bufRus[256];
    char* Rus(const char* text)
    {
        CharToOem(text, bufRus);
    return bufRus;
    }
 
struct lfile{
    char name[15];
    char data[10];
    int upd;
};
struct sp{
    lfile elfile;   // поле данных
    sp *next;   // указатель
};
 
sp*print_list(sp *list);//прототип функции вывод на экран
 
 
sp* ft_enter();//прототип функции ввод из текстового файла
 
sp* fs_enter();// прототип функции ввод с экрана
sp* sort(sp *list);// прототип сортировки
void search(sp *list); // прототип функций поиск по имени и вывод в файл
void fsearch(sp *list); //прототип функции поиск файла с наибольшим количеством обращений
 //
sp* pind(sp *list); //прототип получения адреса
sp* del(sp *list,sp *adr);// прототип функции удаления файла
sp * vst(sp *list,sp *adr);// прототип фунции вставка файла
void zmn(sp *list); // прототип функции замена файла
 
void main()
{
   int v;
   sp *k;
   do{
      cout<<Rus("  1: формирование списка из текстового файла")<<endl;
      cout<<Rus("  2: формирование списка с экрана")<<endl;
      cout<<Rus("  3: поиск по заданному полю с сохранением результатов в файле")<<endl;
      cout<<Rus("  4: выборка файла с наибольшим количеством обращений")<<endl;
      cout<<Rus("  5: замена записи")<<endl;
      cout<<Rus("  6: удаление записи после указанного адреса")<<endl;
      cout<<Rus("  7: вставка записи после указанного адреса")<<endl;
      cout<<Rus("  8: вывод списка")<<endl;
      cout<<Rus("  9: выход")<<endl;
      cout<<Rus("вариант ")<<endl;
      cin>>v;
      switch(v){
        case 1: k = ft_enter(); break;/*вызов функции ввод тектового файла в переменную к, чтоб по ней потом можно было делать сортировку, поиск и тд*/
        case 2: k = fs_enter(); break;// вызов функции ввод с экрана
        case 3: search(k);break;//вызов функции поиск по переменной к и сохранение в файл одной строки
        case 4: fsearch(k); break;//вызов функции поиск файла с наибольшим количеством обращений к нему
        case 5: zmn(k); print_list(k); break;//вызов функции замена строки по указаному номеру
        case 6: k = del(k,pind(k)); print_list(k); break;// вызов функции удаление строки после указанного номера
        case 7: k = vst(k,pind(k)); print_list(k); break;//вызов функции вставка строки после указанного номера
        case 8: print_list(k);break;//вызов функции вывод списка на экран
        case 9:return; break;
 
        }
    } while(true);//цикл будет повтрятся
}
сама функция
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//удаление элемента с адресом adr
sp* del(sp *list,sp *adr){
    sp *pt=list, *q;
    if(adr==list){// если номер совпал то...
        q=adr->next;
        pt=q;
        q=adr->next;//
 
    }else{
        q = adr;
        adr=adr->next;
     }
    delete(q); //удаляет строку после указанного номера
    return pt;
}
Добавлено через 13 часов 40 минут
help meee
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2011, 06:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос функция удаления работает не корректно почему??? (C++):

корректно не работает функция rand - C++
в полном коде почему-то не работает корректно функция rand, вот пример: #include&lt;cstdlib&gt; #include&lt;ctime&gt; #include&lt;iostream&gt; ...

Почему переменная объявленная static работает не корректно? - C++
Переменная j=25 я её обозначил как static int j; и присвоил число 25. Значит эта переменная должна сохраняться и при выходе из функции....

Не работает функция удаления элемента из списка - C++
Двунаправленный линейный список, состоящий из: имени автора, названия книги, года издания и названия издательства. #include &quot;stdafx.h&quot;...

Не могли бы объяснить, как работает эта функция для удаления цифр? - C++
char* delDig(char *S) { int i,j; i=0; for (j=0; j&lt;strlen(S); j++) if ((S &lt; '0') || (S &gt; '9')) S=S; S=0;...

Почему не работает функция? - C++
Почему не работает функция? Пишет ошибку: результатом выполнения фрагмента не является 0 аргумеетов int provPas() { string...

Почему не работает функция? - C++
Вот понадобилась функция для взятия остатка от деления нецелых чисел написал такую: long double OperationDouble( long double a , long...

1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
06.11.2011, 07:18 #2
Перечитай строки 5-7 в "самой функции".
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2011, 07:18
Привет! Вот еще темы с ответами:

Почему-то на работает функция!( - C++
Задача написать функцию, упорядочивающую массив по возрастанию. почему-то не работает((( #include &quot;stdio.h&quot; int FUNC_Vozr (int...

почему не работает функция? - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; void function (int k)// { for(int i=0;i&lt;k;i++) std::cout&lt;&lt;&quot;*&quot;; } int...

Почему не работает функция Matricav? - C++
#include &lt;vcl.h&gt; #pragma hdrstop #pragma argsused #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include &lt;windows.h&gt; #include...

Почему не работает функция getline ()? - C++
Может что-то нужно дописывать? #include &lt;iostream&gt; using namespace std; int main() {


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

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

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