気に入らない質問やその他や発言はスルーの方向で。
相変わらずその日本語おかしいままか
52代目から続く伝統の誤字なんだから、軽々しく変えていいわけねーだろw
質問や発言は で良いかな?その他発言か?
>>993 文字を一文字入力して、入力された文字が、英字の小文字であるか、英字の大文字であるか、数字であるか、それ以外の文字であるか判別
>>986 (9982) bitmap(BMP)ファイルの上に円を書く
>>923-925 (CODE) ナップサック問題のプログラムを利用し、グラフ彩色問題に当てはめる
>>883 Turbo C CUI画面制御 5問。
>>882 イテレータを使って微分方程式を解きたい
>>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;
}
}
charの変数名にstrってw
cctypeは使わないのか。
>>986 FILE *fp = fopen("bitmapfile.bmp", "w+");
fprintf(fp, "円");
fclose(fp);
>>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 :
デフォルトの名無しさん :2009/10/17(土) 14:17:49
17 :
15 :2009/10/17(土) 19:59:01
19 :
デフォルトの名無しさん :2009/10/17(土) 20:40:26
前スレの993です。 ご回答してくださった方ありがとうございました。 参考にさせていただきます。
20 :
15 :2009/10/17(土) 20:47:01
>>18 ありがとうございます。
いいえ、十分です。
本当にありがとうございました。
課題2は、課題1に()を使えるようにしただけですので
その部分を削って提出します。
助かりました。
22 :
デフォルトの名無しさん :2009/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でお願いします
そこは行くとかそういう問題じゃないw
24 :
デフォルトの名無しさん :2009/10/18(日) 01:19:02
>>23 すみません。これ分かる人いますか
C++です
要するに二分法でしょ C++は関係無い
26 :
デフォルトの名無しさん :2009/10/18(日) 01:20:24
全くできてないものを貼って、ここまでは行きますとか言われてもな。 そんなんだったら、何も書かない方がマシ。
28 :
デフォルトの名無しさん :2009/10/18(日) 01:22:40
29 :
デフォルトの名無しさん :2009/10/18(日) 01:27:38
>>27 ここまでは行きます
というか
始まりはこの文からです
っていう意味です…
質問者は中学生なんだから、少しはいたわれw
教育は若いうちにやるほうが効果が高い
>>22 まずはテンプレート
>>1 にそって問題を整理してください。書きなぐり?では他の人間に伝わりません。
日本語を磨くこともプログラミングでは重要です。我々は日本語を使って思考しているわけですから。
>>32 そうですか。もう私らではだめですかね。(TT)
>>035 // 適当〜なので。
int main(void) {
while(1)
printf(" %.16g\n", e());
return 0;
}
37 :
35 :2009/10/18(日) 19:39:56
>>36 ありがとうございました。
本当に助かりました。
[1] 授業単元: 数値計測演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9989.txt 問題文
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] その他の制限:特にありません
まったく解決方法がわからないです
よろしくお願いします
3x → 3*x
>>39 に加えて、途中の printf() の引数を間違えています。(表示がおかしい)
printf("%d:f(%20.16f)=%9.2e\n", i, c ,fc); に修正してください。i に対応する書式が足りない。
[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まで]) いろいろ考えましたが、全く分りませんでした、どうかお願いします。
[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日 よろしくお願いします。
44 :
43 :2009/10/19(月) 01:09:55
問2 あとはこれを参考に考えて下さい。
>>41 e-lisp でしないといけないのですか?そうならばすれ違いですね。
46 :
43 :2009/10/19(月) 01:19:51
>>32 物事をよく理解できない、勘違いでも丸暗記では意味がない。
教育の意味にもよるが、死ぬまで勉強。
生きている内に知ることは多い、時代も変わっていくしね。
そして、於いて朽ち果てていく己を知るのじゃ〜〜wwww
せめて漢字変換くらいまともにできるようになってからにしろよ、そういう寝言はよw
wつけといてよくいえるな。。。
>>45 emacs画面でする作業の事を、emacsで何々すると言う。例えばコンパイル&デバッガ。
>。。。 こんな句点の使い方は日本語にゃねーよw
ど っ ち も ど っ ち
>>50 なるほど。
emacsでデバッガする
ですね
55 :
デフォルトの名無しさん :2009/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 :
デフォルトの名無しさん :2009/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;
}
あとshisu()の位置もおかしいな
61 :
デフォルトの名無しさん :2009/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] その他の制限:簡単めのコードでお願いします。
>61 Brain F*ckの処理系作ればいいのか
63 :
sage :2009/10/19(月) 19:54:50
64 :
デフォルトの名無しさん :2009/10/19(月) 21:36:30
前のスレの最後の方にユーグリッドの互除法のプログラムがあったはずなんですが、
ここに貼ってもらえませんか?
>>900 番代後半だった気がするんですが
ユークリッド
66 :
デフォルトの名無しさん :2009/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; } 二分法のプログラムこれどこが違うんですか
>>66 質問の仕方が違うんじゃないの?
cos(x1/2)*cos(x2/2)>0 とか
>>48 うわ〜〜、変換ミスくらいで突っ込む、絶対にソースコードも
コンパイルするまでエラーしたことがない完璧主義者ですね?
カッコいいです!尊敬します!だから早く老いて死んでくれw
>>51 もはやこういった場所では正式な文書より喋り言葉が一般的なんだが
その程度のことを気にするお前は時代には乗り遅れる。
そもそも、文化は現在も人間が作っている。正式に認められていなければ
それは間違いというのは、文化の衰退を招く。少しは理解する頭を持て。
で、三点リーダーって・・・ではなく…を使うのが正しいとかなんとか。
所詮、自分が知っている 日本語も一部 だと気づくんだな。
>>69 と、偉そうなことを言っているが実はよくわかっていない馬鹿な
>>69 なのであった
71 :
254 :2009/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回目のチェックで処理に入ってしまいます。これを上手く動く様にするにはどうすれば良いかソースの改良をお願いします。
>>71 > 2回確認して2回とも同じだった場合のみ処理を行うこと。
この辺が釈然としない
74 :
デフォルトの名無しさん :2009/10/19(月) 23:17:08
>>48 いやぁ〜ごめーん、ついうっかり。こういった場所や数学に関する話を他でするもんで
〜に於いてと記入することがあるんで、つい変換ミスしてたのに気づかなくって
ごっめーん、ついでに若くてごめーん、すいすいすいましぇーん
> こういった場所や数学に関する話を他でする なんだって? それと、数学で「〜に於いて」って使う?適当なアンカー希望
76 :
デフォルトの名無しさん :2009/10/19(月) 23:29:15
ファイルがバイナリかテキストかを判別する プログラムはどうしたらいいですか?
バイナリモードで開いてテキストじゃない文字があればバイナリファイル
テキストファイルはバイナリファイルの部分集合
[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回やってもらったんですがわからないんでお願いします。
cなのかc++なのか、それが問題になるかも知れないし、環境もWindowsだけではちょっと。 って期限ながっっっ
>>80 問1
#include <stdio.h>
int main()
{
char a;
scanf("%c",&a);
printf("%c\n", a+1);
return 0;
}
>>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 :
デフォルトの名無しさん :2009/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 :2009/10/20(火) 00:54:07
else if(a >= 'A') printf("%c\n",a); じゃなくて else if(a < 'a' || a >= 'z') printf("%c\n",a); だった
>>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;
}
そして俺の宿題はわけわかめ
>>86 今見たら終わってる・・・w
本当にありがとうございます(´;ω;`)
前スレにも同じ問題あったな
>>84 forにしなくてもelseでいいんでない?
ぱっと見動くように見えるからいいけど。
それと、多分'a'から'z'までが連続している保証はないというツッコミも来るだろうけど、
宿題だからでスルーしてもいいと思う。
int main() (笑)
なにかおかしいかな? 引数ちゃんと書けってこと?
わからん。 int main(void) と書かないとダメとか程度の低い勘違いをしてるんじゃないよな?
>言語:C++ これが読めない文盲なんだろ。
アワレだな
>>96 >>84 問2
#include <stdio.h>
int main() (笑)
96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51 >言語:C++ これが読めない文盲なんだろ。 文盲(笑) 差別用語(笑) 池沼レベルの発言(苦笑)
Cでint main()がダメだという人って多いよね。 どこでそんな知識得たの?
>>80 [1] 授業単元:c言語
言語:C++
問2
#include <stdio.h>
int main() (笑)
> [1] 授業単元:c言語 > 言語:C++ (苦笑)
96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++
これが読めない文盲なんだろ。
>>80 > [1] 授業単元:c言語
これが読めない文盲なんだろ。
相変わらずすごい粘着力だw
Cならint main(void){} C++ならint main(){}またはint main(void){}お好みで。
#include <stdio.h> int main() (笑)
ビルダで言われるがままにしか作ったことないんだろ。 逆に可哀相な奴なんだから気にすることない。
96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++
これが読めない文盲なんだろ。
#include <stdio.h> < はい注目!
>>96 はこれが見えない文盲なんだろ。
別にそれでもC++としてコンパイルできるけど。
C++でstdio.hをインクルードしてもまったく問題ないと思うけど
>>113 はどう思う
単に質問者が間違えただけだろ
いちいち揚げ足とんな
>>90
116 :
デフォルトの名無しさん :2009/10/20(火) 17:14:46
>>63 期限は10/21の16:00でお願いします。
特定のプラットフォーム限定のコード書いてコンパイラの独自機能 使いまくりなのに、標準を気にするなんておかしいね。 ターゲットようのコンパイラに通りゃなにやったって正義。
118 :
C初心者 :2009/10/20(火) 18:36:06
Unix、C言語のみで、はじめにユーザーに整数入力を要求し、 その入力された整数を次の一行にその整数とHexに変換されたもの を出力、その次の行には、はじめに入力された整数を少数にして それをまたHexに変換。 もしユーザーが数字以外を入力した場合にエラーと表示させ、 ”0”と打ち込めば終了。 というプログラムです。一行目はきちんと出てくるのですが、 入力された値を2行目で少数に変換し、それをまたHexにかえる というのがわかりません。 こんな感じで出したいのですが、、 >1 1 0x00000001 1.00 0x3F800000 > どうぞよろしくお願いいたします。
>>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]);
}
}
121 :
C初心者 :2009/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); } よろしくお願いいたします。
>>120 なんでそんな、この宿題スレの過去ログでも争って結論が出たのを
今更蒸し返してんの?w
C言語とC++についてもISO、ANSI準拠の標準スタイルについて
説明されていたよ。で、あんたはC++で#include <stdio.h>とするのね?w
>>123 するだろ?
C++の規格のどこかにCのライブラリを用いてはならないって書いてあった?
>>124 このキチガイさんは<cstdio>って書いて欲しいんだよ
>>120 なんか引っかき回してすまないんだが、
mainのプロトタイプってどこかに書かれてる?
無いなら、最初に出てきた時、つまりmainの定義を以て宣言とする挙動になるはずだよね。
ANSI-Cにおいて、int main()が非合法であるかの確認をしたいです。
>>126 宣言のときなんていってなくね?
プロトタイプ宣言の時なんだから実体の定義を伴う宣言とは別だろ
>>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;
}
>>128 void hoge(void);
void hoge() {}
int main() { hoge(1); return 0; }
このコードの1行目が無ければコンパイルできるじゃん。
それは、関数の定義内容を元にプロトタイプ宣言と見なしているってことじゃないの?
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の配列に保存しています。 この部分の記述は間違っていないでしょうか??
>>131 いいよ。
z[y]++;
にしてもいい。
133 :
132 :2009/10/20(火) 22:11:49
あ。zは0-15までの16個ぶん必要だよ。
>>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);
}
int i, x[3], y, z[16];
for(i=0;i<16;i++) z[i] = 0; for(i=0;i<16;i++) printf("%2d %2d\n", i, z[i]); ソーリー
>>132 ありがとうございます。
この場合変数の宣言はどのようにするのがよいのでしょうか?
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); }
>>139 if(x=y)って大入試気になってね?
代入式!ええい・・・糞IMEめ
そこを直しても、ミスったときの表示はおかしいけどな
惜しかったなぁ。 まぁ、ここまで作れたならそれは大丈夫でしょう。
146 :
デフォルトの名無しさん :2009/10/20(火) 22:44:50
>>145 x = yだとxにyの値が入っちゃうので
x == yにしないといけないよって言う話
>>145 =でつないじゃったら右を左に入れるだから
==じゃないとだめよ
あとはずれた場合に正解を表示させないとね
>>146-147 そうでしたか!なるほど・・・
どうもありがとうございます!
>>148 そっちにも問題がありそうですねorz
ちょっと試行錯誤してみます!
150 :
デフォルトの名無しさん :2009/10/20(火) 22:50:39
>>149 まぁ'='と'=='の勘違いは誰もが通る道だから
気にしなくていいよ
151 :
139 :2009/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);
}
こうしなければいけなかったのですね
大変お世話になりました!
その上気づきにくい、、、が、コンパイラが警告出してくれてると思うよ。 警告 : 条件文書くとこで代入してるけど、これ意図して書いてる? みたいなの。
おめでとう。imputはご愛嬌。
>>152 英語が苦手で警告文を解読するのも一苦労です・・・
>>153 ぶはw
これは恥ずかしいです・・・
C++のソースコードを書きます(キリッ) #include <stdio.h> int main() { return 0; } できますた!C++コンパイラでコンパイルして下さい!(キリッ)
>>155 問題なくコンパイルできますね。(g++, bcc32)
157 :
デフォルトの名無しさん :2009/10/20(火) 23:54:45
宿題の答えくれなくて自暴自棄になってるんだと思う。
この粘着はCスレによく出没する頭のおかしい人だから、スルーしてください。
[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日(木) よろしくお願いします。
右シフトしたのと左シフトしたのの和でいこう。
乱数を使って半径rの球面上に一様に点をうつ方法を分かりやすく教えてください。 指向性を考える必要があるため割と難しい問題だと感じます。
>>162 質問スレでどうぞ
(ヒント:極座標[0,2π]x[0,π])
>>160 unsigned right(unsigned x, int n)
{
reutrn x >> n | x << (sizeof(unsigned) * 8 - n);
}
C++でsetwやsetprecisionで指定した桁数を解除するためにはどうしたらいいんでしょうか?
>>162 多分 [0, 4πr^2) の一様乱数を座標に変換するのがいいとは思うんだけど難しいね
>>126 main() のプロトタイプをわざわざかくのであれば、それは
int main(void);
のでしょうが、普通はプロトタイプなぞかかずに
int main()
{
return 0;
}
と main() を定義しますよね。main() の定義であれば int main() と買いて、規格に沿っていない記法とはならないわけです。
>>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;
}
>>168 んだから、プロトタイプが書かれていない場合はint main()をプロトタイプだと見なすんじゃないのって話
で、そうなればvoidの省略は許されないよね。
どこかで
int main(void);
という宣言がされていれば、定義時はint main()で問題ないよね。
その上で、int main()の定義がANSI-Cにおいて完全合法であるからには、どこかで宣言されているか、
またはmainが特殊であるかのいずれかだと思うんだ。
172 :
170 :2009/10/21(水) 19:22:02
>>171 プロトタイプ宣言は「実体と伴わない関数の宣言」だろ
int main()って書かれてその後に実体がそのまま書かれてるなら「実体を伴う関数の宣言」なのだからプロトタイプじゃないだろ。
>>173 そっか。プロトタイプじゃないか。
プロトタイプ宣言はされてるのかなぁ
あ、プロトタイプ宣言があっては困るか。 つまるところint main()は完全合法ってことになるのね
ANSIから外れた記述であるわけは無かろうと思っていたのに、C++だから合法みたいなレスが いっぱいついてどうしようかと思った。
>>175 いや、べつに main() のプロトタイプを書いてもいいんですよ。無意味ですが。
179 :
170 :2009/10/21(水) 20:54:10
やっぱり
>>172 が間違ってるのかも
もう数学なんて分からん orz
[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] 期限:明日まで
#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 :2009/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]で考えています。
>>178 難しく考えすぎ。
#include <iostream>
int main( );
int main( )
{
std::cout << "Hello World" << std::endl;
return 0;
}
>>175 プロトタイプ宣言がどうとか、独自の環境なら話は別。
もう少し言葉の意味を理解する頭を持ってくれよ。
ANSI、ISO準拠では条件もしっかり明記されている。
main関数を プログラムの開始 とする。
自分でソースの中から開始の関数を指定できるなら
もはやISO、ANSI準拠にあらず、ご自由にどうぞ。
で、ANSI、ISO準拠の 標準スタイル ではC言語は引数がないなら
int main(void)としている。従うか従わないから各個人の任意にお任せ。
int main()でも良いじゃないか?どうぞどうぞ。別にそれが
間違っているなんて誰も言ってませんよ?
187 :
デフォルトの名無しさん :2009/10/22(木) 00:41:34
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
問1
行列のかけ算を使って幅20、高さ140の長方形の横に3.3倍、縦に0.4倍の拡大率で表示をするプログラムを作成せよ。
問2
サンプルプログラムを参考にして、画面の中心に幅80、高さ50の長方形を原点を中心にπ/8だけ回転させた長方形を描くプログラムを作成せよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9995.txt 問3
画面上に描かれた長方形がキー入力によって原点を中心に回転するアニメーションを実現するプログラムを作成せよ。キーの「1」と「3」で回転角度が増減するようにせよ。
[3.1] WindowsXP
[3.2] Turbo c++ 4.0
[3.3] C++
[4] 今週の金曜日まで
お願いいたします。
>>185 int main() { return 0; } は完全に ANSI 準拠ですけれども、何がおっしゃりたいのでしょうか?
>>184 int main(void);
int main() { return 0; }
ではなかろうかと。プロトタイプには void が必要となるのが ANSI 準拠です。
189 :
188 :2009/10/22(木) 00:47:27
>>184 失礼、C++ で書いてありましたね。ごめんなさい。
>>185 ああ、そういうこと?
K&Rなんかは、合法だが標準じゃないスタイルで記述された、それだけの話か。
標準じゃないからといってint main()がひたすらに叩かれる理由がよく分からんけど、とりあえず理解した。
こいつに触っちゃダメ
こいつ?そいつ?
193 :
デフォルトの名無しさん :2009/10/22(木) 12:56:02
>>191 お前に触れない方が良いことは分った。理解力のない池沼めw
194 :
デフォルトの名無しさん :2009/10/22(木) 12:58:51
>>188 > 何がおっしゃりたいのでしょうか?
分らないならレスするなよ、バカw
準拠ですけれども?意味不明。前提条件もあってのことだが???
だから敢えて細かく説明されてんじゃん。いい加減、この手の話は
過去ログで決着がついているから、後は自分で調べろ。
> int main() { return 0; }
激しく意味不明な指摘w
195 :
デフォルトの名無しさん :2009/10/22(木) 13:05:54
>>185 はプロトタイプ宣言についてじゃないぞ?
ANSI、ISO準拠のmain関数の記述の「標準スタイル」についてだぞ?
mainに関係なくプロトタイプ宣言にvoidが必要だのって、そういう話じゃない。
int main(void)かint main()か?だから上の方でC言語 int main() (笑)とか
言われてたんだろ。
後で必死に反発したつもりなのか、C++が読めない「文盲」なんて
人を見下す差別用語を平気で使うならず者が出てくるし。
C++なんて突っ込むから #include <stdio.h> についてさらに突っ込まれてやんの。
もう支離滅裂。話の主題、論点が分らないならレスしないで構わんよ。
自分が無知だとばれますよ?
>>194 そりゃそこだけ抜けば意味不明な指摘になる
プロトタイプのとこだとおもうよ
ANSI-Cにおけるint main(){return 0;}は合法であるという旨のレスをいくつかしたんだけど
>>176 の通り、C++なら大丈夫だよ!というのが混ざってくるから話がこじれたんじゃないか?
C++は関係ない、で捨てようにも、「C++なら」ってことはCではダメだという風に取れちゃうし。
197 :
デフォルトの名無しさん :2009/10/22(木) 13:26:15
ISO、ANSI準拠では プログラムの開始をmain関数 としているわけだが それをプロトタイプ宣言とか言い出したら意味不明だわw いい加減、プロトタイプ宣言から離れろ
なんだ、いつもの話をずらして粘着する人か
HANDLE a; …ハンドル取得… HDC b = (HDC)a; これってダメなんだっけ?w
フォントです
>>201 フォントのハンドルをHDCにキャストするのは、ダメです。
使い方が間違っています。
>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;でもいいわ。 どういう風に宣言なり定義なりされているのかわからないと何とも言えない。
HDCとかHANDLEとかWindowsのあれでしょ Windowsのスレへどうぞ void*をむやみにキャストしてもだめということだろうが
205 :
デフォルトの名無しさん :2009/10/22(木) 21:57:18
>>199 大体の流れとして。
HDC hdc;
PAINTSTRUCT ps;
hFont = CreateFont(…);
hdc = BeginPaint(hWnd, &ps);
SelectObject(hdc, hFont);
じゃないの。それぞれ宣言場所違うけどね。
デバイスコンテキストハンドル2つ生成してSelectObjectすればそれっぽいんじゃないか?。
207 :
デフォルトの名無しさん :2009/10/22(木) 23:55:47
Visual StudioでC++をやり始めたんですが 実行してもすぐに コマンドプロンプトが閉じてしまって結果が見れません 対処法を教えてください。
僕の肛門も出すものを出したら直ぐに閉じてしまいます ><;
右クリック→設定 で 「終了後に自動的に閉じる」のチェックを外す。
[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でごり押しくらいしか思いつかないです…
212 :
デフォルトの名無しさん :2009/10/23(金) 00:23:11
>>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 :
デフォルトの名無しさん :2009/10/23(金) 00:46:40
>>209 207なですがどこで右クリックすればいいのか
教えてもらえないでしょうか。
>>214 .pif ファイル。
つーか、単に main の最後に getchar() か何か付け足して、
エンターで終了ってことにしとけば良いんじゃね?
216 :
213 :2009/10/23(金) 00:54:49
これで出来てる? 携帯だから自分で確認できないんだが。
217 :
デフォルトの名無しさん :2009/10/23(金) 00:55:53
>>215 さんありがとうございました
今日から勉強始めて
まったく分からない状況だったので助かりました
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); (失笑)
修正 #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; }
問題よくみたら0からだった。 修正しといてくれ。
つーことで修正 #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; }
前から抜くより、後ろからの方が足し引きすくないよ。 for(i=n; i; ) { k = rand() % i--;
じゃあ修正 #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; }
個人的には for (i = 0; i < n; i++){ k = rand() % (n-i); a[k] = a[n-i]; } とするのが好きだな。
a[k] = a[n-i-1]じゃね?
おぉーーっと、ここでうpロダ君のロングパス!
227 :
C初心者 :2009/10/23(金) 06:26:19
>129, 135, 136さん 御礼が遅くなりました。 ありがとうございました。
>>223 ループの中で場合わけするなら、]もつけちゃえばいいのに。
>>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 :
デフォルトの名無しさん :2009/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] その他の制限: よろしくお願いします
>>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 :
デフォルトの名無しさん :2009/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;
}
int main() (笑)
>>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;
}
>>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;
}
つまんね
こうだろ。 #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; }
#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; }
__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 :2009/10/23(金) 13:47:52
knuthやfisher-yatesでググると参考になる。
putchar(8) って何? バグ?
asciiコードぐらい自分で調べろよw
さぁとっととリストの課題こいや〜!麻呂のミートクソースをお見舞いしてやんよでおじゃる? カレンダー出力も来るでおじゃる!
245 :
デフォルトの名無しさん :2009/10/23(金) 16:45:24
いやっほー!
[1] C言語中級 [2] 8X8のオセロの全局面をリスト構造で列挙しそれを適当なファイルに保存するプログラム 次の問いの答えも添付すること (1)先手必勝、後手必勝かの決定 (2)平行初期値と通常初期値(回転対称、鏡映は同一視)それぞれの 場合において到達可能な葉は全部の場合の何パーセント程度であるか? [3] Windows 2000/Visual-C++ 6.0/C言語(厳守) ★置く場所が無い場合に限りパスが認められる。 ★FileMappingやVirualAllocateのWindowsの機能を利用し、 メモリがパンクしないように留意すること。メモリの搭載は128M程度 を仮定する。 [4]来週月曜日迄(厳守)
全文を書くと大変なことになるのと(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]++; }
>>1 >【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
【質問テンプレ】
[1] 授業単元: 情報演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10001.txt [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]);
}
}
が手間取っている部分です。どうしてもうまく動作しません。
よろしくお願いします
プログラム全体でやっていることは、
隣接行列を作る。
強連結か判定。
ページランクの測定。
です。
>>249 では有向グラフで出発点をランダムにとり、
そこからランダムウォークをして、何回か移動したとき、各点にどれだけ移動したかを測定しようとしています。
ランダムウォークじゃなくて全部歩くべきなんじゃないの?
>249 値を返していない関数がある 245行目で初期化されていない変数を使っている
254 :
デフォルトの名無しさん :2009/10/24(土) 00:55:05
[1] 授業単元:プログラミングV [2] 問題文(含コード&リンク):外部ファイルより整数を読み込み、棒グラフを描くプログラムを 作る。外部ファイルはコンストラクタで配列に読み込め。使う関数はヘッダーファイルに publickに定義する。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:2009年10月29日10時 [5] その他の制限:特にないです。
問題文って本当にそれだけ?
256 :
デフォルトの名無しさん :2009/10/24(土) 09:13:10
mathematicaなんですが、関数を作れとのことなので ここに投稿させてもらいます。 暇がある方お願いします。 2変量のデータ {{x1, y1}, {x2, y2}, ... , {xn, yn}} を引数として,散布図と相関係数を出力する関数を作成せよ.
お断りします
258 :
デフォルトの名無しさん :2009/10/24(土) 14:40:31
テストの平均点を出して小数第2位を四捨五入したいんだけどどうすればいいの? 平均点は出てます。
%とfの間に「.1」だっけ?
>>258 main(){
float a = 1.56;
int b;
b = a*10+0.5;
a = b/10.0;
printf("%f",a);
return 0;
}
261 :
デフォルトの名無しさん :2009/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); }
テキストから"n 100"みたいな文字列を読み込んで、プログラム内でnに100を代入するにはどうすればいいでしょうか?
それがコンパイラだよ。
>265 使われていない変数がある 値を返していない関数がある
>265 outputが開放されていない 引数が使われていない 未定義動作の式が存在する
意図のわからない名前をつけちゃだめ
269 :
265 :2009/10/24(土) 20:22:15
>>266 >>267 ありがとうございます。
もし良ければ何行目あたりかを教えてください。(スルーでも大丈夫です)
270 :
デフォルトの名無しさん :2009/10/24(土) 21:24:20
>>265 これすごいなw
実装したやつ天才すぎるw
つか宿題じゃねーだろこれ?
271 :
デフォルトの名無しさん :2009/10/24(土) 21:25:44
こういうスレにいると 問題と回答の両方があるから 勉強になるよね☆
272 :
265 :2009/10/24(土) 21:28:20
専門学校の宿題です 長いプログラムですが間違えてる所は最初〜真ん中らへんにあるって言ってました 関数や引数のことがよく分かっていないんで詳しく説明できる人がいればお願いいたします
>>265 このコード自体くそ
はじめから書き直せ
素人丸だし
274 :
デフォルトの名無しさん :2009/10/24(土) 21:37:18
>>272 宿題なのかこれ・・・
これ先生が書いたの?
突っ込みどころ満載なんだがwww
>>265 プログラムを見た瞬間目が回った
これだけやる気をなくすプログラムも珍しいな
276 :
デフォルトの名無しさん :2009/10/24(土) 21:46:35
うちの学校の講師はプログラミングテストで合格しないとなれないみたいだから
>>265 みたいなひどいコードはないな
とりあえず何をしたいプログラムか分らないと途中経過を追うのが怠すぎる…
278 :
265 :2009/10/24(土) 21:47:08
>>274 先生が書きました とりあえず自力でがんばってみます。
一応明後日までみなさんの詳しい答え待ってます。おやすみなさい
280 :
デフォルトの名無しさん :2009/10/24(土) 22:30:47
>>279 ってか機械的に解析ってどうやんの?プログラマーの俺に教えてちょww
lintと違うん?
>>265 こんなん教えてる専門学校は今すぐ辞めるべき
284 :
デフォルトの名無しさん :2009/10/24(土) 22:37:48
lintかー あざーす
lintってフリーソフトなん?
ググって見たけど最近のコンパイラなら必要なさそうだな
>265 まぁみんなつっこんでるので繰り返しになるが、 問題文自体が間違ってないか。 「このプログラムのどこかに変数における間違いがあります。」 いや、変数の問題じゃ無いんだが、、、。 こんなコードをデバッグさせようとすること自体が間違いでしょ。 専門学校の宿題か。 その講師の言うことは宛にならないと思う。
lintとかを使えるようにしようっていう意図なんじゃないかと深読み
>>265 これはひどい。
うちの会社なら、これ書いた奴の上司が社長室に呼びつけられるなw
>>265 こんなコードを人に見せるなんて恥ずかしくて切腹ものですね。
先生、あさってには死んでるかもしれないんじゃないですか。
プログラマが書いたコードじゃなくて数学屋が書いたコードだろ やつらこんなの書くぞ
講師が学生のバイトで、そいつが研究課題でプログラム組んだけどミスがある。 でも自分ではわからないから、バイト先の連中にやらせちゃえ って感じな気がする。
295 :
デフォルトの名無しさん :2009/10/25(日) 00:08:00
>>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;
}
>>294 もっと単純に書いちゃだめなのこれ?
for (i = 0; i < len; ++i)
{
arr1[ (i + n) % len ] = arr0[ i ];
}
とかさ。
>>296 関数の名前はrotateじゃなくてreverseのほうが正しくね?
>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); }
せめて関数のエラー回避をw
302 :
300 :2009/10/25(日) 01:38:45
>>301 うーん、malloc()のエラー回避はしていますが、やっぱり足りないですか?
303 :
294 :2009/10/25(日) 01:40:49
実は関数を習ってないので、その部分は回答を参考に書き替えたら 正しい結果になりました。回答ありがとうございました
これ作ったら神。 PS postscriptのテキスト抽出するやつ。日本語対応版。 フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増えるよ。
乞食は死ね
>>304 PDFからテキスト抽出とかどっかで見たことあるからpostscriptからも普通にありそうなもんだけど
>>307 ぁ、Windowsです
お願いします!
VBて。 しかも独学て。 独りで学んでないじゃん。
VBじゃ駄目ですか? 独学以外に何と書けば良いかわからなかったので・・・。
>>310 Visual Studioのことを言いたいのかい?
>>311 ん
あ・・・はい。
そうです。すいません
>>308 ではないのですが、
A〜Zまで配列にして
forで文字列を1文字ずつ取り出し
さらにforで配列との比較を行い一致したら
x,y,z以外だったら文字比較forのカウント変数に3を加算
x,y,zならa,b,cをそれぞれを出力用配列の内側配列に格納
という風に考えたんですが
これよりスマートなやり方を教えてください。
スマートかどうか知らんが #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); }
あ。'A'〜'Z'が連続しているコードが前提です。
>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; }
319 :
316 :2009/10/25(日) 11:42:44
#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 ポインタがわかっていないようですね。その点は要復習。 第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; }
インラインアセンブラでidivとか言ったら怒られるだろうか。
325 :
324 :2009/10/25(日) 21:26:09
327 :
デフォルトの名無しさん :2009/10/25(日) 21:53:33
>>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;
}
すげー煽りだw
332 :
329 :2009/10/25(日) 22:51:03
>>330 >>328 ではポインタを使っていますが、
>>329 ではポインタを使わず、算術演算(割り算と余り演算子)で処理しています。
あるいは、わかりやすいように配列にいったん結果をいれるようにしています。4桁ごとのくぎりも普通にかいています。
>>329 も簡単だと思いますが(
>>328 を否定しているわけではありません)、やっぱり短く書いたほうがわかりやすいでしょうか?
見にくいですが、宜しくおねがいします。
これ作ったら神。 PS postscriptのテキスト抽出するやつ。日本語対応版。 フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増える。
ちょっとした質問なんですが、 123 この数列を配列に 321 と、格納するにはどうすれば良いですか?
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; ちょっと横道に
>>339 説明不足でした
scanfから数字を入力して、
その数字を
>>338 みたいにするにはどうすれば良いですか?
後ろから順に前に入れていけばいい。
そのやり方がよく・・・
343 :
デフォルトの名無しさん :2009/10/26(月) 01:25:30
意味がよくわからんけどこういうことかな int a[3]; int i; for (i = 0; i < 3; i++) scanf("%d", &a[2-i]);
>>345 123 って入力したときに、
配列に
_____
|3|2|1|
ーーーーー
って格納させる方法です・・・
国語力無くて申し訳ない
>>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;
}
なるほど。数字のみなら
>>347 もありか。
文字もokな一般的なものを考えてみたのが↓。
>>346 #include <stdio.h>
int main(void){
int pt1 = 0 , pt2 = 0;
char s[101] = "", tmp;
printf("input : ");
scanf("%s", s);
while(s[pt2 + 1]!='\0'){
pt2++;
}
while(pt1 < pt2){
tmp = s[pt1];
s[pt1] = s[pt2];
s[pt2] = tmp;
pt1++;
pt2--;
}
printf("output : %s\n", s);
return 0;
}
>343 一応作ったけど、凝り始めると終わらない
350 :
333 :2009/10/26(月) 09:42:08
351 :
デフォルトの名無しさん :2009/10/26(月) 12:50:45
>>351 それは、ゴーストスクリプトという専用ツールを呼び出すだけ。
遅いし、確実には抽出できなかったよ。
動作環境:
PerlActivePerl
ghostscript日本語ghostscript, (ghostscript 8.11 以降推奨)
>>350 問題の前半が省かれてるっぽいのでよくわからんが、
set_mapがコメントの内容とあってない。
コメントが正しいなら
//マップ内なら数値を代入
void set_map(int n, int x, int y, double v) {
if (x >= 0 && X > x && y >= 0 && Y > y) {
map_q[n][y][x] = v;
}
}
upされたやつだとy=-1とかでもmap_qに値をセットしてたから
それでsegmentaition fautになってる
あと mainの中でcountの初期化がされてない
>>355 @
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int l = 0, u = 0, d = 0;
char str[256], *p;
printf("文字列を入力して下さい.\n");
scanf("%s", str);
for(p=str; *p; p++) {
if(islower(*p)) l++;
else if(isupper(*p)) u++;
else if(isdigit(*p)) d++;
}
printf("入力文字列は %s で\n", str);
printf("小文字は%d文字,大文字は%d文字,数字は%d文字です.\n", l, u, d);
return 0;
}
>>355 A
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char surname[21], firstname[21], fullname[41], *p;
printf("姓を入力して下さい.\n");
scanf("%s", surname);
printf("名を入力して下さい.\n");
scanf("%s", firstname);
strcpy(fullname, surname);
strcat(fullname, firstname);
printf("入力した氏名は%sです.\n", fullname);
for(p=fullname; *p; p++) {
if(islower(*p)) *p += ('A' - 'a');
else if(isupper(*p)) *p += ('a' - 'A');
}
printf("小文字と大文字の交換後の文字列は%sです.\n", fullname);
return 0;
}
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): (1)ライプニッツの公式を用いて円周率の近似値を求める時、その値が3.14から3.15の間になるまで nを増やしていき、そのnの値(繰り返し回数)を求めるプログラムを作成せよ。 (2)ライプニッツの公式を用いて円周率の近似値を以下の条件で求めよ。 nの値が増えるにつれ、それまでの近似値の平均値を求め、近似値と平均値の差が平均値の1%におさまるまで繰り返す。 (最初にfor文を使って計算を繰り返すたびに平均値も出力するプログラムを作成する。 そしてforをwhileに置き換えたプログラムを作成する。そのときdo()whileを使え。) [3] 環境 [3.1] OS: WindowsVista [3.2] コンパイラ gcc [3.3] 言語: C [4] 期限: 09年10月28日20:00まで [5] その他の制限: (1)に関してはif elseを使った文。(2)に関しては問題文通りです。 大学の授業ですが、全くならってない範囲を出題されました… お願いします。
単純なループだから習ってないとは思えない。 応用がきかないのか数学的知識がないだけかググることすらできないのか。
>>358 (1)
#include <stdio.h>
int main(void)
{
int n;
double d = 0;
for(n=0; d < 3.14 || 3.15 < d; n++) {
if(n & 1) d -= 4.0 / (n * 2 + 1);
else d += 4.0 / (n * 2 + 1);
}
printf("%d回", n);
return 0;
}
362 :
デフォルトの名無しさん :2009/10/26(月) 17:57:57
>>349 ありがとうございます。
動けば十分ですので、貼ってもらえると嬉しいですm(_ _)m
364 :
デフォルトの名無しさん :2009/10/26(月) 18:09:16
>>363 ありがとうございます!今から解読して勉強します。。
>>354 ありがとうございます。
実行して出力はできるようになりましたが、
100試行ごとの出力ができません。
ご教授をい願いします。
>>365 #include <stdio.h>
double f(double x) { return 3 * x * x; }
#define N 1000
int main()
{
int i;
double sum = 0.0;
for (i = 0; i < N; i++)
sum += 1.0 / N * f((double)i / N);
printf("S = %lf\n", sum);
return 0;
}
/* end */
369 :
デフォルトの名無しさん :2009/10/26(月) 21:54:15
>>347-
>>348 ありがとうございました!!!!!!
>>371 なんでa,b,c,d,x1,y1を整数にするの?浮動小数点数でいいじゃん
>>371 ニュートン法はお前の考えたアルゴリズムじゃねえだろw
ワシが育てた
>>359 すいませんが、教えてもらってないので何とも言えません(´・ω・`)
>>360 ありがとうございます。助かりました。
(2)に関しては教授にきいてみます
>>358 ,375
#include <stdio.h>
#include <math.h>
int main(void){
int n;
double d = 0, sum = 3;
for(n = 0; (sum / n - d) > 0.01; n++) {
if(n & 1) d -= 4.0 / (n * 2 + 1);
else d += 4.0 / (n * 2 + 1);
sum += d;
printf("%d 回目 , 平均 = %f\n",n,sum/n);
}
return 0;
}
377 :
デフォルトの名無しさん :2009/10/27(火) 02:39:56
>>371 アルゴリズムはあっていると思います。
>>372 の指摘のとおり、 a, b, c, x1, y1 を double にするとうまくいきます。
じゃあ、なにがまちがっているかというと、私にもわかんないんですが。
多次元配列はCではあまり使わないほうが良い。 ポインタと相性が合わないから
>>377 68行目の第3引数cでとりあえず普通に警告@VC2008
381 :
デフォルトの名無しさん :2009/10/27(火) 09:37:03
>>379-380 計算に与えられる行列はこのような配列で表せということだったんで・・・
デバッガで追いかけてみても、matmul_cacheのcは想定された動きしてるんで問題はないんじゃないかと思うんですが
いったん別の言語で書き直してみると良いかも (GPCとかFPCとか)
三角形と四角形がぶつかったときの当たり判定をとりたいのですがどうすればよいでしょうか
384 :
デフォルトの名無しさん :2009/10/27(火) 12:34:38
PostScriptをPDFに変換してからテキスト抽出すればいいと思うけど。
385 :
デフォルトの名無しさん :2009/10/27(火) 12:37:29
>>383 BeginPath(hdc);
Polyline(hdc, ..., 3);
EndPath(hdc);
hRgn1 = PathToRegion(hdc);
BeginPath(hdc);
Polyline(hdc, ..., 4);
EndPath(hdc);
hRgn2 = PathToRegion(hdc);
hRgn = CreateRectRgn(0, 0, 0, 0);
if (CombineRgn(hRgn, hRgn1, hRgn2, RGN_AND) == NULLREGION) {
...
} else {
...
}
>>385 せっかく書いていただいたのにすみません
全て計算で求めなくてはいけないので関数は使用できないんです…
387 :
デフォルトの名無しさん :2009/10/27(火) 13:10:14
>>386 後出しじゃ判らんだろ。
前提として得られる情報がどれだけ有るか(x,y座標など)、を書くべし。
詳細に書くと内外判定で三角形の中に四角形が入っているか(触れている場合も“入っている”と認識)どうかを検査したいのです XY座標は毎回変動します。関数は使わずに計算のみで求めなくてはならないので困っています
>>388 四角形の頂点が全て、三角形の内側にある事。
三角形の内側にある <--- 三辺をベクトルとみなして、各ベクトルから見て同じ側にある事。
390 :
デフォルトの名無しさん :2009/10/27(火) 14:44:44
四角形の辺と三角形の辺と交わっているか、 四角形の内部に三角形があるか、 三角形の内部に四角形があるかのどれかだろう。
>>390 三角形と四角形とが、互いに離れている場合もあり得る。
>>367 ありがとうございました!助かりました。
393 :
デフォルトの名無しさん :2009/10/27(火) 15:20:18
>>389 完全に三角形のなかに含まれている場合はそれで良いのですが一部分でも触れている場合値を返すようにしたいのです
四点だけで判定した場合四点に触れずに三角形に触れる可能性が出来てしまいます
繰り返しますが、関数は使わずに計算のみで求めなくてはならないので困っています
[1] 授業単元:卒業研究 [2] 問題文(含コード&リンク):白黒濃淡画像[0-255]をカラー画像に変換 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:cygwin [3.3] 言語:C [4] 期限: ([2010年1月10日24:00まで]) [5]その他の制限: ・色をユーザーから指定することはできない。 ・画像はできればppm形式 様々な本や書類に目を通し、ネットを用いて一通り調べたつもりですが、一向に見つかりません。 難題だとは思います。最低限情報のある場所だけでも教えてもらえれば幸いです。 どうか御願い致します。
397 :
デフォルトの名無しさん :2009/10/27(火) 15:29:06
入力ファイルからデータを読み込みロジック部分を関数化し、 qsort関数以外を使用して番号順にソートしたいのですが何かいい方法を教えてください。 読み込んだデータの例) F016 C002 C002 C015 H001 F016 C015 H001 H009 H009 左のデータをソートし、右のように並び替えたいです。
sort関数
>396 通常は原理的に不可能です。 なぜなら、カラー画像は一般的に3つの独立したベクトルが張る色空間で表現されます。 ここで、色空間をRGB、濃淡をGrayとすると、明らかにベクトルが足りないので、色空間を変換できません。 よって、GrayからRGBへの色空間の変更ができないので、濃淡画像をカラー画像に変換することは*通常*できないことが示された。 疑似カラー画像に変換したり、ユーザか適当に色を配置してそれを元にカラー画像にすることは既に研究されています。 グレースケール画像に色差情報をこっそり埋め込んだり埋め込まなかったりって、最近僕が研究したんだけど。
>>399 すきなソートアルゴリズムを関数化すればいいだけじゃね?
>>394 > 四点だけで判定した場合四点に触れずに三角形に触れる可能性が出来てしまいます
四角形の頂点が全て内側or三角形の辺上、という前提で、↑ってどんな状況だろう?
まさか3次元以上?
あと、課題だったらテンプレに沿って、課題文をそのまま載せて欲しいんだが。
3角形の中に四角形の点が1つ以上あれば、でよくね
ああだめか。 結局交点も必要か
何気に難しいな
四角形のいずれの頂点も三角形の外側にあり、かつ、交点がない 以外は全部触れてるんじゃないの
四角形に4点だけで判定すると三角形の先っちょが刺さってる状態だと触れていると判定されないんだな
完全に数学の話題也 三角形の一点が原点になるように平行移動 三角形の原点を含む一辺がx軸になるように回転変換 原点を含みx軸と一致しない辺のy軸へ正射影 原点を含む2つの辺の長さが一致するように、y軸方向もしくは x軸方向へのスカラー変換 これを行い三角形を直角二等辺三角形に変換して考える。 四角形に対しても同じ操作を行う。(四角形は四角形に移る) 交点を持つ条件は四角形の2つの頂点を結ぶ6個の直線が x軸、y軸、直線x+y=1と交わる点の座標の値でわかる。
こういう話は数学に詳しくないと難しいな
離散数学しかやってないからな…
>>401 >>396 です
丁寧にお答えいただきありがとうございます。
ユーザーから色は指定できないので、とりあえず疑似カラーについて調べてみたのですが、いまいちよくわかりませんでした。
何か参考になる文献やサイトがあれば教えていただきたいです。
>414 ・疑似カラー化について 0710g36やnakatani1.pdfをクエリにして検索する ・ユーザ指定色について colorization-siggraph04をクエリにして検索する ・色差情報の埋め込みについて 色差情報 埋めこみ カラー 復元をクエリにして検索する ちなみに僕がやったのは、3つ目の色差情報を埋め込む方法ね あとは自分で適当な単語を選べば見付かると思う、CiNiiとかでね
>>415 わざわざURLまで貼っていただきありがとうございます。
明日URLを参考にしてプログラムを作ってみたいと思います。
>>408 これで、どうだろ。
三角形の頂点が全て、四角形の外にある。 and
四角形の頂点が全て、三角形の外にある。
>>419 左側のNGをOKにしたらイメージ通りです
[1] 授業単元: c言語 [2] 問題文 課題1 整数 n を入力すると n から1 までを出力する プログラムを作成せよ。 課題2 整数 n を入力すると1からn まで出力する。 ただし、3の倍数か、5の倍数の時には数字の右側に* と表示すること。 プログラムを作成せよ。 課題3 整数 n を入力すると1 から n までの間の、 3か5いずれかの倍数の個数を数えて表示するプログラムを作成せよ。 [3.1] OS: Windows [4] 期限: 2009年10月29日まで よろしくお願いします!!
それくらい自分でやれよ どこが出来ないんだよ
425 :
デフォルトの名無しさん :2009/10/28(水) 01:50:05
>>422 同じ大学キタ――(゚∀゚)――!!
#include <stdio.h>
int main()
スタートでお願いしたほうがいいよ
>>422 /* 課題1 */
#include <stdio.h>
int main() {
int n;
printf("整数を入力 > ");
scanf("%d", &n);
while (n > 0) {
printf("%d\n", n);
n--;
}
return 0;
}
>>422 /* 課題2 */
#include <stdio.h>
int main() {
int n, i;
printf("整数を入力 > ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("%d", i);
if ((i % 3 == 0) || (i % 5 == 0))
printf("*");
printf("\n");
}
return 0;
}
>>422 /* 課題3 */
#include <stdio.h>
int main() {
int n, i;
printf("整数を入力 > ");
scanf("%d", &n);
i = 0;
while (n > 0) {
if ((n % 3 == 0) || (n % 5 == 0))
i++;
n--;
}
printf("3か5の倍数の個数 = %d\n", i);
return 0;
}
431 :
デフォルトの名無しさん :2009/10/28(水) 10:54:18
エクセルのマクロの問題ってここで質問しても無駄ですか?? 駄目ならどこで質問したらいいですか?
>>428 大学に通ったことの無いお前じゃ、大学でどんな授業が行われているか知らんのだろうね・・・
あと、何もC言語は専門分野の学生しか受けない授業でもないから。
>>383 四角形は三角形2つに分割出来るので三角形と三角形の衝突判定を作ればいい
2つの三角形のそれぞれの辺のベクトル方向の1次元に全ての頂点を射影して
分離軸が1本でも引けたら衝突してない。引けなかったら衝突してる。
>>433 一般学生に C を教えるのは大変でしょうね。当時は pascal が使われていましたが、今はなんでしょうか?
437 :
デフォルトの名無しさん :2009/10/28(水) 18:54:36
普通科の高校でC言語からやるか? そしたら大学で基本中の基本からやるにきまってるだろ
いまだと文系のパンキョーでもCの講義あったりするんかね
時々お世話になるFラン大学生だけどハローワールドとかからやったよ 1単元90分×15コマで3単元に渡ってやって 四則演算プラスアルファ 入出力:printf scanf 制御文:if switch for do while 配列 ファイル入出力:fopen fclose fprintf fscanf 乱数:rand() srand() 自作関数 くらいやった
最近の高校って数学でプログラム習うんじゃないの?
それはエクセルとかじゃね? 工業高校出身だけどBasicから始まってC言語に行ってたな。 大学でもCから教え始めるから内容かぶって単位余裕でした、みたいな感じで萎えた。
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10025.txt 「スコアー,ステージナンバー,名前」が入っているファイルがあるとする。
降順にソート済みのスコアーデータのファイルから、上位10件を配列に読み込み、
新たに11件目のスコアーデータを入力後、スコアーの大きい順に並び替えを行い、
上位10件のデータを再度書き込むプログラムを作成せよ
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C言語
[4] 期限: 特にありません
[5] その他の制限:特にありません
宜しくお願い致します。
出力結果をコピーする方法って無いですか?
キーボードのプリントスクリーンでクリップボードにコピーされるよ!
リダイレクトすれば?
>>443 Windows7なら普通にコピペ出来る!買うんだ。
[1] 授業単元:C++実習2 [2] 問題文(含コード&リンク): -関数テンプレート- 配列へのポインタと要素数を渡すと昇順にソートする関数を作成せよ。 但し,関数テンプレートにより作成すること。想定する配列の型は文字列以外とする。 ソートのアルゴリズムはバブルソート(単純交換法)とする。また,関数をテストする適切なmain関数も作成し提出すること。 関数名前名は b_sort とし,第1引数は配列へのポインタ, 第2引数はint型で配列の要素数, 戻値は無しとする。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:visual studio 2008 [3.3] 言語:C++ [4] 期限:[2009年11月1日23:00(日)まで] よろしくお願いします。
>>449 #include <iostream>
using namespace std;
template <typename T> void b_sort(T a[], int n)
{
for (int i = 0; i < n - 1; ++i) {
for (int j = n - 1; j > i; --j) {
if (a[j - 1] > a[j]) {
T temp = a[j]; a[j] = a[j - 1]; a[j - 1] = temp;
}
}
}
}
int main()
{
int a[] = { 3, 8, 1, -1, 9, 8, 7 };
double b[] = { 3.09, 2.1, -9.27, 8.0, 3.11, -6.5 };
b_sort(a, 7);
for (int i = 0; i < 7; ++i) cout << a[i] << ' '; cout << endl;
b_sort(b, 6);
for (int i = 0; i < 6; ++i) cout << b[i] << ' '; cout << endl;
return 0;
}
451 :
デフォルトの名無しさん :2009/10/29(木) 15:55:37
452 :
デフォルトの名無しさん :2009/10/29(木) 16:28:33
>>451 どうやって問題文を読めばいいのかわかりません。
新井さん?
456 :
378 :2009/10/29(木) 21:23:19
>>371 ちょっとみなおしてみました。
問題は x1, y1 を整数で宣言したことでしょうね。
>>451 問1
return x*x+y*y
c = function1(a, b);
printf("%d\n", c);
問2
#include<stdio.h>
#include<math.h>
void wasasekisho(double x, double y, double* pwa, double* psa, double* pseki, double* psho);
int main(){
double a, b;
double lpwa, lpsa, lpseki, lpsho;
printf("a...");
scanf("%lf", &a);
printf("b...");
scanf("%lf", &b);
wasasekisho(a, b, &lpwa ,&lpsa, &lpseki, &lpsho);
printf("wa...%.0lf, sa...%.0lf, seki...%.0lf, sho...%.0lf",lpwa ,lpsa, lpseki, floor(lpsho));
}
void wasasekisho(double x, double y, double* pwa, double* psa, double* pseki, double* psho)
{
*pwa = x+ y;
*psa = x - y;
*pseki = x * y;
*psho = x / y;
}
問3 どういう確率分布にしたがっているのかがわからん。本来解けないはず?。 たぶんそれぞれ独立な事象で確率1/5だとして、期待値==平均(kekka)になるのかなとおもったが、 #include <stdio.h> #include <math.h> double heikin(int n, double x[]){ int i; double sum; sum=0.0; for(i=1;i<=n;i++){ sum += x[i-1]; }; return sum/n; } int main(){ static double data[]={3.1, 5.8, 4.1, 1.0, 8.3}; double kekka=0.0, bunsan = 0.0; kekka=heikin(5,data); bunsan= pow(0.2, 2) *(kekka * 5.0) - pow(kekka, 2); printf("データの平均は %lf\n",kekka); printf("データの分散は %lf\n",bunsan); return 0; } と書くと分散が負になってしまいましたとさw 問4 関数の中身を定義する前に,先に関数の引数の型および返り値の型だけをあらかじめ宣言しておくこと。
>>444-
>>448 どうもありがとうございました!!!
460 :
458 :2009/10/29(木) 23:11:24
>>451 #include <stdio.h>
#include <math.h>
double heikin(int n, double x[]){
int i;
double sum;
sum=0.0;
for(i=1;i<=n;i++){
sum += x[i-1];
};
return sum/n;
}
int main(){
static double data[]={3.1, 5.8, 4.1, 1.0, 8.3};
double kekka=0.0, bunsan = 0.0;
double vx=0.0;
kekka=heikin(5,data);
for(int i = 0; i < 5; i++)
vx += pow(data[i], 2)*0.2;
bunsan = vx - pow(kekka, 2);
printf("データの平均は %lf\n",kekka);
printf("データの分散は %lf\n",bunsan);
return 0;
}
なんか例と値違うけど…さっきとちがって式はあってるはず
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10031.txt 問題1:整数表記を <integer>::= <digit> {<digit>|'_'}*に書き換える。
正の整数をdigitだけではなく、'_'もトークンの一部として判別させてやるようにプログラムを書きかえる
例えば、10_23と仮に有った場合は10=整数値、_=識別子、23=整数値という風に判別されるのではなく10_23=1023=整数値となるようにしなさい。
問題2:以下のようなトークンも判別できるようにしてみる。
句切り文字:'(',
句切り文字:'(',
句切り文字:';',
演算子:'='
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名:gcc
[3.3] 言語: C言語
[4] 期限: 2009年11月5日
[5] その他の制限: とくにないです。よろしくお願いします。
>>462 ですが@とAの部分を改変してください。よろしくお願いします。
>461 問題1:整数表記を <integer>::= <digit> {<digit>|'_'}*に書き換える。 問題の意味が全くわからない。問題文はこれで全部なの? #例えば、10_23と仮に有った場合は10=整数値、_=識別子、23=整数値という風に判別されるのではなく10_23=1023=整数値となるようにしなさい。 というの10_23を引数に与えたらどうなればよい? リンク先のコードに食わせると下みたいになった。 $ ./main 10_23 整数定数: 10 (2文字) 識別子: _23 (3文字) トークン数は2個!
>>465 それBNF表記っていって
たとえば
10_23_23=102323
10_______23=1023
になるようにしろってことだよ。
467 :
466 :2009/10/31(土) 22:24:07
BNF記法だった. <変数>…<変数>で変数を表す。 {変数}…{変数}の変数を省略するか、一回以上繰り返し用いることを表す。 |…または を表す ::=…左辺の変数が、右辺で定義されることを表す。 あ、おれ解けないんでw
469 :
464 :2009/11/01(日) 01:33:21
>462 ごめ。違うのあげてた。 ファイル消えているのですぐにはできない。 思い出しながら書いてみる。
470 :
464 :2009/11/01(日) 01:43:01
[3] 環境 [3.1] OS:Windows [3.3] 言語:C++ [4] 期限: 2009年11月3日 どなたか出来る方がいましたらお願い致します。
>>450 遅れましたが回答ありがとうございました
474 :
◆DfRWmhgSjg :2009/11/01(日) 21:28:36
[1] 授業単元:OS入門 [2] 問題文(含コード&リンク): マルチプロセスを利用しfork(),セマフォ,メッセージをすべて使用したシステムの開発,結果を以下の項目にまとめ報告 1. システムの要求仕様 3. 上記プログラムの簡単な解説,特に fork(),メッセージ,セマフォの周辺について [3] 環境 [3.1] OS: (Linux) [3.2] コンパイラ名とバージョン: (gcc) [3.3] 言語: (C) [4] 期限: [2009年11月5日08:00まで] [5] その他の制限: よろしくお願いします
>>474 設計と要求仕様までこっちで定義しろって馬鹿だろw
477 :
474 :2009/11/01(日) 21:54:55
>>475 私もそう思いましたが、
「本当に簡単なものでいいから作ってください。こういうにはあなたたちのインスピレーションしだいですので」
といわれてしまい・・・。
>>477 いや、教授とか講師とかがじゃなくってお前がねーよwww
479 :
474 :2009/11/01(日) 22:01:25
すみません。 要求仕様など考えてから出直してきます。
ああwww 関数のポインタとか見逃してた。 ごめん
483 :
471 :2009/11/02(月) 00:36:52
>>480 ありがとうございます
しかしVS2008でエラーが出るのですがどうしたらよいでしょうか?
484 :
474 :2009/11/02(月) 01:07:11
486 :
satoshi :2009/11/02(月) 03:04:56
double型の引数を2つ持ち、aつの引数の積の絶対値を返す、 double型の戻値を持つ関数 absmul() を作成した上で、動作の 確認の出来るプログラムとして作成せよ。という問題と 標準入力からの入力に対して、アルファベットを全て空白文字 に変更して出力するプログラムを作成せよ。という問題がわかりません。 どなたかお願いします
487 :
satoshi :2009/11/02(月) 03:06:50
aつ が 2つの間違いです。
490 :
satoshi :2009/11/02(月) 11:45:59
[1] プログラミング [2] double型の引数を2つ持ち、2つの引数の積の絶対値を返す、 double型の戻値を持つ関数 absmul() を作成した上で、動作の 確認の出来るプログラムとして作成せよ。という問題と 標準入力からの入力に対して、アルファベットを全て空白文字 に変更して出力するプログラムを作成せよ [3] 環境 [3.1] OS: (Windowsxp) [3.2] コンパイラ名とバージョン:UNIX 2.1.4 [3.3] 言語: (C言語) [4] 期限: (11月3日 13時 [5] その他の制限: (特になし)
>>490 #include<stdio.h>
double absmul(double a, double b){
short x=0x1234;
double c;
unsigned char *p, *q;
c=a*b;
p=(unsigned char*)&x;
q=(unsigned char*)&c;
if(*p==0x12) q[0]&=0x7f;
else q[sizeof(double)-1]&=(~0)^0x80;
return c;
}
int main(void){
double a=2.0, b=-3.0;
printf("%f\n", absmul(a, b));
return 0;
}
>>490 #include<stdio.h>
int main(void)
{
int c, map[256];
unsigned char *p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for(c=0;c<256;c++) map[c]=c;
for(;*p;p++) map[*p]=' ';
while((c=getchar())!=EOF)
{
putchar(map[c]);
}
return 0;
}
アルゴリズムにsortというのがりますが、配列をsortするときにもとの配列番号が 何番に変わったか知る方法はありますか?ソートした配列を参考に別の配列も並び替えたいです。
ソートする配列と同じ長さの配列用意して、ソートする前にそこへコピーしとけば良いじゃん あとはその二つを比較するだけ
>>493 構造体で例えば
sruct abc {
double a;
int n;
};
としといて、aにバラバラの値を入れ、nに連番を入れて置きます
その後構造体でqsort(比較基準はabc.a)を掛ければ、nに
どのようにバラバラになったか順列が入ります
こんな感じ struct abc { double a; int n; }; int comp(const void *a, const void *b) { struct abc x = *(struct abc *)a, y = *(struct abc *)b; return (x.a < y.a) ? -1 : (x.a > y.a) ? 1 : 0; } int main(void) { struct abc aa[10]; int i; srand((unsigned)time(NULL)); for (i = 0; i < 10; i++) { aa[i].a = rand(); aa[i].n = i; } qsort(aa, 10, sizeof(aa[0]), comp); for (i = 0; i < 10; i++) printf("%d ", aa[i].n); putchar('\n'); return 0; }
497 :
デフォルトの名無しさん :2009/11/02(月) 13:38:02
【問題】0から40までの数字で3のつく数字と3の倍数を表示するプログラムを作成せよ お願いいたします。
>>497 #include <stdio.h>
int main(void)
{
printf("0 3 6 9 12 13 15 18 21 23 24 27 30 31 32 33 34 35 36 37 38 39");
return 0;
}
もうネタとしか思えなくなってきた
502 :
デフォルトの名無しさん :2009/11/02(月) 13:53:31
>>497 #include <stdio.h>
#include <string.h>
int main(void)
{
int i;
char buf[32];
for(i = 0; i <= 40; i++) {
sprintf(buf, "%d", i);
if (i % 3 == 0 || strchr(buf, '3') != NULL) printf("%d ", i);
}
return 0;
}
>>490 アルファベットとは何ぞやということになるな。
ハングルはアルファベットなのか(字母と方塊字で扱いは違うのか?)なんてのは さすがに考えないとして、ウムラウトやセディーユのついた文字はどうするのかね。
isalphaで判定できるものでいいだろ、常識的に考えて
>508 コードは書いてやるから、仕様は自分でだせ。
509 :
sage :2009/11/03(火) 01:38:41
510 :
デフォルトの名無しさん :2009/11/03(火) 01:57:30
[1] プログラミング入門 [2] 文字列sを逆に並べる関数reverse(s) を書け。 さらにこの関数を使って、入力を行ごとに反転させるプログラムを作成せよ。という問題です。 [3] [3.1] OS: (UNIX) [3.2] コンパイラ名とバージョン: (gcc) [3.3] 言語: (C) [4] 期限: [2009年11月3日12:00まで] [5]if文 while文などを勉強中です。 初心者用のプログラムでお願いします。
513 :
デフォルトの名無しさん :2009/11/03(火) 12:03:20
あ」
514 :
デフォルトの名無しさん :2009/11/03(火) 12:30:32
515 :
デフォルトの名無しさん :2009/11/03(火) 12:42:05
516 :
デフォルトの名無しさん :2009/11/03(火) 12:47:24
517 :
デフォルトの名無しさん :2009/11/03(火) 12:50:55
上の514,515,516はmewを使用して作成します。
518 :
デフォルトの名無しさん :2009/11/03(火) 12:52:05
間違えました、Emacsです
Emacsってコンパイラついてたっけ・・・
>>515 (1) (A)に同じ文を入れて考える
#include<stdio.h>
int main(void){
int i=0 j=0 k=0;
int n=0;
i=0;
while(i<100){
while(j<100){
while(k<100){
n++;
(A)
k++;
}
(A)
j++;
}
(A)
i++;
}
printf("n=%d",n);
}
>>515 (B)に同じ式を入れて考える
#include<stdio.h>
int main(void){
int i=0 j=0 k=0;
int n=0;
i=0;
while( (B) && (i<100){
while((B) &&(j<100)){
while((B) &&(k<100)){
n++;
k++;
}
j++;
}
i++;
}
printf("n=%d",n);
}
>>515 (3) (C)、(D)に適当な文を入れる
#include<stdio.h>
int main(void){
int i=0 j=0 k=0;
int n=0;
i=0;
while(i<100){
while(j<100){
while(k<100){
n++;
(C)
k++;
}
j++;
}
i++;
}
(D)
printf("n=%d",n);
}
523 :
510 :2009/11/03(火) 15:04:23
>>511 ・511さん
遅れましたが回答ありがとうございました。
>>516 #include <stdio.h>
int main(void)
{
int i, j, n;
scanf("%d", &n);
for(i=1; i<n; i++) {
for(j=n-i; j>=0; j--) putchar(' ');
for(j=2*i-1; j>0; j--) putchar('*');
putchar('\n');
}
for(i=2*n+1; i>0; i--) putchar('*');
putchar('\n');
return 0 ;
}
逆数を求めるプログラミングなんですが、どうしてもコンパイルできません。 間違いがあったらエロい人、、指摘してください。 #include <stdio.h> main(){ int i; float j = 1/i; for(i = 1; ;i++){ printf("%f\n" , j); } return 0; }
509です。 sageをミスって申し訳ございませんでした。 どなたか、お願いできませんでしょうか? よろしくお願いします。
>>525 正常に動作しないだけで、コンパイルは通ると思うが。
>>527 float j = 1/i; で未初期化の変数を参照がエラーか警告になるかも
>>525 jを計算する場所が違う。
コンパイルができない、というのはエラーが出るのか警告が出るのか、
あるいは実行時エラーなのか、はっきりしてくれ。
初期化に変数は使えないとか。
>525 gccに食わせたけど、警告は出るけどコンパイルはできるよ。 たぶんやりたいことはこうじゃない? #include <stdio.h> int main(void) { int i; for (i = 1; i < 10; i++) { printf("%f\n" , 1.0 / i); } return 0; }
532 :
デフォルトの名無しさん :2009/11/03(火) 15:57:42
[2]問題: 標準入力からの入力に対して、アルファベットを全て空白文字に変更して
出力するプログラムを作成せよ。という問題です。
[3.1] OS: (UNIX)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: [2009年11月4日9:00まで]
かなりの初心者です
http://codepad.org/nrbnRlD3 自分で作ってみたのですが、エラーが出ました。
何が足りないか、何が間違っているか改良をお願いします。
>509 元のコードがでかいので、デバッガでコードを追いたかったのだが、 gcc + insightでは開こうとしたとたんに落ちてしまう。 実行自体はできるのだけれど。 #conio.hがあるとコンパイルできないのだが、使っているところがないので 削った。 もう少しおってみるかな。
大文字を小文字に修正しても希望の動作にはならないけどなw
最初の while で標準入力食いつぶすしねw
#include <stdio.h> #include <ctype.h> int main(){ int c; while((c=getchar())!=EOF)putchar(isalpha(c)?' ':c); return 0;}
538 :
509 :2009/11/03(火) 16:21:37
>533 すいません。 よろしくお願いします。
539 :
533 :2009/11/03(火) 17:41:45
>509 デバッガが使えないのでコードリーディングに手こずっている。 出題主、以下の情報ください。 1)BCalculationの仕様 コメント、mainでの使い方からして 入力"+ 6 3 " 戻り値9みたいな ものを想定していた。でも動かしてみたらそうじゃないし、 どう動いて欲しいのかわからない。 どんな入力に対してどういう戻り値を期待している? 2)MtoBの仕様 以下のようなものを想像しているが、あっているか? 入力 "6 + 3 * 3" 戻り値 "+ 6 * 3 3" (BCalculationのinputになれるもの)
540 :
506 :2009/11/03(火) 18:27:31
>>539 つ「逆ポーランド記法」
6 3 +
6 3 3 * +
デバッガは無料で手に入る VC++2008EE IDE はいかが?
541 :
509 :2009/11/03(火) 18:29:38
>533 返答が遅くなり、すいません。 ご迷惑をおかけします。 1)BCalculationの仕様 回答の所で使用していますので、お考えであっていると思います。 ただ、"63+" の "9"と思っていました。 的外れな回答でしたら申し訳ありません。 2)MtoBの仕様 その通りです。 こちらも、"633*+"と思っていました。 実は、最初は”回答”の上に printf("変換:%s\n",str.str); を入れていました。 しかし、課題内容にはないため外しました。 変換後の結果が出るものです。
一回目はちゃんと漢字じゃないとw
545 :
509 :2009/11/03(火) 20:30:17
>533=539=544 返事が遅くなり申し訳ございません。 残念ながら動作しませんでした。 コンパイルは出来たでですが、実行すると 何も入力する前に、 「問題が発生したため、muda.exe を終了します。 ご不便をおかけして申し訳ありません。」 と出て終了してしまいました。 新しくコードを書いて頂いたようで、申し訳ございません。 しかし、一度前のものを提出し追加課題として「エラーを検知させよ」 だった為、条件として [5] その他の制限:途中までのソースコードがありますので、そちらに追記お願いします。 と記載しておりました。 できましたら、追記でお願いしたいのですが無理でしょうか? 宿題を解いて頂いているのに、文句言って本当にすいません。
546 :
540 :2009/11/03(火) 20:56:58
>>545 ソースをみる限り第一引数に逆ポーランド式を指定しないとダメです。
たとえば、
foo.exe "1 1 +"
とします。
>>544 おかしいですね。私のところでは、BCalculation はうまく動いていますが。(bcc32/gcc/VC++2008)
547 :
509 :2009/11/03(火) 21:30:57
>540 逆ポーランド部分は出来ていると、自分の中では信じきっていました・・・ そうでしたか、もう一度考えてみます。
549 :
548 :2009/11/03(火) 21:57:12
×気に ○機に
>546 >547 mainを下記のように書き直して試してみた。 int main(void) { struct NewStr str; printf("式を入力\n"); gets(str.str); printf("\n"); // str = MtoB(str.str); printf("回答:%4.2lf\n\n",BCalculation(str.str)); return 0; } 例えば"6 3 +"を入力していて解答6となっておかしい、と思っていた。 コードを追っかけてみて"6 3 + "(最後にスペースが入っている)と入力すると上手く行くことがわかった。 これは仕様制限ということでよいのですよね? そういう前提でもう一度見てみる。 確認するけど、基本的に正常系の動作はしていて、 >演算不可能な場合は、エラー表示させること。 >例:6+3** 9// 9-5) 8+( という部分の実装が漏れている、ということなのかな。
>>550 >>509 の代数式→逆ポ変換 (MtoB()) は力作でして、(多分)うまく動いているのですが、
括弧の処理をとくにリカーシブに書いているところもあり、私もなかなか把握しきれないでいます。異常系の切り分けも難しい。
いずれ、どうあがいても、リカーシブに書かざるを得ないとは思いますが、ここで、心機一転、定石をお勧めしたしだいです。
MtoB() を自力でここまで書いたのであれば、尊敬に値します。少なくとも私にはできません。
552 :
509 :2009/11/03(火) 22:34:48
>550 はい、その通りです。 >演算不可能な場合は、エラー表示させること。 >例:6+3** 9// 9-5) 8+( の部分が抜けています。 >551 しかし、一度提出してる手前、再度初めからとなると このエラーを表示させる課題ごと意味が無くなってしいます。 この課題に取り掛かって、1ヶ月ほど助言を受けたり、書いては 書き直ししているうちに段々訳がが分からなくなってきて気が付くと この形でした。
553 :
551 :2009/11/03(火) 22:44:07
>>552 なるほど。
定石をお勧めしたい気持ちはやまやまなのですけれども。
ちょっと説明していただけますか?たとえば、
char stack[STR_MAX], str[STR_MAX], tempstr[STR_MAX*2];
int newstr_pos=0, i, flg=0, parentheses_flg=0, str_pos=0, minus_flg=0, tempstr_pos=0, stack_pos=-1;
の各バッファ、各 pos の意味合いとか、どうしてこういう仕掛けを作ったかとか。
556 :
509 :2009/11/04(水) 02:12:30
>551 申し訳ありません。逆ポーランドの所が出来ていなかったので 自分で考えると言った手前考えていましたらいつの間にか こんな時間になっており、質問が来ているのに気が付きませんでした。 533さんに書いて頂いたコードと548さんに紹介して頂いたサイトのコードを 参考に逆ポーランドの部分も間違いが直す事ができ、課題も完了する事が 出来ました。 皆様本当にありがとうございました。
処理時間を計る関数の中で、最も最小単位まで計れる関数は何でしょうか? 教えてください
QueryPerformanceCounter
[1] 授業単元:プログラミング2 [2] 問題文(含コード&リンク):ユークリッド互除法を使って二つの数字の最大公約数を求める。ただし、マイナスの数も求められるようにする。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: Gcc3.4(MinGW) [3.3] 言語: C言語 [4] 期限: 今日中 [5] その他の制限: 特になし よろしくお願いいたします。
561 :
デフォルトの名無しさん :2009/11/04(水) 20:08:57
[1] 授業単元:ソフトウェア工学 [2] 問題文(含コード&リンク): (π/4) = tan^-1(1) = 1 - (1/3) + (1/5) - … + (-1)^k * (1/(2k+1)) + … の公式を用いて、第n項までの多項式近似により円周率を求め、その誤差と計算時間を測定するプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:オールインワンエクリプス [3.3] 言語:C [4] 期限:できれば明日までに [5] その他の制限:特になし
564 :
デフォルトの名無しさん :2009/11/05(木) 00:29:07
【質問テンプレ】 [1] 授業単元:C言語 [2] 問題文 問題文1 整数 n を入力すると 'a' から n個目までのアルファベットを全て表示するプログラムを作成せよ。 (例:n=6 の時 abcdefを表示) 問題文2 整数 n を入力すると1からn までの間で 3の倍数か、 5の倍数のどちらかであるような数の和を表示するプログラムを作れ。 (例:n=10 の時 3+5+6+9+10=33) 問題文3 次のプログラムの (a)-(j)の部分をfor 文を使って書き直せ。 #include<stdio.h> int main() { int a[10]; double sum,ave; sum=0; a[0]=1; a[1]=5; a[2]=7; a[3]=2; a[4]=4; a[5]=1; a[6]=9; a[7]=4; a[8]=20; a[9]=5; sum=sum+a[0]; /* (a) ここ */ sum=sum+a[1]; /* (b) ここ */ sum=sum+a[2]; /* (c) ここ */ sum=sum+a[3]; /* (d) ここ */ sum=sum+a[4]; /* (e) ここ */ sum=sum+a[5]; /* (f) ここ */ sum=sum+a[6]; /* (g) ここ */ sum=sum+a[7]; /* (h) ここ */ sum=sum+a[8]; /* (i) ここ */ sum=sum+a[9]; /* (j) ここ */ ave=sum/10; printf("総和は %d です。平均は %d です。\n",sum, ave); } 問題文4 整数を5個入力すると、まずそのまま表示し、次に逆順で表示するプログラムを作れ。 実行例: 数を入力して下さい: 3 数を入力して下さい: 7 数を入力して下さい: 1 数を入力して下さい: 2 数を入力して下さい: 5 そのまま表示 3 7 1 2 5 逆順に表示 5 2 1 7 3 プログラムのテキストをコピーして下のテキスト入力フィールドへ出力結果と共に貼り付けて提出すること。 [3] 環境 [3.1] OS: XP [3.3] 言語: C++ [4] 期限: 明日まで [5] その他の制限 #include <stdio.h> int main() スタートでお願いします。
[1]授業単元 C言語実習 [2]コマンドラインで指定された英数字と空白、タブ、改行記号 のみから構成されるテキストファイルに含まれる単語の頻度を アルファベット順に出力するプログラム。 単語とは英数字のみで構成されているものを指す。 一つの単語が1回現れた時は部分単語すべてが現れたものとする。 部分単語とは、その単語の連続する部分文字列のことである。 授業で述べた多重ハッシュテーブルを利用すること。 行の長さ、行の総数、単語の長さに制限は無いが、頻度は 32bit整数(符号付き)で正の範囲に表せるものとする。 [3] Linux/gcc 4.0/C言語 [4] 今週の金曜日夕方18:00迄
先ず答える前に問題の水準を誰かが大まかに分類しそれぞれの 水準別に解答貼付け専用スレを立ててそこに誘導したほうが 良くね?高校生レベルの問題と大学院修士課程レベルの問題とかが 混在したら回答者の精神衛生に問題が生じる可能性があるから
[1] 授業単元:ソフトウェア工学 [2] 問題文(含コード&リンク): 台数近似を用いて、分割数nに対する I = ∫[1,2]ln(x)dx の値を求めるプログラムを作成し、誤差を求めよ。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:オールインワンエクリプス [3.3] 言語:C [4] 期限:今日中 [5] その他の制限:特になし
やれるやつがやる 分類の必要なし 各人のスキルは違う 高校生が大学院生よりプログラムできることはある
571 :
566 :2009/11/05(木) 02:02:07
条件が一つ抜けてました。 《追加条件》 ファイルを読み込んでいる間に、記憶している単語別頻度の順位に変更が発生したら、その時点でアルファベット順に都度出力すること
授業で述べた多重ハッシュテーブル これわからん
573 :
566 :2009/11/05(木) 02:16:21
>>572 お答え下さいましてとりあえずありがとうございます。
わたしも良くわからないんですが、ハッシュテーブルが
衝突だったら別のハッシュ関数でその下にテーブルを
作るとかかなんとかだったと記憶してますけど...
ノートには次のように写してます。(板書写しなんで
間違ってるかもです)
if( array[ hash1(string) ] = NIL )
array[ hash1(string) ] := string;
else if array[hash1(string)][ hash2(strin) ]=NIL
array[hash1(string)][hash2(string)]:=string;
else ........
ch[n]がcharとしてpを素数として ch[0] + p * ch[1] + p^2 * ch[2] + ・・・ + の上か下の何ビットかをハッシュにしたらいいのでは。 異なるハッシュがいくらでも作れる。
なぜかヴァニラアイスのスタンド思い出した
>>565 for(i=p; i<=q; i++) a[i] = b[j] < c[k] ? b[j++] : c[k++];
>>564 問題文1が間違っている。
'f' は 'a' から 5 個目だろ。
'a'を1個目として数えてるんだろ
アルファベットって順序があるんだ・・
583 :
デフォルトの名無しさん :2009/11/05(木) 16:43:05
>>565 その埋めるところ以外ってまさかもとから問題として書かれてるわけじゃないよな?
565が自分で書いてみただけだよな?
>>577 SENTINELは全く出てこないが...
SENTINELは不要? for(i=p,j=k=0;i<=q;i++) if( j>m-p) a[i]=c[k++]; else if( k>=q-m) a[i]=b[j++]; else if(c[k]<b[k]) a[i]=c[k++]; else a[i]=b[j++]; }
SENTINELの意味わかってねーだろw
565のマージソートは致命的な欠陥があるw
>>586 >else if(c[k]<b[k]) a[i]=c[k++];
>else if(c[k]<b[k]) a[i]=c[k++];
>else if(c[k]<b[k]) a[i]=c[k++];
>else if(c[k]<b[k]) a[i]=c[k++];
else if(c[k]<b[j]) a[i]=c[k++];
じゃね?
わずかなミスでそんなに嬉しそうに揚げ足とらなくてもw
>>567 水準は兎も角、意外に奥の深い問題と学習確認クイズは
区別されたほうが良いかもな
>>590 プログラミングではわずかなミスが致命的なバグとなる事がよくある
嬉しかったのは否定しないんだw
>>593 589の問題は嬉しそうに挙げ足をとっていることなんだけど
改行厨みたいで迷惑
598 :
初心者 ◆.6Hqkk7dyk :2009/11/05(木) 21:06:28
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 2つの整数値と1つの文字を、例えば「4+2」のように入力し、 入力に応じた四則演算を行って結果を出力するプログラムを作成しなさい。 ただし、中央の文字に四則演算の記号以外の文字が入力された時のことも考慮しなさい。 [3] 環境 [3.1] OS: UNIXのemacs [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:2009年11月7日17時まで まだまだ初心者でよくわかりませんorz よろしくお願いします。
>>565 N*2が並び替える配列のサイズであるとしたら、
最初に呼び出したときにSENTINELがb[N]、c[N]の範囲外に代入されてしまう。
再帰関数を呼び出すごとにb[N],c[N]を確保するのは領域の無駄以外の何者でもない。
604 :
デフォルトの名無しさん :2009/11/06(金) 22:56:50
#include <iostream> using namespace std; int main() { int i,goukei=0; int kokugo[5]; float heikin; for(i=0;i<5;i++) { cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n"; cin >> kokugo[i]; goukei = goukei + kokugo[i]; } heikin = (float)goukei/5.0; cout << "平均点は" << heikin << "点です\n"; for(i=0;i<5;i++) { cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i]; cout << "点で、平均との差は" << heikin-(float)kokugo[i] << "です\n"; } return 0; } これを 数学の点数も入力する 数学の平均も出力する 国語と数学の総合的な平均点も出力する ようにするにはどうすればいいんですか?
606 :
604 :2009/11/06(金) 23:21:34
ごめんなさい C++です
じゃなくてちゃんとテンプレに従った形で書けって事 プログラムはろだにうpしろ
609 :
609 :2009/11/07(土) 02:02:45
#include <iostream> using namespace std; int main() { int goukei_k = 0, goukei_s = 0; int kokugo[5], suugaku[5]; float heikin_k, heikin_s, heikin; for(int i=0; i<5; i++) { cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n"; cin >> kokugo[i]; goukei_k += kokugo[i]; cout << "同じく数学の成績を入力してください\n"; cin >> suugaku[i]; goukei_s += suugaku[i]; } heikin_k = (float)goukei_k/5.0; cout << "国語の平均点は" << heikin_k << "点です\n"; heikin_s = (float)goukei_s/5.0; cout << "数学の平均点は" << heikin_s << "点です\n"; heikin = (float)(goukei_k + goukei_s)/5.0; cout << "合計の平均点は" << heikin << "点です\n"; for(int i=0; i<5; i++) { cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i]; cout << "点で、平均との差は" << heikin_k - kokugo[i] << "です\n"; cout << "同じく数学の成績は" << suugaku[i]; cout << "点で、平均との差は" << heikin_s - suugaku[i] << "です\n"; cout << "同じく合計の成績は" << kokugo[i] + suugaku[i]; cout << "点で、平均との差は" << heikin - (kokugo[i]+suugaku[i]) << "です\n"; } return 0; }
[1] 授業単元:オペレーティングシステム実習 [2] 問題文 マルチプロセスを利用したシステムの開発を行い,結果を以下の項目にまとめ報告せよ. fork(),セマフォ,メッセージをすべて使用すること. ・システムの要求仕様 ・プログラムのソースファイル ・上記プログラムの簡単な解説,特に fork(),メッセージ,セマフォの周辺について [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: Gcc [3.3] 言語: C言語 [4] 期限: 11/9いっぱい [5] その他の制限:なし フォーク、セマフォの作り方がよくわからないのでよろしくおねがいします。
613 :
デフォルトの名無しさん :2009/11/07(土) 21:44:16
615 :
デフォルトの名無しさん :2009/11/07(土) 23:42:13
C++で10進数を2進数に変換するプログラムを配列使って 順番通りに表示できるようにするのってどうするんですか #include <iostream> using namespace std; int main() { で始まる感じで(もしかしたらcmathとか使うかもしれないですが) 最後は return 0; }です
616 :
デフォルトの名無しさん :2009/11/08(日) 00:52:50
>>608 へぇ〜ほぉ〜小学校でC言語やプログラミングって習うんだぁ。どこ?
冥途市立地獄小学校
>>616 小学校は難しいとしても、勘のいい人なら普通の人でもできる内容かもね。
国語を算数に変えたら算数になることは分かるだろうし。
出来ようが出来まいがプログラミング言語を小学生がやるのは愚の骨頂
620 :
620 :2009/11/08(日) 01:42:22
#include <iostream> using namespace std; int main() { int i, n, bin[32]; cout << "Number:"; cin >> n; cout << "Binary:"; for(i=0; i<32; i++) { bin[i] = n & 1; n >>= 1; } for(i=31; i>=0; i--) cout << bin[i]; return 0; }
>>619 小学生がやるのは個人の好き勝手だと思うし、愚かだとは思わない。
よしんば愚かだと思ってもそれが骨頂の愚かな行為とまでは思えない。
622 :
デフォルトの名無しさん :2009/11/08(日) 01:52:07
>>620 19を2進数にすると10011だと思うんですが
その前に0が沢山並ぶのはOKなんでしょうか?
>>621 プログラミングというのは本来、プログラミング言語自体を
作りながらやるもの。これは到底小学生に出来る世界じゃない。
出来合のプログラミング言語解釈疑似実行プログラム(=コンパイラ)
を使って遊ぶことは、実はプログラミングとは言うのはかなり
恥ずかしい。
有害無益とまでは言わないが、商業的には兎も角、教育的な意味で
有益にするのはかなり難しい。
相当に優秀な教師でも居ない限りね。
Cはそれなりに安定した多方面に応用されている信頼できる言語の ひとつだが万能な言語じゃない。万能な言語など無い。
Cが万能じゃないことなどプログラマなら誰でも知ってる。 それはそうと、俺は言語作ったこと無いけどみんなはあるの?
627 :
デフォルトの名無しさん :2009/11/08(日) 02:26:47
>>623 プログラム言語だってコンパイラだって出来合いのをコンパイルしたもんだろ
機械語に直接翻訳するようなのを自分で作るなら話は別だが
>>623 >プログラミングというのは本来、プログラミング言語自体を
>作りながらやるもの。
そもそもこの定義はどこから来たのw?
比喩が理解出来なくなってる段階で、すっかりプログラム されちゃってるなw
比喩なんてもんじゃない、ただのバカだろw
俺にはどれが何の比喩表現なのかが分からない
バカなプログラマは、コードにバグが無いと信じ、言語にバグがあると信じ込む。だから言語を作れるんだみたいな傲慢なことを言う。 優秀なプログラマは、天賦な言語にバグなどないと敬虔に信じ 救われる。
彼は言語を作れるんだなんて言ってない。 プログラミングとは言語を作ることだと言っている。 つまり、プログラマと名乗る以上、優秀であろうとそうでなかろうと言語を作っているはずなんだよ だから俺はプログラマじゃないの。
プログラムをされている方なんですね...わかります
行ってることが意味不明 C言語でおk
文法とかの理解も妖しいのに言語なんか作れるのか?
文法など理解出来るしろものじゃないからこそ言語を天賦の ものじゃないと考えるわけだ。
639 :
620 :2009/11/08(日) 07:55:58
>>620 19を2進数にすると10011だと思うんですが
その前に0が沢山並ぶのはOKなんでしょうか?
620は○△先生じゃないから、質問されても答えられない。
-9を2進数にすると幾つだと思うか?!
>>616 東京にIQ130以上の子供だけを入園させることが出来る幼稚園(だっけな?)とかなかったかな
確かそこでプログラミングしてたはず
それに近頃の、ませた小学生がプログラミングに興味を持ってるのもいるしなぁ。
俺、小学生の時、パソコン買って、プログラミングしてたよ。 簡単なお絵描きプログラムなんですが、 BASICの本のサンプルみたいなのを、機能拡張しながら使ってた。 そのときはテープも使えず、フロッピーディスクなんてのもないから、 覚えてしまったコードを毎回入力してたけど、毎回すこしずつ違ったコードでした。
>>639 負の数を2進数にする時のためにも、最初に全体のビット数は
何ビットなのかはっきりさせておかなければ
2進数では大抵負の数は2の補数という表現を取り、最上位
ビットは1になる
644 :
デフォルトの名無しさん :2009/11/08(日) 20:09:22
645 :
デフォルトの名無しさん :2009/11/08(日) 20:35:07
[1] 授業単元: 画像情報工学 [2] 問題文:ブレゼンハムのアルゴリズムを用いて、ウィンドウ内に線分を描画するプログラムを 作成しなさい。(以下の仕様で作成せよ) ■仕様(マウスの右と左のボタンを使用する。候補線の表示なし。) マウスの左ボタンクリック 線分の始点座標の指定 マウスの右ボタンクリック 線分の終点座標の指定及び線分の描画 [3] 環境 [3.1] OS: Windows vista [3.2] コンパイラ名とバージョン: Visual C++ 2008 [3.3] 言語: C++ [4] 期限:2009年11月17日まで [5] その他の制限:特になし
646 :
デフォルトの名無しさん :2009/11/08(日) 21:52:25
丸さんかっけー
648 :
デフォルトの名無しさん :2009/11/08(日) 23:32:22
>>647 意味わからないですよね?
普通に読むとそうですが
>>639 #include <iostream>
#define TRUE (1==1)
using namespace std;
int main() {
int i = 0, n, bin[sizeof(int) * 8];
cout << "Number:"; cin >> n;
cout << "Binary:";
while(TRUE){
bin[i] = n & 1;
if ((n >>= 1) == 0){break;}
i++;
}
while(i >= 0){
cout << bin[i--];
}
cout << '\n';
return 0;
}
つーか直書きやめてcodepad使おうぜ
[1] 授業単元: C言語演習 [2] 問題文(含コード&リンク): 正の整数nの2乗の数に、2種類の数字しか現れない 4桁の正の整数 n をすべて挙げなさい [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: c言語 [4] 期限: 2009年11月13日13:00まで [5] その他の制限:なるべく簡単にお願いします よろしくお願いします
>>651 #include<stdio.h>
int main(void){
puts("1000 2000 3000 3114");
return 0;
}
>>651 ()を適当に埋めて整数の桁に現れる数を数え上げる関数
count(int n)を作ってこれを使って完成させな
int count( int n ){
int i,c[10],d;
for(i=0;i<(?);i++) c[i]=( );
while(?){ c[(?)]++;n/=10; }
for(i=d=0;i<10;i++) d+=(c[i]==0)?(?):(?);
return (?);
}
656 :
656 :2009/11/09(月) 01:42:47
#include <stdio.h> int main(void){ int i, j, ii, count, digit[10]; for(i=1000; i<10000; i++){ // sqrt(1000) = 31.6227 for(j=0;j<10;j++) digit[j]=0; ii = i*i; for(j=0;j<8;j++) { // 10,000*10,000 = 100,000,000 digit[ii%10] = 1; ii /= 10; if(ii==0) break; } count = 0; for(j=0;j<10;j++) if(digit[j] == 1) count++; if(count==2) {//printf("-->"); printf("%d %d %d\n", i, count, i*i); } } }
657 :
デフォルトの名無しさん :2009/11/09(月) 03:47:58
[1] 授業単元: C言語のポインタ、配列、ファイルの問題です [2] 問題文(含コード&リンク): n件のデータを配列に入力しその平均値を出力するプログラムをつくり、 実行部において添字演算子は用いず、*(p+i)と*p++それぞれを用いるパターンを作る ただし、入出力処理をファイル処理に、入出力ファイル名はコマンドラインで指定する [3] 環境 [3.1] OS: とくになし [3.2] コンパイラ名とバージョン: とくになし [3.3] 言語: c言語 [4] 期限: 2009/11/09日中 [5] その他の制限:途中まで出来ている部分を使ってください。 #include<stdio.h> int main(void) { int A[100]; int a,b,i,n,*p; *p=A[0]; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",*(p+i)); } for(i=0;i<n;i++){ b+=*(p+i); } a=b/n; printf("%d",a); return(0); } です。よろしくお願いします。
>>651 #include <stdio.h>
int check(int n)
{
int i, a[2], temp, c = 0;
while(n) {
temp = n % 10;
for(i=0; i<c; i++) if(a[i]==temp) break;
if(i==2) return 0;
if(i == c) a[c++] = temp;
label:
n /= 10;
}
return 1;
}
int main(void)
{
int i;
for(i=1000; i<10000; i++) if(check(i*i)) printf("%d\n", i);
return 0;
}
ゴミが残った label:は消しといて
>>659 バグってるぞ
実行結果
1000
2000
3000
3114
お前は何を言ってるんだ?
>>652 も
>>656 も答えはその4つなんだが、どこがバグってるんだろ
表示するのは4桁の整数の方だし
正の整数 nの2乗の数に、「10の倍数でなく、 10進数表記で、3種類以上の数字が現れる、 もしくは1種類の数字しか現れない」という ことが無いものをすべて挙げなさい
正の整数 nで、その2乗が10の倍数でなく、 「「10進数表記で、3種類以上の数字が現れる、 もしくは1種類の数字しか現れない」という ことが無いもの」をすべて挙げなさい
666 :
656 :2009/11/09(月) 10:37:30
4桁までの数。 int main(void) { int i; for(i=1; i<10000; i++) if(check(i*i)) printf("%04d\n", i); return 0; }
で、勝手に問題書き換えてバグがないものをバグって言い張るつもり?
問題出したきゃ、大学でも専門学校でもどこでもいいから講師になってからにしろよw
670 :
656 :2009/11/09(月) 11:01:05
書き換えてないぞ。柿加えた。10の倍数を含まない。 int main(void) { int i; for(i=1; i<10000; i++) if(i%10) if(check(i*i)) printf("%4d %d\n", i, i*i); return 0; }
恥ずかしい突込みをした661が話を逸らそうとして必死にしか見えないんだがw
672 :
656 :2009/11/09(月) 11:07:19
1回だけのは除く。 for(i=4; ......
講師は問題を解いて説明する 生徒はそれを写す んだろ?
656なら他人の関数使ってないで、自分が書いたやり方でやれよw
675 :
656 :2009/11/09(月) 11:34:26
>>670 で、数字が1種類でも動くようにcheck()を改良せよ。
679 :
613 :2009/11/09(月) 14:32:26
関数ポインタをconstで宣言したいんですがー const int(*func)(void*) = ... のように宣言すると、funcの挙動としてconstが定義されて(戻り値がconst int型となり) 変数func自体はconst化されず、プログラム中でポインタの書き換えが行えてしまいます。 関数の挙動としては戻り値にconstをつけず、ポインタ自体にconstを当てはめたいのですがー どなたかいい手法をご存知ないでしょうか?
多分 int(* const func)(void*)
681 :
679 :2009/11/09(月) 14:42:37
>>680 早レスありがとうございます。が、だめでしたora
やってみた #include <stdio.h> int func(void) { return 1; } int main(void) { int (* const fun)(void) = func; printf("%d\n", fun()); return 0; } 出力結果 1
ちなみに #include <stdio.h> int func(void) { return 1; } int func2(void) { return 2; } int main(void) { int (* const fun)(void) = func; printf("%d\n", fun()); fun = func2; return 0; } const_func2.c: In function 'main': const_func2.c:19: error: assignment of read-only variable 'fun'
そもそも なぜそのようなことをするのか という疑問のほうが...
685 :
679 :2009/11/09(月) 14:47:55
>>680 早レスありがとうございます。が、だめでしたora
686 :
679 :2009/11/09(月) 14:49:30
>>680 と思ったら右辺のほうも書き換えないといけないんですね。
両方(*const func)で解決致しました。ありがとうございます。
funcに一度値を設定したら書き換えることが出来ないんだろ? どういう状況でfuncという変数を使うのか知ってみたい
int Stage1( void ); int Stage2( void ); int Stage3( void ); int (* const func[])(void) = { Stage1, Stage2, Stage3 }; { while(1) func[now_stage]; }
趣味の問題ね()
691 :
656 :2009/11/09(月) 16:37:19
>>659 待った?
int check(int n) {
int i, a[2], temp, c = 0;
while(n) {
temp = n % 10;
for(i = 0; i < c; i++)
if(a[i] == temp) break;
if(i == 2) return 0; // check NG
if(i == c) a[c++] = temp;
n /= 10;
}
if(c == 2) return 1; // check OK
return 0;
}
659は関係ないだろw
おいおい、
>>675 の名前欄は656、つまりお前自身じゃねーかよw
自演で何やってんだよw
[1] 授業単元:画像処理 [2] 問題文(含コード&リンク): ブレゼンハムのアルゴリズムを用いて、ウインドウ内に線分を描画するプログラムを作成しなさい。 動作の仕様は2通りの中から選びなさい。(どちらでもよい) 仕様1(マウスの左ボタンと右ボタンを使用する。候補線を表示はなし。) マウスの左ボタンクリック 線分の始点座標の指定 マウスの右ボタンクリック 線分の終点座標の指定及び線分の描画 仕様2(マウスの左ボタンだけで操作する。候補線を表示する。) マウスの左ボタンクリック 線分の始点座標の指定、及び線分の描画開始 マウスの移動 始点から線分を絶えず候補として描画。(古い線分は消す) マウスの左ボタンクリック 線分の終点座標の確定。線分を描画。 ただし、ライブラリの点を描画するAPI関数を使って線分を引くこと。直線を引くAPI関数を使ってはならない。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ: Microsoft Visual C++ 2008 Express Edition [3.3] 言語: C++ [4] 期限: 09年11月11日(水) [5] その他の制限: 特になし 仕様は1と2どちらでもOKなので、簡単なほうで構いません。 よろしくお願いします。
[1] 授業単元: C言語 [2] 問題文(含コード&リンク):不定方程式が解を持つか判断して、持つ場合には解を求めるプログラムを作れ [3] 環境 [3.1] OS: Windows vista [3.2] コンパイラ名とバージョン: Visual C++ 2008 [3.3] 言語:C++ [4] 期限: 明日まで [5] その他の制限: 特になし もしどなたかやっていただけるならばお願いしますm(_)m
696 :
デフォルトの名無しさん :2009/11/09(月) 19:30:06
699 :
デフォルトの名無しさん :2009/11/09(月) 20:37:11
#include <iostream> using namespace std; int main() { int a[100],b=-9999; int i=0,j; do { cout << "整数値を入力してください\n"; cin >> a[i]; b += a[i]; i++; }while( a[i-1] != 9999); cout << b << '\n'; for(j=0;j<i-1;j=j+1) cout << a[j] * 3 << '\n'; return 0; } このプログラムってループを抜ける条件は9999と入れた時だけですか?
>>699 いえ、他にも、100回を超えても何度も何度も操作を続けて
書き込み禁止のメモリに到達したときにも抜けます(異常終了という形で)。
702 :
デフォルトの名無しさん :2009/11/09(月) 21:29:26
703 :
604 :2009/11/09(月) 21:37:51
国語と数学の総合的な平均点も出力する っていう言葉の意味が分からないんですが、これは、合計を5で割ればいいんですかね? 10で割ればいいんですかね?
国語の合計と数学の合計の合計を10で割るのが一番正確だが 国語の平均と数学の平均の合計を2で割ってもまぁ良い
705 :
デフォルトの名無しさん :2009/11/09(月) 21:44:31
[1] 授業単元:データ構造とアルゴリズム設計 [2] 問題文(含コード&リンク): 入力された小文字のアルファベットを,リストを用いて順次格納する. ’−’が入力された時に文字の入力を終了し,それまでに格納された全ての文字を表示するプログラムを作成 せよ. ただし,リストに格納する際,リストの最後に追加するようにせよ. 例(a, b, c, - と順に入力したときa,b,cと出力される) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:特に無し [5] その他の制限:双方向リストは使わない。 ヘッダは#include <stdio.h>以外は使わない
706 :
604 :2009/11/09(月) 21:45:16
>>704 つまり、これは総合的平均っていうのは100を越すことはないという事ですか?
>705 制限付きで面白そうなのでやってみようかな
709 :
デフォルトの名無しさん :2009/11/09(月) 23:24:36
710 :
デフォルトの名無しさん :2009/11/09(月) 23:35:40
10進数を2進数に変換するプログラムを 順番通りに表示できるようにするプログラムを配列を使って作るんですが #include <iostream> using namespace std; int main() { int i,n,bin[32]; cout << "10進数:"; cin >> n; cout << "2進数:"; for(i=0; i<32; i++) { bin[i] = n & 1; n >>= 1; } for(i=31; i>=0; i--) cout << bin[i]; return 0; } 結局これは、0がいっぱい出てくるから、ダメですかね? それとも負の数も考慮に入れたから、こういう事になったんですか?
>>710 言ってる意味がわからない。
実行して無いけど、パッと見は合ってるように見える。
どんな入力をしたらどんな出力がされた?
1をいれたら00000000000000000000000000000001が出るのは正しいよ。
2進数での表示ってのは普通そういうもの。
>>706 ,604
#include <iostream>
using namespace std;
int heikin(char *gakka){
int i, seiseki[5], goukei = 0;
float heikin;
for(i = 0; i < 5; i++) {
cout << "出席番号" << i + 1 << "番の" << gakka << "の成績を入力してください : ";
cin >> seiseki[i];
goukei += seiseki[i];
}
heikin = (float)goukei/5.0;
cout << "平均点は" << (float)goukei/5.0 << "点です\n";
for(i = 0; i < 5; i++) {
cout << "出席番号" << i + 1 << "番の" << gakka << "の成績は" << seiseki[i];
cout << "点で、平均との差は" << heikin - (float)seiseki[i] << "です\n";
}
return heikin;
}
int main() {
float sou_heikin = 0;
sou_heikin += heikin("国語");
sou_heikin += heikin("数学");
cout << "総平均は" << sou_heikin / 2 << "です\n";
return 0;
}
713 :
デフォルトの名無しさん :2009/11/10(火) 00:10:47
>>711 1だとそうやって出まして、-1だと、全部1がずらっと並びました。ごめんなさい
bin[i] = n & 1;っていうのはどういう意味ですか?というか、binというのは何でしょうか?
>>710 こういう事?
10進数:19
2進数:10011
#include <iostream>
using namespace std;
int main() {
int i=0,n, bufsz = sizeof(int) * 8, bin[bufsz];
cout << "10進数:";
cin >> n;
cout << "2進数:";
for(i = 0; i < bufsz; i++) {
bin[i] = n & 1;
if(!(n >>= 1)){break;}
}
while(i>=0){
cout << bin[i--];
}
return 0;
}
715 :
デフォルトの名無しさん :2009/11/10(火) 00:12:46
>>714 0がずらっと並ばないというのはそういう事です。
716 :
デフォルトの名無しさん :2009/11/10(火) 00:21:12
>>714 でもこれ
定数式が必要です
bin:サイズが不明です
サイズが0の配列を割り当てまたは宣言しようとしました
って出てできません
717 :
デフォルトの名無しさん :2009/11/10(火) 00:34:28
本当にごめんなさい。 n >>= 1; ってどういう事ですか? >>=って表現あるんですか?
>>713 -1がそうなるのは正しい、「二進数」とか「二の補数」でググれ。
&ってのはand演算をしている。「論理演算子」でググれ。
binてのはbinaryの略で、そのまんま「二進数」の英訳。
二進数にした一桁一桁の0もしくは1を格納している。
>>716 本当はよりよいソースなんだけど、課題でそこまでこだわるこたーない
とりえあずbin[bufsz];をbin[sizeof(int) * 8]にすりゃ逃げられるだろう。
>>717 a >>= b は a = a >> bと 同じ。+=なら知ってるだろ、あれと同じ考え方。
おいっお前、毒を持っているかお?って聞いたんだお そしたら何て答えたと思う?(キリッ) Yes, I have. だっておー(バンバン)
お そ Y 宿題はやくやれってこと?
722 :
696 :2009/11/10(火) 04:13:07
以降3行と、以下3行と何が違うwwwwwww
724 :
723 :2009/11/10(火) 07:30:12
main(void){ char buf[32], *p; strcpy(buf, "0123456789"); p[p = buf, p += 4, 0] = '\0'; puts(buf); return 0; }
[1] 授業単元: アルゴリズム[I] [2] 問題文(含コード&リンク):a,b,c,d,eの5文字をアルファベットとして 重複なく4文字をで構成される全てのwordのなかで部分文字列として、 ad,bd,deを含まないものを表示せよ [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 11月11日 [5] その他の制限 :
722は p += 4; *p = '\0'; puts(buf); この3行を1行にして欲しいんじゃないか?
できなくはないけど、日本語としてもプログラムとしても不自然だろそれ。
>>722 がどうしてもというならやらないこともないが、それで困るのは
>>722 だろ。
>>726 ちょ、7行目が未定義動作。
buf[4]='\0';
じゃないか。
だからbuf[4]='\0'じゃ納得しないってのが722だろうがw
731 :
731 :2009/11/10(火) 09:50:49
[1] 授業単元:卒業研究 [2] 問題文:白黒濃淡画像をガンマ補正するプログラムを作る [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: Cygwin [3.3] 言語: C言語 [4] 期限: 2009年11月30日0:00まで [5] その他の制限:特にないです よろしくお願いします
734 :
696 :2009/11/10(火) 11:38:43
>>723 >>727 以降は、その行は含まれない。
以下は、その行が含まれる。
ものだと思ってました。プログラムの前に日本語勉強しろって感じですね
その行が含まれるのか聞いて見ます。
ありがとうございました。
>>734 聞くなら、課題を提出した上で確認する形で聞くんだぞ。
言いたいことがあるならはっきり言えよw
>>737 31.622776601683793319988935444327
問題文読めないバカは消えろw
740 :
719 :2009/11/10(火) 12:25:54
すみません問題文の記述に誤りがありました 誤 [2] 問題文(含コード&リンク): 基本プログラムを元に各処理を行う 正 [2] 問題文(含コード&リンク): 基本プログラムを元に編集し各処理を行う わかる方いましたら回答お願いいたします
>>727 sprintf(stdout, "%.4s", buf);
ってやるとどうなるんだろ。
問題見てないけど。
>>744 ほんと日本語読めてないな。
問題文音読してみろ
まさか暴れてるのは質問主で、実は問題がこうである可能性は。 正の整数nの2乗が、2種類の数字で構成される 4桁の整数となるような n をすべて挙げなさい
>>742 アラヤダ
fprintf(stdout, "%.4s", buf);
だと?
説教じみてスマンが
>>733 は卒業研究なんだろ?
宿題ってレベルじゃないだろ
>>745 >>746 正の整数nの2乗の数に、2種類の数字しか現れない
4桁の正の整数 n をすべて挙げなさい
>>745 ぃょぅ、日本語は読めても意味をしっかりと理解できない、物事を的確に判断できない認知症患者w
頼むから自動車の運転だけはするなよ。他人を殺しかねないからな。せいぜいこのスレで
自分の勘違いを指摘する奴を必死に罵倒して顔を真っ赤にしてろやw
#include<stdio.h> int main(void){ int i; for(i=32;i<100;i++) printf("%d^2 = %d ",i,i*i); printf("たかだか70個だろ、自分で確認しろ"); return 0; }
>>746 >>651 の記述が曖昧だな。
普通に解釈すれば、「4桁の正の整数 n」とは、2乗する前の「正の整数n」の事だろうけど。
問題文で計算の前後(n-->n*n)を同じ「n」で表現するのは混乱の元だから。
だが、ひょっとして問題文が間違っていて、実は
「正の整数nを2乗して得られる4桁の整数のうち、
2種類の数字しか現れないものをすべて挙げなさい」
かもしれん。
別に[1]授業単元 のところになんて書いてあろうが やるやつはやるしやらないやつはやらんし、 それが本当に宿題なのかなんなのか確認する術などないからいんじゃね
>>750 すみませんがあなたの理解した内容を教えていただけませんか?
簡単に釣られてどーする?
1000*1000=1000000 2000*2000=4000000 3000*3000=9000000 3114*3114=9696996
>>750 は自分の勘違いに気づいて、恥ずかしさのあまり暴れた場合の好例
要はnは4桁の正の整数ってことだが、わざとボケて突っ込んだ奴らに まわされたってことだよw
そうとしか読めないが。
760 :
675 :2009/11/10(火) 13:42:15
762 :
759 :2009/11/10(火) 13:49:36
>>761 火消しがなんのことか知らないが、俺がそうとしか読めないと言ってるのは
求めるのは4桁の整数nであるということ。さっき来たからこのスレの流れは知らない
またこのキチガイかw 勘違いして暴れたあげく、突っ込まれると釣りってことにして誤魔化す。 全く成長してないな。
>>752 普通の日本語読解力があれば、651を誤読することはない。
766 :
デフォルトの名無しさん :2009/11/10(火) 14:00:14
>>正の整数nの2乗の数に、2種類の数字しか現れない
>>4 桁の正の整数 n をすべて挙げなさい
まず4桁の条件を満たす最低値は32、最大値は99かな
100だと10000になっちゃうし、31だと961になっちゃうから。
試しに書いて実行してみたが、ほんとに
>>652 の4通りしか出てこなかった
もっとあると思ってたのに・・・
2進数なら全部そうだよ!
>>736 ,738,743,744,749,750
ここまでは確定。
あとは、釣りで誤魔化そうとしてるのが怪しいが確定はできない。
10進表記が2種類の数字から構成される平方数をすべて 列挙せよ(無限個ある場合は小さいほうから数えてn番目の ものを構成する関数,s_10_2(int n)を作れ)
なんか少しかえた問題出して誤魔化そうとする辺り、昨日と同じ流れに見えるw
誤摩化すって?5桁以上ではそういう数が無いことって説明できる?
>>774 いや普通にあるよ?
だから、問題の指定が
「2種類の数字だけで構成される4桁の整数」で「その数はある整数の二乗でなければならない」ってことだろ?
>>775 2乗したときの数(n^2)が2種類の数字のみで構成されるような「4桁の数字」nだろw
>>779 日本人、かと思われますが、どう致しましょうか、大佐?
ピンポイント爆撃、バンカーバスター、クラスター爆弾、どれにしやしょ〜?
>>651 「その数の自乗の10進表記に2種類の数字しか現れない
4桁の整数を列挙しなさい」ですね?
問題文にヘンにnとか横文字持ち出されてるんでお○カな人たちが混乱
してますよ
混乱してるのは一人だけw
正の整数nで2乗の数が、2種類の数字しか現れない 4桁の正の整数である n をすべて挙げなさい
正の整数nで2乗の数が、2種類の数字しか現れない 4桁の負の整数である n をすべて挙げなさい
((⌒⌒)) ファビョ━ l|l l|l ━ン! (⌒;;.. ∧_∧ (⌒.⊂,ヽ#`Д´> (⌒)人ヽ ヽ、从 从ノ.:(,,フ .ノゝ⊃ 人从;;;;... レ' ノ;;;从人
ちょっと読みにくい日本語だととたんに読めなくなんだよな、このアホはw 何回こんな風に暴れて恥じかいても、懲りねーところが救いがたい。
正の整数nで,2乗の数が2種類の数字しか現れない 4桁の正の整数である,n をすべて挙げなさい 正の整数nで,2乗の数が2種類の数字しか現れない, 4桁の正の整数であるnをすべて挙げなさい
651だけど素直に読んで欲しい 答えは4つのようですね
>>正の整数nの2乗の数に、2種類の数字しか現れない
>>4 桁の正の整数 n をすべて挙げなさい
正の整数nの2乗の数 & 2種類の数字しか現れない4桁の正の整数
n をすべて挙げなさい
に≠&,に≠∩ 読点(に、)の位置が可笑しいとか。「の〜の〜の」の書き間違いとか。
正の整数nが2回も出てくるから、改行も削除して短くしてみた。
>>nの2乗の数に、2種類の数字しか現れない4桁のnをすべて挙げなさい
>>788 原文改竄してまで、どっちにも取れるって言い張りたいの?w
問題文と同じような文章を書き込みまくってる人がどんな意見なのか ハッキリと言わないから分からないけど。解釈は一通りしか出来ないよ
>>652 ,656,659はみんなちゃんとnが4桁って認識してる。
コードも書かない(書けない)アホが一人で暴れてただけw
正の整数nの2乗の数が2種類の数字しか現れない。 4桁の正の整数 n をすべて挙げなさい。 正の整数nの2乗の数が2種類の数字しか現れない 4桁の正の整数なn をすべて挙げなさい
>>789 大丈夫、読めてないのは一人だけだからw
ネット掲示板では改行は区切りする人も居るらしい 正の整数nの2乗の数は、2種類の数字しか現れない4桁の正の整数 n をすべて挙げなさい
失敗って何? nは4桁って789(=651)も認めてるみたいだけど?
>>799 白々しい、しらばっくれてやんのw
口数が多いだけ余計に怪しいんだよ
すまんが何を言ってるのか理解できない。
君は
>>736 でnの2乗が4桁だと勘違いして暴れた人でいいのかな?
10進数表記が2種類の数字で構成されるm桁の平方数を すべて求めよ
で、ここで自分は間違えた人間じゃないとか言っておきながら 自分は問題を解くコードを書いたんですか?w
いいからお前は勘違いしてごめんなさいって言えよw
課題を書き込みやすい雰囲気を作りましょう。
宿題を丸投げするような度胸があれば、多少荒れてたところで気にしないだろw
>>1 のテンプレすらみないで投稿するヤツも多いんだし。
>>804 自分が間違えたんじゃないってアピールしたくて必死だなw
IDもないし、別にお前がどこの誰か分からないから、いい加減口を慎めよ、池沼w
>>748 レスありがとうございます
卒業研究の途中過程でガンマ補正のプログラムが必要だったんです
>>773 ありがとうございます
早速参考にさせていただきます
あぶない!彼のHPはほとんどないぞ
ヤツを甘く見るな! ヤツのHPは無限に回復するぞ!
めいそう を はじめた!
814 :
694 :2009/11/10(火) 19:44:23
>>701 ありがとうございました!助かりました。
816 :
816 :2009/11/10(火) 20:37:07
[1] 授業単元:C言語 繰り返しと分岐の組み合わせ
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10088.txt (リンク先はエラーが出た自作の奴です)
N 円の借金がある.年利 a % の利息が付くとして,毎年 b 円返済したなら 何年で返済できるか計算するプログラムを作成せよ.
(N, a, b はキーボードから入力する)
ただし,無限ループに陥らないように工夫すること.
また,利息は返済前にかかるとせよ.なお,利子による端数(1円未満の 利子)は切り捨てること.
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語: C言語
[4] 期限: ([2009年11月12日まで]
期限が近くて申し訳ないです。一応自作の奴のエラーは
(34) : error C3872: '0x3000': この文字を識別子で使用することはできません
(34) : error C2065: ' break' : 定義されていない識別子です。
(38) :上とおなじ
というものでした。
宜しくお願いします。
おもしろい
820 :
デフォルトの名無しさん :2009/11/10(火) 22:56:22
821 :
デフォルトの名無しさん :2009/11/10(火) 23:43:47
了解
>>810 =
>>808 なに自作自演してんだよ?w
勘違いしたのが自分のくせしてw
あっ、自分で自分をいたぶる趣味のある人?マゾ?
[1] 授業単元:プログム基礎 [2] 問題文(含コード&リンク):1から20までを表示するプログラムを繰り返し処理を用いて作製しよ [3] 環境 [3.1] OS:Windows vista [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:明日 [5] その他の制限:特に無いです。 自分じゃわからないのでよろしくお願いします
>>825 #include<stdio.h>
int main(void)
{
for(int i = 0; i < 20; i++) printf("%d", i);
return i;
}
#include <stdio.h> int main() { int i=0; while(++i<=20) printf("%d", i); }
#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int i = 0; start: printf("%d ", ++i); if (20 != i) { goto start; } else { goto end; } end: return 0; }
#include <stdio.h> main(){ char*a[] = {"1 2 3 4 5 6 7 8 9 10", "11 12 13 14 15 16 17 18 19 20"}; for(int i=0; i<sizeof(a)/sizeof(*a); i++) printf(a[i]); }
831 :
デフォルトの名無しさん :2009/11/11(水) 14:09:56
832 :
デフォルトの名無しさん :2009/11/11(水) 14:47:35
833 :
デフォルトの名無しさん :2009/11/11(水) 14:51:19
834 :
デフォルトの名無しさん :2009/11/11(水) 14:55:24
>>829 main() (笑)
sizeof(笑)
char *a[](爆笑)
836 :
デフォルトの名無しさん :2009/11/11(水) 14:58:26
837 :
デフォルトの名無しさん :2009/11/11(水) 15:15:28
入力が文字(char)の場合、主にキーボードで入力の際に押されるリターンキーが無視できない 空白とタブは改行文字と同じ区切り文字として扱われる バッファオーバーランが発生する可能性がある 予期せぬ値が入力されると、其の値を読み込まず、ストリーム上に残してしまう
>>831 別な課題なので一緒にせず別にしてもらえないでしょうか?
お願いします
842 :
841 :2009/11/11(水) 23:13:24
一目見てかなり笑えるバグを含むプログラム乙
845 :
841 :2009/11/12(木) 00:17:33
もうちょっと工夫しろよ。 勝ち負けをテーブル参照にするとか、 いくらでもあるだろ。
847 :
デフォルトの名無しさん :2009/11/12(木) 00:23:33
#include <iostream> using namespace std; int main() { int i,j; int vector[]={10,20,30,40}; int matrix[][3] = {{1,2,3},{4,5,6},{7,8,9}}; for (i=0;i<4;i++) { cout << vector[i] << ' '; } cout << '\n'; for(i=0;i<3;i++) { for(j=0;j<3;j++) { cout << matrix[i][j] << ' '; } cout << '\n'; } return 0; }
848 :
847 :2009/11/12(木) 00:25:45
3元3列の連立方程式の係数を格納し、格納されて結果を表示するプログラムを表示せよ。ただし以下の2通りで行う事 係数を『初期化』を使って配列に入力する キーボードから入れる 上に書いたやつを参考にできると思って載せたんですが、分かる人いますか? 上のプログラムを参考になるっぽいんですが分かる人いますか?
>>850 プログラムのデータ構造が指定されていてそれを十分生かして
やらなければならないとしたらコードテクニカル
でコメントがあっても理解するのは難しいとオモ(自分で
書かないとわからない)
固定されていないとすれば、データ構造設計ミスかも(行き詰まる
とオモ)
[1] 授業単元:プログラミングC [2] 問題文(含コード&リンク):ビット演算子を用いて入力された数値の「1の補数」が表示されるプログラムをC言語で作成しなさい [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: Visual Studio2008 [3.3] 言語:C [4] 期限: 無制限 [5] その他の制限: 入力される数値は8bitの整数とし、NOTは使わずにお願いします
すみませんOSを書き忘れました OSはXPです
#include <stdio.h> int main(int ac, char **av) { int n; char buf[4096]; fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d", &n); printf("%d", n ^ -1); return 0; }
855 :
840 :2009/11/12(木) 10:42:07
すみません助かりました! ありがとうございます!
856 :
デフォルトの名無しさん :2009/11/12(木) 12:30:35
>>833 ,834,836もよろしくお願いします。
自力ではできないし、聞けるような友だちもいなくて...
よろしくお願いします。。
同じレス貼り付けてるのかと思ってた
gets関数は、コンソール入力では使わないで〜 お願い 自分のプログラムが吐いた文字列を読むとかそういう状況 だけに使ってね
>>862 うっせーわボケ
そう思うならお前が答えてやれ
getsはコンソールで使っちゃやだの マナのやさしくC読んでくれないの?
Cの規格票のどこにgets()を使っちゃだめだと書いてあるんだよ 指摘してみろ gets_sは処理系依存だからだめ fgets()を使えというんだろうが行末に'\n'が入るから嫌なんだよ
gets()はバッファオーバーフローの原因になるからなるべく使うな という事なんだろうが、「絶対に使ってはいけない」というレベルではない 宿題程度ならgets()で十分 使う人が気を付ければいいだけの話 誰かが規格票に書いてない事を無理に強制しようとしても無駄
Cのプログラムは移植されやすいの。 バッファーオーバーランするとそれだけでハードが 壊れちゃう環境もあるの。だからマナを守ってね。お願い(はーと)
こんな使い捨てのプログラムまでいちいちいちいち言われてたらうんざりするわなw
マナの身勝手な理屈きいてくれてありがとう これからもマナとC言語を愛してね
>>867 なにが(はーと)だ気持ちわるいんだよネカマ野郎
>>868 その通り
俺はこれからもgets()を使うね
こういう、自分では何もしないで、口だけだす奴は一番嫌いだな 朝鮮人みたいだ 義務を果たさず権利だけ要求するわけだから
んでも、一度限りの適当に書いた使い捨てなプログラムに限って わかりやすく印象的なツラしてるが故に、妙に流通して禍を齎す ってことが得てしてありがちだともオモ
どうでもいいよそんな事 悔しかったら自分で書け それが本来当たり前なんだから
875 :
875 :2009/11/12(木) 16:32:19
876 :
デフォルトの名無しさん :2009/11/12(木) 17:57:18
この間学校休んでいてノート写させてもらったんですが、誰の見てもこうやって書いてありますが実行しても動きません cos(x/2)の値を二分法で出すC++プログラムを作る問題なんですが #define err 10e-5 double x1,x2,c,e; while(e >= err) { c=(x1+x2)/2; } if(cos(x1/2)*cos(c/2)>0) x1=c; else x2=c; e=fabs(x1-x2); } cout << x1 << '\n'; return 0; } こう書いてありますが、正解教えてくれませんか?
>>876 方程式 cos(x/2)=0 を二分法で解く、のではないでしょうか?
878 :
デフォルトの名無しさん :2009/11/12(木) 18:05:15
>>877 多分そういう事です。じゃなきゃおかしいですものね
#includeは?
880 :
デフォルトの名無しさん :2009/11/12(木) 18:19:21
>>879 そういうのも何もないんですよね。仮にこれincludeつけても全然違うみたいですし…
大分前のですが、正解が知りたいです
#include <iostream>
#define err 10e-5
using namespace std;
double x1,x2,c,e;
while(e >= err) {
c=(x1+x2)/2;
}
if(cos(x1/2)*cos(c/2)>0)
x1=c;
else
x2=c;
e=fabs(x1-x2);
}
cout << x1 << '\n';
return 0;
}
そりゃ、プログラムの一部だもの動くわけない。
とりあえずパッと見て気づくのは、 ・main関数の始まりがない。 ・変数を初期化していない。 ・coutの直前の } は何と対応するの? ・#include <cmath>がない。 一言で言えば、まったくプログラムの体をなしてない。
mainがない時点で気がつくべきだったな
にしてもなんで0を返してるんだ?
抜けたんでしょう
returnで抜いた
[1]プログラミング実習 [2]下記のプログラムの問題点を指摘し正しく動作するように修正しなさい [3]OS:(Linux) 言語:(C) [4]できるだけ早く [5] #include <string.h> int main() { char *str1 = "hoge"; char *str2 = "fuga"; strcat(str1, str2); return 0; }
char str1[10] = "hoge";
>>887 おいおい、メモリの割り当てをこわしてどうするんだ。解答側にたつには20年早い。
#include <string.h> int main() { char *str1 = "hoge¥0¥0¥0¥0"; char *str2 = "fuga"; strcat(str1, str2); return 0; }
>>894 bcc32 でコンパイルしたら、堕ちない。
あなたの使っている環境やコンパイラに問題があるのでは?
896 :
895 :2009/11/12(木) 20:36:24
あ、一個\0 を追加するのをお忘れなく。
vc+2008 でも堕ちないようですね。 gcc は堕ちました。さてはて。
#include <string.h> #include <stdlib.h> int main() { char *str1 = strdup("hoge¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0¥0"); char *str2 = "fuga"; strcat(str1, str2); return 0; }
堕ちないのは勝手だけど スタック潰してない?
901 :
デフォルトの名無しさん :2009/11/12(木) 21:12:50
>>882 #include <iostream>
#include <cmath>
#define err 10e-5
using namespace std;
int main() {
double x1=0,x2=0,c,e;
while(e >= err) {
c=(x1+x2)/2;
}
if(cos(x1/2)*cos(c/2)>0){
x1=c;
else
x2=c;
e = fabs(x1-x2);
}
cout << x1 << '\n';
return 0;
}
これではダメですかね。合ってそうですが、何か実行できません
902 :
デフォルトの名無しさん :2009/11/12(木) 21:15:31
ごめんなさい。こっちでした。こっちも合わないですが #include <iostream> #include <cmath> #define err 10e-5 using namespace std; int main() { double x1=0,x2=0,c,e=0; while(e >= err) { c=(x1+x2)/2; } if(cos(x1/2)*cos(c/2)>0){ x1=c; } else{ x2=c; e = fabs(x1-x2); } cout << x1 << '\n'; return 0; }
905 :
デフォルトの名無しさん :2009/11/12(木) 21:53:12
>>904 すみません。でも
x1:cos(x/2)って入れると
x2:-9.25596e+061
って出ましたが、061なんて数字ありませんよね?
>>899 strdup() を使うのなら、最後にfree()するのがお作法というもの。でてくるのは3年早い。(笑)
そんなもんだ
>>905 x1, x2 の間に解が存在するように、x1, x2 に数値を代入するのが二分法というものです。
>>906 終わったら解放されるから問題ない
無限ループしてるなら別だが
>>909 C が本来オブジェクトの扱いが貧弱で、メモリの確保にはそれなりの注意を払わなければならない、という特質をご存じないのかと疑われてもしかたがないと思いますが。
プロセス終了時に解放されるから問題ないと頭ごなしにいわれてもね‥‥‥。
912 :
デフォルトの名無しさん :2009/11/12(木) 22:09:55
>>908 勘違いしてました。cos(x/2)じゃなくて、
5とか8とかの数字をその2つに代入するって事ですね
>>910 知らなかったですすみません
>>906 の指摘がまっとうに見えて実は滅茶苦茶ハズしている件について
>>912 そうです。cos(x/2)= 0 という方程式はプログラムに組み込まれています。
>>913 どこをどうはずしているのか、まったく説明が出来ない件について(笑)
KY 久しぶりに見た
918 :
デフォルトの名無しさん :2009/11/12(木) 22:42:38
>>887 #include <string.h>
int main()
{
char *str1 = "hoge";
char *str2 = "fuga";
strstr(str1, str2);
return 0;
}
920 :
デフォルトの名無しさん :2009/11/12(木) 22:45:05
>>918 cos(x/2)じゃなくてsin(x/2)なら15行目のcosをsinに変えればいいと思って、実行したら、
x1:3
x2:4でそれぞれやったらcosの時と同じ値が出ましたがOKですか?
>>917 http://codepad.org/iEIz7hlP データファイルのパスは適宜ソースを書き直してやってください。
さて、宿題をしながらじっくりと考えていきましょうか(笑)
>>913 めちゃくちゃはずしている、とのことですが、どこがどうはずれているのかご説明いただけますでしょうか。
>>919 strstr() は標準にも入っている関数ですよ。なに寝ぼけているんですか。文字列をサーチしてどうするのですか?
>>920 2箇所とも書き換えましたか?
x = 2π, 4π, 6π, etc になるはずですから、
>>920 の結果はまずいですね。
>>919 は正しい。
>>887 の問題文がハッキリしないから、極端な話
int main() { return 0; }
でも正解。
問題点を指摘していないのでNG
925 :
デフォルトの名無しさん :2009/11/12(木) 23:48:53
>>922 3.99994になりました。
すみません
mipsの質問もここにしてもいいですか? スレチなら、誘導してもらえるとありがたいです
はい
[1] 授業単元: コンピュータアーキテクチャ (spimを使ったmipsプログラム) [2] 問題文(含コード&リンク): 用意された100個の整数の値から最大の値を求めて、 画面に表示するプログラムを作れ [3] 環境 [3.1] OS: Windows [3.3] 言語: mips(アセンブラ?) [4] 期限: 2009年11月13日10:00まで [5] その他の制限: 授業では、資料配布のみ。初めて作りました。あまり理解が深くないです。 プログラムを作ってみた結果、実行できなかったので添削をしてもらいたいです。 初めて作ったのでひどいかもしれません。(.word は省略しました)
929 :
928 :2009/11/13(金) 00:15:25
.data 0x10008000 .word 100 .word 99 : : .word 1 .word 0 .text .globl __start __start: addi $t0, $zero, 0 addi $t2, $zero, 100 addi $t7, $zero, 4 addi $t9, $zero, 1 add $a1, $gp, $t0 add $a2, $gp, $t7 lw $t5, 0($a1) lw $t6, 0($a2)
[1] 授業単元:プログラミング演習(初級) [2] 問題文(含コード&リンク): 問3 多次元配列を用いて各自定めた行列(3×3)の転置、行列式、逆行列を求めるソースを作成せよ。 [3] 環境 [3.1] OS: (windows xp) [3.2] コンパイラ名とバージョン: Visual C++ 2008 [3.3] 言語: (C++) [4] 期限: 13日の23:59まで [5] その他の制限: 関数を用いないで下さいとの事です。行列の成分も具体的に各自定めて良いようです。
931 :
848 :2009/11/13(金) 00:16:07
どう見てもアセンブリです。 本当にありがとうございました。
933 :
928 :2009/11/13(金) 00:17:23
loop: slt $t1, $t2,$t0 bne $t1, $zero, stopprog slt $t3, $t5, $t6 bne $t3, $zero, loopend addi $t5, $t6, 0 loopend: add $a2, $a2, $t7 sub $t2, $t2, $t9 j loop stopprog: addi $a0, $gp, 0 addi $v0, $zero, 1 syscall
>>925 3 〜 4 には解がないので、端点に収束してしまったようですね。
2π≒6.28 ですから、x1=6, x2=7 を入力すれば、解に収束するでしょう。
935 :
デフォルトの名無しさん :2009/11/13(金) 00:42:29
(´・ω・`)
937 :
928 :2009/11/13(金) 03:13:00
やっぱりアセンブリはだめでしょうか
>>937 C宿題スレ的にはMIPS用のgccとか使って(動くかどうかは知らないし
入手できるかどうかも知らん)-Sオプションでコンパイルして.s
(アセンブリファイル)ファイルを出してそれを参考に
作れとしか言いようが無いな。
例えば次のコードとかコンパイルしてみる
int display(int);
int main(void){
int num[100]={1,100,2,99,3,98,4,97,5,96,6,95,7,94,....};
int i,max=-1;
for(i=0;i<100;i++) if(max<num[i]) max=num[i];
display(max);
return 0;
}
939 :
848 :2009/11/13(金) 16:22:06
a00x+a01y+ao2z=α a10x+a11y+a12z=β a20x+a21y+a22z=γ 連立方程式の形はこんな感じです。
>>939 単純ピボット選択を使ったガウスの消去法で解けるだろ
反復法でもいい
941 :
848 :2009/11/13(金) 16:57:05
>>940 そんなの使うんですか。数学でも、ガウスの消去法なんて聞いた事なかったです。
どうりで難しいわけですね
連立一次方程式 ガウスの消去法 C言語 でぐぐればいくらでも出てくる
数独か? 3x3の領域がおかしい
944は943のレスでしょうか? そうならばどこがおかしいか言ってもらえれば。
>>936 有難う御座いました
なんとか期限内に提出することが出来ました
みんなはどうしてプログラミングが好きなの? そしてみんなはプログラミングが大好きなの?
回りくどい方法でも文句言わないし 作ったとおりに動くから好き
950 :
デフォルトの名無しさん :2009/11/13(金) 19:43:22
[1] 授業単元:プログラミング論 [2] 問題文(含コード&リンク): 問 新聞の東京為替市場の欄を見て1米ドルと1英ポンドの値を調べ、 その値から1ポンドが何ドルかを算出するプログラムを作れ。 [3] 環境 [3.1] OS: (windows xp) [3.2] コンパイラ名とバージョン: Visual C++ 2008 [3.3] 言語: (C++) [4] 期限: 15日の23:59まで [5] その他の制限: scanf使用 よろしくお願いします
何でもいいから10000行のプログラムを作れって教授に言われたw
>>952 #include<stdio.h>
int main(void){
int i;
printf("#include<stdio.h>\nint main(void){\n\tint i=0;\n");
for(i=0;i<10000-6;i++) printf("\ti++;\n");
printf("\tprintf(\"%%d\\n\", i);\n\treturn 0;\n}\n");
return 0;
}
>>952 10000行全部putsで教授の悪口でも書いて出せば?
>>949 #include <stdio.h>
int main(void)
{
unsigned int a[9], n = 0, i;
FILE *fp;
if((fp=fopen("in.txt", "r"))==NULL) return 0;
for(i=0; i<9; i++) fscanf(fp, "%u", a + i);
fclose(fp);
for(i=0; i<9; i++) n |= 1 << (a[i] - 1);
n = ~n;
for(i=9; i>0; i--) printf("%c", 1 & n >> (i - 1) ? '1' : '0');
return 0;
}
電卓ってプログラムで作れる??
958 :
848 :2009/11/13(金) 22:27:36
>>944 じゃあ、そのサンプルとは別で、
3元3列の連立方程式の係数を格納し、格納されて結果を表示するプログラムを作成せよ。ただし以下の2通りで行う事
係数を『初期化』を使って配列に入力する
キーボードから入れる
っていうのを教えてくれませんか
959 :
959 :2009/11/13(金) 23:18:02
>>850 #include <stdio.h>
int main(void) {
float doller = 89.805;
float pond = 149.430;
printf("yen/doller="); scanf("%f", &doller);
printf("yen/pond="); scanf("%f", &pond);
printf("doller/pond=%f", (1/doller)/(1/pond) );
return 0;
}
そういう計算に浮動小数使ったら駄目だろ。
963 :
デフォルトの名無しさん :2009/11/14(土) 00:20:04
>>957 どんな言語でも
言語名 + 電卓
とかでググればサンプルが出てくるよ
プログラムで電卓を作るのは物理的に不可能だろ。 各種パーツと工作機械が必要。
ただし英語圏の人間なら作れるな。 日本人でも英語圏に行けば作れるようになる。
アメリカに行くと米や芋が野菜に変わるって話と似たようなもんか。
処女が童貞になるようなものか
[1] 画像処理プログラム [2] 1 画像を読み込む 2 1の任意の箇所の隣接した同系色を範囲選択 3 読み込んだ画像の任意の箇所から色を抽出 4 2で選択した範囲を3の色で塗りつぶす 5 結果を出力する [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Visual Studio 2008 [3.3] 言語: どちらでも可 [4] 期限: 09/11/30 [5] その他の制限: 制限なし 正直お手上げ状態です・・・ 参考サイトでも構いませんのでご指導お願いします
何勝手に直してんだよw
片付けもらう 一言内容にについて 直ってねーw
>>970 そろそろ直さないとナ
diff
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問や発言はスルーの方向で。
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問や発言はスルーの方向で。
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
>>974 「ちゃんと」ちゃんこ作れ。
※ちゃんとは曖昧な言葉です。
うめ
>>975 >>972 を見てこの場合のちゃんとの意味が理解できないようなら日本語を勉強しなおしてください。
うめ
>>969 画像形式の指定が無いから自分で勝手に設定すれば良いんじゃね?
u,
ume
指定されてないんだから勝手に定義すればいいんだよ。
ume
すみません、お聞きしたいのですが、 C言語で、国語・数学・理解の得点を入力して、平均点が 90点以上…「平均点X点はAです。」 80点以上…「平均点XはBです。」 70点未満…「平均点Xは赤点です。」 と表示するプログラムを作成したいのですが、どのように書いたらいいのですかね? 当方初心者で全くわかりません。 どなたか回答してくれませんか?
質問点プレにそってくれれば誰かが喜んで解答してくれるお
988 :
950 :2009/11/14(土) 19:03:09
[1] 授業単元:プログラミング論 [2] 問題文(含コード&リンク): 問 新聞の東京為替市場の欄を見て1米ドルと1英ポンドの値を調べ、 その値から1ポンドが何ドルかを算出するプログラムを作れ。 [3] 環境 [3.1] OS: (windows xp) [3.2] コンパイラ名とバージョン: dev c++ [3.3] 言語: (C++) [4] 期限: 15日の23:59まで [5] その他の制限: scanf、printf、int、switchは習いました。 前スレ950です。すみませんがよろしくお願いします 今、下記まで完成しました。 #include <stdio.h> main() { int doll,pond; int d,p; printf("1米ドルと1英ポンドの値を入力してください"); scanf("%dドル %dポンド",&doll &pond); printf("%dドル, %dポンド, doll,pond); このあと、上記で入力した値から1ポンドが何ドルかを求めたいのですが、 わかりませんでした。よろしくお願いします。
得点を入力する 入力した得点から平均点を計算する 平均点に基づいてメッセージを表示する 以上の処理を行うようなプログラムを書く
テンプレ無視してすみませんでした。 [1] 授業単元:プログラミング論U [2] 問題文:国語・数学・理科の3教科の得点を入力し、平均点が 90点以上…「平均点X 評価はAです。」 80点以上…「平均点X 評価はBです。」 70点未満…「平均点X 追試の対象です。」 と表示するプログラムを作成しなさい。 実行例 国語90 数学90 理科90 平均点90点 評価はAです。 [3] 環境 [3.1] OS:windous [3.2] コマンドプロンプト [3.3] 言語:C言語 [4] 期限: 11月17日 [5] その他の制限: 完全な初心者です。 本当に申し訳ありませんがどなたか回答していただきたいと思います。
>>990 70〜79までなんて表示すればいいんだ?
>>991 情報不足過ぎてすみません。
70〜79まではCでした…
もちつけ
>>992 じゃあこれで
しかし、これくらいも書けないと次回以降の宿題も
全部ここで頼むことになる気がする
#include <stdio.h>
int main()
{
int kokugo, sugaku, rika;
int heikin;
printf("国語");
scanf("%d", &kokugo);
printf("数学");
scanf("%d", &sugaku);
printf("理科");
scanf("%d", &rika);
heikin = (kokugo + sugaku + rika) / 3;
printf("平均点%d ", heikin);
if(heikin >= 90)
printf("評価はAです。\n");
else if(heikin >= 80)
printf("評価はBです。\n");
else if(heikin >= 70)
printf("評価はCです。\n");
else
printf("追試の対象です。\n");
}
プログラミング論I では何をやってたんだ
>>994 さん、迅速なご回答本当にありがとうございます。
助かりました。
プログラムをちゃんと理解できるように頑張ります。
おーしマロがN88BASICでクソースを出そうじゃないか 10 input "国語";kokugo:input "数学";suugaku:input "理科";rika 20 heikin=(kokugo+suugaku+rika)/3.0 30 print "平均=";heikin 40 if heikin >90 then print "評価はAじゃ" :end 50 if heikin >80 then print "評価はBじゃ":end 60 if heikin >70 then print "評価はCじゃ":end 70 print "追試じゃ"
>>997 さん
参考にさせていただきます。
ありがとうございます。
BASICが出来てパソコン大学小学生 Cが出来て中学生 C++が出来て高校生 Javaが出来て大学生
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。