Komapaktheit bei Restriktionen
-
Hallo liebe C Programmierer,
falls noch andere zu dieser unchristlichen Stunde hier sind. Ich wollte eine einfache Frage bezüglich der Bedingungen in if (......) Anweisungen erfragen.
Hier ein Beispiel:#include<stdio.h> #include<stdlib.h> main(){ unsigned int q[8]={7,11,13,17,19,23,29,31}; int succes,setzentscheider,feldschranke1=0,feldschranke2=10;primsucher; srand(time(NULL)); do{ success=0; int setzentscheider = rand() % 3; int primsucher = rand() %100; if(primsucher!=2,3,5,7,9&&.....
unzwar ist die Frage, ob es in C eine Möglichkeit gibt, wie in Zeile 14
pseudocodemäßig hingeschrieben, in einer einzelnen Bedingung gleich mehrere
Werte zu verneinen, um mehrfaches Formulieren mit && zu umgehen oder
muss man es einzeln alles in den Kopf der Bedingten Anweisung reinschreiben ?
-
softpad schrieb:
falls noch andere zu dieser unchristlichen Stunde hier sind
Grad viele Informatiker sind nachtaktiv.
softpad schrieb:
unzwar ist die Frage, ob es in C eine Möglichkeit gibt, wie in Zeile 14
pseudocodemäßig hingeschrieben, in einer einzelnen Bedingung gleich mehrere
Werte zu verneinen, um mehrfaches Formulieren mit && zu umgehen oder
muss man es einzeln alles in den Kopf der Bedingten Anweisung reinschreiben ?Nein, das geht so nicht. Entweder schreibst du alles mit && aus, oder du packst es in eine Liste/Set oder ähnliche Struktur und prüfst, ob der Element darin vorkommt.
-
Du kannst Zeile 14 wie folgt schreiben:
if ( primsucher != 2 && primsucher % 2 == 0 )
-
ok danke und
1.)wie sähe eine solche Liste aus ?und weist du vielleicht auch wieviele Bedingungen man eigentlich in den Kopf einer if Restriktion setzen kann.
for(;;){ if (x!=y&& x<1000 && ....... .............................................)
?
-
danke
-
softpad schrieb:
1.)wie sähe eine solche Liste aus ?
Zum Beispiel ein Array. Dann mit einer Schleife durchiterieren und überprüfen ob ein bestimmter Wert enthalten ist.
softpad schrieb:
und weist du vielleicht auch wieviele Bedingungen man eigentlich in den Kopf einer if Restriktion setzen kann.
Beliebig viele.
-
softpad schrieb:
wie in Zeile 14
pseudocodemäßig hingeschrieben, in einer einzelnen Bedingung gleich mehrereKannste NICHT zusammenschreiben.
Wenn Du Rechenzeit einsparen willst, kannste ein Array nehmen mit
//unsigned int q[8]={7,11,13,17,19,23,29,31}; unsigned bool q[30]={0,0,0,0,0,0,0,1,0,0,0,1,0,1...1,0,1}//gesetzt an 7,11,13…29,31 if(q[primzahlkandidat%30]==0) … statt if(primzahlkandidat%2==0 || primzahlkandidat%3==0 || primzahlkandidat%5==0) …
Aber mir ist völlig unklar, was Dein Programm bewirken soll.
-
Da die Liste sehr wahrscheinlich dynamisch wachsen soll, kann es kein Array mehr sein, sondern sollte eine mit realloc wachsende Liste sein.
Darin dann was zu suchen geht einfach mit POSIX lfind.
-
Was spricht dagegen eine std::map zu verwenden?
Sollte ja schneller sein ein Element mittels Hashmap zu finden, als eine Liste/Array komplett zu durchsuchen, oder?
-
My2Cents schrieb:
Was spricht dagegen eine std::map zu verwenden?
C