problem u programskom jeziku C

problem u programskom jeziku C

offline
  • lana 
  • Novi MyCity građanin
  • Pridružio: 28 Apr 2004
  • Poruke: 2

Pozdrav svima
Da li bi neko mogao da mi pomogne da rijesim sljedece probleme:
dobila sam dvije datoteke:

Citac.c
#include <windows.h>
#include <assert.h>
#include <stdio.h>


#define BufferSize 100
#define Buffers 10
static const char MemoryName[]="Share Memory Name";
static char * Memory[Buffers];
char * addr;
static const char WriterSemaphoreName[]="Writer Semaphore";
static const char ReaderSemaphoreName[]="Reader Semaphore";

static HANDLE hWriterSemaphore;
static HANDLE hReaderSemaphore;
static HANDLE hMemory;

int main(void)
{
int i;
hWriterSemaphore=CreateSemaphore(NULL,Buffers,Buffers,WriterSemaphoreName);
hReaderSemaphore=CreateSemaphore(NULL,0,Buffers,ReaderSemaphoreName);
hMemory=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0
,sizeof(char [Buffers][BufferSize]),MemoryName);
addr=MapViewOfFile(hMemory
,FILE_MAP_WRITE,0,0,sizeof(char [Buffers][BufferSize]));
for (i=0;i<Buffers;i++)
{
Memory[i]=(char *)addr;
addr=addr+BufferSize;
}

for(i=0;;++i)
{
WaitForSingleObject(hReaderSemaphore,INFINITE);
puts(Memory[i%10]); // Reader reads data
ReleaseSemaphore(hWriterSemaphore,1,NULL);
}


UnmapViewOfFile(Memory);
CloseHandle(hWriterSemaphore); CloseHandle(hReaderSemaphore);
return 0;
}









Pisac.c
#include <windows.h>
#include <assert.h>
#include <stdio.h>


#define BufferSize 100
#define Buffers 10
static const char MemoryName[]="Share Memory Name";
static char * Memory[Buffers];
char * addr;
static const char WriterSemaphoreName[]="Writer Semaphore";
static const char ReaderSemaphoreName[]="Reader Semaphore";

static HANDLE hWriterSemaphore;
static HANDLE hReaderSemaphore;
static HANDLE hMemory;

int main(void)
{
int i;
hWriterSemaphore=CreateSemaphore(NULL,Buffers,Buffers,WriterSemaphoreName);
hReaderSemaphore=CreateSemaphore(NULL,0,Buffers,ReaderSemaphoreName);
hMemory=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0
,sizeof(char [Buffers][BufferSize]),MemoryName);
addr=MapViewOfFile(hMemory
,FILE_MAP_WRITE,0,0,sizeof(char [Buffers][BufferSize]));
for (i=0;i<Buffers;i++)
{
Memory[i]=(char *)addr;
addr=addr+BufferSize;
}
for(i=0;;++i)
{
WaitForSingleObject(hWriterSemaphore,INFINITE);
printf("Writing to Buffer %i\n",i);
wsprintf(Memory[i%10],"This is the writer - %i\n",i);

Sleep(1000);

ReleaseSemaphore(hReaderSemaphore,1,NULL);
}

UnmapViewOfFile(Memory);
CloseHandle(hWriterSemaphore); CloseHandle(hReaderSemaphore);
return 0;
}


Trebam uraditi sljedece:

Uvesti neophodne modifikacije u programe citac.c i pisac.c kojima se omogucuje:
zadavanje poruka koje će se upisati u bafer
varijabilna veličina bafera
citanje zadatog broja poruka iz bafera i praznjenje bafera (čitanje svih poruka koje su prisutne u baferu)

a zatim bih trebala napravite DLL sa funkcijama:
int upis( char *poruka) - upisivanje zadane poruke u bafer. Povratna vrijednost je 0 ako nije bilo greške.
int citanje( char *poruka, int maxduzina) - čitanje poruke i njeno smještanje u prostor određen parametrom poruka sa maksimalnom dužinom (veličinom poruke) određenom parametrom maxduzina. Povratna vrijednost je 0 ako nije bilo greške
int prazno() - vraća 0 ako je bafer prazan u momentu pozivanja

Ako bi mi neko mogao uraditi ili uptiti me kako da ovo uradim,
posto mi je progrmiranje dosta strano

Unaprijed zahvalna
Lana

[mod_note] "Hitno mi pomozite" nije prikladan naziv za bilo koju temu



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 20 Apr 2003
  • Poruke: 2091
  • Gde živiš: Novi Sad

-1. ako ti je programiranje strano, otkud ti ovakav zadatak?? (hint, bolje nauci ovo sama ;-) )
-2. ne dupliraj poruke
-3. dobrodosla
-4. procitaj pravilnik:
http://www.mycity.rs/phpbb/viewtopic.php?t=921



offline
  • lana 
  • Novi MyCity građanin
  • Pridružio: 28 Apr 2004
  • Poruke: 2

Pozdrav,
Poruku sam slučajno duplirara. Zadatak sam dobila na faksu, ali
nisam nikad radila sa ovim stvarima.
Pa ako mi neko mogao da me barem uputi

Lana

offline
  • Pridružio: 20 Apr 2003
  • Poruke: 2091
  • Gde živiš: Novi Sad

hmmm pa opet se vracamo na riznicu zvanu internet... i pretrazivac google...
ja nadjoh ovo:
http://www-106.ibm.com/developerworks/eserver/arti.....nxw02BestC

sad da li je to bas to sto ti treba.. ne znam... ali sigurno ne skodi :-) a ako ne skodi.. mora da koristi :-)

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

savet - postavi ovaj problem na www.elitesecurity.org - tamo ima dosta win32 i c++ programera

ja sam radio sa semaforima jedno vreme, ali sada zaista nemam vremena da analiziram tvoj problem Sad

i jos jedan topli savet... kada imas neki problem, pokusaj sto vise da ga pojednostavis, da nas pitas samo ono sto ti skripi, jer kad pojednostavis problem onda ce mnogi ljudi pokusati da ti pomognu, jer ne trazis od njih da analiziraju ceo CPP fajl, nego ih samo pitas ono sto ne znas, i njima ne treba vise od 5 minuta da ti odgovore

ovako kad zadas ceo zadatak - retko ko ce moci da odvoji ceo sat da bi proucio problem Sad

Ko je trenutno na forumu
 

Ukupno su 725 korisnika na forumu :: 3 registrovanih, 0 sakrivenih i 722 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: bigfoot, milenko crazy north, Ognjen D.