Prevod z dvojkovej sustavy do desiatkovej

C,C++,C#

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
bobo87
Ultimate člen
Ultimate člen
Príspevky: 1915
Dátum registrácie: 15 Feb 2007, 00:00
Vek: 36
Kontaktovať používateľa:

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa bobo87 » 01 Máj 2015, 00:15

peterple - #include <stdint.h> :)
0
float l,I,Q,_,o;int E;main(){I=1.125;while(I>=-1.225){for(l=-2;l<=1;l+=3/79.0){Q=_=0;for(E=127;Q*Q+_*_<4.0&&--E>32;){o=Q;Q=Q*Q-_*_+l;_=2*o*_+I;}putchar(E);}putchar(10);I-=9/88.0;}}

Dumitru
Stály člen
Stály člen
Príspevky: 381
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa Dumitru » 02 Máj 2015, 03:27

Ahojte trosku som studoval bitove polia v C a vyriesil som to takto :)


#include "stdafx.h"
typedef struct {
unsigned pole2 : 8;
unsigned pole1 : 8;
unsigned pole0 : 8;
} frekvencia;
int _tmain(int argc, _TCHAR* argv[])
{ unsigned int pole[2];
pole[0]=152;// 0....7
pole[1]=150; // 8.....15
pole[2]=128; // 16 .....23
frekvencia a = {pole[2], pole[1], pole[0]};
printf("%u",a);
getchar();
return 0;
}
pole 0...2 budu prijate data a zlucim ich do jednej premenej a netreba ziadne posuvanie ani rozne logicke operacie :)
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa peterple » 02 Máj 2015, 10:00

máš tam malá chybičku. Deklaruješ pole dlhé 2 prvky ale používaš 3. Čudujem sa že to v zásobníku nerobí problém. Poradie bitov máš tiež nejak divne. (Opačne)
Potom len ako optimalizácia - stačilo by pole typu char (na PC je ale pamete mraky takže je to fuk)

Jasne že sa to dá všelijako. Tu máš iný spôsob, bez ďalšej pomocnej premennej, bez rotácií a log operácii.

Kód: Vybrať všetko

#include "stdio.h"
int main(int argc, char* argv[])
{ 
unsigned char pole[4];
pole[3]=0;   // 31....24
pole[2]=152; // 23....16
pole[1]=150; // 15.....8
pole[0]=128; // 7......0
printf("%u", *(unsigned int* )pole);
getchar();
return 0;
}
Ale nevýhoda tohoto hacku (a asi aj toho tvojho) je že je závislý na platforme a implementácii kompilátora
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
xmilos
Ultimate člen
Ultimate člen
Príspevky: 3671
Dátum registrácie: 04 Máj 2011, 00:00
Bydlisko: Povazie

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa xmilos » 02 Máj 2015, 10:11

Dumitru na zaciatok je to dobre, vidno ze si studoval. Preto ti nenapisem konkretne riesenie, ale iba naznacim.
Pre pretypovanie je vhodnejsie pouzit "union".
Skus sa este pozriet na pointre - aj to je prostriedok pre teba.
Neviem pre aky procesor to pises, ale vo vyslednom kode je lepsie pouzit tie posuvy, pripadne nasobenie.
0

Dumitru
Stály člen
Stály člen
Príspevky: 381
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa Dumitru » 02 Máj 2015, 13:42

No zatial mam len taku hruby navrh komunikacie s generatorom :) uvadzam tu kod v C je velmi nedokonaly podla mna takze navrhy alebo rady na vylepsenie by som prijal :)


Kód: Vybrať všetko

#include "stdafx.h"
#include "windows.h"
int _tmain(int argc, _TCHAR* argv[])
{
// *******************************************1.otvaranie portu******************************************************************
    HANDLE hCom;// inicializacia premeny hCom
	hCom=CreateFile(TEXT("COM4")// vyber portu
		,GENERIC_READ|GENERIC_WRITE//otvorenie portu pre zapisovanie
		,0// pristup k portu nie je mozni viac ako jeden preto 0
		,NULL//ochrana-pri normalnej praci nie je zapotreby
		,OPEN_EXISTING//sam vytvori subor 
		,NULL//asinchrona praca
		,NULL);
	if(hCom==INVALID_HANDLE_VALUE)// ak funkcia vyhodi tuto hodotu sa port neotoril
		printf("chyba portu\n");
	else
		printf("Port sa otvoril\n");
//*******************************************Nastavenie parametrov***************************************************************
	DCB dcb={0};
	if(!GetCommState(hCom,&dcb))//otvori pre incializaciu a zapis do struktury DCB
		printf("chyba inicalizovania struktury DCB\n");
	else
	printf("Inicializacia DCB prebehla v poriadku\n");
	printf("BaudRate=%d\n",dcb.BaudRate=57600);
	printf("ByteSize=%d\n",dcb.ByteSize=8);
	printf("Parity=%d\n",dcb.Parity=0);
	printf("StopBits=%d\n",dcb.StopBits=ONESTOPBIT);
    if(!SetCommState(hCom,&dcb))//ulozi parametre do struktury DCB
		printf("chyba nastavenia parametrov\n");
	else
		printf("parametre sa nastavily\n");
	
	if(!SetCommMask(hCom, EV_RXCHAR))
  printf("chyba nastavenia masky");
vratsa:
//**************************************************citanie z portu****************************************************************
DWORD dwCommEvent, dwRead,dwErrors,cbInQue;
COMSTAT comStat;
char  chRead[230];int dl;
	  Sleep(1000);
ClearCommError(hCom, &dwErrors, &comStat);
			printf("%d\n",comStat.cbInQue); // vypise pocet prijatych znakov to len pre kontrolu :)
			dl=comStat.cbInQue;
			if(ReadFile(hCom, &chRead,dl,&dwRead, NULL))
				for (int i=0;i<dl;i++) 
					printf("%c",chRead[i]);
			else{
			  printf("chyba čitania\n");

			}
			
//**************************************************zapis do portu****************************************************************
	DWORD Pocet=0;
int dlzka=0,check=0;

	char Data[10];
	printf("\nzadaj prikaz\n");
	scanf("%s",&Data);
	getchar();
	dlzka=strlen(Data)+2;
    Data[dlzka-2]='\r';
    Data[dlzka-1]='\n';
//for( int i=0;i<dlzka;i++){
		WriteFile(hCom,&Data,dlzka,&Pocet,NULL);
if(Pocet!=dlzka)  
   printf("\n Chyba: Zapis na port sa nepodaril.\n");
	//}
goto vratsa;
	 getchar();
	 CloseHandle(hCom);
return 0;
}
Prílohy
kumunikacia.png
0

Používateľov profilový obrázok
xmilos
Ultimate člen
Ultimate člen
Príspevky: 3671
Dátum registrácie: 04 Máj 2011, 00:00
Bydlisko: Povazie

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa xmilos » 02 Máj 2015, 14:24

hmmm.... tazko sa to luska - skus to dat ako <code>
prvy postreh - vyhni sa goto
0

Dumitru
Stály člen
Stály člen
Príspevky: 381
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa Dumitru » 02 Máj 2015, 17:26

este mam otazku staci len poradit funkciu ako spravit ak mam nekonecny ciklus for(;;){} alebo while(1){} a chcem tam iplementovat to ze napriklad na zaciaku napisem uzivatelovi ak chcete program ukoncit zatlacte ESC to ma asci hodnotu 27 tusim a dalej to nespominam a ani od neho nepozadujem ale ako nahle pouzivatel stlaci ESC tak vyskoci sa z ciklu, ja to viem len pomocou scanf a potom porovnavat ci stlacil alebo nie ale to sa ho musim stale pitat ale ja to chcem nech program si bezi a robi co ma ale ako nahle sa rozhodne ho ukoncit zatlaci ESC a koniec
0

Používateľov profilový obrázok
xmilos
Ultimate člen
Ultimate člen
Príspevky: 3671
Dátum registrácie: 04 Máj 2011, 00:00
Bydlisko: Povazie

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa xmilos » 02 Máj 2015, 17:37

mno priamo ti nenapisem prikazy, priznam sa momentalne nerobim cez konzolu, take detaily bych musel odkusal ale princip:

Kód: Vybrať všetko

unsigned char znak = 0;
do{
.. prikazy
znak = getch(); // scanf, alebo getch, podla toho, ako sa to sprava v konzole a cii cakas na enter
} while(znak != chr(27));
naznacil som princip - netestovane
cyklus sa bude opakovat dovtedy, kym nie je vysledok testu false
0

Dumitru
Stály člen
Stály člen
Príspevky: 381
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa Dumitru » 02 Máj 2015, 17:41

dakujem moc krat otestujem :)
0

Dumitru
Stály člen
Stály člen
Príspevky: 381
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa Dumitru » 02 Máj 2015, 21:01

este posledna otazka slubujem :D ak prijdu data vypisu sa na obrazovku ako spravim to ze ked mi prijdu nove data aby sa len prepisali na miesto tych starych :)
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa peterple » 02 Máj 2015, 21:06

ak je to v tom istom riadku tak ľahko. Dáš CR (návrat voza) bez LF (posun riadok) Tak sa dostaneš na začiatok toho istého riadka a môžeš ho prepísať novými znakmi.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Dumitru
Stály člen
Stály člen
Príspevky: 381
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa Dumitru » 21 Máj 2015, 15:09

čaute síce to sem nepatri ale nebudem zakladať novu tému začal som zo štúdiom TCP/IP zatiaľ len taký jednoduchý server ale nejde teda neotvori mi socket vždy vyhodí chybu nerozumiem prečo ale na 100% robím dačo zle môžte poradiť kde to čo je zle pretože neviem sam nájsť chybu :(
Prílohy
New Text Document (2).txt
(919 Bajtov) 35 stiahnutí
0

Používateľov profilový obrázok
dxr
Ultimate člen
Ultimate člen
Príspevky: 3968
Dátum registrácie: 05 Aug 2013, 20:21
Bydlisko: V strede nicoho
Kontaktovať používateľa:

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa dxr » 21 Máj 2015, 17:03

Ak sa pokusas otvorit port ktory si mal otvoreny pred kratkym casom to moze byt problem

inak co tak pouzivat tie tlacitka ako je Obrázok staci oznacit blok textu a potlacit a potom sa to da aj citat.

a nazvat C zdrojak new dokument.txt no to je ako napisat ypsilon za pismenom s makcenom....sorry.
Prílohy
code.png
code.png (416 Bajtov) 6986 zobrazení
0
Naposledy upravil/-a dxr v 21 Máj 2015, 17:12, upravené celkom 2 krát.
Mahátma Ghándí: „Nejdřív tě budou ignorovat. Pak se ti budou smát. Pak proti tobě budou bojovat. Potom zvítězíš.“
čo viac dodať som taký a možeš to skúsiť vyhrať aj tak to vzdáš.. Obrázok
Arduino is popular becouse allow complex task with minimum investment

Dumitru
Stály člen
Stály člen
Príspevky: 381
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa Dumitru » 21 Máj 2015, 17:11

nie nie ono mi to nešlo ani na prvý krát a keď som to debugoval aj včera aj dneska tak proste vloži tam -1 čo znamená že chyba a nechápem a to iste klient Adresu dávam 127.0.0.1 čo by malo znamenať že klient a server je na jednom PC čítal som že sa to použiva pre testovanie programu tak som chcel na server poslať číslo 1 a na Klient číslo 2 ako char ale ono mi ani neotvori :(

-- Spojený príspevok 21 Máj 2015, 17:13 --

a prepáč nabudúce si budem dávať pozor na ukladanie priloh
0

Používateľov profilový obrázok
dxr
Ultimate člen
Ultimate člen
Príspevky: 3968
Dátum registrácie: 05 Aug 2013, 20:21
Bydlisko: V strede nicoho
Kontaktovať používateľa:

Re: Prevod z dvojkovej sustavy do desiatkovej

Príspevok od používateľa dxr » 21 Máj 2015, 17:17

Kód: Vybrať všetko

local.sin_port = (7500);
inak tu je vidno ze nepoznas dobre syntax - naco je to cislo v zatvorkach? To vobec netreba/

jak ze ne mas tam fixny port - a ten neviem moze byt v stave ze sa zatvara ono to trosku trva
neviem ako tvoj stack pouzivas WINSOCKv2 ale este na XPdlach bolo treba zavolat funkciu
ktorou si povedal ze ktory stack api sa bude pouzivat - Washu hod sem ten zdrojak co som ti pred rokom poslal
ja ho uz nemam :) - tam to chodilo som lenivy to pisat znova :)


inak najprv treba spravit server tj. bindnut port potom mozes klientom otvarat ....to dufam vies.
127.0.0.1 je loopback adresa a ano pouziva sa na medzi procesovu komunikaciu vramci jedneho stroja/stacku.
0
Mahátma Ghándí: „Nejdřív tě budou ignorovat. Pak se ti budou smát. Pak proti tobě budou bojovat. Potom zvítězíš.“
čo viac dodať som taký a možeš to skúsiť vyhrať aj tak to vzdáš.. Obrázok
Arduino is popular becouse allow complex task with minimum investment

Napísať odpoveď