dringende Anfängerhilfe verkettete Liste

Schnelle objektorientierte, kompilierende Programmiersprache.
Capatcha
Beiträge: 13
Registriert: Sa Nov 28, 2009 2:03 pm

Re: dringende Anfängerhilfe verkettete Liste

Beitrag von Capatcha » Sa Nov 28, 2009 6:55 pm

Oh man...
Ich schaffe es nicht mal einen Eintrag mit der von mir eingegeben Wort zu vergleichen...

Code: Alles auswählen

search(cursor, name, anzahl, kategorie);

Code: Alles auswählen

void search(struct elem *cursor, char name[20], int a, int k) {
    char gprodukt[20];
    printf("Welches Element soll ausgegeben werden?");
    fgets(gprodukt, 20, stdin);

    while (gprodukt[20] == name[20]) {
        printf("Test");

        }


}

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: dringende Anfängerhilfe verkettete Liste

Beitrag von stampuhh » Sa Nov 28, 2009 7:10 pm

ich hatte meinen alten Beitrag noch mal editiert ;)

Da steht am Ende noch mal etwas in grün falls du es noch nicht gelesen hast.

Code: Alles auswählen

while (gprodukt[20] == name[20])
weiß ich gerade nicht wirklich was du damit machen willst ;)

In C macht man einen Vergleich z.B. mit der Methode strcmp und dann würde ich nicht "while" nehmen sondern "if".

Außerdem musst du drauf achten, dass was du einliest über die Konsole ggf. auch Sonderzeichen wie '\0' oder '\n' oder '\r' oder so was enthalten kann. So welche Probleme hatte ich neulich und es hat lange gedauert bis ich darauf gekommen bin :D

Am besten du liest dir erst mal die beiden Links aus meinem letztem und diesen Beitrag durch.

gruß stampuhh
NachDenkSeiten.de

Capatcha
Beiträge: 13
Registriert: Sa Nov 28, 2009 2:03 pm

Re: dringende Anfängerhilfe verkettete Liste

Beitrag von Capatcha » Sa Nov 28, 2009 7:28 pm

Hi, danke nochmals für die Antworten.

Wollte damit ausprobieren ob es so funktioniert einen Eintrag (name[20]) mit dem eingegeben (gprodukt[20]) zu vergleichen.
Habe dazu auch die "if" Variante probiert, aber es hat nie geklappt.
Habe das Programm ausgeführt und als Produkt "t" [name] eingegeben und dann das Produkt welches ich suchen will auch mit "t" [gprodukt] angeben.
Hätte es geklappt, dann wäre "Test" in der Konsole erschienen und dann hätte ich mich mit dem Problem weiter beschäftigt. Aber es hat ja nicht geklappt.

Bringt einem schon zum nachdenken... bei der Aufgabe gibt es 10 mögliche Punkte und ich habe nach über 8h gerade mal einen Punkt mühevoll zusammengekratzt....

Capatcha
Beiträge: 13
Registriert: Sa Nov 28, 2009 2:03 pm

Re: dringende Anfängerhilfe verkettete Liste

Beitrag von Capatcha » So Nov 29, 2009 11:08 am

Hallo,
habe noch eine kurze Frage.
Kann mal jemand schnell den Code überfliegen und mir sagen, ob es eine einfach verkettete Liste (mit drei Daten pro Eintrag) ist?

Code: Alles auswählen

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

struct elem {
 char name[20];
 int anzahl;
 int kategorie;
 struct elem *next;
};

void loescheTastaturpuffer()
{
  int c;
  while( ((c = getchar()) != EOF) && (c != '\n') )
     ;
}

void print(struct elem *cursor, int a, int k){

    printf("Aktueller Eintrag:\n\n------------------------------------------------------------------\n");
    printf("Produkt:\t %s", cursor->name);
    printf("Menge:\t\t %d\n", a);
    printf("Kategorie:\t %d\n", k);
    printf("------------------------------------------------------------------\n");

    }
void search(struct elem *cursor, char name[20], int a, int k) {
    char gprodukt[20];
    printf("Welches Element soll ausgegeben werden?");
    fgets(gprodukt, 20, stdin);

    while (gprodukt[20] == name[20]) {
        printf("Test");

        }


}



int main(void) {

    int anzahl;
    int kategorie;
    struct elem
    *anfang = NULL, *cursor;
    char name[20];


    while (1) {
        printf("\nProdukt:");

        fgets(name, 20, stdin);
        if (strlen (name) == 1)
                    break;

        printf("\nAnzahl:");
        scanf("%d", &anzahl);
        printf("\nKategorie:");
        scanf("%d", &kategorie);
        loescheTastaturpuffer();



        cursor =malloc(sizeof(struct elem));

        if (cursor == NULL) {
            printf("Speicherplatzmangel\n");
            exit(1);
            }

        strcpy(cursor -> name, name);
        cursor -> next = anfang;
        cursor -> anzahl = anzahl;
        cursor -> kategorie = kategorie;
        anfang = cursor;
        anzahl = cursor;
        kategorie = cursor;
        };


    print(cursor, anzahl, kategorie); //Das gerade gewählte Element ausgeben
    search(cursor, name, anzahl, kategorie);

    return 0;
}
Das Unterprogramm "search" könnt ihr vernachlässigen.

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: dringende Anfängerhilfe verkettete Liste

Beitrag von stampuhh » So Nov 29, 2009 11:14 am

moin

probier zum vergleichen am besten die Funktion aus die ich oben genannt habe. Vergess nicht die string.h zu importieren!

Code: Alles auswählen

Bringt einem schon zum nachdenken... bei der Aufgabe gibt es 10 mögliche Punkte und ich habe nach über 8h gerade mal einen Punkt mühevoll zusammengekratzt....
Du hast dir auch nicht gerade die einfachste Übung rausgesucht. Vielleicht solltest du mit etwas leichteren Sachen anfangen. Dir fehlen ja anscheinend noch einige Basics bevor du dich an diese Datenstrukturen wie Listen oder Bäume machst.

Gerade C ist ja nicht sehr einfach (Java z.B. ist aus meiner Sicht einfacher zu verstehen) und da braucht man schon mal etwas länger. Vor allem wenn man nur ein Buch hat was das einem erklärt. Also nicht so schnell aufgeben und immer weiter testen!

ps. Ich bin selber noch nicht viel weiter wie du. Das kommt alles mit der Zeit ;)

edit: gerae gesehen dass du noch einen Beitrag geschrieben hast. Lese ich mir gleich durch...erst mal frühstücken.

gruß stampuhh
NachDenkSeiten.de

Capatcha
Beiträge: 13
Registriert: Sa Nov 28, 2009 2:03 pm

Re: dringende Anfängerhilfe verkettete Liste

Beitrag von Capatcha » So Nov 29, 2009 11:43 am

naja, die Übung habe ich mir nicht rausgesucht sondern gestellt bekommen von der Uni.
Wenn es nach mir ginge, dann würde ich es langsamer angehen und das "gelernte" versuchen zu verstehen, dafür bleibt hier leider wenig Zeit. Bis vor zwei Wochen wusste ich nicht mal wie man programmiert (mit einem Texteditor z.B.) und heute soll ich schon soetwas schaffen. Das beste ist ja auch, dass bei der Uni einem einfach nichts erklärt wird.

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: dringende Anfängerhilfe verkettete Liste

Beitrag von stampuhh » So Nov 29, 2009 1:44 pm

So...

ja das ist natürlich doof wenn so eine Aufgabe in der Uni gestellt wird.

Zu deinem Quellcode von oben. Ich würde sagen es handelt sich nicht um eine verkettete Liste ;)

Hatte ja auch schon weiter oben geschrieben, dass du eigentlich gar keine Liste aufbaust sondern nie mehr als ein Element hast.

Am besten ist du liest dir dieses hier einmal sorgfältig durch. Am Ende gibt es ein fertiges Beispiel zum Download mit dem du bestimmt weiterarbeiten kannst. Statt dem Struct "Address" nimmst du einfach dein Struct. Aber am besten ist nicht einfach nur Copy&Paste machen ;)

Was studierst du denn überhaupt?

gruß stampuhh
NachDenkSeiten.de

Capatcha
Beiträge: 13
Registriert: Sa Nov 28, 2009 2:03 pm

Re: dringende Anfängerhilfe verkettete Liste

Beitrag von Capatcha » So Nov 29, 2009 9:41 pm

Die Abgabe war heute um 18:00. Morgen in der früh wird das pseudomäßig "besprochen". Einer der das Programm erfolgreich programmiert hat führt es vor, wobei es 80% dieser Leute von höheren Semestern bekommen haben und 15% davor mit der Materie intensiv zu tun gehabt haben.
Übermorgen sollte ich dann das "Lösungsblatt" bekommen. Mal hoffen, dass dieses brauchbarer ist als die letzten (und hoffentlich auch funktionieren).

Ich danke euch aber nochmal vielmals für eure Hilfe!
Ich werde euch wahrscheinlich bald wieder mit Sachen belästigen.
Vielleicht sogar morgen. Finde es aber gut, dass es Leute gibt die Anfängern helfen.

Also ich studiere Informatik. Finde das Themengebiet interessant und das Programmieren in der Schule damals hat mir auch viel Spaß gemacht. Aber wenn man nichts erklärt bekommt und ziemlicher Druck gemacht wird, dann macht es leider keinen richtigen Spaß mehr.

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: dringende Anfängerhilfe verkettete Liste

Beitrag von stampuhh » So Nov 29, 2009 10:13 pm

Das ist interessant :D

Ich studiere auch Informatik aber wir haben mit Java angefangen (finde ich persönlich auch sinnvoller zum Einstieg) und die ersten Aufgaben waren alle recht simpel so dass auch komplette Neueinsteiger mithalten konnten. Für mich war es teilweise recht öde und ich hätte mir das erste Semester in dem Fach auch sparen können.

Das ist aber halt so an einer Uni. Da muss man sich halt selber viel in das Thema rein hängen und die Profs kümmert es Null ob alle mitkommen oder nicht. Und gerade durch diese Bachelor-Studiengänge ist es nicht einfacher geworden. Da ist teilweise einfach viel zu viel Zeitdruck.

Naja versuche dir da gerne zu helfen. Ist auch für mich ganz interessant weil ich ja auch mit C erst angefangen habe aber kaum "Aufgaben" habe :P

gruß stampuhh
NachDenkSeiten.de

Benutzeravatar
Dubbel
Beiträge: 197
Registriert: So Jul 06, 2008 6:25 pm
Wohnort: Kopenhagen
Kontaktdaten:

Re: dringende Anfängerhilfe verkettete Liste

Beitrag von Dubbel » So Nov 29, 2009 10:35 pm

Auch wenn das leicht OT ist:
Darf man fragen wo und was genau du studierst?
Ich bin jetzt nämlich in der 12., werde danach zwar hoffentlich erst ein soziales Jahr im Ausland machen, aber würde dann gerne praktische Informatik studieren...

Antworten