Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.09.2014, 13:04
Elka123 Elka123 вне форума
Прохожий
 
Регистрация: 21.09.2014
Сообщения: 7
Версия Delphi: Delphi 10
Репутация: 10
По умолчанию Даны натуральные числа а1,…,а5

Даны натуральные числа а1,…,а5.Предположим,что имеются 5 гирь весом а1,…,а5.Обозначим через Cк число способов,которыми можно составить вес л,то есть Cк-число решений уравнения а1Х1+…+а5Х5=к, где Хi может принимать значение 0 и 1(i= 1,…,5).Получить С0,…,С5.
Код:
program Project5;

{$APPTYPE CONSOLE}

uses
  SysUtils;
   var
  C:array of integer;
 {  a: array[1..5] of integer;   }
   Type IndexType = 1..5;
   Mas = array [IndexType] of integer;
   var dim:1..5;
   a:Mas;
   sum,m: real;
   N,i,v,g,j,l,t,r, k: integer;

begin
  try
sum:=0;
k:=0;

begin
repeat
    writeln('vvodim sami (1) ili random (2) ?');
    readln(N)
    until (N<>1) or (N<>2);
    if N=1
    then  for i:= 1 to 5  do
    begin
    write(' vvedite A[ ' , i , ' ] = ' );
    readln(a[i])
    end
else   begin  randomize;
for  i:= 1  to 5  do
a[i]:= - 30 + Random(71);
end;
writeln;
writeln('otv a');
for i:=1 to 5 do
write(a[i]:5,' ');
writeln;
end;
k:=0;
k:=k+a[i];
for v:=0 to k do C[i]:=0;
for v := 0 to 1 do
for g := 0 to 1 do
for l := 0 to 1 do
for t := 0 to 1 do
for r := 0 to 1 do
begin
sum:=a[1]*v+a[2]*g+a[3]*l+a[4]*t+a[5]*r;
if  sum = k

then  writeln (' sdf')
else writeln (' c ')
end;

for v :=0 to k do
writeln('C',i,' = ',C[i]);


  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  readln;
end.
MAD: пользуемся тегами, или бан обеспечен.

мне нужно, что бы компьютер сам подставлял и 1 и 0 и считал сколько способов надо что бы получить вес. то есть вводим л и надо, что бы он сам подобрал решения и вывел

Последний раз редактировалось M.A.D.M.A.N., 25.09.2014 в 14:59.
Ответить с цитированием
  #2  
Старый 25.09.2014, 18:16
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

строки 39-44
должно быть
Код:
  k:=0;
  for i:=low(IndexType) to high(IndexType) do begin
    write(a[i]:5,' ');
    k :=k+a[i];
  end;
  writeln;
end;
SetLength(C,k);
и в строке 28 цикл по i желательно писать таким же образом
далее после строки 52
sum:=a[1]*v+a[2]*g+a[3]*l+a[4]*t+a[5]*r;
вставить строку
C[sum] := C[sum] + 1;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter