Grzegorz Rolewicz

Grzegorz Rolewicz Kierownik działu
zapewnienia jakości
i regulacji

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Witam,

Zachciało mi się iść na studia informatyczne żeby ewentualnie zdobytą wiedze wykorzystac w systemach zarządzania jakością (moj zawód który wykonuje aktualnie).

Za bardzo nie kumam jeszcze o co chodzi do konca w C i dlatego szukam osoby ktora moglaby mi co jakis czas (co 2 tygodnie) napisac zadania na cwiczenia :) Wazne jest to zeby kod zrodlowy mial komentarze dzieki czemu moze wkoncu to zatrybie.

Z góry dziekuje za pomoc :)

Na start dalbym takie 2 zadania

Zadanie 2. Napisz program, który z klawiatury pobiera dwa dowolne napisy (ang. strings) i zwraca prawdę, jeśli napis pierwszy jest w całości umieszczony w napisie drugim począwszy od jego pierwszego znaku. Program ten powinien zawierać funkcję o nazwie poczatek (napis1, napis2).

Zadanie 3. Dane są dwa skończone łańcuchy symboli (mogą to być znaki lub liczby całkowite).
Napisać algorytm sprawdzający czy jeden zawiera się w drugim. Inaczej mówiąc, chodzi o sprawdzenie czy jeden napis jest fragmentem innego. Przykładowy fragment kodu dla tablic liczb całkowitych podano poniŜej. Proszę napisać program, który to samo robi dla dowolnych dwóch ciągów znaków, których długości i wartości są wczytywane z klawiatury.

#define FALSE 0
#define TRUE 1
const int n = 10;
const int m = 3;
int t1[10] = {2,1,3,2,4,3,2,5,4,5};
int t2[3] = {4,3,2};
int i, j, is_ok, found;
1 found = FALSE;
2 for (i=0; i < n-m+1 && !found; i++) {
3 j = 0;
4 is_ok = TRUE;
5 while (j < m && is_ok) {
6 if (t1[i+j] != t2[j])
7 is_ok = FALSE;
8 else
9 j++;
10 }
11 if (j == m)
12 found = TRUE;
13 }
Roger Zacharczyk

Roger Zacharczyk Programista (gry,
webserwisy,
aplikacje użytkowe),
fotograf

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Grzegorz Rolewicz:
dlatego szukam osoby ktora moglaby mi co jakis czas (co 2 tygodnie) napisac zadania na cwiczenia :)
No dobrze, ale co z tego będę miał ja? :)

konto usunięte

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Grzegorz Rolewicz:
Witam,

Zachciało mi się iść na studia informatyczne żeby ewentualnie zdobytą wiedze wykorzystac w systemach zarządzania jakością (moj zawód który wykonuje aktualnie).

Za bardzo nie kumam jeszcze o co chodzi do konca w C i dlatego szukam osoby ktora moglaby mi co jakis czas (co 2 tygodnie) napisac zadania na cwiczenia :) Wazne jest to zeby kod zrodlowy mial komentarze dzieki czemu moze wkoncu to zatrybie.

Z góry dziekuje za pomoc :)

Na start dalbym takie 2 zadania

Zadanie 2. Napisz program, który z klawiatury pobiera dwa dowolne napisy (ang. strings) i zwraca prawdę, jeśli napis pierwszy jest w całości umieszczony w napisie drugim począwszy od jego pierwszego znaku. Program ten powinien zawierać funkcję o nazwie poczatek (napis1, napis2).

Zadanie 3. Dane są dwa skończone łańcuchy symboli (mogą to być znaki lub liczby całkowite).
Napisać algorytm sprawdzający czy jeden zawiera się w drugim. Inaczej mówiąc, chodzi o sprawdzenie czy jeden napis jest fragmentem innego. Przykładowy fragment kodu dla tablic liczb całkowitych podano poniŜej. Proszę napisać program, który to samo robi dla dowolnych dwóch ciągów znaków, których długości i wartości są wczytywane z klawiatury.

#define FALSE 0
#define TRUE 1
const int n = 10;
const int m = 3;
int t1[10] = {2,1,3,2,4,3,2,5,4,5};
int t2[3] = {4,3,2};
int i, j, is_ok, found;
1 found = FALSE;
2 for (i=0; i < n-m+1 && !found; i++) {
> 3 j = 0;
4 is_ok = TRUE;
5 while (j < m && is_ok) {
> 6 if (t1[i+j] != t2[j])
7 is_ok = FALSE;
8 else
9 j++;
10 }
11 if (j == m)
12 found = TRUE;
13 }
Ile?

konto usunięte

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Co do 2:
ze strony http://en.wikipedia.org/wiki/Strcmp


int strcmp (const char * s1, const char * s2)
{
for(; *s1 == *s2; ++s1, ++s2)
if(*s1 == 0)
return 0;
return *(unsigned char *)s1 < *(unsigned char *)s2 ? -1 : 1;
}


Kod jest bez komentarza, ale zasada działania jest prosta:
Mamy w pamięci oba stringi, czyli kolejno wartości, które można porównywać jako liczby (ASCII), gdzie wartość 0 oznacza koniec stringa.
Znamy adresy w pamięci ich początków: s1, s2. Nazwy te oznaczają zmienne zawierające adres znaku (char) w pamięci. Do tej wartości odwołujemy się przez *s1, natomiast bez *, po prostu s1, to odwołanie do samego adresu.

Tworzymy pętlę for (ma trzy argumenty oddzielane średnikami: inicjalizacja; warunek; modyfikacja). W tym przypadku nie musimy niczego inicjalizować, bo będziemy przechodzić kolejno po adresach.

Warunek mówi o tym, że dopóki jest spełniony, to pętla jest wykonywana. W tym przypadku oznacza, że dopóki wartości pod adresami *s1 i *s2 są takie same (czyli są to te same znaki), to lecimy dalej.

Modyfikacja to zmiana dokonywana co każde wykonanie pętli. W tym przypadku powoduje przesunięcie wskaźników na adres kolejnego znaku. Zauważ brak * - tym razem nie operujemy na wartości w pamięci pod adresem, ale na samym adresie.

Wewnątrz pętli sprawdzamy, czy wartość znajdująca się aktualnie w *s1 jest równa 0, czyli czy dobrnęliśmy do końca stringa s1. Jeeli tak - to znaczy, ze wszystkie znaki stringa s1 wystąpiły w stringu s2, a zatem s1 zawiera się w s2 począwszy od pierwszego znaku. Zatem zwrócenie 0 to nasz oczekiwany wynik.
Jeśli wynik będzie inny. Co oznacza w tym przypadku inna wartość nietrudno się już domyślić.

Co do samej operacji wczytywania danych z pliku, to pełno jest tutriali, np:
http://www.lmgtfy.com/?q=read+string+from+keyboard+C&l=1

To jest taki najprostszy przykład, ale polecam zagłębić się bardziej w temat.
Zwłaszcza ważne jest to, co zwykle nastręcza trudności, czyli co to są te gwiazdki i czemu czasem jest ich więcej, jak pilnować, by nie wyjechać sobie za tablicę i nie pozwolić użytkownikowi zepsuć nam programu ;)

Jeśli chcesz sobie pomóc w pracy, to naprawdę powinieneś zainwestować trochę czasu w dobrą książkę (wątek na ten temat już się na forum przewijał) i po prostu posiedzieć, zgłębić, zrozumieć. Pisanie programów na zajęcia z czyjąś pomocą może nie wystarczyć. Najważniejsze, to próbować, bardzo dużo próbować i zaprzyjaźnić się z debuggerem. Obserwować, co się dzieje w trakcie wykonywania programu, czytać dokumentację, po prostu do skutku. Jak już zaczniesz łapać o co chodzi, to dalej będzie z górki ;)

konto usunięte

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

B.W. Kernighan, D. M. Ritchie - "Język ANSI C"

Zainwestuj i zacznij czytać. Wystarczy.
L P

L P podskala.net

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Adam Michalski:
B.W. Kernighan, D. M. Ritchie - "Język ANSI C"

Zainwestuj i zacznij czytać. Wystarczy.

Dokładnie, czytanie i praktykowanie - nikt nie nauczy się/doświadczy tego za Ciebie.

konto usunięte

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Piotr Dudzic:
Jeśli chcesz sobie pomóc w pracy, to naprawdę powinieneś zainwestować trochę czasu w dobrą książkę (wątek na ten temat już się na forum przewijał) i po prostu posiedzieć, zgłębić, zrozumieć. Pisanie programów na zajęcia z czyjąś pomocą może nie wystarczyć. (ciach)

Nie wystarczyć? Jest bezcelowe!
Chyba, że się studiuje dla samego dyplomu...

Ale za bezczelność szóstka:
studiuje i mogę podesłać swoje zadania do zrobienia.

konto usunięte

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Piotr Likus:
Piotr Dudzic:
zgłębić, zrozumieć. Pisanie programów na zajęcia z czyjąś pomocą może nie wystarczyć. (ciach)

Nie wystarczyć? Jest bezcelowe!
To zależy, co się rozumie przez pomoc.
Tutaj ludzie sobie pomagają i wcale nie uważam tego za bezcelowe.

Chodziło mi o to, że programów na zaliczenia jest po prostu za mało, żeby się nauczyć sensownie (nawet nie 'dobrze'; na własne potrzeby kod nie zawsze musi być super jakości) programować.
Tym bardziej, jeśli do rozwiązań nie dochodzi się samodzielnie.

Natomiast nie widzę nic złego w zadaniu pytania. Bywa, że ktoś podrzuci dobry pomysł. Jeśli całe zadanie po prostu się skopiuje, to wówczas zgodzę się, że to bezcelowe ;-)
Tomasz Kaczanowski

Tomasz Kaczanowski Ot, programista

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Piotr Dudzic:
Piotr Likus:
Piotr Dudzic:
zgłębić, zrozumieć. Pisanie programów na zajęcia z czyjąś pomocą może nie wystarczyć. (ciach)

Nie wystarczyć? Jest bezcelowe!
To zależy, co się rozumie przez pomoc.
Tutaj ludzie sobie pomagają i wcale nie uważam tego za bezcelowe.

Chodziło mi o to, że programów na zaliczenia jest po prostu za mało, żeby się nauczyć sensownie (nawet nie 'dobrze'; na własne potrzeby kod nie zawsze musi być super jakości) programować.
Tym bardziej, jeśli do rozwiązań nie dochodzi się samodzielnie.

Natomiast nie widzę nic złego w zadaniu pytania. Bywa, że ktoś podrzuci dobry pomysł. Jeśli całe zadanie po prostu się skopiuje, to wówczas zgodzę się, że to bezcelowe ;-)

Zgadza się, ale co innego zadać pytanie w stylu "robię to tak, tak i tak, ale tu i tu cos mi nie wychodzi", a co innego "niech ktos za mnie to zrobi"...

konto usunięte

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Piotr Dudzic:
Piotr Likus:
Piotr Dudzic:
zgłębić, zrozumieć. Pisanie programów na zajęcia z czyjąś pomocą może nie wystarczyć. (ciach)

Nie wystarczyć? Jest bezcelowe!
To zależy, co się rozumie przez pomoc.
Tutaj ludzie sobie pomagają i wcale nie uważam tego za bezcelowe.

Chodziło mi o to, że programów na zaliczenia jest po prostu za mało, żeby się nauczyć sensownie (nawet nie 'dobrze'; na własne potrzeby kod nie zawsze musi być super jakości) programować.
Tym bardziej, jeśli do rozwiązań nie dochodzi się samodzielnie.

Zadania nie są po to żeby Cię czegoś nauczyć, raczej są po to żeby sprawdzić Twoją wiedzę. Takie są założenia.
Praktyka jest taka, że nie masz czasu wychylić się poza zadania bo każdy nauczyciel chciałby dawać zadania jak najambitniejsze, w związku z czym ledwo dajesz radę "zrobić to co trzeba".
Niektórzy nauczyciele tego nie rozumieją, ktoś mi ostatnio pokazał zadanie pt. "serwer HTTP w 2 tygodnie" (i nie chodziło o ECHO).

Z drugiej strony:
Natomiast nie widzę nic złego w zadaniu pytania. Bywa, że ktoś podrzuci dobry pomysł. Jeśli całe zadanie po prostu się skopiuje, to wówczas zgodzę się, że to bezcelowe ;-)

Nie ma nic złego w zadawaniu pytań. Gorzej jeśli ktoś nawet nie ma czasu na to żeby je sformułować.Piotr Likus edytował(a) ten post dnia 09.12.10 o godzinie 15:18
Grzegorz Rolewicz

Grzegorz Rolewicz Kierownik działu
zapewnienia jakości
i regulacji

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Hmm wydawalo mi sie ze pytanie bylo dosc proste, zapytalem czy ktos to moze zrobic lub wytlumaczyc jak zrobic. Prosze wiec wstrzymac sie od odpowiedzi ze jest to beszczelne lub odsylac mnie do czytania ksiazek. Gdybym mial czas na czytanie ksiazek to pewnie bym w ogole tego posta nie napisal ...
Tomasz Kaczanowski

Tomasz Kaczanowski Ot, programista

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Grzegorz Rolewicz:
Hmm wydawalo mi sie ze pytanie bylo dosc proste, zapytalem czy ktos to moze zrobic lub wytlumaczyc jak zrobic. Prosze wiec wstrzymac sie od odpowiedzi ze jest to beszczelne lub odsylac mnie do czytania ksiazek. Gdybym mial czas na czytanie ksiazek to pewnie bym w ogole tego posta nie napisal ...

Jak nie masz na to czasu, to zrezygnuj ze studiów. Albo rybka, albo....
L P

L P podskala.net

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

To nie masz czasu na studia w takim razie :)
L P

L P podskala.net

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Co za zgodność w czasie :P
Grzegorz Rolewicz

Grzegorz Rolewicz Kierownik działu
zapewnienia jakości
i regulacji

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Dobra niech ktos zamknie ten temat ...

konto usunięte

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Piotr Likus:
Zadania nie są po to żeby Cię czegoś nauczyć, raczej są po to żeby sprawdzić Twoją wiedzę. Takie są założenia.
Od tego są zaliczenia i egzaminy. Takie są założenia.
Zadania sprawdzają wiedzę, jak najbardziej, ale ułożone są (z mojej perspektywy) zazwyczaj w taki sposób, żeby po ich wykonaniu wiedzieć i umieć więcej, niż przed.
Praktyka jest taka, że nie masz czasu wychylić się poza zadania bo każdy nauczyciel chciałby dawać zadania jak najambitniejsze, w związku z czym ledwo dajesz radę "zrobić to co trzeba".
Nie przesadzajmy. Większość czasu i tak schodzi na głupoty. Naprawdę ambitnych zadań jest mało, choć to wystarczy, żeby poczuć po co się je robi.
Niektórzy nauczyciele tego nie rozumieją, ktoś mi ostatnio pokazał zadanie pt. "serwer HTTP w 2 tygodnie" (i nie chodziło o ECHO).
Ja pisałem prosty serwer HTTP na trzygodzinnej laborce. Wiele nie robił, ale działał i nawet php wołał.
Pewne minimum, żeby załapać w czym rzecz. Natomiast jeśli do zrobienia jest program, który można nazwać pełnowartościowym - od tego są projekty semestralne.

Sposobowi i poziomowi kształcenia informatyków na uczelniach wyższych na pewno wiele można zarzucić, ale to naprawdę nie jest żaden survival, ani nie chodzi się tam wyłącznie po papier. Trzeba korzystać z możliwości po prostu. I robić coś ponadto.

