Omówienie zadania “Wiersz”

Omówienie zadania “Wiersz”

Szczegółowe omówienie zadania  Wiersz:
https://youtu.be/NAPLYSpHlNU?t=1708

Zadanie przygotowuje do Olimpiady Informatycznej.
Ćwiczy operacje na tekstach, wczytywanie całych linii,  …
Poniżej kod wzorcowy do zadania użyty w powyższym omówieniu:

#include <bits/stdc++.h>
using namespace std;
string samogloski = “aeiouy”;
int CzySamogloska (char znak) {
 int i;
 for (i=0; i<samogloski.size(); ++i)
    if ( samogloski[i] == znak )
       return true;
 return false;
}
int IleSamoglosek (string wers) {
 int i, liczba_samoglosek;
 liczba_samoglosek = 0;
 for (i=0; i<wers.length(); ++i) {
    if ( CzySamogloska( wers[i] ) == 1 ) {
       ++liczba_samoglosek;
}
 }
 return liczba_samoglosek;
}
void UsunSpacje (string &wers) {
 string wers_bez_spacji;
 int i;
 for (i = 0; i < wers.size(); ++i) {
    if ( wers[i] != ‘ ‘) {
       wers_bez_spacji += wers[i];
}
 }
 wers = wers_bez_spacji;
}
int CzyTakieSameKoncowki (string wers1, string wers2, int dlugosc_rymowania) {
 int i;
  for (i = 0; i < dlugosc_rymowania; ++i) {
    if (wers1[wers1.size() – i – 1] != wers2[wers2.size() – i – 1]) {
      return 0;
}
  }
 return 1;
}
int main() {
 ios_base::sync_with_stdio(0);
 cin.tie(0);
 cout.tie(0);
 int liczba_par_wersow, dlugosc_rymowania;
 int liczba_rymujacych_par;
 string wers1, wers2;
 int i;
 cin >> liczba_par_wersow;
 cin >> dlugosc_rymowania;
 getline(cin, wers1);
 liczba_rymujacych_par = 0;
 for (i=0; i<liczba_par_wersow; ++i) {
    getline(cin, wers1);
    getline(cin, wers2);
    UsunSpacje(wers1);
    UsunSpacje(wers2);
    if (wers1.size() < dlugosc_rymowania)
  continue;
    if (wers2.size() < dlugosc_rymowania)
  continue;
if ( CzyTakieSameKoncowki(wers1, wers2, dlugosc_rymowania) == 0 )
  continue;
    if ( IleSamoglosek(wers1) != IleSamoglosek(wers2) )
  continue;
++liczba_rymujacych_par;
  }
  cout << liczba_rymujacych_par << “\n”;
  return 0;
}

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz