C/C++の宿題を片付けます 122代目at TECH
C/C++の宿題を片付けます 122代目 - 暇つぶし2ch2:デフォルトの名無しさん
09/01/15 16:05:19
気に入らない質問やその他や発言はスルーの方向で。

3:デフォルトの名無しさん
09/01/15 16:08:59
前スレ987

(32^816077) mod (1009*1013)
電卓片手に計算してみた
答え 2

自分で計算しといてなんだが、なんか信じられん


4:デフォルトの名無しさん
09/01/15 16:16:02
そんなのって、あんま(余)りだぁ~~

5:デフォルトの名無しさん
09/01/15 16:17:54
あれ?剰余を求めるだけ?なら似たような問題が過去にもあったし、
それを流用すれば良くね?

6:デフォルトの名無しさん
09/01/15 16:22:46
>>5
いや宿題自体はちがうけど、
答えだけでも教えてほしいって書いてあったから。
なんとなくやってみた

7:デフォルトの名無しさん
09/01/15 16:26:27
37335

8:デフォルトの名無しさん
09/01/15 16:35:12
スレリンク(tech板:987番)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

9:デフォルトの名無しさん
09/01/15 16:59:33
> 32 ^ 816077 mod 1022117
指数を2進展開すると 11000111001111001101
元の計算を二乗と基数倍だけで書くと(逆ポーランド)
1 32 * 2 ^ 32 * 2 ^ 2 ^ ... 2 ^ 32 * 2 ^ 2 ^ 32 *

int modpow(int x, int n, int p)
{
        int i;
        long long int y = 1;
        for(i = 1 << 30; i > 0; i >>= 1) {
                y = (y * y) % p;
                if(n & i) y = (y * x) % p;
        }
        return (int)y;
}

10:デフォルトの名無しさん
09/01/15 17:09:10
void Point_k(int j,double Point[k][4]);

void Point_k(int j,double Point[k][4]){ /*ただ今1辺6Mの正方形*/

int c=NX-1; //X軸の要素数-1
int d=NX-1;

int m=c+NY; //i+Y軸の要素数=5
int n=d+NY;

//double Point[k][4];



for(j=0;j<k;j++){

if(j<=d){
Point[j][0]=X_memori*j;
Point[j][1]=X_memori*j+X_memori;
Point[j][2]=0;
Point[j][3]=0;

 このプログラムの意味分かりますか??

11:デフォルトの名無しさん
09/01/15 17:10:46
>>10
質問スレへ行け

12:デフォルトの名無しさん
09/01/15 17:26:48

long long int y = 1;

13:デフォルトの名無しさん
09/01/15 17:44:16
10問の一桁同士の四則演算(問題はランダム)の計算ドリルを作り
正解数、正解率、かかった時間を表示させたい。
また、1問10秒という制限をつけ、その制限時間をリアルタイムに表示せよ

というものがどうしてもできません。
出題、正解数やかかった時間の表示はできるのですが
その先でつまづいています。

14:デフォルトの名無しさん
09/01/15 17:45:57
>>13
死ね
>>1くらいよめ
舌噛め

15:デフォルトの名無しさん
09/01/15 17:46:55
ミスって問題文だけ投稿してしてしまいました。
[2] 問題文(含コード&リンク): >>13
[3] 環境
 [3.1] OS: DOS
 [3.2]lcc
 [3.3] 言語: C言語
[4] 期限: 今日まで


16:デフォルトの名無しさん
09/01/15 17:50:27
せっかちな>>14

17:デフォルトの名無しさん
09/01/15 17:50:43
[1]C
[2]
(1)
12の2乗数は144となり、各桁の数字の総和は1+4+4=9である。
10000以下の正整数で、2乗数の各桁の数字の総和が最大の数字はいくつか?

(2)
3乗すると丁度8桁になる正整数はいくつあるか?

[3]LINUX C
[4]24時まででお願いします。

よろしくお願いします。

18:デフォルトの名無しさん
09/01/15 17:55:50
>>14 >>14 >>14 >>14 >>14 >>14 >>14 >>14 >>14
>>1
> 気に入らない質問やその他や発言はスルーの方向で。

19:デフォルトの名無しさん
09/01/15 17:57:04
>>15
dosでlccとか、死ね
LSI-Cのことだろ

20:デフォルトの名無しさん
09/01/15 17:57:15
>>18
>>1

21:デフォルトの名無しさん
09/01/15 18:00:08
ルールに従わない奴を陰湿に罵倒して自治厨を気取るくせに、
自分が違反しているのを指摘されるとファビョる、引きこもり基地外ニートって
明らかに社会のクズだよね。

22:デフォルトの名無しさん
09/01/15 18:00:39
>>20
お前だよ、>>1も読めないバカは
日本語を習ってから出直せよ、いい年したおっさんが。
お前の人生終わってんぞw

23:デフォルトの名無しさん
09/01/15 18:01:58
19 名前:デフォルトの名無しさん 投稿日:2009/01/15(木) 17:57:04
>>15
dosでlccとか、死ね
LSI-Cのことだろ
↑詰らない揚げ足をとって、自分は知識がありますといった
自己主張が激しい反面、下らないことしか指摘しないため、
社会から干されているバカ

24:デフォルトの名無しさん
09/01/15 18:02:28
>>21


25:デフォルトの名無しさん
09/01/15 18:08:08
あっ、社会の外れの基地外がまたファビョってますよw
やだね、こういうのって。何でこのスレに来ているんだろう。
別にお前が頼られているわけじゃないんだが?w
まぁ、お前みたいに社会でまともに相手にされない奴が、
ここを生き甲斐にしちゃったんだろうけど、所詮ここは
不特定多数の人が来る2ちゃんねるの一部ですからw
狭い世界で必死になってなさい。お前見たな奴は、出世せずに
この世を去るんでしょうけど、見ず知らずの誰かなんてこっちは
知ったこっちゃないんで、あしからず。さぁ、>>1も読めないバカは以後放置よろ。

26:デフォルトの名無しさん
09/01/15 18:18:44
っつか、何かすぐに 死ね って書くけど、人間性の悪さが露呈してますよ?
言われた側が気分を悪くしていると思っているんだろうけど、別の人間から見ると
さもしい 人間に見えるよ。

27:デフォルトの名無しさん
09/01/15 18:21:06
すみません、LSICでした。
なにぶん3ヶ月前にはじめたばかりでもうしわけない

28:デフォルトの名無しさん
09/01/15 18:34:17
>>17 (1)
#include <stdio.h>
int main( void )
{
int i,j,k,l=0,m=0;
for (i=1;i<=10000;i++) {
k=0;j=i*i;
while(j>0){k+=j%10;j/=10;}
if(k>m){m=k;l=i;}
}
printf("%d:%d\n",l,m);
return 0;
}

29:デフォルトの名無しさん
09/01/15 18:43:34
>>17
URLリンク(kansai2channeler.hp.infoseek.co.jp)

30:585 ◆i9Dvbn/Lf6
09/01/15 19:00:48
お願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
二重振り子を微小振動させるとして、厳密な数値解及び解析的な近似解を初期振れ角Θを機動時に指定して、
アニメーション表示させるプログラムを表示しなさい。
グラフィックはgnuplotでもEGGXでもどちらでもよい。
zipで専用ロダにもあげておきます
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2009年1月22日まで]

さっぱりわからないので少しだけでもお願いします

31:585 ◆i9Dvbn/Lf6
09/01/15 19:02:48
画像はこちらです(内容はzipと一緒です)
URLリンク(upp.sakura.ne.jp)
URLリンク(upp.sakura.ne.jp)
URLリンク(upp.sakura.ne.jp)

32:デフォルトの名無しさん
09/01/15 19:16:23
lcc.exeだから間違いではない


33:デフォルトの名無しさん
09/01/15 19:17:51
厳密な数値解及び解析的な近似解ってこれ逆じゃないの?

なんで解析解が近似なのさ

34:585 ◆i9Dvbn/Lf6
09/01/15 19:24:37
>>33
いえ、確かに問題文には
>厳密な数値解及び解析的な近似解
と書いてあります

35:デフォルトの名無しさん
09/01/15 19:34:31
>>33
使う式のことじゃないのか?
正しい式を数値解析で解くのと
近似式を解析的に解くのとで

36:デフォルトの名無しさん
09/01/15 19:36:15
>>30
>機動時
いい加減、直したらどうだろ

37:デフォルトの名無しさん
09/01/15 20:09:31
>>36
機動性に優れていて、良いだろ?

38:デフォルトの名無しさん
09/01/15 20:10:00
>>31
最低でも、3枚目の一番上の式を確認しないとな・・・

39:デフォルトの名無しさん
09/01/15 21:06:27
前スレにて
940 名前:デフォルトの名無しさん[sage] 投稿日:2009/01/14(水) 22:40:43
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(uproda.2ch-library.com)
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語: C++
[4] 期限: 1月16日まで
[5]その他の制限:特になし
という質問で
URLリンク(kansai2channeler.hp.infoseek.co.jp)
という回答を頂いたのですが上手くいきません。
失礼かと思いますが、どこがおかしいか教えていただけると助かります。

40:デフォルトの名無しさん
09/01/15 21:26:35
>>39
> [1] 授業単元:C言語
> [3.3] 言語: C++

どっちだよ。
C++ならそれで動く。
Cなら
- std:: をすべて消す
- #include <c*****> を #include <*****.h> に直す
- for ループ部の i を for ループの外であらかじめ宣言しておく
- static_cast<int> を (int) に直す
くらいか。

それと、「上手くいきません」じゃなくて具体的に書いとけ。
コンパイルエラーが出たんならエラーメッセージを貼るとか、実行結果がおかしいならどこがどうおかしいのかとか。

41:デフォルトの名無しさん
09/01/15 21:49:35
>>40
上手くいきました。ありがとございました。

42:デフォルトの名無しさん
09/01/15 22:21:11
>>31
この辺みて、教員に確認しろ。
URLリンク(www.ne.jp)
仕様が固まれば、コーディングくらいしてくれる人がいるだろ

43:デフォルトの名無しさん
09/01/15 22:55:10
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月16日午前8時
[5] その他の制限:できるだけ簡単な関数でお願いします

44:デフォルトの名無しさん
09/01/15 23:26:02
[1] 授業単元: プログラミング基礎実習
[2] 問題文(含コード&リンク):
s2 の文字列を s1 へ,最大で n 文字未満コピーするstrncpy関数の作成
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: cc
 [3.3] 言語: C言語
[4] 期限:あさって
[5] その他の制限: 関数宣言は
char *strncpy(char *s1, char *s2, int n);

45:デフォルトの名無しさん
09/01/15 23:46:26
>>44
最大で n 文字未満ってことはn-1文字コピーしてNULL文字入れろってことか?
何返せばいいのかもわからん。とりあえずs1そのまま返しておいた
char *strncpy(char *s1, char *s2, int n){
int i;
for(i = 0; i < n-1 && s1[i]; i++)
s1[i] = s2[i];
s1[i] = '\0';
return s1;
}

46:デフォルトの名無しさん
09/01/15 23:46:27
切羽詰ってます。よろしくお願いします><

[1] 授業単元:ディジタル信号処理
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:16日の12:00
[5] その他の制限:.txtのDFTプログラムのような簡単な記述で、流れは変更前のものを参考に

47:デフォルトの名無しさん
09/01/16 00:24:23
手羽詰ってます、安いよ安いよーよろしくご購入して下さい ><

48:デフォルトの名無しさん
09/01/16 00:43:38
>>46
元のコードがタイポってるってどういうことよ

49:45
09/01/16 00:56:45
>>45
ミスってるw
char *strncpy(char *s1, char *s2, int n){
int i;
for(i = 0; i < n-1 && s2[i]; i++)
s1[i] = s2[i];
s1[i] = '\0';
return s1;
}
こうだな

50:デフォルトの名無しさん
09/01/16 01:17:13
皆様のおかげで無事単位を取得できました

本当にありがとうございます

これからは人に頼らずできるかぎり自分の力で頑張っていきたいです

51:デフォルトの名無しさん
09/01/16 01:19:34
ここで回答する側になって人に頼られるようになるともっといいね
がんばれ

52:デフォルトの名無しさん
09/01/16 01:40:03
久々に和んだ

53:デフォルトの名無しさん
09/01/16 01:49:17
このスレの本質は自分に解ける課題を楽しむというエゴであって
相手のためを考えることなんかじゃない
頼られていると感じたいというエゴでもいいけどさ

[1] 授業単元:暇つぶし

が好きだ

54:デフォルトの名無しさん
09/01/16 01:53:28
プログラミングをしたって、商用で使わなきゃ金なんて入ってこないし。
まぁ、趣味でも良いが、カンパウェアとして、任意で気に入ったら
金を払ってくれるソフトでも作ってな。

55:デフォルトの名無しさん
09/01/16 01:56:35
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): コード URLリンク(web.hc.keio.ac.jp)
               課題 URLリンク(web.hc.keio.ac.jp) のTermEndRport.doc のステージ4まで
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual studio 2008
 [3.3] 言語: C++)
[4] 期限: ([2009年1月16日9時まで]



56:デフォルトの名無しさん
09/01/16 01:58:23
そんなおまいを、KOしてやりたいぜ・・・

57:デフォルトの名無しさん
09/01/16 02:00:31
>>56
反応早いなw
そんなに暇なのか

58:デフォルトの名無しさん
09/01/16 02:03:27
ちょっと前にも多倍長演算でヘンテコな質問繰り返してるヤツがいたっけ。

59:デフォルトの名無しさん
09/01/16 02:04:21
いやね、言語にC++と指定しておきながら、C言語なのは
なんでだろ~なんでだろ~なんでだなんでだろ~ って思ってね
リングに沈めてやろか?って

60:デフォルトの名無しさん
09/01/16 02:06:02
Cの課題をC++で解いて提出するのが流行ってるのかね

61:デフォルトの名無しさん
09/01/16 02:09:45
>>55
んで、どうすれば良いの?int型の上限を超える2つの値の加算のコードを
各自で最初から記述しろと?俺流ので良ければやるが、朝の9時までか・・・もう眠い。
っつか、それ、確かに長いな・・・もっとスマートにしてちょっ

62:デフォルトの名無しさん
09/01/16 02:11:32
>>61
TermEndRport.docに
>超基本機能版(mcalc0.c)に対して、次の手順に従って、機能を拡張しなさい。
って書いてあるよ

63:デフォルトの名無しさん
09/01/16 02:15:50
>>62
みなかったことにしよう

64:デフォルトの名無しさん
09/01/16 02:16:22
同じリンク先のmalc0.cをいじってやるのですが全然わからなくて・・・

65:デフォルトの名無しさん
09/01/16 02:18:57
>>62
見落としてた。まぁ、出来ないことはないが、
コードの解析が面倒だから、あとはあんたに任せたw

66:デフォルトの名無しさん
09/01/16 02:19:40
やらないんなら出来ないのと同じw

67:デフォルトの名無しさん
09/01/16 02:25:15
あんだよぉ、俺を試そうってかぁ?朝の9時までってタイムリミットがあるから
今はやらないんだよぉ。起きたら自主でやるから、許してw

68:デフォルトの名無しさん
09/01/16 02:31:11
ゴネたけど、見たら仕組みが分かったんで、ステージ2まですぐに終わったから
このままステージ4までやるわw

69:デフォルトの名無しさん
09/01/16 02:34:16
あれ?ステージ2の答えが合ってねーぞ・・・

70:デフォルトの名無しさん
09/01/16 03:03:37
>>69
どんな感じですか?

71:デフォルトの名無しさん
09/01/16 03:06:15
>>70
URLリンク(kansai2channeler.hp.infoseek.co.jp)
TermEndReport.docのと比較してみて。目で追って確認したところ、
繰上げがされていない結果が記述されているようだが・・・

72:デフォルトの名無しさん
09/01/16 03:10:15
>>71はステージ1と2
>>55 続いてステージ3
URLリンク(kansai2channeler.hp.infoseek.co.jp)

73:デフォルトの名無しさん
09/01/16 03:31:19
>>55 ステージ4 投げやりですまそ
URLリンク(kansai2channeler.hp.infoseek.co.jp)

74:デフォルトの名無しさん
09/01/16 03:32:46
あと、出題者も分かっているとは思うけど、入力する値に
マイナスを入れても正常に機能しないので、あしからず。
さっ、寝よっと。

75:デフォルトの名無しさん
09/01/16 03:37:37
ありがとうございます! これで単位が来ます。 ちょっと質問なのですがステージ2の
putchar(0x20) は何を意味しているのですか?

76:デフォルトの名無しさん
09/01/16 03:39:27
あ、起きてからでも教えてくださいw

77:デフォルトの名無しさん
09/01/16 03:41:50
>>76
あっ、いや、 ' ' 空白と同じ。嫌なら変えておいて。

78:デフォルトの名無しさん
09/01/16 03:45:15
putchar(' '); ね。あと、add(a,b,MAXDIGIT+1); の+1は要らんかったかも・・・

79:デフォルトの名無しさん
09/01/16 03:46:46
せっかく作ったので貼ってみる stage4
URLリンク(kansai2channeler.hp.infoseek.co.jp)

80:デフォルトの名無しさん
09/01/16 05:13:18
せっかく作ったので貼ってみる スペシャルステージ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
演算子定義するのが面倒だったから"減算"ではなく"負数の加算"だけども。


81:デフォルトの名無しさん
09/01/16 05:43:23
落ち着け

82:デフォルトの名無しさん
09/01/16 07:27:45
スイマセン、どなたか>>43を解いて頂けないでしょうか?

83:デフォルトの名無しさん
09/01/16 07:54:53
>>43
#include <stdio.h>
#include <string.h>
int main()
{
char str[20] = {0};
int len;
int i;
printf("文字列を入力:");
scanf("%s", str);
len = strlen(str);
for (i=len-1; i>=0; i--)
printf("%c", str[i]);
putchar('\n');
for (i=0; i<len; i++)
printf("%d,", str[i]);
putchar('\n');
for (i=0; i<len; i++)
printf("0x%x,", str[i]);
putchar('\n');
return 0;
}

84:デフォルトの名無しさん
09/01/16 08:24:06
1.10個の2桁で正の10進データをstaticデータとしてプログラム中にいれ、11個目の数をー999とする。ポインターを使って、この10個の数の合計と平均を求めるプログラムをつくる。

2.Sachiko, Emiko, Setuko, Rie, Mariko, Sara の6人の名前をポインター配列にし、頭文字がSで次の文字がaの名前を表示するプログラムを書け。

3.3つの数字をmain文でscanfで与える。そして、関数maxで3つの数の最大値を求めて、mainに帰り次のように出力する。(p102参照)
    
    3つの数を入力してください? 55 86 32
    最大値は86です。

4.do while文をつかって、1から100までの和を求めよ。

5. 練習問題29のメニューの中にそれぞれの金額を設定し、つまり
kingaku[ ] という配列をもう一つつくり、2つ以上の品を注文したとき
品名と合計金額をもとめるプログラムをつくる。
  メニュー表:1サーロインステーキ
        2ビーフストロガノフ
        3ヒレカツ定食
        4すき焼き定食



85:84
09/01/16 08:25:19
6. page 137 のソートのプログラムを参考にして、8人の名前をアルファベットでプログラム中に配列で入力しておき(参考p94-ポインタ配列)、ABC順に名前を並べ替える。
p137のソートプログラム参考
#include<stdio.h>
#define N 8
Void main (void) /*基本選択法によるソート*/

   Static int a[]={100,55,65,33,211,66,31,90};
Int j,k,min,s,dumy;
For (k=0;k<N-1;k++) {
Min=a[k];
S=k;
For (j=k+1;j<N;j++) {
If (a[j]<min) {
Min=a[j];
S=j;
}
}

Dumy=a[k]; a[k]=a[s]; a[s]=dumy;
}
For (k=0;k<N;k++)
Printf(“%5d”,a[k]);
}

以上です。徹夜してもわからなかったのでお助けください。
よろしくお願いします。

86:デフォルトの名無しさん
09/01/16 09:04:24
>>85
6番だけやってみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

87:デフォルトの名無しさん
09/01/16 09:39:46
>>84
URLリンク(kansai2channeler.hp.infoseek.co.jp)
5番目の問題にある「練習問題29」を提示してくれ。

88:デフォルトの名無しさん
09/01/16 09:57:35
>>84
何か勘違いしてた。
↓5番の問題
URLリンク(kansai2channeler.hp.infoseek.co.jp)

89:46
09/01/16 11:54:16
訂正します
[1] 授業単元:ディジタル信号処理
[2] 問題文(含コード&リンク):
 入力値は{1,1,1,1,0,0,0,0}で、出力が
0   4.000 0.000 4.000
1 1.000 -2.414 3.414
2 -0.000 -0.000 0.000
3 1.000 -0.414 1.082
4 0.000 -0.000 0.000
5 1.000 0.414 1.082
6 0.000 -0.000 0.000
7 0.999 2.414 2.613
になる8点FFTプログラムを作成せよ
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:16日の17時
[5] その他の制限:なるべく簡単な記述で

90:デフォルトの名無しさん
09/01/16 11:59:27
>>89
何を訂正したのか知らないけど、
オマエが張ったBASICと思しきコードは一度も実行してないだろ

91:46
09/01/16 12:10:07
>>90
元のコードはテキストにあったものを打ち込んだだけなんです。。
講師にこのプログラムを参考にC言語で8点FFTを作成しろとだけ言われたもので実行はしてないです。すみません

92:デフォルトの名無しさん
09/01/16 12:19:02
.  ./        \
 /           \
 \  ''''''   '''''':::::::::::::/
  . |(●),   、(●)、.:| +
  |   ,,ノ(、_, )ヽ、,, .::::|         まピョーン☆
.   |   `-=ニ=- ' .:::::::| +
   \  `ニニ;‘  .:::::/     +
,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
:   |  '; \_____ ノ.| ヽ i
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||


93:デフォルトの名無しさん
09/01/16 19:28:50
[1] 授業単元:Computer Prigramming II 第14回:木(ツリー)構造,再帰的関数と再帰的呼び出し
[2] 問題文(含コード&リンク):
下の入出力例のように,適当な数字を入れると,1からその数までの和が計算過程とともに
表示されるプログラムを作りなさい。ループ(for)文を使うものと再帰的関数を使用するも
のの2種類の解答を作ること。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows Vista / Linux
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition / gcc
 [3.3] 言語:C
[4] 期限:2008年1月25日00:00まで
[5] その他の制限:

94:デフォルトの名無しさん
09/01/16 19:33:54
>>93ヒント載せ忘れ:
①ループ文とは例えば以下のようなものである。
int i, s=0;
for(i=1;i<=n;i++) s += i;
②再帰的関数の漸化式で表現したものとは例えば以下のようなものである。
int sum(int n){
if(n==1) return( 1 );
else return( n + sum( n-1 ) );
}
int main(void){
scanf( "%d", &n);
printf( "%d\n", sum( n ) );
return 0;
}

95:84
09/01/16 19:51:24
>>86 >>88
ありがとうございます!!!!

96:585 ◆i9Dvbn/Lf6
09/01/16 20:58:38
お願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
二重振り子を微小振動させるとして、厳密な数値解及び解析的な近似解を初期振れ角Θを起動時に指定して、
アニメーション表示させるプログラムを表示しなさい。
グラフィックはgnuplotでもEGGXでもどちらでもよい。
画像はこちらです(内容はzipと一緒です)
URLリンク(upp.sakura.ne.jp)
URLリンク(upp.sakura.ne.jp)
URLリンク(upp.sakura.ne.jp)
zipで専用ロダにもあげておきます
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2009年1月22日まで]

さっぱりわからないので少しだけでもお願いします

>>42
さんのリンク先の内容でいいみたいです(はっきりとは答えてもらえませんでした)
URLリンク(www.ne.jp)

97:デフォルトの名無しさん
09/01/16 21:14:53
>>96
使用が固まらない限り、誰にも、どうにも出来ない。

98:デフォルトの名無しさん
09/01/16 21:31:46
[1] 授業単元:C言語
[2] 問題文:2人の人の名前と年齢を入力し、同じ年なら「○○と××は同じ年」、
そうでなければ「○○は××より□歳年上」と表示するプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2]
[3.3] 言語: C言語
[4] 期限: 1月18日まで

誰か教えてください!!お願いします!!


99:585 ◆i9Dvbn/Lf6
09/01/16 21:43:36
>>97
仕様とは具体的にどういうことでしょうか?

100:デフォルトの名無しさん
09/01/16 21:54:01
>>99
>>42のリンク先と3枚目の式があってないだろ

101:585 ◆i9Dvbn/Lf6
09/01/16 21:56:07
>>100
そこらへん先生がはっきり言ってくれなかったんですよね…

3枚目は無視してもらって>>42のリンク先でやってもらうということはできないでしょうか?

102:デフォルトの名無しさん
09/01/16 21:56:24
[1] 授業単元:C言語
[2] 問題文:ファイル中の文字数,単語数,行数をカウントするプログラムを作成せよ。
単語の切れ目はアルファベット以外の文字、行の終わりは改行文字またはファイルの終端とします。
この課題のソースファイルで動作確認をしてください。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C言語
[4] 期限:1/18まで
[5] その他の制限:特にありません。

よろしくお願いします。

103:デフォルトの名無しさん
09/01/16 21:57:37
>>101
作るものがわからないのに無理だろ

104:585 ◆i9Dvbn/Lf6
09/01/16 22:01:37
>>103
たぶんですが、>>42のリンク先の一番下で
>数値解析してシミュレーションしたのが~
でいいと思うんですけど…

105:デフォルトの名無しさん
09/01/16 22:05:32
1.10個の2桁で正の10進データをstaticデータとしてプログラム中にいれ、11個目の数をー999とする。ポインターを使って、この10個の数の合計と平均を求めるプログラムをつくる。

2.Sachiko, Emiko, Setuko, Rie, Mariko, Sara の6人の名前をポインター配列にし、頭文字がSで次の文字がaの名前を表示するプログラムを書け。

3.3つの数字をmain文でscanfで与える。そして、関数maxで3つの数の最大値を求めて、mainに帰り次のように出力する。(p102参照)
    
    3つの数を入力してください? 55 86 32
    最大値は86です。

4.do while文をつかって、1から100までの和を求めよ。

よろしくお願いします><

106:デフォルトの名無しさん
09/01/16 22:08:08
>>98
#include <stdio.h>
int main(void)
{
char name1[32],name2[32];
int age1,age2;
scanf("%s",&name1);
scanf("%d",&age1);
scanf("%s",&name2);
scanf("%d",&age2);
if(age1>age2)
printf("%sは%sより%d歳年上",name1,name2,age1-age2);
else if(age1<age2)
printf("%sは%sより%d歳年上",name2,name1,age2-age1);
else
printf("%sと%sは同じ歳",name1,name2);
return 0;
}


107:デフォルトの名無しさん
09/01/16 22:17:54
>>106
わざわざありがとうございます!助かりました!ありがとうございました!

108:デフォルトの名無しさん
09/01/16 23:02:12
>>104
URLリンク(www.ne.jp)
見てのとおり、1,2の比を固定してもパラメータが四つもあるぞ。
大体、振り子が二つあるのに初期振れ角が一個とか、どうなってんだ?
第八回の課題をコピペして、直し忘れたんじゃないのか?
URLリンク(www-it.sci.waseda.ac.jp)

109:585 ◆i9Dvbn/Lf6
09/01/16 23:08:53
>>108
だとすると先生側のミスって事ですかね?

110:585 ◆i9Dvbn/Lf6
09/01/16 23:11:27
らちが明かないので諦めますね

ありがとうございました

111:デフォルトの名無しさん
09/01/16 23:16:04
>>109
URLリンク(www-it.sci.waseda.ac.jp)
付録と微小振動の式が違うんだから、絶対間違ってるだろ

112:デフォルトの名無しさん
09/01/16 23:35:54
>>585
URLリンク(kansai2channeler.hp.infoseek.co.jp)

やっとできた頃にあきらめるとは…
タイミング悪すぎやわ

113:デフォルトの名無しさん
09/01/16 23:58:51
校名晒されて怖くなったんじゃねぇの

114:デフォルトの名無しさん
09/01/17 00:08:28
>>113
公開されてる問題文を書き込んでおいて今更なあ・・・

115:デフォルトの名無しさん
09/01/17 00:12:29
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
<学籍番号(7カラム)><氏名(10カラム)><成績1(2カラム)><成績2(2カラム)>
こういう行が100行あるファイルを読み込んで、
点数の平均・標準偏差・偏差値を求め、
その後点数順に表示・順位の項目を加えて表示する。

[3] 環境
 [3.1] OS: ウィンドウズ
 [3.2] Visual C++
 [3.3] 言語: C
[4] 期限: 1月20日まで
[5] その他の制限:
 標準偏差と偏差値に関しては構造体を利用する。

よろしくお願いします

116:デフォルトの名無しさん
09/01/17 00:31:00
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
URLリンク(www.k-php.com)
この問題をR=0、R=0.2のそれぞれの場合について求めろという課題です

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C言語
[4] 期限: 1月19日まで
[5] その他の制限:
 特にないです

どなたかよろしくお願いします

117:デフォルトの名無しさん
09/01/17 01:24:17
専門的な知識が必要な課題が増えてきたなあ。
そういう時期なんだろうなあ。
俺には無理。

118:デフォルトの名無しさん
09/01/17 01:40:43
[1] プログラミング
[2] 問題文(含コード&リンク):
  画面に任意の次数の単位行列を表示するプログラムを作れ。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] g++
 [3.3] C++
[4] 期限:1月19日まで
[5] 特に制限はないです。

お願いします;;

119:デフォルトの名無しさん
09/01/17 01:49:52
>>115
成績1、成績2ってなんだ?
点数とはどう関係する?

>>116
まずは、
v(t) = ...
i(t) = ...
まで手計算で解け

120:デフォルトの名無しさん
09/01/17 01:52:33
>>116
この辺を100ボルトにしてやれば、ナントカなるのだろうか?
URLリンク(www.ele.kanagawa-it.ac.jp)

121:デフォルトの名無しさん
09/01/17 01:55:06
>>118 表示の仕方が良く分からんけど

#include<stdio.h>

int main()
{
  int i,j,k;

  printf("次数を入れてね:");
  if((1!=scanf("%d",&k))||(k<2)) {
    printf("入力ミス");
    return 0;
  }

  for(i=0;i<k;i++) {
    for(j=0;j<k;j++) {
      if(i==j)
        printf("1 ");
      else
        printf("0 ");
    }
    printf("\n");
  }
  return 0;
}


122:デフォルトの名無しさん
09/01/17 01:57:46
>>118
#include <iostream>
using namespace std;
int main(){
int N;
cout << "Input N:";
cin >> N;
for(int i=0;i<N;++i){
for(int j=0;j<N;++j)
cout << ((i==j)?1:0) << " ";
cout << endl;
}
}

123:デフォルトの名無しさん
09/01/17 02:49:00
>>109
大抵は生徒のミス。
先生がミスってると思うのであれば、解答しなくても点くれるよ。

124:デフォルトの名無しさん
09/01/17 03:17:08
>>116 以下はR=0.2Ωの場合。RESISTANCE_RがRなので、適当に変えてね。
#include<stdio.h>
#define INDUCTANCE_L 0.5 // インダクタンスL [H]
#define CAPACITANCE_C 0.5 // 容量C [F]
#define VOLTAGE_E 100 // 電圧E [V]
#define RESISTANCE_R 0.2 // 抵抗R [Ω]
#define TIME_STEP 0.001 // 時間刻み [s]
int main() {
double current_i; // 電流i [A]
double charge_c; // Cの電荷 [C]
double voltage_r; // Rの電圧 [V]
double voltage_l; // Lの電圧 [V]
double voltage_c; // Cの電圧 [V] (=v)
int i;
current_i = 0;
charge_c = 0;
for (i = 0; i <= 30000; i ++) {
voltage_c = charge_c / CAPACITANCE_C;
voltage_r = current_i * RESISTANCE_R;
voltage_l = VOLTAGE_E - voltage_r - voltage_c;
if (i % 100 == 0) {
printf("t=%3.3f[s], i=%3.2f[A], Q_C=%3.2f[C], V_R=%3.2f[V], V_L=%3.2f[V], V_C=%3.2f[V]\n",
i*TIME_STEP, current_i, charge_c, voltage_r, voltage_l, voltage_c);
}
charge_c += current_i * TIME_STEP;
current_i += voltage_l / INDUCTANCE_L * TIME_STEP;
}
return 0;
}

125:デフォルトの名無しさん
09/01/17 04:02:42
>>120さん>>124さん
ありがとうございます。すごく参考になります。



126:デフォルトの名無しさん
09/01/17 06:32:16
丸投げでなくてすみません。あと一歩で完成だと思うのですが、実行するとコンソールの途中で処理が止まってしまいます。
(MPI_SendとMPI_Recvのデッドロック?)どこかを少しいじれば完成なのですが、ご指摘頂けませんか?
[1] 並列プログラミング
[2] 問題文(含コード&リンク):
整数を昇順にソートするプログラムを並列プログラミングで作成せよ。
mpirun -np 3 ./a.out 9
のように実行すると、3つのプロセスがそれぞれ3要素の乱数配列を作成し、
プロセス内でバブルソートした後にマージ処理を行って全体での昇順に格納します。
例)
proc0: array[0]=13, array[1]=7, array[2]=5
proc1: array[0]=9, array[1]=4, array[2]=2
proc2: array[0]=20, array[1]=12, array[2]=10
という乱数配列を生成した場合、まずプロセサ内でバブルソートして
proc0: array[0]=5, array[1]=7, array[2]=13
proc1: array[0]=2, array[1]=4, array[2]=9
proc2: array[0]=10, array[1]=12, array[2]=20
とする。最後にマージする。このとき、各プロセス内にarrayと同一個数の
メモリを使用してよいが、それ以上のメモリを使ってはならない。
(この例の場合各プロセスはそれぞれtemp_array[3]を使って良い。)
proc0: array[0]=2, array[1]=4, array[2]=5
proc1: array[0]=7, array[1]=9, array[2]=10
proc2: array[0]=12, array[1]=13, array[2]=20
僕のプログラムの、74行目から102行目までのどこかがおかしいのだと思います。
URLリンク(www.dotup.org)
[3] 環境
 [3.1] OS:MacOSX
 [3.2] gcc
 [3.3] C
[4] 期限:1月17日まで

127:デフォルトの名無しさん
09/01/17 07:49:18
mpi.h

128:126
09/01/17 09:14:13
原因が判明しました。各処理内で1回だけ処理させるべきところを全てのプロセスに処理させて
しまっていたため、デッドロックになっていたみたいです。
で、そこは修正したのですが、肝心の結果がおかしく、ソートされていません。
理由が解る方いたら教えて下さい。宜しくお願いします。
URLリンク(www.dotup.org)

129:デフォルトの名無しさん
09/01/17 10:15:45
ソースをもう少し整理してください。

57から59の時点でおかしい気がする。
同じアドレスに複数のCPUで同時にアクセスしたらやばいんじゃない?
並列化するなら分割統治法のソートを用いるべき。


130:126
09/01/17 10:27:06
>>129
レス有り難うございます。同じ配列名ですが、CPU個別で別の配列なのでそれぞれソートしてくれるような気がするのですが。。
(最初の乱数配列作成も同じ手順でやっています)とりあえず、57~59行目を以下のように変更しましたが、ソートはされませんでした。
for(i=0; i<nprocs; i++) {
if(mype==i) {
bubblesort(array, nlocal);
}
MPI_Barrier(MPI_COMM_WORLD);
}

131:129
09/01/17 10:36:36
なにー!?

132:デフォルトの名無しさん
09/01/17 10:45:33
>>130
これってどういう挙動のソート?
for(p=0; p<nlocal; p++) {
   for(q=0; q<nlocal; q++) {
       if(array[p]>temp_array[q]) {
           array[p]=array[p]^array[q];
           array[q]=array[p]^array[q];
           array[p]=array[p]^array[q];
       }
   }
}


133:デフォルトの名無しさん
09/01/17 10:48:32
全体見てないからわからないけど、まさか p == q のときにif文内実行したりはしないよな?

134:126
09/01/17 10:58:03
>>132
ごめんなさい。一部誤りがありました。以下のように修正させて下さい。(修正しても結果はソートされませんでしたが。。)
for(p=0; p<nlocal; p++) {
for(q=0; q<nlocal; q++) {
if(array[p]>temp_array[q]) {
array[p]=array[p]^temp_array[q]; //array[q]をtemp_array[q]に変更
array[q]=array[p]^temp_array[q]; //array[q]をtemp_array[q]に変更
array[p]=array[p]^temp_array[q]; //array[q]をtemp_array[q]に変更
}
}
}
この意味するところは、
int dummy;
for(p=0; p<nlocal; p++) {
for(q=0; q<nlocal; q++) {
if(array[p]>temp_array[q]) {
dummy=array[p];
array[p]=temp_array[q];
temp_array[q]=dummy;
}
}
}
と同一のつもりです。使って良いメモリはプロセスあたりnlocal*2ですので。。
つまり、arrayとtemp_arrayの配列を比較し、arrayに小さい半分の(nlocal個の)整数を格納し、temp_arrayに大きい半分の(nlocal個の)整数を格納したつもりです。


135:デフォルトの名無しさん
09/01/17 11:13:23
同一じゃなあああああああああああーい
array[q]=array[p]^temp_array[q]; -> temp_array[q]=array[p]^temp_array[q];]
ってことかな

int dummy;
for(p=0; p<nlocal; p++) {
    for(q=0; q<nlocal; q++) {
        if(array[p]>temp_array[q]) {
            dummy=array[p];
            array[p]=temp_array[q];
            temp_array[q]=dummy;
        }
    }
}
の結果はランダムになると考えてよいのか?
それとも、ソート処理の一環と考えるべき?


136:126
09/01/17 11:19:02
>>133
p==qのときもif処理は実行するようにしています。
例えば、以下のようなケースの場合、
array[0]=2, array[1]=9, array[2]=17
temp_array[0]=1, temp_array[1]=3, temp_array[2]=20
まずarray[0]とtemp_array[0]を比較し、array[0]の方が大きいので交換。
array[0]=1, array[1]=9, array[2]=17
temp_array[0]=2, temp_array[1]=3, temp_array[2]=20
次にarray[0]とtemp_array[1]を比較し、array[0]の方が小さいので何もしない。
次にarray[0]とtemp_array[2]を比較し、array[0]の方が小さいので何もしない。
次にarray[1]とtemp_array[0]を比較し、array[0]の方が大きいので交換。
と続けて行くと、最終的に
array[0]=1, array[1]=2, array[2]=3
temp_array[0]=17, temp_array[1]=9, temp_array[2]=20
となるようにするのが意図です。

137:デフォルトの名無しさん
09/01/17 11:23:32
>>136
いや
array[p]=array[p]^array[q];
みたいにどっちもarrayだったらの話だから気にするな

138:126
09/01/17 11:35:23
あっ。。。出来たかもしれません。
最終確認して、正常動作したらアップ致します。


139:デフォルトの名無しさん
09/01/17 11:56:52
>>121>>122
無事表示されました!ありがとうございます♪

140:デフォルトの名無しさん
09/01/17 12:07:09
1] プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力された0から1までの数字各々の個数をカウントし、表示するプログラムを作れ
(例19003と打ち込めば、1・9・3は1、0が2、他は0)

[3] 環境
 [3.1] Windows xp
 [3.2] gcc
 [3.3] C++
[4] 1月20日
[5] 制限なし

お願いします。

141:デフォルトの名無しさん
09/01/17 12:22:57
0から1まで?

142:デフォルトの名無しさん
09/01/17 12:31:26
あッ、間違えました
0から9までです。

143:デフォルトの名無しさん
09/01/17 12:39:23
>>140
#include <stdio.h>
#include <string.h>

int main()
{
    char buf[256], *ptr;
    int cnt[10], i;

    fgets(buf, sizeof(buf), stdin);

    for(i = 0; i < 10; i++){
        cnt[i] = 0;
    }

    for(ptr = buf; *ptr != '\0'; ptr++){
        if('0' <= *ptr && *ptr <= '9'){
            cnt[*ptr - '0']++;
        }
    }

    for(i = 0; i < 10; i++){
        printf("%d: %d\n", i, cnt[i]);
    }

    return 0;
}

144:143
09/01/17 12:41:00
#include <string.h>
は余計だった。その行は消してくれ。

145:デフォルトの名無しさん
09/01/17 13:11:56
助かりました!

146:126
09/01/17 13:20:29
なんか軽くなりすましが入ったようですが、一応クラスタ環境でも
動作しましたのでソースアップしときます。各位コメント有り難う。
URLリンク(www.dotup.org)

147:デフォルトの名無しさん
09/01/17 13:36:13
ASCIIコードのうち印字可能(空白含む)な文字を表示しなさい。
なお、その際、英数字以外の文字は [ ] で囲みなさい。

お願いします


148:デフォルトの名無しさん
09/01/17 13:40:08
#include <stdio.h>
#include <ctype.h>

int main(void)
{
int i;

for(i=0; i<256; i++) {
if(isprint(i)) {
if(isalnum(i)) putchar(i);
else printf("[%c]", i);
}
}

return 0;
}

149:デフォルトの名無しさん
09/01/17 13:41:29
>>147
#include <stdio.h>
#include <ctype.h>

int main()
{
    int i;

    for(i = 0; i <= 0xFF; i++){
        if(isprint(i)){
            if(isalnum(i)){
                printf("%c", i);
            } else {
                printf("[%c]", i);
            }
        }
    }

    return 0;
}

150:デフォルトの名無しさん
09/01/17 14:25:18
>>148
>>149
非常にありがとうございます。

151:デフォルトの名無しさん
09/01/17 15:02:48
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
int型配列“idata[]”に正の整数値が入っているときに、この配列を渡されて、
戻り値として整数値のうちの最大値を返す関数“idmax”および最小値を返す関数“idmin”
を作りなさい。
 最大値を返す関数:int idmax(int idata[])
 最小値を返す関数:int idmin(int idata[])
ただし、データの最後を識別するために、最終データの次の配列要素には、
「-1」(マイナス1)が入っているものとする。
また、動作を確認するためのmain関数として、キーボードから正の整数値を
1つずつ読み込み、-1を読み込んだのち、関数idmaxおよびidminを呼び出し、
下記のように、読み込んだ整数値、最大値および最小値をディスプレイに
表示するプログラムをつくりなさい。
読み込んだ整数値の個数は、最大でも10個までとして、main関数を作っても構わない。
_____ディスプレイ______
読み込んだ整数値:○ △ ◇ □
最大値:△
最小値:○
_______________
[3] 環境 [3.1] OS: WindowsXP[3.2] Visual studio[3.3] C言語
[4] 期限: 2009年1月19日まで
どなたか、分かる方どうぞよろしくお願いします!!!!

152:デフォルトの名無しさん
09/01/17 15:55:00
>>151
#include <stdio.h>
int idmax(int idata[]) {
int max = *idata;
while(*++idata > 0) if(max < *idata) max = *idata;
return max; }
int idmin(int idata[]) {
int min = *idata;
while(*++idata > 0) if(min > *idata) min = *idata;
return min; }

int main(void)
{
int i, a[11];

for(i=0; i<10; i++) {
scanf("%d", a + i);
if(a[i] == -1) break;}
if(i==10) a[10] = -1;

printf("読み込んだ整数値:");
for(i=0; a[i]!=-1; i++) printf("%d ", a[i]);
putchar('\n');
printf("最大値:%d\n", idmax(a));
printf("最小値:%d\n", idmin(a));

return 0;
}

153:デフォルトの名無しさん
09/01/17 16:32:55
文字処理関数の使用例において、文字の入力に、「scanf("%c", &c);」を使うと
is○○関数で上手く判定が出来ないのはなぜですか?

154:デフォルトの名無しさん
09/01/17 16:35:21
>>153
どうせ改行文字がバッファに残ってるせいなんだんだろうな

155:デフォルトの名無しさん
09/01/17 16:39:04
>153
標準入力からはいったん文字列で読み込むようにして
sscanf(文字列, "%c", &c);
ではどうだろうか?

156:デフォルトの名無しさん
09/01/17 16:43:06
>>153
scanf() で %c を指定すると、1バイトのデータしか入力しません。
'A' を入力すれば、0x41 です。
int型変数 c は、例えば宣言時に不定値が設定されていて 0xffff だったとすると、
それに 0x41 だけを入力するので、0xff41 になってしまいます。
これでは is○○関数では正しい判断は行えません。

回避策ですが、scanf を使わずに、getchar を使う(getchar関数は int型の文字を返却します)。
もしくは、宣言時に int c = 0; とし、0 で変数を初期化するかです。


157:デフォルトの名無しさん
09/01/17 16:46:19
cがintってどっから出てきた?

158:デフォルトの名無しさん
09/01/17 16:48:15
>int型変数 c は、例えば宣言時に不定値が設定されていて 0xffff だったとすると、
>それに 0x41 だけを入力するので、0xff41 になってしまいます。

>153 のどこにそんなことが書いてあるんだろう?
>154 の推理もすごいけどw

159:115
09/01/17 17:07:19
>>115に関して説明不足ですみません。
科目Aの成績と科目Bの成績があって、
それぞれの成績について平均、標準偏差、偏差値を求めるということです。
順位は科目A+Bの成績で出します。

ちなみに実際のファイルの中身はこんな感じ↓
1234567●●●● 1042


160:デフォルトの名無しさん
09/01/17 17:33:03
ファイルアップしたほうがはやくね?

161:デフォルトの名無しさん
09/01/17 17:33:57
[1] 授業単元:Computer Prigramming II 第14回:木(ツリー)構造,再帰的関数と再帰的呼び出し
[2] 問題文(含コード&リンク):
下の入出力例のように,適当な数字を入れると,1からその数までの和が計算過程とともに
表示されるプログラムを作りなさい。ループ(for)文を使うものと再帰的関数を使用するも
のの2種類の解答を作ること。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows Vista / Linux
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition / gcc
 [3.3] 言語:C
[4] 期限:2008年1月25日00:00まで
[5] その他の制限:

162:デフォルトの名無しさん
09/01/17 17:44:47
【質問テンプレ】
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
  問題3(戻り値がない場合の引数あり)
 平行四辺形の底辺tと逆さhを入力して、平行四辺形の面積を求めるプログラムを作りなさい。
 ただし、main関数で平行四辺形の底辺tと高さhの入力を行い、
 平行四辺形の面積の計算と表示はmensekiという関数で行うこと。

  問題4(戻り値がある場合の引数あり)
 平行四辺形の底辺tと高さhを入力して、平行四辺形の面積を求めるプログラムを作りなさい。
 ただしmain関数で平行四辺形の底辺tと高さhの入力と計算された円の面積の表示を行い、
 平行四辺形の面積はmensekiという関数で計算するようにする。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語:C言語
[4] 期限:2009年01月19日まで
[5] その他の制限:習い始めて半年です、数学関数まで進みました。
よろしくお願いします。

163:デフォルトの名無しさん
09/01/17 17:54:02
文字処理関数の演習問題
16進数に変換可能な文字列(例えば "AB45")をキーボードから入力し、
10進数の数値に変換しなさい。

わかる方教えてください。。

164:デフォルトの名無しさん
09/01/17 18:07:44
>>162
問題3
#include <stdio.h>

void menseki(double t, double h)
{
    printf("平行四辺形の面積は%lfです\n", t * h);

    return;
}

int main()
{
    double t, h;

    printf("底辺: ");
    scanf("%lf", &t);
    printf("高さ: ");
    scanf("%lf", &h);
    menseki(t, h);

    return 0;
}

165:デフォルトの名無しさん
09/01/17 18:09:30
>>162
問題4
円の面積って何だ
#include <stdio.h>

double menseki(double t, double h)
{
    return t*h;
}

int main()
{
    double t, h;

    printf("底辺: ");
    scanf("%lf", &t);
    printf("高さ: ");
    scanf("%lf", &h);
    menseki(t, h);
    printf("平行四辺形の面積は%lfです\n", menseki(t, h));
    return 0;
}

166:デフォルトの名無しさん
09/01/17 18:13:41
>>161
入出力例を見ると和を入力しているが、入力するのは和なのか?

3を入力→1+2+3を求めるではなく、
3を入力→1+2=3まで計算、なのか?

167:デフォルトの名無しさん
09/01/17 18:20:56
>>163
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int do_hex(char *str)
{
    static const char hex[] = "0123456789abcdef";
    static const int digit = sizeof(hex) - 1;
    int ch, ret = 0;
    char *p;
    while(*str != '\0'){
        ch = tolower(*str);
        p = strchr(hex, ch);
        if(p == NULL){
            fprintf(stderr, "卑猥な文字:%c\n", *str);
            exit(1);
        }
        ret = digit * ret + (int)(p - hex);
        str++;
    }
    return ret;
}

int main(void)
{
    char buf[256];
    scanf("%255s", buf);
    printf("%s(16) -> %d(10)\n", buf, do_hex(buf));
    return 0;
}

168:デフォルトの名無しさん
09/01/17 18:25:34
>>167
もっと簡潔に書けるよ

169:デフォルトの名無しさん
09/01/17 18:30:10
>>168 こうか?
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int ret, hex;

    ret = scanf("%x", &hex);
    if(ret != 1){
        fprintf(stderr, "俺にも彼女ができる\n");
        exit(1);
    }

    printf("%x(16) -> %d\n", hex, hex);

    return 0;
}

170:デフォルトの名無しさん
09/01/17 18:35:02
>>159
フォーマットは各行に「学籍番号が7桁、名前が10文字、成績1が2桁、成績2が2桁」が隙間無く並んでいるってことでいいんだよね?
URLリンク(kansai2channeler.hp.infoseek.co.jp)

171:デフォルトの名無しさん
09/01/17 18:36:58
みなさんcのコンパイラは
何をお使いでしょうか?

おすすめや
これは使えないというものはありますか??

172:デフォルトの名無しさん
09/01/17 18:42:56
>>171
スレ違いだから消えろ

173:デフォルトの名無しさん
09/01/17 18:43:13
>>171
スレチ。
スレリンク(tech板)

174:162
09/01/17 18:45:48
>>164-165
ありがとうございます!助かりました。

円の面積・・・意味不明ですね、気付きませんでした。
プリント見返してみましたけど円って書いてありますw
先生のミスかな。

175:デフォルトの名無しさん
09/01/17 19:22:28
>>172 >>173 wwwwwwwwwwwwwwwwww
>>172 >>173 wwwwwwwwwwwwwwwwww
>>172 >>173 wwwwwwwwwwwwwwwwww


176:デフォルトの名無しさん
09/01/17 19:52:09
gccかclでいいんじゃないかとおもうけど
bccってどうなの?

177:デフォルトの名無しさん
09/01/17 19:57:30
>>176
Windowsでgccって微妙じゃね?

178:デフォルトの名無しさん
09/01/17 20:07:42
悲しいかな、C関連で一番勢いの大きいスレッドなので、ウザイ自演も沸く・・・

179:115
09/01/17 22:08:32
>>170
そのとおりです、ありがとうございます。助かりました・・・。


180:115
09/01/17 22:53:18
何度もすみませんorz
>>170のを実行してみたらエラーが出て実行できないんですがどこがおかしいんでしょうか・・・


181:デフォルトの名無しさん
09/01/17 22:55:45
>>180

>>1
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。


182:デフォルトの名無しさん
09/01/17 23:09:26
115.txtを探す旅

183:115
09/01/17 23:29:59
>>182
いくら自分が間抜けでプログラム苦手とはいえそれはさすがにないw


自力でどうにか出来そうな箇所を弄ったら102個あったエラーが30個にはなったんですが
もうこれ以上は自力じゃ無理orz
ここでひとつひとつコピペするのも難なので、全部まとめてコピペしてロダに上げておきます・・・。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

184:デフォルトの名無しさん
09/01/17 23:46:46
>>183
手直ししたなら、そのプログラムも上げてくれ

多分 grade_t のどっかがおかしいんだと思う

185:デフォルトの名無しさん
09/01/17 23:50:18
>>180
> >>170のを実行してみたらエラーが出て実行できないんですがどこがおかしいんでしょうか・・・

先生!>>183が実行時エラーじゃありません!!!

186:170
09/01/18 00:15:38
あー、VC++だと変数宣言を全部ブロックの先頭に書かないといけないんだっけ?

187:デフォルトの名無しさん
09/01/18 00:20:41
>>186
いや全く関係ないけど。

188:デフォルトの名無しさん
09/01/18 00:22:52
>>180
>>170
  const grade_t *x = a;
  const grade_t *y = b;

  const grade_t *x = (const grade_t *)a;
  const grade_t *y = (const grade_t *)b;
に書き換えてもダメか?
(*.cppとしてコンパイルしていると想定)

189:デフォルトの名無しさん
09/01/18 00:24:12
const grade_t *x = (grade_t*)a;
const grade_t *y = (grade_t*)b;
に変えればとりあえず動くけどフォーマット指定したファイルも出してくれないと
ファイル作るの面倒です^;^

190:デフォルトの名無しさん
09/01/18 00:57:16
&grades[i].numberという書き方はキライだな(個人的には)
&(grades[i].number)と書きたい

191:デフォルトの名無しさん
09/01/18 00:59:54
宿題で関数strcpyを自分で作らなければいけません。
自分で作ってみたのですが、うまくいきませんでした。

char *my_strcpy(char *s1, char *s2){
int i = 0;
while(s2[i] != '\0'){
s1[i] = *s2;
i++;
}
*s1 = '\0';
return s1;
}

どこをどう直せばいいのか教えてください。
お願いします。

192:デフォルトの名無しさん
09/01/18 01:01:14
>>191
URLリンク(www.bohyoh.com)

193:デフォルトの名無しさん
09/01/18 01:03:08
>>191
s1[i] = s2[i];
s1[i] = '\0';

194:デフォルトの名無しさん
09/01/18 01:10:39
>>192 >>193
ありがとうございました。
本当に助かりました。

195:デフォルトの名無しさん
09/01/18 01:50:13
>>192
そんなの貼ると、代入式だってファビョられるぞw

196:デフォルトの名無しさん
09/01/18 02:19:03
>>195
言われるのはサイトの管理人だから、放っとけよ

197:デフォルトの名無しさん
09/01/18 02:28:10
JIS X 3010:2003の定義に従えば、条件式⊂代入式

198:デフォルトの名無しさん
09/01/18 11:21:05
>>102
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define N 256

int main(void)
{
char b[N];
int c = 0, w = 0, l = 0;
FILE *fp;
fgets(b, N, stdin); *strchr(b, '\n') = '\0';
if (!(fp = fopen(b, "r"))) return 1;

while (fgets(b, N, fp)) {
int i = 0;
while(b[i]) { c++; if (!isalpha(b[i++])) w++; }
l++;
}
printf("%d character(s)\n%d word(s)\n%d line(s)\n", c, w, l);
fclose(fp);
return 0;
}

199:デフォルトの名無しさん
09/01/18 13:37:08
まったくできない。
こんな学部入らなければよかった・・

200:デフォルトの名無しさん
09/01/18 13:45:29
大学じゃ、Cの授業なんてなかったなぁ・・・
独学で覚えて仕事にしてるが。

201:デフォルトの名無しさん
09/01/18 15:50:18
>>93
>1からその数までの和
それなら、45を入力すると

1081 = 1 + 2 + ... + 45

になるはずなのだが。
問題が間違っているのか、出力例が間違っているのかを教えてくれ

202:デフォルトの名無しさん
09/01/18 15:53:32
>>93
>1からその数までの和
それなら、45を入力すると

1081 = 1 + 2 + ... + 45

になるはずなのだが。
問題が間違っているのか、出力例が間違っているのかを教えてくれ

203:201
09/01/18 15:54:28
連続スマソ

204:デフォルトの名無しさん
09/01/18 16:25:14
>>201
自分も、何か変だなとは思ったが、例えば36から45の間の数を入力したら
どうするのかと考えたが、問題文を見ると、やはり1~nまでの和なのかと・・・

205:201
09/01/18 16:33:34
問題が正しいのならば↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)

出力例が正しいのならば↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)

for文は苦手だから書かんかった。ごめん。
暇だったら書くかもしれん

206:201
09/01/18 16:48:21
分かるとは思うけど205は >>93

207:デフォルトの名無しさん
09/01/18 17:00:54
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語: C
[4] 期限: 2009年01月19日
[5] その他の制限:このような形に表示されるよう求められています↓
URLリンク(www.dotup.org)

どうか宜しくお願いします

208:デフォルトの名無しさん
09/01/18 17:05:17
>>93
forでやった場合、問題に合わせたやつ。
出力例にあわせるのはめんどいからパス。

#include <stdio.h>

int sum_n(int);

int main()
{
int i, j, n;

printf("Input any integer >");
scanf("%d", &n);

for (i = 1; i <= n; i++) {
printf("%d = ", sum_n(i));
for (j = 1; j <= i; j++) {
printf(" %d %c", j, (j==i ? '\n': '+'));
}
}
printf("Total: %d\n", sum_n(n));

return 0;
}

int sum_n(int n)
{
return n * (n + 1) / 2;
}

209:208
09/01/18 17:20:35
もしかすると、sum_nの中身こっちのほうがいいかも。
int sum_n(int n)
{
int i;
int sum = 0;

for(i = 1; i <= n; i++) {
sum += i;
}
return sum;
}

210:デフォルトの名無しさん
09/01/18 17:28:56
もしかすると、うpロダ使って書き直すのも良いかも

211:デフォルトの名無しさん
09/01/18 17:51:03
>>207
URLリンク(kansai2channeler.hp.infoseek.co.jp)

212:デフォルトの名無しさん
09/01/18 18:53:11
一般ユーティリティ関数の演習問題

* をランダムな個数ずつ、10行画面に出力しなさい。
ただし、最大でも 1行(80個)を越えないこと。

お願いします。

213:デフォルトの名無しさん
09/01/18 19:00:34
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,j;
for(i=0;i<10;i++){
for(j=0;j<rand()%80+1;j++)printf("*");
printf("\n");
}
return 0;
}

214:デフォルトの名無しさん
09/01/18 19:02:59
>>213
助かりました。ありがとうございます!!

215:デフォルトの名無しさん
09/01/18 19:04:08
>>213
>j<rand()%80+1
これは思いつかんかったわww
ちなみに俺は212ではない

216:デフォルトの名無しさん
09/01/18 19:06:57
>>213
j<rand()%80+1
これってループするたびに右辺の値が変わったりしないか?
それでも要求仕様は満足するだろうけど

217:デフォルトの名無しさん
09/01/18 19:10:57
この場合、*の個数の分布はなんだろう?

218:デフォルトの名無しさん
09/01/18 19:15:19
指数分布だろ近いのは

219:デフォルトの名無しさん
09/01/18 19:18:12
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
32以下の自然数nを入力し、nビットのグレイコードを出力せよ。
[3] 環境
 [3.1] OS: Vista
 [3.2] コンパイラ名とバージョン: VC2008EE
 [3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限: 標準ライブラリの範囲内で。
よろしくお願いします。

220:デフォルトの名無しさん
09/01/18 19:34:47
>>217
やってみた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
当然だが後半ほとんどでないな

221:デフォルトの名無しさん
09/01/18 19:40:45
>>219
#include <stdio.h>
int main(void)
{
int i,j,g[6],flg;
unsigned int a;
do {
printf("input number(<=32): ");
scanf("%d",&a);
} while (a>32);
for (i=0;i<6;i++) {
g[5-i]=a%2;
a>>=1;
}
for (i=0;i<6;i++) {
if (g[i]) {
for (j=i+1;j<6;j++) g[j]=(g[j]+1)%2;
}
}
for (i=0,flg=0;i<6;i++) {
if (g[i]) flg=1;
if (flg) printf("%d",g[i]);
}
printf("\n");
return 0;
}

222:デフォルトの名無しさん
09/01/18 20:30:38
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
天秤の左皿にだけ重さNの物体が載っている。(Nは自然数)
左右の皿に分銅を追加して、天秤が釣り合うようにする。
使える分銅は、重さが1, 3, 9, 27, ...というように
3のべき乗のものがそれぞれ1つずつである。
Nを入力し、分銅の載せ方を表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語:C言語
[4] 期限:1/19 午前7時
[5] その他の制限:できるだけスマートな解法でお願いします。

223:デフォルトの名無しさん
09/01/18 20:47:46
組み合わせが存在しない場合は?

224:デフォルトの名無しさん
09/01/18 20:58:55
>>223
左の皿に分銅を載せるのも考慮すればいかなる場合でもおk

225:デフォルトの名無しさん
09/01/18 21:23:56
[1] 授業単元:計算機プログラム
[2] 問題文(含コード&リンク):
3つの数を引数としてとり、大きいほうの2つの数の和を繰り返す手続きを作成しなさい。
(例えば、最初に最小値を見つける。次に3つの数の和から最小値を引く)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語: C
[4] 期限: 1月19日
[5] その他の制限:特にありません
よろしくお願いします

226:デフォルトの名無しさん
09/01/18 21:27:26
>>225
すみません訂正します
[2] 問題文(含コード&リンク):
3つの数を引数としてとり、大きいほうの2つの数の和を返す手続きを作成しなさい。
でした。繰り返すではなく返すでした。

227:デフォルトの名無しさん
09/01/18 21:32:39
>>221
それはn番目のグレイコードであって、nビットのグレイコードではないな。

228:デフォルトの名無しさん
09/01/18 21:35:56
>>220
じゃあ>>213は間違ってるってこと?

229:デフォルトの名無しさん
09/01/18 21:40:03
>>228
何をいっているんだ?

230:デフォルトの名無しさん
09/01/18 21:41:29
>>227-229
不覚にも吹いたww

231:デフォルトの名無しさん
09/01/18 21:43:17
>>225

int addition(int a,int b,int c) {
if(a<b){
if(a<c) return b+c;
return a+b;
} else {
if(b<c) return a+c;
return a+b;
}
return 0;
}

232:115
09/01/18 21:43:29
>>115です。
何度も煩わせてすみませんorz


>>188
入れてみましたがエラーの数も内容も変化なしでした・・・
問題の方を改めてロダに上げます。
もう何が間違ってるのか分からない・・・

URLリンク(kansai2channeler.hp.infoseek.co.jp)

233:デフォルトの名無しさん
09/01/18 21:45:20
>>222
URLリンク(kansai2channeler.hp.infoseek.co.jp)
スマートかどうかは知らん

234:デフォルトの名無しさん
09/01/18 21:49:02
>>219
これで良いだろう

#include <stdio.h>
int main(void)
{
int i,j,g[6],flg;
unsigned int a;
do {
printf("input number(<=32): ");
scanf("%d",&a);
} while (a>32);
for (i=0;i<6;i++) {
g[5-i]=a%2;
a>>=1;
}
for (i=0;i<6;i++) {
if (g[i]) {
for (j=i+1;j<6;j++) g[j]=(g[j]+1)%2;
}
}
for (i=0,flg=0;i<6;i++) printf("%d",g[i]);
printf("\n");
return 0;
}

235:デフォルトの名無しさん
09/01/18 21:51:08
>>230
不覚だな

236:デフォルトの名無しさん
09/01/18 21:51:08
>>213
っていうか、srandしてないから不味くね?

237:デフォルトの名無しさん
09/01/18 21:56:42
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
(1)
キーボードから入力された0から9までの数字各々の個数をカウントし表示するプログラムを作れ
(2)
画面に任意の次数の単位行列を表示するプログラムを作れ
(3)
学生の数をまず入力した後、各自の試験成績(1課目)を順次入力した後、
最高点・最低点・平均点をそれぞれ求めて表示するプログラムを作れ
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C++
[4] 期限:1月21日
[5]その他の制限:特にありません
よろしくお願いします


238:デフォルトの名無しさん
09/01/18 21:58:13
>>232
だから>>170をどういじったのかを言えと

もしくは>>170をコンパイルした時(いじる前)にどんなエラーが出たかを言ってくれ

239:デフォルトの名無しさん
09/01/18 21:59:46
>>237
(1) >>140,141,143
(2) >>118,121,122

240:デフォルトの名無しさん
09/01/18 22:11:01
>>237
(3)
#include<iostream>
#include<algorithm>
#include<numeric>
#include<vector>
int main() {
int num, score;
std::cout << "Number of students = ";
std::cin >> num;
std::vector<int> scores;
for (int i = 0; i < num; i ++) {
std::cout << "Student" << 1+i << "'s score = ";
std::cin >> score;
scores.push_back(score);
}
std::cout << "-----\n";
std::cout << "The highest score is " << *std::max_element(scores.begin(), scores.end()) << ".\n";
std::cout << "The lowest score is " << *std::min_element(scores.begin(), scores.end()) << ".\n";
std::cout << "Average score is " << std::accumulate(scores.begin(), scores.end(), 0) / scores.size() << "." << std::endl;
return 0;
}

241:201
09/01/18 22:11:34
>>237
(1)
出力は勝手に考えた

#include <stdio.h>

int main(void)
{
int num[10] = {0,0,0,0,0,0,0,0,0,0};
int n = 0;
int i = 0;

while(1){
printf("input:");
scanf("%d",&n);
if(n <= 10) num[n]++;
for(i = 0;i < 10;i++)printf("%d:%d\n",i,num[i]);
printf("\n");
}
return 0;
}

242:デフォルトの名無しさん
09/01/18 22:12:09
C++と聞くととたんにがんばる奴がいるなw

243:デフォルトの名無しさん
09/01/18 22:12:24
> int num[10] = {0,0,0,0,0,0,0,0,0,0};
フイタw

244:デフォルトの名無しさん
09/01/18 22:13:21
[1] 授業単元:プログラミング
[2] 問題文:
あるゼミの各学生の名前、読み仮名、点数を入力し、最高点を取った学生の名前と
点数を表示せよ。今まで入力した中で何番目の学生が最高点かを記録するための
変数max_iを用意し、最高点が更新されるごとにmax_iを更新する。但し、max_iの
初期値は0とする。
[3] 環境
 [3.1] OS:Windows
 [3.2]
 [3.3] 言語:C言語
[4] 期限:1月19日
[5] その他の制限: 全くわからないので誰か教えてください!!よろしくお願いします!!


245:デフォルトの名無しさん
09/01/18 22:13:31
>>243
int num[10] = {0};
でいいことぐらい分かってるよ

246:デフォルトの名無しさん
09/01/18 22:14:17
>>245
フイタw

247:222
09/01/18 22:16:31
>>233
ありがとうございました。

248:デフォルトの名無しさん
09/01/18 22:16:41
ちょっと細工しておくと検索しやすくなるんだよ
誰が検索するのかは秘密♥

249:デフォルトの名無しさん
09/01/18 22:22:21
>>241
正常に機能しなくてフイタw

250:201
09/01/18 22:24:24
一応言っておくが、>>245は俺ではない(汗)

あと、
int num[10] = {0};
は知らんかった。
>>201は中坊だというわけで許してくれw

251:デフォルトの名無しさん
09/01/18 22:25:23
なにがなんだか分からない・・・・・・・

252:225
09/01/18 22:25:28
>>231
ありがとうございました。

253:デフォルトの名無しさん
09/01/18 22:25:55
>>140


254:201
09/01/18 22:26:15
>>249
ん?俺の環境(bcc)では動作するぜよ

255:デフォルトの名無しさん
09/01/18 22:28:41
>>253
>>143

256:デフォルトの名無しさん
09/01/18 22:33:12
>>254
動作する、コンパイルできたからといって、問題通りの
実行結果が出る、機能しているとは限らない。

257:デフォルトの名無しさん
09/01/18 22:33:31
>>254
if(n <= 10) num[n]++;

if(n>=0 && n<10) num[n]++;

258:デフォルトの名無しさん
09/01/18 22:34:30
>>256
問題文を読めよwww

259:デフォルトの名無しさん
09/01/18 22:45:36
>>241
int num[10]
if(n <= 10) num[n]++;
フイタw


260:デフォルトの名無しさん
09/01/18 23:17:51
>>232
だから、宣言文をブロックの先頭にしろって
VCとか関係なくC89の仕様

261:201
09/01/18 23:42:37
>>257
>>259
べ、別に、ボーっとしてたわけじゃないんだからね!orz

262:デフォルトの名無しさん
09/01/19 00:12:27
昨日も書き込んで、アドバイスをもらったのですが、
ちょっとしたトラブルが発生したので、もう一度書き込みます。

#include<stdio.h>

char *my_strcpy(char *s1, char *s2){
int i = 0;
while(s2[i] != '\0'){
s1[i] = s2[i];
i++;
}
s1[i] = '\0';

return s1;
}

int main(){
char *s1 = "abc";
char *s2 = "wxyz";
my_strcpy(s1, s2);
printf("s1:%s s2:%s \n", s1, s2);
return 0;
}

s2の文字数がs1の文字数より大きいとき、
s2が表示されないのはなぜでしょう。
教えてください。
よろしくお願いします。

263:デフォルトの名無しさん
09/01/19 00:23:00
>>262
a←s1
b
c
\0
w←s2
x
y
z
w

my_strcpy後

w←s1
x
y
z
\0←s2
x
y
z
w

あとは分かるな(ちなみにこの上書きは必ず起こるとは限らん)

あと char *s2 = "wxyz";
という風に宣言した文字列リテラルを書き換えるのはNGだ
うまく動かしたい場合は取り合えず
char s1[10] = "abc";
char s2[10] = "wxyz";
とでもするがいい


264:デフォルトの名無しさん
09/01/19 00:24:03
おっと訂正

a←s1
b
c
\0
w←s2
x
y
z
w
\0
my_strcpy後

w←s1
x
y
z
\0←s2
x
y
z


265:デフォルトの名無しさん
09/01/19 00:25:36
また間違えた、死のう

a←s1
b
c
\0
w←s2
x
y
z
\0
my_strcpy後

w←s1
x
y
z
\0←s2
x
y
z
\0

266:デフォルトの名無しさん
09/01/19 00:44:08
gcc4.1.2だとs1[i] = s2[i]を実行した瞬間に死ぬぜ。
vcはどうなってる?

267:262
09/01/19 01:11:21
どうすればよいのでしょうか。


268:デフォルトの名無しさん
09/01/19 01:14:22
>>267
取り敢えず、リテラルを書き換えないことと、
配列に確保した領域を超えて書き込まないことじゃね?

269:102
09/01/19 01:16:14
>>198
ありがとうございました。

270:デフォルトの名無しさん
09/01/19 01:18:40
>>267
#include <stdio.h>

char *my_strcpy(char *s1, char *s2)
{
int i = 0;
while (s1[i] != '\0' && s2[i] != '\0'){
s1[i] = s2[i];
i++;
}
s1[i] = '\0';
return s1;
}

int main()
{
char s1[] = "abc";
char s2[] = "wxyz";
my_strcpy(s1, s2);
printf("s1:%s s2:%s \n", s1, s2);
return 0;
}

271:デフォルトの名無しさん
09/01/19 01:21:33
while ( s1[i] && s2[i] )

272:262
09/01/19 01:22:14
>>268 >>270
ありがとうございました。

273:デフォルトの名無しさん
09/01/19 01:24:17
while (s1[i] & s2[i])

274:デフォルトの名無しさん
09/01/19 01:24:51
>>273
窓から飛び降りて良し!

275:デフォルトの名無しさん
09/01/19 01:25:19
>>267
char *s1 = "abc";
char *s2 = "wxyz";
my_strcpy(s1, s2);



char *s2 = "wxyz";
char *s1 = "abc";
my_strcpy(s1, s2);

でどう?

ちなみにmy_strcpyには返り値が有る筈なんだが……

276:デフォルトの名無しさん
09/01/19 01:27:51
>>275 wwwwwwwwwwwwwwwwwwwwwwww

277:デフォルトの名無しさん
09/01/19 01:30:39
>>275
その発想はなかったわ

278:デフォルトの名無しさん
09/01/19 01:50:36
>>275
s1とs2の中身を換えたいの?それとも、引数の順番を換えたいの?
何がしたいの?死体としたいの?

279:デフォルトの名無しさん
09/01/19 02:03:51
ロシアではwxyzをabcにする、ガハハ!

280:デフォルトの名無しさん
09/01/19 02:05:47
>>110
お前がW大学のM田Cプロとってることはよくわかった
URLリンク(www-it.sci.waseda.ac.jp)
の宿題3を解いてくださいと書けば早いだろうが

281:デフォルトの名無しさん
09/01/19 02:07:56
>>280
お前が他人の素性を探りたがっていることはよくわかった
>>1
> 気に入らない質問やその他や発言はスルーの方向で。
答えたくなければ、こんなスレに来ないか、スルーすれば良いだろ

282:201
09/01/19 02:25:07
>>275
GJ!!ww

>>278
メモリ上でs1、s2と並んでいるのをs2、s1の順番にするってこと。
s2の方がサイズが大きいから、s1をコピーしてもs1への影響がなくなる。

283:デフォルトの名無しさん
09/01/19 02:27:12
なんの冗談だよw

284:デフォルトの名無しさん
09/01/19 02:28:46
実際の環境でどういう挙動になるかも大事だが、
そもそも文字列リテラルの書き換え自体が未定義だろ。やっちゃいけない。

285:デフォルトの名無しさん
09/01/19 02:42:41
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): URLリンク(sasa.cis.ibaraki.ac.jp)
[3] 環境
 [3.1] OS:Windous Vista
 [3.2] コンパイラ名とバージョン:任意
 [3.3] 言語: C
[4] 期限: 1月21日
[5] その他の制限:
 30件 URLリンク(sasa.cis.ibaraki.ac.jp)
 100件 URLリンク(sasa.cis.ibaraki.ac.jp)
 10万件 URLリンク(sasa.cis.ibaraki.ac.jp)
必須課題1,2のみでいいのでよろしくお願いします。

286:デフォルトの名無しさん
09/01/19 03:05:51
>>282
意味がわかってねーだろ、お前?wwwwwwwww
もう一度コードをよく見ろ。

287:201
09/01/19 03:13:02
>>286
いや、>>282であってるけど。
違うと言うんならお前説明してみろw

288:デフォルトの名無しさん
09/01/19 03:16:31
>>275 >>275 >>275 >>275 >>275 >>275 >>275 
s1とs2が何か?それでいて、my_strcpy(s1, s2); の順番が同じだが
その中身のコードを書き換えたわけでもなく・・・201は同じ人物?
だとしたら、かなり頭が悪いか、池沼レベルだな・・・口出ししない方が身の為だぞ。
墓穴を掘って、逆にバカにされるぞ、お前・・・もう学校ではアホ扱いされているだろうけどw

289:デフォルトの名無しさん
09/01/19 03:18:50
>>287
何を説明しろって言うんだよ・・・違うとかって話じゃないだろ。
お前が分かっているのか?って聞かれているんだが?
>>282は勝手に解釈したのか、>>275のコードが理解できないのか、
視覚に問題のある障害者なのか・・・

290:デフォルトの名無しさん
09/01/19 03:20:16
>>275
char *s1 = "abc";
char *s2 = "wxyz";

char *s2 = "wxyz";
char *s1 = "abc";
↑記述する順番を逆にしても、s1とs2の中身はどうよ?w

my_strcpy(s1, s2);
my_strcpy(s1, s2);
↑これも逆にしたわけでもないし・・・

291:201
09/01/19 03:31:07
>>280
>>290
一応アホと言っておく
ちなみに俺は>>275とは無関係

C(C++)では書いた順番によってメモリ配置が変わるんだよ。
これくらい知っとけ。
お前(達)は中坊以下か?

292:デフォルトの名無しさん
09/01/19 03:33:41
こんな時間に書き込み出来るのは無職・ニートだけ!
中学生以下は寝てますよ。

293:デフォルトの名無しさん
09/01/19 03:33:58
自分が大学生の時にもいたけど、こっちが間違っていないのに
何か指摘すると、必死に言い返すバカって、本当に始末が悪くて
迷惑した。態度も悪いし。まさに201みたいな、自分が知能が低いくせに
食い下がる基地外みたいにな。少し黙ってろ、ド素人は。
あのコードを見て、何が違うかも説明できないお前が、勝手に
思い込んだだけだろ。

294:デフォルトの名無しさん
09/01/19 03:37:50
201が必死必死必死必死w

>>258とか、>>275らしき、もう一匹バカがいるようだが、日本語が読めないアホだろ?w


295:201
09/01/19 03:39:53
>>292
すまん。一応俺も無職ww

>>293
お前の環境で実行してみたか?
分かってると思うけど、最適化施したら正常に機能しない可能性がある
俺の環境(Windows(bcc))だったらちゃんと機能した

296:201
09/01/19 03:42:17
>>294
自演必死だねwww
口調で分かる

297:デフォルトの名無しさん
09/01/19 03:42:48
URLリンク(www.bohyoh.com)
答えは出てんだよw いつまで分かりきったことで、必死に
意味も無い、間違った持論を展開するんだね、君は?w
まぁ、こんな場所に来ている人なんてごく一部だし。
そんな一部の人間にさえ、理解されない視野の狭い井の中の蛙w
とりあえず、こんな時間に起きていて、不規則な生活が習慣になっているなら
それを正した方が良いよ。早死にの原因だから。俺?不規則というのは
規則性がないことであって、この時間から明け方までが俺が起きている時間さ。
だって、俺は今、ジャポンのオーバーシーにいるから、時差でこっちは昼間なんだよw

298:デフォルトの名無しさん
09/01/19 03:46:33
日本語でおk

299:201
09/01/19 03:47:58
>>297
人の話聞いてる?

>>All
スレ汚してスマンorz

300:201
09/01/19 03:53:41
>>296
ごめん。訂正。
こりゃ厳密には自演って言わないね。
頭が鈍ってきたw
寝るわ。

301:デフォルトの名無しさん
09/01/19 03:55:01
201は本当にバカだ。あれほどレスするなと言われても、必死になっていることを
わざわざ露呈するなんて。今年一の、このスレの恥さらしだ!通報しますた!

302:201
09/01/19 03:56:36
>>301
つい熱くなってしまって・・・orz

303:デフォルトの名無しさん
09/01/19 03:57:27
そもそも話題のmy_strcpyがstrcpyの要件を満たしていない件

304:デフォルトの名無しさん
09/01/19 04:01:29
んでさ、その大学生時代の、食い下がり野郎がさ、まともに使えもしない英語を使うんだわ。
I go to a bus とか言っちゃってさ。何?って聞いたら、風呂に入ってくるってさ、ぎゃははは(バンバン
マジ受けるんですけどぉ~?理系に進んだとは言え、英語の成績は良かった俺が
take a bath って言ってやったんだけどさ、妙に食い下がる正確のせいか、辞書で調べたらしく
have a bath とも言うんだよぉ~とか言ってやんの。別にそう言わないとは、こっちは言ってないのに。
だったら最初から辞書を引けよってかーんじ。まぁ、それでも take a bath が一般的なんだけどね。
英語圏で生活してみろっちゅーのっw
俺?だからさ、さっきっから言っているだろ?ジャポンのオーバーシーだから、昼間だって。
まだ風呂に入る時間じゃないが、シャワーを浴びるしw

305:デフォルトの名無しさん
09/01/19 04:17:06
>>237
> キーボードから入力された0から9までの数字各々の個数をカウントし表示するプログラムを作れ
”各々の個数をカウント”
日本語が読めないのか、出題者が19003だったら1,3,9が1つ、0が2つといった書き方をすれば良かったのか
にしても、201が書いたコードは、whileループを抜けないまま強制終了でもさせなきゃ駄目だし。
コンパイラに通って、実行できたからといっても、題意の通りに機能したわけでもないというのに・・・

306:デフォルトの名無しさん
09/01/19 04:23:12
>>305
寝ろ

307:デフォルトの名無しさん
09/01/19 05:37:03
誰かお願いします。
int型の変数numに初期値99を、char型の変数chに初期値'Z'を設定し、それを
表示するプログラムex6_2を作成せよ。
プログラムの作成にあたり、以下に従うこと。
・int型の変数numとchar型の変数chはmain()関数内で宣言すること
・numとchへの初期値設定はinit_var()関数にて行うこと。
------------------------------------------------------
void init_var(int *pnum, char *pch);
返り値:なし
引数 :pnum:数値格納変数へのポインタ
pch :文字格納変数へのポインタ
処理 :数値格納変数に数値99を、文字格納変数に文字'Z'
を格納する
------------------------------------------------------
※main()関数内の変数に対して別関数init_var()にて値を書き込むため、
引数としてポインタを用いる

《実行例》
>ex6_2
num = 99, ch = Z ←変数の値を表示するだけ


308:デフォルトの名無しさん
09/01/19 05:38:10
これも

int型の変数3個(※配列で宣言する)に数値を入力し、その合計を求めて表示する
プログラムex6_3を作成せよ。
プログラムの作成にあたり、以下に従うこと。
・入力数値を格納するint型の配列はmain()関数内で宣言すること
・指定された個数の数値の合計を求める関数getsum()を自作して使うこと。
getsum()関数の仕様は以下の通り。
----- getsum() ----------------------------------------------------
int getsum(int *pnum, int numcnt);
引数 :pnum :数値を格納している配列の先頭アドレス
numcnt :和を求める変数の個数
返却値:算出した和
処理 :指定された個数の変数の和を求める
-------------------------------------------------------------------
※getsum()は、「int getsum(int *, const int);」としてもよい

《実行例》
>ex6_3
Enter number(1) : 10
Enter number(2) : 23
Enter number(3) : 41
Sum = 74

309:デフォルトの名無しさん
09/01/19 07:18:52
なんだかなぁ・・・

310:デフォルトの名無しさん
09/01/19 12:12:22
最近テンプレを読む能力もないお馬鹿さんが増えてるよね

>>307
#include <stdio.h>
void init_var(int *pnum, char *pch) { *pnum = 99; *pch = 'Z'; }
int main(void) { int num; char ch; init_var(&num, &ch); printf("num = %d, ch = %c\n", num, ch); return 0; }

311:デフォルトの名無しさん
09/01/19 12:16:05
>>308
#include <stdio.h>
int getsum(int *pnum, int numcnt)
{
int sum, i;
for (i = sum = 0; i < numcnt; ++i) sum += pnum[i];
return sum;
}
int main(void)
{
int pnum[3], i;
for (i = 0; i < 3; ++i) { printf("Enter number(%d) : ", i + 1); scanf("%d", &pnum[i]); }
printf("Sum = %d\n", getsum(pnum, 3));
return 0;
}

312:デフォルトの名無しさん
09/01/19 14:53:05
ねむい

313:デフォルトの名無しさん
09/01/19 15:46:48
[1] Cプログラミング基礎
[2] URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC++2003
 [3.3] 言語:C++
[4] 期限: 1月21日(水曜日)
[5] その他の制限: クラスの定義辺りまで習いました

参考プログラムを軽く修正すればいいだけだとは思うのですが
うまくいきません。よろしくお願いします。

314:デフォルトの名無しさん
09/01/19 15:52:15
>>313
課題は原文を貼ってくれないと
素人の考えた文言は意味不明で読み解けない。

315:313
09/01/19 18:03:57
>>314
一応これが原文なのです・・・。
丁寧すぎるというか、確かに読み解きにくいですね・・・。
うーん困った・・・。

316:デフォルトの名無しさん
09/01/19 18:25:54
>>315
>3つのchar型のメンバー変数(ポインタ)
とか、専門家が考えた文言とは思えない。

317:デフォルトの名無しさん
09/01/19 18:58:42
厨房に負けてるお前らワロスwwww


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch