Program bei Hausaufgabe [Zeile DinTabelle][struct]
-
Gute Abend,
ich habe ein Problem und hoffe, dass Ihr mir helfen könnt.
Ich habe die Aufgabe, ein Programm zu schreiben, was folgende DIN Tabelle abruft.Was habe ich falsch gemacht? Der sagt mir immer Variable nicht deklariert (ist!).
Wie könnte ich mein Programm verbessern?
VIELEN DANK!Durchmesser d1 Länge l1 Länge l2 Innengewinde d2
20 22 5,0 M6
25 24 6,0 M8
30 36 7,5 M10
40 54 9,5 M12
50 54 12,0 M16
60 70 15,0 M20
70 70 18,0 M24
80 90 22,0 M30
90 90 22,0 M30geschrieben habe ich folgendes
#include<stdio.h> void main() { // Definition der verwendeten Variablen mit Datentyp int i,z=0,d; // Deklaration des structs zeile DIN1449 typedef struct { int durchmesser, l1; float l2; char innengewinde[3]; } zeileDIN1449; // Definition und Initialisierung der tabelle DIN1449 zeileDIN1449 tabelleDIN1449[9] ={ {20,22, 5.0,"M6"}, {25,24, 6.0,"M8"}, {30,36, 7.5,"M10"}, {40,54, 9.5,"M12"}, {50,54, 12.0,"M16"}, {60,70, 15.0,"M20"}, {70,70, 18.0,"M24"}, {80,90, 22.0,"M30"}, {90,90, 22.0,"M30"}, }; do { // Benutzereingabe: Durchmesser printf("Bitte Durchmesser im Bereich > 20 bis 90 eingeben"); scanf("%i",&durchmesser); } while(durchmesser < 20||durchmesser > 90); // Lineares Suchen if (durchmesser==90) z=8; for(i=0;i<8;i++) { if(tabelleDIN1449[i].durchmesser<=durchmesser && durchmesser <tabelleDIN1449[i+1].durchmesser) { z=i; break; //Eintrag gefunden, beenden der Schleife } } // Ausgabe printf("\nFuer das Wellenende mit dem\n Durchmesser d1=%i:\n",durchmesser); printf("Laenge: l1=%i\n Laenge l2=%i\n Innengewinde d2=%s\n\n", tabelleDIN1449[z].l1, tabelleDIN1449[z].l2, tabelleDIN1449[z].innengewinde); }
-
Ich habe gerade gesehen, dass oben
"{
int durchmesser, l1;
float l2;
char innengewinde[3];
}
" steht. Habe die Laenge 2 schon in die zweite Zeite gesetzt mit nem int vor, ändert aber nichts an der Fehlermeldung
-
"M10"
passt nicht in einchar innengewinde[3]
, das müsste mindestens einchar innengewinde[4]
sein.
Du willst in Zeile 35 nachdurchmesser
einlesen, das Ding gibt es aber nicht. Musst du vorher noch deklarieren.
Und zum Ausgeben von float's solltest du%f
statt%i
nehmen.
-
Hallo,
ich habe ein bisschen schränk gedacht
Hier mein Programm neu, aber es stürzt jetzt nach der Eingabe ab..
#include<stdio.h> void main() { // Definition der verwendeten Variablen mit Datentyp int i, z=0, deingabe; // Deklaration des structs zeile DIN1449 typedef struct { int durchmesser; int laenge1; float laenge2; char innengewinde[4]; } zeileDIN1449; // Definition und Initialisierung der tabelle DIN1449 zeileDIN1449 tabelleDIN1449[9] ={ {20,22,5.0,"M6"}, {25,24,6.0,"M8"}, {30,36,7.5,"M10"}, {40,54,9.5,"M12"}, {50,54,12.0,"M16"}, {60,70,15.0,"M20"}, {70,70,18.0,"M24"}, {80,90,22.0,"M30"}, {90,90,22.0,"M30"}, }; do { // Benutzereingabe: Durchmesser printf("Bitte Durchmesser im Bereich > 20 bis 90 eingeben: "); scanf("%i",&deingabe); } while(deingabe < 20 || deingabe > 90); // Lineares Suchen //if (deingabe==90) //z=8; for(i=0;i<9;i++) { if(tabelleDIN1449[i].durchmesser<= deingabe && deingabe <tabelleDIN1449[i+1].durchmesser) { z=i; break; //Eintrag gefunden, beenden der Schleife } } // Ausgabe printf("\nDurchmesser d1=%i\nLaenge: l1=%i\n Laenge l2=%i\n Innengewinde d2=%s\n\n", deingabe, tabelleDIN1449[z].laenge1, tabelleDIN1449[z].laenge2, tabelleDIN1449[z].innengewinde); }
-
blabla shit. %f und schon gehts. DANKE!