Byl vydán Mozilla Firefox 143.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově se Firefox při ukončování anonymního režimu zeptá, zda chcete smazat stažené soubory. Dialog pro povolení přístupu ke kameře zobrazuje náhled. Obzvláště užitečné při přepínání mezi více kamerami. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 143 bude brzy k dispozici také na Flathubu a Snapcraftu.
Byla vydána betaverze Fedora Linuxu 43 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 21. října.
Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.2 (𝕏, Mastodon). Přehled novinek, vylepšení a nových efektů v poznámkách k vydání.
Byla vydána nová verze 4.5 (𝕏, Bluesky, Mastodon) multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána verze 3.0 (Mastodon) nástroje pro záznam a sdílení terminálových sezení asciinema (GitHub). S novou verzí formátu záznamu asciicast v3, podporou live streamingu a především kompletním přepisem z Pythonu do Rustu.
Canonical oznámil, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie) v Ubuntu.
Tržní hodnota americké společnosti Alphabet, která je majitelem internetového vyhledávače Google, dnes poprvé překonala hranici tří bilionů dolarů (62,1 bilionu Kč). Alphabet se připojil k malé skupině společností, které tuto hranici pokořily. Jsou mezi nimi zatím americké firmy Nvidia, Microsoft a Apple.
Spojené státy a Čína dosáhly dohody ohledně pokračování populární čínské platformy pro sdílení krátkých videí TikTok v USA. V příspěvku na síti Truth Social to dnes naznačil americký prezident Donald Trump. Dosažení rámcové dohody o TikToku vzápětí oznámil americký ministr financí Scott Bessent, který v Madridu jedná s čínskými představiteli o vzájemných obchodních vztazích mezi USA a Čínou. Bessentova slova později potvrdila také čínská strana.
MKVToolNix, tj. sada nástrojů pro práci s formátem (medialnym kontajnerom) Matroska, byl vydán ve verzi 95.0. Podpora přehrávání formátu Matroska míří do Firefoxu [Bug 1422891, Technický popis]. Přehrávání lze již testovat ve Firefoxu Nightly.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 211. sraz, který proběhne v pátek 19. září od 18:00 ve Studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Na srazu proběhne přednáška Jiřího Eischmanna o nové verzi prostředí GNOME 49. Nemáte-li možnost se zúčastnit osobně, přednáškový blok bude opět streamován živě na server VHSky.cz a následně i zpřístupněn záznam.
Ahoj vespolek, jsem zacatecnik v cecku a snazim se psat trochu chytrejsi programy. Prave u jednoho jsem se sekl a nemuzu prijit na to, v ktere casti kodu je chyba . Pri kompilaci to nevipise nic, ani varovani, bohuzel behem spusteni to spande a vypise Neoprávněný přístup do paměti (SIGSEGV) .. pouzivam Archlinux, prejel jsem to i debuggerem a ten mi vypise, ze se jedna o chybu
Program received signal SIGSEGV, Segmentation fault.
0x00000000004005d5 in serazeni ()
... zkousel jsem to znovu prepsat, jestli jsem neudelal nejaku hrubku, ale nic, bohuzel nevim.. jsem zacatecnik, tak to prosim berte na vedomi... kod je prilozeny v souboru. Dekuji vsem za napady, pripominky, dotazy a kritiku.
j=3;
nebo tot nééé r[2]=58;
, a pak se zamyslet na tím, že číslování polí je od 0 po N-1 a s větším index-em se dostanete mimo alokovaný rozsah.
To kopirovani jsem prepsal na :
k=r[j];
r[j]=r[j+1];
r[j+1]=k;
U toho noveho zpusobu (nevim jak se tomu rika v cecku, v matice je to myslim mnozina vsech cisel R) je to efektivnejsi, dekuji moc za navrh.
Ohledne toho enteru, napsal jsem tam printf("\n"); nebo jste myslel neco jineho? Kazdopadne dekuji za pripominky a jsem Vam velmi vdecny, jsem o neco chytrejsi.
#include <stdio.h> int main(void) { return 0; }a pak teprve do téhle kostry začnu psát, nebo spíš doplňovat program
A protožemain()
nepřebírá žádné vstupní hodnoty, je vhodné to zdůraznit:int main(void)
, protože když tam nedáš nic, překladač automaticky předpokládá že tam má být nějakýint
.
Vy nějaký takový znáte? Obávám se, že si to spíš pletete s tím, že ve starších dialektech C se při neuvedení návratového typu implicitně předpokládal int
.
řádek 41: Když už máš funkci main() nadeklarovanou jako int, tak musíš také nějaký int vracet, takže tam připiš return 0;. A protože main() nepřebírá žádné vstupní hodnoty, je vhodné to zdůraznit: int main(void), protože když tam nedáš nic, překladač automaticky předpokládá že tam má být nějaký int.Tohle se dělo u návratových typů. Pokud neuvedete
void
jako parametr, překladač předpokládá, že o parametrech té funkce nic neví a tedy mohou být jakékoliv. Což je u main
, když ty parametry nepoužijete, vlastně pravda.
serazeni.c
skompiluj ako:
gcc -Wall -g -o atest serazeni.ckde
atest
bude tvoj spustitelny program. ten mozes spustit zapomoci gdb
debuggeru, napriklad:
mato@foxi:(~/lair/abc)$ gdb ./atest GNU gdb 6.1.1 [FreeBSD] (gdb) run Starting program: /home/mato/lair/abc/atest Program received signal SIGBUS, Bus error. 0x0000000000400665 in serazeni (r=0x7fffffffeaf0, i=2) at abc.c:20 20 if(r[j]>r[j+1]){ (gdb)a vidis, kde nastal problem (najskor pretecenie pola).
no, smyslem toho programu bylo porovnavat hodnoty a prehazovat je s vedlejsim (levym) prvkem v poli do te doby, dokud to nebude serazene od nejmensiho po nejvetsi... bohuzel jsem se opet zasekl a ten cyklus (upravil jsem to)
for(g=0;r[g]<r[++g];){
if(g==i){
complete=1;
break;
}
}
udela nekonecnou smycku (zajimave je, ze je vytezovano jen 1 jadro ze 4... a to jadro druhe... :D
jinak zatim dekuji za ten debugging... a kdyz jsme u te syntaxe a smyslu, jelikoz jsem zacatecnik, tak se jenom zeptam.. na psani uspesnych a funkcnich programu porebuji praxi (psat a psat) nebo na to existuje nejaka publikace? dekuji Vam.
ak som teda spravne pochopil ten program sa snazi robit bubblesort (bublinkove triedenie)? zotriedenie pola vyriesia 2 jednoduche cykly:
int a,b,temp; for (a =0 ; a < MAX; a++) { for (b =0 ; b < MAX-1; b++) { if (pole[b] > pole[b+1]) { /* swap n+1 with n */ temp = pole[b]; pole[b] = pole[b+1]; pole[b+1] = temp; } } }(kde MAX je zadefinovany ako dlzka pola).
#include <stdio.h> void serazeni(int r[], int i) { int j, k, g; for(j = 0;; j++) { for(g = 0; r[g] < r[g+1]; g++) { if(g == i-1) return; } if(j == i) j = 0; if(r[j] > r[j+1]) { k = r[j]; r[j] = r[j+1]; r[j+1] = k; } } } int main() { int i, size; int r[] = {542, 12, 58, 10, 7}; size = sizeof(r)/sizeof(int); serazeni(r, size); for(i = 0; i < size; i++) { printf("%d, ", r[i]); } printf("\n"); return 0; }Ušetřím si tak jeden cyklus a kód je o dost čitelnější. Tvůj algoritmus se zasekne v nekonečné smyčce kvůli téhle části:
if(j==i){ j=0; } else {Tedy Pokud jsi prošel celé, pole vrať se na začátek, v jiném případě proveď porovnání. Neporovná se ti první a druhý (či lépe nultý a první) prvek v poli a algoritmus tak nikdy nedoběhne.
int pole[10]; sizeof(pole);V tomhle případě sizeof() vrátí 40 (na 64 bitové architektuře 80) protože máme pole o 10 prvcích, každý 4 byty (8 bytů) velký.
int pole[10]; sizeof(pole)/sizeof(int);Vrátí počet prvků v poli děleno velikostí jednoho prvku - význam je předpokládám jasný.
int pole[10]; sizeof(pole)/sizeof(pole[0]);čili velikost celého pole děleno velikostí prvního prvku v poli.
na 64 bitové architektuře 80
Jak na které. Třeba u gcc na x86_64 je to 40.
long
, kde u LLP64 a LP64 (Windows a Linux) tento rozdíl je.
Tiskni
Sdílej: