Dla niektórych wakacje się kończą. Więc proponuję małą zabawę dla ludzi spod znaków #programowanie a szczególnie #jezykc oraz #cpp przy rozwiązywaniu (jak myślałem prostego, ale testowa grupa pokazała, że jest trochę podchwytliwy i wyszedł trudniejszy niż zakładałem) quizu.
Wszystko
Najnowsze
Archiwum
- 3
@Kaczus2B: Co ciekawe, z odpowiedzi stricte C++'owych miałem 1 błąd, reszta wynikała z różnic pomiędzy C a C++ o których nie wiedziałem : ). Dzięki!
@Kaczus2B:
@Kaczus2B: kompilator ma dowolnosc zoptymalizowac to jak tylko mu sie nie podoba - clang bezwzglednie stara
Jeśli chodzi o przykład z niezadeklarowaną wartością, to zauważ, ze odnosi sie to do typu integer, przy innych typach mogłoby to rzeczywiście niezdefiniowane zachowanie, przy typie integer będą w pamięci śmieci. więc wypisze po prostu przypadkową wartość.
@Kaczus2B: kompilator ma dowolnosc zoptymalizowac to jak tylko mu sie nie podoba - clang bezwzglednie stara
- 1
Mireczki z #naukaprogramowania . Potrzebuję zaimplementować funkcję G w #jezykc
Próbuję użyć ale nie za bardzo mi to idzie. Czy jest to w ogóle do zrobienia w jakiś prosty sposób w C czy muszę sobie napisać wszystkie funkcje operujące na liczbach zespolonych?
Zmiana języka nie wchodzi w grę, bo jest to ćwiczenie do zrobienia w C :)
Może w #cpp ktos będzie wiedział. Nie proszę o
Próbuję użyć ale nie za bardzo mi to idzie. Czy jest to w ogóle do zrobienia w jakiś prosty sposób w C czy muszę sobie napisać wszystkie funkcje operujące na liczbach zespolonych?
Zmiana języka nie wchodzi w grę, bo jest to ćwiczenie do zrobienia w C :)
Może w #cpp ktos będzie wiedział. Nie proszę o
źródło: comment_uTMJnnRORv5lBQCxComc88thdIaM1B1U.jpg
Pobierz@FantaZy: za bardzo 'na pałe' chcesz to zrobic ( ͡º ͜ʖ͡º)
opcji jest kilka:
1) rozpisz ta funkcje na kartce i poskracaj co trzeba i sam sobie zaimplementuj jej zachowanie, osobno dla czesci rzeczywistej, osobno dla urojonej
2) zobacz co to jest i naucz sie uzywac/definiowac liczby urojone z niej, byc moze nie ma tam 'I"
3) zobacz co to jest , bo to inna
opcji jest kilka:
1) rozpisz ta funkcje na kartce i poskracaj co trzeba i sam sobie zaimplementuj jej zachowanie, osobno dla czesci rzeczywistej, osobno dla urojonej
2) zobacz co to jest i naucz sie uzywac/definiowac liczby urojone z niej, byc moze nie ma tam 'I"
3) zobacz co to jest , bo to inna
@FantaZy: Visual C++ to kompilator C++, a nie C - wspiera jedynie te czesc jezyka C, ktorej wymaga C++. O ile header `` istnieje, to taki kod nie zadziala dziala (testowane na VS 2015).
- 17
#define if(x) if ((x) && (rand() < RAND_MAX * 0.99))
#programowanie #jezykc #cpp #ostatnikomitprzedzmianapracy #heheszki
Więcej: https://gist.github.com/aras-p/6224951
#programowanie #jezykc
Potrzebowałby malutkiej podpowiedzi do języka C
1. Program, który pyta ile liczb pobrać, następnie prosi o podanie tych liczb, a wyświetla te liczby w odwrotnej kolejności
2. Program, który pobiera liczbę a następnie odwraca cyfry w niej zawarte.
----
Potrzebowałby malutkiej podpowiedzi do języka C
1. Program, który pyta ile liczb pobrać, następnie prosi o podanie tych liczb, a wyświetla te liczby w odwrotnej kolejności
2. Program, który pobiera liczbę a następnie odwraca cyfry w niej zawarte.
----
- 2
@mihaubiauek: dzięki, jest nawet przykład w tym artykule tego czego szukam
https://pl.wikibooks.org/wiki/C/malloc
https://pl.wikibooks.org/wiki/C/malloc
- 0
Komentarz usunięty przez autora
#programowanie
Jakieś rady czym rozwiązać taki problem:
Mamy zbiór znaków (jakieś wzorki na kartce zamieniam na numery tak że krzak pierwszy na kartce to 1 itd) i wiemy że będą one jednoznacznie określać litery tworzące logiczne zdanie tylko nie wiemy jakiego języka. Wiec mamy pliki słowników oraz plik opisujący szyfr.
Próbuje #bash pod #linux ale potwor mi z kodu wychodzi tak ze pytam o rady #
Jakieś rady czym rozwiązać taki problem:
Mamy zbiór znaków (jakieś wzorki na kartce zamieniam na numery tak że krzak pierwszy na kartce to 1 itd) i wiemy że będą one jednoznacznie określać litery tworzące logiczne zdanie tylko nie wiemy jakiego języka. Wiec mamy pliki słowników oraz plik opisujący szyfr.
Próbuje #bash pod #linux ale potwor mi z kodu wychodzi tak ze pytam o rady #
- 2
@wytrzzeszcz: chodzi o zwykły szyfr afiniczny? Policz częstotliwości występowania znaków i nałóż na to statystykę danego języka. Przy dłuższym zaszyfrowanym tekście powinno się udać.
- 1
@wytrzzeszcz: to mi raczej na masochizm wygląda :)
Jej, udało mi się odtworzyć najbardziej w---------y program dzieciństwa!
http://pastebin.com/gwiu92uW
#programowanie #jezykc
http://pastebin.com/gwiu92uW
#programowanie #jezykc
źródło: comment_ChOalmRd2Yfhhy7g96beGPUkOlsjrFE8.jpg
Pobierz- 1
Uwielbiam te typy z winapi :D LPCTSTR
- 4
Mirki!
Mamy:
Mamy:
struct S { int a1;- 2
@Kadet: @Phallusimpudicus: Ten wzór to raczej *(tab + i), bo arytmetyka wskaźników bierze pod uwagę rozmiar elementu, ewentualnie *((char *)tab + i * sizeof(typ)).
@Phallusimpudicus: Nie chcę dokonywać modyfikacji, po prostu CUDA ma własny mechanizm do przekazywania argumentów do kernela na GPU, a akurat mam tablicę wielkości 4 (zawsze 4) i nie chciałem jej alokować dynamicznie, a
Chcesz dokonywać modyfikacji, które nie będą trwałe na oryginale tablicy?
@Phallusimpudicus: Nie chcę dokonywać modyfikacji, po prostu CUDA ma własny mechanizm do przekazywania argumentów do kernela na GPU, a akurat mam tablicę wielkości 4 (zawsze 4) i nie chciałem jej alokować dynamicznie, a
- 1
@GwnBrz: Oj, mój fail nie powinienem o 1 w nocy klepać o C++ :)
Dzięki radom, @-PPP-, zrozumiałem, jak działa scanf przy tablicach dwuwymiarowych.
Oto ten program http://www.wykop.pl/wpis/13381055/napisalem-taki-o-to-program-ktory-jakims-cudem-dzi/ tylko że ulepszony.
ps. @-PPP- Wielkie dzięki. Jesteś wielki.
#include
void
Oto ten program http://www.wykop.pl/wpis/13381055/napisalem-taki-o-to-program-ktory-jakims-cudem-dzi/ tylko że ulepszony.
ps. @-PPP- Wielkie dzięki. Jesteś wielki.
#include
void
@Hertesus: a nie masz debuggra? Weź krokowo przesledz co się dzieje. Co jest wpisywane do tablicy i co jest odczytywane.
Jest jakakolwiek różnica między tymi dwoma przykładami?
Chyba w obu przypadkach nie da się przepełnić bufora? Czy jak to się tam zwie,
char nap[10];
printf("Podaj wyraz");
if(gets(nap))
Chyba w obu przypadkach nie da się przepełnić bufora? Czy jak to się tam zwie,
char nap[10];
printf("Podaj wyraz");
if(gets(nap))
konto usunięte via Android
- 9
Jakimś cudem,metodą prób i błędów udało mi się napisać program liczący silnie za pomocą referencji.
Edit : Rekurencji, nie referencji.
#naukaprogramowania #rekurencja #jezykc
Edit : Rekurencji, nie referencji.
#naukaprogramowania #rekurencja #jezykc
Skoro procesowi potomnemu tworzone są jego własne kopie zmiennych, to czemu:
wyświetla
int i = 2;
fork();
printf("%p", &i); wyświetla
- 4
@blackyabbol: każdy proces ma własną przestrzeń adresową - poczytaj sobie o pamięci wirtualnej bo to jest dosyć rozległy temat. Idea jest taka, że nie odwołujesz się bezpośrednio do adresów w pamięci fizycznej - po drodze procesor robi translację Twojego adresu wirtualnego na adres fizyczny.
- 2
@blackyabbol: To nie jest tak, że jakieś zmienne są kopiowane. Cała przestrzeń adresowa jest kopiowana, a procesy nie mają żadnego (naprawdę żadnego) dostępu do danych (zmiennych) innych procesów. To znaczy, jeżeli odwołasz się do adresu 0x12345 w jednym i w drugim procesie, to (o ile taki adres jest w ogóle przydzielony) odwołasz się do 2 różnych miejsc w pamięci fizycznej.
Randomizacja nie może dotykać już zaalokowanej pamięci, bo to popsułoby
Randomizacja nie może dotykać już zaalokowanej pamięci, bo to popsułoby
Jest w ogóle możliwe utworzenie prostego gui dla kodu napisanego w c, na linuksie/ubuntu?
#naukaprogramowania #gui #jezykc
#naukaprogramowania #gui #jezykc
- 4
#programowanie Ponieważ zauważyłem, że programiści zarówno #jezykc jak i #cpp używają funkcji scanf. Często niektórzy niestety źle podają parametr do wypełnienia tablicy znakowej. Rozumiem, większość to byli początkujący. Przerażenie mnie jednak wzięło, jak w poradnikach na sieci takowe znalazłem. Dla równowagi do mojej skrzyni porad dodałem adekwatny wpis.
- 2
@Hertesus: Po to by więcej nie wprowadzać niż 9 znaków.
- 1
@Kaczus2B: Tablica to nie wskaźnik, nie ma znaczenia czy statyczna czy nie. Wskaźnik to zwykła zmienna, tablica to ciąg n zmiennych, który niejawnie się konwertuje do wskaźnika na jej pierwszy element przy pierwszej nadarzającej się okazji.
Następny etap nauki wskaźników, zaraz po tablicach wskaźników, jest odwołanie wskaźników? Chodzi o to żeby wskaźnik wskazywał wskaźnik. Wytłumaczy mi ktoś jakim cudem to działa,
int main()
{
char tab[10],**wdw,*w; // działający przykład
w=&tab
int main()
{
char tab[10],**wdw,*w; // działający przykład
w=&tab
@Hertesus: możesz zrobić gets(tab); nie do końca rozumiem problem. Może poćwicz wskaźniki np. na intach, bez tablic? Tablice w C są... dziwne, bo są bardzo blisko wskaźników, ale łatwo się poplątać.
BTW: char* w = &tab wygląda kiepsko -- tu chyba jest niezgodność typów. Być może zależy od standardu C - dawno nie pisałem w tym języku. Wg. mnie w = tab, lub w = &tab[0] wyglądają lepiej. Co nie
BTW: char* w = &tab wygląda kiepsko -- tu chyba jest niezgodność typów. Być może zależy od standardu C - dawno nie pisałem w tym języku. Wg. mnie w = tab, lub w = &tab[0] wyglądają lepiej. Co nie
- 0
@Hertesus: odnośnie 2 przykładu to zobacz mirku co przekazujesz do funkcji gets jako adres.
Przeanalizuj ten kod:
http://pastebin.com/pTJZP7FE
PS. tab = &tab
Przeanalizuj ten kod:
http://pastebin.com/pTJZP7FE
PS. tab = &tab
Czuję się coraz pewniej używając wskaźników, więc napisałem sobie program który używa wskaźników, zamienia w duże litery na małe, a małe na duże. I o dziwo ten program działa. Przy okazji poznałem dwie funkcje. toupper i tolower.
#naukaprogramowania #jezykc #wskazniki
#naukaprogramowania #jezykc #wskazniki
- 1
if(*w >=97 && *w<=122)@Hertesus: Teraz poznaj jeszcze
isalpha, isupper i islower, zamiast takie potworki pisać- 1
@Hertesus: Wiem, ogółem polecam: http://en.cppreference.com/w/cpp i http://en.cppreference.com/w/c dla C
Krok po kroku zaczynam rozumieć jak działają wskaźniki. Może i nie są to wielkie postępy, ale się cieszę.
Jest w ogóle możliwe rzutowanie w dół?
Wiem że, da sie zrobić z int double albo float, ale czy da się zrobić z float , int?
int main()
{
Jest w ogóle możliwe rzutowanie w dół?
Wiem że, da sie zrobić z int double albo float, ale czy da się zrobić z float , int?
int main()
{
Ciąg dalszy nauki wskaźników, Otóż przypisałem wskaźnikom zmienne czy jak to tam się nazywa,
Ale do rzeczy, jak już odpaliłem ten program, to on mi zwrócił takie coś
0xb757ee55,(nil),0xbeee3a50, O ile się orintuję to 1 i 3 to są adresy zmiennych w pamięci zapisane w systemie szesnastowym, Ale co to jest te (nil)? A drugie pytanie co w ogóle robi "%p"?
int main()
{
Ale do rzeczy, jak już odpaliłem ten program, to on mi zwrócił takie coś
0xb757ee55,(nil),0xbeee3a50, O ile się orintuję to 1 i 3 to są adresy zmiennych w pamięci zapisane w systemie szesnastowym, Ale co to jest te (nil)? A drugie pytanie co w ogóle robi "%p"?
int main()
{
- 2
@Hertesus: Nie pomyl się przy definiowaniu zmiennych, bo czuję że ten zapis mógł Cię zmylić.
int *c,ch; - ta linia nie deklaruje wskaźnika c i integera ch, tylko dwa wskaźniki. Gwiazdka jakby "należy" do typu zmiennej a nie jej nazwy. Dlatego ja preferuję zapisywać to tak, wtedy jest wszystko jasne.
int* c, ch;
W tym programie deklarujesz więc 6 pustych wskaźników na int. I teraz tak:
* to operator wyłuskania, więc używając
int *c,ch; - ta linia nie deklaruje wskaźnika c i integera ch, tylko dwa wskaźniki. Gwiazdka jakby "należy" do typu zmiennej a nie jej nazwy. Dlatego ja preferuję zapisywać to tak, wtedy jest wszystko jasne.
int* c, ch;
W tym programie deklarujesz więc 6 pustych wskaźników na int. I teraz tak:
* to operator wyłuskania, więc używając
- 1
@Hertesus: to zależy co chcesz osiągnąć.
Jeśli chodzi o funkcję printf oraz %p, no to wypisuje to wartość zmiennej w postaci przeznaczonej dla adresów zmiennych.
Jeśli sobie zadeklarowałeś 3 zmienne: ch, xh, mh i następnie przypisałeś ich adresy (za pomocą operatora uzyskania adresu &) do wskaźników c, x, m i:
- chcesz wyświetlić ich wartości mając do dyspozycji tylko wskaźniki:
to źle wpisujesz do funkcji printf, ponieważ zamiast %p powinno być %i lub %d
Jeśli chodzi o funkcję printf oraz %p, no to wypisuje to wartość zmiennej w postaci przeznaczonej dla adresów zmiennych.
Jeśli sobie zadeklarowałeś 3 zmienne: ch, xh, mh i następnie przypisałeś ich adresy (za pomocą operatora uzyskania adresu &) do wskaźników c, x, m i:
- chcesz wyświetlić ich wartości mając do dyspozycji tylko wskaźniki:
to źle wpisujesz do funkcji printf, ponieważ zamiast %p powinno być %i lub %d















double x = 3.0;
double z = 4.444;
double* y = &x // teraz printf( "%f", *y); pokaże 3.0;
y = &z // teraz printf( "%f", *y); pokaże 4.444;
*y = 1.11; // teraz printf( "%f", *y);