Rozwiązywanie arkuszy maturalnych z informatyki

Z podanych rozwiązań należy korzystać dopiero po samodzielnym rozwiązaniu danego zadania w celu sprawdzenia poprawności wyniku. Rozwiązania nie są optymalne (nie zostały sprawdzone z kluczem odpowiedzi, ponieważ na dzień dzisiejszy klucz ten nie został jeszcze opublikowany w Internecie).

 

Poziom podstawowy

 

Zadanie 4. Palindromy (10 pkt)

Palindromem nazywamy słowo, które czytane od lewej i od prawej strony jest takie samo.

Na przykład palindromami są słowa:
 

JABFDFBAJ

HAJAHAJAH

ABBA
 

Słowo JANA nie jest palindromem.
 

W pliku dane.txt umieszczono w kolejnych wierszach 1000 słów o długościach od 2 do 25 znaków, składających się z wielkich liter A, B, C, D, E, F, G, H, I, J. Napisz program, który przegląda słowa zapisane w pliku dane.txt i wypisuje te z nich, które są palindromami, po jednym w wierszu. Kolejność wypisywania palindromów powinna być taka sama jak w pliku z danymi.

 

Uwaga: plik dane.txt należy umieścić w tym samym katalogu co program exe. Program uruchamiamy z poziomu okna konsoli, a nie z IDE.

 

Program C++:

// Zadanie 4
// Wyszukiwanie palindromów
//-------------------------

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
  ifstream dane;
  string palindrom;
  int i,j;
  bool test;

  dane.open("dane.txt");
  while(dane.good())
  {
      getline(dane,palindrom);
      test = true;
      i = 0; j = palindrom.length() - 1;
      while(i < j)
        if(palindrom[i++] != palindrom[j--])
        {
            test = false;
            break;
        }
      if(test) cout << palindrom << endl;
  }
  dane.close();
  return 0;
}

 

Program Pascal:

{ Zadanie 4
  Wyszukiwanie palindromów
  ------------------------}

program palindromy;
var
  dane      : text;
  palindrom : string;
  i,j       : integer;
  test      : boolean;

begin
  assign(dane,'dane.txt');
  reset(dane);
  while not eof(dane) do
  begin
    readln(dane,palindrom);
    test := true;
    i := 1; j := length(palindrom);
    while i < j do
    begin
      if palindrom[i] <> palindrom[j] then
      begin
        test := false;
        break;
      end;
      inc(i); dec(j);
    end;
    if test then writeln(palindrom);
  end;
  close(dane);
end.

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2021 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe