Zaloguj się, aby obserwować  
UthersonL

Programowanie - pytania, problemy, przykłady programów

1812 postów w tym temacie

Nie. Podstawy są te same. Jeśli się uczysz od podstaw to dowolny kurs w którym dobrze tłumaczą będzie dobry. A to że obowiązuje jakaś tam wersja w czymśtam nie przeszkadza w niczym. Po prostu rozszerzyli coś tam w rdzeniu, rozszerzyli bibliotekę standardową i dodali trochę nowych funkcjonalności.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Sprawa taka, mam napisany ''Kółko i krzyżyk'' Chce by przy odpaleniu programu wyskakiwało mi powiadomienie. Chce jednak, że jeśli zaznaczę, to nigdy więcej nie będzie mi wyskakiwać(coś w stylu komunikatu z plikami cookies). Wiem, że mam użyć int main(int argc, char *argv[]) i przesyłać, ale jak?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.11.2013 o 00:40, Berengarr napisał:

Sprawa taka, mam napisany ''Kółko i krzyżyk'' Chce by przy odpaleniu programu wyskakiwało
mi powiadomienie. Chce jednak, że jeśli zaznaczę, to nigdy więcej nie będzie mi wyskakiwać(coś
w stylu komunikatu z plikami cookies). Wiem, że mam użyć int main(int argc, char *argv[])
i przesyłać, ale jak?


Musisz po prostu gdzieś zapisać informacje o tym. Możesz np. w pliku, albo w rejestrze.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../

Dnia 20.11.2013 o 01:09, Volvox napisał:

Musisz po prostu gdzieś zapisać informacje o tym. Możesz np. w pliku, albo w rejestrze.

Czyli zwykłym przypisaniem do argc wpisać wartość?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Java- jak zrobić by podklasa mająca więcej pól niż domyślny konstruktor nadklasy też dawała im jakąś wartość?

Np. class gra ma nazwe i platformę, ale podklasa grapc ma pole czysteamowa z domyslną wartościa nie :P ?

Dzwiny przykład, ale tylko taki przyszedł mi o tej godzinie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.11.2013 o 01:09, Volvox napisał:

>/.../


Absurdalnym rozwiązaniem, ale ultrałatwym jest stworzenie części try pokazującej powiadomienie jeśli istnieje plik kontrolny. Nie chcemy powiadomień usuwamy, chcemy to tworzymy :P
Rozwiązanie niepolecane komercyjnie :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.11.2013 o 23:23, Boguslav4 napisał:

Java- jak zrobić by podklasa mająca więcej pól niż domyślny konstruktor nadklasy też
dawała im jakąś wartość?


Nie znam Javy ale pewnie można odpalić konstruktor rodzica w konstruktorze potomka. Chyba Javie wygląda to tak:
public class Child extends Parent {
public Child(int someArg) {
super(someArg);
// ...
}
// ....
}


Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.11.2013 o 23:23, Boguslav4 napisał:

Java- jak zrobić by podklasa mająca więcej pól niż domyślny konstruktor nadklasy też
dawała im jakąś wartość?

Np. class gra ma nazwe i platformę, ale podklasa grapc ma pole czysteamowa z domyslną
wartościa nie :P ?

Dzwiny przykład, ale tylko taki przyszedł mi o tej godzinie.

Wywołujesz konstruktor podklasy z wartościami jakie chcesz (czyli nazwa,platforma,czysteamowa) a jako pierwszą instrukcję tego konstruktora wywołujesz:
super(name,platforma).

Chyba, że nie tego dotyczy pytanie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.11.2013 o 09:53, Berengarr napisał:

Czyli zwykłym przypisaniem do argc wpisać wartość?


Nie bardzo kojarzę co chcesz zrobić z tym " int main(int argc, char *argv[])".
Służy to do przechwytywania parametrów wywołania programu. Zatem jakbyś mógł wywoływać program mojprogram.exe -firstrun to możesz przechwycić parametr firstrun i wtedy wyświetlić ekran powitalny. No ale to nie będzie działać tak jak ty chciałeś. Zatem te parametry to raczej ślepa uliczka.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam mały problem. Mam Avasta i kiedy chce kompilować plik wyskakuje mi komunikat o zagrożeniu. Gdzie mogę ustawić by przy kompilacji jakiegokolwiek pliku mi ten komunikat nie wyskakiwał?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 25.11.2013 o 22:31, Gumisiek2 napisał:

Ustawienia Avasta, zakładka Antywirus, opcja Wykluczenia.

Teraz mam 2 problem. Terminal mi się nie zatrzymywał w Devc++ v4_990 więc dodałem system("pause"); ale bez biblioteki i tak mi się skompilowało, to raz, a dwa. Jak mam zatrzymać ten terminal?

BTW. Czym się różnią wersje Visual Studio 2013 RC/Visual Studio 2013 Preview/Visual Studio 2013 ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czuje się głupi... mam kod:
#include <stdio.h>
int tab[20],i;
int main()
{
for(i=0;i<5;i++)
{
printf("%3d",tab);
}
}
dlaczego nie działa? Tzn. wypisuje mi same 0, a ma być 0,1,2,3,4.

EDIT. Ok wiem... tablica globalnie samymi 0 jest zainicjalizowana

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam takie coś(gotowiec ze strony):
#include <conio.h>
int main()
{
char *weekday, *month;
int day, year;
weekday = "Saturday";
month = "April";
day = 18;
year = 1987;
cprintf( "%s, %s %d, %d\n", weekday, month, day, year );
}
Dlaczego wyskakuje mi że cprintf nie jest zadeklarowane, skoro wchodząc do biblioteki praktycznie pierwsza funkcja którą widzę to właśnie ta...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../

Kompilator mówi prawdę - "cprintf is not declared in this scope".
W końcu jedyne co znajduje w pliku conio.h to


int cptrintf(...);
A to NIE jest deklaracja a jedynie informacja - "Słuchaj kompilatorze, ta oto funkcja jest gdzie indziej, może nawet w innym pliku. Znajdziesz ją gdzieś tam dalej, podczas linkowania".

Więc gdzie ta funkcja się znajduje? Odpowiedź brzmi - u ciebie nigdzie. cprintf pochodzi z Borlanda, w dodatku z jakiejś antycznej wersji, a nie z nowszych środowisk. Aż dziwne że znalazła się deklaracja zapowiadająca w tym pliku nagłówkowym.
Więc jeśli chcesz żeby ci zadziałała to:
http://conio.sourceforge.net/
W przypadku devc++ instalujesz devpaka, w ustawieniach projektu upewniasz się że uwzględniany jest katalog w którym leżą biblioteki dodatkowe:
http://puu.sh/5AsEp.png
I dołączasz conio2.h
http://puu.sh/5AsFE.png

I działa. Ale nie wiem co jest tak przydatnego w tym cprintf w stosunku do zwykłego printf z stdio.h. Z jakiegoś powodu chcesz mieć PEWNOŚĆ że dane zostaną przesłane do konsoli a nie standardowego wyjścia? Bo to chyba jedyna różnica.

Jeśli jednak używasz czegoś co nie jest Devem to tu masz paczuszkę (z tego co widzę to na conio.sourceforge ktoś o niej zapomniał więc spakowałem to samemu):
http://puu.sh/5At8c.zip

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../
Znalazłem tą funkcje na jakimś forum, poczytałem, a że znalazłem o tym mało informacji, no i kod , to wypróbowałem. Stąd moje pytania. BTW. Mam coś takiego:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, w=12;
for( i = 0; i < w; i++ )
{
printf( "%*c", w - i, '' '' );
for ( j = 0; j <= i; j++ )
printf( " *" );
putchar( ''\n'' );
}
printf( "%*c*\n", w + 1, '' '' );
return 0;
}
Dlaczego przy %*c jest *? Co daje? Mam problem ze zrozumieniem ''tablic''/tych podwójnych pętli... Czytałem róże informacje o tym, ale nie rozumiem, więc zrobienie takiego prostego programu mnie przerasta...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../

Bo ten program wcale nie jest prosty, on jest obrzydliwy :D

Jak pisałem wielokrotnie - za nazywanie zmiennych ''i'' albo ''j'' to na mojej uczelni stawiali za to dwóję. Bez dalszego wnikania co i jak. I rzeczywiście ciężko zrozumieć taki kod nawet jeśli zajmuje stosunkowo niewiele linijek. Najpierw sprawdźmy empirycznie co się dzieje jeśli wyrżniemy nasze gwiazdki.
http://puu.sh/5AJrx.png - tak wygląda efekt jego działania w wersji podstawowej
http://puu.sh/5AJtg.png - a tak jeśli wyrżniemy gwiazdki z obu stron w printfie na dole.
http://puu.sh/5AJv0.png - a tak jeśli pozbędziemy się gwiazdki z poprzedniego printfa. Zaczyna to śmiesznie wyglądać :D

Teraz - co robi ta dziwna gwiazdka? Definicję możemy znaleźć tutaj:
http://www.java2s.com/Tutorial/C/0080__printf-scanf/Specify.htm
http://puu.sh/5AJIy.png - wynik wykonania instrukcji.
http://puu.sh/5AJJI.png - i jeszcze jeden, dla lepszego porównania.

Innymi słowy, ta gwiazdka jest dodatkowym argumentem który odpowiada za dystans między elementami. (Notabene, gorszego symbolu już chyba nie mogli do tego znaleźć bo to wygląda jak wskaźnik). Jej wyrżnięcie z kodu sprawiło że zamiast wstawiać '' '' wstawiało nam jako znak wynik równania w-i (tak, litery są też liczbami). A te mogą być BARDZO różne (ba, nawet dźwięki mogą wydawać), stąd też i takie dziwaczne znaki.


To teraz rozpiszmy ten paskudny kod do czegoś co nie powoduje epilepsji i lekko to zmodyfikujmy:
http://pastebin.com/FMxzJ1Te

A więc mamy zmienną rows (dawniej w) która odpowiada za ilość wierszy z gwiazdkami. Jak widać ilość wierszy ustawiłem na 5. Przeanalizujmy to krok po kroku:
Uruchamiamy pierwszą pętlę - (loop1=0, loop1 < rows; loop1++)
Czyli to uruchomi się tyle razy ile jest wierszy z gwiazdkami.
Kolejną instrukcją, już wewnątrz pętli (a więc wykonującą się tyle razy ile wynosi zmienna rows) jest:
printf( "%*c", rows - loop1, '' '' );
Którą możemy czytać jako wydrukuj na ekranie, w odległości (rows-loop1) pól spację (czyli wszystkie dalsze printfy muszą już być za nią).
Za pierwszym wykonaniem pętli będzie to w moim przykładzie dystans 5 pól, potem 4, potem 3 itd.
Efektem jest np. to:
http://puu.sh/5AK1F.png - jak widzisz, za każdym razem przed gwiazdką jest o jedna spacja mniej.
for ( loop2 = 0; loop2 <= loop1; loop2++ )
printf( " *" );

Kolejne instrukcje na liście. Mimo iż są to dwie instrukcje to możemy je niejako potraktować jako jedną. Tak naprawdę mogłyby wyglądać tak:
for ( loop2 = 0; loop2 <= loop1; loop2++ ){
printf( " *" );
}
Tak, ten printf(" *") tak naprawdę znajduje się wewnątrz naszej drugiej pętli (i jest jedyną instrukcją wewnątrz niej). A co ta pętla robi?
Zaczynamy od loop2 = 0, loop2 <= loop1; loop2++
Przypomnę, nadal jesteśmy wewnątrz pierwszej pętli.
Ta pętla loop2 wykona się więc, w moim przykładzie, od 5 do 1 razu. Za każdym razem uruchamiając printfa który wygeneruje spację i jedną gwiazdkę. Im dalszy wiersz, tym mniej tych gwiazdek będzie (bo loop1 robi się coraz większy).
Ostatnią linijką w pętli loop1 (nie 2!) jest
putchar( ''\n'' );
Która oznacza - zakończ wiersz, przejdź do nowej linii tekstu.
I cały proces wykonuje się od nowa. Tyle tylko że teraz loop1=1 więc będzie mniej spacji z pierwszego printfa i mniej gwiazdek z drugiego fora. A potem loop1=2, 3 itd.

Notabene, dlaczego uczysz się C a nie C++, C# albo Javy? ;p Te dwa ostatnie (C++ w sumie też jeśli nakarmisz go jakimś Qt) w tej samej ilości linijek jaką użyłeś do napisania czegoś co wyświetla piramidę gwiazdek potrafią wyświetlić przeglądarkę internetową ^_^

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../
Czyli żebym dobrze zrozumiał. Wchodzę do loop1==0 za pierwszym razem, wykonuje wszystkie instrukcje, czyli to%*c i pętle 5x i wchodzę do loop1==1, gdzie od nowa zabawa z 5x pętla?

Uczę się C bo chce się zajmować systemami wbudowanymi, a tam assembler i C są ważne.


Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 03.12.2013 o 18:55, Daronn_Darker napisał:

/.../
Czyli żebym dobrze zrozumiał. Wchodzę do loop1==0 za pierwszym razem, wykonuje wszystkie
instrukcje, czyli to%*c i pętle 5x i wchodzę do loop1==1, gdzie od nowa zabawa z 5x pętla?

Tak. Z tym że za pierwszym wykonaniem pętli:
loop1=0
Warunkiem wykonania pętli loop2 jest loop2<=loop1 więc nasza pętla loop2 wykona się tylko raz. Za drugim wykonaniem pętli loop1 dwa razy. Za trzecim 3. Itd. Tworząc coraz więcej instrukcji printf (" *") z każdym kolejnym przebiegiem pętli loop1.

Pętla to tak naprawdę tylko instrukcja "wykonuj coś X razy". Niczym nie różni się od printfa czy jakiejkolwiek innej (no dobra, na poziomie asemblera to się różni ale nie chcę gmatwać :P). I tak właśnie radzę ją traktować w C.

Dnia 03.12.2013 o 18:55, Daronn_Darker napisał:

Uczę się C bo chce się zajmować systemami wbudowanymi, a tam assembler i C są ważne.

A, czyli przynajmniej masz jakieś sensowne powody :P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować