Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/47: Рейтинг темы: голосов - 47, средняя оценка - 4.77
2 / 2 / 2
Регистрация: 27.07.2013
Сообщений: 13
1

srand() и rand() не работают должным образов

12.10.2013, 14:53. Просмотров 8696. Ответов 2
Метки нет (Все метки)


Всем привет! В общем задали задание написать программу заполнения двумерного массива случайными числами в диапазоне от -70 до 170, найти максимальный элемент массива и отсортировать строку, которую выберет пользователь.
Проблем в том что если использовать отдельно команду rand() то массив случайный чисел создается, но не меняются значения, а если добавить srand() то выдается массив совершенно одинаковых чисел. Помогите пожалуйста разобраться в чем проблема
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 "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "Russian");
    int i, n, mas[9][11], max;
    char ch;
    for ( ; ; )
    {
        do
        {
            cout<<"1. Заполнить двумерный массив размером 9х11 случайными целыми числами в диапазоне [-70;170] и вывести его на экран"<<endl;
            cout<<"2. Найти наибольший элемент массива и вывести его на экран"<<endl;
            cout<<"3. Отсортировать строку в порядке возрастания и вывести её на экран"<<endl;
            cout<<"4. Выход"<<endl;
            cout<<"Выберите пункт меню: ";
            ch=getchar();
        } while (ch!='1' && ch!='2' && ch!='3' && ch!='4');
        switch(ch)
        {
            case '1': system("cls");
                      for (i=0; i<9; ++i)
                      {
                          for (n=0; n<11; ++n)
                          {
                              srand( time( NULL ) );
                              mas[i][n]=rand() % 240-70;
                              cout<<mas[i][n]<<" ";
                          }
                          cout<<endl;
                      }
                      cout<<endl;
                      getchar();
                      break;
            case '2': system("cls");
                      max=mas[0][0];
                      for (i=0; i<9; ++i)
                      {
                          for (n=0; n<11; ++n)
                          {
                              if (max<mas[i][n]) max=mas[i][n];
                          }
                      }
                      cout<<"Наибольший элемент массива "<<max<<endl;
                      cout<<endl;
                      getchar();
                      break;
            case '3': system ("cls");
                      cout<<"Введите номер строки которую следует отсортировать: ";
                      cin>>i;
                      cout<<"Строка до сортировки: ";
                      for (int n = 0; n < 10; n++)
                      {
                          cout<<mas[i][n]<<" ";
                      }
                      cout<<endl;
                      cout<<"Строка после сортировки: ";
                      for (int n = 0; n < 10; ++n)
                      {
                          if (n=10)
                          {
                              if (mas[i][n]<mas[i][0])
                              {
                                  max=mas[i][0];
                                  mas[i][0]=mas[i][n];
                                  mas[i][n]=max;
                              }
                          }
                          else
                          {
                              if (mas[i][n]>mas[i][n+1])
                              {
                                  max=mas[i][n];
                                  mas[i][n]=mas[i][n+1];
                                  mas[i][n+1]=max;
                              }
                          }
                      }
                      for (int n = 0; n < 10; ++n)
                      {
                          cout<<mas[i][n]<<" ";
                      }
                      cout<<endl;
                      getchar();
                      break;
            case '4': exit (0);
        }
    }
    system("pause");
    return 0;
}
Результат программы при использовании srand() в приложенном файле
И помогите еще разобрать с сортировкой, не сортирует вообще
0
Миниатюры
srand() и rand() не работают должным образов  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2013, 14:53
Ответы с готовыми решениями:

Rand() и srand() неправильно работают
main() { srand(time(NULL)); for (int i = 0; i &lt; 100; i++) printf(&quot;%d &quot;, rand()); }...

srand и rand
Здравствуйте. Надо заполнить массив единицами и нулями. srand (time (NULL)); for (int i=0;...

rand, srand и т.д
Дана целочисленная матрица A (N,M), в которой имеются ровно два одинаковых элемента. Найти индексы...

srand(), rand() и их seed
Пишу класс, объекты которого представляют из себя трехмерные модели планет. Для того что бы...

2
Эксперт С++
4967 / 3074 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
12.10.2013, 15:26 2
srand( time( NULL ) ); в таком случае надо выполнить один раз в самом начале программы.
2
2 / 2 / 2
Регистрация: 27.07.2013
Сообщений: 13
12.10.2013, 15:39  [ТС] 3
Благодарю, помогло. А что на счет сортировки в case '3'?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2013, 15:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Различия srand() и rand()
Привет, форумчане! Изучаю с++шник, внезапно появился нездоровый интерес. Чем srand() отличается от...

rand() & srand()
кто знает как работает пара функции rand() и srand(). я знаю как это пара функци работает.мне...

Не определяется srand, time, rand
В данном коде не хотят определяться srand, time,rand void FillArray(int arrayDimension, int...

Что означают строки rand и srand
Доброго времени суток ! Дан код: rand() % (range_max - range_min + 1) + range_min;...


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

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

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