Funkcja zwracająca if

2015-04-11 01:08
0

Cześć, jest jakiś sposób, aby funkcja zwracała warunek if?

Przykład, tego, co chciałbym osiągnąć:

 void Funkcja()
{
    if (a[y][x] == ' ')printw("OK");
}
edytowany 2x, ostatnio: Back2k, 2015-04-11 01:09

Pozostało 580 znaków

2015-04-11 01:10
0

Raczej chodzi Ci o zwracanie wartości bool lub też innej, która zostanie wykorzystana w warunku.

Funkcja może też zwracać cokolwiek, np. inną funkcję.

#include <iostream>
using namespace std;

auto fun(bool x){
    return x?
        []{ cout << "Hello" << endl; }:
        []{ clog << "World" << endl; };
}

int main() {
    fun(0)(), fun(1)();
    return 0;
}

Twój przykład nie mówi nic.

edytowany 2x, ostatnio: spartanPAGE, 2015-04-11 01:15

Pozostało 580 znaków

2015-04-11 01:20
0

Faktycznie, źle to przedstawiłem. Chciałbym aby po wywołaniu funkcji, if zostawał automatycznie wywoływany. Tak jakbym poprzez funkcję, robił 'kopiuj-wklej' w kodzie.

edytowany 2x, ostatnio: Back2k, 2015-04-11 01:21

Pozostało 580 znaków

2015-04-11 02:53
0

Cześć, jest jakiś sposób, aby funkcja zwracała warunek if?

Nie - instrukcje warunkowe się wywołuje, a nie zwraca; Funkcja może zwrócić jakąś wartość, a nie konstrukcję języka;

Chciałbym aby po wywołaniu funkcji, if zostawał automatycznie wywoływany. Tak jakbym poprzez funkcję, robił 'kopiuj-wklej' w kodzie.

Ale co to ma znaczyć? Warunek zawsze wywołany zostanie automatycznie, bez względu na to gdzie i jak go zapiszesz; No i jakie "kopiuj-wklej"? Opisz problem dokładniej, bo raczej nikomu nie będzie się chciało zgadywać; A najlepiej to napisz co potrzebujesz zrobić, a rozwiązanie się dopasuje.


Pozostało 580 znaków

2015-04-11 08:11
0

Ciężko powiedzieć o co chodzi, ale może chodzić o inlinowe funkcje? Tak, żeby wywolania było wstawiane w kod ciało funkcji?


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie

Pozostało 580 znaków

2015-04-11 08:56
0

To co napisales nie ma sensu. To brzmi mniej wiecej tak jakbys chcial napisac funkcje liniowa ktora zwraca dodawanie


░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

2015-04-12 00:16
0

Przepraszam za mało szczegółowy opis. A więc tak, w kodzie często powtarza się:

                    if (a_1[y][x] == ' ')printw(" ");
                    if (a_1[y][x] == 047)printw("'");
                    if (a_1[y][x] == ':')printw(":");
                    if (a_1[y][x] == ';')printw(";");
                    if (a_1[y][x] == ',')printw(",");

Zajmuje to sporo miejsca, ponieważ muszę opisywać każdą tablicę po kolei (zmieniają się tylko ich nazwy), doszedłem do wniosku, czy nie byłoby możliwe napisanie funkcji 'wklejającej' ww. fragment kodu, a jako argument funkcji użyć nazwę tablicy.

kaczus napisał(a):

Ciężko powiedzieć o co chodzi, ale może chodzić o inlinowe funkcje? Tak, żeby wywolania było wstawiane w kod ciało funkcji?

Tak, można powiedzieć że chodzi mi o funkcję inline, niestety przykłady zawarte w internecie są dość banalne i nie odpowiadają temu czego szukam.

krwq napisał(a):

To co napisales nie ma sensu. To brzmi mniej wiecej tak jakbys chcial napisac funkcje liniowa ktora zwraca dodawanie

Domyślam się że moje pytania mogą nie mieć sensu, ale właśnie dlatego pytam i szukam.

edytowany 1x, ostatnio: Back2k, 2015-04-12 00:17

Pozostało 580 znaków

2015-04-12 08:08
2

Jeśli chcesz funkcję inlinowe'ą, to taką tworzysz. Np może być taka:

inline void Funkcja(char *a, int x, int y)
{
    if (a[y][x] == ' ')printw("OK");
}

To jest jednak jedynie wskazanie i kompilator będzie się starał, że wstawi bezpośrednio w kod Twoją funkcję.
Możesz też zrobić sobie makro, ale to
1) nieeleganckie
2) zaśmiecisz sobie przestrzeń nazw
3) podatne na błędy


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie
edytowany 1x, ostatnio: kaczus, 2015-04-12 08:09

Pozostało 580 znaków

2015-04-12 10:30
0

Gdy wywołujesz funkcję, każdy if jest wykonywany(z tej funkcji).

Jeśli chcesz zwrócić jakąś wartość, to musisz napisać return i tu to co zwracasz.

Jeśli zależy Ci aby wartość była "tylko" wypisana na ekranie(Co jest różnicą) to starczy cout.

Załóżmy że chcesz obliczyć liczbę. Ta liczba może nam być potrzebna do dalszych obliczeń, albo możemy chcieć tylko ją wypisać. Jeśli chcesz tylko wypisać dajesz funkcję void, ona nic nie zwraca, co nie oznacza że nie wypisuje. Nie możesz się do niej odnieść. Załóżmy że chcesz ją zwrócić aby potem coś z nią zrobić. Wtedy zapisujesz zamiast void, int(dowolny typ jaki chcesz zwrócić).


Life is Strange

Pozostało 580 znaków

2015-04-12 11:57
0

Może zrób tablicę zawierająca dozwolone znaki i sprawdzaj, czy dany znak jest tam zawarty I jeśli tak, to go wyświetlaj. Jeśli to C++ to możesz użyć set

Pozostało 580 znaków

2015-04-12 19:07
6

Dobre zadawanie pytan i opis problemu to jest jedna z wazniejszych rzeczy w byciu programista. W tym momencie masz zly sposob zadawania pytan, do stopnia, ze zupelnie nie wiadomo o co chodzi.

Na prostym przykladzie: zamiast spytac "jak dodac dwie liczby?" to pytasz: "jak przeniesc dziesiatki na kolejna cyfre" i nikt nie wie ze chodzi o dodawanie i ze probujesz zaimplementowac dodawanie pisemnie w kodzie zamiast uzyc operatora +.

Napisz co chcesz zrobic, a nie jak probujesz to rozwiazac i nie pros nas o dokonczenie rozwiazania ktore juz zaczales, bo nikt nie wie co chcesz rozwiazac.
Mam wrazenie ze robisz cos zupelnie pod gorke i probujesz zebysmy Ci w tym pomogli, a nikt nie wie o co chodzi.

Szczegoly typu co probujesz rozwiazac sa istotne w rozwiazaniu dowolnego problemu i nie mozesz ich pominac. Nie sugeruj swojego rozwiazania osobie ktora pytasz o pomoc, bo mozesz byc na zupelnej zlej drodze, a ta osoba nie ma wystarczajacego kontekstu zeby zrozumiec Twoj problem.

Odpowiedz na proste pytania:

  • jaki program piszesz? (co ma robic, do czego sluzyc)
  • co juz masz i dziala? (nie pisz o rzeczach ktore czesciowo dzialaja i pisz tresciwie)
  • ktora czesc programu probujesz zrobic?
  • co Ci nie wychodzi? (tutaj opisz co sie dzieje a co sie powinno dziac)

Sprobuj odpowiedz krotko i tresciwie bez zadnych historii zyciowych.

Przykladowo: Pisze gre platformowa, mam zrobiony modul grania (wyswietlanie postaci, fizyka, kolizje), chcialem zaimplementowac interaktywne menu tekstowe, w ktorym moglbym zapisac i wczytac gre, ale mi cos nie wychodzi: gdy probuje wypisac tekst na ekran to wszystkie literki wyswietlaja sie jedna na drugiej w tym samym punkcie, tutaj moj kod (korzystam z biblioteki XYZ wersja 123).

Jesli mozesz zalaczyc caly projekt to tez zalacz (w calosci, nie wklejaj kodu zrodlowego tylko spakuj i dolacz), jesli nie to sprobuj chociaz wkleic te kilka metod ktore sa zwiazane z Twoim problemem (jak wkleisz kilkaset linii kodu to nikt na to nie spojrzy, chyba ze dasz projekt ktory sie buduje to wtedy jest szansa).

Patrzac na Twoj kod mam wrazenie, ze moze Ci chodzic o cos takiego i nie potrzebujesz zadnego if-a:

printw("%c", a_1[y][x]);

░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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