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==1
{
}
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
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:
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