C/C++の宿題は流石兄弟におまかせ 27代目

このエントリーをはてなブックマークに追加
俺たちC/C++兄弟が宿題を片づけるぞ。
            ∧_∧
     ∧_∧  (´<_`  )  自分の宿題も終わってないのに質問に答えるとは
     ( ´_ゝ`) /   ⌒i   流石だよな、兄者。
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃

【注意点】 -------------------------------------------------
・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、エラーなどは適切に書きましょう
 全文を書いてしまうか、分かりやすくまとめましょう。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。

・数学的な問題は名前だけではなく数式自体をあげ、どのような
 計算をするのかも説明してください。
------------------------------------------------------------

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
9代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
8代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
7代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
6代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
5代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
宿題手伝いますYO!!: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
            ∧_∧
     ∧_∧  (´<_`  )  名前欄に ( ´_ゝ`)#流石棚 で今日から君も流石兄弟だ
     ( ´_ゝ`) /   ⌒i   流石だよな、兄者。
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
>>1
スレ立て乙
5ぽろじょあ ◆niBmDfC40k :04/07/10 18:02
( .3.) ヌェー  マルェー
ぽろじょあの登場だYO

名前欄に「ぽろじょあ#ぽろっぽ」って書けば、キミも今日から ぼるじょあ◆niBmDfC40kだYO!


*ぽろじょあ◆niBmDfC40kはみんなでコテハンだYO!
*ぽろじょあ◆niBmDfC40kはいつだって全力投球かもYO!!
*ぽろじょあ◆niBmDfC40kは共同体で連続体で群生体かもしれないYO
*ぽろじょあ◆niBmDfC40kはみんななれるからイイぽろじょあばっかりだYO
*ぽろじょあ◆niBmDfC40kは2ちゃんねるの人気者かもしれないYO
*ぽろじょあ◆niBmDfC40kはエムエクース、ニーは分かるけど聞かないでYO!
6ぽろじょあ ◆niBmDfC40k :04/07/10 18:03
( .3.) ヌェー  マルェー
ぽろじょあの登場だYO

名前欄に「ぽろじょあ#ぽろっぽ」って書けば、キミも今日から ぼるじょあ◆niBmDfC40kだYO!


*ぽろじょあ◆niBmDfC40kはみんなでコテハンだYO!
*ぽろじょあ◆niBmDfC40kはいつだって全力投球かもYO!!
*ぽろじょあ◆niBmDfC40kは共同体で連続体で群生体かもしれないYO
*ぽろじょあ◆niBmDfC40kはみんななれるからイイぽろじょあばっかりだYO
*ぽろじょあ◆niBmDfC40kは2ちゃんねるの人気者かもしれないYO
*ぽろじょあ◆niBmDfC40kはエムエクース、ニーは分かるけど聞かないでYO!
7ぽろじょあ ◆niBmDfC40k :04/07/10 18:03
( .3.) ヌェー  マルェー
ぽろじょあの登場だYO

名前欄に「ぽろじょあ#ぽろっぽ」って書けば、キミも今日から ぼるじょあ◆niBmDfC40kだYO!


*ぽろじょあ◆niBmDfC40kはみんなでコテハンだYO!
*ぽろじょあ◆niBmDfC40kはいつだって全力投球かもYO!!
*ぽろじょあ◆niBmDfC40kは共同体で連続体で群生体かもしれないYO
*ぽろじょあ◆niBmDfC40kはみんななれるからイイぽろじょあばっかりだYO
*ぽろじょあ◆niBmDfC40kは2ちゃんねるの人気者かもしれないYO
*ぽろじょあ◆niBmDfC40kはエムエクース、ニーは分かるけど聞かないでYO!
8ぽろじょあ ◆niBmDfC40k :04/07/10 18:04
( .3.) ヌェー  マルェー
ぽろじょあの登場だYO

名前欄に「ぽろじょあ#ぽろっぽ」って書けば、キミも今日から ぼるじょあ◆niBmDfC40kだYO!


*ぽろじょあ◆niBmDfC40kはみんなでコテハンだYO!
*ぽろじょあ◆niBmDfC40kはいつだって全力投球かもYO!!
*ぽろじょあ◆niBmDfC40kは共同体で連続体で群生体かもしれないYO
*ぽろじょあ◆niBmDfC40kはみんななれるからイイぽろじょあばっかりだYO
*ぽろじょあ◆niBmDfC40kは2ちゃんねるの人気者かもしれないYO
*ぽろじょあ◆niBmDfC40kはエムエクース、ニーは分かるけど聞かないでYO!
流石な関連スレ(?)
【流石だよな俺ら@プログラム板】
http://pc5.2ch.net/test/read.cgi/tech/1049731594/
【テンプレサイト】
http://nody.hp.infoseek.co.jp/
流石板 ttp://jbbs.shitaraba.com/computer/4723←停止中
流石の杜 ttp://f15.aaacafe.ne.jp/~sasuga/
流石の宿 ttp://f19.aaacafe.ne.jp/~sasuga/
流石だよな俺ら板 ttp://www.bs1.net/sasuga/
10ぽろじょあ ◆niBmDfC40k :04/07/10 18:07
ボクたちぽろじょあ兄弟が宿題を片づけるZO
            ∧_∧
     ∧_∧  (。3。  )  自分の宿題も終わってないのに質問に答えるとは
     ( .3.) /   ⌒i   流石だYO!
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
>>1
12ぽろじょあ ◆niBmDfC40k :04/07/10 18:08
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)( .3.)
>>5-8 >>12
あきらめろ。君は負けたんだよ、ぼるじょあ。
なに、気に病むことはない。次スレがあるさ。
新スレ早々荒らしかよ。
            ∧_∧
     ∧_∧  (´<_,`  )  イライラしてもNG送りにしないとは
     ( ´,_ゝ`) /   ⌒i   流石だな、兄者。
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
>>13
よく見ろ、ぼるじょあじゃないぞ
こいつ最近色んな板で荒らし行為やってる亜流コテ。
これはぼるじょあ派に悪いイメージを与えるアンチ工作か?
1713:04/07/10 18:15
じゃ訂正
s/ぼるじょあ/ぽろじょあ/
s/次スレがある/君の居場所はどこにもない/
そこでようかんマンの登場さ
 .__
ヽ|・∀・|ノ ようかんマン
 |__|
  | |
19ぽろじょあ ◆niBmDfC40k :04/07/10 18:17
>>17
( .3.) ヌェーン 泣いちゃうYO 
  +:
  .+

           /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  \
          /;;;;;;;;;;  ;;;;;;;;;;;;;;;;;;;;;;  ;;;;;;;;;;  ヽ
         / ;;;;;;;;;;;;;;;;;;;;;  ;;;;;;;;  ;;;;;;;     丶
        / ;;;;;;:  ;;;;;:   ;;;;;    ;;;;;     │
        / ;;;;;;;;;;  ;;;;;;;;;;; ;;;;;;;;;; ;;;;; ;;;;; ;;;  ;;;;;;;; │
       │;;;;;;;;;;;;//|| ||||| || ||||| |||| || ゞ:::::::: :::::::│
       │;;;;;;;;;/|| || | |||| |||| ||| ||| || |||| | |ゞ:::::::::::│
       ∩;;;;;;/丿,;::≡ミミ;;、、 ソ  __,,,,、、、.. ゞ::::: /
       |/|;;;;//   _" _''ヘノ ヾ彡=''_""`` ヾ:::/、
       ((|ソ  ,─≦◎≧ヾ - , ≦◎≧- 、 ヾ|/)
       ヾ|||    - ̄ '    ヽ  ̄ -     ||ノ
        ヽ!|        /   ヽ        |ノ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ゝ: 、    ( _   _ )      ノノ < C/C++の宿題はアッコにおまかせ!
        ` ヽ     /   _ヽ ノ  ヾ     ノ    \____________
        __>、    ,, '::_`_' _:` 、`    ./
      /\ _/ ヽ   ( /----- ヽ) ,   ノ
     /   \ , 、 、 、ヽ、'  ̄ `ノノ_ ,/
   /      \ ヽ  ヾ、. ̄ ̄ (   )'丶
  /  ' "'' 、   \ \ _,, ̄ ''ノ ` ゙/  \
/ , - 、 ,,  `ヽ   \/   ̄ヽ '  ヽ    ,ゝ--、
             /      ヽ  |  /   ノ
     ,,  、    /    ヾ    ヾ  ヽ-' 、 ,/
  - ''      ヾ  (   ヽ  丶    ! ''  ,, ゝ" |
''"        \/ヽ  ヽ  ヽ _ 'i /    ヽ
  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ     人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ >>20
 (_フ彡

>>21
>20 のどこかに *((void *)0 が!?
>名前欄に「ぽろじょあ#ぽろっぽ」って書けば、キミも今日から ぼるじょあ◆niBmDfC40kだYO!
                                      〜〜〜〜〜
これがなんとも言えんな・・・
>>22
それのどこがナルポなんだ?
>>19
キショ・・・
26笑福亭鶴瓶:04/07/10 18:37
     /∵  ▼ \
    /∴       ヽ   
   , |∴   /  \ |、  
  |`──-( / )-( \)l |  
  | [     ,   っ  l |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 
  `-,     'ヽ、_ソ  }'   < 質問まだかいな
   ノ ヽ、    `'   ノ、   \________  
 /     ゝ ── '   ヽ
/   ,ィ -っ、        ヽ
|  / 、__ う 人  ・ ,.y  i
|    /        ̄ |  |
ヽ、__ノ          ノ  ノ
  |      x    9  /
   |   ヽ、_  _,ノ 彡イ
   |     (U)    |
夏厨にはまだ早い
>>24
カッコ閉じ忘れ。正:  *((void *)0)
配列を用いて100までの階乗を求めるプログラム(前すれ801-802)
をもっと初学者でもわかりやすいようにできませんか?
main関数以外のやり方をまだ学習していませんのでなにをやっているかわかりません。


#include<stdio.h>

typedef struct bint{
int value[200];
int max;
}BINT;

void mul(BINT *a,int b){
int i,carry;

carry=0;
for(i=0;i<a->max;i++){
a->value[i]*=b;
a->value[i]+=carry;
carry=a->value[i]/10000;
a->value[i]%=10000;
}
if(carry){
a->value[a->max]=carry;
a->max++;
}
}
3029続き:04/07/10 19:43
void print(BINT *a){
int i;

printf("%d",a->value[a->max-1]);
for(i=a->max-2;i>=0;i--){
printf("%04d",a->value[i]);
}
printf("\n");
}

int main(void){
BINT a;
int i;

a.max=1;
a.value[0]=1;
for(i=1;i<=100;i++){
printf("%d,",i);
mul(&a,i);
print(&a);
}
return(0);
}
>>29
>main関数以外のやり方をまだ学習していませんのでなにをやっているかわかりません。

じゃあmain関数以外のやり方を学習してからそのコードを読みなさい。
>29
ひとついえることは

      死 ね !
>>29
みんなもうちょっとまたーりいこうや

int main () {
inti, j, carry, max, value[200];

value[0]= 1;
max= 1;// 使用桁数
for (i = 1; i <= 100; i++) {// 1 から 100 までの数を、value に乗算 -> 表示を繰り返していく
printf("%d\t", i);// 現在の回数をまず表示

carry = 0;
for (j = 0; j < max; j++) {
value[j]*= i;// i を乗算
value[j]+= carry;// 下の位からの桁上がりを加算
carry= value[j] / 10000;// 桁上がりを求める
value[j]= value[j] % 10000;// 桁上がり以外の部分を配列に入れなおす
}
if (carry) {// 最後の位の桁があふれた場合、桁を1つ増やす
value[max]= carry;
max++;
}

printf("%d", value[max - 1]);// 一番上の桁をまず表示
for (j = max - 2; 0 <= j; j--) {// 一番下まで間を空けずに表示していく
printf("%04d", value[j]);
}
printf("\n");
}
return 0;
}
>>33
問)99!と100!を求め、表示するプログラムを作成しろ。
なお、配列を200個用意し、それぞれの桁に割り振って計算せよ。
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~
/* >>29 の解答例 */

#include<stdio.h>

int main() {
  char code[201];
  int i,s,c,carry;
  
  /* 初期化 */
  code[199] = '1';
  code[200] = '\0';
  for (i=0; i<199; i++)
    code[i] = '0';
  
  /* 計算 */
  for (i=1; i<=100; i++)
  {
    carry = 0;
    for (s=199; s>=0; s--) {
      c = (int)(code[s]-'0') * i + carry;
      code[s] = '0' + (c % 10);
      carry = c / 10;
    }
    
    /* 結果表示 */
    for (s=0; s<200; c++) {
      if (code[s] != '0')  break;
    }
    printf("%d! = %s\n", i, code+s);
  }
  return 0;
}
3633:04/07/10 20:23
>>34
いやおれは29-30を簡単にしただけだが
3733:04/07/10 20:24
スマンあげた
3835:04/07/10 20:28
/* 修正 */

#include<stdio.h>

int main() {
  char code[201];
  int i,s,c,carry;
  
  /* 初期化 */
  code[199] = '1';
  code[200] = '\0';
  for (i=0; i<199; i++)
    code[i] = '0';
  
  /* 計算 */
  for (i=1; i<=100; i++)
  {
    carry = 0;
    for (s=199; s>=0; s--) {
      c = (int)(code[s]-'0') * i + carry;
      code[s] = '0' + (c % 10);
      carry = c / 10;
    }
    
    /* 結果表示 */
    for (s=0; s<200; s++) {
      if (code[s] != '0')  break;
    }
    printf("%d! = %s\n", i, code+s);
  }
  return 0;
}
>>34
ちょっとまて『配列を200個』って何だ!?
『要素数200の配列』って意味だよな?
40デフォルトの名無しさん:04/07/10 20:37
(a*10+b)-(b*10+b) = 45 となるようなaとbをもとめるプログラムをforを
つかって書いてください。ちなみに0<=a<10,0<=b<10
#include<stdio.h>

int main() {
int a,b;

for (a=0; a<10; a++) {
for (b=0; b<10; b++) {
if ((a*10+b)-(b*10+a) == 45)
printf("a = %d, b = %d\n", a, b);
}
}

return 0;
}
42デフォルトの名無しさん:04/07/10 20:45
a,bは10以下の整数です
43デフォルトの名無しさん:04/07/10 20:47
return 0;って何ですか?
>40
(a*10+b)-(b*10+b) = 45
→10*(a-b) = 45
a=b+4.5
整数なら解はないし、実数なら解はいくらでもあるし、ねぇ。
45デフォルトの名無しさん:04/07/10 20:48
(10*a+b)-(b*10+b)
=(a-b)*10
よって10の倍数だから答えは0でしょう?

正常にプログラムが終了しましたってこと
おそらく (10*a+b)-(b*10+a) と書きたかったのではないかと思われ
>>38
スバラシイ!!
/*(10*a+b)-(b*10+a)ver*/
#include <stdio.h>
#define AHO 10
#define BAKA 10
#define KOTAE 45

main()
{
int a, b;

for (a=0;a<AHO;a++)
for (b=0;b<BAKA;b++)
if ((a*10+b)-(b*10+a) == KOTAE)
printf("(%d,%d)\n",a,b);

return 0;
}
>>29 解決
>>40 解決
現在未解決無し

            ∧_∧
     ∧_∧  (´<_`  )  全解決
     ( ´_ゝ`) /   ⌒i   流石だよな、兄者。
    /   \     | |  次の問題行こうぜ。
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
50ぽろじょあ ◆niBmDfC40k :04/07/10 21:38
ボクたちぽろじょあ兄弟が宿題を片づけるZO
            ∧_∧
     ∧_∧  (。3。  )  自分の宿題も終わってないのに質問に答えるとは
     ( .3.) /   ⌒i   流石だYO!
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
51ぽろじょあ ◆niBmDfC40k :04/07/10 21:41
( .3.) ヌェー  マルェー
みんなの人気者、ぽろじょあだYO

名前欄に「ぽろじょあ#ぽろっぽ」って書けば、キミも今日から ぼるじょあ◆niBmDfC40kだYO!


*ぽろじょあ◆niBmDfC40kはみんなでコテハンだYO!
*ぽろじょあ◆niBmDfC40kはいつだって全力投球かもYO!!
*ぽろじょあ◆niBmDfC40kは共同体で連続体で群生体かもしれないYO
*ぽろじょあ◆niBmDfC40kはみんななれるからイイぽろじょあばっかりだYO
*ぽろじょあ◆niBmDfC40kは2ちゃんねるの人気者かもしれないYO
*ぽろじょあ◆niBmDfC40kはエムエクース、ニーは分かるけど聞かないでYO!

ぽろじょあって何?ってYASHIは、このスレに来いYO!
http://that3.2ch.net/test/read.cgi/gline/1074692916/
Uzeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!


 こういうのってレス削除依頼出したら受け入れてくれる?

>>51
  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ     人
    / )    <  >  ∩
  _/し' //. V.3.)/ ヌェー  マルェー
 (_フ彡
55ぽろじょあ ◆niBmDfC40k :04/07/10 21:52
(( .3.)) ヌェー 悪い子チャンの質問待ってるYO!

お前らも「ぽろじょあ#ぽろっぽ」って名前欄に書いて見ろYO
56ぽろじょあ ◆niBmDfC40k :04/07/10 21:54
>>54
( 。3。) グハッ
下手にキャラクターに沿ったスレ立てるからこういう事になるんだ。
58ぽろじょあ ◆niBmDfC40k :04/07/10 21:58
( 。3。) グハッ ( 。3。) グハッ ( 。3。) グハッ
( 。3。) グハッ ( 。3。) グハッ ( 。3。) グハッ
( 。3。) グハッ ( 。3。) グハッ ( 。3。) グハッ
( 。3。) グハッ ( 。3。) グハッ ( 。3。) グハッ
( 。3。) グハッ ( 。3。) グハッ ( 。3。) グハッ
( 。3。) グハッ ( 。3。) グハッ ( 。3。) グハッ
( 。3。) グハッ ( 。3。) グハッ ( 。3。) グハッ
( 。3。) グハッ ( 。3。) グハッ ( 。3。) グハッ
( 。3。) グハッ ( 。3。) グハッ ( 。3。) グハッ
( 。3。) グハッ ( 。3。) グハッ ( 。3。) グハッ
59ぽろじょあ ◆niBmDfC40k :04/07/10 22:02
エー
あぼーん設定したから騒いでる奴のほうがアホに見える。
相手しなければそのうち消えるのに、なんで相手するんだろう。
放置出来ない奴ってのはもう(ry
>53
だいたいはコピペ等を理由に申請で通るとおもわれ。
あるいは、故意にスレッドの運営・成長を妨害している、や
同一の内容を複数行書いたもの、で削除できるものもある。
もちろん、スレ削除ならば通らないが。
NullPointerExplosion
 || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
 || ○荒らしは放置が一番キライ。荒らしは常に誰かの反応を待っています。
 || ○目前で荒らし始めても放置。ウザイと思ったらNGワードを活用しましょう。
 || ○放置された荒らしは煽りや自作自演であなたのレスを誘います。
 ||  ノセられてレスしたらその時点であなたの負け。
 || ○反撃は荒らしの滋養にして栄養であり最も喜ぶことです。荒らしにエサを
 ||  与えないで下さい。                  Λ_Λ
 || ○枯死するまで孤独に暴れさせておいて   \ (゚ー゚*) キホン。
 ||  ゴミが溜まったら削除が一番です。       ⊂⊂ |
 ||___ ∧ ∧__∧ ∧__ ∧ ∧_      | ̄ ̄ ̄ ̄|
      (  ∧ ∧__ (   ∧ ∧__(   ∧ ∧     ̄ ̄ ̄
    〜(_(  ∧ ∧_ (  ∧ ∧_ (  ∧ ∧  は〜い、先生。
      〜(_(   ,,)〜(_(   ,,)〜(_(   ,,)
        〜(___ノ  〜(___ノ   〜(___ノ
6429:04/07/10 22:12
みなさんありがとうございましたー
おかげで理解できましたー
ミミ彡  ゚̄ ̄' 〈 ゚̄ ̄ .|ミミ彡  正直、感動した
テスト
66デフォルトの名無しさん:04/07/10 22:49
はじめまして。早速ですが、よろしくお願いします。
生徒の名前、試験の点数(一科目)が10人分、スペースで区切られているテキスト
ファイルがあります。これを読み込み、線形リストの各ノードに格納する。
また、線形リストはポインタで実現すること。
そして、全ノードを試験の点数の成績の昇順に並び替える。

という問題なんですが、成績の昇順に並び替える関数がわかりません。

ヒントが出されていまして、
1、最小値を持つノードを探索する
2、最小値を持つノードをリストからはずす
3、最小値を持つノードをリストに挿入する
というものです。

どうかよろしくお願いいたします。
>>66
qsort()の使い方を勉強したまえっと。
            ∧_∧
     ∧_∧  (´<_`  )  自分だって最近まで知らなかったのに随分高圧的だな、兄者。
     ( ´_ゝ`) /   ⌒i  
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
68デフォルトの名無しさん:04/07/10 22:57
うるう年の判断でこれ間違ってますか?
1900を入力したときうるう年って判断されてしまいます。

if(year%4==0) m2=29;
else if(year%100==0) m2=28;
else if(year%400==0) m2=29;
>>68
それでは4の倍数は全てうるう年になってしまうぞ。コンプータの気持ちになって処理を追ってみろ。
if(year%4==0) {
 if(year%100==0)
  m2=28;
 else if(year%400==0)
  m2=29;
 else
  m2=29;
}
これでうまくいくはずだ。

            ∧_∧
     ∧_∧  (´<_`  )  最初のifの結果に満足して後の条件判定は行われない罠だな、兄者。
     ( ´_ゝ`) /   ⌒i  
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
すまん、間違った。
if(year%4==0) {
 if(year%100==0) {
  if(year%400==0)
   m2=29;
  else
   m2=28;
 }
 else
  m2=29;
}            ∧_∧
     ∧_∧  (´<_`  )  自分も同じ罠にはまるとは流石だな、兄者。
     ( ´_ゝ`) /   ⌒i  
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
>>67
せんせー、qsort()を線形リストに適用する方法がわかりません
7268:04/07/10 23:06
>>69
あー、そっか。ありがとうございました。
ちなみにifの階層を深くせずに実装するとこうなるな。
if(year%4!=0) m2=28;
else if(year%400==0) m2=29;
else if(year%100==0) m2=28;
else m2=28;
- else m2=28;
+ else m2=29;
またミスだ。
            ∧_∧
     ∧_∧  (´<_` ;) 酔っ払いは書くなってことだろ。
     ( ´_ゝ`) /   ⌒i  
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
次スレマダー?
>>71
1.線形リストを作る(メモリ内位置はばらばらでも良い)
2.リストへのポインタ列を作る(メモリをリスト数確保する)
3.ポインタ列をリストへのポインタで初期化する
4.qsortに渡す
で出来そうな悪寒。

>>66の方針でやると、こうなる。
材料
 I.  node* delete_node(int) リストからノードを切り取る関数
     前ノードの「次ノードへのポインタ」をいじり、切り取ったノードへのポインタを返す
 II. void insert_node(int, node) リストの任意位置にノードを挿入する関数
     I.の応用。違うのは挿入するノードの「次ノードへのポインタ」をきちんと次ノードを指すようにすること
 III. node* get_node_addr(node*, int) 先頭からn番目のノードアドレスを取得する関数
     線形リストを使う場合には不可欠
 IV. int findmin(node*) リスト中で最小値を持つノードの位置を返す関数
     今回の肝。

実装イメージ
firstnode = formatnodes(); //リストを初期化する(各人の得点データ等も代入する)

for (i = 0; i < 10; i++) {
n = findmin(get_node_addr(firstnode, i)); //get_node_addrで未ソート部の最初のポインタを取得、findminで最小値を持つノード位置を調べる
minnode = delete_node(n + i); //見つけたノードをリストから削除
insert_node(n, minnode); //削除したノードを正しい位置に再配置する
}

最適化方針
リスト仕様を一方向リストと仮定して書いたので、双方向リストならばfindmin()で直接最小値を持つノードへのポインタを返す等、改善の余地がある。
また、for (i = 0; i < 10; i++)をfor (i = 0; i < 9; i++)としてもほぼ同じ結果が得られる
はずである(10個の配列中で9個を正しい位置に置いたならば、もう一つも正しい位置にある
はずだから。なお、例外もある)。っと、こんな感じでいい?
>>76の仕様は中途半端で、リストをグローバル変数にしなきゃ使えないな。
minnode = delete_node(firstnode, n + i);
insert_node(firstnode, n, minnode);
というように、リストからきちんと対象物を探し出せるようにすべし。
>>68

m2 = 28 + (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0));
>>78
400割り切れの年が非閏年になっちゃうよ
8079:04/07/11 00:04
スマン。勘違い。。。
>>80
( .3.) ヌルォー 落ち込むなYO
8266:04/07/11 00:54
>>76
ありがとうございます!
なんとかできました!!
66 の出題をぱっと見て、
速攻でヒープソートを作ったが勘違い判明
このソースどうしようか・・・・・。

            ∧_∧
     ∧_∧  (´<_` ;) 問題文はよく読めってこった、兄者。
     ( ´_ゝ`) /   ⌒i  
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
イラネ
>>83
このソースどうしようか・・・・・。と。
            ∧_∧
     ∧_∧  (´<_`  ) ひとまず少しでも勉強になったならよしとしないか。
     ( ´_ゝ`) /   ⌒i  
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
>> 66
まぁとりあえず。

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

#define MAXNAMELEN 255

struct Node {
    char name[MAXNAMELEN + 1];
    int score;
    struct Node *next;
    struct Node *prev;
};

Node *pHead;
Node *pTail;

void add(Node *p)
{
    if (pHead == NULL) {
        pHead = pTail = p;
    } else {
        pTail->next = p;
        p->next = NULL;
        p->prev = pTail;
        pTail = p;
    }
}
void insert(Node *p, Node *q)
{
    q->next = p;
    q->prev = NULL;
    if (p->prev) {
        q->prev = p->prev;
        p->prev->next = q;
    }
    p->prev = q;
    if (p == pHead) {
        pHead = q;
    }
}

void remove(Node *p)
{
    if (p->prev) {
        p->prev->next = p->next;
    }
    if (p->next) {
        p->next->prev = p->prev;
    }
    if (p == pHead) {
        pHead = p->next;
    }
}
void print(const char *msg)
{
    puts(msg);
    for (Node *p = pHead; p; p = p->next) {
        printf("name= %s, score= %d\n", p->name, p->score);
    }
}

void sort(void)
{
    for (Node *p = pHead; p->next; p = p->next) {
        int min = p->score;
        Node *r = p;
        for (Node *q = p->next; q; q = q->next) {
            if (q->score < min) {
                r = q;
                min = q->score;
            }
        }
        if (r != p) {
            remove(r);
            insert(p, r);
            p = r;
        }
    }
}
#define STR0(x) #x
#define STR(x)  STR0(x)

void read(FILE *fp)
{
    char buf[MAXNAMELEN + 1];
    while (fgets(buf, sizeof(buf), fp)) {
        Node *p = (Node *)malloc(sizeof(Node));
        sscanf(buf, "%" STR(MAXNAMELEN) "s %d", p->name, &p->score);
        add(p);
    }
}
    
int main(int argc, char *argv[])
{
    FILE *fp = (argc > 1) ? fopen(argv[1], "r") : stdin;
    if (fp == NULL) {
        fprintf(stderr, "can't open: %s\n", argv[1]);
        exit(1);
    }
    read(fp);
    print("before sort");
    sort();
    print("after sort");
    
    return 0;
}
はぁ…
>>86-89
うpろだ使えよタコ・・・・・。と。
            ∧_∧
     ∧_∧  (´<_`  ) まあ>>1読めってことだな。
     ( ´_ゝ`) /   ⌒i  
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
9266:04/07/11 02:53
>>86-89
わざわざありがとうございます。でも実行してみたら、何も表示されませんでした^^;
でも、勉強になりました。ありがとうございました。
\\
 \\\  @@@  あんたら!
   (⌒\@# _、_@ わたしゃ煽りに育てた覚えはないよ!
    \ ヽヽ(  ノ`)
     (mJ  ^ ⌒\
      ノ ∩  / /
      (  | .|∧_∧ OKOK。
  /\丿 | (    )母者マテ!ときに落ち着けって!
  (___へ_ノ ゝ__ノ

OK。
    @@@    ,;⌒⌒i.
   @# _、_@ヽ  (   ;;;;;)   _______
    (  ノ` )  と)    ,,:;;;)   |         .|
   /⌒ ^ |  |ヽ| |/ |;,ノ  .|   void塾.  |
  / イ    (   )  | / .,i..  .|______|
 とノ /   / V V  | | ,,i; ,, . ,;⌒‖
   (    \,,,丶,  | |,,,;.    ,;i,  ‖ヽ
   |  ) \ \   ,,   ´ヽ (,,  ‖丿.,,,
  / ノ   (  / ,,  ,,     ヽ   ‖
/ /     | (_.、ヽ .. ヽ丶,.ヽ. ‖、,,
`、_〉      L__ ヽ,
要素数N個の配列を一定の順序で並べ替えたいのです。
必要な一時領域が少なく、速い方法を探しています。

NとPを互いに素な2以上の整数とし、N個の配列を
初項 0, 一般項 pn ≡ p(n-1) + P (mod N) の数列
Pn ≡ { 0, P, 2P, ,,(n-1)P } (mod N) の順に並び替える。
前:[0, 1, 2, 3, ,,,(N-1)]
後:[0, P%N, 2P%N, ,,,(N-1)P%N]

int i, An[N];
for (i = 0; i < N; i++)
An[i] = i;

// 最も単純な方法、Anの2倍の記憶領域が必要。
int Pn[N];
for (i = 0; i < N; i ++)
 Pn[i] = An[i] * P % N;

// Anのみで順序を入れ替える、ただし剰余算多用で遅そう。
for (i = 0; i < N; i++) {
 int j = i;
 do {
  j = j * P % N;
 } while (j < i);
 int t = An[i];
 An[i] = An[j];
 An[j] = t;
}
もうちょっと計算量の少ない方法はないものでしょうか?
なるべく剰余算を排除したいのですが。
質問しておいてなんですが、朝までお返事できませんので
悪しからず。
for (i = 0; i < N; i++) {
 int j = i;
 do {
  j = j * P % N;

何年待ってもjは0のままだと思うが
初項は0でいいんだな。失礼。
>>94
for (i = 0; i < N; i ++)
 An[i] = An[i] * P % N;
これじゃだめなのか?
[学籍番号、氏名、学科ID、学科名、得点]で構成されたCSVファイルがある。
(ただし、同じデータが重複している場合がある)
このデータを元に、学科ID毎にの人数と得点の平均を表示する。

という問題なのですが、これがデータベースでSQLを使うなら一瞬だと思うのですが・・・
デフォルト名無しが

「名無しさん@そうだ選挙に行こう」
になってる?
>>98
もうちょっと詳細を書いて欲しいです。
学科 ID は整数値(0 から始まらない整数)?
それと学科 ID の種類は可変?固定?
この情報のあるなしで書きやすさが全然違いますから

あと
> (ただし、同じデータが重複している場合がある)
これに対して特別な処理は必要ですか?
>>98
awkやperlでも一瞬だね。
少しは課題を考えて欲しいね。もっとセンスを磨くことをやらしてやれ。
10294:04/07/11 10:07
>>97
並べ替え後、どのように配置されたかわかるようにするため、
配列Anの初期値を各要素の始点からのoffsetにしましたが、
この処理を利用するシーンではAnの中身は不定なのです。
配列の要素でなく、そのindexで並べ替える必要があります。

おそらく >>94 でこのように書いてあるため勘違いされた
のだと思いますが、
for (i = 0; i < N; i ++)
 Pn[i] = An[i] * P % N;
// "Anの各要素が始点からのoffsetの場合に限り"
// 正しい結果となる

正しくはこうなります。
 Pn[i] = An[i * P % N];

出題がバグ有りで分かり難かったと思います。
大変申し訳ありません。
104ぽろじょあ ◆niBmDfC40k :04/07/11 11:23
          (.ε.   ) マルェー
(     .3.) マルェー 悪い子チャンの質問待ってるYO!
      (  .3.)ヌェー  
             (.ε. ) ボェー
105ぽろじょあ ◆niBmDfC40k :04/07/11 11:29
ボクたちぽろじょあ兄弟が宿題を片づけるZO
            ∧_∧
     ∧_∧  (。ε。  )  自分の宿題も終わってないのに質問に答えるとは
     ( .3.) /   ⌒i   流石だYO!
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ     人
    / )    <  >  ∩
  _/し' //. V。3。)/ ボェー マルェー >104-105
 (_フ彡
叩くまでぽるが来てるのにも気付かなかった。ウザイ>>106
>>107
(#.3.) ヌェー ボクは「ぽる」じゃ無くて「ぽろ」だZO!
様々な板で「センスが無い」「つまらない」と評判の
ぽろじょあさんこんにちは。
111名無しさん@そうだ選挙に行こう:04/07/11 12:08
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=108

すみません。上のURLにソースを貼り付けました。
/*--- 数学の点数の昇順に並び替え ---*/
の部分の関数がうまくできないので見ていただけませんか?
うまく並びかえれないというのと、並び替えた後の名前が変な文字になっている
人がいます。どうかよろしくお願いします。
関係無いけど、これがきもい。
case SortEng : sortmath(&list); break;

良く見てないけどRemoveNode()でfree()してからもそのメモリを参照
しているように見えるのは気のせい哉?
113sage:04/07/11 12:24
同フォルダ内の日本国憲法前文英語版(constitution.txt)の
単語の出現数をCで数える宿題です。
このプログラムを参考にするよう言われました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=109
114113:04/07/11 12:25
すごい間違いをした。sage
#Include <stdlib.h>
int main(){ return system("wc -w constitution.txt"); }
>>81
禿同
どうせ読み終わったら捨てるし、丁寧にやってもらっても大して意味無い
11798:04/07/11 13:41
>>100
学籍番号や学科IDというのは規則性はありますが、固定長です。(8桁の英数字)

>> (ただし、同じデータが重複している場合がある)
>これに対して特別な処理は必要ですか?
同じデータはカウントしないようにしないと、集計結果がおかしくなるはずです。

>>103
ありがとうございます。
これから見てみたいと思います。
私たちに、科せられた宿題なのですが宜しくお願いします。

(課題)
争いのない、平和な世界を創る。


お願いします。
119113:04/07/11 14:02
>>115
これは何ですか?
>>118
puts("争いのない、平和な世界を創る。");
>>118
全裸で路上に出て通行人を金づちで殴る。
>>118
using namespace std;

class Sekai
{
private:
 const int arasoi;
 const bool heiwa;
public:
 Sekai() : arasoi(0), heiwa(true) {}

 void print()
 {
  cout << "世界の争いは" << arasoi << "件です";
  if(heiwa) cout << "世界は平和です" << endl;
 }
}

main()
{
 Sekai sekai;
 sekai.print();
}
>>118
system("make world");

平和かどうかは知らないが。
>>118
今日の選挙で、公(ry
>>118
みんなで元気に挨拶しよう。







Hello World!



( .3.) ムゥワー 世界はLOVE&SEXだJ!
             (
         ,,        )      )
         ゙ミ;;;;;,_           (
          ミ;;;;;;;;、;:..,,.,,,,,
          i;i;i;i; '',',;^′..ヽ
          ゙ゞy、.3.)  }
           .¨.、,_,,、_,,r_,ノ′
         /;:;":;.:;";i; '',',;;;_~;;;′.ヽ
        ゙{y、、.3.:.、;:.3.:..3.}
        ".¨ー=v ''‐ .:v、,,、_,r_,ノ′
       /;i;i; '',',;;;_~⌒¨;;;;;;;;ヾ.ミ゙´゙^′..ヽ
       ゙{y、、.3.:.3.:...3..3..3.}<ヌェー 世界平和がどうとかほざいてる香具師は
       ".¨ー=v ''‐ .:v、冫_._ .、,_,,、_,,r_,ノ′   糞野郎だYO!
      /i;i; '',',;;;_~υ⌒¨;;;;;;;;ヾ.ミ゙´゙^′.ソ.ヽ
      ゙{y、.3..:,:..3.:,:.:.3.o,.3.) 、}
      ヾ,,..;::;;;::,;,::;):;:;:; .:v、冫_._ .、,_,,、_,,r_,ノ′
お前は選挙にでも行ってろよ
あ、選挙権の無いガキンチョか
なんでこのスレが目を付けられたんだ?
http://v.isp.2ch.net/up/d1d761a94427.txt
このプログラムでコンパイルすると以下のようなエラーが出ます。
kadai3.c: 関数 `main' 内:
kadai3.c:22: 警告: 引数 1 個の `insert_after' を渡しますにより、キャストなしで整数からポインタを作りました
kadai3.c:30: 警告: 引数 1 個の `insert_after' を渡しますにより、キャストなしで整数からポインタを作りました

キーボードから英単語を読み取り、それをリストに格納する関数を定義
したいのですが、どこがまちがってますか?
>>130
a[1]の型はcharだから、char *を必要とするinsert_afterには渡せない。
他にも間違いが多くあるから、配列について復習してみる事をお勧めする。
>>113
参考プログラム中のコメントの英語が変で,漏れの脳みそが混乱しますた。
日本語でコメント書けと,小一時間問い詰めたい気分。
さらに,問題との関連性もわけわかめ。
133130:04/07/11 15:36
http://v.isp.2ch.net/up/1d38dade0ee0.txt

一文字入力は出来ましたが、文字列の入力がどうしても
出来ません。教えてください。
>130

> printf("続けて入力する場合は単語をいれて下さい\n終了する場合は0を入れてください:");
> scanf("%s",&a[i]); ←
fgetc(stdin); を使え
135134:04/07/11 15:44
21行目
× scanf("%s",&a[1]);
○ a[1] = (char)fgetc(stdin)

28行目
× scanf("%s",&a[i]);
○ a[i] = (char)fgetc(stdin)
136130:04/07/11 15:47
>>134
ありがとうございます。参考にさせて戴きます。
またコンパイルできなかったらお願いします。
137130:04/07/11 16:08
なんどもすいません。
135のようにプログラムを入れ替えて実行しても、
[c3300301@IMS124 c3300301]$ ./a.out
単語を入力してください:and
続けて入力する場合は単語をいれて下さい
終了する場合は0を入れてください:続けて入力する場合は単語をいれて下さい
終了する場合は0を入れてください:続けて入力する場合は単語をいれて下さい
終了する場合は0を入れてください:続けて入力する場合は単語をいれて下さい
終了する場合は0を入れてください:if
続けて入力する場合は単語をいれて下さい
終了する場合は0を入れてください:続けて入力する場合は単語をいれて下さい
終了する場合は0を入れてください:続けて入力する場合は単語をいれて下さい
終了する場合は0を入れてください:0
H -> a -> n -> d ->
-> i -> f ->
-> <end>
のように1文字しか格納できていません。どうすればよいのでしょうか。
困ったねぇ
>>137
丸投げじゃないとやる気がでない。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct Node{
struct Node *next;
char word[1];
} Node;
char *readline(){
static char buf[100];
scanf("%s",buf);
return buf;
}
Node *create_word_list(){
char *word;
Node *list,*newNode;
list=NULL;
for(printf("単語を入力してください:"); word=readline(); printf("続けて入力する場合は単語をいれて下さい\n終了する場合は0を入れてください:")){
if( word[0]=='0' ) break;
newNode=malloc(sizeof(Node)+strlen(word));
strcpy(newNode->word,word);
newNode->next=list;
list=newNode;
}
return list;
}
newNode=malloc(sizeof(Node)+strlen(word));

newNode=malloc(sizeof(Node)+strlen(word)+1);
のほうがいいような...
word=readline();
142135:04/07/11 16:28
143130:04/07/11 16:28
139を私の環境でコンパイルしたところ、
]$ gcc kadai3-1.c
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../crt1.o(.text+0x18): In function `_start':
../sysdeps/i386/elf/start.S:77: undefined reference to `main'
collect2: ld はステータス 1 で終了しました
となるのですが、どうしてでしょうか?
そこまでアホだとどうしようもないな。main作れよ
>>144
Cの知識がないからです。
ソースを読んでないからです。
main()がないからです。
146145:04/07/11 16:32
アンカー間違いです。
s/>>144/>>143/です。
オレアフォです。
147111:04/07/11 16:41
>>112
気づきませんでした^^;
RemoveNode()のfree()を削除したら名前が普通に表示されました。
ありがとうございました。
うまく並びかえれないというのは、自力でなんとかなりました。
148130:04/07/11 16:41
142氏のプログラムで無事コンパイルできました。
いろいろご迷惑おかけしました。ありがとうございました。
>>147
free() の場所を考えないとリークしてるかもね。
>>140
char word[1];
でnull終端分は確保済み。
>>150
おろ、そうなるか…そうなるね。失礼。
152名無しさん@そうだ選挙に行こう:04/07/11 17:18
while文またはfor文を使って以下のように★印を表示させなさいって
問題なんですがどうしても思いつきません…
数字の計算式ならわかるんですが記号もfor文で繰り返しできるのかよくわかりません…

★★★
★★★★★
で最下段は★が15個。
いったいどうしらいいのか教えていただけないでしょうか?
153名無しさん@そうだ選挙に行こう:04/07/11 17:24
>>152
int i, j;
for(i=1; i<=15; i+=2){
for(j=1; j<=i; j++) printf("★");
printf("\n");
}

動作未確認
>>152
わからん。
奇数個表示させればいいんか?

for(i=0; i <= 15; i+=2) puts("★"):
>>152

for (int i = 1; i <= 5; i += 2) {
for (int j = 0; j < i; j++) {
std::cout << "★";
}
std::cout << std::endl;
}
またペンタゴンか
157152:04/07/11 17:31
ありがとうございました!コンパイルできました。
次のステップに似たような問題があるんでこれを参考にしてやってみようと思います。
158名無しさん@そうだ選挙に行こう:04/07/11 18:48
メニュー形式の画面を作成し、main関数でキーボードから番号を入力し、
番号に応じて次の処理を行うプログラムを作成せよ。
1:ユーザ関数でファイル名と2つの整数A,Bを入力し、2つの整数A,Bの間にコンマを付けてファイル名に書き込む
ユーザ関数p12a(void)を呼び出す。

2:ユーザ関数でファイル名を入力し、読み込んだ2つの整数A,Bの加算結果を表示するユーザ関数p12b(void)を呼び出す。

3:ユーザ関数でファイル名を入力し、読み込んだファイルの内容を表示するユーザ関数p12c(void)を呼び出す。

本当に困ってます。何方かわかる方がいましたら教えてください。
お願いします。
159名無しさん@そうだ選挙に行こう:04/07/11 18:52
二十字以内の文字を入力して大文字があれば「大文字あり」
と出力するプログラムを作りたいのですが、小文字だけで
入力しても「大文字あり」と表示されます。

悪いところを指摘してください。


#include<stdio.h>

void main()
{
char tbl[21];
int i;
printf("文字入力(1〜20文字):");
scanf("%s",tbl);
for(i=0 ; i<20 ;i++){
if('A'<=tbl[i] && tbl[i] <= 'z'){
printf("大文字あり");
break;
}

}
}
'z'
'Z'
>>159
> if('A'<=tbl[i] && tbl[i] <= 'z'){

これじゃ全ての文字が真になっちゃうよ
162名無しさん@そうだ選挙に行こう:04/07/11 18:56
きゃあ(T▽T)
ありがとー
↑その顔文字むかつく (@盆@ :)
>>158
なんとなくは判るのだが、宿題は全文きちんと転記しろ。
盆のほうがむかつく!(@u@ .:;)ノシ
166名無しさん@そうだ選挙に行こう:04/07/11 19:14
>>164

すいません。これが全文です。
出題者が池沼だと、解く方も苦労するね・・・。
>>165
今一番むかつく顔文字といえば、これだろ ( .3.)
>>163>>165
何よその顔文字ふざけてるの?

>>158
とりあえずこんな感じかな?
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=150
171デフォルトの名無しさん:04/07/11 21:06
(・ω・)にゃんにゃん

文字列を引数として取り,その文字列を一文字ずらした文字列を表示する関数を作成し、その動作を確かめなさい。ただし,z の次は a、Z の次は A
とする.

という課題が出ました。自分でやっても上手くできなかった・・・。
すみませんが、わかる方がおりましたらよろしくお願いします。
>>172        ∧_∧
     ∧_∧  (´<_`  )
     ( ´_ゝ`) /   ⌒i
#include <stdio.h>
#include <ctype.h>
void zurasu(char *s){
  char tmp;
  while(*s){
    if(isalpha(*s)){
      tmp = isupper(*s) ? 'A' : 'a';
      putchar((*s - tmp + 1) % 26 + tmp);
    }
    else{
      putchar(*s);
    }
    s++;
  }
}
int main(){
  char *str1 = "abc123ABC\n";
  char *str2 = "xyz456XYZ\n";
  zurasu(str1);
  zurasu(str2);
  return 0;
}

174デフォルトの名無しさん:04/07/11 21:33
キーボードから入力した2つの文字列を比較して
等しいなら equal 等しくないなら not equal と表示するプログラムを作っているのですが
1つの入力を "aaa" もう一方の入力を "aaaaa" と入力すると結果が equal となってしまいます。
これを not equal となるようなプログラムを教えて下さい。

#include<stdio.h>

void main()
{
char a[21], b[21];
int i;
printf("str1=");
scanf("%s",a);
printf("str2=");
scanf("%s",b);
for(i=0 ; b[i] != '\0' && a[i] != '\0' ; i++){
if(a[i] != b[i]){
printf("not equal\n");
goto end;
}
else{
continue;
}
}
printf("equal\n");
end:
;
}
scanf("%s",a);



fgets(a, sizeof(a), stdin);

にする(・ω・)にゃんにゃん
>>174
どこで教わってるの?
177174:04/07/11 21:42
バカだ大学だ(・ω・)にゃん
>>174
strcmpは禁止なのだろうか。
179174:04/07/11 21:45
初心者だから・・ワカラナイデス
goto end;
万事休す
人生終了
int exist_legal_move(int board[B][B], int player)この関数を使い、
ゲーム盤 board の状況において、
プレイヤー player に合法的な手があるときに1をないときに0を返す
関数を作れ。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=112
すいませんが分かる方お願いします。
182174:04/07/11 21:52
(´・ω・`)ションボリ
>>174
strcmp()アリなら、こうで。

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

void main()
{
char a[21], b[21];
int i;
printf("str1=");
scanf("%s",a);
printf("str2=");
scanf("%s",b);

if(strcmp(a, b) == 0)
printf("equal\n");
else
printf("not equal\n");

}
なんでラウンジでインデントつぶれているんだ?
for(i = 0; a[i] == b[i] && a[i] != '\0' && b[i] == '\0'; i++) ;
if (a[i] == '\0' && b[i] == '\0') goto equal;
else goto not_equal;
(ry
マチゴタ
( .3.) ヌェー マルェー マチゴタ
>>174
strcmp使わないバージョン
#include <stdio.h>
int main()
{
  char a[21], b[21], *pa, *pb;
  printf("str1=");
  scanf("%s",a);
  printf("str2=");
  scanf("%s",b);
  pa = a;
  pb = b;
  while (*pa++ && *pb++)
    if (*pa != *pb)
    {
      printf("not equal\n");
      return 0;
    }
  printf("equal\n");
  return 0;
}
>>174
for(i=0 ; b[i] != '\0' || a[i] != '\0' ; i++){
>174
ループの外でもう一度比較汁!

for(i=0 ; b[i] != '\0' && a[i] != '\0' ; i++){
if(a[i] != b[i]) break;
else continue;
}
if(a[i] != b[i]) printf("not equal\n");
else printf("equal\n");
end:
:
191190:04/07/11 23:05
えーっ、 else continue; は無駄だ(w

...end: もいらねー
192デフォルトの名無しさん:04/07/11 23:46
この問題をお願いします。
ファイル"infile"に次の形式の行列データがあるとき、その二つの行列の積をファ
イル"outfile"に書き出すプログラムを作れ。

5 5
5.0 7.0 6.0 5.0 7.0 10.0 8.0 7.0 6.0 8.0 10.0 9.0 5.0 7.0 9.0 10.0

68.0 -41.0 -17.0 10.0 -41.0 25.0 10.0 -6.0 -17.0 10.0 5.0 -3.0 10.0
-6.0 -3.0 2.0

5 5 というのが何か関系あるのかよくわかりませんが、問題文どうりに写しました。
どなたかよろしくお願いします。

前スレでも同じ質問してたあほなので放置。
>>192
学科変えた方が身のため。
>>192
正直わからん。確かに5 5の意味がわからない。5行5列の行列という意味かと思いきや
上段に16、下段に16の共に4行4列と思われる行列だし。
>>195
前スレ読めよ
>>192
他にも何か先生言ってただろ?
聞いてなかったんなら数少ない友達に聞けよ
宿題解いてやる方が前スレ読まないとダメなんてあり得ない
>>196
結局問題不備ってことに落ち着いたもののそのものズバリの解答をもらえるまで粘着してるって話なのね
前スレ読んでみたら、行列のフォーマットが微妙に違ってたな。(改行が入ってる)
問題を正確に写せてない予感。
201デフォルトの名無しさん:04/07/12 00:21
英小文字列を入力すると、その中に含まれる'a'の個数を数えて表示するプログラム
を作りなさい。(char str[20])

よろしくお願いします
>>201
int count = 0;
for (i = 0; i < 20; i++)
 if (str[i] == 'a')
  count++;
入力はscanf。マジおすすめ
>>202
ちょっとうそくさいな。
>>202
表示してねぇ
scanfに清き一票をお願いします
>202

まず19文字まで文字列を入れて試した後で、
3文字でテストしても同じ個数が得られるが、いいのか(w
scanf様様だね
NGワードに登録しとくか。
>>201
それは意外とレベルの高い問題だな
>>207
(・ω・)モニュ?
最近宿題スレ荒れてるな・・・・
とりあえず答え教えてやりゃいいんだよ
いや、もう眠いし。
214212:04/07/12 00:51
>>213
そうか、ごめん。オヤスミ
流石兄弟関係ないじゃ〜ん
216デフォルトの名無しさん:04/07/12 00:58
2つの行列式AとBを入力し、AがBの逆行列であるかどうか調べる
プログラムをお願いします。
そういえば流石兄弟は答えてないな
ぼるじょあのほうが良かったんじゃないか?
どれも似たりよったり。
>>216
A×B=単位行列
>>201
#include <stdio.h>
#include <string.h>

int main()
{
char s[20];
char *p = s;
int count = 0;

printf("%d文字以内で文字列を入力してください>", (sizeof s) - 1);
fgets(s,sizeof s,stdin);
while(p = strchr(p,'a'))
{
p++; count++;
}
printf("文字列に含まれる'a'は%d文字でした\n", count);
return 0;
}
>>181
すいませんがこの問題もお願いします。
>>222
( .3.) マルェー キミも荒らしになるYO
>>222
あのさ、合法的な手って何よ
>>225
playerのおける場所と思います
>>226
ゲームがわからん。
オセロゲーム?
>ゲーム盤 board の状況において、
>プレイヤー player に合法的な手があるときに1をないときに0を返す
>関数 int exist_legal_move(int board[B][B], int player) を作れ。
という意味なら、
int exist_legal_move(int board[B][B], int player) {
 int p, q;
 for (p=1; p<=8; p++) {
  for (q=1; q<=8; q++) {
   if (is_legal_move(board, player, p, q) == 1) {
    return 1;
   }
  }
 }
 return 0;
}

            ∧_∧
     ∧_∧  (´<_`  )  日本語の不自由な講師につかまった学生は
     ( ´_ゝ`) /   ⌒i   ほんと可哀想だな、兄者。
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  98NL / .| .|____
      \/____/ (u ⊃
日本語不自由なヤツは社会に出てない教授に多いぞ
ホントにこいつ教授か?って思うことがよくあるよ
漢字の「へん」と「つくり」を左右逆に書いたりするし

うちの教授だけかもしれんが・・・
このスレは問題をそのまま書き写してない学生も多いと思われ。
問題文を無意識のうちに勝手に変えてしまうのも、宿題におけるバカの壁。
無意識というか、そのまま書いてバレるのを恐れているんじゃないのかなぁ?
で、変な改竄をしてわけのわからない問題になると。
宿題まだ−?
235883 884:04/07/12 10:51
ファイル入出力とこの宿題が出たのでお願いします。
文字ファイルへの入力、出力 fgets,fputs
商品ファイル名をキーボードから受け取り、指定したファイル内容中
の大文字を小文字に変換し、商品コード、価格、商品名の順に並び替え、
指定したファイルに入出力するプログラムを作成せよ。

%cat gifts
JZK-30 Jizake_tsumeawase 4500
BSP-15 Body_soap_set 3000
Bt-200 Bath_towel_set 2500
TEA-20 Koutya_tsumeawase 5000
THY-55 Koutya_hachimitu_tsumeawase 3000
SPO-22 Tyoumiryo_variety_set 4000
%./kadai6-3
Input filename : gifts(これをキーボードから入力)
Output filename : gifts.upper(ここをキーボードから入力)
%cat gifts.upper
JZK-30 4500 JIZAKE_TSUMEAWASW
BSP-15 3000 BODY_SOAP_SET
Bt-200 2500 BATH_TOWEL_SET
TEA-20 5000 KOUTYA_TSUMEAWASE
THY-55 3000 KOUTYA_HACHIMITSU_TSUMEAWASE
SPO-22 4000 TYOMIRYO_VARIETY_SET
236883 884:04/07/12 10:53
ちなみにgiftsというファイルは僕のディレクトリの中に入ってます。
Bt-200 2500 BATH_TOWEL_SET
 ↑これは?
>>235
>指定したファイル内容中の大文字を小文字に変換し、

例を見ると小文字を大文字に変換してるように見えるけど。
239883 884:04/07/12 11:03
すみません小文字を大文字です。。あとBtのところもBTです。
間違いまくってすみません。
TSUMEAWASW
宿題です。
あるクラスに在籍している5人の出席番号と電話番号をポインタ配列を用いて画面に表示する
プログラムを作れ。
と言う問題です。
よろしくお願いします。
243デフォルトの名無しさん:04/07/12 11:22
>>ようかんまん
(゚∀゚)神のヨカーン
244883 884:04/07/12 11:30
ありがとうございます。今日も宿題出ると思うのでまたお願いします。
>>241
ださすぎ。再提出を要求する。
>>245
お手本をお願い。
>>241
つーか、まちがってねぇか?
その程度の文字列の加工くらい、sscanf()とsprintf()でできるだろうにわざわざ
てめぇで切った貼ったするからおかしくなるんだよ。
248デフォルトの名無しさん:04/07/12 11:38
今実行してみたら間違ってたんですけど・・・
>>246
めんどくさいから指摘のみ。

*バグ
・main()に戻り値がない
・初期化されていない変数が利用されてしまう危険がある。
*ダサい
・条件比較で定数を左辺に持っていくのはダサいだけで大したメリットがない。
・strlen(line)以降、fputs()直前まで、>247の言うとおり。
・この程度のロジックでgotoを使用するのはダサい。
*更に言うなら
・puts()とscanf()を一行に入れるのは感心しない。
・出力系のエラーチェックくらいしてもいいんじゃないかい。
・if文はブロック化したほうが安全であり、結果的には保守性が上がる。
・一文字変数名は検索に不適当だしドキュメント性が悪い。
・ファイル名用配列を固定長で用意するならscanf()で長さ制限するべき。
#つーか、よく判ってないならscanf()使うなや。
>>248=244か?
質問しといて持ち上げるだけ持ち上げて、「間違ってた」はないだろう。
どう間違っていたかくらいは書けよ。
つーか、この程度の宿題こなせないなら単位諦めた方がいいぞ。
>>247
>文字ファイルへの入力、出力 fgets,fputs
>>251

漏れは250=249=245だけど、入出力については>247は言及してないよな。
>241はfgets()からfputs()の間の加工がダサすぎるんだよ。
253デフォルトの名無しさん:04/07/12 11:52
すみません。えっと
JIZAKE_TSUMEAWASW
BODY_SOAP_SET
BATH_TOWEL_SET
KOUTYA_TSUMEAWASE
KOUTYA_HACHIMITSU_TSUMEAWASE
SPO-22 4000 TYOMIRYO_VARIETY_SET
となってました。ほんますいませんでした。
while(NULL!=fgets(line,MAXLEN,in)){
l=strlen(line);
if(line[l-1]=='\n')line[l-1]='\0';
to_upper(line);
s=strchr(line,' ');
e=strchr(s+1,' ');
memcpy(tmp,s,e-s);
tmp[e-s]='\0';
strcpy(s,e);
strcat(line,tmp);
strcat(line,"\n");
fputs(line,out);
}
確かにこれはダサい。というか、よくこんなの思いつくな。
|・∀・| 要約するとようかんまんはてんさい?
天災
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=253&fi=no
おれも>>235やってみた。
オーバーフロー防止とエラーチェックはしてない。
>>257
惜しいな。
gets()を使わずに、scanf("%*s", sizeof(ifname) - 1, ifname);などとしてれば及第点なのだが。
あぁ、勿論fscanf()をsscanf()に訂正して、fprintf()をsprintf()とfputs()の組み合わせに修正した上で。
何か一人仕切り始めた奴いるんだが・・・
誰でも仕切ったつもりになれる自由な世界。それでいいじゃないか
>>257
if(puts("Input filename :")==EOF){
 fputs("標準出力に書き出せません\n",stderr);
 exit(1);
}
>>258
sprintfとfputsならfprintfのほうが安全だと思う。
263デフォルトの名無しさん:04/07/12 12:29
ありがとうございます。それでコンパイルしてみたら、
kadai6-3.c:In function 'main':
kadai6-3.c:24:warning:comparison between pointer and integer
kadai6-3.c:27:warning:passing arg of 1 of 'fscanf' from imcompatible pointer type
って出ました。僕この単元よくわからないのでどこがエラーか分からないんですが
このエラーわかりますか?
>>263
fscanfをsscanfに直してください。ミスです。
ええと 回答者のソースもレビューされるようになったのですか…?
>>262
安全の問題じゃなく、課題の要請だから。
誤った解答にはつっこみが入らなきゃ困る。
それ以外のバカは放っておけ。
268デフォルトの名無しさん:04/07/12 12:35
何回もすみません。
kadai6-3.c:24:warning:comparison between pointer and integer
こっちが消えないんですが分かりますか?
>>266
ほんとだ。見落としてた。
>>268
EOFじゃなく、NULLと比較しておけ。
271デフォルトの名無しさん:04/07/12 12:39
できました!ありがとうございます!
272デフォルトの名無しさん:04/07/12 12:43
なんかC関連のスレみんな荒れてるんですが、
C言語の中の人は生理ですか?
>>272
このスレは荒れてないけど?
>>273
ああ、またミスがあった。メンドクセから直さない。
宿題に ちょっとしたミスくらいあるさ
にんげんだもの
 WANTED

|・∀・|ノ

    $5
宿題まだ−?
279130:04/07/12 13:04
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=255&fi=no
皆さんの意見を参考にここまでできました。
この後にリストに格納された単語をソートを使って辞書順に並び替えたい
のですが、どうもうまくいきません。教えてください。
235はどっかで俺やって貼ったんだけどな。
オレもだいぶ前にやったような気がする。
確か1つ目と2つ目のカラムを""で囲むとか言うやつ。
giftってファイルは /usr/junichif/gift にあるんだっけ?
見つけた。前々スレだ。
/lesson/junichif/giftsだね。
東北大かな?同じのじゃなくてそのときの続きの問題っぽいね。

ぼるじょあがC/C++の宿題を片づけますYO! 25代目(dat落ちしてる)
http://pc5.2ch.net/test/read.cgi/tech/1087929711/883-884
283デフォルトの名無しさん:04/07/12 15:55
こちらの課題をお願いします。開発環境はLinuxです。
英数字の文字列を入力したときに、文字を多い順にリストアップするプログラムを作成しろというものです。


BBS

B…1
S…1
284283:04/07/12 15:57
すみません
例の場合は
B…2
S…1
となるようなプログラムです
数値演算関数のsprt使おうとしたらmainで参照されちゃうんだけど、違うのにした方が良いのかな?
>>285
絶対に違うのにした方が良いよ
これ以上はスレ違いだから言えないがw
sprt


288デフォルトの名無しさん:04/07/12 16:24
ごめ、以前四則演算の電卓を作成せよという宿題をここで、やってもらったものですが・・
教えていただいた、ソースをコンパイルするとエラーのためコンパイルできません。
申し訳ないですが、再度お願いします。
ソースは前スレの、764〜778までに書いてあるっす。
で、宿題の内容は・・・
課題1:簡単な電卓を作る(四則演算で)。
条件:if文を使い、分岐させる。
また、次の流れで入力をし結果を出力する。
1.数1を入力しなさい
2.数2を入力しなさい
3.演算子を入力しなさい
4.結果は・・・・
という感じです。

課題2:課題1のものにたいして以下の機能を追加しなさい。
1.While文等をいれて繰り返す
つまり、計算終了後、計算続ける? y/n
yを選択すると続行、nを選択すると終了
課題3:課題1のソースに対して機能を各関数にて(プロトタイプ宣言したもの)
作りなさい。

各機能については、数入力・演算子入力のまとまりの関数が1つと、
四則演算の計算出力の関数が1つという形になります。

1.についてはOKですが、2と3についてぜんぜんできないというか、わかんないです。
もうしわけないですが、お願いします。〜〜orz。
289287:04/07/12 16:25
連かきごめんなさい、
前スレノ ソースとはようかんまんさんのとこでした。
もうしわけありませんでした。
>>283
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=256&fi=no

動作確認してません。
動かなかったら、自分で直すかまた質問してください。
291デフォルトの名無しさん:04/07/12 16:32
N(任意定数)段のハノイの塔の手順を示すプログラムがわかりません。おしえください流石兄弟
>>288
全スレで

char p;
...
scanf("%1s", p);

↑こういう使い方してるけど、大丈夫なのかね?
0の入る場所が無いけど。
(scanfは普段使わないから、よくわからん)
>>292
char p[2];
...
scanf("%1s", p);



char p;
...
scanf("%c", &p);

だね
>>292
とんでもない間違い。
仮にscanf()の第2パラメータが&pならば事実上問題なく動いてしまう可能性もなくはないが、やっぱり間違い。
>>291
固定段のハノイの塔のソースを載せろ。可及的速やかにN段対応にしてやる。
>>294
&がついてないのは俺の写し間違い。
(&がついていても、間違いみたいだけど)
「ハノイの塔 アルゴリズム」で検索したら、コードが出てくるよ。
298デフォルトの名無しさん:04/07/12 17:40
int min1(int,int[]);
main()
{
int a;
int info[100];
int i;

scanf("%d",&a);
if(a<=0 || a>100){
printf("データ数が不正です \n");return;
}
for(i=0;i<a;i++)
scanf("%d",&info[i]);
printf("最小値は%d \n",min1(a,info));
}
int min1(int n,int data[])
{
/* この部分がわかりません*/
}
}
入力された数値の最小値を吐き出すプログラムを作りたいのですが
関数の部分をどう設定すればいいかわかりません
int min1(int n,int data[])
{
 int m = data[0];
 for(int i=1;i<n;++i)
 {
  if(data[i] < m)
   m = data[i];
 }
 return m;
}
>>288
>ソースをコンパイルするとエラーのためコンパイルできません。
まずコンパイルエラーの内容を書くべきかと…。
このままでは何が原因かさっぱりわかりません。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=255&fi=no
この後にリストに格納された単語をソートを使って辞書順に並び替えたい
のですが、どうもうまくいきません。教えてください。
302287:04/07/12 18:00
すんません、いかに書きます。
課題2のソース
#include <stdio.h>

int input_int(char *);
int input_char(char *);
int calc(int,int,char);
void print_ans(char *);

int main()
{
int n1, n2, ans;
char op;
n1 = input_int("数1を入力しなさい");
n2 = input_int("数2を入力しなさい");
op = input_char("演算子を入力しなさい");
ans = calc(n1, n2, op);
print_ans(ans);
return 0;
}
int input_int(char* str)
{
int n;
char buf[100];
printf("%s", str);
fgets(buf, sizeof buf, stdin);
sscanf(buf,"%d", &n);
return n;
}
303287:04/07/12 18:00
続き

int input_char(char* str)
{
char buf[100];
printf("%s", str);
fgets(buf, sizeof buf, stdin);
return buf[0];
}

int calc(int n1, int n2, char op)
{
int ans;

switch(op[0])
{
case '+': ans = n1 + n2; break;
case '-': ans = n1 - n2; break;
case '*': ans = n1 * n2; break;
case '/': ans = n1 / n2; break;
default: ans = 0; break;
}
return ans;
}

void print_ans(int ans)
{
printf("結果は%dです。\n", ans);
}
304287:04/07/12 18:02
コンパイル結果です
cmd.exe /C bcc32.exe kadai2-3.c
*** コンパイル開始 ***
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
kadai2-3.c:
エラー E2340 kadai2-3.c 16: 1 番目のパラメータは signed char * 型として定義されているので int 型は渡せない(関数 main )
警告 W8004 kadai2-3.c 18: 'ans' に代入した値は使われていない(関数 main )
エラー E2062 kadai2-3.c 41: 無効な間接参照(関数 calc )
警告 W8057 kadai2-3.c 50: パラメータ 'op' は一度も使用されない(関数 calc )
エラー E2356 kadai2-3.c 53: 'print_ans' の再宣言で型が一致していない
エラー E2344 kadai2-3.c 6: 一つ前の 'print_ans' の定義位置
*** 4 errors in Compile ***
*** コンパイル終了 **

以上が課題2の場合です。
もうしわけないですおねがします。
305287:04/07/12 18:03
ごめんなさい、いまのは>>287 の部分の課題3にあたります。
もうしわけない
sprtがどうしたの?
307287:04/07/12 18:06
>>287の課題2;場合
課題(2) 課題(3)のmainを置き換える。
int main()
{
 int n1, n2, ans;
 char op, yn;
 for(;;)
 {
  n1 = input_int("数1を入力しなさい");
  n2 = input_int("数2を入力しなさい");
  op = input_char("演算子を入力しなさい");
  ans = calc(n1, n2, op);
  print_ans(ans);

  yn = input_char("計算を続けますか(y/n)");
  if(yn == 'y' || yn == 'Y') break;
 }
 return 0;
}
308287:04/07/12 18:07
コンパイル結果
cmd.exe /C bcc32.exe kadai2-3.c
*** コンパイル開始 ***
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
kadai2-3.c:
エラー E2340 kadai2-3.c 18: 1 番目のパラメータは signed char * 型として定義されているので int 型は渡せない(関数 main )
警告 W8004 kadai2-3.c 24: 'ans' に代入した値は使われていない(関数 main )
エラー E2062 kadai2-3.c 48: 無効な間接参照(関数 calc )
警告 W8057 kadai2-3.c 57: パラメータ 'op' は一度も使用されない(関数 calc )
エラー E2356 kadai2-3.c 60: 'print_ans' の再宣言で型が一致していない
エラー E2344 kadai2-3.c 6: 一つ前の 'print_ans' の定義位置
*** 4 errors in Compile ***
*** コンパイル終了 ***

ながすぎて、申し訳ありません。
どうかよろしくお願いいたします
287 名前:デフォルトの名無しさん[sage] 投稿日:04/07/12 16:23
sprt

310288:04/07/12 18:10
あ、ごめんなさい。
287と名前に書きましたがただしくは288です、
申し訳ありません
>>287
正直突込みどころ満載のソースなんだが…
とりあえず動くように修正。

上のほうの
void print_ans(char *);
→void print_ans(int);

main内
if(yn == 'y' || yn == 'Y') break;
→if(yn == 'n' || yn == 'N') break;

int calc(int n1, int n2, char op) 内
switch(op[0])→switch(op)
312デフォルトの名無しさん:04/07/12 18:26
(´・ω・`)ぷう〜
そのソース、前スレでも修正箇所を教えてたのだけど、
ぜんぜん読んでないんだな…

あと、switchじゃなくて、ifを使えって課題じゃないの?
314311:04/07/12 18:34
>>288
ほんとだ。
前スレを見返したら全部書いてあるじゃん…。
しかも解答の直後…。ちゃんと読もうね。
315デフォルトの名無しさん:04/07/12 18:37
ハノイの党固定段すら分かりません・・・orz
316288:04/07/12 18:38
あう・・・・ごめんなさい
読んでやってみたんですが、それでもコンパイルエラーでてしまって・・・

>あと、switchじゃなくて、ifを使えって課題じゃないの?
はい、そうです。if 文です。
何度も何度もお手数をおかけしますが、本当にお願いします。
申し訳ありませんです。
317174:04/07/12 18:41
>>190
ありがとぅー(*'▽'*)♪
コンパイルエラーがなんのためにでると思ってるんだよ。
デバッグするためだろ?読めよタコ
プログラムで木構造の木の走査を行なうプログラムはどのようにしてかいたら
よいのでしょうか?以下がmain関数なしのプログラムです。
http://haiiro.info/up/img/464.txt
>319
int preorder(Node *root)
{
if(root == NULL) return -1;
printf("%c",root->c);
preorder(root->left);
preorder(root->right);
return 0;
}
英語が良く分かり(ry
322かたな:04/07/12 19:15
(1)n人の学生の試験結果の整理に関係してコンピュータで下記の処理を行うものとする。この処理手順をPDA図で示せ。  処理内容
n人の学生のテスト結果d(0≦d≦100)を学生番号順に標準入力装置から入力する。負の数が入力されたとき、入力終了とする。データは配列D[i](0≦i≦n-1)に入れる。
平均値、標準偏差、最高点、最低点を求めてこれを出力する。最高点、最低点については該当する学生の学生番号も出力する。
(2)第1問で示した処理内容に対し、さらに平均値に最も近い学生を探索し、その学生番号と得点を出力する機能を加える。この追加機能を含む処理手順をPAD図で示せ。
誰か解いて下さい。
よろしくね。
期限が近い。
>>315
>>297を読んでないでしょ?
それとも、なぜうまく動くかが分からない?
>>322
PAD図を書け?
なんでこのスレに書いたのさ?

期限が近いなら、もっと苦しめばいい方法も浮かぶだろうよ。
もう夏厨の時期かよ。
            ∧_∧
     ∧_∧  (´<_`  )  と言うか、俺たちの登場回数がやけに少ないな、兄者。
     ( ´_ゝ`) /   ⌒i  
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
326デフォルトの名無しさん:04/07/12 20:24
xのデータとそれに対応するyのデータがある。
y∝x^5 と分かっている。最小二乗法で比例定数aとy切片bを見つけたい。
で最小二乗法するプログラム作ったんですが、floatだとa=0.000000ってなります。
doubleだと、うまくできません。どうしたらいいでしょう?
xは10^2で、yは10^-6の大きさです。

ソースと入力ファイル:
ttp://ccfa.info/cgi-bin/up/src/up3709.lzh
327ぽろしょあ ◆10ZN91Fh02 :04/07/12 20:44
もう夏厨の時期だYO!
            ∧_∧
     ∧_∧  (。3。  )  ボクたちの登場回数は増える一方だJ!
     ( .3.) /   ⌒i  
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃
328ぽろじょょあ ◆niBmDfC40k :04/07/12 20:45
(*.3.) ヌヌヌヌヌヌンェェェェェェェェ!名前間違えたYO!
329かたな:04/07/12 20:56
322です。C++のプログラムで解いて下さい。
330326:04/07/12 21:02
出来ました。どうも。
331前スレ526:04/07/12 21:13
助けてようかんマン!

----
身の回りにある現象、若しくはシステムの離散事象モデルを作成し、
一様乱数若しくは指数乱数作成ソフトを用いてシミュレーションしなさい


・高速道路の料金所通過シミュレーション
・流れ作業効率化のためのシミュレーション
・演習課題の作業分担シミュレーション

注意事項:
本課題では、指数乱数発生用プログラムを作成する。このプログラムを作成し、
レポートとして提出するにあたり、作成したプログラムで使用した乱数発生の理論、
およびプログラムのフローチャートの説明を必ず含めること。
----

シミュレーションのイメージですが、
まさにこの例にある高速道路の料金所通過シミュレーションで
どなたか、お願いしますm(_ _)m
>>331
ようかんマンなら前スレで、うさぎに食われたよ。
    ,.、  ,r.、
    ,! ヽ,:'  ゙;.
.    !  ゙;;  }
     ゙;  ii ,/
    ,r'      `ヽ、
   ,i"   _    _ :
   !.  ・     ・,!   <ありがとうようかんマン
   ゝ_    )-( . ,!_
    /`''''''''''''  .ノ∀・|ノ ぁ…ァ…
   .!    二つ__|
    ゙''::r--、::---|-|
      ゙'ー-‐゙ー-゙'


ようかんマン気ぐるみセット置いとくから着たらいいよ
 .__
ヽ|・∀・|ノ ようかんマン#羊羹饅々
 |__|
  | |

     ,へ、        /^i
     | \〉`ヽ-―ー--< 〈\ |
     7   , -- 、, --- 、  ヽ
    /  /  \、i, ,ノ    ヽ  ヽ
    |  (-=・=-  -=・=-  )  |
   /  <  / ▼ ヽ    >   、
  く彡彡 ( _/\__)  ミミミ ヽ
   `<   |__|   ミミ彳ヘ
      >   | |  ))  /   \
     /         7      \
     |        /
334331:04/07/12 22:00
ようかんマンは食われたそうなので、、、流石兄弟さんどうかお願いしますm(_ _)m
 .__
ヽ|・∀・|ノ ウィローマン参上
 |__|
  | |
     ,へ、        /^i
     | \〉`ヽ-―ー--< 〈\ |
     7   , -- 、, --- 、  ヽ
    /  /  \、i, ,ノ    ヽ  ヽ
    |  (-=・=-  -=・=-  )  |
   /  <  / ▼ ヽ    >   、
  く彡彡 ( _/\__)  ミミミ ヽ
   `<   |__|   ミミ彳ヘ
      >   | |  ))  /   \
     /         7      \
     |        /
本場はウィローって発音するのか
〜|・∀・|〜 羊羹食らいは尽きるとも、この世に羊羹マンは尽きまじ
   /⌒ヽ
  / ´_ゝ`) すいません、ここ通らないといけないのでちょっと通りますよ・・・
  |    /  
  | /| |
  // | |
 U  .U

尽きまじ?尽きるまじか尽きじじゃないか
      おまえら、早く宿題解けよ!
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク

 .__
ヽ|・∀・|ノ ようかんマンZ参上
 |__|
  | |
 .__
ヽ| .z |ゝ このへんがZ。
 |__|
  | |
  ____
ヽ|::|o・-・|ノ 紺にゃくマン参上
 |::|:::::::::::|   なんでも聞いてくれ
 |;;|;;;;;;;;;;;|
 /  >
344338:04/07/12 22:24
羊羹食らいは尽きるとも、世に羊羹マンの予備は尽きまじ
のほうがいいかも。

>>340
浜の真砂でググった結果では尽きまじが多かったので。詳しいことはワカラン。
         __
     ヽ/∴ ∴/|ノ
     /∵/∴//
     /∴ ∴//
    ===/
    //

あ り が と う こ ん に ゃ く マ ン
>>345
切れ目!切れ目がついてる!
347デフォルトの名無しさん:04/07/12 22:30
 .__
ヽ|.3.|ノ ぽろじょあマン参上
 |__|
  | |
殺伐としたこのスレにヘーベルハウスが!!

       /|
       |/__
       ヽ| l l│<ハーイ
       ┷┷┷
AAネタを盛り上げる限り、>>347みたいなアフォを助長させるだけなんだと思うんだが。
今度から、ようかんマンとか流石兄弟とか、キャラ無しで立てようよ。
>>349
キャラ無しでもアフォは来る。専用プラウザでフィルタかけるがよい。
>>348
    _, ,_  パーン
  ( ゜д゜)  
   ⊂彡☆====== /|
       __       |/
      ヽ| l l│
      ┷┷┷

.        __
       ヽ| 'A`.|
       ┷━┷
352ぽろじょあ ◆niBmDfC40k :04/07/12 22:40
(*。3。)マルェー ボクちょっとしかアフォじゃないYO
これは立派なage荒らし
354デフォルトの名無しさん:04/07/12 22:42
(´・ω・`)C++・・・モキュ?
>>331
よく意味が分からないので、
プログラムを組む寸前までの仕様を細かく書いてください。
ヘーベルハウス(・∀・)イイ!!
次スレはヘーベルハウスきぼん。
(   . 3.) ヌルポー 次スレはボクが立ててあげるYO
おれ、ぽるじょわの中の人にはなるなって
おばあちゃんの遺言だもん
(≧m≦*)ぷぷ
せめて、もうちょっと最初のレス連発がなければ、普通に受け入れられてたかもしれんのにな>ぼろじょあ
>>362
レスアンカーでアニメーションするやつ思い出した
>>63
をあぼんぬ設定に入れた。
ぽ(ry は顔が面白いので、NG送りにしてない。
>>365があぼーんされた
367デフォルトの名無しさん:04/07/12 22:59
構造体とポインタつかってファイルI/Oがあって
関数が四つ以上って条件を満たすCのプログラムを誰か教えてください
これまたアバウトな宿題だな。おい・・・
>>368
すいません・・・
サパーリです
370デフォルトの名無しさん:04/07/12 23:01
この問題、意味すら分からず、誰かお頼みします。


C,C++で書かれたソースコードを対象とし、typedef は使われていないものと仮定する
ソースを読み込んだあと、自然数mをキー入力し、
プログラムのm行目のコードを出力するプログラムを作成しなさい。
ただし、プログラムにシンタックスエラーはないものとし、改行までを1行とする
>>370
読み込むソースは引数で指定するの?
            >>359
             ↓
ムシャムシャ ((  .)з<`д´>ε(.  )) ムシャムシャ


 ムシャムシャ ((  .)з<д>ε(.  )) ムシャムシャ


   チュッ! ((  .)зε(.  )) チュッ!


    キャッ (.3.#)  (#.3.) キャッ
#include <iostream>
#include <fstream>
#include <string>
int main(int argc, char* argv[])
{
 using namespace std;
 int m;
 cin >> m;
 ifstream ifs(argv[1]);
 string s;
 for(int i=0; i<m;++i)
   getline(ifs, s);
 cout << s << endl;
 return 0;
}
374331:04/07/12 23:06
>>355
課題に関しての情報はこれだけなんですよ。
確かに抽象的すぎて少し困ってます。。
ぽろじょあいい加減死ね
>>374
きっとこんな感じなんだろう。
ttp://homepage3.nifty.com/jubus/
サイトの中身見てないから保証はしないがな。
"待ち行列 シミュレーション C言語"などでぐぐれ。
>>375
( .3.) ヌェーン 泣いちゃうYO 
  +:
  .+
378331:04/07/12 23:21
>>376
そうですね。そんな感じです。でも、そこまで高度なことはしなくてようそうです。
今、別の問題を見つけたのですが、書き方の例としてはこのようにすれば良さそうです。

http://rivernet.cool.ne.jp/upmini/200407d/20040712232023_.jpg
379379:04/07/12 23:42
int main()
{
double a1,a2;
int i,Nparameter,nsteps;
Nparameter=5;
nsteps=4;
double result_a1[100];
double result_a2[100];

for(i=0; i<Nparameter; i++){
a1=3+0.1*i;
result_a1[i]=a1;
printf("%f\n",result_a1[i]);
// for(i=0; i<nsteps; i++){
// a2=4+0.2*i;
// result_a2[i];
// printf("%f\n",result_a2[i]);
// }
}

for(i=0; i<Nparameter; i++){
cout << result_a1[i] << " " << endl;
}
// for(i=0; i<nsteps; i++){
// cout << result_a2[i] << " " << endl;
// }
}
380379:04/07/12 23:45
a1、a2はこの形で計算させたいのですが、入れ子のforがあるとうまく
結果がでません。どうすればいいんですか?
あと、coutもa1、a2をエクセルのよう縦表示させたいのですがよろしく
お願いします。
>>380
コメントのとこ戻すと、思い通りに動かないって事??

result_a2[i] = a2;
382379:04/07/13 00:05
>>381
すみません、result_a2[i] = a2; です。書き間違えです。
これはいいんですが、coutがよく分かりません。どうすればテキストファイル等に
縦表示で書き出せるんでしょうか?
>>382
マルチな奴には教えない。
上のほうのハノイの塔の問題。ちょっとやってみたくなった。
コンパイルはしてない。
#include<stdio.h>
void hanoi(int level, char from, char to, char tmp)
{
if(level > 0)
{
hanoi(level-1, from, tmp, to);
printf("円板%dを%cから%cへ移す。\n", level, from, to);
hanoi(level-1, tmp, to, from);
}
}

int main()
{
// 5段のハノイの塔をAからBへ移す
hanoi(5, 'A', 'B', 'C');
return 0;
}
>>382
どうしたいか理解できな〜い
program.c:78: parse error at end of input
ってエラーが出てコンパイルできなかったんですがどういう種類のエラーなんでしょうか
main関数を閉じた後の何も無い最終行なんですが
DOSプロンプトとmingw使用してます
387382:04/07/13 00:34
最後のテキストへの書き込みで
a1 a2 a3
○ × ◇
○ × ◇
○ × ◇
のように表示させたいのです。
388331 378:04/07/13 00:36
流石兄弟さんお願いします…。
>>386
最後に改行でも入れておけば?
>>386
括弧の対応がとれてないんでしょ
>>388
378の通りに書けば良い
>>389
最初は改行入れてなくて
program.c:78:1: warning: no newline at end of file
program.c: In function `main':
program.c:78: parse error at end of input
となってました。改行を入れたら1番上のエラーだけ消えたんですが・・
>>387
forの中でfor使ってるのはいいが、iをそこでも使うな
あと、a3ってどっからでできた?
>>387
マルチするから、訳わかんなくなるんだろう?
>>393
マルチは放置で。
色々なスレで答えている人の行為を無にする人に答えなくていいよ。
>>389-390
33行目に置き忘れられた{がひとつありました。申し訳ありません・・
今度からメモ帳じゃなくてちゃんとしたテキス用意します・・
あのー>>367は・・・
>>397
Cを数年使ってないが、頭の体操につくってやるよ。30分ほどまってな。
しょぼいやつでよければな。
>>398
ありがとうございます!
>>398
さてはおまえー!47氏君だなー!
>>400
いいえ、398氏です。
wcがいいかな。無理矢理構造体使って関数わけして。
オープンして読んで書いてクローズで4つ。
ちょうど4って難しいな。
>>403
4つ以上ならおkです
405331 378:04/07/13 01:14
どなたか…
正直さっぱりです(;;´Д`)~~
>405
例えば、高速道路の料金所通過シミュレーション
a.到着する車が何秒に1台あるか
b.通過するのに何秒かかるか
c.料金所がいくつ有るか
をパラメータとして、a.とb.をそれらしい値の乱数で決めて何百回とか動かすと
入口渋滞がどれくらいできるか(何台待ち行列に成長するか)
とかだな。
>403
fopenしてfreadしてfseekしてfwriteしてfcloseで5つ。
もしくは
fopenしてfwriteしてfseekしてfreadしてfcloseで5つ。
>>397 作った。あまりのしょぼさに切腹。あとは自分で改造してくれ
#include<stdio.h>
#define DAT 100
FILE *fp;
voidfileopen(char *fname)
{fp = fopen(fname,"w");
}
voidmakedata(int dt[],int i)
{for(;i>=1;i--)
dt[i] = i;
}
voidfilewrite(int dt[],int i)
{for(;i>=1;i--)
fprintf(fp,"%d\n",dt[i]);
}
voidfileclose(void)
{fclose(fp);
}
int main()
{int dt[DAT];
fileopen("test.dat");
makedata(dt,DAT);
filewrite(dt,DAT);
fileclose();
return 0;
}
>>408
ありがとうございます!!!
>>408
あ、構造体にするのわすれた。dtを構造体にでもしてくれ。切腹。
早く腹切って証拠写真UP汁
>>410
おやすみ
>>411
どうやってw
グロ画像いらねっ!
ファイルI/Oってあったからread/writeだと思ったんだが...
#include <stdio.h>
int main(void)
{
int i;
double a1[5], a2[5], a3[5];
for(i=0; i<5; i++)
{
a1[i]=3+0.1*i;
a2[i]=4+0.2*i;
a3[i]=5+0.8*i;
}
for(i=0; i<5; i++)
printf("%f %f %f\n", a1[i], a2[i], a3[i]);
return 0;
}
417331 378:04/07/13 02:44
指数乱数なんですが、
rand関数を利用しないで疑似乱数を発生させなければならず、
これが難しいです。。
>>417
それは授業でやったんだろ?もしくはヒントを与えられているはず。
できない事を宿題にしないだろ。
419331, 378:04/07/13 03:55
正直なところ、Cは単位を取るためだけに必要な科目で
私自身は捨てているので、あんまし分からないのです。。

一様乱数の発生プログラムは見つけられました。
が、難しすぎて何やっているかは分かりませんが…。

ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html
MTなんて日本が世界に誇る最強擬似乱数発生アルゴリズムだろ。
そんなもんを写すのを出題者が求めてるとは思えない。
教科書見るなりノート見せてもらうなりして
授業でやったとおりに作らないと減点されるんじゃね?
>419
ならあきらめて単位落として留年なり中退なりしとけ。
>>419
何学部何学科?
>>423
間違えました
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=114
こっちですすいません。C言語でお願いします
>>424
void reverse(int data[]){
int i, j, count=0;
while(data[count]==-1) count++;
for(i=0,j=count-1; i<count/2; i++,j--)
data[i]^=data[j]^=data[i]^=data[j];
}
>>425
ありがとうございます
これもわからないんです解いてください。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=115
427デフォルトの名無しさん:04/07/13 11:48
整数型配列 data の最初から n 個の要素に, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 いずれかの値が入っているとき、それらの要素の値の中で、もっとも出現頻度の高いもの(それが複数個あるときには,その中で要素の値のもっとも小さいもの)を返す関数

int most_frequent(int data, int n)

を作れ.

たとえば,つぎの場合、この関数は2を返す。

data[] = {1, 2, 3, 2, 3, 4, 2, 3, 5, 4};
most_frequent(data, 10);


428デフォルトの名無しさん:04/07/13 11:49
この問題を解いてください。お願いします。
>>427
#include <stdlib.h>
int most_frequent(int data, int n)
{
 int count[10];
 int index=0;
 int ct=0;
 int t;
 int i;
 memset(count,0,sizeof(int));
 for(i=0;i<n;i++){
  t=++count[data[i]];
  if(t>ct){
   ct=t;
   index=data[i];
  }else if(t==ct&&index<data[i]){
   index=data[i];
  }
 }
 return index;
}
x #include <stdlib.h>
o #include <string.h>
すまんな
- #include <string.h>
memset(count,0,sizeof(int)); -> for(i=0;i<10;i++)data[i]=0;
432デフォルトの名無しさん:04/07/13 12:04
ありがとうございます。
>>429
433デファルトの名無しさん:04/07/13 12:04
この問題をCの方のプログラムでお願いできますか。
問題はこれです→データ入力は5データ置きに改行する。
という問題です。
よろしくお願いします。
for(i=0;i<10;i++)data[i]=0; -> for(i=0;i<10;i++)count[i]=0;
>>433
int data[i];
int n=sizeof(data)/sizeof(data[0]);

for(i=0;i<n;i++){
 printf("%d%c",data[i],(i+1)%5==0?' ':'\n');
}
436デファルトの名無しさん:04/07/13 12:22
>433です。
問題訂正です。
データ入力を5データ置きに改行するプログラムをCで作ってください。
お願いしますm(__)m
「データ入力 を 5データ置き に」って何?
多分こんなのイメージしてるんじゃない?

12 __

12 50 __

12 50 40 __

12 50 40 28 __

12 50 40 28 30
__

だから、ここで質問するやつはバカなんだから、ちゃんと問題文をまる写ししろよ。
バカがバカなアレンジ加えたら、バカな擬似日本語にしかならないんだから。
時々難しいのあるけどほとんどはお前もう授業受けるの辞めれば?ってLVだな
>>433
直で書いてるからエラーがあるかも。

#include<stdio.h>
int main(void)
{
int count;
char str[255];
for(count = 1; scanf("%s", str)); count++) {
if(count % 5 == 0) printf("%s\n", str);
else printf("%s ", str);
}
return 0;
}