Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
10 / 10 / 2
Регистрация: 09.08.2010
Сообщений: 321

Индекс вне границ массива

16.01.2013, 00:37. Показов 747. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поправьте, пожалуйста. Хотел с паскале перенести, да где-то с индексами напутал. Как можно видеть, код на паскале - генерация сочетаний из n по k. Я хотел вынести генерацию сочетаний в функцию.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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];
                }
            }
        }
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
 
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.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.01.2013, 00:37
Ответы с готовыми решениями:

Индекс вне границ массива
Здравствуйте форумчане! Столкнулся с проблемой, не могу понять где у меня ошибка. Компилятор говорит индекс вне границ массива. По...

Индекс вне границ массива
Немогу понять, прога выдает ошибку индекс вне границ массива!,если указать в цикле не mass.Length а цифру 5 то работает. Делал тоже...

Индекс вне границ массива
Уже битый час вожусь с этой ошибкой Console.WriteLine(battle + &quot; &quot; + enemy); Вот сам массив: switch (enemy) { ...

7
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
16.01.2013, 00:40
Какое значение k вы передаете когда вызываете метод?
0
10 / 10 / 2
Регистрация: 09.08.2010
Сообщений: 321
16.01.2013, 00:55  [ТС]
n = 4 k = 3
0
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
16.01.2013, 01:27
C#
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
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];
                }
            }
        }
    }
}
Добавлено через 1 минуту
Тупо переписал код паскаля строчка в строчку. Может поможет вам ваш доделать. В c# массив начинается с нулевого элемента, а в паскале с первого. имейте ввиду.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.01.2013, 07:03
Так называемые "динамические массивы" в паскале тоже с нуля начинаются. А пользовательские - хоть array [9000...100500] объяви, первым элементом будет a[9000]
0
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
16.01.2013, 16:50
Цитата Сообщение от Psilon Посмотреть сообщение
Так называемые "динамические массивы" в паскале тоже с нуля начинаются. А пользовательские - хоть array [9000...100500] объяви, первым элементом будет a[9000]
Но в данном случае, по-моему, с 1 начинается индексация.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.01.2013, 17:36
van Persie, ну в данном частном случае - да. Но я считаю это недостатком паскаля: развращает подобная свобода
0
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
16.01.2013, 17:45
Цитата Сообщение от Psilon Посмотреть сообщение
van Persie, ну в данном частном случае - да. Но я считаю это недостатком паскаля: развращает подобная свобода
В С# определен похожий недостаток в виде индексаторов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2013, 17:45
Помогаю со студенческими работами здесь

Индекс вне границ массива
Всем привет, я имею много аккаунтов от игры, но хранить и искать нужный аккаунт в txt файле, не удобно. Я решил написать простенькую...

индекс вне границ массива
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Индекс вне границ массива
int size = int.Parse(Console.ReadLine()); Console.WriteLine(); int mas = new int; rand(size,size,mas); ...

Индекс находится вне границ массива
Выдает ошибку на { Console.WriteLine(&quot;Чётные: &quot; + &quot;a=&quot; + a); } int i; ...

Индекс находился вне границ массива
Выдает ошибку &quot;Индекс находился вне границ массива.&quot; using System; using System.Collections.Generic; using System.Linq; using...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru