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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2010, 00:36   #1
vityanya
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 23
По умолчанию Проблема с счетчиком(

В массиве D размерности 5, значения элементов которого вводятся с клавиатуры, определить количество элементов, которые входят в массив более, чем по одному разу.

Код:
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <locale>
#include <ctime>
using namespace std;
void main()
{	setlocale(LC_ALL ,"Russian");
	int i,b,n,j;
	int D[5],a[5];
	cout<<"Введите значения элементов массива:"<<endl;
	for (i=1; i<6;i++)
	{
		cout<<"D["<<i<<"]=";
		cin>>D[i];
		a[i]=D[i];
	}
	cout<<"Полученный массив:"<<endl;
	cout<<"D{";
	for	(i=1;i<6;i++)
	{
		cout<<" "<<D[i];
	}
	cout<<" }"<<endl;
	cout<<"Количество элементво входящих в массив более одного раза:";
	n=0;
	for (i=1;i<6;i++)
	{
			for (j=1;j<6;j++)
			{
				if (D[i]==D[j])
				{

				}
			}

	}
	cout<<n<<endl;

system("pause");
}
как прописать счетчик элементво, которые встречаются более одного раза? не получается у меня совсем(((
vityanya вне форума Ответить с цитированием
Старый 16.12.2010, 00:39   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

как вариант можно использовать структуру
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 16.12.2010, 00:41   #3
vityanya
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 23
По умолчанию

Цитата:
Сообщение от kaljan775 Посмотреть сообщение
как вариант можно использовать структуру
думаю, если бы я хорошо знал структуры, у меня не было бы проблем с такой нубской проблемой как счетчик)
vityanya вне форума Ответить с цитированием
Старый 16.12.2010, 00:55   #4
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

1. массивы считаются с 0
2. тут используется О_0 метод пузырьковой сортировки, только вместо сравнения и замены переменных - увеличиваем счетчик и завершаем внутренний цикл

Код:
n=0;
for (i=0;i<6;i++)
{
	for (j=i+1;j<6;j++)
	{
		if (D[i]==D[j])
		{
			n++;//этот элемент повторяется
			break;//1 раз этот элемент повторяется, хоть он дальше повторяйся, уже пофиг, заткнуть цикл для j
		}
	}
}
cout<<n<<endl;
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 16.12.2010, 01:01   #5
vityanya
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 23
По умолчанию

Цитата:
Сообщение от kaljan775 Посмотреть сообщение
1. массивы считаются с 0
2. тут используется О_0 метод пузырьковой сортировки, только вместо сравнения и замены переменных - увеличиваем счетчик и завершаем внутренний цикл
блииин, точно!!! спасибо большущеее тебе!!!

Цитата:
Сообщение от kaljan775 Посмотреть сообщение
1. массивы считаются с 0
2. тут используется О_0 метод пузырьковой сортировки, только вместо сравнения и замены переменных - увеличиваем счетчик и завершаем внутренний цикл

Код:
n=0;
for (i=0;i<6;i++)
{
	for (j=i+1;j<6;j++)
	{
		if (D[i]==D[j])
		{
			n++;//этот элемент повторяется
			break;//1 раз этот элемент повторяется, хоть он дальше повторяйся, уже пофиг, заткнуть цикл для j
		}
	}
}
cout<<n<<endl;

Код:
Введите значения элементов массива:
D[1]=1
D[2]=1
D[3]=1
D[4]=1
D[5]=1
Полученный массив:
D{ 1 1 1 1 1 }
Количество элементво входящих в массив более одного раза:4
все же не правильно.... тут вроде один элемент повторяется более 1 раза...

Последний раз редактировалось Stilet; 16.12.2010 в 09:17.
vityanya вне форума Ответить с цитированием
Старый 16.12.2010, 01:34   #6
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

ща, придумаю ченить поизвращеннее
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 16.12.2010, 01:35   #7
vityanya
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 23
По умолчанию

Цитата:
Сообщение от kaljan775 Посмотреть сообщение
ща, придумаю ченить поизвращеннее
:D я тоже)
vityanya вне форума Ответить с цитированием
Старый 16.12.2010, 01:48   #8
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

извращение номер два, использовано два массива
если все ок - жмите плюсик
Код:
int main()
{
	int n=0;
	int d[5]={1,2,3,2,1};
	int a[6]={0,0,0,0,0};
	for (int i=0;i<5;i++){
		for (int j=i+1;j<5;j++){
			if (d[i]==d[j]){
				if ((a[i]==0)&&(a[j]==0))
					n++;
				a[i]++;
				a[j]++;
			}
		}
	}
cout<<n<<endl;
system("pause");
return 0;

}
с вас - поиск ошибок :D
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 16.12.2010, 01:57   #9
vityanya
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 23
По умолчанию

Цитата:
Сообщение от kaljan775 Посмотреть сообщение
извращение номер два, использовано два массива
если все ок - жмите плюсик
Код:
int main()
{
	int n=0;
	int d[5]={1,2,3,2,1};
	int a[6]={0,0,0,0,0};
	for (int i=0;i<5;i++){
		for (int j=i+1;j<5;j++){
			if (d[i]==d[j]){
				if ((a[i]==0)&&(a[j]==0))
					n++;
				a[i]++;
				a[j]++;
			}
		}
	}
cout<<n<<endl;
system("pause");
return 0;

}
с вас - поиск ошибок :D
теперь выводит 0

а можно просто алгритм написать? как ето должна выполнять программа?

Код:
	n=0;
	b=d[1];
	for (i=1;i<6;i++)
	{
				if (b==D[i])
				{
					b=D[i];
					n++;
				}

	}
            n=n-1;
	cout<<n<<endl;
вроде как разобрался, выводит норм пока)
Коляну большое спасибо!

Последний раз редактировалось Stilet; 16.12.2010 в 09:18.
vityanya вне форума Ответить с цитированием
Старый 16.12.2010, 02:20   #10
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

]мистика, должно выводить 1 - выводит 0, может у вас что-то не так, потому что у меня при 1 1 1 1 1 выводит 1, 1 1 2 2 3 выводит 2

повторов 0, так как у вас неправильно задано, я уже говорил, что в C массивы идут с 0, и если объявляешь массив на 5 элементов, это выглядит так
Код:
int d[5]={1,2,3,4,5};
int i,n=0;
int b=d[0]
for (i=1;i<5;i++)
{ 
 if (b==d[i]){
  b=d[i];
  n++;
 }
}
cout<<n<<endl;
просто вы не забывайте что в С++ выход за границы массива не преследуется


вот эта программа у меня прекрасно работает

Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{	
	setlocale(LC_ALL ,"Russian");
	int i,b,n,j;
	int D[5];
	int a[5]={0,0,0,0,0};
	cout<<"Введите значения элементов массива:"<<endl;
	for (i=0; i<5;i++)
	{
		cout<<"D["<<i<<"]=";
		cin>>D[i];
		//a[i]=D[i];
	}
	cout<<"Полученный массив:"<<endl;
	cout<<"D{ ";
	for	(i=0;i<5;i++)
		cout<<D[i]<<" ";

	cout<<"}"<<endl;
	cout<<"Количество элементво входящих в массив более одного раза:";
	n=0;
	for (int i=0;i<5;i++){
		for (int j=i+1;j<5;j++){
			if (D[i]==D[j]){
				if ((a[i]==0)&&(a[j]==0))
					n++;
				a[i]++;
				a[j]++;
			}
		}
	}
	cout<<n<<endl;

_getch();
return 0;
}
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery

Последний раз редактировалось kaljan775; 16.12.2010 в 02:29.
kaljan775 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление поля со счетчиком при добавлении записи через форму в клиент-серверной БД byte916 Microsoft Office Access 7 08.06.2010 02:17
Ошибка со счетчиком адреса (Assembler TASM) Fata1ity Помощь студентам 0 28.05.2010 03:08
Циклы с счетчиком, помогите! Elena90 Microsoft Office Excel 2 13.12.2009 20:48
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37
элементарная задача на цикл с счетчиком VaR_Female Паскаль, Turbo Pascal, PascalABC.NET 3 28.10.2008 10:04