parametet



  • hasso schrieb:

    int main()
    {

    }

    😕
    soll main deine gedanken lesen und dem compiler dann in stiller post manier flüstern, das er doch bitte die funktion eingabe in den erstgenannten mit reinkompiliert ?



  • hasso schrieb:

    Wie funktioniert es denn wenn man die main funktion ganz ausschließt.
    Sprich eine Funktion namens eingabe bsp. und die funktion parameteruebergabe die die zahlen ausgibt.

    dazu musst du dem linker mitteilen, dass er nicht 'main' sondern die andere funktion als startpunkt nehmen soll.
    🙂



  • Verwirr ihn nicht, linker-freak!

    Ein kleines Beispiel:

    void myFunction(int iParameter) {
      return iParameter*2;
    }
    
    int main() {
      int i=5;
      i=myFunction(i);  //Funktion wird mit Parameter i aufgerufen, der
                        //Rückgabewert wird i zugewiesen.
                        //i hat jetzt den Wert 10!
      return 0;
    }
    

    So, und jetzt kauf dir ein Buch und lerne die Grundlagen!



  • _matze schrieb:

    Verwirr ihn nicht, linker-freak!

    die frage war: Wie funktioniert es denn wenn man die main funktion ganz ausschließt.
    und nicht: wie rufe ich aus der 'main' eine andere funktion auf.
    🙂



  • function-freak schrieb:

    _matze schrieb:

    Verwirr ihn nicht, linker-freak!

    die frage war: Wie funktioniert es denn wenn man die main funktion ganz ausschließt.
    und nicht: wie rufe ich aus der 'main' eine andere funktion auf.
    🙂

    Sicher, aber hasso weiß noch nicht mal, wie er eine Funktion aufrufen kann. Da ist es wahrscheinlich wichtiger, Basiswissen zu vermitteln, als irgendwelche Linker-Spielchen.



  • matze so siehts aus.

    übrigens ich hab ein Buch. Aber indem Buch wird zu wenig drauf eingegangen.

    Muss dich aber verbessern 😃 du hast nen Fehler gemacht:

    void myFunction(int iParameter) {
      return iParameter*2;......
    

    error C2120: 'void' mit Typen nicht zulässig

    Anstatt void nichts schreiben oder int benutzen. Dann kommt wiedermal die typische Ausgabe Bitte drücken Sie eine taste !

    Welchen Sinn hat das float * pf . Ist das nicht eine Pointervariabel ?????

    #include <stdio.h>
    
    void parameteruebergabe( float* pf, int n )
    {
        int i=0;
        while( i<n )
            printf("%f\n", pf[i++] );
    }
    int main()
    {
        int n=14, i=0;
        float arr[14];
        while( i<n )
            arr[i] = i++;
        parameteruebergabe( arr, i );
        return 0;
    }
    

    gruß hasso



  • hasso schrieb:

    Welchen Sinn hat das float * pf . Ist das nicht eine Pointervariabel ?????

    ja, pf ist ein Zeiger. Welchen Sinn hat ein Zeiger? RTFM! Nimm dir ein C Buch und lies dir das Zeiger Kapitel durch.



  • Ok, hast Recht, da habe ich einen Flüchtigkeitsfehler gemacht. int oder long wäre ein richtiger Rückgabewert. Trotzdem ging das Beispiel in die richtige Richtung. Glaub mir, du willst nicht wirklich ein Programm ohne main-Funktion schreiben!

    hasso schrieb:

    Dann kommt wiedermal die typische Ausgabe Bitte drücken Sie eine taste !

    Warum wundert dich das? In dem Beispiel wird ja auch keine Ausgabe gemacht. Es soll lediglich das Prinzip verdeutlicht werden. Ausgaben werden z.B. mit printf() gemacht.

    hasso schrieb:

    übrigens ich hab ein Buch. Aber indem Buch wird zu wenig drauf eingegangen.

    Du hast ein C-Buch, in dem nicht darauf eingegangen wird, wie man Funktionen aufruft?? Na dann herzlichen Glückwunsch! Sieh mal genau hin. Wenn's nicht gerade ein Kochbuch ist, wird es voll von Funktionsaufrufen sein. 😉



  • Hallo, zuedem programm habe ich eine frage..

    die frage bezieht sich auf zeile 30

    Dort steht eine 1 in eingabe(1)

    Was bezweckt die 1. in den Klammern von eingabe?

    #include <stdio.h>
    
    int max(int a, int b)
    {
    if (a>b)
    
    return a;
    
    else
    
    return b;
    }
    
    int eingabe(int nr)
    {
    
    int eingabe;
    printf("Bitte geben Sie %i. Zahl ein!",nr);
    scanf("%i",&eingabe);
    return eingabe;
    
    }
    
    void main(void)
    {
    
    int i, anzahl, maximum;
    printf("Wieviele Zahle eingeben!?");
    scanf("%i",&anzahl);
    maximum=eingabe(1); // *************
    
    for(i=1; i <= anzahl; i++)
    maximum = max(eingabe(i),maximum); 
    printf("\n Die groesste Zahl war %i.",maximum);
    }
    

    gruß



  • Und über das "Bitte geben Sie %i. Zahl ein!" in Zeile 18 bist du nicht gestolpert?



  • //Funktionsprototyp:
    
    //1    //2    //3
    int eingabe(int nr)
    
    //1=Rückgabewert der Funktion
    //2=Name der Funktion
    //3=Argument, dass an die Funktion übergeben werden muss
    
    //Aufruf:
    
      //1     //2  //3
    maximum=eingabe(1);
    
    //1=der Variable maximum wird der Rückgabewert der Funktion eingabe zugewiesen (return-Anweisung in der Funktion)
    
    //2=die Funktion eingabe wird aufgerufen
    
    //3=der Funktion eingabe bzw. ihrem Argument/Parameter "int nr" wird der Wert 1 zugewiesen
    

    Sowas kannst du in JEDEM C-Anfängerbuch und in JEDEN C-Anfänger-Tutorial nachlesen, und zwar direkt am Anfang. Das sind absolute Grundlagen des Programmierens. Bitte erzähl mir nicht, dass auf sowas in deinem ominösen Buch nicht genügend eingegangen wird. Wie heißt denn das Buch? "C - Die Funktionsreferenz"?!



  • fassungslos-flamer schrieb:

    Und über das "Bitte geben Sie %i. Zahl ein!" in Zeile 18 bist du nicht gestolpert?

    ich glaube, danach wird er fragen, wenn sein zähler über 300 ist.
    🙂



  • Hey das programm zeigt 3 Fehler an. Die Fehler sind unten angezeigt.. jemand ein Plan ?

    include <stdio.h>
    gt
    void eingabe( float umsatz[12][2], char monate[12][12] );
    void ausgabe( float umsatz[12][2], char monate[12][12] );
            void mw(float umsatz[12][2], float summe, float mittelwert);
    void mw_ausgabe(float umsatz[12][2], float summe, float mittelwert);
    
    int main(void)
    {
        float umsatz[12][2];
        char monate[12][12] = {"Januar", "Ferbruar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" }; 
    	float summe =0;
    	float mittelwert;
    		eingabe(umsatz, monate);						// Aufruf der 1.-ten Funktion!
    		ausgabe(umsatz, monate);						// Aufruf der 2.-ten Funktion!
    		mw(umsatz[12][2], summe, mittelwert);			// Aufruf der 3.-ten Funktion!
    		mw_ausgabe(umsatz[12][2], summe, mittelwert);	//Aufruf  der 4.-ten Funktion!
        return 0;
    }
    
    void eingabe( float umsatz[12][2], char monate[12][12] )
    { 
        int i;
        int j;
        printf("\n\nHandelsfirma A & B GmbH\n\n"); 
    
        for(j=0;j<=1;j++)
        {
            printf( "\nBitte geben Sie die Daten fuer das %d. Unternehmen ein:\n", j+1 );
            for(i=0;i<=11;i++)
            {
                printf("Bitte %i -ten Umsatz fuer %s 2007 \n",i+1,monate[i]);  // Eingabe 
                printf("Eingabe:");scanf("%f",&umsatz[i][j]); 
            }
        }
    }
    
    void ausgabe( float umsatz[12][2], char monate[12][12] )
    {
        int i;
        printf("\n--------------------------------------------------------------------------------\n"); 
        printf("\n                 :::Filiale 1:::                      :::Filiale 2:::\n\n");
        printf("\n--------------------------------------------------------------------------------\n"); 
        for (i=0;i<=11;i++) 
        { 
            printf("%5i. %10s 2007 %10.2f",i+1 ,monate[i],umsatz[i][0]);  //Ausgabe Umsatz, Monat, Jahr 
            printf("%5i. %10s 2007 %10.2f",i+1 ,monate[i],umsatz[i][1]);  //Ausgabe Umsatz, Monat, Jahr 
            printf("\n"); 
        }
        printf("\n--------------------------------------------------------------------------------\n");
    }
    
    void mw(float umsatz[12][2], float summe, float mittelwert)
    {
    
    int i;
    for(i=0; i < 11; i++)
    {
    printf("%f",umsatz[12][2]);
    }
    
    summe += umsatz[12][1];
    
    mittelwert = summe / 12;
    
    } 
    
    mw_ausgabe(float umsatz[12][2],float summe, float mittelwert)
    {
    
    printf("%12.2f",mittelwert);
    
    }
    

    1>------ Neues Erstellen gestartet: Projekt: aufgabe2.c, Konfiguration: Debug Win32 ------
    1>Die Zwischen- und Ausgabedateien für das Projekt "aufgabe2.c" mit der Konfiguration "Debug|Win32" werden gelöscht.
    1>Kompilieren...
    1>aufgabezwei.c
    1>c:\users\hasso\documents\visual studio 2008\c++\helloworld\zeichenkette\zeichenkette\zeichenkette\seminaraufgabe\aufgabe2.c\aufgabe2.c\aufgabezwei.c(16) : error C2440: 'Funktion': 'float' kann nicht in 'float ()[2]' konvertiert werden
    1>c:\users\hasso\documents\visual studio 2008\c++\helloworld\zeichenkette\zeichenkette\zeichenkette\seminaraufgabe\aufgabe2.c\aufgabe2.c\aufgabezwei.c(16) : warning C4024: 'mw': Unterschiedliche Typen für formalen und übergebenen Parameter 1
    1>c:\users\hasso\documents\visual studio 2008\c++\helloworld\zeichenkette\zeichenkette\zeichenkette\seminaraufgabe\aufgabe2.c\aufgabe2.c\aufgabezwei.c(17) : error C2440: 'Funktion': 'float' kann nicht in 'float (
    )[2]' konvertiert werden
    1>c:\users\hasso\documents\visual studio 2008\c++\helloworld\zeichenkette\zeichenkette\zeichenkette\seminaraufgabe\aufgabe2.c\aufgabe2.c\aufgabezwei.c(17) : warning C4024: 'mw_ausgabe': Unterschiedliche Typen für formalen und übergebenen Parameter 1
    1>c:\users\hasso\documents\visual studio 2008\c++\helloworld\zeichenkette\zeichenkette\zeichenkette\seminaraufgabe\aufgabe2.c\aufgabe2.c\aufgabezwei.c(70) : error C2371: 'mw_ausgabe': Neudefinition; unterschiedliche Basistypen
    1> c:\users\hasso\documents\visual studio 2008\c++\helloworld\zeichenkette\zeichenkette\zeichenkette\seminaraufgabe\aufgabe2.c\aufgabe2.c\aufgabezwei.c(6): Siehe Deklaration von 'mw_ausgabe'

    gruß Hassssoooo



  • hasso schrieb:

    Hey das programm zeigt 3 Fehler an. Die Fehler sind unten angezeigt.. jemand ein Plan ?

    woran haperts? solche fehlermeldungen sind meistens ziemlich eindeutig. oder kannste nicht so gut englisch?
    🙂



  • junger mann du sollst nicht meine englisch kenntnisse testen sondern mir bei dem Problem helfen.

    kein zeit für son gelaber



  • hasso schrieb:

    junger mann du sollst nicht meine englisch kenntnisse testen sondern mir bei dem Problem helfen.

    ok, also:

    error C2440: 'Funktion': 'float' kann nicht in 'float (*)[2]' konvertiert werden

    die fehlermeldung sagt, dass du versuchst, eine funktion mit einem einzelnen 'float' aufzurufen, die aber an dieser stelle ein argument vom typ 'float(*)[2]' erwartet. ein scharfer blick auf den code und du siehst es selber. streng dich doch mal ein bisschen an.
    🙂



  • hab ne viertelstunde drauf geguckt und ich find den fehler nicht.

    Ich bin nicht ALLWISSEND. Und mir ist solch ein fehler noch nicht aufgetreten.

    Kein Plan .

    Erklär mal ?? welches float?

    grußμ



  • hasso schrieb:

    hab ne viertelstunde drauf geguckt und ich find den fehler nicht.

    Ich bin nicht ALLWISSEND. Und mir ist solch ein fehler noch nicht aufgetreten.

    Kein Plan .

    Erklär mal ?? welches float?

    grußμ

    Welches float?! Da steht doch 'ne Zeilenangabe...

    float umsatz[12][2];  //du erzeugst ein 2D-Array
    
    mw(umsatz[12][2], summe, mittelwert);  //du versuchst, das Element [12][2] des Arrays zu übergeben (dass es nebenbei gar nicht gibt: letztes Element ist [11][1])
    
    //versuch es so:
    mw(umsatz, summe, mittelwert);
    

Anmelden zum Antworten