Kleine Frage zu C/C++

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Kleine Frage zu C/C++

Beitragvon murph » Donnerstag 18. Mai 2006, 21:11

ich möchte an einen C-Skript

Code: Alles auswählen

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main()
{
    int i, j;

    srand((unsigned)time(NULL));
    while(1) {
        i = 1+(int) (350*rand()/(RAND_MAX+1.0));
        j = rand() % 350;
        printf("%i\n", j);
    }

    return 0;
}

diese Dauerschleife möchte ich begrenzen, sodass ich nur 10, 100, 1000, ...
Ergebnisse bekomme. Kann das wer hier?
BlackJack

Beitragvon BlackJack » Donnerstag 18. Mai 2006, 22:06

Ja das kann wer:

Code: Alles auswählen

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main()
{
    int i, j;

    srand((unsigned) time(NULL));
    for (i=0; i<10; ++i) {
        /* i = 1+(int) (350*rand()/(RAND_MAX+1.0)); */
        j = rand() % 350;
        printf("%i\n", j);
    }
    return EXIT_SUCCESS;
}


Da Du sowieso nur `j` benutzt hast, habe ich `i` zum Schleifenzähler umfunktioniert.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Freitag 19. Mai 2006, 14:44

ok, das war schonmal ganz gut ( ;) ),


Code: Alles auswählen

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main()
{
    int i, j;

    srand((unsigned) time(NULL));
    for (i=0; i<[color=red]x[/color]; ++i) {
        j = rand() % 350;
        printf("%i\n", j);
    }
    return EXIT_SUCCESS;
}


aber wie mache ich, dass der Zielwert x über einen parameter übergeben wird?
ryu
User
Beiträge: 41
Registriert: Dienstag 7. Februar 2006, 19:34

Beitragvon ryu » Freitag 19. Mai 2006, 16:01

Die Argumente werden in C als Argumente der main() Funktion übergeben. Das sieht dann ca. so aus:

Code: Alles auswählen

int main(int argc, char* argv[])
{
    //mein Code
}

Wobei argc die Anzahl der Argumente enthält, argv die Argumente selber.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Freitag 19. Mai 2006, 17:17

genau das etwas ausführlicher bitte.
da ist der nächste Punkt: Wie greife auf diese Variable denn zurück?
Ich habe keine Ahnung von C/C++, versuche mich daran mal n bissl.
Aber es wäre nett, wenn jemand mir das sonst beantworten könnte...
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Beitragvon querdenker » Freitag 19. Mai 2006, 17:22

Hi murph!

Auch wenn das jetzt ein wenig nach RTFM klingt:

C von A bis Z

mfg, querdenker
BlackJack

Beitragvon BlackJack » Freitag 19. Mai 2006, 22:09

`argc` enthält die Anzahl der Argumente und `argv` ist ein Feld mit Zeichenketten der einzelnen Argumente. `argc` entspricht ``len(sys.argv)`` in Python und `argv` entspricht `sys.argv`. Da sieht man wie nah an C die Parameterübergabe auf der Kommandozeile in Python umgesetzt wurde.

Code: Alles auswählen

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main(int argc, char **argv)
{
    int i, j, max;

    if (argc < 2) {
        printf("Usage: %s <max>", argv[0]);
        return EXIT_FAILURE;
    }
    max = atoi(argv[1]);
    srand((unsigned) time(NULL));
    for (i=0; i<max; ++i) {
        j = rand() % 350;
        printf("%i\n", j);
    }
    return EXIT_SUCCESS;
}

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder