C/Przykłady z komentarzem: Różnice pomiędzy wersjami
< C
Usunięta treść Dodana treść
Zdzichobot (dyskusja | edycje) m Programowanie:C:Przykłady z komentarzem przeniesiono do C/Przykłady z komentarzem: zmiana konwencji nazewnictwa |
Zdzichobot (dyskusja | edycje) m poprawa linków |
||
Linia 1: | Linia 1: | ||
<noinclude><small>< [[ |
<noinclude><small>< [[C]]</small></noinclude> |
||
=== Liczby losowe === |
=== Liczby losowe === |
||
Linia 6: | Linia 6: | ||
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdio.h|stdio.h]]> |
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdio.h|stdio.h]]> |
||
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdlib.h|stdlib.h]]> /* dla funkcji [[ |
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdlib.h|stdlib.h]]> /* dla funkcji [[C/rand|rand()]] oraz [[C/srand|srand()]] */ |
||
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#time.h|time.h]]> /* dla funkcji [[ |
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#time.h|time.h]]> /* dla funkcji [[C/time|time()]] */ |
||
main() |
main() |
||
Linia 16: | Linia 16: | ||
char fileName[128]; |
char fileName[128]; |
||
[[ |
[[C/printf|printf]]("Wprowadz nazwe pliku wynikowego..\n"); |
||
[[ |
[[C/scanf|scanf]]("%s",&fileName); |
||
printf("Wprowadz po sobie liczbe wierszy i kolumn macierzy oddzielone spacją..\n"); |
printf("Wprowadz po sobie liczbe wierszy i kolumn macierzy oddzielone spacją..\n"); |
||
Linia 27: | Linia 27: | ||
warunek, który w kontrolowany sposób zatrzyma program (funkcja exit;) |
warunek, który w kontrolowany sposób zatrzyma program (funkcja exit;) |
||
*/ |
*/ |
||
if ( (fp = [[ |
if ( (fp = [[C/fopen|fopen]](fileName, "w")) == NULL ) |
||
{ |
{ |
||
[[ |
[[C/puts|puts]]("Otwarcie pliku nie jest mozliwe!"); |
||
exit; /* jeśli w procedurze glownej |
exit; /* jeśli w procedurze glownej |
||
to piszemy bez nawiasow */ |
to piszemy bez nawiasow */ |
||
Linia 39: | Linia 39: | ||
/* w pierwszym wierszu umieszczono wymiary macierzy */ |
/* w pierwszym wierszu umieszczono wymiary macierzy */ |
||
[[ |
[[C/srand|srand]]( (unsigned int) [[C/time|time]](0) ); |
||
for (i=1; i<=n; i++) |
for (i=1; i<=n; i++) |
||
{ |
{ |
||
Linia 50: | Linia 50: | ||
fprintf(fp,"\n"); |
fprintf(fp,"\n"); |
||
} |
} |
||
[[ |
[[C/fclose|fclose]](fp); |
||
return 0; |
return 0; |
||
} |
} |
||
Linia 88: | Linia 88: | ||
} |
} |
||
<noinclude><small>< [[ |
<noinclude><small>< [[C]]</small></noinclude> |
Wersja z 17:28, 18 paź 2006
< C
Liczby losowe
Poniższy program generuje wiersz po wierszu macierz o określonych przez użytkownika wymiarach, zawierającą losowo wybrane liczby. Każdy wygenerowany wiersz macierzy zapisywany jest w pliku tekstowym o wprowadzonej przez użytkownika nazwie. W pierwszym wierszu pliku wynikowego zapisano wymiary utworzonej macierzy. Program napisany i skompilowany został w środowisku GNU/Linux.
#include <stdio.h> #include <stdlib.h> /* dla funkcji rand() oraz srand() */ #include <time.h> /* dla funkcji time() */ main() { int i, j, n, m; float re; FILE *fp; char fileName[128]; printf("Wprowadz nazwe pliku wynikowego..\n"); scanf("%s",&fileName); printf("Wprowadz po sobie liczbe wierszy i kolumn macierzy oddzielone spacją..\n"); scanf("%d %d", &n, &m); /* jezeli byl blad w otwieraniu pliku i go nie otwarto, wówczas funkcja fclose(fp) wywołana na końcu programu zgłosi błąd wykonania i wysypie nam program z działania, stąd musimy umieścić warunek, który w kontrolowany sposób zatrzyma program (funkcja exit;) */ if ( (fp = fopen(fileName, "w")) == NULL ) { puts("Otwarcie pliku nie jest mozliwe!"); exit; /* jeśli w procedurze glownej to piszemy bez nawiasow */ } else { puts("Plik otwarty prawidłowo.."); } fprintf(fp, "%d %d\n", n, m); /* w pierwszym wierszu umieszczono wymiary macierzy */ srand( (unsigned int) time(0) ); for (i=1; i<=n; i++) { for (j=1; j<=m; j++) { re = ((rand() % 200)-100)/ 10.0; fprintf(fp,"%.1f", re ); if (j!=m) fprintf(fp," "); } fprintf(fp,"\n"); } fclose(fp); return 0; }
Zamiana liczb dziesiętnych na liczby w systemie dwójkowym
Zajmijmy się teraz innym zagadnieniem. Wiemy, że komputer zapisuje wszystkie liczby w postaci binarnej (czyli za pomocą jedynek i zer). Spróbujmy zatem zamienić liczbę, zapisaną w "naszym" dziesiątkowym systemie na zapis binarny. Uwaga: Program działa jedynie dla liczb od 0 do maksymalnej wartości którą może przyjąć typ unsigned short int
w twoim kompilatorze.
#include <stdio.h> #include <limits.h> void dectobin (unsigned short a) { int licznik; /* 8 to ilość bitów w bajcie */ licznik = 8 * sizeof(a); while(--licznik >= 0) { if ((a >> licznik) & 1) printf ("1"); else printf ("0"); } } int main () { unsigned short a; printf ("Podaj liczbę od 0 do %d: ", USHRT_MAX); scanf ("%d", &a); printf ("%d(10) = ", a); dectobin(a); printf ("\n"); return 0; }
< C