C/Przykłady z komentarzem: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
GDR! (dyskusja | edycje)
m →‎Zamiana liczb dziesiętnych na liczby w systemie dwójkowym: Wyświetlanie max dopuszczalnej wartości
Derbeth (dyskusja | edycje)
linki do definicji funkcji (trzeba nabić sobie ranking Google, nie ;-), poprawa komentarzy
Linia 6:
Program napisany i skompilowany został w środowisku GNU/Linux.
 
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdio.h|stdio.h]]>
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdlib.h|stdlib.h]]> //* dla funkcji [[Programowanie:C:rand|rand()]] oraz [[Programowanie:C:srand|srand()]] */
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#time.h|time.h]]> //* dla funkcji [[Programowanie:C:time|time()]] */
main()
{
int i, j, n, m;
float re, im;
FILE *fp;
char fileName[128];
[[Programowanie:C:printf|printf]]("Wprowadz nazwe pliku wynikowego..\n");
[[Programowanie:C:scanf|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 = [[Programowanie:C:fopen|fopen]](fileName, "w")) == NULL )
{
[[Programowanie:C:puts|puts]]("Otwarcie pliku nie jest mozliwe!");
exit; /* jeśli w procedurze glownej
to piszemy bez nawiasow */
}
else { puts("Plik otwarty prawidłowo.."); }
[[Programowanie:C:fprintf|fprintf]](fp, "%d %d\n", n, m);
/* w pierwszym wierszu umieszczono wymiary macierzy */
[[Programowanie:C:srand|srand]]( (unsigned int) [[Programowanie:C:time|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");
}
[[Programowanie:C:fclose|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 <code>unsigned short int</code> w twoim kompilatorze.
<pre>
#include <stdio.h>
#include <limits.h>
 
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdio.h|stdio.h]]>
void dectobin (unsigned short a)
#include <[[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#limits.h|limits.h]]>
int licznik;
void dectobin (unsigned short a)
 
{
/* 8 to ilość bitów w bajcie */
int licznik; = 8 * sizeof(a);
while(--licznik >= 0)
/* 8 to ilość bitów w bajcie */
{
iflicznik ((a= >>8 licznik)* & 1sizeof(a) ;
while(--licznik >= 0)
printf ("1");
else {
printfif ("0"(a >> licznik); & 1)
printf ("1");
}
else
printf ("0");
 
}
int main ()
}
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;
}
 
</pre>
 
 
<small>< [[Programowanie:C]]</small>