09/10/17 01:08:18
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
【C 関数検索 man on WWW】 URLリンク(www.linux.or.jp)
【過去ログ検索】 URLリンク(chomework.sakura.ne.jp)
【wiki】 URLリンク(www23.atwiki.jp)
前スレ
C/C++の宿題片付けます 130代目
スレリンク(tech板)
2:デフォルトの名無しさん
09/10/17 02:17:13
気に入らない質問やその他や発言はスルーの方向で。
3:デフォルトの名無しさん
09/10/17 02:33:05
相変わらずその日本語おかしいままか
4:デフォルトの名無しさん
09/10/17 02:48:40
52代目から続く伝統の誤字なんだから、軽々しく変えていいわけねーだろw
5:デフォルトの名無しさん
09/10/17 03:37:23
質問や発言は で良いかな?その他発言か?
6:デフォルトの名無しさん
09/10/17 04:11:33
>>3 が何
7:前スレ未解決問題
09/10/17 05:32:22
>>993 文字を一文字入力して、入力された文字が、英字の小文字であるか、英字の大文字であるか、数字であるか、それ以外の文字であるか判別
>>986(9982) bitmap(BMP)ファイルの上に円を書く
>>923-925(CODE) ナップサック問題のプログラムを利用し、グラフ彩色問題に当てはめる
>>883 Turbo C CUI画面制御 5問。
>>882 イテレータを使って微分方程式を解きたい
8:デフォルトの名無しさん
09/10/17 09:03:15
>>993
#include <iostream>
using namespace std;
void main()
{
char str;
cin>>str;
if('a'<=str&&'z'>=str){
cout<<"小文字"<<endl;
}
else if('A'<=str&&'Z'>=str){
cout<<"大文字"<<endl;
}
else if('0'<=str&&'9'>=str){
cout<<"数字"<<endl;
}
else{
cout<<"それ以外"<<endl;
}
}
9:デフォルトの名無しさん
09/10/17 09:05:20
charの変数名にstrってw
10:デフォルトの名無しさん
09/10/17 09:14:33
cctypeは使わないのか。
11:デフォルトの名無しさん
09/10/17 12:39:25
>>986
FILE *fp = fopen("bitmapfile.bmp", "w+");
fprintf(fp, "円");
fclose(fp);
12: ◆/91kCCQXBo
09/10/17 13:30:07
>>883 問1 C:\>gcc -mno-cygwin
#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main(void) {
HANDLE hStdout;
WORD wAttributes;
CONSOLE_SCREEN_BUFFER_INFO csbi;
COORD coord={0,0}, coord1;
DWORD num, i;
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hStdout, &csbi);
FillConsoleOutputAttribute(hStdout, 0, 25*80, coord, &num);
wAttributes = BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_INTENSITY; SetConsoleTextAttribute(hStdout, wAttributes);
for(i=0;i<10;i++) {
coord1.X = 29; coord1.Y = i+7;
SetConsoleCursorPosition(hStdout, coord1);
printf(" ", wAttributes);
}// printf("1234567890123456789012345678901234567890", wAttributes);
getch();
wAttributes = BACKGROUND_RED | BACKGROUND_INTENSITY; SetConsoleTextAttribute(hStdout, wAttributes);
for(i=0;i<14;i++) {
coord1.X = 25; coord1.Y = i+5;
SetConsoleCursorPosition(hStdout, coord1);
printf(" ", wAttributes);
}// printf("1234567890123456789012345678901234567890", wAttributes);
getch();
SetConsoleTextAttribute(hStdout, csbi.wAttributes);
return 0;
}
13:デフォルトの名無しさん
09/10/17 14:17:49
>>11
14:デフォルトの名無しさん
09/10/17 15:57:39
スレリンク(tech板:986番)
私の環境は Windows XP, 処理系は gcc 4,.3.2(cygwin) です。
URLリンク(codepad.org)
日の丸になりました。
15:デフォルトの名無しさん
09/10/17 19:24:24
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
[3.3] 言語: C++
[4] 期限: ([2009年10月19日23:59まで]
[5] その他の制限:特にありません
課題が2つありましたので、ZIPです。
よろしくお願いします。
16:デフォルトの名無しさん
09/10/17 19:44:35
>>15
ないのですが。
17:15
09/10/17 19:59:01
>>16
申し訳ございませんです。
リンク間違えました。
一度違うものを上げてしまったもので・・・
正しくは、こちらです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
本当すいません。
よろしくお願いします。
18:デフォルトの名無しさん
09/10/17 20:32:26
>>15
過去問の焼き直しで細かな仕様は満たしていないかもしれません。
URLリンク(codepad.org)
19:デフォルトの名無しさん
09/10/17 20:40:26
前スレの993です。
ご回答してくださった方ありがとうございました。
参考にさせていただきます。
20:15
09/10/17 20:47:01
>>18
ありがとうございます。
いいえ、十分です。
本当にありがとうございました。
課題2は、課題1に()を使えるようにしただけですので
その部分を削って提出します。
助かりました。
21:デフォルトの名無しさん
09/10/17 21:13:32
>>14
986です。ありがとうございました!
22:デフォルトの名無しさん
09/10/18 00:41:06
1 c=(x1+x2)/2となる
2 f(x1)*f(c)<0→f(x1)とf(c)は同符号.x1とcの間に解は無し。x1=cとする。
f(x1)*f(c)<0だと、f(x1)とf(c)は異符号
x1とcの間に解が存在
x2=cとなる
x1-x2が十分小さくなれば(10^-5)終了する
例 cos(x/2)の解
#include <iostream>
#include <cmath>
using namespace std;
int main() {
までは行きますが…
出力はcout
入力はcinでお願いします
23:デフォルトの名無しさん
09/10/18 01:05:03
そこは行くとかそういう問題じゃないw
24:デフォルトの名無しさん
09/10/18 01:19:02
>>23
すみません。これ分かる人いますか
C++です
25:デフォルトの名無しさん
09/10/18 01:19:52
要するに二分法でしょ
C++は関係無い
26:デフォルトの名無しさん
09/10/18 01:20:24
>>24
そうです。すみません
27:デフォルトの名無しさん
09/10/18 01:22:38
全くできてないものを貼って、ここまでは行きますとか言われてもな。
そんなんだったら、何も書かない方がマシ。
28:デフォルトの名無しさん
09/10/18 01:22:40
>>25でした
29:デフォルトの名無しさん
09/10/18 01:27:38
>>27
ここまでは行きます
というか
始まりはこの文からです
っていう意味です…
30:デフォルトの名無しさん
09/10/18 09:58:29
質問者は中学生なんだから、少しはいたわれw
31: ◆/91kCCQXBo
09/10/18 10:35:04
/*2分法の処理を行う関数*/
URLリンク(www.geocities.jp)
ヒント:C→C++ に置換
cout<<"範囲の左の値を入力してください.\n"; cin>>x1;
cout<<"範囲の右の値を入力してください.\n"; cin>>x2;
cout<<"解の値は "<<c<<"\n収束するのに "<<count<<" 回かかりました.\n";
32:デフォルトの名無しさん
09/10/18 10:37:55
教育は若いうちにやるほうが効果が高い
33:デフォルトの名無しさん
09/10/18 10:43:20
>>22
まずはテンプレート >>1 にそって問題を整理してください。書きなぐり?では他の人間に伝わりません。
日本語を磨くこともプログラミングでは重要です。我々は日本語を使って思考しているわけですから。
34:デフォルトの名無しさん
09/10/18 10:45:08
>>32
そうですか。もう私らではだめですかね。(TT)
35:デフォルトの名無しさん
09/10/18 19:11:45
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
[3.3] 言語: C++
[4] 期限: ([2009年10月20日23:59まで]
[5] その他の制限:特にありません
よろしくお願いします。
36:デフォルトの名無しさん
09/10/18 19:22:50
>>035 // 適当~なので。
int main(void) {
while(1)
printf(" %.16g\n", e());
return 0;
}
37:35
09/10/18 19:39:56
>>36
ありがとうございました。
本当に助かりました。
38:デフォルトの名無しさん
09/10/18 22:26:02
[1] 授業単元: 数値計測演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
問題文
fx = exp(x)- 3x において 区間{0,1}の根を二分法で求めよ
ただし、収束判定条件には|b-a|<εを用いて ε=10^-5
また根の収束の様子を見るために反復ごとにc、fc の値の変化を調べよ
visual C++でのエラーメッセージ
c(11) : error C2059: 構文エラー : 'サフィックスが無効です
c(11) : error C2146: 構文エラー : ';' が、識別子 'x' の前に必要です。
あと指定されたファイルが見つからないとかでファイルを実行できないです
[3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン: visual C++
[3.3] 言語: C
[4] 期限: ([2009年10月20日23:59まで]
[5] その他の制限:特にありません
まったく解決方法がわからないです
よろしくお願いします
39:デフォルトの名無しさん
09/10/18 22:47:08
3x → 3*x
40:デフォルトの名無しさん
09/10/18 23:03:29
>>39 に加えて、途中の printf() の引数を間違えています。(表示がおかしい)
printf("%d:f(%20.16f)=%9.2e\n", i, c ,fc); に修正してください。i に対応する書式が足りない。
41:デフォルトの名無しさん
09/10/19 00:32:23
[1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク):
コンソール画面上に点@を打つ関数 putpixcelを使って
水平方向に線を書く h_line(int x1,int y1,int x2)
垂直方向に線を描く v_line(int x1,int y1,int y2)
斜めの線を描く line(int x1,int y1,int x2,int y2)
を作りこれらを使ってコンソール画面上に図形を書きなさい
但し、line関数において因数はx1<x2,y1<y2,|x2-x1|>|y2-y1|の場合に限定して良い。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: xemacs
[3.3] 言語: (C)
[4] 期限: (2009年10月19日13:00まで])
いろいろ考えましたが、全く分りませんでした、どうかお願いします。
42:デフォルトの名無しさん
09/10/19 00:42:06
[1] 授業単元:c言語
[2] 問題文
問1
文字を一文字入力して、文字コードが一個次の文字を表示するプログラムを作成せよ。
問2
文字を一文字入力して、入力文字が a-z の範囲のときのみ、次のアルファベットを表示すプログラムを作成せよ。ただし、zを入力した場合は a を表示し、a-z以外の文字を入力した場合は入力した文字をそのまま表示すること。
例:
aを入力 → b を出力
bを入力 → c を出力
zを入力 → a を出力
3を入力 → 3 を出力
$を入力 → $ を出力
Aを入力 → A を出力
問3
文字を一文字入力して、入力された文字が、英字の小文字であるか、英字の大文字であるか、数字であるか、それ以外の文字であるか別して、判別結果を表示するプログラムを作成せよ。
[3] 環境
Windows,
言語:C++
[4] 期限:12月1日
よろしくお願いします。
43:デフォルトの名無しさん
09/10/19 01:08:42
>>42
URLリンク(codepad.org)
44:43
09/10/19 01:09:55
問2
あとはこれを参考に考えて下さい。
45:デフォルトの名無しさん
09/10/19 01:11:10
>>41
e-lisp でしないといけないのですか?そうならばすれ違いですね。
46:43
09/10/19 01:19:51
>>43
間違えた。こちらに訂正します。
URLリンク(codepad.org)
47:デフォルトの名無しさん
09/10/19 07:20:25
>>32
物事をよく理解できない、勘違いでも丸暗記では意味がない。
教育の意味にもよるが、死ぬまで勉強。
生きている内に知ることは多い、時代も変わっていくしね。
そして、於いて朽ち果てていく己を知るのじゃ~~wwww
48:デフォルトの名無しさん
09/10/19 08:18:31
せめて漢字変換くらいまともにできるようになってからにしろよ、そういう寝言はよw
49:デフォルトの名無しさん
09/10/19 08:23:31
wつけといてよくいえるな。。。
50:デフォルトの名無しさん
09/10/19 08:34:07
>>45
emacs画面でする作業の事を、emacsで何々すると言う。例えばコンパイル&デバッガ。
51:デフォルトの名無しさん
09/10/19 08:35:31
>。。。
こんな句点の使い方は日本語にゃねーよw
52:デフォルトの名無しさん
09/10/19 09:23:59
ど っ ち も ど っ ち
53:デフォルトの名無しさん
09/10/19 09:47:05
[1] 授業単元:C++
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語:C++
[4] 期限: 2009年10月22日
自分なりに考えてみましたがわかりませんでした。
宜しくお願い致します。
54:デフォルトの名無しさん
09/10/19 12:32:09
>>50
なるほど。
emacsでデバッガする
ですね
55:デフォルトの名無しさん
09/10/19 15:36:52
[1] 授業単元:プログラム言語論
[2] 問題文(含コード&リンク):
設問1.C言語、またはC++言語で、割り算を計算するdev(int x,int y)関数(*)を作成しなさい。ただし、不変表明(assert)を使って、0で除算を実行した場合にエラーを出力するようにすること。(*)関数devは、int型の返値を持ち、x/yを計算するものとする。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C言語、またはC++言語
[4] 期限: 2009年10月20日(火曜)
よろしくお願いします
56:デフォルトの名無しさん
09/10/19 16:26:11
>>55
#include <stdio.h>
#include <assert.h>
int dev(int x, int y) { assert(y != 0); return x / y; }
int main(void)
{
printf("%d\n", dev(2, 0));
return 0;
}
57:デフォルトの名無しさん
09/10/19 17:41:30
[1] 授業単元:プログラミング2演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
複素数x+iyをR*e^iθという指数表示にするプログラムを作れ。
作れるところまで作ったのがリンク先のプラグラムです。
しかしこれではx,yに何を入れてもてもR=0.0 θ=0.784902になってしまいます。
[3] 環境
[3.1] OS:WindowsVista
[3.2] Borland C++ Compiler 5.5
[3.3] 言語:C++
[4] 期限: ([2009年10月20日12:50まで])
よろしくお願いします
58:デフォルトの名無しさん
09/10/19 18:17:04
>>55
URLリンク(kansai2channeler.hp.infoseek.co.jp)
むかしZ80で割り算ルーチンを書いてたのに忘れてた。
ググってやっと書けたけど、ほんとにむかし出来てたのか心配になった。
59:デフォルトの名無しさん
09/10/19 18:54:10
>>57
%f→%lf
60:デフォルトの名無しさん
09/10/19 18:54:58
あとshisu()の位置もおかしいな
61:デフォルトの名無しさん
09/10/19 19:28:37
1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c言語
[4] 期限: 2009年10月20日16:00まで
[5] その他の制限:簡単めのコードでお願いします。
62:デフォルトの名無しさん
09/10/19 19:30:52
>61
Brain F*ckの処理系作ればいいのか
63:sage
09/10/19 19:54:50
>>61 すみません、書き忘れました。
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c言語
[4] 期限: 2009年10月20日16:00まで
[5] その他の制限:簡単めのコードでお願いします。
64:デフォルトの名無しさん
09/10/19 21:36:30
前のスレの最後の方にユーグリッドの互除法のプログラムがあったはずなんですが、
ここに貼ってもらえませんか?
>>900番代後半だった気がするんですが
65:デフォルトの名無しさん
09/10/19 21:43:48
ユークリッド
66:デフォルトの名無しさん
09/10/19 22:49:40
#include <iostream>
using namespace std;
int main(){
double x1, x2, c, a;
cout << "x1: ";
cin >> x1;
cout << "x2: ";
cin >> x2;
while(x2 - x1 > 0.00001){
c = (x1 + x2) / 2;
if (cos(x1 / 2) * cos(c / 2) >= 0) x1 = c;
else x2 = c;}
cout << "x = " << x1 << endl;
return 0;
}
二分法のプログラムこれどこが違うんですか
67:デフォルトの名無しさん
09/10/19 22:57:33
>>66
質問の仕方が違うんじゃないの?
cos(x1/2)*cos(x2/2)>0 とか
68:デフォルトの名無しさん
09/10/19 22:59:01
>>48
うわ~~、変換ミスくらいで突っ込む、絶対にソースコードも
コンパイルするまでエラーしたことがない完璧主義者ですね?
カッコいいです!尊敬します!だから早く老いて死んでくれw
69:デフォルトの名無しさん
09/10/19 23:01:12
>>51
もはやこういった場所では正式な文書より喋り言葉が一般的なんだが
その程度のことを気にするお前は時代には乗り遅れる。
そもそも、文化は現在も人間が作っている。正式に認められていなければ
それは間違いというのは、文化の衰退を招く。少しは理解する頭を持て。
で、三点リーダーって・・・ではなく…を使うのが正しいとかなんとか。
所詮、自分が知っている 日本語も一部 だと気づくんだな。
70:デフォルトの名無しさん
09/10/19 23:07:35
>>69
と、偉そうなことを言っているが実はよくわかっていない馬鹿な>>69なのであった
71:254
09/10/19 23:14:10
[2] 内容
通信のパケットを解析してコードに応じた処理を行いなさい。
ただしコードは必ず2回確認して2回とも同じだった場合のみ処理を行うこと。
コードが2回以上続けて来ても処理は1回のみとする。0XFFが来たら処理を終了すること
※ コード例 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x02, 0x02・・・・・・・・・・0xFF, 0xFF;
なので、こんな感じのソースにしてみました。
static int PreCode = 0xFF;
unsigned int Code = 0;
void Function(unsigned int Code){
if(PreCode != Code){
switch(Code){
case 0x00:
if(Cnt++ >= 1){
/* 1の処理 */
Cnt=0;
PreCode = Code;
}
break;
/* 中略(上記と同じ様にしてcaseの値を変える) */
case 0xFF:
if(Cnt++ >= 1){
/* 終了処理 */
Cnt=0;
PreCode = Code;
}
break;
default:
return;
}}}
[3] 環境 OS:WindowsXp、Vc++6.0
これでは、0x00が来た後に0x01が来た場合に1回目のチェックで処理に入ってしまいます。これを上手く動く様にするにはどうすれば良いかソースの改良をお願いします。
72:デフォルトの名無しさん
09/10/19 23:14:18
実際>>69の日本語も相当なもんだしな。
73:デフォルトの名無しさん
09/10/19 23:15:28
>>71
> 2回確認して2回とも同じだった場合のみ処理を行うこと。
この辺が釈然としない
74:デフォルトの名無しさん
09/10/19 23:17:08
>>48
いやぁ~ごめーん、ついうっかり。こういった場所や数学に関する話を他でするもんで
~に於いてと記入することがあるんで、つい変換ミスしてたのに気づかなくって
ごっめーん、ついでに若くてごめーん、すいすいすいましぇーん
75:デフォルトの名無しさん
09/10/19 23:22:20
> こういった場所や数学に関する話を他でする
なんだって?
それと、数学で「~に於いて」って使う?適当なアンカー希望
76:デフォルトの名無しさん
09/10/19 23:29:15
>>48△
77:デフォルトの名無しさん
09/10/20 00:09:57
ファイルがバイナリかテキストかを判別する
プログラムはどうしたらいいですか?
78:デフォルトの名無しさん
09/10/20 00:16:34
バイナリモードで開いてテキストじゃない文字があればバイナリファイル
79:デフォルトの名無しさん
09/10/20 00:21:45
テキストファイルはバイナリファイルの部分集合
80:デフォルトの名無しさん
09/10/20 00:21:54
[1] 授業単元:c言語
[2] 問題文
問1
文字を一文字入力して、文字コードが一個次の文字を表示するプログラムを作成せよ。
問2
文字を一文字入力して、入力文字が a-z の範囲のときのみ、次のアルファベットを表示すプログラムを作成せよ。ただし、zを入力した場合は a を表示し、a-z以外の文字を入力した場合は入力した文字をそのまま表示すること。
例:
aを入力 → b を出力
bを入力 → c を出力
zを入力 → a を出力
3を入力 → 3 を出力
$を入力 → $ を出力
Aを入力 → A を出力
問3
文字を一文字入力して、入力された文字が、英字の小文字であるか、英字の大文字であるか、数字であるか、それ以外の文字であるか別して、判別結果を表示するプログラムを作成せよ。
[3] 環境
Windows,
言語:C++
[4] 期限:12月1日
1回やってもらったんですがわからないんでお願いします。
81:デフォルトの名無しさん
09/10/20 00:24:31
cなのかc++なのか、それが問題になるかも知れないし、環境もWindowsだけではちょっと。
って期限ながっっっ
82:デフォルトの名無しさん
09/10/20 00:29:40
>>80
問1
#include <stdio.h>
int main()
{
char a;
scanf("%c",&a);
printf("%c\n", a+1);
return 0;
}
83:デフォルトの名無しさん
09/10/20 00:45:10
>>77
制御コードの割合。
#include <stdio.h>
#define BOUND 0.02
double bincnt( char *q , unsigned int size) {
unsigned int bin=0, ascii=0, n;
unsigned char *p=(unsigned char*)q;
for(n=0; n<size; n++) {
if( p[n] < 32 && p[n] !=9 && p[n] !=10 && p[n] !=13 && p[n] !=27 ) bin++; else ascii++; }
return (double)bin/ascii; }
#define STRLEN 25
int main() {
double x;
char ch[STRLEN+1] = "abcdefghijk0123456789ABCD";
printf("Input = %s\n", ch);
x = bincnt( ch, STRLEN);
if( x > BOUND ) printf("Binary\n"); else printf("Not Binary\n");
getchar(); }
84:デフォルトの名無しさん
09/10/20 00:50:00
>>80
問2
#include <stdio.h>
int main()
{
char a,b;
scanf("%c",&a);
if(a == 'z')
printf("a\n");
else if(a >= 'A')
printf("%c\n",a);
for(b = 'a'; b < 'z'; b++){
if(b == a)
printf("%c\n", a+1);
}
return 0;
}
85:84
09/10/20 00:54:07
else if(a >= 'A')
printf("%c\n",a);
じゃなくて
else if(a < 'a' || a >= 'z')
printf("%c\n",a);
だった
86:デフォルトの名無しさん
09/10/20 01:01:57
>>80
問3
#include <stdio.h>
int main()
{
char a,b;
int c= 0;
scanf("%c",&a);
for(b = 'A'; b <= 'Z'; b++)
if(b == a) c = 1;
for(b = '0'; b <= '9'; b++)
if(b == a) c = 2;
for(b = 'a'; b <= 'z'; b++)
if(b == a) c = 3;
switch(c){
case 1: printf("大文字です\n"); break;
case 2: printf("数字です\n");break;
case 3: printf("小文字です\n"); break;
default: printf("それ以外です\n");break;
}
return 0;
}
そして俺の宿題はわけわかめ
87:デフォルトの名無しさん
09/10/20 01:10:55
>>86
今見たら終わってる・・・w
本当にありがとうございます(´;ω;`)
88:デフォルトの名無しさん
09/10/20 01:30:46
前スレにも同じ問題あったな
89:デフォルトの名無しさん
09/10/20 01:41:32
>>84
forにしなくてもelseでいいんでない?
ぱっと見動くように見えるからいいけど。
それと、多分'a'から'z'までが連続している保証はないというツッコミも来るだろうけど、
宿題だからでスルーしてもいいと思う。
90:デフォルトの名無しさん
09/10/20 02:39:34
int main() (笑)
91:デフォルトの名無しさん
09/10/20 02:42:37
なにかおかしいかな?
引数ちゃんと書けってこと?
92:デフォルトの名無しさん
09/10/20 02:48:57
いや、問題ないよ
>>90の勘違いじゃないかな
93:デフォルトの名無しさん
09/10/20 02:59:15
>>92
int main() (笑)
94:デフォルトの名無しさん
09/10/20 03:06:15
>>93
95:デフォルトの名無しさん
09/10/20 03:06:28
わからん。
int main(void)
と書かないとダメとか程度の低い勘違いをしてるんじゃないよな?
96:デフォルトの名無しさん
09/10/20 03:13:51
>言語:C++
これが読めない文盲なんだろ。
97:デフォルトの名無しさん
09/10/20 03:14:19
アワレだな
98:デフォルトの名無しさん
09/10/20 03:23:17
>>96
>>84
問2
#include <stdio.h>
int main() (笑)
99:デフォルトの名無しさん
09/10/20 03:29:34
96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++
これが読めない文盲なんだろ。
文盲(笑) 差別用語(笑) 池沼レベルの発言(苦笑)
100:デフォルトの名無しさん
09/10/20 03:38:52
Cでint main()がダメだという人って多いよね。
どこでそんな知識得たの?
101:デフォルトの名無しさん
09/10/20 03:58:05
>>80
[1] 授業単元:c言語
言語:C++
問2
#include <stdio.h>
int main() (笑)
102:デフォルトの名無しさん
09/10/20 04:03:44
Xeno091017 正式版
URLリンク(koreawatcher.at.infoseek.co.jp)
・正式版として最初のリリース。
・Jane終了時の挙動のみ091015試作品から変更された。
────────────
予告どおり、正式版をリリースしました。×ボタンのツールチップ
ヒントに関して、真魚のソースを参考にして修正を試みました。
JaneNidaの開発は事実上終了です。2chの仕様変更などで
対応するかもしれません。
103:デフォルトの名無しさん
09/10/20 04:04:03
> [1] 授業単元:c言語
> 言語:C++
(苦笑)
104:デフォルトの名無しさん
09/10/20 04:40:11
96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++
これが読めない文盲なんだろ。
>>80
> [1] 授業単元:c言語
これが読めない文盲なんだろ。
105:デフォルトの名無しさん
09/10/20 04:58:56
>>90
int main() (笑)?
106:デフォルトの名無しさん
09/10/20 05:19:56
相変わらずすごい粘着力だw
107:デフォルトの名無しさん
09/10/20 07:35:21
Cならint main(void){}
C++ならint main(){}またはint main(void){}お好みで。
108:デフォルトの名無しさん
09/10/20 08:31:11
#include <stdio.h>
int main() (笑)
109:デフォルトの名無しさん
09/10/20 08:33:12
ビルダで言われるがままにしか作ったことないんだろ。
逆に可哀相な奴なんだから気にすることない。
110:デフォルトの名無しさん
09/10/20 09:01:57
96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++
これが読めない文盲なんだろ。
#include <stdio.h> < はい注目!
>>96はこれが見えない文盲なんだろ。
111:デフォルトの名無しさん
09/10/20 09:40:57
別にそれでもC++としてコンパイルできるけど。
112:デフォルトの名無しさん
09/10/20 12:01:36
C++でstdio.hをインクルードしてもまったく問題ないと思うけど
>>113はどう思う
113:デフォルトの名無しさん
09/10/20 12:13:26
単に質問者が間違えただけだろ
いちいち揚げ足とんな>>90
114:デフォルトの名無しさん
09/10/20 12:53:25
>>81で早々にツッコミ入ってるのに
115:デフォルトの名無しさん
09/10/20 17:05:36
>>53
URLリンク(kansai2channeler.hp.infoseek.co.jp)
116:デフォルトの名無しさん
09/10/20 17:14:46
>>63
期限は10/21の16:00でお願いします。
117:デフォルトの名無しさん
09/10/20 17:20:30
特定のプラットフォーム限定のコード書いてコンパイラの独自機能
使いまくりなのに、標準を気にするなんておかしいね。
ターゲットようのコンパイラに通りゃなにやったって正義。
118:C初心者
09/10/20 18:36:06
Unix、C言語のみで、はじめにユーザーに整数入力を要求し、
その入力された整数を次の一行にその整数とHexに変換されたもの
を出力、その次の行には、はじめに入力された整数を少数にして
それをまたHexに変換。
もしユーザーが数字以外を入力した場合にエラーと表示させ、
”0”と打ち込めば終了。
というプログラムです。一行目はきちんと出てくるのですが、
入力された値を2行目で少数に変換し、それをまたHexにかえる
というのがわかりません。
こんな感じで出したいのですが、、
>1
1 0x00000001
1.00 0x3F800000
>
どうぞよろしくお願いいたします。
119:デフォルトの名無しさん
09/10/20 19:37:27
>>118 template 無いから、これでいいか。
#include <stdio.h>
int main(void) {
union{
float a;
unsigned char c[4];
} data;
int i, b;
b = 1;
data.a = b;
for(i=3;i>=0;i--) {
printf("%02X", data.c[i]);
}
}
120:デフォルトの名無しさん
09/10/20 20:17:13
>>90 >>93 >>98 >> 101 >>105 >>108
スレリンク(tech板:940番)
>ANSI以前との互換性のために、ANSI-Cではプロトタイプ宣言の時だけは引数にvoidを
>明示しないとならないことになっている。
>定義ではvoidの明示は不要。
>C++ではプロトタイプ宣言でも関数定義でもvoidの明示は不要。
>
>つまり、ANSI-Cで引数の無いmain関数のプロトタイプを書く場合だけは、引数の型を
>voidとするのが正式。それ以外の場所は省略しても正式。
121:C初心者
09/10/20 20:23:21
>119さん
返信ありがとうございます。初心者過ぎてコードが読めないんですが、
forループの中ではHexのみをプリントアウトするようになっていますか?
scanfでユーザーの入力を読み込んで、それを整数からHEXへ、少数から
Hexへ変換して表示させるにはどうしたらよいのでしょうか。
それが、unionというものをまだ習っていないので、出来れば使いたくな
いのですが、sizeof(int), sizeof(float)を使ってどのように変換したら
良いのでしょうか?
printf("> %d", n);
if("%d" == char) //CHARではCharを読むことは出来ないんですね?
printf("error");
else if ("%d" == "0"); //これも違いました、、、
return 0;
else{
printf("%10d 0x%08x", n, n);
printf("%10.2f 0x%08X", f, n);
}
よろしくお願いいたします。
122:デフォルトの名無しさん
09/10/20 20:29:07
>>121
何かしたいのかがわからん
123:デフォルトの名無しさん
09/10/20 20:40:58
>>120
なんでそんな、この宿題スレの過去ログでも争って結論が出たのを
今更蒸し返してんの?w
C言語とC++についてもISO、ANSI準拠の標準スタイルについて
説明されていたよ。で、あんたはC++で#include <stdio.h>とするのね?w
124:デフォルトの名無しさん
09/10/20 20:43:24
>>123
するだろ?
C++の規格のどこかにCのライブラリを用いてはならないって書いてあった?
125:デフォルトの名無しさん
09/10/20 20:45:45
>>124
このキチガイさんは<cstdio>って書いて欲しいんだよ
126:デフォルトの名無しさん
09/10/20 21:46:53
>>120
なんか引っかき回してすまないんだが、
mainのプロトタイプってどこかに書かれてる?
無いなら、最初に出てきた時、つまりmainの定義を以て宣言とする挙動になるはずだよね。
127:デフォルトの名無しさん
09/10/20 21:48:57
ANSI-Cにおいて、int main()が非合法であるかの確認をしたいです。
128:デフォルトの名無しさん
09/10/20 21:54:16
>>126
宣言のときなんていってなくね?
プロトタイプ宣言の時なんだから実体の定義を伴う宣言とは別だろ
129:デフォルトの名無しさん
09/10/20 21:55:20
>>118 unionを知らなくても、FILE*は知ってるだろう。もしscanfの使い方知りたいなら別のスレいけ。
#include <stdio.h>
int main(void) {
int i, b;
float a;
unsigned char c[4];
FILE *fp;
b = 1;
a = b;
fp = fopen("a.txt", "wb");
if(fp == NULL) {puts("ERR"); return 1;}
fwrite(&a, 4, 1, fp);
fclose(fp);
fp = fopen("a.txt", "rb");
if(fp == NULL) {puts("ERR"); return 1;}
fread(&c, 4, 1, fp);
fclose(fp);
for(i=3;i>=0;i--) {
printf("%02X", c[i]);
}
return 0;
}
130:デフォルトの名無しさん
09/10/20 22:07:21
>>128
void hoge(void);
void hoge() {}
int main() { hoge(1); return 0; }
このコードの1行目が無ければコンパイルできるじゃん。
それは、関数の定義内容を元にプロトタイプ宣言と見なしているってことじゃないの?
131:デフォルトの名無しさん
09/10/20 22:08:41
C++です。
x[0] = rand()%6;
x[1] = rand()%6;
x[2] = rand()%6;
y =x[0] + x[1] + x[2];
z[y] = z[y]+1;
変数がわかりにくくてすみません。
xの配列に0~5の値を保存して合計してyに入れます。
それからzの配列(15こぶん)に入れたいのですが、うまくできません。
たとえば、yが3のとき、z[3]に入れたいのですが・・・。
最終的にどの値が何回出たか表示するためにzの配列に保存しています。
この部分の記述は間違っていないでしょうか??
132:デフォルトの名無しさん
09/10/20 22:10:15
>>131
いいよ。
z[y]++;
にしてもいい。
133:132
09/10/20 22:11:49
あ。zは0-15までの16個ぶん必要だよ。
134:>>118
09/10/20 22:24:40
>>131
// C言語です。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, x[3], y, z[15];
srand(time(0));
for(i=0;i<15;i++) z[i] = 0;
for(i=0;i<100;i++) {
x[0] = rand()%6;
x[1] = rand()%6;
x[2] = rand()%6;
y = x[0]+x[1]+x[2];
z[y] = z[y] + 1;
}
for(i=0;i<15;i++) printf("%2d %2d\n", i, z[i]);
return getc(stdin);
}
135:>>118
09/10/20 22:26:23
int i, x[3], y, z[16];
136:>>118
09/10/20 22:29:08
for(i=0;i<16;i++) z[i] = 0;
for(i=0;i<16;i++) printf("%2d %2d\n", i, z[i]);
ソーリー
137:デフォルトの名無しさん
09/10/20 22:30:33
>>132
ありがとうございます。
この場合変数の宣言はどのようにするのがよいのでしょうか?
138:デフォルトの名無しさん
09/10/20 22:32:05
>>137
今まで通りでいいよ。
139:デフォルトの名無しさん
09/10/20 22:34:23
C言語です
「キーボードから数を入力して、当たればHIT、はずれはMISSEDを表示し、はずれた場合に限り
正しい数はなんであったかも表示する」
という課題なのですが、自分で↓のようなプログラムを作ったのですがうまくいかずどこがいけないのかがわかりません・・・
どうかよろしくお願いします
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x,y;
srand(time(0));
x=(rand()%3)+1;
printf("imput number=?"); scanf("%d",&y);
if(x=y)
printf("HIT");
else {
printf("MISSED\n");
printf("correct number=x");
}
return(0);
}
140:デフォルトの名無しさん
09/10/20 22:34:54
>>134
>>138
できました!ありがとうございます。
配列の宣言部分がおかしかったようです。
141:デフォルトの名無しさん
09/10/20 22:35:41
>>139
if(x=y)って大入試気になってね?
142:デフォルトの名無しさん
09/10/20 22:36:10
代入式!ええい・・・糞IMEめ
143:デフォルトの名無しさん
09/10/20 22:39:08
そこを直しても、ミスったときの表示はおかしいけどな
144:デフォルトの名無しさん
09/10/20 22:40:50
惜しかったなぁ。
まぁ、ここまで作れたならそれは大丈夫でしょう。
145:デフォルトの名無しさん
09/10/20 22:42:19
代入式・・・?
>>141-144
すみません初心者で・・・
146:デフォルトの名無しさん
09/10/20 22:44:50
>>145
x = yだとxにyの値が入っちゃうので
x == yにしないといけないよって言う話
147:デフォルトの名無しさん
09/10/20 22:45:02
>>145
=でつないじゃったら右を左に入れるだから
==じゃないとだめよ
148:デフォルトの名無しさん
09/10/20 22:46:11
あとはずれた場合に正解を表示させないとね
149:デフォルトの名無しさん
09/10/20 22:48:07
>>146-147
そうでしたか!なるほど・・・
どうもありがとうございます!
>>148
そっちにも問題がありそうですねorz
ちょっと試行錯誤してみます!
150:デフォルトの名無しさん
09/10/20 22:50:39
>>149
まぁ'='と'=='の勘違いは誰もが通る道だから
気にしなくていいよ
151:139
09/10/20 22:56:39
>>150
ありがとうございます!
無事にプログラムが完成しました!
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x,y;
srand(time(0));
x=(rand()%3)+1;
printf("imput number=?"); scanf("%d",&y);
if(x==y)
puts("HIT");
else {
printf("MISSED\n");
printf("correct number=%d",x);
}
return(0);
}
こうしなければいけなかったのですね
大変お世話になりました!
152:デフォルトの名無しさん
09/10/20 22:56:59
その上気づきにくい、、、が、コンパイラが警告出してくれてると思うよ。
警告 : 条件文書くとこで代入してるけど、これ意図して書いてる?
みたいなの。
153:デフォルトの名無しさん
09/10/20 22:58:01
おめでとう。imputはご愛嬌。
154:デフォルトの名無しさん
09/10/20 23:03:19
>>152
英語が苦手で警告文を解読するのも一苦労です・・・
>>153
ぶはw
これは恥ずかしいです・・・
155:デフォルトの名無しさん
09/10/20 23:48:47
C++のソースコードを書きます(キリッ)
#include <stdio.h>
int main()
{
return 0;
}
できますた!C++コンパイラでコンパイルして下さい!(キリッ)
156:デフォルトの名無しさん
09/10/20 23:53:45
>>155
問題なくコンパイルできますね。(g++, bcc32)
157:デフォルトの名無しさん
09/10/20 23:54:45
>>155の何が面白いのか真剣にわからない
158:デフォルトの名無しさん
09/10/21 00:08:41
宿題の答えくれなくて自暴自棄になってるんだと思う。
159:デフォルトの名無しさん
09/10/21 00:10:19
この粘着はCスレによく出没する頭のおかしい人だから、スルーしてください。
160:デフォルトの名無しさん
09/10/21 00:26:52
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク):
問1、符号無し整数xを右にnビット回転した値を返す関数
unsigned right(unsigned x,int n)
{
}
を作成せよ
[3] 環境
[3.1] mac
[3.2] gcc?(よくわかりません)
[3.3] C言語
[4] 期限: 2009年10月22日(木)
よろしくお願いします。
161:デフォルトの名無しさん
09/10/21 00:30:49
右シフトしたのと左シフトしたのの和でいこう。
162:デフォルトの名無しさん
09/10/21 00:43:35
乱数を使って半径rの球面上に一様に点をうつ方法を分かりやすく教えてください。
指向性を考える必要があるため割と難しい問題だと感じます。
163:デフォルトの名無しさん
09/10/21 00:46:34
>>162
質問スレでどうぞ
(ヒント:極座標[0,2π]x[0,π])
164:デフォルトの名無しさん
09/10/21 00:48:33
>>162
極座標使ったら簡単じゃねーの?
165:デフォルトの名無しさん
09/10/21 00:51:53
>>160
unsigned right(unsigned x, int n)
{
reutrn x >> n | x << (sizeof(unsigned) * 8 - n);
}
166:デフォルトの名無しさん
09/10/21 01:26:01
C++でsetwやsetprecisionで指定した桁数を解除するためにはどうしたらいいんでしょうか?
167:デフォルトの名無しさん
09/10/21 07:30:33
>>162
多分 [0, 4πr^2) の一様乱数を座標に変換するのがいいとは思うんだけど難しいね
168:デフォルトの名無しさん
09/10/21 18:24:38
>>126
main() のプロトタイプをわざわざかくのであれば、それは
int main(void);
のでしょうが、普通はプロトタイプなぞかかずに
int main()
{
return 0;
}
と main() を定義しますよね。main() の定義であれば int main() と買いて、規格に沿っていない記法とはならないわけです。
169:デフォルトの名無しさん
09/10/21 19:00:39
>>168
C++ならそうだね
170:デフォルトの名無しさん
09/10/21 19:14:41
>>162 合ってるかどうか自信は無い
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double uniformed_rand(void)
{
return (double)rand()/(RAND_MAX+1);
}
int main(void)
{
double theta, phi;
double r=5.0, x, y, z;
int i;
for(i=0;i<100;i++)
{
phi=asin(uniformed_rand()*2-1);
theta=uniformed_rand()*2*M_PI;
x=r*cos(theta)*cos(phi);
y=r*sin(theta)*cos(phi);
z=r*sin(phi);
printf("x=%f y=%f z=%f\n", x, y, z);
}
return 0;
}
171:デフォルトの名無しさん
09/10/21 19:17:35
>>168
んだから、プロトタイプが書かれていない場合はint main()をプロトタイプだと見なすんじゃないのって話
で、そうなればvoidの省略は許されないよね。
どこかで
int main(void);
という宣言がされていれば、定義時はint main()で問題ないよね。
その上で、int main()の定義がANSI-Cにおいて完全合法であるからには、どこかで宣言されているか、
またはmainが特殊であるかのいずれかだと思うんだ。
172:170
09/10/21 19:22:02
>>170 は間違ってた
173:デフォルトの名無しさん
09/10/21 19:43:42
>>171
プロトタイプ宣言は「実体と伴わない関数の宣言」だろ
int main()って書かれてその後に実体がそのまま書かれてるなら「実体を伴う関数の宣言」なのだからプロトタイプじゃないだろ。
174:デフォルトの名無しさん
09/10/21 19:48:50
>>173
そっか。プロトタイプじゃないか。
プロトタイプ宣言はされてるのかなぁ
175:デフォルトの名無しさん
09/10/21 19:51:27
あ、プロトタイプ宣言があっては困るか。
つまるところint main()は完全合法ってことになるのね
176:デフォルトの名無しさん
09/10/21 19:57:02
ANSIから外れた記述であるわけは無かろうと思っていたのに、C++だから合法みたいなレスが
いっぱいついてどうしようかと思った。
177:デフォルトの名無しさん
09/10/21 20:50:11
>>175
いや、べつに main() のプロトタイプを書いてもいいんですよ。無意味ですが。
178:デフォルトの名無しさん
09/10/21 20:52:44
>>177
え?
どう書くの
179:170
09/10/21 20:54:10
やっぱり >>172 が間違ってるのかも
もう数学なんて分からん orz
180:デフォルトの名無しさん
09/10/21 21:43:26
>>178
「プロトタイプ」の意味、理解してる?
181:デフォルトの名無しさん
09/10/21 22:30:10
[1] 授業単元:C言語とアルゴリズム
[2] 問題文:
キーボードから自然数を入力し1から入力した数までの自然数の中から、
3の倍数と3のつく数字をすべて出力するプログラムを作成しなさい。ただし、
3の倍数と3のつく数字を入力したときに真(非0)、それ以外の場合は偽(0)を返す関数
(関数名は任意)を作成し、それをmain関数内から呼び出して使用すること
{実行例}
自然数を入力して下さい.
100
1から100までで3の倍数と3のつく数字は以下の通りです.
3 6 9 12 13
15 18 21 23 24
27 30 31 32 33
34 35 36 37 38
39 42 43 45 48
51 53 54 57 60
63 66 69 72 73
75 78 81 83 84
87 90 93 96 99
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:明日まで
182:デフォルトの名無しさん
09/10/21 22:55:13
#include <stdio.h>
int f(int n)
{
if(n % 3 == 0) return 1;
while(n) {
if(n % 10 == 3) return 1;
n /= 10;
}
return 0;
}
int main(void)
{
int i, n, cnt;
printf("自然数を入力して下さい.");
scanf("%d", &n);
printf("1から%dまでで3の倍数と3のつく数字は以下の通りです. \n", n);
for(i=1,cnt=0; i<=n; i++) if(f(i)) printf("%d%c", i, ++cnt % 5 ? ' ' : '\n');
return 0;
}
183:162
09/10/21 23:08:13
>>170
考えて頂いてありがとうございます。
結局点が選ばれる確率を1/4πとして,極座標表示での微小領域に点が入る確率の積分が1になることを利用し,
微小領域の確率を変形して無理やり乱数を使える形にしました。省略しすぎた説明ですいません。
結局 ( theta, phi ) = ( arccos(r1), 2*pi*r2 ) という式を導きました。
但し,r1:[-1, 1],r2:[0, 1]で,theta:[0, pi],phi:[0, 2*pi]で考えています。
184:デフォルトの名無しさん
09/10/21 23:51:24
>>178
難しく考えすぎ。
#include <iostream>
int main( );
int main( )
{
std::cout << "Hello World" << std::endl;
return 0;
}
185:デフォルトの名無しさん
09/10/22 00:07:52
>>175
プロトタイプ宣言がどうとか、独自の環境なら話は別。
もう少し言葉の意味を理解する頭を持ってくれよ。
ANSI、ISO準拠では条件もしっかり明記されている。
main関数を プログラムの開始 とする。
自分でソースの中から開始の関数を指定できるなら
もはやISO、ANSI準拠にあらず、ご自由にどうぞ。
で、ANSI、ISO準拠の 標準スタイル ではC言語は引数がないなら
int main(void)としている。従うか従わないから各個人の任意にお任せ。
int main()でも良いじゃないか?どうぞどうぞ。別にそれが
間違っているなんて誰も言ってませんよ?
186:デフォルトの名無しさん
09/10/22 00:09:21
>>181
世界のアツナベキターーーーー!
187:デフォルトの名無しさん
09/10/22 00:41:34
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
問1
行列のかけ算を使って幅20、高さ140の長方形の横に3.3倍、縦に0.4倍の拡大率で表示をするプログラムを作成せよ。
問2
サンプルプログラムを参考にして、画面の中心に幅80、高さ50の長方形を原点を中心にπ/8だけ回転させた長方形を描くプログラムを作成せよ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
問3
画面上に描かれた長方形がキー入力によって原点を中心に回転するアニメーションを実現するプログラムを作成せよ。キーの「1」と「3」で回転角度が増減するようにせよ。
[3.1] WindowsXP
[3.2] Turbo c++ 4.0
[3.3] C++
[4] 今週の金曜日まで
お願いいたします。
188:デフォルトの名無しさん
09/10/22 00:45:45
>>185
int main() { return 0; } は完全に ANSI 準拠ですけれども、何がおっしゃりたいのでしょうか?
>>184
int main(void);
int main() { return 0; }
ではなかろうかと。プロトタイプには void が必要となるのが ANSI 準拠です。
189:188
09/10/22 00:47:27
>>184
失礼、C++ で書いてありましたね。ごめんなさい。
190:デフォルトの名無しさん
09/10/22 02:11:06
>>185
ああ、そういうこと?
K&Rなんかは、合法だが標準じゃないスタイルで記述された、それだけの話か。
標準じゃないからといってint main()がひたすらに叩かれる理由がよく分からんけど、とりあえず理解した。
191:デフォルトの名無しさん
09/10/22 02:25:22
こいつに触っちゃダメ
192:デフォルトの名無しさん
09/10/22 02:57:43
こいつ?そいつ?
193:デフォルトの名無しさん
09/10/22 12:56:02
>>191
お前に触れない方が良いことは分った。理解力のない池沼めw
194:デフォルトの名無しさん
09/10/22 12:58:51
>>188
> 何がおっしゃりたいのでしょうか?
分らないならレスするなよ、バカw
準拠ですけれども?意味不明。前提条件もあってのことだが???
だから敢えて細かく説明されてんじゃん。いい加減、この手の話は
過去ログで決着がついているから、後は自分で調べろ。
> int main() { return 0; }
激しく意味不明な指摘w
195:デフォルトの名無しさん
09/10/22 13:05:54
>>185はプロトタイプ宣言についてじゃないぞ?
ANSI、ISO準拠のmain関数の記述の「標準スタイル」についてだぞ?
mainに関係なくプロトタイプ宣言にvoidが必要だのって、そういう話じゃない。
int main(void)かint main()か?だから上の方でC言語 int main() (笑)とか
言われてたんだろ。
後で必死に反発したつもりなのか、C++が読めない「文盲」なんて
人を見下す差別用語を平気で使うならず者が出てくるし。
C++なんて突っ込むから #include <stdio.h> についてさらに突っ込まれてやんの。
もう支離滅裂。話の主題、論点が分らないならレスしないで構わんよ。
自分が無知だとばれますよ?
196:デフォルトの名無しさん
09/10/22 13:17:12
>>194
そりゃそこだけ抜けば意味不明な指摘になる
プロトタイプのとこだとおもうよ
ANSI-Cにおけるint main(){return 0;}は合法であるという旨のレスをいくつかしたんだけど
>>176の通り、C++なら大丈夫だよ!というのが混ざってくるから話がこじれたんじゃないか?
C++は関係ない、で捨てようにも、「C++なら」ってことはCではダメだという風に取れちゃうし。
197:デフォルトの名無しさん
09/10/22 13:26:15
ISO、ANSI準拠では プログラムの開始をmain関数 としているわけだが
それをプロトタイプ宣言とか言い出したら意味不明だわw
いい加減、プロトタイプ宣言から離れろ
198:デフォルトの名無しさん
09/10/22 13:37:53
なんだ、いつもの話をずらして粘着する人か
199:デフォルトの名無しさん
09/10/22 15:59:01
HANDLE a;
…ハンドル取得…
HDC b = (HDC)a;
これってダメなんだっけ?w
200:デフォルトの名無しさん
09/10/22 16:06:52
>>199
aは何のハンドルですか?
201:デフォルトの名無しさん
09/10/22 16:07:36
フォントです
202:デフォルトの名無しさん
09/10/22 16:53:18
>>201
フォントのハンドルをHDCにキャストするのは、ダメです。
使い方が間違っています。
203:デフォルトの名無しさん
09/10/22 16:55:38
>199
typedef struct hcd {
foo_t foo;
} *HDC;
typedef struct handle {
struct hcd hdc;
bar_t bar;
} *HANDLE;
typedef struct font {
struct handle handle;
baz_t baz;
} *FONT;
とかなっているんだったら、いいでそ
もしかしてHDCって、Windowsのあれかな。
typedef void *HANDLE;
typedef struct hdc {
foo_t foo;
} *HDC;
typedef struct font {
struct hdc hdc;
bar_t bar;
} *FONT;
こんなのでもいいわ。
もう、typedef void *HANDLE, *HDC, *FONT;でもいいわ。
どういう風に宣言なり定義なりされているのかわからないと何とも言えない。
204:デフォルトの名無しさん
09/10/22 17:30:19
HDCとかHANDLEとかWindowsのあれでしょ
Windowsのスレへどうぞ
void*をむやみにキャストしてもだめということだろうが
205:デフォルトの名無しさん
09/10/22 21:57:18
[1] プログラミング演習
[2]以下のプログラムの図形を画面の中心に平行移動をしてから表示するように改造せよ。
結果として画面の中央(320, 240)を中心とした回転移動の角度をキー入力によって増減するようにせよ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3.1]WindowsXP
[3.2] turbo c++ 4.0
[3.3] c++
[4] 明日中
よろしくおねがいします。
206:デフォルトの名無しさん
09/10/22 22:11:56
>>199
大体の流れとして。
HDC hdc;
PAINTSTRUCT ps;
hFont = CreateFont(…);
hdc = BeginPaint(hWnd, &ps);
SelectObject(hdc, hFont);
じゃないの。それぞれ宣言場所違うけどね。
デバイスコンテキストハンドル2つ生成してSelectObjectすればそれっぽいんじゃないか?。
207:デフォルトの名無しさん
09/10/22 23:55:47
Visual StudioでC++をやり始めたんですが
実行してもすぐに
コマンドプロンプトが閉じてしまって結果が見れません
対処法を教えてください。
208:デフォルトの名無しさん
09/10/23 00:01:21
僕の肛門も出すものを出したら直ぐに閉じてしまいます ><;
209:デフォルトの名無しさん
09/10/23 00:01:29
右クリック→設定 で
「終了後に自動的に閉じる」のチェックを外す。
210:デフォルトの名無しさん
09/10/23 00:13:56
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
[1 2 0] [3 2 0 1] [3 4 0 2 1]みたいな同じ数字を使わない任意の長さでランダムな数列の作成するプログラム。
[3] 環境
[3.1] OS: vista
[3.2] コンパイラ名とバージョン: gcc ?
[3.3] 言語: C
[4] 期限: 来週の木曜日
rand()、switchでごり押しくらいしか思いつかないです…
211:デフォルトの名無しさん
09/10/23 00:20:49
>>210
カードシャッフルのアルゴリズムと同じ
212:デフォルトの名無しさん
09/10/23 00:23:11
>>211
論より証拠。口先よりソースコード。
213:デフォルトの名無しさん
09/10/23 00:46:22
>>210
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v)
{
int n,*a,i;
if (c<2)return 0;
a=malloc((n=atoi(v[1]))*sizeof(int));
if (a==NULL)return 1;
srand(time(NULL));
for (int i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (int i = 0; i < n; ++i) {
int k = i + rand() % (n - i); printf("%d ", 1 + a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}
214:デフォルトの名無しさん
09/10/23 00:46:40
>>209
207なですがどこで右クリックすればいいのか
教えてもらえないでしょうか。
215:デフォルトの名無しさん
09/10/23 00:51:33
>>214
.pif ファイル。
つーか、単に main の最後に getchar() か何か付け足して、
エンターで終了ってことにしとけば良いんじゃね?
216:213
09/10/23 00:54:49
これで出来てる?
携帯だから自分で確認できないんだが。
217:デフォルトの名無しさん
09/10/23 00:55:53
>>215さんありがとうございました
今日から勉強始めて
まったく分からない状況だったので助かりました
218:デフォルトの名無しさん
09/10/23 01:54:50
int main(int c, char **v) (笑)
srand(time(NULL)); (苦笑)
for (int i = 0; i < n; ++i) a[i] = i; (爆笑)
int k = i + rand() % (n - i); printf("%d ", 1 + a[k]); (大爆笑)
putchar(8); (失笑)
219:デフォルトの名無しさん
09/10/23 02:18:55
修正
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;
srand(time(NULL));
for (i = 0; i < n; ++i) a[i] = i+1;
putchar('[');
for (i = 0; i < n; ++i){
k = i + rand() % (n - i);
printf("%d ", a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}
220:デフォルトの名無しさん
09/10/23 02:29:22
問題よくみたら0からだった。
修正しといてくれ。
221:デフォルトの名無しさん
09/10/23 02:32:41
つーことで修正
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;
srand(time(NULL));
for (i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (i = 0; i < n; ++i){
k = i + rand() % (n - i);
printf("%d ", a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}
222:デフォルトの名無しさん
09/10/23 04:31:04
前から抜くより、後ろからの方が足し引きすくないよ。
for(i=n; i; ) {
k = rand() % i--;
223:デフォルトの名無しさん
09/10/23 04:55:38
じゃあ修正
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;
srand(time(NULL));
for (i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (i=n; i;){
k = rand() % i--;
printf(i?"%d ":"%d", a[k]);
a[k] = a[i];
}
putchar(']');
return 0;
}
224:デフォルトの名無しさん
09/10/23 05:03:45
個人的には
for (i = 0; i < n; i++){
k = rand() % (n-i);
a[k] = a[n-i];
}
とするのが好きだな。
225:デフォルトの名無しさん
09/10/23 05:07:10
a[k] = a[n-i-1]じゃね?
226:デフォルトの名無しさん
09/10/23 05:17:47
おぉーーっと、ここでうpロダ君のロングパス!
227:C初心者
09/10/23 06:26:19
>129, 135, 136さん
御礼が遅くなりました。
ありがとうございました。
228:デフォルトの名無しさん
09/10/23 06:48:23
>>223
ループの中で場合わけするなら、]もつけちゃえばいいのに。
229:デフォルトの名無しさん
09/10/23 08:10:48
>>210
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j, n, *p;
srand(time(NULL));
scanf("%d", &n);
p = malloc(n * sizeof(int));
for(i=0; i<n; i++) {
j = rand() / (RAND_MAX + 1.0) * (i + 1);
p[i] = p[j];
p[j] = i;
}
printf("[%d", p[0]);
for(i=1; i<n; i++) printf(" %d", p[i]);
printf("]\n");
free(p);
return 0;
}
230:デフォルトの名無しさん
09/10/23 11:44:38
【質問テンプレ】
[1] 授業単元:プログラミング言語C
[2] 問題文:
以下のプログラムの『考える』ところを直し、キーボードから1を入力したらRed2ならGreen、3ならBlueの文字列が画面表示されるようにせよ。またそれ以外の数字が入力されたら『終了します』と画面表示されプログラムが終了するようにせよ
#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
scanf("%d",&input);
if(考える) {
printf("%s\n", colors[考える]);
};
return 0;
}
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:VC ++
[3.3] 言語: C
[4] 期限:早く出せば点数が上がるので出来るだけ早くお願いします
[5] その他の制限:
よろしくお願いします
231:デフォルトの名無しさん
09/10/23 11:49:39
>>230
#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
scanf("%d",&input);
if(1 <= n && n <= 3) {
printf("%s\n", colors[n - 1]);
}else {
printf("終了します\n");
}
return 0;
}
232:デフォルトの名無しさん
09/10/23 11:54:19
>>230
#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
while(1){
scanf("%d",&input);
if(input>0&&input<4){
printf("%s\n", colors[input-1]);
}else{
printf("終了します\n")
break;
}
}
return 0;
}
233:デフォルトの名無しさん
09/10/23 12:36:50
int main() (笑)
234:デフォルトの名無しさん
09/10/23 12:41:02
>>230
#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3"};
char b[80];
gets(b);
for(input=0;input<4;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}else{
printf("終了します\n");
}
return 0;
}
235:デフォルトの名無しさん
09/10/23 12:56:45
>>230
#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
char b[80];
gets(b);
for(input=0;input<11;input++)if(!strchr(b,"0123456789"[input]))printf("終了します\n"),return 0;
for(input=0;input<11;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}else if(input<10){
printf("終了します\n");
}
return 0;
}
236:デフォルトの名無しさん
09/10/23 13:05:54
つまんね
237:デフォルトの名無しさん
09/10/23 13:08:44
こうだろ。
#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
char b[80];
gets(b);
for(input=0;input<11;input++)if(!strchr(b,"0123456789"[input]))printf("終了します\n"),return 0;
for(input=3;input<11;input++)if(strstr(b,nums[input]))printf("終了します\n"),return 0;
for(input=0;input<4;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}
return 0;
}
238:デフォルトの名無しさん
09/10/23 13:37:15
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
char *colors[] = {"Red", "Green", "Blue"};
int input, i;
char buf[1024];
char *num[] = {"0","1","2","3","4","5","6","7","8","9"};
char *num2[] = {"零","一","二","三","四","五","六","七","八","九"};
fgets(buf, 1024, stdin);
input = atoi(buf);
for(i = 0; i < 10; i++) if (strncmp(buf, num[i]) == 0) input = i;
for(i = 0; i < 10; i++) if (strncmp(buf, num2[i]) == 0) input = i;
if (input <= 0 || input >= 4) printf("終了します\n");
printf("%s\n", colors[input]);
return 0;
}
239:デフォルトの名無しさん
09/10/23 13:43:12
__declspec(dllimport) extern int printf(const char *s, ...);
__declspec(dllimport) extern int scanf(const char *s, ...);
int main(void) {
char *colors[] = {"Red", "Green", "Blue"};
int input;
char b[80];
gets(b);
input = atoi(b);
if (input <= 0 || input >= 4) printf("終了します\n");
else printf("%s", colors[input - 1]);
return 0;
}
240:210
09/10/23 13:47:52
>>211
ありがとうございます。
検索ワードが思い浮かばず困っていた面もありました。
時間はあるのでじっくりググって煮詰めようと思います。
>>213=>>219=>>221=>>223
>>229
ありがとうございます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
自分でも布団の中で考えn個の中から1つを選ぶ、n-1個の(ryみたいな感じでやってみましたが比べると無駄が多い…
参考に改善しようと思います。
241:デフォルトの名無しさん
09/10/23 13:52:09
knuthやfisher-yatesでググると参考になる。
242:デフォルトの名無しさん
09/10/23 14:05:23
putchar(8) って何? バグ?
243:デフォルトの名無しさん
09/10/23 14:11:29
asciiコードぐらい自分で調べろよw
244:デフォルトの名無しさん
09/10/23 14:23:37
さぁとっととリストの課題こいや~!麻呂のミートクソースをお見舞いしてやんよでおじゃる?
カレンダー出力も来るでおじゃる!
245:デフォルトの名無しさん
09/10/23 16:45:24
いやっほー!
246:麻呂専用
09/10/23 16:55:35
[1] C言語中級
[2] 8X8のオセロの全局面をリスト構造で列挙しそれを適当なファイルに保存するプログラム
次の問いの答えも添付すること
(1)先手必勝、後手必勝かの決定
(2)平行初期値と通常初期値(回転対称、鏡映は同一視)それぞれの
場合において到達可能な葉は全部の場合の何パーセント程度であるか?
[3] Windows 2000/Visual-C++ 6.0/C言語(厳守)
★置く場所が無い場合に限りパスが認められる。
★FileMappingやVirualAllocateのWindowsの機能を利用し、
メモリがパンクしないように留意すること。メモリの搭載は128M程度
を仮定する。
[4]来週月曜日迄(厳守)
247:デフォルトの名無しさん
09/10/23 18:21:25
全文を書くと大変なことになるのと(300行以上)、
どこから、どこまでを引っこ抜いてきて書けばいいかが分からないので、とりあえず下記を抜粋しました。
この部分で文法的に間違ってる文章はありますでしょうか?
nはdefine済みです。よろしくお願いします。
int i, l, s, c, k, d[n];
srand(10);
for(k=0; k<n; k++){
d[k] = 0;
}
i = floor(rand() * n);
c = i;
for(l=0; l<10; l++){
s = floor(rand() * rowvec[c].num );
c = rowvec[c].kazu[s];
d[c]++;
}
248:デフォルトの名無しさん
09/10/23 18:28:02
>>1
>【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
249:デフォルトの名無しさん
09/10/23 19:09:34
【質問テンプレ】
[1] 授業単元: 情報演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
うpろだお借りしました。
10001.txtの中の
int i, l, s, c, d[n];
init_genrand(10);
for(k=0; k<n; k++){
d[k] = 0;
}
i = floor(genrand_real2() * n);
c = i;
for(l=0; l<10; l++){
s = floor(genrand_real2() * rowvec[c].num );
c = rowvec[c].kazu[s];
d[c]++;
}
for(c=0; c<n; c++){
printf(" %d\n", d[c]);
}
}
が手間取っている部分です。どうしてもうまく動作しません。
よろしくお願いします
250:デフォルトの名無しさん
09/10/23 19:42:46
>>249
何がどうなって欲しいの?
251:デフォルトの名無しさん
09/10/23 20:10:44
プログラム全体でやっていることは、
隣接行列を作る。
強連結か判定。
ページランクの測定。
です。
>>249では有向グラフで出発点をランダムにとり、
そこからランダムウォークをして、何回か移動したとき、各点にどれだけ移動したかを測定しようとしています。
252:デフォルトの名無しさん
09/10/23 20:25:40
ランダムウォークじゃなくて全部歩くべきなんじゃないの?
253:デフォルトの名無しさん
09/10/23 22:28:46
>249
値を返していない関数がある
245行目で初期化されていない変数を使っている
254:デフォルトの名無しさん
09/10/24 00:55:05
[1] 授業単元:プログラミングⅢ
[2] 問題文(含コード&リンク):外部ファイルより整数を読み込み、棒グラフを描くプログラムを
作る。外部ファイルはコンストラクタで配列に読み込め。使う関数はヘッダーファイルに
publickに定義する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:2009年10月29日10時
[5] その他の制限:特にないです。
255:デフォルトの名無しさん
09/10/24 03:12:57
問題文って本当にそれだけ?
256:デフォルトの名無しさん
09/10/24 09:13:10
mathematicaなんですが、関数を作れとのことなので
ここに投稿させてもらいます。
暇がある方お願いします。
2変量のデータ {{x1, y1}, {x2, y2}, ... , {xn, yn}} を引数として,散布図と相関係数を出力する関数を作成せよ.
257:デフォルトの名無しさん
09/10/24 09:49:53
お断りします
258:デフォルトの名無しさん
09/10/24 14:40:31
テストの平均点を出して小数第2位を四捨五入したいんだけどどうすればいいの?
平均点は出てます。
259:デフォルトの名無しさん
09/10/24 14:46:52
%とfの間に「.1」だっけ?
260:デフォルトの名無しさん
09/10/24 15:12:39
>>258
main(){
float a = 1.56;
int b;
b = a*10+0.5;
a = b/10.0;
printf("%f",a);
return 0;
}
261:デフォルトの名無しさん
09/10/24 15:15:44
#include <math.h>
float round(float val, int decimal)
{
val += pow(5.0, -(decimal+1));
long tmp = val * pow(10.0, decimal);
return tmp/pow(10.0, decimal);
}
262:デフォルトの名無しさん
09/10/24 16:58:52
テキストから"n 100"みたいな文字列を読み込んで、プログラム内でnに100を代入するにはどうすればいいでしょうか?
263:デフォルトの名無しさん
09/10/24 17:14:17
それがコンパイラだよ。
264:デフォルトの名無しさん
09/10/24 17:17:56
>>262
プログラム書くか、>>1を読めばいい。
265:デフォルトの名無しさん
09/10/24 19:07:42
[1] 授業単元:変数の基礎
[2] 問題文(含コード&リンク):このプログラムのどこかに変数における間違いがあります。
その間違いを探しなさい。 URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: visual studio2008
[3.3] 言語: C/C++/どちらでも可
[4] 期限: 明後日まで
[5] その他の制限: 特になし
266:デフォルトの名無しさん
09/10/24 19:27:11
>265
使われていない変数がある
値を返していない関数がある
267:デフォルトの名無しさん
09/10/24 19:41:18
>265
outputが開放されていない
引数が使われていない
未定義動作の式が存在する
268:デフォルトの名無しさん
09/10/24 19:45:31
意図のわからない名前をつけちゃだめ
269:265
09/10/24 20:22:15
>>266>>267
ありがとうございます。
もし良ければ何行目あたりかを教えてください。(スルーでも大丈夫です)
270:デフォルトの名無しさん
09/10/24 21:24:20
>>265
これすごいなw
実装したやつ天才すぎるw
つか宿題じゃねーだろこれ?
271:デフォルトの名無しさん
09/10/24 21:25:44
こういうスレにいると
問題と回答の両方があるから
勉強になるよね☆
272:265
09/10/24 21:28:20
専門学校の宿題です
長いプログラムですが間違えてる所は最初~真ん中らへんにあるって言ってました
関数や引数のことがよく分かっていないんで詳しく説明できる人がいればお願いいたします
273:デフォルトの名無しさん
09/10/24 21:32:43
>>265
このコード自体くそ
はじめから書き直せ
素人丸だし
274:デフォルトの名無しさん
09/10/24 21:37:18
>>272
宿題なのかこれ・・・
これ先生が書いたの?
突っ込みどころ満載なんだがwww
275:デフォルトの名無しさん
09/10/24 21:43:59
>>265
プログラムを見た瞬間目が回った
これだけやる気をなくすプログラムも珍しいな
276:デフォルトの名無しさん
09/10/24 21:46:35
うちの学校の講師はプログラミングテストで合格しないとなれないみたいだから
>>265みたいなひどいコードはないな
277:デフォルトの名無しさん
09/10/24 21:46:57
とりあえず何をしたいプログラムか分らないと途中経過を追うのが怠すぎる…
278:265
09/10/24 21:47:08
>>274
先生が書きました とりあえず自力でがんばってみます。
一応明後日までみなさんの詳しい答え待ってます。おやすみなさい
279:デフォルトの名無しさん
09/10/24 22:13:01
>265
>266, 267
とりあえず、機械的に解析してもらった結果から出したんだけど
URLリンク(kansai2channeler.hp.infoseek.co.jp)
280:デフォルトの名無しさん
09/10/24 22:30:47
>>279
ってか機械的に解析ってどうやんの?プログラマーの俺に教えてちょww
281:デフォルトの名無しさん
09/10/24 22:36:15
lintと違うん?
282:デフォルトの名無しさん
09/10/24 22:36:15
>>280
ツール使うだけ
lint とか
283:デフォルトの名無しさん
09/10/24 22:36:27
>>265
こんなん教えてる専門学校は今すぐ辞めるべき
284:デフォルトの名無しさん
09/10/24 22:37:48
lintかー あざーす
285:デフォルトの名無しさん
09/10/24 22:43:15
lintってフリーソフトなん?
286:デフォルトの名無しさん
09/10/24 22:48:36
>>285
ググれよw
287:デフォルトの名無しさん
09/10/24 23:00:02
ググって見たけど最近のコンパイラなら必要なさそうだな
288:デフォルトの名無しさん
09/10/24 23:09:13
>265
まぁみんなつっこんでるので繰り返しになるが、
問題文自体が間違ってないか。
「このプログラムのどこかに変数における間違いがあります。」
いや、変数の問題じゃ無いんだが、、、。
こんなコードをデバッグさせようとすること自体が間違いでしょ。
専門学校の宿題か。
その講師の言うことは宛にならないと思う。
289:デフォルトの名無しさん
09/10/24 23:20:24
lintとかを使えるようにしようっていう意図なんじゃないかと深読み
290:デフォルトの名無しさん
09/10/24 23:22:06
>>265
これはひどい。
うちの会社なら、これ書いた奴の上司が社長室に呼びつけられるなw
291:デフォルトの名無しさん
09/10/24 23:24:59
>>265
こんなコードを人に見せるなんて恥ずかしくて切腹ものですね。
先生、あさってには死んでるかもしれないんじゃないですか。
292:デフォルトの名無しさん
09/10/24 23:29:09
プログラマが書いたコードじゃなくて数学屋が書いたコードだろ
やつらこんなの書くぞ
293:デフォルトの名無しさん
09/10/24 23:31:58
講師が学生のバイトで、そいつが研究課題でプログラム組んだけどミスがある。
でも自分ではわからないから、バイト先の連中にやらせちゃえ
って感じな気がする。
294:デフォルトの名無しさん
09/10/24 23:36:18
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明後日
295:デフォルトの名無しさん
09/10/25 00:08:00
>>293
確かにw
そんな感じするw
296:デフォルトの名無しさん
09/10/25 00:19:37
>>294
#include <stdio.h>
void rotate(int *p, int size)
{
int i, temp;
for(i=0,size--; i<size; i++, size--) {
temp = p[i];
p[i] = p[size];
p[size] = temp;
} }
int main(void)
{
int a[10], i, length, n;
printf("整数列をローテーションします.\n整数列の長さを入力してください:");
scanf("%d", &length);
if(length <= 0 || 11 <= length) return printf("error");
printf("整数列を入力してください(スペース区切り):");
for(i=0; i<length; i++) scanf("%d", a + i);
printf("ローテーション数を入力してください:");
scanf("%d", &n);
while(n >= length) n -= length;
rotate(a, length - n);
rotate(a + length - n, n);
rotate(a, length);
printf("結果 [ ");
for(i=0; i<length; i++) printf("%d ", a[i]);
printf("]\n");
return 0;
}
297:デフォルトの名無しさん
09/10/25 00:20:00
>>294
もっと単純に書いちゃだめなのこれ?
for (i = 0; i < len; ++i)
{
arr1[ (i + n) % len ] = arr0[ i ];
}
とかさ。
298:デフォルトの名無しさん
09/10/25 00:40:55
>>296
関数の名前はrotateじゃなくてreverseのほうが正しくね?
299:デフォルトの名無しさん
09/10/25 01:21:30
>294
どこかで見たことあるアルゴリズムだと思ったら、「珠玉のプログラミング」にあった奴だ。
問題の仕様には完全に合わせていないけど、
肝心の部分は、reverseを使ってこんな感じ。
void rightRotation(int *pInt, size_t size, size_t shift)
{
while (shift > size) {
/* シフトがサイズを超えたら、さらに一周させる */
shift -= size;
}
if (shift == size) {
/* シフトとサイズが同じなら変化無し */
return;
}
/* 先頭からsize - shiftサイズ分を逆順にする */
reverse(pInt, size - shift);
/* 残り部分を逆順にする */
reverse(&pInt[size - shift], shift);
/* 全体を逆順にする */
reverse(pInt, size);
}
300:デフォルトの名無しさん
09/10/25 01:28:40
>>294
URLリンク(codepad.org)
scanf()追放信者が書くとこうなってしまいました。
301:デフォルトの名無しさん
09/10/25 01:33:22
せめて関数のエラー回避をw
302:300
09/10/25 01:38:45
>>301
うーん、malloc()のエラー回避はしていますが、やっぱり足りないですか?
303:294
09/10/25 01:40:49
実は関数を習ってないので、その部分は回答を参考に書き替えたら
正しい結果になりました。回答ありがとうございました
304:デフォルトの名無しさん
09/10/25 03:24:18
これ作ったら神。
PS postscriptのテキスト抽出するやつ。日本語対応版。
フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増えるよ。
305:デフォルトの名無しさん
09/10/25 03:29:01
乞食は死ね
306:デフォルトの名無しさん
09/10/25 04:10:02
>>304
PDFからテキスト抽出とかどっかで見たことあるからpostscriptからも普通にありそうなもんだけど
307:デフォルトの名無しさん
09/10/25 09:37:59
[1] 授業単元:独学
[2] 問題文(含コード&リンク):URLリンク(www.ioi-jp.org)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:Visual Basic
[3.3] 言語: C
[4] 期限: 無期限
308:デフォルトの名無しさん
09/10/25 09:39:20
>>307
ぁ、Windowsです
お願いします!
309:デフォルトの名無しさん
09/10/25 09:43:57
VBて。
しかも独学て。
独りで学んでないじゃん。
310:デフォルトの名無しさん
09/10/25 09:47:06
VBじゃ駄目ですか?
独学以外に何と書けば良いかわからなかったので・・・。
311:デフォルトの名無しさん
09/10/25 09:49:30
>>310
Visual Studioのことを言いたいのかい?
312:デフォルトの名無しさん
09/10/25 09:50:48
>>311
ん
あ・・・はい。
そうです。すいません
313:デフォルトの名無しさん
09/10/25 09:58:34
>>308ではないのですが、
A~Zまで配列にして
forで文字列を1文字ずつ取り出し
さらにforで配列との比較を行い一致したら
x,y,z以外だったら文字比較forのカウント変数に3を加算
x,y,zならa,b,cをそれぞれを出力用配列の内側配列に格納
という風に考えたんですが
これよりスマートなやり方を教えてください。
314:デフォルトの名無しさん
09/10/25 10:15:51
スマートかどうか知らんが
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main(int argc, char **argv)
{
char *p;
if (argc != 2) exit(EXIT_FAILURE);
if (strlen(argv[1]) > 1001) exit(EXIT_FAILURE);
for (p = argv[1]; *p != '\0'; p++) {
if (!isupper(*p)) {
exit(EXIT_FAILURE);
}
}
for (p = argv[1]; *p != '\0'; p++) {
putchar(((*p) - 'A' + 26 - 3) % 26 + 'A');
}
putchar('\n');
exit(EXIT_SUCCESS);
}
315:デフォルトの名無しさん
09/10/25 10:21:10
あ。'A'~'Z'が連続しているコードが前提です。
316:デフォルトの名無しさん
09/10/25 10:52:13
>307
hashとかmapが使えるとすげー楽なのだけれど、Cには無いので代わりの方法をやってみた。
要はD→A、C→Z・・・の写像を定義してあげればよい。mapだとそのままこの写像が定義できる。
Cではできないので、インデックスに変換してあげている感じ。
#include <stdio.h>
#include <string.h>
#define ELENUM(array) (sizeof(array) / sizeof(array[0]))
/* A, B, C...,Zを0, 1, 2, .. 25に変換。 変換できない場合-1 */
int alphIndexing(char ch)
{
char alph[] = "ABCDEFCHIJKLMNOPQRSTUVWXYZ";
int idx;
for (idx = 0; idx < ELENUM(alph); idx++) {
if (alph[idx] == ch) {
return idx;
}
}
return -1;
}
int main(int argc, char **argv)
{
const char aCaesarTbl[] = "*XYZABCDEFCHIJKLMNOPQRSTUVW";
const char *pConvert = (aCaesarTbl + 1);
int idx;
printf("input : %s\n", argv[1]);
printf("encoded: ");
for (idx = 0; idx < strlen(argv[1]); idx++) {
putchar(pConvert[alphIndexing(argv[1][idx])]);
}
putchar('\n');
return 0;
}
317:デフォルトの名無しさん
09/10/25 11:12:48
>>314
>>316
共にエラーが出る・・・
318:デフォルトの名無しさん
09/10/25 11:16:01
>>317
へぇ。
319:316
09/10/25 11:42:44
引数入力してないでしょ。
入力チェック省いていたから。
ちょっと改善して入力チェックも入れた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
320:デフォルトの名無しさん
09/10/25 11:55:03
#include <stdio.h>
int main(){
int c;
while((c=getchar()) != EOF){
if('D' <= c && c <= 'Z') putchar(c-3);
else if('A' <= c && c <= 'C') putchar(c+23);
else putchar(c);
}
return 0;
}
321:デフォルトの名無しさん
09/10/25 13:54:52
[1] 授業単元:C++
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限: 2009年10月30日
私なりに考えてみましたがわかりませんでした。
どなたかお解りになる方がいましたら宜しくお願い致します。
322:デフォルトの名無しさん
09/10/25 15:09:43
>321
ポインタがわかっていないようですね。その点は要復習。
第3、第4引数がポインタ渡しか参照渡しか、曖昧ですが、
一応参照渡しでやってみた。
doubleの余りとか適当。
void div(int op1, int op2, int& sho, int& amari)
{
sho = op1 / op2;
amari = op1 % op2;
}
void div(double op1, double op2, double& sho, double& amari)
{
sho = int(op1 / op2);
amari = op1 - sho * op2;
}
323:デフォルトの名無しさん
09/10/25 15:10:12
インラインアセンブラでidivとか言ったら怒られるだろうか。
324:デフォルトの名無しさん
09/10/25 18:22:58
>>254
URLリンク(codepad.org)
プログラムの最初に想定しているファイル形式と出力を書いておきます。
325:324
09/10/25 21:26:09
書き直しました。
URLリンク(codepad.org)
326:デフォルトの名無しさん
09/10/25 21:39:30
[1] 授業単元:C言語とアルゴリズム
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:明日まで
よろしくおねがいします!!
327:デフォルトの名無しさん
09/10/25 21:53:33
[1] 授業単元: C言語プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2009年10月28日 16:00まで
328:デフォルトの名無しさん
09/10/25 21:57:20
>>326 問題1-2
#include<stdio.h>
char *ul2a(char buf[40], unsigned long value){
int i;
char *p;
for(i=31,p=buf;i>=0;i--){
*p++=((value>>i)&1)+'0';
if(i%4==0) *p++=' ';
}
*--p='\0';
return buf;
}
int main(int argc, char *argv[]){
char buf[40];
unsigned long x=0, y=0;
printf("符号なし32bit整数2つを入力してください.\n");
scanf("%lu %lu", &x, &y);
printf("%lu は2進表示で %s ,\n", x, ul2a(buf, x));
printf("%lu は2進表示で %s です.\n", y, ul2a(buf, y));
printf("~%lu は2進表示で %s ,\n", x, ul2a(buf, ~x));
printf("~%lu は2進表示で %s です.\n", y, ul2a(buf, ~y));
printf("%lu << 1は2進表示で %s ,\n", x, ul2a(buf, x<<1));
printf("%lu >> 1は2進表示で %s です.\n", y, ul2a(buf, y>>1));
printf("%lu & %lu は2進表示で %s です.\n", x, y, ul2a(buf, x&y));
printf("%lu | %lu は2進表示で %s です.\n", x, y, ul2a(buf, x|y));
printf("%lu ^ %lu は2進表示で %s です.\n", x, y, ul2a(buf, x^y));
return 0;
}
329:デフォルトの名無しさん
09/10/25 22:23:33
>>326
問題1: URLリンク(codepad.org)
問題2: URLリンク(codepad.org)
330:デフォルトの名無しさん
09/10/25 22:41:19
>>326です
>>328、329さんありがとうございます。
問題1-1なんですが>>328さんの問題1-2のようにもう少し簡単になりませんか?
331:デフォルトの名無しさん
09/10/25 22:43:38
すげー煽りだw
332:329
09/10/25 22:51:03
>>330
>>328 ではポインタを使っていますが、>>329 ではポインタを使わず、算術演算(割り算と余り演算子)で処理しています。
あるいは、わかりやすいように配列にいったん結果をいれるようにしています。4桁ごとのくぎりも普通にかいています。
>>329 も簡単だと思いますが( >>328 を否定しているわけではありません)、やっぱり短く書いたほうがわかりやすいでしょうか?
333:デフォルトの名無しさん
09/10/25 23:37:00
[1] 授業単元:
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows?
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: (2009年10月30日17;50まで
うまく実行できません。おねがいいたします。
334: ◆pGt6/pVDLk
09/10/25 23:40:45
335:333 ◆F8HqQ.0zX2
09/10/25 23:43:07
見にくいですが、宜しくおねがいします。
336:デフォルトの名無しさん
09/10/26 00:03:32
>327
気が向いただけ、ただ気が向いただけ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
s/foo.zip/foo.tar.gz/
337:デフォルトの名無しさん
09/10/26 00:40:51
これ作ったら神。
PS postscriptのテキスト抽出するやつ。日本語対応版。
フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増える。
338:デフォルトの名無しさん
09/10/26 00:47:46
ちょっとした質問なんですが、
123
この数列を配列に
321
と、格納するにはどうすれば良いですか?
339:デフォルトの名無しさん
09/10/26 00:54:04
a[0]=1,a[1]=2,a[2]=3;
tmp=a[0],a[0]=a[2],a[2]=tmp; //swap(a,b)
a[2]=1,a[1]=2,a[0]=3;
ちょっと横道に
340:デフォルトの名無しさん
09/10/26 00:55:46
>>339
説明不足でした
scanfから数字を入力して、
その数字を>>338みたいにするにはどうすれば良いですか?
341:デフォルトの名無しさん
09/10/26 01:09:21
後ろから順に前に入れていけばいい。
342:デフォルトの名無しさん
09/10/26 01:11:38
そのやり方がよく・・・
343:デフォルトの名無しさん
09/10/26 01:25:30
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux)
[3.2] gcc 3.4
[3.3] 言語: C
お願いしますm(_ _)m
344:デフォルトの名無しさん
09/10/26 01:27:01
意味がよくわからんけどこういうことかな
int a[3];
int i;
for (i = 0; i < 3; i++) scanf("%d", &a[2-i]);
345:デフォルトの名無しさん
09/10/26 01:27:58
>>344は>>340へのレスね
346:デフォルトの名無しさん
09/10/26 01:38:59
>>345
123 って入力したときに、
配列に
_____
|3|2|1|
ーーーーー
って格納させる方法です・・・
国語力無くて申し訳ない
347:デフォルトの名無しさん
09/10/26 02:31:10
>>346
#include <stdio.h>
int main(void){
int i;
int x;
int a[3];
scanf("%d",&x);
for(i=0;i<3;i++){
a[i] = x%10;
x /= 10;
}
for(i=0;i<3;i++) printf("a[%d] = %d\n",i,a[i]);
return 0;
}