Новичок_В_С++
|
|
1 | |
Помогите с функцией rand05.08.2008, 16:23. Показов 8932. Ответов 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 |
05.08.2008, 16:23 | |
Ответы с готовыми решениями:
13
Как пользоваться функцией rand()? Как работать с функцией rand() Деление по модулю, работа с функцией rand() Исправить ошибки при работе с функцией rand |
40 / 40 / 10
Регистрация: 27.06.2008
Сообщений: 118
|
|
05.08.2008, 16:24 | 2 |
Задаеш динамеческий массив.
заносиш туда поочереди или как тебе угодно свои числа n=Length(YourArray); Randomize; RandomIndex=random(n);
0
|
Of Wolf and Man
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
|
|
05.08.2008, 16:39 | 3 |
не используя массив
массив длинны L - имеем i - указатель индекса 1,2,3,4 и переменную N Заносим 1 в N Заносим 4 в 1 Заносим N в 4 увеличиваем i на 1 прим. - когда берем эл-т с конца массива индекс L-i i <= L div 2 (как в С++ не знаю div - целочисленное деление)
0
|
Новичок_В_С++
|
|
05.08.2008, 18:07 | 4 |
а как без массива
меня в данный момент интересует Для каждого из следующих наборов целых чисел напишите единственный оператор, который будет печатать случайно выбранное число из набора: a) 2, 4, 6, 8, 10 b) 3, 5, 7, 9, 11 С) 6, 10, 14, 18, 22 т.е. как задавать шаг выбора случайного числа от 0 до 100 показать каждое десятое 10,20,30 и т.д. где вы профи в С++? |
Of Wolf and Man
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
|
|
05.08.2008, 18:12 | 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; иДА, я практолаг - кто может сделать лучше пишите ))
0
|
44 / 37 / 6
Регистрация: 30.07.2008
Сообщений: 136
|
|
05.08.2008, 19:24 | 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 ",6+4*(rand()%5));// 6, 10, 14, 18, 22 printf("%d ",10+10*(rand()%9));// показать каждое десятое
0
|
21 / 20 / 0
Регистрация: 04.08.2008
Сообщений: 31
|
|
06.08.2008, 23:35 | 7 |
Недавно сам делал упражнения из книги по турбопаскалю, вот функция переворачивающая число: Код
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; }
0
|
21 / 20 / 0
Регистрация: 04.08.2008
Сообщений: 31
|
|
08.08.2008, 13:19 | 8 |
То же самое.Здесь надо использовать первую часть моей функции, т.е сначала определить разрядность числа. Затем делишь (/) разрядность на 10, и затем введённое число на разрядность. Потом пишешь результат, и каут << два пробела. Разумеется, для "выковыривания" чисел других разрядов, необходимо продумать инструкции вычитания.
0
|
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
08.08.2008, 14:18 | 9 |
0
|
Of Wolf and Man
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
|
|
08.08.2008, 14:28 | 10 |
З.Ы. в C++ нет такого типа данных "строка", это тебе не pascal
0
|
7 / 7 / 0
Регистрация: 07.08.2008
Сообщений: 22
|
|
08.08.2008, 14:36 | 11 |
Потом iterator`ом с конца пройти
0
|
Of Wolf and Man
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
|
|
08.08.2008, 15:02 | 12 |
всеравно получается array of char
проще самому создать массив и работать чем через модуль его еще подключать ...
0
|
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
|
|
11.08.2008, 00:19 | 13 |
0
|
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
11.08.2008, 10:40 | 14 |
Все эти задачи на деление с остатком.Поэтому ограничение на массивы.
диапазон случайных чисел можно задать,взяв остаток от деления случайного числа на нужное. Скажем,остаток от деления на 10 задает диапазон 0-9. Вторая задача- на выделение цифр из десятичного представления числа. Так же используется деление и деление с остатком. Вот формула для n-ой цифры с конца,если нумеровать их с нуля : (x % 10^(n+1) )/10^n (вряд ли я ошибся,но даже если так,ты можешь вывести правильную формулу,вспомнив,что десятичное число представимо в виде суммы вида Цифра*10^n) По поводу строковых типов,не важно,массивы это или нет,это задачи на конкретную вещь - использование оператора "%". Так что обсуждение строк непродуктивно и не нужно. Тему закрою.
1
|
11.08.2008, 10:40 | |
Помогаю со студенческими работами здесь
14
Случайная последовательность чисел, генерируемой rand() функцией Как функцией rand() генерировать упорядоченные тройки различных чисел Напишите пожалуйста Код программы генерирующей случайные величины но не функцией Rand Проблема с программой: Задаются 10 чисел функцией rand(). Определить сумму их квадратов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |