Alle Datentypen-> "nicht deklarierter Bezeichner"



  • Stefan032 schrieb:

    DirkB schrieb:

    Warum nimmst du überhaupt scanf_s ?
    Hast du dir mal die Referenz zu dieser Funktion angesehen?

    Ich benutze vs und das erlaubt mir nur scanf_s weil das Normale unsicher sei.
    Wie reserviere ich nun speicher? Oder gibts alternativen?

    Nimm einfach scanf und ignorier die Warnung.



  • Stefan032 schrieb:

    Wie reserviere ich nun speicher?

    Brauchst du nicht, den hast du ja schon.
    Du musst nur noch angeben, wieviel Daten da rein passen.

    Auch mein Tipp:

    Nathan schrieb:

    Nimm einfach scanf und ignorier die Warnung.

    Aber nur diese Warnung. Man kann die auch abstellen.
    Mach mal die Forensuche (Suchabfrage powered by Google) mit der Warningnummer.



  • Stefan032 schrieb:

    if(a.preis=0.0) /* das ist Anfänger-Müll */
    ...
    		tempcb=(maxc/tempca)+0,5; /* noch mehr Müll */
    		tempcb=(maxc/tempca)+0,5; /* noch mehr Müll */
    

    Solange du solche Fehler machst, brauchst du gar nicht erst versuchen, dein Programmdesign zu entwerfen.



  • Wutz schrieb:

    Stefan032 schrieb:

    if(a.preis=0.0) /* das ist Anfänger-Müll */
    ...
    		tempcb=(maxc/tempca)+0,5; /* noch mehr Müll */
    		tempcb=(maxc/tempca)+0,5; /* noch mehr Müll */
    

    Solange du solche Fehler machst, brauchst du gar nicht erst versuchen, dein Programmdesign zu entwerfen.

    Also, ich bin Anfänger, deswegen ist mir jetzt eine nicht sachliche Meinung gerade egal. Ich habe dieses "runden" so im Net gefunden. Wenn man solche Sachen schreibt, kann man auch Änderungsvorschläge zeigen.

    Edit: Gehe ich euch auf die Nerven oder was soll das? Das bin ich von diesem Forum garnicht gewohnt...



  • Mal nicht so empfindlich.

    Bei einem if sollte ein Vergleich stehen und keine Zuweisung.
    Zudem ist der Vergleich auf Gleichheit bei Fließkommazahlen schwierig.
    Bei 0.0 geht es noch, wenn du ihn vorher direkt zugewiesen hast.

    Und was der Kommaoperator macht, wirst du als Anfänger nicht einschätzen können.
    Aber du wirst sicher ein Fließkommazahl meinen. Nur schreibt man die in C (trotz des Namens) nicht mit einem Komma sonderm mit einem Dezimalpunkt.

    Runden würdest du auch nur, wenn du aus dem Ausdruck eine Ganzzahl machst oder einem int zuweist.



  • DirkB schrieb:

    Mal nicht so empfindlich.

    Bei einem if sollte ein Vergleich stehen und keine Zuweisung.
    Zudem ist der Vergleich auf Gleichheit bei Fließkommazahlen schwierig.
    Bei 0.0 geht es noch, wenn du ihn vorher direkt zugewiesen hast.

    Und was der Kommaoperator macht, wirst du als Anfänger nicht einschätzen können.
    Aber du wirst sicher ein Fließkommazahl meinen. Nur schreibt man die in C (trotz des Namens) nicht mit einem Komma sonderm mit einem Dezimalpunkt.

    Runden würdest du auch nur, wenn du aus dem Ausdruck eine Ganzzahl machst oder einem int zuweist.

    Den Fehler mit der Zuweisung habe ich gesehen und behoben..
    Die Abfrage soll nur bewirken dass ich mindestens zwei Sätze einlesen muss.



  • Ich brauche leider noch mal Hilfe..
    Die Eingabe geht. Aber Ich bekomme am Schluss nur Kauderwelsch raus.

    http://s1.directupload.net/file/d/3472/8x9z2zd6_jpg.htm

    Weiß jemand woran es liegt?


  • Mod

    Stefan032 schrieb:

    Weiß jemand woran es liegt?

    Vermutlich an einem Fehler in deinem Code.



  • Das habe ich mir auch gedacht 😃 😉 .
    Finde aber keine weiteren Fehler...
    Hier noch mal der aktuelle Code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <Windows.h>
    #include <conio.h>
    #include <string.h>
    
    struct kondensator
    {
    
    	char bestellnr[20];
    	double kapazitet;
    	float preis;
    	float spannung;
    };
    int main()
    {
    	struct kondensator a,b;
    	float maxsp=15,maxc=10;
    	float floata;
    	float tempca,tempcb;
    	int tempa,tempb;
    	float gesammt1,gesammt2;
    	int i=1,z=0;
    	char ch;
    
    	a.preis=0.0;
    	do
    	{
    		if(a.preis==0.0)      //prüfen ob mindestens 2. Sätze eingegeben wurde.
    		{
    	printf("Bitte Datensatz Nr.%i eingeben:\nBestellnr:",i);
    	scanf("%s",a.bestellnr);
    	fflush(stdin);
    	printf("\nC:\n");
    	scanf("%lf",&a.kapazitet);
    	fflush(stdin);
    	printf("\nPreis:\n");
    	scanf("%f",&a.preis);
    	fflush(stdin);
    	printf("\nSpannung:\n");
    	scanf("%f",&a.spannung);
    	fflush(stdin);
    	i++;
    		}
    		else
    		{
    
    	printf("Bitte Datensatz Nr.%i eingeben:\nBestellnr:",i);
    	scanf("%s",b.bestellnr);
    	fflush(stdin);
    	printf("\nC:\n");
    	scanf("%lf",&b.kapazitet);
    	fflush(stdin);
    	printf("\nPreis:\n");
    	scanf("%f",&b.preis);
    	fflush(stdin);
    	printf("\nSpannung:\n");
    	scanf("%f",&b.spannung);
    	fflush(stdin);
    	i++;
    	printf("Abbrechen?");
    	scanf("%c",&ch);
    	fflush(stdin);
    	if(ch!='\n')
    	{
    		z=1;
    	}
    		}
    
    		//Berechnung:
    
    	//1.	
    		floata=(maxsp/a.spannung)+0.5;
    		tempa=(int)floata;
    		tempca=(1/(tempa*(1/a.kapazitet)));
    		tempcb=(maxc/tempca)+0,5;
    		tempb=(int)tempcb;
    		gesammt1=tempa*tempb*a.preis;
    //2.
    
    		floata=(maxsp/b.spannung)+0.5;
    		tempa=(int)floata;
    		tempca=(1/(tempa*(1/b.kapazitet)));
    		tempcb=(maxc/tempca)+0,5;
    		tempb=(int)tempcb;
    		gesammt2=tempa*tempb*b.preis;
    
    		if(gesammt1>gesammt2)
    		{
    			strcpy(a.bestellnr,b.bestellnr);
    			a.kapazitet=b.kapazitet;
    			a.preis=b.preis;
    			a.spannung=b.spannung;
    		}
    
    	}while(!z);
    
            system("cls");
    
    	printf("Bestellnr:%s\nKapazität:%lf\nPreis:%f\nSpannung:%f",a.bestellnr,a.kapazitet,a.preis,a.spannung);
    
    	while(!_kbhit());
    	return 0;
    }
    


  • Kopier dir mal Zeile 105 nach Zeile 75 und 100. (und ruhig nochmal mit b )
    Und lass dir mal alle deine Kommentare ausgeben. z.B.:

    puts("//Berechnung:");
    

    Auch 1. und 2.


Anmelden zum Antworten