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

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

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

Подскажите, в чём ошибка? - C++

18.11.2011, 00:53. Просмотров 608. Ответов 9
Метки нет (Все метки)

Задание: Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. Удалить из него элемент с заданным номером, добавить элемент в начало списка. Вот что у меня получилось:
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
79
#include "stdafx.h"
#include <stdio.h>
 
struct list
{
int val;
list *next,*prev;
};
 
list *head=NULL;
 
list *create(int vv)
{
list *q = new list;
q->val = vv;
q->next=NULL;
return q;
}
 
list *insert_fst(list *ph, int vv)
{
list *pn=create(vv);
pn->next = ph;           // next for new - first
ph = pn;                 // first - new
return ph;
}
 
/*удаление элемента с заданным номером из двунаправленного списка*/
list* Delete_Item_list(list* head, int Number)
{
  list *ptr;//вспомогательный указатель
  list *Current = head;
  for (int j = 1; j < Number && Current != NULL; j++)
    Current = Current->next;
  if (Current != NULL){//проверка на корректность
    if (Current->prev == NULL){//удаляем первый элемент
      head = head->next;
      delete(Current);
      head->prev = NULL;
      Current = head;
    }
    else {//удаляем непервый элемент
      if (Current->next == NULL) {
      //удаляем последний элемент
        Current->prev->next = NULL;
        delete(Current);
        Current = head;
      }
      else {//удаляем непервый и непоследний элемент
        ptr = Current->next;
        Current->prev->next =Current->next;
        Current->next->prev =Current->prev;
        delete(Current);
        Current = ptr;
      }
    }
  }
  return head;
}
 
void show(list *ph)
{
list *q;
for (q=ph; q!=NULL; q=q->next)
    printf("%d-->",q->val);
puts("NULL");
}
 
void main()
{   int i;
int Number;
 
 
    head=create(i);
for (int i=0; i<10; i++)
    head=insert_fst(head,i);
head=Delete_Item_list(head, Number);
show (head);
}
Где ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2011, 00:53     Подскажите, в чём ошибка?
Посмотрите здесь:

подскажите в чём ошибка? - C++
#include &lt;iostream&gt; using namespace std; void func(char ar,int nar) { int i=0; for(;i&lt;nar;i++); cout &lt;&lt;&quot;ЭВведи...

Подскажите в чём ошибка - C++
#include &lt;iostream&gt; int main(){ int a = 0; int b = 0; char operation; std::cout &lt;&lt; &quot;Enter first number: &quot;; ...

Подскажите в чём ошибка - C++
Я плохо разбираюсь в програмирование но среда обитания принуждает учиться в этом направление и прога проста до идиотизма простая сортировка...

Подскажите пожалуйста в чём ошибка - C++
Написала программу. Задание звучит так: Заполнить массив похожим на верхний образом, но только уже по столбцам 0 1 2 3 0...

Подскажите в чём ошибка ? Ошибок 6! Писал в Microsoft visual studio 2015 - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using std::cout; using std::cin; using std::endl; int main(); { ...

Подскажите, в чём я не прав. - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; using namespace std; void push(int *mass, int *sp, int val) { ...

Я новичок создаю программу подскажите в чём смысл ошибок???? что-то с библиотекой glut ? - C++
Создаю программу моделирование гравитации ) выдавало ошибку что нет библиотеки glut ) нашёл в инете скопировал вставил после этого выдаёт...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
Заблокирован
18.11.2011, 01:54     Подскажите, в чём ошибка? #2
а что не так? на что плюется машина?

Добавлено через 1 минуту
omg это дикий суржик си и си++, определитесь.
MOLK
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 30
18.11.2011, 02:07  [ТС]     Подскажите, в чём ошибка? #3
alkagolik, пишет "Debug Error. the variable 'i' is being used without being initialized." Т.е. программа начинает выполняться, затем выскакивает окно об ошибке и выполнение прерывается.
Мне нужен С++. Как исправить?
alkagolik
Заблокирован
18.11.2011, 02:27     Подскажите, в чём ошибка? #4
Цитата Сообщение от MOLK Посмотреть сообщение
Debug Error. the variable 'i' is being used without being initialized.
а переводить не пробовали? все ясно сказано
C
1
2
3
4
5
6
7
void main()
{       int i;  /*вот*/
int Number;
 
 
        head=create(i);
for (int i/*и вот*/=0; i<10; i++)
хотя это должно работать, я помню недавно ставил эксперименты. и таки да, работает
MOLK
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 30
18.11.2011, 02:30  [ТС]     Подскажите, в чём ошибка? #5
alkagolik, так ведь у меня всё точно так и написано...
alkagolik
Заблокирован
18.11.2011, 02:33     Подскажите, в чём ошибка? #6
исправьте строку 75
C
1
for (i = 0; i < 10; i++)
MOLK
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 30
18.11.2011, 02:37  [ТС]     Подскажите, в чём ошибка? #7
Всё равно пишет ту же ошибку
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
18.11.2011, 02:47     Подскажите, в чём ошибка? #8
C++
1
2
void main()
{ int i;
поменяй на
C++
1
2
void main()
 int i = тут какое-то число;
MOLK
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 30
18.11.2011, 02:53  [ТС]     Подскажите, в чём ошибка? #9
изменила
C++
1
2
3
void main()
{   int i=10;
int Number=2;
теперь просто пишет, что прекращена работа программы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2011, 03:25     Подскажите, в чём ошибка?
Еще ссылки по теме:

В чём ошибка? - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main (){ const char*str1; cin.getline(str1,255); cout&lt;&lt;str1; ...

В чём ошибка? - C++
#include &lt;iostream&gt; using namespace std; int main() { int N, i; cin &gt;&gt; N; int *arr = new int; for(int i = 0; i&lt;N;...

[C++]В чём ошибка? - C++
Помогите в чём ошибка ??? Вроде и работает а вроде и нет. Например при значениях 4 6 10 работает а уже при значении 4 8 10 краш. или...

в чём ошибка - C++
void load_file (queue *q) { char path; int count=0; system(&quot;cls&quot;); printf (&quot;\nVvedite put', imja i rashirenie...

В чём ошибка ? - C++
Задание: В одномерном массиве целых чисел заменить минимальное значение максимальным. Решение: { setlocale (LC_ALL,...


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

Или воспользуйтесь поиском по форуму:
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
18.11.2011, 03:25     Подскажите, в чём ошибка? #10
Проверяйте свой список. Дело в нем. Если хотите научится программировать, то ищите ошибки сами. Только в крайнем случае просите помощи.

Добавлено через 1 минуту
Посмотрел на функцию удаления элемента. Можно написать на много короче и яснее. Вы что-то перемудрили.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
list *create(int vv)
{
list *q = new list;
q->val = vv;
q->next=NULL;
return q;
}
про prev забыли
C++
1
2
3
4
5
6
7
list *insert_fst(list *ph, int vv)
{
list *pn=create(vv);
pn->next = ph;           // next for new - first
ph = pn;                 // first - new
return ph;
}
Забыли ph->prev присвоить pn;

Добавлено через 1 минуту
А где у вас функция удаления всех элементов в конце программы? У вас же утечка памяти.

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

Добавлено через 22 минуты
В такой громоздкой функции вставки очень легко сделать ошибку. Пытайтесь писать код короче и яснее.
*В такой громоздкой функции удаления очень легко сделать ошибку. Пытайтесь писать код короче и яснее.
Yandex
Объявления
18.11.2011, 03:25     Подскажите, в чём ошибка?
Ответ Создать тему
Опции темы

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