Бизнесмен Василий после прочтения известной книги решил открыть новый бизнес – отгружать...

0 голосов
912 просмотров

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

Мобильный телефон Василия поддерживает только транслит, поэтому он передает сообщения вида "N bochek" . Например, "3 bochki" или "1 bochka"/ Напишите программу, которая выбирает правильное слово (из "bochka" , "bochek" , "bochki" ) в зависимости от N.


Информатика (56 баллов) | 912 просмотров
Дан 1 ответ
0 голосов

Program vasil ;
var n , m : integer ;
begin
  write ( 'vvedi chislo bochek N=' ) ;
  readln ( n ) ;
  m := n mod 10 ;
   
  if ( m = 1 and n <> 11 ) then writeln ( n , ' bochka' ) 
   else if (m <= 4 and n <> 12 and n <> 13 and n <> 14 and m <> 0) then writeln ( n , ' bochki' ) 
      else writeln ( n , ' bochek' ) ;
 end.  

Так, наверное. Если будет косяк, то пиши, или сам сообрази где ошибка. Сейчас нет под рукой компилятора, не могу оттестировать. 

(6.5k баллов)
0

я тут внёс несколько правок, смотри как сейчас

0

сейчас можешь скомпилировать прогу и испытать?

0

аааа, нет. Верно говоришь, при нуле будет неправльно. Ща поправлю

0

вот так, наверное. Добавил условие n <> 0. Ну, нужно протестировать в деле.

0

var n, m: integer ; begin write('N = '); readln(n); m := n mod 10; n := n mod 100 div 10; if (n = 1) then writeln(n, ' bochek') else if (m = 1) then writeln(n, ' bochka') else if (m <= 4) and (m > 0) then writeln(n, ' bochki') else writeln(n, ' bochek'); end.

0

вот так красивей всего будет, жаль переносы не делает

0

Покритикую. Здесь оператор mod 100 div 10 выделит десятки, и только эту одну цифру отправит в выдачу. Напри, для 25 бочек будет выдано 2 2 bochek.

0

Для n=125 будет тоже выдано 2 bochek. Не очень удачно.

0

завтыкала что эта цифра идет в ответ

0

begin var n := ReadInteger('n = '); var r1 := n mod 10; var r2 := n mod 100 div 10; if (r2 = 1) or (r1 = 0) then writeln(n, ' bochek') else if (r1 = 1) then writeln(n, ' bochka') else if (r1 <= 4) then writeln(n, ' bochki') else writeln(n, ' bochek'); end.