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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 58, средняя оценка - 4.67
Новичок_В_С++
Сообщений: n/a
#1

Помогите с функцией rand - C++

05.08.2008, 16:23. Просмотров 7098. Ответов 13
Метки нет (Все метки)

Привет всем
помогите решить простую задачу

Для каждого из следующих наборов целых чисел напишите единственный оператор, который будет печатать случайно выбранное
число из набора:
a) 2, 4, 6, 8, 10
b) 3, 5, 7, 9, 11
С) 6, 10, 14, 18, 22

т.е. как задавать шаг выбора случайного числа
от 0 до 100
показать каждое десятое
10,20,30 и т.д.

заранее спасибо всем!!!

Добавлено через 14 минут
еще задачка

написать функцию, которая вводит целое число из диапазона
от 1 до 32767 и печатает его как последовательность цифр, каждая
из которых отделена от соседней двумя пробелами. Например, целое
число 4562 должно быть напечатано в виде
4 5 6 2

и как перевернуть и менять местами цифры в введенном многозначном числе не используя массив
например
ввел 123
вывело 321

ввел 4542
вывело 2445
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2008, 16:23     Помогите с функцией rand
Посмотрите здесь:

Как пользоваться функцией rand()? - C++
Все привет. Пытаюсь пользоваться функцией rand(), а получаю сообщение Это разве идентификатор? #include "stdafx.h" ...

Как работать с функцией rand() - C++
Помогите сделать так, чтобы rand() каждый раз выкидывал неповторяющиеся значения.

Деление по модулю, работа с функцией rand() - C++
Мне нужно сгенерировать случайное число от 66 до 122, максимальное число RAND_MAX = 32767, мне нужно узнать на что нужно делить по модулю...

Исправить ошибки при работе с функцией rand - C++
Он просто выводит максимальное число вместо того чтобы выводить рандомное или я что то не так делаю? Ознакомьтесь с правилами форума. ...

Случайная последовательность чисел, генерируемой rand() функцией - C++
Как можно из псевдослучайно последовательности сделать случайную-последовательность числе, генерируемую rand() функцией?

Как функцией rand() генерировать упорядоченные тройки различных чисел - C++
Как функцией rand() генерировать упорядоченные тройки различных чисел от [0; 1000) не используя ни циклов, ни условий, ни условных...

Напишите пожалуйста Код программы генерирующей случайные величины но не функцией Rand - C++
Напишите пожалуйста Код программы генерирующей случайные величины но не функцией Rand а как - нибудь по другому, очень буду признательна.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Turbosega
40 / 40 / 3
Регистрация: 27.06.2008
Сообщений: 118
05.08.2008, 16:24     Помогите с функцией rand #2
Задаеш динамеческий массив.

заносиш туда поочереди или как тебе угодно свои числа

n=Length(YourArray);

Randomize;
RandomIndex=random(n);
Xentar
Of Wolf and Man
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
05.08.2008, 16:39     Помогите с функцией rand #3
не используя массив

массив длинны L -
имеем
i - указатель индекса

1,2,3,4 и переменную N
Заносим 1 в N
Заносим 4 в 1
Заносим N в 4
увеличиваем i на 1

прим. - когда берем эл-т с конца массива индекс L-i
i <= L div 2 (как в С++ не знаю div - целочисленное деление)
Новичок_В_С++
Сообщений: n/a
05.08.2008, 18:07     Помогите с функцией rand #4
а как без массива

меня в данный момент интересует

Для каждого из следующих наборов целых чисел напишите единственный оператор, который будет печатать случайно выбранное
число из набора:
a) 2, 4, 6, 8, 10
b) 3, 5, 7, 9, 11
С) 6, 10, 14, 18, 22

т.е. как задавать шаг выбора случайного числа
от 0 до 100
показать каждое десятое
10,20,30 и т.д.

где вы профи в С++?
Xentar
Of Wolf and Man
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
05.08.2008, 18:12     Помогите с функцией rand #5
блин недоглядел что источник не массив
тык делай точно так же через переменную, только из числа тягаешь разряды...
только будет гемморой с проверкой разрядности числа ...

Код
{chislo - число в котором надо заменить циферку
r - разряд в котором надо заменить циферку
new - циферка которую надо вставить}

function zamenit_cifru_v_razryade(chislo,r,new):integer;
var chislo_temp, i:integer;
begin

if r<>1 then for i:=1 to r-1 do r:=r*10;
{здесь мы ищем кратность разряда}

chislo_temp:=chislo mod r*10; {Здесь отсекаем все старшие разряды}
chislo_temp:=chislo_temp div r {Здесь отсекаем все младшие разряды}
{в темпе у нас остается цифра заданного разряда}

{div - деление - результат целая часть
mod - деление - результат остаток от деления}

chislo_temp:=chislo_temp * r; {перемещаем цифру в нужный разряд}
chislo_temp:=chislo - chislo_temp; {Здесь мы убираем из изначального числа разряд т.е. число в этом разряде становится нулем}

chislo_temp:= chislo_temp + new * r {устанавливаем новое значение в разряде}

zamenit_cifru_v_razryade:=chislo_temp;{возвращение значения функции}
end;
это на паскале - принцип понять можно

иДА, я практолаг - кто может сделать лучше пишите ))
challengerr
43 / 36 / 2
Регистрация: 30.07.2008
Сообщений: 136
05.08.2008, 19:24     Помогите с функцией rand #6
Код
#include <windows.h> //srand(),rand(), NULL
#include <stdio.h>//printf
#include <time.h> //time
void main()
{
 int i;
 int b[]={2,4,6,8,10};
 srand(time(NULL));
 for(i=0;i<100;i++)
  {  
  printf("%d ",b[rand()%5]);
  }
}

Без массива то же самое
Код
#include <windows.h>
#include <stdio.h>
#include <time.h>
void main()
{
 int t,i;
 srand(time(NULL));
 for(i=0;i<100;i++)
  {
  printf("%d ",2+2*(rand()%5));
  }
}
printf("%d ",3+2*(rand()%5));// 3, 5, 7, 9, 11
printf("%d ",6+4*(rand()%5));// 6, 10, 14, 18, 22
printf("%d ",10+10*(rand()%9));// показать каждое десятое
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
06.08.2008, 23:35     Помогите с функцией rand #7
Цитата Сообщение от Новичок_В_С++ Посмотреть сообщение
Привет всем
помогите решить простую задачу


и как перевернуть и менять местами цифры в введенном многозначном числе не используя массив
например
ввел 123
вывело 321

ввел 4542
вывело 2445

Недавно сам делал упражнения из книги по турбопаскалю, вот функция переворачивающая число:

Код
 void case_14() {
               //Дано натуральное число N. Записать его цифры в обратном порядке. Например, 12345 -> 54321
                int N, i = 0, acc = 0, nomber,m =1,n;
                               cout << "Enter the nomber: ";
                               cin >> N;
                               cout << endl;
                               
                               //Определяем разрядность числа
                               
                               n = N;
                               
                               for(;;)  {
                                        N=N/10;
                                        m*=10;
                                        if(N<10)
                                        break
                                        ;
                                        
                                        }
                                        
                                        // "Переворачиваем" введённое число
                                        
                                        for(;;)  {
                                        nomber = n%10;
                                        acc+=nomber*m;
                                        if(m == 1)
                                        break;
                                        n = n/10;
                                        m=m/10;
                               
                                        }


 cout << " New nomber: ";
                               cout << acc;
                               cout << endl;
                               
                               }
Код работает безупречно, проверял.
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
08.08.2008, 13:19     Помогите с функцией rand #8
Цитата Сообщение от Новичок_В_С++ Посмотреть сообщение
Добавлено через 14 минут
еще задачка

