www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "C/C++" - Array
Array < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Array: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:27 Mo 06.09.2010
Autor: Ice-Man

Hallo,

ich habe mich hier nochmal an einem Array probiert.

Übung war irgendwie, das ich die Anzahl der verkauften Burger eingeben soll.
Das funktioniert ja soweit auch bei mir.
Problem an meiner Lösung ist nur, das ich nach der jeweiligen Eingabe des Burgers einer Filiale immer mit "Tab" zur nächsten Eingabe wechseln muss.
Und nachdem die Eingabe einer Filiale beendet ist, muss ich mit "Enter" zur nächsten springen.
Was ja irgendwie ein wenig verwirrend ist.

Gibt es da vielleicht einen einfacheren und logischen Weg?

Quelltext häng ich mal an, hoffe, ich habs ein wenig verständlich geschrieben.

Vielen Dank schon einmal.



Dateianhänge:
Anhang Nr. 1 (Typ: txt) [nicht öffentlich]
        
Bezug
Array: Antwort
Status: (Antwort) fertig Status 
Datum: 17:33 Mo 06.09.2010
Autor: Event_Horizon

Hallo!

Du hast es aber mit deinen Arrays ;-)

Zunächst deklarierst du oben tabelle[Filiale][4] , was aber so nicht geht. Filiale ist eine Variable und keine konstante. Ein Array kann man erstmal nur mit Konstanten anlegen.

Dann hast du dich auch später bei dem scanf vertan, hier steht tabelle[Filiale][4], womit du aber niemals alle deine Elemente füllst.


Das mit dem TAB verstehe ich nicht. So, wie es da steht, mußt du einen wert nach dem anderen eingeben, und dann ENTER drücken.
Dagegen wäre es  schon logisch und praktisch, wenn man alle Burger einer Filiale direkt hintereinander schreiben könnte, um danach  ENTER zu bestätigen und zur nächsten Filiale zu wechseln. Das ginge so:

scanf("%i %i %i %i", &tabelle[zeile][0], &tabelle[zeile][1], &tabelle[zeile][2], &tabelle[zeile][3]);

Hierbei werden vier durch Leerzeichen getrennte Zahlen gleichzeitig eingelesen.

Bezug
                
Bezug
Array: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 18:03 Mo 06.09.2010
Autor: Ice-Man

Also das mit dem "mehrere Zahlen hintereinander" einlesen funktioniert nicht so wirklich.

Und das mit dem "Tab" geht bei mir eigentlich.
Z.B.
Ich gebe 2 Filialen ein.
Dann lese ich 4 Zahlen ein, wobei ich nach jeder Zahl die Tabulator Taste drücke.
Wenn ich 4 Zahlen eingeben habe drücke ich "Enter" und es wird zur nächsten "Filiale" gesprungen.

Würde das wirklich nicht funktionieren??

Nur jetzt weis ich halt nicht, wie ich die Spaltensumme berechnen kann.

Bezug
                        
Bezug
Array: Antwort
Status: (Antwort) fertig Status 
Datum: 20:12 Mo 06.09.2010
Autor: Karl_Pech

Hallo Ice-Man,


Ich habe dir jetzt ein kleines Beispielprogramm zu deinem Problem geschrieben:


1: #include <stdio.h>
2: #include <stdlib.h>
3:
4: int main(int argc, char* argv[]) {
5: int x, y, maxx, maxy;
6:
7: int* pFilialen;
8:
9: printf("Anzahl Filialen: ");
10: scanf("%d", &maxy);
11:
12: printf("Anzahl Werte pro Filiale: ");
13: scanf("%d", &maxx);
14:
15: pFilialen = (int*)calloc(maxy*maxx, sizeof(int));
16: if(pFilialen == NULL) exit(1);
17:
18: for(y = 0; y < maxy; y++) {
19: printf("Filiale #%d:\n", y+1);
20: for(x = 0; x < maxx; x++) {
21: printf("\tWert #%d:", x+1);
22: scanf("%d", &pFilialen[y*maxx + x]);
23: }
24: }
25:
26: printf("\nSpaltensummen:\n");
27:
28: for(x = 0; x < maxx; x++) {
29: printf("#%d:", x+1);
30: int s; s = 0;
31:
32: for(y = 0; y < maxy; y++) {
33: s = s + pFilialen[y*maxx + x];
34: }
35:
36: printf("%d ", s);
37: }
38:
39: printf("\n");
40: free(pFilialen);
41:
42: return 0;
43: }


Das Programm reserviert mittels calloc() maxy*maxx Speicher für das zweidimensionale Filialen-Array. Der Trick ist, daß wir hier ein eindimensionales Array benutzen, um ein zweidimensionales Array darzustellen. Der Zugriff auf die Elemente erfolgt mittels y*maxx + x. Befinden wir uns in der 0ten Zeile, so gilt 0*maxx + x == x. Und für die 1te-Zeile überspringen wir sozusagen maxx Zellen (eine komplette Zeile) und landen direkt am Anfang der nächsten Zeile. Analog funktioniert es für y > 1.

Okay, soweit erstmal; Stelle konkrete Fragen zu diesem Programm, wenn dir etwas unklar ist.



Viele Grüße
Karl




Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]