Wpisywanie współczynników funkcji do programu, jak zrobić by user mógł podać tylko te które zna.

0

Problem wygląda następująco, zaznaczam że jestem początkującym w programowaniu. Piszę program, który wypiszę właściwości pewnej funkcji. Na przykładzie funkcji kwadratowej:
User może podać współczynniki standardowe z postaci ogólnej a,b,c. Z postaci kanonicznej: p,q. Podobnie miejsca zerowe.
Wiadomo, że gdyby miał wszystko, nie musiałby korzystać z programu. Chciałbym, aby wpisał wartości współczynników, które ma. Jak może to zrobić, czy pomysł który przedstawię jest dobry, czy zna ktoś coś prostego i najważniejsze działającego, chodzi o to by program mógł bezpiecznie pominąć dane, których użytkownik nie posiada.

 
char a;
double a;

cout>>"Podaj wartosc a:";
cin<< a<<endl;

Zauważyłem już, że a nie może być jednocześnie przypisane do 2 typów.

0
Immortal Mefisto napisał(a):
 
char a;
double a;

cout>>"Podaj wartosc a:";
cin<< a<<endl;

skąd kompilator ma wiedzieć, do którego 'a' chcesz się odnieść skoro istnieją dwie zmienne o takich samych identyfikatorach? "endl" przy cin? ">>" przy cout ? "<<" przy cin? 4 linijki 4 błędy ;)

0

Wiem, teraz widzę i strzeliłem facepalm, bardziej się martwiłem jak sformułować problem. Ale czy wiesz, jak zrobić by user mógł podać tylko te wartości, które zna, a nie wszystkie????

1
Immortal Mefisto napisał(a):

czy wiesz, jak zrobić by user mógł podać tylko te wartości, które zna, a nie wszystkie????

w twoim wypadku najłatwiej zapytać użytkownika jakie informacje posiada i wywołać odpowiedni algorytm na podstawie jego odpowiedzi. Możesz też pytać o każdy argument z osobna. Albo skorzystaj z argumentów funkcji main, wywołaj program z odpowiednimi parametrami - możesz zastosować jakieś przełączniki aby rozróżnić kolejne elementy albo tak zaprojektować sobie różne rodzaje wejścia żeby jednoznacznie stwierdzić, którą wersję przekazał użytkownik do programu.

0

Najprościej będzie zapytać o każdy argument z osobna, dzięki.

1

Najprościej będzie zrobić to następująco. Najpierw zapytaj użytkownika jakiej postaci dane posiada. Następnie, w zależności od tego jaką postać wybrał podbierz od niego odpowiednie zmienne (przyda się tu instrukcja switch).

Najpierw pobierz od użytkownika "postać" którą wybrał - ponumeruj je kolejnymi liczbami. Możesz wyświetlić użytkownikowi taki komunikat:

Podaj wybraną postać równania

    1. ogólna*
    1. kanonicza*
    1. miejsca zerowe*

Następnie pobierz od użytkownika liczbę - wybór jaki dokonał:

int postac;
cin >> postac;

Teraz używając instrukcji switch pobierz wybrane zmienne i zrób z nimi co tam chcesz zrobić:

switch(postac) {
    case 1:
        /* tutaj pobierz po kolei zmienne 'a' 'b' i 'c' */
        /* następnie wykonaj odpowiednie obliczenia np. wyznacz pozostałe zmienne na podstawie tych podanych */
        break;
    case 2:
        /* tutaj pobierz po kolei zmienne 'a' 'p' i 'q' */
        /* następnie wykonaj odpowiednie obliczenia np. wyznacz pozostałe zmienne na podstawie tych podanych */
        break;
    case 3:
        /* tutaj pobierz po kolei zmienne 'x0' 'x1' i 'y0' */
        /* następnie wykonaj odpowiednie obliczenia np. wyznacz pozostałe zmienne na podstawie tych podanych */
        break;
}
0

Współczynnik 'a' nie ma żadnej wartości domyślnej. 1 jest tak samo dobre jak każda inna liczba. Owszem, mógłbyś przyjąć wartości domyślne i pozwolić wprowadzać użytkownikowi te zmienne, które wybierze. Używając tego samego sposobu, który podałem możesz zapytać użytkownika o wprowadzenie wybranej zmiennej. Tyle, że sytuacja się już znacznie komplikuje. Ale można :)

Teraz trzeba by użyć pętli w której będziemy pytać użytkownik o wybranie zmiennej oraz wprowadzanie wartości.

W przykładzie użyje tylko dwóch zmiennych a i b.

double a = 1, b = 1; // nasze zmienne z przypisanymi wartościami domyślnymi

Teraz pętla:

bool koniec = false; // informacja o tym, czy użytkownik wprowadził już wszystkie zmienne i czy należy przerwać pętlę
while(!koniec) { // pętla, pobieramy raz za razem wybrane zmienne
    /* teraz tak samo jak poprzednio pytamy użytkownika którą zmienną chce wprowadzić: */
    cout << "Podaj numer zmiennej jaką chcesz wprowadzić:\n"
            "    1. a\n"
            "    2. b\n"
            "    3. zakoncz wprowadzanie zmiennych\n"; // dodatkowa opcja pozwalająca przerwać pobieranie zmiennych

    /* podobnie jak poprzednio, w zależności od wyboru pobieramy wartość */
    int wybor;
    cin >> wybor;
    switch (wybor) {
        case 1:
            cout << "Podaj zmienna 'a': ";
            cin >> a; // pobieramy zminną
            break;
        case 2:
            /* tu podobnie jak wyżej */
            break;
        case 3:
            koniec = true; // kończymy pobieranie zmiennych
            break;
    }
}

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