mal wieder: schleife



  • so bei nem programm hab ich folgende fehler:

    - ich will dass man am ende von jeder case klammer durch tastendruck wieder zum anfangsbild kommt

    - was für ein datentyp muss ich benutzen, wenn meine variable ein wort ist???

    hier der qt:

    #include "iostream.h"
    #include "conio.h"
    #include "string"
    using namespace std;
    
    int main()
    
    {
    
    int auswahl,n,p; 
    char buffer[20];
    
    do
    
    	{
    
    system (" cls ");
    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++";
    cout << "\n\nwhat would you like to do?\n"<< endl;
    cout << "1: hhhhhhh"<< endl;
    cout << "2: hzhzhzh"<< endl;
    cout << "3: hzuhzuh"<< endl;
    cout << "4: hzujhzu\n"<< endl;
    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++\n"<<endl;
    
    cin >>auswahl;
    
    	}
    
    hile (auswahl!=1&&auswahl!=2&&auswahl!=3&&auswahl!=4);
    
    	switch(auswahl)
    
    {	
    case 1:
    {
    system("cls");
    system("hostname");
    cout << "\++++++++++++++++++++++++++++++++++++++++++++++++++++";
    cout << "\nhhhhhhhhhhh";
    cout << "\n++++++++++++++++++++++++++++++++++++++++++++++++++++";
    
    cout << "\n\nhow should the username be?\n";
    cin  >> n;                      //anderer Datentyp ???? 
    cout << "\nhow should the password be?\n";
    cin  >> p;                      //anderer Datentyp ????
    
    string nameu = itoa(n,buffer,10);
    string pwu = itoa(p,buffer,10);
    string b = "net user "+nameu +" " +pwu +" /add";
    
    system (b.c_str());
    
    system ( "cls" );
    system("hostname");
    cout << "\++++++++++++++++++++++++++++++++++++++++++++++++++++";
    cout << "\ncreate a new user account";
    cout << "\n++++++++++++++++++++++++++++++++++++++++++++++++++++";
    cout << "\n\nfertig\n";
    cout << "\nthe user name is   --" << n << "--" << endl;
    cout << "the password is --" << p << "--" << endl;		
    
    }
    
    case 2:			
    
    	{
    	         cout << "nase2";break;
    
    	}
    
    case 3:			
    
    	{
    		cout << "nase3";break;
    
    	}
    
    case 4:			
    
    	{
    		cout << "nase4";break;
    
    	}
    }
    	return 0;
    
    }
    

    Danke schon mal im vorraus!!!

    obertn00b



  • #include "iostream.h" 
    #include "conio.h" 
    #include "string" 
    using namespace std;
    

    Deine Includes sind unpraktisch. Setz lieber "<" und ">" statt Anführungszeichen (bei Anführungszeichen wird immer erst der Ordner durchsucht, in dem du deine eigene Datei gespeichert hast und dann erst in dem compiler-eigenen Include-Ordner). Wenn du den Namespace benutzt, musst du das ".h" bei "iostream" weglassen.

    do 
    
        { 
    
    system (" cls "); 
    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++"; 
    cout << "\n\nwhat would you like to do?\n"<< endl; 
    cout << "1: hhhhhhh"<< endl; 
    cout << "2: hzhzhzh"<< endl; 
    cout << "3: hzuhzuh"<< endl; 
    cout << "4: hzujhzu\n"<< endl; 
    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++\n"<<endl; 
    
    cin >>auswahl; 
    
        } 
    
    while (auswahl!=1&&auswahl!=2&&auswahl!=3&&auswahl!=4);
    

    Setz das "do" doch direkt vor "cin", dann wird der Bildschirminhalt nicht immer neu geschrieben.

    obestn00p schrieb:

    - ich will dass man am ende von jeder case klammer durch tastendruck wieder zum anfangsbild kommt

    Wie das mit dem Tastendruck geht, liest du hier ausführlich. Um wieder an den Anfang zu kommen, setz das ganze in eine Schleife.

    obestn00p schrieb:

    - was für ein datentyp muss ich benutzen, wenn meine variable ein wort ist???

    string

    PS: Dir ist schon klar, dass dein Programm kein Ende hat?



  • Main vorschlag:

    [cpp]

    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    
    using namespace std;
    
    #define ESC 27
    #define cls printf("\033[2J") // Clear screen (ANSI.sys driver must be loadet).
    
    void DisplayMainMenu(void);
    void AddNewUser(void);
    
    int main(void)
    {
       char choice = 0;
       char buffer[20];
    
       memset(buffer,0,sizeof(buffer));
    
       DisplayMeinMenu();
       while(choice != ESC)
       {
          if(kbhit())
          {
             choice = getch();
             switch(choice);
             {
                case '1':
                      AddNewUser();
                      DisplayMainMenu();
                break;
                case '2':
                      // bla bla
                      DisplayMainMenu();
                break;
                default:
                      DisplayMainMenu();
                break;
             }
          }
       }
       return 0;
    }
    
    void DisplayMainMenu(void)
    {
       printf("*********** Main-Menu **************\n\n");
       printf("< 1 > ...   Add new user\n");
       printf("< 2 > ...   bla bla\n\n");
       printf("<ESC> ...   exit\n\n");
    
    }
    
    void AddNewUser(void)
    {
       // insert your code for addind
    }
    

    [cpp]

    mgf jon doe



  • @jon doe: Dein Vorschlag unterscheidet sich mal abgesehen von der Rechtschreibung auch nicht sonderlich von dem darüberliegenden 😉

    MfG SideWinder



  • danke das hat mir sehr geholfen!!!

    hab jetzt jedoch schon wieder ein problem.ich will mit system() ein pfad an die console weitergeben!! system("[...]\windows nt[...]"). normaler weise muss man bei der console leerzeichen so schreiben windows" "nt doch hier geht das ja nicht!?! was tun 😕

    thx



  • Für den Windowsordner würde ich %windir% nehmen, weil der Ordner nicht auf jedem Windows-System gleich heißt und auch nicht immer auf C: liegt. Es gibt nen Befehl, um alle solchen Abkürzungen anzuzeigen, hab den aber vergessen. Wär dankbar, wenn den mal jemand posten würde.



  • Müssen nicht unter "" stehen imho.

    MfG SideWinder



  • Man kann es doch so schreiben: System ("\"Windows NT\"");



  • geht imma no net!!! verzweifle bald



  • Dann post mal den Quellcode, der nicht funktioniert.



  • immer "\" benutzen



  • 1.)Folgender befehl soll an die console weitergegeben werden. doch hier ist der hacken: wie bekomme ich die "" in die lücke zwischen windows und nt ???

    string d = "reg add HKLM\software\microsoft\Windows NT\currentversion\winlogon\SpecialAccounts\userlist /v " +nameu +" /t REG_DWORD /d 0";

    2.)wie kann ich ganze pfade mit cin eingeben???

    thx



  • hilft dir

    cin.getline(d,255);
    

    weiter ?

    wobei d hier dein string ist und 255 die maximale eingabelänge...



  • ich glaub du verstehst mich falsch. der befehl soll mit system an die console weitergegeben werden, doch muss man zwischen windows und nt das leerzeichen mit " umschließen-

    haste noch ne lösung parat!

    thx

    oberstn00b



  • string d="C:\\\"Windows NT\"\\currentversion\\"
    

    oder, wie ich schon weiter oben geschrieben habe

    string d="%windir%\\currentversion\\"
    


  • SirLant schrieb:

    Man kann es doch so schreiben: System ("\"Windows NT\"");

    Wird man hier ignoriert?



  • ich hab jetzt schon einiges erfolglos getestet!!!
    kann jemand die lösung für mein beispiel anpassen

    reg add HKLM\software\microsoft\Windows NT\currentversion\winlogon\SpecialAccounts\userlist /v +[nameu] /t REG_DWORD /d 0

    thx



  • versteht ihr meine frage nicht??? das soll keines wegs ungeduldig oder unhöflich klingen!!! ich würde ganz gerne die lösung auf meine frage wissen!!!

    thx der größte noob

    oberstn00b



  • System ("\"reg add HKLM\software\microsoft\Windows NT\currentversion\winlogon\SpecialAccounts\userlist /v +[nameu] /t REG_DWORD /d 0\"");

    sollte funktionieren.



  • das geht so nicht!!! habt ihr sonst noch ne idee!!!
    bin ziemlich verzweifelt

    thx

    oberstn00b



  • es handeld sich hierbei um WindowsRegistry, also schlage ich vor dass du die WinApi dafür nimmst. In der WinApi-FAQ sin bsp. wie man die registry anspricht.


Anmelden zum Antworten