1 :
デフォルトの名無しさん :
2010/12/04(土) 23:09:51 BE:766835699-S★(532222)
2 :
デフォルトの名無しさん :2010/12/04(土) 23:53:14
糞スレ
1] 授業単元:プログラミング [2] 問題文(含コード&リンク):問い1:1/(2×3)+2/(3×4)+…+10/(11×12)の答えをfor文を用いて答えよ 問い2:キーボードから入力された整数に対して「偶数なら2で割り、奇数なら3倍して1加える」 という作業を行いこれを結果が1になるまで繰り返すプログラムを作成し途中の変化の値を表示させよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: teraterm [3.3] 言語: C [4] 期限: [2010年12月9日00:00まで] [5] その他の制限: 習ったのは選択処理と反復処理です よろしくお願いします
>>3 問い1
#include <stdio.h>
int main(void)
{
int i;
double ans = 0.0;
for(i = 1; i <= 10; i++) ans += (double)i / ((i + 1) * (i + 2));
printf("%f\n", ans);
return 0;
}
問い2
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
while(n != 1) {
if(n % 2 == 0) n /= 2;
else n = n * 3 + 1;
printf("%d\n", n);
}
return 0;
}
#include <stdio.h> int main() 笑
>>7 どうせVC使ってC++モードでコンパイルしてるんだろ
9 :
デフォルトの名無しさん :2010/12/05(日) 11:27:45
#include <stdio.h> int main() 笑 ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ
>>6 のソース、無駄に関数を増やしたりと、冗長すぎ。
>>7 すまんが、何がおかしいんだ?
stdio.hをつかっていること?
それともmain()に引数がないこと?
コンパイラがCだったら引数がないとダメだよな。
>>12 お前はしゃしゃり出てくるだけで釣ろうと思わなくても釣られているだけだろw
お前はint main(void)って書いているだろ。あと、標準スタイルって言葉をいい加減覚えろよ、ボケ爺。
基本が分かってない奴がいるから断っておくぞ。 ISO、ANSI”準拠”の”標準スタイル”の話。 プログラムの開始をmain関数とし、実行時の引数があるかないかで 引数の部分の記述スタイルについてあくまでも”標準スタイル”としての記述あり。 引数が無い場合にvoidも書かないのは標準スタイルに非ず。 ”独自の環境”であれば”それに限らず”。
また、CとC++でその部分の”標準スタイル”の記述に違いあり。 C++ではreturn int型;の省略も可。 CとC++の区別もつかない初心者がごちゃごちゃ意味不明な反論をしているから 墓穴を掘っているだけで、理解している人は理解している。 分からないなら口出しするなよ。恥を晒すだけだから。 自分はこういうスタイルにしているという個人的なスタイルを標準スタイルとして 語られても迷惑。この世はどこぞの無名で小さな個人を中心に動いてませんから。
糞
>>16 実は C99 では、func() と func(void) は条件つきで同じ意味です。
ISO/IEC 9899:1999 6.7.5.3-14
ただ、私もいろいろと指摘を受けたのですが、コンパイラの振る舞いも含めて等価、というわけではないようです。
実際に gcc で確かめてみても、func() と func(void) で扱いが異なります。
[1] プログラミング演習 [2] 問題文 下記のルールの通りに暗号化されたメッセージを解読するプログラムを作成してください。 (条件) 暗号は一つの文字列として与え、その解読結果も一つの文字列として表す。 暗号化の対象となる文字列はNULL文字を含も25文字で、25文字に満たないメッセージ についても最後尾より後ろは空白で埋める。 利用できる文字はASCII文字0x20〜0x7dまでとする。 (暗号化ルール) 縦横5×5のマス目からなる表の一列目の上から下に向かって、 文字列の一文字目から順に当てはめていく。 1番下までいったら、2列目、3列目、・・・に同様に文字を当てはめていく。 次に各マス目の文字をA->B、B->C、C->D、・・・のように、 ASCIIコード表に合わせて1文字づつずらす。 最後にこの表の1行目から5行目までの各行の文字列を取り出し連結する。 空白はすべて!になります。 二次元配列を用いて行うとのことです。 例:SBB/!Z!N!!PTP!!VBU!!NLP!!→RYOUMA SAKAMOTO. [3] 環境 [3.1] windows7 [3.2]visual stdio2008 [3.3] c言語 [4] 2010/12/7 [5] ポインタ、構造体はまだ習っていません。 お願いいたします。
このご時世に #include <stdio.h> int main() とか、どこの田舎ッペだよw
>>21 #include <stdio.h>
int main(void)
{
int i, j;
char str[25] = "SBB/!Z!N!!PTP!!VBU!!NLP!!", a[5][5];
for(i = 0; i < 25; i++) a[i / 5][i % 5] = str[i];
for(i = 0; i < 25; i++) printf("%c", a[i % 5][i / 5] - 1);
return 0;
}
>二次元配列を用いて行うとのことです。
[1] C・C++言語ディベート [2] 課題 C/C++言語を思いの丈語れ [3] 環境 C/C++言語 [3.1] このスレ [3.2] 脳内 [3.3] 文章 [4] 無期限
独自の環境でもC言語でint main()はないわ。
>>19 ISO/IEC 9899:1999 6.7.5.3-14
An identifier list declares only the identifiers of the parameters of the function. An empty
list in a function declarator that is part of a definition of that function specifies that the
function has no parameters. The empty list in a function declarator that is not part of a
definition of that function specifies that no information about the number or types of the
parameters is supplied.124
関数定義の一部である関数宣言の引数リストが空リストの場合、それは引数(パラメータ)がないことを示す。
関数定義の一部でない観戦宣言の引数リストが空リストの場合、それは引数の型や数についての情報がないことを示唆する。
>>29 それは知ってるけどさ、C99に完全準拠しているコンパイラってIntel C++以外に
何があるの?
gccは部分準拠だから話にならないし
>>29 俺が言うのもあれだが
お前はいつもそういうの持ち出すが大抵検討違い
格好つけたいのか?
>>31 func() と func(void) が条件付で同等であることが規定されているのはこの部分なんですが、どこが「見当」違いなのでしょうか。
>>32 だから今C99の話をして何になるの?って聞いてるんですけど無視ですか?
◆QZaw55cn4cはさあ、頭悪いんだから無理すんなよ 確かにプログラムはちょこっとは書けるようだけど、思考が論理的じゃないんだから 相当無理をしていると思うぞ お前の書いている文章を読んでいてそう思うもん
同意 気持ちが悪い 周りに迷惑だからこっち来ないで ねぇ
>>35 ご指摘ありがとうございます。無理しているつもりはないですが、論理的でないといわれると自身でお思い当たるところもありますね。
また、なにかお気づきの点がありましたら教えてください。
>>37 自分で論理的じゃないって分かってないならこりゃ絶望的だな
自覚がないというのは最悪の事だ
>>37 「なにかお気づきの点がありましたら教えてください」じゃねぇよ
そんなんでよく金取ろうとしたな
周りが楽しくお前のためにお前の間違え指摘してんじゃねぇんだぞ
何?お前みんなが自分のこと考えてくれてると思ってんの
気持ちわりぃな
>>37 おめえよう、宿題答える時はちゃんとここで答えろ
自分のスレに答えのリンク貼ってんじゃねーぞコラ
>>38 誘導乙w
ここに宣伝貼るな
自分が建てたスレ恥ずかしくなって埋めたいのかもw
>>41 だってよ
ついに尻尾出しやがった
わかってたがやっぱり自分は悪くないと思ってんだなw
重傷だ...
>>41 だったら金とんなカス
あんな糞みたいな答えを書かれて金を取るというのはもはや詐欺だ
◆QZaw55cn4cはアスペルガー症候群+自己愛性人格障害 それもかなり強烈 こいつは社会に出る事は出来ず家に引き籠もってプログラムでも書いてるしかないんだな 反省の意が全くない奴は社会は必要としない
みんなでこいつのスレ埋めてこようず
何か ◆QZaw55cn4c を育てるスレにでも変わったか? 別に良いじゃん。どうでも。 比較的まともに宿題に答えてる部類だし、 モリタポ稼げてるとも思えんし。
何か面白い問題ないか? 難しすぎない奴1個頼む。
あんなんでモリタポ稼げるわけがない こいつ社会を舐めすぎ 娑婆はそんな甘いもんじゃおまへんで
[1] 授業単元:C言語
[2] 問題文:
下記ソースに示される、上下左右につながる'#'の島の数を数える関数Funcを実装せよ。
http://codepad.org/UFLHo5LH 尚、gDtの内容は破壊してかまわないものとする。
例1) 次の場合島の数は3
...##
..#.. <--- 上下左右につながっていないので1つと数える
.....
..###
....#
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: MinGW , VC++
[3.3] 言語: C
[4] 期限: [2010年12月7日まで]
[5] その他の制限: 無し
4近傍ってことか
>>53 いや、合ってるよ。
しかしあくまで抵抗するな /*
>>3 */。
現在のrand()では不要ということかw
再帰使うともっとスッキリ書けるぞ。
>>54 >再帰使うともっとスッキリ書けるぞ。
>>52 でも再帰をつかっていますが、これよりももっとスッキリ書ける方法は思いつきませんでした。
>>50 のためにも是非。
>>56 再帰関数の内部処理に若干の違いがあるものの、
>>56 と
>>52 は本質的に同一ですね。提示いただきありがとうございます。
糞スレ
>>58 ◆QZaw55cn4cがいなけりゃ良スレ
int Func(void) { int y, x, cnt = 0; for(y = 0; y < N; y++) for(x = 0; x < N ; x++) cnt += f(y, x); return cnt; } int f(int y, int x) { if(gDt[y][x] != '#' || y < 0 || x < 0 || y == N || x == N) return 0; gDt[y][x] = 0; f(y, x + 1); f(y, x - 1); f(y + 1, x); f(y - 1, x); return 1; }
便乗質問です。 1.座標x,yで位置を指定されるイメージの2次元配列は、 gDt[y][x]とyのほうを先に書くのが一般的でしょうか? 理由も教えて頂けると幸いです。 2.条件文のショートサーキットは全ての環境で行われる保証があるのでしょうか? if (x>0 && gDt[y ][x-1]=='#') Replace(x-1, y );
>61 1. 一般的かどうかは知らない しかしながら、僕は画像(pixmapとか)を想定していたからわりと普通に思えた 2. ノー、全てという保証はない、例えば、俺様環境とか しかしながら、規格では短絡になることが決められている ISO/IEC 9899:1999 (E) 6.5.13 Logical AND operator 4 Unlike the bitwise binary & operator, the && operator guarantees left-to-right evaluation; there is a sequence point after the evaluation of the first operand. If the first operand compares equal to 0, the second operand is not evaluated.
>>62 キモイからトリップ付けろよ。お前は根拠と示したことが
主観による解釈だから間違いだらけなんだよ。
>>62 完全なアスペだな。
「全ての環境」と言うのは「規格を満たす」が暗黙の前提だ。
>>21 書いてみたけど、例題みたいな変換結果は得られないよ
例題の変換結果を得るには A->B ではなく B->A にすれば良いみたい
#include <stdio.h>
int main( void )
{
char* in = "SBB/!Z!N!!PTP!!VBU!!NLP!!";
char tmp[5][6] = {0x00};
int i, j;
for( i = 0; i < 5; i++ ) {
for( j = 0; j < 5; j++ ) {
if( *in ) {
tmp[j][i] = (*in) - 1;
*in++;
}
else {
tmp[j][i] = ' ' - 1;
}
}
}
for( i = 0; i < 5; i++ )
printf( "%s", tmp[i] );
printf( "\n" );
return 0;
}
[1] 授業単元:アルゴリズム相談 [2] 問題文: C++で例えば座標と燃料変数を持つCarクラスをなんらかのボタンを押したときなどに動的に生成したいのですが どの様なプロセスで実装すればいいんでしょうか? また生成したそれら全てを燃料がある限り動かしたいのですがメソッドでそろぞれ動かすためにはどうすればいいでしょうか? [3] 環境 [3.1] OS:Win [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語: C++ [4] 期限:なし [5] その他の制限: C++独学始め 初めて質問でまだ勝手がわかりませんが、どうかよろしくお願いします。
68 :
デフォルトの名無しさん :2010/12/06(月) 13:02:36
1] 授業単元:C言語 [2] 問題文:次のようにファイルを使うために関数fopenでファイルを開く文を書きなさい。尚、すべてテキストモードとする。 (1)ファイルsinki.txtを新しく作成して書き込む。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: MinGW , VC++ [3.3] 言語: C [4] 期限: [2010年12月6日まで] [5] その他の制限: 無し
FILE *ofp = fopen("sinki.txt", "rt");
"rt" じゃなくて "wt" だった
72 :
デフォルトの名無しさん :2010/12/06(月) 18:10:40
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク):次のように、10から0までカウントダウンして、0になったら!!!と表示 して終わるCプログラムを作って実行しなさい。 10 9 8 (中略) 1 0 !!! [3] 環境 [3.1] OS:mac OS X [3.2] コンパイラ名とバージョン:ターミナル [3.3] 言語: C [4] 期限: 2010/12/8 [5] その他の制限: for文を習った時に出された課題です。 お願いいたします。
このくらい出来ないと今後の課題も全て無理じゃね?全部やってもらうの?と思う宿題がたまにあるよね。
>>72 とりあえず2パターン。
int i;
for(i=0;i<=10;i++)printf("%d\n",10-i);
printf("!!!");
int i;
for(i=10;i>=0;i--){
printf("%d\n",i);
if(i==0)printf("!!!\n");
}
75 :
デフォルトの名無しさん :2010/12/06(月) 18:54:41
>>74 いざプログラムを組む時になると、どれをどういう風に使ったらよいか全然分からなくなってしまって…
多分一行一行の理解が出来て無いんだと思います
>>72 >>74 どうもありがとうございました、大変助かりました
>>72 タイマーを実装しろって問題じゃないんだよね
>>72 #include <stdio.h>
#include <time.h>
int main(void) {
clock_t n,i,cnt=10;
for(i=0; i<=cnt; ) {
n=clock()/CLOCKS_PER_SEC;
if(n>=i) {
printf("%d ",cnt-i); i++;
}
}
printf("アッー!!!\n");
return 0;
}
#include <stdio.h> #include <conio.h> int main(void) { while( !kbhit() ){ putchar('A'); } return 0; }
'∀' '-' '_' 'д'
81 :
デフォルトの名無しさん :2010/12/06(月) 21:20:13
[1] プログラミング演習 [2] 問題文 メンバとしてchar型変数chとint型変数i,double型変数dを持つ 共用体を用意する。iに16進数を代入した後ch,i,dそれぞれを 表示するプログラムを作成せよ。なお、表示する際に、全ての変数を%xで 表示すること。 [3] 環境 [3.1] windowsXP [3.2]visual stdio2005 [3.3] c++ [4] 2010/12/7 [5] 無し よろしくお願いします
ch と d に何も入れないと、どんな値が入っているか不定だが
84 :
デフォルトの名無しさん :2010/12/06(月) 21:41:47
[1] プログラミング演習
[2] 問題文
構造体を引数と戻り値とする関数を作成せよ。なお、作成する関数は
引数を四則演算して戻すものとする。
[3] 環境
[3.1] windowsXP
[3.2]visual stdio2005
[3.3] c++
[4] 2010/12/7
[5] 無し
こちらもお願いします。
>>82 問題文には、このように書かれてました。
>>81 深く考えず、問題の内容どおりのソースを書いた。
#include <stdio.h>
union UA {
char ch;
int i;
double d;
};
int main() {
union UA A;
A.i = 0x12345678;
printf("ch : %x\n",A.ch);
printf("i : %x\n",A.i);
printf("d : %x\n",A.d);
return 0;
}
不定だってよ、笑っちまうな
全くつながらんな
>>81 >>84 「おじいさんは芝刈りに」 と 「明日晴れるかな」という文章ぐらいつながらん。
>>87 明日の大事な試合のために、おじいさんはスタジアム(ゴルフ場かも)の整備しているとみた
>>87 おじいさんは芝刈りに行くけど明日晴れるかな
ツナガタ!!
>>88 分かります
おじいさんは性格のいい働き者で自分仕事だけじゃなく孫の大切な大会のことも心配してるんですね
>>3 で依頼したものですが
問い2の処理はfor文を用いよと言われてしまいました
厚かましいようですがお願いしたく思います
>>90 そうです
おじいさんは孫のためならバリカンでも芝刈りをします
>>91 なるべく簡単に
#include <stdio.h>
int main()
{
int num;
scanf("%d",&num);
for (; num >1;) {
printf("%d ",num);
if (!(num % 2)){
num /= 2;
}else{
num *= 3; num++;
}
}
printf("%d\n",num);
return 0;
}
[1] 授業単元:ネットワーク演習 [2] 問題文(含コード&リンク): wireshark/tcpdumpで収集したファイルを読み込み、"SYNフラグのみ"が送られてくるパケットの平均の時間間隔(単位:秒)を"すべての送信元アドレスと送信先アドレスごと(1対1の関係で)"に求める。 最終的に求める平均時間間隔は、小数点第6位までとする。もし送信先に1度しかSYNを送られないアドレスがある場合は、その時間間隔を-1とする。 これをcsv形式で出力するプログラムを書いてください。 例えば、送信元が133.165.2.250で、66.42.132.222宛てに3回SYNを飛ばしたとする。 その時刻(タイムスタンプ)がそれぞれ"312.1s,313.3s,314.8s"だとすると、その時間間隔は1.1s(=313.3-312.1)と1.5s(=314.8-313.3)になり、平均は1.3s {=(1.1+1.5)/2 }になる。 また、送信元が133.165.2.250で、34.141.144.255宛てに1回しかSYNが飛ばなかったような場合は、そのアドレスに対しての時間間隔の平均値は-1になる。 この動作を繰り返します。 出力例 srcip dstip ave_timesub 133.165.2.250 66.42.132.22 1.3 133.165.2.250 34.141.144.255 -1 133.165.2.250 10.31.1.11 1.45 133.165.2.185 66.42.132.222 0.74 ・・・ ・・・ [3] 環境 [3.1] OS: (Windows/Linux/等々)Linux CentOS 5 [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:どちらでも可 [4] 期限: 12月13日 [5] その他の制限: なし どうぞよろしくお願いします。
> 問い2の処理はfor文を用いよ 題意がわからんな while を使うべきところを for にする事で何を学ばせたいのか
>>94 回答者はwiresharkだかEtherealのファイル形式を調べることから初めにゃならんのか?
>>97 だな、なんか業務の臭いがする
せめて tcpdump だかの出力サンプルくらいは提示しないと回答は得られないと思うよ
>94 セントくん5なのにずいぶん古いバージョンのcc使っているんだな こういうのは、perlやpythonでやったほうがいいと思うけど がんばれ、未来のNWE とりあえず、SYNとタイムスタンプの位置とがわかった 13日までか、ちょっとがんばってみる いや、やっぱやめよう
しかしコンパイラ名がteratermとはなかなかいいね。 > 奇数なら3倍して1加える ・・・・ これを結果が1になるまで繰り返す これは問題あってる?
>>101 そうか。じゃ
>>93 をコンパイル実行した後、 3 を指定し、
停まるまで何時間かかったか後で教えてくれ。
103 :
デフォルトの名無しさん :2010/12/07(火) 00:50:21
http://codepad.org/D7LCYDSZ このような2分木を作成したのですが、
1,3のところを+
2,4のところを×にして、
計算式にしたいのですが、どのように変形すればいいですか?
やはり後順走査になりますか?
このソースをもとによろしくお願いします。
>>102 >>93 では
3
10
5
16
8
4
2
1
というようにはならないということですか?
>>104 いや、俺が計算間違えたみたいだ。
もう一度よく考えてみるわ。これ必ず収束するのかなぁ・・・
ちなみに問題どおりのソースは for (; num!=1;) { だぞ。
コラッツの予想は正しくなかったのでしょうかね?
1431655765とかは?
>>108 1431655765 4294967296 2147483648 1073741824 536870912 268435456 134217728 67108864 33554432 16777216 8388608 4194304 2097152 1048576 524288 262144 131072 65536 32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
[1] 授業単元:アルゴリズム [2] 問題文 ・正の値をキーボードから入力。-の値の場合停止。 ・入力された値をヒープ配列(入力された値の並びをヒープに)に格納。配列の大きさはランダムにしておく。 そして降順に並びかえて画面に出力 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010/12/7 23:59分までにお願いします 時間あまりなくてすいません・・・ 本当に急いでます・・/
void PushHeap(int x) { int i,j; if(++n>=MAXSIZE)stop("Overflow"); else { heap[n]=x; i=n; j=i/2; while(j>0&&x>heap[j]){ heap[i]=heap[j]; i=j; j=i/2; } heap[i]=x; } } がヒープへのデータの格納のアルゴリズムらしいのですがこれを参考に製作しろと言われました。 ここにおけるnはデータの個数、xは入れたい値、iとjは子と親の関係を表してます。 お願いします
何度もレスすいません 降順ではなくヒープ配列に入っている順です [72,35,47,18,29,32,13,5,9]等
>>111 > 配列の大きさはランダムにしておく
if(++n>=MAXSIZE)stop("Overflow"); はて?
配列の大きさnをランダムで決めるってことだろ
違うnじゃなくてMAXSIZEだ MAXSIZEって名前のグローバル変数なんだろ
>>114 すいません!
そこの部分は与えられた題には関係ないですね・・・
MAXSIZEは定義されてないです。
とりあえず「正の値を入力してください」と何度も表示し-の値を与えられた場合
配列への値の格納を終了といった感じですので
ヒープ配列のサイズはランダムです。
わかりにくくてすいません・・・
119 :
デフォルトの名無しさん :2010/12/07(火) 14:57:59
>>118 ありがとうございます!
贅沢言って申し訳ないのですが これの簡素版って不可能なんですかね?
出来るだけライブラリ関数を使わなかったりとか…
すみません…
あまり凝ったのだと 僕の実力と合わない故…
>>119 >>118 はソート他を実装してくれてるじゃん
ライブラリ関数のqsortは使ってない
後は動的配列だが、こんなもん自分で実装する方が実力と合ってないと思う
ライブラリ関数で出来る事はそれを使った方がいい
121 :
デフォルトの名無しさん :2010/12/07(火) 15:34:44
[1] 授業単元:情報 [2] 問題文(含コード&リンク):整数i, j,実数x,y それぞれに任意の値を入力し、 i+j, i-j, およびx+y,x/yを計算し、その結果を出力するプログラムを作成せよ 入力にはscanf関数、出力にはprintf関数を用いること 出力結果は i+j=計算結果の数字 i-j=計算結果の数字 x*y=計算結果の数字 x/y=計算結果の数字 [3] 環境 [3.1] Windows_xp [3.2] コンパイラ名とバージョン: ? [3.3] 言語:C99 [4] 期限: 明日の12時 [5] その他の制限: TeraPaDでコマンドプロンプトに実行 お願いします
>TeraPaDでコマンドプロンプトに実行 このレベルだとC99でいいってのも怪しいな
>>118 static void 大爆笑wwwwwww
えっ
カプセル化を意識するとそうなる
127 :
デフォルトの名無しさん :2010/12/07(火) 15:41:03
static void の意味も理解していないとバレバレな使い方しているしwwwwww こいつ知ったか無知wwww
131 :
デフォルトの名無しさん :2010/12/07(火) 15:46:35
>>118 int mainのとこはvoid mainなんですかね?あとstatic voidとはどういった処理なんですかね?記憶になくて… 薄識ですいません…
static void ・・・ちょっと格好つけてみたかったとです・・・ヒロシです・・・(キリッ) static void だっておー(バンバン) ぎゃははははははははははは!!!wwwwww
ここまで自信満々に間違えると恥ずかしいな
別に意味がないってだけで間違いではないんじゃ
135 :
デフォルトの名無しさん :2010/12/07(火) 16:04:02
>>130 void staticを使わないでも出来るということですかね? なにぶん見たことない処理ですので…
137 :
まさるさん :2010/12/07(火) 17:27:52
[1] 授業単元:情報処理 [2] 問題文(含コード&リンク): c言語の問題について 10桁以上ある2進数をユーザに入力させ, それを4桁ずつ区切って(16進数で)表示するプログラムを作成せよ 実行例です。 H:\> prog0904 000111101001001 0001 = 1 1110 = e 1001 = 9 001 = 1 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:わかりません [3.3] 言語:C++ [4] 期限: ([2010年12月7日18:00まで] ) [5] その他の制限:TeraPaDでコマンドプロンプトに実行
test
int main() wwwwwww static void wwwwwww voidを使う場所、それで良いんか?
静的関数はともかく int main()はなんの問題があるの?
>>140 なんの問題もありません。
ISO/IEC 9899:1999 6.7.5.3-14
ISO/IEC 9899:1999 5.1.2.2.1-1
>>141 お前は黙ってろ
知らない方へ
こいつの隔離スレをご覧ください
>>137 #include <iostream>
int main(int argc, char **argv) {
int i, n = 0;
if(argc < 2) return 0;
for(i = 0; argv[1][i]; ++i) {
n = n * 2 + argv[1][i] - '0';
std::cout << argv[1][i];
if(i % 4 == 3) {
std::cout << " = " << std::hex << n << std::endl;
n = 0;
}}
}
145 :
144 :2010/12/07(火) 19:02:47
>>137 最後の処理忘れた
#include <iostream>
int main(int argc, char **argv) {
int i, n = 0;
if(argc < 2) return 0;
for(i = 0; argv[1][i]; ++i) {
n = n * 2 + argv[1][i] - '0';
std::cout << argv[1][i];
if(i % 4 == 3) {
std::cout << " = " << std::hex << n << std::endl;
n = 0;
}}
if(i % 4 != 3) std::cout << " = " << std::hex << n << std::endl;
}
C++はC言語の上位互換です!w
>>147 質問者がどっちか分かってないんだからしょうがないだろ
>c言語の問題について って書いてあるんだからCなんじゃないの? 言語:C++の信用度は限りなく低い
>>149 if(i%4) だった
ループのインクリメント忘れてた
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) 問題1 2つの整数値を読み込んで、その差の絶対値の数だけ「ツイテル」を表示する「ツイテルプログラ ム」を作成しなさい。 num1:18 num2:3 ツイテル ツイテル ツイテル ツイテル ツイテル ツイテル ツイテル ツイテル ツイテル ツイテル ツイテル ツイテル ツイテル ツイテル ツイテル 問題2 2重ループの構文を用いて、次の実行結果に示すように数値でピラミッドを表示するプログラムを作成しなさい。 段数を入力して下さい8 1 22 333 4444 55555 666666 7777777 88888888 問題3 2重ループの構文を用いて、次の実行結果に示すようにn行×m列の長方形を表示するプログラム を作成しなさい。 高さ(n)を入力して下さい:5 幅(m)を入力して下さい:10 ********** * * * * * * ********** [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:12月8日 よろしくお願いします。
153 :
デフォルトの名無しさん :2010/12/07(火) 19:56:17
>>111-112 >>118 はおそらくヒープ間違い
単元が「アルゴリズム」で,
>>112 の「子と親の関係」という記述もあることだから
おそらく配列を使ったヒープ構造を指しているのじゃなかろうか
155 :
デフォルトの名無しさん :2010/12/07(火) 20:57:05
156 :
デフォルトの名無しさん :2010/12/07(火) 22:07:34
質問なんですがstatic voidとは結局どのような意味なのでしょうが? もし説明しろと言われると詰まるので・・・
>>157 staticだけ消してもうその事は忘れろ
>>157 一つのプログラムが一つのファイルで構成されている場合は、関数の宣言の前につける static は省略してもかまいません。
static void func() なら void func() だけでOK。
160 :
デフォルトの名無しさん :2010/12/07(火) 22:38:01
>>118 は全くの見当違い
気球(バルーン)を作って欲しかったのに
出来上がったものは紙風船(バルーン)だった
>>157 static void は検索すれば何なのか分かるが、少なくともそのコードでは
特に意味のある、必要不可欠な部分ではないことは確か。
162 :
デフォルトの名無しさん :2010/12/07(火) 22:43:45
>>160 は英単語では同じだからこうかな
船(シップ)を作って欲しかったのに湿布(シップ)が出来たと
まとめるとstaticと表記された部分を全て消去すればおk ということですね?
>>118 さんも補足してくれた皆さんも本当にありがとうございます・・・!
>>118 をコンパイルすると
36:21: warning: multi-character character constant
In function ‘main’
36: 警告: 暗黙の定数変換でオーバーフローしました
となり
実行結果は表示されるのですが値の前になぜか\がついてしまいます
すいません・・・
このコンパイル結果はエラーではないのですかね?
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 次の手品を完成させるための、7組の数字郡を表示するプログラムを作りなさい。 (1)手品師は1~99 の数字の書かれた7枚のカードを用意し、客に渡す。 (2)客は1〜99の中の任意の数字を1つ思い浮かべ、 7枚のカードの中からその数字が入っているものを全て選び手品師に渡す。 (3)手品師は渡されたカードを見て、客の思い浮かべた数字を瞬時に言い当てる。 タネ (4)手品師は渡されたカードの最初の数字の合計を暗算する。 その合計値が客の思い浮かべた数字となる。 問題 7枚のカードに書くべき数字をカードごとに表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: MinGW [3.3] 言語: C言語 [4] 期限: 2010年12月8日23時59分 [5] その他の制限: 制限無し
>>164 手元の環境では問題なくコンパイルできます。
なんかまちがったところを消したりしてませんか?
>>167 \のとこは解決できました。
一応実行は出来るのですが
警告文は無視していいのですかね?
一応気になったもので・・・
>>165 > (2)客は1〜99の中の任意の数字を1つ思い浮かべ、
> 7枚のカードの中からその数字が入っているものを全て選び手品師に渡す。
これってどういう意味?
例えば 17 を思い浮かべたとすると 1 もしくは 7 の数字が入ったカードって意味?
>>165 これって答えの一つになる?ならない?
10 26 38 46 58 70 90
>>121 まだならどうぞ。
#include <stdio.h>
int main(void) {
int i, j;
double x, y;
printf("整数1つ目を入力してください:");
scanf("%d", &i);
printf("整数2つ目を入力してください:");
scanf("%d", &j);
printf("実数1つ目を入力してください:");
scanf("%lf", &x);
printf("実数2つ目を入力してください:");
scanf("%lf", &y);
printf("%d + %d = %d\n", i, j, i + j);
printf("%d - %d = %d\n", i, j, i - j);
printf("%f * %f = %f\n", x, y, x * y);
printf("%f / %f = %f\n", x, y, x / y);
return 0;
}
173 :
169 :2010/12/08(水) 00:18:13
>>172 出力結果を見る限り、問題の意味を分かってないんじゃないかと
174 :
165 :2010/12/08(水) 00:21:13
>>169-170 う〜ん。どうでしょう。165が問題文の全てです。
問題に隙があればイヤミ臭くコメントにでも書きます。
>>170 ◆QZaw55cn4c さんの
>>166 の回答を見る限り、
17を思い浮かべた時に1と7は含まれず、そのものズバリの17だけのようです。
>>170 どうでしょう。よく分かりません。
色々、確認してみてるのですが ◆QZaw55cn4c さんの
>>166 は正しそうですね。
どういうことなのかしら?
175 :
169 :2010/12/08(水) 00:23:13
>>165 >>173 たとえば客が 29 を想像し、
card 1, 3, 4, 5 を手品師に渡す。
card 1, 3, 4, 5 の先頭の数字は、1, 4, 8, 16
手品師は 1+4+8+16=29 と暗算する。
遅かった。失礼しました。
>>176 2010年12月8日23時59分でいいのでタネあかしを一つよろしく。
それまで俺なりに考えます。
注)モリタポは持ってません。
>>178 モリタポか‥‥‥。ネタのつもりでネタに徹したのですが、思わぬ反響がありますねえ。
それはともかく、
card1 二進数で 2^0 の位が 1 であるような数全部
card2 二進数で 2^1 の位が 1 であるような数全部
card3 二進数で 2^2 の位が 1 であるような数全部
客が card1 card3 を手渡してきたとき、それは暗に「私の思い浮かべている数は二進数で 2^0 の位が1、2^2 の位が1、あとは 0」といっているようなものです。
これだけでよくね? #include <stdio.h> int main(void) { int i, j; for(i=0;i<7;i++) { printf("Card %d :", i+1); for(j=1;j<=99;j++) { if(j&(1<<i)) printf(" %d", j); } printf("\n"); } return 0; }
2進数
それ以外にも先頭の数字の組み合わせ方とかあるのかな
183 :
デフォルトの名無しさん :2010/12/08(水) 00:58:38
184 :
165 :2010/12/08(水) 00:58:43
なるほど2進数か。さっき理解した。 解ければ、なかなかいい問題じゃんと思えてきた。
>>182 あるよ
1 2 4 8 16 32 36
1 2 4 8 16 32 37
1 2 4 8 16 32 38
1 2 4 8 16 32 39
1 2 4 8 16 32 40
1 2 4 8 16 32 41
みたいにね
◆QZaw55cn4cは出てくるなよ
>>182 #include<stdio.h>
int main(void)
{
int kind[]={50, 25, 12, 6, 3, 2, 1};
int i, j, k, rest;
for(i=0;i<7;i++)
{
printf("Card %d :", i+1);
for(j=1;j<=99;j++)
{
rest=j;
for(k=0;k<i;k++)
{
if(rest>=kind[k]) rest-=kind[k];
}
if(rest>=kind[i]) printf(" %2d", j);
}
printf("\n");
}
return 0;
}
189 :
デフォルトの名無しさん :2010/12/08(水) 02:50:17
191 :
118 :2010/12/08(水) 08:56:59
みなさん、わらかしてしまってすいません。 staticは「どうせ、このファイルでしか使わないし」と思ってつけました。
いや、それは正しい。笑った奴が素人。
193 :
デフォルトの名無しさん :2010/12/08(水) 09:38:43
>>192 必要性のないことをしたから笑われたんだろ。知ってて笑われていることに気づかないお前が素人以下。
>>192 いや、お前が素人。自分は意味を知っていたけど、相手は知らずに笑ったと思ったんだろ?
他人に理解されないとかではなく、意味も成さないコードを書くと笑われて当然。
もう少し他人の目を気にした方が良いですよ、知ったかの似非上級者さん。
自分は知っている=上級者ではないから。
>>192 そこまで言うなら、その他の課題、コードにも全部 static 戻り値の変数の型 func()
って書けば?何で常にそれを貫き通さないのに、突発的に記述したりしなかったりする訳?
それが本質的に必要不可欠ならまだしも、あのコードは違和感を感じる人がいてもおかしくない。
お前は一生#include <stdio.h> int main() で良いよ。と言うかそれに限定しろ。
知ったか無知の思い上がったバカが特定できるから、コードに穴があったら
徹底的に批判してやるから。その内、自分のスタイルを叩かれて自身をなくすだろうけど
正さない、無駄な行動が多い奴は必要なことを最低限するという頭がなく
不要な無駄なことばかりして、自分は出来るんだと見せ付けたいお子ちゃまレベルの
低脳だから、バレバレ。
ttp://www.geocities.jp/ky_webid/c/032.html ○静的関数
静的変数の関数版が、静的関数(static関数)です。関数なので、
ローカルということはありませんから、ローカル/グローバルの別はありません。
静的関数を使う方法は、関数の宣言時に、先頭にstaticと付けるだけです。
static void func(void);
関数の定義の方には、付けても付けなくても構いません。もちろん、付けておけば分かりやすいでしょう。
静的関数の意味は、静的グローバル変数と同じで、
そのソースファイル内からしかアクセスできないようにするというものです。
複数のソースを纏めて、その他にも同じ関数名のものがあるなら分かるが
118でその意味は理解されないよ。
それから BubbleSort の中身、揚げ足取りをしたくはないが
厳密に言うと無駄があるよ。
無駄な部分を指摘しておくぞ for(j = i; j<size;j++){ if(temp[i] <= temp[j]) 後は自分で気づけ。
っつか、それ、バブルソートじゃねーよ
選択ソートだとしても swap(&temp[i],&temp[j]); の場所が不適切で無駄が発生しているよ。 比較して交換する候補が見つかったら、その位置を記憶して 2つ目のループの最後に交換で構わない。
動けばいいのではないだろうか
201 :
デフォルトの名無しさん :2010/12/08(水) 10:10:28
>>195 > そこまで言うなら、その他の課題、コードにも全部 static 戻り値の変数の型 func()
> って書けば?何で常にそれを貫き通さないのに、突発的に記述したりしなかったりする訳?
はあ?
>>118 は必須なシンボル(main)以外は全部staticになっているぞ。
「何で常にそれを貫き通さない」ってなんの事だよ。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
例題4の3個のfor文について規則性を見出し,
これを1つのfor文でまとめよ.
ヒント:2重ループのfor文になる.
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:
for文、if文、配列を習っているところです。
下記の例題4の解答のレベルに合わせてもらえると幸いです。
例題4は↓の問題です。
例題3と同じく,int型の配列aを
a={ 5, 3, 1, 8, 3, 4, 7, 2}
と初期設定する.
このとき,配列の要素どうしの入れ替えを行い,
a[0] に一番大きい値
a[1] に二番目に大きい値
a[2] に三番目に大きい値
を格納するようなプログラムを作成せよ。
http://codepad.org/k5jEHRGr
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 10進数で表現された63以下の正の整数をキーボードから入力する. これを2進数に変換し,1の位から順にint型の配列a[0]〜a[5]に代入するプログラムを作成せよ. ヒント 10進数を2進数へ直す計算方法を思い出そう. この例は10進数に21を与えている. 21を2で割ったあまりを順に並べて各位の値を決めたはずである. この場合は63以下なので,たかだか6回の割り算であまりを求めればよい. [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 本日中 [5] その他の制限: for文、if文、配列を習っているところです。 こちらも上記の例題4の解答のレベルに合わせてもらえると幸いです。
#include <stdio.h> int main() 大爆笑 その内、嘲笑、失笑になるから。
205 :
デフォルトの名無しさん :2010/12/08(水) 10:53:45
>>195 は逃亡ですか?
>>204 static voidの話なんだが、それが#include <stdio.h> int main()と何か関係有るのか?
話題引きずりすぎっすわぁwwww
(´-`).。oO(馬鹿は放置しとけばいいのに)
209 :
118 :2010/12/08(水) 11:07:57
>>197 for(j = size-1;j>i;j--)
210 :
118 :2010/12/08(水) 11:23:34
>>206 ありがとうございます
>>210 すみません、まだプログラミングを学び始めたばかりで
わからないところが多すぎて参考になりそうにないです…
213 :
デフォルトの名無しさん :2010/12/08(水) 11:33:49
整数i,j,実数x,yそれぞれに任意の値を入力し,i+j,i-j,およびx*y,x/yを 計算し,その結果を出力するプログラムを作成せよ。入力にはscanf関数, 出力にはprintf関数を用いること。また,出力結果は次のような形式で 表示されること。当然ではあるが,数値については各自のi,jの値の選び方 によって計算結果が異なる。 おねがいします
216 :
215 :2010/12/08(水) 11:38:08
>>211 すみません、
>>210 よりはまだ理解出来そうなのですが
while break putchar a[i++]
この辺りを使わずに出来ますかね?
219 :
デフォルトの名無しさん :2010/12/08(水) 11:45:00
>>218 お手数をおかけしました
ありがとうございます
意味を成さない無駄な動作をさせても動けば良い、あっそ。 そんな考えならプログラマーになんて向いてないよ。早く別の職種に転職を考えな。 適性のない選択をすると、一生を無駄にしますよ。ほら、こうしている間にも 確実にいつか必ず死ぬ日に刻一刻と近づいて、生きられる時間は短くなっていますから。 それは明日かもしれませんよ?
>>222 自己紹介乙
そういうのを余計なお世話って言うんだよ
>>224 ねえねえC89の話をしてるのにどうしてC99の規格票を参考にするの?
わけを教えて?意味あるの?
>>225 コピペ厨に聞いても返ってくるわけないじゃん
いや、いつかは分からなくても、こうしている間にも時間は経過して
必ず老化も進み、衰弱するか病気になるかもハッキリとは分からないが
必ずいつかは誰もが死ぬんだが?いくら再生医療が発達した現代でも
DNAが分裂して新しい細胞が生み出されている訳だが、その再生できる回数に
限りがあるとのこと。その寿命が来た時、あるいは著しく健康を悪化させた結果
癌などに侵されるなりして、生物はいつかは死ぬんだが。
まぁ、人の死が身近ではない人もいるだろうけど、いずれ周りの人間で誰かは死ぬし
もしかすると自分が、不慮の事故などで死ぬかもしれないよ。
そんな中、こんな場所で自分より劣るプログラマーを見つけては罵倒して楽しイカ?
悪いがそんな池沼と付き合いたくないし、そんなバカと関わっても有意義な時間、人生が
過ごせるとは思えないんで。ここは幸い、IDもなく自分が特定されずに済むから
>>223 みたいなバカが居たらスルーするんで、以後放置よろ。
>>225 どこにC89の話とかいてあるのですか?
あと、この話題はC89でもC99でも同じです。
これだけ嫌われてるのに普通に書き込める厚顔さには呆れる
231 :
デフォルトの名無しさん :2010/12/08(水) 18:42:20
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://情報処理試験.jp/FE22b-pm/t08.html この問題のプログラム1とプログラム2をそれぞれ関数化しメイン関数で呼び出し実行するプログラムの作成。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:12月10日
[5] その他の制限:なし
宜しく御願いします
長文と ◆QZaw55cn4cの2大キチガイの競演かw
>>229 C89だと main()は main(...)と同じ意味になってしまうんですけど?
C99はmain(void)ですが
自分がいつ死ぬか分からないとは言え、自殺すればその時が自分の人生の終わりさ。 高速で移動する物体の前に飛び出してごらん。鉄道じゃ吹き飛ぶかぶっ潰されて ばらばらに切断されるか。そう言えば、100km/hの車に轢かれて 上半身だけボンネット、フロントガラスに、下半身が衝突した場所に残っていた 悲惨な事故を思い出したぜ。要するに 人間なんて脆い 生き物だよ。 大災害で死ぬかもしれないよ。ほら、明日にでも自分の住む地域に 大地震が発生したらどうよ?その先生きのこれる自身
>>230 だから◆QZaw55cn4cは自己愛性人格障害なんだよ
>尊大で傲慢な行動、または態度。
アスペルガー症候群だと思っていたが、この厚顔無恥さは間違いなく自己愛だ
>>233 そう、つまり C89/C99 どちらにしても int main() は規格に適合するのです。
ドヤッ
>>237 お前アホか?意味が違ってくると言ってるんだけど
規格に適合するかどうかなど聞いてない
構ってくれるから嬉しい
241 :
デフォルトの名無しさん :2010/12/08(水) 20:11:16
243 :
デフォルトの名無しさん :2010/12/08(水) 20:20:20
うんぽこー!
不当に流れが早くて、なんか困る
246 :
118 :2010/12/09(木) 05:22:39
>>241 #include <stdio.h>
double Y_Answer(double a,double b,double c,double d,
double e,double f)
{
return ((c/a)-(f/d))/((b/a)-(e/d));
}
double X_Answer(double c,double b,double y,double a)
{
return (c-b*y)/a;
}
int main()
{
double a,b,c,d,e,f,x,y;
scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&e,&f);
y = Y_Answer(a,b,c,d,e,f);
x = X_Answer(c,b,y,a);
printf("%.3lf %.3lf \n",x,y);
return 0;
}
>>241 君の回答だと 0x + 0y = 1, 0x + 0y = 2 の時に x = 0, y = 0 になるけどこれはおかしい
正しくは一意解無しで題意からすると不正な入力だ
同様に 0x + 1y = 1, 0x + 2y = 3 も x = 0, y = 1 になりおかしい
簡単に言うと a * e == b * d の場合は全て不正な入力という事だ
よって while() 内だけ書くと
if( a * e == b * d ) {
printf( "Ileagal input.\n" );
}
else {
x = ( c * e - f * b ) / ( a * e - b * d );
y = ( c * d - f * a ) / ( b * d - a * e );
printf( "%.3f %.3f\n", x, y );
}
で良いと思うのだけど
a*e-b*d==0となるのは行列式が潰れている、つまり固有値0で解なしという事だな
×固有値 ○行列式
>>248 知ってると思うけど行列式≠0という事はこの行列が正則行列である事をしめしており、
逆行列が存在する必要十分条件ね
逆行列が存在すると言う事はこの連立一次方程式は解けるという事と等価
251 :
デフォルトの名無しさん :2010/12/09(木) 13:27:16
k
252 :
デフォルトの名無しさん :2010/12/09(木) 13:31:10
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 二つの整数width, heightを入力として受け付ける。 文字*を使って幅(横)width,高さ(縦)height,縁の太さ2の「中が空白の長方形」を描きなさい。 例えば, 7 6 を読み込んだときには, ******* ******* **___** **___** ******* ******* と表示されればよい。 ただし_のところは空白文字を示すので, 画面上では何も表示されない)。 なお,width, heightは4以上30以下と仮定してよい。 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: gcc 4 [3.3] 言語: C [4] 期限: できるだけはやく [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) よろしくお願いします
>>252 int main() {
char image[30 + 1][30 + 1] = {'\0'}, mark = '*', space=' ';
int i, j, w, h, thickness = 2;
printf("w h: ");scanf("%d %d", &w, &h);
for (i = 0; i < h; i++) {
for (j = 0; j < w; j++) {
image[i][j] = mark;
}
}
for (i = thickness; i < h - thickness; i++) {
for (j = thickness; j < w - thickness; j++) {
image[i][j] = space;
}
}
for (i = 0; i < h; i++) {
printf("%s\n", image[i]);
}
printf("%d %d", w, h);
return 0;
}
お、久々に人気宿題か?
いや、全然
>>258 問題4
#include <stdio.h>
int main(void)
{
int i;
double x, d = 0;
scanf("%lf", &x);
for(i = 10; i > 0; i--) d = d * x + i;
printf("%f\n", d);
return 0;
}
260 :
デフォルトの名無しさん :2010/12/09(木) 18:39:40
次の要領で meibo を発行します。記号 < はリダイレクト機能を表す。標準入力(キーボード)を
ファイル meibo.dat に切り替えている。
$./meibo 24680 < ./meibo.dat
meibo:コマンド名 24680:生徒番号(code)である。
カレントディレクトリに予め用意したテキスト形式のデータベース meibo.datに番号 24680の
生徒が存在し「ない」場合は
not found
と画面に表示させ、データベース meibo.dat に番号 24680 の生徒が存在「する」場合は
No: 24680
Name: Toyato Jiro
Birth Day: 1970.11.12
Gender: M
Adress: 12-25, Meito Ward, Nagoya City, Aichi
Tel: 773-1252
School: Aichi Univ.
と画面に表示させる。
データベースは以下のように1行1レコードで構成されていて、1レコードは7つのアイテムから成る。
http://codepad.org/ouU2gH02 上のリンクの通り、レコード毎の区切りは改行で、アイテムの区切りはセミコロンになっている。
アイテムは、7項目あり、1) 生徒番号, 2) 名前, 3) 生年月日, 4) 性別, 5) 住所, 6) 電話番号, 7) 大学名
がこの順序で並んでいる。
上記のリンクでは、3レコード分しか無いが、各自でもう少しレコード数を増やして下さい。
以下のリンクに定義する構造体を使って、上のような実装をする meibo.c を書け。
http://codepad.org/V7MCRX0a
262 :
デフォルトの名無しさん :2010/12/09(木) 18:43:46
>>260 書ききれなかったので、続きです。。。
[3] 環境
[3.1] OS:Mac OS X
[3.2] コンパイラ名とバージョン:ターミナル
[3.3] 言語:C
[4] 期限:2010年12月11日 15:00まで
[5] その他の制限:ファイル処理のやり方については、まだ習っていないので使わないで下さい。
標準入力を meibo.dat に切り替えて扱うようにお願いします。
>>258 問題5
#include <stdio.h>
int main(void)
{
int i;
double x, d = 0, an = 1;
scanf("%lf", &x);
for(i = 1; i <= 9; i++) an /= i;
for(i = 9; i >= 0; i--) {
d = d * x + an;
an *= i;
}
printf("%f\n", d);
return 0;
}
| ↓
266 :
デフォルトの名無しさん :2010/12/09(木) 20:14:00
>>258 問題1
int main(void) {
int i;
double f[10][10];
for (i=0 ; i<100 ;i++) printf(" %f\n",f[i/10][i%10]=11.0);
return 0;
}
>>266 a,bに入る数字を書くものと考えて。
問題1
a : 1110110000001
b : 1110001000000
とか、こんな感じでいいの?
cもあったな。 c : 0000101001 つーかこれC/C++言語の問題じゃないじゃん。
270 :
デフォルトの名無しさん :2010/12/09(木) 21:05:00
>>268 プログラム例の通り5や3などの整数をうけとりそれを2進数に直す感じです。
271 :
デフォルトの名無しさん :2010/12/09(木) 21:07:13
>>269 はい、摸擬言語です
これをC言語でプログラムを作る課題です
>>272 自己レス。最後8ビット返すのか。最後下記な。
return R.b08;
275 :
デフォルトの名無しさん :2010/12/09(木) 22:52:59
276 :
デフォルトの名無しさん :2010/12/09(木) 23:05:11
[1] プログラミング演習 [2] 問題文 バイナリファイルを読み込み、バイト数を調べて表示し、 コピーを作成するプログラムを作成せよ。 バイナリファイルは『マイピクチャ』の『Sample Pictures』に含まれる jpgファイルなどをコピーして使用すること。 [3] 環境 [3.1] windowsXP [3.2]visual stdio2005 [3.3] c++ [4] 2010/12/11 [5] 無し お願いします。
279 :
278 :2010/12/10(金) 04:40:25
281 :
デフォルトの名無しさん :2010/12/10(金) 13:04:50
[1] 授業単元:プログラミング[2] 問題文(含コード&リンク):関数を利用して、x二乗+y二乗+z二乗の計算を求めなさい。コム際、2種類のタイプ(1)void型(2)return型をそれぞれ利用したプログラムを作成しなさい。x,y,zは任意の値とする。 [3] 環境 [3.2] コンパイラ名とバージョン: gcc [4] 期限:はやめにお願いします。 お願いします!
283 :
デフォルトの名無しさん :2010/12/10(金) 15:53:01
>>283 まったく関係ないけど、こういうコメントちゃんとついたスタイルのソース、
なんか懐かしいな。俺も十年位前そういう書き方に没頭してた。
変数名とか関数名をちゃんと考えて付けてればコメントなんか必要ないのだ。 >/* ノード数(状態数) */ >#define N 9 こういうの馬鹿じゃないかと思うね。 #define NODE_NUM 9 で十分じゃないか
>>285 細かい
そんなのは個人の自由
文句があるならお前が書け
細かい? 自由? 文句?
>>285 は親切にもアドバイスくれてるだけだと思うが…。
>>285 みたいのは親切とは言わない
「大きなお世話」と言う
しかしちゃんと整形するだけでも萎えそうになるソースだな コレって俺の環境が読めない改行コードが使われてるだけ? 他の人はちゃんと見えてるのか?
というか、グローバル変数が10個くらいある時点で読む気無しw
じゃあNっていう定数が出てくる箇所すべてにコメント入れてろよクズwww
>>290 > [3.1] OS: macosx
Windowsの場合、メモ帳だと改行おかしいけど
VSとか他のエディタ使えば平気
つか名前が入ってるけどいいのか?
顔真っ赤ですよ?
改行がCRだね。
297 :
デフォルトの名無しさん :2010/12/10(金) 17:27:59
講師の名前だろうしインターネットから見える状態なんだから問題ないでしょ それより1文字定数とかグローバル変数にいちゃもん付けてる奴(ら?)はあたまおかしい
298 :
デフォルトの名無しさん :2010/12/10(金) 17:29:50
何百行もなく,目的もはっきりしているプログラムで >/* ノード数(状態数) */ #define NODE_NUM 9 こういうの馬鹿じゃないかと思うね。 >#define N 9 で十分じゃないか
どっちの言うことも分かるけどとっとと解けよ
俺は N 9 にするけどね
小規模な何の役にも立たないカスプログラムしか書いたことないんだろうなクズwww
くだらん主張してる奴らはどちらもまだ解くことが出来ていない これこそが真実だろう
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 以下のようなカレンダープログラム mycal を作成せよ。 ◦ 引数なしで実行されると、今月のカレンダーを出力する ◦ 引数1個で実行されると、その引数を月とみなし、その年のその月のカレンダーを出力する ◦ 引数2個で実行されると、第一引数を月、第二引数を年とみなしてカレンダーを出力する。 [3] 環境 [3.1] windowsXP [3.2]gcc [3.3] c [4] 2010/12/13 [5] 無し
>>302 そういう下らんレスをしているお前が言うのもどうかと思うが
>>297 グローバル変数が入ってると読む気が無くなるのは普通の感覚だと思うけど?
[1] 授業単元:プログラムA
[2] 問題文(含コード&リンク):
http://codepad.org/MqsKAAAEを 多角形(n角形)の周囲長を求めるプログラム(nは自分で入力する)に変えなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008
[3.3] 言語: C++
[4] 期限:2010年12月14日
[5] その他の制限:戻り値は構造体
308 :
デフォルトの名無しさん :2010/12/10(金) 19:13:54
>>305 むやみやたらとグローバル変数だらけだと同意だけど
この程度(しかも詳細なコメント付)なら
・「どんなデータがあるのか」を把握すればいいだけ
・どこからも参照されるようなデータを一々引数で引き回すな
と思うね
で,A*探索ってことは重み付きグラフのはずなのに「重み」がないけどどうすれば?
グローバル変数ってだけで忌み嫌うのもどうかね。 C++だってクラス内で変数共有して便利に使ってるわけだし。 気になるんならstaticつけとけば。
>>308 本気で言ってるのなら、もう何も言うことはない。
ネタだと言ってくれるなら、いいネタだよと称えたい。
313 :
デフォルトの名無しさん :2010/12/10(金) 20:25:16
>>312 まずはエラーのでないコードを貼れ
はなしはそれからだ
>>306 似たの最近見たけど、ただの多角形か?
正多角形とか、1の累乗根とかそんな条件はないか?
同じ学校にそう何人もこのスレで質問するわけないと思うんだが。 同一人物がせっかく書いてもらった貰ったレスを見てないとしか思えない。
過去スレの人物との共通点は、 "多角形"で通じると思っているところかな。
>>315 ただの多角形だと思います。
説明書きにも特に言及はありませんでしたので・・
>>319 お前、前スレの奴だろ。
じゃなきゃ双子か?ここはお前のサポートセンターではないぞ。
>>307 これ誰か分かりませんか?
基本情報技術者過去問、見たいな感じで書かれているので
> 回答者を混乱させる目的
ではないと思ってます。ずっと考えてますがまだ分かりません。
323 :
デフォルトの名無しさん :2010/12/10(金) 21:24:35
>>279 さん、ありがとうございます。
お手数ですが、ソースに説明をつけて頂けませんか?
お願い致します。。。
325 :
デフォルトの名無しさん :2010/12/10(金) 21:32:35
>>324 ありがとうございます。
ただ、説明不足だったかも知れませが、角数を入力できませんか?
328 :
325 :2010/12/10(金) 21:38:52
>>326 >多角形(n角形)の周囲長を求めるプログラム(nは自分で入力する)に変えなさい。
頂点間の距離の総計じゃないの?
329 :
デフォルトの名無しさん :2010/12/10(金) 21:42:27
信頼性がないということを身を持って証明した
>>325 であった
324 はゼロ除算の運試し?
332 :
325 :2010/12/10(金) 21:46:46
スマンどこがまちがってりうか教えてくれ
>>328 >(nは自分で入力する)
これ#defineじゃなくキーボードからnを入力ってことじゃね
334 :
324 :2010/12/10(金) 21:52:07
そうです!じゃねぇよw それくらい自分でやれ
>>335 こうしとけ。
#define N (123) // 自分で入力しました。
#define Nに入力した数を代入する方法を教えてください
nを増やしていって円周に近似するとかじゃないのね
>>306 前スレの奴だよ。
double PI = 3.1415926535897931;
acos(0)でエラーが出るからといって、3.1415926535897931を薦められ、
それをそのまま書いてるし、
ありふれた名前だが、PI,Len,N,sumなどが全て同じとは不自然。大文字小文字も完全に一致する。
ちなみに前スレの問題に
http://codepad.org/MqsKAAAEの引用はなかった 。
前スレ内で出てきたソースの一部。
>>340 いちいち変更するのが面倒なので、仕様でそうしたいのですが…
>>341 仮に、「私が前スレの奴です」と言ったらやり方教えてくれますか?
>>343 いやいやいやいや
scanfを用いた方法を教えてほしかったんですよ
>>344 質問者と同一人物なら、何故こんな大穴の開いた問題を引っ張る。
出題者への嫌がらせか?
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
東北地方の県のデータを打ち出すプログラムを作成しなさい。ただし、東北地方かどうかの判定をする部分は関数を使うこと。
県データの1行からなる構造体を受取る関数とする。該当すればYを戻り値として返すようにする。)
判定をする際の県名の比較は、関数側に県名の二次元配列を持ち、標準関数strcmpを使う。string.h のinclude を忘れないように。
strcmp(文字列1,文字列2) は文字列が一致すれば0を返す。
コード例示:
http://minus-k.com/nejitsu/loader/up84923.jpg 県データ:
http://minus-k.com/nejitsu/loader/up84924.txt [3] 環境
[3.1] OS: Linux / Ubuntu 10.04
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 12月12日まで
[5] その他の制限: 構造体まで学習済み
関数にどう渡し手て処理すればいいか分かりません。よろしくお願いします。
>>347 一個目の画像。自分で打ち込むぐらいはやれ。
それだけでも多少覚える。
麻呂がクソースを脱糞するでおじゃるよ?
>>347 > 関数側に県名の二次元配列を持ち、
これって char kenmei[6][20]; みたいな定義だろ(東北って6県だよね)、これを静的に初期化するのってどうするんだ?
普通は char* kenmei[] = { "aomori", "miyagi", ..... }; みたいにするんだけど題意と反するよなぁ...
まさか、関数コールの度に strcpy( kenmei[0], "aomori" ); みたいな事するのか?
普通にkenmei[6][20] = {"aomori", "akita", ....};でいいじゃねーかよw
356 :
355 :2010/12/11(土) 00:13:59
スマン、最後 return 0; 忘れた
[1] 授業単元:プログラム [2] 問題文(含コード&リンク):humという名前の構造体を受け取り、そのメンバの中の年齢の値を1/7倍して 返す関数を7humを完成させなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 [3.3] 言語: C++ [4] 期限:2010年12月15日 [5] その他の制限:
7humなんて名前の関数を作れませんって先生に言え
360 :
358 :2010/12/11(土) 01:19:46
kuso_sensei()にするか
362 :
358 :2010/12/11(土) 01:24:32
363 :
デフォルトの名無しさん :2010/12/11(土) 01:25:59
>>358 void I_am_hum(hum& h){ h.年齢 *= 1.0 / 7.0; }
さすがVC++2010
365 :
347 :2010/12/11(土) 01:53:40
>>358 struct hum{
private:
double age;
public:
hum(double Age):age(Age);
hum():age(0.0);
~hum();
double GetAge();
double Sevenhum(hum &hobj);
};
hum::hum():age(0.0)
{}
hum::hum(double Age):age(Age)
{}
hum::GetAge()
{
return age;
}
double hum::Sevenhum(hum &hobj)
{
return hobj.GetAge()/7.0;
}
漏れら極悪非道のageブラザーズ
368 :
デフォルトの名無しさん :2010/12/11(土) 06:46:30
>>283 ですが、重みは上下左右の全方向に対して1です
分岐路に立った時に、どちらの経路(重みの和)のほうが短いかを考慮するアルゴリズムらしいのですが・・・
それとソースプログラムの変数等については寛大な心で許してください
他人に寛大な心を要求するとは何て厚かましい奴なんだろう
皆様に不快な思いをさせたかと思います。 私はしつこすぎた。 ごめんなさい
>>368 それは単なる最良優先探索
A*は分岐路に立ったときに,『始点から』最も近いノードを選ぶアルゴリズム
横型探索だから「分岐路」が同時に複数発生するのが深さ優先と違う点
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 以下の問題文の ^ はべき乗をあらわす記号とする。 1.二次方程式 "ax^2+bx+c=0" のxの解を"解の公式"を使って求め、表示しなさい。 a,b,cは乱数によって決定されるdouble型の変数とする。 a,b,cは "a≠0 , b^2-4ac>=0" を満たすものとする。 解の公式は {-b±√(b^2-4ac)}/(2a) を使うこと。 2.解の公式を使って解く上記方法には問題点があります。 上記問題点とは、"a=0 , b^2-4ac<0"の時という意図ではありません、 あくまで"a≠0 , b^2-4ac>=0"である前提での問題点です。 その問題点がなんであるかを答え、 その問題点を解決するプログラムを作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:2010年12月15日 [5] その他の制限:無し
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):pgmの画像を上下左右反転させる関数void hanten_pgmを作りなさい。 [3] 環境 [3.1] OS:Mac [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:12/15まで [5] 配列の入れ替えを利用した比較的単純な関数で。 読み取り・書き込みを行う関数は既に完成済み。
>>283 http://ideone.com/Y07Z7 構造体・配列引数以外はポインタ・その他ヘッダ(malloc等)を一切未使用
なるべく骨組みを保とうと思ったがムリゲだった
(やろうと思えば再帰でもできそうだけどwhileループに変更)
Q:優先度付きキューの実装がトンデモだが大丈夫か?
A:大丈夫だ.問題ない
377 :
376 :2010/12/12(日) 00:26:14
見直してみるとムダが多すぎてgdgdだな 優先度付きキューのコメントに書いたことなんだけど, それなら優先度付きである必要なかったorz 構造体のpriorityとnも同じ値を入れてるから1変数にまとめればよかったし
378 :
デフォルトの名無しさん :2010/12/12(日) 00:41:16
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 下記のルールで作図した時の、各点のXY座標、および線分の長さの総和を表示せよ。 N(取りあえず10とする)個の点を一筆書きの要領で全て線分で結ぶ。 このとき線分の長さの総和が最小となるようにするものとする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C
>>378 根本から間違ったものを提出して教授に説明しろとでも言われたんだな
「ヒープ」とよばれるメモリ領域をOSから借りてそこに入力したデータを記録
入力完了後バブルソートでソートをかける
借りパクは行儀が悪いので借りたものは返しましょう
>>378 まず int main() だがC言語では一番最初にこの関数が実行される。
int main(void)にしておいたほうが、無意味な言い争いを避けることが出来るため、
よりベストと思われる。
次にchar buff[256] = {'\0'};だがchar型の256個の配列buffを宣言し、
全ての要素を0に初期化している。char型、および配列はググって調べるように。
後の説明は長くなって書ききれないため省略する。
>>378 要は君のレベルも分からんのに説明したところで、
空振りに終わる確率が高いわけだ。
「ここと、ここが分かりません」など回答者に何かヒントを与えるべきだ。
"全く分かりません"では"クソして寝ろ"以外の返事は帰ってこんぞ。
>>379 このスレで一般にWindowsでgccってのはcygwinなりMinGWってことなのかな?
N個の点の座標について指定がないけどランダムってことなの?
点の数のNがとりあえず10個だけど、上限は設けないってこと?
総当たりを許すのか許さないのかね。
で、まぁNP困難であるわけだけど最小じゃないといけないと……。
384 :
デフォルトの名無しさん :2010/12/12(日) 06:32:28
>>376 返信遅くなりましたがありがとうございます
Q:そんなプログラムの出来で大丈夫か
A:(自分にとっては)一番いいのだった、問題ない
ニコ厨はしね
>>383 ランダムでいいです。Nの上限は特に指定されてません。
>>386 重要な質問は総当りで良いかってところだと思うぞ
>>387 > 総当り
と言うことは、
取りあえず結線して、その線分の長さの計算する。
これを全ての結線(10!通り)で試して一番短いものを表示する。
ってことですかね。
これなら何とか自分でも書けそうですが、そういう問題なんでしょうか。
その辺の条件は特に記載がないのでよく分からんのですよ。
>>388 ロジックとして一番最初に浮かぶのは
@ x + y が最小になる又は最大になる点を基点とする
A基点から最も近い点を次の点とする
こんなんじゃ最短になるとは限らないよね
なんかスマートな手法が有るのかなぁ
390 :
379 :2010/12/12(日) 10:53:31
自分で総当りなら書けそうだと大見得書いといて、 実際やってみると難しいですね。 外出までに書いて添削用に上げようと思ったんですが無理でした。 また夜にでも考えます。
379 の問題総当りだと、たかだか15点でも10秒くらいかかってしまう
>>388 条件は記載されてないって言っても
講義なりを踏まえた上での宿題なわけでしょ?
何の単元のどういう講義の後の宿題なのか分かればヒントにはなるかも
こういう計算量が膨大になっちゃうやつは
前スレだかにあった遺伝的アルゴリズムとか使えば少ない計算量で近似を求められるけど
>>391 10秒で解ける様なスーパーコンピューター持ってるんだ、羨ましいな
int min を使おうとすると「あいまい」であるとでて解決できません。 なぜでしょうか?
VisualStudioだとminとmaxはどっかで定義されてるから使えなかったような?
あいまいってことは二つの型がそろってないんだろう std::min<int>(a, b); // 型を指定するか std::min(a, static_cast<int>(b)); // キャストして型をそろえる
399 :
デフォルトの名無しさん :2010/12/12(日) 18:56:58
http://codepad.org/lAy2GhB3 2分木を生成して、後順走査をしながら解を求めていくプログラムです。
なのですが、うまく左側の木の値を読み込んでくれません。
4行目が
info1= 2, info2= 0, x= 5, y=10, z= 3
となっているんですけど、
xは大きい方を選択するので5
yは足し算なので11
zは大きい方を選択するので6
つまり
info1= 2, info2= 0, x= 5, y=11, z=6
になって欲しいんですけどどこがおかしいですか?
よろしくお願いします。
401 :
383 :2010/12/12(日) 19:52:52
>> 379
総当りのプログラムを書いてみた。
http://codepad.org/OFU5si3s 道順の前組み合わせに関しては適当にぐぐったコードなので詳しく説明できない。
よって、単に距離のルート取る前の値を比較して最短を探しただけ。
GA版は自分の得意なC#を使ってフォームアプリケーションを作ってみたけど
N = 10 ぐらいなら総当りで一瞬で解き終わるので使わないでいいんじゃないかな。
>>391 15点で10秒!?
それを実現可能なコードとスパコンの構成をお教えください。
>>401 RoutesNum を (N-1)! としてるけど N! じゃないの?
404 :
383 :2010/12/12(日) 20:14:58
>>403 輪になっているので始点を固定すると考えると
N点の場合は残りN-1点の並びを考えればいいのです。
410 :
407 :2010/12/12(日) 21:33:54
GetTickCount()で調べてみたら、 私のはブッチギリで遅いw どこをどう書けば早くなるかソース参考に勉強させてもらいます。
途中で最小値を上回ったらそのルートは打ち切れば随分違う
412 :
407 :2010/12/12(日) 21:43:45
[1] 授業単元:CGプログラミング [2] 問題文(含コード&リンク): ・複数の画像(画像は3枚以上、縦横は同じ)を平均した画像を作成 ・任意のカラー画像を入力するとRGBカラーヒストグラムを出力し、各ヒストグラムの平均値、分散値を求めるプログラムを作成 [3] 環境 [3.1] OS:Win (Windows/Linux/等々) [3.2] コンパイラ名とバージョン:bcc (gcc 3.4 VC 6.0等) [3.3] 言語: C(C/C++/どちらでも可 のいずれか) [4] 期限: 12月14日12:00まで [5] その他の制限: もう動けば何でもいいです
画像形式に指定はないのか
>>413 画像はpgm png bmp jpgのどれかでおkです
416 :
デフォルトの名無しさん :2010/12/12(日) 22:18:43
>>412 2次元配列を用意して、一度計算した距離を保存しておくのも高速化になる
>>413 問題があまりにてんこ盛りすぎる。やる奴いるかな。
↓取りあえずカラーヒストグラムっぽい奴だけ。
http://codepad.org/yonm9an5 exeと同じディレクトリにTest.bmpが必要。
gcc なら gcc -Wall-ansi -pedantic -mwindows hoge.c -luser32 -lgdi32 で、
CLならそのまま CL hoge.c でいけると思う。
>> 418
どうも。なるほどやってみます。
420 :
383 :2010/12/12(日) 23:18:37
>>401 のコードは間違っている。
EvalRouteにおいて
int idxn; を追加して
idx = Route[i];
idxn = Route[i + 1];
dx = X[idx] - X[idxn];
dy = Y[idx] - Y[idxn];
じゃないとだめだ。
後、最小経路だけ知りたいので
全経路分のメモリ確保とか不要だよね。
http://codepad.org/kR42UrOn 修正したよ。
[1] 授業単元:実習プログラミング
[2] 問題文(含コード&リンク):このプログラムを、ポーランド記法による計算を入力する式が長くなっても動作するように修正してください。
「このプログラム」は以下にURLを張ります。
[3] 環境
[3.1] OS:Windows 7
[3.2] コンパイラ名とバージョン:gcc最新版
[3.3] 言語:C++
[4] 期限:明後日まで
[5] その他の制限:#include <ctype.h> int isxdigit(int c); という文字列を使うようです
http://codepad.org/YPDNSlLa これの「//ここを作成する」を3箇所作成してから「ポーランド記法〜修正してください」
に取り掛かるという結構手間がかかりそうな作業になりそうで申し訳ないです。
よろしくお願いします。
>>418 マジで超早くなりました。
私の環境での10点処理の時間(固定シードで計測)。
>>407 のソースそのまま --> 時間1609ms 探索数3628800
>>411 を実装 --> 時間172ms 探索数1545
>>418 を実装 --> 時間46ms 探索数1545
ありがとうございました勉強になりました。まさか30分の1以下になるとは・・・
>>422 距離の大小だけわかればいいから
sqrt取るのをやめればいいと思うよ。
>>374 pgmフォーマットはアスキーバイナリどちらでもいいの?
指定ある?
>読み取り・書き込みを行う関数は既に完成済み。
これがあるなら出してもらわんとデータの受け渡しが勝手にかかれるぜ
427 :
407 :2010/12/12(日) 23:40:24
>>424 総和で調べなきゃいけないんだから sqrt は必要
>>427 >return L[a][b] = LenMac(a,b);
を
return L[a][b] = L[b][a] = LenMac(a,b);
にすると、もうちょっと速くなる
>>428 sqrtは最後に使えばいいってことだろ
>>430 距離 4 4
と
距離 1 6
があったとして上が 8 、下が 7
二乗のままだと上が 32、下が 37
になっちゃうよ
>>429-430 なるほどねぇ。みんなスゲー頭いいな。
今日は宿題やった甲斐があったわ。
>>425 「日」は一筆書き出来ないってのが一般的なのか?
>>435 お前みたいなクズのために教えたんじゃないから真似すんな
438 :
◆1reJfOTbE. :2010/12/13(月) 00:29:16
[1] 授業単元:プログラミング実験
[2]
http://www.icsd3.tj.chiba-u.jp/~yasukuni/10jikken/ [3] 環境
[3.1] OS:Windows XP
[3.2]コマンドプロンプトで、gccのコマンドでコンパイルしています
[3.3] 言語:C言語
[4] 期限:2010年12月17日に提出なので前日くらいまで
[5] その他の制限:遅くなりましたが、前スレで答えていただいた方
大変ありがとうございました。
リンク先の、第4回の講義スライドの後ろに載っている課題と、第3回の
課題4−2以降がわかりません。よろしくお願いします。
>>435 コードが根本的にクソだからに決まってんだろw
乳バァー
面倒臭いからその比較のをcodepadに貼ってURLを貼って
[1] 授業単元:なし
[2]
http://codepad.org/riYRzZ7s [3] 環境
[3.1] OS:Windows vista
[3.2]複数(codepad,borland,VC++exp)
[3.3] 言語:C言語
[4] 期限:なし
[5] その他の制限:なし
ソートプログラムを作っていて、最後の配列がうまく変わってくれません。
ヒントだけでもかまいませんので、よろしくお願いします。
>>442 N=12 かつ与えるデータを同一にして比較しました。私の環境 PenIII 866MHz では、以下の結果になりました。
>>420 39296ms
>>427 991ms
>>435 12758ms
>>427 が枝狩りが効いていて圧倒的に効率的、という結果です。
>>420 >>435 は同等でしょうね。
>>420 と
>>435 は最短経路の解を出力しますが、それは一致しました。
ただ、3者とも、その値は大きくことなっておりました。どれが正しいのだろう。
>>427 最短経路を出力するようにしていただけますか。
>>445 15じゃ終わらなかったからって12にして誤魔化すなよw
始点と終点を一致させるという指定がない以上、
>>427 のコードも正しい
一筆書きは
>>433 の指摘にもあるとおり始点と終点が一致しないパターンの方が多いから
>>447 私の環境はしょぼいので N = 15 だと日が暮れます。でも N = 15 での傾向と N = 12 での傾向が大きく異なるということはないでしょうね。
N=15でもまともな時間で計算できる
>>427 があるのに、
>>435 みたいなゴミ貼ってはずかしくないの?
今、日本にいるなら日が暮れているはずだ。夜が明けてしまうの間違いだろう。
>>450 無論悔しいです。当然のことです。
>>451 多分私の環境では N=15 なんぞにすると、夜があけてそれから日が暮れるでしょうww
[1] 授業単元:なし [2] 二つの文字列を入力した際に、diffアルゴリズムであるエディットグラフを使って、最短距離で差分を求め、追加削除すべき要素をプリントアウトしなさい またできる限りコメントで処理内容を示すこと [3] 環境 [3.1] OS:Windows vista [3.2]MS visual studio2010 評価版 [3.3] 言語:C++ [4] 期限:12/14 0:00 [5] その他の制限:なし エディットグラフに関しては曖昧な理解でしかなくコードにする程わかっていません 助けてください
456 :
400 :2010/12/13(月) 06:01:23
>>400 IEだと文字化けしてたのではりなおします…(´・ω・`)
問題1:キーボードから4人の数学、英語、国語の成績(整数)をint型二次元配列に入力。
次の表の形式にして画面に出力するようにする(平均は小数点第二位まで)
A B C D heikin
sugaku 40 100 50 50 60.00
eigo 60 80 100 30 67.50
kokugo 26 25 50 60 40.25
問題2:サイズ2*2の2つの行列A,Bを配列A[2][2],B[2][2]を用いて作り各要素(合計8個)を、
キーボードから入力すると行列の和A+Bの結果を画面に表示するプログラム
問題3:キーボードから入力させた長さの同じ文字列2つを1文字ずつ交互に1つの文字配列に格納し表示する
まだベンチマークやってたんだ(笑) ざっとコードみた感じだと距離計算で絶対値計算は不要だよな(どうせ2乗する) 単純なことだけどループの最深部だから多少の効果は望めそうだ
>>445 >私の環境 PenIII 866MHz では、
未だにこんな古い環境(もう10年以上前)を使っているという事は
◆QZaw55cn4cは新しいマシンも替えないニート
しかも古いPCなので多分30才を過ぎている中年ニートか
下手をすると35才位か?
>>460 うちの会社では367MHzのノート(Fujitu)が
当たり前に動いているけどな。
ただし、FedoraCore5くらいかな。
>>461 パーソナルユーズのOSならその程度で動いて当たり前なんだよな
糞Windows がアホみたいに重いのは新しいCPUを売るための戦略ではと考えていた頃が有りました
>>462 と、コテを外した中年ニート◆QZaw55cn4cが吠えております
◆QZaw55cn4cはコードの効率より自分のちんけなプライドの方を優先するゴミ屑だから こういう問題じゃくそ遅いものしか書けないんだろうな
頭が固くなってきてるんだよ◆QZaw55cn4cは もう引退じゃね?w
>>462 つい最近までPenPro200使ってた
3年前ならC3使ってた
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):地図データ map.dat を読み込み、ディスプレイに表示するプログラムを書きなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:cygwin [3.3] 言語: C++ [4] 期限: 12月14日 [5] その他の制限: 構造体を用いてカーナビゲーションを作る課題です。 map.datの中身は以下のとおりです 1 0.0 0.0 H 2 2 4 0 0 2 -0.6 0.15 D 3 1 3 11 0 3 -0.83 0.0 K 4 2 4 9 10 4 -0.6 -0.38 O 3 1 3 5 0 5 -0.38 -0.68 M 3 4 6 7 0 6 6.0 -0.3 T 1 5 0 0 0 7 -0.18 -1.02 U 2 5 8 0 0 8 -0.84 -1.58 N 3 7 9 18 0 9 -0.9 -0.98 V 2 3 8 0 0 10 -0.98 0.51 R 3 3 11 13 0 11 -0.78 0.3 P 3 2 10 12 0 12 -1.28 0.68 E 2 11 13 0 0 13 -1.32 0.53 I 4 10 12 14 15 14 -1.8 0.98 C 2 13 20 0 0 15 -1.43 -0.15 J 2 13 16 0 0 16 -1.73 -0.26 P 3 15 17 0 0 17 -1.8 -1.43 W 3 16 18 19 0 18 -1.2 -1.73 S 2 8 17 0 0 19 -2.48 -1.2 Z 2 17 20 0 0 20 -2.33 -0.51 B 3 14 16 19 0
>>469 突っ込み待ちなんだろうが、
どこから突っ込んでいいのかすらわからない。
誰か頼む!
>>470 適当な解釈
座標ID
x座標
y座標
シンボル
連結する座標IDの数
連結する座標ID1
連結する座標ID2
連結する座標ID3
連結する座標ID4
これを画面に表示する
>>469 すいません
交差点番号
交差点座標
交差点名称 (一文字)
隣接交差点数
隣接交差点番号
です
>>473 後は【ディスプレイに表示】っていうのが、
Win32APIを使うのか、X Windowなのかがはっきりしないね。
>>473 どちらかはわからないのですが、Crossingを使うように指定がありました
どうせC言語なんてやってても金持ちにはなれんよ お小遣い程度でも稼いだ方がマシかもしれんが
>>476 どうしたんだ?何か嫌なことでもあったのか?
まぁ、元気だせよ。
>>469 これっておかしいよね?
16 -1.73 -0.26 P 3 15 17 0 0
>>478 Pというシンボルだけ、2座標に割り当てられているね。
しかも、リンク数が合わない。
[1] 授業単元:数値計算 [2] ∫_0^π?sinxdxにおいて2m=4とし、 10分割した際の数値積分をシンプソンの公式により求めなさい [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:visual studio 2010 [3.3] 言語:C++ [4] 期限:明日の朝7:00まで [5]お願いします
>>469 すいません、打ち間違えてました。
正しくは
16 -1.73 -0.26 P 3 15 17 20 0
です
どなたかお願いします
ここで質問することかどうかわからなかったのですがここしか思いつかなかったのでもしお答えできる方がいたら返答お願いします。 題:BMPの横幅はなぜ4の倍数でないとならないのか? この問題で2週間悩み続けてて色々と調べてるのですが答えにたどしつけません・・・よろしくお願いします。
>>483 2m=4って何?もう少し詳しく説明して
手持ちの科学技術計算の本を2冊読んだが2mとか出て来ない
>>485 「IBM やマイクロソフトをはじめとする仕様策定者がそういう仕様にした」
としかいいようがありませんが、4 バイト = 32 bit ですから、32 bit のシステムにとって効率がいい、とかその手の可能性があるのかもしれません。
私もよくわかりませんが。
>>487 お返事ありがとうございます。
32bitシステムの関係でしたか・・・ありがとうございます。
他にもわかる方いましたらご意見お待ちしています。
32bitってw
>>485 横幅って、ピクセルのことかな?
だったら、1ピクセルから作れるんじゃないの?
>>490 1ピクセル・・・?
できれば詳しい説明お願いします。
処理を高速化するため。
>>492 画素の最小単位なんだが。
色々調べた結果で、この言葉にぶつからないのが不思議
ググってみれ。その方が勉強になる。
>>494 ピクセルという所にはたどり着いたのですが横の長さが4の場合は4つのピクセルでできているということであってますかね?
ということはBMPを読み込むときは4ピクセルごとの読み込みを行うということですかね・・・
いちいちと質問して申し訳ないです。
4の倍数じゃないとダメなのはピクセルじゃなくてデータサイズ。 「ビットマップ」、「仕様」に加えて「パディング」も入れて検索してみれ
>>496 >題:BMPの横幅はなぜ4の倍数でないとならないのか?
そんな事はない。最小サイズ1x1からBMPが作れる。
パディングで検索してみたところ以前調べたものが出てきました。 これは4の倍数でないとき無理やり4の倍数にあわせるというものですよね? もう何が何だかわからなくなってきましたがもうちょっと頑張ってみようと思います。 最小サイズ1*1の時のサイズは3バイトだと思うんですが何故問題ないのか教えていただけるとありがたいです。
BMPファイルフォーマットと、普通のBMPデータとで話が食い違っているような。
3バイトってどういうこと?24bitのビットマップという設定になってるの?
>>503 説明不足ですみません・・・。
24bitビットマップファイルという設定での質問です。
1ピクセルで3バイトなので4ピクセルで12バイト=4の倍数ってのはわかるんですが
画像の横幅が4の倍数(ピクセルが4の倍数?)でないといけない理由がわからなくて困っています。
>>459 とっても遅ればせながらありがとうございました!!!!!
昔の人がそういう風に仕様を決めたからとしか
>>504 WindowsBMPの仕様が決まったのは20年以上前だけど、その頃のPCは
処理速度が遅かったため、少しでもデータ転送を高速化する必要があった。
当時の最先端のCPU(80386とか)は、4バイト単位でデータを転送する時が
最高速だったので、それに合わせる形で非圧縮のWindowsBMP(DIB)の仕様は
1ラインのデータ長を4の倍数(バイト)とすることに決まった。
例えば24ビットカラーBMPで、水平方向画素数が1ピクセルの場合
画像1ライン当たりの情報は3バイトだけど、これは4の倍数ではない。
そこでダミーの1バイトを後ろに付加して、1ラインのデータ長を4バイト境界に
合せなければいけない。
>>506 >>507 やはりマイクロソフトが決めた仕様ということでFAですかね!
事細かに教えてくださってありがとうございました。
BMPってそもそもWindows標準だからね・・・
codepad復活したな。誰かとんでもないコードでも走らせたのかな。 まさか俺じゃないよね・・・・・・
15にした奴が犯人か?w
>>491 ありがとうございます 講師の板書が汚いので何か勘違いしたかもしれません
助かりました
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
テキストファイルに保存された携帯電話データをコマンド選択により処理する
携帯電話情報管理プログラムを作成せよ
右のテキストファイルを左のように書き換える(昇順ソート)
2 SC-02B docomo 12 118 1 003SH softbank 12 139
3 IS03 au 13 138 → 2 SC-02B docomo 12 118
1 003SH softbank 12 139 3 IS03 au 13 138
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010/12/14 17:00まで
[5] その他の制限:ポインタ、構造体、ファイル操作については学びました
また途中までのファイルはあります、よろしくお願いします
http://codepad.org/MVpUA7oT
int main(void) { system("sort data.txt"); return 0; }
>>516 他のは完成してます
どうもありがとうございました!
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) 引数をとして、複数の文字列を格納した配列、 その文字列数、ある文字列aを与え、 aが複数の文字列を格納した配列中に見つかれば1を返し、 見つからなければ0を返す関数find_string()をつくれ。 ヒント *複数の文字列を格納した配列の例 char x[2][10]={"south","north"}; [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:12月15日 [5] その他の制限: なし よろしくお願いします。
codepad動かね
>>518 #include <stdio.h>
#include <string.h>
int find_string(const char sa[][10],size_t n,const char*a)
{
while( n>0 ) {
if(strcmp(*sa,a)==0) return 1;
--n; ++sa;
}
return 0;
}
int find_string2(const char**sa,size_t n,const char*a)
{
while( (n>0) && *sa ) {
if(strcmp(*sa,a)==0) return 1;
--n; ++sa;
}
return 0;
}
int main(void)
{
char x[2][10]={"south","north"};
const char *s[]={"south","north",0};
printf("find_string:%d\n",find_string(x,2,"east"));
printf("find_string:%d\n",find_string(x,2,"north"));
printf("find_string2:%d\n",find_string2(s,2,"west"));
printf("find_string2:%d\n",find_string2(s,2,"north"));
return 0;
}
>>518 #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
char x[2][10] = {"south", "north"};
int find_string(char x[][10], int string_num, char* find_str)
{
int i,result=0;
char cmd[100], buff[100];
FILE* fp;
for(i=0; i<string_num; i++){
sprintf(cmd, "echo %s | grep %s | cat", x[i], find_str);
fp = popen(cmd, "r");
if(fgets(buff, 100, fp) != NULL){
result = 1;
break;
}
}
pclose(fp);
return result;
}
int main(void)
{
printf("so %s\n", find_string(&x[0], 2, "so") ? "found" : "not found");
printf("aa %s\n", find_string(&x[0], 2, "aa") ? "found" : "not found");
return 0;
}
これは酷い
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) 問題15×5の正方形を表示をするプログラムを、 for 文を 使用して作成しなさい。ただし5は define マクロで NUM として使用すること。 問題2 8個の整数を格納する配列 cc を宣言し、宣言時に{ 1, 2, 3, 4, 5, 6, 7, 8 } で初期化しなさい。 また、これを同じサイズの配列 dd にfor 文を使って逆順にコピーしなさい。 最後に、ccとdd の内容を for 文を使って表示しなさい。 <実行例> cc[0] = 1 dd[0] = 8 cc[1] = 2 dd[1] = 7 問題3 n 個の値を入れた配列を逆順に並べ替えるプログラムを作成しなさい。 (配列の要素は、100個分宣言しておきその先頭のn個を使用してください。) <条件> 配列は1つしか使ってはいけません。 並び替えは、2値の入れ替え操作を行ってください。単なる配列を逆順にコピーするのはNGです。 また n はキーボードから入力します。 また、配列には 1...n のデータを入れておきます。 <実行例> befor : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 after : 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:c [4] 期限:12月15日 [5] その他の制限: なし よろしくお願いします。
>>523 さすがにこれは自分でやった方が良いと思うな
期限が切れてもいいから出せと言われたんかなあ
528 :
523 :2010/12/14(火) 21:21:50
期限は切れてしまったのですが、一応出せば受け付ける と言われたので、どうかよろしくお願いします
1つしか使っちゃいけないのは問題3じゃね?
534 :
デフォルトの名無しさん :2010/12/14(火) 22:04:15
[1] 授業単元:プログラム [2] 問題文:三次元ベクトルx,yの内積を計算するプログラムを作成してください。ただし、Vector.h、Vector.cpp、Vectorクラスのオブジェクトを引数に持つ関数FUNCに分けて作ってください [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:g++ [3.3] 言語: C++ [4] 期限:12月15日 [5] その他の制限:なるべく簡単にしてください。アクセス指定子、public、private、コンストラクタ、デストラクタなどは習いました。
535 :
デフォルトの名無しさん :2010/12/14(火) 22:05:36
[1] 授業単元:プログラム [2] 問題文:addメソッドとsubメソッドを作成してください。 [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:g++ [3.3] 言語: C++ [4] 期限:12月15日 [5] その他の制限:なるべく簡単にしてください。アクセス指定子、public、private、コンストラクタ、デストラクタなどは習いました。
void add(void){ ; } void sub(void){ ; }
あっ面倒くさい 分割コンパイルか これはcodepadではうpできないな
>>538 質問。
こういうコンストラクタの時、
Vector3d a[10];
見たいに、配列取る時はどう書けばいいの?
>>540 その時はデフォルトコンストラクタを書いて、後からアクセサを通して
メンバに代入するようにする
当然constじゃだめだな
どうすっかな Eclipse立ち上げて3分割してzipに固めるか
>>540 Vector3d a[] = {Vector3d(1, 2, 3)};
でいいんじゃない
>>543 そうだな
newと勘違いしてた
配列newはどうにもこうにも融通が利かないね
C#見たいに書ければいいのに
546 :
535 :2010/12/14(火) 23:47:52
547 :
デフォルトの名無しさん :2010/12/14(火) 23:52:44
>>523 #include <stdio.h>
#define PI 3.1415926535898
void calc_circle(double r, double *c, double *a)
{
*c=(r+r)*PI; /* 円周の長さを計算 */
*a=r*r*PI; /* 円の面積を計算 */
}
int main(void)
{
double radius = 3.0, circ, area;
calc_circle(radius, &circ, &area);
printf("半径 = %lf\n", radius);
printf("円周の長さ = %lf\n", circ);
printf("円の面積 = %lf\n", area);
return 0;
}
>>549 文字数文の数を超える数の文字をキーボードから入力してないか?
文字数が10ならびったりの文字数をキーボードから入力汁
10なら許されるのは
#include <
ここまでであとの文字は無効
>>548 明解で良い問題なんだから朝まで考えてみなよ
朝まで考えて君なりの回答を出せば、誤りは正してあげるよ
こんな入り口の問題で人を頼るのは何の意味も無いと思うんだ、この問題だけ解けば単位くれるとか言うなら別だけど
554 :
523 :2010/12/15(水) 00:43:59
>>550 ありがとうございます!
>>552 >この問題だけ解けば単位くれるとか言うなら別だけど
これさえ解けば単位がもらえるという分けではありませんが、
解かなければ単位取得が難しくなってしまいます
jpg部分をテキストで打ち直してくれたら今すぐやってあげるよ
>>523 #include <stdio.h>
/* 文字列に含まれている英字小文字の数を数える関数 */
int count_small(char *str)
{
int cnt=0, i=0;
while (str[i] != '\0')
{
if (str[i] >= 'a' && str[i] <= 'z')
cnt++;
i++;
}
return cnt;
}
int main(void)
{
char *str1 = "AbCDeFg";
char str2[] = "hiJKlmN";
char str3[20] = "OpQrstu";
printf("%s: %d\n", str1, count_small(str1));
printf("%s: %d\n", str2, count_small(str2));
printf("%s: %d\n", str3, count_small(str3));
return 0;
}
>>558 申し訳ありませんでも、それじゃ駄目だろ
>>562 文字列として表示するわけじゃないんだから\0の領域は今回は不要だろ
この頭の固い中年オヤジが
564 :
523 :2010/12/15(水) 01:30:04
他に手がないとか言っといて、p[n]つかってねーじゃねーかよw
文字の読み込みならgetchar()でもscanf("%c",)でもいいだろうに
[1] 授業単元: プログラミング演習U
[2] 問題文(含コード&リンク):
指定した数の文字列をキーボードから入力し、
動的に確保した配列に格納し、配列の内容を画面に出力するプログラムを作成しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 2010年12月17日中
[5] その他:
http://codepad.org/IiP7IEh7 に作ったプログラムがあります
コンパイルは通ったものの、文字列入力後固まってしまうのです
ご指摘よろしくお願いします。
>pt=(char**)calloc(num,sizeof(char)); pt = (char**)calooc(num, sizeof(char*)); >for(i=0;i<num;i++){ > free(p[i]); //pt[i]が指す領域を開放 > free(p); //pが指す領域を開放 > } for(i=0;i<num;i++){ free(p[i]); //pt[i]が指す領域を開放 } free(p); //pが指す領域を開放 いろいろおかしいけど、とりあえず致命的なとこだけ
>>569 早速のご指摘ありがとうございます
言われてみればその通りでして、無事実行できました。
どうもありがとうございました。
すでに解が出ていた上にmatrix_free()内でfree(p)が足りない事に気づいた 吊ってくる
そもそもWindowsなら解放する必要がない
ctype.h が使える場合 int count_small(char *str) { int count = 0; while (*str != '\0') { if (islower(*str)) ++count; ++str; } return count; } 'a'〜'z' の連続性が保証されてなくて ctype.h も strchr も使わない場合 int count_small(char *str) { static const char s[] = "abcdefghijklmnopqrstuvwxyz"; int count = 0; const char *p; while (*str != '\0') { for (p = s; *p != '\0'; ++p) { if (*str == *p) { ++count; break; } } ++str; } return count; }
>>567 改行文字も読み込む。環境によっては n = 5 と入力しながら 3 文字しか入らないことがある。
読み飛ばす工夫すりゃいいだけだろw 問題の指定に背いてサイズ大きくして、文字じゃなくて文字列で読み込むとかアホ過ぎる
>>577 なるほどね。
しかし scanf("%1s", ...) は一文字読み込むときの定石
お前が定石とか言うかw
580 :
デフォルトの名無しさん :2010/12/15(水) 09:24:30
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) 引数をとして、複数の文字列を格納した配列、 その文字列数、ある文字列aを与え、 aが複数の文字列を格納した配列中に見つかれば1を出力し、 見つからなければ0を出力する関数find_string()をつくれ [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:12月15日
int find_string(char x[][10], int string_num, char* find_str) { int i,result=0; char cmd[100], buff[100]; FILE* fp; for(i=0; i<string_num; i++){ sprintf(cmd, "echo %s | grep %s | cat", x[i], find_str); fp = popen(cmd, "r"); if(fgets(buff, 100, fp) != NULL){ result = 1; break; } pclose(fp); } return result; }
583 :
デフォルトの名無しさん :2010/12/15(水) 09:33:32
>>580 です。
上にも同じようなのがあったのですが微妙に違うので・・・
上のものを少し改良すればいいのかもしれませんが初心者なのでわかりませんでした。
>>575 お前どこまでもしつこいやっちゃなー
題意に沿えと言っているんだ
「文字数文の文字をキーボードから入力し」
どこにもバッファオーバーランの対策をしろとは書いてない
getchar()で文字数分ループを回せばオーバーランするはずもない
万事がこの調子であくまでも自分が正しいと思って回りの意見を
ことごとく無視して嫌われてるんだろうな
完全な自己愛性人格障害だな
585 :
547 :2010/12/15(水) 10:01:10
>>547 どなたかお願いします。
いままででた奴だと、アドレスが表示されない・・・
586 :
547 :2010/12/15(水) 10:02:58
>>547 追記で
入力した文字列において、文字を格納されているアドレスを一文字図津確認したいんですが・・・
最後の行は return 0; の方がいいな
589 :
547 :2010/12/15(水) 10:33:41
めっさエラーでたんですががが
エラーメッセージをここに貼り付けて
591 :
547 :2010/12/15(水) 10:48:49
/tmp/ccy6ZYes.o(.text+0x2e): In function `main': : warning: the `gets' function is dangerous and should not be used. 一応実行できますが、アドレスもなにも表示されません。
>>591 それエラーじゃなくてウォーニング(警告)
gets()は危ないから使うなと出ている
だけど宿題だから無視してよい
ちゃんと文字数を数字で入力し、その後文字をその文字数分入れてる?
例えば 文字数 = 5[Enter] abcde[Enter] としてみ
594 :
547 :2010/12/15(水) 10:56:36
なにもでませんね・・・
ちょって待って 俺の所でもgccで走らせてみる
00032C20 : 'a' 00032C21 : 'b' 00032C22 : 'c' 00032C23 : 'd' 00032C24 : 'e' こんなん出ましたけど
597 :
547 :2010/12/15(水) 11:05:01
なぜだ・・・
文字数 = というのは表示される?
>>599 問題文の(*)のところ但し書きがあると思うんだが、抜けてないか?
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) 問題1 10個の要素を持つ配列 data を宣言し、先頭の要素から順番に1〜 10 までの整数を代入した後、表示するプログラムを for 文を 使用して作成せよ。 問題2
配列 va を定義して、 10,20,30,40,50 の値で初期 化し、その内容を表示するプログラムを作成しなさい 。 問題3 配列 va と配列 vb を宣言し、配列 va を 1,2,3,4,5 で 初期化し、その値を配列 vb にコピーした後、表示す るプログラムを作成しなさい。 [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:c [4] 期限:12月16日 [5] その他の制限: なし よろしくお願いします。
>>600 ご指摘ありがとうございます。抜けておりました。
----- ----- ----- ----- -----
(*)例えば、次のようなコードに慣れること。
#include <iostream>
using namespace std;
または、
#include <iostream>
cout << "MyStack object instantiated!"<< endl;
これは、
printf ("%s\n", "MyStack object instantiated!");
と、同じである。
実行結果のみ示しなさい。
606 :
599 :2010/12/15(水) 17:19:03
>>599 の問題文にて一部文章が抜けていたので再投下失礼。
[1] 授業単元:プログラミングとコンパイラ
[2] 問題文(含コード&リンク):
・問題1
C++のサンプルプログラム
http://codepad.org/BAl4ALCV ついて答えなさい。
MyStackクラスのコンストラクタにメッセージ出力(*)を追加して、MyStackオブジェクトが実体化されたことがわかるようにしなさい。
(*)例えば、次のようなコードに慣れること。
#include <iostream>
using namespace std;
または、
#include <iostream>
cout << "MyStack object instantiated!"<< endl; これは、
printf ("%s\n", "MyStack object instantiated!"); と、同じである。
実行結果のみ示しなさい。
・問題2
問題1の結果を、次のスタイルに書き換えなさい。
stack.h:
http://codepad.org/uEkKWS5W (ファイル名はstack.hhでもOK)
stack.cpp:
http://codepad.org/A0gHDv2g (ファイル名はstack.ccでもOK)
main.cpp:
http://codepad.org/j3bzECYU (ファイル名はmain.ccでもOK) ただし、main.cppの中身は自分なりに変えてみること。
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 2010年12月16日08:00まで
607 :
535 :2010/12/15(水) 17:30:02
609 :
535 :2010/12/15(水) 17:50:29
>>608 using namespace std;
って習いました。
あと、文の一番最後に\nをつけるっていうのも習いました。
>>609 じゃあ、#includeの後にusing namespace stdいれて、関数とかの頭にあるstd::は全部取っちゃって
611 :
デフォルトの名無しさん :2010/12/15(水) 18:07:30
612 :
535 :2010/12/15(水) 18:31:12
613 :
535 :2010/12/15(水) 18:35:23
>>610 friendとかInnerVector3dって何でしょうか
http://codepad.org/cmk80jWl http://codepad.org/6COq3c53 この2つの文字化け部分がだいたいどのようなことを書いているかわかりませんか?
もともとの課題はこういうものでした。
1.例10.2 の2 を参考にして、以下のようなカレンダープログラムmycalを作成せよ。
◦引数なしで実行されると、今月のカレンダーを出力する
◦引数1個で実行されると、その引数を月とみなし、その年のその月のカレンダーを出力する
◦引数2個で実行されると、第一引数を月、第二引数を年とみなしてカレンダーを出力する。
2.例12.6 の2 に、練習問題12.6 の3 の変更を加え、さらに同様にしてべき乗(関数名power())も計算できるようにせよ。
>>584 >どこにもバッファオーバーランの対策をしろとは書いてない
上流仕様書マンセー乙
>>613 InnerVector3dは中身りゃわかると思うけど内積だろ
出題の通りに直せばいんじゃね?
この場合のfriendはメンバ関数じゃない関数でクラス内部の非公開メンバにアクセスする指定
>>616 元ソースをzipかなんかに圧縮して、どっかのローダに上げてくれんかの。
>>621 それ僕です。笑
課題2がわからない><
>>620 jpeg上げてどうするよ。
もういいから取りあえずサクラエディタとか入れて見てみれば?
>>622 問題の題意とプログラムから printf に書かれている内容を想像するんだ!
(`・ω・´) シャキーン
>>616 取りあえず一番目の2行目はここまでは再現できた。
- 引数なしで実行さ
eucをsjisで開いてるみたい。
サクラエディタ入れてeucで開きなおすと読めんじゃないかな。
[1] 授業単元: プログラミング言語 [2] 問題文: hドライブのogawaフォルダ配下のkyuuyo.datからデータを入力し、 そのデータを金額とした時の金種の一覧を表示するプログラムを 作成せよ。 但し、kyuuyo.datファイルはint型の複数データが格納されたバイナリファイルとする。 実行例 No| 給与 |一万円|五千円|千 円 |五百円|百 円 |五十円|十 円 |五 円|一 円| --|---------------------------------------------------------------------------- 1 | 419377 | 41| 1| 4| 0| 3| 1| 2| 1| 2| 2 | ・ 3 | ・ 4 | ・ 5 | ・ 6 | ・ 7 | ・ 8 | ・ --|---------------------------------------------------------------------------- |合計 | 737| 15| 49| 8| 42| 10| 32| 8| 49| [3] 環境 [3.1] Windows XP [3.2] visual stdio2005 [3.3] 言語: C++ [4] 期限: [2010年12月16日13:00まで] [5] その他の制限: マス目付、#include <stdio.h>はじめでお願いしますm(_ _)m
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
次のコードのMRand()は31ビットのM系列乱数を生成する関数である。
http://codepad.org/rxOLtNr0 この乱数列を様々な角度から検証して、この乱数列の問題点を見出し、
問題点の内容を提出せよ。
可能であればその解決方法も合わせて提出せよ。
[3] 環境
[3.1] OS: windows,linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
629 :
デフォルトの名無しさん :2010/12/15(水) 21:43:00
630 :
535 :2010/12/15(水) 22:17:39
内容: [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):正弦関数y=sinφのグラフを文字列■で描きなさい(31行程で)。グラフは一周期分で真ん中をy軸をlで区切ること。 [3] 環境 [3.1] OS: WindowsXP [3.2] Visual C [3.3] 言語: C [4] 期限: [2010年12月16日09:00まで] よろしくお願いします
632 :
デフォルトの名無しさん :2010/12/15(水) 22:56:00
内容: [1] 授業単元:画像処理プログラミング [2] 問題文(含コード&リンク):任意の画像をRGB空間からからHSV空間に変換し 色彩、彩度、明度の値を表示すプログラムを作成しなさい [3.1] OS: linux [3.2] gcc [3.3] 言語: C言語 [4] 期限: [2010年12月17日12:00まで よろしくお願いします
>>633 ありがとうございます。
確認してみた所、■は絶対だそうなので
お手数お掛けして申し訳ありませんが、■でお願いしたいです。
637 :
633 :2010/12/15(水) 23:58:18
>>635 ・画像の形式は何?
・全ての画素について、HSVの数値を計算するの?
・計算で得られたHSVの数値は、どのように画面表示されればよい?
>>639 問題文がこのような感じで書かれていて
画像の形式なども指定されてませんすいません
数値はターミナル上に表示できればいいと思います
わからない事だらけですいません
643 :
デフォルトの名無しさん :2010/12/16(木) 12:45:43
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 正弦関数y=sinφのグラフを文字列■で描きなさい。数値yに対応する■の数はウインドウ各行に表示しきれる範囲内で任意に定めてよい。グラフは一周期でy軸をlで区切りなさい [3] 環境 [3.1] OS:WindowsXP [3.2] VC [3.3] 言語: C++ [4] 期限: 12月16日17:00まで [5] その他の制限: #include "stdafx.h" #include <stdio.h> #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double y[100]; int i, j, k; for(i = 0; i < 62; i++){ y[i] = 10 * sin(0.1 * i); } for(i = 0; i < 31; i++){ for(k = 0; k < 10; k++){ printf(" "); } printf("l"); for(j = 0; j < y[i]; j++){ printf("■"); } printf("\n"); } この続きからお願いします
>>644 それは考えたんだけど、atan() の立場が無くなるので....
atan() は mathlib じゃないって事はないだろ?
650 :
デフォルトの名無しさん :2010/12/16(木) 16:02:01
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://ideone.com/fQdK2 [3] 環境
[3.1] OS:macosx
[3.2] gcc
[3.3] 言語: C
[4] 期限: 12月20日
[5] 動作はするのですが、優先度付きキューを導入した理由、メリット、aスター探索内の意味がいまいち理解できないので説明してもらえないでしょうか
お願いします
651 :
デフォルトの名無しさん :2010/12/16(木) 19:55:07
[1] 授業単元: プログラミング [2] 問題文: 配列によるスタックを実現する。出来るだけ簡単なアルゴリズムで ポップとプッシュの操作が可能なプログラムを作れ。正し配列は100要素 程度とする。 [3] 環境 [3.1] OS:Unix Windows [3.2] gcc [3.3] 言語: C [4]期限: 12月17日 [5]:よろしくお願いします。できるだけ簡単にお願いします。
653 :
デフォルトの名無しさん :2010/12/16(木) 20:17:12
654 :
デフォルトの名無しさん :2010/12/17(金) 00:39:47
[1] 授業単元: プログラミング言語演習 [2] 問題文(含コード&リンク):ランダムな整数列を生成し、次の直接基数ソート プログラムにより並べ替えるプログラムを作れ 直接基数プログラム int i, j, pass, count[256]; for(pass = 0; pass < 4; pass++){ for(j = 0;j < 256;j++) count[j] = 0; for(i = 1;i <= n; i++) count[bits(a[i],pass*8,8)]++; for(j = 1;j < 256;j++) count[j] = count[j-1] + count[j]; for(i = n; i >= 1;i--) b[count[bits(a[i],pass*8,8)]--] = a[i]; for(i = 1; i <= n; i++) a[i] = b[i]; } [3] 環境 [3.1] unix [3.2] gcc [3.3] 言語: どちらでもよい [4] 期限: 12月22日 [5] mainの中身もお願いします。 直接基数ソートとはランダムに出た数字を二進数に直し、順番に並び変える プログラムです。
>>656 655ですが、glibw32.hはそちらで間違いないです。
お手数かとは思いますが、for文の中の・・・・だけでも、どうかよろしくお願いします。
658 :
654 :2010/12/17(金) 03:39:51
>>656 bitsとはたとえばbits([ai],b,1)のときは、配列a[i]のbビット目から
1ビット、という意味です。
できたら書いている直接基数ソートを使ってくれたらうれしいんですが、
必ず使う必要はないです。
[1] 授業単元:アルゴリズムとデータ構造 [2] 問題文(含コード&リンク): クイックソートにより異なる15個の要素を配列するとき、比較回数の最小値と最大値求め、 そのときに与えた要素をそれぞれ答えなさい。 たとえば1、2、3、、、、15を与えると、105回となる。といったかんじです。 プログラムの提出はないです。 [4] 期限: 2010年12月17日13:00まで。
ギリギリで質問かいw
663 :
654 :2010/12/17(金) 09:11:01
[1] 授業単元: プログラミング言語演習 [2] 問題文(含コード&リンク):直接基数ソートプログラムで、配列aとbの役割を 交互に替える(コピーをしない)プログラムを作れ。 [3] 環境 [3.1] unix [3.2] gcc [3.3] 言語: どちらでもよい [4] 期限: 12月22日 [5] mainの中身もお願いします。
>>659 同じ要素でもピボットの選び方で比較回数は変わると思うんだけど、指定はない?
>>664 ピボット選択アルゴリズムの中の比較回数を別記するとか?
ウチの大学の課題より難しそうなのに皆すげえわ プログラミングが苦手でどうしてもできそうにないので大学辞めます 情報工学ともおさらばです
人生に一度きりの最強カードの新卒を捨てるなんてとんでもない
670 :
デフォルトの名無しさん :2010/12/17(金) 11:11:25
[1]授業単元:プログラミング演習T [2]問題文 料理のデータベースを作成し、複数のデータの中からカロリーが最大と最小の料理の全データを出力するプログラムを作成せよ [3] [3.1]Windows [3.2]Visual Studio 2010 [3.3]C [4]12/20 [5]各料理のデータは「番号、名前、カロリー」 料理とカロリーの値は適当でも可(ラーメン 10kcalとか) よろしくお願いします
>>670 データ構造の指定は無し?
struct dish[10] {
int id;
int name;
int cal;
}
みたいなのでもいいのかい
[1] C++ [2] ・マウスを使って描画する ・BMP画像を表示する ・マウスで描画した部分だけ表示する [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: どちらでも可 [4] 期限: 無期限 [5] その他の制限:VC++6.0を使ってます。 問題の上二つまでは出来てます。
ttp://ist.ksc.kwansei.ac.jp/~ibaraki/algo.htmlの 4.整列のアルゴリズムの
第p要素を選ぶSELECTとデータファイルselectdataを
それぞれプログラムソースselect.cとデータファイルselectdata.datとして同じユーザーディレクトリ
に保存して、cygwin上でコンパイル(gcc select.c)してもエラーは出ないですが、実行(a.exe)
とすると
6[main]a 4656_cygtls::handle_exceptionx:Error while dumping state(probably corrupted stack)
Segmentation fault (core dumped)
となります。
どうしたらいいでしょうか?
>>650 前の回答者だが問題変わってねえか?
ヒューリスティック関数を使ってるみたいだけど
前回提示した優先度付きキューは基本的に循環キューだからそのままでは使えないよ
ちなみに前回書いたやつは
開始ノードを優先度「0」でキューに追加
*begin
node←キューから優先度の最も高い(数値の小さい)ものを取り出す
nodeに接続しているノードを探して優先度「nodeの優先度+1」でキューに追加
終了ノードに達するまで*beginから繰り返す
だったと思う
[1] 授業単元:ディジタル回路(プログラミング演習) [2] 問題文(含コード&リンク):下記 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwinのgcc [3.3] 言語: c言語 [4] 期限: 12月20日17:00まで [5] その他の制限: <基礎課題> 4変数の論理式からカルノーマップと簡略化した論理式を作成しなさい. 入力の論理式は文字列の配列とし, const char* IN[] = {"Bcd", "Abcd", "aBc", "aB", "abC"}; // グローバル変数 ならば, Bcd + Abcd + aBc + aB + abC (小文字は大文字の否定を表す) の論理式のカルノーマップと簡略化した論理式 Acd + aB + aC を表示する. カルノーマップは表示方法を工夫しなさい. <発展課題> 本講義では触れていないが,クワイン・マクラスキー法というものもある. どのようなものか各自で調査し,同様にプログラムを作成しなさい. という課題です。 よろしくお願いします
677 :
デフォルトの名無しさん :2010/12/17(金) 18:28:07
改行多すぎて表示されてないように見えるだけじゃね?
大文字入力か小文字入力か選択させて、選択した通りに変換して出力するプログラム
http://codepad.org/4WVt2eoI 起動しますが、↓のようになってしまいます。
文字数を入力:3
小文字変換は's',大文字変換は'd'と入力:1番目の文字を入力:s
2番目の文字を入力:3番目の文字を入力:
どなたか教えてくださいまし!
>>682 scanf( "%d", &n ); に対して 3\n を入力すると、n に 3 が代入されるけど、stdin のバッファには \n が残ってる
その後に scanf( "%c", &moji ) を実行するとバッファの \n がmoji に代入されるから入力を待たずに復帰する
> 小文字変換は's',大文字変換は'd'と入力:1番目の文字を入力:s
この行はこれで説明が付くけど
> 2番目の文字を入力:3番目の文字を入力
こうはならない気がする
scanf は癖が有るので対話的入力を行うなら fgets() で一旦文字列として受け取ってから sscanf() で必要な項目を
抽出した方が良いと思うよ
char tmp[128];
fgets( tmp, 128, stdin );
sscanf( tmp, "%d", &n );
みたいな感じで
蛇足だけど scanf("%s",&str[i]); ではなく scanf( "%c", &str[i] ) じゃないかな、%s だとバッファオーバーランの可能性が生じる
>>685 ありがとうございます。
ただ、何故か大文字変換ができません。↓のように出力されます(小文字はできます)。
文字数を入力:2
小文字変換は's',大文字変換は'd'と入力:d
1番目の文字を入力:d
2番目の文字を入力:s
文字列:ss
変換後:SS
>>686 なぜssになるんだ?bcc だとちゃんと ds -> DS になるよ
張ったコードを確認しようにも codepad が開かない、ハテ?
codepadにわざと重いコードを山ほど貼り付けてフリーズさせてるアホがいるんじゃね?
ガラパゴスの黄色いサルへ 自分たちで黄色いサル用のcodepad作ってください
691 :
デフォルトの名無しさん :2010/12/18(土) 11:28:16
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):キーボードからいくつかの浮動小数点を読み込み、そのうち正の数値だけの 合計を求めて表示するプログラムを作りなさい。数値の個数は事前には分からないものと し、0が入力されたら、合計すべき数値が尽きたものとする。 [3] 環境 [3.1] OS: MAC OS X [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 12月20日 [5] その他の制限: ifとforを使ってください、よろしくお願いします
#include <stdio.h> int main(void) { double d, sum = 0.0; printf("正の数値を入力して下さい。\n"); for (; scanf("%lf", &d) != EOF; ) { if (d == 0.0) { break; } else if (d > 0.0) { sum += d; } } printf("sum: %f\n", sum); return 0; }
>>680 double型の変数をループカウンタに使うなカス
>>692 forがifとしてしか機能してないけどいいのか
題意的な意味で
>>691 #include <stdio.h>
int main(void)
{
double indata, total=0.0;
for(; printf("INPUT(end:0) > "), scanf("%lf", &indata) != EOF; )
if(indata == 0.0) break;
if(indata > 0.0) total += indata;
printf("TOTAL = %g\n", total);
}
>>691 #include <stdio.h>
int main(void)
{
double indata, total=0.0;
printf("INPUT(end:0) > ");
for(; scanf("%lf", &indata) != EOF & indata != 0.0; )
if(indata > 0.0) total += indata;
printf("TOTAL = %g\n", total);
}
for()の{}消したの忘れてた!
double に対して == 判定を行うのは良い習慣ではないので改めた方が良い
この場合には当てはまらないだろw
習慣になってると嵌る事が有るって話
ぷw
誰も==でなんて比較してなくね?
問題も読まずに脊髄反射で書き込んだ
>>699 がアホ
706 :
デフォルトの名無しさん :2010/12/18(土) 16:06:13
707 :
デフォルトの名無しさん :2010/12/18(土) 21:34:25
[1] 授業単元: プログラミング言語演習 [2] 問題文(含コード&リンク):直接基数ソートプログラムで、配列aとbの役割を 交互に替える(コピーをしない)プログラムを作れ。 直接基数プログラム int i, j, pass, count[256]; for(pass = 0; pass < 4; pass++){ for(j = 0;j < 256;j++) count[j] = 0; for(i = 1;i <= n; i++) count[bits(a[i],pass*8,8)]++; for(j = 1;j < 256;j++) count[j] = count[j-1] + count[j]; for(i = n; i >= 1;i--) b[count[bits(a[i],pass*8,8)]--] = a[i]; for(i = 1; i <= n; i++) a[i] = b[i]; } [3] 環境 [3.1] unix [3.2] gcc [3.3] 言語: どちらでもよい [4] 期限: 12月22日 [5] mainの中身もお願いします。
>>707 aとbが指す先の領域のサイズを明確にして。
bitsはこんな感じか?
#define bits(value, byte, bit) ((value >> byte) & ((1 << bit) - 1))
つーか、そもそもソートできてなくない?
aとbをポインタで宣言して、それぞれ別々の配列を指すようにして、アドレス値を入れ替えちゃ駄目?
- for(i = 1; i <= n; i++)
- a[i] = b[i];
+ do { int *t = a; b = a; a = t; } while (0)
>>699 value < epsilonにしろってことかな。
どっちかというとindataと0.0がちゃんと同じbit数同士の比較になってるのかどうかが気になる。
710 :
707 :2010/12/19(日) 00:33:12
>>708 一応役割を変えないパターンが662です
>>710 先頭に入るゴミは何だコンチクショー。
見なかったことにする。
@@ -30,9 +30,10 @@ void main(void) {
}
//直接基数ソート
-void radix_sort(int a[], int b[], int n) {
+void radix_sort(int aa[], int bb[], int n) {
//この中はいじってない
int i, j, pass, count[256];
+ int *a = aa, *b = bb, *t;
for(pass = 0; pass < 4; pass++){
for(j = 0;j < 256;j++)
@@ -43,8 +44,9 @@ void radix_sort(int a[], int b[], int n)
count[j] = count[j-1] + count[j];
for(i = n; i >= 1;i--)
b[count[bits(a[i],pass*8,8)]--] = a[i];
- for(i = 1; i <= n; i++)
- a[i] = b[i];
+ t = a;
+ a = b;
+ b = t;
}
}
[1] 授業単元:プログラミングとアルゴリズム
[2] 問題文(含コード&リンク):以下の課題をBinary search 関数の再帰呼び出しで実現しなさい。
0 から100 までの範囲で整数の乱数を1000 個発生させ、Bubble sort 関数で整列させた後、ターゲット整数を再帰で検索するBinary search 関数を作って下のプログラム(rbinsearch.c) を完成させなさい。
[3] 環境
[3.1] OS: Windows 7
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:月曜日正午
[5] その他の制限:特になし
以下がソースコードで、「ここを作る」の部分を作成して頂きたいです!
http://codepad.org/PMNoJqAZ
[1] 授業単元:cプログラミング1 [2] 問題文(含コード&リンク): 問題1、三角形の面積を求めるプログラムまではできたのですが ↓このプログラムを負の値が入力されるまで繰り返すようにしたいのですがどうすればいいですか? #include <stdio.h> double get_area( int hankei); int main(void) { double hankei,area; printf ("半径"); scanf ("%lf",&hankei); area = get_area(hankei); printf ("面積=%lf\n",area); return 0; } double get_area( int hankei) { double area; area = hankei * hankei * 3.14; return area; } 問題2:実数を引数として値が0以上の場合には小数第一位を四捨五入した値を、負の場合には-1を整数型で 返す関数proud()を作成し動作の確認をする。 問題3:実数xを引数とし、数列an=1/n!(n=0,・・・9)を係数にもつ多項式f(x)=a0 + a1x + ・・・a8x^8 + a9x^9 の値を計算して返す関数をforループを用い作成しmain文の中から呼び出し動作を確認する。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限:12/19 よろしくお願いします。
残り24時間なのでどなた様か
>>676 をお願いします
>>714 #include <stdio.h>
double get_area( int hankei);
>>714 問題1
int main(void)
{
double hankei,area;
while(1) { //追加
printf ("半径");
scanf ("%lf",&hankei);
if(hankei < 0.0) break; //追加
area = get_area(hankei);
printf ("面積=%lf\n",area);
} //追加
return 0;
}
double get_area( int hankei)
{
double area;
area = hankei * hankei * 3.14;
return area;
}
>>714 問題2
int proud(double x) {return x < 0.0 ? -1 : x + 0.5;}
>>654 ,707
同じ講義受けてるわ・・・
>>656 ,708
マクロ関数は
#define bits(p,q,t) (p>>q)&~(~0<<t) です
>>654 のソートが
count[j]=0; の初期化以降どうゆうことをしてるのかよく分からないので
解説していただけるとありがたいのですが
firefox3.6のbockmark形式の a.html、b.htmlを マージして c.html として出力するプログラムを誰か書いてください。 例; <a.html> <link>ホームページA <link>ホームページB <link>ホームページC <b.html> <link>ホームページA <link>ホームページY <link>ホームページZ <diff.html> <link>ホームページY <link>ホームページZ <c.html> <link>ホームページA <link>ホームページB <link>ホームページC <link>ホームページY <link>ホームページZ a.html と b.html の差分 diff.html a.html に diff.html を追加し c.html
>>721 その例の謎MLはなんなんだよwwwww
diff.htmlは一般に言われる差分ではなく、追加されたものだけ出せばいいのかな。 にしてもこんな形式で保存されてるとはしらなんだ。
bookmarkのtypoだろうと思い込んでた自分が恥ずかしいです。 まるで形式が違うから別の話だな。。。
形式全然知らないけど
>>721 の通りで
行単位でのマージならそんなに難しくないんじゃないか
726 :
デフォルトの名無しさん :2010/12/20(月) 13:05:17
[1] 授業単元:プログラミング [2] 問題文 #include <stdio.h> #include <stdlib.h>intmain( int argc, char *argv[] ){double v1, v2, v;char op;if( argc != 4 ) /* パラメータの数が正しくない */ {/* コマンドラインの書き方を表示する */ printf( "使い方 : 実数1 演算記号 実数2\n" ); printf( "\t演算記号は+, -, *, /,%のうちのいずれか\n" ); return( 1 );} v1 = atof( argv[1] ); /* 実数1 */ v2 = atof( argv[3] ); /* 実数2 */op = *argv[2]; /* 演算記号 */ switch( op ) /* switch文を用いた場合分け*/{case '+' :v = v1 + v2;break;case '-' : v = v1- v2;break; case '*' :v = v1 * v2;break;case '/': v = v1 / v2;break;case '%' :v =( v1 /v2 )* 100; break;default:printf( "%c: ?\n", op ); return( -1 ); break; } printf( "%f %c %f = %f\n", v1, op, v2, v ); /* 結果の表示 */ return( 0 ); } このプログラミングを改造 1.コマンドラインパラメータを用いずに、入出力で電卓を作る。 [3] 環境 [3.1] OS: Windows 7 [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C++ [4] 期限:12月20日 [5] その他の制限:特になし
728 :
デフォルトの名無しさん :2010/12/20(月) 14:06:05
730 :
デフォルトの名無しさん :2010/12/20(月) 18:12:08
733 :
729 :2010/12/20(月) 18:57:57
>>732 リテラル問題を解決すればstrtok使えるところだと思う。
strchrしてnullいれてるとこ。
と、書いたものの、これでいいんじゃないかな。 p = strchr( s, ' ' ); strncpy( person.name, s, p-s-1 ); person.name[p-s] = 0x00; p++; sscanf(
ああ、scanfでスペース以外って指定できたんだっけ。 たしかにそうすれば%sでいいかも。
こうか。
>>736 に感謝。
{
static PERSON person;
sscanf( s, "%[^ ] %c %d %lf %lf", person.name, &person.gender, &person.age, &person.height, &person.weight );
calc_bmi( person.height, person.weight, &person.bmi, &person.judge );
return person;
}
bccでも -dc オプションを付けると文字列リテラルが書きこみ禁止になるよ 俺はいつもそうしてる
741 :
めぐ :2010/12/21(火) 11:24:21
[1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク):ポインタ配列を利用して、10個の単語を単語帳に。登録しておき、任意にいれた単語が、単語帳の中にあるかどうかチェックするプログラムを作成せよ。 [3] 環境 [3.1] [3.2] gcc [3.3] 言語:C [4] 期限:2010年12月22日 [5] その他の制限:なし
void main() (笑)
またその話題か
たぶん前に突っ込まれて顔を真っ赤にしちゃった人が今度は得意げに突っ込んでるんだよ
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) 問題1 非負の整数値を読み込んで、その数を逆順に表示するプログラムを作成しなさい(while文または for文) [オプション機能(任意)] 負の数を読み込んだ場合は再入力を促すこと(do-while文) <実行例> 非負の整数値を入力してください;-4673 負の値を入力しないでください。 非負の整数値を入力してください;12345 逆から読むと54321です。 <ヒント> 一の位の数字を求める方法 1963 % 10 -> 3 196 % 10 -> 6 19 % 10 -> 9 1 % 10 -> 1 問題2 30個目までのフィボナッチ数を順に計算し、その結果を順に配列 fib に格納しなさい。 また計算終了後に、 a_1, a_2, a_16, a_25 に相当する結果を表示しなさい。 <実行例> a_01 = 1 a_02 = 1 a_16 = 987 a_25 = 75025 [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:c [4] 期限:12月22日 [5] その他の制限: なし
[1] 授業単元:ファイヤーフォックス [2] 問題文:ブックマークA,Bを合体してCにしろ。そういう処理のやつを書きなさい。 [3] 環境 [3.1] OS:リナックス [3.2] コンパイラ名とバージョン: ジイシイシイ [3.3] 言語:シイ言語 [4] 期限:12月22日 [5] その他の制限: うごけば何でもいい
しろだと?なんでそんなに高飛車に命令口調なんだ?
恣意言語
火狐だけで半年授業ができることのほうが驚きだ
752 :
デフォルトの名無しさん :2010/12/21(火) 23:36:36
> このプログラムと同じような出力が得られるプログラムを作成せよ。 なんだこれ。
>>749 百個くらいあるときは、わかんなくなっちゃうんだよ・・・
>>755 たった100個ならそれこそ手動が楽でいいよ。
出来ないのはエディタになれてないとかそういうレベル。
>>755 STL使ってもいいならやってもいいけどCのみじゃちょっとやる気が起きない
フォルダの階層構造が深くなっていったらどうするんだとか
色々考えていくと自前で全部作るのはメンドくさすぎる
てか、これ宿題じゃないだろ
759 :
755 :2010/12/22(水) 03:40:23
はい、すみません。ほんとうは宿題じゃなくて、ほしかっただけです。ごめんなさい。 もしかして、こういうプログラムって難しいほうなの?なにげに
いや?HTMLのマージすればいいんでしょ。形式も決まってるし難しくはない。練習にはいいと思うよ。 ただ、手でやったらすぐすむよと。 毎日毎日その作業をやるならプログラム書くけど、マってのはそういう人種。
761 :
755 :2010/12/22(水) 04:01:37
わかった、簡単なら自分で書いて練習してみる
Cだとそもそものところでめんどくさいから、phpとかの方がいいんじゃないか?
>>747 ブックマークのサンプルとかないの?
っていうか現物をアップしてくれ
>>752 マスターならプログラミングぐらいマスターしろよw
html弄るなら、E4XサポートしてるスタンドアロンのSpiderMonkeyが最適かつ最強。
766 :
デフォルトの名無しさん :2010/12/22(水) 16:25:29
767 :
デフォルトの名無しさん :2010/12/22(水) 17:24:35
これだからゆとりは
茨城大学工学部情報工学科か・・・
>>766 エントロピーゲインがどこで働くのかわからないな。
米倉さん元気ですかね。
771 :
デフォルトの名無しさん :2010/12/22(水) 20:01:55
>>769 エントロピーゲインが大きい属性に注目して、
その属性でデータを分類します。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
例題11-1において、A~Dの学生それぞれに対し
第1回~第3回の小テストの平均点を求めるプログラムを作れ
なおA~Dそれぞれの平均点は、配列の宣言と生成double a[4]をしてから
この配列のa[0]から順に代入するようにせよ
[3] 環境
[3.1] OS: windows 7
[3.2] gcc
[3.3] 言語:C
[4] 期限: 12/23
[5] その他の制限:
上記の例題11-1は
4人の学生A,B,C,Dの3回のテストの点数が表のようになっている
表中の12個の点数の平均を求めよ
A 45 50 60
B 75 95 45
C 100 90 95
D 60 70 80
という問題です。
また例題11-1の回答は下記のURLのようになり
回答もこのレベルのものに合わせてもらえると幸いです
whileやbreak?は習っていません
http://codepad.org/Frb50Xcg
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
例題11-1において、第1回~第3回のそれぞれの小テストにおいて
4人の学生の平均点を出力するプログラムを作れ
なお第1回~第3回のそれぞれの平均点は配列の宣言と生成double b[3]とし
この配列に代入するプログラムとせよ
[3] 環境
[3.1] OS: windows 7
[3.2] gcc
[3.3] 言語:C
[4] 期限: 12/23
[5] その他の制限:
細かい事は
>>722 の[5]と同じです
レベルを合わせていただけると助かります
よろしくお願いします
×
>>722 ○
>>773 なお
>>772 の答えは
a[0]=51.666668
a[1]=71.666664
a[2]=95.0
a[3]=70.0
>>773 の答えは
b[0]=70.0
b[1]=76.25
b[2]=70.0
になるようです
778 :
デフォルトの名無しさん :2010/12/23(木) 15:52:06
1] 授業単元:Cプロ実習 [2] 問題文(含コード&リンク): 2つの4×4行列を2次元配列に格納し、それらの積を求めるプログラムを作成せよ。 以下の関数を必ず利用すること。 関数の引数の型では1次元目が空白になっているが、 main関数では4×4の通常の2次元配列を用いればよい。 [3] 環境 [3.1] OS:Windows7 [3.2] gcc [3.3] 言語: C [4] 期限: 2010年12月24日09:00まで [5] その他の制限:void mult_array(int(*a0)[][4], int(*a1)[][4], int(*result)[][4]) a0,a1 入力された行列の値が格納された2次元配列のポインタ result 演算結果の行列の値が格納された2次元配列のポインタ 戻り値 なし ●入力に関して キーボードからまず、1つめの行列の1行目の4つの整数を スペース1つをあけて1行で入力し、改行する。 以下同様に1つめの行列の2行目、3行目、4行目、 2つめの行列の1・・・4行目を入力する。 この一連の入力時、入力を促す文字などは決して表示しないこと。 ●出力に関して 1行目に結果の行列の1行目をスペースを1つあけて特に整形せず数値のみ出力(+改行)。 以下同様に2行目、3行目、4行目を特に整形せず数値のみ出力する。 指定した数値・改行以外の文字などの出力は一切行わないこと。
779 :
デフォルトの名無しさん :2010/12/23(木) 16:07:09
すみません出来たら回答はリンク先で示さずに、直接書いてください;;
>>778 #include <stdio.h>
void mult_array(int (*a0)[][4], int (*a1)[][4], int (*result)[][4]);
#define N 4
#define COL 128
int main(void)
{
int i;
int a[N][N], b[N][N], c[N][N] = {{0}};
char buf[COL];
/* a[][]の入力 */
for (i = 0; i < N; i++) {
fgets(buf, COL, stdin);
sscanf(buf, "%d %d %d %d", &a[i][0], &a[i][1], &a[i][2], &a[i][3]);
}
/* b[][]の入力 */
for (i = 0; i < N; i++) {
fgets(buf, COL, stdin);
sscanf(buf, "%d %d %d %d", &b[i][0], &b[i][1], &b[i][2], &b[i][3]);
}
mult_array(&a, &b, &c);
/* c[][]の出力 */
printf("\n");
for (i = 0; i < N; i++)
printf("%d %d %d %d\n", c[i][0], c[i][1], c[i][2], c[i][3]);
return 0;
}
>>778 続き
void mult_array(int (*a0)[][4], int (*a1)[][4], int (*result)[][4])
{
int i, j, k, s;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++) {
s = 0;
for (k = 0; k < N; k++)
s += (*a0)[i][k] * (*a1)[k][j];
(*result)[i][j] = s;
}
}
>>766 ※VCで作ってみた。gccで動くかどうかは?
http://ideone.com/5TUCi ※datafile.txtの中身
0 0 0 0 1
0 0 0 0 0
1 1 0 0 1
1 2 1 0 1
1 2 2 1 1
0 2 2 1 0
1 1 2 1 0
0 0 1 0 1
1 0 2 1 1
1 2 1 1 1
1 0 1 1 0
1 1 1 0 0
1 1 0 1 1
0 2 1 0 0
783 :
デフォルトの名無しさん :2010/12/23(木) 17:19:55
>>782 Study C Version 2.20a for windows 7/Vista/XP
で動くようにしたらどうなりますか?
厚かましくてすみません;;
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 2*3行列 X と3*4行列Yの積X・Yを計算、出力するプログラムを作成せよ ただし、行列の要素は全て整数であると仮定する (要素は標準入力で与える) ヒント 行列の計算は3重ループ 行列の積が定義できないときはエラーを出力して終わる [3] 環境 [3.1] OS:Windows7 [3.2] gcc [3.3] 言語: C [4] 期限 : 12月25日 [5] その他の制限 まだ習い始めたばかりなので出来るだけ簡単な文書いてもらえると助かります よく使う文はfor,ifくらいでwhileは習っていません
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 2*2行列 X の逆行列を計算し、出力するプログラムを作れ (公式を使って構わない) ただし、行列 X の要素は全て浮動小数点型であるとする 要素の値は標準入力で与える ヒント 逆行列が定義できないときはエラーを出力して終わる [3] 環境 [3.1] OS:Windows7 [3.2] gcc [3.3] 言語: C [4] 期限 : 12月25日 [5] その他の制限 まだ習い始めたばかりなので出来るだけ簡単な文書いてもらえると助かります よく使う文はfor,ifくらいでwhileは習っていません
【質問テンプレ】 [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 2画像A,Bを表示してその差分のみを表示するCを表示せよ [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VC 6.0等 [3.3] 言語:どちらでも可) [4] 期限: 2010年12月27日(17時迄)
>>786 画像 A, B の差分の画像 C を生成する、ということでいいですか?
あと画像のフォーマットは 24bit bmp / 8bit (256色) bmp でいいですか?
はい、大丈夫です。よろしくお願いします
>>783 Study Cって初めて聞いた。最近の大学はこんなの使ってるのか・・・。
適当にググってインスコしてみたが
(1)まず適当なフォルダを作成する。(C:\test とか適当に)
(2)その中に C言語のソース(名前はmain.cとか適当に)を保存する。
(3)datafile.txtを作成して、C言語のソースと同じ場所に保存する。
(4)StudyCを起動すると、コマンドプロンプトに似た画面が開く
(5)コマンドプロンプトでcd コマンドを使い、カレントディレクトリを (1)で作成したフォルダにする。
※cd c:\test みたいな感じで入力する。
(6)メニュー(ファイル/開く/新しいバッファ)を選び、(2)で保存したC言語のファイルを選ぶ。
(7)メニュー(実行/実行)を選ぶ。
(8)コマンド引数を指定しろ、とか言われるので datafile.txt と入力してOKボタン
カレントディレクトリを動かさないでやる方法もあるけど、とりあえずこんな感じ
790 :
デフォルトの名無しさん :2010/12/23(木) 18:56:57
というかgcccと指定しておいてそれはないんじゃないか
宿題を丸投げする奴に常識なんてないだろ
794 :
デフォルトの名無しさん :2010/12/23(木) 19:46:54
>>782 ありがとうございます。
実行できました。
795 :
755 :2010/12/23(木) 20:55:07
わかんなくなっちゃたよ(・_;/ぜんぜん簡単じゃないじゃん!ちょー混乱するし!
http://codepad.org/bSt9bHT0 [1] 授業単元:ネットサーフィン
[2] 問題文(含コード&リンク):ウインドーズでもどっちでもうごくようにしなさい。
[3] 環境
[3.1] OS:リナックスとウインドーズ
[3.2] コンパイラ名とバージョン: ジイシイシイとビジュアルシイ
[3.3] 言語:シイ言語
[4] 期限 : 12月24日
[5] その他の制限:うごけば何でもいい
対象のファイルもどこかにあげてくれないとコード読む気にすらならない
>>792 申し訳ありません、VC6.0ではexe形式で出て来ますがすぐ消えてしまいます。
どのようにしたらよいのでしょうか?
>>786 誠に申し訳ありません。
問題にWin32アプリケーションとしてと書くのを忘れました。
>>804 input.readLineとかBufferedReaderって書いてあるからJavaだよね
>>804 >シングルクォート''で囲んでいる中身は
>全角のスペース' 'がGood!
C言語でこれ出来る?
>>805-806 すみません、まだプログラミングに疎いものでよく分かっていませんでした
ヒントの部分を無視したら出来そうですかね?
ファイル名の拡張子が.cになっているけど……? まさか出題する側も……という怖い考えが頭をよぎった。
>>807 人同士の対戦で良いんだよね?
対戦の相手と交互に、例えば aA って入力してマスを指定する?
そのマスに置けるかどうかと、終了の判定の判定だけすれば良いね?
>>809 ちゃんと理解していないのですがそれでお願いします
無知で申し訳ないです
>>811 ありがとうございます
多分それで大丈夫だと思います
後はどなたか
>>803 もお願いします・・・
こちらはwhile文を使わずに書いて頂けると助かります
>>813 はい
お手数かけますがよろしければお願いします
#include <stdio.h> #include <math.h> int main() { const double r = 2; const double r2 = r * r; double x = 0, y = r; double s = 0; double n = 100; double dx; printf("分割数 : "); scanf("%d", &n); dx = r / n; for (x = 0; x < r; x += dx) { y = sqrt(r2 - pow(x, 2.0)); s += dx * y; } printf("面積 = %f\n", s); return 0; }
ごめん図しか見てなかったから区分求積法でやっちまった 台形だったのかよ
#include <stdio.h>
#include <math.h>
int main()
{
const double r = 2;
const double r2 = r * r;
double x = 0, y0 = r, y1 = r;
double s = 0;
double n = 100;
double dx;
printf("分割数 : ");
scanf("%d", &n);
dx = r / n;
for (x = dx; x <= r; x += dx) {
y1 = sqrt(r2 - pow(x, 2.0));
s += (y0 + y1) * dx / 2.0;
y0 = y1;
}
printf("面積 = %f\n", s);
return 0;
}
直しました
あと、
>>815 のあほなとこも直しておきました
>>817 ありがとうございます
理解出来ました!
>scanf("%d", &n); >for (x = dx; x <= r; x += dx) { とくにこの辺が
>>821 すいません
もう少し具体的にお願いします
double型変数nを読むのにscanf("%d", &n);としている 分割数によってはx==rにならないためにループ回数が不足する
てめーで直せw
まぁ別にこのままでいいや
画像のyを求める式間違ってんな 今年度に改定するときに忘れたんだろうか
>>803 #include <stdio.h>
#include <math.h>
double f(double x) { return sqrt(4 - x * x); }
int main(void)
{
int i, n;
double r = 2.0, h, s;
for(n = 100; n <= 100000; n *= 10) {
h = r / n;
for(s = 0.0, i = 0; i < n; i++) s += (f(i * h) + f((i + 1) * h)) * h / 2;
printf("n = %-6d %f\n", n, s);
}
return 0;
}
>>829 これはこれで画像ちゃんと見てないしww
>>830 すいません
もう少し具体的にお願いします
>>831 標準入力からと書かれているのに埋め込まれている
1枚目には100, 1000, 10000, 100000のときと書いてあるのに 2枚目で標準入力からってなってるのは矛盾してるな
それにしても、画像ファイル見ながら問題解くのは 苦痛だな。
あ、 printf("%f\n", d); はデバッグの時に取り除き忘れたので取っておいてください
>>837 もう一つバグ発見
printf("%d × %d 型の行列の積として定義されます。\n", L, N);
は
printf("%d × %d 型の行列の積として定義されます。\n", N, L);
の間違いです
どなたか798お願いします。orz
>>842 もう少し分かりやすくきれいなソースでお願いします
これ以上分かりやすくってどうやるんだよw
十分分かりやすいだろ・・・
[1] 授業単元:C++ [2] 問題文(含コード&リンク):1辺の長さが2の正方形の中に半径1の円形の標的がある。この板に向かってランダムに弾を撃って、標的に が入ったか否かを調べることで円周率を求める(モンテカルロ法)プログラムを作りなさい。 撃った弾の数をx、命中した数をyとする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008 [3.3] 言語: C++ [4] 期限:2010年12月27日 12:00 [5] その他の制限:以下の関数で宣言すること 1.(-1,-1)~(1,1)の範囲の弾を撃った位置(座標)を示す関数 zahyou 2.(-1,-1)~(1,1)の範囲の弾の命中した座標を設定する関数 settei このとき、zahyou型の変数を引数を持ち、そのメンバに乱数を用いて 標的の命中した座標を一様乱数で設定すること。 3.弾の命中した位置が、円形の標的内か外かであるかを判定する関数 hantei これもzahyou型の変数を引数に持っていること。また、当り(1)か否(0)かをint型で返すこと。 4.標的に命中した回数:m、外れた回数:kとして、その確率を返す関数 kaku 引数はint型、戻り値は確率としてdouble型で返すこと。 5.弾の数は変更できるようにすること。
>>847 >1.(-1,-1)~(1,1)の範囲の弾を撃った位置(座標)を示す関数 zahyou
これって関数じゃなくて構造体じゃないの?
2.に「zahyou型の変数を」ってあるんだけど
>>848 すいません間違えました
「構造体 zahyou」です
((int)RAND_MAX)/(double)RAND_MAX って1になるのかな。
うん
>>847 です
1.(-1,-1)~(1,1)の範囲の弾を撃った位置(座標)を示す関数 zahyou
『例として、標的に命中したとき、その命中した位置のx-y座標は、double型であり、
(-1,-1)~(1,1)の範囲にある』
5.弾の数は変更できるようにすること。
『弾の数は構造体 zahyou 型の変数の数で設定できるようにすること。
例:struct zahyou bullet[100]; と宣言すれば、100本の弾がプログラム上に準備できる』
『』の文章を追加でお願いします
見落としていました すいません
後出しうぜー
開区間なんだね
>>853 x = sizeof(bullet)/sizeof(zahyou) ;
これだからゆとりは
ゆとりでごめんなさい
>>856 の部分をどこに入れればいいのでしょうか?
>>859 気に障る事を言ったのなら謝ります
教えてください
x = sizeof(bullet)/sizeof(zahyou) ;
をどこに組み込めばいいんですか?
情報後出しした時点でもうまともなレスはつかんと思うぞ x=なんてしてるとこなんて一箇所しかないんだからちょっとは自分で考えようぜ
>>860 > 例:struct zahyou bullet[100]; と宣言すれば、100本の弾がプログラム上に準備できる』
こうあるんだから、その変数をまず宣言する。
その宣言から、100本の弾数をどうやって取得するかが、書いてあるヒント。
ソースの中の
//標準入力から弾の数を入力する場合
とコメントされてる前後のところをよく読んで,考えてみるといい
864 :
デフォルトの名無しさん :2010/12/26(日) 03:00:09
Cで、2進数から16進数の変換をビット演算使ってやる方法教えてください。
ありがとうございました
>>864 指を折る
指の間接は3つあるから3ビットまで表現可能
2本あれば4ビット(2ビット分は使わない)で16進数になる
4本使えば0xFFまで表現可能
両手を使えば0xFFFFまで出来る
指を曲げた形がCってこと?
そんな感じ 実際にインドでは数字を数えるときに間接を使っている
>>869 それちょっと詳しく知りたいな。
ちなみに、フランスでは指を使っての掛け算をするらしい。
昔家にあった百科事典に載ってたけどやりかた忘れた。
>>870 フランス語で数の数え方が20進法に近いのは、手の指と足の指を両方使ってた
名残らしいな
両方で丁度20本
>>867 一番先の間接だけ曲げるのと一番先と一番根元の間接を曲げるのが出来ません
どうすれば良いですか?
>>869 インドよりも我が愛すべき大日本帝国の数学のほうがはるかに進んでいるのですが、それでもインドを引き合いに出すはどういったわけですか。
>>873 ほらまた出たよ自己愛性人格障害が
インド人は白人、つまりアーリア人だ
マイクロソフトの製品のいくつかもインドを拠点に作っている
一番多いのはユダヤ人だらけのイスラエルだが
日本国内に開発する場所はないでしょ?
「巣に帰れ」と言おうとしたらスレストされててワロタ
>>874 同等の能力程度じゃコストからして割に合わないからね
実際問題日本人は数学に弱い気がする。江戸時代になっても鶴亀算だとかあんまり 発展性のない数学やってたし そういや九九を99までやってるのはインドだっけ?
>>877 19x19までじゃなかったっけ?
さうがに1万通りを覚えるのは無理でしょ
インドの小学校にはプログラムの授業があり 3年生の時分には三角関数を使って円を描く。
>>878 インド(諸語あるようだが)での記数法が20進法ならば 19x19 の九九は大いに意味があるが、実際は 10 進法であり 19x19 はオーバースペック。
覚えこむ必要のないものまでやって、他にやらなければならないことがおろそかになってやしないか?
10進法の世界では日本の九九が必要にして十分。
>>877 日本の数学界の活躍は私の語るところではないにしても、日本人は潜在的に九九と算盤の素養があり、計算能力は平均以上ではないか。
江戸時代の数学:和算についてはかなりのところまで西洋数学に追いついていたよう。
ホルホルするのはそのぐらいにしておいて さあ早く私の宿題を片付けるんだ。 というスレ一同の意見を代弁してあげようと思った。
クズコードしか書けないゴミがインドの数学教育を語るとかw
誰かに構って欲しいだけなんだから触るなよ
884 :
デフォルトの名無しさん :2010/12/27(月) 03:05:49
分からないプログラミング課題があります。 問)N個の文字列を入力すると文字列の長さが短い順、同じ長さの時は順不同、に 並べ替えて表すプログラムを作りなさい。 二次元配列とポインタ配列を使うらしいんですけど、コンパイル時にエラーばかり出てしまいます。 どなたか分かる方いらっしゃいますか?
>>884 #include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
#include <iterator>
#include <functional>
using namespace std;
typedef vector< string > Container;
class compare_length : public binary_function< Container::value_type, Container::value_type, bool > {
public:
result_type operator () ( first_argument_type const &lhs, second_argument_type const &rhs ) const {
return lhs.size() < rhs.size();
}
};
int main() {
ifstream infile( "test.txt" );
Container vs;
string s;
while ( infile >> s ) {
vs.push_back( s );
}
stable_sort( vs.begin(), vs.end(), compare_length() );
copy( vs.begin(), vs.end(), ostream_iterator< Container::value_type >( cout, "\n" ) );
}
バカにはわからないが、必要かつ十分なのは九九の上三角(あるいは下三角)。
>>873 ネトウヨってキモイんですねw まだ大日本帝国(笑)
ここは日本国ですよ?
[1] 授業単元:プログラミングとアルゴリズム [2] 問題文(含コード&リンク):最初のセルをスタックに定義した場合の連結リストへの新規、追加、削除プログラムを作りなさい。 [3] 環境 [3.1] OS: Windows 7 [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限:明日の正午 [5] その他の制限: 特になし ワケわからんとです…お願いします。
俺にもワケわからんとです セルって何?講義で出てこなかった?
連結リストの各要素をセルと呼んでいるんだろうね。ノードっていったりもするけど。 で、headなりrootなりをヒープではなくスタックに用意すると。 でも、C++でなら…ねぇ
明らかに授業の内容を踏まえた上での宿題だな スタックを使わないバージョンを授業でやったんじゃないの?
>>890 単なるポインターリンクをグローバル変数を使用せずに実装しろって意味なのかな?
グローバル変数を使用した場合と異なるのは root のアドレスを引数に追加するだけだと思うけど、
題意に沿うならグローバル変数を使用した例を修正したコードを提出すべきだろうな
新規:ポインターリンクの最後に追加
追加:既存要素の次に挿入
削除:既存要素の削除
だと思うけど、追加と削除で既存要素はどの様に指定するの?インデックス?ポインター?要素の数値?
C++なのに自分で連結リスト作るのか… まあ宿題だから仕方ないんだろうけどさw
896 :
デフォルトの名無しさん :2010/12/28(火) 00:02:00
このスレでc++といえばほぼC言語のことだと何度言えば
897 :
ハル :2010/12/28(火) 00:06:41
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 1.「逆ポーランド記法で書かれた式を入力させ、計算結果を出力するプログラムを作れ」 2.「qが入力されるまで動作を繰り返すこと」 3.「指定のスタックのプログラムを利用し、stack.hを各自で用意。構造体の定義も移動せよ」 4.「使用できるのは四則演算と=のみ」 5.「=はスタックの一番上の要素を表示するためのもの」 以上を満たせばどんなものでもok [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン: vc++ 2005 [3.3] 言語: C++ [4] 期限:来年の7日 [5] その他の制限: 特になし 以下指定のスタックのプログラムになります。 30時間頑張ったんですが、ことごとくビルドに失敗し、心が折れました。 自慢じゃありませんが、あまり頼れる人脈もなくて……どうかおねがいします
898 :
ハル :2010/12/28(火) 00:10:07
>>897 続きです
/stack.c/
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include"stack.h"
int main()
{}
void make_empty(Stack *s){
s->top = 0;}
int is_empty(const Stack *s){
return s->top == 0;}
int is_full(const Stack *s){
return s->top == STACK_SIZE;}
void push(Stack *s, int i){
if(is_full(s)) {puts("Overflow!");exit(EXIT_FAILURE);}
else s->contents[s->top++] = i; }
int pop(Stack *s){
if(is_empty(s)) {puts("Underflow!");exit(EXIT_FAILURE);}
else return s->contents[--(s->top)];}
899 :
ハル :2010/12/28(火) 00:11:02
>>897 >>898 さらに続きです
/stack.h/
#ifndef STACK_H
#define STACK_H
#define STACK_SIZE 100
typedef struct{
int contents[STACK_SIZE];
int top = 0;
}Stack;
void make_empty(Stack *s);
int is_empty(const Stack *s);
int is_full(const Stack *s);
void push(Stack *s, int i);
int pop(Stack *s);
#endif
ぜんぜんC++じゃねーじゃんかよw
yacc/lexの課題はここでやっておk?
904 :
加奈子 :2010/12/29(水) 01:19:38
905 :
加奈子 :2010/12/29(水) 01:22:33
>>904 コンピューターの思考など、まったくわかりません。
どなたか助けてください。
コンピューターが思考する時代になったんだ 夢も見るのかな?
>>904 ちょっと規模の大きなプログラムになりそうだけど本当に制限無し?
あとでひっくり返されるとイラっとくるくらいは物量ありそうだけど
僕のおばあちゃんは明治生まれのコンピューター
コンピュータの思考ルーチンを実装するのは条件に書かれていないから作らないでいいのでは。
910 :
デフォルトの名無しさん :2010/12/29(水) 05:03:19
>>909 手を見せ合ってたらゲームにならないから対人ゲームではないと思う、まさかの通信対戦?
コンピュータの手番に何かする処理は必要でしょ
手札リストを最初からチェックして出せるカードが見つかったら出すって処理でも良いと思う
そもそもページワンなんてガキの頃以来やってないからコツや戦略なんて解んないよね
ページワンサーバとページワンブラウザ。 それにBOTを一つ。これでいいのかな。 コマンドプロンプトの上でのみ、というのが謎だけど。
>>904 一応書いたけど表示に難が有るなぁ、トランプのマークって文字に無いのかなぁ
以下の点に注意
・コンピュータとプレイヤーの一対一対戦
・s,c,h,d がスペード〜ダイヤを表す、桁数を揃えたかったので10は+とした
・相手のカード(裏向き)、場に捨てられたカード、プレイヤーのカードの順で表示、各人のターン毎に再表示
・プレイヤーが先行で左端のカードを1とした番号を入力、山から引く場合は0以下を入力
・カードを先に捨てきれば勝ち、また最終山札を引いた方が負け
・ドロウ2やワイルドカード等のUNOチックなルールは一切無し(こんなルール俺が子供の頃は無かったなぁ)
ttp://codepad.org/zbRW6qyx
>>914 ユニコードにはマークあるっぽいけどコマンドプロンプトじゃ出せないよなぁ
出せるよ。APIを使う必要があるだけで。
917 :
加奈子 :2010/12/30(木) 00:14:34
ありがとうございます。 なんとかなりそうです。 これから頑張って説明付けて、理解できるようにします
[1] 授業単元:プログラミング [2] 問題文: 5*5の' 'と'#'の2文字から構成される二次元配列のtxtファイルを読み込み、 '#'を1,' 'を0と表示させるプログラムを作成せよ [3] 環境 [3.1] OS:Windows [3.2] VC++ [3.3] 言語:C [4] 期限:無期限 [5] その他の制限:特になし よろしくお願いします><
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://ideone.com/v82fx [3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: vc++ 2010
[3.3] 言語: C
[4] 期限:来年の1日
[5] その他の制限: 特になし
・・・どうかお願いします
[1] 授業単元:プログラミング [2] 問題文: 3-gramでマルコフ連鎖を使って文章を生成、会話を行えるようにする。 [3] 環境 [3.1] OS:Windows [3.2] VC++ [3.3] 言語:C [4] 期限:無期限 [5] その他の制限:特になし 2-gramまでは分かるのですが3-gram以降になるとどう組んで良いのか分かりませんでした。よろしくお願いします。
>>924 適当に書いたので検証はしてくれ。
int check(const char* str) {
const char num[] = "0123456789";
int i, l, e;
if(str == 0 || *str == '\0') return 0;
if(*str == '+') {
if(*++str == '\0') return 0;
} else if(*str == '-') {
if(*++str == '\0') return 0;
}
l = 0;
while(*str != '\0') {
e = 1;
for(i = 0; i < 10; i++) {
if(*str == num[i]) {
e = 0;
l++;
break;
}
}
if(e) return 0;
if(8 < l) return 0;
str++;
}
return 1;
}
>>925 続き
int sign(const char* str) {
const char num[] = "0123456789";
int res, e, i;
if( str == 0 || *str == '\0') return 0;
res = 1;
if(*str == '+') {
if(*++str == '\0') return 0;
} else if(*str == '-') {
res = -1;
if(*++str == '\0') return 0;
}
while(*str != '\0') {
e = 1;
for(i = 0; i < 10; i++) {
if(*str == num[i]) {
e = 0;
break;
}
}
if(e) return 0;
str++;
}
return res;
}
>> 926 続き /* エラーが起きたときの仕様が決まっていないので 戻り値でエラーを返し、引数で整数値を取得するようにする。 */ int myatoi(const char* str, int* res) { const char num[] = "0123456789"; int s,v,i; if(res == 0) return 0; if(!check(str)) { *res = 0; return 0; } v = 0; s = sign(str); if(*str == '+') { str++; } else if(*str == '-') { str++; } while(*str != '\0') { for(i = 0; i < 10; i++) { if(*str == num[i]) { v *= 10; v += i; break; } } str++; } *res = s * v; return 1; }
>>927 ありがとうございます!参考にさせていただきますね
932 :
デフォルトの名無しさん :2011/01/02(日) 02:06:59
933 :
デフォルトの名無しさん :2011/01/02(日) 02:36:30
C言語で * ** *** **** ***** ****** ******* ******** ********* ********** こんな感じで表示したいんだけど、どうすればいいの?
printf("*\n**\n***\n****\n*****\n******\n*******\n********\n*********\n**********\n");
#include <stdio.h> void print(char, int); int main(void){ int i, N=10; printf("10 ? "); scanf("%d", &N); for (i = 0; i < N; i++){ print(' ', N-i-1); /* 9,8,7,...,1,0 */ print('*', i+1); /* 1,2,3,...,9,10 */ puts(""); } } void print(char c, int n){ int i; for(i = 0; i < n; i++) putchar(c); }
937 :
デフォルトの名無しさん :2011/01/02(日) 14:02:15
【質問テンプレ】 [1] 授業単元:画像処理学 [2] 問題文(含コード&リンク): 指定されたエクセルファイルの中にあるデータを読み込み それぞれのデータの各列に列の番号の値を加えて 別のエクセルファイルとして出力せよ. [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C言語 [4] 期限:2011年1月4日 [5] その他の制限: 問題の意味は1列目に+1、2列目に+2をしろということです 5 20 15 → 6 22 18 8 50 14 → 9 52 17 9 30 16 → 10 32 19 2 40 17 → 3 42 20 よろしくお願いします 指定されてたエクセルファイルの中身は まさに上の左側の4*3の数値でした
>>937 >エクセルファイル
csvではなくて?
939 :
デフォルトの名無しさん :2011/01/02(日) 14:19:49
問題文はそうなっていますが指定されていたファイルは sitei.csvでした ややこしい書き方をして申し訳ありませんでした
先生が分かってない あとCSVなのに区切り文字はカンマじゃなくてスペース? "CSV" == "Comma Separated Values" なんだけど
941 :
937 :2011/01/02(日) 15:45:58
その他の部分で書いたのは エクセルを用いてCSVファイルを開いたときに それぞれの行列の枠内に このような値が出ますよということです 私がセルの区切りの線を引かずにスペースで表しただけです 申し訳ありません
>>940 Character-Separated Values もあるから
>>937 #include <stdio.h>
#include <string.h>
int main(){
const char* ifname = "sitei.csv";
const char* ofname = "out.csv";
FILE* ifp;
FILE* ofp;
char buf[1024];
char* p;
int line, num, d;
ifp = fopen(ifname, "r");
ofp = fopen(ofname, "w");
if(ifp != NULL && ofp != NULL){
line = 1;
while(fgets(buf, 1024, ifp)){
num = 0;
for(p = buf; ;){
if(sscanf(p, "%d", &d) <= 0)break;
if(num++ > 0)fprintf(ofp, ", ");
fprintf(ofp, "%d", d + line);
p = strstr(p, ",");
if(p == NULL)break;
p++;
}
fprintf(ofp, "\n");
line++;
}
fclose(ofp);
fclose(ifp);
}
}
>>937 ちょっと変えた+インデント
#include <stdio.h>
#include <string.h>
int main(){
const char* ifname = "sitei.csv";
const char* ofname = "out.csv";
FILE* ifp;
FILE* ofp;
char buf[1024];
char* p;
int line, num, d;
ifp = fopen(ifname, "r");
ofp = fopen(ofname, "w");
if(ifp != NULL && ofp != NULL){
for(line = 1; fgets(buf, 1024, ifp) != NULL; line++){
p = buf;
for(num = 0; ; num++){
if(sscanf(p, "%d", &d) <= 0)break;
if(num > 0)fprintf(ofp, ", ");
fprintf(ofp, "%d", d + line);
p = strstr(p, ",");
if(p == NULL)break;
p++;
}
fprintf(ofp, "\n");
}
fclose(ofp);
fclose(ifp);
}
return 0;
}
>>945 6, 21, 16
10, 52, 16
12, 33, 19
6, 44, 21
となるぞ
題意は
6, 22, 18
9, 52, 17
10, 32, 19
3, 42, 20
じゃないのか
>>937 列か
#include <stdio.h>
#include <string.h>
int main(){
const char* ifname = "sitei.csv";
const char* ofname = "out.csv";
FILE* ifp;
FILE* ofp;
char buf[1024];
char* p;
int num, d;
ifp = fopen(ifname, "r");
ofp = fopen(ofname, "w");
if(ifp != NULL && ofp != NULL){
while(fgets(buf, 1024, ifp) != NULL){
p = buf;
for(num = 0; ; num++){
if(sscanf(p, "%d", &d) <= 0)break;
if(num > 0)fprintf(ofp, ", ");
fprintf(ofp, "%d", d + num + 1);
p = strstr(p, ",");
if(p == NULL)break;
p++;
}
fprintf(ofp, "\n");
}
fclose(ofp);
fclose(ifp);
}
return 0;
}
948 :
デフォルトの名無しさん :2011/01/02(日) 20:40:35
教えていただけると助かります。 これを変更して,配列に格納されている整数の最大値と最小値を表示する様にせよ. #include<stdio.h>#include<stdlib.h>#include<time.h> int main(void){ int *A; int num, sum=0, ave; int i; int max=0; srand(time(NULL)); do{ printf("整数はいくつですか?(正整数):"); scanf("%d", &num); }while(num<1); A = malloc(sizeof(int)*num); for(i=0;i<num;i++){ A[i] = rand()%100; printf("%d 番目の整数は %d です.\n", i+1, A[i]); } for(i=0;i<num;i++){ sum += A[i]; } ave = sum/num; printf("合計は %d で平均は %d です.\n", sum, ave); for(i=0;i<num;i++){ if(max<A[i]){ max = A[i]; } } printf("最大値は %d です.\n", max); return 0; }
949 :
デフォルトの名無しさん :2011/01/02(日) 20:44:48
948です。 順番おかしくてすみません>< [1] 授業単元:プログラム [2] 問題文(含コード&リンク):948の本分です。 [3] 環境 [3.1] OS:Windows [3.2] VC [3.3] 言語:C++ [4] 期限:2011年1月4日まで よろしくお願いします!!
>>949 #include <algorithm>
をインクルードして↓の処理を追加する
int min = *std::min_element(&A[0], &A[0] + num);
printf("最小値は %d です.\n", min);
951 :
デフォルトの名無しさん :2011/01/02(日) 23:55:24
>>950 ありがとうございます!
動かしてみます!!
自分で考えようというのがあまり見受けられないな
自分で考える位なら宿題丸投げしないだろ
そろそろ早稲田情報理工3年オペレーティングシステムの宿題がくる頃かな
955 :
937 :2011/01/03(月) 03:58:01
956 :
937 :2011/01/03(月) 05:12:56
【質問テンプレ】 [1] 授業単元:画像処理学 [2] 問題文(含コード&リンク): 指定されたエクセルファイルの中にあるデータを読み込み 各列ごとにそれぞれのデータに対し[0,1]区間に正規化し 別のエクセルファイルとして出力せよ. [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C言語 [4] 期限:2011年1月4日 [5] その他の制限: 問題の意味は1列目は1列目の範囲で 2列目は2列目の範囲とそれぞれ独立して正規化せよ ということです こちらのdata.csvは250行5列といったとても大きなものなので sitei.csvを基に作成していただけたらありがたいです
957 :
937 :2011/01/03(月) 05:14:37
すいません追記です データの中に少数のデータもありますので 少数対応でお願いします
>>956 正規化とは?
1列目:10 20 5 15 → 正規化:0.5 1 0.25 0.75
みたいに一番大きな値を1にして他を比率で表すって事?
959 :
937 :2011/01/03(月) 06:42:12
はい そうです 最大の値を1として列内で1の値(最大値)を基準として 他の値を比率であらわすということです ただし列ごとに独立した基準でということです よろしくお願いします
めんどくせえなーこれ 各行の列数も独立なんだろ 普通に縦横入れ替えてループできないのか・・
962 :
937 :2011/01/03(月) 07:26:09
データの数はきっちり5*250(data.csv)で全部埋まってますよ 250個の数を正規化したものを5つです ただしそれぞれの列ごとに値の大きさが違いすぎるので それぞれの基準で正規化しなくちゃいけないんです (画素や座標といった基準の違うものがまとめて入ったデータなので 正直課題じゃなかったら座標は正規化せずに座標でいいと思うのですが)
963 :
937 :2011/01/03(月) 07:27:49
入れ違いに書き込んでしまいました 拝見させていただきます
964 :
937 :2011/01/03(月) 07:49:38
拝見させていただきました
うまく正規化させることができました
>>961 さんありがとうございます
965 :
937 :2011/01/03(月) 10:39:49
【質問テンプレ】
[1] 授業単元:画像処理学
[2] 問題文(含コード&リンク):
正規化されたエクセルファイルの中にあるデータを読み込み
そのデータをそれぞれx軸の値として
y = x + a の式との交点であるy軸の値をそれぞれ
別のエクセルファイルとして出力せよ.
a の値は -1〜1 までの値を0.5刻みでランダムにとり
同じ行では同じ関数を使うものとする.
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C言語
[4] 期限:2011年1月4日
[5] その他の制限:
問題文中でエクセルファイルとなっていますがCSVのことです
また前問(
>>956 )からの続きなので
>>956 の解である
>>961 さんのURL内のコードに
本問で問われていることを付け足す形でお願いします
長くなりましたがよろしくお願いします
>>965 えっ。単発じゃないのか
>>961 につなげるなら
>>961 も入力、加工、出力に関数分けする必要があるじゃないか
入力→正規化→出力→入力→加工→出力ってやるんだろこれ
967 :
937 :2011/01/03(月) 13:29:06
大きい問題の問1が
>>956 で問2が
>>965 なんです
>>元データ入力→正規化→出力→正規化データ入力→加工→出力
まさにそのやり方をしないといけないんです
以降の問題とつながりあるなら最初から考慮して作る必要があるんだから まず全ての問題のつながりを[5]あたりに書いとくこと もうないよね?
969 :
937 :2011/01/03(月) 13:48:17
申し訳ありません
正直まだあるんですけどそこまでできあげちゃうと良レポートすぎるかなと思うのですが
この先の問題は
【質問テンプレ】
[1] 授業単元:画像処理学
[2] 問題文(含コード&リンク):
その後(
>>965 の後)そのプログラム(
>>965 の解となるプログラム)に加え
各行に対し3つずつそれぞれランダムにaを決定した関数との接点を求め出力する.
また6列目に使用したaの値をa1,a2,a3という形で出力する
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C言語
[4] 期限:2011年1月4日
[5] その他の制限:
ここまでで終わりです
970 :
937 :2011/01/03(月) 13:55:28
すいません補足です 問題文最後の6列目というのはもとファイルが5列あって6列目にaの値を入れる欄を作れということです 問題分には明言されてませんが問3は一つのセルに a1,a2,a3を用いて出た解1,2,3を記入した 5*250のセルをもとに (15)+1*250の結果を作れということです 列数で増えている1というのはaの値を表示するためのものです 多いうえにややこしい書き方をして申し訳ないです
971 :
937 :2011/01/03(月) 13:58:14
(解1-1,1-2,1-3)(,,)(,,)(,,)(,,)(a1,a2,a3) 横1行は上記のようになった6*250のCSVです 何度も追記して申し訳ないです
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 5列5行の多次元配列(0または1が適当に並べられているもの)を用意し 1がある配列の上下左右の配列のうち2または3個1が存在するならその配列を0に変更し そうでない場合は1のままにする この操作を10回行った配列を求めるプログラムを作成する またこの配列は上下左右繋がっていて1,1の配列の場合上は1,5、左は5.1である [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:visual studio2005 [3.3] 言語: C言語 [4] 期限: 1月5日 [5] その他の制限: いわゆるライフゲームみたいなやつです 1と0の配列は特に指定はありませんので そこは適当で構いません よろしくお願いします
system関数でgnuplot呼び出しで一発じゃね
979 :
976 :2011/01/03(月) 22:09:57
次スレ立てます
そうか列じゃなくて行か・・行ならメモリ確保とかする必要ないな・・
Linuxコマンドだけで宿題を片付けろ
>>983 劣化 perl なんかを使うのか?それじゃ C とかわらへんのでは?
985 :
937 :2011/01/04(火) 05:13:44
帰ってくるのがこの時間帯になるもので遅くなって申し訳ないです
>>975 ,
>>978 拝見させていただきました
>>975 の41行目
>>978 の42行目の
csv = calloc(1, sizeof(CSV));
という記述に対して
'void *' から 'CSV *' に変換できません。
というエラーが出ます
>>979 さんのは実行の仕方が解らないのでただいま勉強中です
また
>>965 の問ですがこれは「正規化された値にランダム数を足す」のではなく
(以下2行は手順を追うための文です)
正規化された値(範囲は[0,1])と 「関数y=x」の交点の値を別のcsvとして出力します
ここまでだと入力と出力のファイルが同じになります
(ここから本問)
正規化された値(範囲は[0,1])と 「関数y=x+a」の交点の値を別のcsvとして出力します
a の値は-1〜1 までの値を0.5刻みでランダムにとり
同じ横列では同じ関数を使って交点をとるものとする
それを縦列数分繰り返して出力するということです
データは横5データ縦250データのデータです
横列ごとに同一の関数と比較した交点の出力なので
結果としては正規化されただけのデータと比べて横列では同じ程度の数値の変化になります
986 :
937 :2011/01/04(火) 05:14:37
問3は問2の拡大版で 正規化された値と関数y=x+aとの比較を各横列ごとに3回行うということです セル1-1に対して「y=x+a1との交点」「y=x+a2との交点」「y=x+a3との交点」 の値を 出力するCSVのセル1-1の位置に a1との解 , a2との解 , a3との解 とコンマで刻んで出力します また正規化されたCSVが横5縦250なので横6縦250のところに 使用したaの値を a1,a2,a3 と出力せよということです 結果的には a1解,a2解,a3解 a1解,a2解,a3解 a1解,a2解,a3解 a1解,a2解,a3解 a1解,a2解,a3解 a1,a2,a3 となります この横列が250行縦に続きます 元データの形(行列が詳しくないもので正しい用語を使えてるかわからないので) 1 2 3 4 5 1 2 3 4 5 横が5つのデータで 〜〜〜〜〜〜〜〜〜 縦が250個のデータです 1 2 3 4 5 並み線は147個分省略
987 :
937 :2011/01/04(火) 05:17:50
関数のところが結果的同じじゃないかと思うかもしれませんが 場合によって関数が違うので 関数との交点をとりましたよというような記述の仕方が必要なんです ながながと申し訳ありません よろしくお願いいたします
988 :
937 :2011/01/04(火) 07:59:26
ちょっとプログラムと格闘して自分が
>>987 で言ってることの馬鹿さ加減に気付きました
プログラミング畑の人間じゃないものでして動作について
多めにコメントで説明してくださるとありがたいです
>>988 ・問題文は、出題されたまま全文を書いてください。
990 :
937 :2011/01/04(火) 08:27:51
992 :
937 :2011/01/04(火) 10:31:17
すいません
補足のところは授業のノートを見て書いたものですから
二次関数とX座標の交点のようにメモをとってたのでそう書いてしまいました
実際は y= x + a の x にランダムで指定範囲内から決定されたaを加算すればいいので
その辺が
>>988 で言っていた自分のミスに気付いたってやつです
交点求めるには代入すればいいですものね
問題文が簡素なのは「授業でやってるとおりにやればわかるでしょ」っていう先生の暗黙の了解なので
その部分は補足という形をとりました次スレに質問を貼りなおしたいと思います。
コレ埋めるけど、イイかな?
C/C++、君との思い出は、数えるほどしかない。
C/C++を思い出させるものは、数えきれないぐらいある。
そして何より、何よりC/C++の笑顔が忘れられない。
遅いかな…今頃になって言うのは。
俺は…俺は…俺はC/C++が好きだった。
オレ、main関数が書けません
1000ならC/C++絶滅
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。