Chce napisac program ktory dostanie tekst, potem usunie z niego wszystkie spacje a kazda litere ktora byla przed spacja zamieni na wielka, jak moglbym to zrobic ? Bo nie wiem np jak zrobic zeby program rozpoznal jaka to litera i ja zamienil na jej wielki odpowiednik
No ale że co?
Nie dostałeś przepustki do Google, dokumentacji czy może masz problemy z czytaniem?
http://www.asciitable.com/index/asciifull.gif
- Zauważ że literki są po kolei. Zarówno małe jak i duże.
- Zauważ więc że istnieje stałe przesunięcie między dużymi i małymi -> duże
A
to 65 a małe to97
. Widać że trzeba odjąć 32 żeby z małego zrobiło się duże. Analogicznie jest dla innych liter. - Jest też po prostu toupper() z <ctype.h>
@Cjvq nie bardzo rozumiem jaki jest sens tych twoich tematów. Bo programowania ani myślenia się w ten sposób nie nauczysz, jak będziesz o wszystko pytał i czekał na gotowce.
Shalom okej widze te liczby ale co teraz zrobic ?
Teraz proponuje włączyc myślenie.
Okej a jak napisac zeby program wychwycil ze pojawila sie spacja na wejsciu ?
if(wczytany_znak==' ')
nosz ku.... polecam instrukcje
if(...)
. krotka i latwo ja zapamietac
dobra okej jestem blisko, teraz powiedzcie mi tylko jeszcze, nie wiem jakiej dlugosci oraz ile slow podam, jak zrobic do tego tablice ? No i jak wczytac to slowo, bo jesli nie wiem jakiej dlugosci slowo chce podac to raczej nie w petli for...
skad sie "uczysz"? pytam powaznie bo jestem ciekawy z jakiego kursu korzystasz
Kurs juz skonczylem dawno :)
Okej a teraz ty odpowiedz mi na pytanie
a jakis link do tego kursu? a moze jakas ksiazka?
na Wikibooks, okej odpowiesz mi na tamto pytanie ?
Oh bo ja pytalem jak alokowac pamiec xD
Zanim zaczniesz miec pretensje to zrozum o co pytam, pytalem jak wczytac te zdanie do tablicy skoro nie wiem jak dlugie ono bedzie wiec nie moge zrobic tego w petli for, pewnie getcharem mozna jakos ale nie wiem jak dlatego sie pytam, jak zaalokowac wiem
Nigdzie w tym zadaniu nie potrzeba wczytywać do żadnej tablicy. Możesz czytać i pisać literka po literce.
zapytales sie "jak zrobic do tego tablice" no to podalem link. jest tyle mozliwosci wybierz ta, ktora ci sie podoba
No
nie wiem jak to robic literka po literce, bo jesli w zdaniu wystapi
spacja to trzeba to gdzies zapisac i napisac zeby nastepna z kolei byla
duza, nie wiem jak to zrobic bez tablicy na razie probuje w ten desen:
int main(void){
char tab[100];
char znak;
int a=0,i=0;
while((znak=getc(stdin))!=EOF){
if(a==1)
toupper(znak);
a=0;
if(znak!=' ')
tab[i]=znak;
if(znak==' ')
a=1;
++i;
Nie rozumiem twojego linku jakby mial mi pomoc... jest tam funkcja ktora robi z duzej litery mala tak ? to ma mi pomoc ? czy przeoczylem cos tam ?
Nie odpowiadajcie koledze bo to jest troll z tora.
Sam jestes trollem bo ja probuje rozwiazac problem a ty przeszkadzasz i jeszcze c**** usunales kod Siga i go nie zapisalem, na dodatek usuwasz moje posty. Sig powiedz jak to cin.get przetlumaczyc na C i bedzie git :)
Cjjvq napisał(a):
Sam jestes trollem bo ja probuje rozwiazac problem a ty przeszkadzasz i jeszcze c**** usunales kod Siga i go nie zapisalem, na dodatek usuwasz moje posty. Sig powiedz jak to cin.get przetlumaczyc na C i bedzie git :)
I dodatkowo je modyfikuje, w temacie w którym podałem ci kod którego raczej nie zrozumiesz nie było mowy o jakimkolwiek kursie czy też książce.
ps zaczynam żałować że specjalnie dla ciebie nie zrobiłem tego zadania ze SPOJ-a w pythonie. teraz jest w C++, języku na tyle zbliżonym do C że być może uda ci się go przerobić a nawet zgadnąć co i na co zamienić żeby działał.
Jak chcesz gotowca takiego wiesz... by tylko działał to masz:
std::string tekst = "hasta la vista babe ";
for (auto i = tekst.begin(); i != tekst.end(); ++i) {
if ((*i) == ' ') {
auto nextchar = i + 1;
if (nextchar != tekst.end() && (*nextchar > 'a' && (*nextchar) < 'z')) {
*nextchar -= 32;
}
tekst.erase(i);
--i;
}
}
Jeżeli nie korzystasz z C++11, to zamień auto na std::iterator
Jeżeli chcesz, by pierwszy znak w stringu był również z wielkiej litery, to możesz dodać jeszcze przed pętlą coś takiego:
if (!tekst.empty() && tekst.at(0) > 'a' && tekst.at(0) < 'z') tekst.at(0) -= 32;