C/Przykłady z komentarzem: Różnice pomiędzy wersjami
< C
Usunięta treść Dodana treść
{{TODO|zrobić odnośniki do opisu najważniejszych funkcji}} |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
<small>< [[Programowanie:C]]</small> |
<small>< [[Programowanie:C]]</small> |
||
{{TODO|zrobić odnośniki do opisu najważniejszych funkcji}} |
|||
=== Losowe liczby zespolone === |
=== Losowe liczby zespolone === |
||
Linia 8: | Linia 6: | ||
Program napisany i skompilowany został w środowisku GNU/Linux. |
Program napisany i skompilowany został w środowisku GNU/Linux. |
||
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdio.h|stdio.h]]> |
|||
<pre> |
|||
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdlib.h|stdlib.h]]> // dla funkcji [[Programowanie:C:rand|rand()]] oraz [[Programowanie:C:srand|srand()]] |
|||
#include <stdio.h> |
|||
#include < |
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#time.h|time.h]]> // dla funkcji [[Programowanie:C:time|time()]] |
||
⚫ | |||
#include <time.h> // dla funkcji time() |
|||
⚫ | |||
{ |
|||
⚫ | |||
int i, j, n, m; |
|||
{ |
|||
float re, im; |
|||
FILE *fp; |
|||
⚫ | |||
FILE *fp; |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
/* jezeli byl blad w otwieraniu pliku i go nie otwarto, |
/* 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 |
wówczas funkcja fclose(fp) wywołana na końcu programu zgłosi błąd |
||
Linia 31: | Linia 28: | ||
warunek, który w kontrolowany sposób zatrzyma program (funkcja exit;) |
warunek, który w kontrolowany sposób zatrzyma program (funkcja exit;) |
||
*/ |
*/ |
||
if ( (fp = fopen(fileName, "w")) == NULL ) |
if ( (fp = fopen(fileName, "w")) == NULL ) |
||
{ |
{ |
||
puts("Otwarcie pliku nie jest mozliwe!"); |
[[Programowanie: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 */ |
||
} |
} |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
/* w pierwszym wierszu umieszczono wymiary macierzy */ |
/* w pierwszym wierszu umieszczono wymiary macierzy */ |
||
srand( (unsigned int) time(0) ); |
srand( (unsigned int) time(0) ); |
||
for (i=1; i<=n; i++) |
for (i=1; i<=n; i++) |
||
⚫ | |||
for (j=1; j<=m; j++) |
|||
{ |
{ |
||
for (j=1; j<=m; j++) |
|||
{ |
|||
re = ((rand() % 200)-100)/ 10.0; |
|||
im = ((rand() % 200)-100)/ 10.0; |
|||
fprintf(fp,"%.1f %.1f", re, im ); |
fprintf(fp,"%.1f %.1f", re, im ); |
||
⚫ | |||
} |
|||
⚫ | |||
⚫ | |||
fprintf(fp,"\n"); |
fprintf(fp,"\n"); |
||
} |
} |
||
⚫ | |||
⚫ | |||
} |
|||
⚫ | |||
⚫ | |||
} |
|||
</pre> |
|||
=== Zamiana liczb dziesiętnych na liczby w systemie dwójkowym === |
=== Zamiana liczb dziesiętnych na liczby w systemie dwójkowym === |
Wersja z 14:18, 13 kwi 2006
Losowe liczby zespolone
Poniższy program generuje wiersz po wierszu macierz o określonych przez użytkownika wymiarach, zawierającą losowe liczby zespolone. 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, im; 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; im = ((rand() % 200)-100)/ 10.0; fprintf(fp,"%.1f %.1f", re, im ); 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 będzie działa poprawnie dla liczb w zakresie od 0 do 65535, jednak radzę popróbować z innymi liczbami.
#include <stdio.h> unsigned short a; /* 16-bitowa zmienna */ void dectobin () { int licznik = 15; for (;licznik>=0;licznik--) { if ((a>>licznik)&1) printf ("1"); else printf ("0"); } } int main () { printf ("Podaj liczbę: "); scanf ("%d", &a); printf ("%d(10) = ", a); dectobin(); printf ("\n"); return 0; }