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

Перебор элементов массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.85
D.o.c.t.o.r
4 / 4 / 0
Регистрация: 10.09.2010
Сообщений: 53
10.09.2010, 15:54     Перебор элементов массива #1
Доброго времени! Я новичек в С++, поэтому прошу не ругать. Вопрос - как организовать перебор элементов массива? Вот, например, в таком коде:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int _tmain(int argc, _TCHAR* argv[])
{
int nTempValue;
int myArray[n];
//Проверка на повторный ключ
for (int i = 0; i <= n-1; i++)
{
label1:cout << "Enter i =" << i << "key";
cin >> nTempValue;
myArray[i] = nTempValue;
for (int j = 0; j < i; j++)
{
if (myArray(j) == myArray(i)) - в этой строчке ошибка на myArray[j]
{
cout << "The entered key already exists. Enter a unique key\n";
goto label1;
//continue;
}
}
}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
10.09.2010, 15:58     Перебор элементов массива #2
Цитата Сообщение от D.o.c.t.o.r Посмотреть сообщение
в этой строчке ошибка на myArray[j]
взятие элемента по индексу - квадратные скобки, переменная n неинициализрована, в целом это просто ужас
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define N 10
int main()
{ 
    int i = 0;
    int array[N];
       
    for(i = 0; i < N; ++i) {
        // ввод в массив
        for(j = 0; j < i; ++j) {
            if(array[i] == array[j])
                ; // Что-то делается
        }
    }
}
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
10.09.2010, 15:58     Перебор элементов массива #3
Вместо круглых скобок () использовать надо квадратные [].
D.o.c.t.o.r
4 / 4 / 0
Регистрация: 10.09.2010
Сообщений: 53
10.09.2010, 16:04  [ТС]     Перебор элементов массива #4
Большое спасибо. Я привык из фортрана круглые скобки ставить... fasked, переменная n инициализирована, я просто этот код не выставил, но спасибо за подсказку.

А можно ли переделать программу так, чтобы массив myArray[] был в качестве возвращаемого аргумента отдельной функции?
dihlofos
10.09.2010, 16:11
  #5

Не по теме:

Зачем кстати goto, можно просто i--, цикл же...

fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
10.09.2010, 16:21     Перебор элементов массива #6
Цитата Сообщение от D.o.c.t.o.r Посмотреть сообщение
А можно ли переделать программу так, чтобы массив myArray[] был в качестве возвращаемого аргумента отдельной функции?
Сам массив возвращать нельзя, но можно воспользоваться указателями. Вот пример работы с массивом через указатель. Целых два способа
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
#define N 10
 
void fill_array(int *a, int size) {
    int i = 0;
    for(i = 0; i < size; ++i)
        a[i] = i;
}
 
void print_array(int *a, int size) {
    while(size--)
        printf("%d ", *a++);
}
 
int main()
{ 
    int i = 0;
    int array[N];
    
    fill_array(array, N);
    print_array(array, N);
}
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
10.09.2010, 16:23     Перебор элементов массива #7
Цитата Сообщение от D.o.c.t.o.r Посмотреть сообщение
int _tmain(int argc, _TCHAR* argv[])
кто-нибудь, объясните, что за странный мэйн?
fasked
10.09.2010, 16:24
  #8

Не по теме:

Цитата Сообщение от niXman Посмотреть сообщение
кто-нибудь, объясните, что за странный мэйн?
нормальный такой мелкомягкий main

niXman
10.09.2010, 16:26
  #9

Не по теме:


т.е. для микрософта нужно писать такой мэйн? а стандартный он понимает?

fasked
10.09.2010, 16:29
  #10

Не по теме:

Цитата Сообщение от niXman Посмотреть сообщение
т.е. для микрософта нужно писать такой мэйн? а стандартный он понимает?
Понимает конечно, это обычный макрос, сделан для каких-то замуток с юникод/неюникод.
TCHAR - может быть либо юникодным символом, либо обычным в зависимости от свойств проекта.
tmain - аналогично.
Зачем это все я не знаю Может быть как-то связано с winapi-функциями

D.o.c.t.o.r
4 / 4 / 0
Регистрация: 10.09.2010
Сообщений: 53
10.09.2010, 16:30  [ТС]     Перебор элементов массива #11
Цитата Сообщение от niXman Посмотреть сообщение
кто-нибудь, объясните, что за странный мэйн?
Этот мейн из программы Embarcadero RAD Studio 2010
niXman
10.09.2010, 16:30
  #12

Не по теме:

спасибо

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2010, 17:45     Перебор элементов массива
Еще ссылки по теме:

Полный перебор чисел массива C++
Перебор сумм чисел массива C++
Перебор элементов очереди C++

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

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.09.2010, 17:45     Перебор элементов массива #13
Цитата Сообщение от niXman Посмотреть сообщение
кто-нибудь, объясните, что за странный мэйн?
В зависимости от того определена ли константа UNICODE:
_tmain разворачивается в main или wmain;
_TCHAR разворачивается в char или wchar_t.
Это позволяет без изменения исходного кода собирать юникодовские и неюникодовские версии приложений или библиотек.
Yandex
Объявления
10.09.2010, 17:45     Перебор элементов массива
Ответ Создать тему
Опции темы

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