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

question-closed Opis działania programu

VPS Starter Arubacloud
0 głosów
534 wizyt
pytanie zadane 20 marca 2018 w C i C++ przez Martita Bywalec (2,520 p.)
zamknięte 31 marca 2018 przez Martita

Proszę o opisanie działania programu każdego wiersza. Już trochę opisałam w komentarzach, ale niestety nie wszystko wiem jak opisać. Program liczy ilość wprowadzonych wyrazów w tekście. Tekst był pisany w konsoli.

Nie wiem jak opisać 
getline(cin, wyraz)
for (int i = 0; i < słowo; i++)

cout << "Podaj tekst " << endl; // Prosi o podanie tekstu
		string wyraz; // Definiuje klasę string
		getline(cin, wyraz);
		int słowo = wyraz.length(); // Sprawdza ilość wyrazów.
		int x = 1; // Definiuje wartość zmiennej x
		if (słowo > 0) { // Odczytuje wyraz, gdy jest minimum 1 znak
			for (int i = 0; i < słowo; i++) {
				if (wyraz[i] == ' ') { // Sprawdza czy wyraz jest spacją
					x++; // + wyraz
				}
			}
		}
		else // Jeżeli nie ma wyrazów 
			x = 0; // nie + wyraz
		cout << "Ilość wyrazów wynosi " << x << endl;
	}

 

komentarz zamknięcia: Nie otrzymałam satysfakcjonującej odpowiedzi.

3 odpowiedzi

0 głosów
odpowiedź 20 marca 2018 przez Secrus Nałogowiec (32,880 p.)
cout << "Podaj tekst " << endl; // Prosi o podanie tekstu
string wyraz; // Definiuje zmienną typu string
getline(cin, wyraz); //pobiera tekst wpisany na standardowe wejście do zmiennej wyraz
int słowo = wyraz.length(); // zapisuje do zmiennej słowo ilość wprowadzonych znaków.
int x = 1; // Definiuje wartość zmiennej x
if (słowo > 0) { // Odczytuje wyraz, gdy jest minimum 1 znak
   for (int i = 0; i < słowo; i++) {
        if (wyraz[i] == ' ') { // Jeżeli wyraz jest spacją to:
            x++; // zwiększ ilość wyrazow
        }
   }
}
else // Jeżeli nie ma wyrazów 
   x = 0; // nie + wyraz
        cout << "Ilość wyrazów wynosi " << x << endl;
}

Tak by to można opisać. Ciężko jednak stwierdzić czy  można to zrobić lepiej (widzę pewne dziury, ale może tak ma być), jeżeli nie wiadomo co program ma robić. Dodaj treść zadania lub opisz co próbujesz osiągnąć.

komentarz 20 marca 2018 przez Aisekai Nałogowiec (42,190 p.)
edycja 20 marca 2018 przez Aisekai
Odnośnie linii 3:

getline nie pobiera tekstu. Tzn pobiera, ale nie w taki "zwykły" sposób jaki robi to cin>>. getline pobiera całą linię z strumienia wejścia (w tym przypadku cin, bo może jeszcze np plik być strumieniem wejścia) i zapisuje ją w zmiennej typu string (wyraz).
komentarz 20 marca 2018 przez Secrus Nałogowiec (32,880 p.)
Uprościłem to trochę, ale gdyby do każdej operacji tak się przyczepiać to z tego krótkiego kodu można by powieść pisać...
0 głosów
odpowiedź 22 marca 2018 przez Beginer Pasjonat (22,110 p.)

Opis działania programu:

Program wczytuję całą linię tekstu napisanego w konsoli .np

Ala ma burego kota

I zapisuje w zmiennej  'wyraz'.

Następnie oblicza ile pojedynczych znaków zawiera cały tekst - czyli zm. 'wyraz'.  (Jeśli dobrze policzyłem jest ich 18).

W pętli for program "skanuje"  cały tekst w poszukiwaniu spacji. Jeśli natrafia na pierwszą spację,  to zmienna ''x' zwiększa się o jeden, czyli program zliczył pierwszy wyraz ''Ala'. Tak postępuje do końca tekstu.

Wprowadziłem też drobne zmiany w opisie kodu (poniżej).


cout << "Podaj tekst " << endl; // Prosi o podanie tekstu
        string wyraz;           // Definiuje klasę string
        getline(cin, wyraz);    //wczytuje cala linie tekstu
        int słowo = wyraz.length(); //oblicza ilość znaków w tekscie
        int x = 1;          //inicjuje wartość zmiennej x
        if (słowo > 0) {    // odczytuje wyraz, gdy jest minimum 1 znak
            for (int i = 0; i < słowo; i++) {
                if (wyraz[i] == ' ') {    //sprawdza czy wyraz jest spacją
                    x++; //zwiększa o jeden wartosc x
                }
            }
        }
        else //jezeli nie ma wyrazow 
            x = 0;
        cout << "Ilość wyrazów wynosi " << x << endl;
    }

 

komentarz 22 marca 2018 przez Beginer Pasjonat (22,110 p.)

Poniżej masz uruchomiony program:

#include <iostream>
#include <string.h>
using namespace std;

        int main()
        {
        cout << "Podaj tekst: " << endl;     //prosi o podanie tekstu
        string wyraz;                        //deklaruje zmienna string
        getline(cin, wyraz);                 //wczytuje cala linia tekstu
        int slowo = strlen(wyraz.c_str());   //oblicza ilosc znakow w tekscie
        int x = 1;         //inicjeje wartość zmiennej x
        if (slowo > 0) {   //odczytuje wyraz, gdy jest minimum 1 znak
            for (int i = 0; i < slowo; i++) {
                if (wyraz[i] == ' ') {      //sprawdza czy wyraz jest spacją
                    x++;  //zwieksza wartosc o jeden
                }
            }
        }
        else   //jezeli nie ma wyrazów
            x = 0;
        cout << "\nIlosc wyrazow wynosi: " << x << endl;

        return 0;
    }

 

komentarz 22 marca 2018 przez Martita Bywalec (2,520 p.)

@Beginer, Program nie liczy znaków tylko ilość wyrazów np. Ala ma kota to 3 wyrazy.

komentarz 22 marca 2018 przez Beginer Pasjonat (22,110 p.)
Program liczy ilość wyrazów - ponieważ ma liczyć wyrazy.

Ale wcześniej funkcja:  strlen(wyraz.c_str())  liczy (podaje) ilość znaków w całym zdaniu. (Program musi znać długość tekstu.)
0 głosów
odpowiedź 24 marca 2018 przez Martita Bywalec (2,520 p.)

Program liczy ilość wprowadzonych wyrazów w tekście. Tekst był pisany w konsoli.

Nie wiem jak opisać  
for (int i = 0; i < słowo; i++)

Proszę o pomoc

komentarz 24 marca 2018 przez Beginer Pasjonat (22,110 p.)
W pętli for zmienna int i  przyjmuje najpierw wartość 0, wykonując instrukcje pętli. Po każdym przebiegu pętli wartość zmiennej kontrolnej int i. zwiększa się o jeden (i++ lub równoważne i +=1). Pętla iteruje (działa) dopóki warunek int i. mniejsze 'slowo' jest spełniony. (W zmiennej 'slowo' jest obliczona wcześniej ilość znaków w całym zdaniu.)

Podobne pytania

–2 głosów
1 odpowiedź 417 wizyt
pytanie zadane 2 czerwca 2018 w C i C++ przez Aleksandra Prętka Nowicjusz (120 p.)
+1 głos
0 odpowiedzi 106 wizyt
0 głosów
1 odpowiedź 376 wizyt

93,018 zapytań

141,988 odpowiedzi

321,281 komentarzy

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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...