matematykaszkolna.pl
Jezyk C Max: Umie ktos programować w języku C
20 lip 16:57
Max: jak się stosuje pętle for ? Napisałem coś takiego, niby działa, ale nie rozumiem, bo kod wydaje mi się dziwnie napisany, jak w pętli for napisać program do przeliczania sekundy na minuty #include <stdio.h> #include <stdlib.h> int main() { int sekund,minuty,reszta; printf("Wpisz ile sekund i przelicz na minuty\n"); for (scanf("%d",&sekund),minuty=sekund/60,reszta=sekund%60;sekund==1emotka { } printf("%d sekund to %d minut i %d sekund\n",sekund,minuty,reszta); return 0; }
20 lip 17:02
Max: #include <stdio.h> #include <stdlib.h> int main() { int sekund,minuty,reszta; printf("Wpisz ile sekund i przelicz na minuty\n"); for (scanf("%d",&sekund),minuty=sekund/60,reszta=sekund%60;sekund==1; ) { } printf("%d sekund to %d minut i %d sekund\n",sekund,minuty,reszta); return 0; }
20 lip 17:02
jc: Wpisz jeden emotka
20 lip 17:09
Max: a faktycznie wpisze jeden i przestaje działać, a dlaczego mi działa dopiero jak zastosuje pustą klamrę ,po pętli for { }
20 lip 17:32
Max: i jak zrobić w pętli for aby za każdym razem mozna było wpisywać i liczyć
20 lip 17:37
jc: Usuń kllamrę i dopisz średnik. Dalej będzie działać, jak wczesniej. Jak usuniesz klamrę nie dopisując średnika, program będzie wyświetlał wynik tylko dla 1 sekundy.
20 lip 17:37
jc: Możesz poprawić tak: for (scanf("%d",&sekund); sekund > 0; ){ minuty=sekund/60; reszta=sekund%60; printf("%d sekund to %d minut i %d sekund\n",sekund,minuty,reszta); } Wtedy program będzie wyliczał wynik dopóki nie wpiszesz zera lub liczby ujemnej.
20 lip 20:22
Max: dzieki wielkie, działa
20 lip 21:23
b.: powinno chyba być for (scanf("%d",&sekund); sekund > 0; scanf("%d",&sekund)){
20 lip 21:28
Max: chociaż czekaj, wpisałem tak i pętla nie chce się zatrzymać, nie moge dalej wpisywac. #include <stdio.h> #include <stdlib.h> int main() { int sekund,minuty,reszta; printf("Wpisz ile sekund i przelicz na minuty\n" ); for (scanf("%d",&sekund);sekund>0; ) { minuty=sekund/60; reszta=sekund%60; printf("%d sekund to %d minut i %d sekund\n",sekund,minuty,reszta); } return 0; }
20 lip 21:31
Max: zaraz sprawdze
20 lip 21:31
Max: teraz dopiero działa, git
20 lip 21:32
Max: dzieki osobo o nicku "b."
20 lip 21:34
jc: Oczywiście, napisałem bzdurę ... Program napisałbym jednak prościej, ładniej i czytelniej: f(;; ){ printf("Wpisz ile sekund i przelicz na minuty\n" ); scanf("%d",&sekund); if( sekund <= 0) break; minuty=sekund/60; reszta=sekund%60; printf("%d sekund to %d minut i %d sekund\n",sekund,minuty,reszta); }
20 lip 22:05
Max: jak poznam co to za petla napisana jako samo f , co to if break to się przyda. W tej chwili jestem w dziale z pętlami while,for., instrukcji warunkowych jeszcze nie przerabiałem
21 lip 10:09
jc: f(;; ){ } to nieskończona petla. Instrukcja "break" wyrzuca nas z pętli. Jesli sprawdzamy warunek na początku, możemy użyć pętli while( ... ){ } jeśli na końcu do{ }while( ... ); a jesli w środku, to pozostaje nam instrukcja break (możemy też opuścić pętlę wychodząc z funkcji, pisząc return). 3 poniższe rozwiązania są równoważne for(;; ){ } while(1){ } do{ } while(1); ale pierwszw wygląda najładniej (choć to kwestia gustu). Pętlę "for" używa się, kiedy mamy jakieś zmienne sterujące. U nas takich zmiennych nie było.
21 lip 16:43
Dziadek Mróz: rysunek for (iterator; warunek; krok) { ciało }
21 lip 18:19
Dziadek Mróz: Ewentualnie schemat ten sam ale: for (instrukcja_startowa; warunek; instrukcja_co_krok) { ciało }
21 lip 18:21
Dziadek Mróz: 1. size_t i; for (i = 0; i < 10; i++) { printf("%u\n", i); } 2. size_t i; for (printf("Petla for\n"), i = 0; i < 10; printf("Iteracja %u\n", i), i++) { }
21 lip 18:24