Индекс вне границ массива - C# (207026)
Формулировка задачи:
Поправьте, пожалуйста. Хотел с паскале перенести, да где-то с индексами напутал. Как можно видеть, код на паскале - генерация сочетаний из n по k. Я хотел вынести генерацию сочетаний в функцию.
static void GGW(int[] a, int n, int k) { int[] x = new int[100], min = new int[100], max = new int[100]; for (int j = 1; j <= k - 1; j++) { max[j] = n - j + 1; min[j] = k - j + 1; x[j] = min[j]; } int i = 0, r = 0; while (i <= k) { for (int j = k; j <= 1; j--) x[j] = a[j]; //Console.Write(x[j] + " "); Console.WriteLine(); r = r + 1; i = 0; while ((i <= k) && (x[i] == max[i])) i = i + 1; if (i <= k) x[i] = x[i] + 1; for (int j = i - 1; j <= 1; j--) { min[j] = x[j + 1] + 1; x[j] = min[j]; } } }
const n=5; k=3; n1=100; type t=array[1..n1] of integer; var x,min,max : t; i,j,r:integer; begin // задаются начальные значения max,min,x for j:=1 to k do begin max[j]:=n-j+1; min[j]:=k-j+1; x[j]:=min[j] end; while i<=k do begin for j:=k downto 1 do write(x[j], ' '); writeln; r:=r+1; i:=1; while (i<=k) and (x[i]=max[i]) do i:=i+1; if i<=k then x[i]:=x[i]+1; for j:=i-1 downto 1 do begin min[j]:= x[j+1]+1; x[j]:=min[j] end end; end.
Решение задачи: «Индекс вне границ массива»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { const int n = 5, k = 3, n1 = 100; int[] x = new int[n1]; int[] min = new int[n1]; int[] max = new int[n1]; int i, j, r; for (j = 0; j < k; j++) { max[j] = n - j + 1; min[j] = k - j + 1; } i = 0; r = 0; // у вас меременные не получают никакого значения. допустим это ноль. while (i <= k) { for (j = k; j >= 0; j--) { Console.Write(x[j] + " "); } Console.WriteLine(); r++; while (i <= k && x[i]==max[i]) { i++; } for (j = i - 1; j >= 0; j--) { min[j] = x[j + 1] + 1; x[j] = min[j]; } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д