Zum Inhalt springen

folgen von Leerzeichen durch Tab un Leerzeichen ersetzen


Psycho~zicke

Empfohlene Beiträge

Hallöchen!

Ich hab Folgendes Problem. Ich muss in einer Aufageb (folgt) folgen von Leerzeichen durch die korrete anzahl von Tabs und Leerzeichen ersetzen. Nun hab ich das Programm dazu geschrieben (und diesmal auch ganz ganz allein) bekomme aber immer 2 leerzeichen mehr ausgegeben wie ich eingebe. Weiß evt jemand woran das liegen kann? Ich weiß es leide rnit... Zerbrech mir nun seit gestern den kopf darüber und dacht mir jetzt evt könnt ihr mir ja helfen.

Hier mal der Quellcode:

*Schreibe ein Programm entab, das folgen von Leerzeichen durch die minimale 

*Anzahl von Tabulatorzeichen und Leerzeichen ersetzt, um die gleichen Zwischenräume 

*zu erzielen. Benutzen Sie die gleichen Tabulatorpositionen wie für detab. Wenn 

*entweder ein Tabulatorzeichen oder ein Leerzeichen genügen würden, um eine 

*Tabulatorposition zu erreichen, was sollte bevorzugt werden?

* ********************************************************/


#include <stdio.h>

#define Tab 4


void main()

{

        // deklaration der variablen

        int iEingabe;   // Eingabetext

        int leer;     // Anzahl der Leerzeichen

        int atab;     // Anzahl der Tabulatoren

        int rest_leer;  // restliche leerzeichen nach abzug der tabs


        // Zuordnung der werte    

        leer = 0;         // Anzahl der Leerzeichen

        atab = 0;         // Anzahl der Tabulatoren

        rest_leer = 0;     // restliche anzahl der leerzeichen nach abzug der tabs


        // Wird solange ausgeführt bis iEingabe A ist

        while ((iEingabe = getchar()) !='A')

        {

            if (iEingabe == ' ')    

            {

                ++ leer;       

            }

            else

            {

                if (leer !=0)   

                {

                    // printf ("%d", leer);   

                    atab = leer / Tab;

                    //printf ("%d", atab);

                    rest_leer = leer % Tab;

                    //printf ("%d", rest_leer);

                    while (atab !=0)

                    {

                        putchar ('\t');

                        -- atab;

                    }                   

                    while (rest_leer !=0)

                    {

                        putchar (' ');

                        -- rest_leer;

                    } 

                }   

            leer = 0;

            putchar (iEingabe);   

            } 

        }

}        



Danke schon ma im Vorraus.

Liebe Grüße die Zicke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nach ein kleiner Verbesserungsvorschlag, ich würde statt dem define


#define Tab 4
[/PHP]

eine Variable

[PHP]
const int Tab = 4;

benutzen.

Das macht es vorallem bei größeren Programmen einfacher Fehler durch falsche Werte zu vermeiden.

:confused:

Ich kann zwar nachvollziehen dass man lieber den Compiler als den Präprozessor nimmt, aber inwiefern kann man dadurch Fehler durch falsche Werte vermeiden? Bitte um Aufklärung :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Wert in der Variablen kann zwar auch falsch sein, aber bei define kannst du alles angeben kannst was du willst, in der Variablen hast du zumindest schonmal den richtigen Datentyp.

Beim define bekommst du dann zwar wenn du Glück hast direkt eine Fehlermeldung beim Compilieren, aber wenn du Pech hast halt nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...