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

Найти максимальный элемент списка и поменять его местами с первым элементом - C++

Восстановить пароль Регистрация
 
strag 93
1 / 1 / 0
Регистрация: 14.11.2010
Сообщений: 57
22.05.2012, 10:53     Найти максимальный элемент списка и поменять его местами с первым элементом #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
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <iostream>
#pragma hdrstop
 
using namespace std;
//---------------------------------------------------------------------------
 
#pragma argsused
 
struct stack {
   int val;
   stack *next;
}       *begin;
 
stack *s_add(int);
void s_task();
void s_view();
void s_create();
void s_del();
 
int main(int argc, char* argv[])
{
        while(true){
         cout << "\tChoose:\n 1 - Create\n 2 - Add\n 3 - View\n 4 - Task\n 5 - Delete" << endl;
         int l;
         cin >> l;
         if(cin.rdbuf()->in_avail()!=1 || cin.fail())
          {
         string buf;
             l=-1;
             cin.clear(); 
             if(cin.rdbuf()->in_avail() != 1);
          }
          int value;
         switch(l) {
          case 0:   exit(0); break;
          case 1:       s_create(); break;
          case 2:       cout << "Input value" << endl;
                        cin >> value;
                        s_add(value);
                        break;
          case 3:       if (begin == NULL)  cout << "Stack is empty" << endl; else
                        s_view(); break;
          case 4:      s_task();
                        break;
          case 5: s_del(); break;
          default: cout << "Incorrect, try again" << endl;
         }
        }
        return 0;
}
//---------------------------------------------------------------------------
 
stack *s_add(int val)
{
 stack *temp = new stack;
 temp->val = val;
 temp->next = begin;
 begin = temp;
 return temp;
}
 
void s_task()
{
 if(begin==NULL)
 {
        cout << "Stack is empty" << endl;
        return ;
 }
        stack *t = begin->next, *_first = begin, *_max = begin;
        int temp;
        while(t != NULL)
        {
            if(t->val > _max->val) _max = t;
            t = t->next;
        }
        temp = _max->val;
        _max->val = _first->val;
        _first->val = temp;
}
 
void s_view()
{
   stack *temp = begin;
   cout << "\nView:" << endl;
   while(temp != NULL)
      {
          cout << temp->val << endl;
          temp = temp->next;
      }
}
 
void s_create()
{
   randomize();
   int t = random(5)+3, i;
   for(i=0; i<t; i++)
      s_add(random(15)-6);
}
 
void s_del()
{
 stack *temp = begin;
 while(begin != NULL)
  {
     temp = begin;
     begin = begin->next;
     delete temp;
  }
}


Жалуется на randomize();
int t = random(5)+3, i;
а так же на begin, во всех местах где он есть.
Зупускал на Вижуале С++, Можно ли как то упростить или переделать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2012, 10:53     Найти максимальный элемент списка и поменять его местами с первым элементом
Посмотрите здесь:

C++ )В массиве из 6 целых чисел найти наибольший элемент и поменять его местами с первым элементом массива
Найти максимальный элемент стека и поменять его местами с первым элементом C++
В массиве из 25 действительных чисел найти наименьший элемент и поменять его местами с первым элементом(Borland C++) C++
C++ Задача (язык С + +). В массиве из 25 действительных чисел найти наименьший элемент и поменять его местами с первым элементом
C++ Найти максимальный элемент и поменять его с первым элементом
Поменять местами минимальный элемент с первым элементом массива, а максимальный элемент с последним C++
C++ Найти максимальный элемент и поменять его местами со вторым элементом массива
Поменять местами максимальный элемент матрицы с его первым элементом а минимальный с последним C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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