555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
||||||
1 | ||||||
Переменная не может принять размер int6412.02.2015, 12:48. Показов 2020. Ответов 21
Метки нет Все метки)
(
Рабочий код на D:
Код
open System let a = Console.ReadLine().Split() let mutable mv = 0L let mutable ans = 0L let mutable tmp = 0L let mutable temp = 0L let n = int64(a.[0]) - 1L let mutable i = n let f = while i >= 0L do if ((n &&& (1L <<< i)) = 0L) then temp <- 0L; else temp <- 1L; if (mv <> temp) then ans <- ans + ((1L <<< (i + 1L)) - 1L); mv <- mv ^^^ 1L mv <- mv ^^^ 1L ans <- ans + 1L i <- i - 1L printfn "%i" ans
1
|
|
12.02.2015, 12:48 | |
Ответы с готовыми решениями:
21
Определить максмальный размер, который может принимать переменная не может принять аргументы Слушающий сокет не может принять соединение Размер поля недостаточен, чтобы принять добавляемые данные |
Заблокирован
|
||||||
12.02.2015, 13:09 | 2 | |||||
![]() Решение
Dennis Ritchie, на D у вас тип не int64 для h...
Код
3 4 4 Для продолжения нажмите любую клавишу . . . Dennis Ritchie, и теперь ответ на ваш вопрос: и я бы немного переписал код: Код
open System let a = Console.ReadLine().Split() let n = int64(a.[1]) - 1L let h = int(a.[0]) - 1 let f (h:int) (n:int64)= let mutable i = h let mutable mv = 0L let mutable ans = 0L let mutable tmp = 0L let mutable temp = 0L while i >= 0 do if ((n &&& (1L <<< i)) = 0L) then temp <- 0L; else temp <- 1L; if (mv <> temp) then ans <- ans + ((1L <<< (i + 1)) - 1L); mv <- mv ^^^ 1L mv <- mv ^^^ 1L ans <- ans + 1L i <- i - 1 printfn "%i" ans f h n
1
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
|
12.02.2015, 13:09 [ТС] | 3 |
0
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
|
12.02.2015, 13:19 [ТС] | 5 |
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
12.02.2015, 13:24 | 7 |
0
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
|
12.02.2015, 13:31 [ТС] | 9 |
В книге не было про это написано:
![]() Ev_Hyper, да, это я и так знаю. Я не понимаю, что эти f h n три буквы делают. Они закрывают функции? Или что?
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
12.02.2015, 13:42 | 11 |
Dennis Ritchie, если Вам нужны ответы на вопросы, Вы получите их тут. Это замечательный учебник в котором рассматривается то что в названии книги. Пока что Вы накладываете всё новое на свои шаблоны. Рассматривается детально и понятно на специальном учебном языке Oz, который придумали для этого курса. Там Вы узнаете почему надо писать по другому. Ну и так, в довесок, в языке Oz одну переменную можно связать со значением только однажды и больше никогда (это я про мутабельность Ваших переменных). Следовательно придется ломать свои привычки и не задавать глупых вопросов.
Добавлено через 6 минут Ev_Hyper, получается (тоже вольный) биты, сдвинутые из старших позиций не перемещаются в младшие позиции, т.е. арифметический сдвиг.
1
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
|
12.02.2015, 13:49 [ТС] | 12 |
Ev_Hyper, я так и не понял. Откуда вообще функции вызываются? Или где прочитать про эту фишку?
Добавлено через 1 минуту Какие привычки? Императивные.
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
12.02.2015, 13:59 | 13 |
да, начните с того что все переменные (кстати у этого термина 2 значения) неизменны и вместо циклов используется рекурсия (компилятор сам ее переделает в цикл).
0
|
Заблокирован
|
|
12.02.2015, 14:05 | 14 |
Dennis Ritchie, что значит откуда? из программы:
http://ideone.com/CpljwK Или вы о том, что нету привычного main? Хорошая книга: Крис Смит "Программирование на языке F#"
0
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
|
12.02.2015, 14:10 [ТС] | 15 |
Я именно эту книгу и читал. Она уже устарела.
Да, я про это.
0
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
|
12.02.2015, 14:51 [ТС] | 17 |
Ev_Hyper, 4 года - это существенное время для ЯП.
Добавлено через 3 минуты Попробую объяснить по-другому. Чем отличается этот вариант программы: Код
open System let a = Console.ReadLine().Split() let n = int64(a.[1]) - 1L let h = int(a.[0]) - 1 let f (h:int) (n:int64)= let mutable i = h let mutable mv = 0L let mutable ans = 0L let mutable tmp = 0L let mutable temp = 0L while i >= 0 do if ((n &&& (1L <<< i)) = 0L) then temp <- 0L; else temp <- 1L; if (mv <> temp) then ans <- ans + ((1L <<< (i + 1)) - 1L); mv <- mv ^^^ 1L mv <- mv ^^^ 1L ans <- ans + 1L i <- i - 1 printfn "%i" ans f h n Код
open System let a = Console.ReadLine().Split() let n = int64(a.[1]) - 1L let h = int(a.[0]) - 1 let f (h:int) (n:int64)= let mutable i = h let mutable mv = 0L let mutable ans = 0L let mutable tmp = 0L let mutable temp = 0L while i >= 0 do if ((n &&& (1L <<< i)) = 0L) then temp <- 0L; else temp <- 1L; if (mv <> temp) then ans <- ans + ((1L <<< (i + 1)) - 1L); mv <- mv ^^^ 1L mv <- mv ^^^ 1L ans <- ans + 1L i <- i - 1 printfn "%i" ans
0
|
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
|
|
12.02.2015, 15:12 [ТС] | 19 |
Всё понял. Чего-то меня заклинило.
А чем эти две программы отличаются?
Код
open System let a = Console.ReadLine().Split() let n = int64(a.[1]) - 1L let mutable mv = 0L let mutable ans = 0L let mutable tmp = 0L let mutable temp = 0L let mutable i = int(a.[0]) - 1 let f = while i >= 0 do if ((n &&& (1L <<< i)) = 0L) then temp <- 0L; else temp <- 1L; if (mv <> temp) then ans <- ans + ((1L <<< (i + 1)) - 1L); mv <- mv ^^^ 1L mv <- mv ^^^ 1L ans <- ans + 1L i <- i - 1 printfn "%i" ans Код
open System let a = Console.ReadLine().Split() let n = int64(a.[1]) - 1L let mutable mv = 0L let mutable ans = 0L let mutable tmp = 0L let mutable temp = 0L let mutable i = int(a.[0]) - 1 let f = while i >= 0 do if ((n &&& (1L <<< i)) = 0L) then temp <- 0L; else temp <- 1L; if (mv <> temp) then ans <- ans + ((1L <<< (i + 1)) - 1L); mv <- mv ^^^ 1L mv <- mv ^^^ 1L ans <- ans + 1L i <- i - 1 printfn "%i" ans f
0
|
![]() 4452 / 2684 / 483
Регистрация: 28.04.2012
Сообщений: 8,539
|
|
12.02.2015, 16:54 | 20 |
0
|
12.02.2015, 16:54 | |
Помогаю со студенческими работами здесь
20
[ADO] Размер поля недостаточен, чтобы принять добавляемые данные
Ящик не может принять наследство по классам (размеры, вес и цвет) какой объём картинки (MMS) может принять NOKIA 5300? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |