Müsste ich hier zwei Schleifen erstellen? for (i = 0; i< 6; i++); for (j = 0; j<6; j++); Könnte bitte jemand eine Lösungsvariante mir zeigen matrix [6][5] = {0};
:
Verschoben durch Admin
Puhh die Aufgabe ist so trivial, wenn du dafür SELBER keine Lösung findest, kannst du die Prüfung gleich abmelden. Die anderen Aufgaben können kaum leichter sein.
STM32 User schrieb im Beitrag #7130591: > Puhh die Aufgabe ist so trivial, wenn du dafür SELBER keine Lösung > findest, kannst du die Prüfung gleich abmelden. Nicht nur die Prüfung. Auch die Abendschule/Weiterbildung oder was auch immer das sein soll. So ein Kurs startet ja nicht mit einer Prüfung, sondert endet nach X-Zeit mit einer Prüfung. Von Start der Veranstaltung bis zum Start der Prüfung wurde sicherlich einiges zu diesem Themengebiet durchgekaut. Wenn es dann an solchen Basics scheitert, dann wird's mit dem Rest auch nichts mehr. Die Wirtschaft benötigt auch Hilfskräfte für einfache Tätigkeiten, wenn auch immer weniger. Spargel müssen z.B. immer noch von Hand geerntet werden. Auch die Post hat Personalmangel.
Nathan G. schrieb: > Könnte bitte jemand eine Lösungsvariante mir zeigen Welch komplexe Aufgabenstellung. Hoffen wir mal das die Prüfung nicht schon morgen ist, sonst wird das nix. Eine von vielen Lösungsmöglichkeiten, was auch immer die Aufgabenstellung mit "muss durch eine Formel berechnet werden" meint. Um mir da weiter gedanken zu machen ist es eindeutig zu spät. Kommentare lass ich mal weg, Code ist Doku und so 👍
1 | #include "stdio.h" |
2 | |
3 | #define dim 15
|
4 | char matrix [dim][dim]; |
5 | |
6 | void initMatrix(){ |
7 | for (int i = 0; i < dim; i++){ |
8 | for(int j = 0; j < dim; j++){ |
9 | matrix[i][j]='.'; |
10 | }
|
11 | }
|
12 | }
|
13 | |
14 | void setMatrix(char sym){ |
15 | int i = dim; |
16 | while(i--){ |
17 | matrix[i][i]=sym; |
18 | matrix[dim-1-i][i]=sym; |
19 | }
|
20 | }
|
21 | |
22 | void printMatrix(){ |
23 | for (int i = 0; i < dim; i++){ |
24 | for(int j = 0; j < dim; j++){ |
25 | printf("%c",matrix[i][j]); |
26 | }
|
27 | printf("\n"); |
28 | }
|
29 | }
|
30 | |
31 | int main(void){ |
32 | |
33 | initMatrix(); |
34 | setMatrix('O'); |
35 | printMatrix(); |
36 | |
37 | return 0; |
38 | |
39 | }
|
Ja, da kam mir Kevin M. verdankenswerterweise zuvor; mein Lösungsvorschlag war weit weniger diszipliniert strukturiert. Unter prophylaktischer Vorwegnahme des zu erwartenden, vernichtenden Schlundes wie hier üblich erfahrungsgemäss destruktiver Kritik folgt der etwas kommentierte Ansatz.
1 | /* Welche Sprache denn. */
|
2 | |
3 | #include <stdio.h> |
4 | |
5 | /* g++ -g ng.cpp -o ng ; ./ng ; rm ng # */ /* <-- Dies war zwecks |
6 | Reproduzierbarkeit notiert worden, um zu verifizieren,
|
7 | ob denn das "Programm" auch funktioniert. */
|
8 | |
9 | #define NUM_ROWS 15 /* Verwendung von "macros" ist |
10 | nebenbei bemerkt ausserst uebel;
|
11 | besser ist der Einsaz anderer
|
12 | Hochsprachen, wie z. B.
|
13 | Java oder so. */
|
14 | #define NUM_COLS NUM_ROWS /* Falls noch nicht erwaehnt: |
15 | nicht guter style. */
|
16 | |
17 | |
18 | int main (int argc, char const * argv []) /* mit nichtsnutzigen |
19 | Kommentaren */
|
20 | { int ern = 0; |
21 | |
22 | char arr [NUM_ROWS] [NUM_COLS]; /* Dies ist die Deklaration |
23 | des geforderten Quadrates
|
24 | fuer die Zeichen
|
25 | (; noch uninitialisiert). */
|
26 | |
27 | /* Hier zunaechst eine "2 fach for loop"
|
28 | welche das zuvor deklarierte Quadrat wie erwuenscht belegen soll. */
|
29 | for (int row = 0; NUM_ROWS > row; ++ row) { |
30 | int col_r = NUM_COLS; /* Index zu Spalte rechts */ |
31 | for (int col_l = 0; NUM_COLS > col_l; ++ col_l) { |
32 | -- col_r; |
33 | /* Die "Formel", worauf in Anmerkung #6
|
34 | hingewiesen wurde.
|
35 | Es wird ja eine "Formel" verlangt. */
|
36 | arr [row][col_l] = (row == col_l) || (row == col_r) |
37 | ? 'O' |
38 | : '.'; |
39 | /* Hier oben der beruechtigte "ternary operator"
|
40 | in C language.
|
41 | Sehr Uebel!
|
42 | Davon sei insdringlich abzuraten,
|
43 | liest man gerne von Puristen
|
44 | (weiss auch nicht weshalb). */
|
45 | } /* col_l */ |
46 | } /* row */ |
47 | |
48 | /* Hernach folgt eine weitere verschachtelte Iteration,
|
49 | welche die zuvor fleissig erarbeiteten Zeichen
|
50 | zwecks Belustigung des Publikums ausgeben sollte. */
|
51 | for (int row = 0; NUM_ROWS > row; ++ row) { |
52 | for (int col = 0; NUM_COLS > col; ++ col) { |
53 | /* Gib das Zeichen aus! */
|
54 | (void) fprintf (stdout, "%c", arr [row][col]); |
55 | } /* col */ |
56 | /* ... und schreibe auch noch ein Zeilen -Ende dazu hin! */
|
57 | (void) fprintf (stdout, "\n"); |
58 | } /* row */ |
59 | |
60 | /* (void) fprintf (stdout, "-\n"); */
|
61 | |
62 | return ern; |
63 | } /* main */ |
... und es läuft Welche Gründe gibt es, jemanden ins Lächerliche ziehen zu wollen, wer sich für "Iteration" interessiert {, oder möglicherweise danach auch für "Rekursion"}? & ich werde an Folge -Diskussionen nicht teilnehmen & ich sollte mich nicht darüber lustig machen, wenn jemand versucht, sich solche Konzepte anzueignen.
:
Bearbeitet durch User
> ich sollte mich nicht darüber lustig machen
Allein schon der Gebrauch des Verbs "erstellen" im Zusammenhang
mit einer Matrix ist spachlicher Unfug.
Wenn der Inhalt dieser Matrix ein System beschreibt, muss eben
nichts "erstellen".
BWLer erstellen (nicht funktionierende) Plaene...
Guten Tag könnten mir bitte jemand bei der Aufgabe, helfen wie man hierbei den minimalen Wert berechnent.
Guten Tag, könnte mir bitte jemand eine Lösungsalternative senden? Müsste ich bereits in dem For-Loop, eine Funktion anwenden?
Nathan G. schrieb: > Mehrdimensionale Matrix das ist keine mehrdimensionale Matrix. Das ist einfach eine Matrix.
Markdown schrieb: > Nathan G. schrieb: >> Mehrdimensionale Matrix > > das ist keine mehrdimensionale Matrix. Das ist einfach eine Matrix. Hi könntest du mir einen Lösungsvorschlag zu senden?
Nathan G. schrieb: > Guten Tag, > wäre jemand bereits seinen Lösungsweg mit mir zu teilen? Ich habe mangels Veranlassung keinen Lösungsweg. Nathan G. schrieb: > Wie genau würde ich eine mask erstellen? Das kommt auf Deine Sorgfalt an.
Nathan G. schrieb: > Guten Tag könnten mir bitte jemand bei der Aufgabe, helfen Nathan, weil das hier nicht "Frag Mutti" auch auch nicht die "kostenlose Prüfungshilfe" ist, machen wir das jetzt so: du fängst mit der jeweiligen Aufgabe an und wenn du dann konkrete Probleme hat, dann fragst du, was du denn besser oder anders machen könntest. Das Thema ist alt, es wurde schon Generationen von Internetnutzern vor dir diskutiert. z.B. dort im Beitrag "Einheitlicher Umgang mit faulen Schülern etc.?" Summa summarum: wenn dir diese Kinderkram-Aufgaben zu kompliziert sind, dann könnte es sein, dass du im nächsten Semester besser was etwas machst, das sich mit deinen Fähigkeiten besser überdeckt. Denn das wird in der Zukunft nicht einfacher. BTW: Screenshots bitte als PNG, nicht als JPEG-Pixelbrei!
Guten Tag, wenn ich die int matrix_31[10][10] hochzählen möchte, int matrix_31[10][10]={0}; Müsste ich hierbei mehrere For Loops erstellen, denn besser gesagt darf ich keine Wert vorher definieren? i=Zeile; j=Spalte;
1 | for i=0;i<3;i++ |
2 | printf("%d/n",i); |
3 | |
4 | for j=0;j<5;j++ |
5 | printf("%d/n",j); |
oder lieber so Beispiel Matrix-Transposition:
1 | #define N 10
|
2 | float matrix[N][N]; |
3 | float t; |
4 | int zeile, spalte; |
5 | // Eingabe Matrix
|
6 | // …
|
7 | for(zeile=0; zeile<N; zeile++) |
8 | { for(spalte=zeile+1;spalte<N; spalte++) |
9 | { // Tausch matrix[zeile][spalte] mit matrix[zeile_neu][spalte_neu] |
10 | // wobei zeile_neu = spalte und spalte_neu = zeile
|
11 | t = matrix[zeile][spalte]; |
12 | matrix[zeile][spalte] = matrix[spalte][zeile]; |
13 | matrix[spalte][zeile] = t; |
14 | }
|
15 | }
|
:
Bearbeitet durch Moderator
Guten Tag, wenn ich eine Matrix erstelle und die zwei for i=0; i<9; i++; Müsste ich hierbei noch eine Funktion definieren? for i=0; i<9; i++
Nathan G. schrieb: > oder lieber so Verwende bitte die [c]-Tags wie in der Anleitung über jeder Texteingabebox beschrieben.
Wow und das von einen Moderator.... Ja "dank" der dauernden Wiederholung der Frage ist von einen Troll auszugehen. Aber: Ein Forum funktioniert anders - es lesen auch viele nur mit oder werden durch Suchmaschinen zu Foren und ähnliche Dienste (ja Dienste zwar unentgeltlich und auf beiden Seiten freiwillig, niemand muss Antworten wenn er den TO nicht mag bzw. dessen Einstellung missfällt) geleitet. Insbesondere im deutschsprachigen Raum in diesen Themengebiet oft halt zu diesen Forum hier. Das sollte an erster Stelle ein Moderator wissen... Und so außergewöhnlich ist die Frage dann auch nicht, es gibt sicherlich viele Leute die mit sehr ähnlichen Aufgaben ihre Probleme haben, bzw. wo Autodidakten gerne auch noch mal eine dritte und vierte Erklärung mit einen echten Beispiel (Code) gebrauchen können. Die nicht "technischen" Hintergründe der Frage sind total uninteressant und gehen keinen was an. Da hat der Troll (hat sich durch dauernde Wiederholung eines Fragenteils vertraten - oder geschah das sogar Vorsätzlich um einen auf Till Eulenspiegel zu machen? - Dann mein Daumen hoch -gut gemacht denn genau so haben die kleinkarierten Bürger in den Eulenspiegelerzählungen auch reagiert - und die Erzählungen sind ja nicht von Himmel gefallen sondern basieren immer auf die Realität) aber genau erkannt wie viele hier im Forum ticken und das man sie immer mit den gleichen Tricks triggern kann - sogar einen Moderator-das war es für ihn also sehr einfach. Ist es denn so schwer einfach auf Fragen von "Schülern" aber auch "Fahrzeug Tunern" "E-Installationslaien" usw. einfach nur den Inhalt betreffend zu Antworten? Wie der "Schüler", Tuner, E-Intallationslaie diese Antworten dann nutzt und sich über kurz oder Lang vielleicht in die Sackgasse manövriert oder Ärger einhandelt ist doch ganz alleine seine Sache...
Ich finde, der Moderator hat richtig reagiert. Es ist doch ein Unterschied, ob ein Laie hier bei einer Reparatur Hilfe benötigt, oder ob ein Schüler/Student sich durch eine Prüfung mogeln will.
Mutti schrieb: > ein Schüler/Student sich durch eine Prüfung mogeln will Ja, sieht wirklich so aus. Am Anfang die Übungsaufgaben vom 10.2. und dann die Screenshots von heute. Da kann man echt nicht mehr helfen, wenn so wenig Grundlagen vorhanden sind.
Nathan G. schrieb: > Matrix_zeilenweise_und_spaltenweise_hochzaehlen.jpg Na toll, nach Pixelbrei jetzt Londoner Nebel. IT-ler mit Medienbruch, so wird das nichts.
Forennutzer schrieb: > ..... Viele Worte.... Aber kein einziges dazu, wie der TO sein Problem lösen kann. Du wirst also deinen eigenen Ansprüchen nicht gerecht. Aber so sind sie halt, hier, die Großspurigen.
heinz schrieb: > Ja, sieht wirklich so aus. Am Anfang die Übungsaufgaben vom 10.2. und > dann die Screenshots von heute. Die waren vom letzten Jahr. Ich denke selbst heute dürfte es nicht erlaubt sein während einer Prüfung im Internet zu surfen.
Xeraniad X. schrieb: > char arr [NUM_ROWS] [NUM_COLS]; /* Dies ist die Deklaration > des geforderten Quadrates > fuer die Zeichen > (; noch uninitialisiert). */ Das ist sogar die Definition (mit impliziter Deklaration) Mit einem extern davor wäre es nur die Deklaration.
Nathan G. schrieb: > Guten Tag, > > wenn ich eine Matrix erstelle und die zwei > > > for i=0; i<9; i++; > > Müsste ich hierbei noch eine Funktion definieren? > for i=0; i<9; i++ Hätte dazu jemand einen Lösungsvorschlag?
Forennutzer schrieb: > Wow und das von einen Moderator.... Das hat mit "Moderator" nichts zu tun. Es ist die schlichte und einfache Wahrheit. Oder dürfen Moderatoren nur weichgespülte und gleichgetaktete Meinungen haben? Muss ich evtl. sogar korrekt gendern, damit ich keinem auf den Schlips oder die langen Fingernägel trete? > Aber: Ein Forum funktioniert anders Es funktioniert genau dann am Besten, wenn es zwischen dem TO und den anderen Teilnehmern eine Interaktion gibt und man gmeinsam auf Fortschritte aus ist. Die, die da zu helfen gewillt sind, lernen ja auch etwas dabei. > Ist es denn so schwer einfach auf Fragen von "Schülern" aber auch > "Fahrzeug Tunern" "E-Installationslaien" usw. einfach nur den Inhalt > betreffend zu Antworten? Schüler sind grundsätzlich unterschiedlich zu den anderen beiden Personengruppen. Denn die sollten ja was dabei lernen. Und dann bringt es halt schon mal überhaupt nichts, wenn man da einfach eine fertige Lösung postet. Denn die kapiert der Schüler ja mangels elementarster Grundlagen auch nicht. > Das sollte an erster Stelle ein Moderator wissen... Mir reicht, was ich weiß. Nathan G. schrieb: > Nathan G. schrieb: >> Müsste ich hierbei noch eine Funktion definieren? > Hätte dazu jemand einen Lösungsvorschlag? Das geht ganz einfach auch ohne jegliche Funktion im Hauptprogramm. Als Denkanstoß die erste Teilaufgabe siehe dort (und im Anhang): https://onlinegdb.com/riWXeStud
:
Bearbeitet durch Moderator
Mario M. schrieb: > Nathan G. schrieb: >> Matrix_zeilenweise_und_spaltenweise_hochzaehlen.jpg > > Na toll, nach Pixelbrei jetzt Londoner Nebel. IT-ler mit Medienbruch, so > wird das nichts. Wenn denn ein Bild (egal ob xx kB PNG oder xxx kB JPEG) auch mehr hergeben würde, bei einem AufgabenTEXT von <x kB. Das übungsprogrämmchen selbst produziert ebenfalls nur TEXT, keine Grafik...
Nathan G. schrieb: > Nathan G. schrieb: >> Müsste ich hierbei noch eine Funktion definieren? >> for i=0; i<9; i++ > > Hätte dazu jemand einen Lösungsvorschlag? Muss nicht, aber kann: WENN der Einsatz von Funktionen einem Zweck dient. Erstens: Nennst Du diesen Zweck/Absicht, kennst Du die Antwort selbst. Zweitens: Entwirf dann mal eine Funktion und zeige sie uns. Drittens: danach bekommst Unterstützung darin, die Funktion auch zum funktionieren zu bringen; resp. Manöverkritik diese dann zu verbessern den Zweck/Absicht zu erreichen/erfüllen.
Ein eigentlich triviales Dingen, etwas ausgeschmückt.
1 | constexpr size_t ausmaß {71}; // Anzahl Zeilen/Spalten |
2 | |
3 | template<size_t ausmaß>struct Zeile{unsigned y;bool operator [](unsigned x){return y==x||ausmaß-y-1==x;}}; |
4 | template<size_t ausmaß>struct Matrix{Zeile<ausmaß> operator [](unsigned y){return Zeile<ausmaß>{y}; }}; |
5 | Matrix<ausmaß> matrix; |
6 | |
7 | void setup() |
8 | {
|
9 | Serial.begin(9600); |
10 | |
11 | for(unsigned y = 0; y <ausmaß; y++) |
12 | {
|
13 | for(unsigned x = 0; x <ausmaß; x++) Serial.print(matrix[y][x]?'O':'.'); |
14 | Serial.println(); |
15 | }
|
16 | Serial.println(); |
17 | }
|
18 | |
19 | void loop(){} |
Nathan G. schrieb: > Müsste ich hier zwei Schleifen erstellen? > for (i = 0; i< 6; i++); > for (j = 0; j<6; j++); Nichtmal zwingend: eine Schlaufe "bis zur Hälfte" genügt auch denn das geforderte "Kreuzmuster" ist sowohl horizontal wie vertikal symmetrisch.
1 | for (int k=0; k<(6/2); k++) { |
2 | int x, y; |
3 | |
4 | /* 1. Quadrant */
|
5 | x = ... +k; |
6 | y = ... +k; |
7 | mx[x][y] = 'O'; |
8 | |
9 | /* 2. Quadrant */
|
10 | x = ... +k; |
11 | y = ... -k; |
12 | mx[x][y] = 'O'; |
13 | |
14 | /* 3. Quadrant */
|
15 | x = ... |
16 | :
|
17 | |
18 | /* 4. Quadrant */
|
19 | :
|
20 | |
21 | }
|
Voraussetzung ist natürlich die Befüllung der gesamten Matrix mit dem "Hintergrundzeichen" '.' z.B. mittels memset(); - die Schlaufe "bis zur Hälfte" entspr. nur zum setzen des "Vordergrundzeichens" 'O'. Quadrantenbezeichnung und Sonderfallbetrachtung bei Ungeraden Matrixgrösse überlassen wir den Programmierstudenten und den ewigen Elfenbeiturmbewohnern.
EAF schrieb: > Laut Aufgabenstellung: Unzulässig! Hmm, würde diese Lösung akzeptiert werden?
1 | #include <stdio.h> |
2 | #include <string.h> |
3 | |
4 | int main() |
5 | {
|
6 | char matrix[240]; |
7 | memset(matrix, 46, 239); |
8 | for (char *p1 = matrix, *p2 = p1 + 14; p1 < matrix + 240; p1 += 17, p2 += 15) |
9 | *p1 = *p2 = 79, p1[8 + (p2 - p1) / 2] = 10; |
10 | fwrite(matrix, 240, 1, stdout); |
11 | }
|
Ist alles drin: - Geeigneter Datentyp - for-Schleife - Keine direkten Zuweisungen Sollte passen, oder?
Profi-Programmierer schrieb: > Sollte passen, oder? Nein, das Programm ist unnötig lang! Das kostet Speicherplatz und Bandbreite. Besser ist:
1 | #include <stdio.h> |
2 | |
3 | int main() |
4 | {
|
5 | for (int c = 0; c < 240; c++) |
6 | putchar((c + 1) % 16 ? c % 17 && (c + 16) % 15 ? 46 : 79 : 10); |
7 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.