Hilfe beim ersten C Programm!

Kimymoon86

Mitglied
Hallo ihr lieben, ich hätte hier ein Programmierproblem, und hoffe, dass ihr mir helfen könnt.

Wir haben von unserem Prof eine Aufgabe gestellt bekommen und ich weis nicht recht wie ich anfangen soll, deshalb meld ich mich bei eucht. Meine Aufgabe ist folgende:

programm gate.dat connection.dat type.dat function.dat gateid time

Simuliere das Netzwerk für die Dauer time unter der Annahme, dass alle Delays
gleich 1 sind und gib die Zustandsübergänge aller Output-Pins von gateid aus.

Implementierungstipp: Jedes Pin bekommt einen Eintrag val - den aktuellen
Zustand (0, 1). Initialisiere überall val = 0. Berechne für alle Gates
und alle Pins den neuen Ausgangszustand. Kopiere dann für alle Connections
val vom Von-Pin zum Nach-Pin. Gib val aller Output-Pins von gateid aus.
Wiederhole das time mal.


Ich muss dazu sagen, wir haben noch nie was in C/C++ geschrieben und deshalb bin ich so ein bisschen hilflos. Es gab zwar eine VO aber ich blick nicht so wirklich durch.
Meine frage ist jetzt erstmal nur, wie simuliere ich ein Netzwerk?
 
Hi

um was gehts hier eigentlich? :suspekt:

Ich vermute mal, "programm gate.dat connection.dat type.dat function.dat gateid time"
soll der Programmaufruf sein.
Was steht in diesen ganzen dat-Dateien?
Welches Gate?
...

Könntest du vllt. irgendwelche Vo-Unterlagen oder so hochladen,
damit man den Zusammenhang versteht?
Oder irgendeinen Link?

C-mäßig kann ich dir ziemlich sicher helfen, aber ich blick bei der Aufgabe nicht ganz durch...
 
Zuletzt bearbeitet:
So, jetzt verstehe ich besser.

---
Du hast eine (imaginäre) elektrische Schaltung aus verschiedenen Bauteilen.
Was wie verkabelt ist weißt du.
Je nach Art vom Bauteil hat es x Eingangspins und y Ausgangspins,
die Art bestimmt auch, was bei welchem Input wieder rauskommt,
und wie lange die Verarbeitung im Bauteil dauert.

Du darst die verschiedenen Verarbeitungszeiten ignorieren.
Am Anfang stehen alle Pins auf 0.

Deine Aufgabe ist jetzt, für ein bestimmtes Bauteil die Pinbelegungen zu ermitteln,
das für eine bestimmte Zeit lang (wie sie sich ändern).

Das Ganze einmal mit C und einmal mit C++ unter Linux.
Für den C-Teil hast du noch eine Woche, für C++ länger.
---

Stimmt das soweit?

...Und das als erstes (!) C/C++-Programm!?
Im Ernst? Salzburg...zitter...
Sicher, dass du nicht schon früher einige hättest machen sollen, aber keine Lust gehabt hast?
Und jetzt brennt der Hut, weil es um die Note geht?
 
Wenn die Interpretation der Aufgabe so korrekt ist, sowas ähnliches hatte ich mir gedacht aber es war nur wirrwarr in meinem Kopf, dann ja. Der Rest ist auf jedenfall richtig.
Nein, ich kann dir sagen, es ist das erste C/C++ Programm. Wir haben schon ein bisschen in Java gemacht. Allerdings muss ich zugeben, ich hab von Java bis jetzt nur einen Kurs belegt,zwecks Krankheitsfall. Und in Österreich muss man 1 Jahr warten bis man das Fach nochmal machen kann. Ich hab das Fach belegt, weil mir von einem höheren Semestrigen gesagt wurde, das es nicht so schwer sei. Und wenn ich bei Java noch nicht so weit sei, dann mache das nichts. So und nun häng ich hier. Ich hab also die Möglichkeit, dieses Programm mit Hilfe zu schaffen oder dieses Fach sausen zu lassen. Was meine erstere Wahl wäre, jedoch stört es mich, dass ich dann in diesem Fach eine 5 kassiere.
 
Nein, ich kann dir sagen, es ist das erste C/C++ Programm. Wir haben schon ein bisschen in Java gemacht. Allerdings muss ich zugeben, ich hab von Java bis jetzt nur einen Kurs belegt, zwecks Krankheitsfall.
Zuerst mal allgemein; zB. das Openbook von Galileo ist um einiges ausführlicher als deine
(sehr knapp gehaltene) Vo-Unterlage. Allerdings ist kein SVN etc. drin.
Aber zum Lernen kanns nicht schaden, wenn man weiß, dass es das gibt.
Hier findest du einen Link.

Und in Österreich muss man 1 Jahr warten bis man das Fach nochmal machen kann.
Ich weiß...
Geht eben nicht jedes Semester, wenn weder Geld, Professoren,
noch genug Räume vorhanden sind...

Ich hab das Fach belegt, weil mir von einem höheren Semestrigen gesagt wurde, das es nicht so schwer sei. Und wenn ich bei Java noch nicht so weit sei, dann mache das nichts.
Ist immer relativ...

So und nun häng ich hier. Ich hab also die Möglichkeit, dieses Programm mit Hilfe zu schaffen oder dieses Fach sausen zu lassen.
Eine Woche...das geht.

Eines vorneweg: Das Programm mit Hilfe schaffen, ja.
Aber niemand hier wird dir alles im Alleingang abgabefertig machen.
Sollst am Schluss auch was gelernt haben dabei.

Soo.
Sagen dir (verkettete) Listen was?
 
Klar, ich will ja auch nicht, dass jemand mir die Aufgaben macht, ich bin hier für einen Leitfaden. Nicht um zu kopieren.
verkettete Listen sind die Sache mit den Pointern richtig?
 
Also bis jetzt hab ich schonmal die einzelnen headerdateien (den Kopf) und c files gemacht.
Kann mir jemand sagen, ob das bis jetzt für dieses file stimmt?
Code:
#ifndef TYPE_H
#define TYPE_H

typedef struct
{
	int typeID;
	char name[101];
	int anzahlInputPins = 0;
	int anzahlOutputPins = 0; 

	double delay = 1;

	}Type;

typedef struct
{
	Type **typs;
	int countType;
	int allocated;
} TypeList;

TypeList *newTypeList ();
 
Grüße,

ich nehme mal stark an, dass das hier das C-Program werden soll und es sich um die Datei type.dat handelt.
Dann wollen wir mal ein Stück deines Codes auseinander nehmen:

C:
typedef struct
{
    int typeID;
    char name[101];
    int anzahlInputPins = 0;
    int anzahlOutputPins = 0; 
 
    double delay = 1;
 
}Type;

Da fallen mir 2 Dinge dran auf, die nicht so recht zu deinen hinterlegten Daten passen wollen.

#1:
Du initialisierst 'anzahlInputPins' und 'anzahlOutputPins' mit 0, was völlig unnötig ist, da keines der Bauteile 0 Eingänge und Ausgänge hat - wäre ja auch totaler Käse (würde zumindest hardwareseitig keinen Sinn machen) :)
Also Variable einfach deklarieren und gut ist.

#2:
Du möchtest einer Variablen vom Typ 'Double' einen Wert vom Typ Integer zuweisen. Wenn, dann muss der Wert auch vom Typ Double sein, sonst wird hier entweder wild gecastet oder mit warnings seitens des Compilers um sich geworfen.
Ist aber auch egal, weil die Variable ebenfalls nicht vorbelegt sein muss. Die Daten kommen auch hier aus der Datei.
Also Variable einfach deklarieren und gut ist.

Weiterhin solltest du dich im Code irgendwann zwischen Englisch und Deutsch entscheiden, nicht dass dein Prof das auch noch beanstandet.


Was du mit der 2. Struktur vorhast erschließt sich mir nicht so ganz. Da bräuchte ich mal ne Erklärung + die Funktion 'newTypeList()' hätte ich auch gern mal gesehen.
 
Hi.
#1:
Du initialisierst 'anzahlInputPins' und 'anzahlOutputPins' mit 0, was völlig unnötig ist, da keines der Bauteile 0 Eingänge und Ausgänge hat - wäre ja auch totaler Käse (würde zumindest hardwareseitig keinen Sinn machen) :)
Also Variable einfach deklarieren und gut ist.
Es ist guter Stil Variablen immer mit Standardwerten zu initialisieren.

Allerdings ist der Code kein korrektes C oder C++, da man innerhalb einer struct Definition keine Attribute initialisieren kann. Das geht nur bei einer Variablendefinition selbst.

Gruß
 

Neue Beiträge

Zurück