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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2009, 19:50   #1
Divoha
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 26
По умолчанию [C++] Определить два расположенных рядом значения

Дан массив А из N элементов и число X. Определить, имеются ли в массиве A два расположенных рядом значения X.
Спасибо, кто отвечает на мои вопросы.. =)
Divoha вне форума Ответить с цитированием
Старый 27.06.2009, 20:09   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Наработки давайте.
MaTBeu вне форума Ответить с цитированием
Старый 27.06.2009, 20:12   #3
Divoha
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 26
По умолчанию

Есть код.
Код:
#include <algorithm>
#include <functional>
#include <iostream>

template <typename T>
struct X_equal_to : public std::binary_function<T, T, bool> {
  X_equal_to(T value) : x(value) { }
  bool operator()(T lhs, T rhs) {
    return (lhs == rhs) ? lhs == x : false;
  }
private:
  T x;

};
int main()
{  
  int A[] = {5, 4, 2, 2, 8, 8, 7, 16};
  const int N = sizeof(A) / sizeof(*A);
  int X = 2;

  int *it = std::adjacent_find(A, A + N, X_equal_to<int>(X));
  if (it != A + N) {
    std::cout << "adjacent elements \"" << X 
              << "\" starts from position: " << (it - A) << std::endl;
  } else {
    std::cout << "occurs weren't detected" << std::endl;
  }
    return 0;
}
Но он явно не для с++ 6.0 уменя стоит стандартный компилятор.. и этот код не воспринимает..

Последний раз редактировалось MaTBeu; 27.06.2009 в 20:41.
Divoha вне форума Ответить с цитированием
Старый 27.06.2009, 20:16   #4
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Жуть
Ну вообще то это так:
Код:
for (int i=0;i<6;i++)
if ((a[i]==x)&&(a[i+1]==x))
{
cout << "Yes";
break;
}
else
cout << "No";
"Сердцевина" есть. Вам осталось только написать чуть-чуть .
profi вне форума Ответить с цитированием
Старый 27.06.2009, 20:23   #5
Divoha
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 26
По умолчанию

Опять же нужен ввод с клавиатуры..
ввод должен быть типа 3 3 5 8 7 2
вот число 3 должно выводиться
Divoha вне форума Ответить с цитированием
Старый 27.06.2009, 20:25   #6
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
Сообщение от Divoha Посмотреть сообщение
Опять же нужен ввод с клавиатуры..
ввод должен быть типа 3 3 5 8 7 2
вот число 3 должно выводиться
Ну сделайте сами. Это вообще то азы программирования ввод/вывод информации.

Код:
Определить, имеются ли в массиве A два расположенных рядом значения X.
Должно не число вывести, а слово "Да" (если имеются) или "Нет" (если не имеются). Но если вам нужно вывести число тогда так

Код:
for (int i=0;i<6;i++)
if ((a[i]==x)&&(a[i+1]==x))
{
cout << a[i];
break;
}

Последний раз редактировалось profi; 27.06.2009 в 20:29.
profi вне форума Ответить с цитированием
Старый 27.06.2009, 20:52   #7
Divoha
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 26
По умолчанию

Да, мне нужно создать массив и определить расположенных рядом два значения
Divoha вне форума Ответить с цитированием
Старый 28.06.2009, 02:45   #8
Divoha
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 26
По умолчанию

Блин чет не получается.. )) везде ошибки.. помогите дописать код.. эта последяя задача ))
Divoha вне форума Ответить с цитированием
Старый 28.06.2009, 10:35   #9
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
#include "stdio.h"
#include "conio.h"

int main()
{
	int mas[10],x,el;
	bool b=false;
	
	printf("Vvedite x:");
	scanf("%d",&x);

	for(int i=0;i<10;i++)
		{
			printf("mas[%d]=",i);
			scanf("%d",&mas[i]);
		}

	for (int j=0;j<10;j++)
		if ((mas[j]==x)&&(mas[j+1]==x))
				{
					b=true;
					el=mas[j];
					break;
				}
			else
				b=false;
	if (b)
		{
			printf("YES!\n");
			printf("Element: %d",el);
		}
	else
		printf("NO!");

	getch();
	
	return 0;
}
profi вне форума Ответить с цитированием
Старый 28.06.2009, 11:46   #10
Divoha
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 26
По умолчанию

profi, спасибо огромное..
Divoha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как приравнять два разных значения в excel? Viento Microsoft Office Excel 7 06.01.2009 01:14
Два одномерных массива,представляющие собой средние значения строк и столбцов исходного. Делфи 3 <DimonM@n> Помощь студентам 2 23.11.2008 21:51
как определить адрес значения, полученного с помощью функции ВПР? profik777 Microsoft Office Excel 5 21.11.2008 14:59
приложение рядом с часами ERASERROR Общие вопросы Delphi 10 23.01.2008 23:59
Два календаря рядом vladimir_86 JavaScript, Ajax 0 17.01.2008 17:04