Daten aus Struktur lesen



  • Hab ich doch geändert aber er meckert immer noch rum 😕
    if (tabelleDIN1448[0].d1 > tabelleDIN1448[i][0] && tabelleDIN1448[0].d1 <= tabelleDIN1448[i][1])



  • Zeile 34. 🙄



  • Hab ich auch mit einem Array hinterlegt aber geht auch nicht 😞

    immer noch die selben 10 fehler
    Fehler 2 error C2228: Links von ".d1" muss sich eine Klasse/Struktur/Union befinden. 43



  • keiner das der ne Lösung hat wie ich die Fehler beheben kann 😕 ?



  • Dein Hauptfehler liegt in Zeile 13!

    Was soll die [4] dort? Du willst doch ein Array von 8 Elementen anlegen, oder?
    (Du hast zwar in deiner Struktur 4 Elemente, aber das weiß der Compiler auotmatisch - oder hattest du dort vorher "int tabelleDIN1448[8][4]" stehen, und dann einfach vergessen, die [4] zu löschen?)

    Also

    zeileDIN1448 tabelleDIN1448[8]
    

    Und dann noch die entsprechenden angemeckerten Zeilen mit Indexzugriff [i] ausbessern...

    Du wärst jedoch im reinen C Unterforum besser aufgehoben, außer du willst wirklich C++ programmieren - und dann solltest du auch die Streams (cin, cout) benutzen.



  • Super ich danke dir 🙂

    jetzt hab ich nur noch 4 Fehler

    zeileDIN1448 tabelleDIN1448[8]
    	={
    		{100,210,13},
    		{110,210,13},
    		{120,210,14},
    		{140,250,16},
    		{160,300,18},
    		{180,300,19},
    		{200,350,20},
    		{220,350,22},
    	  };
    
    			printf("-------------------------------------\n");
                printf("|     Suchen in DIN1448              |\n");
                printf("|     Autor: Alfred Linder           |\n");
                printf("--------------------------------------\n");
    	 do
    	 {
    		  printf("Bitte Durchmesser im Bereich >100 bis 220?");
    		  scanf_s("%i",&tabelleDIN1448[0].d1);
    	 }
    	 while(tabelleDIN1448[0].d1 <= 100 || tabelleDIN1448[0].d1 > 220);
    
    	 for (int i = 0; i < 8;i++)
    	 {
    		 if (tabelleDIN1448[0].d1 > tabelleDIN1448[0] && tabelleDIN1448[1].d1 <= tabelleDIN1448[0])
    		 {
    
    		   tabelleDIN1448[1].l2 = tabelleDIN1448[i];
               tabelleDIN1448[2].t1 = tabelleDIN1448[i];
               // Falls Eintrag gefunden, beenden der Schleife 
               break;
             }
    	 }
    	 printf("\n\n Die Daten der Passfeder fuer den Durchmesser d= %i\n",tabelleDIN1448[0].d1);
    	 printf("Länge l = %i \n Nuttiefe t1 = %i\n",tabelleDIN1448[1].l2,tabelleDIN1448[2].t1);
    

    Fehler
    Fehler 1 error C2677: Binärer Operator '>': Es konnte kein globaler Operator gefunden werden, der den Typ 'zeileDIN1448' akzeptiert (oder keine geeignete Konvertierung möglich) c:\Dokumente und Einstellungen\chriz\Desktop\MarlonProoject\MarlonProoject\MarlonProoject.cpp 47
    Fehler 3 error C2440: '=': 'zeileDIN1448' kann nicht in 'int' konvertiert werden c:\Dokumente und Einstellungen\chriz\Desktop\MarlonProoject\MarlonProoject\MarlonProoject.cpp 50



  • Du musst noch definieren, was < für deine Struktur bedeuten soll. Einen Einstieg findest du hier:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html



  • okay vielen dank

    habe dazu den folgenden
    operator<, <=, >, >= gewählt
    bool operator<(X const& lhs, X const& rhs);

    aber wie bau ich das ganze jetzt ein 😞 sorry



  • Das steht ja alles genau in dem Link, den ich gepostet habe.. 🙄



  • komme da leider nicht weiter blicke da noch nicht so durch 😞



  • SO bin ein bisschen weiter gekommen (glaub ich) 🙂

    #include "stdafx.h"
    #include <stdio.h>
    #include <string>
    #include <iostream> 
    #include <ostream>
    
    using namespace System;
    
    /*  Deklaration des structs zeile DIN1448 */ 
    struct zeileDIN1448 
    {
    	/* Definition der verwendeten Veriablen mit datentyp*/
    	int i;
    	int d1;
    	int l2;
    	double t1;
    };
    
    class vergleich
    {
    	public:
        vergleich operator> ( const vergleich*, const zeileDIN1448*);
    	vergleich operator<= ( const vergleich*, const zeileDIN1448*);
    };
    
    int main()
    {
    
    	/* Die Definition und initialisierung der Tabelle */ 
    	zeileDIN1448 tabelleDIN1448[8]
    	={
    		{100,210,13},
    		{110,210,13},
    		{120,210,14},
    		{140,250,16},
    		{160,300,18},
    		{180,300,19},
    		{200,350,20},
    		{220,350,22},
    	  };
    
    	 /* Variablen werden angelegt mit dem passenden Typ und dem dazugehörigen Wer */ 
    	 int d1 = tabelleDIN1448[0].d1;
    	 int l2  = tabelleDIN1448[1].l2;
    	 double t1 = tabelleDIN1448[2].t1;
    
             /* Ausgabe text */ 
    			printf("-------------------------------------\n");
                printf("|     Suchen in DIN1448              |\n");
                printf("|     Autor: Alfred Linder           |\n");
                printf("--------------------------------------\n");
    	 do
    	 {
    		  printf("Bitte Durchmesser im Bereich >100 bis 220?");
    		  scanf_s("%i",&tabelleDIN1448[0].d1);
    	 }
    	 while(d1 <= 100 || d1 > 220);
    
    	 for (int i = 0; i < 8;i++)
    	 {
    		 if ( &vergleich::operator > (d1 , tabelleDIN1448[i]) && &vergleich::operator <= (d1,tabelleDIN1448[i]))
    		 {
    
    		   l2 = tabelleDIN1448[1];
               t1 = tabelleDIN1448[2];
               // Falls Eintrag gefunden, beenden der Schleife 
               break;
             }
    	 }
    	 printf("\n\n Die Daten der Passfeder fuer den Durchmesser d= %i\n",d1);
    	 printf("Länge l = %i \n Nuttiefe t1 = %i\n",l2,t1);
    

    nur jetzt komm ich GAR nicht mehr weiter 😞

    Fehler :
    Fehler 1 error C2804: Binärer Operator '>' hat zu viele Parameter c:\Dokumente und Einstellungen\chriz\Desktop\MarlonProoject\MarlonProoject\MarlonProoject.cpp 27
    Fehler 3 error C2440: '=': 'zeileDIN1448' kann nicht in 'int' konvertiert werden c:\Dokumente und Einstellungen\chriz\Desktop\MarlonProoject\MarlonProoject\MarlonProoject.cpp 71



  • keiner da der jetzt mal eben kurz helfen kann ? 😞 verzweifel hier langsam bin doch fast am ziel



  • So wie du dich anstellst, vergeht einem die Lust am Helfen. Würdest du endlich mal drakons Artikel lesen, hättest du kein Problem mehr mit Operatorüberladung. Also reiss dich zusammen und lies den Artikel, das sind nämlich Grundlagen.



  • Was soll ich den noch dazu sagen?

    Lies dir den Artikel durch, versteh ihn (oder zumindest die wichtigsten Teile davon) und dann ist das kein Problem mehr!



  • printf, aua aua... 😃


Anmelden zum Antworten