написать функцию, которая вводит целое число из диапазона
от 1 до 32767 и печатает его как последовательность цифр, каждая
из которых отделена от соседней двумя пробелами. Например, целое
число 4562 должно быть напечатано в виде
4 5 6 2

То же самое.Здесь надо использовать первую часть моей функции, т.е сначала определить разрядность числа. Затем делишь (/) разрядность на 10, и затем введённое число на разрядность. Потом пишешь результат, и каут << два пробела. Разумеется, для "выковыривания" чисел других разрядов, необходимо продумать инструкции вычитания.
Puporev
Модератор
51557 / 39488 / 13009
Регистрация: 18.05.2008
Сообщений: 90,203
08.08.2008, 14:18     Помогите с функцией rand #9
и как перевернуть и менять местами цифры в введенном многозначном числе не используя массив
например
ввел 123
вывело 321
Задавай число в виде строки, затем читай сторку с конца. )
Xentar
Of Wolf and Man
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
08.08.2008, 14:28     Помогите с функцией rand #10
Задавай число в виде строки, затем читай сторку с конца. )
строка есть ни что иное как МАССИВ символов (char) - поэтому этот способ здесь неприменим...
З.Ы. в C++ нет такого типа данных "строка", это тебе не pascal
urkovsky
6 / 6 / 0
Регистрация: 07.08.2008
Сообщений: 22
08.08.2008, 14:36     Помогите с функцией rand #11
З.Ы. в C++ нет такого типа данных "строка", это тебе не pascal
А std::string?

Потом iterator`ом с конца пройти
Xentar
Of Wolf and Man
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
08.08.2008, 15:02     Помогите с функцией rand #12
всеравно получается array of char
проще самому создать массив и работать чем через модуль его еще подключать ...
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
11.08.2008, 00:19     Помогите с функцией rand #13
Цитата Сообщение от Xentar Посмотреть сообщение
строка есть ни что иное как МАССИВ символов (char) - поэтому этот способ здесь неприменим...
З.Ы. в C++ нет такого типа данных "строка", это тебе не pascal
а каже Cstring? разве это не тип данных строка?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2008, 10:40     Помогите с функцией rand
Еще ссылки по теме:

Проблема с программой: Задаются 10 чисел функцией rand(). Определить сумму их квадратов - C++
Фигня с прогой. Вывод случайных чисел получатся, выводится всё( в диапазоне от-100 до +100) #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

помогите с функцией С++ - C++
написать встроенную функцию которая возвращает количество бит со значением 0 ,число типа short помогите плиз у кого время есть :)

Помогите с функцией - C++
нужно написать и протестирувать функцию, котороя определяет ли входит буква в заданою строку

Помогите с функцией. - C++
Кто-нибудь может мне объяснить как правильно задавать функцию, как правильно к ней обращаться ? Буду очень благодарен.

Помогите с функцией пользователя !!!! - C++
Вопрос для программистов, помогите бедным студентам пожалуйста:) Вот дана программка и надо сделать так, чтобы имя выводилась в начале...


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

Или воспользуйтесь поиском по форуму:
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
11.08.2008, 10:40     Помогите с функцией rand #14
Все эти задачи на деление с остатком.Поэтому ограничение на массивы.
диапазон случайных чисел можно задать,взяв остаток от деления случайного числа на нужное. Скажем,остаток от деления на 10 задает диапазон 0-9.

Вторая задача- на выделение цифр из десятичного представления числа.
Так же используется деление и деление с остатком. Вот формула для n-ой цифры с конца,если нумеровать их с нуля : (x % 10^(n+1) )/10^n (вряд ли я ошибся,но даже если так,ты можешь вывести правильную формулу,вспомнив,что десятичное число представимо в виде суммы вида Цифра*10^n)
По поводу строковых типов,не важно,массивы это или нет,это задачи на конкретную вещь - использование оператора "%". Так что обсуждение строк непродуктивно и не нужно. Тему закрою.
Yandex
Объявления
11.08.2008, 10:40     Помогите с функцией rand
Закрытая тема Создать тему
Опции темы

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