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

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

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

Подобрать к заданному числу ранвую или близкую по значению переменную - C++

08.11.2012, 12:23. Просмотров 1009. Ответов 27
Метки нет (Все метки)

Вобщем есть 10 переменных. Пользователь задает число Н и к нему подбирается равная либо большая (максимально к нему близкая) по значению переменная.
Как это осуществить в плане кода?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 12:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подобрать к заданному числу ранвую или близкую по значению переменную (C++):

По заданному целому числу определить,является ли оно положительным,отрицательным или нулем. - C++
По заданному целому числу определить,является ли оно положительным,отрицательным или нулем,используя перечисляемые константы и переключатель

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

Даны два неубывающих массива X=(xi),i=1.n, n<=10, и Y=(yi),i=1.m, m<=10 и число q. Найти сумму вида (x(i)+y(j), наиболее близкую к числу q - C++
Даны два неубывающих массива X=(xi),i=1..n, n&lt;=10, и Y=(yi),i=1..m, m&lt;=10 и число q. Найти сумму вида (x(i)+y(j)), наиболее близкую к...

Упорядочить строки матриц по числу элементов кратных заданному числу - C++
Даны три целочисленные матрица A, B и C. Упорядочить строки матриц по числу элементов, кратных №, поставив на первое место строку с...

Сортировка по заданному числу! - C++
Помогите составить функцию, которая реализует сортировку только тех чисел в массиве (векторе), которые начинаются на Z (задать с...

По заданному числу N найти число Х - C++
Задание 1. В трехзначном числе Х зачеркнули его вторую цифру. Когда к образованному при этом двузначному числу справа приписали вторую...

27
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
15.11.2012, 01:22  [ТС] #16
ой я дурачек случайно поставил)
0
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
19.11.2012, 14:55  [ТС] #17
А есть какое то исключение что бы не вписали текст вместо чисел?
Или проверка какаято на дроби и не целые числа?
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
19.11.2012, 15:17 #18
NosferatuMax, есть наверно, спросите тут.
0
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
21.11.2012, 14:21  [ТС] #19
Это исключение FormatException
0
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
26.11.2012, 23:15  [ТС] #20
Я конечно извеняюсь за то что в который раз пишу здесь) но только здесь мне дают достаточно быстро ответ и достаточно понятно(
Реально ли как то сделать что бы после того как напишет сообщение исключения можно было еще ввести несколько раз в консоль информацию.
Обьясняю по проще:
Ниже есть целый код куда вписано исключение FormatException
цель - сделать что бы после 3 формат ексепшенов сделало тоже самое что и при вводе 3 раза подряд отрицательного числа.
Но через твой способ не получется, глянь я с низу пытался сделать, но после одного сообщения консоль закрывается...
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
class Program
{
    static void Main(string[] args)
    {
 
        try
        {
 
 
 
            //deklarujeme promenne
            int r = 0;
            const int n = 8;
            Int64[] a = new Int64[] { 6, 28, 496, 8128, 33550336, 8589869056, 137438691328, 2305843008139952128 };
            Int64 k, m = Int64.MaxValue, j = 0;
            do
            {
 
 
 
 
                //umoЕѕnujeme zadat K
                Console.Write("Zadejte cislo K : ");
                k = Convert.ToInt64(Console.ReadLine());
 
 
 
                //Zkontrolujeme zda zadanГЎ hodnota leЕѕГ* v pЕ™edepsanГ©m intervalu 
                if (k <= 0)
                {
                    if (r == 3)
                    {
                        Random t = new Random();
                        k = t.Next(1, 100000000);
                        Console.Write("K je nastavene na :   ");
                        Console.Write(k);
                        break;
                    }
                    Console.Write("Je moЕѕne zadavat jenom pЕ™irozena ДЌisla , ");
                    r++;
                }
            }
 
 
            //algorytm vypoДЌtu nejbliЕѕsiho dokonaleho ДЌisla
            while (k <= 0);
            for (int i = 0; i < n; i++)
                if (Math.Abs(a[i] - k) < m && a[i] > k)
                {
                    m = Math.Abs(a[i] - k);
                    j = i;
                }
 
            //vypisovani vysledku
            Console.WriteLine(" Nejblizsi dokonale cislo  " + a[j]);
            Console.ReadKey();
 
        }
 
        catch (FormatException e)
        {
            Console.WriteLine("Zadejte cele kladne ДЌislo  " + e.Message);
            {
                int d = 0;
                Int64 k = Int64.MaxValue;
                if (d == 3)
                {
                    Random t = new Random();
                    k = t.Next(1, 100000000);
                    Console.Write("K je nastavene na :   ");
                    Console.Write(k);
 
                }
 
 
            }
 
        }
    }
}
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
27.11.2012, 16:17 #21
Может, как-то так:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
class Program
{
    static void Main(string[] args)
    {
        const int n = 8;
        Int64[] a = new Int64[] { 6, 28, 496, 8128, 33550336, 8589869056, 137438691328, 2305843008139952128 };
        Int64 k, m = Int64.MaxValue, j = 0;
        int r = 0;
        do {
            Console.Write("Input k: "); 
            k = Convert.ToInt64(Console.ReadLine());
        try
        {
 
            if (k <= 0)
                throw new FormatException();
            else
                break;
        }
 
        catch (FormatException e)
        {
            Console.WriteLine("Vvedite polozhitel`noe chislo:  "+e.Message);
            {
                if (r == 3)
                {
                    Random t = new Random();
                    k = t.Next(1, 100000000);
                    Console.Write("K je nastavene na :   ");
                    Console.Write(k);
                    break;
                }
                else
                   r++;
            }
        }
        } while (true);
        for (int i = 0; i < n; i++)
            if (Math.Abs(a[i] - k) < m && a[i] > k)
            {
                m = Math.Abs(a[i] - k);
                j = i;
            }
        //vypisovani vysledku
        Console.WriteLine(" Nejblizsi dokonale cislo  " + a[j]);
        Console.ReadKey();
    }
}
Честно говоря, еще как с помощью try-catch перенаправлять опять на ввод и проверку. Если Вам без цикла надо, тогда goto используйте
0
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
27.11.2012, 23:20  [ТС] #22
Кстати у тебя тоже после того как ловит ексепшен консоль закрывается
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
27.11.2012, 23:27 #23
Это вопрос? Нет, все как надо работает.
0
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
27.11.2012, 23:31  [ТС] #24
Я ничего не меня в конкретно твоем коде, вставляю пишу "ываываывпырлвкп" и ничего не происходит)

Добавлено через 3 минуты
Входная строка имела неверный формат. и подсвечивает желтым k = Convert.ToInt64(Console.ReadLine()); вот все что происходит)

У меня та же проблема, после ексепшена либо закрывается либо ничего не происходит, а надо что бы после 3 неправильных вводов(после 3 ексепшенов) делало

C#
1
2
3
4
5
 Random t = new Random();
                    k = t.Next(1, 100000000);
                    Console.Write("K je nastavene na :   ");
                    Console.Write(k);
                    break;
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
27.11.2012, 23:32 #25
NosferatuMax, ну, так понятное дело, там эксепшн только на ввод <= стоит.
0
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
27.11.2012, 23:34  [ТС] #26
просто суть что сам ексепшен вписать не проблема но после него тупо конец програмы происходит, нельзя ввести еще раз, да и не надо там ставить <= он по сути сам отлавливает и без этого, проблема что нельзя сделать это много раз(3)
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
27.11.2012, 23:38 #27
Вот, думаю это: 16 строку переместить в блок try.
1
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
27.11.2012, 23:51  [ТС] #28
Да все работает как часы...Спасибо, такая мелочь а сколько мучался.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2012, 23:51
Привет! Вот еще темы с ответами:

По заданному числу n найти n-ое число Фибоначчи - C++
По заданному числу n найти n-ое число Фибоначчи. Вход 7 49 Выход 13 7778742049

Создание объектов в цикле по заданному числу - C++
Можно ли создавать объекты класса по заданному числу в цикле? Проще говоря можно ли в С++ как то реализовать следующее: cout &lt;&lt; &quot;Введите...

По матрице и заданному числу построить вектор - C++
По матрице размерностью m*n и заданному числу построить вектор, элемент которого равен 1, если наибольший элемент соответствующей строки...

Шаблон поиска элементов по заданному значению - C++
не находит индекс задаваемого элемента из списка. мне подсказывали убрать node *cur = head-&gt;next; из цикла, т.к. он определен в начале,...


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

Или воспользуйтесь поиском по форуму:
28
Yandex
Объявления
27.11.2012, 23:51
Ответ Создать тему
Опции темы

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