Diskuze: Char Spočitavanie znakov
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 13 zpráv z 13.
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, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.


... najlepsie asi bude, ked sa s nami podelis o zadanie ulohy 
https://kurzy.kpi.fei.tuke.sk/…o.solve.html
zadania
Technológie nie sú dovolene žiadne knižnice atd ... Čísla sú generovane
pc Dovolené knižnice su std a tak ďalej.
Link nie je funkcny.
Pises:
"Technológie nie sú dovolene žiadne knižnice atd ..."
a hned na to "Dovolené knižnice su std a tak ďalej."
Co je teda pravda?
A prosim ta, zacni pouzivat interpunkcne znamienka. Ulahci to ludom lepsie pochopit to, co im chces povedat.
"":https://kurzy.kpi.fei.tuke.sk/…o.solve.html
Po vstupe na stránku treba kliknuť na Minulý Metod a tam je znenie
zadania.
Dovolené sú knižnice ktoré sú v klasickom Cčku napr.
math.h,stdlib.h,stdio.h.
Neviem kde tam máš napísané, také znenie ako si napísal ty tu, možno zle pozerám, ale ja som tam našiel takéto niečo
Na vstupe dostaneme číslo 165. Pri použití metódy MM spočítame každú cifru (1+6+5). Výsledok je 12. Kedže 12 je dvojciferné číslo opät voláme metódu MM (1+2). Výsledkom je číslo 3, ktoré je jednociferné, a teda metódu môžeme ukončiť.
Robíš ciferný súčet dokým nemá číslo len jednu cifru
#include <stdio.h>
int mm(int num){
int result = 0;
int tmp;
if(num / 10 == 0){
return num;
}
while(1){
tmp = num % 10;
result += tmp;
num /= 10;
if(num == 0){
return mm(result);
}
}
return 0;
}
int main() {
printf("Vysledok = %d", mm(1721));
return 0;
}
V zadaní to nepíše ale keď to uploadujem dany kod do servera kde sa to
testuje tak server negeneruje čísla v rozsahu int ale 1000 až 100000 cisel
hned zasebou.
Napr.15187194051875842571428751725019245891275871289579817289571982759817928579128917857981798798758912739587197902179587198327598172985719827598172958719275891798571982759172985719285798127598719579175981795719823512571678659170593759179518571095719875917095781247591759712951757198759719285798175798571
Zadání jasně říká:
1. Vstupom može byť len prirodzené číslo (študentský identifikátor).
Tedy vstupem je jen jedno přirozené (N, N0, N+) číslo (0, 1, … 10, …, atd. ), nikoli čísla resp. více čísel, žádná pomlčka.
Jestli si se špatně nevyjádřil a měl namysli, že na vstupu je generováno jediné číslo tvořené až ze 100000 číslic.
Pokud to ani takto není, pak je zadání úlohy nepřesné a Ivan se bude muset poprat s derivacemi a integrály sám.
Ano je to tak,že je to vygenerované číslo až zo 100000 cislic.
Zde máš řešení.
Vytvoříš si dynamické plovoucí jednorozměrné pole, jehož velikost si přizpůsobuješ dle potřeby. Ze vstupu postupně načítáš znaky dokud není vstupní buffer prázdný (poslední znak je znak nového řádku). Každý znak si převedeš na číselnou hodnotu, kterou následně uložíš do pole. Zjistíš součet všech číslic v poli, provedeš rozklad součtu (součet ze součtu), to celé rozkládáš tak dlouho dokud není výsledek jednociferný. Nakonec výsledek vypíšeš na obrazovku.
#include <stdio.h>
#include <stdlib.h>
#define MEMBLOCK 100
int mm(char *arr, int size);
int main(void) {
char *buffer = NULL;
int c, mem = 0, pos = 0;
mem += MEMBLOCK;
buffer = (char *)malloc(mem);
if (!buffer) {
fprintf(stderr, "Chyba alokace pameti.\n");
exit(1);
}
do {
if (mem == pos) {
mem += MEMBLOCK;
buffer = (char *)realloc(buffer, mem);
if (!buffer) {
fprintf(stderr, "Chyba alokace pameti.\n");
exit(1);
}
}
c = getchar();
if (c != '\n') *(buffer + pos++) = c - '0';
} while (c != '\n');
printf("%d", mm(buffer, pos));
free(buffer);
buffer = NULL;
return 0;
}
int mm(char *arr, int size) {
int i, num = 0;
for (i = 0; i < size; i++) num += *(arr + i);
while (num > 9) {
int sum = 0;
do {
sum += (num % 10);
num /= 10;
} while (num);
num = sum;
}
return num;
}
#define je direktiva preprocesoru která slouží pro definici makra. V tomto případě je vytvořená číselná konstanta MEMBLOCK, která je pak při překladu nahrazena hodnotou 100.
Varianta 2 - přímá analýza vstupu
#include <stdio.h>
int main(void) {
int c, sum = 0;
do {
c = getchar();
if (c != '\n') sum += (c - '0');
} while (c != '\n');
while (sum > 9) {
int sum2 = 0;
do {
sum2 += (sum % 10);
sum /= 10;
} while (sum);
sum = sum2;
}
printf("%d", sum);
return 0;
}
Zobrazeno 13 zpráv z 13.