Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » systemleistung steigt bei Programmstart auf 100%

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
05.03.2004, 14:56 Uhr
GERO



hi,
weis jemand von euch wieso das folgende Programm bei der Eingabe von '1' die Systemleistung auf 100% steigen lässt, und dann nichts mehr macht.....

hier der code:



C++:
#include <iostream.h>
#include <stdio.h>
    
int main()
{

    char neuerkname[81];
    FILE *fpkname;
    int x, y, neukategori;

    struct
    {
        char kname[81];
        typedef struct
        {
            char name[81];
            char anschrift[81];
            char urlaubvon[81];
            char urlaubbis[81];

        }NAME[100];
    }KATEGORI[100];

    cout<<"wollen Sie eine neue Kategori hinzufuegen? Dann druecken Sie '1'!"<<endl;
    cin>> neukategori;


    if(neukategori==1)
    {
        y=0;
        while(y<=100 || KATEGORI[y].kname=="");
        {
            y++;
        }

        cout<<"neuer Kategoriname bitte ohne " "!"<<endl;;
        cin>>KATEGORI[y].kname;
    }

    else
    {
        cout<<"ok, dann eben nicht."<<endl;
    }


    fpkname = fopen("kname.txt","w");

    if(fpkname==NULL)

    {
        cout<<"Fehler beim ”ffnen der Datei kname.txt."<<endl;
    }

    else
    {
        x=0;
        while(x<=100 || KATEGORI[x].kname==NULL);
        {
            fputs(KATEGORI[x].kname, fpkname);
            fprintf(fpkname,"\n");
            x++;
        }
    }
    fclose(fpkname);

    return(0);
}





ok viel spaß beim ausprobieren,
aber vergesst nicht mir antworten zu schreiben.....

Gruß GERO
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.03.2004, 15:12 Uhr
typecast
aka loddab
(Operator)


Ich würde jetzt mal stark darauf tippen, dass deine (beiden) While-Schliefen falsch sind. Was du jeweils willst ist

C++:
while (y <= 100 [b]&&[/b] KATEGORI[y] == "")


Das was du gemacht hast, sollte eigentlich einen Segmentation-Fault geben, weil y immer weiter hochgezählt wird. Warum der bei dir nicht kommt ist mir leider nicht klar. Ersetzte einfahch die || durch && (in beiden Schleifen) und es sollte tun (hoffe ich )
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.03.2004, 16:00 Uhr
virtual
Sexiest Bit alive
(Operator)


Daneben auch noch:

1. Ist ein Array deklaraiert mit

C++:
type x[100];


So sind x[0] ... x[99] gültige felder, x[100] aber nicht mehr -> y<100 an stelle von y<=100, dito x


2. C String werden nicht mit ==, sondern strcmp verglichen

3. Kategorie schreibt man mit "e" am Ende. Es sei denn, die Rechtschreibreform hat das geändert.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.03.2004, 16:04 Uhr
~(un)wissender
Gast


Also ich seh kein y nur ein x, aber ist schon richtig, dass || muss ein && sein.
Außerdem muss es < 100 heißen, nicht <=.
Dann wird die Schleife auch nur maximal 100 mal durchlaufen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.03.2004, 16:07 Uhr
typecast
aka loddab
(Operator)


*schnellindereckeversteck* das habe ich ja garnicht gesehen *schäm*
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.03.2004, 16:20 Uhr
kronos
Quotenfisch
(Operator)


will auch noch was beisteuern.
hmm....
genau, die gänsefüßla in strings solltest du mit \" escapen.
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.03.2004, 12:38 Uhr
GERO



ich hab ma versucht was ihr mir geschrieben habt, aber ich hb da noch ne frage,


Das Programm soll y oder x bis 100 hochzählen, solange

x oder y < 100 && KATEGORI[x oder y].kname ungleich (also != ) "" oder NULL ist.

Wenn ich das also so schreibe macht der mir immer noch eine endlos schleife, logischerweise müsste das Programm aber mit der Schleife aufhören, sobald KATEGORI[x oder y].kname ungleich NULL("") ist oder x (oder y) ==100 ist.

Also wer jetzt noch weis wo der Fehler in den Schleifen liegt, bitte schreiben, schreiben, schreiben.......

Grus
GERO

Dieser Post wurde am 06.03.2004 um 12:38 Uhr von GERO editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.03.2004, 13:11 Uhr
~Gast
Gast


nur mal so eine frage setz du eigentlich auch klammern oder sowas von wegen prioritäten oder wie sieht dein ausdruck ejtzt eigneltich aus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.03.2004, 14:19 Uhr
GERO



also, hier nochmal der code, ich denke, das ich alle klammern u.s.w. gesetzt habe. Außerdem habe ich die abfrage x(oder y, oder z) <100 rausgenommen, weil ich die vorerst nicht brauchen werde. zusätzlich habe ich noch die variable z eingesetzt, mit der ich bei der letzten while schleife prüfen ob KATEGORI(z).kname==NULL ist, (wenn ja) um die eingabe der werte in eine Datei zu stoppen. Das Problem , das die system leistung auf 100% geht ist jetzt nicht mehr, aber es ist doch irgendwie unlogisch, das die schleifen mit == und nicht mit != geschrieben werden, ich will schließlich die schleife so oft durchlaufen lassen, wie die Variablen x (y oder z) != NULL sind. :
Ich hoffe, das ich das jetzt irgendwie verständlich formuliert habe...


hier der code:

C++:
#include <iostream.h>
#include <stdio.h>
    
int main()
{

    
    FILE *fpkname;
    int y, z, neukategori;

    struct
    {
        char kname[81];
        typedef struct
        {
            char name[81];
            char anschrift[81];
            char urlaubvon[81];
            char urlaubbis[81];

        }NAME[100];
    }KATEGORI[100];

    cout<<"wollen Sie eine neue Kategori hinzufuegen? Dann druecken Sie '1'!"<<endl;
    cin>> neukategori;


    if(neukategori==1)
    {
        y=0;
        while(KATEGORI[y].kname==NULL);
        {
            y++;
        }

        cout<<"neuer Kategoriname bitte ohne " "!"<<endl;;
        cin>>KATEGORI[y].kname;
    }

    else
    {
        cout<<"ok, dann eben nicht."<<endl;
    }


    fpkname = fopen("kname.txt","w");

    if(fpkname==NULL)

    {
        cout<<"Fehler beim oeffnen der Datei kname.txt."<<endl;
    }

    else
    {
        z=0;
        while(KATEGORI[z].kname==NULL);
        {
            z++;
        }

        while(KATEGORI[z].kname==NULL);
        {
            fputs(KATEGORI[z].kname, fpkname);
            fprintf(fpkname,"\n");
            z++;
        }
    }
    fclose(fpkname);

    return(0);
}







Gruß GERO
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
07.03.2004, 18:07 Uhr
~(un)wissender
Gast


Schaus dir mal virtuals post an...cstrings kann man nicht mit == vergleichen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: