Gehversuche in C

Programmier- und Scriptsprachen für alle Systeme.

Moderator: Dreamer

Gelöschter User
Gast
Gast

Gehversuche in C

Beitrag von Gelöschter User »

Fragt nach einer Anzahl an Nummern zwichen 1 und 10
Fragt nach den Werten diese Nummern
Rechnet dann den Durchschnitt aus

Code: Alles auswählen

#include <cs50.h>
#include <stdio.h>

#define ANSI_COLOR      "\x1b[35m"
#define ANSI_COLOR_R   "\x1b[0m"

int main(void)
{
    int i;
    do
        i = get_int("How many scores: ");
    while (i < 1 || i > 10);

    int score[i];
    for (int ii = 0; ii < i; ii++)
    {
        score[ii] = get_int("Score %i: ", ii + 1);
        printf("\n");
    }

    float sum = 0, avg;
    for (int iii = 0; iii < i; iii++)
    {
        sum = sum + score[iii];
        if (iii < (i - 1))
            printf("%.0f + ", (float) score[iii]);
        else
        {
            avg = sum / i;
            printf("%.0f = %.0f\n%.0f / %i = "ANSI_COLOR"%.2f Points average"ANSI_COLOR_R"\n",(float) score[iii], sum, sum, i, avg);
        }
    }
}
Mal schauen wo ich in ner Woche bin
lg
Benutzeravatar
Dreamer
Mod@Coding
Mod@Coding
Beiträge: 114
Registriert: 23.11.2023 04:44
Wohnort: Ab Feb 13 2024 Offline

Re: Gehversuche in C

Beitrag von Dreamer »

C zum coden lernen? :O
Masochist oder willst du in irgend ein super spezifisches Gebiet oder maybe underlying logic lernen?
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

Dreamer hat geschrieben: 28.12.2023 13:05 C zum coden lernen? :O
Masochist oder willst du in irgend ein super spezifisches Gebiet oder maybe underlying logic lernen?
cs50.
Macht schon Sinn. Er fängt mit C an um arrays zu erklären wie das im RAM aussieht, wie ein assembeler funktioniert, dass ein string nur ein array von chars is und man die austauschen kann dass man chars als ints ausgeben lassen kann, wie C erkennt wann ein String zuende ist mit nem NULL etc etc.

Danach gehts irgendwann zu anderen einfacheren Sprachen, um so zu sagen dem Lernden zu vermitteln was einen diese neuen Sprachen an Arbeit abnehmen und was under the hood passiert.
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

Dreamer hat geschrieben: 28.12.2023 13:05 C zum coden lernen? :O
Masochist oder willst du in irgend ein super spezifisches Gebiet oder maybe underlying logic lernen?
microcontroller boss werden
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

habe vor vielen jahren auch mit C angefangen. ist schon happig wenn man vorher nichts gemacht hat
aber wie dreamer sagt, kommt darauf an, was man erreichen will
fundamentals schön und gut, aber abstraktionen sind dafür gemacht, dass man eben nicht unter die hood sehen muss
mit deiner argumentation musst du bis zum maschinencode runter

wenn es nicht unbedingt C sein muss, dann tust du dich mit managed code (bspw. C#) leichter
hat vorteile was memory management, testing und package management anbelangt

aber in jedem fall viel spaß weiterhin, eine gute investition :)
Benutzeravatar
Dopp
Bronze Member
Bronze Member
Beiträge: 315
Registriert: 21.11.2023 12:51

Re: Gehversuche in C

Beitrag von Dopp »

hab auch mit C und java angefangen, dann c++
fand dann python und c# doch angenehmer
~ Der Anfang vom Ende ~
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

Gelöschter User 8 hat geschrieben: 28.12.2023 13:16 habe vor vielen jahren auch mit C angefangen. ist schon happig wenn man vorher nichts gemacht hat
aber wie dreamer sagt, kommt darauf an, was man erreichen will
fundamentals schön und gut, aber abstraktionen sind dafür gemacht, dass man eben nicht unter die hood sehen muss
mit deiner argumentation musst du bis zum maschinencode runter

wenn es nicht unbedingt C sein muss, dann tust du dich mit managed code (bspw. C#) leichter
hat vorteile was memory management, testing und package management anbelangt

aber in jedem fall viel spaß weiterhin, eine gute investition :)
Ich glaub dieser Kurs von Haward wird einem sehr oft empfohlen wenn man fragt wie und wo man anfangen soll. Gerade weil er sich mit fundamentals befasst.
Die stellen auch n codespace bereit mit ner extra c library die ein bisschen was vereinfacht und man keine setup schwierigkeiten hat. Es ist schon relativ okay um Konzepte zu lernen auch wenn man echt manchmal bei manchen compiler errors kopfschmeren kriegt was jetzt genau falsch sein soll.

Fühl mich nicht geknechtet
Dateianhänge
Unbenannt.png
Unbenannt.png (11.8 KiB) 2056 mal betrachtet
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

Außerdem hab ich n Arduino hier rum liegen.
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

wenn du schon mit den compiler messages kämpfst, dann warte ab bis du die ersten segfaults zur laufzeit bekommst 8)
und einen arduino kannst du doch in so ziemlich jeder sprache programmieren

btw, unbedingt lesen wenn du mit deinem kurs durch bist:
https://github.com/jnguyen095/clean-cod ... anship.pdf
Benutzeravatar
Dreamer
Mod@Coding
Mod@Coding
Beiträge: 114
Registriert: 23.11.2023 04:44
Wohnort: Ab Feb 13 2024 Offline

Re: Gehversuche in C

Beitrag von Dreamer »

Ja, alles selbst das ganze embedded Zeug ist heute nicht mehr wirklich in C. Mein letzter Arbeitgeber war low-powered devices, und wir haben fuer die neueren Golang verwendet.
Treiber und Grafik / Rendering-Engines sind noch in C(++), aber glaub nicht sooo viel mehr =D
Aber stimmt schon, ist schon praktisch um Grundlagen und das unterliegende zu verstehen!
Und auch wenn immer weniger in C geschrieben wird - ist sehr wahrscheinlich in der Karriere immer hin und wieder ueber einen C* stack trace zu laufen - sind einfach ueberall! =D
Viel Erfolg - gib in einer Woche Bescheid wie es lief!
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

Keine Ahnung wie lang ich dran saß
wordle.png
wordle.png (19.24 KiB) 2019 mal betrachtet
Der Part der vorgeschrieben war war dass es je nach wortlänge ein textfile durchsucht und eines von 100 zufälligen Worten aussucht.

Den Rest musste ich machen
Benutzeravatar
Dreamer
Mod@Coding
Mod@Coding
Beiträge: 114
Registriert: 23.11.2023 04:44
Wohnort: Ab Feb 13 2024 Offline

Re: Gehversuche in C

Beitrag von Dreamer »

Farbe in der Konsole?! Begone, vile demons!
Nice job Schlüssel! :D (Fuer das ganze, nicht speziell die Farbe)
Falls das noch C ist, versuch mal ein Wort einzugeben das so 5000 Stellen lang ist und berichte was passiert.
Wuerde mich interessieren ob heutige Compiler noch klassische Limits benutzen =)
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

cool!
file handling und zeichenketten sind in C echt mistig 8)

wie gut ist dein error handling? gib mal statt nem int als parameter ein sonderzeichen rein

und immer schön dranbleiben, will mehr sehen!
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

Gelöschter User 8 hat geschrieben: 29.12.2023 21:17 cool!
file handling und zeichenketten sind in C echt mistig 8)

wie gut ist dein error handling? gib mal statt nem int als parameter ein sonderzeichen rein

und immer schön dranbleiben, will mehr sehen!
Gerade wegen sowas finde ich es ganz fancy dass mir die fundamentals in C beigebracht werden

