Napisz program, który porówna dwie tablice znaków i wypisze, która tablica ma więcej lub mniej znaków i o ile, a jeśli mają tyle samo znaków, wypisze ile mają znaków. Tablice znaków powinny być pobrane od użytkownika i wypełniane przez funkcję getline().
c++
Daje naj


Odpowiedź :

Odpowiedź:

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

   string stringTab1,stringTab2;

   

   cout<<"podaj elementy dla tablicy nr 1:\t";

   getline(cin, stringTab1);

   cout<<"podaj elementy dla tablicy nr 2:\t";

   getline(cin, stringTab2);

   

   int ile1 = stringTab1.size();

   int ile2 = stringTab2.size();

   int roznica = abs(ile1-ile2);

   

   cout<<"\nPODSUMOWANIE\n";

   if (ile1 == ile2){

        cout<<"obie tablice znaków mają tyle samo znaków: "<<ile1<<"\n";

   }

   else if(ile1>ile2) {

       cout<<"tablica nr1 ma więcej znaków, liczba znakow: "<<ile1<<"\n";

       cout<<"tablica nr2 ma mniej znakow o "<<roznica<<"\n";

   }

   else {

       cout<<"tablica nr2 ma więcej znaków,  liczba znakow: "<<ile2<<"\n";

       cout<<"tablica nr1 ma mniej znakowo: "<<roznica<<"\n";

   }

   return 0;

}

Wyjaśnienie:

na początek warto zauważyć:

  • że tablica znaków to nie to samo co tablica liczb
  • że łańcuch znaków to wszystkie znaki alfanumeryczne (litery,liczby) ale także białe znaki (spacje) i znaki specjalne (@,# itp)
  • że nie znamy liczby elementów w żadnej z tablic w momencie uruchomienia programu
  • że najłatwiej jest to zrobić za pomoca łańcucha znaków (typ string, u góry jest import cstring)
  • łańcuch znaków (string) tym się różni od tablicy znaków (char*, char[]), że gdyby się przyjrzeć im dokładniej to w tekście (string) jest jeszcze dodatkowy znak końca linii (tzw. \0 - tu jets zero)
  • dlaczego o łańcuchu znaków (string) mówimy że jest tablicą? bo można dostać się do konkretnej litery podając jej indeks np. dla słowa hello literka h ma indeks 0
  • są funkcje w c++ które pozwalają policzyć liczbę znaków -> size()
  • funkcja abs zwraca wartość absolutną, dzięku temu nie trzeba martwić się kolejnością odejmowanych wartości gdy liczymy różnicę między nimi
  • jak widać mamy 3 możliwe przypadki: tyle samo znaków, mniej lub więcej

Zobacz obrazek Ksin9
Zobacz obrazek Ksin9