Jump to content

Молба за помощ за задача на С++


Препоръчан пост

Програмиране на С++

Моля Ви за помощ относно заданеното тук:

· Да се извърши проверка за коректност на входните данни.

· Всички данни (освен размера на масива) се въвеждат от клавиатурата.

· Ако няма данни, отговарящи на условието на задачата, да се изведе подходящо съобщение.

Даден е масив от цели числа, съдържащ n елемента, n>10. Да се състави и изведе на екрана друг масив m с 10 елемента, чиито елементи mi съдържат броя срещания на числата i в дадения масив.

 

Как трябва да бъде направен...?!?!

 

Благодаря за помощта предварително...

Link to comment
Сподели другаде

Ако съм разбрал правилно условието на задачата (защото имам известни съмнения в това отношение), на теб ти трябва да бъде изведен броят съвпадения с цифрите от 0 до 9, които се откриват в числата от елементите на масива N. И всичко това под формата на масив M с 10 елемента (позиции от 0 до 9). Ако това е така, ето това би трябвало да реши проблема:

 

#include <conio.h>
#include <iostream>
#include <time.h>

bool IsPositiveInteger(char* ch);
void CountOccurrences(int* arrSrc, int srcSize, int* arrDest, int nDestSize);

using namespace std;

int main(int argc, char* argv[])
{
const int arrSize = 20;
int n[arrSize];
int m[10];

int i = arrSize; //celochislena promenliva za syhranivane na vremenni stoinosti

//inicializirane na elementite na masiva M i masiva N
do 
	n[--i] = 0;
while (i);

for (i=0; i < 10; i++)
	m[i] = 0;

int ch = 0;

cout << "----------------------------------------------------------------- " << endl;
cout << "Zhelaete li proizvolni stoinosti za elementite na masiva N (y/n): " << endl;
cout << "----------------------------------------------------------------- " << endl;
do
	ch = _getch();
while (ch != 'y' && ch != 'n');

if ('y' == ch)
{
	cout << endl;
	cout << "Generirane na " << (arrSize) << " sluchaini polojitelni chisla" << "... "; 
	srand( (unsigned)time( NULL ) );
	for (i=0; i < arrSize; i++)
		n[i] = rand() % (arrSize * 100);

	cout << "Gotovo!" << endl << endl;;

}
else
{
	int nInput = 0;
	char chInput[10];

	cout << endl;

	for (i=0; i < arrSize; i++)
	{
		do
		{
			cout << "molia, vyvedete stoinost za n[" << i << "]: ";
			cin >> chInput;
		} 
		while ( IsPositiveInteger( &chInput[0] ) == false );

		n[i] = atoi(chInput);
	}
}

cin.clear();

cout << "-----------------------------------------------------" << endl;
cout << "Zhelaete li da pregledate vyvedenite stoinosti? (y/n)" << endl; 
cout << "-----------------------------------------------------" << endl;

do
	ch = _getch();
while (ch != 'y' && ch != 'n');

if ('y' == ch)//izvejdame elementite na masiva M
	for (int i=0; i < arrSize; i++)
		cout << "n[i=" << i << "] = " << n[i] << endl;

cout << "\n"; 

cout << "--------" << endl;
cout << "REZULTAT" << endl; 
cout << "--------" << endl;

CountOccurrences(n, arrSize, m, 10);

cout << "\nNatisnete proizvolen klavish za krai." << endl;
_getch();

return 0;
}

bool IsPositiveInteger(char* ch)
{
for(int i=0; *(ch + i) != 0; i++)
{
	if ( *(ch + i)  > '9' || *(ch + i) < '0')
	{
		cout << " Greshka: vyvedenata stoinost ne e polojitelno cialo chislo!" << endl;
		return false;
	}
}

return true; 
}

void CountOccurrences(int* arrSrc, int srcSize /* > 0 */, int* arrDest, int nDestSize /* > 0 */)
{
int nTempNumber = 0;
int nDigit = 0;

for (int i=0; i < srcSize; i++)
{
	nTempNumber = arrSrc[i];

	do
	{
		nDigit = nTempNumber % 10;
		arrDest[nDigit]++;

		nTempNumber /= 10;
	}
	while (nTempNumber != 0);

}

for (int i = 0; i < 10; i++)
{
	if (arrDest[i] == 0)
		cout << "Cifrata " << i << " ne se sreshta v masiva N" << endl;
	else
		cout << "Cifrata " << i << " se sreshta " << arrDest[i] << " pyti." << endl;
}
}

 

Ако евентуално не съм разбрал условието добре, ще преправя кода, така че да съответства на това, което се търси.

 

Поздрави.

Редактиран от netcentric
Link to comment
Сподели другаде

  • 2 weeks later...

Аз също търся помощ по две задачи на C++. Нямам никакво време. Сега започвам да изучавам езика, обаче нещо не ми се отдава.

 

Задача 1

 

Задача 2:

Всяка последователност от равни числа в масив от цели числа се нарича площадка. Да се състави програма, която определя дължината и началото на най-дългата площадка в даден масив.

 

Използвам компилатор Dev-C++.

Много ще съм благодарен на този, който ги реши. Мога да дам покани за Demonoid.com. Също мисля да напиша някоя статия Windows Vista, понеже този форум много ми допада.

Link to comment
Сподели другаде

Благодаря за линка. Имaх полза от информацията. Не искам да бъда нахален, но бихте ли ми дали някава насока за 1-ва задача. Тя е с условие:

Да се напише функция, която намира броя на елементите на редицата

с общ член a_i = i^3 - 3i^2 + n, i=1,2,...n, които са кратни на 7, като n е параметър на функцията.

Опитвам се да я реша, но като новак в програмирането ми е трудно.

Редактиран от Tonos
Link to comment
Сподели другаде

Мисля че ти трябва масив от n елемента, който се въвежда в зависимост от n. Примерно:

а[1]=i*i*i-3*i*i+1

а[2]=i*i*i-3*i*i+2

и така до n

а[n]=i*i*i-3*i*i+n

и после се проверява всеки елемент дали е кратен на 7 и ако е кратен може да си дигаш един брояч с 1.

След това връщаш този брояч от функцията.

 

Edit: Тотално съм объркал условието. :blush: Сега се сетих, че трябва да е така:

 

Ако n е въведен 9 примерно трябва да стане така:

 

а[1]=1*1*1-3*1*1+9

а[2]=2*2*2-3*2*2+9

а[3]=3*3*3-3*3*3+9

...

а[9]=9*9*9-3*9*9+9

 

:)

 

И аз съм нов в програмирането. С++ го уча от 4 месеца някъде. Функцията може да стане така:

int func (int n)
{	
int br=0, a[n+1];
for (int i=1; i<=n; i++)
{
	a[i]=i*i*i-3*i*i+n;
	if (!(a[i]%7)) br++;
}
return br;
}

Не съм много сигурен обаче. :)

Редактиран от s3m0
Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...