Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pętla i stringi.

Ostatnio zmodyfikowano 2015-11-24 20:40
Autor Wiadomość
Morksil
Temat założony przez niniejszego użytkownika
Pętla i stringi.
» 2015-11-24 16:26:02
Witam!
Mam problem z nastepujacym zadaniem:
Wczytywać napisy aż do napotkania dwóch kolejnych napisów kończących się wielką literą i dłuższych od pierwszego wczytanego napisu. Potem wczytać jeszcze n napisów (n należy przedtem wczytać). Wydrukować średnią długość wszystkich wczytanych napisów oraz ostatni wczytany napis.


Oto kod:


#include<iostream>
#include<string>
using namespace std;
int main()
{
    unsigned int dlugosc;
    string aktualny,poprzedni;
    int licznik=3;
    double suma=0;
    cout << "Wpisz pierwszy napis: ";
    cin  >> aktualny;
    suma+=aktualny.size();
    dlugosc=aktualny.size();
    cout << "Wpisz kolejny napis: ";
    cin  >> poprzedni;
    suma+=poprzedni.size();
    cout << "Wpisz kolejny napis: ";
    cin  >> aktualny;
    suma+=aktualny.size();

    while(aktualny.size() <=dlugosc && poprzedni.size() <=dlugosc && (aktualny[aktualny.size()-1] < 'A' || aktualny[aktualny.size()-1] > 'Z'
          )&& (poprzedni[poprzedni.size()-1] < 'A' || poprzedni[poprzedni.size()-1] >'Z'))
          {
              poprzedni=aktualny;
              cout << "Podaj kolejny napis: ";
              cin  >> aktualny;
              suma+=aktualny.size();
              licznik++;
              cout << poprzedni<< endl;
              cout << aktualny<<endl;

          }
    return 0;
}

Chodzi o to, że wyrzuca mnie z pętli zawsze gdy podam jeden napis z zakończeniem dużą literą i tak samo jest z długością wyrazów, wystarczy przekroczyc dlugość jednego i wyrzuca z pętli a chciałbym, żeby było tak jak jest w poleceniu. Próbowałem sam coś wykombinować, niestety bezowocnie. Prosze o jakąś wskazówkę.
P-140707
Morksil
Temat założony przez niniejszego użytkownika
Odpowiedź.
» 2015-11-24 20:28:53
Jeśli kogoś bedzie w przyszłości interesowało to zadanie  poniżej zamieszczam  kod z rozwiązaniem.

Oto kod:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    unsigned int dlugosc;
    string aktualny,poprzedni;
    int licznik=3;
    double suma=0;
    cout << "Wpisz pierwszy napis: ";
    cin  >> aktualny;
    suma+=aktualny.size();
    dlugosc=aktualny.size();
    cout << "Wpisz kolejny napis: ";
    cin  >> poprzedni;
    suma+=poprzedni.size();
    cout << "Wpisz kolejny napis: ";
    cin  >> aktualny;
    suma+=aktualny.size();
    while((aktualny.size() <=dlugosc || poprzedni.size() <=dlugosc) && (aktualny[aktualny.size()-1] < 'A' || aktualny[aktualny.size()-1] > 'Z'
          )|| (poprzedni[poprzedni.size()-1] < 'A' || poprzedni[poprzedni.size()-1] >'Z'))
          {
              poprzedni=aktualny;
              cout << "Podaj kolejny napis: ";
              cin  >> aktualny;
              suma+=aktualny.size();
              licznik++;
              cout << poprzedni<< endl;
              cout << aktualny<<endl;

          }
    return 0;
}

P-140735
carlosmay
» 2015-11-24 20:40:07
C/C++
#include<iostream>
#include<string>
using namespace std;
int main()
{
    unsigned int dlugosc;
    string aktualny, poprzedni;
    int licznik = 3;
    double suma = 0;
    cout << "Wpisz pierwszy napis: ";
    cin >> aktualny;
    suma += aktualny.size();
    dlugosc = aktualny.size();
    cout << "Wpisz kolejny napis: ";
    cin >> poprzedni;
    suma += poprzedni.size();
    cout << "Wpisz kolejny napis: ";
    cin >> aktualny;
    suma += aktualny.size();
    while(( aktualny.size() <= dlugosc || poprzedni.size() <= dlugosc ) &&( aktualny[ aktualny.size() - 1 ] < 'A' || aktualny[ aktualny.size() - 1 ] > 'Z'
    ) ||( poprzedni[ poprzedni.size() - 1 ] < 'A' || poprzedni[ poprzedni.size() - 1 ] > 'Z' ) )
    {
        poprzedni = aktualny;
        cout << "Podaj kolejny napis: ";
        cin >> aktualny;
        suma += aktualny.size();
        licznik++;
        cout << poprzedni << endl;
        cout << aktualny << endl;
       
    }
    return 0;
}
P-140738
« 1 »
  Strona 1 z 1