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

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

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

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

05.10.2013, 15:20. Просмотров 635. Ответов 10
Метки нет (Все метки)

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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2013, 15:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ПОдскажите почему не работает rand? (C++):

Подскажите почему не работает - C++
Нужно добавить К элементов в конец динамического массива #include&lt;iostream.h&gt; #include&lt;stdlib.h&gt; #include&lt;conio.h&gt; #include...

Р. Лафоре Подскажите, почему не работает - C++
Никак не пойму, в чем ошибка. #include &lt;iostream&gt; using namespace std; struct sterling { int pound; int shiling; int...

Подскажите, почему это работает!?) - C++
Мне необходимо изменить все строчные буквы на заглавные, это все получается. Я ввожу символы(причем заметьте массив чар из 0, но программа...

Подскажите, почему не работает strcpy_s() - C++
Вот код char *pcStr = &quot;Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22&quot; ...

Подскажите плз, почему не работает - C++
Почему-то не работает цикл &quot;for&quot;. При запуске кода в консольном окне переменная &quot;h&quot; проходит от &quot;0&quot; до &quot;diametr&quot;. Но после окончания цикла...

Подскажите почему указатель работает неправильно? - C++
Вот код: #include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;cstdlib&gt; #include &lt;vector&gt; using namespace std; void...

10
0x10
2512 / 1690 / 255
Регистрация: 24.11.2012
Сообщений: 4,238
05.10.2013, 15:22 #2
srand вынести из цикла.
0
Ilot
Модератор
Эксперт С++
1825 / 1183 / 232
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
05.10.2013, 15:35 #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;            // указатель на следующий к голове очереди элемен
};
1
Виkтория
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 63
05.10.2013, 16:39  [ТС] #4
а как это правильно записать ..?? через '&'?
0
Ilot
Модератор
Эксперт С++
1825 / 1183 / 232
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
05.10.2013, 16:46 #5
Цитата Сообщение от Виkтория Посмотреть сообщение
а как это правильно записать ..?? через '&'?
Верно.

Добавлено через 2 минуты
Хотя даже лучше передавать в ф-ю значение, а не структуру.
0
Виkтория
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 63
08.10.2013, 23:44  [ТС] #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(); 
}
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.10.2013, 23:58 #7
Цитата Сообщение от Виkтория Посмотреть сообщение
если у меня сейчас push с одним аргументом
Что-то незаметно:
Цитата Сообщение от Виkтория Посмотреть сообщение
// метод добавления элемента
void push()
{
0
Виkтория
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 63
09.10.2013, 00:02  [ТС] #8
все равно не понимаю , что нужно то ?
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.10.2013, 00:10 #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;
};
1
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 592
09.10.2013, 00:23 #10
Во-первых почему у вас 2 main(){}, причему один void, а второй int?
Во-вторых уберите глобальную переменную data и сделайте так:
C++
1
void push()
меняем на
C++
1
void push(int data)
Добавлено через 1 минуту
И не беритесь за связанные списки, пока c++ не знаете, мой вам совет

Добавлено через 8 минут
Кстати, зачем столько глобальных переменных, раз всё равно как аргументы в функцию передаете?)
0
Виkтория
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 63
14.10.2013, 15:28  [ТС] #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;
};
0
14.10.2013, 15:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2013, 15:28
Привет! Вот еще темы с ответами:

Подскажите почему не работает вывод строк? - C++
подскажите почему программа работает некорректно? на выводе должно быть ,true] vec != vec2 vec == vec у меня же просто e vec...

С++, оператор return. ПОдскажите, почему не работает? - C++
нужно, чтобы линейная программа завершалась, если выполняется условие. Но даже если условие не выполняется, совершается выход из...

подскажите почему программа работает неправильно - C++
Использование двумерного массива как аргумента функции и возвращаемого значения функции выдает предупреждение:1&gt;------ Build...

Динамическиме массивы подскажите разобраться почему не работает - C++
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;iomanip&gt; using namespace std ; int main() { char...


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

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

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