Błagam, proszę o pomoc chodziaż w jednym zadaniu!! Jedno zadanie mi wystarczy
język programowania: Python
treść:

Zadanie 1
Napisz aplikację konsolową, która będzie pobierała z klawiatury liczbę całkowitą a na wyjściu wyświetli wszystkie możliwe sposoby wyrażenia tej liczby przez wstawienie do ciągu znaków 1234567890 plus lub minus czyli np. 12+34+567-890=-277
(dowiedziałam się że w tym zadaniu potrzebna jest znajomość systemów liczbowych)

Zadanie 2
Wśród słów palindromami nazywamy słowa, które czytane od przodu i wspak są takie same. Prawie palindromem będziemy nazywać słowo, które po usunięciu dokładnie 1 litery może zostać palindromem (jeśli tylko usuniemy właściwą literę).
Napisz program, który wczyta słowa z pliku slowa.txt* i wypisze na ekranie tylko te z nich, które są palindromami lub prawie palindromami.
Program powinien działać poprawnie dla słów co najmniej 3-literowych. Program powinien wypisać wynikowe słowa w tej samej kolejności w jakiej występowały w pliku wejściowym. Napisz jakie operacje są kluczowe dla złożoności czasowej w tym problemie oraz określ złożoność czasową swojego programu.
*plik slowa.txt należy stworzyć samemu

Zadanie 3
Liczby bliźniacze są to dwie liczby pierwsze, których różnica wynosi 2. Napisz program podający dla zadanego zakresu liczby pierwsze, które nie są bliźniacze.
Program powinien przyjmować od użytkownika liczbę naturalną i generować wszystkie liczby pierwsze, które nie należą do zbioru liczb bliźniaczych i które nie przekraczają liczby podanej przez użytkownika.


Będę bardzo wdzięczna za chodziaż jedno z nich, bo męczę się z tym od dwóch tygodni. ​



Odpowiedź :

REGNAD

Odpowiedź:

Zad 2

#include <iostream>

#include <string>

#include <algorithm>

#include <fstream>

bool isPalindrome(const std::string& word){

   return std::equal(word.begin(), word.begin() + word.length() / 2, word.rbegin());

}

bool isAlmostPalindrome(const std::string& word){

   std::string testWord = word;

   for(int i = 0; i < word.length(); i++){

       testWord.erase(i, 1);

       if(isPalindrome(testWord)){

           return true;

       }

       testWord = word;

   }

   return false;

}

void printFromFile(const std::string &fileName){

   std::ifstream file(fileName);

   if(file.is_open()){

       std::string word;

       while(file >> word){

           if(isAlmostPalindrome(word) || isPalindrome(word)){

               std::cout << word << std::endl;

           }

       }

   }else{

       std::cout << "Nie mozna otworzyc pliku";

   }

}

int main() {

   printFromFile(R"(sciezka do pliku)");

   

   return 0;

}

Wyjaśnienie:

Dane w pliku:

kajak

abc

oko

okno

worek

anna

Dane wyjściowe:

kajak

oko

okno

anna

Jak widzisz zrobione w c++. Mam nadzieję że nie jest to wielkim problemem. Złożoność czasowa w najgorszym wypadku to O(N^2). Zależy w jakim miejscu w wyrazie będzie ta dodatkowa litera do usunięcia. Ja czegoś nie rozumiesz to wytłumaczę i jak będę miał więcej czasu to zrobię jeszcze to 3