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

Массивы. Движение при сравнении значений индекса - C++

Восстановить пароль Регистрация
 
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
06.02.2011, 21:13     Массивы. Движение при сравнении значений индекса #1
Задание: Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран.
Поиском находил задачи, но там либо мне было непонять их, либо через динамические массивы.

Вроде ничего сложного, но чего то не хватает.
Вот основной код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main(){
    const int a_size=8;
    int a[a_size]={1,5,7,2,7,3,5,7};
    for(int i=0;i<a_size;i++){
        if(a[i]==a[i]){
            cout<<""<<a[i];
        }
    }
    cout<<"\n";
}
при выполнении на экран выводится просто значения массива.
Но указав в условии какой индекс сравнивать он выдает правильный результат.
Например:
C++
1
2
3
if(a[2]==a[i]){
            cout<<""<<a[i];
        }
выводит на экран "777", как и положено.
Проблема в том, что я не знаю как сделать так, чтобы он проверял не указанный индекс, а все.


Спасибо за уделенное мне время.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
06.02.2011, 21:28     Массивы. Движение при сравнении значений индекса #2
можно сделать вложенный цикл..
C++
1
2
3
4
5
6
        for(int i=0;i<a_size;i++){
                for(int j=0;j<a_size;j++){
                if(a[i]==a[j]){
                        cout<<""<<a[j];
                }}
        }
что то вроде этого ..
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
06.02.2011, 21:37  [ТС]     Массивы. Движение при сравнении значений индекса #3
NiRamz, там не понятный результат выводит, так что, думаю, не то. Как я понял, цикл for(j) введен для продвижения правой части условия.
Я только учусь, но, предполагаю что, при введении доп. значения индекса a[j], они будут смешиваться с a[i]. Думаю, что изза этого и не понятный результат.
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
06.02.2011, 21:38     Массивы. Движение при сравнении значений индекса #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int main(){
        const int a_size=8;
        int count;
        int a[a_size]={1,5,5,2,5,1,2,7};
        for(int i=0;i<a_size;i++){
            count=0;
                for(int j=0;j<a_size;j++){
                if(a[i]==a[j]){
                    count++;
                    if(count>1){ cout<<""<<a[i];break;}
                }}
                
        }
        cout<<"\n";
    system("pause");
}
попробуйте ..
romedal
 Аватар для romedal
53 / 53 / 1
Регистрация: 18.03.2010
Сообщений: 345
Записей в блоге: 1
06.02.2011, 21:42     Массивы. Движение при сравнении значений индекса #5
Для альтернативы, я бы сначала отсортировал массив, например функцией qsort :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
qsort(mas,x,sizeof(int),compare); // сдесь x - размер массива, mas - имя масиива.
int compare (const void* a, const void* b) {
 
        int *af = (int*)a;
 
        int *bf = (int*)b;
 
        if((*af)<(*bf)) return -1; 
 
        if((*af)==(*bf)) return 0;
 
        if((*af)>(*bf)) return  1;
        }
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
06.02.2011, 21:43  [ТС]     Массивы. Движение при сравнении значений индекса #6
romedal, сортировать я еще не умею
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
06.02.2011, 21:49     Массивы. Движение при сравнении значений индекса #7
heydayнемного поправил..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main(){
        int count;
        int a[]={1,2,1,3,4,5,4};
        for(int i=0;i<sizeof(a)/sizeof(a[0]);i++){
            count=0;
                for(int j=0;j<sizeof(a)/sizeof(a[0]);j++){
                if(a[i]==a[j]){
                    count++;
                    if(count>1){ cout<<a[i]<<" ";break;}
                }}
                
        }
        cout<<"\n";
    system("pause");
}
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
06.02.2011, 21:53  [ТС]     Массивы. Движение при сравнении значений индекса #8
NiRamz, вроде получилось. Сортировку бы добавить, чтобы в ответе цифры распологались рядом.
C++
1
2
3
4
5
6
 count=0;
                for(int j=0;j<a_size;j++){
                if(a[i]==a[j]){
                                        count++;
                                        if(count>1){ cout<<""<<a[i];break;}
                }}
если не затруднит, скажите зачем это ввели.

Добавлено через 1 минуту
NiRamz, все хорошо, только стало еще непонятней
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
06.02.2011, 21:57     Массивы. Движение при сравнении значений индекса #9
C++
1
2
3
4
5
6
 count=0; // счетчик, который считает сколько раз встречается число
                for(int j=0;j<a_size;j++){ // цикл, который перебирает правое значение
                if(a[i]==a[j]){ // если это равенство верно, в след строке счетчик увеличивается на единицу
                                        count++;
                                        if(count>1){ cout<<""<<a[i];break;} если значение больше единицы, то выводим элемент и выходим из сложенного цикла
                }}
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
06.02.2011, 22:01  [ТС]     Массивы. Движение при сравнении значений индекса #10
NiRamz, а операция sizeof(), если я правильно понял, недает циклу выходить за пределы размера массива?
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
06.02.2011, 22:09     Массивы. Движение при сравнении значений индекса #11
да. sizeof - ф-ция, которая возвращает размер массива в байтах, что бы получить количество элементов массива необходимо разделить на объем, который занимает один элемент в байтах..
C++
1
sizeof(mas)/sizeof(mas[0])
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2011, 22:12     Массивы. Движение при сравнении значений индекса
Еще ссылки по теме:

Ошибка при сравнении типа char C++
C++ Неожиданный результат при сравнении производительности вектора и обычного массива
C++ Зацикливание при сравнении двоичных чисел

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

Или воспользуйтесь поиском по форуму:
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
06.02.2011, 22:12  [ТС]     Массивы. Движение при сравнении значений индекса #12
Спасибо за помощь.
Yandex
Объявления
06.02.2011, 22:12     Массивы. Движение при сравнении значений индекса
Ответ Создать тему
Опции темы

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