konto usunięte

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Grzegorz Rolewicz:
Hmm wydawalo mi sie ze pytanie bylo dosc proste, zapytalem czy ktos to moze zrobic lub wytlumaczyc jak zrobic. Prosze wiec wstrzymac sie od odpowiedzi ze jest to beszczelne lub odsylac mnie do czytania ksiazek. Gdybym mial czas na czytanie ksiazek to pewnie bym w ogole tego posta nie napisal ...

Ty nie masz czasu, ale ktoś ma mieć, żeby za Ciebie odwalać robotę? To powinieneś napisać proponowaną stawkę. Liczysz, że za darmo znajdziesz tutaj jelenia do zrobienia zaliczenia?
L P

L P podskala.net

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Piotr Dudzic:
Piotr Likus:
Zadania nie są po to żeby Cię czegoś nauczyć, raczej są po to żeby sprawdzić Twoją wiedzę. Takie są założenia.
Od tego są zaliczenia i egzaminy. Takie są założenia.
Zadania sprawdzają wiedzę, jak najbardziej, ale ułożone są (z mojej perspektywy) zazwyczaj w taki sposób, żeby po ich wykonaniu wiedzieć i umieć więcej, niż przed.

Zadania są po to by nauczyć umiejętnie wykorzystywać wiedzę teoretyczną w praktyce. Amen.
Praktyka jest taka, że nie masz czasu wychylić się poza zadania bo każdy nauczyciel chciałby dawać zadania jak najambitniejsze, w związku z czym ledwo dajesz radę "zrobić to co trzeba".
Nie przesadzajmy. Większość czasu i tak schodzi na głupoty. Naprawdę ambitnych zadań jest mało, choć to wystarczy, żeby poczuć po co się je robi.

Zadań na studiach jest mnóstwo, setki.. Z tych zadań najczęściej są egzaminy (adekwatnie do poziomu zadań). Nie wiem co rozumiesz przez "głupoty", ale jeżeli masz na myśli proste algorytmy to pamiętaj że z tych "głupot" składają się całe programy.
Niektórzy nauczyciele tego nie rozumieją, ktoś mi ostatnio pokazał zadanie pt. "serwer HTTP w 2 tygodnie" (i nie chodziło o ECHO).
Ja pisałem prosty serwer HTTP na trzygodzinnej laborce. Wiele nie robił, ale działał i nawet php wołał.
Pewne minimum, żeby załapać w czym rzecz. Natomiast jeśli do zrobienia jest program, który można nazwać pełnowartościowym - od tego są projekty semestralne.

Brawo, w Pythonie to całe 5 lini jak dobrze pamiętam (z cgi parę linie więcej). Pisanie wartościowych programów polega na ich napisaniu :) przede wszystkim. Praktyka, praktyka ..
Sposobowi i poziomowi kształcenia informatyków na uczelniach wyższych na pewno wiele można zarzucić, ale to naprawdę nie jest żaden survival, ani nie chodzi się tam wyłącznie po papier. Trzeba korzystać z możliwości po prostu. I robić coś ponadto.

True.
Grzegorz Rolewicz

Grzegorz Rolewicz Kierownik działu
zapewnienia jakości
i regulacji

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Stawke napisalem osoba na prywatnej wiadomosci osoba sie zgodzila temat zamkniety. Prosze nie szukajcie sensacji, pytanie w poscie bylo proste a wiekszosc z Was zrobila z tego wilekie halo. Jest to zlecenie uslugi jak kazde inne...

Ps. Dzieki dla Piotra Dudzica za wytlumaczenie 2 zadaniaGrzegorz Rolewicz edytował(a) ten post dnia 09.12.10 o godzinie 16:02
Karol Z.

Karol Z. Programista,
elektronik

Temat: Szukam pomocy w pisaniu prostych programów w czystym C...

Grzegorz Rolewicz:
Dobra niech ktos zamknie ten temat ...

Grzegorzu, temat zamykam.



Wyślij zaproszenie do