array



  • Hallo,

    Es ist ein problem bei meinen programm aufgetaucht, die Schleife läuft immer weiter und hört nicht auf . Obwohl ich die anweisung gegeben habe das die Schleife bis 12 Laufen soll. Es geht in diesem Programm darum Umsätze 2 Verschiedener Firmen einzulesen. Sitze schon ne ewigkeit dran find nicht den fehler. ich benötige einen kleinen denkanstoß um meine Eigenininstiative zu präsentieren!

    #include <stdlib.h> 
    #include <stdio.h> 
    #include<math.h>
    #include "conio.h"
    
    int main() 
    { 
    
    int min,max;
    int const n=11;
    int umsatz[12],umsatza[12],m1,m2,i,a; 
    int umsatz_summe=0; // char* monate [12]=... 
    float mittelwert=0;
    char monate[12][12] = {"Januar", "Ferbruar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" }; 
    char jahr[12][5] = {"2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007"};
    
    printf("\n\tHandelsfirma A & B GmbH\n"); 
    
    printf("Menue:\n"); 
    printf("1: - Umsaetze eingeben\n");
    printf("2: - Programm Wiederholen\n");
    printf("3: - Ermittlung kleinster Wert\n");
    printf("4: - Ermittlung groesster Wert\n");
    scanf("%i",&m1); 
    
    if(m1==1) 
    { 
    
    	for(a=0;a<=n;a++){
    		for(i=0;i<=n;i++){ 
    
    	printf("\nBitte %i -ten Umsatz fuer %s %s \n",i+1,monate[i],jahr[i]);  // Eingabe
    	printf("Eingabe:");scanf("%i",&umsatz[i]);
    	printf("Eingabe:");scanf("%i",&umsatza[a]);
    													umsatz_summe+=umsatz[i];  // Berechnung Summe
    													mittelwert=umsatz_summe/n; // Berechnung Mittelwert
    													//standtardabweichung=
    }
    	}
    printf("\n-----------------------------------------------\n");
    //printf("\n:Eintrag:\t:Monat:\t:Jahr:\t\t:Umsatz:\n");
    	for (i=0;i<=11;i++) 
    	{ 
    		printf("%5i. %10s %10s %10i",i+1 ,monate[i],jahr[i],umsatz[i]);  //Ausgabe Umsatz, Monat, Jahr
    		printf("%5i. %10s %10s %10i",i+1 ,monate[i],jahr[i],umsatza[a]);  //Ausgabe Umsatz, Monat, Jahr
    		printf("\n"); 
    } 
    	printf("\n-----------------------------------------------\n");
    
    printf("\nDie Summe ist:%i Mittelwert:%.2f",umsatz_summe,mittelwert); // Ausgabe Summe
    
    	}
    
    system("pause");
    
    }
    

    gruß hasso



  • hasso schrieb:

    Es ist ein problem bei meinen programm aufgetaucht, die Schleife läuft immer weiter und hört nicht auf.

    warum debuggst du nicht mal selber? im debugger kannst du deine programme im einzelschritt-modus abarbeiten lassen und dir alle variablen ansehen usw. dann findest du selbst leicht raus, was schief läuft und brauchst nicht für jeden banalen fehler das forum bemühen.
    🙂



  • naja einrücken geht ja schon....

    nur die klammern....igitt



  • die geschweiften? warum iggiits? saß wieder ne halbe stunde dran.. wo sollen die denn hin?

    gruß



  • hasso schrieb:

    die geschweiften? warum iggiits? saß wieder ne halbe stunde dran.. wo sollen die denn hin?

    gruß

    halbe Stunde zum Einrücken? 😮 schreibst du deinen Quelltext mit dem Notepad oder was? Sorry dass ich frage, aber sowas finde ich seltsam.



  • schon erledigt. Hallo, das einrücken war überhaupt nicht das problem! Man musste den Indexanstatt a mit i setzten und die a forschleife aus dem Programm werfen.



  • Den Versuch, dir zu helfen (im Sinne von Hilfe zur Selbsthilfe) geb' ich auf.

    Hier hast Du (aufdass der Thread nicht noch ein paar Seiten lang wird):

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    #define MAX_COMPANY				3
    #define MAX_COMPANY_NAME_LENGTH	20
    #define MAX_FIRST_COL			14
    
    const char * const month[ ] = {
    	"Januar", "Ferbruar", "Maerz",
    	"April", "Mai", "Juni",
    	"Juli", "August", "September",
    	"Oktober", "November", "Dezember"
    };
    
    typedef struct tag_company {
    
    	char name[ MAX_COMPANY_NAME_LENGTH + 2 ];
    	unsigned short year;
    	int turnover[ 12 ];
    
    } company_t;
    
    typedef struct tag_stats {
    
    	int sum, min, max;
    	float average;
    
    } stats_t;
    
    void flush_stdin( void )
    {
    	setvbuf( stdin, 0, _IONBF, 0);
    	setvbuf( stdin, 0, _IOFBF, BUFSIZ );
    }
    
    int main( void ) /* void, zum 100,000. Mal!!!111elf */
    {
    	// Daten:
    	company_t company[ MAX_COMPANY ] = { 0 };
    	stats_t stats[ MAX_COMPANY ] = { 0 };
    
    	// Schleifenzähler:
    	size_t company_index = 0;
    	size_t i = 0, n = 0;
    
    	// Temporär:
    	size_t name_length = 0;
    
    	unsigned int choice;
    
    	do {
    		puts( "Menue:\n");
    		puts( " 1: Umsaetze eingeben");
    		puts( " 2: Daten verwerfen" );
    		puts( " 3: Umsaetze anzeigen");
    		puts( " 4: Programm beenden\n" );
    
    		flush_stdin( );	
    		scanf( "%u", &choice );
    
    		switch( choice ) {
    
    			case 1:
    
    				for( company_index = 0; company_index < MAX_COMPANY; ++company_index ) {
    
    					printf( "\nBitte geben Sie die Daten fuer das %u. Unternehmen ein:\n", company_index + 1 );
    
    					do {
    						printf( "Name: " );
    						flush_stdin( );
    
    						if( !fgets( company[ company_index ].name, MAX_COMPANY_NAME_LENGTH, stdin ) || ( company[ company_index ].name[ 0 ] == '\n' ) ) {
    
    							puts( "Fehlerhafte Eingabe!\n" );
    							company[ company_index ].name[ 0 ] = '\0';
    
    						} else {
    
    							if( company[ company_index ].name[ name_length = strlen( company[ company_index ].name ) - 1 ] == '\n' ) {
    
    								company[ company_index ].name[ name_length ] = '\0';
    							}
    						}
    
    					} while( !company[ company_index ].name[ 0 ] );
    
    					do {
    						printf( "Jahr: " );
    						flush_stdin( );
    
    						if( ( scanf( "%u", &company[ company_index ].year ) != 1 ) || ( !company[ company_index ].year ) || ( getchar( ) != '\n' ) ) {
    
    							puts( "Fehlerhafte Eingabe!\n" );
    							company[ company_index ].year = 0;
    						}
    
    					} while( !company[ company_index ].year );
    
    					printf( "\nBitte geben Sie die Umsaetze von %s fuer das Jahr %04u ein:\n", company[ company_index ].name, company[ company_index ].year );
    
    					for( i = 0; i < 12; ++i ) {
    
    						do {
    							printf( "%s:", month[ i ] );
    							name_length = MAX_FIRST_COL - strlen( month[ i ] );
    
    							for( n = 0; n < name_length; ++n ) {
    
    								putchar( ' ' );
    							}
    
    							flush_stdin( );
    
    							if( ( scanf( "%i", &company[ company_index ].turnover[ i ] ) != 1 ) || ( getchar( ) != '\n' ) ) {
    
    								puts( "Fehlerhafte Eingabe!\n" );
    								company[ company_index ].turnover[ i ] = -1;
    							}
    
    						} while( company[ company_index ].turnover[ i ] == -1 );					
    					}
    
    					stats[ company_index ].min = company[ company_index ].turnover[ 0 ];
    					stats[ company_index ].max = company[ company_index ].turnover[ 0 ];
    
    				} /* for( company_index = 0; company_index < MAX_COMPANY; ++company_index ) */
    
    				puts( "\n" );
    				break;
    
    			case 2:
    
    				memset( company, 0, sizeof( company ) );
    				memset( stats, 0, sizeof( stats ) );
    
    				puts( "\nDaten verworfen!\n" );
    				break;
    
    			case 3:
    
    				puts( "\nUmsaetze:\n" );
    
    				printf( "Unternehmen:   " );
    				for( company_index = 0; company_index < MAX_COMPANY; ++company_index ) {
    
    					name_length = MAX_COMPANY_NAME_LENGTH - strlen( company[ company_index ].name );
    
    					for( n = 0; n < name_length; ++n ) {
    
    						putchar( ' ' );
    					}
    					printf( "%s", company[ company_index ].name );
    				}
    				putchar( '\n' );
    
    				printf( "Jahr:          " );
    				for( company_index = 0; company_index < MAX_COMPANY; ++company_index ) {
    
    					for( n = 0; n < MAX_COMPANY_NAME_LENGTH - 4; ++n ) {
    
    						putchar( ' ' );
    					}
    					printf( "%04u", company[ company_index ].year );
    				}
    				putchar( '\n' );
    				for( n = 0; n <= ( MAX_FIRST_COL + ( MAX_COMPANY * MAX_COMPANY_NAME_LENGTH ) ); ++n ) {
    
    					putchar( '-' );
    				}
    				putchar( '\n' );
    
    				for( i = 0; i < 12; ++i ) {
    
    					printf( "%s:", month[ i ] );
    					name_length = 14 - strlen( month[ i ] );
    
    					for( n = 0; n < name_length; ++n ) {
    
    						putchar( ' ' );
    					}
    
    					for( company_index = 0; company_index < MAX_COMPANY; ++company_index ) {
    
    						printf( "%20i", company[ company_index ].turnover[ i ] );
    
    						stats[ company_index ].min = company[ company_index ].turnover[ i ] < stats[ company_index ].min ? company[ company_index ].turnover[ i ] : stats[ company_index ].min;
    						stats[ company_index ].max = company[ company_index ].turnover[ i ] > stats[ company_index ].max ? company[ company_index ].turnover[ i ] : stats[ company_index ].max;
    						stats[ company_index ].sum += company[ company_index ].turnover[ i ];
    					}
    					putchar( '\n' );
    				}
    				for( n = 0; n <= ( MAX_FIRST_COL + ( MAX_COMPANY * MAX_COMPANY_NAME_LENGTH ) ); ++n ) {
    
    					putchar( '-' );
    				}
    
    				printf( "\nSumme:         " );
    				for( company_index = 0; company_index < MAX_COMPANY; ++company_index ) {
    
    					printf( "%20i", stats[ company_index ].sum );
    				}
    				putchar( '\n' );
    				for( n = 0; n <= ( MAX_FIRST_COL + ( MAX_COMPANY * MAX_COMPANY_NAME_LENGTH ) ); ++n ) {
    
    					putchar( '-' );
    				}
    
    				printf( "\nMinimum:       " );
    				for( company_index = 0; company_index < MAX_COMPANY; ++company_index ) {
    
    					printf( "%20i", stats[ company_index ].min );
    				}
    
    				printf( "\nMaximum:       " );
    				for( company_index = 0; company_index < MAX_COMPANY; ++company_index ) {
    
    					printf( "%20i", stats[ company_index ].max );
    				}
    
    				printf( "\nDurchschnitt:  " );
    				for( company_index = 0; company_index < MAX_COMPANY; ++company_index ) {
    
    					printf( "%20.2f", stats[ company_index ].sum / 12. );
    				}
    				putchar( '\n' );
    				for( n = 0; n <= ( MAX_FIRST_COL + ( MAX_COMPANY * MAX_COMPANY_NAME_LENGTH ) ); ++n ) {
    
    					putchar( '-' );
    				}
    				puts( "\n" );
    				break;
    		}
    	} while( choice != 4 );
    }
    

    cheers, Swordfish



  • ne danke. ich halte lieber an mein Programm fest.

    Ob das Thread 100 Seiten wird ist doch schwups diwups egal.
    WO LIEGT DEIN PROBLEM DABEI?

    mamamia aus ner ameise macht man nen elefanten.



  • loooooool 🤡 🤡 🤡 🤡



  • hasso schrieb:

    Ob das Thread 100 Seiten wird ist doch schwups diwups egal.
    WO LIEGT DEIN PROBLEM DABEI?

    Weil dir mangels Eigenleistung irgendwann ab Seite 5-6 gar keiner mehr helfen wird. Auch neue Threads aufzumachen ist dann recht zwecklos. Dieses Forum ist dazu da Fragen zu beantworten, nicht um deine Hausaufgaben von anderen erledigen zu lassen.


Anmelden zum Antworten