binarne dziesiętne

background image

Moduły w programowaniu

Marek Deutsch
wat-wdp@wp.pl

background image

const MaxL = 8;
typedef int TLBin[MaxL];

/* bin_def.h */

#if !defined(__bin_def_H)
#define __bin_def_H

const MaxL = 8;
typedef int TLBin[MaxL];

#endif /* __bin_def_H */

/*
Definicje:
- maksymalnej ilosci cyfr liczby binarnej
- typu danych TLBin dla liczb binarnych
*/

Definicja modułu – plik nagłówkowy

background image

wyn wyn + l_bin[i] *

2

MaxL-i-1

funkcja bin2int

l_bin [ ]

wyn 0

i 0...MaxL-1

STOP

bin2int

wyn

1)

4)

2)

3)

void bin2int(TLBin l_bin, int *l_int)
{
int i;

*l_int = 0;

for (i = 0; i < MaxL; i = i+1)

{

*l_int = *l_int +
l_bin[i] * pow(2,MaxL-i-1);
}
}

background image

l_bin i pom

mod 2
pom
pom div 2

procedura

int2bin
l_int

l_bin

pom

l_int

i MaxL-1 ...0

STO
P

1)

2)

3)
4)

void int2bin(int l_int, TLBin l_bin)
{
int pom, i ;

pom = l_int;

for (i = MaxL-1; i >= 0; i = i-1)

{

l_bin[i] = pom%2;
pom = pom/2;
}
}

background image

void int2bin(int l_int, TLBin l_bin);
void bin2int(TLBin l_bin, int *l_int);

/* bin_int.h */

#if !defined(__bin_int_H)

#define __bin_int_H
#include "bin_def.h"

void int2bin(int l_int, TLBin l_bin);
void bin2int(TLBin l_bin, int *l_int);

#endif /* __bin_int_H */
/*
Definicje:
- operacji konwersji int -> TLBin
- operacji konwersji TLBin -> int
*/

Definicja modułu – plik nagłówkowy

background image

void bin2int(TLBin l_bin, int *l_int)
{
int i;

*l_int = 0;
for (i = 0; i < MaxL; i = i+1) {
*l_int = *l_int + l_bin[i] * pow(2,MaxL-i-1);
}
}

void int2bin(int l_int, TLBin l_bin)
{
int pom, i ;

pom = l_int;
for (i = MaxL-1; i >= 0; i = i-1) {
l_bin[i] = pom%2;
pom = pom/2;
}
}

/* bin_int.c */

#include <math.h>

#include "bin_def.h"
#include "bin_int.h"

void int2bin(int l_int, TLBin l_bin)

{
int pom, i ;

pom = l_int;
for (i = MaxL-1; i >= 0; i = i-1) {
l_bin[i] = pom%2;
pom = pom/2;
}
}

void bin2int(TLBin l_bin, int *l_int)

{
int i;

*l_int = 0;
for (i = 0; i < MaxL; i = i+1) {
*l_int = *l_int + l_bin[i] * pow(2,MaxL-i-1);
}
}

Implementacja modułu

background image

void printf_bin(TLBin l_bin);
int scanf_bin(TLBin l_bin);

/* bin_io.h */

#if !defined(__bin_io_H)

#define __bin_io_H
#include "bin_def.h"

void printf_bin(TLBin l_bin);
int scanf_bin(TLBin l_bin);

#endif /* __bin_io_H */
/*
Definicje:
- operacji wypisanie danej typu TLBin
- operacji wczytania danej typu TLBin
*/

Definicja modułu – plik nagłówkowy

background image

int scanf_bin(TLBin l_bin)
{
int i;

for(i = 0 ; i < MaxL ; i = i+1) {
scanf("%1i",&l_bin[i]);
if(!((l_bin[i]==0) || (l_bin[i]==1))) {
return(0);
}
}
return(1);
}

void printf_bin(TLBin l_bin)
{
int i;

for(i = 0; i < MaxL; i = i+1) {
printf("%1i",l_bin[i]);
}
}

/* bin_io.c */

#include <stdio.h>

#include "bin_def.h"
#include "bin_io.h"

void printf_bin(TLBin l_bin)

{
int i;

for(i = 0; i < MaxL; i = i+1) {
printf("%1i",l_bin[i]);
}
}

int scanf_bin(TLBin l_bin)

{
int i;

for(i = 0 ; i < MaxL ; i = i+1) {
scanf("%1i",&l_bin[i]);
if(!((l_bin[i]==0) || (l_bin[i]==1))) {
return(0);
}
}
return(1);
}

Implementacja modułu

background image

Moduł konwersji

/* bin_int.h */

#if !defined(__bin_int_H)

#define __bin_int_H
#include "bin_def.h"

void int2bin(int l_int, TLBin l_bin);
void bin2int(TLBin l_bin, int *l_int);

#endif /* __bin_int_H */
/*
Definicje:
- operacji konwersji int -> TLBin
- operacji konwersji TLBin -> int
*/

/* bin_int.c */

#include <math.h>

#include "bin_def.h"
#include "bin_int.h"

void int2bin(int l_int, TLBin l_bin)
{
int pom, i ;

pom = l_int;
for (i = MaxL-1; i >= 0; i = i-1) {
l_bin[i] = pom%2;
pom = pom/2;
}
}

void bin2int(TLBin l_bin, int *l_int)
{
int i;

*l_int = 0;
for (i = 0; i < MaxL; i = i+1) {
*l_int = *l_int +
l_bin[i] * pow(2,MaxL-i-1);
}
}

background image

Moduł wej / wyj

/* bin_io.h */

#if !defined(__bin_io_H)

#define __bin_io_H
#include "bin_def.h"

void printf_bin(TLBin l_bin);
int scanf_bin(TLBin l_bin);

#endif /* __bin_io_H */
/*
Definicje:
- operacji wypisanie danej typu TLBin
- operacji wczytania danej typu TLBin
*/

/* bin_io.c */

#include <stdio.h>

#include "bin_def.h"
#include "bin_io.h"

void printf_bin(TLBin l_bin)
{
int i;

for(i = 0; i < MaxL; i = i+1) {
printf("%1i",l_bin[i]);
}
}

int scanf_bin(TLBin l_bin)
{
int i;

for(i = 0 ; i < MaxL ; i = i+1) {
scanf("%1i",&l_bin[i]);
if(!((l_bin[i]==0) || (l_bin[i]==1))) {
return(0);
}
}
return(1);
}

background image

/* bin_test.c */

#include <stdio.h>
#include "bin_def.h"
#include "bin_int.h"
#include "bin_io.h"

void main(void)
{
int dziesietna;
TLBin binarna;

printf ("\nPodaj liczbe dziesietna");
scanf("%i",&dziesietna);
int2bin(dziesietna, binarna);
printf("\n %i binarna=", dziesietna); printf_bin(binarna);
bin2int(binarna,&dziesietna);
printf(" i dziesietnie=%i", dziesietna);
...

printf("Podaj osmiopozycyjna liczbe binarna");
if(scanf_bin(binarna)) {
bin2int(binarna,&dziesietna);
printf("\n dziesietnie=%i",dziesietna);
int2bin(dziesietna,binarna);
printf("binarnie =");
printf_bin(binarna);
}
else
printf("Blad w podanej liczbie");
}

background image

bin_def.h

const MaxL = 8;
typedef int TLBin[MaxL];

bin_io.h
bin_io.c

void printf_bin(TLBin l_bin);
int scanf_bin(TLBin l_bin);

bin_int.h
bin_int.c

void int2bin(int l_int,
TLBin l_bin);
void bin2int(TLBin l_bin,
int *l_int);

stdio.h

printf
scanf

bin_test.c

math.h

pow


Document Outline


Wyszukiwarka

Podobne podstrony:
Konwersja liczb z dziesiętnych na binarnr w C
Program do konwersji liczb w systemie dziesiętnym na binarny
20(z binarnego na dziesietny)
Konw. liczb dziesietne-binarne-heks, ETI Edukacja technicyno inf,, KONSPEKTY, Konspekty
19(z dziesiętnego na binarny)
elektryczna implementacja systemu binarnego
10 0 Reprezentacja Binarna
04 Liczby ujemne i ułamki w systemie binarnym
Drzewa binarne
CZY DZIESIECINA JEST OBOWIAZKOW Nieznany
19 zapis binarny systemow analogowych
[demo] Vademecum Hakera Edycja plików binarnych
Dziesiecioscian-edukacji[1] tabela porĂłwnawcza, Pedagogika
LOGIKA BINARNA, technik teleinformatyk
dziesiętne dod i odej, MATEMATYKA klasa 4
ILOCZYN PRZEZ ROZKŁAD NA DZIESIĄTKI, materiały szkolne
Zamiana ułamków dziesiętnych na ułamki zwykłe

więcej podobnych podstron