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

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

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

C++ По матрице и заданному числу построить вектор
Сортировка по заданному числу! C++
C++ По заданному целому числу определить,является ли оно положительным,отрицательным или нулем.
C++ По заданному числу N найти число Х
C++ Даны два неубывающих массива X=(xi),i=1.n, n<=10, и Y=(yi),i=1.m, m<=10 и число q. Найти сумму вида (x(i)+y(j), наиболее близкую к числу q
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
08.11.2012, 12:52     Подобрать к заданному числу ранвую или близкую по значению переменную #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
int main(void)
{
 const int n =10;
 int a[n]={10,33,25,64,77,59,6,38,23,3},k,m,j=0; //массив 10 чисел (дано)
 std::cin>>k;
 for (int i=0; i<n; i++)
  if (std::abs(a[i]-k)<m)
   {
    m=std::abs(a[i]-k);
    j=i;
   }
 std::cout<<"Number: "<<a[j]<<std::endl;
 system("PAUSE");
 return 0;
}
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
08.11.2012, 14:12  [ТС]     Подобрать к заданному числу ранвую или близкую по значению переменную #3
Блин я перепутал) мне нужно C# а не С++, Администратор пожалуйста перенесите тему в соответствующий раздел.
artemuidak
2 / 2 / 0
Регистрация: 27.03.2012
Сообщений: 50
08.11.2012, 14:20     Подобрать к заданному числу ранвую или близкую по значению переменную #4
Построй этот код по такому же принцыпу..
Не чего сложного..
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
08.11.2012, 15:47     Подобрать к заданному числу ранвую или близкую по значению переменную #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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            const int n = 10;
            int[] a = new int[] { 10, 33, 25, 64, 77, 59, 6, 38, 23, 3 }; //массив 10 чисел (дано)
            int k, m = 100000, j = 0; 
            k = Convert.ToInt32(Console.ReadLine());
            for (int i = 0; i < n; i++)
                if (Math.Abs(a[i] - k) < m)
                {
                    m = Math.Abs(a[i] - k);
                    j = i;
                }
            Console.WriteLine(a[j]);
            Console.ReadKey();
        }
    }
}
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
08.11.2012, 16:25  [ТС]     Подобрать к заданному числу ранвую или близкую по значению переменную #6
Если я не ошибаюсь оно находит ближайше число с любой стороны?
Прости за глупый вопрос просто я еще не разобрался с алгоритмами, где подправить что бы находило только большее чем заданое?
И если скажем я использую числа по типу 2305843008139952128 на что нужно заменить int что бы не было ошибки? а то у меня там ппц числа самое большое 191561942608236107294793378084303638130997321548169216)
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
08.11.2012, 16:50     Подобрать к заданному числу ранвую или близкую по значению переменную #7
что бы находило только большее чем заданное
C#
1
 if (Math.Abs(a[i] - k) < m && a[i]>k )
Насчет чисел не знаю, что там в C# имеется. Но в тип int64 (наибольший) такое число точно не поместится. Надо придумывать способ хранения таких чисел.
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
08.11.2012, 21:07  [ТС]     Подобрать к заданному числу ранвую или близкую по значению переменную #8
Вобщем пришлось убрать пару чисел потому что как я понял они не влезут вообще, и получилось что то типа
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            const int n = 8;
            int[] a = new int[] { 6, 28, 496, 8128, 33550336, 8589869056, 137438691328, 2305843008139952128};
            int k, m = 100000, j = 0;
            k = Convert.ToInt32(Console.ReadLine());
            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;
                }
            Console.WriteLine(a[j]);
            Console.ReadKey();
        }
    }
}
Добавлено через 9 минут
при замене int34 на 64 выбивает ошибку что нельзя использовать инт, после замены инт на лонг вообще все красное...блин я опять запутался
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
08.11.2012, 21:35     Подобрать к заданному числу ранвую или близкую по значению переменную #9
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
            k = Convert.ToInt64(Console.ReadLine());
            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;
                }
            Console.WriteLine(a[j]);
            Console.ReadKey();
        }
}
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
14.11.2012, 21:37  [ТС]     Подобрать к заданному числу ранвую или близкую по значению переменную #10
Я добавил там еще исключение
C#
1
2
 if (k <= 0)
            throw new IndexOutOfRangeException("Je moЕѕne zadavat jenom pЕ™irozena cГ*sla");
Но появился новый вопрос)
Как сделать так что бы после неверно заданных данных для входа програма не только выписала ошибку но и попросила задать еще раз?Ну скажем что бы после 3-4 неправильных вводов числа програма сама выбрала рандом и посчитала для него результаты.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
14.11.2012, 22:16     Подобрать к заданному числу ранвую или близкую по значению переменную #11
Если так, то можно без исключений:
C#
1
2
3
4
5
6
7
8
9
            Int64 k;
            do
            {
                Console.Write("Input k: ");
                k = Convert.ToInt64(Console.ReadLine());
                if (k <= 0)
                    Console.Write("Wrong input, ");  
            }
            while (k < 0);

Не по теме:

Вообще, лучше в специализированном разделе спрашивать, здесь как-то по c++ больше)

NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
14.11.2012, 22:49  [ТС]     Подобрать к заданному числу ранвую или близкую по значению переменную #12
очень познавательно, я даже не знал)
Но вот меня больше интересовал момент где после скажем 3-4 неправильных вводов програма сама вставит рандом число от 1 до скажем максимального указаного в масиве из 8 чисел.
Я вообще ничего подобного не встречал( я о месте с 3-4 неправильными вводами).
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
14.11.2012, 23:59     Подобрать к заданному числу ранвую или близкую по значению переменную #13
Ну, можно же по извращаться над переменными и т.д.:
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
static void Main(string[] args)
        {
            Int64 k=0;
            int i = 0;
            while (k<=0)
            {
                Console.Write("Input k: ");
                k = Convert.ToInt64(Console.ReadLine());
                if (k <= 0)
                {
                    if (i == 3)
                    {
                        Random t = new Random();
                        k = t.Next(1, 100000000);
                        Console.Write("New value of k: ");
                        Console.Write(k);
                        break;
                    }
                    Console.Write("Wrong input, ");
                    i++;
                }
           }
      
            Console.ReadKey();
        }
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
15.11.2012, 01:15  [ТС]     Подобрать к заданному числу ранвую или близкую по значению переменную #14
Смотри вот полностю код получился у меня вроди все работает на отлично но проблемка у меня опять начало выбивать отрицательные числа в ответ, где ошибка?
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
class Program
{
    static void Main(string[] args)
    {
        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
        {
            Console.Write("Zadejte cislo: ");
            k = Convert.ToInt64(Console.ReadLine());
            if (k <= 0)
               
                    if (r == 3)
                    {
                        Random t = new Random();
                        k = t.Next(1, 100000000);
                        Console.Write("New value of k: ");
                        Console.Write(k);
                        break;
                    }
                    Console.Write("Wrong input, ");
                    r++;
        }
        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;
            }
        Console.WriteLine("Nejblizsi dokonale cislo - " + a[j]);
        Console.ReadKey();
 
 
    }
}
Добавлено через 5 минут
Причем выдает вообще только отрицательные числа(что то я испортил...
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
15.11.2012, 01:17     Подобрать к заданному числу ранвую или близкую по значению переменную #15
По-моему это не число отрицательное, а в коде тире стоит:
Console.WriteLine("Nejblizsi dokonale cislo - " + a[j]);
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
15.11.2012, 01:22  [ТС]     Подобрать к заданному числу ранвую или близкую по значению переменную #16
ой я дурачек случайно поставил)
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
19.11.2012, 14:55  [ТС]     Подобрать к заданному числу ранвую или близкую по значению переменную #17
А есть какое то исключение что бы не вписали текст вместо чисел?
Или проверка какаято на дроби и не целые числа?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
19.11.2012, 15:17     Подобрать к заданному числу ранвую или близкую по значению переменную #18
NosferatuMax, есть наверно, спросите тут.
NosferatuMax
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 61
21.11.2012, 14:21  [ТС]     Подобрать к заданному числу ранвую или близкую по значению переменную #19
Это исключение FormatException
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2012, 23:15     Подобрать к заданному числу ранвую или близкую по значению переменную
Еще ссылки по теме:

C++ Создание объектов в цикле по заданному числу
C++ Ввычислить вектор по заданной матрице и заданному числу
Шаблон поиска элементов по заданному значению C++

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

Или воспользуйтесь поиском по форуму:
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);
 
                }
 
 
            }
 
        }
    }
}
Yandex
Объявления
26.11.2012, 23:15     Подобрать к заданному числу ранвую или близкую по значению переменную
Ответ Создать тему
Опции темы

Текущее время: 03:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru