Tohle se mi zdá dost jako reklama, ale nevadí. Mám zkušenost s náhradami, ne konkrétně s touhle. Cena dobrá, ale vždy platí, že originální progrmátor od výrobce nabízí větši jistotu. Já jsem si koupil originál AVR ISP MK II a jsem maximálně spokojený. Cena sice kolem 1000 Kč, ale za klid se prostě připlácí.
Příspěvky odeslané z IP adresy 212.20.106.–
Jakmile si podle těhle knížek něco postavíš a porozumíš tomu, tak bych doporučoval vzhledem k tvému zájmu o MCU knihy od Davida Matouška (pokud máš zájem o AVR). Co se týče například mikrokotrolérů PIC, tak nevím nepoužívám je. Zajímavé informace najdeš také na serveru http://mcu.cz/startpage.php ale tak to vyžaduje už nějakou znalost.
Co se týče úrovně znalostí po přečtění knih (a hlavně pochopení), bude to asi na úrovni absolventa SŠ. Možná na tom budeš i lépe, úroveň vzdělání bohužel poslední dobou dost klesá :-(
Hele nenech se odradit, a jdi do toho. Jeste dotaz.....kolik ti prosim te je?
Podle me na to jdes moc zesiroka, liborb ma pravdu.... V zadani mas .... komunikaci v pocitacove siti.... ale neni tam mezi kolika PC. Dle me zadani splnis, pokud to udelas mezi 2 PC. A nejjednodussi je udelat prgram, ktery se bude chovat jako klient i server. Na nejakej kontakt list bych se vykaslal. To pak delas aplikacni server a k tomu klienty...
Ke srovnani vykonnosti jazyku.... myslim ze vykonnost C++ je silne zavisla na urovni programatora... takze pokud jsi uplny zacatecnik, tak bych se nebal rozdilu mezi 3D hrou napsanou v C# nebo C++ :D. Pokud ale muzu doporucit, uc se C++. Z toho se da na C# prejit bezproblemu, obracene je to o dost horsi....
Jinak Dooma jeden clovek asi neudela, ale kdysi davno jsem hral takovy pinkani balonkem o stenu... kdyby byl remake, klidne bych si zahral znova.... :D
To jouda :
Hele odpovedi se asi uz nedockam, ale kouknul jsem na stranky tej spolecnosti Live trading. Tam jsem misto odpovedi nasel hromadu preklepu a hrubek. Doporucoval bych odstranit pac jak tam pises neco o tom designu, jak 99% klientu odchazi kdyz je nezaujme tak bych rek ze to samy plati i o hrubkach, ty nejak nejdou ani dohromady s tou proklamovanou preciznosti...
takze zasilam maly buglist:
Náším tipickým klientem // jsem malem spadnul ze zidle
stránek /obchodu // chybi mezirka...
tak v 99% případů stránku opuští
knoh-how // v nadpise to je v poradku, tak asi vis jak se to pise.....
stávajícíh // ups...
konkurence nezůstává spát // netradicni slovni spojeni
Nabízíme Vám zaměstnání u rychle se rozvíjecí // rozvijeci? ale fuj...
stálé zaměstance, ale i externí spolupradcovníky //nekde neco chybi, nekde neco prebejva....
ohledně našich službe // no ja te kontaktuju jen s tema chybkama...
asi tam toho bude vic, ja to hledat nechtel, ale kdyz me na hlavni strance prastej 3 chyby do oci, tak jsem to prolitnul... Na to kolik tam mas toho textu to je fakt sila
Regards Jouda
To Jindřich : Pokud rikas ze to ma jen zapnuto/vypnuto, tak by to mohlo byt bez PWM regulace, tak by pak takovym prasackym,ale dost jednoduchym resenim bylo dat pred motory vykonovy odpory.....takze kdyz budes motor poustet na 4V, na odporu ubydou 2V, tak to dava 0,4R/10W. 10W odpory budou docela velky, cca 6 x 1 x 1 cm a bude to hodne, ale fakt hodne topit...... Mozna by bylo jeste lepsi, pokud by se tam vesly, rozdelit to do dvojic....tzn na 0,2R na 10W....
To domitea :
Na sitovou komunikaci? :)
Jestli tim myslis ridit to pres ethernet, tak to by asi slo, ale byla by to asi ta nejdrazsi a nejtezsi varianta jakou si muzes vybrat.
Jestli tim myslis seriovou komunikaci (USB, RS232) nebo komunikaci pres paralelni port, tak s tim pak neni problem.
U seriove bude mezi robotem a PC jeste nejspis desticka s nejakym MCU.
U LPT to jde udelat i bez MCU, jen s nejakyma posuvnyma registrama apod.
Problem je, ze dnesni PC uz moc nemaji seriove porty a LPT, u noteboku to plati tuplem. Z vlastni zkusenosti vim, ze karty s pridavnymi seriovymi porty funguji vicemene bezproblemu. Problem je u portu LPT. Ten ma u pridavnych karet jinou HW adresu a proto to je dobry tak akorat na tiskarnu....
Protoze je nova doba, tak se da jit na to USB, tam bude v nejlepsim pripade jen MCU + nutna obloha, popripade nejaky obvod rozhrani (FTDI232, CP210x apod.).
Pak je treba moznost jeste jit do bluetooth,ale tam to bude podobny jako u USB, takze MCU + bluetooth modul. Problemem asi bude cena a taky se bude muset pocitat s vetsi spotrebou zarizeni, i kdyz uz jsou asi i low power bluetooth moduly....
To illioner : moje rec.....
To illioner : To Hill : Nemely by ty tranzistory byt spis PNP?
plasmo napsal:
Honorář 50 - 200,-Kč za článek. Záleží na rozsahu a kvalitě článku.
Tak to upresnim..... jaky musi byt rozsah clanku v nejvyssi kvalite, aby bylo dosazeno odmeny a - 50Kc, b - 200Kc.
to melo bejt pro vsechnz, ne jen pro marrioffa :D
To marioff : Acer Extensa 5620G, nechce se mi koukat na oznaceni CPU, ale je to Intel Core Duo 1,8GHz, myslim neco jako T5550i nebo tak....beznej provoz cca 70°, pri hre tam parkrat tech 90°taky bylo.... jinak jeste zalezi jestli se bavime o venkovni teplote CPU nebo teplote jadra...Jadro miva o cca 25° vic....
To plasmo : Jestli se muzu zeptat.....jakej je rozsah a uroven pro dosazeni odmeny 50kc a 200kc....Dik
To Bald3rr : si me predbeh :)
prvocisla=new int[l]; // tohle je blbost....vytvoris pole o 1 prvku.....to znamena pole s maximalnim indexem 0.....
for(int n=2;n<num+1;n++){
if (prime(n)==1){prvocisla[l]=n;l++;}} // prvek prvocisla[l] = prvocisla[1] a ten neexistuje....
for(int m=0;m<l;m++){
for(int o=1;cislo%(exp(prvocisla[m],o)==0);o++) //stejny pripad jako vyse....existuje pouze prvek 0
{cout<<prvocisla[m]<<" ";}}
H4wk.cz napsal:
Já doporučuji Python. Dokonce v něm i učíme algoritmizaci na soustředění pro středoškoláky pořádaném MFF UK http://ksp.mff.cuni.cz/sksp/2010J/. I ti kdo neumí programovat ho velmi rychle pochopí a pak se může přejít na výuku algoritmů a informatického přemýšlení. Pascal a C jsou hodně nízkoúrovňové, ono v dnešní době by měl sice každý programátor umět pracovat s pointery a pointerovou aritmetikou, ale pro začátek může začít se zajímavějšími příklady, jako třeba různé grafové úlohy.
Nechci rejpat,ale to je presne to co jsem chtel rict v predchozim prispevku....zajimalo by me, kdo se pak bude vracet k pointerum c nebo c++, kdyz bude zvladat graficky aplikace v jak ty rikas High level pythonu....
ASM je nejnizsi uroven, nad nim je C a C++..... a sila C++ je dle meho nazoru, ze pokryva nejsirsi uroven ze vsech mnou poznanych jazyku....
Muj nazor je ten, ze je lepsi jit od zacatku a pak zustat treba u toho C#, ale programator by mel pointery zvladat a mel mit prehled o urovni, ktere jsou pod nim.....
Ja jsem na stredni zacal s C, pred tim jen nejakej Visual Basic.
V prvaku na vejsce jsme meli pascal a C....
Druhak seznameni s javou + object pascal (delphi).
Pak uz jen C++az do tretaku, kde byl jeste semestr php.
Muj osobni nazor k temhle jazykum....
Zacnu pascalem..... na nauceni zakladu neni spatnej, ale muj nazor je ten, ze kdyz uz se mam ucit neco, tak se budu ucit neco perspektivniho......
To je pro me C a C++. C a zaklady ASM pro mikrokontrolery a C++ pro PC.
Nevim jak python a podobny jazyky, ale MUJ osobni nazor je ze C++ je jednim z nejsilnejsich jazyku, co se vykonnosti tyce a rozsirenosti....trochu jsem strejchnul i C#, ale to je pro me pouha nadstavba c++...
Java - je podobna c++, ale vykosiila zacatecniky zatracovanou, programatory milovanou vec - pointery. Jinak jak jiz napsal KIIV, je to o slepovani....ma sirokou zakladnu standartnich objektu takze je to spis o znalosti funkci a lepeni....., ale to i PHP a C#
PHP - no ted me tu ostatni asi sezerou, ale tohle je nejblbuvzdornejsi jazyk s jakym jsem se setkal....bez urazky ale v tomhle se nauci programovat snad kazdej a rozhodne nedoporucuju zacinat s nim, protoze u tohohle jazyku muze clovek chytit spatne navyky, a kdyz pak zkusi treba C nebo pascal, tak bude klejt jak dlazdic.....(kdyby nekdo nevedel kam mirim, tak treba automaticke konverze typu, deklarace promennych kdykoliv a kdekoliv -> toto dovoluji i jine jazyky)....
takze MUJ doporucenej postup je....pro zaklady programovani C nebo C++. Myslim ze je jedno jestli se clovek zacne ucit C nebo C++. Osobne bych sel pres C na C++, protoze C++ je trochu benevolentnejsi v nekterych vecech nez C a podle me je lepsi zacit s prisnejsimi pravidly..... Po zvladnuti C prechod na objekty v C++. Po zvladnuti objektu v C++ prechod kamkoliv jinam.....Java, Php, C#.....
To Jatagan : DWOR dwBytesWrite=0; -> typ promenne by mel byt DWORD, s code blocks nedelam, ale urcite by ti to melo jit v devCpp, pokud nechces stahovat visual studio nebo Turbo C++. Asi by to melo jit i jako konzolova aplikace....
Pak tam jeste nikde nevidim pouziti funkce OpenFile... ta by mela predchazet pouziti WriteFile....
To Jan16 : Pokud exportovat znamena neco v komercnim smyslu, tak jsem nic nerekl. Pokud to ale znamena ze nemuzes vytvorit exac nebo je neprenosny a chces prostredi pro nekomercni a vyukove ucely, tak zkus Delphi 7 Personal Edition: http://artax.karlin.mff.cuni.cz/~konim5am/vyuka/nprg030/delphi.html
Nerucim za funkcnost, ale melo by to snad jeste porad fachat.... hlavni je ta registrace u borlandu nebo dnes uz embarneco :)
Jinak lazaruse jsem zkousel, nevim jakou verzi,ale nekde ji porad mam a problem s padanim jsem nemel (pod woknama). Daval jsem ji i znamymu, ten se v tom uci a taky od nej zatim nelitaly pekelny sliny.... Velikost exace jsem nikdy nezkoumal.
tak v prvni rade zalezi co pouzijes za typ pro ten vstupni retezec, pokud pouzijes klasicky ceckovy retezec, pak pouzijest funkce s prefixem str... (strcpy,strcmp...), lepsi varianta je pouzit stl string, ktery uz obsahuje potrebne metody a pokud delas v builderu nebo turbu, tak pak by prichazel jeste v uvahu ansistring....
Pokud tu dohodu nemas jinde, tak myslim ze jo... jinak u dohody o provedeni prace je dan myslim 15 procent, ale pokud si student, tak ti to nestrhnou, nebo ti to vrati financak, takze hruba mzda = cista, u dohody o pracovni cinnosti ti budou myslim strhavat zdravotni a socialni....
To tito100 : Tipuju to proto, ze parametr char fname by mel byt spis char * fname nebo char fname[]
A pokud jde o fwrite, tak si nejsem uplne jistej jestli ji mas dobre....
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
<cstdio>
Write block of data to stream
Writes an array of count elements, each one with a size of size bytes, from the block of memory pointed by ptr to the current position in the stream.
The postion indicator of the stream is advanced by the total number of bytes written.
The total amount of bytes written is (size * count).
Parameters
ptr
Pointer to the array of elements to be written.
size
Size in bytes of each element to be written.
count
Number of elements, each one with a size of size bytes.
stream
Pointer to a FILE object that specifies an output stream.
fwrite(h,2,1,fsave) // tady ptredpokladam, ze chces ulozit jeden integer h do souboru
fwrite(&h,4,1,fsave) // pokud je spravne horni komentar, tak bych to udelal asi takhle
prvni parametr je funkce fwrite je ukazatel na buffer, proto mu musis dat ukazatel nebo adresu promenne
druhy je velikost jednoho elementu v bytech -> pro 32 bit platformu je int 4 bytovy
treti parametr je pocet elementu v bufferu
a ctvrty je stream, kam zapisovat
Zalezi jak se souborem pracujes, pokud pouzivas streamy, tak ti moc neporadim, protoze ty jsem preskocil :)
Podle tve urovne bych ti spis doporucil klasicke ceckove funkce, ktere muzes vyuzit i v c++
snad me tu nesezerou za nasledujici ukazku :) muzou v ni byt chyby, pisu to z hlavy...
#include <iostream>
using namespace std;
#define FileName (".\\soubor.txt")
void main(void)
{
FILE *f;
if ( (f = fopen(FileName,"a") ) == NULL) // soubor se nepodarilo otevrit pro pridavani
//- spatna cesta, soubor neexistuje, prava,
//plny disk...
{
printf("%s", "Soubor se nepodarilo otevrit pro pridani na konec...");
if ( (f = fopen(FileName,"w") ) == NULL) // soubor se nepodarilo vytvorit....
{
printf("%s", "Soubor se nepodarilo ani vytvorit......jina chyba -> konec");
return;
}
}
//sekce zapisu do souboru....
fclose(f); //uzavreni souboru
}
Komponenty pro seriovy port:
Varian Async 32,
TMS Async – vychází z Varian Async 32 (je téměř shodná)
Comport v1.7
CiaComPort
ZLPortIO
Ja jsem myslim pouzival prave Varian Async a nemel jsem zadnej problem, vse intuitivni.... po nainstalovani pridas komponentu na form a nastavis ji parametry prenosu, udalosti pri prijmu atd....Je myslim free, ale pri spusteni programu(exacem, ne pres debugger) ti vyskoci tabulka s hlaskou ze je v programu komponenta pouzita, nicmene na funkci to nema vliv.... nezkoumal jsem cim to je.... s tema dalsima myslim nemam zkusenost, mozna jsem zkousel jeste TMS, ale uz fakt nevim, je to davno....
Tady mas sekvencni obvod s relatkem.....pokud stisknes tlacitko S1, rele sepne a sepne kontakt K1.1, ktery drzi rele sepnute i kdyz pustis tlacitko S1... Dalsi kontakt K1.2 sepne zarovku... Jak rikam, nevim jestli mas v praci dovoleny pouzit relatka nebo hradla.... Pokud dovoleny jsou, tak si myslim ze to neni tezky udelat, podle myho odhadu by tam byly celkem 3...
To Balaam : Nejsem sice z oboru automatizace, ale chybu tam myslim mas v obou vetvich podobnou. Myslim ze ti tam chybi nejaky prvek, ktery by si ovladal senzorem a tlacitkem... v elektru by to bylo relatko,ale ty asi povoleny nejsou co? Neznam znacky, tak ti to nedokazu nakreslit, ale jestli chces, tak ti to namaluju s relatkama a zarovkama :). Nebo napis v cem se to simulujes a pokud se to da stahnout(aspon nejaka trial verze), tak ti s tim pichnu primo v tom....
Zdravim, chci se zeptat jestli tu nekdo nedela v KiCadu? Postahoval jsem nejake knihovny a nejak se mi nedari je do toho dostat. Mam soubory s priponami *.lib, *.mod, *.dcm, *.emp, *.wings a *.wrl. Nevi nekdo co je v jednotlivych souborech ulozeno a kam se maji nahrat? neco jsem vypozoroval, ale nechodi to tak jak bych si predstavoval. Existuje pro vytvareni knihoven nejaky editor? Neco jsem nasel na netu, ale taky neni to co bych chtel...
To Krychlik : Jen se zeptam, pascal uz pomalu zapominam, ale pokud budu predpokladat format souboru prijmeni jmeno cislo, kde prijmeni a jmeno jsou retezce bez mezer, tak by mozna bylo jednodussi nacist to proste najednou ne?
const FileName = '.\\zaci.txt';
type TOsoba = record
prijmeni:string;
jmeno:string;
suma:integer;
end;
var f:Text;
zak:TOsoba;
begin
assign(f,FileName);
reset(f);
Readln(f, zak.prijmeni, zak.jmeno, zak.suma); {neco takoveho by mohlo myslim fungovat ne?}
close(f);
end;
To anonym: Takhle ti asi neporadim, zkus si vypsat i promennou riadok, tipuju ze tam bude pouze prijmeni bez mezery....Pokud tomu tak bude, tak zkus pouzit ten kod co jsem napsal.... Takhle tezko rict....
To Janička : Nejak jsem nepobral ten vrchni dotaz, kazdopadne ten vrchni bubble sort by sel udelat jinak a myslim ze lip...ale to ted asi neni predmetem. Jestli tomu dobre rozumim, tak nechapes jak funguje pole.....
var i,j :integer;0
pole:array[1..10] of integer;
begin
for i:= 1 to 10 do {projde 10 prvku pole a kazdemu priradi nahodne cislo...}
begin
pole[i] := random(10);
end;
j := 11;
for i := 1 to 10 do
begin
{vypise nejprve hodnotu i a pak prvek v poli na pozici i}
Write('Prvek ');Write(i);Write(' = ');Writeln(pole[i]);
{vypise pozici j-i (v prvnim pruchodu 11-1 = 10) a
pak prvek na teto pozici, tzn v prvnim pruchodu na pozici 10}
Write('Prvek ');Write(j-i);Write(' = ');Writeln(pole[j-i]);
end;
end;
To Janička : Mas v tom trochu bordylek :) Promenna i je promenna jako kazda jina, je to jen indentifikator nejakeho mista v pameti. Jak velke to misto bude, zalezi na typu promenne. Muzes mit promenne typu integer, float, double, string, nebo vlastnich typu....
pole je vlastne taky jen typ promenne a v tvem pripade rika, ze ty prvky pole budou cela cisla -> integer. Pro pole plati, ze jeho prvky jsou v pameti umisteny za sebou, proto maji jiste poradi, cehoz se vyuziva ve zpusobu pristupu k nim...
V programovani existuji jista pravidla a doporuceni, at jiz psana nebo nepsana... Jednim z nich je i nazvoslovi promennych u cyklu for.
V 90 procentech pripadu se pouziva prave pismeno i, pokud je jiz obsazeno, tak pak j,k .... Ale je to jen formalita, nevim, jestli je to nekde napsane, nebo jen sila zvyku.... klidne muzes promennou i v cyklu for prejmenovat na index, kolo, sluchatko...na identifikatoru nezalezi...
for j := 1 to 9 do //9x projdeme pole a hledame minimalni cislo,
begin //ktere ulozime do promene minc
minc := 10; //pocatecni hodnota na zacatku kazdeho pruchodu
for i := 1 to 9 do //musi byt vetsi nebo rovna max. cislu v poli
if p[i]<minc then //kdyz prvek v poli je mensi nez dosud nalezeny
begin
minc := p[i]; //tak ho zapiseme jako minimalni
v[j] := i; //a do vysledku na pozici pruchodu zapiseme jeho poradi
end;
p[v[j]] := 10; //aby se nam nepletl (abychom ho pri dalsim
end;
V teto casti programu by sis mozna s jednim cyklem vystacila, ale bylo by to asi pametove narocne a hodne neprehledne.
To Janička :
Ja bych to zkusil takhle:
uses
SysUtils;
var p:array[1..9] of integer;
i,j,k, pom : integer;
begin
randomize;
for i:= 1 to 9 do
p[i]:=random (5)*2;
for i:= 1 to 9 do
write (p[i],' ');
Writeln;
pom := 0;
while pom <= 8 do {pro cisla 0 - 8}
begin
for i: = 1 to 9 do {je cislo ulozene v pom v poli ?}
begin
if p[i] = pom then
begin
Write(i,' ');
end;
end;
pom := pom + 2; {pouze suda cisla}
end;
readln;
end.
Snad v tom nejsou chyby...
const MaxPrvku = 10;
const MaxCislo = 100;
var pole:array[1..MaxPrvku] of integer;
i:integer;
begin
randomize;
for i:= 1 to MaxPrvku do
begin
pole[i] := random(MaxCislo + 1); {melo by generovat 0 - maxcislo}
end;
end;
Muzou v tom byt chybky... Pro matici to snad psat nemusim....je to stejny, jen je dvourozmerny pole a jeden cykl navic...
Abych teda rekl pravdu, tak stylem programovani je to teda hnus fialovej :)
Format souboru je nasledujici:
pocet radku
pocet sloupcu
pozice[1][1]
pozice[1][2]
...
pozice[2][1]
pozice[2][2]
...
Nejdriv jsem myslel ze ti to opravim, ale nemam na to ted cas, tak jsem ti tam dodelal tu funkci pro nacitani (zda se ze funguje) a neco malo do oci bijici jsem opravil... :)
Pisu to z hlavy, budou v tom chyby....
const cesta = '.\\StringGrid.txt';
Procedure ulozSG(var SG:TStringGrid);
var Col,row,i,j:integer;
f:Text;
begin
Col := SG.ColCount;
row := SG.RowCount;
Assign(f,cesta);
Rewrite(f);
Writeln(f,Col);
WriteLn(f, row);
for(i:= 0 to Row) do {muze byt chyba, nejsem si jistej jestli SG ma cislovany radky a sloupce od 0}
begin
for k:= 0 to Col do
begin
Writeln(f,SG.Cells[j][i]); {na kazdy radek jedna polozka....}
end;
end;
close(f);
end;
procedure nactiSG(var SG:TStringGrid);
var f:Text;
Col,Row,i,j:integer;
begin
Assign(f,cesta);
reset(f);
Readln(f,Col);
ReadLn(f,Row);
SG.ColCount := Col;
SG.RowCount := Row;
for i:= 0 to row do begin
for j:= 0 to col do begin
ReadLn(SG.Cells[j][i])
end;
end;
Close(f);
end;
Snad by to mohlo fungovat.....jak jsem napsal nahore ten format souboru, tak ten by asi nesel pouzit, mi nejak nedoslo, ze pokud ve stringridu budou vety, tak by to asi nefungovalo kvuli mezeram.... Pro jednotlive retezce a cisla by fungoval....
Zmena barvy se dela pres SelAtributes. ted si ale nejsem jistej jestli to jde uz jiz napsanyho textu... Pokud to chces zmenit u celyho radku tak by slo to zapsat do radku znovu....
AnsiString retezec = RichEdit1->Lines->operator [](2); //ziskani polozky s indexem 2
RichEdit1->Lines->Delete(2); // vymaz polozky [2]
RichEdit1->SelAttributes->Color = clRed; // zmena barvy textu
RichEdit1->Lines->Insert(2,retezec); // vlozeni polozky
Mozna ze to je zbytecne slozity, ze to jde zmenit primo u vybranyho textu, ale v rychlosti jsem to nenasel....
To Mircosoft : V jednoduchosti je sila...... kdyby to mel delat program automaticky bez pomoci, trvalo by to strasne dlouho..... Ja uz to celkem mam hotovy, je to sice dost bojova verze (nejak se mi nedari ukoncit jednu podminku cyklu:) ) ale zkouseni pismenek uz mi funguje....takze jen nebejt linej a projit to... :)
Koukam ze malirka zmenila pohlavi na martina....
Tady porad nekdo nechape, ze to ten program sam neudela...
Pokud vim tak v zadani je neco jako "sifra se da rozlustit i bez programu,ale s programem by to mohlo byt rychlejsi...."
Z toho jsem vyvodil, ze program nebude ve stylu zadani vstupniho souboru a vyplivnuti spravneho textu....
Jak jiz napsal krychlik, je nutne kombinovat hlavu a programovani.
Dalsi jeho pripominka je, ze nejcastejsi znak bude mezera, coz je taky spravne... Pozn. Pokud je text v souboru podle ceske typografie, tak si troufam tvrdit, ze mezera je na 99% 'velke i', jelikoz nasleduje za teckami a carkami, ktere nejsou sifrovany. A i pokud se podivate na rozlozeni textu, tak by to tak i mohlo odpovidat... Ja jsem se samozrejme vydal stejnou cestou...spocital jsem si vyskyty a zjistil histogram pismen, ktere jsem se pokusil nahradit z tabulky cetnosti... ouha, oni vychazeji nesmysly....jenze chyba neni v programu...
Dalsi muj postup: vychazim z toho, ze mezera je velke i, takze si najdu celkem kratke slovo (cca 4 znaky) s vyskytem pismen v horni casti histogramu (nejlepe prvniho). Toto pismeno(a) nahradim znaky z tabulky a zbyla pismena se pokusim vygenerovat... pokud vygenerovane slovo dava smysl, zkusim dosadit vygenerovana do jineho slova.... Pokud ne, zkusim dosadi pismeno ktere je v cetnosti vedle apod....
Predpokladam,ze rychle reseni ulohy bude v tomto smeru.... a v tomto smeru je napsane i zadani... neni v nem napsat program, ktery by to rozlustil, ale program, ktery by POMOHL rozlustit.....
Napsat program do dvou mesicu, ktery by toto dokazal sam, nestihne student 3 rocniku SPS, ktery ma pascal prvni rok ani kdyby se rozkrajel.....muj nazor...
No pokud StringGrid nema metodu SaveToFile, jakoze asi nema, tak si budes muset napsat vlastni funkci, ktera to ulozi a pak druhou, ktera data zase nahraje.....
Format souboru bych asi zvolil:
pocetRadku
pocetSloupcu
radek1 - Slopec1 sloupec2 sloupec3 sloupec4
radek2 - sloupec1 ....
Nevim jestli jsem ti pomohl, ale pokud ne tak napis a budem pokracovat :)
By to sem chtelo dat ten kod......
type TPolozka = record
value:integer;
index:integer;
end;
{procedura nalezne v poli nejmensi prvek a vrati jeho index a hodnotu}
function getItem(pocetPolozek:integer,pole:array[1..10] of integer):TPolozka;
var min:TPolozka;
i:integer;
begin
min.value := pole[1];
min.index := 1;
for i:= 2 to pocetPolozek do begin
if min.value < pole[i] then
begin
min.value := pole[i];
min.index := i;
end;
end;
getItem := min;
end;
{procedura vyskrtne z pole prvek, jehoz index je zadan jako parametr}
procedure vyskrtni(index:integer;var pocetPolozek:integer; var pole:array[1..10] of integer);
var tempPole:array[1..10] of integer;
i,j:integer;
begin
j:= 1;
{vynechani zadaneho indexu }
for i := 1 to pocetPolozek do begin
if index <> i do begin
tempPole[j] := pole[i];
j ;= j +1;
end;
end;
pocetPolozek := pocetPolozek - 1; {snizi pocet prvku o 1}
{prekopirovani platnych hodnot zpet do puvodniho pole}
for i := 1 to pocetPolozek do begin
if index <> i do begin
pole[i]:=tempPole[j];
j ;= j +1;
end;
end;
end;
Chybi tam nektera osetreni...Muzou v tom byt chyby, je to psany z hlavy... urcite je i jednodussi a rychlejsi zpusob jak to vyskrtnout.....treba najit ten prvek a prepsat ho treba poslednim prvkem v poli...
A proto buh stvoril debugger :)
program lode;
{$APPTYPE CONSOLE}
uses SysUtils;
const m=3; n=3;
type pole=array[1..m,1..n] of integer;
var pole1, pole2, polepalba1, polepalba2:pole;
hrac1, hrac2:string;
hrac, lode2, lode1, pocet, radek1, sloupec1, radek2, sloupec2, radek1palba, sloupec1palba, radek2palba, sloupec2palba: integer;
begin
{ TODO -oUser -cConsole Main : Insert code here }
writeln ('Vitejte ve hre LODE. Preji prijemnou zabavu.');
writeln ('zadejte jmeno prvniho hrace a stisknete ENTER');
readln (hrac1);
writeln ('zadejte jmeno druheho hrace a stisknete ENTER');
readln (hrac2);
writeln ('prvni hrac je tedy ', hrac1,', druhy hrac je ',hrac2);
readln;
pocet:=0;
for radek1:=1 to m do
begin
for sloupec1:=1 to n do
pole1[radek1,sloupec1]:=0;
end;
//hrac1//
writeln ('nejdrive zada souradnice ',hrac1);
while pocet<2 do
begin
writeln ('zadej prvni souradnici');
readln (radek1);
writeln ('zadej druhou souradnici');
readln (sloupec1);
if (pole1[radek1,sloupec1]=1) then
begin
writeln ('pole je obsazeno');
pocet:=pocet-1;
end;
if ((radek1>m) or (sloupec1>n) or (radek1<=0) or(sloupec1<=0)) then
begin
writeln ('souradnice jsou mimo pole');
end
else
begin
pole1[radek1,sloupec1]:=1;
pocet:=pocet+1;
end;
end;
for radek1:=1 to m do
begin
for sloupec1:=1 to n do
write (pole1[radek1,sloupec1],'-');
writeln;
end;
readln;
pocet:=0;
for radek2:=1 to m do
begin
for sloupec2:=1 to n do
pole2[radek2,sloupec2]:=0;
end;
//hrac2//
writeln ('ted zada souradnice ',hrac2);
while pocet<2 do
begin
writeln ('zadej prvni souradnici');
readln (radek2);
writeln ('zadej druhou souradnici');
readln (sloupec2);
if (pole2[radek2,sloupec2]=1) then
begin
writeln ('pole je obsazeno');
pocet:=pocet-1;
end;
if ((radek2>m) or (sloupec2>n) or (radek2<=0) or(sloupec2<=0)) then
begin
writeln ('souradnice jsou mimo pole');
end
else
begin
pole2[radek2,sloupec2]:=1;
pocet:=pocet+1;
end;
end;
for radek2:=1 to m do
begin
for sloupec2:=1 to n do
write (pole2[radek2,sloupec2],'-');
writeln;
end;
readln;
//hra//
lode1:=0;
lode2:=0;
while ((lode1<2) OR (lode2<2)) do
begin
begin
writeln ('na rade je ',hrac1);
writeln ('takto jsi strilel, 5 znamena mimo; 1 znamena zasah');
begin
for radek2palba:=1 to m do
begin
for sloupec2palba:=1 to n do
write (polepalba2[radek2palba,sloupec2palba],'-');
writeln;
end;
end;
writeln ('zadej prvni souradnici');
readln (radek2);
writeln ('zadej druhou souradnici');
readln (sloupec2);
if (pole2[radek2, sloupec2]=1) then
begin
polepalba2[radek2, sloupec2]:=1;
lode1:=lode1+1;
writeln ('zasah');
end
else
begin
lode1:=lode1+0;
writeln ('bohuzel mimo');
polepalba2[radek2, sloupec2]:=5;
end;
end;
begin
writeln ('na rade je ',hrac2);
writeln ('takto jsi strilel, 5 znamena mimo; 1 znamena zasah');
begin
for radek1palba:=1 to m do
begin
for sloupec1palba:=1 to n do
write (polepalba1[radek1palba,sloupec1palba],'-');
writeln;
end;
end;
writeln ('zadej prvni souradnici');
readln (radek1);
writeln ('zadej druhou souradnici');
readln (sloupec1);
if (pole1[radek1,sloupec1]=1) then
begin
writeln ('zasah');
lode2:=lode2+1;
polepalba1[radek1, sloupec1]:=1;
end
else
begin
writeln ('bohuzel mimo');
lode2:=lode2+0;
polepalba1[radek1, sloupec1]:=5;
end;
end;
end;
readln;
end.
Par pripominek pro zprehledneni :)
treba pro nacitani souradnic bych ti doporucil vytvorit funkci...
{muze byt chyba v syntaxi, pisu z hlavy....}
function nactiSouradnice(var x,y:integer);
var Radek,Sloupec;
begin
Writeln('Zadejte souradnice[x y]');
Readln(Radek,sloupec);
x:= Radek;
y:= Sloupec;
end;
Pak by se mozna i vyplatilo vytvorit typ hrace....
type THrac = record
jmeno = string;
lode = array...
strelba = array .....
end;
Jsou to jen pripominky, na funkctnost nemaji vliv
Je to v cecku, nemam u sebe nic na pascal ani delphi, ale snad pro inspiraci... Vim ze to neni uplne optimalni, je to sity horkou jehlou, tak budte shovivavy... :smile16: je tam chyba u cislovani po desitce -> jedenact.... dvanact...., nemam cas to osetrovat, ale kdybych to mel udelat, tak bych si vzdycky do dalsiho radu nesl informaci zda predchozi cislo byla 1, a pokud ano, tak bych tam bral jiny switch se spravnym cislovanim....
void cisla(int c)
{
//zadani cisla
int cislo = c;
int ref = 1000000; // do jednotek milionu...
int vysledek;
AnsiString ret,pom;
//-------------------------------- miliony
vysledek = cislo / ref; //celociselne deleni...
if(vysledek == 0) //nic
{
}
else
{
switch (vysledek)
{
case 1: pom = "milion";break;
case 2: pom = "dvamiliony";break;
case 3: pom = "trimiliony";break;
case 4: pom = "ctyrmiliony";break;
case 5: pom = "petmilionu";break;
case 6: pom = "sestmilionu";break;
case 7: pom = "sedmmilionu";break;
case 8: pom = "osmmilionu";break;
case 9: pom = "devetmilionu";break;
default:
case 0:;break;
}
ret = ret + pom;
cislo = cislo - (vysledek * ref);
}
//------------------------------- statisice
ref = ref / 10;
vysledek = cislo / ref; //celociselne deleni...
if(vysledek == 0) //nic
{
}
else
{
switch (vysledek)
{
case 1: pom = "sto";break;
case 2: pom = "dveste";break;
case 3: pom = "trista";break;
case 4: pom = "ctyrista";break;
case 5: pom = "petset";break;
case 6: pom = "sestset";break;
case 7: pom = "sedmset";break;
case 8: pom = "osmset";break;
case 9: pom = "devatset";break;
default:
case 0:;break;
}
ret = ret + pom;
cislo = cislo - (vysledek * ref);
}
//-------------------------------------- desetitisice
ref = ref / 10;
vysledek = cislo / ref; //celociselne deleni...
if(vysledek == 0) //nic
{
}
else
{
switch (vysledek)
{
case 1: pom = "deset";break;
case 2: pom = "dvacet";break;
case 3: pom = "tricet";break;
case 4: pom = "ctyricet";break;
case 5: pom = "padesat";break;
case 6: pom = "sedesat";break;
case 7: pom = "sedmdesat";break;
case 8: pom = "osmdesat";break;
case 9: pom = "devadesat";break;
default:
case 0:;break;
}
ret = ret + pom;
cislo = cislo - (vysledek * ref);
}
//-------------------------------------------tisice
ref = ref / 10;
vysledek = cislo / ref; //celociselne deleni...
if(vysledek == 0) //nic
{
}
else
{
switch (vysledek)
{
case 1: pom = "jedentisic";break;
case 2: pom = "dvatisice";break;
case 3: pom = "tritisice";break;
case 4: pom = "ctyritisice";break;
case 5: pom = "pettisic";break;
case 6: pom = "sesttisic";break;
case 7: pom = "sedmtisic";break;
case 8: pom = "osmtisic";break;
case 9: pom = "devattisic";break;
default:
case 0:;break;
}
ret = ret + pom;
cislo = cislo - (vysledek * ref);
}
//--------------------------------------------- setiny
ref = ref / 10;
vysledek = cislo / ref; //celociselne deleni...
if(vysledek == 0) //nic
{
}
else
{
switch (vysledek)
{
case 1: pom = "jednosto";break;
case 2: pom = "dveste";break;
case 3: pom = "trista";break;
case 4: pom = "ctyrista";break;
case 5: pom = "petset";break;
case 6: pom = "sestset";break;
case 7: pom = "sedmset";break;
case 8: pom = "osmset";break;
case 9: pom = "devatset";break;
default:
case 0:;break;
}
ret = ret + pom;
cislo = cislo - (vysledek * ref);
}
//--------------------------------------------------- desitky
ref = ref / 10;
vysledek = cislo / ref; //celociselne deleni...
if(vysledek == 0) //nic
{
}
else
{
switch (vysledek)
{
case 1: pom = "deset";break;
case 2: pom = "dvacet";break;
case 3: pom = "tricet";break;
case 4: pom = "ctyricet";break;
case 5: pom = "padesat";break;
case 6: pom = "sedesat";break;
case 7: pom = "sedmdesat";break;
case 8: pom = "osmdesat";break;
case 9: pom = "devadesat";break;
default:
case 0:;break;
}
ret = ret + pom;
cislo = cislo - (vysledek * ref);
}
//---------------------------------------------------- jednotky
ref = ref / 10;
vysledek = cislo / ref; //celociselne deleni...
if(vysledek == 0) //nic
{
}
else
{
switch (vysledek)
{
case 1: pom = "jedna";break;
case 2: pom = "dva";break;
case 3: pom = "tri";break;
case 4: pom = "ctyri";break;
case 5: pom = "pet";break;
case 6: pom = "sest";break;
case 7: pom = "sedm";break;
case 8: pom = "osm";break;
case 9: pom = "devet";break;
default:
case 0:;break;
}
ret = ret + pom;
}
//vypsat vysledek
}
Jak se ti ma nekdo "z branze" prihlasit, kdyz nevi v cem se to bude delat.....abys vedel v cem se to bude delat tak je asi potreba vedet co to bude za typ hry..... ale to uz vicemene opakujem to co bylo napsany vyse....
Jinak jsem zaslech pro vedouciho tymu neco jako Team leader, ale nevim jestli to je presne to pravy :)
Skoro na konci stranky vlevo nad SaveToFile http://www.delphibasics.co.uk/RTL.asp?Name=TStringList
Co mas za verzi delphi? Moc se mi nechce verit tomu, ze pokud ma metodu SaveToFile, ze by nemel LoadFromFile.....
Pokud je tomu opravdu tak, ze ji ve sve verzi nemas a nechces upgradovat, tak bych asi doporucil vykaslat se i na metodu SaveToFile, a vytvorit vlastni funkce pro nahrani a ulozeni dat. Delat se souborem *.csv "rucne" bych moc nedoporucoval, misto nej bych vytvoril vlastni format souboru. Pokud znas pocet sloupcu stringGridu, tak bych to asi resil kazdy retezec na novy radek.... pak je to jen o nacteni v cyklu....
procedure LoadFromFile(jmeno:string);
var i,j, row:integer;
begin
StringList.LoadFromFile(jmeno); //nacteni do stringListu
row := 0;
for i:=0 to stringList.Count do
begin
for j:= 0 to StringGrid.ColCount do
begin
StringGrid.Cells[j][row] := StringList.Strings[i]; //vyplni vsechny sloupce v radku
end;
row := row + 1; //dalsi radek
end;
end;
Je to jen nastrel, nemam delphi k dispozici, ale snad to pro inspiraci staci....
Nevim jak u delphi, ale u c++ builderu je nutny buildnout projekt jako release(dela se v nastaveni projektu) a hlavne v nastaveni projektu u linkeru odskrtnout Use dynamic RTL a v zalozce packages odskrtnout Build with runtime packages. Tusim ze u delphi by to mohlo byt podobny...
Zdravím,
používám Turbo 2006 Explorer a chci se zeptat, jak změnit pozadí u komponenty TCoolbar.
TCoolbar->Color funguje normálně, ale pokud použiju TCoolbar->Bitmap, tak se mi změna
neprojeví (doufám, že je tato vlastnost určena pro tento účel...).
Nevíte kde by mohla být chyba? Není potřeba nastavit ještě něco?
Další dotaz je ke komponentě TXPManifest.
Pokud použiju tuto komponentu, tak mi nejdou přenastavit barvy ostatních komponent.
Dá se s tím něco udělat?
Díky za rady
Zdravím,
používám Turbo 2006 Explorer a chci se zeptat, jak změnit pozadí u komponenty TCoolbar.
TCoolbar->Color funguje normálně, ale pokud použiju TCoolbar->Bitmap, tak se mi změna
neprojeví (doufám, že je tato vlastnost určena pro tento účel...).
Nevíte kde by mohla být chyba? Není potřeba nastavit ještě něco?
Další dotaz je ke komponentě TXPManifest.
Pokud použiju tuto komponentu, tak mi nejdou přenastavit barvy ostatních komponent.
Dá se s tím něco udělat?
Díky za rady
To Anonymní uživatel : Jak presne to ma fungovat? Najedes na label a zmenis barvu, pokud nekliknes a odjedes mysi, barva se ma zmenit na puvodni? Pokud kliknes, zustane barva nova?
pokud je to tak, tak bych to udelal asi takhle:
SaveColor:TColor; //do formu si pridat jednu privatni promennou -> SaveColor
Udalost MouseEnter provede:
SaveColor:=Label1.Color; //ulozi aktualni barvu do SaveColor
Label1.Color := clNovaBarva; // zmeni barvu labelu
Udalost OnClick provede:
SaveColor := Label1.Color; //ulozeni aktualni(zmenene) barvy do privatni promenne
Udalost OnMouseLeave provede:
Label1.Color := SaveColor; // nastaveni barvy dle ulozene barvy v privatni promenne (tzn. Pokud byl klik -> nova, jinak puvodni)
Snad to je to co chces, asi to jde udelat i jinak, ale tohle mi prislo jako nejjednodussi a nejrychlejsi....
Jaky mas format souboru?
Pro format:
4 // pocet radku
15 16 17 18 // 1 radek matice
4 5 5 1 // 2 radek matice
99 56 88 44 // 3 radek matice
2 4 8 7 // 4 radek matice
by mohlo byt reseni nasledujici:
int pocetRadku,i,j;
FILE *f;
if ((f = fopen("jmeno_souboru.txt", "r")) == NULL) // otevreni souboru pro cteni
{
printf("%s", "Chyba - soubor nelze otevrit !!!");
}
else
{
fscanf(f, "%d", &pocetRadku); //vycteni poctu radku
if (pocetRadku > 0)
{
for (i =0; i < pocetRadku; i++)
{
for(j = 0; j < pocetRadku; j++)
{
fscanf(f, "%d", &matice[i][j]); // vycteni 1 pozice v matici
}
}
}
}
- chybi tam ruzna osetreni (fscanf...), ale pro inspiraci to snad staci, muze tam bejt nejaka chyba.....
Kdyz si na formu vyberes Label, u ktereho to chces zmenit, tak v okne Object inspector je zalozka Events, tam si najdes udalost na pohyb myse -> OnMouseMove a poklepes, delphi ti pripravi prislusnou metodu, do ktere napises kod, ktery se ma vykonat.
Pro zmenu barvy labelu to bude asi neco ve smyslu
Label.Color := clRed;
a pro pismo Label.Font.Color := clBlue;
PS: principem je to snad spravne, ale syntaxi si moc jistej nejsem, uz jsem delphi dlouho nevidel
Myslim, ze se XP snazil naznacit predani pres ukazatel...
#include <iostream>
using namespace std;
void funkce(char **text);
int main(int argc, char* argv[])
{
char *vracenyText;
funkce(&vracenyText);
cout << vracenyText;
return 0;
}
void funkce (char **text)
{
*text = "Jak se mas?";
}
To Hrubas :
V builderu si zaloz novy projekt - konsolovou aplikaci (console wizard), vyberes jestli C nebo C++, vyplnis nazvy projektu atd...
Builder ti vygeneruje jeden soubor main, do kteryho budes psat kod, dalsi soubory asi u takhle velkeho "projektu" nema smysl vytvaret... Nevim na jaky urovni c++ ovladas, nebo bys mel umet ovladat, ale pokud mas byt zacatecnik, tak se mi nezda, ze by to muselo byt v GUI.