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

Исправть код. Срок - до завтра. - C++

Восстановить пароль Регистрация
 
Rofl
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 22
20.12.2010, 23:54     Исправть код. Срок - до завтра. #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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
using namespace std;
struct element
{
public:
    element *next;
    element *pred;
    int data;
};        
class Spisok
{
private:
    element* first;
    element* last;
public:
    Spisok()
    {
        element *ptr;
        element *ttd;
        ptr=new element;
        cout << "Enter 1 element:\n";
        cin >> ptr->data;
        first=ptr;
        last=ptr;
        ptr->next=NULL;
        ptr->pred=NULL;
    }
    void add()
 {
  element *ptr;
  ptr=new element;
  cin >> ptr->data;
  last->next=ptr;
  first->pred=ptr;
  ptr->next=NULL;
    last=ptr;
 }
    void see()
    {
        element *ptr;
        ptr=first;
        cout << "\n";
        while(ptr!=last)
        {
            cout << ptr->data << " ";
            ptr=ptr->next;
        }
        cout << ptr->data << " ";
    }
    void obmen()
    {
    element *ptr;
    element *ttd;
    int temp;
    ptr=first;
    ttd=last;
    while (ptr!=ttd||ptr!=ttd->pred)
    {
    temp=ptr->data;
    ptr->data=ttd->data;
    ttd->data=ptr->data;
    ptr=ptr->next;
    ttd=ttd->pred;
    }
    }   
};
 
 
int main()
{
    unsigned int n;
    Spisok spisok;
    cout << "\n";
    int key=1;
    do
    {
        cout << " How many elements?\n";
        cin >> n;
        for (unsigned short int i=0; i<n; i++)
        {
            cout << "Enter " << i+2 << " element:\n";
            spisok.add();
        }
        cout << "\nRepeat? (0-no, 1-yes)\n";
        cin >> key;
    }
    while(key);
    cout << "\n\nSpisok:\n\n";
    spisok.see();
    spisok.obmen();
    cout << "\n\nNew:\n\n";
    spisok.see();
    cout << "\n\n";
    system("pause");
    return 0;
}
Комппилятор выдаёт ошибку в ходе работы программы в этой строчке
ptr->data=ttd->data;
Нужно сделать до завтра...

Добавлено через 1 минуту
Т е компилятор просит задать ту ячейку памяти куда мы будем "записывать" указатель ttd.

Добавлено через 3 минуты
Если что ptr->data=ttd->data; это 61 сточка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
20.12.2010, 23:56     Исправть код. Срок - до завтра. #2
компилятор не выдает ошибок во время исполнения программы. ошибка на этапе компиляции или во время работы программы?
Rofl
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 22
20.12.2010, 23:57  [ТС]     Исправть код. Срок - до завтра. #3
Извините ошибся, в процессе работы.
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
21.12.2010, 00:00     Исправть код. Срок - до завтра. #4
а почему сначала первый элемент задается, а потом количество элементов?
Rofl
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 22
21.12.2010, 00:03  [ТС]     Исправть код. Срок - до завтра. #5
Да просто))а что оно и влияет на ошибку?

Добавлено через 1 минуту
Ато просто уже не знаю, что думать=(
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
21.12.2010, 00:09     Исправть код. Срок - до завтра. #6
да вроде нет. неправильно функция obmen() работает, выводится то на экран все верно, перестановка косячит.
Rofl
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 22
21.12.2010, 00:12  [ТС]     Исправть код. Срок - до завтра. #7
ну да...ну сама перестановка вроде правильная, а как быть со вторым указателем...
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
21.12.2010, 00:35     Исправть код. Срок - до завтра. #8
не вылетает, но чуть перестановку не докручивает, додумай, (спать пошел):
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>
using namespace std;
struct element
{
public:
        element *next;
        element *pred;
        int data;
};
class Spisok
{
private:
        element* first;
        element* last;
public:
        Spisok()
        {
                element *ptr;
                element *ttd;
                ptr=new element;
            cout << "Enter 1 element:\n";
                cin >> ptr->data;
                first=ptr;
                last=ptr;
                ptr->next=NULL;
                ptr->pred=NULL;
        }
        void add()
 {
  element *ptr;
  ptr=new element;
  cin >> ptr->data;
  last->next=ptr;
  first->pred=ptr;
  ptr->next=NULL;
    last=ptr;
 }
        void see()
        {
                element *ptr;
                ptr=first;
                cout << "\n";
                while(ptr!=last)
                {
                        cout << ptr->data << " ";
                        ptr=ptr->next;
                }
                cout << ptr->data << " ";
        }
 
void obmen()
 {
  element *ptr;
  element *ttd;
  element *tmp;
  int temp;
  ptr=first;
  ttd=last;
   while (ptr<=last)
    {
      temp=ptr->data;
      ptr->data=ttd->data;
      ttd->data=temp;
      ptr=ptr->next;
      ttd=ttd->pred;
    }
 
  }
};
 
 
 
int main(int argc, char *argv[])
{
    unsigned int n;
    Spisok spisok;
    cout << "\n";
    int key=1;
    do
    {
            cout << " How many elements?\n";
            cin >> n;
            for (unsigned short int i=1; i<n; i++)
            {
                    cout << "Enter " << i+1 << " element:\n";
                    spisok.add();
            }
            cout << "\nRepeat? (0-no, 1-yes)\n";
            cin >> key;
    }
    while(key);
    cout << "\n\nSpisok:\n\n";
    spisok.see();
    spisok.obmen();
    cout << "\n\nNew:\n\n";
    spisok.see();
    cout << "\n\n";
    system("pause");
        return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2010, 01:22     Исправть код. Срок - до завтра.
Еще ссылки по теме:

Изучить VC++ вдоль и поперек в наикратчайший срок C++
Срок обучения C++ C++
Операции с датой: вывести список студентов, кто не сдал книги в срок C++

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

Или воспользуйтесь поиском по форуму:
Rofl
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 22
21.12.2010, 01:22  [ТС]     Исправть код. Срок - до завтра. #9
У меня всерано вылетает ошибка. =(

Добавлено через 42 минуты
Всё. Проблема решена.
Yandex
Объявления
21.12.2010, 01:22     Исправть код. Срок - до завтра.
Ответ Создать тему
Опции темы

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