ich hänge einfach fest
-
hi kannst du mir das genauer sagen was ich dazu alles rein schreiben muss ein verbesserung von meinem code wäre evt nicht schlecht weil ich bin absolut neu aúf dem gebiet und schlage mcih mehr oder weniger mit einem buch run.
danke
gruß
-
Maik135 schrieb:
hi kannst du mir das genauer sagen was ich dazu alles rein schreiben muss ein verbesserung von meinem code wäre evt nicht schlecht weil ich bin absolut neu aúf dem gebiet und schlage mcih mehr oder weniger mit einem buch run.
danke
gruß
Dann musst du aber mal aktuellen Code zeigen.
Wegen umschalten auf Mutlibyte. Wenn du VC++ hast:
Projekt -> Konfigurationseinstellugen und dann dort den Zeichensatz auf Mutli-Byte umstellen.
-
// 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, "C:\\Dokumente und Einstellungen\\Maik\\Desktop\\Danny Elsman - The Little Things.mp3", "C:\\Programme\\Winamp\\winamp.exe ", NULL, NULL, SW_SHOW); 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ß
-
Das ist jetzt nicht böse gemeint, aber achte bitte auf folgende Dinge, dann werden sicher auch mehr Leute motiviert sein, dir zu helfen:
- Wähle einen passenden Threadtitel.
- "Funktioniert nicht" ist keine Fehlerbeschreibung. Wenn du Hilfe erwartest, musst du schon sagen, was nicht geht.
- Um Codebeispiele zu zeigen, gibt es [cpp]-Tags (erste weisse Schaltfläche unter dem Eingabe-Textfeld). Benutz diese doch bitte, das macht den Code gleich viel übersichtlicher.
- Bitte achte dich ein wenig auf Gross-/Kleinschreibung oder wenigstens auf Satzzeichen. Sätze wie der folgende sind kaum lesbar:
Maik135 schrieb:
den player hab ich mit _spawnl_ geöffnet ging recht einfach nur wenn ich z.b. eine mp3 datei auf dem desktop habe wenn ich die abspielen will wie mit eine normalen doppelklick nur über c++ wie das geht würde mich interessieren so wie der link hier vor mir nur will ich nicht einen ganzen player programmieren sondern einfach das er die mp3 datei aufmachen und dann normal in winamp oder so wiedergeben.
Noch einige Anmerkungen zum Code:
- <stdio.h> ist kein C++-Header. Benutze anstattdessen <cstdio>, wenn du ihn überhaupt benötigst.
main()hatte schon immer den Rückgabetypenint.- Anweisungen, die in einem
switch-Block nach einembreak;und vor der nächsten Sprungmarke (in deinem Falledefault:) stehen, werden niemals ausgeführt.
-
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:
ausShellExecute(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