Форум программистов, компьютерный форум, киберфорум
Objective-C
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для dollar8
13 / 13 / 0
Регистрация: 25.09.2011
Сообщений: 84

Разминка (логическая задачка)

26.02.2013, 17:30. Показов 2056. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как узнать наименьшими усилиями после какого порядкя отличаются два числа.

Т,е например. есть число 2222 и число 2230 (правильные ответ здесь 1)
или 222 и 2230 (здесь уже правильный ответ 3)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2013, 17:30
Ответы с готовыми решениями:

Логическая задачка
Всем привет. Решил ради интереса написать пасьянс, да вот заглох, не успев начать:) Вот код: <!DOCTYPE HTML PUBLIC...

Логическая задачка
Здравствуйте. Помогите решить задачку. Имеется 100 рублей. Стоимость курицы 1,5 рубля, овечки 2 руб. , бычка 5 руб. Вопрос: сколько...

Логическая задачка с объектами
Всем привет. Сразу к делу.. Пытаюсь написать что-то типа поиск по объектам с параметрами. Дано: var obj = Хочу в этом...

13
 Аватар для zulkis
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
26.02.2013, 17:45
А почему во 2м примере - ответ 3, а не 0?
Да и первый пример... почему ответ 1 а не 0 опять же?
0
 Аватар для dollar8
13 / 13 / 0
Регистрация: 25.09.2011
Сообщений: 84
26.02.2013, 18:39  [ТС]
Цитата Сообщение от zulkis Посмотреть сообщение
А почему во 2м примере - ответ 3, а не 0?
Да и первый пример... почему ответ 1 а не 0 опять же?
есть число 2222 и число 2230 (правильные ответ здесь 1)

--т.е. берем старшие порядки и сравниваем.
2 и 2 --равно (они после 3го порядка)
2 и 2 -- равно (они после 2го порядка)
2 и 3 -- неравно после первого порядка (1), т.е идут числа 2 и 3, а они разные.

или 222 и 2230 (здесь уже правильный ответ 3)
сравниваем со старших порядков:
0 и 2 -- неравно после 3го порядка.ответ 3.

как то наверное сложно сформулировал задачу. ))

(т.е. мне надо знать когда начинает меняться цифра при сравнении двух чисел, если так грубо говорить)
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
26.02.2013, 19:07
Цитата Сообщение от dollar8 Посмотреть сообщение
есть число 2222 и число 2230 (правильные ответ здесь 1)

<Расчеты>

0 и 2 -- неравно после 3го порядка.ответ 3.
Чего-то я в этой жизни не понимаю...
0
 Аватар для dollar8
13 / 13 / 0
Регистрация: 25.09.2011
Сообщений: 84
26.02.2013, 19:18  [ТС]
Цитата Сообщение от mobidevelop Посмотреть сообщение
Чего-то я в этой жизни не понимаю...
ТАК это два разный частных случая, которые я привел в виде пример.

вот еще.
22 и 32 (ответ 1)
222 и 232(ответ 1)
2222 и 2232 (ответ 1)

2222 и 2322 (ответ 2)
2222 и 3222 (ответ 3)
2222 и 222 (ответ 3)

вроде на примерах более понятно.
0
 Аватар для zulkis
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
26.02.2013, 20:17
mobidevelop, полностью разделяю точку зрения.
Это кошмар товарищи xD
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
26.02.2013, 20:34
То ли леший нынче рьян,
То ли воздух нынче пьян,
То ли в ухе приключился
У меня какой изъян.
То ли логика своеобразная какая-то...
Одно ясно. НАСТОЛЬКО логические задачки мне не под силу

dollar8, перечитайте собственные посты.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
26.02.2013, 21:03
А я все понял (хотя и не с первого раза) =) Достаточно поставить чила друг под другом и пронумеровать порядки (а сравнивать нужно от большего порядка к меньшему — этого нет в условии):

порядок:3210
    
a1 =2222
b1 =2230
r1 =TTF 
    
a2 =0222
b2 =2230
r2 =F   
1
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
26.02.2013, 21:09
korvin_, я сначала тоже так понял. Но ТС разрушил мои догадки. Да и мозг заодно.
Цитата Сообщение от dollar8 Посмотреть сообщение
222 и 232(ответ 1)
2222 и 2232 (ответ 1)
Цитата Сообщение от dollar8 Посмотреть сообщение
2222 и 3222 (ответ 3)
2222 и 222 (ответ 3)
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
26.02.2013, 21:19
mobidevelop, ну так все логично тут
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
26.02.2013, 21:46
sandye51, да ладно? Да как так? Да как работает-то? Или мне таки выспаться надо?
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
26.02.2013, 21:46
-1 если числа равны
Objective-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
//
//  main.m
//  TestObj-C
//
//  Created by Ilya Lavrenov on 2/25/13.
//  Copyright (c) 2013 Ilya Lavrenov. All rights reserved.
//
 
#import <Foundation/Foundation.h>
 
@interface NumberComparator : NSObject
 
@property (assign, nonatomic, readwrite) NSUInteger firstValue;
@property (assign, nonatomic, readwrite) NSUInteger secondValue;
 
- (id)initWithFirstValue:(NSUInteger)firstArg andSecond:(NSUInteger)secondArg;
+ (id)comparatorWithFirstValue:(NSUInteger)firstArg andSecond:(NSUInteger)secondArg;
 
- (NSInteger)returnPosition;
 
@end
 
@implementation NumberComparator
 
@synthesize firstValue = _firstValue;
@synthesize secondValue = _secondValue;
 
- (id)initWithFirstValue:(NSUInteger)firstArg andSecond:(NSUInteger)secondArg
{
    self = [super init];
    if (self != nil)
    {
        [self setFirstValue:firstArg];
        [self setSecondValue:secondArg];
    }
    return self;
}
 
+ (id)comparatorWithFirstValue:(NSUInteger)firstArg andSecond:(NSUInteger)secondArg
{
    return [[[NumberComparator alloc] initWithFirstValue:firstArg andSecond:secondArg] autorelease];
}
 
- (NSInteger)returnPosition
{
    NSString *firstStringRepr = [NSString stringWithFormat:@"%li", [self firstValue]];
    NSString *secondStringRepr = [NSString stringWithFormat:@"%li", [self secondValue]];
    NSUInteger firstDigits = [firstStringRepr length], secondDigits = [secondStringRepr length];
    NSInteger maxDigits = (firstDigits > secondDigits ? firstDigits : secondDigits) - 1;
    
    if (firstDigits != secondDigits)
        return maxDigits;
    
    NSInteger i = 0;
    BOOL lastComp = [firstStringRepr characterAtIndex:i] == [secondStringRepr characterAtIndex:i];
    while (lastComp && i < maxDigits)
    {
        ++i;
        lastComp = [firstStringRepr characterAtIndex:i] == [secondStringRepr characterAtIndex:i];
    }
    
    return maxDigits - i - (lastComp ? 1 : 0);
}
 
@end
 
int main(int argc, const char * argv[])
{
    @autoreleasepool
    {
        NumberComparator *comparator = [NumberComparator comparatorWithFirstValue:1135 andSecond:2135];
        NSLog(@"%li", [comparator returnPosition]);
    }
    
    return 0;
}
1
 Аватар для dollar8
13 / 13 / 0
Регистрация: 25.09.2011
Сообщений: 84
27.02.2013, 09:27  [ТС]
Цитата Сообщение от sandye51 Посмотреть сообщение
-1 если числа равны
Objective-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
//
//  main.m
//  TestObj-C
//
//  Created by Ilya Lavrenov on 2/25/13.
//  Copyright (c) 2013 Ilya Lavrenov. All rights reserved.
//
 
#import <Foundation/Foundation.h>
 
@interface NumberComparator : NSObject
 
@property (assign, nonatomic, readwrite) NSUInteger firstValue;
@property (assign, nonatomic, readwrite) NSUInteger secondValue;
 
- (id)initWithFirstValue:(NSUInteger)firstArg andSecond:(NSUInteger)secondArg;
+ (id)comparatorWithFirstValue:(NSUInteger)firstArg andSecond:(NSUInteger)secondArg;
 
- (NSInteger)returnPosition;
 
@end
 
@implementation NumberComparator
 
@synthesize firstValue = _firstValue;
@synthesize secondValue = _secondValue;
 
- (id)initWithFirstValue:(NSUInteger)firstArg andSecond:(NSUInteger)secondArg
{
    self = [super init];
    if (self != nil)
    {
        [self setFirstValue:firstArg];
        [self setSecondValue:secondArg];
    }
    return self;
}
 
+ (id)comparatorWithFirstValue:(NSUInteger)firstArg andSecond:(NSUInteger)secondArg
{
    return [[[NumberComparator alloc] initWithFirstValue:firstArg andSecond:secondArg] autorelease];
}
 
- (NSInteger)returnPosition
{
    NSString *firstStringRepr = [NSString stringWithFormat:@"%li", [self firstValue]];
    NSString *secondStringRepr = [NSString stringWithFormat:@"%li", [self secondValue]];
    NSUInteger firstDigits = [firstStringRepr length], secondDigits = [secondStringRepr length];
    NSInteger maxDigits = (firstDigits > secondDigits ? firstDigits : secondDigits) - 1;
    
    if (firstDigits != secondDigits)
        return maxDigits;
    
    NSInteger i = 0;
    BOOL lastComp = [firstStringRepr characterAtIndex:i] == [secondStringRepr characterAtIndex:i];
    while (lastComp && i < maxDigits)
    {
        ++i;
        lastComp = [firstStringRepr characterAtIndex:i] == [secondStringRepr characterAtIndex:i];
    }
    
    return maxDigits - i - (lastComp ? 1 : 0);
}
 
@end
 
int main(int argc, const char * argv[])
{
    @autoreleasepool
    {
        NumberComparator *comparator = [NumberComparator comparatorWithFirstValue:1135 andSecond:2135];
        NSLog(@"%li", [comparator returnPosition]);
    }
    
    return 0;
}
Cупер!!! завтра запущу в проекте, но по коду--супер.
Просто я не очень хотел влазить в стринги да и вообще в объекты.
Плюс теперь надо чтобы эта задачка и для дабл чисел работала. т.е. порядок может уходить в минус, если расхождение будет после запятой.
sandye51, спасибо еще раз. с даблами я уже сам доделаю.

Добавлено через 3 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
А я все понял (хотя и не с первого раза) =) Достаточно поставить чила друг под другом и пронумеровать порядки (а сравнивать нужно от большего порядка к меньшему — этого нет в условии):

порядок:3210
    
a1 =2222
b1 =2230
r1 =TTF 
    
a2 =0222
b2 =2230
r2 =F   
да не сказал, что от большего порядка к меньшему (но это вполне логично из задачки).

Так вот как поставить числа друг под другом -- в этом и проблемка то. (Т.е можноооо как-то через стринги, но хочется это сделать просто и изящно).

Добавлено через 3 минуты
mobidevelop,
zulkis, Завтра изложу вообще цель данной задачки. просто я ее упростил до данного частного случая. Строю оси графика и на нем градацию. нарисую картинку завтра.

Добавлено через 8 часов 5 минут
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
27.02.2013, 11:50
Чисто C без строк и объектов:

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
#include <stdio.h>
 
int pow(int base, int power)
{
   int result = 1;
   while (power > 0) {
      result *= base;
      --power;
   }
   return result;
}
 
int len(int num)
{
   int result = 0;
   while (num) {
      num /= 10;
      ++result;
   }
   return result;
}
 
int compare(int x, int y)
{
   int lx = len(x);
   int ly = len(y);
   
   if (lx > ly) return lx - 1;
   if (lx < ly) return ly - 1;
   
   int r = lx - 1;
   int q = pow(10, r);
   int dx, dy;
   while (r) {
      dx = x / q;
      dy = y / q;
      if (dx != dy) break;
      
      x %= q;
      y %= q;
      q /= 10;
      --r;
   }
   return r;
}
 
int main()
{
   printf("%d\n", compare(2222, 2230));
   printf("%d\n", compare( 222, 2230));
   printf("%d\n", compare(2222, 3222));
   printf("%d\n", compare(2222,  222));
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2013, 11:50
Помогаю со студенческими работами здесь

логическая задачка на пролог-д
Задачка: Пришла весна. Четверо друзей – Костя, Вадим, Слава и Марат – влюбились в девушек (в различных!) и решили, что каждый подарит...

Логическая задачка для дошкольников :3
Здравствуйте ,задание формулируется так : Антон и Максим носят фамилии Шилов и Гвоздев. Какую фамилию носит каждый из них, если Максим с...

Логическая задачка из ЕГЭ по информатике
Приветствую всех! Сдавал я как то ЕГЭ по информатике и в целом ничего так, но вот логическая задачка меня вогнала в ступор. Точное ее...

Логическая задачка про гирьки!
Алеша, Витя и Игорь после уроков нашли на полу в кабинете физики маленькую гирьку. Каждый из них, рассматривая находку, высказал два...

SWI Prolog: Назвать фамилии слесаря, токаря и сварщика
На заводе работали три друга: слесарь, токарь и сварщик. Их фамилии Борисов, Иванов и Семенов. У слесаря нет ни братьев, ни сестер. Он...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru