|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Даны натуральные числа а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. мне нужно, что бы компьютер сам подставлял и 1 и 0 и считал сколько способов надо что бы получить вес. то есть вводим л и надо, что бы он сам подобрал решения и вывел Последний раз редактировалось M.A.D.M.A.N., 25.09.2014 в 14:59. |
#2
|
|||
|
|||
строки 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); далее после строки 52 sum:=a[1]*v+a[2]*g+a[3]*l+a[4]*t+a[5]*r; вставить строку C[sum] := C[sum] + 1; |