Премини към съдържанието

Препоръчан отговор


За монтажа на дадено изделие са необходими проводници с дължини в границите [K,M].Стойностите К и М се въвеждат от клавиатурата и трябва да са 0 < К < М. Разполагате с 20 проводника с произволни ( положителни ) дължини , чиито стойности въведете и съхранете в едномерен масив.
Намерете колко на брой проводници не могат да се използват.
Открийте проводниците , които могат да се използват без корекция и за тях прехвърлете в два нови едномерни масива дължините им и техните индекси от първоначалния масив.В други два масива запишете дължините и индексите на по - дългите проводници,които могат да се използват след разрязване.
Изведете получените масиви в подходящ вид на екрана.

====================================================================================

Helllp.. :( 
Нищо не разбирам от това не знам как да я започна дори..а пък без тази програма няма да ме допуснат на изпит ии (мамата си ебало..) :D 
Ще съм много благодарен ако някой колега удари едно рамо.. 
Благодаря предварително!

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

За монтажа на дадено изделие са необходими проводници с дължини в границите [K,M].Стойностите К и М се въвеждат от клавиатурата и трябва да са 0 < К < М. Разполагате с 20 проводника с произволни ( положителни ) дължини , чиито стойности въведете и съхранете в едномерен масив.

Намерете колко на брой проводници не могат да се използват.

Открийте проводниците , които могат да се използват без корекция и за тях прехвърлете в два нови едномерни масива дължините им и техните индекси от първоначалния масив.В други два масива запишете дължините и индексите на по - дългите проводници,които могат да се използват след разрязване.

Изведете получените масиви в подходящ вид на екрана.

====================================================================================

Helllp.. :( 

Нищо не разбирам от това не знам как да я започна дори..а пък без тази програма няма да ме допуснат на изпит ии (мамата си еб*ло..) :D 

Ще съм много благодарен ако някой колега удари едно рамо.. 

Благодаря предварително!

Започнете вие програмата, ние ще помагаме. А ако нищо не разбирате какво сте правили по време на срока.семестъра?

  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Аз ако знаех как да я започна нямаше да пускам темата.. а кво правих по време на семестъра.. наложи ми се да си тръгна по - рано.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Аз ако знаех как да я започна нямаше да пускам темата..

а кво правих по време на семестъра.. наложи ми се да си тръгна по - рано.

Добре, в този случай нека подходим с идеи - какво точно се иска в задачата.

 

В случая ще се въздържа да пиша код по ред причини, обсъждани из форума. Но ще Ви дам идеи, малко насока и псевдокод, които да помогнат при разписването на задачата. ОК ?

 

Тъй ... 

За монтажа на дадено изделие са необходими проводници с дължини в границите [K,M].Стойностите К и М се въвеждат от клавиатурата и трябва да са 0 < К < М. Разполагате с 20 проводника с произволни ( положителни ) дължини , чиито стойности въведете и съхранете в едномерен масив.

Намерете колко на брой проводници не могат да се използват.

Открийте проводниците , които могат да се използват без корекция и за тях прехвърлете в два нови едномерни масива дължините им и техните индекси от първоначалния масив.В други два масива запишете дължините и индексите на по - дългите проводници,които могат да се използват след разрязване.

Изведете получените масиви в подходящ вид на екрана.

1) Условието добре задава проверките, който трябва да съставите, преди да започнете с работата върху данните. K, M, както и 20-те стойности на проводниците трябва да се проверят за валидност ( K > 0; M > 0 && M > K; conductors > 0, където conductors е масива със въвежданите стойности на дължината на проводниците, а 0 <= i < 20).

2) "Проводници, които не могат да се използват" ще рече такава стойност на conductors, където conductors < К. Т.е. говорим за цикъл по масива conductor, заедно с проверка за conductor < K и актуализиране на брояча за "неизползваеми" проводници.

3) Последните 2 условия са почти еднакви като код, с разликата, че едното ще прави проверка за K <= conductors <= M, докато другото ще е conductors > M. Прехвърлянето на стойностите по двойките масиви е тривиално като код и операция.

 

Прилагам псевдокода, който ми идва на ум за момента:

#define MAX 20int unusableConductors = 0;double K=0.0, M=0.0;double conductors[MAX];double useCondNoCorrection[MAX], useCondNoCorrectionIdx[MAX];double useCondCorrection[MAX], useCondCorrectionIdx[MAX];while(K <= 0) {	cout << "Enter K:"	cin >> K;}while (M <= K) {	cout << "Enter M:"	cin >> M;}double tempInputCondVal = 0;for (int i = 0; i < MAX; i++) {	cin >> tempInputCondVal ;	while (tempInputCondVal <= 0) {		cout << "Enter valid possitive value for confuctor" << i+1 << ":" << endl;		cin >> tempInputCondVal ;	}	conductors[i] = tempInputCondVal ;}//Store the last indexes of the arraysint condNoCorrectionLastIdx = -1, condCorrectionLastIdx = -1;for (int i = 0; i < MAX; i++) {	//Check conductor:	if (conductors[i] < K) {		//Unusable conductor		unusableConductors++;	} else if (conductors[i] < M) {		//No correction for conductor:		useCondNoCorrection[++condNoCorrectionLastIdx] = conductors[i];		useCondNoCorrectionIdx[condNoCorrectionLastIdx] = i;	} else {		//Correction for conductor:		useCondCorrection[++condCorrectionLastIdx] = conductors[i];		useCondCorrectionIdx[condCorrectionLastIdx] = i;	}}cout << "Conductors, that fit in exactly:" << endl;for (int i = 0; i < condNoCorrectionLastIdx; i++){	cout << "Conductor " << useCondNoCorrectionIdx[i] << " with length " <<  useCondNoCorrection[i] << endl;}cout << endl;cout << "Conductors, that fit in exactly:" << endl;for (int i = 0; i < condCorrectionLastIdx; i++){	cout << "Conductor " << useCondCorrection[i] << " with length " <<  useCondCorrectionIdx[i] << endl;}cout << endl;cout << "Unusable conductors: " << unusableConductors << endl;

Поздрави !

  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

soundtracker, е ако на това му викаш псевдокод... На мен ми изглежа, че ако го заградиш с един main и ще се компилира и ще си работи. С един два леки детайла, де :) Не приемам аргументацията на luxeon__ за какво му трябва помощ, ама тъй и тъй си се намесил и аз да се включа:

 

...........         } else if (conductors[i] < M) { // Тук трябва да е <=, защото според условието, интервалът е затворен - [L, M]		//No correction for conductor:		useCondNoCorrection[++condNoCorrectionLastIdx] = conductors[i]; // Това (prefix ++ в индексиране) е практика,                                                                                // която аз не харесвам, защото е много податлива                                                                                // на грешки. Доказателството следва. ...........for (int i = 0; i < condNoCorrectionLastIdx; i++){  // Тъй като горе сме използвали префиксно инкрементиране,                                                    // condNoCorrectionLastIdx е последната валидна стойност.                                                    // Обаче в цикъла ползваме стандартното условие с < и тя                                                    // ще бъде изключена от последвалата обработка.                                                    // Еквивалентно за другата променлива............

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

soundtracker, е ако на това му викаш псевдокод... На мен ми изглежа, че ако го заградиш с един main и ще се компилира и ще си работи. С един два леки детайла, де :)

Не приемам аргументацията на luxeon__ за какво му трябва помощ, ама тъй и тъй си се намесил и аз да се включа:

flare, те моите псевдокодове в темите винаги стават такива - просто като започна да пиша и се отнасям да дописвам, да слагам в скоби и да правя пояснения - в крайна сметка виждам, че се е получило нещо, което аз не успявам да разбера и логично отива в кофата и написвам "творение", като горния ми пост ... и за капак му слагам невинното име "псевдокод"  :D

 

P.S. 

Доказателството следва. :)

 

Мисля, че в случая, както и в небезизвестната поговорка, доволно слепи съм ги родил тия 2 последни цикъла  :ph34r: . С Notepad толкова си мога :P !

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Мисля, че в случая, както и в небезизвестната поговорка, доволно слепи съм ги родил тия 2 последни цикъла  :ph34r: . С Notepad толкова си мога :P !

Ами не знам, аз само разглеждах на кода - от патене е цялата работа - като видя префиксен ++ на индекс в цикъл и по навик, веднага проверявам след това индекса да не се ползва като бройка - което пък е логичното очакване на повечето хора. И затова го видях. И пак затова казах, че е лоша практика - дори и ти да беше направил циклите с <=, в код подържан от повече хора, някой от другите можеше да добави подобна грешка в бъдеще. А личният ми опит показва, че като хората свикнат с един начин на писане и трудно го променят независимо дали са в екип. :) Затова ->

2. "Винаги пиши код така, сякаш човека, който ще го подържа е опасен психопат, който знае къде живееш" - Мартин Голдинг

 

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.