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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
#1

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

16.01.2011, 20:09. Просмотров 803. Ответов 2
Метки нет (Все метки)

Доброго времени суток
Задача такая:"Напишите программу,которая находит и отображает значения дубликаты(одинаковые) в 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++
Друзья, очень прошу!! помогите пожалуйста, кто какое сможет!! Задача 1 Написать программу, которая определит, если среди цифр...

Отсортировать массив и вывести на экран (массивы и указатели на указатели) - C++
Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s- результат сессии F студента. Отсортировать массив S по...

Указатели на массивы. Указатели и функции - C++
Вот задача: Даны два массива : А и B. Необходимо создать третий массив, в котором нужно собрать: -Элементы обоих массивов; -Общие...

Указатели и массивы. Указатели и функции - C++
Никак не разберусь с указателями на функцию. Пишу в Visual Studio. Надо написать функцию Compress() с использованием указателей, которая...

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц) - C++
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник местонахождением соответствующего элемента aij (см....

массивы указателей,указатели на массивы - C++
Понимаю что тема эта изжевана, но я ещё жую.Хочу, чтобы усвоилось. допустим есть QStringList a; a.append(&quot;мамa&quot;); ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
romedal
54 / 54 / 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
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
17.01.2011, 01:34  [ТС] #3
Спасибо за ответ.
Жаль я некоторые инструкции не понял,после усовершенствовании программы,но мне понравилось усовершенствование
Я пока прошёл циклы,массивы и указатели.А с инструкцией qsort не знакомился ещё и до ретурнов тоже не дошёл,так знаю что должен быть если шо))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2011, 01:34
Привет! Вот еще темы с ответами:

массивы указателей,указатели на массивы - C++
Понимаю что тема эта изжевана, но я ещё жую.Хочу, чтобы усвоилось. допустим есть QStringList a; a.append(&quot;мамa&quot;); ...

Массивы и указатели. - C++
Объясните как работает код, что он будет выводить на экран и почему : #include &lt;stdio.h&gt; #define PRD(a) printf(&quot;%d&quot;, (a) ) //...

Указатели и массивы - C++
Помогите переделать через указатель int *x. #include&lt;iostream.h&gt; #include&lt;string.h&gt; #include&lt;conio.h&gt; main() { clrscr(); ...

Указатели и массивы - C++
Если у меня есть две функции, в одной из которых объявлен динамический массив и указатель на него.А во второй функции входным параметром...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru