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

ПОдскажите почему не работает rand? - C++

Восстановить пароль Регистрация
 
Виkтория
 Аватар для Виkтория
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 63
05.10.2013, 15:20     ПОдскажите почему не работает rand? #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
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
struct item
{
    int data;               // данные
    item * next;            // указатель на следующий элемен
};
 
void push(item **head, item **tail, int data)
{
    item *itTemp = new item;
    if (*head == NULL)
        *head = itTemp;
    else
        (*tail)->next = itTemp;
    itTemp->data = data;
    itTemp->next = NULL;
    *tail = itTemp;
}
// вывод на экран всех элементов
void printList(item **head )
{
    item * itTemp = *head;
    while (itTemp != NULL)
    {
        cout << itTemp->data << " ";
        itTemp = itTemp->next;
    }
    cout << endl;
}
// удаление элемента
void delList(item **head, item **tail)
{
    while (*head != NULL)
    {
        item *itTemp = *head;
        *head = (*head)->next;
        delete itTemp;
    }
    *tail = NULL;
}
// поиск и удаление парных элементов
void findEvenN(item **head)
{
    item * itTemp = *head, * itDel;
    item * itPrev = NULL;
 
    while (itTemp != NULL)
    {
        if (itTemp->data % 2 != 0)
        {
            if (itPrev == NULL)
                *head = (*head)->next;
            else
                itPrev->next = itTemp->next;
            itDel = itTemp;
            itTemp = itTemp->next;
            delete itDel;
        }
        else
        {
            itPrev = itTemp;
            itTemp = itTemp->next;
        }
    }
}
 
 
    int main() 
    {
 
 
    setlocale(LC_ALL, "Russian");           // русская локаль в консоли
    srand(time(NULL));
    int n;
    cout << "Введите количество элементов ";
    cin >> n;
    for (int i = 0; i < n; ++i) // автоматически заполняем элементы случайными числами
    {
    
        srand(time(NULL));
        push (rand()% (100 ) +1 );
    }
    // и ограничиваем диапазон 1-100
    printList;
    findEvenN;                          // поиск и исключение парных элементов
    printList;
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
05.10.2013, 15:22     ПОдскажите почему не работает rand? #2
srand вынести из цикла.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
05.10.2013, 15:35     ПОдскажите почему не работает rand? #3
В 85 строчке вы вызываете ф-ю push с одним аргументом, однако вы описали ф-ю с тремя. Далее вы хотите поместить в очередь число, однако должны передавать указатель на указатель.
А вот это вообще что?
C++
1
2
3
    printList;
    findEvenN;                          // поиск и исключение парных элементов
    printList;
На вызов ф-ий не похоже...
Лучше опишите в структуре конструктор с одним аргументом и перепешите ф-ю push требующую теперь один параметр типа item. А для удобной работы лучше добавить указатель на следующий элемент:
C++
1
2
3
4
5
6
struct item
{
    int data;               // данные
    item * next;            // указатель на следующий к хвосту очереди элемен
    item * last;            // указатель на следующий к голове очереди элемен
};
Виkтория
 Аватар для Виkтория
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 63
05.10.2013, 16:39  [ТС]     ПОдскажите почему не работает rand? #4
а как это правильно записать ..?? через '&'?
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
05.10.2013, 16:46     ПОдскажите почему не работает rand? #5
Цитата Сообщение от Виkтория Посмотреть сообщение
а как это правильно записать ..?? через '&'?
Верно.

Добавлено через 2 минуты
Хотя даже лучше передавать в ф-ю значение, а не структуру.
Виkтория
 Аватар для Виkтория
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 63
08.10.2013, 23:44  [ТС]     ПОдскажите почему не работает rand? #6
Скажите , если у меня сейчас push с одним аргументом , почему все равно не хочет работать ((( помогите ?!
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
#include <iostream>
#include <ctime>
using namespace std;
 
struct item
{
    int data;               // данные
    item * next;            // указатель на следующий элемент
};
item *first = 0; //Указатель на начало списка
item *Head;
item *Tail;
int data;
 
    
 
 
// метод добавления элемента
void push()
{
    item *itTemp = new item;
    if (Head == NULL)
        Head = itTemp;
    else
        Tail->next = itTemp;
    itTemp->data = data;
    itTemp->next = NULL;
    Tail = itTemp;
}
 
// вывод на экран всех элементов
void printList(item *Head)
{
    item * itTemp = Head;
    while (itTemp != NULL)
    {
        cout << itTemp->data << " ";
        itTemp = itTemp->next;
    }
    cout << endl;
}
// удаление элемента
void delList(item *Head,item *Tail)
{
    while (Head != NULL)
    {
        item *itTemp = Head;
        Head = Head->next;
        delete itTemp;
    }
    Tail = NULL;
}
// поиск и удаление парных элементов
void findEvenN(item *Head)
{
    item * itTemp = Head, * itDel;
    item * itPrev = NULL;
 
    while (itTemp != NULL)
    {
        if (itTemp->data % 2 != 0)
        {
            if (itPrev == NULL)
                Head = Head->next;
            else
                itPrev->next = itTemp->next;
            itDel = itTemp;
            itTemp = itTemp->next;
            delete itDel;
        }
        else
        {
            itPrev = itTemp;
            itTemp = itTemp->next;
        }
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");           // русская локаль в консоли
    srand(time(NULL));
    int n;
    cout << "Введите количество элементов ";
    cin >> n;
    for (int i = 0; i < n; ++i)
        { 
            push(rand()%100+1);
        }   // и ограничиваем диапазон 1-100
    
    system("pause");
    return 0;
};
 
void main() 
{ 
  void push(int);   // метод добавления элемента
  void delList();           // удаление элемента
  void printList();     // вывод на экран всех элементов
  void findEvenN(); 
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.10.2013, 23:58     ПОдскажите почему не работает rand? #7
Цитата Сообщение от Виkтория Посмотреть сообщение
если у меня сейчас push с одним аргументом
Что-то незаметно:
Цитата Сообщение от Виkтория Посмотреть сообщение
// метод добавления элемента
void push()
{
Виkтория
 Аватар для Виkтория
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 63
09.10.2013, 00:02  [ТС]     ПОдскажите почему не работает rand? #8
все равно не понимаю , что нужно то ?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.10.2013, 00:10     ПОдскажите почему не работает rand? #9
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>
#include <cstdlib>
#include <ctime>
using namespace std;
 
struct item
{
    int data;               // данные
    item * next;            // указатель на следующий элемент
};
item *first = 0; //Указатель на начало списка
item *Head;
item *Tail;
int data;
 
    
 
 
// метод добавления элемента
void push(int data)
{
    item *itTemp = new item;
    if (Head == NULL)
        Head = itTemp;
    else
        Tail->next = itTemp;
    itTemp->data = data;
    itTemp->next = NULL;
    Tail = itTemp;
}
 
// вывод на экран всех элементов
void printList(item *Head)
{
    item * itTemp = Head;
    while (itTemp != NULL)
    {
        cout << itTemp->data << " ";
        itTemp = itTemp->next;
    }
    cout << endl;
}
// удаление элемента
void delList(item *Head,item *Tail)
{
    while (Head != NULL)
    {
        item *itTemp = Head;
        Head = Head->next;
        delete itTemp;
    }
    Tail = NULL;
}
// поиск и удаление парных элементов
void findEvenN(item *Head)
{
    item * itTemp = Head, * itDel;
    item * itPrev = NULL;
 
    while (itTemp != NULL)
    {
        if (itTemp->data % 2 != 0)
        {
            if (itPrev == NULL)
                Head = Head->next;
            else
                itPrev->next = itTemp->next;
            itDel = itTemp;
            itTemp = itTemp->next;
            delete itDel;
        }
        else
        {
            itPrev = itTemp;
            itTemp = itTemp->next;
        }
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");           // русская локаль в консоли
    srand(time(NULL));
    int n;
    cout << "Введите количество элементов ";
    cin >> n;
    for (int i = 0; i < n; ++i)
        { 
            push(rand() % 100 + 1);
        }   // и ограничиваем диапазон 1-100
    
    printList(Head);     // вывод на экран всех элементов
 
    system("pause");
    return 0;
};
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
09.10.2013, 00:23     ПОдскажите почему не работает rand? #10
Во-первых почему у вас 2 main(){}, причему один void, а второй int?
Во-вторых уберите глобальную переменную data и сделайте так:
C++
1
void push()
меняем на
C++
1
void push(int data)
Добавлено через 1 минуту
И не беритесь за связанные списки, пока c++ не знаете, мой вам совет

Добавлено через 8 минут
Кстати, зачем столько глобальных переменных, раз всё равно как аргументы в функцию передаете?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2013, 15:28     ПОдскажите почему не работает rand?
Еще ссылки по теме:

C++ Подскажите, почему это работает!?)
Р. Лафоре Подскажите, почему не работает C++
Подскажите почему не работает вывод строк? C++

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

Или воспользуйтесь поиском по форуму:
Виkтория
 Аватар для Виkтория
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 63
14.10.2013, 15:28  [ТС]     ПОдскажите почему не работает rand? #11
вот что-то такое !? посмотрите пожалуйста !! должно быть правильно , только надо еще удалить все элементы "delete"
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
struct item
{
    int data;               // данные
    item * next;            // указатель на следующий элемент
};
item *first = 0; //Указатель на начало списка
item *Head;
item *Tail;
 
 
    
 
 
// метод добавления элемента
void push(int data)
{
    item *itTemp = new item;
 
    if (Head == NULL)
        Head =Tail=itTemp;
    else
        Tail->next = itTemp;
        itTemp->data=data;
        itTemp->next=NULL;
        Tail = itTemp;
}
 
// вывод на экран всех элементов
void printList(item *Head)
{
    item * itTemp = Head;
    while (itTemp != NULL)
    {
        cout << itTemp->data << " ";
        itTemp = itTemp->next;
    }
    cout << endl;
}
// удаление элемента
void pop()
{
        item *itTemp = Head;
        Head = Head->next;
        delete itTemp;
 
}
 
void findEvenN(item *Head)
{
    item * itTemp = Head, * itDel;
    item * itPrev = NULL;
 
    while (itTemp != NULL)
    {
        if (itTemp->data <0)
        {
            if (itPrev == NULL)
                Head = Head->next;
            else
                itPrev->next = itTemp->next;
            itDel = itTemp;
            itTemp = itTemp->next;
            delete itDel;
        }
        else
        {
            itPrev = itTemp;
            itTemp = itTemp->next;
        }
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");           // русская локаль в консоли
    srand(time(NULL));
    int n;
    cout << "Введите количество элементов ";
    cin >> n;
    for (int i = 0; i < n; ++i)
        { 
            push(rand() % 100 + 1);
        }   // и ограничиваем диапазон 1-100
    
    printList(Head);     // вывод на экран всех элементов
 
    system("pause");
    return 0;
};
Yandex
Объявления
14.10.2013, 15:28     ПОдскажите почему не работает rand?
Ответ Создать тему
Опции темы

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