PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программа не работает, обновите версию!
type
Монетка=(Орел,Решетка);
КорзинаЯблок = List;
function БросокМонетки:=Random(2)=1 ? Орел : Решетка;
function ЗаполнитьКорзину(d:char):КорзинаЯблок;
// считаем, что яблоко весит от 100 до 250 г,
// и что в корзину вмещается около 8 кг яблок.
begin
Result:=new КорзинаЯблок;
var ВесЯблок:=0;
while ВесЯблок<=8000 do begin<br> var Яблоко:=Random(100,250);
Result.Add(Яблоко);
ВесЯблок+=Яблоко
end;
if d='1' then begin
Write('Яблоки в корзине: ');
Result.Println
end;
end;
procedure ВзятьЯблоко(Корзина:КорзинаЯблок; var Яблоко:integer);
begin
if БросокМонетки=Орел then begin
Яблоко:=Корзина.Last;
Корзина.RemoveAt(Корзина.Count-1)
end
else begin
Яблоко:=Корзина.First;
Корзина.RemoveAt(0)
end
end;
procedure ЯблокоМальчику(Корзина,ЯблокиМальчика:КорзинаЯблок);
begin
var Яблоко:integer;
if Корзина.Count>0 then begin
ВзятьЯблоко(Корзина,Яблоко);
ЯблокиМальчика.Add(Яблоко)
end
end;
begin
Randomize;
var ЯблокиСерика:=new КорзинаЯблок;
var ЯблокиБерика:=new КорзинаЯблок;
var n:=ReadlnInteger('Собрано корзин:');
var d:=ReadlnChar('1 - отладочный вывод, иное - только результат:');
loop n do begin
var Корзина:=ЗаполнитьКорзину(d);
while Корзина.Count>0 do begin
ЯблокоМальчику(Корзина,ЯблокиСерика);
ЯблокоМальчику(Корзина,ЯблокиБерика);
end;
if d='1' then begin
Write('Яблоки Серика: ');
ЯблокиСерика.Print; Writeln(' Вес: ',ЯблокиСерика.Sum);
Write('Яблоки Берика: ');
ЯблокиБерика.Print; Writeln(' Вес: ',ЯблокиБерика.Sum)
end
end;
Writeln('Общий вес яблок Серика: ',ЯблокиСерика.Sum,
', общий вес яблок Берика: ',ЯблокиБерика.Sum)
end.
Пример без отладочной выдачи
Собрано корзин: 5
1 - отладочный вывод, иное - только результат: 0
Общий вес яблок Серика: 20399, общий вес яблок Берика: 19977
Пример с отладочной выдачей
Собрано корзин: 3
1 - отладочный вывод, иное - только результат: 1
Яблоки в корзине: 242 163 173 244 236 199 206 189 166 117 147 211 219 221 241 192 177 130 165 198 156 224 107 198 131 184 142 155 125 166 145 221 231 238 195 210 180 236 210 124 247 159 236
Яблоки Серика: 242 236 173 247 124 199 206 180 166 147 219 238 221 241 145 130 125 142 165 198 156 107 Вес: 4007
Яблоки Берика: 163 159 244 236 210 236 189 210 117 211 195 231 221 192 177 166 155 184 131 198 224 Вес: 4049
Яблоки в корзине: 132 176 119 177 154 204 123 158 217 196 245 235 181 183 237 104 107 127 194 185 158 147 203 221 129 202 137 148 205 148 154 246 211 156 143 154 213 199 227 158 168 113 174 106 102 103 123 105
Яблоки Серика: 242 236 173 247 124 199 206 180 166 147 219 238 221 241 145 130 125 142 165 198 156 107 105 132 102 176 113 177 154 227 123 158 196 245 181 237 154 156 211 246 185 158 203 148 202 205 Вес: 8201
Яблоки Берика: 163 159 244 236 210 236 189 210 117 211 195 231 221 192 177 166 155 184 131 198 224 123 103 106 174 119 168 158 204 199 217 213 235 183 104 143 107 127 194 154 147 221 129 137 148 Вес: 7862
Яблоки в корзине: 160 105 215 103 229 250 217 245 152 193 169 190 188 213 113 127 180 122 123 134 103 192 121 207 230 118 226 232 101 228 107 125 143 173 235 218 231 216 147 180 166 227 209 205 115 181
Яблоки Серика: 242 236 173 247 124 199 206 180 166 147 219 238 221 241 145 130 125 142 165 198 156 107 105 132 102 176 113 177 154 227 123 158 196 245 181 237 154 156 211 246 185 158 203 148 202 205 160 105 115 229 209 166 217 245 216 231 169 218 213 173 125 107 228 101 232 118 123 121 192 Вес: 12214
Яблоки Берика: 163 159 244 236 210 236 189 210 117 211 195 231 221 192 177 166 155 184 131 198 224 123 103 106 174 119 168 158 204 199 217 213 235 183 104 143 107 127 194 154 147 221 129 137 148 181 215 103 205 227 250 180 147 152 193 190 188 235 143 113 127 180 122 226 230 207 134 103 Вес: 11913
Общий вес яблок Серика: 12214, общий вес яблок Берика: 11913