• 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
406 wizyt
pytanie zadane 20 marca 2018 w C i C++ przez Martita Bywalec (2,470 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,470 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,470 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ź 346 wizyt
pytanie zadane 2 czerwca 2018 w C i C++ przez Aleksandra Prętka Nowicjusz (120 p.)
0 głosów
1 odpowiedź 342 wizyt
0 głosów
3 odpowiedzi 334 wizyt
pytanie zadane 13 lipca 2020 w C i C++ przez Verdatonix Nowicjusz (150 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...