PAK AZ

15 отговора 350 прегледа
#1

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!!!‰

Отговор
в отговор на VlLl #2

Re: PAK AZ

С удоволствие бих ти помогнал да си решиш проблема, но забележи глагола "помагам". Бях ти написал едно решение на предишното ти питане, ама май идеята ти е някой да ти напраска цялата задача, ако може и с обяснения, пък за теб да остане да сложиш заглавна страница...
Значи идеята ми е следната - ако си решил наистина да се бориш и имаш нужда от помощ - ок. Ще използваме форума и ще ти кажа къде и какви контроли да сложиш, както и какъв код се пише и какъв е смисъла му - т.е. ще си направиш решението с моя помощ. Ако обаче целта ти е да получиш колетче с панделка, ще се радвам да го получиш от друг. Не се и съмнявам че има много желаещи да помогнат, но ми се струва малко вероятно някой да работи за "мерси".
В крайна сметка за мен форума е място където си помагаме, а не вършим чужда работа.
Пък ако ти е спешно, има един милион места дето ще ти изработят каква да е курсова задача с обяснения и т.н. Виж само по спирките около МЕИ - пълно е с обяви.

чети и дишай по-леко
Отговор
в отговор на VlLl #3

Аман де!

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

Отговор
в отговор на Pechenia #4

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????????????

Отговор
в отговор на vili #5

ок

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];
Е, накрая сложи малко етикети дето да казват кое какво е.
Ако нещо не стане, питай пак.

чети и дишай по-леко
Отговор
в отговор на Pechenia #6

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.

Отговор
в отговор на VlLl #7

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];

Успех

чети и дишай по-леко
Отговор
в отговор на Pechenia #8

Бележка

Няма ли да е добре кода
Matrix1.ColCount:=MatrixSize.Value;
Matrix1.RowCount:=MatrixSize.Value;
Matrix2.ColCount:=MatrixSize.Value;
Matrix2.RowCount:=MatrixSize.Value;
да е в процедурата при CreateMatrix?

Отговор
в отговор на Pechenia #9

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????

Отговор
в отговор на VlLl #10

няма проблеми

SpinEdit е поле дето имаш текстова кутийка и два залепени бутона - единия намалява стойнстта като число в полето , другия я увеличава. Няма начин да я сбъркаш - намира се в страницата с компоненти Samples. А и няма начин да не я харесаш. Удобно е за нея, че ти дава директно въведеното число в полето Value. Всъщност тя е "слепена" от две стандартни Windows контроли - но спестява немалко писане. А това е целта в Delphi - да направиш повече с по-малко писане. Удивително е да видиш как писан от теб код, решаващ тривиална задача е вграден в обект на Delphi - и как изведнъж програмата става кристално ясна и болезнено кратка. Това и те кара да се влюбиш в този Borland шедьовър.

чети и дишай по-леко
Отговор
в отговор на ДъpвeнФилocoф #11

Re: Бележка

Практически е все едно, ама е по тарикатско потребителя да вижда как grid-овете "мърдат" като им сменяш размера. А и е по-логично като смениш един размер, той да се сменя, нали?

чети и дишай по-леко
Отговор
в отговор на Pechenia #12

Re: няма проблеми

Печен, мисля че си заслужи бирата! :) Дано и човека с многото въпроси да го осъзнае!

---
Сънуваш ли баница - яж!
ShadowM
Отговор
в отговор на Pechenia #13

Гледна точка

Наистина е почти все едно. Просто давам по-естествен смисъл на бутона CreateMatrix. Какво би станало, ако имаме запълнен грид 3х5 и му сменим размера на 4х6 - нови празни полета в които се запълват, според условието, с генерирани от програмата случайни числа, а не от потребителя. Работи, дава върможност за разширение на задачата извън поставеното условие, но семантиката на бутона малко се поизменя. Освен да го означим с FillMatrix, което решава проблема (ако изобщо има такъв :) ). А и от педагогическа гледна точка е по-добре VILI да се научи да работи и с процедури от сорта на StrToInt(S).

Отговор
в отговор на Pechenia #14

:)

Хей, Печени, звучиш на моменти като рекламен агент!
Закачка, де, не ми се цупи пак:)

Отговор
в отговор на ДъpвeнФилocoф #15

Re: :)

Хихихи... няма нищо по-приятно от малко смях... За съжаление писането не може да предаде интонацията, изражението и т.н. А и не съди само по писаното за сайта - за него съм силно пристрастен, просто имаше много емоции, много разправии и много труд. Всъщност най-ценното от него беше контакта с много хора, които инак за мен щяха да останат само едни прякори във форума. С тях си мърморехме, спорехме и викахме, но сега спомените са ценни и имам много хора, на които бих помогнал и знам че бих разчитал за помощ.
Та с две думи, предпочитам да се смея, а не да се цупя. Далеч по необичайно е да се смее философ, нежели дървен
Чудя се какво ли мнение имаш по вечния философски въпрос - кое е първичното?

чети и дишай по-леко
Отговор
в отговор на Pechenia #16

Много има още да видиш

Хе, Печени, дървените философи са обратното на палячовците - понякога се подхилкват тихичко в присъствието на хора за да изпаднат в продължителен полуистеричен смях когато останат сами.
Кое е първичното ли? Ако питаш за кокошката и яйцето - защо никой не отчита, че за да се излюпи пиленце е необходим петел? Това внася допълнителен нюанс в спора. Но това вече е достойно за нова тема, нов клуб, нов форум и ... абе накъде се отнесох пак.

Отговор