Mam problem. Chce pisać jakiś tekst, a program ma go czytać znak po znaku. Jednak gdy wpisuje jakieś słowo to program czyta tylko ostatnią literę danego słowa. Dla przykładu napiszę "dom" a on czyta "m". Pilnie potrzebuję pomocy. Z góry dzięki :)
- Rejestracja:ponad 14 lat
- Ostatnio:ponad 7 lat

- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
A nie łaska pokazać nam JAK ten tekst czytasz?
- Rejestracja:ponad 14 lat
- Ostatnio:ponad 7 lat
sporo tego jest więc pokaże część:
char tekst;
tekst = getch();
if(tekst == 'a')
{
sndPlaySound("a.wav", SND_ASYNC); system("cls"); czytacz();
}
if(tekst == 'b')
{
sndPlaySound("b.wav", SND_ASYNC); system("cls"); czytacz();
}
if(tekst == 'c')
{
sndPlaySound("c.wav", SND_ASYNC); system("cls"); czytacz();
}
if(tekst == 'd')
{
sndPlaySound("d.wav", SND_ASYNC); system("cls"); czytacz();
}
if(tekst == 'e')
{
sndPlaySound("e.wav", SND_ASYNC); system("cls"); czytacz();
}
Zrobiłem tak bo całe wyrazy nie działąją czyta tylko ostatnią literę.
- Rejestracja:ponad 14 lat
- Ostatnio:ponad 7 lat
Ten twój kod też coś nie działa, wyświetla się:
cannot convert std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to
const CHAR*' for argument 1' to
BOOL sndPlaySoundA(const CHAR*, UINT)'
Śmiejecie się ze mnie że to niby takie proste, a na razie nikt z was tego nie zrobił. Jak to takie proste to podajcie mi kod. Bo ten co kolega wyżej podał nie wiele dał bo wyskakuje od groma błędów. Sami kiedyś zaczynaliście i ja dopiero początkuje,na razie mam 15 lat i dlatego piszę w newbie, a niby tacy mądrzy jesteście se jaja robicie to dajcie chociaż odpowiedź na moje pytanie
- Rejestracja:ponad 15 lat
- Ostatnio:prawie 14 lat
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::string;
void funkcja(const char * const a)
{
cout << a << "\n";
}
int main(void)
{
string text;
cin >> text;
funkcja((text+".wav").c_str());
return 0;
}
Tylko wywolaj to play, a nie funkcje...
- Rejestracja:ponad 14 lat
- Ostatnio:ponad 7 lat
wg ciebie tak powinno być??
#include <iostream>
#include <string>
#include <windows.h>
#include <mmsystem.h>
using std::cout;
using std::cin;
using std::string;
void funkcja(const char * const a)
{
cout << a << "\n";
}
int main(void)
{
string text;
cin >> text;
funkcja( sndPlaySound(text+".wav", SND_ASYNC).c_str());
return 0;
}

- Rejestracja:prawie 15 lat
- Ostatnio:około 7 lat
ehhh... zamiast bawić się w dźwięki może najpierw wypadałoby ogarnąć podstawy: typy danych, stringi, funkcje, tablice, wskaźniki, wczytywanie i wyświetlanie danych? Jak chcesz używać klasy string to wypadałoby wiedzieć co to są klasy, jej składowe, metody, itp. itd.
Zacznij od podstaw i zapomnij na razie o takich wynalazkach jak windows.h itd.
Mi tam się pomysł podoba, całkiem... oryginalny i coś tam go nauczy :>
Zakładając, że masz dla każdej literki plik wave, można je kolejno odtwarzać, będzie to prawie jak czytanie... :>
#include <string> //typ tekstowy
#include <windows.h> //api windowsa
#include <mmsystem.h> //systemowe zasoby multimedialne
using namespace std;
int main(int argc, char* argv[])
{
//pobranie tekstu
string text;
cin >> text; //wprowadzenie
//odtwarzanie kolejnych literek
char file_name[] = "_.wav"; //bufor tekstowy z nazwą pliku, będzie zmieniana tylko 1-szy znak
for(size_t i = 0; i < text.size(); ++i)
{
file_name[0] = text[i]; //ustawienie 1 znaku nazwy pliku na aktualny znak w podanym tekście
if(PlaySound(file_name, NULL, SND_SYNC | SND_FILENAME | SND_NODEFAULT) == FALSE)
{
//a co gdy nie będzie pliku i nie będzie się dało odtworzyć literki?
//tutaj możesz obsłużyć taką sytuacją na swój sposób :>
}
}
system("PAUSE"); //zatrzymanie programu (wiem, ale nie komentować, to nie wątek na temat zatrzymania programu)
return 0;
}
...nie kompilowane

- Rejestracja:prawie 15 lat
- Ostatnio:4 minuty
suchecki300 napisał(a)
wg ciebie tak powinno być??
#include <iostream>
#include <string>
#include <windows.h>
#include <mmsystem.h>using std::cout;
using std::cin;
using std::string;void funkcja(const char * const a)
{
cout << a << "\n";
}int main(void)
{
string text;
cin >> text;funkcja( sndPlaySound(text+".wav"**.c_str()**, SND_ASYNC)); return 0;
}
Matko jedyna, ziom, weź ty się skup. Błąd ci jasno mówi, że nie może konwertować stringa na const char *. Dodanie takiego rzutowania to dodanie metody c_str() DO STRINGA nie do funkcji :/
Idź poucz się minimum o stringach, o wczytywaniu danych i używaniu ich.
Mój kod był poglądowy, jak to zrobić, żeby nie pisać oddzielnego ifa dla każdej litery (to najbardziej szalony pomysł jaki widziałam) i może jeszcze oddzielnego ifa dla każdego słowa, bo nie potrafisz stringa do zmiennej wczytać :/

- Rejestracja:prawie 15 lat
- Ostatnio:4 minuty
forum wariuje, stąd drugi post :/
http://img89.imageshack.us/i/bladp.jpg/
- Rejestracja:ponad 14 lat
- Ostatnio:ponad 7 lat
Dzięki za pomoc nareszcie wszystko wporzo działa, sory bo czasami jak się potem zastanowiłem to głupoty robiłem, ale ostatnio codziennie mam egzaminy i kiepsko myśle. Jeszcze raz dzięki, szczególnie tobie nobody tylko musisz chyba jeszcze <iostream> dorzucić. :)