Stránka: 1 z 2
| [ Príspevkov: 44 ] | 1, 2 |
Autor | Správa |
---|
Registrovaný: 28.05.07 Prihlásený: 28.03.08 Príspevky: 11 Témy: 1 | 1 |
Mam taketo zadanie:
Zostavte program na prevod desiatkového čísla do inverzného kódu
na 16 bitoch. Výsledok má byť reprezentovaný ako vektor. Použite vlastné
funkcie s parametrami.
ja som zatial naprogramoval toto:
Kód: #include<stdio.h>
main() { int cislo,x,n,i,a[17]; printf("Tento program prevadza cidla z desiatkovej sustavy do dvojkovej v inverznom kode na 16-tich bitoch\n"); printf("Zadaj cislo: \n"); scanf("%d",&cislo); if (cislo > 0) /*znamienko*/ a[1] = 0; else a[1] = 1; n = 17; /*prevod do dvojkovej sustavy*/ for(i=0;i<15;i++) { x = cislo % 2; cislo = cislo / 2; n = n-1; /*plnenie pola odzadu*/ a[n] = x; } for(i=1; i<17; i++) { /*vypis prvkov pola(vektora)*/ printf("%d ", a[i]); }
fflush(stdin); getchar(); }
ale ono to prevadza desiatkove cislo na dvojkove v priamom kode.
Ide o to ze inverzny kod by som este zvladol ale ja potrebujem pouzit VLASTNE FUNKCIE a neviem to . Tak prosim pomozte. vopred dakujem
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | 6 |
ano vlastne funkcie a este dokonca s parametrami.. mohol by si to spravit asi cez rekurziu. Kód: int binar(int cislo){...}; int ubinar(int cislo){} a ty chces vlastne vypocitat inverzny kod pre kladne aj zaporne cisla? pretoze pre kladne mas rovnaky priamy aj inverzny...
|
|
Registrovaný: 28.05.07 Prihlásený: 28.03.08 Príspevky: 11 Témy: 1 | 1 |
hm
vies ja vobec nemam sajnu o tom
ja by som skor potreboval nejake komplet navrhy normalne bud to dorobte do mojho programu alebo ak mate lepsi program tak ho sem hodte pretoze to co som ja naprogramoval je zrejme moj horny limit.
P.S. viem ze ak je cislo kladne PK=IK, ked zaporne tak sa invertuje
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | 6 |
Rozkaz, SEFINKO, tu to mas... Kód: int a[16],cislo;
binar(int b){ int n=15; for(;b!=0;b=b>>1) a[n--]=b%2; }
ubinar(int b){ int n=15; b=-b; /* veeelmi dolezite zmenit zaporne cislo na kladne bud (-) alebo abs()*/ binar(b); for(b=0;b<16;b++) a[b]=!a[b]; }
main(){ clrscr(); puts("zadaj cislo na premenu do -16bit binarneho inverzneho kodu: ");scanf("%i",&cislo);
if(cislo<0) ubinar(cislo); else binar(cislo);
for(cislo=0;cislo<16;cislo++) printf("%2i",a[cislo]); } prijemnu zabavu
|
|
Registrovaný: 28.05.07 Prihlásený: 28.03.08 Príspevky: 11 Témy: 1 | 1 |
dajak to nefunguje
mam tam este daco dopisat?
(inac ja to robim v DevC++)
pls, vyzera to celkom dobre len to nespusti
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | 6 |
vladik píše: (inac ja to robim v DevC++) nabuduce skus upresnit to c++...ale teraz som to pozeral v c++ a islo to(neni chybne) .. CO ti presne vypisuje alebo co to spravi?skus upresnit.
//edit ty kokoooooos to co je za ............ ten DevC++ hhhhahachrrrrrr to ta lutujem robit s takymto niecim. takze som to pozeral polhodiny(download,install); slo mi to pustit cez dosove okno (viem v delphi viem v builderC++ pracovat s windowsackymi oknami ale toto je nad moje schopnosti). som dal ze: novy projekt -> empty project -> pridal som tam novy zdrojovy kod -> tam som to skopcil a potom upravil a pripisal kniznice a vymazal clrscr(); pretoze to som tam hladal dost dlho a bez vysledku
Kód: #include<stdio.h> #include<conio.h> int a[16],cislo;
void binar(int b){ int n=15; for(;b!=0;b=b>>1) a[n--]=b%2; }
void ubinar(int b){ int n=15; b=-b; /* veeelmi dolezite zmenit zaporne cislo na kladne bud (-) alebo abs()*/ binar(b); for(b=0;b<16;b++) a[b]=!a[b]; }
int main(){ printf("zadaj cislo na premenu do -16bit binarneho inverzneho kodu: ");scanf("%i",&cislo);
if(cislo<0) ubinar(cislo); else binar(cislo);
for(cislo=0;cislo<16;cislo++) printf("%2i",a[cislo]); getch(); } ak vies ako sa to robi na windowsacke okno tak to sem kludne mozes dat
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 28.05.07 Prihlásený: 28.03.08 Príspevky: 11 Témy: 1 | 1 |
yeeeeees!
diki moc, si borec !
jednoduche a efektne
neviem ako sa odvdacit, si mi fakt pomohol!
P.S. mohol by si mi este dovysvetlit tieto funkcie?
popis co presne znamena farebny riadok(co presne robi), aby som vedel vysvetlit a napisat do vyvojaka, diki moc
tieto:
-------------------------------------------------------------------------------------
void binar(int b){
int n=15;
for(;b!=0;b=b>>1) a[n--]=b%2;
}
void ubinar(int b){
int n=15;
b=-b; /* veeelmi dolezite zmenit zaporne cislo na kladne bud (-) alebo abs()*/
binar(b); for(b=0;b<16;b++) a[b]=!a[b];
}
-------------------------------------------------------------------------------------
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | 6 |
Kód: for(;b!=0;b=b>>1) a[n--]=b%2; toto >> je posuvanie hodnoty ulozenej v b cez bity do prava: takze b=11 pc to ma v pamati ako binarny kod tak preco toho nevyuzit (11) 1 0 1 1 (deli sa z pravej strany 11%2 zvysok je 1.(zapise sa nakoniec a[n--(dekrementacia n)] ) cyklus posunie(zmeni) zadane cislo o jeden bit doprava b=b>>1, (zvysok je uz zapisany) (5) 1 0 1 (deli sa z pravej strany 5%2 zvysok je 1. posunie o jeden bit doprava (2) 1 0 deli z prava zvysok 0 posunie bit (1) 1 1%2 zvysok 1 posunie bit (0) 0 zvysok 0 zapise sa 0 (b=0) podmienka (b!=0) porusena ukoncenie cyklu) Kód: for(b=0;b<16;b++) a[b]=!a[b]; toto je pri zapornom cislo < 0 len sa neguje (1 sa meni na 0 a 0 na 1) v celom retazci a[0..15]
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 28.05.07 Prihlásený: 28.03.08 Príspevky: 11 Témy: 1 | 1 |
aha
hm ale pre mna je to aj tak dost spanielska dedina
(napr., preco je pred 1. bodkociarkou nic)
nedalo by sa to urobit v1. funkcii jednoduchsie na pochopenie
tak ako v 2. funkcii, tomu rozumiem [ for(b=0;b<16;b++) ]
ale toto
Kód: for(;b!=0;b=b>>1) a[n--]=b%2;
proste prepisat na nieco jednoduchsie, hlavne teda ten cyklus.
viem ze ta uz dost otravujem ale fakt tomu chcem rozumiet
ale kym nepochopim zaklady asi tazko pochopim nieco pokrocile
1000 x DAKUJEM 
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | 6 |
b je zadane cislo... napr:11 ale ta premenna je v pc zapisana v strojovom kode niekde na ramke ci na disku az si dal b byte tak na nejakom 8bitovom registre
(b=11) 0 0 0 0 1 0 1 1. je to jednoduchy cyklus ktory zvyskom po celociselnym delenim 2 zapise do a[n] ci je zvysok 1 alebo 0. potom to akokeby vsetko posunie o jedno miesto doprava takze ta podciarknuta jednotka co bola napravo akoby vypadla (b=b/2)==(b=b>>1) je to rovnaky vysledok
(b=5) 0 0 0 0 0 1 0 1 a tak dalej a tak dalej kym to vsetko neposunie tak ze vsade budu nuly
(b=0) 0 0 0 0 0 0 0 0
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 28.05.07 Prihlásený: 28.03.08 Príspevky: 11 Témy: 1 | 1 |
ale preco pred 1. bodkociarkov v zatvornke nic nie je?
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | 6 |
vladik píše: ale preco pred 1. bodkociarkov v zatvornke nic nie je? tazka otazka...a co by si tam chcel mat?
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 28.05.07 Prihlásený: 28.03.08 Príspevky: 11 Témy: 1 | 1 |
no ja neviem ale v 2. funkcii tam cosi je
Otazka: existuje k funkcii binar nejaka alternativa (da sa to inac napisat)?
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | 6 |
vladik píše: no ja neviem ale v 2. funkcii tam cosi je
Otazka: existuje k funkcii binar nejaka alternativa (da sa to inac napisat)? sak tak jak si to mal ty sa to tiez da napisat.. sak si to mal dobre to co si dal hned na zaciatku len ti chybalo zmenit zaporne cislo na kladne a potom to vsetko znegovat...
S.P. neviem ze ci 16 bitov nema byt vlastne 15 miest.
ak chces tak pridavam aj spatnu funkciu Kód: dekad(int b[16]){ char c; unsigned int d=0; for(c=0;b[c]!=1;c++); for(;c<16;c++) {d=d<<1;d+=b[c]; } clrscr();printf("dekadicke cislo je %i",d); }
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 28.04.07 Prihlásený: 03.11.09 Príspevky: 133 Témy: 1 | 1 |
vladik píše: Otazka: existuje k funkcii binar nejaka alternativa (da sa to inac napisat)?
napr. takto:
Kód: void binar(int b) { int n; for (n = 15; n >= 0; n--) { a[n] = b & 1; b >>= 1; } }
|
|
Registrovaný: 28.05.07 Prihlásený: 28.03.08 Príspevky: 11 Témy: 1 | 1 |
AAAAAANOOOO! YES!
juho, si paradny program vymyslel, diiik(aj za trpezlivost)
a imcold, dik za tu funkciu.
som to skombinoval a trochu upravil na svoj styl, takze teraz mi profak uveri ze tomu aj rozumiem.
este raz VDAKA !
ste mi neskutocne pomohli. este urobit vyvojak k tomu a je to!
|
|
Registrovaný: 28.05.07 Prihlásený: 28.03.08 Príspevky: 11 Témy: 1 | 1 |
este pred tym si sa pytal k tomu DevC++
juho píše: ak vies ako sa to robi na windowsacke okno tak to sem kludne mozes dat
staci ked stlacis F9 (pri prvom raze to ulozis)
ono ti to skompiluje, prelozi a spusti v ciernom okne
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | 6 |
vladik píše: este pred tym si sa pytal k tomu DevC++
staci ked stlacis F9 (pri prvom raze to ulozis) ono ti to skompiluje, prelozi a spusti v ciernom okne no to cierne okno je vlastne prikazovy riadok "dosovske okno" ale ja ci len vies ako sa to robi na windowsacke okno cize namiesto empty project tam das application...
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 28.05.07 Prihlásený: 28.03.08 Príspevky: 11 Témy: 1 | 1 |
hm myslim ze to spatne uz s exe subormi nejde
|
|
Registrovaný: 03.06.07 Prihlásený: 04.06.07 Príspevky: 14 Témy: 0 | 0 |
zdravim vsetkych, potrebola by som pomoct s programom v C++ na prevod desiatkoveho cisla do doplnkoveho kodu na sestnastich bitoch. A mam pouzit aj vlastne funkcie. Do dvojkovej mi to ako tak ide, ale dalej ani za nic 
|
|
Registrovaný: 03.06.07 Prihlásený: 04.06.07 Príspevky: 14 Témy: 0 | 0 |
Juho chcela by som sa ta spytat na ten zdrojak co si urobil na inverzny kod, ja to musim urobit na doplnkovy, takze po prvu jednotku z prava sa opisuje a potom invertuje. Mozno by sa to dalo pouzit len tam treba vlozit nieco na posuv po prvu jednotku (vratane)
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 | 9 |
Luci: máš v tom trochu chaos. Tam nejde o opisovanie. Definícia doplnkového kódu je:
x pre x>=0
2 + x pre x<0
čiže hej, pri zápornom ti to výjde že to opíšeš a invertuješ, ale to je iba 50% možných variantov, lebo musíš rátať aj s kladnými číslami a tam sa doplnkový kod rovná priamemu kodu.
A k tomu že to má byť na 16 bitoch: to už je jednoduché. Napíšeš vzniknuté číslo a z predu dopíšeš nuly aby to celé malo 16 bitov. Potom do znamienkového bitu pripojíš znamienko (jedna pre záporné, nula pre kladné) a prípadne pripojíš exponent (tiež so znamienkovým bitom).
|
|
Registrovaný: 03.06.07 Prihlásený: 04.06.07 Príspevky: 14 Témy: 0 | 0 |
tak tomu nerozumiem s tym x co si napisal, ja viem ze ak je cislo kladne tak PK=DP, a ak je zaporne tak robim to co som napisala. Mam dva zdrojaky. Ak ich mam osobitne tak mi idu, ale ak ich spojim nie
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 | 9 |
no kašli na moje x, je to iba matematicky zapísané to čo si teraz napísala.. takže vieš aký je tam rozdiel. Ok. No spolu ti teda asi nejdú preto, že ich spájaš zle, nie? 
|
|
Registrovaný: 03.06.07 Prihlásený: 04.06.07 Príspevky: 14 Témy: 0 | 0 |
to viem aj ja ale ako ich spojit dobre?
#include<stdio.h>
#include <stdlib.h>
#define MIN -32768
#define MAX 32767
void men(int);
main()
{
int poc,hod,cislo,x,k,n,i,a[17];
printf("Zadaj lubovolne cislo od %d do %d: \n",MIN,MAX);
scanf("%d",&cislo);
if (cislo > 0) /*znamienko*/
a[1] = 0;
else a[1] = 1;
cislo= abs(cislo);
n = 17; /*prevod do dvojkovej sustavy*/
for(i=0;i<15;i++) {
x = cislo % 2;
cislo = cislo / 2;
n = n-1; /*plnenie pola odzadu*/
a[n] = x;
}
for(i=1; i<17; i++) { /*vypis prvkov pola(vektora)*/
printf("%d ", a[i]);
}
if (cislo<0)
k=0;
poc=1;
while( k<16 && a[k++] ==0);
poc = poc+1;
printf("%d\n",poc);
getchar();
for (i=poc-1;i>1;i--)
{
men(a[i]);
}
for(i=1; i<17; i++)
{
printf("%d ", a[i]); /*vypis prvkov pola(vektora)*/
}
/*if (cislo>0)*/
/*for(i=1; i<17; i++)*/
{
/* printf("%d ", a[i]); /*vypis prvkov pola(vektora)*/
}
fflush(stdin);
getchar();
}
void men(int)
{
int j,i;
int a[j];
for (j=i;j>1;j--)
{
if (a[j]=1)
a[j]=0;
else
a[j]=1;
}
}
|
|
Registrovaný: 03.06.07 Prihlásený: 04.06.07 Príspevky: 14 Témy: 0 | 0 |
nevie mi niekto pomoct s tymto zdrojakom, aby mi to menilo na doplnkovy kod
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 | 9 |
Luci: šak som ti písal ako sa mení na doplnkový kod. Pri kladnom to iba zmeniš do dvojkovej, pri zápornom prirátaš dvojku a to premeníš do dvojkovej, lebo číslo v desiatkovej + 2 je to isté ako číslo v dvojkovej + 10
Kód: // doplnok.cpp : Defines the entry point for the console application. //
#include "stdafx.h"
#include<stdio.h> #include <stdlib.h>
int main() { int poc,hod,cislo,x,k,n,i,a[17]; printf("Zadaj lubovolne cislo od %d do %d: \n",SHRT_MIN,SHRT_MAX); scanf("%d",&cislo);
if (cislo >= 0){ a[1] = 0; } else { a[1] = 1; cislo+=2; } cislo= abs(cislo);
n = 17; /*prevod do dvojkovej sustavy*/ for(i=0;i<15;i++) { x = cislo % 2; cislo = cislo / 2; n = n-1; /*plnenie pola odzadu*/ a[n] = x; }
for(i=1; i<17; i++) { /*vypis prvkov pola(vektora)*/ printf("%d ", a[i]); } return 0; }
a ešte som ti zmazal konštanty MIN a MAX a nahradil ich štandartnými konštantami, neviem načo si ich valstne definovala sama. A tiež funkciu men ti netreba
|
|
Registrovaný: 03.06.07 Prihlásený: 04.06.07 Príspevky: 14 Témy: 0 | 0 |
dakujem velmi pekne  trapim sa s tym uz tri dni a nikto mi nepomoze a ty to vyriesis za pol hodiny. Ten men som tam mala preto, lebo treba pouzit nejake vlastne funkcie
|
|
Registrovaný: 03.06.07 Prihlásený: 04.06.07 Príspevky: 14 Témy: 0 | 0 |
vypisuje mi chybu pri prvom printf ze nenaslo "stdafx.h"
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 | 9 |
tak to zmaž, ja používam microsoft visual studio a musím to tam mať, ty takú knižnicu asi nepoužívaš
|
|
Stránka: 1 z 2
| [ Príspevkov: 44 ] | 1, 2 |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
 | v Smartfóny a tablety | 11 | 2578 | 12.01.2020 3:19 Semp |  | v Assembler, C, C++, Pascal, Java | 6 | 569 | 14.04.2018 15:15 Vetrolam |  | v Assembler, C, C++, Pascal, Java | 9 | 798 | 29.09.2009 20:57 reDo |  | v Sieťové a internetové programy | 9 | 509 | 16.05.2010 8:47 Mindfreak |  | v Grafické programy | 2 | 826 | 21.03.2008 20:19 murded |  | v Ostatné programy | 3 | 444 | 27.04.2010 15:25 Denco1 |  | v Assembler, C, C++, Pascal, Java | 2 | 569 | 16.11.2009 21:30 kubo88 |  | v Assembler, C, C++, Pascal, Java | 3 | 547 | 26.07.2013 9:36 Roj-i |  | v Ostatné programy | 3 | 2798 | 28.11.2005 20:34 Dzin |  | v Delphi, Visual Basic | 6 | 1484 | 25.07.2009 16:12 Fico |  | v Ostatné programy | 0 | 437 | 16.08.2011 12:31 draculla |  | v Assembler, C, C++, Pascal, Java | 5 | 637 | 16.11.2009 9:30 muro58 |  | v Video programy | 0 | 708 | 26.12.2008 18:17 misterspeed |  | [ Choď na stránku: 1, 2 ] v Grafické programy | 48 | 2142 | 06.06.2011 18:27 Daron |  | v Technológia .NET | 5 | 516 | 11.03.2013 23:27 shaggy |  | v Ostatné programy | 3 | 395 | 18.01.2012 22:31 Denco1 |
|