Zeilenumbruch nach 4 Zeichen/Worten



  • Hallo Zusammen

    Ich möchte ein Programm mit einer Funktion,
    die nach 4 Worten einen Zeilenumbruch macht und das Wort
    maximal 12mal ausgibt.
    Bisher sieht es so aus:

    http://img.picshare.at/1369376937_Hello2.JPG

    hab erst geschafft, dass es mir hello übergibt.

    Hoffe ihr könnt mir helfen.
    Gruss



    1. Du kannst in Forum-Posts Code-Tags benutzen, um Code sauber anzeigen zu lassen, anstatt Bilder benutzen.
    #include <stdafx.h>
    #include <stdio.h>
    
    int hello(){
        printf("hello");
        return 0;
    }
    
    int main()
    {
       hello();
    
       getchar();
       return 0;
    }
    
    1. "Bisher sieht es..." nach nahezu nichts aus. Du solltest erstmal weiter die C Grundlagen lernen, dann kommst du auch schnell von selbst darauf und hast einen Lernerfolg.
    2. Solltest du zweiteres nicht akzeptieren, hier ein paar Tips:
      Für dein 4-Wörter-dann-Zeilenumbruch-Verhalten kannst du eine statische Variable in deiner hello Funktion angeben, die mit 0 beginnt, bei jedem Aufruf der Funktion inkrementiert wird und bei Wert 4 wieder auf 0 zurückgesetzt wird, zugleich einen Zeilenumbruch ausgibt.
      Für deine Limitierung auf 12 maximale Vorkommen eines Wortes solltest du eine Liste von Wörtern und deren Anzahl anlegen und verwalten.


  • Sieht schon ein wenig besser aus

    Hier mit For:

    #include "stdafx.h"
    #include <stdio.h>
    
    int awort = 0;
    int azeile = 0;
    
    int hello(int Anzahl, int max)
    {
    
    	for(azeile; azeile <= Anzahl; azeile++)
    
    	{ 
    		awort = 0;
    		for(awort; awort <= max; awort++)
    		{
    		printf("Hello\t");
    		}
    		printf("\n");
    	}
    
    	return 0;
    }
    
    int main()
    {
    
    	hello(5,3);
    
    	getchar();
    	return 0;
    
    }
    

    Hier mit While:

    // Hello mit Parameter.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include <stdio.h>
    
    int awort = 0;
    int azeile = 0;
    
    int hello(int Anzahl, int max)
    {
    
    	while(azeile <= Anzahl)
    	{
    		while(awort <= max)
    		{
    		printf("Hello\t");
    
    		awort = awort + 1;
    		}
    		printf("\n");
    
    		azeile = azeile + 1;
    	}
    
    	return 0;
    }
    
    int main()
    {
    
    	hello(5,3);
    
    	getchar();
    	return 0;
    
    }
    


  • Es gibt da wirklich keinen Grund, die Variablen awort und azeile global zu machen -- ganz im Gegenteil, so kannst du die hello-Funktion nur ein einziges mal aufrufen. Generell ist die Verwendung globaler (oder statischer) Variablen eine schlechte Angewohnheit, die man sich nach Möglichkeit gar nicht erst einhandeln sollte.

    Besser:

    #include <stdio.h>
    
    void hello(int Anzahl, int max)
    {
      int awort;
      int azeile;
    
      for(azeile = 0; azeile < Anzahl; ++azeile){
        for(awort = 0; awort < max; ++awort) {
          printf("Hello\t");
        }
        putchar('\n');
      }
    }
    
    int main(void) {
        hello(5, 3);
        puts("#############");
        hello(5, 3);
    
        getchar();
    
        return 0;
    }
    

    So werden für jeden Aufruf von hello eigene Variablen awort und azeile angelegt (und beim Verlassen der Funktion wieder abgerissen).

    Richtig schlimm wird das mit globalen Variablen übrigens später, wenn du mal Multithreading betreiben willst (also hallo auch zweimal gleichzeitig laufen kann). Da kriegt man die wildesten unschönen Effekte.


Log in to reply