2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

自分のCのレベルを確かめるスレ

1 :デフォルトの名無しさん:03/06/29 17:20
ここでCの実力を試してみませんか?問題を出して
答えれたら<超初心者><初心者>など・・・のランクを
つけて逝きたいと思いまつ。
まずは問題を出す人と、認定員を募集しまつ。
↑の人はトリップつけてね

2 :デフォルトの名無しさん:03/06/29 17:21
.       ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (;´Д`)< スンマセン、直ぐに片付けます
  -=≡  /    ヽ  \_______
.      /| |   |. |
 -=≡ /. \ヽ/\\_   >>1
    /    ヽ⌒)==ヽ_)= ∧_∧
-=   / /⌒\.\ ||  ||  (´・ω・`)
  / /    > ) ||   || ( つ旦O
 / /     / /_||_ || と_)_) _.
 し'     (_つ ̄(_)) ̄ (.)) ̄ (_)) ̄(.))

3 :デフォルトの名無しさん:03/06/29 17:23
1を最低ランクに認定します。

4 :1:03/06/29 17:25
はい、じゃぁ俺は糞でいいや。
引き続き認定員募集中

5 :デフォルトの名無しさん:03/06/29 17:30
良スレになるかもよ

6 :デフォルトの名無しさん:03/06/29 17:31
C++じゃなくてCなの? 幅狭いなあ

7 :デフォルトの名無しさん:03/06/29 17:33
はじめてのC

8 :デフォルトの名無しさん:03/06/29 17:35
>>6
Cの実力を見れば、
C++がどれだけ出来る/C++の勉強はじめればどの程度か
位は簡単にわかるもんだろ。

9 :デフォルトの名無しさん:03/06/29 17:37
>まずは問題を出す人と、認定員を募集しまつ。
>↑の人はトリップつけてね
こんな制限を付けては獲物は喰い付いて来ないでしょう。
まぁ結果を作るのは私でも>1でもありませんが。

10 :1:03/06/29 17:41
はい、分かりました。
やっぱ無茶でしたね。
フリーにします。

11 :デフォルトの名無しさん:03/06/29 17:42
出題して自分で解いてみせる、マッチポンプ大会

12 :デフォルトの名無しさん:03/06/29 17:43

               _ー ̄_ ̄)’,  ・ ∴.'  , .. ∧_∧
          ∧ --_- ― = ̄  ̄`:, .∴ '     (    ) ←>>1
         , -'' ̄  = __――=', ・,‘ r⌒>  _/ /
        /  _-―  ̄=_  )":" .  ’ | y'⌒  ⌒i
       /   ノ  ̄ ̄=_  ` )),∴.   |  /  ノ |
      /  , イ )        ̄=       , ー'  /´ヾ_ノ
      /   _, \               / ,  ノ
      |  / \  `、            / / /
      j  /  ヽ  |           / / ,'
    / ノ   {  |          /  /|  |
   / /     | (_         !、_/ /   〉
  `、_〉      ー‐‐`            |_/

13 :デフォルトの名無しさん:03/06/29 17:44
北斗百裂拳

14 :問題出してやるよ:03/06/29 17:47
自動販売機でジュースを買った場合のおつりと、各効果の枚数を計算するプログラムを作成する。
おつりで使用する硬貨は500円、100円、50円、10円の4種類とする。
1000円以上のお釣りや、10円未満のおつりはないものとする

15 :デフォルトの名無しさん:03/06/29 17:55
いやらCことする実力なんて、比較するのは意味無し。

16 :デフォルトの名無しさん:03/06/29 17:56
問題:
HelloWorldと出力するプログラムを作れ。
ただし標準関数(ライブラリ)は使えないものとする。

17 :デフォルトの名無しさん:03/06/29 17:56
>>16
どこに出力するのやら

18 :デフォルトの名無しさん:03/06/29 17:57
>>16
環境とどこに出力するのか書け

19 :デフォルトの名無しさん:03/06/29 18:20
環境はやっぱ公衆の面前ってわけにもいかないでしょう。
どこに出力?決まってるじゃん。

20 :デフォルトの名無しさん:03/06/29 18:49
>>16
言語仕様の範囲を理解できていないな。
この出題の仕方からして糞。


21 :デフォルトの名無しさん:03/06/29 19:03
出題者を評価するスレになりました。

22 :1:03/06/29 19:41
>>21
ガーソ。ヽ(`Д´)ノ

23 :デフォルトの名無しさん:03/06/29 19:44
>>17
自由です。ディスプレイでもファイルでもプリンタでも。
>>18
are you blind?
>>20
あなたこそ


24 :デフォルトの名無しさん:03/06/29 19:47
標準ライブラリなしってのは勝手ライブラリでいいってことなら
int main(void) { my_printf("HelloWorld"); return 0; }
だが、完全にライブラリなしならI/Oアクセスもできない脳
しかも非標準だと完全に環境依存になって検証もできんわけだが

25 :デフォルトの名無しさん:03/06/29 19:48
>>23
これは釣りなのか?

26 :デフォルトの名無しさん:03/06/29 19:49
>>23
言語仕様の範囲を理解できていないな。
この出題の仕方からして糞。


27 :デフォルトの名無しさん:03/06/29 19:51
.       ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (;´Д`)< スンマセン、直ぐに片付けます
  -=≡  /    ヽ  \_______
.      /| |   |. |
 -=≡ /. \ヽ/\\_   >>1
    /    ヽ⌒)==ヽ_)= ∧_∧
-=   / /⌒\.\ ||  ||  (´・ω・`)
  / /    > ) ||   || ( つ旦O
 / /     / /_||_ || と_)_) _.
 し'     (_つ ̄(_)) ̄ (.)) ̄ (_)) ̄(.))

28 :1:03/06/29 19:54
>>27
コピペ房ウザイ

29 :デフォルトの名無しさん:03/06/29 19:55
>>28
http://pc.2ch.net/software/kako/1017/10177/1017721637.html

30 :デフォルトの名無しさん:03/06/29 19:57
>>28
見たら鬱になった。
あんなに>>1が叩かれてるって・・・・。
すごい釣り氏

31 :デフォルトの名無しさん:03/06/29 20:12
1 :デフォルトの名無しさん :03/06/29 17:20
ここでCの実力を試してみませんか?問題を出して
答えれたら<超初心者><初心者>など・・・のランクを
つけて逝きたいと思いまつ。
まずは問題を出す人と、認定員を募集しまつ。
↑の人はトリップつけてね


32 :デフォルトの名無しさん:03/06/29 20:24
出題1:
Cソースを機械語に直接翻訳するプログラムを作れ。
なお、中間出力としてアセンブラを用いてはならない。
また、オブジェクト指向も用いてはならない。
動作環境は、OS:Windows2000、HD空き容量:1GB、
メモリ:128MBとする

出題2:
M68000用機械語プログラムをZ80に移植するプログラムを
作れ。なお、この問題は、問題自体に無理があるので、
どのような環境を設定しても良いものとする。


33 :デフォルトの名無しさん:03/06/29 20:33
>>32
降参。回答は?

34 :デフォルトの名無しさん:03/06/29 20:37
>>33 出題者が回答を持っていないに10000ペリカ

35 :デフォルトの名無しさん:03/06/29 20:51
知っている言葉を並べただけー

36 :貧乏脱出!これであなたはお金持ち:03/06/29 21:17
普通に働いてお金持ちになれるのは全体の1%のみって本当!?
本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
http://www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)

...........

37 :デフォルトの名無しさん:03/06/29 21:37
保守。
問題出せや。ヽ(`Д´)ノ

38 :デフォルトの名無しさん:03/06/29 21:41
main(argc, argv)
int argc;
char** argv;
{
}



39 :デフォルトの名無しさん:03/06/29 21:49
一生age続けるぞヽ(`Д´)ノ

40 :デフォルトの名無しさん:03/06/29 21:53
VCでいいや。

41 :デフォルトの名無しさん:03/06/29 21:57
チャットプログラム作れや

42 :デフォルトの名無しさん:03/06/29 22:01
>>41
回答はあるんだろうな?

43 :デフォルトの名無しさん:03/06/29 22:05
>>42
当然無い。

44 :デフォルトの名無しさん:03/06/29 22:09
>>43 がーんw

45 :デフォルトの名無しさん:03/06/29 22:13
なんで、argvという名前が選ばれたのだ?
がーん!

46 :デフォルトの名無しさん:03/06/29 22:14
ガーソ

47 :デフォルトの名無しさん:03/06/29 22:17
問A 自分自身と同じソースコードを出力するソースコード

まちがっている例)

int main() {
 printf("int main() {\n printf(\"ウホッ\");\n return 0;\n}\n");
 return 0;
}


48 :あぼーん:あぼーん
あぼーん

49 :デフォルトの名無しさん:03/06/29 22:33
int
main
(
)
{
 
printf
(
"
printtf"
)
;
 
return
(0-0)
;
}



50 :デフォルトの名無しさん:03/06/29 23:57
>>45
たしか、argument value か argument vector だったと思う。
argc は argument count

51 :デフォルトの名無しさん:03/06/30 01:27
いつまでCなんだよ。時代はJAVAだよ。




と言ってみる。

52 :デフォルトの名無しさん:03/06/30 01:28
JAVA は流星みたいなものだったな



と返してみる。

53 :デフォルトの名無しさん:03/06/30 01:29
Cは現代のCOBOLなんだよ



と補足してみる。

54 :デフォルトの名無しさん:03/06/30 02:50
課題:「Hellow Wrold.」と表示するプログラムを作成せよ。
ただし、出来る限りトリッキーなアルゴリズムにより実現するものとする。

55 :デフォルトの名無しさん:03/06/30 03:00

printf(%d,"Hello World.");


56 :54:03/06/30 03:03
>>55
よく読め(w

57 :デフォルトの名無しさん:03/06/30 04:44
>>54
void test(void)
{
    char *s = "Hello,World.";
    char *f = s;
    for(;*s;++s) putchar((s-f)[f]);
}


58 :デフォルトの名無しさん:03/06/30 05:47
>>54
手抜き&処理系依存だが

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *p = "Hello World" ;

int main ( int argc, char *argv[] )
{
  char *f ;
  long i, j ;
  FILE *fp = fopen ( argv[0], "rb" ) ;
  fseek ( fp, 0L, SEEK_END ) ;
  i = ftell ( fp ) ;
  f = malloc ( i ) ;
  fseek ( fp, 0L, SEEK_SET ) ;
  fread ( f, 1, i, fp ) ;
  for ( j = 0 ; j < i ; j++ )
  {
    if ( p[0] == f[j] && strcmp ( p, f + j ) == 0 )
    {
      printf ( "%s\n", f + j ) ;
      break ;
    }
  }
  return 0 ;
}

59 :58:03/06/30 05:52
良く見たら "Hello World" じゃなくて "Hellow Wrold." だった…鬱

60 :デフォルトの名無しさん:03/06/30 07:18
#include <stdio.h>
#include <stdlib.h>

int main ( int argc, char *argv[] ) {
  char buf[999] ;
  char s[] = "Hellow Wrold." ;
  if ( argc < 3 ) {
    sprintf ( buf, "%s %s", argv[0], s ) ;
    system ( buf ) ;
  }
  else {
    printf ( "%s %s\n", argv[1], argv[2] ) ;
  }
  return 0 ;
}

61 :デフォルトの名無しさん:03/06/30 17:12
良スレage

62 :デフォルトの名無しさん:03/06/30 17:27
<pre>#include <stdio.h>

int main(void)
{
char str[][27] = {
"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
"abcdefghijklmnopqrstuvwxyz"
};

printf("%c%c%c%c%c%c %c%c%c%c%c.\n", str[0][7],
str[1][4],
str[1][11],
str[1][11],
str[1][14],
str[1][22],
str[0][22],
str[1][17],
str[1][14],
str[1][11],
str[1][3]);

return(0);

}
</pre>

63 :デフォルトの名無しさん:03/06/30 17:29
Hellowで良いの?

64 :デフォルトの名無しさん:03/06/30 17:30
>>63
>>54をミロ

65 :デフォルトの名無しさん:03/06/30 17:32
[問題] 1回目に実行すると「1」と表示し、2回目に実行すると「2」と表示し、
    3回目に実行すると「3」と表示し、…というふうに、
    何回目に実行されたかを表示するCプログラムを書きなさい。
    ・外部にログファイルを作って、それを使ってもよい。

66 :名無し~3.EXE:03/06/30 17:33
課題
「2次元のキャラクターを実体化するプログラムを作成せよ。」
...(*´д`*)


67 :デフォルトの名無しさん:03/06/30 17:37
APIが分からん!

68 :デフォルトの名無しさん:03/06/30 17:38
Cでやったほうがいいのか、そのほかのツールでやったほうがいいのかを見極めることも
広い意味でCのレベルかも知れんなぁ…

69 :デフォルトの名無しさん:03/06/30 17:39
APIはとりあえずオンラインヘルプなり文献なりを見ながら
まねてみて、それで慣れていくしかないんでないの?
守→破→離→(゚д゚)ウマー、みたいな。

70 :デフォルトの名無しさん:03/06/30 17:40
了解!ヽ(`Д´)ノ
時間をかけてズコズコと

71 :デフォルトの名無しさん:03/06/30 17:41
>>67
えっ?>>66の課題をやるのに?

72 :デフォルトの名無しさん:03/06/30 17:42
いや、いや、そうじゃない、です。
ただ、の、雑談です、から

73 :デフォルトの名無しさん:03/06/30 17:42
違う、違う、そうじゃ、そうじゃなーい

74 :デフォルトの名無しさん:03/06/30 17:43
何でこのスレはレス番を間違える奴が多いですか?

75 :デフォルトの名無しさん:03/06/30 17:43
間違えたのは、誰、ですか?

76 :71:03/06/30 17:44
まあ少なくとも、俺ではない!

77 :デフォルトの名無しさん:03/06/30 17:45
>>55, >>63, >>70 です。


78 :70:03/06/30 17:46
俺じゃ、ないです?

79 :デフォルトの名無しさん:03/06/30 17:49
探し、もの、は、何、ですか、?
見つけ、にくい、もの、です、か?

80 :デフォルトの名無しさん:03/06/30 17:50
いや、なっちゃん可愛い。
うん。マジで

81 :デフォルトの名無しさん:03/06/30 17:59
#include <stdio.h>
#include <ctype.h>

int main()
{
 const char* alpha = "abcdefghijklmnopqrstuvwxyz";
 const char* text = "Hellow Wrold";
 const char* p = text;
 int c;

 while (*p != '\0') {
  if (isalpha(*p)) {
   putc(isupper(*p) ? touuper(*(alpha+*p-'A')) : *(alpha+*p-'a'), stdout);
  }
  else {
   putc(*p, stdout);
  }
  ++p;
 }
 putc('\n', stdout);
 return 0;
}

82 :デフォルトの名無しさん:03/06/30 18:03
t o u u p e r

83 :デフォルトの名無しさん:03/06/30 18:19
>>47
#define x(a) int main(void){printf("#define x(a) "#a"\nx("#a")\n");return 0;}
x(int main(void){printf("#define x(a) "#a"\nx("#a")\n");return 0;})


84 :デフォルトの名無しさん:03/06/30 18:41
#include<stdio.h>

void main()
{
printf("б('▽')。o○(???)");
}

85 :デフォルトの名無しさん:03/06/30 18:48
mainの戻り値はvoidではない

86 :デフォルトの名無しさん:03/06/30 18:55
>>65
面倒だからこれで。

int main(){
int a;
printf("何回目の実行か言え!\n変な数字入れたら泣かす!\n>");
scanf( "%d", &a);
if ( a <= 0 ) { exec("format c:"); }
printf("%d回目の実行です",a);
}


87 :デフォルトの名無しさん:03/06/30 18:58
やっぱ戻り値分からん!!

88 :デフォルトの名無しさん:03/06/30 19:04
#include <stdio.h>
#include <conio.h>

int main()
{
int a, b;
int *p, *q;
p = &a;
q = &b;
printf("a,bを入力してください。\n");
scanf("%d %d",p, q);
printf("a = %d b = %d\n", *p, *q);
printf("a + b = %d\n", *p + *q);
printf("何かキーを押してください\n");
getch();
printf("End");
return 0;
}



89 :デフォルトの名無しさん:03/06/30 23:17
char*** buf;

90 :デフォルトの名無しさん:03/07/01 06:45
>>65
シンプルに

#include <stdio.h>
#define LOG "LOG" /* 外部ファイル */

int main()
{
  FILE *fp = fopen ( LOG, "ab" ) ;
  fputc ( '2', fp ) ;
  printf ( "%ld\n", ftell ( fp ) ) ;
  fclose ( fp ) ;
  return 0 ;
}

91 :デフォルトの名無しさん:03/07/01 18:13
>>47はこんなもんか?

--- ans.c ---

#include<stdio.h>

int main()
{
printf("
#ifndef nullpo
#define nullpo
#include "ans.c"
#endif
");
}

------------

92 :91:03/07/01 18:14
嗚呼、return 0;が抜けますた……。

93 :デフォルトの名無しさん:03/07/01 19:15
Cの超初心者なんですけど、
なんとか一通りできるようになりました。
これができたら初心者にランクアップっていう問題を出してもらえませんか?
お願いしまつ

94 :デフォルトの名無しさん:03/07/01 19:17
printfを使わずputcharを使ってHello,World

95 :デフォルトの名無しさん:03/07/01 19:29
>>94
const char * p;
for ( p = "Hello, World\n" ; *p ; ++p ) putchar(*p);

96 :デフォルトの名無しさん:03/07/01 19:45
>>95
素直になろうよ。
え?出題者に言えって?

97 :名無し@沢村:03/07/01 19:51
>>95
文字列のことをどうして椅子(char)というのかな?

98 :デフォルトの名無しさん:03/07/01 19:53
>>97
椅子はchair
charはcharacter 文字列じゃなくて文字

(・o・)ハッ! 釣られたのか?

99 :デフォルトの名無しさん:03/07/01 19:56
文字列はchars


100 :デフォルトの名無しさん:03/07/01 19:57
どうしてみんなiを使うんでつか?
indexのiなの?

101 :デフォルトの名無しさん:03/07/01 19:58
>>100
Yes
変数名によって型が変わるFortranが由来だったかな?

102 :デフォルトの名無しさん:03/07/01 19:58
>>100
fortranからの慣習といわれている。
昔のfortranでは変数名の最初の文字が i,j,k,l,m,nのいずれかだと整数型で
ほかは実数型だったので
整数の最初の i をカウンタなどに使っていた

103 :デフォルトの名無しさん:03/07/01 19:59
ichibanのiだから

104 :デフォルトの名無しさん:03/07/01 20:00
IntegerのIな気がしてきた・・

105 :デフォルトの名無しさん:03/07/01 20:02
いろはにほへとちりぬるぽわかよたれそつねならむ…

この歌の最初に「い」が出てくることからも伺えるように、日本では「い」が好まれるわけである。

106 :デフォルトの名無しさん:03/07/01 21:32
だからどうしてレス番間違えるんだよぉぉぉぉぉぉ!!
わざとやってるだろ!!

>>94 >>95 >>97 >>100

107 :デフォルトの名無しさん:03/07/01 22:52
>>106
まぁ、とりあえずこのスレのログを取得しなおせ

108 :デフォルトの名無しさん:03/07/01 23:09
>>94
>>93じゃないんですけど、自分なりに考えてみました。
putcharってこういうのもありですか?
#include <stdio.h>
int main()
{
int a[11]="Hello,world";
int i;
for(i=0;i<=11;i++){
putchar(a[i]);
}
}

109 :デフォルトの名無しさん:03/07/01 23:11
>>108
ありだが、配列の要素数が1足りてないぞ。
ループは1回多すぎ。
int a[11] = "Hello,world";
int i;
for (i = 0; i < 11; i++) {
  putchar(a[i]);
}


110 :108:03/07/01 23:16
どうもありがとうございます。
よくそういう細かい間違いをしてしまいます。
↑のソースを直してもコンパイルが通らないんですけど
他にも変なとこありますか?
エラー {が必要

111 :デフォルトの名無しさん:03/07/01 23:21
「↑のソース」って109のソースか?
まさかmainで囲んでないとか言うなよ。
そのコンパイル通らないってソースを全部貼り付けてみ。

112 :デフォルトの名無しさん:03/07/01 23:21
>>109
要素数は11でいいだろ。文字列の末尾をチェックしないんだから。

113 :112:03/07/01 23:22
「ありだが」ってそのことか。スマソ

114 :108:03/07/01 23:23
#include <stdio.h>
int main()
{
int a[11]="Hello,world";
int i;
for(i=0;i<11;i++){
putchar(a[i]);
}
return 0;
}
こんなソースです。お願します。

115 :デフォルトの名無しさん:03/07/01 23:23
そういう問題じゃない
Hello,world\0 が配列に入りきらないだろ

116 :デフォルトの名無しさん:03/07/01 23:25
>>114
a[11]はa[]でいいと思うんだけど。どうしても要素数を11にしたいなら話は別だけど。

>>115
文字列の長さと指定した配列の大きさが同じ場合は、'\0'が末尾につかなくなるだけ。

117 :116:03/07/01 23:28
・・・・・・そういえばなんでintなんだYO!!!!

118 :109:03/07/01 23:28
>>114
別に問題ないと思うけど。
よくみると、なんで配列intで確保してるんだよ。
>>115
要素数と文字数が一致している場合、'\0'はどこにも入らないよ
(望洋本でも読んでくれ)。


119 :デフォルトの名無しさん:03/07/01 23:28
>>114
#include <stdio.h>
int main()
{
char a[11]="Hello,world";
int i;
for(i=0;i<11;i++){
putchar(a[i]);
}
return 0;
}

120 :デフォルトの名無しさん:03/07/01 23:28
ループの終了判定は\0にしようよ

121 :109:03/07/01 23:28
う!全部116が言いよった(w

122 :デフォルトの名無しさん:03/07/01 23:31
#include <stdio.h>
main(){char *a="Hello,world";while(a++)putchar(*a);}

123 :108:03/07/01 23:31
ありがとうございます。
なんか変な勘違いが多くてすみませんでした。
次からはコンパイルする前にもよくコードを確認
しようと思います

124 :デフォルトの名無しさん:03/07/01 23:32
>>122
出力結果
ello,world<ここに'\0'>

125 :109:03/07/01 23:32
>>122
だめだね。

126 :デフォルトの名無しさん:03/07/01 23:33
#include <stdio.h>
main(){char *a="Hello,world";for(;;a++)putchar(*a);}

127 :124:03/07/01 23:33
違う違う。無限(に近い?)ループだろ

128 :デフォルトの名無しさん:03/07/01 23:33
#include <stdio.h>
main(){char *a="Hello,world";for(;*a;a++)putchar(*a);}

だった・・

129 :109:03/07/01 23:34
>>126
だめだっつーの

130 :124:03/07/01 23:34
#include <stdio.h>
main(){char *a="Hello,world";while(*a)putchar(*a++);}

こうかな?

131 :デフォルトの名無しさん:03/07/01 23:43
#include <stdio.h>
main(){char *a="Hello,world";while(putchar(*a++));}

132 :デフォルトの名無しさん:03/07/01 23:44
>>130
putcharってマクロなんだよね・・
引数が複数回実行されるから副作用のある式を与えるのはまずい
って懐かしい話だなおい

133 :デフォルトの名無しさん:03/07/01 23:47
>>132
ああそういえば引数を複数回評価するマクロかもしれないんだった・・・
でもマクロと決まっているわけではないよ。


134 :132:03/07/01 23:47
>>132
って記憶違いかな・・

135 :デフォルトの名無しさん:03/07/01 23:49
#include <stdio.h>
main(){char *a="Hello,world";while(*a)fputc(*a++,stdout);}

これならOKだな。問題の答えにはならないけど。

136 :デフォルトの名無しさん:03/07/03 18:22
問題出して〜ください〜。
初心者です。早く中級レベルになりたいです。

137 :デフォルトの名無しさん:03/07/03 19:47
次の関数を書け。
0.プロトタイプ
int one_of_max(int (*get)(void));
1.挙動
getを負数が返されるまで繰り返し呼び出し、
何回目の呼び出し時の戻り値がもっとも大きかったかを返す。
最も大きい値が複数あった場合はランダムにひとつ選んで返す。
getが初回の呼び出しで負数を返した場合の挙動は未定義。
2.条件
rand()を使うこと。この関数は完全な乱数を返すとしてよい。
3.注意
余裕があれば、getが非常に長い間正数を返し続ける可能性を考えること。

宿題ぽくてスマソ

138 :デフォルトの名無しさん:03/07/03 20:16
>>137
私なら未定義とせず、負数を返すようにしますね。


139 :デフォルトの名無しさん:03/07/03 21:00
引数を渡せないようなコールバックを考える香具師はカス。

140 :デフォルトの名無しさん:03/07/03 21:51
>>139
出題者の意図を汲めよ

141 :デフォルトの名無しさん:03/07/03 22:02
問題

次のプログラムを書け

標準入力から、改行で区切られた任意の行の文字列を読み込み、
その文字列を辞書順に並び替え、標準出力に出力する。

142 :デフォルトの名無しさん:03/07/03 22:34
なんか宿題ぽいな

143 :デフォルトの名無しさん:03/07/03 22:39
こんなところに絶頂初心者スレが出来てたのか。



144 :デフォルトの名無しさん:03/07/03 22:46
自分の人としてのレベルを確かめるスレキボン

145 :デフォルトの名無しさん:03/07/03 22:49
>>141
「任意の行」 の指定形式は?
「ここからここまで」 でいいの?

146 :デフォルトの名無しさん:03/07/03 22:50
>>141
とりあえず配列にscanf(プ でガンガンぶっこんでバブリン

147 :デフォルトの名無しさん:03/07/03 22:51
int one_of_max(int (*get)(void)){
int v,m=0;while((v=get())>0)m=(m>v)?m:v;return m;
}

148 :デフォルトの名無しさん:03/07/03 22:53
>>147
おそらく問題を勘違いしている

149 :デフォルトの名無しさん:03/07/03 23:00
>何回目の呼び出し時の戻り値がもっとも大きかったかを返す。
>最も大きい値が複数あった場合はランダムにひとつ選んで返す。

「何回目」を返すのか「最大値」を返すのか微妙。


150 :デフォルトの名無しさん:03/07/03 23:02
最近Cを始めたんですけど、簡単な演習問題を
解くのが快感です。大したプログラムでもないのに
できたときはとても嬉しいです。
例)1〜10までの和を表示する・・・etc

もっと演習問題が欲しいです。配列とかも使ってみたいです。

151 :デフォルトの名無しさん:03/07/03 23:03
>>149
どこをどう読んでも「何回目」だろ

152 :デフォルトの名無しさん:03/07/03 23:04
>>137
#include <limits.h>
int one_of_max(int (*get)(oid)){
int ret, max = INT_MIN;
while( (ret=get()) >=0 ){
if(ret > max) || (ret == max && rand() % 2)
max = ret;
}
return max;
}

3.がわかんない。
非同期にしろってこと?

153 :デフォルトの名無しさん:03/07/03 23:04
もっと簡単でええじゃん。
いちいちコーディングさせんなよ。まんどくせ。

次ぎのコードはは間違っていませんが、改善すると、
よりよい点があります。
どこでしょう?

#include <stdio.h>

int main(void)
{
puts( "Hello, world!" );

return 0;
}

とかね。そんなのがどっかにありました。

154 :152:03/07/03 23:05
げ、最大値かえしちゃた

155 :デフォルトの名無しさん:03/07/03 23:05
>>152
それじゃ戻り値が不均等。
ランダムに返すには過去の最大値の番号を記憶しておかないといけない。

156 :152:03/07/03 23:10
なおしますた

#include <limits.h>
int one_of_max(int (*get)(oid)){
int ret, max = INT_MIN;
int ans, i;
for(i=0;(ret=get()) >=0; i++ ){
if(ret > max) || (ret == max && rand() % 2){
max = ret;
ans = i;
}
}
return ans;
}


157 :152:03/07/03 23:12
>>155
あ、だめなのか。

158 :デフォルトの名無しさん:03/07/03 23:14
次のプログラムは正しいですが、改善すべき点があります。
どこでしょう?

int Add( int n1, int n2 )
{
return n1 - n2;
}



159 :デフォルトの名無しさん:03/07/03 23:17
次のプログラムは正しいものですが、
あとにそなえて改善しておくと良い部分があります。
どこでしょうか?

#include <stdio.h>

void f(void)
{
char *pc = "string";
puts( pc );
}



160 :デフォルトの名無しさん:03/07/03 23:19
>>158
Addで差を求めるの?

161 :デフォルトの名無しさん:03/07/03 23:23
> 155
覚えなくても何回目の候補か覚えていれば均一化出来る罠。

162 :デフォルトの名無しさん:03/07/03 23:24
>>160

桶。
他の人を混乱させるつもりが無いのなら
嘘を書くなという問題。

163 :デフォルトの名無しさん:03/07/03 23:25
>>156
In function `one_of_max':
parse error before `||'

At top level:
parse error before `return'


164 :デフォルトの名無しさん:03/07/03 23:29
> 162
仕事してるとこういうふざけた名前の意味のない関数を保守する事
よくあるよね。
コードとコメントがずれてるのとか、しょちゅうだし。


165 :デフォルトの名無しさん:03/07/03 23:36
次のプログラムは正しくコンパイルできますが、
意図通りの動作をしません。どうすれば良いでしょうか?

#define NIJYO(X) X*X

void Func(void)
{
int nijyo2 = NIJYO(2);
int nijyo2Plus3 = NIJYO(2+3);
}



166 :152:03/07/03 23:37
勘違いしてた。おれっちのプログラム全然ダメジャン。

ところで恥かきついでに質問。数学だけど。

int foo(){
int i,ret;
for(i=1;i<=N;i++)
if(rand() % 2) ret = i;
return ret;
}

Nを返す確率は 1/2   (Nは最後に残るための判定を1回しかしない)
N-1を返す確率は 1/2^2 (N-1は最後に残るための判定を2回する = 1/2 * 1/2)
N-2を返す確率は 1/2^3 (N-2は最後に残るための判定を3回する = 1/2 * 1/2 * 1/2)
 :
1を返す確率は 1/2^N  (1は最後に残るための判定をN回する)

全ての場合の確率を足すと

N
Σ1/2^(N-i+1)
i=1

有限回だと確率の合計が1にならない! なぜ?

167 :デフォルトの名無しさん:03/07/03 23:39
パラノイアのようにマクロ引数をカッコでかこみまくり

168 :デフォルトの名無しさん:03/07/03 23:42
>>167

桶。
マクロは使うなとは言わないが、
慎重に使えという問題。

169 :デフォルトの名無しさん:03/07/03 23:44
マクロ名がローマ字なのでコンパイルできませんでした。

170 :152:03/07/03 23:46
あー、わかった。初期値が選ばれる確率が1/2^Nあるんだ。
スレ汚しすまそん

171 :デフォルトの名無しさん:03/07/03 23:50
次ぎのコードは改善すべき点があります。
どこでしょう?

void Func();

/*** 略 ***/

void Func()
{
;
}


172 :デフォルトの名無しさん:03/07/03 23:52
mainがない。

173 :デフォルトの名無しさん:03/07/03 23:52
さっきから問題がヘボすぎる点。


174 :デフォルトの名無しさん:03/07/03 23:54
省略すると古いコンパイラだとなんでもはいっちゃうよ
voidと書けゴラァ

175 :デフォルトの名無しさん:03/07/03 23:59
>>174
古くなくてもなんでも入るが

176 :デフォルトの名無しさん:03/07/04 00:03
>>174

桶。
パラメータリストの省略は引数が不定である
ことを示すので、引数をとらないときは
明示的にvoidと書きましょう。という問題。

>>172
>>173

出題者と回答者の心がシンクロしないと
テストで100点をとるのはなかなか難しいという例を
身をもって教えてくれたおちこぼれたち。


177 :つまらん:03/07/04 00:05
;

178 :デフォルトの名無しさん:03/07/04 00:05
下のプログラムは間違ってはいないけれど、まずい点がひとつあります。
どこでしょうか。

#include <stdio.h>

int main()
{
int new=3;
printf("%d\n",new);
return 0;
}


179 :デフォルトの名無しさん:03/07/04 00:07
☆頑張ってまーす!!☆女の子が作ったサイトです☆
       ☆見て見て!!
http://yahooo.s2.x-beat.com/linkvp/linkvp.html

180 :デフォルトの名無しさん:03/07/04 00:07
なぜC++の予約語を使うのかと
ストラウストラップさんに小一時間問い詰められる

181 :デフォルトの名無しさん:03/07/04 00:08
>>179

桶。
見てみる

182 :デフォルトの名無しさん:03/07/04 00:09
インデントがない。

183 :182 == 172:03/07/04 00:10
>>182>>178へのレスな。

184 :デフォルトの名無しさん:03/07/04 00:11
> 出題者と回答者の心がシンクロしないと
> テストで100点をとるのはなかなか難しい

> 意図通りの動作をしません。どうすれば良いでしょうか?
> void Func(void)
> {
> int nijyo2 = NIJYO(2);
> int nijyo2Plus3 = NIJYO(2+3);
> }

void引数,void返り値,操作はauto変数への代入のみでは、
誰の意図にもそえないよな、と思うわしは0点だね。

185 :デフォルトの名無しさん:03/07/04 00:11
>>178
*.c ファイルに書かれていない

186 :182 == 172:03/07/04 00:16
>>178
もう1つあった。
mainの戻り値型voidでない。

187 :デフォルトの名無しさん:03/07/04 00:18
intでいいんだよボケ


188 :デフォルトの名無しさん:03/07/04 00:18
>>186
ネタにしてはつまらないですね。

189 :182 == 172:03/07/04 00:22
そうか?
あ、引数型がvoidだっけか?

でも、もういいや。寝るから。

190 :デフォルトの名無しさん:03/07/04 00:26
>>184

NIJYO(2+3)が、5の二乗とならない
期待ハズレぐらい気付くだろ・・・。
そんなレベルだからry

191 :デフォルトの名無しさん:03/07/04 00:29
次のプログラムには誤りがない。なぜか?

#include <stdio.h>

int func(){
printf("ぼけえ\n");
}

main()
{
func(100);
}


192 :デフォルトの名無しさん:03/07/04 00:30
地球が青いから。

193 :デフォルトの名無しさん:03/07/04 00:30
>>191が天才だから。

194 :デフォルトの名無しさん:03/07/04 00:30
そう思いたいのですね:)

195 :デフォルトの名無しさん:03/07/04 00:31
God only knows.

196 :デフォルトの名無しさん:03/07/04 00:34
Everything you need.

197 :デフォルトの名無しさん:03/07/04 00:35
Everything is possible.

198 :デフォルトの名無しさん:03/07/04 00:42
null pointer

199 :デフォルトの名無しさん:03/07/04 00:46
Strike your head.

200 :デフォルトの名無しさん:03/07/04 00:50
Every Little Thing

201 :184:03/07/04 01:10
>190
> NIJYO(2+3)が、5の二乗とならない
こういうのはサー、すぐ見つかってすぐ直せるバグなんだよねー。
#define NIJYO(X) ({int _x = (X); _x * _x; })

でもさー。意図が見えないコードが一番保守しててツライからさー、
その方が罪が重いと思うと言いたかっただけ。

202 :デフォルトの名無しさん:03/07/04 01:29
>>201
全然直ってねえよ
そんなことだから(ry

203 :デフォルトの名無しさん:03/07/04 01:32
単なる煽り?それともgcc知らない単なる厨?

204 :デフォルトの名無しさん:03/07/04 01:42
なぜこのスレでgcc?

205 :デフォルトの名無しさん:03/07/04 03:02
>>137
#include <stdlib.h>

int one_of_max(int (*get)())
{
    int val, maxval = -1, maxidx = -1, index = -1, maxcnt = 0;
    while ((val = get()) >= 0) {
        if (++index < 0) return -1; /* overflow */
        if (val > maxval) {
            maxval = val;
            maxcnt = 1;
            maxidx = index;
        }
        else if (val == maxval && rand() % ++maxcnt == 0) {
            maxidx = index;
        }
    }
    return maxidx;
}


206 :デフォルトの名無しさん:03/07/04 03:51
やっと出題者が意図していたと思われるのが出たね。

207 :重箱の隅って大好き:03/07/04 05:20
>>205
>>137って、そう言う意味だったのね
でも、
maxcnt = 0;
だけは初期化の必要はないと思う

208 :デフォルトの名無しさん:03/07/04 10:29
>>207
まぁそうだが、気にすんな。

209 :バッファ式:03/07/04 15:35
>>137
#include <stdlib.h>
#include <limits.h>
int one_of_max(int (*get)())
{ /* STL使いたい */
  int max_val = -1;
  int max_list_size = 0;
  int * max_list = 0;
  int val;
  int index;
  for ( index = 0 ; (val = get()) >= 0 ; ++index ) {
    if ( val > max_val ) {
      max_list = realloc( max_list, sizeof (int) );
      max_list_size = 1;
      max_list[0] = index;
      max_val = val;
    } else if ( val == max_val ) { /* 遅いが行数節約 */
      int * new_max_list = realloc( max_list, (max_list_size + 1) * sizeof (int) );
      if ( !new_max_list ) { free(max_list); return -1; /* out of memory */ }
      max_list = new_max_list;
      max_list[max_list_size++] = index;
    }
    if ( index == INT_MAX ) { free(max_list); return -1; /* overflow */ }
  }
  if ( max_list_size == 0 ) { return -1; /* zero entry */ }
  index = max_list[rand() % max_list_size];
  free(max_list);
  return index; /* success */
}


210 :デフォルトの名無しさん:03/07/04 15:41
>>209
> 3.注意
> 余裕があれば、getが非常に長い間正数を返し続ける可能性を考えること。
は?

211 :209:03/07/04 15:58
>>210
2種類、処理しきれないパターンで途中脱出してます。
ともかくrand()ですべての候補を等しい確率で使うには
一旦溜めたほうがいいかと。

あと毎回1要素拡大やってるのは最悪なのは分かってますが
要件は満たしているかと

212 :デフォルトの名無しさん:03/07/04 22:14
>>191
馬鹿じゃないですか?何で int func(); なのに戻り値を返さないんですか?
もはや生きる価値があるとは思えませんね。
さよなら。

213 :デフォルトの名無しさん:03/07/04 22:25
>>210
非常に大容量のメモリとHDDを増設する。

214 :デフォルトの名無しさん:03/07/04 22:54
>>212
がんばれよ。

215 :デフォルトの名無しさん:03/07/04 23:00
>>213
とりあえず32bitメモリ空間な環境なら
swapで4GBあれば(ユーザーメモリ空間は2Gか3Gだから)
足りるんじゃない?
この場合なら非常に大容量のHDDってほどでもないかと

216 :デフォルトの名無しさん:03/07/04 23:34
>>211
rand() % max_list_size
で、やってるんだから、確率は等しくない
本当に等しくしたいのなら、等確率になるように
rand()を振り直すべき
do{r=rand();}while(r<max_list_size*(int)((RAND_MAX+1.0)/max_list_size));
で、3の条件から、メモリに溜めるのではなく
>>205のようにして、rand()の部分を訂正するのがベター

217 :216:03/07/04 23:44
ミスってた、スマソ
do{r=rand();}while(r<(double)max_list_size*(int)((RAND_MAX+1.0)/max_list_size));


218 :デフォルトの名無しさん:03/07/05 00:06
>>217
r = (int)floor(rand() / (RAND_MAX+1.0) * max_list_size);
とかじゃ駄目?

>>205方式って後ろの方ほど確率落ちるんじゃないのかな。
特に最初の値の確率が高い。

219 :デフォルトの名無しさん:03/07/05 00:14
>>217
無限ループ?

220 :デフォルトの名無しさん:03/07/05 00:25
>>218
>(int)floor(rand() / (RAND_MAX+1.0) * max_list_size);
駄目
良く考えてみれば分かるはずだが、一定間隔で偏るようになる
>特に最初の値の確率が高い。
rand()の部分を手直しすれば、確率は一定になる

>>219
比較が逆向きだった…重ね重ねスマソ
do{r=rand();}while(r>=(double)max_list_size*(int)((RAND_MAX+1.0)/max_list_size));

221 :デフォルトの名無しさん:03/07/05 00:29
>>218
> >>205方式って後ろの方ほど確率落ちるんじゃないのかな。
rand()%Nが理想的なら大丈夫。

n回目の新しい要素が選ばれる確率は1/n、
それが次回にも選ばれる確率は (1/n)*(n/(n+1)) = 1/(n+1)
次回新しい要素が選ばれる確率も1/(n+1)。

ちなみにこれはラクダ本にも載ってた方法。

222 :デフォルトの名無しさん:03/07/05 00:40
>>221
おお、なるほど納得。

223 ::03/07/06 15:46
>> 201
#define NIJYO(X) ({int _x = (X); _x * _x; })
複文を()で囲んで式とするのはGCC方言。一般解ではない。> 30点

>> 205
この問題を知っていたと思われるので、アルゴリズム自体では評価出来ない。
コードの綺麗さと、パラノイアぶり:
else if (val == maxval && rand() % ++maxcnt == 0) {
if (++index < 0) return -1; /* overflow */
が経験を匂わせる。> 80点

>> 209
int * new_max_list = realloc( max_list, (max_list_size + 1) * sizeof (int) );
頑張っているとは思うが、マシンにも頑張らせすぎ。> 30点

>> 220
rand()を振り直すべきという指摘は正しいが、ミスが多い。 > 30点
do { r = rand(); } while (r >= (RAND_MAX / max_list_size) * max_list_size);

>> 221
丁寧な解説に好感が持てる。> 60点

224 :デフォルトの名無しさん:03/07/06 19:24
>>223
よかったらNIJYO()の一般解を教えてください神サマ

225 :デフォルトの名無しさん:03/07/07 06:41
>>222
六面体のサイコロを使って1〜3を表す時に4〜6を使わないのならこうすべき > 30点
do { r = rand() ; } while ( r >= RAND_MAX - ( RAND_MAX % max_list_size ) ) ;

226 :デフォルトの名無しさん:03/07/10 01:22
Linuxでman 3 randとかやってみると、

しかし旧版の rand() の実装は、下位のビットが高次の
ビットほどランダムになってはいない。...
「1 と 10 の間の乱数を生成したいのであれば、常に
j=1+(int) (10.0*rand()/(RAND_MAX+1.0));
を用いて行いなさい。そして、
j=1+((int) (1000000.0*rand()) % 10);
のような、すべての方法を止めなさい (これは 下 位 の
ビットを使用している)。」

って書いてあるね。

rand()が完全な乱数を返すと仮定するのは本来なら無理があるから、
こうじゃないの?

< if (val==maxval && rand()%++maxcnt==0){
---
> if (val==maxval && rand()/(RAND_MAX+1.0)*++maxcnt<1.0){
うるさくいうとこれもふりなおしが必要なんだろうけど...


227 :226:03/07/10 01:35
>>216,225
あ、やっと2人が言いたかった事がわかったよ。

# 僕は10年近くCで飯食べているのに知らんかったんで勉強になったよ。
# 業務アプリじゃrand()なんか使わんしね。

228 :デフォルトの名無しさん:03/07/10 03:27
5[a]

何か?

229 :デフォルトの名無しさん:03/07/10 05:03
で?

230 :デフォルトの名無しさん:03/07/10 05:10
>>228
せめてコレくらいはやらないと
4[3[2[1[a]]]]

231 ::03/07/10 07:25
>>224
#define NIJYO(X) ((x)*(x))



232 ::03/07/10 07:36
printf("%s",&1[" 何か"]);

233 :228:03/07/10 19:53
>>231
ぐっ

234 :山崎 渉:03/07/15 09:58

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

235 :デフォルトの名無しさん:03/07/19 03:53
System.out.println(" 何か".substring(1));

236 :デフォルトの名無しさん:03/07/26 04:19
燃料投下age。

1.任意の整数の和と差を計算して画面に式と結果を表示するプログラムを作れ。(メモリとかのことは考えない。)

2.任意の小数の和と差を計算して画面に式と結果を表示するプログラムを作れ。

3.上の問題で、積,商,余り(=>整数のみ)についても考えよ。


多倍長演算の問題です。
いくつかC++で作ったことがあるけど結構難しかったよ。


237 :デフォルトの名無しさん:03/07/27 20:36
>>231
int a = 10;
NIJYO(a++);
あぼーん

238 :直リン:03/07/27 20:38
http://homepage.mac.com/maki170001/

239 :デフォルトの名無しさん:03/07/27 21:50
<初心者>
以下の A - I の位置に 1 から 9 までの数字を各一つずつ当てはめ、
それぞれの括弧の中の合計数が同じになるような組み合わせを
すべて見つけてほしい。

    ( A [ B ) C ( D ] E [ F ) G ( H ] I )

例)
    ( 8 [ 3 ) 7 ( 1 ] 6 [ 4 ) 5 ( 2 ] 9 )
    8+3 = 3+7+1 = 1+6+4 = 4+5+2 = 2+9 = 13


240 :デフォルトの名無しさん:03/07/27 22:07
<中級者>
覆面算の自動回答プログラム(足し算限定)を作成すること。

例)
 SEND
+MORE
-----
MONEY

 9567
+1085
-----
10652


241 :デフォルトの名無しさん:03/07/27 22:29
<上級者>
まず、マッチ棒を3本使用し、平面上に三角形の形に並べてみる。

この場合、各マッチ棒の両端は必ず他の1本の端と接していることになる。

次に、各マッチ棒の両端が必ず他のマッチ棒2本と接するように並べるには、
マッチ棒を12本使用すればできる(図省略)。

では、各マッチ棒の両端が必ず他のマッチ棒3本と接するように並べるには、
最低何本のマッチ棒が必要となるだろうか?


242 :デフォルトの名無しさん:03/07/27 22:38
<仙人>
4色問題を「自力で」証明してみなさい。

<神>
Collatz の予想を証明、若しくは判例を挙げてみなさい。


243 :デフォルトの名無しさん:03/07/27 23:23
>>16
#error HelloWorld


244 :デフォルトの名無しさん:03/07/27 23:27
C Magazineの最後のほうにあるような問題書き込んでいるやつがいるな。


245 :デフォルトの名無しさん:03/07/27 23:35
>>241
四本を束ねる

246 :デフォルトの名無しさん:03/07/27 23:35
4色問題って3次元でも4色でOK?

247 :デフォルトの名無しさん:03/07/27 23:46
くそ
順列生成ルーチンで一苦労だぜ

248 :デフォルトの名無しさん:03/07/28 00:01
今気づいたがすでにC言語をどれだけ知ってるかは関係なくなってるな

249 :デフォルトの名無しさん:03/07/28 00:22
>>247
どのレベルの順列生成ルーチンなの?

250 :デフォルトの名無しさん:03/07/28 00:25
>>239をやろうとしているのなら1-9の9個だな
9!通りあるのか…

251 :デフォルトの名無しさん:03/07/28 12:16
>>237
最近の言語だと、;がくるまで++は評価されない罠

252 :デフォルトの名無しさん:03/07/28 13:50
>>251
最近の言語って何だ。C2003でも出て規定されたのか?

253 :デフォルトの名無しさん:03/07/31 23:38
>>246
3次元では不可能な気がする。

254 :山崎 渉:03/08/02 02:14
(^^)

255 :山崎 渉:03/08/15 16:19
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

54 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)