Премини към съдържанието
15 години Kaldata.com – време е да почерпим! Прочети още... ×

Препоръчан отговор


Здравейте!

От скоро уча Pascal.Та въпроса ми е защо на "WriteLn" след "Lice" след "s" се пише "5:2" нещо не мога да разбера от кода.За какво е 5 и 2 ?

  • [*]
program circle;
const
p=3.1416;
var
r,s:real;
begin
Write('Vavedete Radiusa na kraga');
readln®;
s:=p*r*r;
writeln('Lice',s:5:2);
readln
end.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

 

Здравейте!

От скоро уча Pascal.Та въпроса ми е защо на "WriteLn" след "Lice" след "s" се пише "5:2" нещо не мога да разбера от кода.За какво е 5 и 2 ?

[*]

program circle;
const
p=3.1416;
var
r,s:real;
begin
Write('Vavedete Radiusa na kraga');
readln®;
s:=p*r*r;
writeln('Lice',s:5:2);
readln
end.

 

Хубаво учите паскал, но защо темата е в раздел С/С++?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Хубаво учите паскал, но защо темата е в раздел С/С++?

Еми защото не намерих раздел Pascal.Миналият път пуснах темата в този раздел.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

 

Здравейте!

От скоро уча Pascal.Та въпроса ми е защо на "WriteLn" след "Lice" след "s" се пише "5:2" нещо не мога да разбера от кода.За какво е 5 и 2 ?

[*]

program circle;
const
p=3.1416;
var
r,s:real;
begin
Write('Vavedete Radiusa na kraga');
readln®;
s:=p*r*r;
writeln('Lice',s:5:2);
readln
end.

 

Без да съм писал на паскал за мен това означава 5 цифри, от тях две след десетичната точка

П.П. но може да е 5 цифри вляво от точката, точка, 2 след точката :)

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Не мога да разбера ако е така както ти казваш няма смисъл или нещо аз не разбирам.


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Не мога да разбера ако е така както ти казваш няма смисъл или нещо аз не разбирам.

това се нарича форматна спецификация, показва в какъв формат трябва да се отпечата променливата

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Може ли линк с по-подробно обяснение.Кои са форматите?

П.П намерих една лекция след като я прочета ако нещо не съм разбрал ще питам.Мерси за бързия отговор!

Редактирано от Гено Митев (преглед на промените)
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Охх боже, какво толкова не можеш да разбереш - когато е написано S:5:2 (по-често е 4:2) означава,че ако лицето е 12345,то ще ти го изпише така : 12,345(при 4:2 - 12,34). Тоест първата цифра задава от колко полета да е резултата,а втората - след кое поле да е десетичната запетая.

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Охх боже, какво толкова не можеш да разбереш - когато е написано S:5:2 (по-често е 4:2) означава,че ако лицето е 12345,то ще ти го изпише така : 12,345(при 4:2 - 12,34). Тоест първата цифра задава от колко полета да е резултата,а втората - след кое поле да е десетичната запетая.

Не е точно. Ако отговора е 12345.6789 при спецификация 5.2 ще отпечата 12345.67 (ако 5 е броя на цифрите преди запетаята) АКо 5 означава общия брой на цифрите ще отпечата 45.67 или ще даде грешка

  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Не е точно. Ако отговора е 12345.6789 при спецификация 5.2 ще отпечата 12345.67 (ако 5 е броя на цифрите преди запетаята) АКо 5 означава общия брой на цифрите ще отпечата 45.67 или ще даде грешка

5 в 5:2 означава че общия брой на позициите заемащо числото е 5 ако е по-малко го допълва с интервали, но ако е по-голямо не го режи.

 

3.1415 ще изкара " 3.14"

12345.6789 ще изкара "12345.68"

Редактирано от ined (преглед на промените)
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

5 в 5:2 означава че общия брой на позициите заемащо числото е 5 ако е по-малко го допълва с интервали, но ако е по-голямо не го режи.

 

3.1415 ще изкара " 3.14"

12345.6789 ще изкара "12345.68"

Възможно е, както казах не съм писал на паскал. Но ако езика не спазва форматните си спецификации това говори много лошо за неговата стриктност :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Възможно е, както казах не съм писал на паскал. Но ако езика не спазва форматните си спецификации това говори много лошо за неговата стриктност :)

Нещата са по-сложни - няма нищо общо със стриктността а с по-пригледното извеждане на данните. Форматиране от рода на 10:2 обикновенно се ползва за подреждане по колони, а форматиране от рода на 2:2 задава само цифрите на дробната част без да пипа цялата част на числото.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Нещата са по-сложни - няма нищо общо със стриктността а с по-пригледното извеждане на данните. Форматиране от рода на 10:2 обикновенно се ползва за подреждане по колони, а форматиране от рода на 2:2 задава само цифрите на дробната част без да пипа цялата част на числото.

Именно. Аз съм заделил примерно 12 позиции и искам числото да се събере в тях, а не да ми се печата даже и ако не се събира. За тази цел си има изключения, които си се обработват :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Именно. Аз съм заделил примерно 12 позиции и искам числото да се събере в тях, а не да ми се печата даже и ако не се събира. За тази цел си има изключения, които си се обработват :)

Тука основната идея е да се ползва удобно. Това не е особеност на паскал, а на форматните спецификатори на всички езици, които ползват този формат.Моята логика( но предполагам, че не е далеч от истинската причина):Да отреже - много лошо решение, като махаш цифри след запетаята стойността на числото не се променя забележимо - т.е. закръгля се. Обаче ако махнеш цифри от цялата част (не да ги замениш с нули) стойността се променя с порядъци.Да върне грешка - пак лошо решение. Означава да се вкарат изключения  или трябва навсякъде където печаташ да проверяваш за грешка - което би ти усложнило много кода или трябва да има отделна функция за печатане на форматиран низ - пак сложно. И също не много смислено, защото идеята да връщаш грешка, е да я обработиш и оправиш по някакъв начин. Както спомена ined, като ползваш така форматния спецификатор, ти искаш да си подредиш изхода. Едно, че непременно трябва да си предвидиш предварително бройките позиции преди старта на целия печат, а освен това, като ти изкара повечко и веднага ще ти се накриви и ще го хванеш - нещо което би се скрило ако режеше примерно. Тоест върнатата грешка в този момент няма да ти помогне да преформатираш вече изпечатаното. Грешки, които не са фатални и не могат да се оправят рънтайм, най-много да ги логнеш... Е какъв по-добър лог от накривен принт :DП.П. В добавка към аргумента ми за удобство - забележи, колко компромиси има в самите функции за форматиран печат и то е еквивалентно във маса езици. Неопределен брой параметри, почти всичките от неопределен тип - това си плаче за бъгчета. Обаче е прието и преглътнато, защото работи. Редактирано от flare (преглед на промените)
  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Тука основната идея е да се ползва удобно. Това не е особеност на паскал, а на форматните спецификатори на всички езици, които ползват този формат.Моята логика( но предполагам, че не е далеч от истинската причина):Да отреже - много лошо решение, като махаш цифри след запетаята стойността на числото не се променя забележимо - т.е. закръгля се. Обаче ако махнеш цифри от цялата част (не да ги замениш с нули) стойността се променя с порядъци.Да върне грешка - пак лошо решение. Означава да се вкарат изключения  или трябва навсякъде където печаташ да проверяваш за грешка - което би ти усложнило много кода или трябва да има отделна функция за печатане на форматиран низ - пак сложно. И също не много смислено, защото идеята да връщаш грешка, е да я обработиш и оправиш по някакъв начин. Както спомена ined, като ползваш така форматния спецификатор, ти искаш да си подредиш изхода. Едно, че непременно трябва да си предвидиш предварително бройките позиции преди старта на целия печат, а освен това, като ти изкара повечко и веднага ще ти се накриви и ще го хванеш - нещо което би се скрило ако режеше примерно. Тоест върнатата грешка в този момент няма да ти помогне да преформатираш вече изпечатаното. Грешки, които не са фатални и не могат да се оправят рънтайм, най-много да ги логнеш... Е какъв по-добър лог от накривен принт :DП.П. В добавка към аргумента ми за удобство - забележи, колко компромиси има в самите функции за форматиран печат и то е еквивалентно във маса езици. Неопределен брой параметри, почти всичките от неопределен тип - това си плаче за бъгчета. Обаче е прието и преглътнато, защото работи.

Хубаво де, удобно. Ама не е стриктно. Баси, тези хора защо не са взели пример от фортрана :)

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Хубаво де, удобно. Ама не е стриктно. Баси, тези хора защо не са взели пример от фортрана :)

Може би, защото това е правилното решение. Горе обясних, защо това не може да го обработиш смислено.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Може би, защото това е правилното решение. Горе обясних, защо това не може да го обработиш смислено.

Недей така, винаги има начин да провериш за препълване. И можеш да го направиш рънтайм и да замениш печата с хххх вместо да разваляш форматирането, преди доста години съм писал подобни библиотеки :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Недей така, винаги има начин да провериш за препълване. И можеш да го направиш рънтайм и да замениш печата с хххх вместо да разваляш форматирането, преди доста години съм писал подобни библиотеки :)

[*]Ако ще проверяваш за препълване, защо ще го правиш след като печатането ти е върнало грешка, а не преди това, където е правилното място???

[*]Защо ще печаташ безсмислена информация, вместо правилна, макар и накриво?

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

 

[*]Ако ще проверяваш за препълване, защо ще го правиш след като печатането ти е върнало грешка, а не преди това, където е правилното място???

[*]Защо ще печаташ безсмислена информация, вместо правилна, макар и накриво?

 

Не, проверката ще я правя в библиотеката за печатане :)

Хе, зависи, аз предпочитам да имам нещата на местата им, а не разместено

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Не, проверката ще я правя в библиотеката за печатане :)

Добре, но там не можеш да направиш нищо за да оправиш нещата защото:

Хе, зависи, аз предпочитам да имам нещата на местата им, а не разместено

...резултатът не е по-добър. И в двата случая работата не е свършена изцяло. а кой частичен резултат е по-малкото зло е въпрос на конкретен случай. Примерно, ако принтиш дебъг логове на проблем който се случва веднъж седмично, няма да искаш да има хххх-ове там, където ти е ключа за палатката :) Редактирано от flare (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Добре, но там не можеш да направиш нищо за да оправиш нещата защото:...резултатът не е по-добър. И в двата случая работата не е свършена изцяло. а кой частичен резултат е по-малкото зло е въпрос на конкретен случай. Примерно, ако принтиш дебъг логове на проблем който се случва веднъж седмично, няма да искаш да има хххх-ове там, където ти е ключа за палатката :)

Напротив, мога да отпечатам в лога какво точно съм маскирал и/или защо :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Напротив, мога да отпечатам в лога какво точно съм маскирал и/или защо :)

:P Ще ти защитя позицията си като пием бира следващия път, че тука оспамихме света :)
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

:P Ще ти защитя позицията си като пием бира следващия път, че тука оспамихме света :)

Дадено, ама аз по-другата седмица летя, така че ще стане през март. А иначе и двете позиции имат разумна гледна точка :)

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.