Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

Drive_Max

Задачка на вынос мозга(Pascal)

Рекомендованные сообщения

Препод приахуел

 

Короче решил над нами видно постебаться.

 

Задал такую задачку.

 

Написать прогу на Паскале

Суть проги: ты вводиш вещественное число от 1 до 1000(1 и тыща невклчаються) порядок дробности =2 тоесть после точки мб токо 2 символа (0.01-0.99)

 

Програма должна распознать число и вывести такую форму

 

допустим ты ввел 1.50

Ответ програмы: 1 рубль 50 копеек.

Должны быть учтены все падежи .тоесть вводиш ты допустим 20.23 то прога: 20 рублей 23 копейки.

вводиш 23.01 то 23 рубля 1 копейка итд

 

вобщем должен учитываться падеж чтобы небыло раковой ситуации допустим 11. прога: 11 рубль

 

Как нестарались всей группой (а унас информатики некогда не вшколе не ввузе небыло,вот токо щас курс ввели) готовы уже мозг солить на сало.

 

Сам чувствую что задача оч легкая..просто неимею базы материала так как вобще знаком с Паскалем 2 недели.

 

 

Хелпуем братцы.


 

My Demons

[media=]

[/media]

 

 

 

Who are you to change this world,silly boy?

[media=]

[/media]

 

 

Поделиться сообщением


Ссылка на сообщение

элементарно, Ватсон

не знаком с синтаксисом паскаля, поэтому помогу только с алгоритмом

 

1. Получаем строку с числом.

2. Пытаемся сделать из нее флоат, хз есть ли встроеные средства конвертеры для этого.

3. Если удачно, идем дальше. Если нет пишем, что юзер еблан и п.1

4. Разделяем строку с числом по точке. Если точки нет - второму значению присваиваем 0.

5. Имеем два числа - рубли и копейки. Проверяем числа - если первое больше 1к или отрицательное, а второе если больше 99 - пишем "толсто" и опять к п.1

6. Если первое число больше 99 - обрезаем все кроме двух последних символов.

 

Итак, мы имеем два двузначных числа. Пишем определятор под каждое из них. Типа если заканчивается на 1, но не 11, то "рубль" и т.д.

 

Удачи.

Поделиться сообщением


Ссылка на сообщение

Я сам лично дошел до того момента как именно предусмотрет ьвсе случаи.

 

унас есть до точки 999 чисел например 1 рубль 11 -20 будет рублей  31 рубль 41 рубль НО

 

2 3 4 рублЯ! 22 23 24 рублЯ

 

вот вчем блять ебучая засада надо предусматреть все варианты.. но сделать так чтобы незаписывать на каждое число 999 раз выходит

 

111 рублей так же.


 

My Demons

[media=]

[/media]

 

 

 

Who are you to change this world,silly boy?

[media=]

[/media]

 

 

Поделиться сообщением


Ссылка на сообщение

не знаю этот язык программирования, но алгоритм написать архилегко


Яму всегда лучше выкопать заранее. Потому что, сами понимаете, привезешь покойничка, начнешь яму копать, а это как минимум три часа посреди пустыни, набегут зрители, не успеешь оглянуться – нужны еще несколько ям.

 Anap!

Поделиться сообщением


Ссылка на сообщение

Делал такое на делфи 2 года назад.

Бля щас вобще всё подзабыл  :snobuedance: Но вроде там чё-то типо ты для отдельного промежутка такой подеж указываешь, не через for а через что-то другое непомню уже нечерта. Весь прикол что только писать много а так бональщина.

Поделиться сообщением


Ссылка на сообщение

что-то вроде

 

 

rub := trunc®;

 

kop := trunc(frac® * 100);

 

  if rub mod 100 in [10..19] then srub := 'рублей'

  else begin

    case rub mod 10 of

      0,5..9: srub := 'рублей';

      1: srub := 'рубль';

      2..4: srub := 'рубля';

    end;

  end;

 

if kop in [10..19] then skop := 'копеек'

  else begin

    case kop mod 10 of

      0,5..9: skop := 'копеек';

      1: skop := 'копейка';

      2..4: skop := 'копейки';

    end;

  end;

Поделиться сообщением


Ссылка на сообщение

что-то вроде

 

 

rub := trunc®;

 

kop := trunc(frac® * 100);

 

  if rub mod 100 in [10..19] then srub := 'рублей'

  else begin

    case rub mod 10 of

      0,5..9: srub := 'рублей';

      1: srub := 'рубль';

      2..4: srub := 'рубля';

    end;

  end;

 

if kop in [10..19] then skop := 'копеек'

  else begin

    case kop mod 10 of

      0,5..9: skop := 'копеек';

      1: skop := 'копейка';

      2..4: skop := 'копейки';

    end;

  end;

Элементарно ватсон!  :snobuedance:

Поделиться сообщением


Ссылка на сообщение

так правильно

Смотри, сотни не влияют на результат, мы работаем только с 0-99, в обоих случаях.

Ща сваяю кусок кода с комментариями, попробуй вникнуть, понять и превратить в паскаль.

 

Эдит: пока писал уже отпостили

Поделиться сообщением


Ссылка на сообщение

Я в шоке. Кто-то решил школьнику его домашнее задание.  :O_O:

Поделиться сообщением


Ссылка на сообщение

аналог проги на бэйсике для 0,00 до 999999,99, если захочешь - разберешься:

 

 

Public  Function Сумма_прописью(N As  Currency) As String

Dim S, SUM As String

S = Format(N, "000000.00")

SUM = ""

Select Case Mid(S, 1, 1)

Case "0":

Case "1": SUM = SUM + "сто "

.  .

Case "9": SUM = SUM + "девятьсот "

End Select

If Mid(S, 2, 1) > "1" _

Or _

Mid(S, 2, 1) = "0" Then

Select Case Mid(S, 2, 1)

Case "2": SUM = SUM + "двадцать "

.  .

Case "9": SUM = SUM + "девяносто "

End Select

Select Case Mid(S, 3, 1)

Case "1": SUM = SUM + "одна "

.  .

Case "9": SUM = SUM + "девять "

End Select

End If

If Mid(S, 2, 1) = "1" Then

Select Case Mid(S, 3, 1)

Case "0": SUM = SUM + "десять "

.  .

Case "9": SUM = SUM + "девятнадцать "

End Select

End If

If SUM <> "" Then

If Mid(S, 2, 1) = "1" Then

SUM = SUM + "тысяч "

Else

Select Case Mid(S, 3, 1)

Case "1": SUM = SUM + "тысяча "

Case "2", "3", "4": SUM = SUM + "тысячи "

Case Else: SUM = SUM + "тысяч "

End Select

End If

End If

Select Case Mid(S,  4, 1)

Case "0":

Case "1": SUM = SUM + "сто "

.  .

Case "9": SUM = SUM + "девятьсот "

End Select

If Mid(S, 5, 1)  > "1" _

Or _

Mid(S, 5, 1) =  "0" Then

Select Case Mid(S, 5, 1)

Case "2": SUM = SUM + "двадцать "

.  .

Case "9": SUM = SUM + "девяносто "

End Select

Select Case Mid(S, 6, 1)

Case "1": SUM = SUM + "один "

.  .

Case "9": SUM = SUM + "девять "

End Select

End If

If Mid(S, 5, 1) = "1" Then

Select Case Mid(S, 6, 1)

Case "0": SUM = SUM + "десять "

.  .

Case "9": SUM = SUM + "девятнадцать "

End Select

End If

SUM = SUM + " руб. " + Mid(S,  8, 2) + " коп."

Сумма_прописью = UCase(Left(SUM, 1)) + Right(SUM, Len(SUM)  - 1)

End Function

Более подробно найдешь в Хорев В.Д. "Самоучитель программирования VBA в Microsoft Office". Удачи!

Поделиться сообщением


Ссылка на сообщение

Задача c выбором падежей легко решается с помощью функции "остаток от деления". В паскале это mod. Собственно выше уже показали как это делается.

Поделиться сообщением


Ссылка на сообщение

что-то вроде

 

 

rub := trunc®;

 

kop := trunc(frac® * 100);

 

  if rub mod 100 in [10..19] then srub := 'рублей'

  else begin

    case rub mod 10 of

      0,5..9: srub := 'рублей';

      1: srub := 'рубль';

      2..4: srub := 'рубля';

    end;

  end;

 

if kop in [10..19] then skop := 'копеек'

  else begin

    case kop mod 10 of

      0,5..9: skop := 'копеек';

      1: skop := 'копейка';

      2..4: skop := 'копейки';

    end;

  end;

 

 

srub

skop

 

что такое s? эту букву нераспознает как функции или что это


 

My Demons

[media=]

[/media]

 

 

 

Who are you to change this world,silly boy?

[media=]

[/media]

 

 

Поделиться сообщением


Ссылка на сообщение

 

srub

skop

 

что такое s? эту букву нераспознает как функции или что это

переменные string  :ginsgnil:

Поделиться сообщением


Ссылка на сообщение
Гость

Будь быдлокодером, работай не с цифрами, а с символами в строках.  :lol:

Поделиться сообщением


Ссылка на сообщение

Basic :lol:


