Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL, Wikipedie). Staronovým vedoucím zůstává Andreas Tille.
Jason Citron končí jako CEO Discordu. Od pondělí 28. dubna nastupuje nový CEO Humam Sakhnini, bývalý CSO Activision Blizzard.
Článek na Libre Arts představuje baskytarový multiefekt Anagram od společnosti Darkglass Electronics. S Linuxem uvnitř (licence, GitHub).
Městský soud v Praze vyhlásil rozsudek, který vyhověl žalobě novináře Jana Cibulky, který s podporou spolku IuRe (Iuridicum Remedium) požadoval omluvu od státu za to, že česká legislativa nařizuje operátorům uchovávat metadata o elektronické komunikaci. To je přitom v rozporu s právem. Stát se musí novináři omluvit a zaplatit náklady řízení. Především je ale součástí přelomové rozhodnutí o nelegálnosti shromažďování dat a o
… více »Americké technologické firmy Apple a Meta Platforms porušily pravidla na ochranu unijního trhu, uvedla včera Evropská komise (EK). Firmám proto vyměřila pokutu – Applu 500 milionů eur (12,5 miliardy Kč) a Metě 200 milionů eur (pět miliard Kč). Komise to oznámila v tiskové zprávě. Jde o první pokuty, které souvisejí s unijním nařízením o digitálních trzích (DMA). „Evropská komise zjistila, že Apple porušil povinnost vyplývající z nařízení
… více »Americká společnost OpenAI, která stojí za chatovacím robotem ChatGPT, by měla zájem o webový prohlížeč Chrome, pokud by jeho současný majitel, společnost Google, byl donucen ho prodat. Při slyšení u antimonopolního soudu ve Washingtonu to řekl šéf produktové divize ChatGPT Nick Turley.
Po roce vývoje od vydání verze 1.26.0 byla vydána nová stabilní verze 1.28.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.28.
Byla vydána nová verze 10.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 211 vývojářů. Provedeno bylo více než 2 800 commitů. Přehled úprav a nových vlastností v seznamu změn.
42 svobodných a otevřených projektů získalo finanční podporu od NLnet Foundation (Wikipedie).
Americký výrobce čipů Intel plánuje propustit více než 20 procent zaměstnanců. Cílem tohoto kroku je zjednodušit organizační strukturu ve firmě, která se potýká s problémy.
>
int main(void)
{
int a,k,i;
scanf("%d", &a);
int b[2000];
for(i = 0; i < a; i++){
b[i];
}
b[i] = k;
printf("\n%d\n", k);
return 0;
}
Nevite proc to nefunguje? na zacatku se ma ulozit hodnota do promenne a. Potom se definuje neinicializovane pole b. Potom by se mela zapsat hodnota z promenne a do pole b a pak by se mela hodnota pole b priradit do promenne k.
#include <iostream> #include <array> using namespace std; void main(int argc, char* argv[]) { array<int, 3> arr = { 1, 2, 3 }; for (int i : arr) cout << i << endl; system("pause"); }
lhs = rhs;lhs je věc, do které se přiřazuje. Normálně tedy proměnná, prvek pole nebo struktury, ..., obecně něco adresovatelného. rhs je hodnota, která se přiřazuje. Porovnej si na základě toho svoje popisy, co se má dít, s kódem. Zjistíš, že vůbec neodpovídají. [*] Pro puristy: coby příkaz. Přiřazení je samozřejmě výraz, takže lze přiřadit i někde uprostřed výrazu, ale tímto teď nekomplikuji.
waste01.c: In function ‘main’: waste01.c:7:5: warning: ISO C90 forbids mixed declarations and code [-Wpedantic] int b[2000]; ^ waste01.c:9:2: warning: statement with no effect [-Wunused-value] b[i]; ^ waste01.c:11:10: warning: ‘k’ is used uninitialized in this function [-Wuninitialized] b[i] = k; ^Clang 3.4 -Wall -pedantic
waste01.c:9:5: warning: expression result unused [-Wunused-value] b[i]; ~ ~^ waste01.c:11:12: warning: variable 'k' is uninitialized when used here [-Wuninitialized] b[i] = k; ^ waste01.c:5:12: note: initialize the variable 'k' to silence this warning int a,k,i; ^ = 0 2 warnings generated.Měl by ses snažit, aby ti kompilátor žádné warningy nevyhazoval i při velmi drsném nastavení, co se má kontrolovat. Minimálně v tomto případě bys totiž hned viděl, že ten tvůj kód nedává moc smysl. Co si BTW představuješ pod pojmem "pole"? Přijde mi, že ti to není vůbec jasné...
int pole[1001][3]
jak se da zadat vstup do toho pole?
nebo kdyz na vstupu zadame cislo do promenne N a cislo N ma predstavovat pole[N][3]
pole[N][3] - hodnota v poli "pole" na řádku N, sloupci 3 pole[N][3] = x; // Do pole "pole" přiřaď na řádek N, sloupec 3 hodnotu "x"
int N = 20;
int pole[N][3];
pole[1-N][1-3] = 3; // Do pole "pole" prirad cislo 3 na radek 1 az N, sloupec 1 az 3 hodnotu 3
muze to tak byt?
staticky alokované pole (to, co operátor []
vyrobí) nemůže mít proměnnou velikost, takže použít jako délku pole nekonstantní proměnnou není přípustné
V tomhle případě to projde, protože ta alokace se provádí až za běhu. Neprošlo by to u globální proměnné nebo kdyby pole
bylo static
. Použije se ale samozřejmě aktuální hodnota N
v okamžiku té inicializace.
The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))).Klidně můžete napsat i 50[mojepole]. Souhlasím, žě nemusíme mást (česky?) začátečníka, ale taky mu nemusíme lhát. A jeho pole je něco, čemu se nadává VLA a je naprosto v souladu s C99, C11 pak tuto "featuru" stanoví jako volitelnou (když není dostupné, musí být definováno __STDC_NO_VLA__).
Přiřadit hodnotu více prvkům v poli najednou nelze, na to je třeba použít cyklus.Když se chce, tak jde i toto
int N = 20; int pole[N][3]; /*int pole[20][3] */ pole[1-N][1-3] = 3; /*pole[-19][-2] = 3; */Tedy zápis mimo alokovaný prostor.
Záporné indexy mohou fungovat takto, ale že by to byla zrovna začátečnická praktika…
int pole[3] = {0,1,2}; int *ptr = &pole[2]; printf("%d,%d,%d",pole[0],pole[1],pole[2]); printf("%d,%d,%d",ptr[-2],ptr[-1],ptr[0] );
Ne. Nevymýšlejte si, prosím, svou vlastní syntaxi. Četl jste snad někde něco o tom, že jako index pole můžete napsat rozsah, navíc se znakem, který obvykle znamená odečítání? Překladač není člověk a nebude hádat, co jste tím asi tak mohl myslet. To, co jste napsal, by ve skutečnosti znamenalo
pole[-19][-2] = 3
Pokud chcete naplnit celé pole, musíte to udělat cyklem:
int i, j; for (i = 0; i < N; i++) for (j = 0; j < 3; j++) pole[i][j] = 3;nebo pokud překladač podporuje C99 syntaxi
for (int i = 0; i < N; i++) for (int j = 0; j < 3; j++) pole[i][j] = 3;
cisla[2][123123]
?
int
, short
, long
, float
). Protože v tom jediném pointru, který podprogram dostane, není žádná informace o rozměrech, musí dostat dalšími parametry počet řádku a sloupců. A pak se po prostoru pole může pohybovat.
Nebo je to myšleno, že program dostane datový proud na STDIN? Pak si na to musí udělat/alokovat místo, načíst data a opět se pointry dostane, kam potřebuje.
int main(void) { int a,k,i; // tři proměnné int neinicializované scanf("%d", &a); //přečteme číslo a uložíme proměnnou do "a" int b[2000]; // neinicializované pole for(i = 0; i < a; i++){ //provedeme cyklus několikrát pokud bude a>i b[i]; //zde nic neděláme nemá to význam } //konec cyklu b[i] = k; //neinicializovanou proměnnou přečteme a zapíšeme do pole někam kam ukazuje proměnná i čili zapisujeme buhví co a bůh ví kam printf("\n%d\n", k); //vypíšeme nesmysl co je v neinicializované proměnné k return 0; //konec }Co takhle si nejdříve něco přečíst Programování v jazyce C
b[i] = k; //neinicializovanou proměnnou přečteme a zapíšeme do pole někam kam ukazuje proměnná i čili zapisujeme buhví co a bůh ví kam
To není tak úplně pravda, bezprostředně po skončení cyklu bude mít proměnná i
hodnotu a
. Že to nedává smysl, protože pravá strana je neinicializovaná a levou pak nikdy nepoužijeme (a nedávalo by to smysl ani obráceně, protože levá strana také není inicializovaná), to už je jiná kapitola.
Musím říct, že tady mne tazatel dostal. Většinou u špatně napsaného programu aspoň tuším, co měl autor na mysli. Tady se naprosto neodvažuji hádat; podobné pocity jsem měl při čtení zdrojáku z úlohy 6 tady.
Tiskni
Sdílej: