Czytanie tekstu[C++]

0

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 :)

0

A nie łaska pokazać nam JAK ten tekst czytasz?

0

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ę.

0

LoL perełka jak dla mnie xD

0

genialne na swój sposób

0

a macie pomysł żeby czytało cały tekst? Pls pomóżcie ja już nie daje rady. Jak wpisuje tekst i karze potem czytać to czyta ostatnią literę

0

jak już się z kogoś śmiejecie to powiedźcie chociaż co jest źle,

wczytujesz znak a nie tekst, (zamiast char musisz użyć stringa )to po pierwsze, a po drugie to chyba w ogóle nie wiesz o co chodzi bo te ify sugerują że powinieneś wczytywać jeden znak a nie tekst.

0

O mamuniu, pikne! oO

string tekst;
cin >> tekst;
sndPlaySound(tekst + ".wav", SND_ASYNC); system("cls"); czytacz();

nie lepiej...?

0

Perełka ?

0

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

0
#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...

0

wyświetla się ten sam błąd co wyżej pisałem

0

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;

}

0

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.

0

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

0

//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 :>

PlaySound("nooooooooooooooo.wav",NULL,SND_SYNC|SND_FILENAME|SND_NODEFAULT);
0
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ć :/

0

forum wariuje, stąd drugi post :/
http://img89.imageshack.us/i/bladp.jpg/

0

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ć. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1