@Roballo: Szczerze współczuję. Ale moƶesz mu powiedzieć potem, ƶe zawodowi programiści uwaƶają jego pytania za kretyńskie. Jak komis to komis :D
  • Odpowiedz
@JezelyPanPozwoly: uƶycie ręcznej alokacji pamięci, nagich wskaźników do określienia posiadania zasobów to zło w C++. Masz w nim RAII, co znacząco upraszcza kod, czyniąc go jednocześnie w pełni bezpiecznym.

W C++ analogicznym kodem do Twojego by było vector data(100);, teraz data by było tablicą 100 intów o wartości 0.
  • Odpowiedz
@JezelyPanPozwoly:
Nie znam się za bardzo, ale naprawić to można jeśli nazwiesz jakoś tę strukturę, np.
typedef struct liczba
{
...
} liczba;

Ale nie znam na tyle dobrze języka, żeby wyjaśnić co jest nie tak :( na pewno tak jak kompilator krzyczy, że coś z typami.
  • Odpowiedz
@JezelyPanPozwoly: czyli strcat łączy stringi i przeszkadzał mu brak '\0'
może przez deklarację tamtego pierwszego stringa, dodaj, ten sufiks mu się pojawiał w pamięci i go miał, a z zakomentowanym, uzupełniał czymś losowym, co zupełnie nie działało

  • Odpowiedz
#programowanie #ansic
Jak sobie poradzić z liczbami zespolonymi w C? Wiem, że jest biblioteka complex, ale póki co średnio ona mi pomaga, bo z tego co widzę, to mogę sobie dzięki niej do jakiejś zmiennej wrzucić wartość typu 5+7*I i ewentualnie potem na niej operować.
Powiedzmy, że mam takie równanie:

double complex s = omega*(-zeta+sqrt(pow(zeta,2)-1));
omega i zeta są rzeczywiste, ale wynik tego równania może wyjść zespolony. Chcę otrzymać s=a+bi ale creal(s)
@mmhl: Dopiero teraz miałem okazje sprawdzić i faktycznie masz racje. Tyle razy czytałem manuala complex, a nie zauważyłem takiego głupiego błędu.
Dzięki ʕʔ
  • Odpowiedz
#naukaprogramowania #informatyka #ansic


Mirki mam problem.
Robię w konsoli wężyka i muszę obsłużyć następujące zdarzenie:
- przerwa pomiędzy kolejnymi krokami wynosi ~1 s
- w czasie tej przerwy gracz może wprowadzić znak z klawiatury determinujący kierunek kolejnego kroku

Nie mam pojęcia jak zrealizować to w C, by nawet w przy braku wprowadzenia znaku odbył się kolejny krok, a w przypadku wprowadzenia nie przerywa odliczania kroku.

Na chwilę obecną mam tak zrealizowaną pętlę
#ifdef _WIN32
#include
#else
#include
#endif

void wait( int seconds )
{ // Pretty crossplatform, both ALL POSIX compliant systems AND Windows
#ifdef _WIN32
Sleep( 1000 * seconds );
#else
sleep( seconds );
#endif
}

int
main( int argc, char **argv)
{
int running = 3;
while( running )
{ // do something
--running;
wait( 3 );
}
return 0; // OK
}
  • Odpowiedz
Dlaczego definiując zmienne w kodzie przydział ich adresów jest malejący?
Definiuję np zmienne i tablice

int a;
int b;
short int tabA[8];
short int tabB[8];
short int tabC[8];

i dając

printf("%d %d %d %d %d", &a, &b, &tabA, &tabB, &tabC);
otrzymuję

2686732 2686728 2686712 2686696 2686680
To zależy od kompilatora?
#naukaprogramowania #ansic
Mirki pomóżcie mi bom zgłupiał ( ͡° ʖ̯ ͡°)
Do tej pory moja nauka programowania opierała się na twierdzeniu "jak najprościej" i "im mniej tym lepiej". Mam za zadanie wypisać postać słowną liczby, zatrzymajmy się przy tysiącach.
Mój nauczyciel akademicki twierdzi, że nie programuje się strukturą if ... else if... tylko wszystko powinno być na if'ach uwzględniając wszystkie przypadki bo "tak się programuje". Pytam was, czy serio są
Mirki, uczę się ostatnio języka C. Przerabiam teraz listy i mam takie pytanie.
Czy wskaźniki muszą być typu Lista, czy mogą być np. int?
Nie do końca to rozumiem więc byłbym wdzięczny jakby ktoś mi to wytłumaczył. Może być priv.

struct Lista
{
struct Lista *next, *prev;
int wartosc;
};

albo

struct Lista
{
int *next, *prev;
int wartosc;
};

#jezykc #programowanie #ansic
@felek93: Podejrzewa, że nie do końca rozumiesz idee wskaźników. (Podejście do wyjaśniania wskaźników nr 1000.)
Wskaźnik to taki adres w pamięci, gdzie są zapisane jakieś dane. Żeby zapamiętać położenie w pamięci wystarczy void* (wskaźnik na typ pusty). Aby móc wykonać operacje, na obiekcie zapisanym pod adresem, kompilator musi znać typ obiektu. Dlatego stosujemy int* i List*. Twój obiekt List jest większy niż int i ma pola których int nie ma, więc
  • Odpowiedz
@Aysorth: Nie odpisałem już z tym kodem, bo trochę zabiegania miałem. W domu jednak przysiadłem chwilę i ogarnąłem problem :) Wszystko działa jak należy, stosowałem if else + pętle for i modulo, a teraz nawet i na switchach dam radę. Fajne uczucie, jak człowiekowi w wyniku prób i błędów w głowie przyjdzie to samo na myśl jak ma być poprawnie. W każdym razie następnym razem będę stosował się do Twojej rady
  • Odpowiedz