ich hänge einfach fest



  • Maik135 schrieb:

    // zugang.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <process.h>
    #include <stdio.h>
    #include <windows.h> 
    
    void main()
    {	  
    	int Code;
    	std::cout << "Code geschuezter Bereich" << std::endl;
    	std::cout << std::endl;
    	std::cout << "Geben sie den vierstelligen Code ein: ";
    	std::cin >> Code;
    	std::cout << std::endl;
    	std::cout << "Code pruefen... " << std::endl;
    	std::cout << std::endl;
    
    	switch (Code)
    	{
    	case 3188 : std::cout << "Zugang gestattet \n"; ShellExecute(NULL, L"open", L"C:\\Dokumente und Einstellungen\\Maik\\Desktop\\Danny Elsman - The Little Things.mp3", "C:\\Programme\\Winamp\\winamp.exe ", NULL, NULL, SW_SHOW); // Macro hinzugefügt für LPWSTR Pointer break; std::cout << std::endl; 
    	default : std::cout	<< "Zugang nicht gestattet \n";break; std::cout << std::endl;
    	}
    }
    

    hier der quellcode funktioniert aber mit multibyte auch nicht. keine ahnung wo der fahler sein soll bin noch anfänger.

    freue mich auf eine antwirt evt mit code verbesserung.

    gruß



  • "C:\\Programme\\Winamp\\winamp.exe "
    

    ➡

    L"C:\\Programme\\Winamp\\winamp.exe "
    

    außerdem solltest du:
    aus

    ShellExecute(NULL, L"open", L"C:\\Dokumente und Einstellungen\\Maik\\Desktop\\Danny Elsman - The Little Things.mp3", L"C:\\Programme\\Winamp\\winamp.exe ", NULL, NULL, SW_SHOW);
    

    vielleicht mal:

    ShellExecute(NULL, L"open", L"C:\\Programme\\Winamp\\winamp.exe ", L"C:\\Dokumente und Einstellungen\\Maik\\Desktop\\Danny Elsman - The Little Things.mp3", NULL, NULL, SW_SHOW);
    

    machen, schließlich willst du Winamp mit dem Lied als Parameter starten und nicht umgekehrt und eine gescheite Fehlerbeschreibung, Compilermeldungen etc. und die Befolgung der Ratschläge der Poster vor mir wären wirklich nicht schlecht gewesen.



  • Hallo, am anfang ging es ja darum eine römische ziffer in eine arabische zahl umzuwandeln, ich hab das mal versucht ein wenig zu erweitern, finde jedoch meinen sematischen fehler nicht... compilieren tut er...

    #include <iostream>
    
    int main()
    {
    
    	char roemische_ziffer;
    	int  i, summe=0;
    	int *arabische_zahl = NULL;
    
    	std::cout << "Geben Sie ein wie viele Ziffern ihre Römische Zahl besitzt: ";
    	std::cin >> i;
    
    	arabische_zahl = new int[i];
    
    	for (int n=0;i<n;i++)
    	{
    		std::cout << "Bitte geben sie ihre roemische Zahl ein (nach jeder Ziffer ein Return): ";
    		std::cin >> roemische_ziffer;
    
    		switch(roemische_ziffer)
    			{
    				case 'I':
    					arabische_zahl[i] = 1;
    					break;
    				case 'V':
    					arabische_zahl[i] = 5;
    					break;
    				case 'X':
    					arabische_zahl[i] = 10;
    					break;
    				case 'L':
    					arabische_zahl[i] = 50;
    					break;
    				case 'C':
    					arabische_zahl[i] = 100;
    					break;
    				case 'D':
    					arabische_zahl[i] = 500;
    					break;
    				case 'M':
    					arabische_zahl[i] = 1000;
    					break;
    				default :
    					std::cout << "Falsche Eingabe!";
    					continue;
    			} 
    		summe = summe + arabische_zahl[i];
    	}
    	std::cout << "Ihre roemische Zahl entspricht der arabischen Zahl: " << summe << std::endl;
    
    	return 0;
    
    }
    

    nach der eingabe wie viele ziffern die römische zahl besitzt gibt er immer "Ihre roemische Zahl entspricht der arabischen Zahl: 0" aus...



  • kurz in die Glaskugel guck, schätze es liegt an der for-Schleife

    for (int n=0;i<n;i++)
    

    (i ist nie kleiner n, es sei denn der User gibt eine negative Anzahl an stellen ein für die römische Zahl, was bissel seltsam wäre)
    ➡

    for (int n=0; n < i; n++)
    

    ich glaube du bist mit n und i bissel durcheinander gekommen,
    Tipp: nenne die Laufvariable nicht n sondern immer i, ist so usus 😉

    PS:
    schau dir mal std::string etc. an ... dann brauchst nicht extra erfragen, wie viele Zeichen kommen und kannst alles auf einmal einlesen ^^



  • Paul Manns schrieb:

    Tipp: nenne die Laufvariable nicht n sondern immer i, ist so usus 😉

    Und im Kontext römischer Ziffern würde ich schon fast darauf bestehen bei verschachtelten Schleifen sie so zu nennen:

    for(int i = ...)
      for(int ii = ...)
        for(int iii = ...)
          for(int iv = ...)
            for(int v = ...)
              for(int vi = ...)
                for(int vii = ...)
    

    So treibt man schnell jemanden in den Wahnsinn. 😉



  • ach blöd, des mit der vorschleife stimmt ja, und dann hats auch geklappt, nur gibts natürlich bei IV auch 6 an obwohls ja eig. 4 sein müsste... jemand ne idee das zu beheben *ratlos*



  • edit: forschleife^^



  • und wegen dem kommentar mit dem string, ich brauch die zahl ja für mein feld... oder wieh hast du dir des gedacht? (sry wenn ich jetzt was falsches gesagt habe... aber ich programmier erst seit letzter woche montag)



  • carsten2 schrieb:

    und wegen dem kommentar mit dem string, ich brauch die zahl ja für mein feld... oder wieh hast du dir des gedacht? (sry wenn ich jetzt was falsches gesagt habe... aber ich programmier erst seit letzter woche montag)

    std::string roemzahl;
    std::cout << "bitte geben sie eine römische Zahl ein" << std::endl;
    std::cin >> roemzahl;
    for(std::size_t i = 0; i != roemzahl.size(); ++i) {
      switch(roemzahl[i]) //...
    }
    

    allein mit der Switch ist es nicht getan, du musst eben nach den Regeln der römischen Zahlen, checken, ob eine niedrigere Ziffer, also das I einer höherwertigen nach- oder vorgestellt ist und entsprechend rechnen, simples addieren kann nicht funktionieren.



  • danke paul, nur da ich das mit dem size nich wirklich verstanden hab, hab ichs so fertig geschrieben und sogar geschafft meinen fehler zu beheben 🙂 💡

    #include <iostream>
    
    int main()
    {
    
    	char roemische_ziffer;
    	int  i, summe=0;
    	int *arabische_zahl = NULL;
    
    	std::cout << "Geben Sie ein wie viele Ziffern ihre Römische Zahl besitzt: ";
    	std::cin >> i;
    
    	arabische_zahl = new int[i];
    
    	for (int n=0;n<i;n++)
    	{
    		std::cout << "Bitte geben sie ihre roemische Zahl ein (nach jeder Ziffer ein Return): ";
    		std::cin >> roemische_ziffer;
    
    		switch(roemische_ziffer)
    			{
    				case 'I':
    					arabische_zahl[n] = 1;
    					break;
    				case 'V':
    					arabische_zahl[n] = 5;
    					break;
    				case 'X':
    					arabische_zahl[n] = 10;
    					break;
    				case 'L':
    					arabische_zahl[n] = 50;
    					break;
    				case 'C':
    					arabische_zahl[n] = 100;
    					break;
    				case 'D':
    					arabische_zahl[n] = 500;
    					break;
    				case 'M':
    					arabische_zahl[n] = 1000;
    					break;
    				default :
    					std::cout << "Falsche Eingabe!";
    					n = n-1;
    					continue;
    			} 
    		}
    	for(int n=0;n<i;n++)
    	{
    		if (n+1==i)
    		{
    			summe = summe + arabische_zahl[n];
    		}
    		else if (arabische_zahl[n]<arabische_zahl[n+1])
    		{
    			summe = summe-arabische_zahl[n];
    		}
    		else
    		{
    			summe = summe + arabische_zahl[n];
    		}
    	}
    
    	std::cout << "Ihre roemische Zahl entspricht der arabischen Zahl: " << summe << std::endl;
    
    	return 0;
    
    }
    

    (für alle dies auch ausprobiert haben sollten, hab ich nochma meine version von beigefügt und es funktioniert sogar für XC z.B. 90 und nicht 110^^)



  • @ carsten2:
    Was soll das? Mach einen eigenen Thread auf, wenn du eine Frage hast.



  • @nexus, der thread handelte ursprünglich mal vom einlesen römischer ziffern in die umwandldung arabischer



  • carsten2 schrieb:

    @nexus, der thread handelte ursprünglich mal vom einlesen römischer ziffern in die umwandldung arabischer

    Ja, aber wenn du nicht exakt das gleiche Problem hast und es noch nicht gelöst hast, dann kannst du ruhig posten, aber ansonsten mach lieber einen neuen Thread auf.
    Ich denke mal, dass du es nur "gut" gemeint hast, aber ist kein Problem zu einem neuen Problem einen neuen Thread aufzumachen, auch wenn es um das genau gleiche Thema geht. 😉



  • hi danke leute für die guten tips ich habs geschaft.

    gruß maik


Anmelden zum Antworten