Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Помощ със задача C++

Featured Replies

Да се напише програма, която при въвеждане на n цели числа съобщава максималното p, такова че измежду n-те цели числа има p еднакви.

преди 3 минути, Yoana Markova написа:

Да се напише програма, която при въвеждане на n цели числа съобщава максималното p, такова че измежду n-те цели числа има p еднакви.

1. Не можахте ли да уцелите правилния раздел?

2. Започнете с писането, ние ще помагаме. Тук не толерираме мързела

на August 3, 2016 в 15:42, Yoana Markova написа:

 

Да се напише програма, която при въвеждане на n цели числа съобщава максималното p, такова че измежду n-те цели числа има p еднакви.

 

Не разбрах кое не е ясното със задачата. После ние, форумниците сме били адски груби. :(

Редактирано от frozener (преглед на промените)

  • 2 седмици по-късно...
#include <iostream>

using namespace std;

int main()
{
    int n,p;
    cout << "N = ";
    cin >> n;
    if (n<1) return 0;
    int *a=new int[n];
    int *c=new int[n];
    p=0;
    for (int i=0; i<n; i++)
    {
        cout<<"A["<<i<<"] = ";
        cin >>a[i];
        int t=1;
        for (int j=i-1; j>=0; j--)
            if (a[i]==a[j]) 
            {
                 t=c[j]+1;
                 break;
            }
        c[i]=t;
        if (p<t) p=t;
    }
    cout<<"P = "<<p<<endl;
    delete[] a;
    delete[] c;
}

 

преди 6 минути, ined написа:

 

                 t=c[j]+1;

Много опасен ред, особено при условие че масива не е инициализиран (нулиран)

И вместо това:

t=c[j]+1;
                 break;
            }
        c[i]=t;

Е много по-просто да се увеличи директно стойността на елемента от масива намясто

току-що, ined написа:

Не това е целта и c[j] е инициализиран вече.

Къде? Ти само го дефинираш. И по дефиниция може да има каквато си иска стойност

#include <iostream>
#include <cstdlib>
using namespace std;

struct mruct
{
	int element;
	int count;
}mru;


int _tmain(int argc, _TCHAR* argv[])
{
	mru.count = 1;
	int p = 1;
	int n;
	cout << "N = ";
	cin >> n;
	if (n<1) return 0;
	mruct* a = (mruct*)malloc(n * sizeof(mruct));
	int i;
	for (i = 0; i < n; i++)
	{
		cout << "A[" << i << "] = ";
		cin >> mru.element;
		for (int j = 0; j < i; j++)
		{
			if (a[j].element == mru.element)
			{
				a[j].count++;
				if (p < a[j].count) p = a[j].count;
  				break;
			}
		}
		a[i] = mru;
	}
	cout << p;
  	free(a);
	return 0;
}

 

Редактирано от Реджеп Иведик (преглед на промените)

На чисто С с хеш таблица

#include <stdlib.h>
#include <stdio.h>

struct mruct
{
	int element;
	int count;
	struct mruct* next;
}mru, *conductor, *monductor;

struct mruct** table;

int main()
{
	int p = 1;
	int n;
	int i;
	printf("N = ");
	scanf("%d", &n);
	if (n < 1) return 0;
	table = (struct mruct**)calloc(sizeof(struct mruct*), n);
	for (i = 0; i < n; i++)
	{
		printf("Input next integer --> ");
		scanf("%d", &mru.element);
		if (table[mru.element % n] == 0)
		{
			mru.count = 1;
			mru.next = 0;
			table[mru.element % n] = (struct mruct*)malloc(sizeof(mruct));
			*table[mru.element % n] = mru;
		}
		else
		{
			conductor = table[mru.element % n];
			for (;;)
			{
				if (conductor->element == mru.element)
				{
					conductor->count++;
					if (p < conductor->count) p = conductor->count;
					break;
				}
				else
				{
					if (conductor->next == 0)
					{
						mru.count = 1;
						mru.next = 0;
						conductor->next = (struct mruct*)malloc(sizeof(mruct));
						*(conductor->next) = mru;
						break;
					}
					else
					{
						conductor = conductor->next;
					}
				}
			}
		}
	}
	printf("%d", p);
	for (i = 0; i < n; i++)
	{
		if (table[i] == 0) continue;
		conductor = table[i];
		while (conductor->next != 0)
		{
			monductor = conductor->next;
			free(conductor);
			conductor = monductor;
		}
		free(conductor);
	}
  	free(table);
	return 0;
}

 

Редактирано от Реджеп Иведик (преглед на промените)

На чисто С++ с хеш таблица

#include <iostream>
#include <unordered_map>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	int temp;
	int p = 1;
	int n;
	unordered_map <int, int> umap;
	cout << "N = ";
	cin >> n;
	if (n < 1) return 0;
	int i;
	for (i = 0; i < n; i++)
	{
		cout << "Input next integer --> ";
		cin >> temp;
		auto search = umap.find(temp);
		if (search != umap.end())
		{
			umap[temp]++;
			if (p < umap[temp]) p = umap[temp];
		}
		else
		{
			umap.emplace(temp, 1);
		}
	}
	cout << p;
	return 0;
}

 

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.