Никто в интернете не требует идеальной грамотности. Но когда ты ошибаешься в тся/ться ХОЧЕТСЯ ЗАСУНУТЬ ТЕБЕ БУРЕЛОМ В ТВОЁ ВАГИНАЛЬНОЕ ЖЕРЛО ХУЯРИТЬ ПО ЕБЛУ АРМАТУРИНОЙ ВЫКАЛЫВАТЬ ГЛАЗА ПИЛИТЬ РУКИ БЛЯТЬ БОЛГАРКОЙ НАЛИТЬ НА РЫЛО АДЖИКИ СПИРТА И БЕНЗИНА И БРОСИТЬ В КОСТЁР А ПОТОМ ПЕТЬ ПИОНЕРСКИЕ ПЕСНИ И ПОДКИДЫВАТЬ ТАКИХ ЖЕ УЁБКОВ КАК ТЫ ЕБАНОЕ ХУЙЛО КАЖДЫЙ ДЕНЬ НАТЫКАЕШЬСЯ НА НАДПИСЬ "МНЕ НРАВИТСЯ" А ПИШЕШЬ СВОИМ ЧЕТЫРЁХТОННЫМ ПОДРУЖКАМ ВАХ МНЕ НРАВИТЬСЯ ТВОЯ ФОТКА БЛЯТЬ УМРИТЕ ВЫ ВСЕ РАЗОМ ВЫ ЛИШЬ ЕБАНОЕ ТОПЛИВО ЩЕПКИ НИЗШЕЙ СТУПЕНЬКИ ЦИВИЛИЗАЦИИ ПОНОС СОЦИУМА ДЛЯ ЗЕМЛИ ПЛАНЕТА НЕ МОЖЕТ ДЕРЖАТЬ СТОЛЬКО ГОВНОЕДОВ В СЕБЕ

Поделиться сообщением


Ссылка на сообщение

Рас пошла такая тема Мб мне ща курсач нахуярят? :lol:


Которую я так ненавижу, которую я так люблю..

Поделиться сообщением


Ссылка на сообщение

Basic :nate:

где ты тут бэсик увидел, наркоман  :lol:


 

мне ответил Ange

<EH817x> hi stuipid retard

<EH817x> shoutout to ur sister and mom

<EH817x> i fucked them

<EH817x> ^_^

<EH817x> gj?

<MYM|Ange> gj

<MYM|Ange> ;)

 

 

а ещё у нави лого команды такого противного цвета как сакка какая то сразу думаешь что играют ебанные обосанцы :D

Разрешаю меня погнобить

Официально

Поделиться сообщением


Ссылка на сообщение

 

srub

skop

 

что такое s? эту букву нераспознает как функции или что это

переменные string  :subj:

 

Паскаль бро,Турбо Паскаль ,АБС Паскаль

 

не Дельфи не СиШарп  и не Басик


 

My Demons

[media=]

[/media]

 

 

 

Who are you to change this world,silly boy?

[media=]

[/media]

 

 

Поделиться сообщением


Ссылка на сообщение

Basic :dunno:

где ты тут бэсик увидел, наркоман  :subj:

Очки протри. :O_O:


Никто в интернете не требует идеальной грамотности. Но когда ты ошибаешься в тся/ться ХОЧЕТСЯ ЗАСУНУТЬ ТЕБЕ БУРЕЛОМ В ТВОЁ ВАГИНАЛЬНОЕ ЖЕРЛО ХУЯРИТЬ ПО ЕБЛУ АРМАТУРИНОЙ ВЫКАЛЫВАТЬ ГЛАЗА ПИЛИТЬ РУКИ БЛЯТЬ БОЛГАРКОЙ НАЛИТЬ НА РЫЛО АДЖИКИ СПИРТА И БЕНЗИНА И БРОСИТЬ В КОСТЁР А ПОТОМ ПЕТЬ ПИОНЕРСКИЕ ПЕСНИ И ПОДКИДЫВАТЬ ТАКИХ ЖЕ УЁБКОВ КАК ТЫ ЕБАНОЕ ХУЙЛО КАЖДЫЙ ДЕНЬ НАТЫКАЕШЬСЯ НА НАДПИСЬ "МНЕ НРАВИТСЯ" А ПИШЕШЬ СВОИМ ЧЕТЫРЁХТОННЫМ ПОДРУЖКАМ ВАХ МНЕ НРАВИТЬСЯ ТВОЯ ФОТКА БЛЯТЬ УМРИТЕ ВЫ ВСЕ РАЗОМ ВЫ ЛИШЬ ЕБАНОЕ ТОПЛИВО ЩЕПКИ НИЗШЕЙ СТУПЕНЬКИ ЦИВИЛИЗАЦИИ ПОНОС СОЦИУМА ДЛЯ ЗЕМЛИ ПЛАНЕТА НЕ МОЖЕТ ДЕРЖАТЬ СТОЛЬКО ГОВНОЕДОВ В СЕБЕ

Поделиться сообщением


Ссылка на сообщение

×
×
  • Создать...