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

Массивы,указатели,циклы. - C++

Восстановить пароль Регистрация
 
Rusl_v
 Аватар для Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
16.01.2011, 20:09     Массивы,указатели,циклы. #1
Доброго времени суток
Задача такая:"Напишите программу,которая находит и отображает значения дубликаты(одинаковые) в 5-элементном массиве целочисленных значений.Все значения должны будут вводиться с клавиатуры!!!"

Вот код программы,проверьте пожалуйста и подскажите если что не так,всё работает(тестировал, вроде находит любые числа одинаковые),но подозреваю что код может быть корявым.
Код
// Тренировка.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL,"Russian");
	int mas[5],x=0,*p,y=0,m;					//Объявление
	cout<<"Введите 5 символов:\n";
	while(x<5){						//Вводим 5 чисел
		cin>>mas[x];				//
		x++;						//счётчик цикла
	}
	cout<<"\n";
	for(int i=0;i<5;i++)			//Выводим результат введённых чисел на экран
	cout<<mas[i]<<' ';				//
	cout<<"\n\n\n";					//
	p=mas;							//Переменной *p присваиваем адрес первого индекса массива
	while (y<5){					//Цикл для того чтобы проиндексировать указатель
		for(m=0;m<5;m++){			//Цикл для того чтобы проиндексировать массив
			if (m==y) continue;		//Чтобы не сравнивались одинаковые элементы массива(т.е. mas[0] всегда равно p[0])!!!
			if (mas[m]==p[y]){		//Сравнение введённых чисел
				cout<<"Число "<<mas[m]<<" повторяеться"<<"\n";	//Вывод на экран повторяющегося числа
			y=6;	//Чтобы оборвать цикл while(y<5).Без этого верхняя строка (cout<<"Это....;) повторяеться 2 раза так как находит одинаковые числа 2 раза и более
			break;
			}
		}
		y++;						//Индексируем указатель
	}
	system("pause");
	return 0;
}
Много лишних библиотек,не обращайте внимания.
Очень бы хотелось услышать другие варианты решения этой задачи.Для меня очень сложно было организовать сравнения чисел.

Добавлено через 1 час 12 минут
Ребят я понимаю может сильно нупская программа,но мне не с кем посоветоваться я самоучка,вы хоть помогите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2011, 20:09     Массивы,указатели,циклы.
Посмотрите здесь:

C++ Массивы и указатели
C++ Массивы и указатели....
C++ Указатели и массивы
C++ Массивы и указатели
C++ Массивы,циклы,указатели ( пожалуйста)
Указатели и массивы C++
Массивы, указатели C++
C++ C++ указатели и массивы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
romedal
 Аватар для romedal
53 / 53 / 1
Регистрация: 18.03.2010
Сообщений: 345
Записей в блоге: 1
16.01.2011, 20:53     Массивы,указатели,циклы. #2
А если ввести 1,2,2,3,3 - программа скажет, что повторяется число 2, а про 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
36
37
38
39
40
41
42
#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <cstdlib>
using namespace std;
int compare (const void* a, const void* b);
 
int main(int argc, char* argv[])
{
        setlocale(LC_ALL,"Russian");
        int mas[5],x=0,*p,y=0,m;                                       
        cout<<"Введите 5 символов:\n";
        while(x<5){                                             
                cin>>mas[x];                            
                x++;                                            
        }
         p=mas;
        qsort(mas,x,sizeof(int),compare);
        if (mas[y+1]==mas[y]||mas[y+1]==mas[y+2]) cout<<endl<<"данное число повторяется: "<<mas[y+1]<<endl;
        if((mas[y+3]==mas[y+4]||mas[y+3]==mas[y+2])&&mas[y+3]!=mas[y+1]) cout<<endl<<"данное число повторяется: "<<mas[y+3]<<endl;
        cout<<"\n";
                          
                                                         
        
 
        system("pause");
        return 0;
}
    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;
    }
Rusl_v
 Аватар для Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
17.01.2011, 01:34  [ТС]     Массивы,указатели,циклы. #3
Спасибо за ответ.
Жаль я некоторые инструкции не понял,после усовершенствовании программы,но мне понравилось усовершенствование
Я пока прошёл циклы,массивы и указатели.А с инструкцией qsort не знакомился ещё и до ретурнов тоже не дошёл,так знаю что должен быть если шо))
Yandex
Объявления
17.01.2011, 01:34     Массивы,указатели,циклы.
Ответ Создать тему
Опции темы

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