PAK AZ
15 отговора
350 прегледа
PAK AZ
IMAM ZADA4A NA NA DELPHI:TRYABVA DA SAZDAM PRILOJENIE KOETO
DA INVERTIRA (TRANSPONIRA) KVADRATNA MATRICA PRI ZADADENI RAZMERI (TE SA NAPALNO SLU4AINI) OT
POTREBITELYA.
ZNAM 4E TOVA E MNOGO LESNO NO AZ I TOVA NE MOGA!!!
NA VAS NYAMA DA VI OTNEME MNOGO VREME.
AKO NYAKOI ISKA DA MI SADEISTVA DA MI IZPRATI RESHENIETO NA
VILI_PETKOV@ABV.BG
MERSI PREDVARITELNO!!!‰
DA INVERTIRA (TRANSPONIRA) KVADRATNA MATRICA PRI ZADADENI RAZMERI (TE SA NAPALNO SLU4AINI) OT
POTREBITELYA.
ZNAM 4E TOVA E MNOGO LESNO NO AZ I TOVA NE MOGA!!!
NA VAS NYAMA DA VI OTNEME MNOGO VREME.
AKO NYAKOI ISKA DA MI SADEISTVA DA MI IZPRATI RESHENIETO NA
VILI_PETKOV@ABV.BG
MERSI PREDVARITELNO!!!‰
Re: PAK AZ
С удоволствие бих ти помогнал да си решиш проблема, но забележи глагола "помагам". Бях ти написал едно решение на предишното ти питане, ама май идеята ти е някой да ти напраска цялата задача, ако може и с обяснения, пък за теб да остане да сложиш заглавна страница...
Значи идеята ми е следната - ако си решил наистина да се бориш и имаш нужда от помощ - ок. Ще използваме форума и ще ти кажа къде и какви контроли да сложиш, както и какъв код се пише и какъв е смисъла му - т.е. ще си направиш решението с моя помощ. Ако обаче целта ти е да получиш колетче с панделка, ще се радвам да го получиш от друг. Не се и съмнявам че има много желаещи да помогнат, но ми се струва малко вероятно някой да работи за "мерси".
В крайна сметка за мен форума е място където си помагаме, а не вършим чужда работа.
Пък ако ти е спешно, има един милион места дето ще ти изработят каква да е курсова задача с обяснения и т.н. Виж само по спирките около МЕИ - пълно е с обяви.
чети и дишай по-леко
Значи идеята ми е следната - ако си решил наистина да се бориш и имаш нужда от помощ - ок. Ще използваме форума и ще ти кажа къде и какви контроли да сложиш, както и какъв код се пише и какъв е смисъла му - т.е. ще си направиш решението с моя помощ. Ако обаче целта ти е да получиш колетче с панделка, ще се радвам да го получиш от друг. Не се и съмнявам че има много желаещи да помогнат, но ми се струва малко вероятно някой да работи за "мерси".
В крайна сметка за мен форума е място където си помагаме, а не вършим чужда работа.
Пък ако ти е спешно, има един милион места дето ще ти изработят каква да е курсова задача с обяснения и т.н. Виж само по спирките около МЕИ - пълно е с обяви.
чети и дишай по-леко
Аман де!
Аз пък те бях питал какво всъщност те затруднява, но така и не получих отговор. Ако искаш помощ най-добре е всъщност да знаеш каква и да задаваш конкретни въпроси. Е, съгласен съм с Печения, че ако искаш някой да ти реши цялата задача ще трябва да се изръсиш.
Re: PAK AZ
na men mi e qsno kak shte stane samoto transponirane ,no ne mi e qsno kak string grid-a shte predobie proizvolnite razmeri (2,3,4,...78978) koito si gi okazva potrebitelq????????????
ок
StringGrid може придобива размери run-time, демек по време на изпълнение на програмата. Пробвай следното:
Сложи един StringGrid и две SpinEdit. Кръсти ги съответно:
StrinGrid - Matrix
SpinEdit1 - MatrixX
SpinEdit2 - MatrixY
Сега на OnChange събитието на MatrixX сложи следния код:
Matrix.ColCount:=MatrixX.Value;
На OnnChange събитието на MatrixY сложи:
Matrix.RowCount:=MatrixY.Value;
Ето и алгоритъма за твоя проблем:
1. Слагаш един StringGrid - Matrix1. Махаш му сивите ред и колона със FixedCols:=0 и FixedRow:=0. Слагаш до него и Matrix2. Това ти е входа и изхода - т.e. матрицата дето потребителя ще въвежда стойности /Matrix1/ и дето ще вижда инвертирането /Matrix2/
2. Потребителя въвежда размерите на Matrix1 - може и със SpinEdit. Удобно е да поставиш Min и Max със желаните размери и да сложиш EditorEnabled:=False, както и да поставиш похдодящи начални стойности във Value
Закачаш две SpinEdit полета и ги правиш да определят размера на Matrix1 - както видя по-горе
3. Потребителя въвежда числата в Matrix1. Всъщност дали ще са числа или текст, няма значение - все ще работи.
4. Потребителя натиска един бутон Invert, който ти слагаш някъде. В него ти правиш следното:
Matrix2.ColCount:=Matrix1.RowCount;
Matrix2.RowCount:=Matrix1.ColCount;
Това ти прави Matrix2 с подходящи размери за транспониране.
Сега следва и самото транспониране:
For x:=0 to Matrix1.ColCount-1
For y:=0 to Matrix1.RowCount-1
Matrix2.Cells [y,x]:=Matrix1.Cells [x,y];
Е, накрая сложи малко етикети дето да казват кое какво е.
Ако нещо не стане, питай пак.
чети и дишай по-леко
Сложи един StringGrid и две SpinEdit. Кръсти ги съответно:
StrinGrid - Matrix
SpinEdit1 - MatrixX
SpinEdit2 - MatrixY
Сега на OnChange събитието на MatrixX сложи следния код:
Matrix.ColCount:=MatrixX.Value;
На OnnChange събитието на MatrixY сложи:
Matrix.RowCount:=MatrixY.Value;
Ето и алгоритъма за твоя проблем:
1. Слагаш един StringGrid - Matrix1. Махаш му сивите ред и колона със FixedCols:=0 и FixedRow:=0. Слагаш до него и Matrix2. Това ти е входа и изхода - т.e. матрицата дето потребителя ще въвежда стойности /Matrix1/ и дето ще вижда инвертирането /Matrix2/
2. Потребителя въвежда размерите на Matrix1 - може и със SpinEdit. Удобно е да поставиш Min и Max със желаните размери и да сложиш EditorEnabled:=False, както и да поставиш похдодящи начални стойности във Value
Закачаш две SpinEdit полета и ги правиш да определят размера на Matrix1 - както видя по-горе
3. Потребителя въвежда числата в Matrix1. Всъщност дали ще са числа или текст, няма значение - все ще работи.
4. Потребителя натиска един бутон Invert, който ти слагаш някъде. В него ти правиш следното:
Matrix2.ColCount:=Matrix1.RowCount;
Matrix2.RowCount:=Matrix1.ColCount;
Това ти прави Matrix2 с подходящи размери за транспониране.
Сега следва и самото транспониране:
For x:=0 to Matrix1.ColCount-1
For y:=0 to Matrix1.RowCount-1
Matrix2.Cells [y,x]:=Matrix1.Cells [x,y];
Е, накрая сложи малко етикети дето да казват кое какво е.
Ако нещо не стане, питай пак.
чети и дишай по-леко
Re: ок
NE VQRVAH 4E SHTE OTKRIQ TAKAVA OTZIV4IVOST V TOZI KLUB NO QVNO V NASHTA DARJAVA IMA I SVESNI HORA!!!!!!!!!!
NO MOETO NAHALSTVO NQMA KRAI.
ZADA4ATA MI E PO LESNA OTKOLKOTO SI Q RAZBRAL:
TRQBVA PROSTO POTREBITELQ DA VAVEDE EDNO 4ISLO KOETO DA PREDSTAVLQVA
RAZMERA NA KVADRATNATA MATRICA.TAZI MATRICA TRQBVA DA SE IZPALNI SAS SLU4AINI 4ISLA 4REZ "RANDOMIZE" (IZVINQVAI 4E az TI OBQSNQVAM TOVA NESHTO).
SLED TOVA 4REZ NQKAKAV BUTON ("INVERT") DA SE TRANSPONIRAT 4ISLATA.
SAMO TOVA E?HELP MEEEE.
NO MOETO NAHALSTVO NQMA KRAI.
ZADA4ATA MI E PO LESNA OTKOLKOTO SI Q RAZBRAL:
TRQBVA PROSTO POTREBITELQ DA VAVEDE EDNO 4ISLO KOETO DA PREDSTAVLQVA
RAZMERA NA KVADRATNATA MATRICA.TAZI MATRICA TRQBVA DA SE IZPALNI SAS SLU4AINI 4ISLA 4REZ "RANDOMIZE" (IZVINQVAI 4E az TI OBQSNQVAM TOVA NESHTO).
SLED TOVA 4REZ NQKAKAV BUTON ("INVERT") DA SE TRANSPONIRAT 4ISLATA.
SAMO TOVA E?HELP MEEEE.
Re: ок
Значи нещата седят така:
1. Създаваш 2 StringGrid-а - Matrix1 и Matrix2 - както го писах преди
2. Слагаш един SpinEdit - MatrixSize - както го писах преди
3. Два бутона CreateMatrix и InvertMatrix
На MatrixSize закачаш следното - то ще направи размерите и на двете матрици както ги е задал потребителя:
Matrix1.ColCount:=MatrixSize.Value;
Matrix1.RowCount:=MatrixSize.Value;
Matrix2.ColCount:=MatrixSize.Value;
Matrix2.RowCount:=MatrixSize.Value;
На CreateMatrix слагаш "рандомизирането":
Randomize;
For x:=0 To MatrixSize.Value-1
For y:=0 To MatrixSize.Value-1
Matrix1.Cells [x,y]:=IntToStr (Random (1000));
На InvertMatrix:
For x:=0 To MatrixSize.Value-1
For y:=0 To MatrixSize.Value-1
Matrix2.Cells [x,y]:=Matrix1.Cells [y,x];
Успех
чети и дишай по-леко
1. Създаваш 2 StringGrid-а - Matrix1 и Matrix2 - както го писах преди
2. Слагаш един SpinEdit - MatrixSize - както го писах преди
3. Два бутона CreateMatrix и InvertMatrix
На MatrixSize закачаш следното - то ще направи размерите и на двете матрици както ги е задал потребителя:
Matrix1.ColCount:=MatrixSize.Value;
Matrix1.RowCount:=MatrixSize.Value;
Matrix2.ColCount:=MatrixSize.Value;
Matrix2.RowCount:=MatrixSize.Value;
На CreateMatrix слагаш "рандомизирането":
Randomize;
For x:=0 To MatrixSize.Value-1
For y:=0 To MatrixSize.Value-1
Matrix1.Cells [x,y]:=IntToStr (Random (1000));
На InvertMatrix:
For x:=0 To MatrixSize.Value-1
For y:=0 To MatrixSize.Value-1
Matrix2.Cells [x,y]:=Matrix1.Cells [y,x];
Успех
чети и дишай по-леко
Бележка
Няма ли да е добре кода
Matrix1.ColCount:=MatrixSize.Value;
Matrix1.RowCount:=MatrixSize.Value;
Matrix2.ColCount:=MatrixSize.Value;
Matrix2.RowCount:=MatrixSize.Value;
да е в процедурата при CreateMatrix?
Matrix1.ColCount:=MatrixSize.Value;
Matrix1.RowCount:=MatrixSize.Value;
Matrix2.ColCount:=MatrixSize.Value;
Matrix2.RowCount:=MatrixSize.Value;
да е в процедурата при CreateMatrix?
Re: ок (ZA POSLEDNO)
EDIN SIGORNO TAP VAPROS AMA NA MEN VZE DA MI HARESVA DA SI DRASKAME TA:
KADE SHTE SI ZADAVA RAZMERITE NA MATRICATA POTREBITELQ V NQKAKVO EDIT POLE LI????
KADE SHTE SI ZADAVA RAZMERITE NA MATRICATA POTREBITELQ V NQKAKVO EDIT POLE LI????
няма проблеми
SpinEdit е поле дето имаш текстова кутийка и два залепени бутона - единия намалява стойнстта като число в полето , другия я увеличава. Няма начин да я сбъркаш - намира се в страницата с компоненти Samples. А и няма начин да не я харесаш. Удобно е за нея, че ти дава директно въведеното число в полето Value. Всъщност тя е "слепена" от две стандартни Windows контроли - но спестява немалко писане. А това е целта в Delphi - да направиш повече с по-малко писане. Удивително е да видиш как писан от теб код, решаващ тривиална задача е вграден в обект на Delphi - и как изведнъж програмата става кристално ясна и болезнено кратка. Това и те кара да се влюбиш в този Borland шедьовър.
чети и дишай по-леко
чети и дишай по-леко
Re: Бележка
Практически е все едно, ама е по тарикатско потребителя да вижда как grid-овете "мърдат" като им сменяш размера. А и е по-логично като смениш един размер, той да се сменя, нали?
чети и дишай по-леко
чети и дишай по-леко
Re: няма проблеми
Печен, мисля че си заслужи бирата! :) Дано и човека с многото въпроси да го осъзнае! 
---
Сънуваш ли баница - яж!
ShadowM
---
Сънуваш ли баница - яж!
ShadowM
Гледна точка
Наистина е почти все едно. Просто давам по-естествен смисъл на бутона CreateMatrix. Какво би станало, ако имаме запълнен грид 3х5 и му сменим размера на 4х6 - нови празни полета в които се запълват, според условието, с генерирани от програмата случайни числа, а не от потребителя. Работи, дава върможност за разширение на задачата извън поставеното условие, но семантиката на бутона малко се поизменя. Освен да го означим с FillMatrix, което решава проблема (ако изобщо има такъв :) ). А и от педагогическа гледна точка е по-добре VILI да се научи да работи и с процедури от сорта на StrToInt(S).
:)
Хей, Печени, звучиш на моменти като рекламен агент!
Закачка, де, не ми се цупи пак:)
Закачка, де, не ми се цупи пак:)
Re: :)
Хихихи... няма нищо по-приятно от малко смях... За съжаление писането не може да предаде интонацията, изражението и т.н. А и не съди само по писаното за сайта - за него съм силно пристрастен, просто имаше много емоции, много разправии и много труд. Всъщност най-ценното от него беше контакта с много хора, които инак за мен щяха да останат само едни прякори във форума. С тях си мърморехме, спорехме и викахме, но сега спомените са ценни и имам много хора, на които бих помогнал и знам че бих разчитал за помощ.
Та с две думи, предпочитам да се смея, а не да се цупя. Далеч по необичайно е да се смее философ, нежели дървен
Чудя се какво ли мнение имаш по вечния философски въпрос - кое е първичното?
чети и дишай по-леко
Та с две думи, предпочитам да се смея, а не да се цупя. Далеч по необичайно е да се смее философ, нежели дървен
Чудя се какво ли мнение имаш по вечния философски въпрос - кое е първичното?
чети и дишай по-леко
Много има още да видиш
Хе, Печени, дървените философи са обратното на палячовците - понякога се подхилкват тихичко в присъствието на хора за да изпаднат в продължителен полуистеричен смях когато останат сами.
Кое е първичното ли? Ако питаш за кокошката и яйцето - защо никой не отчита, че за да се излюпи пиленце е необходим петел? Това внася допълнителен нюанс в спора. Но това вече е достойно за нова тема, нов клуб, нов форум и ... абе накъде се отнесох пак.
Кое е първичното ли? Ако питаш за кокошката и яйцето - защо никой не отчита, че за да се излюпи пиленце е необходим петел? Това внася допълнителен нюанс в спора. Но това вече е достойно за нова тема, нов клуб, нов форум и ... абе накъде се отнесох пак.