Usuwanie spacji i zmiana liter na wielkie.

0

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

0

No ale że co?
Nie dostałeś przepustki do Google, dokumentacji czy może masz problemy z czytaniem?

0

http://www.asciitable.com/index/asciifull.gif

  1. Zauważ że literki są po kolei. Zarówno małe jak i duże.
  2. Zauważ więc że istnieje stałe przesunięcie między dużymi i małymi -> duże A to 65 a małe to 97. Widać że trzeba odjąć 32 żeby z małego zrobiło się duże. Analogicznie jest dla innych liter.
  3. 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.

0

Shalom okej widze te liczby ale co teraz zrobic ?

0

Teraz proponuje włączyc myślenie.

0

Okej a jak napisac zeby program wychwycil ze pojawila sie spacja na wejsciu ?

0

if(wczytany_znak==' ')

0

nosz ku.... polecam instrukcje

if(...)

. krotka i latwo ja zapamietac

0

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

0

skad sie "uczysz"? pytam powaznie bo jestem ciekawy z jakiego kursu korzystasz

0

Kurs juz skonczylem dawno :)

Okej a teraz ty odpowiedz mi na pytanie

0

a jakis link do tego kursu? a moze jakas ksiazka?

0

na Wikibooks, okej odpowiesz mi na tamto pytanie ?

0

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

0

Nigdzie w tym zadaniu nie potrzeba wczytywać do żadnej tablicy. Możesz czytać i pisać literka po literce.

0

zapytales sie "jak zrobic do tego tablice" no to podalem link. jest tyle mozliwosci wybierz ta, ktora ci sie podoba

0

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;
0

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 ?

0

Nie odpowiadajcie koledze bo to jest troll z tora.

0

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

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

0

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;

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