Code: Alles auswählen

    int wordsize;
    if (argv[1][0] < 53 || argv[1][0] > 56)
    {
        printf("Error: wordsize must be either 5, 6, 7, or 8\n");
        return 1;
    }
    else
        wordsize = argv[1][0] - 48;
geprüft wird das erste char array im zweiten string array von argv.
Da die zahl als string über argv ins programm kommt sind die zahlen 5 - 8 gleichbedeutend mit den ascii int's 53 - 56 wird das dort geprüft. zugegeben so könnte man auch "5apfel" eingeben. Aber keine Lust ne Funktion zu schreiben die den zweiten char auf '\0' prüft

Danach wird die wordlänge fürs spiel als int gespeichert indem man 48 vom Ascii wert abzieht.

Davor is btw the funktion die args auf 2 prüft
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

Ok musste doch verbessern

Code: Alles auswählen

    if ((argv[1][0] < 53 || argv[1][0] > 56) || argv[1][1] != '\0')
    {
        printf("Error: wordsize must be either 5, 6, 7, or 8\n");
        return 1;
    }
    int wordsize = argv[1][0] - 48;
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

Dreamer hat geschrieben: 29.12.2023 19:30 Farbe in der Konsole?! Begone, vile demons!
Nice job Schlüssel! :D (Fuer das ganze, nicht speziell die Farbe)
Falls das noch C ist, versuch mal ein Wort einzugeben das so 5000 Stellen lang ist und berichte was passiert.
Wuerde mich interessieren ob heutige Compiler noch klassische Limits benutzen =)
Als argument, Guess oder Word to guess?
Benutzeravatar
Dreamer
Mod@Coding
Mod@Coding
Beiträge: 114
Registriert: 23.11.2023 04:44
Wohnort: Ab Feb 13 2024 Offline

Re: Gehversuche in C

Beitrag von Dreamer »

Gelöschter User 7 hat geschrieben: 30.12.2023 00:00
Dreamer hat geschrieben: 29.12.2023 19:30 Farbe in der Konsole?! Begone, vile demons!
Nice job Schlüssel! :D (Fuer das ganze, nicht speziell die Farbe)
Falls das noch C ist, versuch mal ein Wort einzugeben das so 5000 Stellen lang ist und berichte was passiert.
Wuerde mich interessieren ob heutige Compiler noch klassische Limits benutzen =)
Als argument, Guess oder Word to guess?
Was ist der Unterschied zwischen guess oder word to guess?
Als einer der Versuche halt (nicht die Zahle vorne weg)
Nehme an es wird von was auch immer von der Konsole liest gekappt, aber in C weiss man nie ob man nicht doch schafft in random memory reinzuschreiben wenn es nicht in den richtigen Datentyp passt =D
Gelöschter User
Gast
Gast

Re: Gehversuche in C

Beitrag von Gelöschter User »

Dreamer hat geschrieben: 30.12.2023 06:45 Was ist der Unterschied zwischen guess oder word to guess?
Als einer der Versuche halt (nicht die Zahle vorne weg)
Nehme an es wird von was auch immer von der Konsole liest gekappt, aber in C weiss man nie ob man nicht doch schafft in random memory reinzuschreiben wenn es nicht in den richtigen Datentyp passt =D
Hab 6000 char's ins eingabeterminal kopiert und abgeschickt. ging.

Dann kurz das hier geschrieben

Code: Alles auswählen

int main(void)
{
    string input = get_string("INPUT: ");
    printf("%ld Letters\n", count_letters(input));
}

long count_letters(string input)
{
    long i = 0;
    while (input[i] != '\0')
        i++;
    return i;
}

und damit herausgefunden dass er bei 4095 chars im string aufhört weitere eingaben zu aktzeptieren, man kann zwar mehr eingeben und erscheint auch in der konsole. aber mehr als 4095 kriege ich nicht als ergebnis wenn ich 8000 characters oder so eingebe.
kann auch an get_string liegen. kA ist teil der cs50.h library die einem arbeit abnimmt
Zuletzt geändert von Gelöschter User am 30.12.2023 12:04, insgesamt 1-mal geändert.
Antworten