Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
гзл
0 / 0 / 4
Регистрация: 20.03.2014
Сообщений: 221
#1

Определить количество ковриков, которые покроют весь пол - Free Pascal

02.11.2015, 12:40. Просмотров 305. Ответов 16
Метки нет (Все метки)

Незнайка решил покрыть пол в своей комнате,имеющий прямоугольную форму,квадратными ковриками по схеме. В магазине имеются коврики различных размеров. Требуется определить количество ковриков,которые покроют весь пол
полностью.(размеры комнаты вводятся с клавиатуры).

Определить количество ковриков, которые покроют весь пол
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2015, 12:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить количество ковриков, которые покроют весь пол (Free Pascal):

Дано натуральное число N. Определить количество цифр в цифровой записи данного числа, которые имеют наименьшее значение. Пример. N = 4548. Количество
помощи прошу) Дано натуральное число N. Определить количество цифр в...

Определить количество аттракционов, которые посетит Маричка
Помогите, пожалуйста решить ету задачу: Маричка говорила, что в субботу пойдет...

Определить количество элементов последовательности, которые заканчиваются на 3
Помогите пожалуйста, я чтото не соображу. Короче такая задача: Дано...

Определить в массиве количество чисел, которые начинаются с 1 или с 2
Прошу помогите, нужна программа до четверга. Вот задание: Дана...

Определить количество и номера элементов, которые больше своих соседей
Задана последовательность точек плоскости P1(x, y); P2(x, y); …..; Pn(x, y)....

В заданном тексте определить количество слов, которые заканчиваются на букву А
Помогите написать програму.. В заданном тексте определить количество слов,...

16
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,329
02.11.2015, 14:17 #2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Без деления
Pascal
1
2
3
4
5
6
7
k:=1;
while a<>b do
 begin
  if a>b then a:=a-b
  else b:=b-a;
  k:=k+1;
 end;
С делением
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
k:=0;
while a*b>0 do
 begin
  if a>b then
    begin
     k:=k+a div b;
     a:=a mod b;
    end
  else
   begin
    k:=k+b div a;
    b:=b mod a
   end;
 end;
0
гзл
0 / 0 / 4
Регистрация: 20.03.2014
Сообщений: 221
02.11.2015, 16:15  [ТС] #3
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
program vadim;
var a,b,k:real;
begin
writeln('введите размеры комнаты');
readln(a,b);
k:=1;
while a<>b do begin
  if a>b then a:=a-b
  else b:=b-a;
  k:=k+1;
  writeln('количество ковров ' , k);
  readln
 end;
 end.


Ответ всегда два,и на 1 больше следующее значение,разве так должно быть?
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,329
02.11.2015, 16:51 #4
Еще раз посмотрите как написано у меня и как у Вас.
0
гзл
0 / 0 / 4
Регистрация: 20.03.2014
Сообщений: 221
03.11.2015, 16:57  [ТС] #5
Посмотрел. У вас код написан,но так просто он работать не будет,я написал всю программу,но ответ первый всегда 2.

Добавлено через 9 минут
Все,извините,я нашел ошибку. Спасибо за помощь.

Добавлено через 22 часа 39 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Program vadim;
var a,b,k:integer;
begin
     writeln('введите длину');
     readln(a);
     writeln('введите ширину');
     readln(b);
     k:=1;
     while a<>b do begin
     if a>b then a:=a-b else b:=b-a;
     k:=k+1;
     writeln('колчество ковров', k);
     readln
     end;
     writeln('ведите длину');
     readln(a);
     writeln('введите ширину');
     readln(b);
     k:=0;
     while a*b>0 do begin
     if a>b then
     begin
     k:=k+a div b;
     a:=a mod b;
     end
     else 
     begin
     k:=k+b div a;
     b:=b mod a;
     end;
     end;
     writeln('количество ковров', k );
     readln
     end.

Без деления ответ всегда 2,где ошибка?
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,329
03.11.2015, 17:06 #6
Списать и то толку нет.
Pascal
1
2
3
4
5
6
7
8
k:=1;
while a<>b do
 begin
   if a>b then a:=a-b else b:=b-a;
   k:=k+1;
 end;
 writeln('количество ковров', k);
 readln
0
гзл
0 / 0 / 4
Регистрация: 20.03.2014
Сообщений: 221
03.11.2015, 20:20  [ТС] #7
Спасибо большое,я очень признателен.
0
гзл
0 / 0 / 4
Регистрация: 20.03.2014
Сообщений: 221
08.11.2015, 13:26  [ТС] #8
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
program vadim;
var a,b:longint;
k:integer;
begin
     writeln('метод незнайки');
     writeln('введите длину');
     readln(a);
     writeln('введите ширину');
     readln(b);
     k:=1;
     while a<>b do
     begin
     if a>b then a:=a-b else b:=b-a;
     k:=k+1;
     end;
     writeln('количество ковров', k );
     readln;
     writeln('метод знайки');
     writeln('введите длину');
     readln(a);
     writeln('введите ширину');
     readln(b);
     k:=0;
     while a*b>0 do
     begin
     if a>b then
     begin
     k:=k+a div b;
     a:=a mod b;
     end
     else
     begin
     k:=k+b div a;
     b:=b mod a;
     end;
     end;
     writeln('количество ковров', k);
     readln;
end.

помогите сделать,так чтобы при ввводе данных,выдавала ответ "Некорректные данные,повторите"
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,329
08.11.2015, 13:37 #9
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var s:string;
    a,b:longint;
    k:integer;
begin
repeat
writeln('введите длину');
readln(s);
val(s,a,k);
if (k<>0)or(a<=0) then writeln('Некорректные данные,повторите');
until (k=0)and(a>0);
repeat
writeln('введите ширину');
readln(s);
val(s,b,k);
if (k<>0)or(b<=0) then writeln('Некорректные данные,повторите');
until (k=0)and(b>0);
0
гзл
0 / 0 / 4
Регистрация: 20.03.2014
Сообщений: 221
08.11.2015, 20:58  [ТС] #10
А как это все в одну программу объединить?)
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,329
08.11.2015, 21:15 #11
Да молча, сначала написать 1 вариант, затем 2.
0
гзл
0 / 0 / 4
Регистрация: 20.03.2014
Сообщений: 221
08.11.2015, 21:54  [ТС] #12
Можете конечный итог скинуть?
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,329
09.11.2015, 07:21 #13
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
var s:string;
    a,b,a1,b1:longint;
    k:integer;
begin
repeat
writeln('введите длину');
readln(s);
val(s,a,k);
if (k<>0)or(a<=0) then writeln('Некорректные данные,повторите');
until (k=0)and(a>0);
repeat
writeln('введите ширину');
readln(s);
val(s,b,k);
if (k<>0)or(b<=0) then writeln('Некорректные данные,повторите');
until (k=0)and(b>0);
a1:=a;
b1:=b;
writeln('метод незнайки');
k:=1;
while a<>b do
 begin
  if a>b then a:=a-b else b:=b-a;
  k:=k+1;
 end;
writeln('количество ковров=',k);
writeln('метод знайки');
k:=0;
while a1*b1>0 do
 begin
  if a1>b1 then
    begin
     k:=k+a1 div b1;
     a1:=a1 mod b1;
    end
  else
   begin
    k:=k+b1 div a1;
    b1:=b1 mod a1
   end;
 end;
writeln('количество ковров=',k);
readln;
end.
0
гзл
0 / 0 / 4
Регистрация: 20.03.2014
Сообщений: 221
11.11.2015, 18:05  [ТС] #14
А можно и так

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
program vadim;
var a,b,a1,b1:longint;
k:integer;
begin
     writeln('введите длину(см)');
     readln(a);
     if (a>1500) or (a<100) then while (a>1500) or (a<100) do
     begin writeln  ('*некорректные данные');
     writeln('введите длину(см) еще раз');
     readln(a);
     end;
     writeln('введите ширину(см)');
     readln(b);
     if (b>1500) or (b<100) then while (b>1500) or (b<100) do
     begin writeln  ('*некорректные данные');
     writeln('введите ширину(см) еще раз');
     readln(b);
     end;
     a1:=a;
     b1:=b;
     writeln('метод Незнайки');
     k:=1;
     while a<>b do
     begin
     if a>b then a:=a-b else b:=b-a;
     k:=k+1;
     end;
     writeln('количество ковров= ' , k );
     writeln('метод Знайки');
     k:=0;
     while a1*b1>0 do
     begin
     if a1>b1 then
     begin
     k:=k+a1 div b1;
     a1:=a1 mod b1;
     end
     else
     begin
     k:=k+b1 div a1;
     b1:=b1 mod a1
     end;
     end;
     writeln('количество ковров= ' , k);
     readln;
end.
Добавлено через 20 часов 12 минут
Цитата Сообщение от Puporev Посмотреть сообщение
while a1*b1>0 do
Что значит это строка?
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,329
11.11.2015, 18:26 #15
Пока а1 или b1 не равны 0.
0
гзл
0 / 0 / 4
Регистрация: 20.03.2014
Сообщений: 221
12.11.2015, 01:01  [ТС] #16
А можете,пожалуйста, расписать всю программу вкратце ,со строчки 20
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,329
12.11.2015, 07:35 #17
Если Вы не умеете вычитать и делить я не виноват и в учителя арифметики не наниался
0
12.11.2015, 07:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2015, 07:35
Привет! Вот еще темы с решениями:

Определить количество чисел, которые при делении на 7 дают в остатке 3
Даны натуральные числа a1, a2, a3, a4. а) верно ли, что одно число...

Определить количество строк заданной матрицы,которые упорядочены по возрастанию
помогите плиз решить))) Определить количество строк заданной матрицы,которые...

Определить сумму и количество элементов массива, которые делятся на 7 и 3 одновременно
дан одномерный массив a(n) целых чисел определить сумму и кол-во элементов...

Дано целое число А. Определить количество цифр в числе, которые меньше 5
Ребят, помогите решить задачу на паскале(желательно через Repeat): Дано целое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru