Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2008, 21:34   #1
Zahar11
 
Регистрация: 30.05.2008
Сообщений: 3
Восклицание Массивы в С\С++

Здравствуйте!!помогите пожалуйста!нужно с консоли ввести целочисленный массив размерностью 10.Вывести на экран повторяющиеся элементы введенного массива.
Zahar11 вне форума Ответить с цитированием
Старый 30.05.2008, 22:30   #2
Rembo
Форумчанин
 
Аватар для Rembo
 
Регистрация: 29.10.2007
Сообщений: 628
По умолчанию

Вообщем я еще начинающий программист в С++, но кое-что на ковылял... Если вам нормальное, более рациональное решение этой задачи дадут, то хорошо, если нет, пользуйтесь этим кодом... или может как-нибудь измените его
Код:
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
{
  int massiv[10];
  cout << "Enter 10 numbers"<<endl;
  for (int i = 0; i<10; i++)
{
  cin >> massiv[i];
}
    for (int i = 0; i<10; i++)
   { if (massiv[i]==massiv[i+1])
    {cout << "Equal numbers " << massiv[i] << " and " << massiv[i+1]<<endl;}
    if (massiv[i]==massiv[i+2])
    {cout << "Equal numbers " << massiv[i] << " and " << massiv[i+2]<<endl;}
    if (massiv[i]==massiv[i+3])
    {cout << "Equal numbers " << massiv[i] << " and " << massiv[i+3]<<endl;}
    if (massiv[i]==massiv[i+4])
    {cout << "Equal numbers " << massiv[i] << " and " << massiv[i+4]<<endl;}
    if (massiv[i]==massiv[i+5])
    {cout << "Equal numbers " << massiv[i] << " and " << massiv[i+5]<<endl;}
    if (massiv[i]==massiv[i+6])
    {cout << "Equal numbers " << massiv[i] << " and " << massiv[i+6]<<endl;}
    if (massiv[i]==massiv[i+7])
    {cout << "Equal numbers " << massiv[i] << " and " << massiv[i+7]<<endl;}
    if (massiv[i]==massiv[i+8])
    {cout << "Equal numbers " << massiv[i] << " and " << massiv[i+8]<<endl;}
    if (massiv[i]==massiv[i+9])
    {cout << "Equal numbers " << massiv[i] << " and " << massiv[i+9];}}
    system("PAUSE");
    return 0; 
}
Вроде нормально работает, но если допустим есть 3 повторяющихся числа, то не очень... Если же только по 2-ва числа повторяются, то все нормально...

Последний раз редактировалось Rembo; 30.05.2008 в 22:32.
Rembo вне форума Ответить с цитированием
Старый 30.05.2008, 23:16   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

лучше наверно будет сначала отсортировать массив, а потом уже искать повторы.
2 Rembo, выходить за пределы массива нехорошо. откуда нам знать что есть в 18 элементе, если мы вводили только 10?
pu4koff вне форума Ответить с цитированием
Старый 30.05.2008, 23:46   #4
L_M
Форумчанин Подтвердите свой е-майл
 
Регистрация: 25.02.2008
Сообщений: 289
По умолчанию

вот мой вариант, но проблема закрытие окна сразу после вывода, я использовал еще один ввод.

Код:
#include <stdio.h>
int main(void){
    int i,j,t,n=0,a[11],b[11];

    for (i=0;i<10;i++)

    {
        scanf("%d",&t);

        for (j=0;j<=i;j++)
            if (!(a[j]-t)) {
                n++;         
                b[n]=t;    
         
                break;
            }
            
            a[i]=t;
    }
    
    for (i=1;i<=n;i++) printf("%d ",b[i]);
    scanf("%d",&t);
return 0;}
Упс...
L_M вне форума Ответить с цитированием
Старый 31.05.2008, 00:35   #5
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Сначала мне предыдущее решение понравилось. Но если ввести туда больше более двух раз одно и то же число, то программа выводит его тоже несколько раз, причем на один раз меньше введенных.
Если же надо просто один раз вывести повторяющееся число, то
Код:
#include<iostream>
#include<windows.h>

using namespace std;

void main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	int mas[10], nRepeat[10], k = 0;
	bool pr_povt = false;
	cout<<"Введите элементы массива: ";
	for(int i = 0; i < 10; i++)
	{
		cin>>mas[i];
	}
	cout<<"Повторяющиеся элементы: ";
	for(int i = 0; i < 10; i++)
	{
		for(int j = i + 1; j < 10; j++)
		{
			if(mas[i]==mas[j]) 
			{
				pr_povt = false;
				for(int m = 0; m < 10; m++)
				{
					if(nRepeat[m] == mas[i])
						pr_povt = true;
				}
				if(!pr_povt)
				{
					nRepeat[k] = mas[i];
					k++;
				}
			}
		}
	}
	for(int i = 0; i < k; i++)
	{
		cout<<nRepeat[i]<<" ";
	}
	cout<<endl;
}
Возможно, и не лучшее решение, но это все, что может придти мне в голову после 23:00

Цитата:
Сообщение от L_M Посмотреть сообщение
проблема закрытие окна сразу после вывода, я использовал еще один ввод.
А getchar() или getch() не пробовали?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массивы ShenDy Общие вопросы C/C++ 4 17.04.2008 00:01
Массивы Snord Общие вопросы Delphi 2 12.04.2008 13:45
массивы Informer Общие вопросы C/C++ 3 24.11.2007 16:32