Zum Inhalt springen

Kamfix

Mitglieder
  • Gesamte Inhalte

    5
  • Benutzer seit

  • Letzter Besuch

  1. Moin Klotzkopp, ja danke, die Klammer war's! ;-) Darauf wurde im Buch nicht hingewiesen. Prefix statt Postfix habe ich auch probiert ... geht! Davon wußte ich noch nicht. Wieder was gelernt. Schönen Tach noch! Ciao, Andreas
  2. Ich hatte noch Erfahrungen mit Turbo-Pascal und Assembler gesammelt ... Mein früherer Prof. empfahl mir für C vom Hanser-Verlag Karlheinz Zeiner: Programmieren lernen mit C. Habe die Hälfte jetzt durchgearbeitet. Es wirkt manchmal etwas verwirrend, da Teilbereiche nur angerissen und irgendwann später wieder aufgegriffen werden. Pffff. Vielleicht gibt es heute noch etwas Besseres mit Überblick. Es hat viele Übungsaufgaben. Für das Selbststudium taugt's aber schon. Ich finde ich habe bisher ganz gut strukturiert programmieren gelernt. Der erwähnte Kernighan/Ritchie ist gut zum Nachschlagen. Mein ehemaliger Prof. empfahl ihn nicht zum Lernen der Sprache. Ich schließe mich dem an. Bei der Fernuni Hagen gibt es noch einen Kurs für C oder sogar C++. Der wird nicht so teuer sein, Du kannst es von zu Hause mit Internet-Unterstützung machen und den Kurs bei Bedarf sogar mit Zertifikat abschließen. Die E-Technik ist bei der Fernuni Hagen für Neuzugänge gerade geschlossen worden wegen der vielen Abbrecher ... aber C ist moderner, vielleicht läuft das ja gut. ;-) Ciao, Andreas
  3. Hi zusammen, bin gerade an einer Übungsaufgabe in C, bei der eine Funktion gebraucht wird. Die Funktion übernimmt den Inhalt der Variablen n, ändert ihn in der Funktion und gibt ihn zurück an das aufrufende Hauptprogramm (main). Die Variable gew_mw verursacht, soweit ich beim Debuggen gekommen bin, noch keine Probleme. Es geht hier also um n. Der gesamte Programmcode in C ist als txt-Datei dabei. Aufruf der Funktion aus dem Hauptprogramm: funktion_1(&gew_mw, &n); Die Funktion beginnt: void funktion_1 (double *gew_mw, int *n) Beim Durchgehen im Einzelschritt meckert der Debugger von MS Visual C++ Express in der Funktion bei (...) do { *n++; printf("%i . Wertepaar:\t", *n); (...) in einem Fenster "unbehandelte Ausnahme ... Zugriffsverletzung". Das Fenster "lokal" mit den Variablen-Inhalten etc. zeigt für n "Fehler: Ausdruck kann nicht ausgewertet werden". Ich vermute falscher Aufruf / Übergabe usw. der Variablen-Inhalte... Hinweise willkommen. :confused: Ciao, Andreas Programmcode_4-1.txt
  4. Was soll ich code tagen? Erscheint bei Dir nicht die grüne Schrift? Danke für den Hinweis der Algorithmus sei fehlerhaft. Deshalb habe ich ja hier etwas geschrieben. Die Lösung aus dem Lehrbuch habe ich auch schon zitiert ... In C gibt es durchaus Vektoren. Wie sie heißen hängt sicher vom Lehrbuch ab. Bei mir steht sie werden in der englischsprachigen Literatur "array" genannt. Ich habe aber ein deutsches Buch gekauft. Scusa. In einem englischsprachigen Forum hätte ich sicher "array" geschrieben. Worauf wolltest Du mit den angeführten Links hinaus? Ich habe hier in C programmiert, nicht C++ oder so. Was soll ich da jetzt alles lesen? Also, dann noch ein schönes Wochenende. Ciao, Andreas
  5. Hallo zusammen, lerne gerade C und bin bei der Übergabe von Argumenten bei Vektoren hängen geblieben. ("Programmieren lernen mit C" von Karlheinz Zehner, 4. Aufl., Aufgabe 1-31) Auch seine Lösung auf seiner Internett-Seite hat mir keine Erleuchtung gebracht... Aufgabe des Programms: Zahlen einlesen, Z. ausgeben, Z. sortieren, Z. ausgeben (dieses mal sind sie sortiert). Das ganze in 3 Funktionen zerlegt. Die Return-Anweisung hat der Aufgabensteller noch nicht ermöglicht / erklärt für diese Aufgabenstellung. Mein Ergebnis: Die Zahlen werden eingelesen und im Vektor korrekt abgespeichert. Ich verwende hier mal nur 5 Zahlen von möglichen 9. (Beides willkürlich, beides in main festgelegt.) Die erste Ausgabe der nicht sortierten Zahlen funzt auch prima. Nach Aufruf der Funktion zahlen_sortieren stelle ich fest, daß der Vektor nur noch aus einem Element (,das auch mit dem eingegebenen übereinstimmt,) besteht. Hier meine Version: --------- #include <stdio.h> void zahlen_einlesen (int v[], int *n) { int i; printf("Bitte 5 Zahlen eingeben. Eingabe jeweils mit <return> abschliessen.\n"); printf("n = %i\n", *n); // Nur um zu sehen, ob das Argument hier angekommen ist. i = 0; while (i < *n) { scanf("%i", &v); i++; } printf("Eingabe beendet. \n"); } void zahlen_ausgeben (int v[], int n) { int i; printf("n = %i\n", n); printf("Folgende Zahlen wurden eingegeben: \n"); for (i = 0; i < n; i++) { printf("%i ", v); } } void zahlen_sortieren (int v[], int n) { int i, speicher, sortiert; // sortiert = 0 (unsortiert), sortiert = 1 (sortiert) do { sortiert = 1; for (i = 1; i <= n; i++) { if (v[i-1] > v) { // Bedingung fuers Tauschen speicher = v; v[i-1] = v; v = speicher; sortiert = 0; } } } while (sortiert == 0); } int main (void) { int v[9]; // Liste von max. 9 Zahlen int n; // Anzahl der Zahlen n = 5; // Anzahl der Zahlen wird hier willkürlich festgelegt. zahlen_einlesen (v, &n); zahlen_ausgeben (v, n); zahlen_sortieren (v, n); zahlen_ausgeben (v, n); return 0; } ----------- Der Autor des Buchs hat die Sortier-Funktion wie folgt gelöst: ----- void zahlen_sortieren (int x[], int n) { int sortiert; int h; int i; do { sortiert = TRUE; for (i = 0; i < n-1; i++) if ( x[i+1] < x ) { h = x; x = x[i+1]; x[i+1] = h; /* tauschen */ sortiert = FALSE; } } while (sortiert == FALSE); } ------ Was ist dort so wesentlich anders? Ich habe mit 0 und 1 statt TRUE und FALSE gearbeitet ... Ich danke Euch für ein paar Hinweise ... :confused: Ciao, Andreas

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...