1 :
デフォルトの名無しさん :
2011/05/20(金) 13:57:11.89
おまいら janeの隠し機能を発見したぞ! 1.まず半角入力に切り替える 2.Wキーを押しっぱなしにする 3.Wキを押しっぱなしにしながらsageのチェックするところをおもむろにクリック
早速ですがよろしくお願いします
[1] 授業単元:趣味の独学
[2] 問題文(含コード&リンク):
ポインタを使って2つの戻り値を加算するプログラム
[3] 環境
[3.1] OS: windows7
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:ポインタまで。難しいことはまだわかりません
http://codepad.org/14ZoJ5pK コンパイルは通るんですが実行結果がおかしくなります。
ポインタを勘違いして使ってるのかと思うんですがどこを修正すればいいでしょうか?
お手数ですがよろしくお願いします。
うん。勘違いしてる。頭から読み直したほうがいい
scanf -->引数に与える変数には&をつける printf -->引数に与える変数に&を付けることは滅多にしない
9 :
4 :2011/05/20(金) 17:05:10.99
レスありがとうございます。 "の位置と、printfの引数に&を付けた事が原因だったようで・・・ もう一度読み直してきます、ありがとうございました。
10 :
デフォルトの名無しさん :2011/05/20(金) 19:56:55.21
英文字を読み込み、その一つ一つの文字の個数を求めるプログラム。 実行結果 英文字 BBACC 変換後 B2A1C2 よろしくお願いします。
12 :
デフォルトの名無しさん :2011/05/20(金) 20:11:02.18
[1]c言語 [2]英文字を読み込み、その一つ一つの文字の個数を求めるプログラム。 実行結果 英文字 BBACC 変換後 B2A1C2[3] 環境 [3.1] Linux [3.3] C++ [4] 期限:5月22日(日)
>>12 >[3.3] C++
これ、合ってる?
今習ってるのはC言語ではないの?
14 :
デフォルトの名無しさん :2011/05/20(金) 20:29:06.06
あ
>>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
手が滑った
>>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;
}
>>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;
}
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日
>>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;
}
すみません、このコードってどういう意味ですか? これだけでは意味不明かもしれませんが、構文自体がよくわからないのです。 たとえば、s_Eventが変数で、loadという値で初期化している、などというレベルでよいので、 お願いいたします。 const TypeEvent EvtData_Load::s_Event( "load" );
const TypeEvent ←戻り値の型 EvtData_Load::s_Event ←関数名 ( "load" ); ←引数
>22 >23揚げ足取るようですまんが、、、 const TypeEvent ←戻り値の型 EvtData_Load←名前空間 :s_Event ←関数名 "load" ←実引数
>>24 全然揚げ足じゃないので気にせず。
ただ、そこに関してはs_から、EvtData_Loadクラスのスタティック関数メンバかも知れないなぁと。
s_Eventが関数だったらコンパイルエラーじゃないの
>>27 >[1]c言語
お前はバカなんだから他人の揚げ足とろうとか考えるな
>>23-26 なんとなく、わかりました。
TypeEventクラスの名前空間EvtData_Loadのs_Event変数をloadで初期化している?
という感じかなぁと思いました
別の箇所で、if(EvtData_Load::s_Event == event.getTypeEvent)というところがあったので
たぶんs_Eventは変数かなと・・
どうもありがとうございました
33 :
23 :2011/05/21(土) 00:25:48.89
>>32 たしかに gcc, bcc, cl ともコンパイル可能です。失礼しました。
C++プログラム CコンパイラではコンパイルできずにC++コンパイラでは出来るのを言う by 禿げ
>>27 おい
エラー E2094 ***.cpp 12: >> 演算子が使われたがクラス istream では std::string 型のための定義が存在しない (関数 main() )
#include <string> が抜けてるな これでよく C++ プログラムなんかうp出来たもんだ
どうせならコテいれろよ。
[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関数の使用禁止。
>>39 C++もロクに分からないのにコンパイルできないソースを上げるのはやめてくれ
出題者に迷惑だ
>>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の順番");
}
}
>>43 早い対応ありがとうございます。
大変助かりました。
>>43 あれ・・・strcmp関数が使われてる・・・?
>>43 >int my_strcmp(char *s1, char *s2)
>{
>while (*s1++ == *s2++);
>return *--s2 - *--s1;
>}
同じ文字列与えたら、まずくね?
>>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の順番");
}
}
今時 register なんてつけてるし、変なところでキャストしてるし... > int unko(const char *s1, const char *s2) まあ、自覚はあるらしい。
>>48 registerが古臭いのはともかく
変なキャスト呼ばわりとかふざけんな
> register const unsigned char *ss1, *ss2; こういうウンココード書くからウンコキャストする破目に陥る。
52 :
デフォルトの名無しさん :2011/05/21(土) 12:37:16.80
態度でかいぞ、ウンコ禿。
>>52 おら指摘してみろよ
なんとなく吠えてただけなんだろ
正直にみとめろよwwwwwwwwwwwwww
ウンコじゃないキャストとはこうだ。憶えとけウンコ禿。 int unko(const char *s1, const char *s2) { for (; *s1 == *s2 && *s1 != '\0'; s1++, s2++) ; return *(const unsigned char*)s1 - *(const unsigned char*)s2; }
長い自演だったな
>>54 >return *(const unsigned char*)s1 - *(const unsigned char*)s2;
return (unsigned char)*s1 - (unsigned char)*s2;
unsigned から unsigned を引いてマイナスになった時の挙動は規格票では どう定義してたっけ?
>>57 unsigned - unsigned の型は unsigned
でも int として返してるからマイナスになる
自作した
>>43 がバグってたから他のサイトから拾ってきたコードが
>>47 。
コピペしたもんだから
>>51 みたいに態度がでかい。
虎の威を借る狐。Qよりかこわるい。
例えば仮定だけど、intが64bit長でunsigned intが32bit長の処理系があるとして (現実にはまずないだろうけど話として)、unsignedをintに変換したら必ずプラスに なっちゃうんじゃないかなあ
>>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に該当するよね?処理系定義もしくはシグナルを発生するとあるけど
>>63 32bit 環境で
int a=4000000000;
の結果が
a==INT_MAX
になっちゃったりする可能性の話してるの?
>>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)
The value cannot be represented in new signed type なの?
>>67 32bitだとして0xffffffffは INT_MAX の 0x7fffffff を超えている
つまり The value cannot be represented in new signed type だ
本当は -1 を返して欲しいんだろうけどその保証はない
new signed type = int 被演算対象 = unsigned char だけど、おなじこと?
>>68 でも intの範囲は 32bitだとしたら INT_MIN〜INT_MAXだから 0x80000000〜0x7fffffff
だから収まるんじゃね?
そんな感じでいいと思うよ
GCCしか知らない人って… char *c = "ABC"; は const char *c = "ABC"; と同じ。
>>72 Re() で r 返しちゃだめだろ。
main() の t[] って、何も設定してないのに、何を表示するつもりなんだ?
て言うか、まずコンパイルエラーぐらいはとってからアップ品よ。
>>72 です
error C2440: 'return' : 'char [100]' から 'int' に変換できません。
error C2440: '=' : 'int' から 'char [100]' に変換できません。
エラーの内容です
78 :
74 :2011/05/21(土) 17:19:44.43
コンパイラがMicrosoftのVC++だから。
79 :
74 :2011/05/21(土) 17:59:55.14
>>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;
}
>>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++;
>>74 vc++のwarning 4996ってどんなやつ?
scanf("%100[^\n]",s); はどういう意味ですか?
100文字の文字列を読みたい。 あるいは、\nが出るまで読みたい。
>>83 xxx系の関数も使えるけど、xxx_s系の関数使いなさいよっ!ってことか。
warningをoffにするより、vc++ならdefineでxxxをxxx_sに変換したいところだね。
>>86 引数の数が違うからそれはやっちゃダメだな
>>87 おのれvisual studio…
でもxxx_sの関数はC標準に入れてもいい気がする。
C1Xで入る予定だから
確かにscanf()とかgets()の文字列入力は危険過ぎる
scanfとgetsは初心者本ですぐに出て使うなと言われる始末。 初めから「こういうものだ」とfgetsを教えるのは難しいかなあ。
全然難しくない。買ってはいけないクソ本を晒しあげて絶滅に追い込むべし。
でも宿題程度ならscanf()やgets()でも十分なのも事実 業務用には危なくて使えないというだけの話で
72です。ありがとうございました scanfは危険なのは分かりました。ではオススメの入力用関数を教えて下さい
scanf
fgets(stdin, ....)
しかしこう書くと今度は fflush(stdin); とか書く馬鹿が出てくるんだよなあ それはVC++独自の拡張だよって
>>96 とんでもないところに書き込もうとしてるぞw
>>101 stdoutを最後に持って行けって言うんだろ?
>>101 ちがった、stdinを最後に持って行けと言うんだよな
fprintf()ならstdoutが一番前
やれやれだぜ
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] ポインタまでの範囲でお願いします。
できればそれぞれの関数等がどういう操作をしているのかのコメントも
お願いします。
どうみてもSQLです。 しかも埋め込み型じゃありません。
>>106 キミ、それプログラミングの授業の課題じゃなくて業務でしょ。
この時期にその難易度の課題が出るわけないじゃん。100万/納期1か月で作ってやろうか?
同志社なんて3流大だからかんべんしてやれよ
三流大ならなおさら出るわけないだろ。
研究室の課題とかじゃね?友達が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などは使えます。
それらの平均値の意味が曖昧 全体の平均だけでいいのか、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文ぐらいまでの知識しか理解できません
#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; }
>>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の本買ってきてまねして作っていますが、本が増えていくだけです。 さっぱり動きません。
関数使用禁止? 何も書けないな
チョトワラタ
#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); }
[1] 授業単元:プログラミング [2] 問題文: ファイルから指定した文字列を検索し、行番号と検索文字列該当部分に***の1行 検索文字列を含んだ行すべてを表記した1行を画面に出力する ただし、ファイルについてはタブを半角スペースに変換させ、エラー文についても適宜出力させる 表記例(検索文字:aaa) 行番号 *** *** aaa bbb ccc aaa 111 [3] 環境 [3.1] OS: Windowsxp [3.3] 言語: C [4] 期限:5月23日 [5] その他の制限: タブ→スペース変換については関数を新たに作る 別の板で***の表示について相談したのですが、Cでどのように書けばいいか分からなかったので こちらで質問をさせていただきます。 つまづいている部分としては***の表示とタブをスペースに変換するという点についてです。 どうかよろしくお願いします。
>>125 最後に /* end */ って付けなくちゃなw
128 :
124 :2011/05/22(日) 22:48:09.59
>>126 表記がずれましたスミマセン
行番号のところは検索文字列がある行の数字が入り、aaaの部分で***が
上に来るように出力を行えるようにしたいと思っています。
129 :
122 :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さま ありがとうございます。 ヒントもくれず、毎回出される出来そうもない課題に、 暗い毎日を送っております。 ひと時の安らぎをいただきました。 今夜は眠れそうです。
>>130 自分がどこまでわかっていて、どうすれば○○ができるのかがわからない、と質問すれば教えてくれるはずだよ。
>配列、ポインタ、関数、使用禁止
>>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;}
>>125 単純な1行入力にも、mygettext だっけ?何がメリットなのかよくわからない複雑怪奇なしかもバッファはたったの3バイトの例のあれを使わないと。
int main(void)な時点で弟子はねーだろw
求められてるのは拡張BNFでの記述のみなんだろ? どうみてもC言語の宿題じゃない件
140 :
106 :2011/05/23(月) 03:36:09.73
貼ったURLはあくまで参考です。その中にあるaprioriのアルゴリズムの部分だけ 実装していただきたいと思いました。ちなみに研究室の課題です。
>>140 研究室か。
そろそろ年貢の納め時だよー
課題提出後このスレ一度チェックしてあげてくださいってメールしておいたし
この時期に研究室で出た宿題を丸投げするようじゃもう詰んでるから、 私文受けなおすか、頭つかわない肉体派に転向しなよ。
知恵袋で丸投げしてみれば?
[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 宜しくお願いします
printf("%d割引=%d\n", i, teika * i * 10 / 100);
orz printf("%d割引=%d\n", i, teika * (10 - i) / 10);
>>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;
}
price kakakuを使用していない using namespaceは常に悪
151 :
デフォルトの名無しさん :2011/05/23(月) 12:53:56.35
>>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に入れて初期化ですか。 ご指導をお願い申し上げます。
>>154 1000000000をnに入れて初期化です
まあ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.ポインタを使わずに配列で表す場合 とをお願いします。
mac
当然、大文字小文字は区別するのかな?
区別しないのは面倒じゃね?
デミリタは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日])
166 :
122 :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); }
>>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;
}
169 :
デフォルトの名無しさん :2011/05/24(火) 16:21:28.15
>>167 すみません。やってもらってなんなんですが
>>165 のプログラムの実行結果がちがうのですが・・・
171 :
159 :2011/05/24(火) 18:09:49.22
>>161 区別して大丈夫です
>>168 ありがとうございます。
申し訳ないのですが、ポインタを使う場合と使わない場合で、
別のソースファイルにしていただけますでしょうか?
できれば説明のコメントも付けて頂けるとありがたいです。
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
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 見にくくてすいません。どうかよろしくお願いします
(3)関数ポインタの用途が不明
ヘヴン、ゾンビの定義が不明
>・死亡状態からは1%でノーマルになりHPは1になる。 >・死亡状態からは5%でゾンビ状態となる >・HPが0以下になれば死亡になりそれ以降の遷移はない。 やりとほこ
やりってw
184 :
デフォルトの名無しさん :2011/05/24(火) 19:44:09.80
186 :
デフォルトの名無しさん :2011/05/24(火) 20:07:29.18
173です。お騒がせしてすいません。
>>184 ありがとうございました!
・HPが0になっても改造コマンド「リジェネ改」を掛けてあれば一度倒れても むくっと起き上がる
>>169 問題文ぐらい読めるようになっとこうぜ
> 答えは以下で出力されるものとする。
> printf("answer = %s\n", str);
これは、出力が「printf("answer = %s\n", str);」という文字列なんじゃなくて、
printf("answer = %s\n", str);という記述を用いて答えを出力しなさいよって意味だよ。
>>188 エスパーするとそういうことじゃなくて、
何文字目を入れ替えるって入力したいのに何バイト目を入れ替える処理
になってるから1文字分入れ替え位置がずれてるってことじゃね?
間違ってたらすまん。
>>167 は1文字ずれてるから末尾の文字を指定しようとすると、ヌル文字を入れ替えてしまっておかしくなるな
まぁ1行だけ修正すれば動く
swap(str + position1, str + position2);
↓
swap(str + position1 - 1, str + position2 - 1);
[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] その他の制限: できる限り処理が早くなるように
>>191 何行目までが横なのか不明なフォーマットだから無理じゃね?
>>193 その時は0が並んだところだけ、複数パターン検査で
日本語でおk
>>197 追記
tokyo.dat は1970年から2009年までの気象情報のデータである。
各行の情報は左から、
年、平均気温、
最高気温の年平均、最高の最高気温、最高の最高気温を記録した日、
最低の最高気温、最低の最高気温を記録した日、
最低気温の年平均、最低の最低気温、最低の最低気温を記録した日、
最高の最低気温、最高の最低気温を記録した日
である。
>>200 元が酷いのは仕様です…
同じ程度のレベルなら書き直していただいて大丈夫です
構造体や関数は使っても良い?
>>202 多分どっちも習っていないと思うので使わないでいただけると
理解がしやすくて助かります
すみません、もう1問お願いします [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 寒暖の差が大きい順番に並び替えて、ファイルkadai07.datへ出力するプログラムkadai07.c を作成せよ。 寒暖の差: 最高の最高気温? 最低の最低気温 [3] 環境 [3.1] OS: windows [3.2] cigwin gcc -o [3.3] 言語: C [4] 期限:出来れば本日中 [5] その他の制限:
>>208 酷いといわれたから、よくわからないまま同調して酷いといってしまったんだろうけど、
しいていうなら見難いらしい。
別に見にくいとはまるで思わないんだけど「もしかして:インデント」
インデントも修正すべきだけども、 char型へdouble型代入しようとしてる所と、 scanfでポインタのポインタ渡してる所あるでしょ、 そこが期待通りの動作になってない。
ポインタのポインタ渡してるとこなんてある?
213 :
デフォルトの名無しさん :2011/05/25(水) 21:58:25.56
文字列んとこ
meanと比較すべきところをavgと比較してる、が抜けてる
215 :
213 :2011/05/25(水) 22:03:51.36
(続き) のことを言ってるんだと思う ポインタのポインタっていうか型が間違ってるのが適切な気がするが
質問なんですが、時間オーダーと計算量オーダーってどう違うんでしょうか? うちの大学の教授が違うように書いているんですが、時間オーダーってググッても出ません。
>>216 同じ O(n) のアルゴリズムがあるとして
同じデータに対して片方は1秒、もう片方は100秒かかるとかそういうんじゃね?
オーダーなんだからどっちも同じになるはずなんだがなぁ むしろそうでなきゃ指標として何の意味が・・・・・・・
>>216 時間オーダーと空間オーダー(必要メモリ量)、は確かに違うと思いますが、
時間オーダーと計算量オーダーは一緒のような気が。
いちど先生に聞いてみればいいと思います。
例外はあるでしょうが、学生の質問というものは先生にとってはウェルカムだと思います。
自分のしゃべっていることが相手に一部でも届いていることを確認できる機会ですから。
全然わからなくて困ってます。よろしくお願いします。 [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でお願いします。
>>220 何がわからないの?
とりあえず出来てる分のコードを書け
[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] その他の制限: 入出力関数を用いて解答すること。 配列とポインタを使用する事。
[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] その他の制限: 入出力関数を用いて解答すること。 配列とポインタを使用する事。
>>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);
}
>>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;
}
}
>>225 該当する番号がない場合を
switchに追加すれば完成だろう
defaultを使うのが楽
>>226 加えて結果を表示するときにa(演算子)bじゃなくて入力した数値を出せばいいかもね
ポインタ使って演算ってのは変なこと考えなければ、関数化しろってことだと思うよ
scanfで使ってるからいいんじゃねーの?
てゆーか
>>225 までできてこれ以上なにを求めてるんだ?
>>231 入出力の後の、四則演算部分でポインタを使えと
指定してあるようにも読める
ヒント 224と225は別人
てへぺろ☆(・ω<)
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]簡単な課題だそうですが、手こずってます。どうかよろしくお願いします。
>>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);
}
238 :
236 :2011/05/26(木) 07:00:32.77
>>237 迅速な回答ありがとうございます。
とりあえずコピペして動かしてみます。
実行結果も提出しなければならないらしいので...
ありがとうございました。
239 :
デフォルトの名無しさん :2011/05/26(木) 09:01:46.54
4つの数字が入力されないし、小さい順にも出力されないんじゃね?
ほんとに問題文読んだのかってレベルだな
241 :
236 :2011/05/26(木) 11:18:26.99
動かさせていただきました。 とりあえず動きましたが、やはり 問題文の意図どおりじゃないのかも しれません。出来ればもう一度お願い したいのですが...
[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] その他の制限: ありません。
a
>>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;
}
void print(const char *string, int n) { printf("%.*s", n, string); }
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] その他の制限: お願いします
249 :
872 :2011/05/26(木) 15:31:45.73
250 :
249 :2011/05/26(木) 15:32:08.41
名前ミス
メモリマップドファイルを読むプログラムは別にした方がいいですかね? まあsub()の内容を別プログラムにしてsystem()で呼び出すだけだけど あと継承をONにしとかないとだめだったけな SECURITY_ATTRIBUTESをいじる 別にHANDLEを継承しなくても名前でオープンするんだから継承は不要だと思うけど
あーあと子プロセスではmutexを設定した方がいいな
>>225 ありがとうございます
ポインタを使うので*ptrとchar*に変える?でしょうか・・・
続きを分かる方居れば、教えて欲しいです。
>>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)
>>255 教科書には、
変数は変数名とデータ型の情報をもっていて、メモリの任意のアドレスに配置されている。
これまでのプログラムでは変数名を指定して、データを代入したり、参照したりした。
ポインタは指し示すの意味が示すように、ある変数を指し示す変数でポインタ変数という。
ポインタ変数には指し示したい変数のアドレスを格納する。
ポインタ変数を使用する場合、変数と同様に宣言が必要である。
その場合、ポインタ変数は変数名の頭に[*]を付け、指し示す変数と同じデータ型で宣言する。
また、ポインタ変数の名前の付け方は変数の場合と同様である。
と書いてあります。
これは関数化するという事ですか?
259 :
デフォルトの名無しさん :2011/05/26(木) 20:03:09.55
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] 期限:出来れば今日で お願いします!
>>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);
}
>>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
俺のほうがスマートだな
>>265 お前
>>263 ?
> このとき、num1<num2であるように入力する。
3つしかないそれも極めて容易な要求仕様を全部実装できないなんて…
>このとき、num1<num2であるように入力する。 この条件に合わなかったときの要求は書いてない
for(num1 = num1 % 2 ? num1 + 1 : num1; num1 <= num2; num1 += 2)
すみませんがコレをもう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を入れて作りたいです
[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つずつ文字を出力することです。
276 :
◆YXb4nS0g1I :2011/05/26(木) 22:11:17.43
[1] 授業単元:繰り返し処理 [2] 問題文: 五者択一の自作の問題文章を表示させ、整数入力を受けつけ、正解・不正解の判定を行う。 ただし、正解が入力されるまで、「不正解」と表示した後、同じ問題を正解となるまで繰り返し表示し、回答を入力させる。 問題が2問である上記のようなプログラムを作成しなさい。
>>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] 期限: 今日
>>277 とても助かりました。ありがとうございます。
>>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;
}
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時まで
何卒よろしくお願いします。
285 :
デフォルトの名無しさん :2011/05/27(金) 00:39:41.77
>>283 迅速な返答有難う御座いました。とても助かりました。
286 :
デフォルトの名無しさん :2011/05/27(金) 00:41:34.03
すみません。間違えました。 284様に感謝です。有難う御座いました。
287 :
271 :2011/05/27(金) 01:01:51.86
すみませんどうにもprice kakakuの文字を入れたくて 151は自分ではないのですが、驚いて出てくるタイミング失ってしまいました なんかダメダメですね・・・スレ汚し失礼しましたorz
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氏か?
>>291 多分な。「回答が付きにくい」と勝手に決めつけてめし
最後が /* end */ で終わってるし間違いないだろう
時間がなくて放置しただけかもしれないのにさも自分が「皆難しくて解けない
だろうから俺様だけが解ける」とでも言わんばかりの思いきり上から目線
何様だと思っているのやら
一言多いんだよなこいつは
あのまま提出すれば、まずろくなことにはならないクソコードだしな
>>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;
}
}
>>289 動的二次元配列
ポインタ使うな、二次元配列を渡せってのをきっちり満たそうとするのが困難だなぁ
(配列の引数がポインタになる件は[]でいいってことにしても)
C99でわりと条件通りにやれそうだけどそれもどうなんだという気がするし
返り値がやっぱりどうにもならないし
どの条件を崩しちゃっていいのかがなんとも
>>290 をちゃんと読めば、そんな疑問は出てこないはずだが
298 :
289 :2011/05/27(金) 10:24:26.13
>>295 ありがとうございます
>>290 で補足していますが、配列は10*10
が最大と固定してしまって大丈夫です
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]; } } }
寝起きで頭がボーっとしてた void matMul(double mat1[][10], double mat2[][10], double mat3[][10], int M, int R, int N) だな
301 :
289 :2011/05/27(金) 10:42:20.78
>>299 main関数のファイルの入力部分もよろしいですか?
303 :
289 :2011/05/27(金) 11:03:33.07
>>302 ありがとうございます
時間が出来たら確認してみます
304 :
289 :2011/05/27(金) 11:07:48.65
時間が出来なかったのでそのまま提出します
QZの糞はまた飽きもせず遅い役立たずな自作二分木を使い回しているのか いい加減にやめろ そのうち誰かが代わりに作った物だという事がすぐにバレるようになるぞ まあ出題した教官もここを見ているからすぐにバレるだろうが
>>302 Pastebin.com is under heavy load right now, sorry...
But we are working on it!
In the mean time you can...
というのがずっと出て見れないんですけど...
出来たらcodepadかideoneにお願いします
どうやって調教したんだろう。ネコ。
>>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を付けないとコンパイルエラー
>>292 そんな理由で判断してるのか。
上から目線に見えるのなら、まだ未熟なんでしょう。
>>314 QZを擁護するのはQZ本人だという法則
>>313 思い切り上から目線じゃねーか
自覚ないのかお前?重症だな
>>318 >まだ未熟なんでしょう。
普通こんな事は書かないだろが?あ?
QZって本当に思い上がりもはなはだしいよね
>>319 落ち着けよ。煽るのは好きだが煽られるのは嫌いなのか?あ?
>>320 そう?ちゃんとしたコードを書けないことは認めてなかった?
ただ、まともに指摘できる人が少ないだけで。
>>321 >ただ、まともに指摘できる人が少ないだけで。
ほらほらまた上から目線
自己愛性人格障害だな
どんだけ必死なんだよ
◆QZaw55cn4cは糞
pastebin.com
>>321 「お前らまともに指摘してねーじゃんwwwゴミレスひっこんでろwww」だと上から目線に取られないかもしれないから試せ
あと、なぜか句点が怖い世代もいるから注意な
327 :
271 :2011/05/27(金) 16:57:26.76
このスレで慇懃無礼なやつの9割はQZ
このスレにはQZとQZと同類だけしかいない。 つまり、基地害だけスレ
いんぎん‐ぶれい【×慇×懃無礼】 [名・形動] 表面は丁寧で礼儀正しいように見えるが、実は尊大で無礼なこと。 また、そのさま。慇懃尾籠(いんぎんびろう)。「―な態度」 まさにQZの事だwww
基地にそんなこと聞いても....
何この難しい漢字?辞書で調べたら分かった!みんなも知らないだろうから貼ってあげよう!
これだけ嫌われるコテも珍しいな
>>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文で値を決めて関数に送って計算する、
といった簡単なプログラムなのですがエラーがでて動きません。
どこが間違っているのでしょうか?
本人来たか。相変わらず人気者だよ ってかまた燃料投下したね
QZはバカすぎて自分の負けもまともに理解できないから、納得させるために説明するのは時間の無駄
>>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] ってするってことはもしかしてこれは
配列の構造体 じゃなくて 構造体の配列 だったのか…
勉強不足でした
>>342 適切なレベルで回答を作れたと思われるコードを挙げた上で言わないと説得力がないよ。
それに、どれだけ出題者のレベルに合わせたとしても、説明を求められた時に
説明できないようではカンニングと見なされてもおかしくない。
結局は出題者にかかってるんだよ。
346 :
デフォルトの名無しさん :2011/05/27(金) 20:12:19.96
それが分かるようなレスにしないと、その辺のゴミレスと同じ扱いにされるよ トリつけようぜトリ
出題者のレベルをまるで見抜けてない
>>168 以外見つからなかったわけだが、、、
350 :
デフォルトの名無しさん :2011/05/27(金) 20:23:11.94
351 :
271 :2011/05/27(金) 20:24:07.94
>>350 すりかえテクニック半端ねぇっす参考になります
で、コードはどこに
強制ID表示にすれば良いんだよ
IDだけじゃなぁ。
てめーのバカを棚に上げてスリ替え呼ばわりスンナ。カス。
>>168 enum以外は全部習った範囲のはずだ。
IPってゆうな。クズ。
>>355 でも -Dスイッチを知らなかった質問者に蹴られたんでしょ。後付けよくないとか言ってるけども。
面倒でも二つに分けてコードをあげればその後QZが沸くこともなかっただろうし。(こればっかりは分からんが)
それをしないで放置したことはオナニーにならないの?
>>356 前その辺の話題をしたときは、忍法帖の情報使えばIDよりはましになるかも、と書いた。
どうせ単発が沸くにしても、連投規制が役に立つのと、真っ当なレスをしている人はずっと特定できるでしょ。
何れにしても本人特定する情報を付加してほしいな
360 :
デフォルトの名無しさん :2011/05/27(金) 20:49:07.20
>>358 1 マクロは習ってるはず。
2 #ifは習ってなくてもif文からの推測で理解できるはず。
3 1,2から2つのコードに分解できる。
4 strtokはマニュアル見れば理解できる。
5 配列は習っている。当然配列の順アクセスも可能。
6 enumは見ればわかるだろう。
という緻密な計算の元に作られた回答なのだよ。わかったか? バカ
質問者が理解できない可能性という点においては
QZのxmallocと、
>>168 の-DUSE_POINTERは同じぐらいじゃないかな。
enumハックが必要な場面でもないのに、enumか。
宿題の回答としてならマジックナンバーの方がまだマシなんじゃないかとすら思える。
>>360 緻密な計算の結果
>>171 というありがたいレスをもらったわけだ。
さすがにxmallocと同じはねーだろ
>>358 忍法帖ですか?なるほど、調べて見ますねw
364 :
デフォルトの名無しさん :2011/05/27(金) 21:02:22.65
>>361 あと、てめーもコード書いてから文句付けろ。バカ。
>>363 今はこんなんしか出ない。名前欄 !ninja で。
もともとは巻き添え規制を減らすために作られた仕組みだったけど、運営が変な機能ばかり足してる感じ。
> 緻密な計算の結果
>>171 というありがたいレスをもらったわけだ。
断ってから出てきてないから自分で考えたんだろ。学習効果まで緻密に計算済みなんだよ。
>>364 結局それかよ。自分のコードの否を認めない点ではQZにすら劣る。
特定できる情報が強制開示されるようになってれば、今まで書いたコードがどれか分かって楽なんだけどね。
>>364 も自分が過去に書いたコードがどれなのか、証拠も無いままにせっせと提示するのはいやでしょ。
>>366 あきらめたんじゃ、、、、ない、、かな
それか友達に見せてもらったとか
369 :
デフォルトの名無しさん :2011/05/27(金) 21:12:03.16
>>367 今までに書いたコードを出せと言ってるんじゃない。これから書けといっているんだ。
とっとと書け。
>>369 結局は◆QZaw55cn4cと同じことを主張してますねぇ。
弟子ですか?
コメントがまったく消臭剤になってない、 息苦しい読みにくいプログラムのいい例だな。
◆QZaw55cn4cは完全な荒らしだな こいつが一人いるだけで宿題スレはカチャカチャに荒れる アク禁要望出してみるか
・gcc4.1ではコンパイルできない
・メモリリークする
・動作がおかしい
・要件を満たしていない
そんな
>>168 よりはマシだと思うよ。
>>373 荒らしだとしたらコスト対パフォーマンス比が極めて良好ですね。
わずかな燃料を投下するだけで、これですか。
>>338 >>336 は不発に終わりました。
377 :
デフォルトの名無しさん :2011/05/27(金) 22:28:31.93
>>370 コードも書かずにつけたケチが、本人が理解できたようである#ifでの切り替えと、
しらなくても理解できる遊びで入れたenumだからな。Qzにも劣るくずだよ。
>>371 単語長の最大値は適当にとっていいとは書いてあるけど、チェックしなくていいとは書いてないね。
Qzにも劣るバグ入り。
ID非表示はこれだから・・・
>>377 ケチつけてくるとは思ってたけど、まさかそことは。
380 :
デフォルトの名無しさん :2011/05/27(金) 22:34:39.29
>>379 最初にチェックする、基本中の基本だよ。
>>376 そんな事は誰も聞いてない
荒らしは荒らし
報告しとく
382 :
デフォルトの名無しさん :2011/05/27(金) 22:45:57.90
>>377 遊びで入れた…?enumハックのつもりですらないってこと?
固定で決めた単語長を超えた場合に切り詰めていいとは書いてないね。
◆QZaw55cn4cは宿題出さないのか、教室の中で生徒でないなら教師だな。
strdup()したあとfree()してないのか マクロは読みにくくてあかんな
C++ならstringなりスマポなりカスタムデリータを指定出来るのに Cでmalloc()が絡むと本当に苦労する
do ...; while(0); て ...; じゃない?
>>168
>>387 それはセミコロン必須にするためのidiomかな。
>>371 って煽られて1時間で作った割には、宿題の回答としてそれなりなんじゃないの?
学生向けだからこそもっとガチで書くべきなのかな
390 :
sage :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 単なる嫌がらせとしか思えない
そう言えばクワイン(自分自身を出力するプログラム)を思い出した
>>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);
}
396 :
392 :2011/05/28(土) 02:36:19.35
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ではコンパイルできない
できるよ。バカ。出来ないと主張するならエラーメッセージ張れ。
> ・メモリリークする
しねーよ。クズ。
399 :
392 :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] 期限:明日まで
return *a > *b ? a : b; &a, &b
405 :
387 :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; }
>>406 関数内部は
return (*a > *b) ? a : b;
cへの代入時の使用部分は
&a, &b
409 :
408 :2011/05/28(土) 12:20:14.00
>>407 max関数の「引数」である int *c はint型ポインタの「値渡し」となっている、
その為max関数内で「アドレス」を代入したとしても、
main関数側に返る事は無い、返るのはint型の値である。
「引数」でアドレスを返そうと思ったら、int型ポインタのポインタの「値渡し」をする必要がある。
410 :
409 :2011/05/28(土) 12:32:57.51
仕組みの解説も踏まえて分かり易くしてみた 「引数」では「値渡し」しか出来ないが、ポインタを使えば結果を返す事が出来る、 その仕組みは、ポインタに代入された変数への「アドレス」を使い、間接参照する事によって 呼び出し側の変数に間接的に代入しているからだ、 したがって、上記の式(c =a や c = b)は間接参照を行えていない為、結果を返せていない。 つまり、「アドレス」を引数を使い返すのであれば、ポインタのポインタに代入されたポインタへの「アドレス」を使って間接参照をすれば良い。 長くなっちゃった。
>>407 引数として値渡しされたint *変数にアドレスが入っているのに、
アドレスをデリファレンスして使うことも無いので、
関数内での変数の代入で影響が完結している。
*c = *a, *c = *bなどとすれば、呼び出し元の変数に代入される。
また、そのような仕様のmax関数を定義しておきながら、
main関数の中のmax呼び出し以降がトンチンカンなのも問題。
[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の値はキーボードから入力できるプログラム
>>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;
}
>>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;
}
>>413-414 ありがとうございます
しかしごめんなさい、こちらの説明不足でした
(1)~(4)は別個です
for文を使ったもの、while文を使ったもの、do-while文を使ったもの、if文を使ったもの
1~nの和を出すプログラムを計4個作る問題です
お手数かけますがお願いします
416 :
392 :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);}
>>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;
}
do whileでsumみたいな計算させようとすると、 条件分岐でごっちゃになっていやだな。
420 :
387 :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;
}
>>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;
}
422 :
387 :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] 期限:今日まで
>>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;
}
[1] 授業単元:C [2] 問題文(含コード&リンク): この問題では、数列として扱う値はすべて実数での処理を想定する 初項および項数を入力すると、その等差数列の和を求めるプログラムを作成する ○公式を利用して求める場合→項数(初項+末項)÷2 ○1つずつの項を順次足し合わせる場合→公差=(末項−初項)÷(項数−1) との2種類の計算方法で値を求めるプログラムを作成しなさい [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン:Visual Studio2008 [3.3] 言語: C [4] 期限:今日まで
>>398 横だけど、strlcpyがないっていわれた
リークはstrdupじゃない?
あ、もしかしたらmacだとあるのかな
>>428 末項も入力します
問題に書くの忘れてました
すいません
>>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;
}
432 :
412 :2011/05/28(土) 21:46:26.23
> リークはstrdupじゃない? しねーよ。コードも読めない低能が批評とは片腹痛い。
すべて実数を数列として扱うことはできないんだけど
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] 期限:月曜日まで
vistaなのかlinuxなのか・・・
440 :
デフォルトの名無しさん :2011/05/28(土) 22:32:27.14
441 :
デフォルトの名無しさん :2011/05/28(土) 22:34:42.52
>>439 Linuxでvimを使ってコンパイルをしております。
>>442 しねーよ。バカ。プログラム終了時に全部解放されるから問題ない。
>>361 >enumハックが必要な場面でもないのに、enumか。
>宿題の回答としてならマジックナンバーの方がまだマシなんじゃないかとすら思える。
それどころか、
>>168 buffer[1024]
fgets(buffer, 1024, stdin)
というのをみると、どうして 1024 を #define なり enum なりしなかったのかが疑問ですね。
enum/#define する基準を意識しておらず、てきとーに エニュミュを使いたかっただけのようです。
>>443 ほー、
malloc() したのを free() しなかったら、それはメモリーリークと呼ぶのが普通なのでは?
プログラム終了時にスタートアップが解放したり、プロセス終了時に OS がリソースを回収したりするにしても。
447 :
デフォルトの名無しさん :2011/05/28(土) 23:22:03.47
>>446 バカ。プログラムの終了時に開放する/しないは宗教戦争だ。
てめーは宗教戦争仕掛ける気か? 死ねバカ。氏ねじゃなくて死ね。
>>443 へたくそな言い回しだな。ネタレスならいいけど。
>>444 結局enumにしかケチ付けられないクズなんだから引っ込んでろよ。
言いがかり付けられることがわかっていながらバグ作りこむヘボグラマ。w
>>447 宗教戦争ということにしたいのですね。確かに実害はないことを盾に問題ない、とする人々はいるようですが。
け れ ど も
malloc() したのを free() しなかったら、それはメモリーリークと呼ばれても
し か た な い で す よ ね
>>447 解放しない派はメモリリークしていないなんて言わないよ
>>449 じゃあ改めてバグの無いコードをどうぞ。非の打ち所の無いものを頼むよ
>>444 みょうではあるがあんまり突っ込むなよ
それが
>>168 の絶対的こだわりなんだから
ついでに終了時に開放しないにも絶対なこだわりあるみたいだが
QZのこだわりと同じ
>>449 enum に突っ込んでいるのではなく、
enum/#define する基準を意識せず、不用意にマジックナンバを使用していることを批判しています。
freeしたと思っていてできてないのがメモリリーク。 freeしながらヒープをやりくりするプログラムでの話。 ヒープを使いっぱなしで話が済むプログラムではケアの必要などない。
456 :
デフォルトの名無しさん :2011/05/28(土) 23:33:19.21
>>451 words[0].word = strdup(p);
words[0].word = strdup(p);
これがメモリーリークだ。普通に言う。
死ね。バカ。氏ねじゃなくて死ね。
>>453 そりゃまあ、こだわり、といわれたら、そうかも知れませんね。
この件は撤退しましょうか。
>>453 絶対的なこだわりじゃないよ。緻密な計算だよ
460 :
デフォルトの名無しさん :2011/05/28(土) 23:35:49.23
>>452 残念ながらお前(ヘボグラマ)の作品と違ってバグは全くない。w
>>456 あれ?最初の strdup() で得たポインタは宙ぶらりんになるにしても、結局、終了時に解放されるのだから
プログラム終了時に意図的に解放しない派的には、これも「メモリリーク」とは呼ばないのではないのでは?
なぜ
>>456 の場合だけ特別にメモリリークと呼ぶのかくわしく。
メモリリークとは「あるリソースを指しているポインタが失われた状態」を指して言うんだぞ 名著「Exceptional C++」を読め つまりプログラム内ではもうそのリソースを解放する手段が無くなった時に、初めて「メモリ リーク」と呼ぶのであり、malloc()したのをfree()しないのは単なる怠慢であってメモリリーク ではない しかし、プログラムの終了時もしくは実行時でもいいが、malloc()したものをfree()しないで 長時間動かすといずれヒープ領域の枯渇を招く危険があり、こまめに解放出来るリソースは 解放すべきである これは「プログラム作法」に属する 確かにプログラムがterminateするとそのプロセスが保持していたメモリはOSに返却されるが、 もしリソースをロックしていたらそのリソースまで返却されるとは限らない 使ったものはちゃんと返してからプログラムを終了する癖を付けておかないとそのうち痛い目に遭う
463 :
デフォルトの名無しさん :2011/05/28(土) 23:40:13.73
>>450 それでは聞いてやろう。それを全部freeすることでどういうメリットがあるのだ?
プログラム開始時の状態に戻すことに病的にこだわるなら、変数も全部戻したらどうだ?
メモリアロケーターがOSから確保したメモリブロックを終了前にOSに返さないのはメモリリークと呼ばないのか?
確保したのを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
一応、MacもWindows NT系、UNIXのようにプロセス終了時にはメモリが解放されるのは保証されてる、 でもプロセスが終了しない間はメモリが解放されないわけだからちょっと規模大きくなって連続稼働するとプログラムがダウンする。 このプログラムだと問題ない、と言えるけど害悪しかないだろ、ヒープチェッカーとかどうすんの。
467 :
465 :2011/05/28(土) 23:42:48.79
リロードしないうちに同じ事書かれた、ってかみんなペース早いw
>>456 のケースも、どうせfreeするつもりが無い場合は、
ただの使い捨てであってメモリリークじゃない。
void leak() {
char *tmp = malloc(1024);
//略
if (略) return;
free(tmp);
}
こんなふうになっちゃってるのがメモリリークかと。
>>467 なんか人多いね。
>>468 後でfreeしようと思ってもできなくなってるって意味では同じなんじゃないの?
なんだか、プログラム終了時に意図的に free() しない派の辞書にはメモリーリークという言葉が存在しないように思えてきました。 楽でいいですねえ。
471 :
デフォルトの名無しさん :2011/05/28(土) 23:46:15.82
>>464 後出しで言いがかり付けられることがわかっていながらバグを作りこんだ
ヘボグラマの作品(笑)と違ってバグは無い。
474 :
デフォルトの名無しさん :2011/05/28(土) 23:48:42.15
>>470 逃げてないで
>>463 に答えろよ。
確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
ぶっちゃけ単語の定義なんかすれ違いだからよそでやれば?
476 :
デフォルトの名無しさん :2011/05/28(土) 23:52:37.77
宗教戦争仕掛けてきたクズに言え。
>>463 >それでは聞いてやろう。それを全部freeすることでどういうメリットがあるのだ?
メリットのあるなしは関係ないのでは?宗教戦争なんでしょ?
「malloc() したのをfree() しなかったのならメモリーリークだ」という人がいても仕方がないのでは、ということです。宗教戦争だそーですから。
そもそも、解放しない派的には、何をメモリーリークと呼ぶのかすら、はっきりしていないようですね。
>>471 非の打ち所の無いものを頼む
→バグは無い!!!
バグは無いけど非の打ち所があるのは認めてるんだな。要件を満たしてはいないが、バグは無い、と。
質問者には蹴られるし、Linuxだとまともに動きすらしない可搬性の無いコード。
>>474 すみませんが、
「メモリアロケーターがOSから確保したメモリブロックを終了前にOSに返さない」
という事態を、普通のプログラムでどうやって引き起こしたらいいのかわからないのですが。
そもそも何を突っ込まれているかよくわからないので、説明していただけないでしょうか?
480 :
デフォルトの名無しさん :2011/05/28(土) 23:59:19.90
>>477 > そもそも、解放しない派的には、何をメモリーリークと呼ぶのかすら、はっきりしていないようですね。
バカにもわかるように実コードで示してやっただろ。
>>456 それと
>>463 の後半に対する反論もどうぞ。
sbrkやmmapやVirtualAllocしたのは解放しないのかな?
確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
>>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
>>480 >バカにもわかるように実コードで示してやっただろ。
>>456 >>461 何をメモリーリークと呼んでいるのか、今ひとつよくわかりません。適当に気分でメモリーリークといったりいわなかったりのような気が。
楽でいいですねえ。
>sbrkやmmapやVirtualAllocしたのは解放しないのかな?
申し訳ないけれども、mallc() したものですら free() する派の人が、それらについては使用後解放しないなんてありえないと思いませんか?
>>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
(以下略)
>>482 それは初耳。kwsk
malloc() したものは、free() しなくてもプログラム終了時にすべて回収されるのではなかったでしょうか?
malloc() で要求するサイズによって、OS に返すか返さないかが変化するのであれば、
あぶなくってしかたがない。
malloc() したものはすべてfree() したほうがいいのではないでしょうか?
main(){malloc(1);} でメモリリークするとか言ってる奴は 屋根無し駐車場を借りといて 雨漏りがすると大家に因縁つける基地外
487 :
デフォルトの名無しさん :2011/05/29(日) 00:19:56.38
> 申し訳ないけれども、mallc() したものですら free() する派の人が、それらについては使用後解放しないなんてありえないと思いませんか? やっぱりバカだ。 mallocはsbrkやmmapやVirtualAllocなどを使って、OSからメモリの割り当てを受けるんだよ。 普通のメモリアロケータはOSに返却しないけど、てめーは返却してるっていうのか? そりゃスゲー。www どうやって返却してるんだ? www
freeは即座にOSに返却されないが、実行中にメモリが足りなくなれば返却するし、 返却されなくてもプログラム終了時には返却される。 タイミングの話?
おなじく
>>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
(以下略)
>>489 macで動くかどうか試せないんだけど、動かなかった場合は問題がバグってるって言うと思う。
動くなら緻密な計算の結果だと思う。
>>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
>>492 macだとそれ保証されてるの?
Cの規格だけでは保証されてないからわかんないんよ
>>489 [3.1] OS:Mac OS X
[3.2] コンパイラ名とバージョン:gcc 4.1
ではちゃんと動くんですよ
緻密な計算してるんです
>>491 isDelimiterで回避してると思う。
でも、0xffとand取ってるのは何でかわからず。この際ついでに補足してくれると助かる
freeしてるのにメモリリーク発生してるって事は プログラム終了時にメモリを返していなければメモリリークって事でOK?
そうなるとGCある言語だとメモリリーク防ぎようがないなw
プログラム終了時にメモリを返すのは基地外とQZだけ 覚えとくように
メモリリークってプログラム実行中にしか発生しないだろ。 終了した後は、どう転んでも回収されるんだから。
502 :
デフォルトの名無しさん :2011/05/29(日) 00:53:09.20
>>497 それが、
>>450 の主張。
確保したメモリを返さないのはメモリリークと呼ばれても
し か た な い で す よ ね wwww
とっとと、
>>282 なおせよ。簡単ななおし方教えてやろうか?
mallocの代わりにmmap, freeの代わりにmunmapこれでケチの付けようがなくなる。
バカ丸出しだけどな。www
>>499 保証されてるかどうかはわからんけど、ともあれ、macだとうまく動くってことかな
>>502 freeしてればメモリリークと呼ばないのが
>>450 の主張だと思うんだが、どの辺でずれたの?
506 :
282 :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 &の理由ありがとう。
>>371 みたいにそもそもintで受けてしまうっていうのはどうなんだろ。
fgetcがint返すのも符号の問題があるからcharを避けたのかなぁ
>>507 勝手にメモリーリークの定義をされても。
まあ、
>>456 のとおり、メモリーリークの定義がふらふらしているようだし、やっぱりあんまり考えていないようですね。
>>507 > >strdupは内部でmallocを使っている。mallocしたメモリをfreeしないのはメモリリークだ。
これはひとつの考え方だと思いますよ。宗教戦争のネタになるくらいだから。
それに比べると、
>mallocは内部でsbrk/mmap他を使っている、sbrk/mmapしたメモリを開放しないのはメモリリークだ。
という宗教戦争は寡聞にして知りません。
free() しても OS にメモリリソースが返るとは限らないなんて、C FAQ にも書いてある既定事項なんですが、それをあげつらわれても。
であなたのいうところのメモリーリークってなんですか?
>>509 演習問題などでは 7bit ascii しか使わないし、今回私が & を取ったのも、実ははじめて
gcc -ansi -pedantic -Wall
したらコンパイラが char は signed か unsigned かどっちですか?って聞いてくるもんだから、
ちゃっちゃと消しにまわっただけで、深い意味はありません。漢字でも扱わない限り問題ないんじゃないかなあ。
こういう時のQZは見てて「こいついい所もあるな」と思える
相手の言ってるメモリリークの意味が理解できてない時点で、あいかわらずバカだなあとしか
>>513 だってわかりにくいんだもの。
>>456 でメモリーリークの例をあげておきながら、急に方針転換して、
>>463 の定義にかわったので混乱してしまいました。
一貫していないんですよね。
まあ頭が悪い所は相変わらずだな
容姿ともども、まあ仕方ないです。
でも
>>168 に一貫性がないことがよくわかりました。
ctype.h にはびっくりしましたし、悪い感情は持っていません。
おやすみなさい。
>>168 p.c
for (i = 0; words[i].count > 0; i++) {
printf("%-32s %5d\n", words[i].word, words[i].count);
free(words[i].word);
}
月の英語名を配列に代入するプログラム
http://ideone.com/UXI8aが 「 1 番目の引数を 'char *' から 'char **' に変換できません。」という
内容のエラーを起こしてしまいます。アドバイスをお願いします。
今回は長いな。QZ批判してる人がコード書いたから? QZ:宿題の回答としては無駄に複雑かつ要件を満たしていない QZ批判:macのis系が1を返すことが保証されていたとしても要件を満たしてない QZ批判批判:かなり後から書いたにもかかわらずエラー処理がない
char **m; m = (char **)malloc(sizeof(char*) * 12);
>>521-522 ありがとうございました。
よければ原因がなんだったのか具体的に教えて下さい
ねむれないや。
>>520 >QZ:宿題の回答としては無駄に複雑かつ
はしかたがないとして、
>要件を満たしていない
についてkwsk
>>524 たいしたこっちゃないよ。
> 同時に現れた「単語」の総数をプリントすること。
[1]C言語上級 [2] malloc/realloc/callocで確保したヒープ変数がアプリケーション終了時 に確実にfreeされているかチェックする方法を考えて実装しなさい。 [3] Linux/Gcc4.5(Open source版)/C言語 [4] 無期限
valgrind
>>523 mはchar型へのポインタのポインタ(ポインタ配列)として確保しなければならないのに
char型へのポインタとして確保されていたから
そして呼び出しの型が合わずエラー
valgrind使うなぁ。知らないなら教えてくれっていえばいいのに。
オープンソースじゃないGCCってあるの?
◆QZaw55cn4cって糞だよなぁ
>>526 のような物が出来るだけ必要ないようにC++ではデストラクタ、スマポ、
コンテナが用意されているんだよな
言葉を換えればそれだけCは原始的で車輪の再発明が当たり前のように
されているので時間と労力の無駄が多い
>>526 Google Performance tools の Heap Checker使うとか、
もしくは既存のメモリアロケータラップしてshared_ptrのように参照カウント追加すればでいけそうな気がする。
>同時に現れた「単語」の総数をプリントすること。
同時に、現れた「単語」の総数をプリントすること。
なら、出力に最初の1行も必要だね。
でも、句点が無いから強調の意味の繰返しとも読める。
>>525
せいぜい 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
日本語通じない相手に熱くなるなよ
その方法実績ある?それとも実験?
540 :
デフォルトの名無しさん :2011/05/29(日) 09:58:15.75
542 :
541 :2011/05/29(日) 10:19:30.19
すいません撤回しますスレ汚しすいませんでした
>>537 お聞きしたいのは、議論をするために急遽でっちあげたルールではなくて、
>>168 を書いたときに念頭においていたルールであり、避けるべきメモリーリークとはなにか、ということです。
>>542 スケルトンみたいなコードの作成を依頼してみては?QZさんが書いてくれるかも
>避けるべきメモリーリーク
100円の小銭で105円の買い物をするの例え。
100円の小銭で30円の買い物3回してもよし。また100円足せば105円の買い物ができる。
strdup()も加える?なら、他にもありそうな無さそうな?
>>526
>>537 普遍化かどうかは疑問ですね。
「malloc() したものは free() しない(こともある)派」、と括弧をつけてはいますが、
>>461 の指摘に答えはなく、実のところ、
>>470 なんですね。
普通はプログラム実行の最後まで参照が保持されてる 変数については、freeしなくてもメモリリークとは言わない だって参照がある(使える)んだからね
なんですね。(かわいい絵文字)
このバカの思い込みを修正するのは時間の無駄
>>548 GC 的には、それってまずいんじゃなかったんでしたっけ?
「普遍的」に使えないルールのような気が。
>>551 プログラムがメモリを使いすぎているのと、
メモリリークは違うよ?
>>552 free() しようと思えばいつでもできる、けどしない、ということですか。
完璧、というにはお粗末に見えるのですが。
std::vectorはメモリリーク?
内容: [1] 授業単元:C [2] 問題文(含コード&リンク): 正の整数を入力したとき、その数値が素数であれば「素数です」、素数でないなら「素数ではありません」と表示するプログラムを作成しなさい 入力した値が0または負の整数であれば、繰り返し再入力させるようにプログラムを作成すること
>>553 そんなこと言ってなくて、単純にメモリリークとは何か?って話
GCのある言語だって参照が残ってたら回収されない
>>555 の続き
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン:Visual Studio2008
[3.3] 言語: C
[4] 期限:今日まで
メルセンヌ素数も判定させるの?
まず素数の定義からだな
[1] 授業単元:C [2] 問題文(含コード&リンク): 「*」の記号を利用して、入力した数字を等しい2辺に持つ、次のような直角二等辺三角形を表示するプログラムを作成しなさい [3] 環境 [3.1] OS:Windows7 [3.2] コンパイラ名とバージョン: Visual Studio2008 [3.3] 言語: C [4] 期限:明日まで
無駄ループすぎる
563 :
デフォルトの名無しさん :2011/05/29(日) 13:31:34.11
>>543 オレのルールは
>>451 だ。したがってメモリリークはない。
てめーが宗教戦争仕掛けてきて勝手なルールを押し付けようとしたんだから、他人の
ルールも受け入れろ。
続く…
>>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
お前らカルシウム不足なの?
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
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);
> }
なんか、変な奴がわいてるな。
QZみたいなアホに的外れな突っ込みされて切れちゃった人がいるだけ
そういう粘着のレビューはしたくないな プロジェクトからはハズされるだろ、大体
576 :
デフォルトの名無しさん :2011/05/29(日) 15:05:44.67
この程度で粘着っていうな。mygetlineのようなうんこコードは普通書き直しだぞ。 3文字読むたびにstrlen×2してreallocしてstrcatして … 目が腐る。
578 :
デフォルトの名無しさん :2011/05/29(日) 15:11:46.24
草はうんこを見てしまった心に平穏を取り戻すために必要な儀式だ。
>>578 どんな事が起きても平常心が保てないと、プロとは言えないw
>>568 待ってました。ありがとうございます。
>課題にない勝手なデリミタ判定すんな。
そこは fgets() が勝手につけるデリミタを判定しているところですので無問題。
582 :
デフォルトの名無しさん :2011/05/29(日) 15:39:49.28
>>579 だからその平常心を保つための儀式だ。
しかし、うんこなコードだな。二分木つくるpush。
無条件でノードを作っておいて、検索して見つかったら廃棄。しかも再帰。
>>580 アウツ。fgetsが勝手につけるんじゃなくて元データからそうなっている。
>>570 ご指摘ありがとうございます。
引数の値がどのように返されるかは環境依存なんで、逆にどんな値をつかってもいいのでは?
>>582 >無条件でノードを作っておいて、検索して見つかったら廃棄。
んー、んー、たしかにつらいですね。かといって毎回、追加前に検索をかけるのも同じくらいにうんこだし。
なにかいい知恵があれば教えてください。
>>576 ご指摘ありがとうございます。
「3 文字ごとにぐるぐる」ですが、
#define BUFFSIZE 3 /* >= 2 */
で指定していますので、2 以上の数値であればOKです。環境にあわせて 1024 なり 65536 なりに設定できるようにしています。
なおこの数値に関わらず、ファイルの1行あたりのバイト数に拘束されないように作っております。
>>571 >>572 たしかに malloc() が NULL を返すと、すべてを放り投げて終了させていますね。
malloc()-free() 教徒としては、異常系でも free() するところでしょうけれども、信心が足りないところを見つけられてしまいましたか。
>>582 ご指摘のとおり、'\n' を無条件にデリミタとして扱っております。
本来ならば、
int isDelimiter(char c)
で判定させるべきでした。
ただし、iscntrl('\n') は真ですので、問題の条件を満たしており問題はありません。
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両方です。とほほ・・・。課題やり始めると時間がワープするみたいに 飛んでってしまう。その割にはエラーしか出ない。
>>590 「2chで答えを貰う」ってのが課題なの?
>>590 >課題やり始めると時間がワープするみたいに飛んでってしまう。
快感でしょう。
で、なにをどうすればいいのでしょうか?
これ回答が何本のプログラムなのか、興味津々
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);
>>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 の仕様が大雑把なんだよな
まぁ適当に判断してやるよ
よろしくお願いします。
後、課題のプリントのほうにプログラムの例が載っているのですが、
そちらも記載した方がよろしいでしょうか?
現状、C言語はOSとデーモンの作成で使われることが多いから、システムによるメモリ回収を当てにしては駄目。
>>600 じゃあ、異常系でも回収するコードを書くのが信徒には要求されるのですね。けっこうつらいんですけど。
>>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文
}
>>603 ふむ。
思い通りの malloc() にNULL を返させるにはどうすればいいでしょうか。
私の xmalloc() ならば簡単ですが、一般にはそういうのは使わないでしょうし。
>>604 機能テストレベルなら自プログラムの裏でメモリを食いまくるプロセスを動かすとかかな。
単体テストレベルなら、テスト用ライブラリでmallocをオーバーライドさせて、
任意のタイミングでNULLを返すとかやるんだろう。
malloc() はライブラリだとわかってて無理言わない。
プリプロセッサで頑張るのだ。 #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にお願いするか。
俺はデバッガ使う
>>611 mallocを3回読んでるのは例え話であって、a, b, cを配列的にアクセスすればいいんじゃね?ってのとはちょっと違う。
1回目のmallocがfopenとかでもエラー処理は必要でしょ?
>>612 そうじゃなくてNULLで初期化しておくと楽できるってだけ
オーバーヘッドが云々とか言われたら知らんけど
よく分からん。 もう少し詳しく。
615 :
デフォルトの名無しさん :2011/05/29(日) 19:45:52.81
591>発想、思わぬ使い方。 しょぼ、しょぼ、なが〜いプログラムをつくる。 ところが、出来る人がつくると、 えーこんなにみじかいのとか、こんなやり方が あるのとか。 ブレークスルーをもとめてみたいな。
>>615 地の言葉を使いたまえ、キミに合わせよう
>>614 free(NULL) はなにもしないから、NULL で初期化しとけば、取り合えず
エラー時は free(a); free(b); free(c); ってやっとけばいいって話だろ。
>>612 で fopen() の話出てるんだから、オーバーヘッド以前に単なるバカ
だと思うけど。
618 :
613 :2011/05/29(日) 21:06:42.25
>>617 自分が分からないからって馬鹿呼ばわりはヒドイな
>>604 Fault Simulator でも使えばええやん、
って書こうとしたら、メーカーの Web に載ってない...。
Micro Focus に吸収されたときに、無くなったんだろうか。
>>618 > 自分が分からないからって馬鹿呼ばわりはヒドイな
じゃあ、ちゃんと説明してみて。
621 :
613 :2011/05/29(日) 21:15:39.66
>>620 まずはどこをバカだと思ったのか説明してみてよ
>>604 こんなのある、
ちょっとプレゼン資料見難いけども。
623 :
622 :2011/05/29(日) 21:19:32.53
>>621 >まずはどこをバカだと思ったのか説明してみてよ
>>617 だと fopen() はだめだろ。
なんかいい方法があるなら、書いてみてよ。
>>622 こんなプレゼンどうやってつくったんだ?
今はやりなんですか?
ちょっとやってみたい。
626 :
613 :2011/05/29(日) 21:46:09.08
>>624 fopen がダメってどういうこと?
何か難しいことがあるの?
fclose(NULL)はダメだって話だろ mallocは一例に過ぎないんだから、それにしか適用できないものを出すのはアホ
629 :
613 :2011/05/29(日) 22:09:53.01
答えでてんじゃん
631 :
614 :2011/05/29(日) 22:14:19.89
>>629 >答えでてんじゃん
これのことか? (w
>> それにしか適用できないものを出すのはアホ
633 :
613 :2011/05/29(日) 22:16:20.75
>>632 fclose に NULL を渡さなきゃいいじゃんってことだよ
>>633 お前のやり方だと fclose() に NULL 渡さないのも「楽できる」んだろ?
どうやってやるんだ?
書いてみなよ。
もうどうでもいい ちなみにfree(NULL)の挙動はC規約にある?
636 :
613 :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;
}
637 :
625 :2011/05/29(日) 22:25:08.81
>>630 正直(最初は新鮮だった)ppt ももう飽きちゃって‥‥‥。
意味のない「眩暈感」がいい。
>>623 の内容自体を指しているのなら勘違いごめんなさい。
32bit 時代のアセンブラはちとわからない。
>>635 free(NULL) はOK とあります。
ISO/IEC 9899:1999 7.20.3.1.2
fclose(NULL) はない。
ISO/IEC 9899:1999 7.19.5.1
>>635 >ちなみにfree(NULL)の挙動はC規約にある?
ある。
>>636 さんざ引っ張って結局それかよ。
>>636 >if(fp==NULL) goto err;
>if(fp) fclose(fp);
なんで、こんな一貫性のないコードが書けるんだ?
正直どうでもいい
2人以上関わりたくない人間がいるということが分かった
613とQZか
ほ
仮想メモリなはもとい、HDすらまともなものがなく、シェルすら貧弱だった 時代はmalloc/freeは一体不可分。 不要なメモリは極力システムに返すように設計しなければ、システム 全体が使い物にならなかった。 しかし何故かコードはメモリにロードされっぱなしだったことが問題視され ていて、DLLやらSOなどの概念が生まれたが、これはHDがそれなりに 発達して仮想メモリも実現できるようになった頃と大差がなかった
ほ
ほ
ほ
ほ
ほ
名前:入れないから2人で話してるつもりになる。
>>614
ほ
658 :
デフォルトの名無しさん :2011/05/30(月) 08:35:24.01
>>603 killされたときにもシグナル捕まえてちゃんとfreeしないとダメだね。
SEGVとかメモリアロケータの中で発生する事も多いけど、特製のメモリアロケータなんだろうな。
大変だな、信者。
ほ
ほ
ほ
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
ほ
ほ
ほ
ほ
669 :
647 :2011/05/30(月) 11:37:09.52
s[]には各項目が実行された回数が入ってると思うのですが シェルソートと交換回数は同じになると思のですが、交換回数と思われるs[7]で降順だけとても大きな数になるのはなぜでしょうか? また比較回数はどこにあたるのでしょうか? よろしくお願いします
ほ
ほ
ほ
>>658 シグナルハンドラから抜けた先は、C のスタートアップですか?ならば信者としては free() しなくちゃいけないですね。
そうでなければ、free() する必要性を感じませんね。
++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;
int i, j, k, min, t; s[8]++; t = a[k]; a[k] = a[i]; a[i] = t; 修正
677 :
デフォルトの名無しさん :2011/05/30(月) 15:54:02.58
678 :
デフォルトの名無しさん :2011/05/30(月) 15:57:35.11
>>673 お前バカすぎて話になんない。
スタートアップに帰るならfree必要、それ以外は不要という教義に修正するのか? ww
信者たる者、どんな条件でもfreeすべきだろ。
c6e5511a42026dc7b7f43848fec3cdcdf53fe2ab4d7b8d86d8372510f7742b79
比較 回数はどれも124750 倍i=1,n-1} i 比較成功回数はランダム2399 昇順0 降順62500 交換 回数はどれも499 n-1
680 :
602 :2011/05/30(月) 16:10:56.74
>>678 神の教えはそう説くのですが、我ら下々には時として苛斂誅求な要求でもあり、世の宗教にも修正主義という言葉もありますし、
適当なところで折り合いをつけるのが、ひいては神の御威光を世に知らしめることになると信じております。
神よ、なにとぞお許しを。異常系の free() は勘弁してください。
1.言語/環境 C / Linux 2.問題文 あるアルファベットの文字列中に出現する「a」の出現数を表示するプログラムを作れ。 3.条件 アルファベットの文字列は確実適当にプログラム内に作ること。 26文字全てのアルファベットの出現数を保持する配列を作ること。 大文字、小文字は区別しない。 宜しくお願いします。
682 :
デフォルトの名無しさん :2011/05/30(月) 17:10:13.22
>>680 教義を修正するという事はてめーが仕掛けた宗教戦争の敗北を認めて撤退するんだな?
二度と来んなカス。
>>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] 期限:本日中
0111101101111#
(####)##-####
691 :
デフォルトの名無しさん :2011/05/30(月) 21:52:42.20
前レスの問2でTEL:(0561)89-2000を入力したときの結果もよろしくお願いします。 またなぜそのような結果になるのか教えてもらえないでしょうか?
693 :
692 :2011/05/30(月) 21:58:12.00
/* 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
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] 期限:本日中
>>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
>>695 失礼。線形リスト全体にソーティングはかけずに、insert() のときに挿入点を見つける形にしているのですね。なるほど。
線形リストのソートは要素数が増えると馬鹿らしいほど遅くなる Bidirectional Iteratorだから速いソートは大抵使えないし 俺はいつも各オブジェクトを指すポインタ配列をソート前にリストを 一なぞりして作りそれでqsort()ソートし、後からリストをつなげ直している その方が圧倒的に速い
>>702 でも確かC++のstd::listのメンバ関数sort()はそうやってると聞いたぜ
listは挿入やカット&ペーストがO(1)だからな vectorはO(N)
>>701 浪漫がない‥‥いや、独り言。
シェルソートあたりが実用的に使えないでしょうか。
707 :
デフォルトの名無しさん :2011/05/31(火) 00:50:59.98
うんこコード見てないが、まさか線形リストをそのままソートしてたのか? 線形リストをダイレクトにソートするなんて発想は想定外だぜ。さすがうんこ。ww
>>706 シェルソートも要素数が多いと最初のうちは要素を走査する時間がO(N)掛かって
全体としてはO(1/2N^2)=O(N^2)となるだろ
>>707 リンクをピシパシ張りなおすのは一度やってみたいと思いませんか?普通思わない‥‥‥そうですか。そうかもしれない。
>>706 暇だったらN=1000000位で双方向リストでシェルソートとポインタを拾ってポインタ配列を
作ってそれでソートしてそれを元にポインタを付け直すのと時間を比べてみてくれ
>>658 SIGKILLの場合、OSがプロセスの終了と共に根こそぎメモリ管理情報を解放するから要らない。
近頃はメモリアロケータの中ではSEGVは起こらず、
メモリアロケータから戻った後にメモリアクセス、例外、頑張ったがメモリアロケートできません、SEGVが起こる。
712 :
デフォルトの名無しさん :2011/05/31(火) 01:13:37.43
>>711 うんこ教信者はmallocしたメモリは全部freeすべしという教義に従っている。
したがって如何なる場合においてもfreeしなければならない。
SIGKILLを捕まえられないOSは異端のOSだから使わないんだろ。
> 近頃はメモリアロケータの中ではSEGVは起こらず、
んなこたーない。
メモリをボロボロに破壊されてもSEGVを起こさないコーディングテクニックなど存在しない。
あーそうか シェルソートの場合、gap離れたオブジェクトを指すポインタは最初の一回の走査でいいか 後は隣のオブジェクトを辿るだけだからなあ 意外と速いかも 要素の交換はポインタの付け替えよりも内容をそっくり入れ替えた方が速いよなあ
今時デマンドページング使わないシステムってあるのかな?
特に今回の場合単方向リストだからいいかもしれんね 双方向リストはソートの場合あまり役に立たないか 結局Random Access Iteratorが使えないと何らかの技法が必要になる
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)かなあ
>>713 >内容をそっくり入れ替えた方が速いよなあ
そっか‥‥その発想の方がまともだなあ。
特に、container と containee(造語) を構造上でも分離する(void *data;)するのならば、それしかない。
あと、シェルソートより(この前見かけた)コムソートが有望ですね。
コムソートか h = h * 10 / 13; これは一度全要素を走査して全要素数を把握しておく必要がある それを除けば単方向リストには良さそうだ
宿題丸投げは謹んで下さい、あなたのためになりません。
721 :
541 :2011/05/31(火) 05:36:49.88
宿題丸投げは、有償が常識 むかしモリタポだけでやってくれるスレがあったのだが 潰された
>>722 >有償が常識
有償でやるなら自分でブログ作ってそこでやれQZの糞
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日まで]
>>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;
}
それlengthが0だったら何が起こると思う?
すまん.俺の勘違いだった
>>728 バカ発見w
何が起こるか説明してみろよw
おっしゃる通り俺がバカでした
732 :
デフォルトの名無しさん :2011/05/31(火) 15:32:58.90
726 いみわからん
>>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));
}
&(a[1])ってなんか用心深い書き方だな
癖だろう 俺は取った
値に&をつけてるような気持ち悪さがあるな
>>735 取った?てことはわざわざ手元にコードをおいてるのね
738 :
719 :2011/05/31(火) 17:56:44.67
>>737 人の書き方は参考になる
自分の思いも付かないアルゴリズムとか平気であるしな
本なんか読むより余程ためになるよ
>>739 そりゃそうだけど、
>>727 は見れば終わりでは。
…と、理解度を一括りにしてはいけないのは重々承知で。
でも、
>>727 を勉強に利用しようと思う段階の人が、
癖だろうと切り捨てるところに違和感を覚えた。
深読みしすぎですまない。
勉強に利用しようなんて段階はとっくに過ぎてるよ ただ勉強そのものは一生し続ける必要があるだろ その時に変な括弧が付いていたら取りたくなるのが悲しき性
勉強する段階でもないのに保存したのが何でなのかなぁって話。 宿題スレまとめwikiの更新してくれたとかかな
何でそんな事を知りたがるのか逆に不思議なんだが
自演なんじゃないの
出題文中のをコピペしただけって気づいてない人がいるのかな
変な流れになる率が高い状態が続いているね
[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言語
>>747 「無視する」の意味を教えてください。
>単語間にあるアポストロフィー以外の記号は無視する。
>- (ダッシュ)でつながれた単語は2語に分ける。
abc-xyz
は、
abc xyz
の2語になるとして、
abc&xyz
は
abcxyz と同等になるのですか?
それとも abc xyz の2語になるのですか?
どの記号だと2語にわけ、どの記号だと「無視する」――その記号が存在しないものとして扱う、のかもう少し情報がありませんか?
アポストロフィの扱いについて
>・'(アポストロフィ)がついているものは1語と見なす。
>単語末にあるアポストロフィについて、別の単語としてカウントしてください。
これは、アポストロフィはあたかもアルファベットの一部として扱うことでよいでしょうか?というか、そのように扱うつもりです。
>・その他の記号ははずす。
はずす、とはどういう意味ですか。あたかも存在しないように扱えばよろしいでしょうか?
情報をいただければありがたいです。とりあえずの雛形は 6/1 23:59 までには提供できると思います。
txtのどこに&があるんだよw
>>748 >単語間にあるアポストロフィー以外の記号は無視する。
「アポストロフィ以外の記号」を含むものはこれがない単語と
同じに扱うようにするということです。
>abc&xyzはabcxyz と同等になるのですか?
これはabcとxyzと分けて考えます
>これは、アポストロフィはあたかもアルファベットの一部として扱うことでよいでしょうか?
その通りです。
>はずす、とはどういう意味ですか。あたかも存在しないように扱えばよろしいでしょうか?
その通りです。記号が存在しなかったときの単語と同じ単語が他にあれば同一の単語とみ
みなし、カウントには含みません
情報が足りずすいません。どうかよろしくお願いします
>>748 >とりあえずの雛形は 6/1 23:59 までには提供できると思います。
時間掛け過ぎだろ
今日中にしろ
>>747 会話文の終わりのアポストロフィと
単語の終わりにくっついたアポストロフィとの
判定が難しすぎるw
こんな奴
it was labelled 'ORANGE MARMALADE',
753 :
752 :2011/05/31(火) 22:08:02.83
課題の文章だと最後にアポストロフィがつくのは全て会話文の終わりみたい cats' は無いものとしてよさげ こんだけ MARMALADE' ME' not' ME' better' thimble' RABBIT' won't' sir' nose' were' ordered' never' men'
QZは緻密な計算(ってまだ続くの…?)に必要ないから関係ないと思うよ
>>747 ビルド通ってないけどこんな感じ?
正直面倒くさい問題だ。C++のSTLでも使えれば楽だが・・・
alice.txtの中見てないから、最終行の判定が必要なのかもわからん。
http://ideone.com/Guopk これ以上メンテナンスせんので、誰か引き継いでくれい。
参考にならなければ捨ててよし
そんなことより、'tisは一単語として扱うべきなんだが判定できるか?
>>758 難しいから例外として 'tis の判定を先にするくらいじゃね
[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型とすること。
761 :
760 :2011/05/31(火) 23:08:15.05
訂正します。 >100件のデータが入力されるかEOF(Ctrl+Z)が入力されたら終了とする。 データは30件入力されたら終了とする です。大変失礼しました。
名前の最大長は規定されてないの? どんなに長い名前を入力されても問題なく動く必要があるの?
763 :
760 :2011/05/31(火) 23:32:48.50
>>762 特にそのような記述はないですね。
一応、授業ではいつも30字上限で設定しているので
30字でお願いします
766 :
760 :2011/05/31(火) 23:44:23.50
>>764 はい。大丈夫です。
問題文打ってたら目がそれて一部分
別の問題を書いてしまったようです。
データは30件の入力で終了で間違いありませんので、
30件打ち終えたら終了して、例のとおりに
学籍番号と名前のアドレスを表示させるようなプログラムで
よろしくお願いします。
>>747 なんで文章が乱れてるの? それを良く読んだと思う。
単語末にあるアポストロフィについて、別の単語としてカウントしてください。
例:cats' と cats 。
例:「I」は一人称単数(自分)としてのIとローマ数字の1を表すIの
2種類の使われ方がされているが、同じ単語とみなす。
× ・綴りが同じであれば意味が違っていても1語とみなす。 単語末にあるアポストロフィについて、別の単語としてカウントしてください。 例:「I」は一人称単数(自分)としてのIとローマ数字の1を表すIの 例:cats' と cats 。 2種類の使われ方がされているが、同じ単語とみなす。 ○ ・綴りが同じであれば意味が違っていても1語とみなす。 例:「I」は一人称単数(自分)としてのIとローマ数字の1を表すIの 2種類の使われ方がされているが、同じ単語とみなす。 ・単語末にあるアポストロフィについて、別の単語としてカウントしてください。 例:cats' と cats 。 だろうと適当に読み替えてた。
769 :
748 :2011/06/01(水) 00:39:05.98
>>751 前に似たものをつくっているので、それをベースに頑張ってみましたが、ちょっと足りませんでした。
また二分木か 懲りないなロートルは
>>771 適度に簡単でそこそこ速い二分木よりもいい map の実装は、そうみあたらないかと。
二分木でなくてrealloc()で後からソートしてもいいだろ 同じ部分があるとすぐにバレるんだよ
>>773 >二分木でなくてrealloc()で後からソートしてもいいだろ
??
kwsk
>同じ部分があるとすぐにバレるんだよ
他の方の実装を待ちましょうか。
別に隠しながらコード書いてるわけでもないだろうけど、バレるとかどういう発想だろ よほど自分のコードを出したくないのかと勘ぐってしまう。 って書くとお前が書けって言うのかなぁ。。
>>769 相変わらずのソースコードでなにより
俺も嫌がらせっぽい解答を書くことはあるけど
ここまでやったことはない
感心した
QZは糞
QZさんはやはりコテを付けたほうが
宿題片付けばQZでも誰でもいいよ。
780 :
760 :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型とすること。
#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; }
>>776 どこが「嫌がらせ」だと思ったのか教えてください。
784 :
780 :2011/06/01(水) 07:49:06.18
QZの頭じゃあれを提出したらどうなるか想像することもできなだろうから、嫌がらせじゃないのかもしれないw
問題を出す人からすれば回答者は誰でもいいんじゃないの? とりあえず課題を解決できればそれでよしなんだから
>>782 そのトリップは基本的にいらないからいいです。
まぁここみてるといろんなソースコードがあって 人のコード見るだけでも勉強になるしそれはそれでいいんじゃない?
>>785 QZは自己愛性人格障害の上に強度のアスペルガー症候群(究極のKY)か
最低だな
単位落とすかうんこを喰うか、どちらも選びたくない。
/* 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まで
◆QZaw55cn4cって糞だよなぁ
795 :
デフォルトの名無しさん :2011/06/01(水) 17:15:18.89
「理想順(リソート)」 この言葉の意味を教えてください
>>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時まで
分かるかた、よろしくお願いいたします。
[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でお願いします。
ごめんなさい。よろしくお願いします。
[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 の様な感じで、続きをできたらお願いしたいです。
803 :
719 :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
>>804 アンカ間違えてんじゃねーよクソ新参が
半年ROMってろ
806 :
デフォルトの名無しさん :2011/06/01(水) 20:55:53.55
>>805 間違ってねーよ。スーパーハッカー(笑)はお前だろ。
うんこのトリップ割りなんて臭い事やってねーで、宿題解いてやれよ。www
>>806 アンカは間違えるしワケのわからん勘違いはするし・・・どうしようもねーな
それと「。」やめようかクソ新参
808 :
デフォルトの名無しさん :2011/06/01(水) 21:22:54.21
>>807 うわっ、キモ。
リアルで鳴かすぞガリチビ。
。。。。。。。。
うんこのトリップ割って喜んでるバカと三点リーダーも使えないバカは同程度にバカだから、
同一と見なしてもなんら問題ない。
ここで三点リーダーつかえない池沼は…
>>757 … こいつか。
language: C++ (gcc-4.3.4) <= 質問者の制約条件守れ。
12 /* ファイルサイズの取得 */ <= fstat使え。バカ。
20 memset( pszBuf, '\0', fsize+1 ); <= 直後にリードするのに初期すんな。
一番苦労しそうな単語の切り出しはパス。しかも、データ構造は何の工夫もない配列。www
うんこのコードを上回るウンコっぷり。
実質何もやってないコードをよくもこれだけ自慢げに貼れるな。 大物過ぎる。ww
>>809 お前も使えてないじゃねーかwwwwwwww
お前らここは宿題スレだぞ
句点に文句つけるやつって、どっかで「句点をつけるのは新参」って間違った知識を仕入れたにわかなんだろうな
入力はしなくても、構造体には番号も含めなきゃダメだろ
[1]C言語課題 [2] ソースコード上で用意に修正/改造できるような形式の 簡単な自動無限長対話分作成機を作れ 出力例: A:であるからして、C言語プログラム作成は難しいのであります。 B:ほんとうにそうですね。 A:なんて面倒なんだ B:ポインタの扱いがキモですね。 A:君はC言語を何年やったんだ? B:5年だけど、上達は難しいですね。参考書がクソなんですよ。 .......... 質問文には的確に答えること。話しが閉じず永遠に続くこと が条件だそうです。 [3] Windows Vista/Visual studio???/C言語 [4] 6/14まで [5] ヘンテコな課題ですがよろしくお願いします。
818 :
デフォルトの名無しさん :2011/06/01(水) 22:21:52.91
>>816 多分お前の授業内容分かんないから、適切なものは誰にもつくれないぞ
自動無限長対話分作成機って時点で(分を文に直しても)よく分かんないし
人工無脳を作れって意味にも取れるが
授業単元名に見合わないレベルな気もするしようわからん
出力例みると明らかに直前の相手の話だけじゃなくて前々回まで踏まえてるし……
まさか無限ループすればいいのか?
822 :
デフォルトの名無しさん :2011/06/01(水) 23:10:14.98
797の者です。 期限を23時までと書きましたが、勝手ながら明日の12時までとさせていただきたく思います。 もし時間があれば分かる問題だけでもいいのでよろしくお願いします。
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
>>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;
}
>>796 >>747 です。Cygwinを使っているのですが、
どうすればファイルを読み込むのでしょうか?
よければ教えてもらえないでしょうか
>>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 って表示される、みたいな。
832 :
831 :2011/06/02(木) 01:09:20.41
ちなみにもう少し突っ込むと、実行ファイルを関数のように使えるわけだから、
>>831 の実行ファイルを使って、
print3.exe | twice.exe | twice.exe
ってすれば 12 が表示される、面白いっしょ。
>>830 >>794 は不思議の国のアリスの本文(chapter i 〜the end) を切り取って ./a.exe (cygwin なら .out じゃなくて .exe) の標準入力に流さないといけない。
その切り取りが、head コマンドであり、tail コマンドです。
めんどくさい or わからない、のならば、その辺もみんなやってくれる
>>799 をお勧めします。
[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日 よろしくお願いします。
>>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;
}
>>836 ありがとうございます!
もう今日は来ないかもと思っていたので嬉しいです。
お聞きしたいのですが、
>>813 >>815 さんや
>>836 さんみたいにプログラム上手くなれるお勧めの参考書かサイトってありますか?
どうしてそんなに上手いのか知りたいです
[1] 授業単元:アルゴリズム [2] 問題文(含コード&リンク): 「整列アルゴリズムの効率性の比較」 ファイル名:file007.dat //(仮) を整列対象データとする。 上記のデータを配列に格納し、下記4種の整列アルゴリズムを用いて整列する。 このとき移動回数および実行時間(clock関数)を記録する。 (1) 単純挿入法 (2) 単純選択法 (3) バブルソート (4) クイックソート [3] 環境 [3.1] Linux [3.2] gcc [3.3] C言語 [4] 期限: 明日 [5] その他の制限: ・最初に読み込むファイル名は絶対パスとしてmainプログラム中で記述し、コマンドライン上の引数による指定、およびリダイレクトによる入力指定はしないこと。 ・移動回数、実行時間等、測定結果をプログラムの最後にprintfで出力する。 ・整列結果はコンソール、ファイルのどちらにも出力しない。
>>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);
>>838 file007.dat の内容を教えてください。どんなデータを整列するかわからないとプログラムは書けません。
ウップ 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] までメール
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時まで
分かるところだけでもいいので何卒よろしくお願いします。
848 :
デフォルトの名無しさん :2011/06/02(木) 09:31:25.07
すいませんおねがいします。日曜までです。 String型の配列として与えられた人の名前を全て使って「しりとり」を作りましょう。 参考資料ファイルを自分のプロジェクトにコピーもしくはインポートし、50音順で並んでいる配列をしりとりの原理で並び替え、出力するプログラムを作成してください。 -----------Original NameList----------- ごりら らっぱ りんご -----------Sorted NameList----------- りんご ごりら らっぱ 単語は適当に自分がうめるのでプログラミングそのものだけつくってもらえませんか?
850 :
デフォルトの名無しさん :2011/06/02(木) 09:47:32.42
>>849 はいすいません。スレチだと思い、こちらに質問させてもらいました(;´Д`)
852 :
デフォルトの名無しさん :2011/06/02(木) 09:56:12.82
>>850 さっさとどっちかで終了して一本化しろクズ
853 :
デフォルトの名無しさん :2011/06/02(木) 09:57:51.63
>>850 たしかにそうですね。こっちのほうが目的に沿っているのでこちらで一本化させてもらいます。
ということで申し訳ないんですがご指南よろしくお願いします。
用語の使い方等からして実はJavaなんじゃ・・・・・・・・・・・
855 :
デフォルトの名無しさん :2011/06/02(木) 10:04:04.76
>>854 そうです。Javaなんです。でもこういったスレがjavaに関したものはなかったのでここで質問してヒントを得られればなと思いまして
>>843 char s[8]; ⇒ char s[800];
> if(NULL==fgets(s,sizeof(s),f))break; こういう人まだ生き残ってるんだ。
ちょっとまて、コードを必死に読んだら負けじゃないか? [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] 多重ループまで プログラミング初心者なんで全くわかりません。 どうかよろしくお願いします。
ステートメント→文 コード→文章 これじゃねの?
>>843 - while(argc--){
+ while(--argc){
I1 * 91 = 9191
864 :
デフォルトの名無しさん :2011/06/02(木) 11:01:38.70
>>861 それはわかってるんですが、それをコンピューターに
計算させて求めたいんです。
>>864 組み合わせがねーよって言ってるんだと思うよ
□に入る数字が一桁なら、どうやっても千の位は9にならないってことだぞw
868 :
デフォルトの名無しさん :2011/06/02(木) 11:16:32.30
>>865 本当だ。ミスってた。
□1
×□□
−−−−
□□□
□□□
−−−−
9□□□
正しくはこうでした。申し訳ありません。
#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; }
>for(j = 9; j <= 9; j++) { for(j = 1; j <= 9; j++) {
871 :
デフォルトの名無しさん :2011/06/02(木) 11:36:12.13
>>869 ありがとうございます。できればAの解答も
教えていただきたいのですが。
#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 助かりました。本当にありがとうございました。
[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] その他の制限:ありません。
#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; }
877 :
876 :2011/06/02(木) 13:39:17.47
ごめん被った
>840 10,000個の整数がランダムになっています。 ex. 29957 74219 93455 83728 14696 95105 9321 56698 22276 ・ ・ ・
>>876 C99で書くなっつーの
int **array; でコンパイルエラーになるだろうが
[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
>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]);
>>882 迅速なご回答本当にありがとうございます。助かりました。
>>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;
}
ダメにきまってんだろw
886 :
881 :2011/06/02(木) 22:42:10.34
>>884 恐らくですが、提示された手順の
「5 入力数値を格納すべき箇所を空けるために、既に記憶されている配列の要素のうち、この入力数値よりも大きな数字をひとつ後ろにずらしているか」を満たしていないかと思います。
お時間を割いて頂きありがとうございました。
>>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;
}
888 :
881 :2011/06/02(木) 23:57:18.19
>>887 課題自体は既に提出しましたが、今後の学習の参考にさせて頂きます。ありがとうございました。
1回でいいんでない?*c+=3
[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] その他の制限:ありません。
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言語で, 関数においてなぜ引数の指し示す文字列を変更できたのかを簡潔に説明せよ.
問5 STLにおいてstd::map<char *, int>は期待通りの動作にならない その理由を「ポインタ」「文字列」「アドレス」という単語を使って説明せよ。
>>904 期待通りってなんだよ?
それ定義したら動かせるだろ?
文字列比較はa - bじゃダメでstrcmp(a, b)しろという事だな。
>>889-893 ありがとうございます。
いくつか聞きたいのですが
バブルにある flag
#define BUFFSIZE 1024
の意味って何ですか。
あとメイン関数を1つにする方法ってありますか。
逆に聞くけど、メイン関数を2つ以上にどうやってするの?
910 :
893 :2011/06/04(土) 00:02:57.68
>>908 >バブルにある flag
バブルソートにはいろいろなバリエーションがあり、ここで書いてみたものは、この flag が 1 であればループを回り続けます。
隣同士の比較交換を、順番にデータのはじめから終わりまでひととおり行うのを一まとまりとし、この一まとまりのなかで一回でも交換が発生したら flag が 1 になります。
912 :
893 :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
>>913 そのままリンク貼るのはやめろ。
大学ばれるし教師に2chからアクセス行くことがばれるかもしれない。
917 :
893 :2011/06/04(土) 03:11:58.79
>>913 templateでフィボナッチとかちょっぴりマニアックな問題だな.
って程でもないか.なんにせよそのままリンクするのはまずいだろう.
>>913 これQZに解けるかな?
解けなかったらQZはC++が分からないという事になる
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;
}
>>922 この程度なら誰でも解けるからこれではC++を理解しているとは言えないだろ
>>924 まあ、それはそうですね。
というか、「理解している(霧」って書いた覚えはないですけれども、どうしてそうなっちゃってるんでしょう?
やっぱりモリタポスレのテンプレートにC++をいれちゃったのがまずかったかなあ。
まあ無職が何をわめいても右から左ですけどね
QZは糞
>>926 一応有職ですけれどもね。なんで無職ということになっちゃったんでしょうね?不思議不思議。
他人とまともにコミュニケーションとれなさそうなところからだろうな
>>929 元来天然ボケな素質はあったんですがそれを開発促進してなんとかなってます。
>>928 有職の奴が平日の昼間から2chに書けるかよ
嘘も休み休み言え
>>928 あんな糞コードを書いてる奴が有職とはとても思えない
働いてる奴が未だに850MHzのノートパソコンなんか使ってるかよ(笑)
◆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って糞だよなぁ
天然ボケなんて可愛いもんじゃないw 発達障害かアスペルガーか知らんが、病気に分類されるレベルの理解力のなさだろ
>>931 有給というものがありまして。2chに使うのはどーかと思いますが。
>>932 マじゃないので。
>>933 ノートはCore2Duo 1G, デスクトップは phenom x6 になりました。
◆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って糞だよなぁ
クソ遅いコードをマシンのせいにできなくなって、自分のバカさ加減を理解できるようになったか?w
>>936 それでも職にはなんとかつけていますねえ。世間でいわれるほど難しいことじゃあないんですけれどもね。
もっともパートナー get は難しいですね。これは仕方がない。
◆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って糞だよなぁ
◆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 んー、6 core をフルに使うコードはまだ書いてないのでよくわからないです。あ、馬鹿なのは前からわかってます。
◆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って糞だよなぁ
◆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って糞だよなぁ
>>937 >ノートはCore2Duo 1G, デスクトップは phenom x6 になりました。
嘘付いて楽しいですか?じゃあ次はSSE2をバリバリに使った宿題と
マルチコアの宿題でも出してみようかな
すぐばれるような嘘は付くなよ
>>946 あれ?どちらも今時分は型落ちというか、屁ノムなんて下取りに出して砂橋にするのがふつーというくらいに、お安いものなんですけれども、それでも嘘っぽいですかね。
sse2 は当分無理でしょうが、マルチプロセス・マルチスレッドな課題なら、今までにもいろいろ結構書いてきてますけれどもね。
948 :
● :2011/06/04(土) 06:07:50.08
俺●持ってるから、過去ログ漁ってみましょうか ◆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って糞だよなぁ◆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って糞だよなぁ
これだけ人から嫌われてるのに平然とム板に居座れる厚かましさにも参りますね
>>948 そうそう、書き込み時間をヒストグラムにとってみるとよくわかりますよ。特定の時間帯にしか書いてないはずですから。
あとうちの会社は2chに書き込めます。まあ串に残るのでアレなんではありますが。
有給もあんまりとると周りに迷惑ですから、ほどほどにしています。それでも結構流してしまってるんですけどね。
◆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
>>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];
}
}
>>952 言い訳必死
会社から書き込めるとは、ロクな会社じゃねーな
少なくとも大手ではない
まともな会社なら情報流出を防ぐためにガッチリ楯を組んで絶対に
中から勝手なアクセスは許さない
しかし850MHzのノート→Core2Duo、PhenomX6とかいきなりグレードアップ
するとか、取って付けたような嘘
見苦しいしバレバレなんで
職があるのなら変なスレを立ててモリタポ稼ぎなどする必要がなかろうに
>まともな会社なら情報流出を防ぐためにガッチリ楯を組んで絶対に >中から勝手なアクセスは許さない こういう会社の方が、中はまともじゃないケースが多いような・・・
カミングアウトしていいぞ?
964 :
921 :2011/06/04(土) 12:16:37.48
>>960 http 以外は(ntp, ftp でさえも)通らないんですけどもね。
http/post メソッドは通ったりするんですね。無論、串が刺さっており、アクセス調査結果もバッチりアナウンスされてますけどね。
それとは別にメールはmsの蔵人らしいのですが、ときどき止まるんで困ったもんだ。
>しかし850MHzのノート→Core2Duo、PhenomX6とかいきなりグレードアップ
今はお安いんですよ、 sandy bridge のおかげで。c2d ノートもいまや奥で¥8k とか。
>職があるのなら変なスレを立ててモリタポ稼ぎなどする必要がなかろうに
ネタですよ。でも盛況?でしたから、java も加えて次スレたてようかな。そういえば java の宿題スレって消滅しているとこですしね。
966 :
● :2011/06/04(土) 13:33:19.95
967 :
● :2011/06/04(土) 13:39:42.23
968 :
● :2011/06/04(土) 13:43:09.62
ありえる線としては在宅で勤務時間を気にしないスタイルだけど、 でも在宅でPCスペック云々は考えにくい。
黙っとけない時点で自分もだめだけど, もう触れるなよ.そっとしておくに限る.
取りあえず◆QZaw55cn4cにはCPU-ZでCore2DuoとPhenomX6の CPU、Cashes、Mainboard、SPD、Graphicsのスクリーンショットを PNGでうpしてもらいましょうか 証拠としてはそれで十分だと思いますが
いや待てExif情報入りのJPEGの方がいいな PNGだとどこかからやら引っ張ってくるかもしれませんからね Exifが入ってると日時が入るので捏造しにくい
そう言うつまんないこと言ってないで、ID制にするとか要望しろよ
荒らしかと思ったわ
東工大の3のやつ、テンプレートを駆使ってどういう意味かわからん
find<T,N>(...){ return *array==value?true:Finder<T,N-1>::find(array+1,value); }
ってことでいいのかね?
しかし gcc -O3 でアセンブリ見た限りじゃ
>>964 のようにループで書いたって展開されてるし
array, value がコンパイル時に定数になっているかどうかが全てじゃないのかと。
何かもっと深い話があるのだろうか?
あほか ●で荒らしたら●を焼かれるぞ 荒らすわけがないだろ
>>973 ID制にしても◆QZaw55cn4cの嘘が見抜けるわけじゃないだろ
むしろデメリットが多すぎる
>>976 真面目なやり取りをするユーザーにとってはID制にすることでデメリットは何もないけど
>>977 いや有益な情報量が約1/4程度になるのは料理板などの無ID→ID制になった板で
はっきりしている
この板もそうなるだろう
煽りが減るだけでしょ。そういうのが無くなるのは、寧ろ歓迎
煽りがなくなるけど有益な情報も減る この辺の判断は俺たちがするもんじゃない 運営がする
有益な情報は有毒な情報のことが多いから 毒とクスリは紙一重って昔から言うね。
宿題スレの、半分くらいは煽りだという現状はどう思う?
>>982 じゃあ運営にID変更を願い出てみたら?
ここよりも煽りが10倍以上はひどいと思われる地下板で運営の判断はこうだった
「二度と来るな死ね」
ID変更を願う人というスレを立ててそれを見せてこれだぞ
ここでスレチの議論をしてるクズどもにIDどうこう言う資格はないだろ
運営が煽り行為を楽しんでるなら、おしまいだ もっとやれってことか・・
>>982 宿題スレ以外ではどうだ?あまり煽りはないだろ?
煽りがひどいスレ1つだけを取り上げて云々言うのもどうかと思うんだが?
それって偏見が入ってないか?
988 :
981 :2011/06/04(土) 15:03:02.34
有益な情報=有毒な情報 だが 基本的にID制は反対な立場なんで。
俺もID制には反対だ IDを導入した板は例外なく過疎ってる
>>987 スレの話題が限定していると、覗きに来る奴も限られるんじゃないの?
宿題スレは職業プログラマが暇つぶしに来て煽っている気がする。
>>990 「気がする」じゃなあ〜
確たる証拠を挙げてから物を言えよ
特定の回答者を執拗に追い出す行為は慎みたいもの 不必要に(効果があいまいな...但し判断は難しい)トリを 付けるのもこのスレの”偽善性あるいは偽悪性"に鑑み 非常に神経を使ってほしいもの
>>992 と、QZ自身が申しております
嫌ならトリ付けるなよ
こういうときにこそトリを付けたレスは有効↓
トリは必要な場所で最小限に使うってよくね?
>>992 じゃないけど偽善性が高いスレなんだし
>>974 なるほど。天麩羅メタなんて一生縁がないと思っていますが、そういうふうにもかけるんですね。
名前にレス番号が入っているだけで十分な気もする
>>992 >”偽善性あるいは偽悪性"に鑑み
意味不明。
特定トリップに過剰反応する奴がアホなだけやん。
というか、トリップつけなくても盛況ですね。ともかくめでたいことです。
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。