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

obliczenie długości łańcucha

42 Warsaw Coding Academy
0 głosów
7,036 wizyt
pytanie zadane 4 maja 2015 w C i C++ przez dichloroetylobenzen Użytkownik (850 p.)

hej, potrzebuje napisać program, który obliczy długość łańcucha. I teraz nie wiem jak to zrobić wtedy kiedy tekst ma wpisywać użytkownik, dokładniej to nie wiem jak zadeklarować taką zmienną, która będzie przechowywała ciąg znaków jeśli nie wiem ile tych znaków użytkownik wprowadzi, poczatek funkcji obliczajecej długość ma wygladac w ten sposob: 

int oblicz_dl (char *napis)

 

podpowie ktoś jak powinnam zadeklarować odpowiadnią zmienną (w main'ie)?

pozdrawiam

2 odpowiedzi

+2 głosów
odpowiedź 4 maja 2015 przez hit02 Nałogowiec (33,970 p.)

W C-stringi (to co masz w argumencie najpewniej jest C-stringiem smiley) są zakończone znakiem NULL (zero binarne) więc wystarczy pętelka licząca ilość znaków przed napotkaniem zera.

Co do funkcji bibliotecznych, to w C masz funkcję strlen(), a w C++ w klasie string metodę length().

Zmienna przechowująca łańcuch, to w C będzie tablica char, a w C++ będzie to wspomniany string.

komentarz 4 maja 2015 przez dichloroetylobenzen Użytkownik (850 p.)

ok zrobiłam coś takiego 

int oblicz_dl (string napis)
{ int dlugosc = napis.length(); 
    cout << "Dlugosc podanego wyrazu: " << dlugosc +1 << endl;
    return 0;
}

int main()
{ string napis;
cout<<"podaj tekst: "<<endl;
cin.ignore();
getline(cin, napis);
oblicz_dl (napis);
    return 0;
}

i działa, tylko chodzi mi o to, że miałam zacząc tą linijką którą napisałam w pierwszym poście (ze wskaźnikiem), z tego co piszesz rozumiem, że char jest w C, więc skoro miałam to zrobić w c++ to znaczy że prowadzący od którego dostałam to zadanie się pomylił czy można to jakoś inaczej zrobić? :)

komentarz 4 maja 2015 przez niezalogowany

można tak jak napisał  hit0 pętlami przeszukać tablice.

komentarz 5 maja 2015 przez hit02 Nałogowiec (33,970 p.)
Prowadzący się nie pomylił, ponieważ C można używać w C++, więc możesz to zrobić. Moim zdaniem w C++ nieco poprawniejszym zapisem jest użycie stringa, ale nikt nie zabrania kożystać z C-stringów.
komentarz 5 maja 2015 przez JachuPL Bywalec (2,950 p.)

warto też nadmienić, że std::string posiada konstruktor przyjmujący wskaźnik na napis. Robimy sobie coś takiego:

char* napis = "Ala ma kota";
std::string nowy(napis);
std::cout << nowy.length() << std::endl;

Na ekranie zobaczymy długość napisu "Ala ma kota", czyli liczbę 11

 

–1 głos
odpowiedź 4 maja 2015 przez niezalogowany
komentarz 4 maja 2015 przez dichloroetylobenzen Użytkownik (850 p.)
tak, znam te funkcje, ale nie o to mi chodziło. Bo jeśli miałabym konkretny ciag znakow string napis to wtedy nie widzę problemu, ale chodzi mi o to że nie wiem jak zadeklarowac i obliczyc kiedy mam ciąg znaków, który nie wiem jak będzie długi i który jest deklarowany jako char
komentarz 4 maja 2015 przez niezalogowany
1. Deklarujesz jakąś zmienną typu string

2  Do zmiennej ładujesz łańcuch

3. Zmienna+length = długość łańcucha
komentarz 4 maja 2015 przez niezalogowany
w trzech linijkach można to zamknąc jeśli chodzi o stringi

Podobne pytania

0 głosów
1 odpowiedź 639 wizyt
pytanie zadane 13 stycznia 2020 w C# przez Mariusz M Obywatel (1,670 p.)
0 głosów
2 odpowiedzi 1,229 wizyt
pytanie zadane 9 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 676 wizyt

93,379 zapytań

142,380 odpowiedzi

322,533 komentarzy

62,734 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...