• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podmiana slowa w ciagu

Object Storage Arubacloud
0 głosów
123 wizyt
pytanie zadane 19 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)
Witam, mam nastepujace zadanie i nie wiem za bardzo jak sie do tego zabrac

1.Podmienic dowolne słowo na inne wprowadzone przez uzytkownika.

W prostym lancuchu:  "Ala ma kota , kot ma Ale"  podmienic kazde wystapienie slowa kot na np żubr.

Dodam jeszcze ze powinienem to zrobic bez uzycia zadnej funkcji z biblioteki <string.h> i <ctype.h>, ale jezeli ktos ma ochote moze rowniez rozwinac odpowiedz o kod zawierajacy funkcje z tych bibliotek(jezeli w ogole taki jest)

2 odpowiedzi

0 głosów
odpowiedź 19 grudnia 2016 przez playerony Pasjonat (15,240 p.)
wybrane 19 grudnia 2016 przez Don Corleone
 
Najlepsza
Masz powiedzmy następujący ciąg znaków:

['A', 'l', 'a', ' ', 'm', 'a', ' ', 'k', 'o', 't', 'a']

1. Przydatna by była funkcja, która zwracałaby początki i końce wystąpień wyrazów (funckja strstr bada wystąpienia danego ciągu znaków, a jej implementacje znajdziesz już w sieci),

2. "kroisz" łańcuch np. na 2 cześci jeżeli wyraz jest w środku, oczywiście pamiętając o wyrzuceniu tego co jest w środku..

3. W celu łączenia kawałków szukasz implementacji funkcji strcat.

4. Może jeszcze po drodze być przydatna funckcja strlen która zwraca długość łańcucha znaków.

5. Ciesz się wykonanym programem.

Pod tym linkiem znajdziesz nazwy innych przydatnych fukcji, które to służą do obsługi łańcucha znaków:

http://cpp0x.pl/dokumentacja/standard-C/Lancuchy-znakow-C/11

Pozdro 600
+1 głos
odpowiedź 19 grudnia 2016 przez Pajdas Mądrala (5,930 p.)
edycja 19 grudnia 2016 przez Pajdas

1. Tworzysz dynamicznie tablice (new i delete w przypadku c to malloc i free), ilość tablic które tworzysz to ilość słów a wielkość poszczególnych tablic to długość słowa, bez string.h i funkcji size() możesz to zrobić tak: szukasz znaku spacji i jak tab[i] == ' ' to wielkość tablicy to różnica "i" pomiędzy kolejnymi spacjami.

2. Posiadając już tablice z poszczególnymi słowami możesz zaminić kolejność wyświetlania słów;

std::cout<<tab3<<tab2<<tab1;

To rozwiązanie jest najprostsze i nie do końca dobre, ale jako tako działa. Co oznacz "jako tako"?

tab1='Ala';
tab2='ma';
tab3='kota';

cout<<tab3<<" "<<tab2<<" "<<tab1;

Jednak wynik programu będzie wynosić "kota ma Ala", a nie "Kot ma Ale".

1.Możesz usuwać ostatnią literę w słowie, czyli 'a':

kota - kot
żubra - żubr

2.Pierwsza litera w słowie nie jest wielka ale jeśli stworzysz jedną prostą funkcję z użyciem rzutowania typu na (char) to nie będzie problemu - jeżeli nie wiesz o co chodzi zapoznaj się z ASCII. Dodajesz więc tylko określoną wartość aby "przerobić" literę małą na wielką. Bez ctype.h będzie to trudniejsze, ale pamiętaj, że małe litery występują w określonym przedziale, więc jeden if rozwiąże problemy.

3. Aby odmienić odpowiednio imię możesz użyć zmiany litery 'a' na 'ę', ale będzie to działać tylko przy imionach kobiet,  Ania, Ela, Monika - Anię, Elę, Monikę. Przy imionach męskich musisz zastosować inną regułę dodając literę 'a' na koniec słowa.

Robert - Roberta, Mateusz - Mateusza, ALE UWAGA bo np. Wojtek - Wojtka, przy zastosowaniu reguły dla imion męskich to będzie Wojteka :)

Po zastosowaniu się to tych wszystkich zasad powinieneś napisać ten program w 25 minut MAX :)

Myślę, że pomogłem, jak nie będziesz czegoś wiedział, to napisz, z przyjemnością pomogę. laugh

Normalnie takie programy modulujące tekst stosują wielkie bazy słów i reguł gramatycznych
 

komentarz 19 grudnia 2016 przez Don Corleone Obywatel (1,210 p.)
te dynamiczne tablice to dla mnie nowosc a wskaznikow praktycznie nie uzywalem jeszcze, wiec zanim zrozumiem to co przekazales to minie troche czasu, ale i tak dziekuje :)
komentarz 19 grudnia 2016 przez Pajdas Mądrala (5,930 p.)
dużo szybciej opanujesz vector ale nie wiem czy możesz także z tego korzystać i nie jestem pewien czy jest to w c czy w c++.

Zawsze możesz stworzyć tablicę dwuwymiarową tab[30][100] :)
1
komentarz 19 grudnia 2016 przez Don Corleone Obywatel (1,210 p.)
w c

Podobne pytania

0 głosów
1 odpowiedź 880 wizyt
pytanie zadane 16 listopada 2018 w C i C++ przez bart987 Nowicjusz (140 p.)
0 głosów
1 odpowiedź 1,785 wizyt
pytanie zadane 20 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)
0 głosów
0 odpowiedzi 288 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez saintx Nowicjusz (120 p.)

92,632 zapytań

141,502 odpowiedzi

319,883 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...