IBM kupuje za 11 miliard USD (229,1 miliardy Kč) firmu Confluent zabývající se datovou infrastrukturou. Posílí tak svoji nabídku cloudových služeb a využije růstu poptávky po těchto službách, který je poháněný umělou inteligencí.
Nejvyšší správní soud (NSS) podruhé zrušil pokutu za únik zákaznických údajů z e-shopu Mall.cz. Incidentem se musí znovu zabývat Úřad pro ochranu osobních údajů (ÚOOÚ). Samotný únik ještě neznamená, že správce dat porušil svou povinnost zajistit jejich bezpečnost, plyne z rozsudku dočasně zpřístupněného na úřední desce. Úřad musí vždy posoudit, zda byla přijatá opatření přiměřená povaze rizik, stavu techniky a nákladům.
Organizace Free Software Foundation Europe (FSFE) zrušila svůj účet na 𝕏 (Twitter) s odůvodněním: "To, co mělo být původně místem pro dialog a výměnu informací, se proměnilo v centralizovanou arénu nepřátelství, dezinformací a ziskem motivovaného řízení, což je daleko od ideálů svobody, za nimiž stojíme". FSFE je aktivní na Mastodonu.
Paramount nabízí za celý Warner Bros. Discovery 30 USD na akcii, tj. celkově o 18 miliard USD více než nabízí Netflix. V hotovosti.
Nájemný botnet Aisuru prolomil další "rekord". DDoS útok na Cloudflare dosáhl 29,7 Tbps. Aisuru je tvořený až čtyřmi miliony kompromitovaných zařízení.
Iced, tj. multiplatformní GUI knihovna pro Rust, byla vydána ve verzi 0.14.0.
FEX, tj. open source emulátor umožňující spouštět aplikace pro x86 a x86_64 na architektuře ARM64, byl vydán ve verzi 2512. Před pár dny FEX oslavil sedmé narozeniny. Hlavní vývojář FEXu Ryan Houdek v oznámení poděkoval společnosti Valve za podporu. Pierre-Loup Griffais z Valve, jeden z architektů stojících za SteamOS a Steam Deckem, v rozhovoru pro The Verge potvrdil, že FEX je od svého vzniku sponzorován společností Valve.
Byla vydána nová verze 2.24 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.
Společnost Proton AG stojící za Proton Mailem a dalšími službami přidala do svého portfolia online tabulky Proton Sheets v Proton Drive.
O víkendu (15:00 až 23:00) probíha EmacsConf 2025, tj. online konference vývojářů a uživatelů editoru GNU Emacs. Sledovat ji lze na stránkách konference. Záznamy budou k dispozici přímo z programu.
else {
printf("CHYBA: Neplatny vstup!\n");
exit(1);
tak mi kalkulačka počítá snadno i se zápornými čísly, ale také načítá veškeré další znaky, které při výpočtu ignoruje, ale na vstupu by být neměly.
Otázka tedy zní, jak tyto znaky odfiltrovat (či jinak ošetřit), aby na vstupu byla pouze čísla, platné operátory a vše ostatní by končilo errorem a koncem programu s příslušnou hláškou. Snad by se to dalo vyřešit nějakou vhodnou podmínkou na vstupu?
DRUHY - málo nebo žádné znaky na vstupu:
Zatím jsem nepřišel na to, jak ošetřit vstup, nak terém není nic, mezera, mezera a pouze číslo, mezera číslo a operátor. Prostě nedostatečný vstup. Stand nějak využít fci strncmp?
Byl bych rád, kdybyste mě někdo nakopnuli správným směrem. Píšu to od rána a už mi to nemyslí :)
Zde má dosavadní implementace.
int main()
{
//int vysledek;
int numInp;
char vstup[15];
int op;
int vysledek = 0;
int i;
int end = 0;
while(end != EOF){
end = scanf("%s", vstup); //Program postupně bude brát slova ze vstupu...
if(end == EOF)
break;
numInp = atoi(vstup);
for(i = 0; i < strlen(vstup); i++){
if(isdigit(vstup[i])) { //pokud načetl číslo...
numInp = atoi(vstup);
push(numInp); //...přidá jej na vrchol zásobníku...
}
else if(strlen(vstup) == 1){
switch(vstup[i]) /* ...pokud načetl operátor, vezme dvě čísla z vrcholu zásobníku,
*aplikuje na ně načtený operátor a výsledek uloží zpět na zásobník.*/
{
case '+':
vysledek = push(pop() + pop());
break;
case '-':
op = pop();
vysledek = push(pop() - op);
break;
case '*':
vysledek = push(pop() * pop());
break;
case '/':
op = pop();
if (op == 0){
printf("Nelze delit nulou\n");
exit(1);
}
else
vysledek = push(pop() / op);
break;
default:
printf("CHYBA: Neplatny vstup!\n"); //všechny jiné znaky (jednoznakové) než výše uvedené operandy
exit(1);
}
}
else {
printf("CHYBA: Neplatny vstup!\n"); // filtruje "smetí" typu sdf125, ale i záporná čísla
exit(1);
}
}
}
printf("%d\n", vysledek);
return 0;
}
Řešení dotazu:
$ man strtol strtod strtof strtold
int
main(int argc, char *argv[])
{
int base;
char *endptr, *str;
long val;
if (argc < 2) {
fprintf(stderr, "Usage: %s str [base]\n", argv[0]);
exit(EXIT_FAILURE);
}
str = argv[1];
base = (argc > 2) ? atoi(argv[2]) : 10;
errno = 0; /* To distinguish success/failure after call */
val = strtol(str, &endptr, base);
/* Check for various possible errors */
if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
|| (errno != 0 && val == 0)) {
perror("strtol");
exit(EXIT_FAILURE);
}
if (endptr == str) {
fprintf(stderr, "No digits were found\n");
exit(EXIT_FAILURE);
}
/* If we got here, strtol() successfully parsed a number */
printf("strtol() returned %ld\n", val);
if (*endptr != '\0') /* Not necessarily an error... */
printf("Further characters after number: %s\n", endptr);
exit(EXIT_SUCCESS);
}
$ ./a.out 123
strtol() returned 123
$ ./a.out ' 123'
strtol() returned 123
$ ./a.out 123abc
strtol() returned 123
Further characters after number: abc
$ ./a.out 123abc 55
strtol: Invalid argument
$ ./a.out ''
No digits were found
$ ./a.out 4000000000
strtol: Numerical result out of range
Tiskni
Sdílej: