2010-01-27 2 views
2

Я пробовал это как в FSI, так и VS2010. Оба дают тот же результат.очень простой цикл в F #

for i= 8 to 10 do 
    for j=7 to 10 do 
    let product=i*j 
    printfn "%d * %o = %x" i j product 

и выход:

8*7=38 
8*10=40 
8*11=48 
8*12=50 
9*7=3f 
9*10=48 
9*11=51 
9*12=5a 
10*7=46 
10*10=50 
10*11=5a 
10*12=64 
val it : unit =() 

Я-то здесь отсутствует?

Я пытаюсь научиться программированию (с F #, потому что я любил его) с онлайн-учебниками.

+0

Там некоторые отличные онлайн-книги о том, как научиться программировать. Я бы нашел и прочитал их вместо того, чтобы учиться программировать через «учебники». Учебники не научат вас программировать, хотя они, как правило, полезны для советов и трюков. К сожалению, я не думаю, что вы найдете много хороших учебных ресурсов, которые используют F #, поскольку это новый язык. Однако вы можете посмотреть на книги Схемы, которые есть там. –

+0

Книга схем, о которой я думаю: http://mitpress.mit.edu/SICP/ и http://www.htdp.org/2003-09-26/Book/ - Я предлагаю это не потому, что я подумайте, что Scheme - идеальный язык преподавания (хотя некоторые люди действительно так думают), но поскольку эти известные книги для изучения доступны онлайн бесплатно. –

+0

Спасибо за внимание. Я изучаю это. – mehmetselim

ответ

5

Да. Вы что-то упускаете. 10 (десятичный) * 10 (восьмеричный) = 50 (шестнадцатеричный). % d означает десятичное число,% o означает восьмеричное значение, а% x означает hexidecimal. Если вы не знаете, что это такое, google их.

Ниже приведены все те же утверждения.

В десятичном:

10 * 8 = 80.

в восьмеричном:

12 * 10 = 120

в шестнадцатеричном:

а * 8 = 50.

Пожалуйста, внимательно посмотрите на что-то, прежде чем копировать его.

+8

Был ли последний комментарий действительно нужен? –

5

Угадайте, что это строка форматирования printfn. Просто попробуйте %i.

for i = 8 to 10 do 
    for j = 7 to 10 do 
     let product=i*j 
     printfn "%i * %i = %i" i j product 
+0

спасибо. Надеюсь, что люди не возражают против таких простых вопросов! – mehmetselim

+0

Этот последний идентификатор должен быть '% i', а не' i% ' –

+0

@Richard Szalay: Yep – Dario

12

Выход кажется правильным для меня, так как вы форматируете вывод i, j и product в десятичной системе счисления (%d), восьмеричной (%o) и шестигранные (%x), соответственно.

Номера 7, 8, 9 и 10 отформатированы как 7, 10, 11 и 12, потому что это их восьмеричное представление. Измените их все на %d или %i, чтобы устранить проблему.

0

Обратите внимание, что документы на спецификаторов формата PRINTF здесь

http://msdn.microsoft.com/en-us/library/ee370560(VS.100).aspx

(хотя на сегодняшний день, форматирование документа немного перепутались, что делает его трудно читать)

Смежные вопросы