C/C++の宿題やらせてください。おながいします

このエントリーをはてなブックマークに追加
952946:03/04/29 11:01
>>951
そうです。
953946:03/04/29 11:28
>>951
そうです。
locateってBASICじゃないのか?
まだはじめて1週間なのでサパーリです。
956新人の宿題:03/04/29 11:55
[問題]
Win32 Platform で動く同一プロセス内の Read/Write Lock クラスを C++ で作りなさい。
その際、Event と CriticalSection オブジェクトだけで構成しなさい。セマフォやミュー
テックスオブジェクトを使用してはならない。
同時に入るスレッドの数、システム状態などには全く依存せず、汎用的に作りなさい。
(但し、システムの限界を越える数(unsigned int の上限値など)の場合はその限りでは
ありません。)

Read/Write Lock とは、複数のスレッドがあるリソース(例えばメモリブロックなど)を
1. Read - Read conflict のときは何もしない
2. Read - Write, あるいは Write -Write conflict のときは待ち合わせ処理をする
という排他制御を言います。
int a,b;
a=2;b=1;
kansuu(int a, intb)
{int koukan;
koukan=a;
a=b;
b=koukan;
}
ポインタを使わない場合、なぜabの値の交換ができないのか
わかりません。
#include <conio.h>

int locate( short, short ) ;

int main( void )
{
int x,y,i;


locate(x,y);
printf("☆\n");


return 0;
}



int locate( short x, short y )
{
COORD dwPos ;
HANDLE hOut ;

dwPos.X = (SHORT)x ;
dwPos.Y = (SHORT)y ;
hOut = GetStdHandle( STD_OUTPUT_HANDLE ) ;

return (SetConsoleCursorPosition( hOut, dwPos ) == 0)? -1: 0;
}
960デフォルトの名無しさん:03/04/29 12:08
Cが一通り(独習Cの内容)終わったので
何か宿題を下さい。おながいします
>>957
Cは値渡しだから、ポインタを使わないと交換関数は作れない。
C++なら&指定で参照渡しになるから交換関数も作れる。
しかし、実装上は単純なポインタ渡しも参照渡しも全く同一のコードになるので、
ポインタ渡しのやり方も覚えて置いて損はない。

また、単純な交換だけが目的なら交換関数とせずにマクロで実現するのも手。
#include<stdio.h>

koukan(int x,int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
}
main()
{
int a,b;
a=2;
b=1;
koukan(a,b);
printf("%d,%d",a,b);
}
963デフォルトの名無しさん:03/04/29 12:11
大人の出逢いから ピュアな出逢いまで・・・。
素敵な お相手が貴方を待っています!
もちろん 女性は完全無料です!
http://www.sweet.st
>>957>>961
#define SwapInt(a, b) {int tmp = a; a = b; b = tmp;}
#define Swap(a, b) {a ^= b; b^= a; a^= b;}
> #define Swap(a, b) {a ^= b; b^= a; a^= b;}
これってパイプライン乱しそうで遅くなりそうだよね。
>>964
#define Swap(a,b,type) do{type tmp; tmp=a; a=b; b=tmp;}while(0)
今時defineなんて使うな。(ifdefとかで使う場合を除く)
関数をinlineにしろ。
968アンチconst:03/04/29 12:21
定数定義なら使ってもいいじゃん
っつーか、そもそもCの積もりなんだけどな。
C++だったら最初からテンプレート使うのが当たり前だしね。
#define Swap(a,b) \
{ \
char checker[sizeof(a)==sizeof(b)]; \
char temp[sizeof(a)]; \
memcpy(&temp,&a,sizeof(a)); \
memcpy(&a,&b,sizeof(a)); \
memcpy(&b,&temp,sizeof(a));\
}
>>968
名前空間全体を汚すマクロ定数を使うな
>>970
すげぇ、効率度外視だけど型を問わないと言う点では強力だ。
おかげでわかりました
ありがとうございました。
>>970
なんつーか、char checkerの行がおもしろい。
もしかして常套手段?
>>974
static_assertのC版として使ってみた
別バージョンも思い付いた。 memcpyをつかわない。

#define Swap(a,b) \
{ \
char checker[sizeof(a)==sizeof(b)]; \
typedef struct { char temp[sizeof(a)]; } temp_t;\
temp_t temp=*(temp_t*)&a;\
a=b;\
(*(temp_t*)&b)=temp;\
}
>>974
常識だろ?
糞コード量産厨(w
>>977
まじで!?
>>978
ひどい。 
一生懸命考えたのに・・・
>>979
なにが?
>>981
コンパイルエラーになるかどうかで型(の大きさ)があっているかどうか確かめること。
次スレテンプレです。なんか立てられないので他の人お願いします。


C/C++の宿題やってください。おながいします 5

私はC++房。
今まで1年*ヶ月、ほとんど毎日休まず一生懸命C++を勉強してきた。
ついでに今はJavaと基本情報もやっている。
しかし、全然分からない。宿題はたまる一方だ。
わからない宿題若しくは処理があるのでやってくださいm(_ _)m
4代目: http://pc2.2ch.net/test/read.cgi/tech/1045074808/l50
3代目: http://pc2.2ch.net/test/read.cgi/tech/1041992392/l50
2代目: http://pc3.2ch.net/test/read.cgi/tech/1039772622/l50
宿題手伝いますYO!!: http://pc3.2ch.net/test/read.cgi/tech/1038024989/l50
なんで空白厨が現れたのかと思ったら、1000取りか。
#include<stdio.h>

main(int argc,char **argv,char **envp)
{
echo(envp);
exit(0);
}

echo(char *ss)
{
while (*ss != NULL)
printf("%s\n",*ss++);
}
このプログラムがなんなのかわかりません
環境変数の値を標準出力に吐くプログラム
>>994
envp(というかmainの第三引数)は環境変数のリストだと思う。
Cの標準規格には存在しないけどね。
997デフォルトの名無しさん:03/04/29 13:24
mainでexitって阿呆?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。