Pomoc w poprawieniu programu

0

Hej, potrzebuje pomocy w naprawieniu tego programu. Po uruchomieniu wyświetla się masa błędów, a ja nie potrafię ich naprawić. Od razu poinformuje, że nie znam się na programowaniu i pisanie uwag w stylu "musisz zmienić komendę" itp nie będą mi pomocne bo po prostu nie rozumiem ich. Moja prośba to poprawienie kodu programu tak aby działał.

Jak ma wyglądać program/co ma robić:
użytkownik podaje tekst jawny, zapisany bez spacji, a program będzie szyfrować test wybranym przez użytkownika
szyfrem: albo metodą kolumnową, albo szyfrem Cezara. Wybór szyfru powinien być
dokonywany już po uruchomieniu programu

to co udało mi się napisać ale nie działa:

#include<iostream>
using namespace std;
int main() {
    cout << "WYBIERZ: 1- SZYFR CEZARA, 2- SZYFR KOLUMNOWY";
    int szyfr;
    cin >> szyfr;
    switch(szyfr)
    {
        case 1:
             void szyfruj(char tab[])
             {
                 int i=0;
                 while(tab[i])
                 {
                       if(tab[i] == 'X') tab[i] = 'A'; else
                       if(tab[i] == 'Y') tab[i] = 'B'; else
                       if(tab[i] == 'Z') tab[i] = 'C'; else
                       if(tab[i]<'X') tab[i]+=3;
                       ++i;
                 }
             }
             
             int main()
             {
                 char tab[1001]; //tablica znaków - max 1000 znaków
                 cout<<"Podaj wyraz składający się z dużych liter: ";
                 cin>>tab;
                 szyfruj(tab); //szyfrowanie
                 cout<<"Po zaszyfrowaniu: "<<tab<<endl;
                  
             }
             
        break;
        case 2:
             string szyfrowanieSymetryczne (string wyraz, int n, int klucz[])
             {
                 int wiersze, k{0};                      // k -> numer pozycji na stringu
                 if      (wyraz.size()%n==0) wiersze=wyraz.size()/n;
                 else if (wyraz.size()%n!=0) wiersze=wyraz.size()/n+1;
                 
                 char tab[wiersze][n];
                 
                 ///////// INICJALIZACJA TABLICY (WYPELNIENIE X'AMI) //////
                 for (int i=0; i<wiersze; i++)
                 {
                     for (int j=0; j<n; j++)
                     {
                         tab[i][j]='X';
                     }
                 }
                 
                 //////// WLASCIWE WYPELNIENIE TABLICY ////////
                 for (int i=0; i<wiersze; i++)
                 {
                     for (int j=0; j<n&&k<wyraz.size(); j++, k++)
                     {
                         tab[i][j] = wyraz[k];
                     }
                 }
                 
                 /////// WYSWIETLENIE TABLICY //////
                 for (int i=0; i<wiersze; i++)
                 {
                     for (int j=0; j<n; j++)
                     {
                         cout<<tab[i][j]<<'\t';
                     }
                     cout<<endl;
                 }
                 
                 /////// SZYFROWANIE TABLICY ////////
                 string wynik{""};
                 
                 for (int i=0; i<n; i++)
                 {
                     int k = klucz[i];
                     for (int j=0; j<wiersze; j++)
                     {
                         wynik+=tab[j][k];
                     }
                 }
                 
                  return wynik;
               
             }
         
         int main ()
         {
             string wyraz;
              int n = 3;                              // n -> liczba kolumn
              int klucz[n]{2,1,0};                    // klucz -> 2|1|0
              
               cout<<"PODAJ WYRAZ: "; cin>>wyraz;
               for (auto & c: wyraz) c = toupper(c); //konwersja na wielkie litery
               
                 cout<<szyfrowanieSymetryczne(wyraz, n, klucz);
         }
    }
    return 0
}
0

Po uruchomieniu wyświetla się masa błędów

Jakie to błędy?

0

screenshot-20230225162953.png

2

No ale ci przecież sam pisze, że definicja funkcji nie jest tutaj dozwolona.

W C++ dawno pisałem (i nie pamiętam już, czy można w nim pisać zagnieżdżone funkcje, czy nie), ale ja bym wydzielił ten kod do zewnętrznych funkcji deklarowanych poza funkcją main. No i zmieniłbym nazwę wewnętrznych funkcji, żeby nie było kilka funkcji o takiej samej nazwie main.

Czyli teraz twój kod wygląda tak:

int main() {
    // ...
        case 1:
             void szyfruj(char tab[])
              // ...
             int main()
             {
                char tab[1001]; //tablica znaków - max 1000 znaków             

wywaliłbym funkcję szyfruj poza funkcję main:

int szyfruj(char tab[])
{
   //.... dalszy ciąg funkcji szyfruj
}
int szyfruj_main(char tab[])
{
   char tab[1001]; //tablica znaków - max 1000 znaków         
   // ... dalszy ciąg 
}

int main() {
    // ... główna funkcja main

No a w case 1: wywoływałbym właśnie tę funkcję, co była wewnętrzną funkcją main.

 case 1:
     szyfruj_main();
     break;

Wydaje mi się, że próbujesz skopiować jakieś gotowe przykłady programów skądś bez zrozumienia, w jaki sposób działa switch/case i do czego są funkcje. Bo teraz w gałęziach case masz deklaracje funkcji, które nawet jeśli byłyby poprawnym kodem, to w zasadzie nie działałoby to (bo funkcje trzeba jeszcze wywołać)

6
Annuszka napisał(a):

Od razu poinformuje, że nie znam się na programowaniu i pisanie uwag w stylu "musisz zmienić komendę" itp nie będą mi pomocne bo po prostu nie rozumiem ich. Moja prośba to poprawienie kodu programu tak aby działał.

Od razu poinformuję, że nie znam się na wyłudzaniu gotowców i pisanie uwag w stylu „jak nie chesz pomóc, to nie pisz” itp. nie będą mi pomocne, bo po prostu nie rozumiem ich. Moja prośba to przelanie 60 zł na wskazane przeze mnie konto, Blikiem lub innym przelewem natychmiastowym.

0
LukeJL napisał(a):

No ale ci przecież sam pisze, że definicja funkcji nie jest tutaj dozwolona.

W C++ dawno pisałem (i nie pamiętam już, czy można w nim pisać zagnieżdżone funkcje, czy nie), ale ja bym wydzielił ten kod do zewnętrznych funkcji deklarowanych poza funkcją main. No i zmieniłbym nazwę wewnętrznych funkcji, żeby nie było kilka funkcji o takiej samej nazwie main.

Czyli teraz twój kod wygląda tak:

int main() {
    // ...
        case 1:
             void szyfruj(char tab[])
              // ...
             int main()
             {
                char tab[1001]; //tablica znaków - max 1000 znaków             

wywaliłbym funkcję szyfruj poza funkcję main:

int szyfruj(char tab[])
//.... dalszy ciąg funkcji szyfruj
int main() {
    // ...

to samo zrobiłbym z wewnętrzną funkcją main, tylko nazwałbym ją inaczej. No a w case 1: wywoływałbym właśnie tę funkcję, co była main.

Wydaje mi się, że próbujesz skopiować jakieś gotowe przykłady programów skądś bez zrozumienia, w jaki sposób działa switch/case i do czego są funkcje. Bo teraz w gałęziach case masz deklaracje funkcji, które nawet jeśli byłyby poprawnym kodem, to w zasadzie nie działałoby to (bo funkcje trzeba jeszcze wywołać)

pisałam, że kompletnie nie znam się na programowaniu więc tak, masz rację kod wzięty z internetu z innych przykładów zadań. Po przeforsowaniu książek od przedmiotu i blogów o programowaniu i tak nic nie rozumiem więc szukam pomocy tutaj

0
Althorion napisał(a):
Annuszka napisał(a):

Od razu poinformuje, że nie znam się na programowaniu i pisanie uwag w stylu "musisz zmienić komendę" itp nie będą mi pomocne bo po prostu nie rozumiem ich. Moja prośba to poprawienie kodu programu tak aby działał.

Od razu poinformuję, że nie znam się na wyłudzaniu gotowców i pisanie uwag w stylu „jak nie chesz pomóc, to nie pisz” itp. nie będą mi pomocne, bo po prostu nie rozumiem ich. Moja prośba to przelanie 60 zł na wskazane przeze mnie konto, Blikiem lub innym przelewem natychmiastowym.

Wyłudzanie gotowców byłoby raczej wtedy gdy nienapisane było by nic :). Proszę tutaj o poprawę kodu który już jest napisany, a napisałam "pisanie uwag w stylu "musisz zmienić komendę" itp nie będą mi pomocne", ponieważ naprawdę to nie będzie dla mnie pomocne. Jakaś miła dusza da komentarz właśnie tym stylu a ja i tak nic z niego nie wyciągnę bo nie będę rozumieć. Co do przelewu, jak ktoś chce spoko - niech poprawi kod, niech program działa - a ja zapłacę, Tylko adekwatną cenę. Pomoc w zadaniu tego typu raczej nie jest warta 60zł

2
LukeJL napisał(a):

Po uruchomieniu wyświetla się masa błędów

Jakie to błędy?

Kompilator podciął sobie żyły z rozpaczy.

Annuszka napisał(a):

Wyłudzanie gotowców byłoby raczej wtedy gdy nienapisane było by nic :).

Sklejenie pieciu przypadkowych gotowców z googla BEZ ŻADNEJ ANALIZY to jest "napisanie" ?

Podpowiem: do ściagania z netu tzreba być lepszym niż do napisania własnoręcznie

0
ZrobieDobrze napisał(a):
LukeJL napisał(a):

Po uruchomieniu wyświetla się masa błędów

Jakie to błędy?

Kompilator podciął sobie żyły z rozpaczy.

Annuszka napisał(a):

Wyłudzanie gotowców byłoby raczej wtedy gdy nienapisane było by nic :).

Sklejenie pieciu przypadkowych gotowców z googla BEZ ŻADNEJ ANALIZY to jest "napisanie" ?

Podpowiem: do ściagania z netu tzreba być lepszym niż do napisania własnoręcznie

Okej, dobra, rozumiem, Panowie informatycy mnie teraz zjedzą, bo:
czegoś nie umiem + staram się zrobić na ile potrafię+ nie wychodzi + proszę o pomoc = komentarze, że nic nie jest zrobione i próbuje coś wyłudzić

Dziękuje za pomoc ;) Smacznej kawusi życzę

2

Nie. „Panowie informatycy” Cię zjedli, bo nie starałaś się zrobić. Z góry zastrzegłaś, że nie chcesz pomocy, chcesz wyręcznia; to ja sobie z góry zastrzegłem, że nie chcę wolontariatu, chcę przelew.

0

Chłopie, nie rozumiem cię. Ja o pomoc dokładnie ciebie i tylko ciebie nie prosiłam. Wyraziłeś już raz swoją opinię, odpisałam ci na to ( jak nie widziałeś to zobacz). A teraz piszesz taki komentarz, jakbym cię zmuszała, żebyś coś dla mnie zrobił. Rozumiem, że oczekujesz zapłaty za pomoc - dotarło dawno, nie musisz tego maglować.

3

nie znam się na programowaniu i pisanie uwag w stylu "musisz zmienić komendę" itp nie będą mi pomocne bo po prostu nie rozumiem ich. Moja prośba to poprawienie kodu programu tak aby działał.

Podejrzewam, że celem kursu/przedmiotu, z którego masz to zadanie jest nauczenie ciebie podstaw programowania. Wobec tego sugeruję sięgnąć do źródeł i jednak spróbować. Jeśli chodzi o poprawienie tego programu, to bym go zaorał i napisał od nowa, krok po kroku. Ewentualnie poproś o pomoc GPT, dla tak zadanego pytania daje całkiem niezłe rezultaty.

0
kq napisał(a):

nie znam się na programowaniu i pisanie uwag w stylu "musisz zmienić komendę" itp nie będą mi pomocne bo po prostu nie rozumiem ich. Moja prośba to poprawienie kodu programu tak aby działał.

Podejrzewam, że celem kursu/przedmiotu, z którego masz to zadanie jest nauczenie ciebie podstaw programowania. Wobec tego sugeruję sięgnąć do źródeł i jednak spróbować. Jeśli chodzi o poprawienie tego programu, to bym go zaorał i napisał od nowa, krok po kroku. Ewentualnie poproś o pomoc GPT, dla tak zadanego pytania daje całkiem niezłe rezultaty.

Ale męczącą sciezkę jej wyznaczasz. W biedronkach / piekarniach / sortowniach paczek tez ktoś musi pracować. Kurs BHP, badanie lekarskie i voila

0
kq napisał(a):

nie znam się na programowaniu i pisanie uwag w stylu "musisz zmienić komendę" itp nie będą mi pomocne bo po prostu nie rozumiem ich. Moja prośba to poprawienie kodu programu tak aby działał.

Podejrzewam, że celem kursu/przedmiotu, z którego masz to zadanie jest nauczenie ciebie podstaw programowania. Wobec tego sugeruję sięgnąć do źródeł i jednak spróbować. Jeśli chodzi o poprawienie tego programu, to bym go zaorał i napisał od nowa, krok po kroku. Ewentualnie poproś o pomoc GPT, dla tak zadanego pytania daje całkiem niezłe rezultaty.

Akurat tak się składa, że to tylko do zdania, nie wiąże z programowaniem, w ogóle z informatyką przyszłości. Gdzieś tam pisałam, że wertowałam już blogi i książki o programowaniu i to nie dla mnie. Dzięki za komentarz, jeden z niewielu, który rzeczywiście może pomóc. O GPT pomyśle, spoko propozycja, skoro to tylko do zaliczenia)

0
ZrobieDobrze napisał(a):
kq napisał(a):

nie znam się na programowaniu i pisanie uwag w stylu "musisz zmienić komendę" itp nie będą mi pomocne bo po prostu nie rozumiem ich. Moja prośba to poprawienie kodu programu tak aby działał.

Podejrzewam, że celem kursu/przedmiotu, z którego masz to zadanie jest nauczenie ciebie podstaw programowania. Wobec tego sugeruję sięgnąć do źródeł i jednak spróbować. Jeśli chodzi o poprawienie tego programu, to bym go zaorał i napisał od nowa, krok po kroku. Ewentualnie poproś o pomoc GPT, dla tak zadanego pytania daje całkiem niezłe rezultaty.

Ale męczącą sciezkę jej wyznaczasz. W biedronkach / piekarniach / sortowniach paczek tez ktoś musi pracować. Kurs BHP, badanie lekarskie i voila

tak racja, jak ktoś programować nie umie to od razu kasa w biedronce, żabce itp, bo się do niczego innego nie nadaje
co jak co, myślenie masz świetne, tylko pogratulować :)

2
Annuszka napisał(a):
ZrobieDobrze napisał(a):

Ale męczącą sciezkę jej wyznaczasz. W biedronkach / piekarniach / sortowniach paczek tez ktoś musi pracować. Kurs BHP, badanie lekarskie i voila

tak racja, jak ktoś programować nie umie to od razu kasa w biedronce, żabce itp, bo się do niczego innego nie nadaje
co jak co, myślenie masz świetne, tylko pogratulować :)

Ale to ty odmawiasz nauczenia sie czegokolwiek, a nie ja

Spotykam znaczne ilości, nie powiem że większościowe, ale statystycznie znaczące, młodych ludzi ktorzy przeszwarcowali się przez cała swoją edukację niewiele do głowy przyjmując. Część w prywatncyh szkołąch, rodzice kupili de facto maturę, częśc w państwowych

"Przypadkowo" wszyscy używają takiego samego języka ja ty. jednak "treningów miękkich" nie zmarnowaliście. Czasem skamląc, czasem umierajaca babcia, czasem oszukując.

EDIT: w czasie trwania tego wątku być miała napisany własnymi palcami poprawny zrąb probramu.

3
Annuszka napisał(a):

tak racja, jak ktoś programować nie umie to od razu kasa w biedronce, żabce itp, bo się do niczego innego nie nadaje
co jak co, myślenie masz świetne, tylko pogratulować :)

Nie chodzi o nieumiejętność programowania tylko o opór przed nauką czegokolwiek. Np. pójdziesz do korporacji, to będziesz musiała poznać Excela, czy inne cuda. Albo nauczyć się języków obcych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1