Diskuze: úkol prvočísla
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 50 zpráv z 52.
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.


Snaž se něco napsat sám. Pak to tu pošli a my ti poradíme. Celé to za Tebe určitě psát nebudeme.


#include <stdio.h>
#include <stdlib.h>
int je_prvoc (int c)
{
int i;
for (i = 2; i < c; i++)
{
if ( c % i == 0)
return 0;
}
return 1;
}
int main()
{
int cislo = 200000;
int i, p1,a,b,pocet=0;
printf("Zadej a od : ");
scanf("%d",&a);
printf("Zadej b do : ");
scanf("%d",&b);
for (i=2; i <= cislo; i++)
{
p1=je_prvoc(i);
if (p1!=0)
{
if ((i>a) && (i<b))
printf("\n%5d",i);
}
}
while(cislo>0)
{
pocet++;
cislo=cislo/10;
}
printf("Pocet:%d",pocet);
return 0;
}
Mám to takhle,ale prostě nevím jak tam dát aby to obsahovalo nulo a
spočítalo čísla v rozshau a,b.
Vlož to znovu přes ikonku vložit kód - takové 2 papárky s pluskem.


#include <stdio.h>
#include <stdlib.h>
int je_prvoc (int c)
{
int i;
for (i = 2; i < c; i++)
{
if ( c % i == 0)
return 0;
}
return 1;
}
int main()
{
int cislo = 200000;
int i, p1,a,b;
printf("Zadej a od : ");
scanf("%d",&a);
printf("Zadej b do : ");
scanf("%d",&b);
for (i=2; i <= cislo; i++)
{
p1=je_prvoc(i);
if (p1!=0)
{
if ((i>a) && (i<b))
printf("\n%5d",i);
}
}
return 0;
}
V prvom rade si musíš ujasniť čo sú to prvočísla.
Ak to nevieš, použi google.
C neumim, ale pokud koukám dobře:
p1=je_prvoc(i);
if (p1!=0) { ... }
můžeš napsat
if (je_prvoc(i)) { ... }
dávat print do toho ifu funkce je_prvoc je prasárna, ale on učitel je zřejmě nic jiného neučil.
Co je za prasárnu na
if (je_prvoc(i)) //vrací 1(true) nebo 0(false)
{
printf("\n%d je prvočíslo",i);
}
? 
V céčku je to trošku inakšie.
toto:
p1=je_prvoc(i);
vypíše chybu:
undefined reference to `je_prvoc'
Najprv by musel napísať funkciu: je_prvoc() a až potom ju môže
použiť!
Fce na prvočísla mi přijde OK, ten cyklus už ne. Měl bys tma mít něco jako:
for (i = a; i <= b; i++)
Co se týče té číslice 0, asi bych si to převedl na znaky, jestli to nějak jde, v céčku nedělám.
Riešenie je napríklad takéto:
#include <stdio.h>
#include <math.h>
void prvocislo(int n)
{
int je_prv = 1;
int i;
for(i = 2; i <= sqrt(n); ++i) {
if (n % i == 0) {
je_prv = 0;
break;
}
}
if (je_prv)
printf("%d\n", n);
}
int main(void)
{
int i, a, b;
scanf("%d", &a);
scanf("%d", &b);
for (i = a; i <= b; i++)
prvocislo(i);
return 0;
}
len či budeš vedieť vysvetliť učiteľovi ako to funguje....:P
A kde máš tu kontrolu na číslici 0? 
funkce je_prvcoc() už podle názvu by měla vracet true nebo false.
Máš pravdu, oprava:
namiesto
if (je_prv)
printf("%d\n", n);
treba dať
if (je_prv && n != 0)
printf("%d\n", n);
Sdraco, nehľadaj v céčku nič zvláštneho, ty ho vlastne poznáš a
určite lepšie ako ja
, len v
ňom nie sú objekty, všetko ostatné je rovnaké ako v iných jazykoch.
Jo, libco to má divně, ale HoBi to myslel dobře.
Ako som už uviedol vyššie, funkcia je_prvcoc() nie je súčasťou knihovní jazyka C a treba si ju najprv napísať!!! až potom sa dá použiť!
Tak samozřejmě, když je pojmenovaná česky
Ale on jí tam má a pak ji volá,
takže nevidím problém.
Ne, v zadání je, které mají číslici 0. Takže třeba 10, 105 atd. Ty kontroluješ něco jiného.
Sorry, špatne som si pozrel jeho kód.
Bože, asi som už unavený.
Je to ako písal sdraco, treba to previesť na znaky a tak nájsť '0' v
číslach.
Vyskúšaj toto:
#include <stdio.h>
#include <string.h>
#include <math.h>
int prvocislo(int n)
{
int je_prv = 1;
int i;
for(i = 2; i <= sqrt(n); ++i) {
if (n % i == 0) {
je_prv = 0;
break;
}
}
if (je_prv)
printf("%d\n", n);
}
int main(void)
{
int i, j, a, b;
char c[20];
scanf("%d %d", &a, &b);
for (i = a; i <= b; i++) {
sprintf(c, "%i", i); // preveď integer na string
for (j = 0; j < strlen(c); j++) { // prejdi strig po znakoch
if (c[j] == '0') { // ak je tam nula
prvocislo(i); // volaj funkciu
break;
}
}
}
return 0;
}
Nebylo by lepší kontrolovat přítomnost 0 v číslu pomocí regulárního
výrazu? 
Rozhodni sa čo vlastne chceš. Súčet vypísaných čísiel alebo ich počet.
To je zbytečně složitý, stačí jen zjistit zda tam je nebo není přes funkci strchr
Třeba takhle
#include <stdio.h>
#include <string.h>
#include <math.h>
int prvocislo(int n)
{
int i;
for(i = 2; i <= sqrt(n); ++i)
if (n % i == 0) return 0;
return 1;
}
int main(void)
{
int i,a, b,num=0;
char c[20];
scanf("%d %d", &a, &b);
for (i = a; i <= b; i++) {
sprintf(c, "%i", i);
if strchr(c,'0')
if (prvocislo(i)) num++;
}
printf("Počet prvočísel s nulou je %d\n", num);
return 1;
}
Skúsil som to tvoje a nefunguje mi to.
Možno som to špatne zapísal do kódu:
#include <stdio.h>
int maNulu(unsigned num){
while(num >= 10){
if(num % 10 == 0)
return 1;
num /= 10;
}
return !num;
}
int main(void)
{
unsigned int i, j, a, b;
scanf("%d %d", &a, &b);
for (i = a; i <= b; i++) {
j = maNulu(i);
printf("%u\n", j);
}
return 0;
}
takto:
int prvocislo(int n)
{
int je_prv = 1;
int i;
for(i = 2; i <= sqrt(n); ++i) {
if (n % i == 0) {
je_prv = 0;
break;
}
}
if (je_prv) {
printf("%d\n", n);
return 1;
}
}
int main(void)
{
int i, j, a, b, pocet = 0;
char c[20];
scanf("%d %d", &a, &b);
for (i = a; i <= b; i++) {
sprintf(c, "%i", i); // preveď integer na string
for (j = 0; j < strlen(c); j++) { // prejdi strig po znakoch
if (c[j] == '0') { // ak je tam nula
pocet += prvocislo(i); // volaj funkciu
break;
}
}
}
printf("\nPocet vypisanych prvocisiel je %d.", pocet);
return 0;
}
Změň ještě tu funkci prvocislo() tak aby vracela 1 nebo 0.
stdio.h, math.h a string.h
Možno je problém v tom, že to len skopíruješ. Môže to tam vložiť iné znaky ako vidíš v kóde.
Možno je problém v tom, že to len skopíruješ. Môže to tam vložiť iné znaky ako vidíš v kóde.
Zobrazeno 50 zpráv z 52.