forklaring af advancerede funktioner
skal forstå det 100%.... så det ville være rart hvis folk kunne rette på det jeg har skrevet og skrive resten af forklaringerne :) det tager vist heller ikke den store tid..../* Jonas R. DFT uddannelsen 2004 */
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void dectobin();
void dectohex();
void bintodec();
void hextobin();
void menuet();
void ramme();
void menuto();
int inbin(char *);
char num[33];
char decibina;
int i;
int a;
int l;
int b;
int hex;
int ac;
int ad;
int ae;
int af;
int ag;
int ah;
int ai;
int aj;
unsigned dec;
unsigned bin;
unsigned bum;
unsigned ciffer;
unsigned bit;
int main(void)
{
char cont;
do
{
clrscr(); // rydder skærmen
ramme(); // gør opmærksom på at void ramme(); skal kaldes
menuet(); // gør opmærksom på at void menuet(); skal kaldes
menuto(); // gør opmærksom på at void menuto(); skal kaldes
gotoxy(22,18); // koordinater til tekststregen nedenunder
cprintf("Vil du afslutte? J/N\n"); // tekststreng vist på skærmen
do
{ // her starter "do"
cont = getch();
}
while(cont != 'j' && cont != 'J' && cont != 'n' && cont != 'N'); // aktiverer knapperne j-J n-N
}
while(cont == 'n' || cont == 'N'); // hvis man trykker n (NEJ) ryger man tilbage til hovedmenuen, hvis man trykker j (JA) ryger man ud af programmet
return 0; // tilbage til starten af "do"
} // her slutter "do"
void ramme()
{ // start på min ramme
_setcursortype(_NOCURSOR); // gør 'cursor' usynlig på skærmen
textbackground(WHITE); // gør baggrunden "hvid" dvs. Grå
textcolor(561); // giver teksten farve, dvs. tekst skrevet i en cprintf og ikke i en printf
clrscr(); // rydder skærm
logo(); // kalder logo
for(int i=21;i<58;i++) // gentag kommando
{
gotoxy(i,5); // koordinater for første tegn
cprintf("%c",205); // indsæt dette symbol
}
for(int a=6;a<21;a++)
{
gotoxy(20,a);
cprintf("%c",186);
}
for(int l=21;l<58;l++)
{
gotoxy(l,21);
cprintf("%c",205);
}
for(int b=5;b<21;b++)
{
gotoxy(58,b+1);
cprintf("%c",186);
}
gotoxy(20,5);
cprintf("%c",201);
gotoxy(20,21);
cprintf("%c",200);
gotoxy(58,5);
cprintf("%c",187);
gotoxy(58,21);
cprintf("%c",188);
} // slut på min ramme
void menuet()
{ // start på min første menu
gotoxy(22,6);
cprintf("Tryk 1 for at regne Dec til Bin");
gotoxy(22,7);
cprintf("Tryk 2 for at regne Dec til Hex");
gotoxy(22,8);
cprintf("Tryk 3 for at regne Hex til Dec");
gotoxy(22,9);
cprintf("Tryk 4 for at regne Hex til Bin");
gotoxy(22,10);
cprintf("Tryk 5 for at regne Bin til Dec");
gotoxy(22,11);
cprintf("Tryk 6 for at regne Bin til Hex");
gotoxy(22,14);
cprintf("OBS! kun 1'er og 0'er i '5' og '6'");
} // slut på min første menu
void menuto()
{ // start på min anden menu
decibina=getch();
switch(decibina)
{ // start på switch
case '1': // hvis du trykker '1' sker dette
clrscr(); // rydder skærmen
ramme(); // kalder rammen (OG logo fordi logo ligger inden i rammen)
gotoxy(22,6); // koordinater til nedenstående
cprintf("Dec til Bin: "); // tekst
gotoxy(35,6); // koordinater til nedenstående
cscanf("%u",&dec); // gemmer indtastning i 'unsigned dec;'
gotoxy(22,8); // koordinater til nedenstående
cprintf("Dit tal i Bin: "); // tekst
dectobin(); // kalder omregner: void dectobin()
break; // slutter case '1'
case '2': // hvis du trykker '2' sker dette
clrscr(); // rydder skærmen
ramme(); // kalder rammen
gotoxy(22,6); // gå til nedenstående koordinater
cprintf("Dec til Hex: "); // tekst
cscanf("%u",&hex); // gemmer indtastning i 'int hex;'
gotoxy(22,8); // koordinater til nedenstående
cprintf("Dit tal i Hex: %X",hex); // dit resultat i hex, tekst
getch(); // tryk enter for at fortsætte
break; // slut på case '2'
case '3': // hvis du trykker '3' sker dette
clrscr(); // rydder skærmen
ramme(); // kalder void ramme()
gotoxy(22,6); // koordinater til nedenstående
cprintf("hex til dec: "); // tekst
cscanf("%X",&dec); // gem indtastning i int dec;
gotoxy(22,8); // koordinater til nedenstående
cprintf("dit tal i dec: %d",dec); // omregner dit hexadecimale tal til decimal og viser på skærmen
getch(); // tryk enter for at fortsætte
break; // slut på case '3'
case '4': // start case '4'
clrscr(); // clear screen, ryd skærmen
ramme(); // kalder void ramme()
gotoxy(22,6); // koordinater
cprintf("hex til bin: "); // tekst
cscanf("%X",&hex); // gemmer din indtastning i int hex;
gotoxy(22,8); // koordinater
cprintf("dit tal i bin: "); // tekst
hextobin(); // kalder omregner
getch(); // tryk enter for at fortsætte
break; // slut på case '4'
case '5': // start på case '5'
clrscr(); // ryd skærm
ramme(); // kalder void ramme()
gotoxy(22,6); // koordinater
cprintf("bin til dec: "); // tekst
char num[33]; // et storage ligesom int og float
cscanf("%s",num); // gemmer din indtastning i char num[33];
int dec = inbin(num); // får programmet til at omregne
gotoxy(22,8); // koordinater
cprintf("dit tal i dec: %d",dec); // omregner dit tal til decimal
getch(); // tryk enter for at forsætte
break; // slut på case '5'
case '6': // start på case '6'
clrscr(); // clear screen, ryd skærmen
ramme(); // kalder void ramme()
gotoxy(22,6); //koordinater
cprintf("bin til hex: "); // tekst
cscanf("%s",num); // gemmer dit tal i char num[33];
int hex = inbin(num); // får programmet til at omregne
gotoxy(22,8); // koordinater
cprintf("dit tal i dec: %X",hex); // omregner dit tal til hexadecimal
getch(); // tryk enter for at fortsætte
break; // slut på case '6'
} // slut på switch
} // slut på void menuto()
int inbin(char *s) // lagrer info
{
char *ep; // lagrer info
int v; // lagrer info
v = strtol(s, &ep, 2);
if(ep >= (s+strlen(s))) // hvis det er korrekt, fortsæt - hvis det er forkert, skriv -1 istedet for resultat (kan skyldes 2-9 og a-å i det du skriver som input)
{
return v;
}
else
{
return -1;
}
}
void dectobin() // start på dectobin()
{
bit=0x8000; // placerer vigtigste bit først
gotoxy(36,8); //koordinater
for(bum = 0; bum < 16; bum++) // gentager en kommando, i dette tilfælde dividerer den ens tal med 2 indtil man får nul, derved finder man bin værdi
{ // start forløkke
ciffer = (bit & dec) ?1:0; // se: for(bum = 0; bum < 16; bum++)
cprintf("%u",ciffer); // udskriver resultat
bit /= 2; // hvor mange bit der er
} // slut forløkke
getch(); // tryk enter for at fortsætte
} // slut void dectobin()
void hextobin() // start hextobin()
{
bit=0x8000; // placerer vigtigste bit først
gotoxy(36,8); // koordinater
for(bum = 0; bum < 16; bum++) // se void dectobin()
{
ciffer = (bit & hex) ?1:0;
cprintf("%u",ciffer);
bit /= 2;
}
getch();
}
/* SLUT mange tak for hjælpen */