C/C++の宿題片付けます 148代目

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 147代目
http://hibari.2ch.net/test/read.cgi/tech/1301553333/
2デフォルトの名無しさん:2011/05/20(金) 14:18:21.69
おまいら
janeの隠し機能を発見したぞ!

1.まず半角入力に切り替える
2.Wキーを押しっぱなしにする
3.Wキを押しっぱなしにしながらsageのチェックするところをおもむろにクリック
3デフォルトの名無しさん:2011/05/20(金) 14:32:41.58
>>1
4デフォルトの名無しさん:2011/05/20(金) 16:06:17.71
早速ですがよろしくお願いします

[1] 授業単元:趣味の独学
[2] 問題文(含コード&リンク):
ポインタを使って2つの戻り値を加算するプログラム
[3] 環境
 [3.1] OS: windows7
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:ポインタまで。難しいことはまだわかりません

http://codepad.org/14ZoJ5pK
コンパイルは通るんですが実行結果がおかしくなります。
ポインタを勘違いして使ってるのかと思うんですがどこを修正すればいいでしょうか?
お手数ですがよろしくお願いします。
5デフォルトの名無しさん:2011/05/20(金) 16:29:15.23
うん。勘違いしてる。頭から読み直したほうがいい
6デフォルトの名無しさん:2011/05/20(金) 16:30:21.77
7デフォルトの名無しさん:2011/05/20(金) 16:31:45.02
scanf -->引数に与える変数には&をつける
printf -->引数に与える変数に&を付けることは滅多にしない
8デフォルトの名無しさん:2011/05/20(金) 16:35:05.83
なんだ、読み込むところから、全然できてないのか。
>>6
http://codepad.org/umIUcCEp
94:2011/05/20(金) 17:05:10.99
レスありがとうございます。
"の位置と、printfの引数に&を付けた事が原因だったようで・・・
もう一度読み直してきます、ありがとうございました。
10デフォルトの名無しさん:2011/05/20(金) 19:56:55.21
英文字を読み込み、その一つ一つの文字の個数を求めるプログラム。

実行結果
英文字 BBACC
変換後 B2A1C2

よろしくお願いします。
11デフォルトの名無しさん:2011/05/20(金) 20:00:31.56
>>10
>>1を読めうんこ

あとサゲることぐらいしろ
12デフォルトの名無しさん:2011/05/20(金) 20:11:02.18
[1]c言語
[2]英文字を読み込み、その一つ一つの文字の個数を求めるプログラム。

実行結果
英文字 BBACC
変換後 B2A1C2[3] 環境
[3.1] Linux
[3.3] C++
[4] 期限:5月22日(日)
13デフォルトの名無しさん:2011/05/20(金) 20:25:47.21
>>12
>[3.3] C++

これ、合ってる?
今習ってるのはC言語ではないの?
14デフォルトの名無しさん:2011/05/20(金) 20:29:06.06
15デフォルトの名無しさん:2011/05/20(金) 21:07:48.00
>>12
#include <stdio.h>
#include <ctype.h.
16デフォルトの名無しさん:2011/05/20(金) 21:08:12.84
[1]授業単元:課題
[2]問題文:文字列を読み込み,各文字をアルファベットの辞書順にn文字循環シフトして出力するプログラム.
ただし'b'が'a'+1であると仮定してはならない.
整数 > 5
変換前の文字列 > ayzfvwhbpqrcegiklmnjostdux
変換後の文字列: fdekabmguvwhjlnpqrsotxyizc

[3] 環境
 [3.1]Linux
 [3.2]gcc
 [3.3]言語:C
[4]期限:5/23

17デフォルトの名無しさん:2011/05/20(金) 21:13:15.37
手が滑った
>>12

#include <stdio.h>
#include <ctype.h>

int main(void)
{
int i, ch, cnt = 0, a[52][2] = {0};

printf("英文字 ");
while((ch = getchar()) != '\n') {
if(!isalpha(ch)) continue;
for(i = 0; i < cnt; i++) {
if(a[i][0] == ch) {
a[i][1]++;
break;
} }
if(i == cnt) {
a[cnt][0] = ch;
a[cnt++][1] = 1;
} }

printf("変換後 ");
for(i = 0; i < cnt; i++) printf("%c%d", a[i][0], a[i][1]);

return 0;
}
18デフォルトの名無しさん:2011/05/20(金) 21:22:00.50
>>16
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
const char *alphabet="abcdefghijklmnopqrstuvwxyz", *p;
char buf[256];
int i, n, x;

fprintf(stderr, "整数 > ");
gets(buf);
n=atoi(buf);
fprintf(stderr, "変換前の文字列 > ");
gets(buf);
fprintf(stderr, "変換後の文字列 : ");
for(i=0;buf[i];i++)
{
p=strchr(alphabet, buf[i]);
if(p)
{
x=(p-alphabet+n)%26;
putchar(alphabet[x]);
}
else
{
putchar(buf[i]);
}
}
return 0;
}
19デフォルトの名無しさん:2011/05/20(金) 21:45:40.77
20デフォルトの名無しさん:2011/05/20(金) 21:56:44.81
[1]課題
[2]文字列Aと文字列Bを受け取り,文字列Bが文字列Aの終わりにあるかの判定を「yes」または「no」と出力するプログラム。
実行例1
文字列A > aaa
文字列B > aaa
yes
実行例2
文字列A > defg
文字列B > abcdefg
no
[3] 環境
[3.1] Linux
[3.3] C言語
[4] 期限:5月22日
21デフォルトの名無しさん:2011/05/20(金) 22:21:27.92
>>20
#include <stdio.h>

int main(void)
{
char A[256], B[256], *p, *q;

printf("文字列A >");
scanf("%s", A);
printf("文字列B >");
scanf("%s", B);

for(p = A; *p; p++);
for(q = B; *q; q++);

while(*p == *q) {
if(q == B) {
printf("yes\n");
return 0;
}
if(p == A) break;
p--, q--;
}

printf("no\n");

return 0;
}
22デフォルトの名無しさん:2011/05/20(金) 22:48:58.05
すみません、このコードってどういう意味ですか?
これだけでは意味不明かもしれませんが、構文自体がよくわからないのです。
たとえば、s_Eventが変数で、loadという値で初期化している、などというレベルでよいので、
お願いいたします。

const TypeEvent EvtData_Load::s_Event( "load" );

23デフォルトの名無しさん:2011/05/20(金) 23:03:49.03
const TypeEvent ←戻り値の型
EvtData_Load::s_Event ←関数名
( "load" ); ←引数
24デフォルトの名無しさん:2011/05/20(金) 23:13:40.12
>22

>23揚げ足取るようですまんが、、、

const TypeEvent ←戻り値の型
EvtData_Load←名前空間
:s_Event ←関数名
"load" ←実引数
25デフォルトの名無しさん:2011/05/20(金) 23:19:17.53
>>24
全然揚げ足じゃないので気にせず。
ただ、そこに関してはs_から、EvtData_Loadクラスのスタティック関数メンバかも知れないなぁと。
26デフォルトの名無しさん:2011/05/20(金) 23:30:40.92
s_Eventが関数だったらコンパイルエラーじゃないの
27デフォルトの名無しさん:2011/05/20(金) 23:37:06.94
28デフォルトの名無しさん:2011/05/20(金) 23:47:27.00
>>27
>[1]c言語
お前はバカなんだから他人の揚げ足とろうとか考えるな
29デフォルトの名無しさん:2011/05/20(金) 23:55:34.18
30デフォルトの名無しさん:2011/05/20(金) 23:55:47.78
>>23-26
なんとなく、わかりました。
TypeEventクラスの名前空間EvtData_Loadのs_Event変数をloadで初期化している?
という感じかなぁと思いました
別の箇所で、if(EvtData_Load::s_Event == event.getTypeEvent)というところがあったので
たぶんs_Eventは変数かなと・・

どうもありがとうございました
31デフォルトの名無しさん:2011/05/20(金) 23:55:57.02
>>28
あんまり、Qをいじめるなよ
32デフォルトの名無しさん:2011/05/21(土) 00:08:17.54
>>27
>>17がC++でコンパイルできない環境を教えてくれ
3323:2011/05/21(土) 00:25:48.89
>>30
読みきれず申し訳ないっす。
34デフォルトの名無しさん:2011/05/21(土) 00:39:30.71
>>32
たしかに gcc, bcc, cl ともコンパイル可能です。失礼しました。
35デフォルトの名無しさん:2011/05/21(土) 01:18:39.69
C++プログラム
CコンパイラではコンパイルできずにC++コンパイラでは出来るのを言う
by 禿げ
36デフォルトの名無しさん:2011/05/21(土) 01:37:25.94
>>27
おい

エラー E2094 ***.cpp 12: >> 演算子が使われたがクラス istream では std::string 型のための定義が存在しない (関数 main() )
37デフォルトの名無しさん:2011/05/21(土) 01:41:00.95
#include <string> が抜けてるな
これでよく C++ プログラムなんかうp出来たもんだ
38 ◆XEE2zLj0dE :2011/05/21(土) 03:43:38.24
>>12
順序を保たないとだめなんだろうか。提出には不向きだと思いつつ投下。
http://codepad.org/wj0DTcl7
39デフォルトの名無しさん:2011/05/21(土) 10:00:49.26
40デフォルトの名無しさん:2011/05/21(土) 10:52:47.77
どうせならコテいれろよ。
41デフォルトの名無しさん:2011/05/21(土) 11:00:28.79
[1] 授業単元: Cプログラミング2
[2] 問題文(含コード&リンク): キーボードより文字列aと文字列bを入力し、
比較する(どちらが辞書並びで先かを表示する)プログラムを作りなさい。
但し、strcmp関数を用いてはならない。
[3] 環境
 [3.1] OS:Windows7
 [3.2] VisualStudio2008
 [3.3] 言語: C
[4] 期限: 5月23日16:00まで
[5] その他の制限: strcmp関数の使用禁止。
42デフォルトの名無しさん:2011/05/21(土) 11:02:12.76
>>39
C++もロクに分からないのにコンパイルできないソースを上げるのはやめてくれ
出題者に迷惑だ
43デフォルトの名無しさん:2011/05/21(土) 11:11:17.96
>>41
#include<stdio.h>
#define SIZE 5000
int my_strcmp(char *s1, char *s2)
{
while (*s1++ == *s2++);
return *--s2 - *--s1;
}
int main()
{
char a[SIZE], b[SIZE];
int result;
printf("a = ");
scanf("%s", a);
printf("b = ");
scanf("%s", b);
result = my_strcmp(a, b);
if (result > 0) {
puts("a, bの順番");
} else if (result == 0){
puts("a, bは同じ");

} else {
puts("b, aの順番");
}
}
44デフォルトの名無しさん:2011/05/21(土) 11:25:01.85
>>43
早い対応ありがとうございます。
大変助かりました。
45デフォルトの名無しさん:2011/05/21(土) 11:28:17.35
>>43
あれ・・・strcmp関数が使われてる・・・?
46デフォルトの名無しさん:2011/05/21(土) 11:45:32.16
>>43
>int my_strcmp(char *s1, char *s2)
>{
>while (*s1++ == *s2++);
>return *--s2 - *--s1;
>}

同じ文字列与えたら、まずくね?
47デフォルトの名無しさん:2011/05/21(土) 11:50:48.63
>>45,46
これでいいか?ww

#include<stdio.h>
#define SIZE 5000
int unko(const char *s1, const char *s2)
{
register const unsigned char *ss1, *ss2;
for (ss1 = (const unsigned char*)s1, ss2 = (const unsigned char*)s2;
*ss1 == *ss2 && *ss1 != '\0';
ss1++, ss2++)
;
return *ss1 - *ss2;
}

int main()
{
char a[SIZE], b[SIZE];
int result;
printf("a = ");
scanf("%s", a);
printf("b = ");
scanf("%s", b);
result = unko(a, b);
if (result < 0) {
puts("a, bの順番");
} else if (result == 0){
puts("a, bは同じ");
} else {
puts("b, aの順番");
}
}
48デフォルトの名無しさん:2011/05/21(土) 11:57:51.49
今時 register なんてつけてるし、変なところでキャストしてるし...

> int unko(const char *s1, const char *s2)

まあ、自覚はあるらしい。
49デフォルトの名無しさん:2011/05/21(土) 12:05:51.87
>>48
registerが古臭いのはともかく
変なキャスト呼ばわりとかふざけんな
50デフォルトの名無しさん:2011/05/21(土) 12:15:20.85
> register const unsigned char *ss1, *ss2;
こういうウンココード書くからウンコキャストする破目に陥る。
51デフォルトの名無しさん:2011/05/21(土) 12:23:51.21
>>50
どこが不味いのか具体的に行ってみろよ禿
52デフォルトの名無しさん:2011/05/21(土) 12:37:16.80
態度でかいぞ、ウンコ禿。
53デフォルトの名無しさん:2011/05/21(土) 12:38:09.93
>>52
おら指摘してみろよ
なんとなく吠えてただけなんだろ
正直にみとめろよwwwwwwwwwwwwww
54デフォルトの名無しさん:2011/05/21(土) 12:48:02.74
ウンコじゃないキャストとはこうだ。憶えとけウンコ禿。

int unko(const char *s1, const char *s2)
{
for (; *s1 == *s2 && *s1 != '\0'; s1++, s2++)
;
return *(const unsigned char*)s1 - *(const unsigned char*)s2;
}
55デフォルトの名無しさん:2011/05/21(土) 12:50:10.37
長い自演だったな
56デフォルトの名無しさん:2011/05/21(土) 14:10:55.48
>>54
>return *(const unsigned char*)s1 - *(const unsigned char*)s2;

return (unsigned char)*s1 - (unsigned char)*s2;
57デフォルトの名無しさん:2011/05/21(土) 14:17:56.87
unsigned から unsigned を引いてマイナスになった時の挙動は規格票では
どう定義してたっけ?
58デフォルトの名無しさん:2011/05/21(土) 15:16:11.45
>>57
unsigned - unsigned の型は unsigned
でも int として返してるからマイナスになる
59デフォルトの名無しさん:2011/05/21(土) 15:32:42.00
自作した>>43がバグってたから他のサイトから拾ってきたコードが>>47
コピペしたもんだから>>51みたいに態度がでかい。
虎の威を借る狐。Qよりかこわるい。
60デフォルトの名無しさん:2011/05/21(土) 15:42:14.25
>>58
それ規格票のどこかに保証ある?
61デフォルトの名無しさん:2011/05/21(土) 16:03:59.76
例えば仮定だけど、intが64bit長でunsigned intが32bit長の処理系があるとして
(現実にはまずないだろうけど話として)、unsignedをintに変換したら必ずプラスに
なっちゃうんじゃないかなあ
62デフォルトの名無しさん:2011/05/21(土) 16:04:14.27
>>60
型拡張でどうぞ
63デフォルトの名無しさん:2011/05/21(土) 16:17:34.83
>>62
あれあれ?こんなのあるよ

6.3.1.3 Signed and unsigned integers
1 When a value with integer type is converted to another integer type other than _Bool, if
the value can be represented by the new type, it is unchanged.
2 Otherwise, if the new type is unsigned, the value is converted by repeatedly adding or
subtracting one more than the maximum value that can be represented in the new type
until the value is in the range of the new type.49)
3 Otherwise, the new type is signed and the value cannot be represented in it; either the
result is implementation-defined or an implementation-defined signal is raised.

今回はこの3に該当するよね?処理系定義もしくはシグナルを発生するとあるけど
64デフォルトの名無しさん:2011/05/21(土) 16:18:56.63
65デフォルトの名無しさん:2011/05/21(土) 16:26:21.44
>>63
32bit 環境で
int a=4000000000;
の結果が
a==INT_MAX
になっちゃったりする可能性の話してるの?
66デフォルトの名無しさん:2011/05/21(土) 16:29:46.42
>>63の3をJISで読むと

そうでない場合、すなわち、新しい型が符号付き整数型であって、値がその型で表現できない
場合は、結果が処理系定義の値となるか、又は処理系定義のシグナルを生成するかのいずれか
とする。

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

つまりunsigned型同士の演算の結果がUNIT_MAXになったとする
これをintに型変換すると明らかにINT_MAXでは収まりきらないため、結果は処理系定義の値と
なるか処理系定義のシグナルが生成される

これは意図した動作ではなかろう

>>64もcharはsigned charかunsigned charかは処理系によって異なるので、正しくはsigned char
と書かないと動かない可能性がある

6.2.5 Types
15 The three types char, signed char, and unsigned char are collectively called
the character types. The implementation shall define char to have the same range,
representation, and behavior as either signed char or unsigned char.35)
67デフォルトの名無しさん:2011/05/21(土) 16:30:16.70
The value cannot be represented in new signed type なの?
68デフォルトの名無しさん:2011/05/21(土) 16:34:38.31
>>67
32bitだとして0xffffffffは INT_MAX の 0x7fffffff を超えている
つまり The value cannot be represented in new signed type だ
本当は -1 を返して欲しいんだろうけどその保証はない
69デフォルトの名無しさん:2011/05/21(土) 16:36:30.34
new signed type = int
被演算対象 = unsigned char
だけど、おなじこと?
70デフォルトの名無しさん:2011/05/21(土) 16:37:04.99
>>68
でも intの範囲は 32bitだとしたら INT_MIN〜INT_MAXだから 0x80000000〜0x7fffffff
だから収まるんじゃね?
71デフォルトの名無しさん:2011/05/21(土) 16:38:33.31
>>70
むう、そうか・・・俺の勘違いか すまん
72デフォルトの名無しさん:2011/05/21(土) 16:41:39.37
http://codepad.org/hcbSbJNH
上のプログラムは入力した文字列を反転させるものです。
アドバイスをお願いします
73デフォルトの名無しさん:2011/05/21(土) 16:43:36.07
そんな感じでいいと思うよ
74デフォルトの名無しさん:2011/05/21(土) 16:52:02.07
GCCしか知らない人って…
char *c = "ABC";

const char *c = "ABC";
と同じ。
75デフォルトの名無しさん:2011/05/21(土) 16:52:44.54
>>74
ちげーよ
76デフォルトの名無しさん:2011/05/21(土) 16:56:28.65
>>72
Re() で r 返しちゃだめだろ。
main() の t[] って、何も設定してないのに、何を表示するつもりなんだ?

て言うか、まずコンパイルエラーぐらいはとってからアップ品よ。
77デフォルトの名無しさん:2011/05/21(土) 17:10:22.88
>>72です

error C2440: 'return' : 'char [100]' から 'int' に変換できません。

error C2440: '=' : 'int' から 'char [100]' に変換できません。

エラーの内容です
7874:2011/05/21(土) 17:19:44.43
コンパイラがMicrosoftのVC++だから。
7974:2011/05/21(土) 17:59:55.14
80デフォルトの名無しさん:2011/05/21(土) 18:06:52.94
>>72
--- 72.cpp.org 2011-05-21 18:03:45.708286588 +0900
+++ 72.cpp 2011-05-21 18:03:08.488519638 +0900
@@ -1,9 +1,8 @@
#include<stdio.h>

-int Re(char *q)
+char *Re(char *q, char *r)
{
int i,j;
- char r[100];
i=j=0;

while(q[j]!='\0'){
@@ -17,6 +16,7 @@ int Re(char *q)
i++;
}

+ r[i] = '\0';
return r;

}
81デフォルトの名無しさん:2011/05/21(土) 18:07:09.24
>>72
@@ -25,17 +25,17 @@ int Re(char *q)
int main()
{
int x;
- char s[100],t[100];
+ char s[100],t[100], *str;
x=0;

printf("文字列を入力:");
scanf("%s",s);

- str = Re(s);
+ str = Re(s, t);

- while(str=='\0'){
- printf("%c",t[x]);
- x++;
+ while(*str!='\0'){
+ printf("%c", *str);
+ str++;
82デフォルトの名無しさん:2011/05/21(土) 18:10:28.54
>>74
vc++のwarning 4996ってどんなやつ?
83デフォルトの名無しさん:2011/05/21(土) 18:15:56.85
84デフォルトの名無しさん:2011/05/21(土) 18:16:23.59
scanf("%100[^\n]",s); はどういう意味ですか?
85デフォルトの名無しさん:2011/05/21(土) 18:20:30.28
100文字の文字列を読みたい。
あるいは、\nが出るまで読みたい。
86デフォルトの名無しさん:2011/05/21(土) 18:24:22.89
>>83
xxx系の関数も使えるけど、xxx_s系の関数使いなさいよっ!ってことか。
warningをoffにするより、vc++ならdefineでxxxをxxx_sに変換したいところだね。
87デフォルトの名無しさん:2011/05/21(土) 18:26:24.31
>>86
引数の数が違うからそれはやっちゃダメだな
88デフォルトの名無しさん:2011/05/21(土) 18:30:24.79
>>87
おのれvisual studio…
でもxxx_sの関数はC標準に入れてもいい気がする。
89デフォルトの名無しさん:2011/05/21(土) 18:47:53.52
C1Xで入る予定だから
90デフォルトの名無しさん:2011/05/21(土) 18:49:09.64
確かにscanf()とかgets()の文字列入力は危険過ぎる
91デフォルトの名無しさん:2011/05/21(土) 19:31:32.58
scanfとgetsは初心者本ですぐに出て使うなと言われる始末。
初めから「こういうものだ」とfgetsを教えるのは難しいかなあ。
92デフォルトの名無しさん:2011/05/21(土) 19:37:25.63
全然難しくない。買ってはいけないクソ本を晒しあげて絶滅に追い込むべし。
93デフォルトの名無しさん:2011/05/21(土) 20:22:27.75
でも宿題程度ならscanf()やgets()でも十分なのも事実
業務用には危なくて使えないというだけの話で
94デフォルトの名無しさん:2011/05/21(土) 20:27:33.48
72です。ありがとうございました
scanfは危険なのは分かりました。ではオススメの入力用関数を教えて下さい
95デフォルトの名無しさん:2011/05/21(土) 20:40:25.09
scanf
96デフォルトの名無しさん:2011/05/21(土) 20:46:06.22
fgets(stdin, ....)
97デフォルトの名無しさん:2011/05/21(土) 20:46:55.31
しかしこう書くと今度は fflush(stdin); とか書く馬鹿が出てくるんだよなあ
それはVC++独自の拡張だよって
98デフォルトの名無しさん:2011/05/21(土) 20:47:14.25
>>96
とんでもないところに書き込もうとしてるぞw
99デフォルトの名無しさん:2011/05/21(土) 20:48:34.89
>>94
fgets() して atoi だの sprintf() だの。

http://hibari.2ch.net/test/read.cgi/tech/1301553333/944
100デフォルトの名無しさん:2011/05/21(土) 21:11:06.16
>>98
stdoutだったwwww
101デフォルトの名無しさん:2011/05/21(土) 21:18:03.37
>>100
そういう問題ではない。
102デフォルトの名無しさん:2011/05/21(土) 21:25:48.62
>>101
stdoutを最後に持って行けって言うんだろ?
103デフォルトの名無しさん:2011/05/21(土) 21:26:59.82
>>101
ちがった、stdinを最後に持って行けと言うんだよな
fprintf()ならstdoutが一番前
104デフォルトの名無しさん:2011/05/21(土) 23:20:18.43
やれやれだぜ
105デフォルトの名無しさん:2011/05/21(土) 23:29:41.05
>>40
コテではありません。トリップです。
106デフォルトの名無しさん:2011/05/22(日) 00:45:15.37
[1] プログラミング
[2] aprioriを実装せよ。(ttp://www1.doshisha.ac.jp/~mjin/R/40/40.html)
[3] 環境
 [3.1] OS: Windows7
 [3.2] Microsoft Visual C++ 2010 Express
 [3.3] 言語: c
[4] 5月23日
[5] ポインタまでの範囲でお願いします。
できればそれぞれの関数等がどういう操作をしているのかのコメントも
お願いします。
107デフォルトの名無しさん:2011/05/22(日) 01:08:23.59
どうみてもSQLです。
しかも埋め込み型じゃありません。
108デフォルトの名無しさん:2011/05/22(日) 01:09:30.41
SQLじゃなった。スマソ。
http://www1.doshisha.ac.jp/~mjin/R/
109デフォルトの名無しさん:2011/05/22(日) 07:44:10.40
>>106
キミ、それプログラミングの授業の課題じゃなくて業務でしょ。
この時期にその難易度の課題が出るわけないじゃん。100万/納期1か月で作ってやろうか?
110デフォルトの名無しさん:2011/05/22(日) 08:15:37.57
同志社なんて3流大だからかんべんしてやれよ
111デフォルトの名無しさん:2011/05/22(日) 08:24:41.39
三流大ならなおさら出るわけないだろ。
112デフォルトの名無しさん:2011/05/22(日) 11:44:55.18
研究室の課題とかじゃね?友達がprologでやらされてた
113デフォルトの名無しさん:2011/05/22(日) 12:50:28.72
【質問テンプレ】
[1]Cプログラミング
[2]10人の身長(150cm〜180cm)を任意にキーボードから入力し、
  160cm以上の人数と未満の人数、およびそれらの平均値を求めよ。
[3] 環境
 [3.1] windows xp
 [3.2] bcc55
 [3.3] C言語
[4] 期限:2011/05/23
[5]puts,scanf,if,elseなどは使えます。
114デフォルトの名無しさん:2011/05/22(日) 15:38:54.88
>>113
一応動くけど、自分も学習中だから自信がない
http://codepad.org/ZbmxjcO2
115デフォルトの名無しさん:2011/05/22(日) 15:45:55.23
それらの平均値の意味が曖昧
全体の平均だけでいいのか、160cm以上、未満それぞれの平均が必要なのか
116デフォルトの名無しさん:2011/05/22(日) 18:49:10.53
[1] 授業単元: Cプログラミング
[2] 問題文:数Xを0がくるまでキーボードから入力して、各数字における
(X^2+1)/(X+X)を求めよ。ただし0が入力されたら終わりとする。
[3] 環境
[3.1] OS:(Windows XP
[4] その他:結果は画面に出力し、数字は整数入力とする。

補足 かなりの初心者なのでfor文ぐらいまでの知識しか理解できません
117デフォルトの名無しさん:2011/05/22(日) 19:18:48.24
#include <stdio.h>
int main(void){
/**/int X;
/**/while(1){
/**//**/scanf("%d", &X);
/**//**/if (X==0)
/**//**//**/break;
/**//**/printf("%d\n", (X*X+1)/(X+X));
/**/}
/**/return 0;
}
118デフォルトの名無しさん:2011/05/22(日) 19:54:29.28
>>117
0入力でしゅうりょうだから無限ループじゃなくて素直に判定に入れたほうが良くない?
あと入力が整数でも除算が含まれるので計算結果は整数とは限らない

と言うことで
#include <stdio.h>
int main(void){int num;while(scanf("%d",&num)&&num!=0){printf("%f\n",(num*num+1.)/(2.*num));}return 0;}

ただし数値以外を入力したときも終了するから、その場合読み飛ばすなら適当に処理を加えて
119デフォルトの名無しさん:2011/05/22(日) 20:21:44.29
【質問テンプレ】
[1] 授業単元:アルゴリズム
[2] 問題文(任意の整数を入力、位が高いほうから一桁ずつ表示、各位の合計を算出):
[3] 環境
 [3.1] OS: (Windows)
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 2011年5月23日19:30まで]
[5] その他の制限: (配列、ポインタ、関数、使用禁止です)
cの本買ってきてまねして作っていますが、本が増えていくだけです。
さっぱり動きません。
120デフォルトの名無しさん:2011/05/22(日) 20:27:52.71
関数使用禁止?
何も書けないな
121デフォルトの名無しさん:2011/05/22(日) 20:30:26.60
チョトワラタ
122デフォルトの名無しさん:2011/05/22(日) 20:45:32.68
#include <stdio.h>
int main(void){
  int data, i, t;
  char work[20];

  putchar('>');
  scanf("%d", &data);
  sprintf(work, "%d", data);
  t = 0;
  for(i=0; work[i]; i++) {
    printf("%c\n", work[i]);
    t += work[i] - '0';
  }
  printf("total=%d\n", t);
}
123デフォルトの名無しさん:2011/05/22(日) 20:53:18.98
>>122
おい関数使ってるじゃねーか
124デフォルトの名無しさん:2011/05/22(日) 21:46:33.47
[1] 授業単元:プログラミング
[2] 問題文:
ファイルから指定した文字列を検索し、行番号と検索文字列該当部分に***の1行
検索文字列を含んだ行すべてを表記した1行を画面に出力する
ただし、ファイルについてはタブを半角スペースに変換させ、エラー文についても適宜出力させる
表記例(検索文字:aaa)
行番号 ***     ***
    aaa bbb ccc aaa 111
[3] 環境
 [3.1] OS: Windowsxp
 [3.3] 言語: C
[4] 期限:5月23日
[5] その他の制限: タブ→スペース変換については関数を新たに作る

別の板で***の表示について相談したのですが、Cでどのように書けばいいか分からなかったので
こちらで質問をさせていただきます。
つまづいている部分としては***の表示とタブをスペースに変換するという点についてです。
どうかよろしくお願いします。
125デフォルトの名無しさん:2011/05/22(日) 21:51:30.11
>>122
Qの弟子ですよね
126デフォルトの名無しさん:2011/05/22(日) 22:04:14.13
>>124
表記例がイミフ
127デフォルトの名無しさん:2011/05/22(日) 22:14:10.85
>>125
最後に /* end */ って付けなくちゃなw
128124:2011/05/22(日) 22:48:09.59
>>126
表記がずれましたスミマセン
行番号のところは検索文字列がある行の数字が入り、aaaの部分で***が
上に来るように出力を行えるようにしたいと思っています。
129122:2011/05/22(日) 23:02:35.91
#include <stdio.h>
int main(void){
/*          2147483648 */
  int data, a, t, n = 1000000000;

  putchar('>');
  scanf("%d", &data);
  do {
    a = data / n;
    n /= 10;
  } while(a == 0 && n > 0);
  if(n == 0) n = 1;
  else n = n * 10;
/* printf("%d %d\n", a, n); */
  t = 0;
  do {
    a = data / n;
    printf("%d\n", a);
    data %= n;
    n /= 10;
    t += a;
  } while(n);
  printf("total=%d\n", t);
}
130デフォルトの名無しさん:2011/05/22(日) 23:20:23.69
122さま、129さま
ありがとうございます。

ヒントもくれず、毎回出される出来そうもない課題に、
暗い毎日を送っております。
ひと時の安らぎをいただきました。
今夜は眠れそうです。



131デフォルトの名無しさん:2011/05/22(日) 23:23:09.50
>>130
自分がどこまでわかっていて、どうすれば○○ができるのかがわからない、と質問すれば教えてくれるはずだよ。
132デフォルトの名無しさん:2011/05/22(日) 23:30:31.25
>配列、ポインタ、関数、使用禁止
>>120の言うようにこのままだとアレなので
io以外の標準関数を使用しない縛りで
#include <stdio.h>
int main(void){int i,num,digit,power,val,sum=0;char str[11];scanf("%d",&num);digit=sprintf(str,"%d",num)-1;for(;digit>=0;digit--){for(power=1,i=0;i<digit;++i){power*=10;}printf("%d\n",val=num/power);sum+=val;num%=power;}printf("%d\n",sum);return 0;}
133デフォルトの名無しさん:2011/05/23(月) 01:16:09.58
[1] 授業単元: コンパイラ
[2] 問題文:
http://uploader.sakura.ne.jp/src/up41234.jpg
http://uploader.sakura.ne.jp/src/up41235.jpg
http://uploader.sakura.ne.jp/src/up41236.jpg
http://uploader.sakura.ne.jp/src/up41237.jpg
http://uploader.sakura.ne.jp/src/up41238.jpg
http://uploader.sakura.ne.jp/src/up41239.jpg
http://uploader.sakura.ne.jp/src/up41240.jpg
http://uploader.sakura.ne.jp/src/up41241.jpg
http://uploader.sakura.ne.jp/src/up41242.jpg
http://uploader.sakura.ne.jp/src/up41243.jpg
http://uploader.sakura.ne.jp/src/up41244.jpg
上の図の構文図を(上から順に図1〜図11)を拡張BNFで記述せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: 講義で使っている言語はC及びKPLです。
[4] 期限: 5月23日16時まで
コンパイラが得意な方お願いします。
134デフォルトの名無しさん:2011/05/23(月) 01:30:38.71
135デフォルトの名無しさん:2011/05/23(月) 01:37:43.63
>>125
単純な1行入力にも、mygettext だっけ?何がメリットなのかよくわからない複雑怪奇なしかもバッファはたったの3バイトの例のあれを使わないと。
136デフォルトの名無しさん:2011/05/23(月) 01:53:15.52
int main(void)な時点で弟子はねーだろw
137デフォルトの名無しさん:2011/05/23(月) 01:53:45.34
138デフォルトの名無しさん:2011/05/23(月) 01:55:38.67
>>137
パスは9317です
139デフォルトの名無しさん:2011/05/23(月) 03:01:41.55
求められてるのは拡張BNFでの記述のみなんだろ?
どうみてもC言語の宿題じゃない件
140106:2011/05/23(月) 03:36:09.73
貼ったURLはあくまで参考です。その中にあるaprioriのアルゴリズムの部分だけ
実装していただきたいと思いました。ちなみに研究室の課題です。
141デフォルトの名無しさん:2011/05/23(月) 03:38:12.01
>>133
スレ違い。
142デフォルトの名無しさん:2011/05/23(月) 03:39:58.03
>>140
研究室か。
そろそろ年貢の納め時だよー
143デフォルトの名無しさん:2011/05/23(月) 03:41:27.82
課題提出後このスレ一度チェックしてあげてくださいってメールしておいたし
144デフォルトの名無しさん:2011/05/23(月) 08:15:29.71
この時期に研究室で出た宿題を丸投げするようじゃもう詰んでるから、
私文受けなおすか、頭つかわない肉体派に転向しなよ。
145デフォルトの名無しさん:2011/05/23(月) 10:06:48.52
知恵袋で丸投げしてみれば?
146デフォルトの名無しさん:2011/05/23(月) 12:19:41.07
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
  for文を用いて、下の実行結果のように、定価(price)を入力すると
  1〜9割引の価格(kakaku)を表示するプログラムを作成せよ

  定価の入力:500
1割引=450
2割引=400
3割引=350
4割引=300
5割引=250
6割引=200
7割引=150
8割引=100
9割引=50

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2011/5/31

宜しくお願いします
147デフォルトの名無しさん:2011/05/23(月) 12:21:35.43
printf("%d割引=%d\n", i, teika * i * 10 / 100);
148デフォルトの名無しさん:2011/05/23(月) 12:23:16.46
orz
printf("%d割引=%d\n", i, teika * (10 - i) / 10);
149デフォルトの名無しさん:2011/05/23(月) 12:40:29.13
>>146
#include <iostream>
int main()
{
using namespace std;
cout << "  定価の入力";
int teika;
cin >> teika;
for(int i = 1; i < 10; ++i)
cout << i << "割引=" << teika * (10 - i) / 10 << endl;
}
150デフォルトの名無しさん:2011/05/23(月) 12:52:08.63
price kakakuを使用していない
using namespaceは常に悪
151デフォルトの名無しさん:2011/05/23(月) 12:53:56.35
>>149
ありがとうございました
152デフォルトの名無しさん:2011/05/23(月) 12:56:18.24
>>151
いいのかよw

>>150
常に悪は言い過ぎ。
汚染させまくる可能性が高い初心者の「オマジナイ」としてなら無くはない程度。
153デフォルトの名無しさん:2011/05/23(月) 13:05:28.59
using namespaceをそこまでぼこぼこに叩く奴を初めて見た
using namespace stdならよく見かけるが
154デフォルトの名無しさん:2011/05/23(月) 22:44:28.40
129 :122:2011/05/22(日) 23:02:35.91
#include <stdio.h>
int main(void){
/*          2147483648 */
int data, a, t, n = 1000000000;

n = 1000000000はの意味が分かりません。1000000000をnに入れて初期化ですか。
ご指導をお願い申し上げます。
155デフォルトの名無しさん:2011/05/23(月) 22:49:17.44
>>154
考えるな、感じろ!
156デフォルトの名無しさん:2011/05/23(月) 23:13:32.92
>>154
1000000000をnに入れて初期化です
157デフォルトの名無しさん:2011/05/24(火) 01:56:37.70
>>154
一番上の桁から取りたいんだとおもうよ
158デフォルトの名無しさん:2011/05/24(火) 01:58:33.76
まあ129がわからなかったら132でいいんじゃね?
159デフォルトの名無しさん:2011/05/24(火) 02:25:29.76
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク):
英語のテキストデータを入力とし、ファイル内に現れる「単語」(文字列)と
そのカウントをプリントするプログラムを作成せよ。同時に現れた「単語」の総数を
プリントすること。なお、ここで「単語」とはデリミタで区切られるアルファベットだけ
からなる文字列と定義する。「単語」は各データファイルにつき、総単語数は高々2,000単語
しか現れないと仮定して良い。配列でプログラムする場合、1単語長の最大値を適当に固定して良い。

ヒント
デリミタとは、この課題では以下のASCII文字と定義する。
(a) 制御文字 (iscntrl(c)が1となる文字c)
(b) 数字 (isdigit(c)が1となる文字c)
(c) アルファベット以外の印刷可能文字 (isprint(c)が1で、isalpha(c)が0となる文字c)
[3] 環境
 [3.1] OS:Mac OS X
 [3.2] コンパイラ名とバージョン:gcc 4.1
 [3.3] 言語:C
[4] 期限:5月25日
[5] その他の制限:単語を保持するために、
1.ポインタを使う場合 と
2.ポインタを使わずに配列で表す場合
とをお願いします。
160デフォルトの名無しさん:2011/05/24(火) 09:50:53.88
mac
161デフォルトの名無しさん:2011/05/24(火) 13:23:47.34
当然、大文字小文字は区別するのかな?
162デフォルトの名無しさん:2011/05/24(火) 14:03:00.56
区別しないのは面倒じゃね?
163デフォルトの名無しさん:2011/05/24(火) 14:25:11.20
デミリタはASCIIだけどアルファベットの文字コードについては規定しないんだよね?
164デフォルトの名無しさん:2011/05/24(火) 15:44:30.26
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
int型の二つの変数があるとする。
この二つの変数の値の和を一方の変数に代入する関数
void add(int *address1, int * address2)を定義し、
その動作を確認するプログラムkadai6-1.cを作りなさい。
ただし、答えはaddress1で指定された変数に代入されるものとする。
scanf("%d %d", &a, &b);
答えは以下で出力されるものとする。
printf("a = %d, b = %d\n", a, b);
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2011年5月27日])
165デフォルトの名無しさん:2011/05/24(火) 15:45:47.00
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力した長さ10の文字列の任意の2つの文字を
入れ換える関数void swap(char *address1, char *address2)を定義し、
その動作を確認するkadai6-2.cを作りなさい。
この関数は引数で与えられたアドレスのメモリにアクセスして中身を
入れ換える作業を行う。
ただし、文字列と入れ換える2つの文字の位置は次のように入力されるものとする。
scanf("%s %d %d", str, &position1, &position2);//それぞれ文字列、位置1, 位置2を表している。
答えは以下で出力されるものとする。
printf("answer = %s\n", str);
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2011年5月27日])
166122:2011/05/24(火) 15:46:42.77
#include <stdio.h>
int main(void){
  int num, val, i, digit, power=1, sum=0;

  putchar('>');
  scanf("%d", &num);
  for(digit=0; digit<10; digit++){
    if(num/power/10 == 0) break;
    power *= 10;
  }
/*  printf("%d %d\n", digit, power); */
  for(i=0; i <= digit; i++){
    val = num / power;
    printf("%d\n", val);
    sum += val;
    num %= power;
    power /= 10;
  }
  printf("total=%d\n", sum);
}
167デフォルトの名無しさん:2011/05/24(火) 16:04:10.91
>>164
#include <stdio.h>

void add(int *address1, int *address2) { *address1 += *address2; }

int main(void)
{
int a, b;
scanf("%d %d", &a, &b);
add(&a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}

>>165
#include <stdio.h>

void swap(char *address1, char *address2) {
char temp = *address1;
*address1 = *address2;
*address2 = temp;
}

int main(void)
{
int position1, position2;
char str[11];
scanf("%s %d %d", str, &position1, &position2);
swap(str + position1, str + position2);
printf("answer = %s\n", str);
return 0;
}
168デフォルトの名無しさん:2011/05/24(火) 16:12:00.85
>>159
http://pastebin.com/U1R5pxgx

-DUSE_POINTERでコンパイルすると
1.ポインタを使う場合
指定なしで
2.ポインタを使わずに配列で表す場合
169デフォルトの名無しさん:2011/05/24(火) 16:21:28.15
>>167
すみません。やってもらってなんなんですが
>>165のプログラムの実行結果がちがうのですが・・・
170デフォルトの名無しさん:2011/05/24(火) 16:54:06.28
>>169
どこがどう違うのか書けよksg
171159:2011/05/24(火) 18:09:49.22
>>161
区別して大丈夫です

>>168
ありがとうございます。
申し訳ないのですが、ポインタを使う場合と使わない場合で、
別のソースファイルにしていただけますでしょうか?

できれば説明のコメントも付けて頂けるとありがたいです。
172デフォルトの名無しさん:2011/05/24(火) 18:42:37.58
>>171
条件の後出しはお断りだ。
173デフォルトの名無しさん:2011/05/24(火) 18:48:15.25
[1]プログラミング演習
[2] 問題文:RPGに登場するキャラをイメージした
テストプログラムを作成する。
下記メンバを含む構造体を定義(1)キャラの名前
(2)HP(3)関数ポインタ
174デフォルトの名無しさん:2011/05/24(火) 18:51:55.93
<<174
上記構造体を4体分配列として宣言。
下記の仕様でプログラムを作成する。
@1回のループで、それぞれのキャラが1回アクションを行う。
*ループは、一回ごとにキー入力で行う。
A各キャラが行うアクションは次の通り。
ノーマル状態・・・HPなどに変化なし。現在のHPを表示。
175デフォルトの名無しさん:2011/05/24(火) 18:55:32.06
>>173>>174
毒状態・一回実行するごとにHP-5、HPを表示する。
回復状態・・HPが+20される。HPを表示する。
死亡状態・”xxxxxは死んでいます・・・”を表示
各状態の遷移条件は次の通り。
176デフォルトの名無しさん:2011/05/24(火) 18:59:21.76
>>173>>174>>175
・ノーマル状態からは10%で毒になる。
・毒状態からは10%でノーマルになり、
10%で回復状態になる。
・回復状態からは強制的に通常状態になる。
177デフォルトの名無しさん:2011/05/24(火) 19:05:08.89
>>173>>174>>175>>176
・死亡状態からは1%でノーマルになりHPは1になる。
・死亡状態からは5%でゾンビ状態となる
・ノーマル状態からは2%でヘブン状態になる。
178デフォルトの名無しさん:2011/05/24(火) 19:06:30.41
>>176
・HPが0以下になれば死亡になりそれ以降の遷移はない。
[3.1] OS:Windows7[3.3] 言語:C
[4] 期限:2011年5月26日12:00まででお願いします。
179デフォルトの名無しさん:2011/05/24(火) 19:09:31.22
>>173見にくくてすいません。どうかよろしくお願いします
180デフォルトの名無しさん:2011/05/24(火) 19:31:35.65
(3)関数ポインタの用途が不明
181デフォルトの名無しさん:2011/05/24(火) 19:39:36.09
ヘヴン、ゾンビの定義が不明
182デフォルトの名無しさん:2011/05/24(火) 19:40:44.94
>・死亡状態からは1%でノーマルになりHPは1になる。
>・死亡状態からは5%でゾンビ状態となる

>・HPが0以下になれば死亡になりそれ以降の遷移はない。

やりとほこ
183デフォルトの名無しさん:2011/05/24(火) 19:42:43.93
やりってw
184デフォルトの名無しさん:2011/05/24(火) 19:44:09.80
ttp://pastebin.com/snGKGQUS
とりあえずこんな感じでどうかな

>>177
は明らかに偽物だろwwwww
185デフォルトの名無しさん:2011/05/24(火) 19:49:23.46
偽者が出るほど>>173は人気なのか
嫉妬!
186デフォルトの名無しさん:2011/05/24(火) 20:07:29.18
173です。お騒がせしてすいません。
>>184
ありがとうございました!
187デフォルトの名無しさん:2011/05/24(火) 21:01:05.93
・HPが0になっても改造コマンド「リジェネ改」を掛けてあれば一度倒れても
むくっと起き上がる
188デフォルトの名無しさん:2011/05/25(水) 00:08:50.38
>>169
問題文ぐらい読めるようになっとこうぜ

> 答えは以下で出力されるものとする。
> printf("answer = %s\n", str);
これは、出力が「printf("answer = %s\n", str);」という文字列なんじゃなくて、
printf("answer = %s\n", str);という記述を用いて答えを出力しなさいよって意味だよ。
189デフォルトの名無しさん:2011/05/25(水) 00:31:00.51
>>188
エスパーするとそういうことじゃなくて、
何文字目を入れ替えるって入力したいのに何バイト目を入れ替える処理
になってるから1文字分入れ替え位置がずれてるってことじゃね?

間違ってたらすまん。
190デフォルトの名無しさん:2011/05/25(水) 01:20:07.29
>>167は1文字ずれてるから末尾の文字を指定しようとすると、ヌル文字を入れ替えてしまっておかしくなるな
まぁ1行だけ修正すれば動く
swap(str + position1, str + position2);

swap(str + position1 - 1, str + position2 - 1);
191デフォルトの名無しさん:2011/05/25(水) 03:08:05.19
[1]暇つぶし
[2]ピクロスの問題が与えられたとき、解が一意に決まるかどうかを判定するプログラムを作成せよ
問題は標準入力からカンマ区切りで与えられ、縦横ともに30を最大のサイズとする(正方形とは限らない)

入力例
2
1,1
4
1,1
1,1
4
1,1
1,1
4

出力例
問題として成立しています
□■■□
■□□■
■■■■
■□□■
■□□■

[3]環境
 [3.1] OS: 指定無し
 [3.2] コンパイラ名とバージョン: 指定無し
 [3.3] 言語: どちらでも可
[4] 期限: 無期限
[5] その他の制限: できる限り処理が早くなるように
192デフォルトの名無しさん:2011/05/25(水) 03:15:43.37
>>191
何行目までが横なのか不明なフォーマットだから無理じゃね?
193デフォルトの名無しさん:2011/05/25(水) 03:20:00.79
>>192
確かに境界部分に0が並ぶとマズいね
194デフォルトの名無しさん:2011/05/25(水) 05:01:25.44
>>189
ああ、納得した。てっきり。
195デフォルトの名無しさん:2011/05/25(水) 05:04:08.54
>>192
数えたらわかると思う
196デフォルトの名無しさん:2011/05/25(水) 05:06:05.23
>>193
その時は0が並んだところだけ、複数パターン検査で
197デフォルトの名無しさん:2011/05/25(水) 18:00:44.36
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://codepad.org/t6Un18Xw
上記のファイルを元に40年間の年平均気温の平均気温より平均気温が低い年を
ファイルkadai05.datへ出力するプログラムkadai05.c を作成せよ。

また同様に年平均気温の低い順番に並び替えて、
ファイルkadai06.datへ出力するプログラムkadai06.c を作成せよ

元のファイルで使っているtokyo.datは↓です
http://www.dotup.org/uploda/www.dotup.org1668350.dat
[3] 環境
 [3.1] OS: windows
 [3.2] cigwin gcc -o
 [3.3] 言語: C
[4] 期限:出来れば本日中
[5] その他の制限:
ファイルの内容が大体の習った内容です
198デフォルトの名無しさん:2011/05/25(水) 18:07:39.62
日本語でおk
199デフォルトの名無しさん:2011/05/25(水) 18:19:28.92
>>197
追記

tokyo.dat は1970年から2009年までの気象情報のデータである。
各行の情報は左から、
年、平均気温、
最高気温の年平均、最高の最高気温、最高の最高気温を記録した日、
最低の最高気温、最低の最高気温を記録した日、
最低気温の年平均、最低の最低気温、最低の最低気温を記録した日、
最高の最低気温、最高の最低気温を記録した日
である。
200デフォルトの名無しさん:2011/05/25(水) 18:32:12.19
>>197
元のコードがひどいんだけど
201デフォルトの名無しさん:2011/05/25(水) 18:47:16.12
>>200
元が酷いのは仕様です…
同じ程度のレベルなら書き直していただいて大丈夫です
202デフォルトの名無しさん:2011/05/25(水) 19:02:13.44
構造体や関数は使っても良い?
203デフォルトの名無しさん:2011/05/25(水) 19:16:12.11
>>202
多分どっちも習っていないと思うので使わないでいただけると
理解がしやすくて助かります
204デフォルトの名無しさん:2011/05/25(水) 20:12:28.47
205デフォルトの名無しさん:2011/05/25(水) 20:14:16.51
>>203
元のどのあたりが酷いと思う?
206デフォルトの名無しさん:2011/05/25(水) 20:21:35.36
>>204
ありがとうございます

>>205
見難いなという事しか…
207デフォルトの名無しさん:2011/05/25(水) 20:36:12.21
すみません、もう1問お願いします

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
寒暖の差が大きい順番に並び替えて、ファイルkadai07.datへ出力するプログラムkadai07.c を作成せよ。
寒暖の差: 最高の最高気温? 最低の最低気温
[3] 環境
 [3.1] OS: windows
 [3.2] cigwin gcc -o
 [3.3] 言語: C
[4] 期限:出来れば本日中
[5] その他の制限:
208デフォルトの名無しさん:2011/05/25(水) 20:52:46.94
>>207
出来たけど、>>205に答えたら公開する
209デフォルトの名無しさん:2011/05/25(水) 21:07:45.72
>>208
酷いといわれたから、よくわからないまま同調して酷いといってしまったんだろうけど、
しいていうなら見難いらしい。

別に見にくいとはまるで思わないんだけど「もしかして:インデント」
210デフォルトの名無しさん:2011/05/25(水) 21:10:39.86
インデントも修正すべきだけども、

char型へdouble型代入しようとしてる所と、
scanfでポインタのポインタ渡してる所あるでしょ、
そこが期待通りの動作になってない。
211デフォルトの名無しさん:2011/05/25(水) 21:31:01.84
>>207
解説しちゃったんで公開するね
ttp://ideone.com/LFRCr
212デフォルトの名無しさん:2011/05/25(水) 21:53:44.31
ポインタのポインタ渡してるとこなんてある?
213デフォルトの名無しさん:2011/05/25(水) 21:58:25.56
文字列んとこ
214デフォルトの名無しさん:2011/05/25(水) 22:00:17.62
meanと比較すべきところをavgと比較してる、が抜けてる
215213:2011/05/25(水) 22:03:51.36
(続き)
のことを言ってるんだと思う
ポインタのポインタっていうか型が間違ってるのが適切な気がするが
216デフォルトの名無しさん:2011/05/25(水) 23:27:04.03
質問なんですが、時間オーダーと計算量オーダーってどう違うんでしょうか?
うちの大学の教授が違うように書いているんですが、時間オーダーってググッても出ません。
217デフォルトの名無しさん:2011/05/25(水) 23:34:04.00
>>216
同じ O(n) のアルゴリズムがあるとして
同じデータに対して片方は1秒、もう片方は100秒かかるとかそういうんじゃね?
218デフォルトの名無しさん:2011/05/25(水) 23:38:01.75
オーダーなんだからどっちも同じになるはずなんだがなぁ
むしろそうでなきゃ指標として何の意味が・・・・・・・
219デフォルトの名無しさん:2011/05/25(水) 23:41:30.64
>>216
時間オーダーと空間オーダー(必要メモリ量)、は確かに違うと思いますが、
時間オーダーと計算量オーダーは一緒のような気が。

いちど先生に聞いてみればいいと思います。
例外はあるでしょうが、学生の質問というものは先生にとってはウェルカムだと思います。
自分のしゃべっていることが相手に一部でも届いていることを確認できる機会ですから。
220デフォルトの名無しさん:2011/05/25(水) 23:46:28.91
全然わからなくて困ってます。よろしくお願いします。
[1] 授業単元:実用プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力された2つの整数と演算番号(1〜4)に対して、ポインタを使って以下の処理をするプログラムを作りなさい。
ただし、演算番号として1〜4以外の値が入力された場合は、"該当する番号がありません.確認して下さい"
と表示してプログラムを終了させることとする。
(↓からプログラム実行例。_が後ろの数字に付いてる所はキーボードからの入力を表す)

2つの実数a,bを入力してください.
a=3_
b=5_
計算の種類を選んでください.
1:a+b
2:a-b
3:a*b
4:a/b
==>4_
a/b=0.600000
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008 Express edition
 [3.3] 言語: C++
[4] 期限: 2011年 5月27日(金) 13:00 まで
[5] その他の制限:
入出力関数を用いて解答すること。ポインタを使うこと。
printfとscanfでお願いします。
221デフォルトの名無しさん:2011/05/25(水) 23:47:56.87
>>220
何がわからないの?
とりあえず出来てる分のコードを書け
222デフォルトの名無しさん:2011/05/25(水) 23:48:17.40
[1] 授業単元:実用プログラミング
[2] 問題文(含コード&リンク):
配列とポインタを使って以下の2つの行列AとBの足し算を行い、
結果(行列C)を表示させるプログラムを作りなさい。

[11] [5]
[22] [4]
A=[33], B=[3] C=A+B
[44] [2]
[55] [1]

(下は表示例)

c[5]={16, 26, 36, 46, 56}

[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008 Express edition
 [3.3] 言語: C++
[4] 期限: 2011年 5月27日(金) 13:00 まで
[5] その他の制限:
入出力関数を用いて解答すること。
配列とポインタを使用する事。
223デフォルトの名無しさん:2011/05/25(水) 23:48:55.58
[1] 授業単元:実用プログラミング
[2] 問題文(含コード&リンク):
配列とポインタを使って以下の2つの行列AとBの足し算を行い、
結果(行列C)を表示させるプログラムを作りなさい。

[11] [5]
[22] [4]
A=[33], B=[3] C=A+B
[44] [2]
[55] [1]

(下は表示例)

c[5]={16, 26, 36, 46, 56}

[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008 Express edition
 [3.3] 言語: C++
[4] 期限: 2011年 5月27日(金) 13:00 まで
[5] その他の制限:
入出力関数を用いて解答すること。
配列とポインタを使用する事。
224デフォルトの名無しさん:2011/05/26(木) 00:06:27.98
>>221
出来たのはここまでです。
これ以上どうやれば分からないです(;ω;)

#include <stdio.h>

int main(void)
{
int a, b, c;
printf("2つの実数a,bを入力して下さい.\n");
printf("a=%d");
scanf("%d", &a);
printf("b=%d");
scanf("%d", &b);

printf("計算の種類を選んでください.\n");
printf("1:a+b\n");
printf("1:a-b\n");
printf("1:a*b\n");
printf("1:a/b\n");
printf(" ==>%d");
scanf("%d", &c);
}

225デフォルトの名無しさん:2011/05/26(木) 00:22:42.44
>>224
ここまでは出来ました。これから先はどうしたらいいでしょうか。
#include <stdio.h>
int main(void)
{
double a, b;
int c;
printf("2つの実数a,bを入力して下さい.\n");
printf("a=");
scanf("%lf", &a);
printf("b=");
scanf("%lf", &b);

printf("計算の種類を選んでください.\n");
printf("1:a+b\n");
printf("2:a-b\n");
printf("3:a*b\n");
printf("4:a/b\n");
printf(" ==>");
scanf("%d", &c);

switch(c) {
case 1:
printf("a+b=%f\n", a + b); break;
case 2:
printf("a-b=%f\n", a - b); break;
case 3:
printf("a*b=%f\n", a * b); break;
case 4:
printf("a/b=%f\n", a / b); break;
}
}
226デフォルトの名無しさん:2011/05/26(木) 00:46:51.28
>>225
該当する番号がない場合を
switchに追加すれば完成だろう
defaultを使うのが楽
227デフォルトの名無しさん:2011/05/26(木) 00:54:23.43
>>226
加えて結果を表示するときにa(演算子)bじゃなくて入力した数値を出せばいいかもね
228デフォルトの名無しさん:2011/05/26(木) 00:56:13.27
>>227
問題文と違っちゃわないかそれ
229デフォルトの名無しさん:2011/05/26(木) 01:18:50.92
>>228
マジだ。。。スマン
230デフォルトの名無しさん:2011/05/26(木) 01:19:19.36
ポインタ使って演算ってのは変なこと考えなければ、関数化しろってことだと思うよ
231デフォルトの名無しさん:2011/05/26(木) 01:25:14.61
scanfで使ってるからいいんじゃねーの?
232デフォルトの名無しさん:2011/05/26(木) 01:26:34.04
てゆーか>>225までできてこれ以上なにを求めてるんだ?
233デフォルトの名無しさん:2011/05/26(木) 01:28:13.99
>>231
入出力の後の、四則演算部分でポインタを使えと
指定してあるようにも読める
234デフォルトの名無しさん:2011/05/26(木) 01:28:43.14
ヒント
224と225は別人
235デフォルトの名無しさん:2011/05/26(木) 04:59:08.80
てへぺろ☆(・ω<)
236デフォルトの名無しさん:2011/05/26(木) 06:24:51.86
[1]C言語初級課題
[2]次のコードは、キーボードから0から9までの4つの数を
受け取って小さい順から書き出すプログラムの未完成版である。
コードを完成させなさい。fgetsでキーボードから文字列を受け取り、
それをatoi関数で整数に変換し、0から9までの範囲にあるか確認し、
範囲にない場合は再入力を促し再入力させること。

#include <stdio.h>
#inckude <stdlib.h>
int main(void){
char s[1024];//fgets関数に与える文字列バッファ
char *t;//fgets戻り値格納用
int n;//atoi関数の戻り値格納用
{
//この部分にコードを追加してコードを完成させてください。
return(0);
}
[3] Windows 7/Microsoft SDK/C言語
[4]5/31まで
[5]簡単な課題だそうですが、手こずってます。どうかよろしくお願いします。
237デフォルトの名無しさん:2011/05/26(木) 06:38:26.66
>>236
atoiで変換してから判定しろって書かれてるようだからそうしたけど、それだと妙な入力されると0だと判定しちゃうけどいいんだろうかってのと
t結局使ってない

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

int main(void){
char s[1024];//fgets関数に与える文字列バッファ
char *t;//fgets戻り値格納用
int n;//atoi関数の戻り値格納用
//この部分にコードを追加してコードを完成させてください。
do {
t = fgets(s, 1024, stdin);
n = atoi(s);
} while(!(0 <= n && n <= 9) && printf("[0, 9] に無いのでもう一回入力してください\n"));
printf("[0, 9] の値が入力されました\n");
return(0);
}
238236:2011/05/26(木) 07:00:32.77
>>237
迅速な回答ありがとうございます。
とりあえずコピペして動かしてみます。
実行結果も提出しなければならないらしいので...
ありがとうございました。
239デフォルトの名無しさん:2011/05/26(木) 09:01:46.54
4つの数字が入力されないし、小さい順にも出力されないんじゃね?
240デフォルトの名無しさん:2011/05/26(木) 09:02:49.72
ほんとに問題文読んだのかってレベルだな
241236:2011/05/26(木) 11:18:26.99
動かさせていただきました。
とりあえず動きましたが、やはり
問題文の意図どおりじゃないのかも
しれません。出来ればもう一度お願い
したいのですが...
242デフォルトの名無しさん:2011/05/26(木) 11:32:06.27
[1] 授業単元: Cプログラミング1
[2] 問題文: 与えられた文字数分だけ文字を1文字ずつ順に表示する print 関数を作成せよ。
引数として文字列配列 string と整数 n を用いること。
ここで、 string は文字列型ポインタ配列の先頭アドレスを。 n は表示する文字数を意味する。

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語: C
[4] 期限: 5月31日09:00まで
[5] その他の制限: ありません。
243デフォルトの名無しさん:2011/05/26(木) 12:21:16.37
  a
244デフォルトの名無しさん:2011/05/26(木) 12:22:10.71
>>243はスペース試し、ゴメン

#include <stdio.h>

void print(const char *string, int n) {
  int i;
  for (i = 0; i < n; i++) {
    putchar(string[i]);
  }
}

int main(void) {
  print("Hello World", 5);
  return 0;
}
245デフォルトの名無しさん:2011/05/26(木) 12:24:51.22
void print(const char *string, int n) {
printf("%.*s", n, string);
}
246デフォルトの名無しさん:2011/05/26(木) 12:34:33.24
>>245
こんなの出来たんだ、知らんかったw
247デフォルトの名無しさん:2011/05/26(木) 12:53:24.43
>>244
早い対応ありがとうございます。
248デフォルトの名無しさん:2011/05/26(木) 14:40:46.99
[1] 授業単元:プログラミング2
[2] 問題文(含コード&リンク):VC++で3つのメモリマップドファイルを作成しそれぞれに1,2,3の値を入れ表示するプログラムを作りなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++2008
 [3.3] 言語: c++
[4] 期限: なるべく早めに
[5] その他の制限:

お願いします
249872 :2011/05/26(木) 15:31:45.73
>>248
winapiつかっていいの?
250249 :2011/05/26(木) 15:32:08.41
名前ミス
251デフォルトの名無しさん:2011/05/26(木) 16:35:23.17
>>248
http://ideone.com/wo0du

こんなんでいいの?
252デフォルトの名無しさん:2011/05/26(木) 17:33:24.00
メモリマップドファイルを読むプログラムは別にした方がいいですかね?
まあsub()の内容を別プログラムにしてsystem()で呼び出すだけだけど
あと継承をONにしとかないとだめだったけな

SECURITY_ATTRIBUTESをいじる

別にHANDLEを継承しなくても名前でオープンするんだから継承は不要だと思うけど
253デフォルトの名無しさん:2011/05/26(木) 17:39:55.47
あーあと子プロセスではmutexを設定した方がいいな
254デフォルトの名無しさん:2011/05/26(木) 18:16:42.67
>>225
ありがとうございます
ポインタを使うので*ptrとchar*に変える?でしょうか・・・
続きを分かる方居れば、教えて欲しいです。
255デフォルトの名無しさん:2011/05/26(木) 18:23:35.61
>>254
>>230であってるの?
256デフォルトの名無しさん:2011/05/26(木) 18:31:27.22
>>254
課題に現れる「ポインタ」があいまいなんだよ。
計算結果をポインタ経由で返すのか、引数をポインタで渡すのか、はたまた演算関数を
ポインタで呼び出すのか。
どれもポインタを使用する必然性が無いから、授業を受けていない部外者には選択できない。

結果をポインタ経由で返す
void calc(int c, double a, double b, double *ret)

引数をポインタで渡す:
double calc(int c, double *a, double *b)

関数ポインタ
double (*add)(double a, double b)
double (*sub)(double a, double b)
257デフォルトの名無しさん:2011/05/26(木) 18:35:55.64
>>255
教科書には、

変数は変数名とデータ型の情報をもっていて、メモリの任意のアドレスに配置されている。
これまでのプログラムでは変数名を指定して、データを代入したり、参照したりした。
ポインタは指し示すの意味が示すように、ある変数を指し示す変数でポインタ変数という。
ポインタ変数には指し示したい変数のアドレスを格納する。
ポインタ変数を使用する場合、変数と同様に宣言が必要である。
その場合、ポインタ変数は変数名の頭に[*]を付け、指し示す変数と同じデータ型で宣言する。
また、ポインタ変数の名前の付け方は変数の場合と同様である。

と書いてあります。
これは関数化するという事ですか?
258デフォルトの名無しさん:2011/05/26(木) 18:50:49.92
>>222 >>223
については触れないことにしているのかな。
259デフォルトの名無しさん:2011/05/26(木) 20:03:09.55
>>249
winapi使って大丈夫です

>>252
できれば別がいいです
260デフォルトの名無しさん:2011/05/26(木) 20:15:18.85
[1] 授業単元:繰り返し処理

[2] 問題文
2つの整数(num1、num2)を入力させる。
このとき、num1<num2であるように入力する。
このときnum1以上num2以下の偶数を全て表示させるプログラムを作成して下さい

[3] 環境
 [3.1] Windows7
 [3.2] Microsoft Visual Studio 2008
 [3.3] 言語: C

[4] 期限:出来れば今日で

お願いします!
261デフォルトの名無しさん:2011/05/26(木) 20:31:08.46
>>260
#include <stdio.h>
int main(int ac, char **av)
{
int num1, num2;
do {
num1 = 0; num2 = -1;
printf("2つの整数(num1 < num2)を空白で区切って入力してください。 ");
scanf(" %d %d", &num1, &num2);
} while(num1 >= num2);
num1 = (num1 + 1) / 2 * 2;
for (; num1 <= num2; num1 += 2)
printf("%d\n", num1);
}
262デフォルトの名無しさん:2011/05/26(木) 20:33:51.79
>>260
>>261は負の場合にバグってた。
#include <stdio.h>
int main(int ac, char **av)
{
int num1, num2;
do {
num1 = 0; num2 = -1;
printf("2つの整数(num1 < num2)を空白で区切って入力してください。 ");
scanf(" %d %d", &num1, &num2);
} while(num1 >= num2);
num1 = (num1 + (num1 < 0 ? -1 : 1)) / 2 * 2;
for (; num1 <= num2; num1 += 2)
printf("%d\n", num1);
}
263デフォルトの名無しさん:2011/05/26(木) 20:34:26.11
>>260

#include <stdio.h>

int main()
{
int num1, num2;

printf("num1 = "); scanf("%d", &num1);
printf("num2 = "); scanf(" %d", &num2);

for (num1; num1 <= num2; num1++) {
if (num1 % 2 == 0) {
printf("%d\n", num1);
}
}
return 0;
}

これでいいの?
264デフォルトの名無しさん:2011/05/26(木) 20:34:48.55
>>261

ありがとうございます!
265デフォルトの名無しさん:2011/05/26(木) 20:41:38.39
俺のほうがスマートだな
266デフォルトの名無しさん:2011/05/26(木) 20:45:38.35
>>265 お前>>263?
> このとき、num1<num2であるように入力する。
3つしかないそれも極めて容易な要求仕様を全部実装できないなんて…
267デフォルトの名無しさん:2011/05/26(木) 20:54:33.58
>このとき、num1<num2であるように入力する。
この条件に合わなかったときの要求は書いてない
268デフォルトの名無しさん:2011/05/26(木) 20:55:27.69
for(num1 = num1 % 2 ? num1 + 1 : num1; num1 <= num2; num1 += 2)
269デフォルトの名無しさん:2011/05/26(木) 20:56:24.59
>>262
お前の頭がバグってるw
270デフォルトの名無しさん:2011/05/26(木) 21:08:15.73
>>266
入力させるじゃなくて入力するだから>>263で十分
271デフォルトの名無しさん:2011/05/26(木) 21:17:58.31
すみませんがコレをもう1度お願いします・・・

[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
  for文を用いて、下の実行結果のように、定価(price)を入力すると
  1〜9割引の価格(kakaku)を表示するプログラムを作成せよ

  定価の入力:500
1割引=450
2割引=400
3割引=350
4割引=300
5割引=250
6割引=200
7割引=150
8割引=100
9割引=50

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2011/5/31

price kakakuを入れて作りたいです
272デフォルトの名無しさん:2011/05/26(木) 21:27:10.51
>>149のどこがダメなのか指摘ヨロ
273デフォルトの名無しさん:2011/05/26(木) 21:31:09.99
[1] 授業単元: Cプログラミング2
[2] 問題文: char型の2次元配列 city[3][15]を宣言し、キーボードから3つの文字列 ”Osaka”,”Kyoto”,”Kobe”を入力し、配列 city[][]に格納する。そして、ポインタを使って格納された文字列データを文字ごとに画面に表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語: C
[4] 期限: 6月2日09:00まで
[5] その他の制限: 問題文中にある「文字ごとに」というのは、1つずつ文字を出力することです。
274デフォルトの名無しさん:2011/05/26(木) 21:56:48.82
>>271
だから>>150書いたのになぁ
275デフォルトの名無しさん:2011/05/26(木) 21:57:29.29
276 ◆YXb4nS0g1I :2011/05/26(木) 22:11:17.43
[1] 授業単元:繰り返し処理
[2] 問題文:
五者択一の自作の問題文章を表示させ、整数入力を受けつけ、正解・不正解の判定を行う。
ただし、正解が入力されるまで、「不正解」と表示した後、同じ問題を正解となるまで繰り返し表示し、回答を入力させる。
問題が2問である上記のようなプログラムを作成しなさい。
277デフォルトの名無しさん:2011/05/26(木) 22:12:33.12
>>273
#include <stdio.h>
int main(void)
{
  int i,j;
  char city[3][15],*p;
  for (i=0; i<sizeof(city)/sizeof(city[0]); ++i)
  {
    scanf("%s", &city[i]);
  }
  p=city[0];
  for(i=0; i<sizeof(city)/sizeof(city[0]); ++i)
  {
    j=0;
    while(putchar(*(p+sizeof(city[0])*i+j++))!='\0')
    {}
    putchar('\n');
  }
  return 0;
}
278 ◆YXb4nS0g1I :2011/05/26(木) 22:16:45.27
>>276 の続き

[3] 環境
[3.1]OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio2008
[3.3] 言語: C
[4] 期限: 今日

279デフォルトの名無しさん:2011/05/26(木) 22:28:26.56
>>277
とても助かりました。ありがとうございます。
280デフォルトの名無しさん:2011/05/26(木) 22:45:17.28
>>259
うーんどうもmutexの使い方が間違っていると思うんだけど原因がわからない
2つめのDOS窓がmutexを解放する前に1つめのDOS窓が終了してしまいます

http://ideone.com/oEysx
http://ideone.com/6OGcs
281デフォルトの名無しさん:2011/05/26(木) 23:06:10.39
>>276
#include <stdio.h>
int main()
{
int a_num;
int answer1 = 1, answer2 = 2; // 質問1の答えと質問2の答えを決めている
while (1) {
printf("問題1\n"); printf("1.〇〇\n2.〇〇\n3.〇〇\n4.〇〇\n5.〇〇\n");
printf("答の番号を入力してください\n"); scanf("%d", &a_num);
if (a_num == answer1) {
printf("正解です!\n\n");
break;
} else {
printf("不正解です!\n\n");
continue;
}
}
while (1) {
printf("問題2\n"); printf("1.〇〇\n2.〇〇\n3.〇〇\n4.〇〇\n5.〇〇\n");
printf("答の番号を入力してください\n");
scanf("%d", &a_num);
if (a_num == answer2) {
printf("正解です!\n\n");
break;
} else {
printf("不正解です!\n\n");
continue;
}
}
return 0;
}
282デフォルトの名無しさん:2011/05/26(木) 23:10:03.19
>>159
ごめんなさい。1 だけ。
http://codepad.org/8QqUqc81
こういう問題は解答がつきにくいですね。
283デフォルトの名無しさん:2011/05/26(木) 23:31:12.60
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文:
http://ideone.com/O6a82
以下のプログラムは、宣言(int ai[3][4][5];)の代わりに必要なメモリ領域だけを
mallocにより確保し、その中を配列と同様に利用しているものである。
なおメモリ内での配列の要素の配置順序は宣言による場合と同じとする。
(1)下線部を埋めてプログラムを完成させよ。(解答は下線部のみで良い)
(2)こうした手法の利点と欠点を述べよ。(箇条書きで良い)
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] C言語
[4] 期限:05月27日12時まで

何卒よろしくお願いします。
284デフォルトの名無しさん:2011/05/26(木) 23:55:19.37
285デフォルトの名無しさん:2011/05/27(金) 00:39:41.77
>>283
迅速な返答有難う御座いました。とても助かりました。
286デフォルトの名無しさん:2011/05/27(金) 00:41:34.03
すみません。間違えました。
284様に感謝です。有難う御座いました。
287271:2011/05/27(金) 01:01:51.86
すみませんどうにもprice kakakuの文字を入れたくて
151は自分ではないのですが、驚いて出てくるタイミング失ってしまいました

なんかダメダメですね・・・スレ汚し失礼しましたorz
288デフォルトの名無しさん:2011/05/27(金) 01:06:49.51
そんなの>>149の変数名変えるだけだろ?
289デフォルトの名無しさん:2011/05/27(金) 03:12:04.87
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク):
 M*R次元の行列(mat1)とR*N次元の行列(mat2)の乗算を行いM*N次元の行列(mat3)を
 得る関数(matMul)を作成せよ。ただし、関数のプロトタイプにおいて行列を表す引数部分には、
 2つの行列のサイズを表す引数と、行列データそのものを表す引数(2次元配列)を含めること。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 5/29
[5] その他の制限:
任意の入力データファイルはmatDataとし、中身は以下の内容に習うこと。仮に、
mat1(M = 3, R = 2) = {{-1, 1}, {3, 0}, {-1, 2}}
mat2(R = 2, N = 3) = {{-1, 0, 3}, {1, -1, 1}}
の場合
[matData]
3 2 3
3 2
-1.0 1.0
3.0 0.0
-1.0 2.0
2 3
-1.0 0.0 3.0
1.0 -1.0 1.0

意味は、1行目の3 2 3は3*2と2*3行列を乗算するよ、という意味で、
2行目の3 2が3*2の行列で、そのあと3行が行列の中身、
続いて2 3は2*3行列で、そのあと2行がその中身を表します。
各数字の間は半角スペースがひとつ入っています。
※ポインタは使わないでください
※プログラムがどこで何をしているか分かりやすいように、できるだけコメント分を書いて頂けるとありがたいです
よろしくお願いします。
290デフォルトの名無しさん:2011/05/27(金) 03:22:25.49
>>289
補足
行列の乗算は、
C = AB ≡ C(i, j) = Σ(i=0, M-1)Σ(j=0, N-1)Σ(k=0, R-1)a(i,k)b(k,j)
の関係を利用した3重ループで作成すること。
また、配列の次元は適当な最大値で固定して良いです。(今回は最大で10行10列の行列を扱うということでお願いします。)
291デフォルトの名無しさん:2011/05/27(金) 06:28:14.06
282はQZ氏か?
292デフォルトの名無しさん:2011/05/27(金) 07:05:02.87
>>291
多分な。「回答が付きにくい」と勝手に決めつけてめし
最後が /* end */ で終わってるし間違いないだろう

時間がなくて放置しただけかもしれないのにさも自分が「皆難しくて解けない
だろうから俺様だけが解ける」とでも言わんばかりの思いきり上から目線
何様だと思っているのやら
一言多いんだよなこいつは
293デフォルトの名無しさん:2011/05/27(金) 07:21:37.38
あのまま提出すれば、まずろくなことにはならないクソコードだしな
294デフォルトの名無しさん:2011/05/27(金) 09:30:17.75
>>271
#include <iostream>
int main()
{
using namespace std;
cout << "  定価の入力";
int price;
cin >> price;
for(int i = 1; i < 10; ++i) {
int kakaku = price * (10 - i) / 10;
cout << i << "割引=" << kakaku << endl;
}
}
295デフォルトの名無しさん:2011/05/27(金) 10:16:00.13
>>289
動的二次元配列
ポインタ使うな、二次元配列を渡せってのをきっちり満たそうとするのが困難だなぁ
(配列の引数がポインタになる件は[]でいいってことにしても)

C99でわりと条件通りにやれそうだけどそれもどうなんだという気がするし
返り値がやっぱりどうにもならないし

どの条件を崩しちゃっていいのかがなんとも
296デフォルトの名無しさん:2011/05/27(金) 10:20:21.84
ごめん>>290見てませんでした
297デフォルトの名無しさん:2011/05/27(金) 10:23:09.07
>>290をちゃんと読めば、そんな疑問は出てこないはずだが
298289:2011/05/27(金) 10:24:26.13
>>295
ありがとうございます
>>290で補足していますが、配列は10*10
が最大と固定してしまって大丈夫です
299デフォルトの名無しさん:2011/05/27(金) 10:31:21.99
void matMul(double mat1[][10], mat2[][10], mat3[][10], int M, int R, int N)
{
int i, j, k;
for(i = 0; i < M; i++) {
for(j = 0; j < N; j++) {
mat3[i][j] = 0;
for(k = 0; k < R; k++) mat3[i][j] += mat1[i][k] * mat2[k][j];
} } }
300デフォルトの名無しさん:2011/05/27(金) 10:32:53.13
寝起きで頭がボーっとしてた
void matMul(double mat1[][10], double mat2[][10], double mat3[][10], int M, int R, int N)
だな
301289:2011/05/27(金) 10:42:20.78
>>299
main関数のファイルの入力部分もよろしいですか?
302デフォルトの名無しさん:2011/05/27(金) 10:57:14.78
303289:2011/05/27(金) 11:03:33.07
>>302
ありがとうございます
時間が出来たら確認してみます
304289:2011/05/27(金) 11:07:48.65
時間が出来なかったのでそのまま提出します
305289 ◆6OuEQ4XCO. :2011/05/27(金) 11:12:48.28
>>304←偽物です
306デフォルトの名無しさん:2011/05/27(金) 11:32:34.37
>>305
おい偽物だまれ
307デフォルトの名無しさん:2011/05/27(金) 13:02:13.39
QZの糞はまた飽きもせず遅い役立たずな自作二分木を使い回しているのか
いい加減にやめろ
そのうち誰かが代わりに作った物だという事がすぐにバレるようになるぞ
まあ出題した教官もここを見ているからすぐにバレるだろうが
308デフォルトの名無しさん:2011/05/27(金) 13:31:45.31
>>302
Pastebin.com is under heavy load right now, sorry...
But we are working on it!

In the mean time you can...

というのがずっと出て見れないんですけど...
出来たらcodepadかideoneにお願いします
309デフォルトの名無しさん:2011/05/27(金) 13:37:56.45
どうやって調教したんだろう。ネコ。
310デフォルトの名無しさん:2011/05/27(金) 14:45:55.86
>>299
void matMul(double mat1[][10], double mat2[][10], double mat3[][10], int M, int R, int N)
{
int i, j, k;
double sum;

for(i = 0; i < M; i++)
for(j = 0; j < N; j++) {
sum = 0.0;
for (k = 0; k < R; k++)
sum += mat1[i][k] * mat2[k][j];
mat3[i][j] = sum;
}
}

のように引数全部にdoubleを付けないとコンパイルエラー
311デフォルトの名無しさん:2011/05/27(金) 14:53:53.25
312デフォルトの名無しさん:2011/05/27(金) 15:09:26.47
>>311
ありがとうございます
313デフォルトの名無しさん:2011/05/27(金) 15:25:08.43
>>292
そんな理由で判断してるのか。

上から目線に見えるのなら、まだ未熟なんでしょう。
314デフォルトの名無しさん:2011/05/27(金) 15:30:16.27
>>307
じゃあかわりにコード書けば?
315デフォルトの名無しさん:2011/05/27(金) 15:31:09.97
>>314
うざいなお前
316デフォルトの名無しさん:2011/05/27(金) 15:31:56.44
>>314
QZを擁護するのはQZ本人だという法則
317デフォルトの名無しさん:2011/05/27(金) 15:32:48.15
>>313
思い切り上から目線じゃねーか
自覚ないのかお前?重症だな
318デフォルトの名無しさん:2011/05/27(金) 15:51:27.09
>>315
お前にはかなわないよ。
>>316
だから、そんな理由で判断してるからダメなんだよ。
>>317
>>313のレスが上から目線だったって?そりゃあんまりだ。
319デフォルトの名無しさん:2011/05/27(金) 15:56:34.98
>>318

>まだ未熟なんでしょう。

普通こんな事は書かないだろが?あ?
320デフォルトの名無しさん:2011/05/27(金) 15:58:35.35
QZって本当に思い上がりもはなはだしいよね
321デフォルトの名無しさん:2011/05/27(金) 16:00:49.44
>>319
落ち着けよ。煽るのは好きだが煽られるのは嫌いなのか?あ?
>>320
そう?ちゃんとしたコードを書けないことは認めてなかった?
ただ、まともに指摘できる人が少ないだけで。
322デフォルトの名無しさん:2011/05/27(金) 16:08:15.00
>>321

>ただ、まともに指摘できる人が少ないだけで。

ほらほらまた上から目線
自己愛性人格障害だな
323デフォルトの名無しさん:2011/05/27(金) 16:11:26.55
どんだけ必死なんだよ
324デフォルトの名無しさん:2011/05/27(金) 16:12:39.49
◆QZaw55cn4cは糞
325デフォルトの名無しさん:2011/05/27(金) 16:22:08.90
pastebin.com
326デフォルトの名無しさん:2011/05/27(金) 16:27:08.53
>>321
「お前らまともに指摘してねーじゃんwwwゴミレスひっこんでろwww」だと上から目線に取られないかもしれないから試せ
あと、なぜか句点が怖い世代もいるから注意な
327271:2011/05/27(金) 16:57:26.76
>>288 >>294
どうも有難うございました、解決しました
328デフォルトの名無しさん:2011/05/27(金) 18:04:09.26
このスレで慇懃無礼なやつの9割はQZ
329デフォルトの名無しさん:2011/05/27(金) 18:13:40.79
このスレにはQZとQZと同類だけしかいない。
つまり、基地害だけスレ
330デフォルトの名無しさん:2011/05/27(金) 18:57:47.47
いんぎん‐ぶれい【×慇×懃無礼】 [名・形動]

表面は丁寧で礼儀正しいように見えるが、実は尊大で無礼なこと。
また、そのさま。慇懃尾籠(いんぎんびろう)。「―な態度」

まさにQZの事だwww
331デフォルトの名無しさん:2011/05/27(金) 19:03:44.51
>>330
何がしたいの?
332デフォルトの名無しさん:2011/05/27(金) 19:05:51.14
基地にそんなこと聞いても....
333デフォルトの名無しさん:2011/05/27(金) 19:07:46.39
何この難しい漢字?辞書で調べたら分かった!みんなも知らないだろうから貼ってあげよう!
334デフォルトの名無しさん:2011/05/27(金) 19:09:29.26
これだけ嫌われるコテも珍しいな
335デフォルトの名無しさん:2011/05/27(金) 19:31:10.94
>>307
二分木を使ったことが糞ですか?
では、平衡二分木(AVL木)を使ったものを示します。
http://codepad.org/WYLGbk1J
>>282 の二文木ルーチン自体が糞ならば、もっといい二文木処理法を示していただけるとありがたいです。

それにしてもなんだか盛況ですねえ。
336デフォルトの名無しさん:2011/05/27(金) 19:34:48.59
>>334
本当に嫌っているのなら、まずいコードを具体的に引用して徹底的に叩くでしょう。
それができずに、単にキチガイ呼ばわりするだけでは、んー、言いにくいのですが、一アマチュアの私よりも能力が不足しているのではないでしょうか?
337デフォルトの名無しさん:2011/05/27(金) 19:41:09.50
[1] 授業単元:組み込みシステム
[2] 問題文(含コード&リンク):
http://ideone.com/qwczx
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc 3.4
 [3.3] 言語C
[4] 期限: 無期限
[5] その他の制限: 使われてるコマンド以外は使わないで欲しい

ttp://ideone.com/qwczx

構造体と関数を使ったプログラムで、main文で値を決めて関数に送って計算する、
といった簡単なプログラムなのですがエラーがでて動きません。
どこが間違っているのでしょうか?
338デフォルトの名無しさん:2011/05/27(金) 19:42:06.79
本人来たか。相変わらず人気者だよ
ってかまた燃料投下したね
339デフォルトの名無しさん:2011/05/27(金) 19:44:53.36
QZはバカすぎて自分の負けもまともに理解できないから、納得させるために説明するのは時間の無駄
340デフォルトの名無しさん:2011/05/27(金) 19:46:20.65
>>337
まず深呼吸を
341デフォルトの名無しさん:2011/05/27(金) 19:50:00.38
>>337
プロトタイプ宣言を変える(戻り値と引数)
double keisan (ONE_POINT point[2], double a1, double a2, double a3, double a4);
~~~~~~                 ~~~
関数の定義を変える(戻り値のタイプミスと引数)
double keisan (ONE_POINT point[2],double a1, double a2, double a3, double a4)
~~~~~~                 ~~~
342デフォルトの名無しさん:2011/05/27(金) 19:55:24.15
>>335-336
あほ、このスレは回答者がオナニーするスレじゃないんだよ。
質問者がどのレベルの回答を求められているか判断して適切なレベルで回答を作ることが重要。
出題者は木構造で管理する事を求めていない(出来るとは思っていない)。
したがってそれを使う事はカンニングを疑われる。

わかったか? クズ。
343 ◆0RbUzIT0To :2011/05/27(金) 19:57:37.93
>>340
深呼吸したらタイプミスを発見しました。すいません。

>>341
コンパイルできました。ありがとうございます。
関数のとこを point[2] ってするってことはもしかしてこれは
配列の構造体 じゃなくて 構造体の配列 だったのか…
勉強不足でした
344デフォルトの名無しさん:2011/05/27(金) 20:05:28.03
>>339
そう言うのも愛情表現なんだが
345デフォルトの名無しさん:2011/05/27(金) 20:09:11.10
>>342
適切なレベルで回答を作れたと思われるコードを挙げた上で言わないと説得力がないよ。

それに、どれだけ出題者のレベルに合わせたとしても、説明を求められた時に
説明できないようではカンニングと見なされてもおかしくない。
結局は出題者にかかってるんだよ。
346デフォルトの名無しさん:2011/05/27(金) 20:12:19.96
>>345
とっくにあげてある。
347デフォルトの名無しさん:2011/05/27(金) 20:17:59.70
それが分かるようなレスにしないと、その辺のゴミレスと同じ扱いにされるよ
トリつけようぜトリ
348デフォルトの名無しさん:2011/05/27(金) 20:19:34.37
出題者のレベルをまるで見抜けてない>>168以外見つからなかったわけだが、、、
349デフォルトの名無しさん:2011/05/27(金) 20:20:36.49
>>336
お、無職のQZがファビョり出したぞw
350デフォルトの名無しさん:2011/05/27(金) 20:23:11.94
>>348
「質問者」だろ。バカは引っ込んでろ。
351271:2011/05/27(金) 20:24:07.94
>>288>>294
どうもありがとうございました
352デフォルトの名無しさん:2011/05/27(金) 20:25:39.67
>>350
すりかえテクニック半端ねぇっす参考になります
で、コードはどこに
353デフォルトの名無しさん:2011/05/27(金) 20:26:13.17
強制ID表示にすれば良いんだよ
354デフォルトの名無しさん:2011/05/27(金) 20:27:39.69
IDだけじゃなぁ。
355デフォルトの名無しさん:2011/05/27(金) 20:31:51.11
てめーのバカを棚に上げてスリ替え呼ばわりスンナ。カス。

>>168 enum以外は全部習った範囲のはずだ。
356デフォルトの名無しさん:2011/05/27(金) 20:34:15.91
>>354
IPも表示?意味無いんじゃない?
357デフォルトの名無しさん:2011/05/27(金) 20:36:16.23
IPってゆうな。クズ。
358デフォルトの名無しさん:2011/05/27(金) 20:41:52.73
>>355
でも -Dスイッチを知らなかった質問者に蹴られたんでしょ。後付けよくないとか言ってるけども。
面倒でも二つに分けてコードをあげればその後QZが沸くこともなかっただろうし。(こればっかりは分からんが)
それをしないで放置したことはオナニーにならないの?

>>356
前その辺の話題をしたときは、忍法帖の情報使えばIDよりはましになるかも、と書いた。
どうせ単発が沸くにしても、連投規制が役に立つのと、真っ当なレスをしている人はずっと特定できるでしょ。
359デフォルトの名無しさん:2011/05/27(金) 20:47:14.79
何れにしても本人特定する情報を付加してほしいな
360デフォルトの名無しさん:2011/05/27(金) 20:49:07.20
>>358
1 マクロは習ってるはず。
2 #ifは習ってなくてもif文からの推測で理解できるはず。
3 1,2から2つのコードに分解できる。
4 strtokはマニュアル見れば理解できる。
5 配列は習っている。当然配列の順アクセスも可能。
6 enumは見ればわかるだろう。
という緻密な計算の元に作られた回答なのだよ。わかったか? バカ
361デフォルトの名無しさん:2011/05/27(金) 20:56:36.48
質問者が理解できない可能性という点においては
QZのxmallocと、>>168の-DUSE_POINTERは同じぐらいじゃないかな。

enumハックが必要な場面でもないのに、enumか。
宿題の回答としてならマジックナンバーの方がまだマシなんじゃないかとすら思える。

>>360
緻密な計算の結果>>171というありがたいレスをもらったわけだ。
362デフォルトの名無しさん:2011/05/27(金) 20:59:04.47
さすがにxmallocと同じはねーだろ
363デフォルトの名無しさん:2011/05/27(金) 20:59:51.83
>>358
忍法帖ですか?なるほど、調べて見ますねw
364デフォルトの名無しさん:2011/05/27(金) 21:02:22.65
>>361
あと、てめーもコード書いてから文句付けろ。バカ。
365 忍法帖【Lv=40,xxxPT】 :2011/05/27(金) 21:02:51.98
>>363
今はこんなんしか出ない。名前欄 !ninja で。
もともとは巻き添え規制を減らすために作られた仕組みだったけど、運営が変な機能ばかり足してる感じ。
366デフォルトの名無しさん:2011/05/27(金) 21:06:08.95
> 緻密な計算の結果>>171というありがたいレスをもらったわけだ。
断ってから出てきてないから自分で考えたんだろ。学習効果まで緻密に計算済みなんだよ。
367デフォルトの名無しさん:2011/05/27(金) 21:06:36.56
>>364
結局それかよ。自分のコードの否を認めない点ではQZにすら劣る。
特定できる情報が強制開示されるようになってれば、今まで書いたコードがどれか分かって楽なんだけどね。
>>364も自分が過去に書いたコードがどれなのか、証拠も無いままにせっせと提示するのはいやでしょ。
368デフォルトの名無しさん:2011/05/27(金) 21:10:22.90
>>366
あきらめたんじゃ、、、、ない、、かな
それか友達に見せてもらったとか
369デフォルトの名無しさん:2011/05/27(金) 21:12:03.16
>>367
今までに書いたコードを出せと言ってるんじゃない。これから書けといっているんだ。
とっとと書け。
370 ◆QZaw55cn4c :2011/05/27(金) 22:04:02.27
>>369
結局は◆QZaw55cn4cと同じことを主張してますねぇ。
弟子ですか?
371デフォルトの名無しさん:2011/05/27(金) 22:09:17.41
>>369
http://codepad.org/D1puRAUv
時間かかったけど、書いてみた。配列版。
372デフォルトの名無しさん:2011/05/27(金) 22:15:48.04
コメントがまったく消臭剤になってない、
息苦しい読みにくいプログラムのいい例だな。
373デフォルトの名無しさん:2011/05/27(金) 22:16:51.99
◆QZaw55cn4cは完全な荒らしだな
こいつが一人いるだけで宿題スレはカチャカチャに荒れる
アク禁要望出してみるか
374デフォルトの名無しさん:2011/05/27(金) 22:20:24.66
>>373
一緒に粘着荒らしも駆除してくれよ
375デフォルトの名無しさん:2011/05/27(金) 22:24:16.83
・gcc4.1ではコンパイルできない
・メモリリークする
・動作がおかしい
・要件を満たしていない
そんな>>168よりはマシだと思うよ。
376デフォルトの名無しさん:2011/05/27(金) 22:27:52.54
>>373
荒らしだとしたらコスト対パフォーマンス比が極めて良好ですね。
わずかな燃料を投下するだけで、これですか。

>>338
>>336 は不発に終わりました。
377デフォルトの名無しさん:2011/05/27(金) 22:28:31.93
>>370
コードも書かずにつけたケチが、本人が理解できたようである#ifでの切り替えと、
しらなくても理解できる遊びで入れたenumだからな。Qzにも劣るくずだよ。

>>371
単語長の最大値は適当にとっていいとは書いてあるけど、チェックしなくていいとは書いてないね。
Qzにも劣るバグ入り。
378デフォルトの名無しさん:2011/05/27(金) 22:30:46.41
ID非表示はこれだから・・・
379デフォルトの名無しさん:2011/05/27(金) 22:33:04.54
>>377
ケチつけてくるとは思ってたけど、まさかそことは。
380デフォルトの名無しさん:2011/05/27(金) 22:34:39.29
>>379
最初にチェックする、基本中の基本だよ。
381デフォルトの名無しさん:2011/05/27(金) 22:39:57.64
>>376
そんな事は誰も聞いてない
荒らしは荒らし
報告しとく
382デフォルトの名無しさん:2011/05/27(金) 22:45:57.90
>>377
遊びで入れた…?enumハックのつもりですらないってこと?
固定で決めた単語長を超えた場合に切り詰めていいとは書いてないね。
383デフォルトの名無しさん:2011/05/27(金) 23:36:03.98
◆QZaw55cn4cは宿題出さないのか、教室の中で生徒でないなら教師だな。
384デフォルトの名無しさん:2011/05/28(土) 00:10:07.98
>>375
それみるまで気づかんかったわ
385デフォルトの名無しさん:2011/05/28(土) 00:21:20.44
strdup()したあとfree()してないのか
マクロは読みにくくてあかんな
386デフォルトの名無しさん:2011/05/28(土) 00:22:22.83
C++ならstringなりスマポなりカスタムデリータを指定出来るのに
Cでmalloc()が絡むと本当に苦労する
387デフォルトの名無しさん:2011/05/28(土) 00:44:43.57
do ...; while(0); て ...; じゃない? >>168
388デフォルトの名無しさん:2011/05/28(土) 00:55:19.37
>>387
それはセミコロン必須にするためのidiomかな。
389デフォルトの名無しさん:2011/05/28(土) 01:09:55.45
>>371って煽られて1時間で作った割には、宿題の回答としてそれなりなんじゃないの?
学生向けだからこそもっとガチで書くべきなのかな
390sage:2011/05/28(土) 01:23:35.47
[1] 授業単元:
[2] 問題文(含コード&リンク):
#include <stdio.h>
int main()
{
int i;
float test;
float avr=0;
for(i=0;i<10;i++){
printf("%d番目の試験結果:",i+1);
scanf("%f",&test);
avr=avr+test;
}
printf("平均: %f\n", avr/10);
return(0);
}
を応用し、平均値に加えて、最大値・最小値を求めるプログラムを作りなさい
ただし、正の整数だけではなく、負の整数を含めた実数の入力を想定したプログラムにしなさい
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio2008
 [3.3] 言語: C
[4] 期限:今日まで
391デフォルトの名無しさん:2011/05/28(土) 01:29:28.21
[1] 授業単元:C
[2] 問題文(含コード&リンク):
>>390のプログラムを応用し、平均に加えて分散を求めるプログラムに拡張しなさい
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio2008
 [3.3] 言語: C
[4] 期限:今日まで
392デフォルトの名無しさん:2011/05/28(土) 01:39:14.45
>別のソースファイルにしていただけますでしょうか?
CGI >>168
http://ideone.com/ZiBKv
393デフォルトの名無しさん:2011/05/28(土) 01:43:15.26
>>392
単なる嫌がらせとしか思えない
そう言えばクワイン(自分自身を出力するプログラム)を思い出した
394デフォルトの名無しさん:2011/05/28(土) 01:50:07.99
>>390
#include <stdio.h>
int main()
{
int i;
float test;
float avr=0;
float max, min;
for(i=0;i<10;i++){
printf("%d番目の試験結果:",i+1);
scanf("%f",&test);
avr=avr+test;
if(i==0){
max = test;
min = test;
}else{
if (max < test) max = test;
if (min > test) min = test;
}
}
printf("平均: %f\n最大: %f\n最小: %f\n", avr/10, max, min);
return(0);
}
395デフォルトの名無しさん:2011/05/28(土) 02:02:35.80
396392:2011/05/28(土) 02:36:19.35
>>371
argv[1]で落ちた
397デフォルトの名無しさん:2011/05/28(土) 08:59:35.82
>>382
問題文も読めない池沼がくだらない言いがかり付けてるよ。必死すぎるて痛いぞ。バカ。
> 1単語長の最大値を適当に固定して良い。
1 最大長で切り詰める
2 最大長を超えた単語は読み飛ばす。
どちらでも問題の条件はクリアする。

>>371は言いがかり付けてくることがわかっていながら、この程度の課題を後出しという
好条件にもかかわらず、完璧な回答を作成する能力が無い事が立証されたって事だ。
QZにすら劣るな。
398デフォルトの名無しさん:2011/05/28(土) 09:02:40.28
>>375
> ・gcc4.1ではコンパイルできない
できるよ。バカ。出来ないと主張するならエラーメッセージ張れ。

> ・メモリリークする
しねーよ。クズ。
399392:2011/05/28(土) 11:05:36.87
400デフォルトの名無しさん:2011/05/28(土) 11:18:46.37
#include <stdio.h>
char *input_str(void){
char str[MAX];
printf("文字列 > ");scanf("%s", str);return str;}
void output_str(char *str){
printf("変換結果: %s\n", *str);}
int main(void){
char *str1, *str2;
char *p1, p2;
*str1 = input_str();
p1 = &str1;p2 = &str2;
printf("変換開始\n");
while (p1 != '\0') {
if ('a' <= *p1 && *p1 <= 'z') {
p2 = p1 + 'A' - 'a';}
p2++;p1++;}
printf("変換終了\n");output_str(*str2);
return 0;}
実行結果
文字列 > abc123ABC!"#
変換開始
変換終了
変換結果: ABC123ABC!"#
401デフォルトの名無しさん:2011/05/28(土) 11:24:51.75
[1] 授業単元:課題
[2] 問題文(含コード&リンク):↑の問題文についてなんですがうまくプログラムが動作しないのでどこをどう直せばよいのか解答お願いします。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日まで
402デフォルトの名無しさん:2011/05/28(土) 11:28:41.74
#include <stdio.h>

int *largePtr(int *a, int *b)
{

}

int main(void)
{
int a, b, *c;

printf("整数 > "); scanf("%d", &a);
printf("整数 > "); scanf("%d", &b);
c = largePtr(/* ... */);
printf("変更前: %d, %d\n", a, b);
*c = 0;
printf("変更後: %d, %d\n", a, b);

return 0;
}
実行結果
整数 > 5
整数 > 3
変更前: 5, 3
変更後: 0, 3
実行結果
整数 > 3
整数 > 5
変更前: 3, 5
変更後: 3, 0
403デフォルトの名無しさん:2011/05/28(土) 11:33:12.43
[1] 授業単元:課題
[2] 問題文(含コード&リンク):
):↑の問題文についてなんですがプログラムの修正箇所をお願いします。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日まで

404デフォルトの名無しさん:2011/05/28(土) 11:33:49.92
return *a > *b ? a : b;

&a, &b
405387:2011/05/28(土) 11:45:46.51
#include <stdio.h>
#define MAX 100
static char str[MAX];
char *input_str(void){
  printf("文字列 > ");
  scanf("%s", str);
  return str;
}
void output_str(char *str){
  printf("変換結果: %s\n", str);
}
int main(void){
  char *str1, *str2;
  char *p1, *p2;
  str1 = input_str();
  p1 = p2 = str2 = str1;
  printf("変換開始\n");
  while (*p1 != '\0') {
    if ('a' <= *p1 && *p1 <= 'z') {
      *p2 = *p1 + 'A' - 'a';
    }
    p2++;
    p1++;
  }
  printf("変換終了\n");
  output_str(str2);
  return 0;
}
406デフォルトの名無しさん:2011/05/28(土) 12:06:03.57
#include <stdio.h>
/* 大きい値を指し示すポインタを返す */
int *largePtr(int *a, int *b)
{
/* ... */
}
int main(void)
{
int a, b, *c;
printf("整数 > "); scanf("%d", &a);
printf("整数 > "); scanf("%d", &b);
c = largePtr(/* ... */);
printf("変更前: %d, %d\n", a, b);
*c = 0;
printf("変更後: %d, %d\n", a, b);
return 0;
}
実行結果
整数 > 5
整数 > 3
変更前: 5, 3
変更後: 0, 3
[1] 授業単元:課題
[2] 問題文(含コード&リンク):
):*の箇所の訂正お願いします。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:明日まで
407デフォルトの名無しさん:2011/05/28(土) 12:09:53.41
また以下のプログラムではなぜ上の題意を満たせないのか,「引数」,「値渡し」,「アドレス」という単語を用いて説明してもらえませんか?
#include <stdio.h>

void max(int *a, int *b, int *c)
{
if (*a > *b)
c = a;
else
c = b;
}

int main(void)
{
int a, b, c;

printf("整数 > "); scanf("%d", &a);
printf("整数 > "); scanf("%d", &b);
max(&a, &b, &c);
printf("変更前: %d, %d\n", a, b);
c = 0;
printf("変更後: %d, %d\n", a, b);

return 0;
}
408デフォルトの名無しさん:2011/05/28(土) 12:11:34.43
>>406
関数内部は
return (*a > *b) ? a : b;

cへの代入時の使用部分は
&a, &b
409408:2011/05/28(土) 12:20:14.00
>>407
max関数の「引数」である int *c はint型ポインタの「値渡し」となっている、
その為max関数内で「アドレス」を代入したとしても、
main関数側に返る事は無い、返るのはint型の値である。

「引数」でアドレスを返そうと思ったら、int型ポインタのポインタの「値渡し」をする必要がある。
410409:2011/05/28(土) 12:32:57.51
仕組みの解説も踏まえて分かり易くしてみた

「引数」では「値渡し」しか出来ないが、ポインタを使えば結果を返す事が出来る、
その仕組みは、ポインタに代入された変数への「アドレス」を使い、間接参照する事によって
呼び出し側の変数に間接的に代入しているからだ、
したがって、上記の式(c =a や c = b)は間接参照を行えていない為、結果を返せていない。

つまり、「アドレス」を引数を使い返すのであれば、ポインタのポインタに代入されたポインタへの「アドレス」を使って間接参照をすれば良い。



長くなっちゃった。
411デフォルトの名無しさん:2011/05/28(土) 12:34:38.95
>>407
引数として値渡しされたint *変数にアドレスが入っているのに、
アドレスをデリファレンスして使うことも無いので、
関数内での変数の代入で影響が完結している。
*c = *a, *c = *bなどとすれば、呼び出し元の変数に代入される。

また、そのような仕様のmax関数を定義しておきながら、
main関数の中のmax呼び出し以降がトンチンカンなのも問題。
412デフォルトの名無しさん:2011/05/28(土) 12:47:49.94
[1] 授業単元:C
[2] 問題文(含コード&リンク):1~nまでの整数の和を求めるプログラムを次の条件で作成
(1)for文を使用
(2)while文を使用
(3)do-while文を使用
(4)if文を使用

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VISUAL2008 win32
 [3.3] 言語: C
[4] 期限: 2011年5月30日
[5] どこまで習っているか:初歩の初歩
  その他の制限:nの値はキーボードから入力できるプログラム
413デフォルトの名無しさん:2011/05/28(土) 13:07:32.56
>>412
int main() {
int n, i, sum;
printf("n = ");
scanf("%d", &n);
for (i = 1, sum = 0; i <= n; i++) sum += i;
i = 1, sum = 0;
while (i <= n) sum += i++;
i = 1, sum = 0;
do {} while (i <= n && (sum += i++));
printf("1〜%dまでの整数の和 %d\n", n, sum);
return 0;
}
414デフォルトの名無しさん:2011/05/28(土) 13:33:57.46
>>412
すでに回答でてることだし
ふざけてみた

#include <stdio.h>
int main()
{
int n;
for (;0;); while (0); do {} while (0); if (0);
scanf("%d", &n);
printf("1から%dまでの和は%dです\n", n, ((1 + n)* n) / 2);
return 0;
}
415デフォルトの名無しさん:2011/05/28(土) 13:43:25.74
>>413-414
ありがとうございます
しかしごめんなさい、こちらの説明不足でした
(1)~(4)は別個です

for文を使ったもの、while文を使ったもの、do-while文を使ったもの、if文を使ったもの
1~nの和を出すプログラムを計4個作る問題です
お手数かけますがお願いします
416392:2011/05/28(土) 13:51:46.44
#include <stdio.h>
FILE *a1,*a2,*a3,*a4;
print1(char *s){fprintf(a1,"%s\n",s);}
print2(char *s){fprintf(a2,"%s\n",s);}
print3(char *s){fprintf(a3,"%s\n",s);}
print4(char *s){fprintf(a4,"%s\n",s);}
printL(char *s){print1(s);print2(s);print3(s);print4(s);}
main(){
a1 = fopen("413_1.c","w");a2 = fopen("413_2.c","w");a3 = fopen("413_3.c","w");a4 = fopen("413_4.c","w");
printL("int main() { ");
printL(" int n, i = 1, sum = 0;");
printL(" printf(\"n = \");");
printL(" scanf(\"%d\", &n);");
printL("");
print1(" for ( ;i <= n; ) {");
print2(" while (i <= n) {");
print3(" do {");
print4("L:if (i <= n) {");
printL(" sum += i++;");
print1(" }");
print2(" }");
print3(" } while (i <= n);");
print4(" goto L;");
print4(" }");
printL(" printf(\"1〜%dまでの整数の和 %d\\n\", n, sum);");
printL(" return 0;");
printL("}");
fclose(a1);fclose(a2);fclose(a3);fclose(a4);}
417デフォルトの名無しさん:2011/05/28(土) 14:10:21.94
>>414
それならもっとこう

#include <stdio.h>
int main()
{
int n,sum;
scanf("%d", &n);
do{for(;1;){while(1)if(sum=((1+n)*n)/2)break;break;}}while(0);
printf("1から%dまでの和は%dです\n",n,sum );
return 0;
}
418デフォルトの名無しさん:2011/05/28(土) 14:20:20.50
>>412
http://ideone.com/bouqx
if文ひょっとしてgoto使えってことだったんだろうか・・・・・・・・
419デフォルトの名無しさん:2011/05/28(土) 14:29:13.69
do whileでsumみたいな計算させようとすると、
条件分岐でごっちゃになっていやだな。
420387:2011/05/28(土) 14:37:49.91
>>418 再帰でやるならもっとこう
int sum1(int a, int n){
  if (a < n) return 0;
  return n + sum1(a, n + 1);
}
int main(){
  int n, sum;
  printf("n = ");
  scanf("%d", &n);

  sum = sum1(n, 1);
  printf("1から%dまでの和は%dです\n", n, sum);
  return 0;
}
421デフォルトの名無しさん:2011/05/28(土) 14:40:53.97
>>420
まだforとか習った段階なのに関数使っちゃだめかな・・・・・って・・・・そのくせgotoのこと忘れてて
しかもそれなら再帰もダメだろうと思い直して

>>412
というわけでifとgoto版も作っておきましたややこしくなってすいません

#include <stdio.h>
int main()
{
int n, i, sum = 0;
printf("n = ");
scanf("%d", &n);
i = 1;
raberu:
sum += i;
i++;
if (i <= n)
goto raberu;
printf("1から%dまでの和は%dです\n", n, sum);
return 0;
}
422387:2011/05/28(土) 15:39:45.46
>>412
gotoは習ってないかもというわけで再帰版も作っておきました

int sum1(int n){
  if (1 > n) return 0;
  return n + sum1(n - 1);
}
int main(){
  int n, sum;
  printf("n = ");
  scanf("%d", &n);

  sum = sum1(n);
  printf("1から%dまでの和は%dです\n", n, sum);
  return 0;
}
423デフォルトの名無しさん:2011/05/28(土) 20:48:08.05
[1] 授業単元:C
[2] 問題文(含コード&リンク):
3つの異なる値の実数を入力させる。それがどんな順番で入力されたとしても、昇順に並び替えて表示するプログラムを作成しなさい
なお、プログラムの末尾には、このプログラムが正しいことを確認するためには、何パターンのデータを試す必要があるかを考え、必要なテストを行った結果を記録しなさい
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio2008
 [3.3] 言語: C
[4] 期限:今日まで

424デフォルトの名無しさん:2011/05/28(土) 20:58:46.60
>>423
#include <stdio.h>

int main(void)
{
double a, b, c, temp;

scanf("%lf", &a);

scanf("%lf", &b);
if(a > b) {
temp = a;
a = b;
b = temp;
}

scanf("%lf", &c);
if(b > c) {
if(a > c) {
temp = a;
a = c;
c = temp;
}
temp = b;
b = c;
c = temp;
}

printf("%f %f %f\n", a, b, c);

return 0;
}
425デフォルトの名無しさん:2011/05/28(土) 21:04:10.03
[1] 授業単元:C
[2] 問題文(含コード&リンク):
この問題では、数列として扱う値はすべて実数での処理を想定する
初項および項数を入力すると、その等差数列の和を求めるプログラムを作成する
○公式を利用して求める場合→項数(初項+末項)÷2
○1つずつの項を順次足し合わせる場合→公差=(末項−初項)÷(項数−1)
との2種類の計算方法で値を求めるプログラムを作成しなさい
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio2008
 [3.3] 言語: C
[4] 期限:今日まで


426デフォルトの名無しさん:2011/05/28(土) 21:06:24.50
>>398
横だけど、strlcpyがないっていわれた
リークはstrdupじゃない?
427デフォルトの名無しさん:2011/05/28(土) 21:07:54.77
あ、もしかしたらmacだとあるのかな
428デフォルトの名無しさん:2011/05/28(土) 21:10:26.02
>>425
末項は入力させないの?
429デフォルトの名無しさん:2011/05/28(土) 21:12:43.36
>>428
末項も入力します
問題に書くの忘れてました
すいません
430デフォルトの名無しさん:2011/05/28(土) 21:21:55.34
>>425
#include <stdio.h>

int main(void)
{
int i, n;
double first_term, last_term, diff, sum, term;

scanf("%d", &n);
scanf("%lf%lf", &first_term, &last_term);

printf("%f\n", n * (first_term + last_term) / 2);

diff = (last_term - first_term) / (n - 1);
for(i = 0, sum = 0, term = first_term; i < n; i++, term += diff) sum += term;

printf("%f\n", sum);

return 0;
}
431デフォルトの名無しさん:2011/05/28(土) 21:22:49.38
>>427
BSD系だからあるよ
432412:2011/05/28(土) 21:46:26.23
>>418-422
ありがとうございました
433デフォルトの名無しさん:2011/05/28(土) 21:48:55.18
> リークはstrdupじゃない?
しねーよ。コードも読めない低能が批評とは片腹痛い。
434デフォルトの名無しさん:2011/05/28(土) 21:59:45.93
すべて実数を数列として扱うことはできないんだけど
435デフォルトの名無しさん:2011/05/28(土) 22:00:27.99
QZを批判するのは1000年早いんだよ
436デフォルトの名無しさん:2011/05/28(土) 22:21:58.30
[3.1] OS:vista
[3.2] コンパイラ名とバージョン:Linux
[3.3] 言語: C
[4] 期限:月曜日まで
437デフォルトの名無しさん:2011/05/28(土) 22:27:32.13
名前: デフォルトの名無しさん
E-mail:
内容:
1] 授業単元:C
[2] 問題文(含コード&リンク):
今回は、単方向リストを用いて電話帳のプログラムを作ってもらいます。
実装するのは、入力、削除、表示、終了、load、saveです
438デフォルトの名無しさん:2011/05/28(土) 22:29:35.67
1.入力は、名前、電話番号を入力する。(可能ならばソートを行う)
2.saveは終了時にsaveを行うかどうか判断してから終了を行う(txtで保存する)
3.loadで読み込んだtxtファイルに再び、入力、削除、表示を行えるようにする
4.ヒント(mallocの意味を調べること)
[3.1] OS:vista
[3.2] コンパイラ名とバージョン:Linux
[3.3] 言語: C
[4] 期限:月曜日まで
439デフォルトの名無しさん:2011/05/28(土) 22:32:19.36
vistaなのかlinuxなのか・・・
440デフォルトの名無しさん:2011/05/28(土) 22:32:27.14
>>438>>437の続きです。
記載するのを忘れておりました。
よろしくお願いします
441デフォルトの名無しさん:2011/05/28(土) 22:34:42.52
>>439
Linuxでvimを使ってコンパイルをしております。
442 ◆QZaw55cn4c :2011/05/28(土) 22:48:54.75
>>433
words[i].word = strdup(p);
しているけれども、プログラム終了時に free(words[i].word); していませんね。
これはメモリーリークと言われても仕方がないと思います。

http://archive.linux.or.jp/JM/html/LDP_man-pages/man3/strdup.3.html
>strdup() 関数は、文字列 sの複製である 新しい文字列へのポインタを返す。
>新しい文字列のためのメモリは malloc(3) で得ている。

少なくとも私は strdup() で得たポインタは free() する人です。
443デフォルトの名無しさん:2011/05/28(土) 23:02:56.85
>>442
しねーよ。バカ。プログラム終了時に全部解放されるから問題ない。
444デフォルトの名無しさん:2011/05/28(土) 23:12:22.20
>>361
>enumハックが必要な場面でもないのに、enumか。
>宿題の回答としてならマジックナンバーの方がまだマシなんじゃないかとすら思える。
それどころか、
>>168
buffer[1024]
fgets(buffer, 1024, stdin)
というのをみると、どうして 1024 を #define なり enum なりしなかったのかが疑問ですね。
enum/#define する基準を意識しておらず、てきとーに エニュミュを使いたかっただけのようです。
445デフォルトの名無しさん:2011/05/28(土) 23:15:11.96
>>431
なるほど、ありがとん
446デフォルトの名無しさん:2011/05/28(土) 23:15:53.66
>>443
ほー、
malloc() したのを free() しなかったら、それはメモリーリークと呼ぶのが普通なのでは?
プログラム終了時にスタートアップが解放したり、プロセス終了時に OS がリソースを回収したりするにしても。
447デフォルトの名無しさん:2011/05/28(土) 23:22:03.47
>>446
バカ。プログラムの終了時に開放する/しないは宗教戦争だ。
てめーは宗教戦争仕掛ける気か? 死ねバカ。氏ねじゃなくて死ね。
448デフォルトの名無しさん:2011/05/28(土) 23:24:14.94
>>443
へたくそな言い回しだな。ネタレスならいいけど。
449デフォルトの名無しさん:2011/05/28(土) 23:24:57.35
>>444
結局enumにしかケチ付けられないクズなんだから引っ込んでろよ。
言いがかり付けられることがわかっていながらバグ作りこむヘボグラマ。w
450デフォルトの名無しさん:2011/05/28(土) 23:26:20.32
>>447
宗教戦争ということにしたいのですね。確かに実害はないことを盾に問題ない、とする人々はいるようですが。

け れ ど も

malloc() したのを free() しなかったら、それはメモリーリークと呼ばれても

し か た な い で す よ ね
451デフォルトの名無しさん:2011/05/28(土) 23:26:21.39
>>447
解放しない派はメモリリークしていないなんて言わないよ
452デフォルトの名無しさん:2011/05/28(土) 23:28:03.36
>>449
じゃあ改めてバグの無いコードをどうぞ。非の打ち所の無いものを頼むよ
453デフォルトの名無しさん:2011/05/28(土) 23:31:42.77
>>444
みょうではあるがあんまり突っ込むなよ
それが>>168の絶対的こだわりなんだから
ついでに終了時に開放しないにも絶対なこだわりあるみたいだが
QZのこだわりと同じ





454デフォルトの名無しさん:2011/05/28(土) 23:31:46.62
>>449
enum に突っ込んでいるのではなく、
enum/#define する基準を意識せず、不用意にマジックナンバを使用していることを批判しています。
455デフォルトの名無しさん:2011/05/28(土) 23:32:56.75
freeしたと思っていてできてないのがメモリリーク。
freeしながらヒープをやりくりするプログラムでの話。
ヒープを使いっぱなしで話が済むプログラムではケアの必要などない。
456デフォルトの名無しさん:2011/05/28(土) 23:33:19.21
>>451
words[0].word = strdup(p);
words[0].word = strdup(p);

これがメモリーリークだ。普通に言う。

死ね。バカ。氏ねじゃなくて死ね。
457デフォルトの名無しさん:2011/05/28(土) 23:33:21.54
>>453
そりゃまあ、こだわり、といわれたら、そうかも知れませんね。
この件は撤退しましょうか。
458デフォルトの名無しさん:2011/05/28(土) 23:33:21.64
>>453
絶対的なこだわりじゃないよ。緻密な計算だよ
459デフォルトの名無しさん:2011/05/28(土) 23:34:19.83
>>456
じゃあ、解放漏れ
460デフォルトの名無しさん:2011/05/28(土) 23:35:49.23
>>452
残念ながらお前(ヘボグラマ)の作品と違ってバグは全くない。w
461デフォルトの名無しさん:2011/05/28(土) 23:37:23.35
>>456
あれ?最初の strdup() で得たポインタは宙ぶらりんになるにしても、結局、終了時に解放されるのだから
プログラム終了時に意図的に解放しない派的には、これも「メモリリーク」とは呼ばないのではないのでは?

なぜ >>456 の場合だけ特別にメモリリークと呼ぶのかくわしく。
462デフォルトの名無しさん:2011/05/28(土) 23:39:06.13
メモリリークとは「あるリソースを指しているポインタが失われた状態」を指して言うんだぞ

名著「Exceptional C++」を読め

つまりプログラム内ではもうそのリソースを解放する手段が無くなった時に、初めて「メモリ
リーク」と呼ぶのであり、malloc()したのをfree()しないのは単なる怠慢であってメモリリーク
ではない

しかし、プログラムの終了時もしくは実行時でもいいが、malloc()したものをfree()しないで
長時間動かすといずれヒープ領域の枯渇を招く危険があり、こまめに解放出来るリソースは
解放すべきである

これは「プログラム作法」に属する

確かにプログラムがterminateするとそのプロセスが保持していたメモリはOSに返却されるが、
もしリソースをロックしていたらそのリソースまで返却されるとは限らない
使ったものはちゃんと返してからプログラムを終了する癖を付けておかないとそのうち痛い目に遭う
463デフォルトの名無しさん:2011/05/28(土) 23:40:13.73
>>450
それでは聞いてやろう。それを全部freeすることでどういうメリットがあるのだ?
プログラム開始時の状態に戻すことに病的にこだわるなら、変数も全部戻したらどうだ?

メモリアロケーターがOSから確保したメモリブロックを終了前にOSに返さないのはメモリリークと呼ばないのか?


確保したのを返さないのはメモリリークと呼ばれても

し か た な い で す よ ね wwww
464デフォルトの名無しさん:2011/05/28(土) 23:41:22.13
>>460=>>168なの?
>>168のコードに非の打ち所がないならこんなことになってないだろ。
465デフォルトの名無しさん:2011/05/28(土) 23:41:26.69
一応、MacもWindows NT系、UNIXのようにプロセス終了時にはメモリが解放されるのは保証されてる、
でもプロセスが終了しない間はメモリが解放されないわけだからちょっと規模大きくなって連続稼働するとプログラムがダウンする。
このプログラムだと問題ない、と言えるけど害悪しかないだろ、ヒープチェッカーとかどうすんの。
466デフォルトの名無しさん:2011/05/28(土) 23:42:48.00
気持ち悪い応酬だな

↓の糞スレでやってくれ

俺の課題を誰か作ってくれ!!
http://hibari.2ch.net/test/read.cgi/tech/1169822971/
467465:2011/05/28(土) 23:42:48.79
リロードしないうちに同じ事書かれた、ってかみんなペース早いw
468デフォルトの名無しさん:2011/05/28(土) 23:43:22.31
>>456
のケースも、どうせfreeするつもりが無い場合は、
ただの使い捨てであってメモリリークじゃない。

void leak() {
char *tmp = malloc(1024);
//略
if (略) return;
free(tmp);
}

こんなふうになっちゃってるのがメモリリークかと。
469デフォルトの名無しさん:2011/05/28(土) 23:45:40.06
>>467
なんか人多いね。

>>468
後でfreeしようと思ってもできなくなってるって意味では同じなんじゃないの?
470デフォルトの名無しさん:2011/05/28(土) 23:45:55.32
なんだか、プログラム終了時に意図的に free() しない派の辞書にはメモリーリークという言葉が存在しないように思えてきました。

楽でいいですねえ。
471デフォルトの名無しさん:2011/05/28(土) 23:46:15.82
>>464
後出しで言いがかり付けられることがわかっていながらバグを作りこんだ
ヘボグラマの作品(笑)と違ってバグは無い。
472デフォルトの名無しさん:2011/05/28(土) 23:47:33.12
>>470
>>463がおかしいだけ。引っ込みつかないんじゃないかっていう。
473デフォルトの名無しさん:2011/05/28(土) 23:48:05.71
>>471
俺、誰なのw
474デフォルトの名無しさん:2011/05/28(土) 23:48:42.15
>>470
逃げてないで>>463に答えろよ。

確保したメモリを返さないのはメモリリークと呼ばれても

し か た な い で す よ ね wwww
475デフォルトの名無しさん:2011/05/28(土) 23:51:17.67
ぶっちゃけ単語の定義なんかすれ違いだからよそでやれば?
476デフォルトの名無しさん:2011/05/28(土) 23:52:37.77
宗教戦争仕掛けてきたクズに言え。
477デフォルトの名無しさん:2011/05/28(土) 23:54:08.98
>>463
>それでは聞いてやろう。それを全部freeすることでどういうメリットがあるのだ?
メリットのあるなしは関係ないのでは?宗教戦争なんでしょ?

「malloc() したのをfree() しなかったのならメモリーリークだ」という人がいても仕方がないのでは、ということです。宗教戦争だそーですから。
そもそも、解放しない派的には、何をメモリーリークと呼ぶのかすら、はっきりしていないようですね。
478デフォルトの名無しさん:2011/05/28(土) 23:54:56.09
>>471
非の打ち所の無いものを頼む
→バグは無い!!!

バグは無いけど非の打ち所があるのは認めてるんだな。要件を満たしてはいないが、バグは無い、と。
質問者には蹴られるし、Linuxだとまともに動きすらしない可搬性の無いコード。
479デフォルトの名無しさん:2011/05/28(土) 23:56:41.05
>>474
すみませんが、
「メモリアロケーターがOSから確保したメモリブロックを終了前にOSに返さない」
という事態を、普通のプログラムでどうやって引き起こしたらいいのかわからないのですが。

そもそも何を突っ込まれているかよくわからないので、説明していただけないでしょうか?
480デフォルトの名無しさん:2011/05/28(土) 23:59:19.90
>>477
> そもそも、解放しない派的には、何をメモリーリークと呼ぶのかすら、はっきりしていないようですね。
バカにもわかるように実コードで示してやっただろ。>>456

それと>>463の後半に対する反論もどうぞ。
sbrkやmmapやVirtualAllocしたのは解放しないのかな?




確保したメモリを返さないのはメモリリークと呼ばれても

し か た な い で す よ ね wwww
481デフォルトの名無しさん:2011/05/29(日) 00:07:23.47
>>456をメモリリークといい、解放漏れをメモリリークといわないのってどこの文化なんだろう。
手元のリークチェッカはどちらもメモリリークしているとエラーを出すんだけど、そのチェッカが糞って言われて終わりなのかな
482デフォルトの名無しさん:2011/05/29(日) 00:10:28.68
>>479
> 「メモリアロケーターがOSから確保したメモリブロックを終了前にOSに返さない」
> という事態を、普通のプログラムでどうやって引き起こしたらいいのかわからないのですが。
int main()
{
free(malloc(1000 * 1000 * 1000));
}
病的にこだわった自作のメモリアロケータを使っていなければこれで発生する。
メモリアロケータ(malloc)はOSから(大き目な)メモリブロックの割り当てを受けて、
それを分割して渡す。普通のメモリアロケーターはfreeされてもOSには返却しない。

てめーはこれから自作のメモリアロケータ使って、プログラム終了時にOSにメモリを確実に返せ。
ここで回答するときも忘れるなよ。




確保したメモリを返さないのはメモリリークと呼ばれても

し か た な い で す よ ね wwww
483デフォルトの名無しさん:2011/05/29(日) 00:12:38.90
>>480
>バカにもわかるように実コードで示してやっただろ。>>456
>>461

何をメモリーリークと呼んでいるのか、今ひとつよくわかりません。適当に気分でメモリーリークといったりいわなかったりのような気が。
楽でいいですねえ。

>sbrkやmmapやVirtualAllocしたのは解放しないのかな?
申し訳ないけれども、mallc() したものですら free() する派の人が、それらについては使用後解放しないなんてありえないと思いませんか?
484デフォルトの名無しさん:2011/05/29(日) 00:15:51.81
>>168をLinuxで動かしてみた。macなら動くんだろうけどなぁ。

% gcc -DUSE_POINTER main.c
% cat main.c | ./a.out
#include <stdio.h>
1
#include <ctype.h>
1
#include <string.h>
1

4
enum { MAXWORDS = 2000};
1
(以下略)
485デフォルトの名無しさん:2011/05/29(日) 00:16:20.92
>>482
それは初耳。kwsk
malloc() したものは、free() しなくてもプログラム終了時にすべて回収されるのではなかったでしょうか?
malloc() で要求するサイズによって、OS に返すか返さないかが変化するのであれば、
あぶなくってしかたがない。

malloc() したものはすべてfree() したほうがいいのではないでしょうか?
486デフォルトの名無しさん:2011/05/29(日) 00:17:00.26
main(){malloc(1);}
でメモリリークするとか言ってる奴は
屋根無し駐車場を借りといて
雨漏りがすると大家に因縁つける基地外
487デフォルトの名無しさん:2011/05/29(日) 00:19:56.38
> 申し訳ないけれども、mallc() したものですら free() する派の人が、それらについては使用後解放しないなんてありえないと思いませんか?

やっぱりバカだ。
mallocはsbrkやmmapやVirtualAllocなどを使って、OSからメモリの割り当てを受けるんだよ。
普通のメモリアロケータはOSに返却しないけど、てめーは返却してるっていうのか?
そりゃスゲー。www
どうやって返却してるんだ? www
488デフォルトの名無しさん:2011/05/29(日) 00:19:58.38
freeは即座にOSに返却されないが、実行中にメモリが足りなくなれば返却するし、
返却されなくてもプログラム終了時には返却される。
タイミングの話?
489デフォルトの名無しさん:2011/05/29(日) 00:23:15.70
おなじく >>168 を cygwin 上で動かしてみました。なぜこうなるの?
$ gcc -DUSE_POINTER a.c

$ cat a.c | ./a.exe
#include <stdio.h>
1
#include <ctype.h>
1
#include <string.h>
1

4
enum { MAXWORDS = 2000};
1
(以下略)
490デフォルトの名無しさん:2011/05/29(日) 00:31:12.58
>>489
macで動くかどうか試せないんだけど、動かなかった場合は問題がバグってるって言うと思う。
動くなら緻密な計算の結果だと思う。
491デフォルトの名無しさん:2011/05/29(日) 00:39:34.54
>>490
私の >>282 も mac で動くかどうか心配だなあ。
strtok() って使わないほうがいいかもしれませんねえ。
492デフォルトの名無しさん:2011/05/29(日) 00:40:30.00
>>489
お前のctypesが問題通りの値を返さないから。

>>159
> (a) 制御文字 (iscntrl(c)が1となる文字c)
> (b) 数字 (isdigit(c)が1となる文字c)
> (c) アルファベット以外の印刷可能文字 (isprint(c)が1で、isalpha(c)が0となる文字c)
493デフォルトの名無しさん:2011/05/29(日) 00:41:46.71
>>491
>>282はメモリリークしてるからなおすように。



確保したメモリを返さないのはメモリリークと呼ばれても

し か た な い で す よ ね wwww
494デフォルトの名無しさん:2011/05/29(日) 00:42:51.04
>>492
macだとそれ保証されてるの?
Cの規格だけでは保証されてないからわかんないんよ
495デフォルトの名無しさん:2011/05/29(日) 00:44:06.38
>>489
 [3.1] OS:Mac OS X
 [3.2] コンパイラ名とバージョン:gcc 4.1
ではちゃんと動くんですよ
緻密な計算してるんです
496デフォルトの名無しさん:2011/05/29(日) 00:44:45.67
>>491
isDelimiterで回避してると思う。
でも、0xffとand取ってるのは何でかわからず。この際ついでに補足してくれると助かる
497デフォルトの名無しさん:2011/05/29(日) 00:45:45.12
freeしてるのにメモリリーク発生してるって事は
プログラム終了時にメモリを返していなければメモリリークって事でOK?
498デフォルトの名無しさん:2011/05/29(日) 00:46:52.29
そうなるとGCある言語だとメモリリーク防ぎようがないなw
499デフォルトの名無しさん:2011/05/29(日) 00:48:39.31
>>494
>>159出した先生に言えよ。
500デフォルトの名無しさん:2011/05/29(日) 00:49:41.90

プログラム終了時にメモリを返すのは基地外とQZだけ
覚えとくように
501デフォルトの名無しさん:2011/05/29(日) 00:51:23.29
メモリリークってプログラム実行中にしか発生しないだろ。
終了した後は、どう転んでも回収されるんだから。
502デフォルトの名無しさん:2011/05/29(日) 00:53:09.20
>>497
それが、>>450の主張。

確保したメモリを返さないのはメモリリークと呼ばれても

し か た な い で す よ ね wwww




とっとと、>>282なおせよ。簡単ななおし方教えてやろうか?
mallocの代わりにmmap, freeの代わりにmunmapこれでケチの付けようがなくなる。

バカ丸出しだけどな。www
503デフォルトの名無しさん:2011/05/29(日) 00:54:13.00
>>499
保証されてるかどうかはわからんけど、ともあれ、macだとうまく動くってことかな
504デフォルトの名無しさん:2011/05/29(日) 00:55:08.82
>>502
freeしてればメモリリークと呼ばないのが>>450の主張だと思うんだが、どの辺でずれたの?
505デフォルトの名無しさん:2011/05/29(日) 01:06:35.11
>>504
>>502がそろそろ潮時かなって思ったあたりから
506282:2011/05/29(日) 01:10:37.88
>>493
ないと思いますよ、多分。
でも、もし見つかれば、メモリーリークしている領域の最初の16バイトを教えてください。(修正をかけます。)
それとメモリーリークの定義も。なにせ、malloc() しても free() しない(こともある)派のいうところのメモリーリークはよくわかりませんからね。

>>496
確かに私の環境では
ctype.h の is*(int c) は真のとき 32 を返しているなあ、1 じゃなく。

あと & をとっているのは、char c が符号拡張を受けると、往々にして2byte 文字を扱うときに嵌ってしまうから。
char が signed か unsigned かは環境依存だし、char -> int のプロモーションには特に気をつけて自分でどっちに転ぶか決めてしまっているのです。
これでいいのかどうかはわかりませんが。
507デフォルトの名無しさん:2011/05/29(日) 01:18:46.64
>>504
> strdupは内部でmallocを使っている。mallocしたメモリをfreeしないのはメモリリークだ。
とバカが宗教戦争を仕掛けてきたから、

mallocは内部でsbrk/mmap他を使っている、sbrk/mmapしたメモリを開放しないのはメモリリークだ。

と言っている。
508デフォルトの名無しさん:2011/05/29(日) 01:24:25.58
>>506
とっととメモリリークなおせよ。クズ。
509デフォルトの名無しさん:2011/05/29(日) 01:26:47.87
>>506
&の理由ありがとう。
>>371みたいにそもそもintで受けてしまうっていうのはどうなんだろ。
fgetcがint返すのも符号の問題があるからcharを避けたのかなぁ
510デフォルトの名無しさん:2011/05/29(日) 01:38:55.97
>>507
勝手にメモリーリークの定義をされても。
まあ、>>456 のとおり、メモリーリークの定義がふらふらしているようだし、やっぱりあんまり考えていないようですね。

>>507
> >strdupは内部でmallocを使っている。mallocしたメモリをfreeしないのはメモリリークだ。
これはひとつの考え方だと思いますよ。宗教戦争のネタになるくらいだから。

それに比べると、
>mallocは内部でsbrk/mmap他を使っている、sbrk/mmapしたメモリを開放しないのはメモリリークだ。
という宗教戦争は寡聞にして知りません。
free() しても OS にメモリリソースが返るとは限らないなんて、C FAQ にも書いてある既定事項なんですが、それをあげつらわれても。

であなたのいうところのメモリーリークってなんですか?
511デフォルトの名無しさん:2011/05/29(日) 01:46:46.65
>>509
演習問題などでは 7bit ascii しか使わないし、今回私が & を取ったのも、実ははじめて
gcc -ansi -pedantic -Wall
したらコンパイラが char は signed か unsigned かどっちですか?って聞いてくるもんだから、
ちゃっちゃと消しにまわっただけで、深い意味はありません。漢字でも扱わない限り問題ないんじゃないかなあ。
512デフォルトの名無しさん:2011/05/29(日) 01:52:20.91
こういう時のQZは見てて「こいついい所もあるな」と思える
513デフォルトの名無しさん:2011/05/29(日) 02:40:29.02
相手の言ってるメモリリークの意味が理解できてない時点で、あいかわらずバカだなあとしか
514デフォルトの名無しさん:2011/05/29(日) 02:53:18.62
>>513
だってわかりにくいんだもの。
>>456 でメモリーリークの例をあげておきながら、急に方針転換して、>>463 の定義にかわったので混乱してしまいました。
一貫していないんですよね。
515デフォルトの名無しさん:2011/05/29(日) 02:54:47.08
まあ頭が悪い所は相変わらずだな
516デフォルトの名無しさん:2011/05/29(日) 03:02:48.85
容姿ともども、まあ仕方ないです。
でも >>168 に一貫性がないことがよくわかりました。
ctype.h にはびっくりしましたし、悪い感情は持っていません。
おやすみなさい。
517デフォルトの名無しさん:2011/05/29(日) 03:20:19.41
>>168p.c
for (i = 0; words[i].count > 0; i++) {
   printf("%-32s %5d\n", words[i].word, words[i].count);
   free(words[i].word);
}
518デフォルトの名無しさん:2011/05/29(日) 03:26:41.13
月の英語名を配列に代入するプログラムhttp://ideone.com/UXI8aが
「 1 番目の引数を 'char *' から 'char **' に変換できません。」という
内容のエラーを起こしてしまいます。アドバイスをお願いします。
519デフォルトの名無しさん:2011/05/29(日) 03:26:46.08
>>463>>456の定義の変更だと思うあたり、頭悪すぎだな
520デフォルトの名無しさん:2011/05/29(日) 03:28:52.30
今回は長いな。QZ批判してる人がコード書いたから?

QZ:宿題の回答としては無駄に複雑かつ要件を満たしていない
QZ批判:macのis系が1を返すことが保証されていたとしても要件を満たしてない
QZ批判批判:かなり後から書いたにもかかわらずエラー処理がない
521デフォルトの名無しさん:2011/05/29(日) 03:30:18.36
char **m;
m = (char **)malloc(sizeof(char*) * 12);
522デフォルトの名無しさん:2011/05/29(日) 03:34:14.69
523デフォルトの名無しさん:2011/05/29(日) 03:37:05.49
>>521-522
ありがとうございました。
よければ原因がなんだったのか具体的に教えて下さい
524デフォルトの名無しさん:2011/05/29(日) 03:38:49.68
ねむれないや。
>>520
>QZ:宿題の回答としては無駄に複雑かつ
はしかたがないとして、

>要件を満たしていない
についてkwsk
525デフォルトの名無しさん:2011/05/29(日) 03:43:44.15
>>524
たいしたこっちゃないよ。
> 同時に現れた「単語」の総数をプリントすること。
526デフォルトの名無しさん:2011/05/29(日) 03:48:01.64
[1]C言語上級
[2]
malloc/realloc/callocで確保したヒープ変数がアプリケーション終了時
に確実にfreeされているかチェックする方法を考えて実装しなさい。
[3] Linux/Gcc4.5(Open source版)/C言語
[4] 無期限
527デフォルトの名無しさん:2011/05/29(日) 03:49:39.02
valgrind
528デフォルトの名無しさん:2011/05/29(日) 03:53:46.96
>>523
mはchar型へのポインタのポインタ(ポインタ配列)として確保しなければならないのに
char型へのポインタとして確保されていたから

そして呼び出しの型が合わずエラー
529デフォルトの名無しさん:2011/05/29(日) 03:54:02.34
valgrind使うなぁ。知らないなら教えてくれっていえばいいのに。
530デフォルトの名無しさん:2011/05/29(日) 03:55:00.45
>>526
CodeGuard
531デフォルトの名無しさん:2011/05/29(日) 04:03:19.26
オープンソースじゃないGCCってあるの?
532デフォルトの名無しさん:2011/05/29(日) 04:10:48.22
◆QZaw55cn4cって糞だよなぁ
533デフォルトの名無しさん:2011/05/29(日) 04:21:46.77
>>526のような物が出来るだけ必要ないようにC++ではデストラクタ、スマポ、
コンテナが用意されているんだよな

言葉を換えればそれだけCは原始的で車輪の再発明が当たり前のように
されているので時間と労力の無駄が多い
534デフォルトの名無しさん:2011/05/29(日) 08:39:14.53
>>526
Google Performance tools の Heap Checker使うとか、
もしくは既存のメモリアロケータラップしてshared_ptrのように参照カウント追加すればでいけそうな気がする。
535 ◆6W4srb4nmo :2011/05/29(日) 08:47:38.93
>同時に現れた「単語」の総数をプリントすること。
同時に、現れた「単語」の総数をプリントすること。
なら、出力に最初の1行も必要だね。
でも、句点が無いから強調の意味の繰返しとも読める。>>525
536デフォルトの名無しさん:2011/05/29(日) 08:52:01.41
せいぜい
my_mallocみたいなの作って、内部でカウンタ増やしてmalloc呼び出し
my_freeみたいなの作って、内部でカウンタ減らしてfreeするの作れってレベルじゃないのか?

授業内容どんなんなんだろうなぁ
537デフォルトの名無しさん:2011/05/29(日) 09:14:02.61
>>510
てめーがmallocしたメモリをfreeしないのはメモリリークだという勝手なルール押し付けてきたから、
「確保したメモリを開放しないのはメモリーリークだ」とより普遍化したルールを押し付けてるだけだ。

てめーのクソコードがメモリーリークしてる証拠だ。とっととなおせよ。

http://bellard.org/jslinux/でコンパイルできるようにインクルードと観測用のコード追加
http://codepad.org/tfiYIu9T

実行結果:
~ # cat /dev/clipboard > 282.c
~ # tcc -o 282 282.c
282.c:175: warning: assignment makes pointer from integer without a cast
282.c:177: warning: assignment makes pointer from integer without a cast
~ # ./282 < 282.c > /dev/null
0x804a000 0x804c000 <<< main_呼び出しの前後で変わっているすなわち、メモリーリーク

確保したメモリを返さないのはメモリリークと呼ばれても

し か た な い で す よ ね wwww
538デフォルトの名無しさん:2011/05/29(日) 09:27:50.10
日本語通じない相手に熱くなるなよ
539 ◆6W4srb4nmo :2011/05/29(日) 09:45:56.41
その方法実績ある?それとも実験?
540デフォルトの名無しさん:2011/05/29(日) 09:58:15.75
>>437>>438を教えていただけないでしょうか?
541デフォルトの名無しさん:2011/05/29(日) 10:04:43.10
>>540
>>438の仕様が大雑把なんだよな
まぁ適当に判断してやるよ
542541:2011/05/29(日) 10:19:30.19
すいません撤回しますスレ汚しすいませんでした
543デフォルトの名無しさん:2011/05/29(日) 10:43:54.52
>>537
お聞きしたいのは、議論をするために急遽でっちあげたルールではなくて、
>>168 を書いたときに念頭においていたルールであり、避けるべきメモリーリークとはなにか、ということです。
544デフォルトの名無しさん:2011/05/29(日) 10:47:38.77
>>542
スケルトンみたいなコードの作成を依頼してみては?QZさんが書いてくれるかも
545 ◆6W4srb4nmo :2011/05/29(日) 10:59:24.36
>避けるべきメモリーリーク
100円の小銭で105円の買い物をするの例え。
100円の小銭で30円の買い物3回してもよし。また100円足せば105円の買い物ができる。
strdup()も加える?なら、他にもありそうな無さそうな?>>526
546デフォルトの名無しさん:2011/05/29(日) 11:09:00.88
>>525
ご指摘感謝。訂正をかけます。

>>159 >>526
なお、calloc() については未対応です。
http://codepad.org/gShtpAyU
547デフォルトの名無しさん:2011/05/29(日) 11:32:41.63
>>537
普遍化かどうかは疑問ですね。
「malloc() したものは free() しない(こともある)派」、と括弧をつけてはいますが、
>>461 の指摘に答えはなく、実のところ、>>470 なんですね。
548デフォルトの名無しさん:2011/05/29(日) 11:38:39.34
普通はプログラム実行の最後まで参照が保持されてる
変数については、freeしなくてもメモリリークとは言わない
だって参照がある(使える)んだからね
549デフォルトの名無しさん:2011/05/29(日) 11:42:57.11
なんですね。(かわいい絵文字)
550デフォルトの名無しさん:2011/05/29(日) 11:45:28.17
このバカの思い込みを修正するのは時間の無駄
551デフォルトの名無しさん:2011/05/29(日) 11:48:08.34
>>548
GC 的には、それってまずいんじゃなかったんでしたっけ?
「普遍的」に使えないルールのような気が。
552デフォルトの名無しさん:2011/05/29(日) 11:50:24.15
>>551
プログラムがメモリを使いすぎているのと、
メモリリークは違うよ?
553デフォルトの名無しさん:2011/05/29(日) 11:59:33.07
>>552
free() しようと思えばいつでもできる、けどしない、ということですか。
完璧、というにはお粗末に見えるのですが。
554デフォルトの名無しさん:2011/05/29(日) 12:13:20.41
std::vectorはメモリリーク?
555デフォルトの名無しさん:2011/05/29(日) 12:22:31.92
内容:
[1] 授業単元:C
[2] 問題文(含コード&リンク):
正の整数を入力したとき、その数値が素数であれば「素数です」、素数でないなら「素数ではありません」と表示するプログラムを作成しなさい
入力した値が0または負の整数であれば、繰り返し再入力させるようにプログラムを作成すること
556デフォルトの名無しさん:2011/05/29(日) 12:23:52.11
>>553
そんなこと言ってなくて、単純にメモリリークとは何か?って話
GCのある言語だって参照が残ってたら回収されない
557デフォルトの名無しさん:2011/05/29(日) 12:32:20.82
>>555の続き
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:Visual Studio2008
 [3.3] 言語: C
[4] 期限:今日まで
558デフォルトの名無しさん:2011/05/29(日) 12:57:48.04
メルセンヌ素数も判定させるの?
559デフォルトの名無しさん:2011/05/29(日) 13:06:52.00
まず素数の定義からだな
560デフォルトの名無しさん:2011/05/29(日) 13:23:23.20
561デフォルトの名無しさん:2011/05/29(日) 13:29:21.01
[1] 授業単元:C
[2] 問題文(含コード&リンク):
「*」の記号を利用して、入力した数字を等しい2辺に持つ、次のような直角二等辺三角形を表示するプログラムを作成しなさい
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio2008
 [3.3] 言語: C
[4] 期限:明日まで
562デフォルトの名無しさん:2011/05/29(日) 13:30:06.38
無駄ループすぎる
563デフォルトの名無しさん:2011/05/29(日) 13:31:34.11
>>543
オレのルールは>>451だ。したがってメモリリークはない。

てめーが宗教戦争仕掛けてきて勝手なルールを押し付けようとしたんだから、他人の
ルールも受け入れろ。
続く…
564デフォルトの名無しさん:2011/05/29(日) 13:32:37.42
>>561
#include <stdio.h>
int main(void) {
int i, j, n;
scanf("%d", &n);
for(i = 0; i < n; i++) {
for(j = 0; j <= i; j++) putchar('*');
putchar('\n');
}
return 0;
}
565デフォルトの名無しさん:2011/05/29(日) 13:34:00.85
>>563の続き

これからお前が従うルールは「確保したメモリを開放しないのはメモリリーク」だ。
そして>>282のうんこコードをとっととなおせ。

確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
566デフォルトの名無しさん:2011/05/29(日) 13:44:33.69
お前らカルシウム不足なの?
567デフォルトの名無しさん:2011/05/29(日) 14:06:10.77
>>563
リンク先まちがっていませんか?
>>470 でしょう?
568デフォルトの名無しさん:2011/05/29(日) 14:12:43.29
>>282
おい、カス。なんとも見る気の起きないうんこコードだけど、頑張ってみてやったぞ。
> if (*(p - 1) == '\n')
> *(p - 1) = '\0';

課題にない勝手なデリミタ判定すんな。後出しでこれかよ。www
569デフォルトの名無しさん:2011/05/29(日) 14:15:05.11
>>567
アンカーは間違っていたな。>>456だ。最初から言っている。
570デフォルトの名無しさん:2011/05/29(日) 14:30:27.44
>>282
なんとも、うんこなコードだねえ。
> exit(-1);
statusは実装依存だから、macosが期待する値(255以下の正整数)にするべき。

ヘボな初心者がよくやる間違い。www
571デフォルトの名無しさん:2011/05/29(日) 14:33:14.25
>>282
お前のルールでメモリリーク発見。wordがリークするぞ。www

> wd = xmalloc(sizeof(struct worddata), ID_WORDDATA);
> if (!wd) {
> fprintf(stderr, "cannot allocate enough memory, aborted.\n");
> exit(-1);
> }
572デフォルトの名無しさん:2011/05/29(日) 14:35:45.39
>>282
ここも二分木がリークするよな。www うんこコード。

> if (!word) {
> fprintf(stderr, "cannot allocate enough memory, aborted.\n");
> exit(-1);
> }
573デフォルトの名無しさん:2011/05/29(日) 14:40:28.86
なんか、変な奴がわいてるな。
574デフォルトの名無しさん:2011/05/29(日) 14:42:17.41
QZみたいなアホに的外れな突っ込みされて切れちゃった人がいるだけ
575デフォルトの名無しさん:2011/05/29(日) 14:45:40.06
そういう粘着のレビューはしたくないな
プロジェクトからはハズされるだろ、大体
576デフォルトの名無しさん:2011/05/29(日) 15:05:44.67
この程度で粘着っていうな。mygetlineのようなうんこコードは普通書き直しだぞ。
3文字読むたびにstrlen×2してreallocしてstrcatして … 目が腐る。
577デフォルトの名無しさん:2011/05/29(日) 15:09:39.94
>>576
草を生やしてまで書くような事じゃない
578デフォルトの名無しさん:2011/05/29(日) 15:11:46.24
草はうんこを見てしまった心に平穏を取り戻すために必要な儀式だ。
579デフォルトの名無しさん:2011/05/29(日) 15:17:07.33
>>578
どんな事が起きても平常心が保てないと、プロとは言えないw
580デフォルトの名無しさん:2011/05/29(日) 15:33:59.59
>>568
待ってました。ありがとうございます。
>課題にない勝手なデリミタ判定すんな。
そこは fgets() が勝手につけるデリミタを判定しているところですので無問題。
581デフォルトの名無しさん:2011/05/29(日) 15:37:13.42
>>580
iscntrlって知ってる?
582デフォルトの名無しさん:2011/05/29(日) 15:39:49.28
>>579
だからその平常心を保つための儀式だ。
しかし、うんこなコードだな。二分木つくるpush。
無条件でノードを作っておいて、検索して見つかったら廃棄。しかも再帰。

>>580
アウツ。fgetsが勝手につけるんじゃなくて元データからそうなっている。
583デフォルトの名無しさん:2011/05/29(日) 15:41:18.06
>>570
ご指摘ありがとうございます。
引数の値がどのように返されるかは環境依存なんで、逆にどんな値をつかってもいいのでは?
584デフォルトの名無しさん:2011/05/29(日) 15:44:38.89
>>582
>無条件でノードを作っておいて、検索して見つかったら廃棄。
んー、んー、たしかにつらいですね。かといって毎回、追加前に検索をかけるのも同じくらいにうんこだし。
なにかいい知恵があれば教えてください。
585デフォルトの名無しさん:2011/05/29(日) 15:50:46.23
>>576
ご指摘ありがとうございます。
「3 文字ごとにぐるぐる」ですが、
#define BUFFSIZE 3 /* >= 2 */
で指定していますので、2 以上の数値であればOKです。環境にあわせて 1024 なり 65536 なりに設定できるようにしています。
なおこの数値に関わらず、ファイルの1行あたりのバイト数に拘束されないように作っております。
586デフォルトの名無しさん:2011/05/29(日) 15:54:55.28
>>571 >>572
たしかに malloc() が NULL を返すと、すべてを放り投げて終了させていますね。
malloc()-free() 教徒としては、異常系でも free() するところでしょうけれども、信心が足りないところを見つけられてしまいましたか。
587デフォルトの名無しさん:2011/05/29(日) 16:02:50.38
http://www.dotup.org/uploda/www.dotup.org1672214.jpg
いやぁダービーで儲けさせてもらった。
プログラミングだけじゃやっぱ食っていけねぇ
588デフォルトの名無しさん:2011/05/29(日) 16:07:19.00
>>582
ご指摘のとおり、'\n' を無条件にデリミタとして扱っております。
本来ならば、
int isDelimiter(char c)
で判定させるべきでした。
ただし、iscntrl('\n') は真ですので、問題の条件を満たしており問題はありません。
589デフォルトの名無しさん:2011/05/29(日) 16:20:25.02
>>528
ありがとうございました。
590デフォルトの名無しさん:2011/05/29(日) 16:30:26.48
1] 授業単元:C演習
[2] 問題文
30 29   28 27 26 計 140
25 24   23 22 21 計 115
20 19 18 17 16 計 90
15 14 13 12 11 計 65
計  計   計  計  計
90 86 82 78 72

[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio2010
 [3.3] 言語: C
[4] 期限:6月8日
Tfor文 もしくはwhile もしくはswitch
U配列利用パターン
構造体は使わず(未履修)
I,2両方です。とほほ・・・。課題やり始めると時間がワープするみたいに
飛んでってしまう。その割にはエラーしか出ない。
591デフォルトの名無しさん:2011/05/29(日) 16:32:35.29
>>590
「2chで答えを貰う」ってのが課題なの?
592デフォルトの名無しさん:2011/05/29(日) 16:37:03.58
>>590
>>1
・問題文は、出題されたまま全文を書いてください。
593デフォルトの名無しさん:2011/05/29(日) 16:49:49.74
>>590
>課題やり始めると時間がワープするみたいに飛んでってしまう。
快感でしょう。
で、なにをどうすればいいのでしょうか?
594デフォルトの名無しさん:2011/05/29(日) 17:01:03.93
これ回答が何本のプログラムなのか、興味津々
595 ◆6W4srb4nmo :2011/05/29(日) 17:15:10.76
1. これはメモリーリーク? 168( ) 282( ) 369( )
while(1){
  words[0].word = strdup(p);
  words[0].word = strdup(p);
}
2. これはメモリーリーク? 168( ) 282( ) 369( )
words[0].word = strdup(p);
3. これはメモリーリーク? 168( ) 282( ) 369( )
words[0].word = strdup(p);
words[0].word = strdup(p);
free(words[0].word);
596デフォルトの名無しさん:2011/05/29(日) 17:56:14.86
>>590
難問過ぎるだろ
597デフォルトの名無しさん:2011/05/29(日) 18:06:52.43
>>590 なんか出力結果が違うけどゴメンネ
#include <stdio.h>

int main(void)
{
int i, j, x=30;
int sum_h, sum_v0=0, sum_v1=0, sum_v2=0, sum_v3=0, sum_v4=0;

for(i=0;i<4;i++){
sum_h=0;
for(j=0;j<5;j++)
{
sum_h+=x;
switch(j)
{
case 0: sum_v0+=x; break;
case 1: sum_v1+=x; break;
case 2: sum_v2+=x; break;
case 3: sum_v3+=x; break;
case 4: sum_v4+=x; break;
}
printf("%3d ", x);
x--;
}
printf("計 %3d\n", sum_h);
}
printf(" 計 計 計 計 計\n");
printf("%3d %3d %3d %3d %3d\n", sum_v0, sum_v1, sum_v2, sum_v3, sum_v4);

return 0;
}
598デフォルトの名無しさん:2011/05/29(日) 18:07:02.47
>>541
>>438の仕様が大雑把なんだよな
まぁ適当に判断してやるよ

よろしくお願いします。
後、課題のプリントのほうにプログラムの例が載っているのですが、
そちらも記載した方がよろしいでしょうか?
599 ◆QZaw55cn4c :2011/05/29(日) 18:10:14.96
>>595
>>548 >>553 あたりで収束したようです。予定通りです。
600デフォルトの名無しさん:2011/05/29(日) 18:45:25.78
現状、C言語はOSとデーモンの作成で使われることが多いから、システムによるメモリ回収を当てにしては駄目。
601 ◆6W4srb4nmo :2011/05/29(日) 18:48:58.16
602デフォルトの名無しさん:2011/05/29(日) 18:51:25.87
>>600
じゃあ、異常系でも回収するコードを書くのが信徒には要求されるのですね。けっこうつらいんですけど。
603デフォルトの名無しさん:2011/05/29(日) 18:58:18.09
>>602
異常系でも回収するコードを書くよ。だからC言語って生産性が悪いんだ。コードの大半がエラー処理だ。
通常、goto文でmallocとfreeを上下対称に書く(mallocに限った話じゃないが)。
int foo(void)
{
char *a, *b, *c;
a = malloc(1, sizeof(*a));
if (a == NULL) {
/** エラー出力 */
return文
}
b = malloc(2, sizeof(*b));
if (b == NULL) {
/** エラー出力 */
goto err1;
}
c = malloc(3, sizeof(*c));
if (c == NULL) {
/** エラー出力 */
goto err2;
}
/** なんかの処理(free(a), free(b), free(c)とかするのかも) */
return文
err2:
free(b);
err1:
free(a);
return文
}
604デフォルトの名無しさん:2011/05/29(日) 19:03:51.18
>>603
ふむ。
思い通りの malloc() にNULL を返させるにはどうすればいいでしょうか。
私の xmalloc() ならば簡単ですが、一般にはそういうのは使わないでしょうし。
605デフォルトの名無しさん:2011/05/29(日) 19:08:58.56
>>604
機能テストレベルなら自プログラムの裏でメモリを食いまくるプロセスを動かすとかかな。
単体テストレベルなら、テスト用ライブラリでmallocをオーバーライドさせて、
任意のタイミングでNULLを返すとかやるんだろう。
606デフォルトの名無しさん:2011/05/29(日) 19:09:23.68
malloc() はライブラリだとわかってて無理言わない。
607デフォルトの名無しさん:2011/05/29(日) 19:13:00.34
プリプロセッサで頑張るのだ。
#include <stdio.h>
#include <stdlib.h>

#define malloc mymalloc

static void *mymalloc(size_t size)
{
return NULL;
}

int main(void)
{
char *a;

a = malloc(1);
if (a == NULL) {
perror("malloc");
return 1;
}

free(a);
return 0;
}

あるいはgdbにお願いするか。
608デフォルトの名無しさん:2011/05/29(日) 19:13:31.01
俺はデバッガ使う
609デフォルトの名無しさん:2011/05/29(日) 19:24:00.22
>>603
メモリプールでも使ってろよ
610デフォルトの名無しさん:2011/05/29(日) 19:26:07.58
>>609
うるせーマイコン馬鹿。
611デフォルトの名無しさん:2011/05/29(日) 19:29:14.49
>>603
もうちっと考えれば少し楽できるよ
612デフォルトの名無しさん:2011/05/29(日) 19:32:58.88
>>611
mallocを3回読んでるのは例え話であって、a, b, cを配列的にアクセスすればいいんじゃね?ってのとはちょっと違う。
1回目のmallocがfopenとかでもエラー処理は必要でしょ?
613デフォルトの名無しさん:2011/05/29(日) 19:34:19.48
>>612
そうじゃなくてNULLで初期化しておくと楽できるってだけ
オーバーヘッドが云々とか言われたら知らんけど
614デフォルトの名無しさん:2011/05/29(日) 19:36:51.93
よく分からん。
もう少し詳しく。
615デフォルトの名無しさん:2011/05/29(日) 19:45:52.81
591>発想、思わぬ使い方。
しょぼ、しょぼ、なが〜いプログラムをつくる。
ところが、出来る人がつくると、
えーこんなにみじかいのとか、こんなやり方が
あるのとか。
 ブレークスルーをもとめてみたいな。
616デフォルトの名無しさん:2011/05/29(日) 20:23:50.19
>>615
地の言葉を使いたまえ、キミに合わせよう
617デフォルトの名無しさん:2011/05/29(日) 21:04:14.42
>>614
free(NULL) はなにもしないから、NULL で初期化しとけば、取り合えず
エラー時は free(a); free(b); free(c); ってやっとけばいいって話だろ。

>>612 で fopen() の話出てるんだから、オーバーヘッド以前に単なるバカ
だと思うけど。
618613:2011/05/29(日) 21:06:42.25
>>617
自分が分からないからって馬鹿呼ばわりはヒドイな
619デフォルトの名無しさん:2011/05/29(日) 21:10:19.64
>>604
Fault Simulator でも使えばええやん、


って書こうとしたら、メーカーの Web に載ってない...。
Micro Focus に吸収されたときに、無くなったんだろうか。
620デフォルトの名無しさん:2011/05/29(日) 21:12:42.84
>>618
> 自分が分からないからって馬鹿呼ばわりはヒドイな

じゃあ、ちゃんと説明してみて。
621613:2011/05/29(日) 21:15:39.66
>>620
まずはどこをバカだと思ったのか説明してみてよ
622デフォルトの名無しさん:2011/05/29(日) 21:19:13.78
>>604
こんなのある、
ちょっとプレゼン資料見難いけども。
623622:2011/05/29(日) 21:19:32.53
624デフォルトの名無しさん:2011/05/29(日) 21:36:15.50
>>621
>まずはどこをバカだと思ったのか説明してみてよ

>>617 だと fopen() はだめだろ。
なんかいい方法があるなら、書いてみてよ。
625デフォルトの名無しさん:2011/05/29(日) 21:41:03.21
>>622
こんなプレゼンどうやってつくったんだ?
今はやりなんですか?


ちょっとやってみたい。
626613:2011/05/29(日) 21:46:09.08
>>624
fopen がダメってどういうこと?
何か難しいことがあるの?
627デフォルトの名無しさん:2011/05/29(日) 21:55:31.79
fclose(NULL)はダメだって話だろ
mallocは一例に過ぎないんだから、それにしか適用できないものを出すのはアホ
628デフォルトの名無しさん:2011/05/29(日) 21:56:53.50
>>626
ねえ、>>613 で「楽できる」って書いてるんだから、その方法とっとと書いたら?
629613:2011/05/29(日) 22:09:53.01
答えでてんじゃん
630デフォルトの名無しさん:2011/05/29(日) 22:13:06.02
>>623
これ楽しいなぁ
631614:2011/05/29(日) 22:14:19.89
>>617
なるほどね
632デフォルトの名無しさん:2011/05/29(日) 22:14:44.52
>>629
>答えでてんじゃん

これのことか? (w

>> それにしか適用できないものを出すのはアホ
633613:2011/05/29(日) 22:16:20.75
>>632
fclose に NULL を渡さなきゃいいじゃんってことだよ
634デフォルトの名無しさん:2011/05/29(日) 22:19:05.53
>>633
お前のやり方だと fclose() に NULL 渡さないのも「楽できる」んだろ?

どうやってやるんだ?

書いてみなよ。
635デフォルトの名無しさん:2011/05/29(日) 22:21:48.51
もうどうでもいい

ちなみにfree(NULL)の挙動はC規約にある?
636613:2011/05/29(日) 22:23:29.95
>>634
自分で答え書いてるって言ったのになw
int hoge(void)
{
FILE *fp=NULL;
int *p=NULL;

fp=fopen(...);
if(fp==NULL) goto err;

p=malloc(...);
if(p==NULL) goto err;

// なんか処理

// 後処理とか

return 1;

err:
free(p);
if(fp) fclose(fp);
return 0;
}
637625:2011/05/29(日) 22:25:08.81
>>630
正直(最初は新鮮だった)ppt ももう飽きちゃって‥‥‥。
意味のない「眩暈感」がいい。

>>623 の内容自体を指しているのなら勘違いごめんなさい。
32bit 時代のアセンブラはちとわからない。
638デフォルトの名無しさん:2011/05/29(日) 22:31:18.54
>>635
free(NULL) はOK とあります。
ISO/IEC 9899:1999 7.20.3.1.2

fclose(NULL) はない。
ISO/IEC 9899:1999 7.19.5.1
639デフォルトの名無しさん:2011/05/29(日) 22:33:50.81
>>638
thx
640デフォルトの名無しさん:2011/05/29(日) 22:35:37.96
>>635
>ちなみにfree(NULL)の挙動はC規約にある?

ある。

>>636
さんざ引っ張って結局それかよ。
641デフォルトの名無しさん:2011/05/29(日) 22:38:17.81
>>636
>if(fp==NULL) goto err;
>if(fp) fclose(fp);

なんで、こんな一貫性のないコードが書けるんだ?
642デフォルトの名無しさん:2011/05/29(日) 22:40:29.40
正直どうでもいい
643デフォルトの名無しさん:2011/05/29(日) 22:45:08.72
>>636がアホすぎるw
644デフォルトの名無しさん:2011/05/29(日) 22:46:56.34
2人以上関わりたくない人間がいるということが分かった
645デフォルトの名無しさん:2011/05/29(日) 22:55:41.81
613とQZか
646デフォルトの名無しさん:2011/05/30(月) 01:36:21.40
>>645
いや、お前だろ
647デフォルトの名無しさん:2011/05/30(月) 01:42:11.16
http://codepad.org/FNSa1ZOS

これのシェルソートを選択ソートにしたいです
よろしくおねがいします

ソースコードのs[6]の比較回数 s[7]s[8]の交換回数が主に必要なデータになります
648デフォルトの名無しさん:2011/05/30(月) 04:00:01.76
649デフォルトの名無しさん:2011/05/30(月) 04:05:21.35
仮想メモリなはもとい、HDすらまともなものがなく、シェルすら貧弱だった
時代はmalloc/freeは一体不可分。
不要なメモリは極力システムに返すように設計しなければ、システム
全体が使い物にならなかった。
しかし何故かコードはメモリにロードされっぱなしだったことが問題視され
ていて、DLLやらSOなどの概念が生まれたが、これはHDがそれなりに
発達して仮想メモリも実現できるようになった頃と大差がなかった
650デフォルトの名無しさん:2011/05/30(月) 04:34:16.09
651デフォルトの名無しさん:2011/05/30(月) 04:44:26.45
>>647
http://ideone.com/FjhTh

こんな感じですか?
s[]の付け方の基準がいまいち分からないのでご自分で後は修正して下さい
実行オーダーはO(N^2)のはずです
652デフォルトの名無しさん:2011/05/30(月) 05:07:40.24
653デフォルトの名無しさん:2011/05/30(月) 05:34:37.59
654デフォルトの名無しさん:2011/05/30(月) 06:02:45.70
655デフォルトの名無しさん:2011/05/30(月) 06:36:28.12
656デフォルトの名無しさん:2011/05/30(月) 06:36:36.86
名前:入れないから2人で話してるつもりになる。>>614
657デフォルトの名無しさん:2011/05/30(月) 08:12:36.13
658デフォルトの名無しさん:2011/05/30(月) 08:35:24.01
>>603
killされたときにもシグナル捕まえてちゃんとfreeしないとダメだね。
SEGVとかメモリアロケータの中で発生する事も多いけど、特製のメモリアロケータなんだろうな。

大変だな、信者。
659デフォルトの名無しさん:2011/05/30(月) 08:46:34.20
660デフォルトの名無しさん:2011/05/30(月) 08:58:23.65
661デフォルトの名無しさん:2011/05/30(月) 09:20:15.38
662デフォルトの名無しさん:2011/05/30(月) 09:28:43.54
[1] 授業単元:C
[2] 問題文(含コード&リンク):
今回は、単方向リストを用いて電話帳のプログラムを作ってもらいます。実装するのは、入力、削除、表示、終了、load、saveです
1.入力は、名前、電話番号を入力する。(可能ならばソートを行う)
2.saveは終了時にsaveを行うかどうか判断してから終了を行う(txtで保存する)
3.loadで読み込んだtxtファイルに再び、入力、削除、表示を行えるようにする
4.ヒント(mallocの意味を調べること)

[3.1] OS:vista
[3.2] コンパイラ名とバージョン:Linux又は、Visual Studio
[3.3] 言語: C
[4] 期限:本日中
663デフォルトの名無しさん:2011/05/30(月) 09:35:18.29
typedef struct List /* 電話帳の構造体 */
{
char name[ NAMESIZE ]; /* 氏名 */
char tel[ TELSIZE ]; /* 電話番号 */
struct List *next; /* 次の電話帳のアドレス */
} List;

List *input( List *head ); /* データを入力する関数 */
    ・
int main(void)
{
List *list,*head;
char command = '\0';

head = load( head );
while( 1 )
{
printf( "コマンドを入力してください\n" );
printf( "入力(I),削除(D),表示(P),終了(E): ");

command = getchar();
while( getchar() != '\n');

switch( command )
{
case 'I':
case 'i':
head = input( head );
              ・
よろしくおねがいします。
664デフォルトの名無しさん:2011/05/30(月) 09:37:36.94
>>663>>662のプログラム例です。
よろしくおねがいします
665デフォルトの名無しさん:2011/05/30(月) 09:48:34.83
666デフォルトの名無しさん:2011/05/30(月) 10:22:48.81
667デフォルトの名無しさん:2011/05/30(月) 10:56:12.08
668デフォルトの名無しさん:2011/05/30(月) 11:23:09.29
669647:2011/05/30(月) 11:37:09.52
s[]には各項目が実行された回数が入ってると思うのですが

シェルソートと交換回数は同じになると思のですが、交換回数と思われるs[7]で降順だけとても大きな数になるのはなぜでしょうか?
また比較回数はどこにあたるのでしょうか?

よろしくお願いします
670デフォルトの名無しさん:2011/05/30(月) 11:51:17.16
671デフォルトの名無しさん:2011/05/30(月) 12:24:59.19
672デフォルトの名無しさん:2011/05/30(月) 12:59:51.28
673デフォルトの名無しさん:2011/05/30(月) 13:28:22.10
>>658
シグナルハンドラから抜けた先は、C のスタートアップですか?ならば信者としては free() しなくちゃいけないですね。
そうでなければ、free() する必要性を感じませんね。
674 ◆Iw3CQ.CfHS9w :2011/05/30(月) 14:31:15.30
++s[6] &&
↑いらない >>669
s[5]++; if (a[j] < min) {
s[6]++; min = a[j];
s[7]++; k = j;
 }
}
s[8]++; t = a[minIdx]; a[minIdx] = a[i]; a[i] = t;
675674 忍法帖【Lv=1,xxxP】 ◆/91kCCQXBo :2011/05/30(月) 14:40:02.73
int i, j, k, min, t;
s[8]++; t = a[k]; a[k] = a[i]; a[i] = t;
修正
676デフォルトの名無しさん:2011/05/30(月) 15:28:03.09
ありがとうございます
プログラム修正したのですが
シェル
http://ideone.com/whXyL
選択
http://ideone.com/Cl39G

昇順で0になるので
比較回数はランダム2399 昇順0 降順62500
交換回数はn - 1 でどれも499でいいのでしょうか?
677デフォルトの名無しさん:2011/05/30(月) 15:54:02.58
>>662>>663
どうにかお願いできないでしょうか?
678デフォルトの名無しさん:2011/05/30(月) 15:57:35.11
>>673
お前バカすぎて話になんない。
スタートアップに帰るならfree必要、それ以外は不要という教義に修正するのか? ww
信者たる者、どんな条件でもfreeすべきだろ。
c6e5511a42026dc7b7f43848fec3cdcdf53fe2ab4d7b8d86d8372510f7742b79
679 忍法帖【Lv=1,xxxP】 674 ◆/91kCCQXBo :2011/05/30(月) 16:04:57.42
比較  回数はどれも124750 倍i=1,n-1} i
比較成功回数はランダム2399 昇順0 降順62500
交換  回数はどれも499 n-1
680602:2011/05/30(月) 16:10:56.74
>>678
神の教えはそう説くのですが、我ら下々には時として苛斂誅求な要求でもあり、世の宗教にも修正主義という言葉もありますし、
適当なところで折り合いをつけるのが、ひいては神の御威光を世に知らしめることになると信じております。
神よ、なにとぞお許しを。異常系の free() は勘弁してください。
681デフォルトの名無しさん:2011/05/30(月) 16:25:04.23
1.言語/環境
C / Linux

2.問題文
あるアルファベットの文字列中に出現する「a」の出現数を表示するプログラムを作れ。

3.条件
アルファベットの文字列は確実適当にプログラム内に作ること。

26文字全てのアルファベットの出現数を保持する配列を作ること。

大文字、小文字は区別しない。



宜しくお願いします。
682デフォルトの名無しさん:2011/05/30(月) 17:10:13.22
>>680
教義を修正するという事はてめーが仕掛けた宗教戦争の敗北を認めて撤退するんだな?
二度と来んなカス。
683デフォルトの名無しさん:2011/05/30(月) 17:47:29.87
>>682
んー、落としどころは予定通り >>599 となりましたし。
あと、strdup() の返り値が NULL かどうかみていない、とつっこもうかと思いましたが、それは >>282 にもいえることですので、遠慮しておきました、って書いてるくせに本当に遠慮してるのか?
それより次の宿題、宿題。
684デフォルトの名無しさん:2011/05/30(月) 20:22:51.22
>>683
うんこな教義を異教徒に押し付けようと宗教戦争仕掛けた詫びを入れてもらおうか。
685デフォルトの名無しさん:2011/05/30(月) 20:55:21.55
内容:
[1] 授業単元:課題
[2] 問題文:次に示す関数はどのような計算、処理を行うものか説明せよ。
問1.1
int sum(int start, int end)
{
int ans;
inti;
ans = 0;
for(i = start; i <= end; i++){
ans = ans + i;
}
return ans;
}
問1.2
int is_number(char c)
{
if('0' <= c && c <= '9'){
return 1;
}
else{
return 0;
}
}
[3] 環境
 [3.1]Linux
 [3.2]gcc
 [3.3] 言語:C
[4] 期限:本日中
686デフォルトの名無しさん:2011/05/30(月) 21:14:33.16
[1] 授業単元:課題
[2] 問題文:問3.1次の関数を作成せよ。
/*xとyのうち小さいほうを返す*/
double min2(double x, double y)
問4.1
問3.1の関数min2を利用して4つの実数値から最小の値を返す関数min4を作成せよ。
/*w,x,y,z*/
double min4(double w, double x, double y, double z)
問4.2
関数の効能が3つ挙げられている。関数の効能がどのようなものか問4.1の関数min4の作成を具体例として挙げて説明せよ。

1.関数単位で手続きをまとめることにより、プログラム全体を見通しよく構成することができる
2.関数にまとめられた手続きは手続きの詳細を知らなくても呼び出すだけで簡単に利用できる
3.よく使う手続きを関数の形にまとめておき何度でも再利用できる
[3] 環境
 [3.1]Linux
 [3.2]gcc
 [3.3] 言語:C
[4] 期限:本日中
687デフォルトの名無しさん:2011/05/30(月) 21:21:29.22
1.1:startからendまでの総和を計算する
1.2:文字cが数字なら1を0を返す
688デフォルトの名無しさん:2011/05/30(月) 21:26:43.94
[1] 授業単元:課題
[2] 問題文:問2次のプログラムにTEL:(0561)89-2111を入力したときの実行結果を書け。
#include<stdio.h>
int main(void)
{
char string[128];
char *strPtr;
printf("文字?");
scanf("%s",string);
for(strPtr = string;*strPtr != '\0';strPtr++){
if(is_number(*strPtr)){//前レスの問1.2の関数
*strPtr = '#';
}
}
printf("%s\n",string);
return 0;
}
[3] 環境
 [3.1]Linux
 [3.2]gcc
 [3.3] 言語:C
[4] 期限:本日中
689デフォルトの名無しさん:2011/05/30(月) 21:29:31.19
0111101101111#
690デフォルトの名無しさん:2011/05/30(月) 21:52:18.02
(####)##-####
691デフォルトの名無しさん:2011/05/30(月) 21:52:42.20
前レスの問2でTEL:(0561)89-2000を入力したときの結果もよろしくお願いします。
またなぜそのような結果になるのか教えてもらえないでしょうか?
692デフォルトの名無しさん:2011/05/30(月) 21:56:45.59
>>662
http://codepad.org/gDrQfjcR>>684

>>684
んー、根に持つタイプなんですね。
693692:2011/05/30(月) 21:58:12.00
>>662
リンクミスを訂正します。
http://codepad.org/gDrQfjcR
694デフォルトの名無しさん:2011/05/30(月) 22:04:26.43
/* xとyのうち小さいほうを返す関数 */
double min2(double x, double y)
{
  if(x<y) return x;
  else return y;
}
/* 関数min2を利用して4つの実数値から最小の値を返す関数 */
double min4(double w, double x, double y, double z)
{
  return min2(min2(w,x), min2(y,z));
}
695デフォルトの名無しさん:2011/05/30(月) 22:26:32.60
>>662
http://codepad.org/aNXNHnz9 visual c

>>692
あたりめーだ。てめーが自分から仕掛けた宗教戦争で全面敗北したんだからな。
696デフォルトの名無しさん:2011/05/30(月) 22:27:45.94
[1] 授業単元:課題
[2] 問題文:
関数の効能が3つ挙げられている。関数の効能がどのようなものか前レスの問4.1の関数min4の作成を具体例として挙げて説明せよ。
1.関数単位で手続きをまとめることにより、プログラム全体を見通しよく構成することができる
2.関数にまとめられた手続きは手続きの詳細を知らなくても呼び出すだけで簡単に利用できる
3.よく使う手続きを関数の形にまとめておき何度でも再利用できる
[3] 環境
 [3.1]Linux
 [3.2]gcc
 [3.3] 言語:C
[4] 期限:本日中
697デフォルトの名無しさん:2011/05/30(月) 22:34:37.32
>>695
>List **find(List **p, const char *name, const char *tel)
この書き方が個人的に好み。
でも、なぜ、データの書き換わらない find() で List **p を渡すのですか?むしろ、
input(List **haed, ...)
delete(List **head, ...)
load(List **had, ...)
の方が合理的だと思いますが、どうでしょうか?

あと線形リストのソーティングはおいしい課題なのに、パスするとはもったいない。
698デフォルトの名無しさん:2011/05/30(月) 22:53:48.45
>>697
コード読めないバカは引っ込んでろ。
699デフォルトの名無しさん:2011/05/30(月) 22:54:20.78
>>695
失礼。線形リスト全体にソーティングはかけずに、insert() のときに挿入点を見つける形にしているのですね。なるほど。
700デフォルトの名無しさん:2011/05/30(月) 23:19:05.69
>>662
線形リスト全体のソーティングは(馬鹿馬鹿しいので)とりやめ、
>>695 に習って、入力時に挿入ポイントを探す形に訂正いたしました。
http://codepad.org/2B6aNIrD
701デフォルトの名無しさん:2011/05/30(月) 23:54:39.04
線形リストのソートは要素数が増えると馬鹿らしいほど遅くなる
Bidirectional Iteratorだから速いソートは大抵使えないし

俺はいつも各オブジェクトを指すポインタ配列をソート前にリストを
一なぞりして作りそれでqsort()ソートし、後からリストをつなげ直している
その方が圧倒的に速い
702デフォルトの名無しさん:2011/05/30(月) 23:57:43.36
>>701
線形リスト使う理由がなさそうだ
703デフォルトの名無しさん:2011/05/30(月) 23:59:47.60
>>702
でも確かC++のstd::listのメンバ関数sort()はそうやってると聞いたぜ
704デフォルトの名無しさん:2011/05/31(火) 00:07:52.63
>>702
要素の追加を重視する場合に有効。
705デフォルトの名無しさん:2011/05/31(火) 00:10:23.10
listは挿入やカット&ペーストがO(1)だからな
vectorはO(N)
706デフォルトの名無しさん:2011/05/31(火) 00:43:35.74
>>701
浪漫がない‥‥いや、独り言。
シェルソートあたりが実用的に使えないでしょうか。
707デフォルトの名無しさん:2011/05/31(火) 00:50:59.98
うんこコード見てないが、まさか線形リストをそのままソートしてたのか?
線形リストをダイレクトにソートするなんて発想は想定外だぜ。さすがうんこ。ww
708デフォルトの名無しさん:2011/05/31(火) 00:55:00.32
>>706
シェルソートも要素数が多いと最初のうちは要素を走査する時間がO(N)掛かって
全体としてはO(1/2N^2)=O(N^2)となるだろ
709デフォルトの名無しさん:2011/05/31(火) 00:56:04.96
>>707
リンクをピシパシ張りなおすのは一度やってみたいと思いませんか?普通思わない‥‥‥そうですか。そうかもしれない。
710デフォルトの名無しさん:2011/05/31(火) 00:58:35.27
>>706
暇だったらN=1000000位で双方向リストでシェルソートとポインタを拾ってポインタ配列を
作ってそれでソートしてそれを元にポインタを付け直すのと時間を比べてみてくれ
711デフォルトの名無しさん:2011/05/31(火) 00:59:12.62
>>658
SIGKILLの場合、OSがプロセスの終了と共に根こそぎメモリ管理情報を解放するから要らない。
近頃はメモリアロケータの中ではSEGVは起こらず、
メモリアロケータから戻った後にメモリアクセス、例外、頑張ったがメモリアロケートできません、SEGVが起こる。
712デフォルトの名無しさん:2011/05/31(火) 01:13:37.43
>>711
うんこ教信者はmallocしたメモリは全部freeすべしという教義に従っている。
したがって如何なる場合においてもfreeしなければならない。
SIGKILLを捕まえられないOSは異端のOSだから使わないんだろ。

> 近頃はメモリアロケータの中ではSEGVは起こらず、
んなこたーない。
メモリをボロボロに破壊されてもSEGVを起こさないコーディングテクニックなど存在しない。
713デフォルトの名無しさん:2011/05/31(火) 01:16:15.10
あーそうか
シェルソートの場合、gap離れたオブジェクトを指すポインタは最初の一回の走査でいいか
後は隣のオブジェクトを辿るだけだからなあ
意外と速いかも

要素の交換はポインタの付け替えよりも内容をそっくり入れ替えた方が速いよなあ
714デフォルトの名無しさん:2011/05/31(火) 01:16:32.13
今時デマンドページング使わないシステムってあるのかな?
715デフォルトの名無しさん:2011/05/31(火) 01:18:09.23
特に今回の場合単方向リストだからいいかもしれんね
双方向リストはソートの場合あまり役に立たないか
結局Random Access Iteratorが使えないと何らかの技法が必要になる
716デフォルトの名無しさん:2011/05/31(火) 01:21:51.97
void shellsort(int n, keytype a[])
{
int h, i, j;
keytype x;

h = 13;
while (h < n) h = 3 * h + 1;
h /= 9;
while (h > 0) {
for (i = h; i < n; i++) {
x = a[i];
for (j = i - h; j >= 0 && a[j] > x; j -= h)
a[j + h] = a[j];
a[j + h] = x;
}
h /= 3;
}
}
シェルソートのメイン部分だがこの j-=h という部分が単方向リストだと苦しいなあ
それに双方向リストでもループ事に走査し直しだしやっぱりO(N^2)かなあ
717デフォルトの名無しさん:2011/05/31(火) 01:26:17.59
>>713
>内容をそっくり入れ替えた方が速いよなあ

そっか‥‥その発想の方がまともだなあ。
特に、container と containee(造語) を構造上でも分離する(void *data;)するのならば、それしかない。
あと、シェルソートより(この前見かけた)コムソートが有望ですね。
718デフォルトの名無しさん:2011/05/31(火) 01:30:19.70
コムソートか

h = h * 10 / 13;

これは一度全要素を走査して全要素数を把握しておく必要がある
それを除けば単方向リストには良さそうだ
719デフォルトの名無しさん:2011/05/31(火) 01:39:25.55
[1] 授業単元:演習
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1675270.c.html
   ◎パスワード:1234
[3] 環境
 [3.1] OS:ubuntu
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:5月中
[5] リンクのファイルの中に問題文も書いています。
  ポインタや構造体を十分に理解してない状態で作成していますので
  超初歩的な間違いばかりだと思いますがよろしくお願いします。
720デフォルトの名無しさん:2011/05/31(火) 05:16:16.52
宿題丸投げは謹んで下さい、あなたのためになりません。
721541:2011/05/31(火) 05:36:49.88
>>719
出来ておる喃…
722デフォルトの名無しさん:2011/05/31(火) 07:22:24.80
宿題丸投げは、有償が常識
むかしモリタポだけでやってくれるスレがあったのだが
潰された
723デフォルトの名無しさん:2011/05/31(火) 09:01:45.36
>>722
>有償が常識

有償でやるなら自分でブログ作ってそこでやれQZの糞
724デフォルトの名無しさん:2011/05/31(火) 11:16:33.83
有償スレは回答者があまりにうんこ過ぎたので消滅した。

>>719
http://pastebin.com/wRxCA191
%F, %Sは設問が不明なのでパス。
725デフォルトの名無しさん:2011/05/31(火) 13:43:11.91
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
int型の二つの同じ長さを持つ配列があるとする。
この二つの配列の値の和を一方の配列に代入する関数
void add(int *address1, int * address2, int length)を定義し、
その動作を確認するプログラムkadai7-1.cを作りなさい。
ただし、答えはaddress1で指定された配列に代入されるものとし、
lengthは2つの配列の長さを表すものとする。
ただし、int a[2], b[2];
scanf("%d %d %d %d", &(a[0]), &(a[1]),&(b[0]),&(b[1]));
で配列の値をセットするものとして、答えは以下で出力されるものとする。
printf("a = %d %d, b = %d %d\n", a[0], a[1], b[0], b[1])
[3] 環境
 [3.1] OS:linax
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: ([2011年6月2日まで]

よろしくおねがいします。
726デフォルトの名無しさん:2011/05/31(火) 13:44:44.19
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力した10文字以内の任意の文字列の中で、
ある特定の文字が最初に表れる位置からそれ以降の部分文字列を返す関数
char *cut_str(char *address1, char target_char)を定義し、
その動作を確認するkadai7-2.cを作りなさい。
ただし、文字列と、ある特定の文字の入力は、
char str[10], target_char;
scanf("%s %c", str, &target_char);
で入力されるものとして、
答えは以下で出力されるものとする。
printf("answer = %s\n", cut_str(str, target_char));

[3] 環境
 [3.1] OS:linax
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: ([2011年6月2日まで]

727デフォルトの名無しさん:2011/05/31(火) 13:56:12.70
>>725
#include <stdio.h>

void add(int *address1, int *address2, int length)
{
while(length--) *address1++ += *address2++;
}

int main(void)
{
int a[2], b[2];
scanf("%d %d %d %d", &(a[0]), &(a[1]),&(b[0]),&(b[1]));
add(a, b, 2);
printf("a = %d %d, b = %d %d\n", a[0], a[1], b[0], b[1]);
return 0;
}
728デフォルトの名無しさん:2011/05/31(火) 15:11:10.72
それlengthが0だったら何が起こると思う?
729デフォルトの名無しさん:2011/05/31(火) 15:16:29.51
すまん.俺の勘違いだった
730デフォルトの名無しさん:2011/05/31(火) 15:17:04.44
>>728
バカ発見w
何が起こるか説明してみろよw
731デフォルトの名無しさん:2011/05/31(火) 15:24:05.42
おっしゃる通り俺がバカでした
732デフォルトの名無しさん:2011/05/31(火) 15:32:58.90
726
いみわからん
733732 忍法帖【Lv=2,xxxPT】 732:2011/05/31(火) 15:33:01.28
>>728 a b とも入力値と変化無し
>>726
#include <stdio.h>
char *cut_str(char *address1, char target_char){
  for( ;*address1; address1++)
    if(*address1 == target_char)
      return address1;
  return address1;
}
int main(void){
  char str[10], target_char;
  scanf("%s %c", str, &target_char);
  printf("answer = %s\n", cut_str(str, target_char));
}
734デフォルトの名無しさん:2011/05/31(火) 16:26:52.77
&(a[1])ってなんか用心深い書き方だな
735デフォルトの名無しさん:2011/05/31(火) 17:12:02.07
癖だろう
俺は取った
736デフォルトの名無しさん:2011/05/31(火) 17:15:00.51
値に&をつけてるような気持ち悪さがあるな
737デフォルトの名無しさん:2011/05/31(火) 17:28:32.49
>>735
取った?てことはわざわざ手元にコードをおいてるのね
738719:2011/05/31(火) 17:56:44.67
>>724
ありがとうございます!!!
739デフォルトの名無しさん:2011/05/31(火) 18:11:28.54
>>737
人の書き方は参考になる
自分の思いも付かないアルゴリズムとか平気であるしな
本なんか読むより余程ためになるよ
740デフォルトの名無しさん:2011/05/31(火) 18:20:50.00
>>739
そりゃそうだけど、>>727は見れば終わりでは。
…と、理解度を一括りにしてはいけないのは重々承知で。

でも、>>727を勉強に利用しようと思う段階の人が、
癖だろうと切り捨てるところに違和感を覚えた。

深読みしすぎですまない。
741デフォルトの名無しさん:2011/05/31(火) 18:35:51.73
勉強に利用しようなんて段階はとっくに過ぎてるよ
ただ勉強そのものは一生し続ける必要があるだろ
その時に変な括弧が付いていたら取りたくなるのが悲しき性
742デフォルトの名無しさん:2011/05/31(火) 18:38:41.19
勉強する段階でもないのに保存したのが何でなのかなぁって話。
宿題スレまとめwikiの更新してくれたとかかな
743デフォルトの名無しさん:2011/05/31(火) 18:58:04.62
何でそんな事を知りたがるのか逆に不思議なんだが
744デフォルトの名無しさん:2011/05/31(火) 19:18:58.57
自演なんじゃないの
745デフォルトの名無しさん:2011/05/31(火) 19:43:24.81
出題文中のをコピペしただけって気づいてない人がいるのかな
746デフォルトの名無しさん:2011/05/31(火) 19:46:35.56
変な流れになる率が高い状態が続いているね
747デフォルトの名無しさん:2011/05/31(火) 20:29:07.00
[1] 授業単元:プログラミング演習
[2] 問題文
「不思議の国のアリス」の電子小説版(http://www.gutenberg.org/files/11/11.txt)の
本文に含まれている異なる単語の数を求めよ。ただし以下の条件は守ること。
・対象は「CHAPTER I. Down the Rabbit-Hole」の行から「THE END」の行までとする。
 両行ともカウント対象とする。プログラムは引数なしで実行し、カレントディレクトリにある
 alice.txtから本文を読み込ませること。出力は「異なる単語数」のみを数字で1つ出力すること。
・大文字は全て小文字にする。
・'(アポストロフィ)がついているものは1語と見なす。
 単語間にあるアポストロフィー以外の記号は無視する。
例:I'll , We'veなど
・綴りが同じであれば意味が違っていても1語とみなす。
単語末にあるアポストロフィについて、別の単語としてカウントしてください。
例:「I」は一人称単数(自分)としてのIとローマ数字の1を表すIの
例:cats' と cats 。
 2種類の使われ方がされているが、同じ単語とみなす。
・複数形( cup とcups)、過去・過去完了形(have とhad)、現在分詞形(have とhaving)の
 変化はそれぞれ別々の単語とみなす。
・- (ダッシュ)でつながれた単語は2語に分ける。
例:cherry-tart → cherry とtart
・その他の記号ははずす。
例;, . ! ? : や引用や台詞としてのシングルクォート
アポストロフィーの直前に記号がくる場合( 例 !' など)は無視する。

[3] 環境
 [3.1] OS: (Windows/Linux/等々):Windows7
 [3.2] コンパイラ名とバージョン:gcc バージョンは不明
 [3.3] 言語:C言語

748デフォルトの名無しさん:2011/05/31(火) 20:48:25.82
>>747
「無視する」の意味を教えてください。
>単語間にあるアポストロフィー以外の記号は無視する。
>- (ダッシュ)でつながれた単語は2語に分ける。
abc-xyz
は、
abc xyz
の2語になるとして、
abc&xyz

abcxyz と同等になるのですか?
それとも abc xyz の2語になるのですか?
どの記号だと2語にわけ、どの記号だと「無視する」――その記号が存在しないものとして扱う、のかもう少し情報がありませんか?

アポストロフィの扱いについて
>・'(アポストロフィ)がついているものは1語と見なす。
>単語末にあるアポストロフィについて、別の単語としてカウントしてください。
これは、アポストロフィはあたかもアルファベットの一部として扱うことでよいでしょうか?というか、そのように扱うつもりです。

>・その他の記号ははずす。
はずす、とはどういう意味ですか。あたかも存在しないように扱えばよろしいでしょうか?

情報をいただければありがたいです。とりあえずの雛形は 6/1 23:59 までには提供できると思います。
749デフォルトの名無しさん:2011/05/31(火) 21:01:57.59
txtのどこに&があるんだよw
750デフォルトの名無しさん:2011/05/31(火) 21:03:17.75
>>748
>単語間にあるアポストロフィー以外の記号は無視する。
「アポストロフィ以外の記号」を含むものはこれがない単語と
同じに扱うようにするということです。

>abc&xyzはabcxyz と同等になるのですか?
これはabcとxyzと分けて考えます

>これは、アポストロフィはあたかもアルファベットの一部として扱うことでよいでしょうか?
その通りです。

>はずす、とはどういう意味ですか。あたかも存在しないように扱えばよろしいでしょうか?
その通りです。記号が存在しなかったときの単語と同じ単語が他にあれば同一の単語とみ
みなし、カウントには含みません

情報が足りずすいません。どうかよろしくお願いします
751デフォルトの名無しさん:2011/05/31(火) 21:17:43.84
>>748
>とりあえずの雛形は 6/1 23:59 までには提供できると思います。
時間掛け過ぎだろ
今日中にしろ
752デフォルトの名無しさん:2011/05/31(火) 22:00:37.46
>>747
会話文の終わりのアポストロフィと
単語の終わりにくっついたアポストロフィとの
判定が難しすぎるw

こんな奴
it was labelled 'ORANGE MARMALADE',
753752:2011/05/31(火) 22:08:02.83
課題の文章だと最後にアポストロフィがつくのは全て会話文の終わりみたい
cats' は無いものとしてよさげ

こんだけ
MARMALADE'
ME'
not'
ME'
better'
thimble'
RABBIT'
won't'
sir'
nose'
were'
ordered'
never'
men'
754デフォルトの名無しさん:2011/05/31(火) 22:09:32.60
>>751
緻密な計算が間に合わないだろバカ
755デフォルトの名無しさん:2011/05/31(火) 22:11:13.64
>>754
あ?雛形まってんだよカス
756デフォルトの名無しさん:2011/05/31(火) 22:13:38.99
QZは緻密な計算(ってまだ続くの…?)に必要ないから関係ないと思うよ
757デフォルトの名無しさん:2011/05/31(火) 22:30:55.64
>>747
ビルド通ってないけどこんな感じ?
正直面倒くさい問題だ。C++のSTLでも使えれば楽だが・・・
alice.txtの中見てないから、最終行の判定が必要なのかもわからん。

http://ideone.com/Guopk

これ以上メンテナンスせんので、誰か引き継いでくれい。
参考にならなければ捨ててよし
758デフォルトの名無しさん:2011/05/31(火) 22:40:45.96
そんなことより、'tisは一単語として扱うべきなんだが判定できるか?
759デフォルトの名無しさん:2011/05/31(火) 22:43:16.90
>>758
難しいから例外として 'tis の判定を先にするくらいじゃね
760デフォルトの名無しさん:2011/05/31(火) 23:04:57.03
[1] 授業単元:プログラム言語
[2] 問題文:学籍番号、名前を入力する。
100件のデータが入力されるかEOF(Ctrl+Z)が入力されたら終了とする。
(学籍番号と氏名で1件とする)
例にならって結果を出力すること。
例:
入力:
学籍番号>1
名前>ISHIDA
学籍番号>6
名前>NAKATANI
Ctrl+Z
出力:
学籍番号1のアドレス:001F0F00 名前ISHIDAのアドレス:001F0F04
学籍番号6のアドレス:001F0F18 名前NAKATANIのアドレス:001F0F1C
              ・
              ・
              ・
※アドレスの値は環境によって変化します。
[3] 環境
 [3.1] OS:Windows 7 Pro
[3.2] コンパイラ名とバージョン: visual studio
 [3.3] 言語:C言語
[4] 期限: 2011年6月3日(金)午後6時まで
[5] その他の制限:学籍番号、名前には構造体を使い、
学籍番号はint型、名前はchar型とすること。
761760:2011/05/31(火) 23:08:15.05
訂正します。
>100件のデータが入力されるかEOF(Ctrl+Z)が入力されたら終了とする。
データは30件入力されたら終了とする です。大変失礼しました。
762デフォルトの名無しさん:2011/05/31(火) 23:21:37.86
名前の最大長は規定されてないの?
どんなに長い名前を入力されても問題なく動く必要があるの?
763760:2011/05/31(火) 23:32:48.50
>>762
特にそのような記述はないですね。

一応、授業ではいつも30字上限で設定しているので
30字でお願いします
764デフォルトの名無しさん:2011/05/31(火) 23:38:49.73
>>761
Ctrl+Zで終了がなくなると>>760の例に反するけどいいの?
765デフォルトの名無しさん:2011/05/31(火) 23:41:54.66
>>747
puts("2627");
766760:2011/05/31(火) 23:44:23.50
>>764
はい。大丈夫です。
問題文打ってたら目がそれて一部分
別の問題を書いてしまったようです。

データは30件の入力で終了で間違いありませんので、
30件打ち終えたら終了して、例のとおりに
学籍番号と名前のアドレスを表示させるようなプログラムで
よろしくお願いします。
767デフォルトの名無しさん:2011/06/01(水) 00:00:22.38
>>747 なんで文章が乱れてるの? それを良く読んだと思う。
単語末にあるアポストロフィについて、別の単語としてカウントしてください。
例:cats' と cats 。
例:「I」は一人称単数(自分)としてのIとローマ数字の1を表すIの
 2種類の使われ方がされているが、同じ単語とみなす。
768デフォルトの名無しさん:2011/06/01(水) 00:03:31.99
×
・綴りが同じであれば意味が違っていても1語とみなす。
単語末にあるアポストロフィについて、別の単語としてカウントしてください。
例:「I」は一人称単数(自分)としてのIとローマ数字の1を表すIの
例:cats' と cats 。
 2種類の使われ方がされているが、同じ単語とみなす。

・綴りが同じであれば意味が違っていても1語とみなす。
例:「I」は一人称単数(自分)としてのIとローマ数字の1を表すIの
 2種類の使われ方がされているが、同じ単語とみなす。
・単語末にあるアポストロフィについて、別の単語としてカウントしてください。
例:cats' と cats 。

だろうと適当に読み替えてた。
769748:2011/06/01(水) 00:39:05.98
>>747
>>753, >>758 の情報を加味して >>335 を改変したものです。
オプション -v で識別した単語を出力します。
http://codepad.org/EVPpsqbo


>>765
一致しました。
770デフォルトの名無しさん:2011/06/01(水) 00:58:22.04
>>751
前に似たものをつくっているので、それをベースに頑張ってみましたが、ちょっと足りませんでした。
771デフォルトの名無しさん:2011/06/01(水) 01:00:59.27
また二分木か
懲りないなロートルは
772デフォルトの名無しさん:2011/06/01(水) 01:15:25.97
>>771
適度に簡単でそこそこ速い二分木よりもいい map の実装は、そうみあたらないかと。
773デフォルトの名無しさん:2011/06/01(水) 01:34:18.97
二分木でなくてrealloc()で後からソートしてもいいだろ
同じ部分があるとすぐにバレるんだよ
774デフォルトの名無しさん:2011/06/01(水) 01:47:15.47
>>773
>二分木でなくてrealloc()で後からソートしてもいいだろ
??
kwsk
>同じ部分があるとすぐにバレるんだよ
他の方の実装を待ちましょうか。
775デフォルトの名無しさん:2011/06/01(水) 02:14:09.61
別に隠しながらコード書いてるわけでもないだろうけど、バレるとかどういう発想だろ
よほど自分のコードを出したくないのかと勘ぐってしまう。
って書くとお前が書けって言うのかなぁ。。
776デフォルトの名無しさん:2011/06/01(水) 02:45:53.23
>>769
相変わらずのソースコードでなにより
俺も嫌がらせっぽい解答を書くことはあるけど
ここまでやったことはない
感心した
777デフォルトの名無しさん:2011/06/01(水) 05:19:28.38
QZは糞
778デフォルトの名無しさん:2011/06/01(水) 06:32:14.56
QZさんはやはりコテを付けたほうが
779デフォルトの名無しさん:2011/06/01(水) 06:40:57.62
宿題片付けばQZでも誰でもいいよ。
780760:2011/06/01(水) 07:14:10.94
すみません、訂正でわかりにくくなったと思うので訂正したものを再度書き込みます。
[1] 授業単元:プログラム言語
[2] 問題文:学籍番号、名前を入力する。
データが30件入力されたら終了し、結果を出力する。
(学籍番号と氏名で1件とする)
例にならって結果を出力すること。
例:
入力:
学籍番号>1
名前>ISHIDA
学籍番号>6
名前>NAKATANI
              ・
              ・
              ・
出力:
学籍番号1のアドレス:001F0F00 名前ISHIDAのアドレス:001F0F04
学籍番号6のアドレス:001F0F18 名前NAKATANIのアドレス:001F0F1C
              ・
              ・
              ・
※アドレスの値は環境によって変化します。
[3] 環境
 [3.1] OS:Windows 7 Pro
[3.2] コンパイラ名とバージョン: visual studio
 [3.3] 言語:C言語
[4] 期限: 2011年6月3日(金)午後6時まで
[5] その他の制限:学籍番号、名前には構造体を使い、
学籍番号はint型、名前はchar型とすること。
781デフォルトの名無しさん:2011/06/01(水) 07:31:19.44
#include <stdio.h>

struct student {
int no;
char name[20];
};

int main(void)
{
struct student a[30];
int i;
printf("入力:\n");
for(i = 0; i < 30; i++) {
printf("学籍番号>");
scanf("%d", &a[i].no);
printf("名前>");
scanf("%s", a[i].name);
}

for(i = 0; i < 30; i++) {
printf("学籍番号%dのアドレス:%p 名前%sのアドレス:%p\n", a[i].no, &a[i].no, a[i].name, &a[i].name);
}

return 0;
}
782デフォルトの名無しさん:2011/06/01(水) 07:41:28.52
おい、うんこ。トリップ割られてるぞ。

> http://hibari.2ch.net/test/read.cgi/unix/1303635206/271
> From: [271] ◆QZaw55cn4c <sage>
> Date: 2011/05/31(火) 20:50:29.76
>
> >>267
> 失せろ
783デフォルトの名無しさん:2011/06/01(水) 07:48:05.88
>>776
どこが「嫌がらせ」だと思ったのか教えてください。
784780:2011/06/01(水) 07:49:06.18
>>781
ありがとうございます。
助かります。
785デフォルトの名無しさん:2011/06/01(水) 07:51:41.76
QZの頭じゃあれを提出したらどうなるか想像することもできなだろうから、嫌がらせじゃないのかもしれないw
786デフォルトの名無しさん:2011/06/01(水) 07:57:22.89
問題を出す人からすれば回答者は誰でもいいんじゃないの?
とりあえず課題を解決できればそれでよしなんだから
787デフォルトの名無しさん:2011/06/01(水) 08:02:29.80
>>782
そのトリップは基本的にいらないからいいです。
788デフォルトの名無しさん:2011/06/01(水) 08:22:45.23
まぁここみてるといろんなソースコードがあって
人のコード見るだけでも勉強になるしそれはそれでいいんじゃない?
789デフォルトの名無しさん:2011/06/01(水) 09:05:56.75
>>785
QZは自己愛性人格障害の上に強度のアスペルガー症候群(究極のKY)か
最低だな
790デフォルトの名無しさん:2011/06/01(水) 09:18:13.11
単位落とすかうんこを喰うか、どちらも選びたくない。
791 忍法帖【Lv=1,xxxP】 ◆/91kCCQXBo :2011/06/01(水) 11:28:22.93
/* cut text for analyzing */
#define P_FIRST_LINE "CHAPTER I."
#define P_LAST_LINE "THE END"
http://ideone.com/MmoIq
Total 3737 lines, form 40 line to 3370 line, it's 3331 lines.
% head -n 3370 alice.txt | tail -n 3331 | 168a.out
2627
792デフォルトの名無しさん:2011/06/01(水) 12:48:34.16
[1] 授業単元: 固有値
[2] 問題文(含コード&リンク):
Jacobi法の確認プログラム(2x2行列)と直交行列の角度計算方法を例として,
2×2対称行列の固有値と固有ベクトルを求めるプログラムを作成しなさい
↓確認プログラム
http://codepad.org/zjJntLI9
↓直交行列の角度計算方法
/*�����s���̊p�x�̌v�Z*/
if(a[i][i]==a[j][j]) theta=PI/4.0;
else theta=atan2(2*a[i][j],(a[i][i]-a[j][j]))/2.0;
[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] C
[4] 期限:2011年6月2日Am10:00まで

793デフォルトの名無しさん:2011/06/01(水) 13:00:13.16
◆QZaw55cn4cって糞だよなぁ
794 忍法帖【Lv=1,xxxP】 ◆/91kCCQXBo :2011/06/01(水) 13:35:23.05
>>747 チョット直した >>371
http://ideone.com/ckkIu
% head -n 3370 alice.txt | tail -n 3331 | 371.out
2627
795デフォルトの名無しさん:2011/06/01(水) 17:15:18.89
「理想順(リソート)」
この言葉の意味を教えてください
796デフォルトの名無しさん:2011/06/01(水) 17:31:26.33
>>794
QZのプログラムだと2627個、>>794のプログラムだと3073個になるな
どちらが間違ってるんだ?
797デフォルトの名無しさん:2011/06/01(水) 17:47:34.39
[1] 授業単元:ポインタ型、配列型の派生
[2] 問題文(含コード&リンク):
 [A]宣言による場合   short d[L][M][N];
 [B]動的確保による場合 ([A]と同じサイズ。生成法は講義時と同様:参考コードhttp://ideone.com/nWTXg

 short型の3次元配列を生成した場合について、(1)〜(7)の解答を導け。
 (上の宣言による場合と動的確保による場合の両方について答えよ。
  なお、short型とポインタ型のサイズはそれぞれ2バイトと8バイトとする)

 (1)要素d[i][j][k]へのアクセス手順・・・書き方の例:メモリアクセス → 計算 → メモリアクセス → 計算 → メモリアクセス
                             aai     aai+8i   *(aai+8i)  *(aai+8i)+4j *(*(aai+8i)+4j)
 (2)要素d[i][j][k]へのアクセスに要するアドレス計算とメモリアクセスの回数
 (3)メモリ使用量(L,M,Nを用いて表せ)・・・書き方の例:M×N×sizeof(X)+M×sizeof(X*)+sizeof(X**)バイト
 (4)L=3,M=N=512の場合のメモリ使用量(KB単位、小数点以下1桁まで。ただし1KBは1024Bとする。)
 (5)L=M=512,N=3の場合のメモリ使用量(上と同じ条件)
 (6)関数への渡し方・・・書き方の例:func(aax);
 (7)関数での受け方・・・書き方の例:func(int **aay){ }
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:C言語
[4] 期限:2011年6月1日23時まで
798デフォルトの名無しさん:2011/06/01(水) 18:24:24.34
>>792
ほとんどネット上のプログラムの改造だけど答えは正しいみたい

http://codepad.org/BX481Idy
799デフォルトの名無しさん:2011/06/01(水) 18:39:13.68
>>796
>>794 は alice.txt のうち、
「CHAPTER I. Down the Rabbit-Hole」の行から「THE END」の行までだけを標準入力から食わせないと正しく動作しません。
>>769 は、alice.txt すべてを自分で読み込み、対象範囲を自分で判断してカウントします。
結局どちらも 2627 を出力します。

>>747
>>794 のコメントアウトの記述にあわせて -v オプションの内容を充実させました。
http://codepad.org/85H86wmw
800デフォルトの名無しさん:2011/06/01(水) 19:32:03.78
分かるかた、よろしくお願いいたします。

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
番号(整数型),名前(文字型、アルファベット15文字まで),点数(整数型)のメンバを持つ構造体を作り、以下の処理をするプログラムを作りなさい。
ただし、各メンバの値の出力には%4d(番号),%15s(名前),%5d(点数)を用いること。
http://www.gazo.cc/up/40631.jpg
(画像にプログラム例があります。)
[3] 環境
 [3.1] OS: windows7
 [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2008 Express edition
 [3.3] 言語:C++
[4] 期限:本日中
[5] その他の制限:
必ず構造体を用いること。入出力はscanfとprintfでお願いします。
801デフォルトの名無しさん:2011/06/01(水) 19:32:39.71
ごめんなさい。よろしくお願いします。

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
番号(整数型),名前(文字型、アルファベット15文字まで),点数(整数型)の
メンバを持つ構造体配列(最初にキーボードから入力する人数分の要素をもつ)を作り、
以下の処理をするプログラムを作りなさい。 ただし、各メンバの値の出力には%4d(番号),%15s(名前),%5d(点数)を用いること。
http://www.gazo.cc/up/40638.jpg
(画像にプログラム例があります。)

http://codepad.org/eeszgB3O
ここまで出来ています。
[3] 環境
 [3.1] OS: windows7
 [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2008 Express edition
 [3.3] 言語:C++
[4] 期限:本日中
[5] その他の制限:
http://codepad.org/eeszgB3O の様な感じで、続きをできたらお願いしたいです。
802デフォルトの名無しさん:2011/06/01(水) 19:40:16.90
>>782
消えろクズwwww
803719:2011/06/01(水) 20:34:58.80
http://pastebin.com/4FtcRSA9
65行目print_profileの74行目あたりからです

すいません、問題文に書き忘れがありました(-_-;
(1)%P nでn=0の時、登録したデータを全件出力
(2)n<0のとき、登録したデータの後ろからn件出力
   例:50件登録していて %P -10 と入力したとき、40番→49番の順に出力

試行錯誤してみたのですがなかなかうまくいかないです
どなたかよろしくお願いしますm(__)m
804デフォルトの名無しさん:2011/06/01(水) 20:45:48.57
>>802
うんこのトリップ割って得意満面なハッカー(笑)はお前か。www
805デフォルトの名無しさん:2011/06/01(水) 20:52:42.59
>>804
アンカ間違えてんじゃねーよクソ新参が
半年ROMってろ
806デフォルトの名無しさん:2011/06/01(水) 20:55:53.55
>>805
間違ってねーよ。スーパーハッカー(笑)はお前だろ。
うんこのトリップ割りなんて臭い事やってねーで、宿題解いてやれよ。www
807デフォルトの名無しさん:2011/06/01(水) 21:06:26.31
>>806
アンカは間違えるしワケのわからん勘違いはするし・・・どうしようもねーな
それと「。」やめようかクソ新参
808デフォルトの名無しさん:2011/06/01(水) 21:22:54.21
>>807
うわっ、キモ。
リアルで鳴かすぞガリチビ。
。。。。。。。。
809デフォルトの名無しさん:2011/06/01(水) 21:32:23.74
うんこのトリップ割って喜んでるバカと三点リーダーも使えないバカは同程度にバカだから、
同一と見なしてもなんら問題ない。

ここで三点リーダーつかえない池沼は… >>757… こいつか。

language: C++ (gcc-4.3.4) <= 質問者の制約条件守れ。
12 /* ファイルサイズの取得 */ <= fstat使え。バカ。
20 memset( pszBuf, '\0', fsize+1 ); <= 直後にリードするのに初期すんな。
一番苦労しそうな単語の切り出しはパス。しかも、データ構造は何の工夫もない配列。www
うんこのコードを上回るウンコっぷり。

実質何もやってないコードをよくもこれだけ自慢げに貼れるな。 大物過ぎる。ww
810デフォルトの名無しさん:2011/06/01(水) 21:32:54.55
>>809
お前も使えてないじゃねーかwwwwwwww
811デフォルトの名無しさん:2011/06/01(水) 21:33:57.93
お前らここは宿題スレだぞ
812デフォルトの名無しさん:2011/06/01(水) 21:39:20.37
句点に文句つけるやつって、どっかで「句点をつけるのは新参」って間違った知識を仕入れたにわかなんだろうな
813デフォルトの名無しさん:2011/06/01(水) 21:45:09.98
>>800 >>801 同じ問題?... >>800 の写真が切れてる。…
http://ideone.com/pyzLu
814デフォルトの名無しさん:2011/06/01(水) 21:51:37.89
入力はしなくても、構造体には番号も含めなきゃダメだろ
815デフォルトの名無しさん:2011/06/01(水) 21:52:31.88
>>801,800
よし、じゃあ片方はこっち使うといいよ
http://ideone.com/DVg9C
816デフォルトの名無しさん:2011/06/01(水) 22:10:28.60
[1]C言語課題
[2] ソースコード上で用意に修正/改造できるような形式の
簡単な自動無限長対話分作成機を作れ
出力例:
A:であるからして、C言語プログラム作成は難しいのであります。
B:ほんとうにそうですね。
A:なんて面倒なんだ
B:ポインタの扱いがキモですね。
A:君はC言語を何年やったんだ?
B:5年だけど、上達は難しいですね。参考書がクソなんですよ。
..........
質問文には的確に答えること。話しが閉じず永遠に続くこと
が条件だそうです。
[3] Windows Vista/Visual studio???/C言語
[4] 6/14まで
[5] ヘンテコな課題ですがよろしくお願いします。
817デフォルトの名無しさん:2011/06/01(水) 22:21:45.56
818デフォルトの名無しさん:2011/06/01(水) 22:21:52.91
>>816
多分お前の授業内容分かんないから、適切なものは誰にもつくれないぞ
自動無限長対話分作成機って時点で(分を文に直しても)よく分かんないし

人工無脳を作れって意味にも取れるが
授業単元名に見合わないレベルな気もするしようわからん

出力例みると明らかに直前の相手の話だけじゃなくて前々回まで踏まえてるし……

まさか無限ループすればいいのか?
819デフォルトの名無しさん:2011/06/01(水) 22:23:44.43
>>800, >>801
じゃあ構造体に番号をいれたやつ。
http://codepad.org/RKN0PZoX
820デフォルトの名無しさん:2011/06/01(水) 23:00:03.93
レスありがとうございます。
プログラムもありがとうです。 >>800http://uproda.2ch-library.com/383953Ftm/lib383953.jpg の問題で、

>>801http://uproda.2ch-library.com/383951rv8/lib383951.jpg の問題です。

画像が切れちゃっててごめんなさい。
もしよろしければ、もう一つもお願いしたいです。
821デフォルトの名無しさん:2011/06/01(水) 23:01:52.87
>>813>>814>>815
レスありがとうございます。
プログラムもありがとうです。
>>800http://uproda.2ch-library.com/383953Ftm/lib383953.jpg の問題で、

>>801http://uproda.2ch-library.com/383951rv8/lib383951.jpg の問題です。

画像が切れちゃっててごめんなさい。
もしよろしければ、もう一つもお願いしたいです。
822デフォルトの名無しさん:2011/06/01(水) 23:10:14.98
797の者です。
期限を23時までと書きましたが、勝手ながら明日の12時までとさせていただきたく思います。
もし時間があれば分かる問題だけでもいいのでよろしくお願いします。
823デフォルトの名無しさん:2011/06/01(水) 23:36:43.45
>>822
アンカーくらい打てよ
824デフォルトの名無しさん:2011/06/02(木) 00:05:35.28
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
標準入力で
8+5 と打ったら 13がでてくるような
電卓を作れ、四則演算に対応していれば良い

[3] 環境
 [3.1] OS windows
 [3.2] gcc
 [3.3] C言語
[4] 期限: 無期限
[5] その他の制限: この単元では文字列操作について習いました
825デフォルトの名無しさん:2011/06/02(木) 00:06:44.07
>>823
改めてすみません。>>797 >>822の者です。
分かる方よろしくお願いします。
826デフォルトの名無しさん:2011/06/02(木) 00:28:10.12
827デフォルトの名無しさん:2011/06/02(木) 00:29:23.61
>>824
#include <stdio.h>
int main(void)
{
  double x,y,result;
  char op;
  scanf("%lf%c%lf",&x,&op,&y);
  switch(op)
  {
  case '+':
    result=x+y;
    break;
  case '-':
    result=x-y;
    break;
  case '*':
    result=x*y;
    break;
  case '/':
    result=x/y;
    break;
  }
  printf("%f",result);
  return 0;
}
828デフォルトの名無しさん:2011/06/02(木) 00:40:36.25
>>796

>>747です。Cygwinを使っているのですが、
どうすればファイルを読み込むのでしょうか?
よければ教えてもらえないでしょうか
829デフォルトの名無しさん:2011/06/02(木) 00:42:53.81
>>828
>>794のこと?それならパイプ
830デフォルトの名無しさん:2011/06/02(木) 00:45:25.08
>>829

間違えました。>>794です。
パイプというのはなんでしょうか
知識足らずでスイマセン
831デフォルトの名無しさん:2011/06/02(木) 01:02:45.78
>>830
標準入出力をプログラム間で連携(パイプ)する仕組み、例えば、

/* print3.c */
#include <stdio.h>

int main() {
  printf("3");
  return 0;
}

という 3 を表示するだけの print3.exe と、

/* twice.c */
#include <stdio.h>

int main() {
  int n;
  scanf("%d", &n);
  printf("%d", n * 2);
  return 0;
}

という入力された数字を2倍にする twice.exe を作って、

print3.exe | twice.exe

って実行してみてみると、print3.exeの標準出力 3 がtwice.exeの標準入力として使われて、結果 6 って表示される、みたいな。
832831:2011/06/02(木) 01:09:20.41
ちなみにもう少し突っ込むと、実行ファイルを関数のように使えるわけだから、
>>831の実行ファイルを使って、

print3.exe | twice.exe | twice.exe

ってすれば 12 が表示される、面白いっしょ。
833デフォルトの名無しさん:2011/06/02(木) 01:13:55.92
>>831 >>832
なるほど
分かりやすい説明どうもありがとうございます!
834デフォルトの名無しさん:2011/06/02(木) 01:20:36.17
>>830
>>794 は不思議の国のアリスの本文(chapter i 〜the end) を切り取って ./a.exe (cygwin なら .out じゃなくて .exe) の標準入力に流さないといけない。
その切り取りが、head コマンドであり、tail コマンドです。
めんどくさい or わからない、のならば、その辺もみんなやってくれる >>799 をお勧めします。
835デフォルトの名無しさん:2011/06/02(木) 01:25:35.01
[1] 授業単元:プログラミング演習 1
[2] 問題文(含コード&リンク)
2重forループを使って変則九九表を表示します。結果は次のようになります。
81 72 63 54 45 36 27 18 9
72 64 56 48 40 32 24 16 8
63 56 49 42 35 28 21 14 7
54 48 42 36 30 24 18 12 6
45 40 35 30 25 20 15 10 5
36 32 28 24 20 16 12 8 4
27 24 21 18 15 12 9 6 3
18 16 14 12 10 8 6 4 2
9 8 7 6 5 4 3 2 1

これと同じ結果になるように2重whileループ版と2重do-while版のプログラムを書いてください。
#include <stdio.h>
int main(void)
{
int i, j;

for (i=9; i>0; i--) {
for(j=9; j>0; j--) printf("%2d", i*j);
puts("");
}
return 0;
}
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:6月4日
よろしくお願いします。
836デフォルトの名無しさん:2011/06/02(木) 01:26:13.32
>>800
#pragma warning(disable:4996)
#include <stdio.h>
struct seiseki {
  int id;
  char name[15+1];  // 文字型配列の宣言
  int score;
};
int main(void)
{
  struct seiseki data;

  // キーボードからアルファベットを入力し、配列nameに記憶させる
  data.id = 1;
  printf("%d番の人のデータ\n 名前:", data.id);
  scanf("%15s", data.name);
  printf(" 点数:");
  scanf("%d", &data.score);
  printf("\n***** データ *****\n\n");
  // 配列nameの中身をディスプレイに表示
  printf("%4d%15s%5d\n", data.id, data.name, data.score);
  return 0;
}
837デフォルトの名無しさん:2011/06/02(木) 02:37:57.81
>>836
ありがとうございます!
もう今日は来ないかもと思っていたので嬉しいです。

お聞きしたいのですが、
>>813>>815さんや>>836さんみたいにプログラム上手くなれるお勧めの参考書かサイトってありますか?
どうしてそんなに上手いのか知りたいです
838デフォルトの名無しさん:2011/06/02(木) 03:10:44.86
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
「整列アルゴリズムの効率性の比較」
ファイル名:file007.dat //(仮) 
を整列対象データとする。
上記のデータを配列に格納し、下記4種の整列アルゴリズムを用いて整列する。
このとき移動回数および実行時間(clock関数)を記録する。
   (1) 単純挿入法
   (2) 単純選択法
   (3) バブルソート
   (4) クイックソート

[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] C言語
[4] 期限: 明日
[5] その他の制限:
・最初に読み込むファイル名は絶対パスとしてmainプログラム中で記述し、コマンドライン上の引数による指定、およびリダイレクトによる入力指定はしないこと。
・移動回数、実行時間等、測定結果をプログラムの最後にprintfで出力する。
・整列結果はコンソール、ファイルのどちらにも出力しない。

839デフォルトの名無しさん:2011/06/02(木) 03:10:59.82
>>801 >>813の修正(数字は行番号)あと、kumei.ne.jp のサイト
--- 813.c
+++ 814.c
@@ -3,0 +4 @@
+  int id;
@@ -16 +17,2 @@
-    printf("%d番の人のデータ\n 名前:", i+1);
+    data[i].id = i+1;
+    printf("%d番の人のデータ\n 名前:", data[i].id);
@@ -28 +30 @@
-    printf("%4d%15s%5d\n", i+1, data[i].name, data[i].tensuu);
+    printf("%4d%15s%5d\n", data[i].id, data[i].name, data[i].tensuu);
840デフォルトの名無しさん:2011/06/02(木) 03:17:11.70
>>838
file007.dat の内容を教えてください。どんなデータを整列するかわからないとプログラムは書けません。
841 ◆of0iNymy6E :2011/06/02(木) 04:08:26.63
842デフォルトの名無しさん:2011/06/02(木) 04:21:23.25
ウップ printl() ⇒ printf()
[1]C言語演習
[2]次の文章には誤りがあって仕様通りの動作をしない。
(文法エラーは無い筈である。)
最適な仕様を推測し、コードの誤りを見つけてそれを修正し
仕様通りの動作をするように修正しなさい。
#include <stdio.h>
int main(int argc,char **argv){
char s[8];FILE *f;int i,line;
while(argc--){
f=fopen(*argv++,"r");
if(f==NULL)continue;
for(line=0;;){
if(NULL==fgets(s,sizeof(s),f))break;
printf("%06d:%s",++line,s);
}
fclose(f);
}
return 0;
}
[3-1] Linuz(Open suse)
[3-2] Eclipse IDE
[3-3] C
[4] 6/7 正午まで[email protected]までメール
844デフォルトの名無しさん:2011/06/02(木) 08:08:00.96
>>843
"仕様"とやらが1行7字以内確定なら
ttp://ideone.com/Rjkhi
845デフォルトの名無しさん:2011/06/02(木) 08:09:15.71
[1] 授業単元:ポインタ型、配列型の派生
[2] 問題文(含コード&リンク):
 [A]宣言による場合   short d[L][M][N];
 [B]動的確保による場合 ([A]と同じサイズ。生成法は講義時と同様:参考コードhttp://ideone.com/nWTXg
 short型の3次元配列を生成した場合について、(1)〜(7)の解答を導け。
 (上の宣言による場合と動的確保による場合の両方について答えよ。
  なお、short型とポインタ型のサイズはそれぞれ2バイトと8バイトとする)

 (1)要素d[i][j][k]へのアクセス手順
 (2)要素d[i][j][k]へのアクセスに要するアドレス計算とメモリアクセスの回数
 (3)メモリ使用量(L,M,Nを用いて表せ)・・・書き方の例:M×N×sizeof(X)+M×sizeof(X*)+sizeof(X**)バイト
 (4)L=3,M=N=512の場合のメモリ使用量(KB単位、小数点以下1桁まで。1KBは1024Bとする。)
 (5)L=M=512,N=3の場合のメモリ使用量(上と同じ条件)
 (6)関数への渡し方・・・書き方の例:func(aax);
 (7)関数での受け方・・・書き方の例:func(int **aay){ }
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:C言語
[4] 期限:2011年6月2日14時まで

分かるところだけでもいいので何卒よろしくお願いします。
846デフォルトの名無しさん:2011/06/02(木) 08:13:03.09
>>843
http://codepad.org/F80yd9P
一行余分に表示されてしまうのが口惜しいところ。
847デフォルトの名無しさん:2011/06/02(木) 09:25:08.60
http://codepad.org/F80YD9PP
URLは大文字小文字区別せず!これが仕様だ
848デフォルトの名無しさん:2011/06/02(木) 09:31:25.07
すいませんおねがいします。日曜までです。


String型の配列として与えられた人の名前を全て使って「しりとり」を作りましょう。
参考資料ファイルを自分のプロジェクトにコピーもしくはインポートし、50音順で並んでいる配列をしりとりの原理で並び替え、出力するプログラムを作成してください。
-----------Original NameList-----------
ごりら
らっぱ
りんご
-----------Sorted NameList-----------
りんご
ごりら
らっぱ

単語は適当に自分がうめるのでプログラミングそのものだけつくってもらえませんか?
849デフォルトの名無しさん:2011/06/02(木) 09:40:57.51
850デフォルトの名無しさん:2011/06/02(木) 09:47:32.42
>>849
はいすいません。スレチだと思い、こちらに質問させてもらいました(;´Д`)
851デフォルトの名無しさん:2011/06/02(木) 09:52:39.82
>>846
// putchar('\n');
852デフォルトの名無しさん:2011/06/02(木) 09:56:12.82
>>850
さっさとどっちかで終了して一本化しろクズ
853デフォルトの名無しさん:2011/06/02(木) 09:57:51.63
>>850たしかにそうですね。こっちのほうが目的に沿っているのでこちらで一本化させてもらいます。
ということで申し訳ないんですがご指南よろしくお願いします。
854デフォルトの名無しさん:2011/06/02(木) 09:58:25.40
用語の使い方等からして実はJavaなんじゃ・・・・・・・・・・・
855デフォルトの名無しさん:2011/06/02(木) 10:04:04.76
>>854そうです。Javaなんです。でもこういったスレがjavaに関したものはなかったのでここで質問してヒントを得られればなと思いまして
856デフォルトの名無しさん:2011/06/02(木) 10:12:05.76
>>843
char s[8]; ⇒ char s[800];
857デフォルトの名無しさん:2011/06/02(木) 10:15:57.74
> if(NULL==fgets(s,sizeof(s),f))break;
こういう人まだ生き残ってるんだ。
858デフォルトの名無しさん:2011/06/02(木) 10:18:38.53
ちょっとまて、コードを必死に読んだら負けじゃないか?

[2]次の *文章* には誤りがあって仕様通りの動作をしない。
859デフォルトの名無しさん:2011/06/02(木) 10:37:50.18
[1] 授業単元:C言語課題
[2] 問題文
下記の虫食い算をfor文を使い、計算によって、
求めるプログラムを作成しなさい。
ただし、void ○○という文、puzzle文を使用してはならない。
@  □1
  ×□1
 −−−−
  □□□
 □□□ 
 −−−−
 9□□□

A  □□
  ×□□
 −−−−
  □□□
 □4□ 
 −−−−
 □3□□
[3] 環境
 [3.1] OS:Windows7
 [3.3] C言語
[4] 今日の19時まで
[5] 多重ループまで
プログラミング初心者なんで全くわかりません。
どうかよろしくお願いします。
860デフォルトの名無しさん:2011/06/02(木) 10:38:03.83
ステートメント→文
コード→文章
これじゃねの?
861デフォルトの名無しさん:2011/06/02(木) 10:52:43.06
>>859
91 * 91 = 8281
862デフォルトの名無しさん:2011/06/02(木) 10:56:51.66
>>843
- while(argc--){
+ while(--argc){
863デフォルトの名無しさん:2011/06/02(木) 10:58:17.06
I1 * 91 = 9191
864デフォルトの名無しさん:2011/06/02(木) 11:01:38.70
>>861
それはわかってるんですが、それをコンピューターに
計算させて求めたいんです。
865デフォルトの名無しさん:2011/06/02(木) 11:07:44.92
>>864
組み合わせがねーよって言ってるんだと思うよ
866デフォルトの名無しさん:2011/06/02(木) 11:07:51.43
□に入る数字が一桁なら、どうやっても千の位は9にならないってことだぞw
867デフォルトの名無しさん:2011/06/02(木) 11:13:49.37
http://ideone.com/Q3KFk
a,b,c,dとresultが問題文の筆算の各行に対応してます, 虫食い部分は-1を入れておいてください
非常に効率の悪い方法を採用しています
コードも汚いです
868デフォルトの名無しさん:2011/06/02(木) 11:16:32.30
>>865
本当だ。ミスってた。
   □1
  ×□□
 −−−−
  □□□
 □□□ 
 −−−−
 9□□□
正しくはこうでした。申し訳ありません。
869デフォルトの名無しさん:2011/06/02(木) 11:26:08.09
#include <stdio.h>

int main(void)
{
int i, j, k, a, b, c;

for(i = 1; i <= 9; i++) {
for(j = 9; j <= 9; j++) {
for(k = 0; k <= 9; k++) {
a = i * 10 + 1;
b = j * 10 + k;
c = a * b;
if(c / 1000 == 9) {
printf("%4d\n", a);
printf(" *%d\n", b);
printf("----\n");
printf("%4d\n", a * k);
printf("%d\n", a * j);
printf("----\n");
printf("%d\n", c);
}}}}
return 0;
}
870デフォルトの名無しさん:2011/06/02(木) 11:28:09.02
>for(j = 9; j <= 9; j++) {
for(j = 1; j <= 9; j++) {
871デフォルトの名無しさん:2011/06/02(木) 11:36:12.13
>>869
ありがとうございます。できればAの解答も
教えていただきたいのですが。
872デフォルトの名無しさん:2011/06/02(木) 11:59:31.94
#include <stdio.h>

int main(void)
{
int i, j, k, l, a, b, c;
for(i = 1; i <= 9; i++) {
for(j = 0; j <= 9; j++) {
for(k = 1; k <= 9; k++) {
for(l = 0; l <= 9; l++) {
a = i * 10 + j;
b = k * 10 + l;
c = a * b;
if(a * k / 10 % 10 == 4 && c / 100 % 10 == 3) {
printf("%4d\n", a);
printf(" *%d\n", b);
printf("----\n");
printf("%4d\n", a * l);
printf("%d\n", a * k);
printf("----\n");
printf("%d\n", c);
}}}}}

return 0;
}
873デフォルトの名無しさん:2011/06/02(木) 12:06:52.63
>>872
助かりました。本当にありがとうございました。
874デフォルトの名無しさん:2011/06/02(木) 13:18:40.47
[1] 授業単元: Cプログラミング1
[2] 問題文(含コード&リンク): キーボードより整数 a を入力して、 a×a の2次元配列を動的メモリ確保し、その配列の中に a×a の九九の計算結果を代入し、その内容を表示するプログラムを作成せよ。
(入力例)
input num : 3
(出力)
1 2 3
2 4 6
3 6 9

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 6月5日09:00まで
[5] その他の制限:ありません。
875デフォルトの名無しさん:2011/06/02(木) 13:32:42.06
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i, j, num, **p;

printf("input num:");
scanf("%d", &num);

p = malloc(num * sizeof(int*));
for(i = 0; i < num; i++) p[i] = malloc(num * sizeof(int));

for(i = 0; i < num; i++) for(j = 0; j < num; j++) p[i][j] = (i + 1) * (j + 1);

for(i = 0; i < num; i++) {
for(j = 0; j < num; j++) printf("%d ", p[i][j]);
putchar('\n');
}

for(i = 0; i < num; i++) free(p[i]);
free(p);

return 0;
}
876デフォルトの名無しさん:2011/06/02(木) 13:38:44.45
877876:2011/06/02(木) 13:39:17.47
ごめん被った
878デフォルトの名無しさん:2011/06/02(木) 14:03:46.27
>>875
>>876
お二方とも、迅速な回答本当にありがとうございます!
879デフォルトの名無しさん:2011/06/02(木) 18:12:36.00
>840
10,000個の整数がランダムになっています。

ex.
29957
74219
93455
83728
14696
95105
9321
56698
22276


880デフォルトの名無しさん:2011/06/02(木) 19:06:16.12
>>876
C99で書くなっつーの
int **array; でコンパイルエラーになるだろうが

881デフォルトの名無しさん:2011/06/02(木) 21:42:58.70
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):ttp://www.eonet.ne.jp/~sth/node100.html
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2011/6/3 6:00:00
[5] scanfを利用せずに、
#include <stdlib.h>
#define BUFFER_SIZE (256)

char buf[BUFFER_SIZE];
fgets(buf, BUFFER_SIZE, stdin)
temp = atoi(buf);
を利用して文字を入力。

念の為に、悩んで出来なかったゴミソースを晒しておきます。
ttp://codepad.org/bUuad28O
882デフォルトの名無しさん:2011/06/02(木) 22:15:36.19
>if(temp==0) break;
>
>
>
> for(s=i-1;s>=0;s--){
> if(s==-1) break;
> if(retu[s] < temp){
> for(t=s;t<i;t--) retu[t+1] = retu[t];
> break;
> }
> }
> retu[s] = temp;

for(s = i - 1; s >= 0; s--) if(retu[s] < temp) break;
for(t = i; t > s; t--) retu[t + 1] = retu[t];
retu[s + 1] = temp;
if(temp == 0) break;

>for(v=1;v<i;v++) printf(", %d",retu[v]);
for(v=1;v<=i;v++) printf(", %d",retu[v]);
883デフォルトの名無しさん:2011/06/02(木) 22:21:40.73
>>882
迅速なご回答本当にありがとうございます。助かりました。
884デフォルトの名無しさん:2011/06/02(木) 22:35:39.78
>>881
こんなんじゃだめ?
#include<stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE (256)
#define MAX 500
int main(void){
int temp,i,s;
int retu[MAX];
char buf[BUFFER_SIZE];

retu[0] = 0;
for (i = 0; i < MAX; i++){
printf("正整数: ");
fgets(buf, BUFFER_SIZE, stdin);
retu[i] = atoi(buf);
if (retu[i] == 0) break;
for (s = i; s > 0; s--) {
if (retu[s-1] < retu[s]) {
temp = retu[s - 1];
retu[s - 1] = retu[s];
retu[s] = temp;
} else break;
}
}
printf("入力された整数は小さい順に");
printf(" %d", retu[i]);
for(s = i - 1; s >= 0; s--) printf(", %d", retu[s]);
printf(" です.\n");
return 0;
}
885デフォルトの名無しさん:2011/06/02(木) 22:39:09.11
ダメにきまってんだろw
886881:2011/06/02(木) 22:42:10.34
>>884
恐らくですが、提示された手順の
「5 入力数値を格納すべき箇所を空けるために、既に記憶されている配列の要素のうち、この入力数値よりも大きな数字をひとつ後ろにずらしているか」を満たしていないかと思います。
お時間を割いて頂きありがとうございました。
887デフォルトの名無しさん:2011/06/02(木) 23:53:20.59
>>881
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE (128)
#define BUFFER_SIZE (256)
int main(void)
{
 int i, nums[ARRAY_SIZE], n = 0, temp;
 char buf[BUFFER_SIZE];
 for (n = 0; n < ARRAY_SIZE; n++) {
   printf("正整数: ");
   if (fgets(buf, BUFFER_SIZE, stdin) == NULL)
     return 1;
   temp = atoi(buf);
   if (temp == 0)
     break;
   for (i = n; i > 0 && temp <= nums[i - 1]; i--)
     nums[i] = nums[i - 1];
   nums[i] = temp;
 }
 if (n == 0)
   return 2;
 printf("入力された整数は小さい順に");
 for (i = 0; i < n - 1; i++)
   printf(" %d,", nums[i]);
 printf(" %d です.\n", nums[i]);
 return 0;
}
888881:2011/06/02(木) 23:57:18.19
>>887
課題自体は既に提出しましたが、今後の学習の参考にさせて頂きます。ありがとうございました。
889デフォルトの名無しさん:2011/06/03(金) 07:59:09.88
890デフォルトの名無しさん:2011/06/03(金) 08:01:18.11
891デフォルトの名無しさん:2011/06/03(金) 08:13:41.49
>>889-890
大事なコードなので・・・
892デフォルトの名無しさん:2011/06/03(金) 08:28:43.29
1回でいいんでない?*c+=3
893デフォルトの名無しさん:2011/06/03(金) 12:40:00.31
>>892
そですかね。じゃあ、

>>838
>>892 のアドバイスにしたがって、内容を変更しました。
http://codepad.org/mF1D4PHi
894デフォルトの名無しさん:2011/06/03(金) 14:03:36.41
[1] 授業単元: Cプログラミング1
[2] 問題文:2つの n 次元ベクトル a,b の内積を求めるプログラムを作成せよ。尚、n の個数は未定であるので、動的メモリを利用せよ。
(入力例)
何個入力しますか? : 5
a input num[0] : 12.3
a input num[1] : 5.6
a input num[2] : 7.89
a input num[3] : 9.51
a input num[4] : 62.7
b input num[0] : 0.12
b input num[1] : 34.56
b input num[2] : 7.89
b input num[3] : 75.3
b input num[4] : 86.1
(出力)
inner product : 6371.837100

[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 6月7日09:00まで
[5] その他の制限:ありません。
895デフォルトの名無しさん:2011/06/03(金) 14:57:10.06
896デフォルトの名無しさん:2011/06/03(金) 22:06:11.63
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):/* ... */の箇所を埋めて以下のような実行結果になるようにプログラムを作成せよ。(長いので次レスに続きます)

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2011/6/4
897デフォルトの名無しさん:2011/06/03(金) 22:09:02.49
問1
#include <stdio.h>
int *search0(int x[], int n){
/* ... */
}
int main(void){
int x[MAX], n, i, *res;
  printf("配列の個数 > "); scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("%d番目の整数 > ", i);
scanf("%d", &x[i]);
}
res = search0(x, n);
if (res != NULL) {
printf("%d\n", (int)(res - x));
} else {
printf("-1\n");
}
return 0;
}
実行結果
配列の個数 > 5
0番目の整数 > 9
1番目の整数 > 9
2番目の整数 > 0
3番目の整数 > 9
4番目の整数 > 0
2
実行結果
配列の個数 > 1
0番目の整数 > 1
-1
898デフォルトの名無しさん:2011/06/03(金) 22:22:25.06
問2
#include <stdio.h>
void inputMatrix(int X[2][2], char *name)
{
int i, j;
printf("行列 %s:\n", name);
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
printf("%s[%d][%d] > ", name, i, j);
scanf("%d", &X[i][j]);
}}}
void printMatrix(int X[2][2], char *name){
int i, j;
printf("行列 %s:\n", name);
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
printf("%4d", X[i][j]); }
printf("\n");
}}
void addMatrix(int A[2][2], int B[2][2]){
/* ... */
}
899デフォルトの名無しさん:2011/06/03(金) 22:24:00.16
問2の続き
int main(void){
int A[2][2], B[2][2];
inputMatrix(A, "A");
inputMatrix(B, "B");
printMatrix(A, "A");
printMatrix(B, "B");
addMatrix(A, B);
printMatrix(A, "A+B");
return 0;}
実行結果
行列 A:
A[0][0] > 1
A[0][1] > 2
A[1][0] > 3
A[1][1] > 4
行列 B:
B[0][0] > 5
B[0][1] > 6
B[1][0] > 7
B[1][1] > 8
行列 A:
1 2
3 4
行列 B:
5 6
7 8
行列 A+B:
6 8
10 12
900デフォルトの名無しさん:2011/06/03(金) 22:26:38.73
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for (i = 0; i < /* ... */; i++) {
/* ... */
}
return 0;
}
実行結果 1 2
1
2
実行結果 aaa bbb ccc
aaa
bbb
ccc
901デフォルトの名無しさん:2011/06/03(金) 22:37:14.44
問4
値渡しを採用しているC言語で,
関数においてなぜ引数の指し示す文字列を変更できたのかを簡潔に説明せよ.
902デフォルトの名無しさん:2011/06/03(金) 22:42:29.13
>>901
ポインタを値渡ししたから
903デフォルトの名無しさん:2011/06/03(金) 22:53:35.10
>>901
これいい問題だよな
904デフォルトの名無しさん:2011/06/03(金) 22:53:51.25
問5
STLにおいてstd::map<char *, int>は期待通りの動作にならない
その理由を「ポインタ」「文字列」「アドレス」という単語を使って説明せよ。
905デフォルトの名無しさん:2011/06/03(金) 23:19:04.24
>>904
期待通りってなんだよ?
それ定義したら動かせるだろ?
906デフォルトの名無しさん:2011/06/03(金) 23:24:14.91
文字列比較はa - bじゃダメでstrcmp(a, b)しろという事だな。
907デフォルトの名無しさん:2011/06/03(金) 23:26:00.22
>>904
エスパースレ向きかも
908デフォルトの名無しさん:2011/06/03(金) 23:41:47.65
>>889-893
ありがとうございます。

いくつか聞きたいのですが

バブルにある flag

#define BUFFSIZE 1024 

の意味って何ですか。

あとメイン関数を1つにする方法ってありますか。
909デフォルトの名無しさん:2011/06/03(金) 23:51:51.22
逆に聞くけど、メイン関数を2つ以上にどうやってするの?
910893:2011/06/04(土) 00:02:57.68
>>908
>バブルにある flag
バブルソートにはいろいろなバリエーションがあり、ここで書いてみたものは、この flag が 1 であればループを回り続けます。
隣同士の比較交換を、順番にデータのはじめから終わりまでひととおり行うのを一まとまりとし、この一まとまりのなかで一回でも交換が発生したら flag が 1 になります。
911デフォルトの名無しさん:2011/06/04(土) 00:06:05.53
>>909
#if 1
#else
#endif
912893:2011/06/04(土) 00:06:29.32
>>908
>#define BUFFSIZE 1024 
ここでは、fgets() で一行を文字列として char buff[] に一旦読み込み、あらためて、sscanf() を使って、buff[] から int 型の変数に変換してみました。
でも、素直に fscanf() を使えばよかったかなあ。
この buff[] の大きさを 1024 に指定しているのが、この行の内容です。
913デフォルトの名無しさん:2011/06/04(土) 02:21:17.98
[1] 授業単元:C++基礎
[2] 問題文(リンク):ttp://www.csg.is.titech.ac.jp/~chiba/lecture/cur/cs2/cs09.html
[3] 環境
 [3.1] OS:Win XP
 [3.2] コンパイラ名とバージョン: Visual C++ 2010 Express
 [3.3] 言語: C++
[4] 期限: 6/6(月)
お願いします。
914デフォルトの名無しさん:2011/06/04(土) 02:35:24.30
>>913
そのままリンク貼るのはやめろ。
大学ばれるし教師に2chからアクセス行くことがばれるかもしれない。
915デフォルトの名無しさん:2011/06/04(土) 02:38:36.23
http://quotes.is.titech.ac.jp/reportbox/submit-page.jsp?week=20
回答はここに送ればいいの?
916デフォルトの名無しさん:2011/06/04(土) 02:51:52.63
>>913
手抜きの手抜き
917893:2011/06/04(土) 03:11:58.79
>>908
>メイン関数を1つにする方法
ごめんなさい。以下のようになります。
http://codepad.org/i4Xvutte
918デフォルトの名無しさん:2011/06/04(土) 03:51:04.71
>>913
templateでフィボナッチとかちょっぴりマニアックな問題だな.
って程でもないか.なんにせよそのままリンクするのはまずいだろう.
919デフォルトの名無しさん:2011/06/04(土) 03:57:16.48
>>913
これQZに解けるかな?
解けなかったらQZはC++が分からないという事になる
920デフォルトの名無しさん:2011/06/04(土) 04:44:23.97
>>913
とりあえず1だけ

http://codepad.org/2v29xf5M
921デフォルトの名無しさん:2011/06/04(土) 04:48:17.16
922 ◆QZaw55cn4c :2011/06/04(土) 04:50:33.04
>>919
>>921
よろしければ添削おねがいします。
923デフォルトの名無しさん:2011/06/04(土) 05:05:26.35
>>590
#include <stdio.h>
int
main(void)
{
int i, a[20], s = 0, csum[5];
for (i = 0; i < 20; i++)
scanf("%d", &a[i]);
for (i = 0; i < 20; i++) {
printf("%4d", a[i]);
s += a[i];
csum[i % 5] += a[i];
if (i % 5 == 4) {
printf(" sum %4d¥n", s);
s = 0;
}
}
for (i = 0; i < 5; i++)
printf(" sum");
printf("¥n");
for (i = 0; i < 5; i++)
printf("%4d", csum[i]);
printf("¥n");
return 0;
}
924デフォルトの名無しさん:2011/06/04(土) 05:17:13.30
>>922
この程度なら誰でも解けるからこれではC++を理解しているとは言えないだろ
925デフォルトの名無しさん:2011/06/04(土) 05:25:41.24
>>924
まあ、それはそうですね。
というか、「理解している(霧」って書いた覚えはないですけれども、どうしてそうなっちゃってるんでしょう?
やっぱりモリタポスレのテンプレートにC++をいれちゃったのがまずかったかなあ。
926デフォルトの名無しさん:2011/06/04(土) 05:29:02.86
まあ無職が何をわめいても右から左ですけどね
927デフォルトの名無しさん:2011/06/04(土) 05:30:14.22
QZは糞
928デフォルトの名無しさん:2011/06/04(土) 05:30:54.90
>>926
一応有職ですけれどもね。なんで無職ということになっちゃったんでしょうね?不思議不思議。
929デフォルトの名無しさん:2011/06/04(土) 05:34:13.86
他人とまともにコミュニケーションとれなさそうなところからだろうな
930デフォルトの名無しさん:2011/06/04(土) 05:36:04.75
>>929
元来天然ボケな素質はあったんですがそれを開発促進してなんとかなってます。
931デフォルトの名無しさん:2011/06/04(土) 05:37:57.55
>>928
有職の奴が平日の昼間から2chに書けるかよ
嘘も休み休み言え
932デフォルトの名無しさん:2011/06/04(土) 05:39:45.78
>>928
あんな糞コードを書いてる奴が有職とはとても思えない
933デフォルトの名無しさん:2011/06/04(土) 05:42:08.41
働いてる奴が未だに850MHzのノートパソコンなんか使ってるかよ(笑)
934デフォルトの名無しさん:2011/06/04(土) 05:43:56.01
◆QZaw55cn4cって糞だよなぁ
935デフォルトの名無しさん:2011/06/04(土) 05:45:32.84
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
936デフォルトの名無しさん:2011/06/04(土) 05:47:16.00
天然ボケなんて可愛いもんじゃないw
発達障害かアスペルガーか知らんが、病気に分類されるレベルの理解力のなさだろ
937デフォルトの名無しさん:2011/06/04(土) 05:48:54.90
>>931
有給というものがありまして。2chに使うのはどーかと思いますが。
>>932
マじゃないので。
>>933
ノートはCore2Duo 1G, デスクトップは phenom x6 になりました。
938デフォルトの名無しさん:2011/06/04(土) 05:51:03.29
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
939デフォルトの名無しさん:2011/06/04(土) 05:52:31.72
クソ遅いコードをマシンのせいにできなくなって、自分のバカさ加減を理解できるようになったか?w
940デフォルトの名無しさん:2011/06/04(土) 05:53:59.02
>>936
それでも職にはなんとかつけていますねえ。世間でいわれるほど難しいことじゃあないんですけれどもね。
もっともパートナー get は難しいですね。これは仕方がない。
941デフォルトの名無しさん:2011/06/04(土) 05:55:07.97
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ

942デフォルトの名無しさん:2011/06/04(土) 05:56:01.75
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
943デフォルトの名無しさん:2011/06/04(土) 05:56:02.28
>>939
んー、6 core をフルに使うコードはまだ書いてないのでよくわからないです。あ、馬鹿なのは前からわかってます。
944デフォルトの名無しさん:2011/06/04(土) 05:56:42.93
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ

945デフォルトの名無しさん:2011/06/04(土) 05:57:28.03
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ


946デフォルトの名無しさん:2011/06/04(土) 05:58:56.74
>>937
>ノートはCore2Duo 1G, デスクトップは phenom x6 になりました。

嘘付いて楽しいですか?じゃあ次はSSE2をバリバリに使った宿題と
マルチコアの宿題でも出してみようかな
すぐばれるような嘘は付くなよ
947デフォルトの名無しさん:2011/06/04(土) 06:05:08.98
>>946
あれ?どちらも今時分は型落ちというか、屁ノムなんて下取りに出して砂橋にするのがふつーというくらいに、お安いものなんですけれども、それでも嘘っぽいですかね。
sse2 は当分無理でしょうが、マルチプロセス・マルチスレッドな課題なら、今までにもいろいろ結構書いてきてますけれどもね。
948:2011/06/04(土) 06:07:50.08
俺●持ってるから、過去ログ漁ってみましょうか
◆QZaw55cn4cが有給と称して昼間からどれ位書いてるかすぐに分かりますよ
確かかなりの量を書いていたような
そんなに有給の多い会社ってありましたっけ?
949デフォルトの名無しさん:2011/06/04(土) 06:08:30.83
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
950デフォルトの名無しさん:2011/06/04(土) 06:08:51.93
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
951デフォルトの名無しさん:2011/06/04(土) 06:13:48.73
これだけ人から嫌われてるのに平然とム板に居座れる厚かましさにも参りますね
952デフォルトの名無しさん:2011/06/04(土) 06:15:33.83
>>948
そうそう、書き込み時間をヒストグラムにとってみるとよくわかりますよ。特定の時間帯にしか書いてないはずですから。
あとうちの会社は2chに書き込めます。まあ串に残るのでアレなんではありますが。
有給もあんまりとると周りに迷惑ですから、ほどほどにしています。それでも結構流してしまってるんですけどね。
953デフォルトの名無しさん:2011/06/04(土) 06:18:36.91
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ◆QZaw55cn4cって糞だよなぁ
954デフォルトの名無しさん:2011/06/04(土) 08:30:02.91
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):/* ... */の箇所を埋めて以下のような実行結果になるようにプログラムを作成せよ。(長いので次レスに続きます)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2011/6/4
955デフォルトの名無しさん:2011/06/04(土) 08:31:36.45
問1
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for (i = 0; i < /* ... */; i++) {
/* ... */
}
return 0;
}
実行結果 1 2
1
2
実行結果 aaa bbb ccc
aaa
bbb
ccc
956デフォルトの名無しさん:2011/06/04(土) 08:34:02.87
問2
#include <stdio.h>
int *search0(int x[], int n){
/* ... */
}
int main(void){
int x[MAX], n, i, *res;
  printf("配列の個数 > "); scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("%d番目の整数 > ", i);
scanf("%d", &x[i]);
}
res = search0(x, n);
if (res != NULL) {
printf("%d\n", (int)(res - x));
} else {
printf("-1\n");
}
return 0;
}
実行結果
配列の個数 > 5
0番目の整数 > 9
1番目の整数 > 9
2番目の整数 > 0
3番目の整数 > 9
4番目の整数 > 0
2
実行結果
配列の個数 > 1
0番目の整数 > 1
-1
957デフォルトの名無しさん:2011/06/04(土) 08:36:35.27
問3
#include <stdio.h>
void inputMatrix(int X[2][2], char *name)
{
int i, j;
printf("行列 %s:\n", name);
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
printf("%s[%d][%d] > ", name, i, j);
scanf("%d", &X[i][j]);
}}}
void printMatrix(int X[2][2], char *name){
int i, j;
printf("行列 %s:\n", name);
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
printf("%4d", X[i][j]); }
printf("\n");
}}
void addMatrix(int A[2][2], int B[2][2]){
/* ... */
}
958デフォルトの名無しさん:2011/06/04(土) 08:37:36.90
問3の続き
int main(void){
int A[2][2], B[2][2];
inputMatrix(A, "A");
inputMatrix(B, "B");
printMatrix(A, "A");
printMatrix(B, "B");
addMatrix(A, B);
printMatrix(A, "A+B");
return 0;}
実行結果
行列 A:
A[0][0] > 1
A[0][1] > 2
A[1][0] > 3
A[1][1] > 4
行列 B:
B[0][0] > 5
B[0][1] > 6
B[1][0] > 7
B[1][1] > 8
行列 A:
1 2
3 4
行列 B:
5 6
7 8
行列 A+B:
6 8
10 12
959デフォルトの名無しさん:2011/06/04(土) 09:29:12.29
>>954
1レスに収まらない時はテキストファイルでアプロダにうpしてリンクしてくれると有りがたい

解1
・一つ目の/* ... */
argc

・二つ目の /* ... */
if (i == 0) {
  continue;
}
puts(argv[i]);


解2
#define MAX 10
int i;
for (i = 0; i < n; i++ ) {
  if (x[i] == 0) {
    return &x[i];
  }
}
return NULL;

解3
int i, j;
for (i = 0; i < 2; i++) {
  for (j = 0; j < 2; j++) {
    A[i][j] += B[i][j];
  }
}
960デフォルトの名無しさん:2011/06/04(土) 11:37:14.31
>>952
言い訳必死
会社から書き込めるとは、ロクな会社じゃねーな
少なくとも大手ではない
まともな会社なら情報流出を防ぐためにガッチリ楯を組んで絶対に
中から勝手なアクセスは許さない

しかし850MHzのノート→Core2Duo、PhenomX6とかいきなりグレードアップ
するとか、取って付けたような嘘

見苦しいしバレバレなんで

職があるのなら変なスレを立ててモリタポ稼ぎなどする必要がなかろうに
961デフォルトの名無しさん:2011/06/04(土) 11:49:05.67
>まともな会社なら情報流出を防ぐためにガッチリ楯を組んで絶対に
>中から勝手なアクセスは許さない

こういう会社の方が、中はまともじゃないケースが多いような・・・
962デフォルトの名無しさん:2011/06/04(土) 11:53:13.15
カミングアウトしていいぞ?
963デフォルトの名無しさん:2011/06/04(土) 12:05:46.83
>>961
大手は皆そうだぞ
964921:2011/06/04(土) 12:16:37.48
>>913
malloc()/free()信者としては、(正常系で)new したものは delete しなくちゃ、ということで。
1. http://codepad.org/VarEO3Oa
”template を駆使して"とのことですが、こんなありきたりのしか思いつかないんですけど。
3. http://codepad.org/8Kkw9Jhg
965デフォルトの名無しさん:2011/06/04(土) 12:35:13.86
>>960
http 以外は(ntp, ftp でさえも)通らないんですけどもね。
http/post メソッドは通ったりするんですね。無論、串が刺さっており、アクセス調査結果もバッチりアナウンスされてますけどね。
それとは別にメールはmsの蔵人らしいのですが、ときどき止まるんで困ったもんだ。

>しかし850MHzのノート→Core2Duo、PhenomX6とかいきなりグレードアップ
今はお安いんですよ、 sandy bridge のおかげで。c2d ノートもいまや奥で¥8k とか。

>職があるのなら変なスレを立ててモリタポ稼ぎなどする必要がなかろうに
ネタですよ。でも盛況?でしたから、java も加えて次スレたてようかな。そういえば java の宿題スレって消滅しているとこですしね。
966:2011/06/04(土) 13:33:19.95
いまぱっと集計してみた所ですが、正規表現 ◆QZaw55cn4c((?!(曜日)).)*(曜日)を使って

【◆QZaw55cn4c 隔離】C/C++の問題を片付けます
http://hibari.2ch.net/test/read.cgi/tech/1289715349/

では平日の7:00-18:00、01:00-06:00に書いているのは

月曜日 7
火曜日 4
水曜日 2
木曜日 1
金曜日 4

【モリタポ有償】C/C++の問題を片付けます(2)
http://hibari.2ch.net/test/read.cgi/tech/1295273862/

月曜日 20
火曜日 1
水曜日 20
木曜日 6
金曜日 5

特に夜中01:00-06:00の書き込みが多いですね
967:2011/06/04(土) 13:39:42.23
C/C++の宿題片付けます 144代目
http://hibari.2ch.net/test/read.cgi/tech/1291471791/

月曜日 4
火曜日 2
水曜日 6
木曜日 1
金曜日 0

C/C++の宿題片付けます 145代目
http://hibari.2ch.net/test/read.cgi/tech/1294061094/

月曜日 4
火曜日 1
水曜日 0
木曜日 0
金曜日 2

C/C++の宿題片付けます 146代目
http://hibari.2ch.net/test/read.cgi/tech/1296387672/

月曜日 0
火曜日 5
水曜日 5
木曜日 2
金曜日 1
968:2011/06/04(土) 13:43:09.62
C/C++の宿題片付けます 148代目
http://hibari.2ch.net/test/read.cgi/tech/1305867431/

月曜日 3
火曜日 0
水曜日 6
木曜日 1
金曜日 4

こんな感じです
コテ付きで平日の昼間もしくは深夜の書き込みがこれだけ多いのですから
コテ外しでの書き込みはもっと多いでしょうね
皆さんどう思います?仕事しながらこんなに書けますか?俺には到底無理です
969デフォルトの名無しさん:2011/06/04(土) 13:45:46.60
ありえる線としては在宅で勤務時間を気にしないスタイルだけど、
でも在宅でPCスペック云々は考えにくい。
970デフォルトの名無しさん:2011/06/04(土) 13:48:55.42
黙っとけない時点で自分もだめだけど,
もう触れるなよ.そっとしておくに限る.
971デフォルトの名無しさん:2011/06/04(土) 13:52:02.66
取りあえず◆QZaw55cn4cにはCPU-ZでCore2DuoとPhenomX6の
CPU、Cashes、Mainboard、SPD、Graphicsのスクリーンショットを
PNGでうpしてもらいましょうか
証拠としてはそれで十分だと思いますが
972デフォルトの名無しさん:2011/06/04(土) 13:57:22.52
いや待てExif情報入りのJPEGの方がいいな
PNGだとどこかからやら引っ張ってくるかもしれませんからね
Exifが入ってると日時が入るので捏造しにくい
973デフォルトの名無しさん:2011/06/04(土) 14:10:04.89
そう言うつまんないこと言ってないで、ID制にするとか要望しろよ
974デフォルトの名無しさん:2011/06/04(土) 14:12:57.67
荒らしかと思ったわ

東工大の3のやつ、テンプレートを駆使ってどういう意味かわからん
find<T,N>(...){ return *array==value?true:Finder<T,N-1>::find(array+1,value); }
ってことでいいのかね?
しかし gcc -O3 でアセンブリ見た限りじゃ>>964のようにループで書いたって展開されてるし
array, value がコンパイル時に定数になっているかどうかが全てじゃないのかと。
何かもっと深い話があるのだろうか?
975デフォルトの名無しさん:2011/06/04(土) 14:28:38.61
あほか
●で荒らしたら●を焼かれるぞ
荒らすわけがないだろ
976デフォルトの名無しさん:2011/06/04(土) 14:31:26.27
>>973
ID制にしても◆QZaw55cn4cの嘘が見抜けるわけじゃないだろ
むしろデメリットが多すぎる
977デフォルトの名無しさん:2011/06/04(土) 14:36:02.70
>>976
真面目なやり取りをするユーザーにとってはID制にすることでデメリットは何もないけど
978デフォルトの名無しさん:2011/06/04(土) 14:38:12.38
>>977
いや有益な情報量が約1/4程度になるのは料理板などの無ID→ID制になった板で
はっきりしている

この板もそうなるだろう
979デフォルトの名無しさん:2011/06/04(土) 14:39:27.58
煽りが減るだけでしょ。そういうのが無くなるのは、寧ろ歓迎
980デフォルトの名無しさん:2011/06/04(土) 14:41:21.56
煽りがなくなるけど有益な情報も減る
この辺の判断は俺たちがするもんじゃない
運営がする
981デフォルトの名無しさん:2011/06/04(土) 14:44:54.27
有益な情報は有毒な情報のことが多いから
毒とクスリは紙一重って昔から言うね。
982デフォルトの名無しさん:2011/06/04(土) 14:45:22.28
宿題スレの、半分くらいは煽りだという現状はどう思う?
983デフォルトの名無しさん:2011/06/04(土) 14:47:43.06
>>982
じゃあ運営にID変更を願い出てみたら?
ここよりも煽りが10倍以上はひどいと思われる地下板で運営の判断はこうだった

「二度と来るな死ね」

ID変更を願う人というスレを立ててそれを見せてこれだぞ
984デフォルトの名無しさん:2011/06/04(土) 14:51:31.38
ここでスレチの議論をしてるクズどもにIDどうこう言う資格はないだろ
985デフォルトの名無しさん:2011/06/04(土) 14:53:09.55
C/C++の宿題片付けます 149代目
http://hibari.2ch.net/test/read.cgi/tech/1307166756/

次スレ立てて置いた
●はこういう使い方をしないとな
986デフォルトの名無しさん:2011/06/04(土) 14:53:41.79
運営が煽り行為を楽しんでるなら、おしまいだ
もっとやれってことか・・
987デフォルトの名無しさん:2011/06/04(土) 14:59:07.77
>>982
宿題スレ以外ではどうだ?あまり煽りはないだろ?
煽りがひどいスレ1つだけを取り上げて云々言うのもどうかと思うんだが?
それって偏見が入ってないか?
988981:2011/06/04(土) 15:03:02.34
有益な情報=有毒な情報
だが
基本的にID制は反対な立場なんで。
989デフォルトの名無しさん:2011/06/04(土) 15:04:35.07
俺もID制には反対だ
IDを導入した板は例外なく過疎ってる
990デフォルトの名無しさん:2011/06/04(土) 15:05:41.38
>>987
スレの話題が限定していると、覗きに来る奴も限られるんじゃないの?
宿題スレは職業プログラマが暇つぶしに来て煽っている気がする。
991デフォルトの名無しさん:2011/06/04(土) 15:08:00.28
>>990
「気がする」じゃなあ〜
確たる証拠を挙げてから物を言えよ
992デフォルトの名無しさん:2011/06/04(土) 15:08:35.77
特定の回答者を執拗に追い出す行為は慎みたいもの
不必要に(効果があいまいな...但し判断は難しい)トリを
付けるのもこのスレの”偽善性あるいは偽悪性"に鑑み
非常に神経を使ってほしいもの
993デフォルトの名無しさん:2011/06/04(土) 15:11:37.43
>>992
と、QZ自身が申しております
嫌ならトリ付けるなよ
994デフォルトの名無しさん:2011/06/04(土) 15:12:14.88
こういうときにこそトリを付けたレスは有効↓
995デフォルトの名無しさん:2011/06/04(土) 15:13:32.09
>>991
匿名掲示板で証拠なんて無理
996デフォルトの名無しさん:2011/06/04(土) 15:26:17.73
トリは必要な場所で最小限に使うってよくね?
>>992じゃないけど偽善性が高いスレなんだし
997デフォルトの名無しさん:2011/06/04(土) 15:29:35.41
>>974
なるほど。天麩羅メタなんて一生縁がないと思っていますが、そういうふうにもかけるんですね。
998デフォルトの名無しさん:2011/06/04(土) 15:32:06.60
名前にレス番号が入っているだけで十分な気もする
999デフォルトの名無しさん:2011/06/04(土) 15:37:21.88
>>992
>”偽善性あるいは偽悪性"に鑑み
意味不明。
特定トリップに過剰反応する奴がアホなだけやん。
というか、トリップつけなくても盛況ですね。ともかくめでたいことです。
1000デフォルトの名無しさん:2011/06/04(土) 15:39:56.89
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。