Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

16.05.2006, 21:20

Orakel bauen

Also ich will ein Orakel basteln ^^ und der 10te buchstabe soll ausgelsen werden und je nach dem welcher das ist soll das entscheiden

ich weiss wie ichs ausgebe usw.

case ('a,c,e,g,i,k,l usw.)
{
cout << "Deine Frage wird mit Ja beantwortet"


So nur so zum zeigen ^^

Nur wie lese ich bei:

Bin ich toll?

den 10ten (das letzte l ) buchstaben aus?
Gruß

kalo

--------------------------------------------------------------
Wichtig:
Das Krümmelmonster darf aus Gesundheitsgründen nurnoch Gemüse essen.

2

16.05.2006, 21:39

wo ist dein Problem?

Aja benutz codetags...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

john

Alter Hase

Beiträge: 786

Beruf: Schüler

  • Private Nachricht senden

3

17.05.2006, 13:42

Würd ich auch gern wissen wo dein Problem ist, vielleicht hast du ein Problem bei längeren Strings ? Sonst schau dir doch mal strlen(...) an ...
Also wie gesagt weiß nich ob dir das jetzt weiterhilft, stell die Frage einfach nochmal deutlicher bitte. :)
mfg
john

Anonymous

unregistriert

4

17.05.2006, 13:54

Also ich denke ich habe ihn verstanden. Hier ist der Beispielsatz:

"Bin ich toll?"

Hier ist das Letzte l des Satzen der 10. Buchstabe. Er will egal bei welchem
Satz immer den 10. Buchstaben auslesen, also die Leerzeichen ignorieren.
Leider habe ich jetzt so schnell keine Antwort parat, mit Strings so genau
auslesen habe ich nicht viel Erfahrung (habe ich noch nie gebraucht) Aber
schau doch mal in der MSDN oder so nach. Es gibt doch genügend
Informationsquellen für Strings...

MfG DarkRaider.

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

5

17.05.2006, 14:11

du kannst mit ner for schleife den character array durch gehen und bei jedem buchstaben der kein leerzeichen ist nen zähler erhöhen. sobald der zähler dann 10 erreicht hat liest du den buchstaben an dieser stelle und gut ist... auf dem weg kannst du gleich noch kontrollerieren, ob der string überhaupt lang genug ist...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
char buffer[256] = "Ich bin toll!";
int iCount = 0;
char cOut; // das gesuchte zeichen


for(int i = 0; i < strlen(buffer); ++i)
{
    // leerzeichen ?

    if(buffer[i] != ' ')
    {
        ++iCount;
        if(iCount >= 10)
            cOut = buffer[i];
    }
}

das sollte dir ne idee geben, wie du das problem lösen kannst...
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

6

17.05.2006, 17:26

Falls er aber zu kurz ist, würd ich einfach das letzte gültige Zeichen auslesen, und nicht den Benutzer auffordern einen anderen einzugeben:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
wchar_t awcBuffer[256] = L"Ich bin toll!"; 
int iCount = 0; 
wchar_t wcOut = L' '; // das gesuchte zeichen 


for(int i = 0; i < static_cast<int>(::wcslen(awcBuffer)); i++) 
{ 
    if(awcBuffer[i] != L' ') 
    { 
        iCount++;
        wcOut = awcBuffer[i];
        if(iCount >= 10) break;
    } 
}


Somit hast du am Ende der Schleife sicherlich das LETZTE gültige Zeichen beim zu kurzen String oder das 10. Zeichen bei einem längeren String in wcOut gespeichert!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

7

17.05.2006, 17:32

öhh?? Warum nicht einfach nur gucken ob der satz länger als 0 ist und wenn nicht einfach den array an der stelle ... wo sein problem?! :D

das sollteste de aber wissen :D

Aja... man kann das wenn man weiß das der string länger als 10 ist anderes realisieren... mal sehen wer das noch bringt :D
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Anonymous

unregistriert

8

17.05.2006, 17:36

Was gibts da soviel zu lachen? Als wenn du noch nie mit C++ angefangen
hättest... Einige brauchen halt länger um das Verständnis für C++ zu
entwickeln.

MfG DarkRaider.

J.M.K.

Alter Hase

Beiträge: 500

Wohnort: BW Karlsruhe Ittersbach

Beruf: Schüler

  • Private Nachricht senden

9

17.05.2006, 17:37

Da gibts bestimmt noch irgendwas über sizeof. Nee ich glaub das war lenght oder war es nicht doch size? Naja die MSDN wirds wissen.

Öhm ich glaub jetzt weiß ichs. ;)

int zeichen = string.size();
if(zeichen<10)
....
Vegetarier essen meinem Essen das Essen weg.

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

10

17.05.2006, 17:46

Ok stimmt, geht performanter...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
wchar_t awcBuffer[256] = L"Ich bin toll!"; 
int iCount = 0; 
wchar_t wcOut = L' '; // das gesuchte zeichen 


int iLength = static_cast<int>(::wcslen(awcBuffer));
if(iLength > 10)
{
    for(int i = 10; i < iLength; i++) 
    { 
        if(awcBuffer[i] != L' ') 
        { 
            wcOut = awcBuffer[i]; 
            break; 
        } 
    }
}
else
{
    for(int i = iLength; i >= 0; i--)
    {
        if(awcBuffer[i] != L' ') 
        { 
            wcOut = awcBuffer[i]; 
            break; 
        } 
    }
}
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige