1 / 1 / 1
Регистрация: 13.02.2011
Сообщений: 179
1

Определить, хватит ли продавцу фруктов, чтобы уравновесить весы

23.03.2013, 14:38. Показов 1149. Ответов 3
Метки нет (Все метки)

Продавец положил в ряд в произвольном порядке n фруктов разного веса. Первый по порядку плод продавец положил на одну чашу весов. Потом решил уравновесить весы и положил следующий фрукт на вторую чашу. Далее он снова и снова клал фрукты, причем каждый раз на легкую чашу. Весы клонились то в одну, то в другую сторону. Продавца интересовало, хватит ли ему фруктов, чтобы все-таки уравновесить весы. Как только весы пришли в равновесие, он перестал ложить остальные фрукты и подсчитал количество плодов на каждой чаше. Если продавцу не удастся уравновесить весы, использовав при этом все фрукты, то тоже нужно определить количество плодов на каждой чаше.

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
program terezy;
uses crt;
var n,a1,a2,k1,k2,i,w:integer;
    g:array[1..100] of integer;
begin
     clrscr;
     writeln('Vvedit kilkist fruktiv:');
     readln(n);
     for i:=0 to n-1 do
     begin
       writeln('Vaga ',i+1,'-go fruktu');
       readln(g[i]);
     end;
     k1:=0;k2:=0;
     a1:=0;a2:=0;
     w:=0;
 
     a1:=a1+g[w];
     n:=n-1;
     k1:=k1+1;
     w:=w+1;
 
     while ((n<>0) or (a1<>a2)) do
          begin
                 if (a1>a2) then
                 begin
                    a2:=a2+g[w];
                    n:=n-1;
                    k2:=k2+1;
                    w:=w+1;
                 end;
 
                 if (a1<a2) then
                 begin
                       a1:=a1+g[w];
                       n:=n-1;
                       k1:=k1+1;
                       w:=w+1;
                 end;
         end;
 
         if (a1=a2) then
         begin
              writeln('Shalki zrivnialis');
              writeln('Vaga 1-yi shalki: ',a1);
              writeln('Vaga 2-yi shalki: ',a2);
              writeln('Kilkist fruktiv na 1-iy shalci: ',k1);
              writeln('Kilkist fruktiv na 2-iy shalci: ',k2);
              writeln('Kilkist fruktiv sh4o zalihilos: ',n);
         end
 
         else
 
         begin
              writeln('Shalki NE zrivnialis');
              writeln('Vaga 1-yi shalki: ',a1);
              writeln('Vaga 2-yi shalki: ',a2);
              writeln('Kilkist fruktiv na 1-iy shalci: ',k1);
              writeln('Kilkist fruktiv na 2-iy shalci: ',k2);
              writeln('Kilkist fruktiv sh4o zalihilos: ',n);
         end;
         readln;
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2013, 14:38
Ответы с готовыми решениями:

с помощью камней уравновесить весы
Дано: В файле даётся информация о камнях. До 5000 камней. По каждому камню даётся вес в граммах....

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

Определить, хватит ли цистерны, чтобы вместить X тонн бензина
Помогите пожайлуйста решить задачу через If и THEN : Масса 8 литров бензина 5,68 кг. Цистерна...

Определить, хватит ли провода, чтобы провести проводку в квартире
Кусок медного провода длиной 5 м имеет массу 430 г. чтобы провести проводку в квартире требуется С...

3
218 / 50 / 52
Регистрация: 15.01.2013
Сообщений: 305
23.03.2013, 15:52 2
Для начала установите нормальный начальный и конечный индекс для цикла с параметром(строка 9-13):
Вместо:
Pascal
1
2
3
4
5
for i:=0 to n-1 do
     begin
       writeln('Vaga ',i+1,'-go fruktu');
       readln(g[i]);
     end;
Будет:
Pascal
1
2
3
4
5
for i:=1 to n do
     begin
       writeln('Vaga ',i,'-go fruktu');
       readln(g[i]);
     end;
Если не ошибаюсь, в Turbo Pascal минимальный индекс массива = 1.

Добавлено через 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
program terezy;
uses crt;
var n,a1,a2,k1,k2,i,w:integer;
    g:array[1..100] of integer;
begin
     clrscr;
     writeln('Vvedit kilkist fruktiv:');
     readln(n);
     for i:=1 to n do
     begin
       writeln('Vaga ',i,'-go fruktu');
       readln(g[i]);
     end;
     k1:=0;k2:=0;
     a1:=0;a2:=0;
     w:=1;
 
     a1:=a1+g[w];
     n:=n-1;
     k1:=k1+1;
     w:=w+1;
 
     repeat
                 if (a1>a2) then
                 begin
                    a2:=a2+g[w];
                    n:=n-1;
                    k2:=k2+1;
                    w:=w+1;
                 end;
 
                 if (a1<a2) then
                 begin
                       a1:=a1+g[w];
                       n:=n-1;
                       k1:=k1+1;
                       w:=w+1;
                 end;
until ((n<>0) or (a1<>a2));
 
         if (a1=a2) then
         begin
              writeln('Shalki zrivnialis');
              writeln('Vaga 1-yi shalki: ',a1);
              writeln('Vaga 2-yi shalki: ',a2);
              writeln('Kilkist fruktiv na 1-iy shalci: ',k1);
              writeln('Kilkist fruktiv na 2-iy shalci: ',k2);
              writeln('Kilkist fruktiv sh4o zalihilos: ',n);
         end
 
         else
 
         begin
              writeln('Shalki NE zrivnialis');
              writeln('Vaga 1-yi shalki: ',a1);
              writeln('Vaga 2-yi shalki: ',a2);
              writeln('Kilkist fruktiv na 1-iy shalci: ',k1);
              writeln('Kilkist fruktiv na 2-iy shalci: ',k2);
              writeln('Kilkist fruktiv sh4o zalihilos: ',n);
         end;
         readln;
end.
1
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
23.03.2013, 15:56 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Исправил 2 ошибки и чуть поправил код
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
47
48
49
50
51
52
53
program terezy;
uses crt;
var n,a1,a2,k1,k2,i,w:integer;
    g:array[1..100] of integer;
begin
clrscr;
writeln('Vvedit kilkist fruktiv:');
readln(n);
for i:=1 to n do {1 ошибка}
  begin
   writeln('Vaga ',i+1,'-go fruktu');
   readln(g[i]);
  end;
k1:=1;k2:=0;
a1:=g[1];a2:=0;
n:=n-1;
w:=2;
while (n>0) and (a1<>a2) do {2 ошибка}
if (a1>a2) then
 begin
  a2:=a2+g[w];
  n:=n-1;
  k2:=k2+1;
  w:=w+1;
 end
else if (a1<a2) then
 begin
  a1:=a1+g[w];
  n:=n-1;
  k1:=k1+1;
  w:=w+1;
 end
else break;
if (a1=a2) then
 begin
  writeln('Shalki zrivnialis');
  writeln('Vaga 1-yi shalki: ',a1);
  writeln('Vaga 2-yi shalki: ',a2);
  writeln('Kilkist fruktiv na 1-iy shalci: ',k1);
  writeln('Kilkist fruktiv na 2-iy shalci: ',k2);
  writeln('Kilkist fruktiv sh4o zalihilos: ',n);
 end
else
 begin
  writeln('Shalki NE zrivnialis');
  writeln('Vaga 1-yi shalki: ',a1);
  writeln('Vaga 2-yi shalki: ',a2);
  writeln('Kilkist fruktiv na 1-iy shalci: ',k1);
  writeln('Kilkist fruktiv na 2-iy shalci: ',k2);
  writeln('Kilkist fruktiv sh4o zalihilos: ',n);
 end;
readln
end.
1
1 / 1 / 1
Регистрация: 13.02.2011
Сообщений: 179
23.03.2013, 17:01  [ТС] 4
спасибо))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2013, 17:01
Помогаю со студенческими работами здесь

Сложная задачка: как связать камеру и электронные весы так, чтобы на камере показывали данные с весов?
Здравствуйте, вопрос может и не по теме но не нашел куда её писать. Итак. Задачка такая: Есть Ip...

Определить, можно ли привести весы в состояние равновесия
Даны двухчашечные весы и набор гирек. На левую чашу весов положили взвешиваемый предмет весом K...

Хватит ли барану веревки, чтобы дотянуться до травы
Баран находится на острове диаметр которого 23 м. Баран привязан на берегу. У барана на шее...

Больше фруктов. Определить, что весит больше - яблоки или апельсины
Больше фруктов. Одно яблоко весит 100 гр., а один апельсин 150 гр.Вам дают заданное кол-во яблок...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru