mikrocontroller.net

Forum: PC-Programmierung Wie geht das mit dem Array??


Autor: Martin Müller (silent_max)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi zur späten Stunde.

Ich hocke gerade über folgender Thematik:

Ich möchte in C über einen Array zuerst den Notendurchschnitt von einem 
bestimmten Unterrichtsfach und dann von mehreren Unterrichtsfächern 
berechnen.

Soweit sieht es dann aus:

/*
  Datum:  24.02.2010
  Thema:  Zeugnisdurchschnitt
*/

#include <stdio.h>

int Kurzarbeita;
int Schulaufgabea;
int Kurzarbeitb;
int Schulaufgabeb;
int mündlicha;


int Deutsch[4];

int main (void)

{
  printf("Es wird der Notendurchschnitt im Fach Deutsch errechnet!!");
  printf("\n\Dazu ist es notwendig, die Noten einzugeben!!\n\n");

  printf("\n\Geben Sie nun die Note der\n\n");
  printf("\n\1. Kurzarbeit ein:\n\n");
  scanf("%d", Kurzarbeita);

  printf("\n\1. Schulaufgabe ein:\n\n");
  scanf("%d", Schulaufgabea);

  printf("\n\2. Kurzarbeit ein:\n\n");
  scanf("%d", Kurzarbeitb);

  printf("\n\2. Schulaufgabe ein:\n\n");
  scanf("%d", Schulaufgabe);


  return 0;
}

Wenn ich jedoch bei der Stelle auf Debuggen gehe, kann ich zwar die 
erste Note eingeben, aber dann gar nix mehr. Woran liegt das??

Und da habe ich ein paar Fragen bzgl. dem Array. Bei Array ist ja eine 
Zusammenfassung von mehreren Variablen des gleichen Datentyps unter 
einem neuen Namen.

Bloß wie weiß ich nun dem Array zu, dass z. B. eine Schulaufgabe einen 
doppelten Wert hat??

Mir kommt gerade ... müsste ich die Kurzarbeiten und die Schulaufgaben 
in zwei unabhängigen Schleifen programmieren und dann dem Array 
zuweisen??

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abgesehen davon, daß es eine ganz schlechte Idee ist, scanf direkt auf 
Konsoleninput loszulassen, übergibst Du scanf falsche Parameter. Wie 
soll scanf in Deine Variablen irgendwelche Werte eintragen, wenn Du sie 
als Wert übergibst ("call-by-value")?

scanf erwartet Pointer.
Also:

  scanf("%d", &Kurzarbeita);

etc.

Was aber das mit einem Array zu tun haben soll, wirst Du selbst 
ergründen müssen.

Autor: Rolf Magnus (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Müller schrieb:

> Wenn ich jedoch bei der Stelle auf Debuggen gehe, kann ich zwar die
> erste Note eingeben, aber dann gar nix mehr. Woran liegt das??

Ich glaube dir nicht, daß das oben gezeigte Programm dieses Verhalten 
zeigt. Es läßt sich nämlich nicht einmal compilieren.

> Und da habe ich ein paar Fragen bzgl. dem Array. Bei Array ist ja eine
> Zusammenfassung von mehreren Variablen des gleichen Datentyps unter
> einem neuen Namen.

Sozusagen.

> Bloß wie weiß ich nun dem Array zu, dass z. B. eine Schulaufgabe einen
> doppelten Wert hat??

Das einzige Array, das in deinem Programm vorkommt, ist:
int Deutsch[4];

Das heißt nichts weiter, als daß Deutsch nicht ein Integer ist, sondern 
vier, auf die man als Deutsch[0], Deutsch[1], Deutsch[2] und Deutsch[3] 
zugreifen kann.

Autor: Johannes Knöller (anamollo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Außerdem macht das Programm in der Praxis keinen Sinn, denn du hast 
keine Möglichkeit, die eingegebenen Werte (Noten...) zu speichern.
Will heißen, dass du bei jedem Programmstart die ganzen Noten neu 
eintragen musst.

Entweder schreib sie mittels fread/fwrite/fputs/fgets in eine Datei oder 
verwende Excel ;-)

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
/ Ich möchte in C über einen Array zuerst den Notendurchschnitt von 
einem
/ bestimmten Unterrichtsfach und dann von mehreren Unterrichtsfächern
/ berechnen.


Da Du anscheinend in C schreiben möchtest und nicht mußt (genauso ging 
es mir auch) kannst Du ja mal einen Blick auf Python werfen. In der 
Sprache lässt sich sowas mit wesentlich weniger Code erstellen.

Gruss

Maddin

Autor: Roman94 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir hat er mal einen Fehler markiert wegen "scanf"
Er schlug mir vor "scanf_s" und es ging :)

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich glaube dir nicht, daß das oben gezeigte Programm dieses Verhalten
>zeigt. Es läßt sich nämlich nicht einmal compilieren.
Natürlich, gibt aber eine Warnung.

>Außerdem macht das Programm in der Praxis keinen Sinn, denn du hast
>keine Möglichkeit, die eingegebenen Werte (Noten...) zu speichern.
Sinn machen tut sowieso nix ;)
Hast du auch mal angefangen eine Programmiersprache zu lernen?

>Da Du anscheinend in C schreiben möchtest und nicht mußt (genauso ging
>es mir auch) kannst Du ja mal einen Blick auf Python werfen. In der
>Sprache lässt sich sowas mit wesentlich weniger Code erstellen.
Wie soll das weniger werden? Um drei Strings einzulesen braucht man 
ebenso drei Funktionsaufrufe und die vielen printf sind halt nunmal so 
wie er das will.

Autor: Roman94 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls man weniger "printf" haben will muss man verstärkt mit 
ESC-Sequenzen arbeiten

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, aber ob ich da jetzt zweimal printf("bla\n") oder einmal 
printf("bla\nbla") schreibe, juckt so ziemlich niemanden.

Geht ja wahrscheinlich darum, dass Python da viel kürzer sei, was ich 
abstreite (python kann ich).

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nils S. schrieb:
>>Ich glaube dir nicht, daß das oben gezeigte Programm dieses Verhalten
>>zeigt. Es läßt sich nämlich nicht einmal compilieren.
> Natürlich, gibt aber eine Warnung.

Und das, obwohl es den undefinierten Namen "Schulaufgabe" referenziert? 
Mit welchem Compiler hast du das denn hinbekommen?
(Ich weiß natürlich, welcher Name eigentlich gemeint war und könne den 
leicht ersetzten, aber an der Stelle weiß ich schon, daß die 
Fehlerbeschreibung sich nicht auf die Version des Programms bezieht, die 
gepostet wurde. Ich weiß dann nicht, was es da noch alles für 
Unterschiede gibt).

>>Außerdem macht das Programm in der Praxis keinen Sinn, denn du hast
>>keine Möglichkeit, die eingegebenen Werte (Noten...) zu speichern.
> Sinn machen tut sowieso nix ;)

Doch, klar. Siehe http://www.sinn-macher.de/ ;-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nils S. schrieb:

>>Außerdem macht das Programm in der Praxis keinen Sinn, denn du hast
>>keine Möglichkeit, die eingegebenen Werte (Noten...) zu speichern.
> Sinn machen tut sowieso nix ;)
> Hast du auch mal angefangen eine Programmiersprache zu lernen?

Ich geb zu: Als ich diese Antwort das erste mal gelesen habe, dachte ich 
auch: "Was für ein arroganter Arsch"

Ich hab dann aber gemerkt, dass Nils etwas ganz anderes ausdrücken 
wollte: Wenn man anfängt das Programmieren zu lernen, dann sehen die 
ersten Programme nun mal so aus. Das ist ganz normal. Einem Anfänger 
Fileverwaltung aufschwatzen zu wollen ist grob fahrlässig. Erst mal soll 
er mit printf/scanf, Variablen, Arrays klar kommen. Files kommen vieeel 
später.

In diesem Sinne deckt sich dann Nils Aussage auch mit meiner Denkweise 
und wahrscheinlich die der meisten hier.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.