Форум программистов, компьютерный форум CyberForum.ru

Массивы - C++

Восстановить пароль Регистрация
 
Zhandarbek
3 / 3 / 0
Регистрация: 15.08.2011
Сообщений: 60
02.12.2011, 10:00     Массивы #1
как задать массив в C++, который в паскале выглядит так:
Pascal
1
var a : array[-10000..10000] of integer
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2011, 10:00     Массивы
Посмотрите здесь:

C++ Массивы
Массивы C++ C++
массивы. C++
Массивы C++
Массивы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
02.12.2011, 10:06     Массивы #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
template<size_t start, size_t end, class T>
class PascalArray
{
   T arr[end-start+1];
public:
   inline T& operator[](size_t index)
   {
       return arr[index-start];
   }
};
 
int main()
{
   PascalArray<-10, 10, int> arr;
   for(int i = -10; i<=10; i++) arr[i] = i;
   for(int i = -10; i<=10; i++) cout << arr[i] << endl;
   return 0;
}
бомжтравоядный
3 / 3 / 1
Регистрация: 09.11.2011
Сообщений: 25
02.12.2011, 11:01     Массивы #3
Так пойдет ?

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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL, "RUS");
     
    int mas[3000],k=-1000,p;
 
    for(int i=-1000; i<=1000; i++)
    {
      mas[i]=k;
      k++;
    }
 
    cout<<"Нажмите (1) для просмотра массива..."<<endl;
    cin>>p;
 
    system("cls");
 
    if(p==1)
    {
        for(int i=-1000; i<=1000; i++)
        {
        cout<<mas[i]<<" ";
        }
 
    }
    getch();
    return 0;
}
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
02.12.2011, 11:10     Массивы #4
Цитата Сообщение от бомжтравоядный Посмотреть сообщение
Так пойдет ?
Не пойдёт, вы сами смотрели что выдаёт?
В c нет массивов с отрицательными индексами, можно только извращаться с приведением индекса к положительному.

Добавлено через 3 минуты
Например, вот так
C++
1
2
3
4
5
        for(int i=-1000; i<=1000; i++)
        {
          mas[i+1000]=k;
          k++;
        }
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
02.12.2011, 11:41     Массивы #5
Цитата Сообщение от mimicria Посмотреть сообщение
можно только извращаться с приведением индекса к положительному.
K&R:
If one is sure that the elements exist, it is also possible to index backwards in an array; p[-1], p[-2], and so on are syntactically legal, and refer to the elements that
immediately precede p[0]. Of course, it is illegal to refer to objects that are not within the array bounds.

C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main()
{
    int arr[] = {1, 2, 3, 4, 5, 6, 7};
    int *p = arr + 3;
 
    printf("%d ",  p[ -1 ]);
    printf("%d\n", p[ -2 ]);
    return 0;
}
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
02.12.2011, 11:45     Массивы #6
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
int *p = arr + 3;
Это всего-лишь один из таких способов извращения. Индексы всё равно положительные и к значению указателя не относятся
Yandex
Объявления
02.12.2011, 11:45     Массивы
Ответ Создать тему
Опции темы

Текущее время: 03:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru