Zum Inhalt springen

Psycho~zicke

Mitglieder
  • Gesamte Inhalte

    84
  • Benutzer seit

  • Letzter Besuch

Beiträge von Psycho~zicke

  1. 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

  2. Da hast du recht. Schreib die Programme ja eigentlich auch immer alleine auch wenn dann oft mist bei rauskommt aber diesma gab mein chef mir 2 Tage zeit und da ich diesmal absolut nicht weiterkam bat ich nen freund um hilfe... War ne doofe idee...

    Naja am besten fang ich noch ma von anfang an mit dem Programm und hoff das ich meinem chef kla machen kann das ich es nicht fertig bekommen hab.

    Trotzdem danke an euch

  3. Hmm... Wenn eine Klammer fehlt unterbricht der compiler doch direkt mit einer Fehlermeldung. Also kann ich in dem Fall nicht anhand des compilierten Programms schauen ob alles richtig is oder hab ich das jetzt falsch verstanden/aufgefasst?

    Hab es auch nicht allein geschrieben hab mir bissel bei helfen lassen. Wenn ich ein Naturtalent wäre hätte ich nicht soviele Probleme mit diesen Programmen ;)

  4. Das Problem ist eher das ich nicht genau weiß was das Programm laut aufgabe machen soll bzw was es ausgeben soll und wie. Darum fragte ich ja ob das so sein soll... Das das Programm so wie es da steht die einzlenen Zeilen wieder zurück gibt weißt ich ja.

    Meine Frage war eher ob das Programm so richtig ist(die Anforderungen der Aufgabe entspricht), obs eine möglichkeit gibt ausser mit diesem Debugger das Programm auf Richtigkeit zu kontrollieren und obs evt einfachere Methoden gibt das Programm zu schreiben.

  5. Guten Morgen!

    Ich hab die aufgabe ein Programm zu schreiben das elementare Syntaxfehler überprüft wie z.B. falsch verschachtelte runde Klammern. Nun habe ich dieses Programm geschrieben. Wenn ich es compiliere bekomm und eine Eingabe mache bekomm ich nur meine Eingabe wieder raus. Soll das so sein?

    Da ich das mit dem debuggen leider immernoch nicht wirklich raus hab, wollt ich euch fragen ob das Programm richtig Funktioniert. Evt kann mir ja auch jemand Tips zu geben wie mans einfacher schreiben kann oder leicht verständlicher oder so. Die Kommentaren fehlen zum größten Teil noch da ich mir wie gesagt nicht sicher bin ob das Programm das macht was es soll.

    
    Schreiben Sie ein Programm, das ein C-Programm auf elementare Syntaxfehler überprüft, 
    
    wie zum Beispiel falsch verschachtelte runde Klammer, geschweifte Klammern und eckige 
    
    Klammern. Vergessen Sie dabei nicht, Anführungszeichen, Doppelanführungszeichen und 
    
    Kommentare korrekt zu bahndeln. (Es ist nicht leicht, ein völlig allgemeinnütziges 
    
    Programm für diesen Zweck zu fomulieren.)
    
    * ********************************************************/
    
    
    #include <stdio.h>
    
    
    // deklaration der Variablen
    
    int Geschweifte,
    
        Eckige,
    
        Normale;
    
    
    void in_quote(int c);   // deklaration der Funktin in_quote
    
    void in_comment(void);  // deklaration der Funktion in_comment
    
    void search(int c);   // deklaration der Funktion search
    
    
    void main()
    
    {
    
         // deklaration der Variablen
    
         int iEingabe;
    
    
         // Wird solange ausgeführt wie iEingabe kein A ist              
    
         while ((iEingabe = getchar()) != 'A')
    
         {
    
            if (iEingabe == '/')    // Prüft ob iEingabe ein / ist
    
            {
    
               if ((iEingabe = getchar()) == '*')  
    
               {
    
                  in_comment();
    
               }
    
               else
    
               {
    
                  search(iEingabe);
    
               }
    
             } 
    
             else if (iEingabe == '\'' || iEingabe == '"')
    
             {
    
                  in_quote(iEingabe);
    
             }
    
             else
    
             {
    
                  search(iEingabe);
    
             }
    
             if (Geschweifte < 0)
    
             {
    
                  printf("Unausgeglichene Geschweifteklammern\n");
    
                  Geschweifte = 0;
    
             }
    
             else if (Eckige < 0)
    
             {
    
                  printf("Unausgeglichene Eckigeklammern\n");
    
                  Eckige = 0;
    
             }
    
             else if (Normale < 0)
    
             {
    
                  printf("Unausgeglichene Normaleklammern\n");
    
                  Normale = 0;
    
             }
    
         }
    
         if (Geschweifte > 0)
    
         {
    
            printf("Unausgeglichene Geschweifteklammern\n");
    
         }
    
         if (Eckige > 0)
    
         {
    
            printf("Unausgeglichene Eckigeklammern\n");
    
         }
    
         if (Normale > 0)
    
         {
    
            printf("Unausgeglichene Normaleklammern\n");
    
         }
    
    }
    
    // definition der Funktion search
    
    void search(int c)
    
    {
    
      extern int Geschweifte,
    
                 Eckige,
    
                 Normale;
    
    
        if (c == '{')
    
        {
    
           ++Geschweifte;
    
        }
    
        else if (c == '}')
    
        {
    
           --Geschweifte;
    
        }
    
        if (c == '[')
    
        {
    
           ++Eckige;
    
        }
    
        else if (c == ']')
    
        {
    
           --Eckige;
    
        }
    
        if (c == '(')
    
        {
    
           ++Normale;
    
        }
    
        else if (c == ')')
    
        {
    
           --Normale;
    
        }
    
    }        
    
    // definition der Funktion in_comment
    
    void in_comment(void)
    
    {
    
        int     c,
    
                d;
    
    
        c = getchar();
    
        d = getchar();
    
        while (c != '*' || d != '/')
    
        {
    
            c = d;
    
            d = getchar();
    
        }
    
    }
    
    // definition der Funktion in_quote
    
    void in_quote(int c)
    
    {
    
        int     d;
    
        while ((d = getchar()) != c)
    
        {
    
           if (d == '\\')
    
           {
    
              getchar();
    
           }
    
        }
    
    }

    Danke schon ma im Vorraus.

    Liebe Grüße

    die Zicke

  6. Also ich lebe nicht mehr zuhause und muss für meinen Lebensunterhalt komplett selbst aufkommen. Kindergeld bekommen meine Eltern schon lange nicht mehr. Ist ja auch die 2. Ausbildung die ich mache, da gibts soweit ich weiß soweiso kein Kindergeld mehr.

    Naja ich versuchs bei der nächsten lohnsteuererklärung mal abzusetzten.

  7. Weiß jemand wie das bei Azubis aussieht? Immerhin zahlt man da ja keine Steuern oder kann man das dann über die Eltern laufen lassen in dem man sagt die unterstützen einen un haben ads notwenige für die Ausbildung gekauft.

    Hab ja auch gehört das man die Schul- und Fachbücher absetzten kann. Läuft das da dann genauso?

  8. mit bestandener Ausbildung erhält man denn Fachabi

    Also das man nach der Ausbildung direkt sein Fachabi mit dazu bekommt is mir neu. Man kann Zusatzfächer belegen und so wärend der Ausbildung sein Fachabi machen. So wurd es uns in der Schule gesagt.

  9. Hallöchen!

    Also irgendwie bin ich grad bissel verwirrt. Mich verwirrt das printl total weiß garnicht was das macht un kanns auch in keinem buch finden mit dem ich grad arbeite. Wenn dies allerdings in printf abändere bekomm ich eine Fehlermeldung also scheint es so ja richtig zu sein. Wäre lieb wenn Ihr euch den Quelltext mal anschauen könntet und mir evt erklären könnt wieso bzw was dieses printl ist.

    Hier der Quelltext:

    *Schreibe ein Programm, das lange Eingabezeilen in zwei oder mehr kürzere Zeilen 
    
    *teilt, und zwar nach dem letzten Zeichen eines Wortes, das noch ganz vor der 
    
    *Spalte n in der EIngabe sthet. Sorgen Sie dafür, dass Ihr Programm sich auch für 
    
    *sehr lange EIngabezeilen vernünftig verhält, und dass auch Zeilen verarbeitet 
    
    *werden können, die keine Leerzeichen oder Tabulatorzeichen vor der angegebenen 
    
    *Spalte enthalten.
    
    * ********************************************************/
    
    
    
    #include <stdio.h>
    
    
    #define MAXSPALTE 15        // Zeilen-Spalte
    
    #define TAB 8               // Tabulator-Spalte
    
    
    char line[MAXSPALTE];        // Array für gekürzte Zeile
    
    int exptab(int pos);         // Funktion
    
    int findeleer(int pos);      // Funktion
    
    int neuepos(int pos);        // Funktion
    
    void printl(int pos);        // Funktion
    
    
    void main()
    
    {
    
            char iEingabe;           
    
            int  pos=0;       // Position der eingegebenen Zeichens
    
    
            while ((iEingabe = getchar()) != 'A')     // Eingabe von Zeichen
    
            {
    
                    line[pos++] = iEingabe;         // Setzen der Zeichen ins Array
    
                    if (iEingabe == '\t')           // Verhalten bei eingegebenem Tabulator
    
                    {
    
                         pos = exptab(pos);    // Aktualisieren der Position durch Funktion
    
                    }
    
                    else if (iEingabe == '\n')           // Verhalten bei eingegebenem Zeilenvorschub/Enter
    
                    {
    
                      [B]printl[/B](pos);          // Ausgabe der verkürzten Zeile durch Funktion
    
                      pos = 0;      // Position wieder auf null setzen
    
                    }
    
                    else if (pos >= MAXSPALTE)    // Verhalten wenn Position über Spalte hinaus geht
    
                    {
    
                        pos = findeleer(pos); // mittels Funktion Stelle finden, wo Zeile abgeschnitten werden kann
    
                        [B]printl[/B](pos);           // Ausgabe der verkürzten Zeile
    
                        pos = neuepos(pos);    // neue Position feststellen durch Funktion
    
                    }
    
            }
    
    }
    
    
    void printl(int pos)                           // Funktion zum Ausgeben von gekürzten Zeilen
    
    {
    
            int zaehler;                        // Zähler
    
    
            for (zaehler = 0; zaehler < pos; zaehler++)  // Schleife zum Durchlaufen des Arrays
    
            {
    
                putchar(line[zaehler]);       // Ausgabe der Zeichen des Arrays
    
            }
    
            if (pos > 0)                       // 
    
            {
    
                putchar('\n');      // Ausgabe von Zeilenvorschub/Enter
    
            }
    
    }
    
    
    int exptab(int pos)                 // Funktion zur Behandlung von Tabulatoreingaben
    
    {
    
            line[pos] = ' ';
    
            for (pos++; pos < MAXSPALTE && pos % TAB != 0; pos++)    
    
            {
    
                line[pos] = ' ';                                 
    
            }
    
            if (pos < MAXSPALTE)                                     
    
            {
    
                return pos;     // gibt pos zurück                                 
    
            }
    
            else                                                     
    
            {
    
                printl(pos);                                     
    
                return 0;     // gibt 0 zurück                                   
    
            }
    
    }
    
    
    int findeleer(int pos)                // Funktion zum Auffinden eines Leerzeichens zwischen Worten
    
    {
    
            while (pos > 0 && line[pos] != ' ')     
    
            {
    
                pos--;              // Position wird um eins verringert
    
            }
    
            if (pos == 0)                                       
    
            {
    
                return MAXSPALTE;       // gibt MAXSPALTE zurück                      
    
            }
    
            else                                            
    
            {
    
                return pos + 1;      // gibt pos +1 zurück                             
    
            }
    
    }
    
    
    int neuepos(int pos)               // Funktion zum Festlegen der neuen Position
    
    {
    
            int  zaehler_1,         // Zähler 1
    
                 zaehler_2;         // Zähler 2
    
    
            if (pos <= 0 || pos >= MAXSPALTE)   // Wenn Position außerhalb Spalte
    
            {
    
              return 0;                   // liefere null an main() zurück - aktuelle Position
    
            }
    
            else                                // Wenn Position innerhalb Spalte
    
            {
    
                 zaehler_1 = 0;             // Zähler auf null setzen
    
                 for (zaehler_2 = pos; zaehler_2 < MAXSPALTE; zaehler_2++)
    
                 {
    
                    line[zaehler_1] = line [zaehler_2];     // Bestimmen der Position - aktuelle Position
    
                    ++zaehler_1;
    
                 }
    
              return zaehler_1;               // liefere zaehler_1 an main() zurück
    
            }
    
    }
    
    

    Die fehlermeldung die kommt wenn man das printl mit printf tauscht:

    Error 1-22.c 42: type mismatch in parameter '_format' in call to 'printf' in funktion main

    Error 1-22.c 48: type mismatch in parameter '_format' in call to 'printf' in funktion main

  10. So wars bei mir

    Die Arbeitslosigkeit ist entstanden durch

    (_) Abschluss der Ausbildung/Studium

    (_) Zeitvertrag lief ab

    (X) Betrieb hat gekündigt

    (_) sonstiges

    Die Arbeitslosigkeit hat sich verlängert durch

    (_) nur schlecht zahlende Arbeitgeber suchten zu der Zeit

    (_) nur "110%-ige" Kandidaten wurden überhaupt eingeladen

    (_) eigene Fähigkeiten nicht mehr aktuell

    (_) geringe örtliche Flexibilität

    (X) sonstiges

    Die Arbeitslosigkeit hat sich (mind. vermutlich) verkürzt durch

    (_) eigene Weiterbildung, z.b. bzgl. neuer Software

    (_) Weiterbildung durch Arbeitsamt (z.B.)

    (_) Abstriche beim Geld

    (_) Umzug zum neuen Arbeitgeber

    (X) sonstiges

    Arbeitgeber hat (vermutlich)

    (_) Arbeitslose bevorzugt

    (_) Nicht-Arbeitslose bevorzugt

    (X) sonstiges

    Die Arbeitslosigkeit dauerte

    (_) unter sechs Wochen

    (_) sechs Wochen bis drei Monate

    (_) drei bis sechs Monate

    (X) länger als sechs Monate

    (_) sag ich nicht

  11. Das Problem mit dem Selbststudium kenn ich leider auch aus eigener Erfahrung. Bin nun Seit dem 1.8.07 in der Ausbildung als FIAE und Programmiere seitdem mit C naja sagen wir ma ich versuchs zumindest. Das ist alles absolutes neuland für mich aber wie heißt es immer so schön dafür macht man ja ne Ausbildung um das alles beigebracht zu bekommen und genau da ist der Punkt. Wir sind 2 Azubis einer im 2 Leerjahr und ich un haben 3 ich sag ma Ausbilder die allerdings selbst an Projekten arbeiten und deswegen auch ab un an ma nicht im Haus sind. Man bekommt zwar ständig gesagt wenn was ist frag doch aber so wirklich Zeit hat keiner, denn wenn man ma fragt dann heißt es "oh im mom ganz schlecht ich komm dann zu dir" und darauf wartet man dann schon ma nen Tag. Find es auch nicht wirklich gut aber lässt sich wohl nicht ändern.

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...