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