Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/35: Рейтинг темы: голосов - 35, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 16

Нумерация массива

30.04.2011, 19:17. Показов 6842. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как провести нумерацию вектора и двумерного массива не с нуля а с единицы.
Подскажите пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2011, 19:17
Ответы с готовыми решениями:

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

Нумерация элементов массива
Что сделать, чтобы в конце элементы массива были пронумерованы. ...

Нумерация массива с произвольного числа
Возможно ли как - нибудь объяснить компилятору, что нумеровать новый массив надо не с нуля, а с произвольного числа, причём это число не...

10
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
30.04.2011, 19:18
Создайте на одну ячейку больше, чем вам нужно. И соответственно не используйте нулевую.
А вообще зачем вам это?
0
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 16
30.04.2011, 19:21  [ТС]
перевожу программу с паскаля на си, и столкнулся с такой проблемой.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
30.04.2011, 19:23
Ну дак нужно осмысленно же переводить, а не как робот.
Если в С++ нумерация с 0 - значит и переделывайте код на нее.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
30.04.2011, 19:26
Написать свой класс-обёртку, в котором помимо всех данных для работы и поддержания массива хранить смещение индекса от нуля. Тогда и отрицательные индексы делать можно.

Добавлено через 58 секунд

Не по теме:

Nil_Bora, а, ну раз такое дело... На обёртку можно забить и включить голову... Вы же всё-таки не гугл транслэйт :D

0
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 16
30.04.2011, 19:27  [ТС]
тогда как переделать условие которое пропускает не нулевые элементы массива, типа:
C++
1
2
3
4
5
for (i=0;i<n;i++)
        if (newclr[i] != 0)
          cout<<" "<<Bukwy[newclr[i]];
      cout<<""<<endl;
      cout<<"     ver_g  = ";
так теряю первое значение.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
30.04.2011, 19:29
Nil_Bora, эээ... И почему же вы его теряете? Покажите соответствующий кусок кода на паскале.
0
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 16
30.04.2011, 19:31  [ТС]
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 While (ver_g[1] <> 0) Do
    Begin
      Write('     newclr = ');
      greedy(ver_g,newclr);
      For i:=1 To n Do
        If (newclr[i] <> 0) Then
          Write(' ',Bukwy[newclr[i]]:2);
      Writeln('');
      Write('     ver_g  = ');
      For i:=1 To n Do
        If (ver_g[i] <> 0) Then
          Write(' ',Bukwy[ver_g[i]]:2);
      Writeln('');
      Writeln('');
      Readkey;
    End;
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
30.04.2011, 19:34
Nil_Bora, этот кусок кода переведён вроде правильно. Возможно, раньше, при заполнении массива вы записывали данные, начиная с первого элемента, поэтому в данном случае в первом элементе будет мусор, который с большой долей вероятности не равен нулю, но который в качестве индекса для другого массивы выступать не может.
0
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 16
30.04.2011, 19:42  [ТС]
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
Program alg_greedy;
Uses Crt{*, Graph*};
Type Graph  = Array[1..100,1..100] Of Integer;
     List   = Array[1..100] Of Integer;
Const Bukwy : Array[1..16] Of String = ('AA','AB','AC','AD','BB','BA','BC','BD','CC','CA','CB','CD','','','','');
Var  g      : Graph;    {matriza Grapha}
     newclr : List;     {mnogestvo zakrashenyx vershin Grapha}
     ver_g  : List;     {mnogestvo vershin Grapha}
     n, temp: Integer;  {kolichestvo vershin Grapha}
     i, j, k: Integer;
     otvet  : Integer;
     flag   : Boolean;
{**********************************************}
Procedure greedy(Var ver_g:List; Var newclr:List);
Label 1;
Var found:Boolean;
    v, w :Integer;      {v - vershiny ver_g, w - versiny newclr}
    ch_v, ch_w:Integer; {chetchik v, chetchik w}
begin
  for i:=1 to n do
    newclr[i]:=0;
  ch_v:=1;
  v:=ver_g[ch_v];
  while (v<>0) do
    begin
      found:=false;
      ch_w:=1;
      w:=newclr[ch_w];
      while(w<>0) do
        begin
          if (g[v,w] = 1) then
            begin
              found:=true;
              ch_w := n;
            end;
          ch_w:=ch_w+1;
          w:=newclr[ch_w];
        end;
      if (found = false) then
        for ch_w:=1 to n do
          if (newclr[ch_w]=0) then
            begin
              newclr[ch_w]:=v;
              goto 1;
            end;
     1:ch_v:=ch_v+1;
      v:=ver_g[ch_v];
    end;
  for i:=1 to n do
    if (newclr[i]<>0) then
      for j:=1 to n do
        if (newclr[i] = ver_g[j]) then
          for k:=j to n do
            ver_g[k]:=ver_g[k+1];
End;
{**********************************************}
Begin
  ClrScr;
  Writeln('');
  Writeln('');
  Writeln('');
  Writeln('     Osnovnaj programma');
  Write('     Vvedite kolichestvo vershin Grapha -> ');
  Read(n);
 
  g[1,6] := 1;
  g[1,10] := 1;
  g[2,5] := 1;
  g[2,7] := 1;
  g[2,8] := 1;
  g[2,10] := 1;
  g[2,11] := 1;
  g[2,12] := 1;
  g[3,7] := 1;
  g[3,8] := 1;
  g[3,9] := 1;
  g[3,12] := 1;
  g[4,8] := 1;
  g[4,12] := 1;
  g[5,2] := 1;
  g[5,11] := 1;
  g[6,1] := 1;
  g[6,10] := 1;
  g[7,2] := 1;
  g[7,3] := 1;
  g[7,9] := 1;
  g[7,10] := 1;
  g[7,12] := 1;
  g[8,2] := 1;
  g[8,3] := 1;
  g[8,4] := 1;
  g[8,10] := 1;
  g[8,12] := 1;
  g[9,3] := 1;
  g[9,7] := 1;
  g[10,1] := 1;
  g[10,2] := 1;
  g[10,6] := 1;
  g[10,7] := 1;
  g[10,8] := 1;
  g[11,2] := 1;
  g[11,5] := 1;
  g[12,2] := 1;
  g[12,3] := 1;
  g[12,4] := 1;
  g[12,7] := 1;
  g[12,8] := 1;
  
  
  For i:=1 To n Do
  For j:=1 To n Do
    If (g[i,j] = 1) Then
      g[j,i] := 1;
 
  Write('     Ispolzuem greedy  !!!  1 or 0  !!! -> ');
  Read(otvet);
  If (otvet = 1) Then
    For i:=1 To n Do
      ver_g[i] := i
  Else
    Begin
      Writeln('');
      Writeln('     No greedy !!!');
      For i:=1 To n Do
        Begin
          g[i,n+2] := i;
          For j:=1 To n Do
            If (g[i,j] = 1) Then
              g[i,n+1] := g[i,n+1] + 1;
        End;
 
      flag := true;
      i := 1;
      While (flag) Do
        Begin
          flag := false;
          For j:=n Downto (i+1) Do
            If (g[j-1,n+1] < g[j,n+1]) Then
              Begin
                temp       := g[j-1,n+1];
                g[j-1,n+1] := g[j,n+1];
                g[j,n+1]   := temp;
 
                temp       := g[j-1,n+2];
                g[j-1,n+2] := g[j,n+2];
                g[j,n+2]   := temp;
                flag := true;
              End;
          i := i + 1;
        End;
 
      For i:=1 To n Do
        ver_g[i] := g[i,n+2];
    End;
 
  Writeln('');
  While (ver_g[1] <> 0) Do
    Begin
      Write('     newclr = ');
      greedy(ver_g,newclr);
      For i:=1 To n Do
        If (newclr[i] <> 0) Then
          Write(' ',Bukwy[newclr[i]]:2);
      Writeln('');
      Write('     ver_g  = ');
      For i:=1 To n Do
        If (ver_g[i] <> 0) Then
          Write(' ',Bukwy[ver_g[i]]:2);
      Writeln('');
      Writeln('');
      Readkey;
    End;
  Writeln('     ** Enter **');
  Readkey;
End.

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
int g[13][13];  // {matriza Grapha}
int newclr[100];  //  {mnogestvo zakrashenyx vershin Grapha}
const char *Bukwy[]={" ","AA","AB","AC","AD","BB","BA","BC","BD","CC","CA","CB","CD"};
int ver_g[100];  //  {mnogestvo vershin Grapha}
int n,temp;     //  {kolichestvo vershin Grapha}
int i,j,k;
int otvet;
bool flag;
void greedy(int ver_g[], int newclr[])
{
        int i;
    bool found;
    int v, w;   //      {v - vershiny ver_g, w - versiny newclr}
    int ch_v, ch_w;// {chetchik v, chetchik w}
 
  for (i=0;i<n;i++)
    newclr[i]=0;
  ch_v=1;
  v=ver_g[ch_v];
  while (v!=0)
    {
      found=false;
      ch_w=1;
      w=newclr[ch_w];
      while(w!=0)
        {
          if (g[v][w] == 1)
            {
              found=true;
              ch_w = n;
            }
          ch_w=ch_w+1;
          w=newclr[ch_w];
        }
      if (found == false)
        for (ch_w=0; ch_w<n;ch_w++)
          if (newclr[ch_w]==0)
            {
              newclr[ch_w]=v;
              break;
              //goto 1;
            }
     //1:
      ch_v=ch_v+1;
      v=ver_g[ch_v];
    }
  for (i=0;i<n;i++)
    if (newclr[i]!=0)
      for (j=0;j<n;j++)
        if (newclr[i] == ver_g[j])
          for (k=j;k<n;k++)
            ver_g[k]=ver_g[k+1];
}
 
//{**********************************************}
void main()
{
  cout<<" "<<endl;
  cout<<" "<<endl;
  cout<<" "<<endl;
  cout<<("     Osnovnaj programma")<<endl;
  cout<<("     Vvedite kolichestvo vershin Grapha -> ");
  cin>>n;
 
  g[1][6] = 1;
  g[1][10] = 1;
  g[2][5] = 1;
  g[2][7] = 1;
  g[2][8] = 1;
  g[2][10] = 1;
  g[2][11] = 1;
  g[2][12] = 1;
  g[3][7] = 1;
  g[3][8] = 1;
  g[3][9] = 1;
  g[3][12] = 1;
  g[4][8] = 1;
  g[4][12] = 1;
  g[5][2] = 1;
  g[5][11] = 1;
  g[6][1] = 1;
  g[6][10] = 1;
  g[7][2] = 1;
  g[7][3] = 1;
  g[7][9] = 1;
  g[7][10] = 1;
  g[7][12] = 1;
  g[8][2] = 1;
  g[8][3] = 1;
  g[8][4] = 1;
  g[8][10] = 1;
  g[8][12] = 1;
  g[9][3] = 1;
  g[9][7] = 1;
  g[10][1] = 1;
  g[10][2] = 1;
  g[10][6] = 1;
  g[10][7] = 1;
  g[10][8] = 1;
  g[11][2] = 1;
  g[11][5] = 1;
  g[12][2] = 1;
  g[12][3] = 1;
  g[12][4] = 1;
  g[12][7] = 1;
  g[12][8] = 1;
 
  for (i=0;i<n;i++)
  for (j=0;j<n;j++)
    if (g[i][j] == 1)
      g[j][i] = 1;
 
  cout<<("     Ispolzuem greedy  !!!  1 or 0  !!! -> ");
  cin>>(otvet);
  if (otvet == 1)
    for (i=0;i<n;i++)
      ver_g[i] = i;
  else
    {
      cout<<""<<endl;
      cout<<("     No greedy !!!")<<endl;
      for (i=0; i<n;i++)
        {
          g[i][n+2] = i;
          for (j=1; j<n; j++)
            if (g[i][j] == 1)
              g[i][n+1] = g[i][n+1] + 1;
        }
 
      flag = true;
      i = 1;
      while (flag)
        {
          flag = false;
          //for j:=n Downto (i+1) Do
          for (j=n; j>(i+1); --j)
            if (g[j-1][n+1] < g[j][n+1])
              {
                temp       = g[j-1][n+1];
                g[j-1][n+1] = g[j][n+1];
                g[j][n+1]   = temp;
 
                temp       = g[j-1][n+2];
                g[j-1][n+2] = g[j][n+2];
                g[j][n+2]   = temp;
                flag = true;
              }
 
          i = i + 1;
        }
 
      for (i=0; i<n; i++)
        ver_g[i] = g[i][n+2];
    }
 
  cout<<" "<<endl;
  while (ver_g[1] != 0)
    {
      cout<<"     newclr = ";
      greedy(ver_g,newclr);
      for (i=0;i<n;i++)
        if (newclr[i] != 0)
          cout<<" "<<Bukwy[newclr[i]];
      cout<<" "<<endl;
      cout<<"     ver_g  = ";
      for (i=0;i<n;i++)
        if (ver_g[i] != 0)
          cout<<" "<<Bukwy[ver_g[i]];
      cout<<""<<endl;
      cout<<""<<endl;
    }
 
  cout<<"     ** Enter **";
  getch();
}
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
30.04.2011, 19:57
Цитата Сообщение от Nil_Bora Посмотреть сообщение
так теряю первое значение
Повнимательнее почитай про то, как работает for. Ничего не теряется.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2011, 19:57
Помогаю со студенческими работами здесь

Переставить соседние элементы массива: 1-й со 2-м, 3-й с 4-м и т.д. Нумерация элементов начинается с единицы
Входные данные Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива....

Нумерация не с 0, а с 1
Как начать индексацию не с 0, а с 1? хэдэр: #ifndef LIST_H #define LIST_H #include &lt;iostream&gt; using namespace std; class...

Нумерация фигур №/N
Добрый вечер) Помогите с нумерацией не просто нумерацией 1,2,3,4 и тд. А нужно сделать так. Например: На ввод подается 7 конусов. ...

Нумерация месяца
Доброго дня. Спорим с коллегой с какого числа начинать нумеровать месяца с 0 или с 1. Хотелось бы услышать мнения на этот счет

Нумерация страниц
Для нумерации M страниц книги использовали N цифр. По заданному N вывести M или 0, если решения не существует. Нумерация начинается с...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru