Titlul: Initializare variabila
Scris de: c a e n din Iunie 23, 2011, 03:29:56
Am doua programe (1 si 2) care determina daca un numar N e prim. Primul functioneaza, al doilea scrie "DA" chiar daca N e par. Singura diferenta, dupa cum puteti observa, e ca al doilea are initializat OK-ul in momentul in care e declarat. Eu nu prea pot sa-mi dau seama de ce nu este modificata pe parcurs, totusi :-k Ma puteti ajuta? Multumesc! #include <stdio.h> #include <stdbool.h>
int main(void) {
unsigned long long n, i; bool ok;
(void) scanf("%llu", &n);
if(n % 2) { ok = 1; for(i = 3; i * i <= n && ok; i += 2) if(n % i == 0) ok = 0; } else ok = (n == 2);
if(ok) printf("DA\n"); else printf("NU\n");
return 0; }
#include <stdio.h> #include <stdbool.h>
int main(void) {
unsigned long long n, i; bool ok = 1;
(void) scanf("%llu", &n);
if(n % 2) for(i = 3; i * i <= n && ok; i += 2) if(n % i == 0) ok = 0; else ok = (n == 2);
if(ok) printf("DA\n"); else printf("NU\n");
return 0; }
Titlul: Răspuns: Initializare variabila
Scris de: MciprianM din Iunie 23, 2011, 09:32:15
Pe scurt(am schimbat doar indentarea): #include <stdio.h> #include <stdbool.h>
int main(void) {
unsigned long long n, i; bool ok = 1;
(void) scanf("%llu", &n);
if(n % 2) for(i = 3; i * i <= n && ok; i += 2) if(n % i == 0) ok = 0; else ok = (n == 2);
if(ok) printf("DA\n"); else printf("NU\n");
return 0; }
P.S.: Te ajuta sa iti setezi compilatorul sa iti dea toate warning-urile. Cand am compilat codul tau, am primit un warning care imi zicea sa pun braces "{}" ca sa evit un ambiguous else.
Titlul: Răspuns: Initializare variabila
Scris de: c a e n din Iunie 23, 2011, 10:18:42
Ah, merci. Era cam tarziu si chiar nu mi-am dat seama de asta. Referitor la warning-uri, compilez cu gcc sursa.c -o sursa -Wall -O2
si nu am primit nimic legat de paranteze (GCC 4.2). Inainte foloseam si splint (acum nu il mai am si mi-a fost lene sa-l instalez, dar cred ca il voi pune din nou). Multumesc mult :)
|