DAVIDOV Публикувано Май 3, 2007 Report Share Публикувано Май 3, 2007 Програмиране на С++Моля Ви за помощ относно заданеното тук:· Да се извърши проверка за коректност на входните данни.· Всички данни (освен размера на масива) се въвеждат от клавиатурата.· Ако няма данни, отговарящи на условието на задачата, да се изведе подходящо съобщение.Даден е масив от цели числа, съдържащ n елемента, n>10. Да се състави и изведе на екрана друг масив m с 10 елемента, чиито елементи mi съдържат броя срещания на числата i в дадения масив. Как трябва да бъде направен...?!?! Благодаря за помощта предварително... Цитирай Link to comment Сподели другаде More sharing options...
itodorov Публикувано Май 4, 2007 Report Share Публикувано Май 4, 2007 (Редактиран) Ако съм разбрал правилно условието на задачата (защото имам известни съмнения в това отношение), на теб ти трябва да бъде изведен броят съвпадения с цифрите от 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; } } Ако евентуално не съм разбрал условието добре, ще преправя кода, така че да съответства на това, което се търси. Поздрави. Редактиран Май 4, 2007 от netcentric Цитирай Link to comment Сподели другаде More sharing options...
Tonos Публикувано Май 14, 2007 Report Share Публикувано Май 14, 2007 Аз също търся помощ по две задачи на C++. Нямам никакво време. Сега започвам да изучавам езика, обаче нещо не ми се отдава. Задача 1 Задача 2:Всяка последователност от равни числа в масив от цели числа се нарича площадка. Да се състави програма, която определя дължината и началото на най-дългата площадка в даден масив. Използвам компилатор Dev-C++.Много ще съм благодарен на този, който ги реши. Мога да дам покани за Demonoid.com. Също мисля да напиша някоя статия Windows Vista, понеже този форум много ми допада. Цитирай Link to comment Сподели другаде More sharing options...
itodorov Публикувано Май 14, 2007 Report Share Публикувано Май 14, 2007 Преди няколко дни мернах задача №2 в клуб "Програмисти" на Дир.бг. Темата се намира тук. Цитирай Link to comment Сподели другаде More sharing options...
Tonos Публикувано Май 16, 2007 Report Share Публикувано Май 16, 2007 (Редактиран) Благодаря за линка. Имaх полза от информацията. Не искам да бъда нахален, но бихте ли ми дали някава насока за 1-ва задача. Тя е с условие:Да се напише функция, която намира броя на елементите на редицатас общ член a_i = i^3 - 3i^2 + n, i=1,2,...n, които са кратни на 7, като n е параметър на функцията. Опитвам се да я реша, но като новак в програмирането ми е трудно. Редактиран Май 17, 2007 от Tonos Цитирай Link to comment Сподели другаде More sharing options...
s3m0 Публикувано Май 17, 2007 Report Share Публикувано Май 17, 2007 (Редактиран) Мисля че ти трябва масив от 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: Тотално съм объркал условието. Сега се сетих, че трябва да е така: Ако 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; }Не съм много сигурен обаче. Редактиран Май 17, 2007 от s3m0 Цитирай Link to comment Сподели другаде More sharing options...
Препоръчан пост
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.