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

помогите понять (генератор чисел) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задачка по С++ http://www.cyberforum.ru/cpp-beginners/thread400734.html
Программа вычисления стоимости покупки с учетом скидки.Скидка предоставляется, если сумма>1000(5%), более 5000(?%), а так же дополнит скидка 3%- в выходные дни. Информация о том является ли день выходным, программа должна получать на основе анализа текущей даты... c = StrToFloat(Edit1->Text); if (c > 1000) c = c * 5/100; else if (c>5000) c = c * 7/100; Label2->Caption="скидка...
C++ Нужна упращенная модель разделения текста по указательным символам Доброго времени суток. Нужна упращенная модель разделения текста (массива) по указательным символам, допустим у нас имеется комманда #run%text.txt - где # указатель что следующий символ что будет командой, и % конец команды начало параметра команды. можно это сделать с помощью цикла и обработчика bool Cycle = true; int x; while(Cycle) { if(buff=='#') Так приблизительно... но есть... http://www.cyberforum.ru/cpp-beginners/thread400732.html
Сформировать массив из элементов исходного массива, располагающихся по возрастанию C++
например из массива (3 2 4 5 1 3 7 3 4 9 2) должен получиться массив (3 4 5 7 9) т.е. из возрастающих элементов. не могу понять как делать=( Добавлено через 10 минут если можно то на языке начинающих))) за ранее спс:)
С++ структура даных очередь C++
привет всем, помогите плиз з кодом С++ , необходимо написать программу на основе абстрактного типа даных очереди. В магазине стоит очередь из m покупателей. Время обслуживания покупателя из очереди - это случайное целое число в диапазоне от 1 до t1. При добавлении нового покупателя в очередь - это случайное целое число в диапазоне от 1 до t2. Промоделировать состояние очереди: а) вывести...
C++ Модули/двоичная система счисления http://www.cyberforum.ru/cpp-beginners/thread400705.html
Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над натуральными числами в двоичной системе счисления: сложения; вычитания; умножения; деления; перевода из двоичной системы счисления в десятичную; функций, реализующих операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
C++ написать 2 программы на С++ Описать рекурсивную функцию Root(X, K, N) вещественного типа, находящую приближенное значение корня K-ой степени из числа X по формуле: Y(0)=1 y(n+1)=y(n)-(y(n)-x/(y(n))^k-1)/k Параметры функции – X>0 – вещественное число; K>1, N>0 – целые числа. Найти приближенное значение корня K-ой степени из числа X с использованием цикла. подробнее

Показать сообщение отдельно
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
07.12.2011, 18:23     помогите понять (генератор чисел)
Цитата Сообщение от Nuckelavee Посмотреть сообщение
подставляет число, пишет что оно больше/меньше загадоного, сужает рамки поиска, а потом подставляет то же самое число и оно оказывается правильным.
по большому счеты это вас не должно волновать, главное что алгоритм дает результат - значит он верный. Лучше подумать над оптимизацией алгоритма, так сказать доведения его до ума. Начнем сначала:
1. цель: программа должна отгадать число, загаданное пользователем.
2. детали: диапазон чисел задается программой или пользователем (на ваше усмотрение)
3. средства: память для хранения начального и конечного границ диапазона, память для хранения найденного числа, память для хранения и сравнения ответа на заданный вопрос, память для промежуточных значений функция поиска числа, т.е. всего 5 переменных.
Для поставленной задачи сгодится метод половинного деления, согласитесь что инкремент и декремент границ диапазона это мелко, поднимайте планку. Число пользователь просто загадывает в границах диапазона (не вводит в память, а держит в голове) и отвечает на вопросы. Вот код программы, изучайте, дополняйте по своему усмотрению. Можно убрать комментарии (только если сразу оба) и закомментировать строки под ними. У меня непонятки какие-то проявились с кодировками, поэтому я сначала написал так, а когда увидел что незадача, то сменил подход.
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
#include <stdio.h>
#include <string.h>
 
int search(int beg, int end)
{
    //unsigned char ch;
    unsigned char ch[2];
    int tmp;
 
    tmp = ( end - beg ) / 2;
 
    while ( 1 )
    {
        printf("число равно %i?\n", tmp);
        puts("если да, то нажмите enter, если ваше число больше - нажмите 1, если меньше - 0");
        //ch = getchar();
        gets(ch);
        if ( ch[ 0 ] == '1' )
        {
            beg = tmp;
            tmp = beg + ( (end - beg) / 2 );
        }
        else if( ch[ 0 ] == '0' )
        {
            end = tmp;
            tmp = end - ( (end - beg) / 2 );
        }
        else
            return tmp;
    }
}
 
int main( void )
{
    int x;
    int beg = 0;
    int end = 500;
 
    puts("загадайте число от 0 до 500 включительно");
 
    x = search(beg - 1, end + 1);
 
    printf("ваше число %i\n", x);
    return 0;
}
 
Текущее время: 19:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru