Działanie na danych domyslnych

0

Witam, mam problem w kodzie, którego nie widzę. Program po podaniu tylko parametru -o powinien wywołać z danymi domyślnymi, a jednak tak nie jest. Działa tylko dla podania wszystkich parametrów albo żadnego. Byłbym wdzięczny za wszelką pomoc.

#include "funkcje.h"

using namespace std;




int main(int argc, char* argv[])
{
   
    string zmienna, nazwa_plk_wyj, konv;
    int default_xy = 4;
    int x = default_xy, y = default_xy, sx = 1, sy = 1, mx = x, my = y;//wymiary tablicy, dane startu, dane mety
    if (argc == 1)
    {
        cout << "Nie podales nazwy pliku wyjsciowego, wiec program sie konczy. Napisz np. -o wynik.txt -s 40 40 -p 2 2 -k 38 32 ";
        exit(1);
    }
    while (argc--) {
        zmienna = argv[argc];
        if (zmienna == "-o") {
            nazwa_plk_wyj = argv[argc + 1];
        }
        else if (zmienna == "-s") {
            konv = argv[argc + 1];
            x = stoi(konv);
            konv = argv[argc + 2];
            y = stoi(konv);

        }
        else if (zmienna == "-p") {
            konv = argv[argc + 1];
            sx = stoi(konv);
            konv = argv[argc + 2];
            sy = stoi(konv);
        }
        else if (zmienna == "-k") {
            konv = argv[argc + 1];
            mx = stoi(konv);
            konv = argv[argc + 2];
            my = stoi(konv);

        }



    }
    if (mx == default_xy) {
        mx = x;
        my = y;
    }


    generuj_wypisz(sx, sy, mx, my, x, y, nazwa_plk_wyj);




}
0

A skąd te dane "domyślne" mają się brać? Opisz dokładniej co ma robić ten program. Co mają oznaczać poszczególne parametry -p, -k itp....

0

@katakrowa: Są podane

int default_xy = 4;
    int x = default_xy, y = default_xy, sx = 1, sy = 1, mx = x, my = y;
0

Opisz dokładnie jakie parametry w jakiej kolejności ma obsługiwać ten program. Nie każ się innym domyślać. Przecież chyba wiesz jak ten program ma działać? Chodzi o to żebyś to opisał.
Napisałeś Program po podaniu tylko parametru -o i co? Samo "-o" to chyba zbyt mało bo w kodzie masz zapisane, że jeśli jest jeden parametr to program się kończy.

    if (argc == 1)
    {
        cout << "Nie podales nazwy pliku wyjsciowego, wiec program sie konczy. Napisz np. -o wynik.txt -s 40 40 -p 2 2 -k 38 32 ";
        exit(1);
    }
1

Problemem jest linia 19

            nazwa_plk_wyj = argv[argc + 1];

Próbujesz czytać coś czego nie ma ...

1

U mnie działa i debuguje się nawet korzystając z C++ w przeglądarce.

Pierwsze wejście do pętli:
screenshot-20201215225656.png

Stan zmiennych na koniec:
screenshot-20201215225824.png

0

@katakrowa: screenshot-20201215225951.png

0

Nie debugowałeś. Prawda?

1

Dołącz do kodu:

printf("sx=%d, sy=%d, mx=%d, my=%d, x=%d, y=%d, nazwa_plk_wyj=\"%s\"\n",sx, sy, mx, my, x, y, nazwa_plk_wyj);
1

Debugowałem

To jakie masz wartości zmiennych przed wywołaniem funkcji generuj_wypisz()?

1

Tylko nie wiem dlaczego program nie chce się wykonać z tymi danymi

Bo pewnie masz błąd w funkcji generuj_wypisz();

0

Nie wiem i dlatego się pytam jeśli można, a funkcja generuj_wypisz() jest dobra

Skoro funkcja jest dobra i parametry są dobre to powinno działać.

Czy dopisałeś przed funkcją generuj_wypisz to o czym pisał https://4programmers.net/Forum/C_i_C++/347354-dzialanie_na_danych_domyslnych?p=1732523#id1732523
Dopisz to i wrzuć wynik.

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