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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2014, 20:45   #1
Xezon
Mazafaka stenograf
Форумчанин
 
Аватар для Xezon
 
Регистрация: 12.01.2012
Сообщений: 229
По умолчанию Поиск элемента массива в С++

Ребят, столкнулся с такой проблемой, делаю программу, в которой 10 элементов массива. Поочередно ввожу числа(данные) в каждый элемент массива, потом чищу экран, и предлагается ввести значение(число), которое надо найти в массиве, искать он ищет, но когда я захотел модифицировать до: "Если искомый элемент не найден в массиве, выплывает сообщенка - что нет такого элемента, а если есть, то он выводит номер ячейки массива, и искомое значение", но не задача, я не могу это связать.
Вот код:
Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main(){
	const int N(10);//Длина массива неизменна

	int Mass[N], A, El(0);//сам массив
	cout<<"\t\t***Find of Cell in Array***\n\n";
	//пишем юзверю длину массива, чтоб знал
	cout<<"Lenght of Array equal - "<<N<<endl<<endl;
	
	for(int i=0; i<N; i++){
		cout<<"Enter value of cell "<<i<<" - ";
		cin>>Mass[i];
	}

	system("cls");
	
	cout<<"Enter value of cell for finding: ";
	cin>>A;//Вводим значение которое мы хотим найти в массиве
	
	for(int i=0; i<N; i++){//Проверяем на несовместимость ни одного элемента
	    if(A != Mass[i]){
			El = i+1;//Ссума ячеек массива, если = 9, то нет нужного элемнета
		}
	}
	
	if(El == N){//Не найдено ни одного элемента - выводим сообщение
	   cout<<"\n\t\t***Element NOT FINDED!!!***\n";
    }
    else if (El != N){
	   for(int j=0; j<N; j++){//Находит и показывает нам нужные элементы
		   if(A == Mass[j]){
			   //cout<<"\n\t\t***Element FINDED!!!***\n";
			   cout<<"Number of cell - "<<j<<" And equal - "<<A<<endl;
		   }
	   }
    }

	_getch();
	return 0;
}
Способы нахождения конечно у меня не как у про, но в этом коде есть хоть какая, но логика =/
Да и с английским у меня проблем, тапками не кидайтесь)
Xezon вне форума Ответить с цитированием
Старый 02.10.2014, 21:16   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Вот правильная постановка вопроса: чел пытается сделать сам! Такому мы завсегда подможем! Учитесь, халявщики!

Код:
// поиск одним проходом
int Found = 0; // кол-во найденных совпадений
for (int Index = 0; Index < N; Index++)
{
  if (Mass[Index] == A)
  {
    // вывод элемента и/или его индекса на консоль
    cout<<"Number of cell - "<<Index<<" And equal - "<<A<<endl;
    Found++; // кол-во
  }
  
  if (Found) /* нашёл Found штук */ ;
  else       /* ни фига не нашёл */ ;
}
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.10.2014, 21:55   #3
Xezon
Mazafaka stenograf
Форумчанин
 
Аватар для Xezon
 
Регистрация: 12.01.2012
Сообщений: 229
По умолчанию

min@y™, спасибо, это по короче, но у меня был аналогичный вариант, и все же я решил проблему!
Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main(){
	const int N(10);//Длина массива неизменна

	int Mass[N], A, El(1), rez;//сам массив
	cout<<"\t\t***Find of Cell in Array***\n\n";
	//пишем юзверю длину массива, чтоб знал
	cout<<"Lenght of Array equal - "<<N<<endl<<endl;
	
	for(int i=0; i<N; i++){
		cout<<"Enter value of cell "<<i<<" - ";
		cin>>Mass[i];
	}

	system("cls");
	
	cout<<"Enter value of cell for finding: ";
	cin>>A;//Вводим значение которое мы хотим найти в массиве
	
	for(int i=0; i<N; i++){//Проверяем на несовместимость ни одного элемента
	    if(A != Mass[i]){
			El = i+1;//Сумма ячеек массива, если = 10, то нет нужного элемента
	    }
	}
	rez = El;//Присваиваем переменной rez значение суммы переменной El
	
	if(rez == 10){//Не найдено ни одного элемента - выводим сообщение
	   cout<<"\n\t\t***Element NOT FINDED!!!***\n";
        }
	else{//Выводим одну единственную сообщенку - Найден Элемент, и выдаем список
	   cout<<"\n\t\t***Element FINDED!!!***\n";
	   for(int j=0; j<N; j++){//Находит и показывает нам нужные элементы
		   if(A == Mass[j]){
			  
			   cout<<"Number of cell - "<<j<<" And equal - "<<A<<endl;
	           }
	   }
        }

	_getch();
	return 0;
}
В чем была заморочка - В переменную El у меня сохранялось значение суммы неподходящих ячеек, но в дальнейшем ходе выполнении программы этот переменная работала не корректно, поэтому я создал новую переменную "rez" и поместил значение El в rez, и программа с чистой совестью начала функционировать как надо. + разобрался как сделать так, чтобы запись "Элемент найден!"(ну по сути их иногда несколько, но это фигня), появилась один раз, независимо от количества найденных записей(А то через каждый найденный элемент выдавал мне это сообщение на пол консоли).

Последний раз редактировалось Xezon; 02.10.2014 в 21:58.
Xezon вне форума Ответить с цитированием
Старый 03.10.2014, 06:20   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Xezon, чистить экран, по-моему, это не очень хорошая практика. Не все хотят, чтобы им всю консоль очистили. Почему бы просто не выводить без очистки? Тогда можно видеть, что вводил на предыдущем шаге.

P.S. Я понял идею. Вы хотите запускать не из под консоли, судя по _getch()

Последний раз редактировалось 8Observer8; 03.10.2014 в 06:24.
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск максимального элемента массива hexolizer Помощь студентам 0 11.01.2014 02:17
поиск элемента массива по сумме, с++ Tiva Помощь студентам 3 07.12.2011 21:04
Неверный поиск элемента массива. torren108 Помощь студентам 1 22.10.2011 23:30
поиск мин. элемента массива lg12 Помощь студентам 1 10.07.2009 15:07