Diskuze: Dotaz na upravu programu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 29 zpráv z 29.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Next vrací jen int, zkus toto:
Dim vzdalenost As Single = rnd.Next(295, 305) / 100.0;
nejsem programator ale napada me rand.NextDouble()*2 + 2. Pokud je to kravina, prosim o opravu, samozrejme cisla je pak mozne zadat jakakoli
Jakym zpusobem napisu program, který ve vystupu vytiskne vzestupne počet hvezd od 1 do 10 a pak sestupne zpet k 1? At delam, co delam, furt mi z toho vychazi na kazdem radku 10 hvezd.
Sub Main()
For a As Integer = 1 To 20
Console.Write("*", a + 1)
For b As Integer = 1 To 10
Console.Write("*", b + 1)
Next
Console.WriteLine()
Next
Console.ReadKey()
End Sub
Jak se to da udelat? Protože ja nemam absolutne zadny napad, jak na to, ani nevim, kde bych něco takového mohl hledat.
Doplň řídící příkazy if-else do for cyklu. Výraz v if otestuješ na hodnotu menší nebo rovno 10. Uvnitř if pak máš for cyklus v rozsahu 1 až aktuální hodnota řídící proměnné, v else pak máš for cyklus v rozsahu 20 - aktuální hodnota řídící proměnné.
Sub Main()
For i As Integer = 1 To 19
For j As Integer = 1 To If(i < 10, i, 20 - i)
Console.Write("*")
Next
Console.WriteLine()
Next
Console.ReadKey()
End Sub
výstup:
*
**
***
****
*****
******
*******
********
*********
**********
*********
********
*******
******
*****
****
***
**
*
Fu, tak to by me ani ve snu nenapadlo, no nic, pravdepodobne to bude něco, co bych si intuitivne nevycucal z prstu, ani kdybych se posral, tak snad to najdu ve skriptech. Diky
Není třeba v tom hledat velkou vědu, já ten kód jen hodně zeštíhlil
použitím ternárního operátoru. Jinak se mu samozřejmě můžeš
vyhnout a to tak, že si zavedeš pomocnou proměnnou např.
pocetHvezd a pro každý prochod vnějším cyklem ten počet
hvězd dopočítáš, tedy nějak takto:
Sub Main()
For i As Integer = 1 To 19
Dim pocetHvezd As Integer
If (i < 10) Then
pocetHvezd = i
Else
pocetHvezd = 20 - i
End If
For j As Integer = 1 To pocetHvezd
Console.Write("*")
Next
Console.WriteLine()
Next
Console.ReadKey()
End Sub
Aha a jak teda potom udelam, aby mi v kazdem radku geometricky vzrustal počet hvezd od poctu 2 az do Te stredni hodnoty a pak to zase sestoupilo ke dvojce?
Je to pořád stejné.
for (int i = 1; i < 20; i++) {
if (i <= 10) {
for (int j = 1; j <= i; j++) putchar('*');
putchar('\n');
}
else {
for (int j = 1; j <= 20 - i; j++) putchar('*');
putchar('\n');
}
}
Nevím, jestli ti rozumím, naznač jak by měl vypadat výstup.
Sub Main()
For i As Integer = 1 To 19
If i < 10 Then
For j As Integer = 1 To i * i
Console.Write("*")
Next
Else
For j As Integer = 1 To 20 - i Step +1
Console.Write("*")
Next
End If
Console.WriteLine()
Next
Console.ReadKey()
End Sub
Nebudu lhat, ze vim, co delam, ale az na první radek to do pulky dela, co by mělo, ale od poloviny se to prepne zpet do rezimu 10,9...hvezd. Tak se mi z toho vyrodi něco jako mecoun z hvezd.
**
****
********
****************
********************************
****************
********
****
**
třeba
On samotny program funguje, ale mam tady pravdepodobne procvicit 3 varianty, tu, s kterou jste mi uz tady zatím pichli, další, ze na prvním a druhem radku bude *, na tretim a ctvrtem **, atd., na to uz jsem prisel sam a ted zapasim s variantou, kde ma byt na prvním radku **, na druhem ****, tretim ********, atd.
Na tom není nic složitého. Počet hvězd na konkrétním řádku je dáno vztahem 2 na N, kde N je číslo řádku.
V tom prvním mém příspěvku v této diskusi, místo:
For j As Integer = 1 To If(i < 10, i, 20 - i)
zadej:
For j As Integer = 1 To 2 ^ If(i < 10, i, 20 - i)
No, tak ted to ma mecoun i s vlnobitím.
Ale i tak dik, aspoň 2 reseni
ze 3, na to treti třeba prijdu jindy. 
Tak jsi to buďto blbě popsal, anebo se ti, pro ten velký počet
hvězdiček na řádku, již ty řádky automaticky zalamují. Však si taky
uvědom, že 2 ^ 10 = 1024 hvězd na jednom řádku, to není úplně málo.

Zde máš řešení. Smyslem stále zůstává mít řádky rozděleny na polovinu. Pro každý řádek si pak dopočítat počet hvězd které se mají zobrazit.
int stars, rows = 11;
for (int i = 1; i <= rows; i++) {
if (i <= rows / 2) stars = (int) pow(2, i);
else stars = (int) pow(2, rows - i + 1);
for (int j = 1; j <= stars; j++) putchar('*');
putchar('\n');
}
Ty, ale já jsem úplně v pohodě, jsem rád, že aspoň k něčemu jsem se dopracoval, učím se teprve 2 měsíce programovat, pro mě je to pokrok, to se časem vykrystalizuje.
Dyť nikdo neříká, že nejsi.
Nicméně platí to, co jsem napsal, že se ti to asi zalamuje, tak
to bude blbě zadaný, ať už tebou nebo tvým zadavatelem. Prostě je to mrtě
hvězdiček.
On už si zvykl a ví že já mu vše podávám v C. Tím získá povědomí
o tom jak to funguje, aniž bych mu to dodal na zlatém podnose. 
Uprimne, me ty programy pripadaji všechny uplne stejne, akorát se lisi nektere nazvy, semtam syntax, ale algoritmus zustava u tech vyssich programu, alespoň ted v tech začátcích v mych ocich uplne stejny. Takze jestli to dostanu v C, nebo v C#, nebo ve VB, mozna dokonce i v Jave, to vyjde na stejno.
Však také spousta těchto jednoduchých programů lze řešit pomocí příkazů, které jsou pro všechny tyto jazyky společné. Pro všechny zůstává stejné dojít úspěšně k výsledku. Až se naučíš víc, zjistíš, jak který nástroj se na co hodí a jaká jsou jeho omezení. Každopádně to že Ti to připadá stejné, je dobře a může se Ti to v budoucnu hodit, až se budeš chtít orientovat ve zdrojových kódech psaných v jiných jazycích.
Cau, mohl bys mi opet nejak rozumne poradit, jak mam postupovat? Poněvadž si vůbec nevim rady. Mam vygenerovat 100 nahodnych cisel 1-5 a zjistit, zda jsou nekdy vedle sebe dve stejna, když ano, tak která a jake je jejich poradove číslo.
Sub Main()
Dim rnd As New Random, poradi As Byte
For i As Integer = 1 To 100
Dim nahodne As Integer = rnd.Next(1, 5)
If nahodne = nahodne Then
poradi = i
End If
Next
End Sub
To je přeci jednoduché, nehledej v tom nic složitého. Pomocí for cyklu naplníš 100 prvkové pole vygenerovanými náhodnými čísly a poté provedeš opět pomocí for v rozsahu první až předposlední na rovnost hodnoty na daném indexu a na následujícím indexu. Pokud jsou si rovny, vypíšeš hodnotu na jednom z nich a vypíšeš oba indexy. To je celé...
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 100
int main(void) {
int nums[SIZE];
srand((unsigned int)(time(NULL)));
for (int i = 0; i < SIZE; i++) nums[i] = (rand() % 5) + 1;
for (int i = 0; i < (SIZE - 1); i++) {
if (nums[i] == nums[i + 1]) {
printf("%d [%d][%d]\n", nums[i], i, i+1);
}
}
return 0;
}
Zobrazeno 29 zpráv z 29.