C/C++の宿題を片付けます 120代目
レス数が1000を超えています。これ以上書き込みはできません。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題を片付けます 119代目
http://pc11.2ch.net/test/read.cgi/tech/1228313292/
0002デフォルトの名無しさん
2008/12/16(火) 19:52:010003デフォルトの名無しさん
2008/12/16(火) 19:54:32<-‐ヘ、9ノ‐>
从!イノiノヘilト これどうぞ
゙ヘ(!|´ヮ`ノリ シュッ シュッ シュッ、アレ?
/∩と彡 /
彡 ノ,! / ./ ミ ξ
ξ く/ ./ 旦
旦 / ./
/ / ミ ξ
/ / 旦
| ̄ ̄ ̄ ̄ ̄|
| |
0004デフォルトの名無しさん
2008/12/16(火) 20:32:25a * Pn * (1 - area/Pn);
だとすると、
a * (Pn -area)
と言うことだもの。
整理されていない時点でおかしいし、内容も・・・
0005デフォルトの名無しさん
2008/12/16(火) 20:34:58int word(char s[]){
int i, word_num=0, prev_is_space=1;
for(i=0;s[i];i++){
if(!isspace(s[i]) && prev_is_space) word_num++;
prev_is_space=isspace(s[i]);
}
return word_num;
}
>>前スレ996
一文字目が isspace に該当するときに余分に +1 される
0006デフォルトの名無しさん
2008/12/16(火) 20:43:500007998
2008/12/16(火) 20:59:33char* s[250] = "aa bb\n";
int i = 0;
int n = 0;
while(s[n])
{
while(isspace(s[n]) && s[n])
{
n++;
}
if(s[n]) i++;
while(!isspace(s[n]) && s[n])
{
n++;
}
}
こういうのはどうだろう。
結局汚名挽回してるだけな気もするorz
0008デフォルトの名無しさん
2008/12/16(火) 21:08:11[1] 授業単元:科学実習�@
[2] 問題文:
sum=1の2乗+2の2乗+・・・・Nの2乗
[3] 環境
[3.1] OS: Windows xp
[3.2]コンパイラ: gcc -o
[3.3] C言語
[4] 期限: 2008年12月31日まで
[5] その他の制限: 入力にscanf使用禁止
お願いします。
0009デフォルトの名無しさん
2008/12/16(火) 21:10:190011デフォルトの名無しさん
2008/12/16(火) 21:14:170012デフォルトの名無しさん
2008/12/16(火) 21:14:50#include <stdio.h>
#include <stdlib.h>
#define SIZE 256
int main(void)
{
char buff[SIZE];
int N, sum = 0, i;
printf("N = "); N = atoi(fgets(buff, SIZE, stdin));
for (i = 1; i <= N; ++i) sum += i * i;
printf("1 x 1 + 2 x 2 + ... + %d x %d = %d\n", N, N, sum);
return 0;
}
0013デフォルトの名無しさん
2008/12/16(火) 21:24:40[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8358.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限:2008年12月17日00:00まで
[5] その他: プログラム内部の動作説明やアルゴリズム説明、6)Specialの部分以外をお願いします。
0014デフォルトの名無しさん
2008/12/16(火) 21:24:45前スレ995,996,998,999,本スレ5,7さんありがとうございました。
996さんのおっしゃったとおり、区切り文字が連続する場合は1つの区切り文字としたかったので、
みなさんのレスを参考に、以下のようにしてみました。
int word(char s[]){
int n, i, j;
i = 0;
j = strlen(s);
for(n = 0; n < j; n++){
if(!isspace(s[n]) && isspace(s[n+1])){
i = i + 1;
}
}
return i;
}
これで実行したところ、aa bbでも2と出力されました。
if(isspace(s[n]) != 0){
の部分を
if(!isspace(s[n]) && isspace(s[n+1])){
とすることで連続して空白文字がきた場合はカウントせず、
文字+空白文字となっているときのみカウントするようにしました。
0015デフォルトの名無しさん
2008/12/16(火) 21:29:49word("word?");
0016デフォルトの名無しさん
2008/12/16(火) 21:47:28申し訳ありませんが、もう一度お尋ねしたいと思います。
[2] 問題文(含コード&リンク): フィボナッチ数列という有名な数列がある。
以下のプログラムはある整数を入力し、その整数以下のもっとも大きなフィボナッチ数列に含まれる整数を返すものである。
#include <stdio.h>
int main(void){
int limit,new=1,pre=0,work result;
scanf("%d", &limit);
while(new<=limit){
/*printf("%d %d\n,pre,new);トレース用*/
work=new;
new=work+pre;
pre=work;
}
result =pre;
printf("%d\n", result);
}
001716
2008/12/16(火) 21:48:01このプログラムの一部を関数にして書き換えたとする。
#include <stdio.h>
/*ここに関数を記述*/
int main(void){
int limit,result;
scanf("%d",&limit);
result=fibnum(limit);
printf("%d\n, result);
}
「ここに関数を記述」とある部分に関数を記述し、プログラムを完成させなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語:C
001816
2008/12/16(火) 21:48:52いただいた回答を元に実行してみたのですが…
#include <stdio.h>
void fibnum(int limit){
int f0, f1;
f0 = 0; f1 = 1;
printf("%d\n", f0);
printf("%d\n", f1);
while(1){
f0 += f1;
if (f0 > limit) return;
printf("%d\n", f0);
f1 += f0;
if (f1 > limit) return;
printf("%d\n", f1);
}
}
(上記の通り)
return result;
}
0019デフォルトの名無しさん
2008/12/16(火) 21:49:09以下のプログラムをstdio.h型ではなくiostream型に書き換えるとどうなるんでしょうか?
printfとかscanfとかはcinやcoutに書き換えられるってのは自分で調べて分かったのですがどうもコンパイルするとエラーになってしまうんです。
printfとかscanf以外にも書き換えられる部分があればお願いします。
あと、それぞれの行がどういった命令を出してるのか解説もお願いします…。
for(i=0;i<8;i++){//最初i=0でi<8まで増えていく
と言った感じで…。
#include <stdio.h>
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){if(m[p]==0)
for(i=0;i<8;i++){
for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;
if(c&&m[v]==t){a+=c;v=p;
if(d)do m[v]=t,v+=r[i];
while(m[v]!=t);
}}}
char*h="・○●\n";
int main(){for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++p)k(),printf("%.2s",&h[m[p]*2]);
if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d",&p,&i),p+=i*9):++p;
else if(s)s=0,printf("pass");
else break;t=3-t;
}
return 0;
}
002016
2008/12/16(火) 21:49:26\\FILESV7\UN$\NE200071\デスクトップ\V\v.cpp(28) : error C2440: '=' : 'void' から 'int' に変換することはできません。
(新しい動作 ; ヘルプを参照)
void 型の式は他の型へ変換できません。
とエラーがでてしまいます…なぜでしょうか?
長々と、何度も申し訳ありません。
どなたか回答していただけたら嬉しいです。
0021デフォルトの名無しさん
2008/12/16(火) 21:53:52#include <stdio.h>
void fibnum(int limit) {
int f0, f1;
f0 = 0; f1 = 1;
printf("%d\n", f0);
printf("%d\n", f1);
while(1){
f0 += f1;
if (f0 > limit) return;
printf("%d\n", f0);
f1 += f0;
if (f1 > limit) return;
printf("%d\n", f1);
}
}
int main(void){
int limit,result;
scanf("%d",&limit);
result=fibnum(limit);
printf("%d\n, result);
return 0;
}
0022デフォルトの名無しさん
2008/12/16(火) 21:54:59要するにその関数は題意を満たしていない。
0023デフォルトの名無しさん
2008/12/16(火) 22:03:24#include <stdio.h>
/*ここに関数を記述*/
int fibnum(int limit) {
int a,b,c;
for(a=1,b=1,c=0; c<=limit; c=a+b) {a=b; b=c;}
return b;
}
int main(void){
int limit,result;
scanf("%d",&limit);
result=fibnum(limit);
printf("%d\n", result);
return 0;
}
0024デフォルトの名無しさん
2008/12/16(火) 22:06:25#include <stdio.h>
int fibnum(int limit){
int new=1,pre=0,work,result;
while(new<=limit){
work=new; new=work+pre; pre=work;
}
return pre;
}
int main(void){
int limit,result;
scanf("%d",&limit);
result=fibnum(limit);
printf("%d\n", result);
return 0;
}
0027デフォルトの名無しさん
2008/12/16(火) 22:13:51sum = N * (N+1) * (2*N+1) / 6;
0028デフォルトの名無しさん
2008/12/16(火) 22:15:18おれがなぐさめてやる。
002914
2008/12/16(火) 22:20:26「word("word?");」と入力したとき、英単語「word」は2つあるにもかかわらず、
出力結果は1になってしまう、ということでしょうか?
0030デフォルトの名無しさん
2008/12/16(火) 22:59:06ブローも用意してアルヨー!
0031デフォルトの名無しさん
2008/12/16(火) 23:06:190 にならない?
0032デフォルトの名無しさん
2008/12/16(火) 23:08:05途中まででも結構です
0033デフォルトの名無しさん
2008/12/16(火) 23:09:53Cが強化されたのがC++ってことでいいのかな?
CでできることはC++で全て可能 とか
0034デフォルトの名無しさん
2008/12/16(火) 23:15:09ここで質問する話じゃねえだろ糞野郎
0035デフォルトの名無しさん
2008/12/16(火) 23:17:44大人しくここから出ていけよ、何か気に入らない発言があると
罵倒しないと気が済まない、一言居士
0036デフォルトの名無しさん
2008/12/16(火) 23:18:36C++というくらいだから、Cに何かを付け加えたもの。
一番大きいのはクラス。
0037デフォルトの名無しさん
2008/12/16(火) 23:19:38プログラムを作る人はこうなのだろうかと思うと、悲しくなってくる
0038デフォルトの名無しさん
2008/12/16(火) 23:21:080039デフォルトの名無しさん
2008/12/16(火) 23:22:06>>13
前スレの69, 233, 266
http://pc11.2ch.net/test/read.cgi/tech/1228313292/69
http://pc11.2ch.net/test/read.cgi/tech/1228313292/233
http://pc11.2ch.net/test/read.cgi/tech/1228313292/266
0040デフォルトの名無しさん
2008/12/16(火) 23:22:28そんなスレ違いな発言を敢えてするお前もどうかと。
0041デフォルトの名無しさん
2008/12/16(火) 23:23:19Cにだって、ANSIとC99では動作が違う
そのくらいの差だろう
0042デフォルトの名無しさん
2008/12/16(火) 23:26:58ANSIとは?C99とは?
馬鹿丸出しですね
0043デフォルトの名無しさん
2008/12/16(火) 23:27:15┌─┐
│ ++
│ ++
└─┘
みたいにC++が更に強化されたのがC#ってことでいいのかな?
0044デフォルトの名無しさん
2008/12/16(火) 23:27:33程度の低いレスですねw
0045デフォルトの名無しさん
2008/12/16(火) 23:27:460046デフォルトの名無しさん
2008/12/16(火) 23:28:19わかってないんだろうなこの馬鹿は
答えてみろよ
0047デフォルトの名無しさん
2008/12/16(火) 23:28:37>>42
わかってないんだろうなこの馬鹿は
答えてみろよ
0048デフォルトの名無しさん
2008/12/16(火) 23:29:35冗談でそういわれている。
シンタックスは、似ているように見えるが、全く別物。
0049デフォルトの名無しさん
2008/12/16(火) 23:30:02ANSIとは?C99とは?
0050デフォルトの名無しさん
2008/12/16(火) 23:32:5442 名前:デフォルトの名無しさん 投稿日:2008/12/16(火) 23:26:58
>>41
ANSIとは?C99とは?
馬鹿丸出しですね
↑特徴:罵倒(バカ、アホといった類)の言葉を平然と投げかける。
これだけで人間性の低さが露呈しているのだが、本人は気づかないんでしょうね。
この世に、自分が知っていること、知らないことなんていくらでもあるが、
知らないようなことを持ち出して、知らなかったことを責め立てるくせに、
いざ自分が重要なことを知らないと他人から指摘されると、逆切れして
無関係な話を始め、お前は(自分がよく熟知していると自身のあることを持ち出して)
〜を知っているのか?自分基準でそれをこう答えないと、知らないことにするぞ、みたいな
自分の経験不足を無視して、相手の粗探しを始める。
あと、すれ違いだから、他所でやれ。
0052デフォルトの名無しさん
2008/12/16(火) 23:34:43知らないなら知らなかったと言えばいいのに
0054デフォルトの名無しさん
2008/12/16(火) 23:36:18[2] 問題文 a->1 ,b->2 ,c->3...............,y->25 z->26 (空白)->27として入力して、入力した英文を数字に変換するプログラム
例えば「a pen」なら「12716514」
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
お願いします
0055デフォルトの名無しさん
2008/12/16(火) 23:37:05いや、あんた誰にレスしてんだ?無関係な人にレスして、自分の発言の汚さを
指摘されているって気づかない?バカだの丸出しだの、言動が低俗過ぎ。
そういう奴が言う言葉なんて、相手の粗探しをしようとしているとしか思えないのだが。
相手が何を知らないか、指摘すらしてないじゃん。自分はそうは思わない、程度の主張しかせず
相手にされていないって気づかない?w
0056デフォルトの名無しさん
2008/12/16(火) 23:38:00文字コードはEBCDICでいいのかい?
0057デフォルトの名無しさん
2008/12/16(火) 23:38:33お前は誰だ
0058デフォルトの名無しさん
2008/12/16(火) 23:39:39http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E
もちっとC言語について詳しくなってから発言しろ、青二才。
0059デフォルトの名無しさん
2008/12/16(火) 23:40:38もちっとC言語について詳しくなってから発言しろ、青二才。
0060デフォルトの名無しさん
2008/12/16(火) 23:43:31無関係な発言するなよ、出てけよ基地外 > バカとか平気で使う
精神レベルの低いお子ちゃまねぇ〜、おっぱい飲ーみたーいのぉ?
>>59
ぷっ、鸚鵡返ししか出来なくなったな。そういう 罵倒 しかしなくなった時点で
まともに議論が出来なくなったという証拠。言いたいことがあるなら、お前が
説明すれば良いだろ。ただし、スレタイを読めるくらいの日本語力をつけてから
日本語を話せよ、お子ちゃま。
0061デフォルトの名無しさん
2008/12/16(火) 23:45:13そんなに自分を責めるなよ
0062デフォルトの名無しさん
2008/12/16(火) 23:49:58>>41
ANSIとは?C99とは?
馬鹿丸出しですね < 罵倒発言をするのが当たり前
46 名前:デフォルトの名無しさん 投稿日:2008/12/16(火) 23:28:19
>>44
わかってないんだろうなこの馬鹿は < また馬鹿を使ってる
答えてみろよ < 挑発しているが、自分が答えられていないことに気づいていないw
52 名前:デフォルトの名無しさん 投稿日:2008/12/16(火) 23:34:43
ほんと馬鹿丸出しですね < また馬鹿w
知らないなら知らなかったと言えばいいのに < 何も説明していない自分が知らないくせにw
↑必死すぎ。レス乞食は、相手にすると粘着してスレに常駐して
自分に反論したであろう者に、罵倒レスで揺さぶって反応を楽しむという
まともな社会人とも思えぬ言動をし、暇人であることをわざわざ
自己紹介するから面倒。時間帯からして、昼夜逆転したあいつだろうな。
これから明け方まで、こいつが担当するだろうけど、幼稚なソースコードに要注意。
自分こそが、正当な説明をせずに、相手を揺さぶって情報を引き出そうと
必死になっていることに気づいていないんでしょうね。知っている人は知っている。
C99とISO、ANSI準拠を知らない無知は放置よろ。
0063デフォルトの名無しさん
2008/12/16(火) 23:51:180064デフォルトの名無しさん
2008/12/16(火) 23:53:31C++はCに1を加えたもの、もしくは、加える前の状態であるが、後で1加えられた状態になるもの
C♯はCを半音上げたもの
0065デフォルトの名無しさん
2008/12/17(水) 00:03:38とりあえず、スレッド違いなレスポンスは、控えるようにしてね。私のレスポンスを含めて。
チャットのように掲示板を使うガキは、もう一度掲示板の本質を考えてね。
最近ム板の一部のスレッドが、荒れているから、ID強制にした方が、良いと思う。
さて、リアルブートするか。
0066デフォルトの名無しさん
2008/12/17(水) 00:04:26> 少なくとも現時点の最新版に関しては、C++のC言語に対する上位互換性は完全に失われた。
検索すれば分かるものを。あと、C++コンパイラでCのソースが通るとか、
あれこれ言ったらキリがないんで。言語の使用とコンパイラの仕様も別に考えてくれ。
インターフェースなどの環境のこともあるが、所詮は0と1の数値データを
ちょちょいのちょいと操作、処理しているのさ。実行しているコンピュータ、
汎用電子”計算機”がな。
目の前にある文字や色のデータ、これもある法則や画像の形式に応じて
数値データが並んでいるんであって、それを色や形のあるものにしているのがソフト。
ある数値データを、ある法則に則って処理をしているわけだが。
ソフトは結局、OSやハードウェアの性能の範囲内の処理をしているのさ、ふっ。
あっ、宿題?今日は疲れたから、明日やってあげるね。麻呂のクソースでw
我ながら、ちょっと陶酔しちゃったぜ、かっちょえ〜〜!
0067デフォルトの名無しさん
2008/12/17(水) 00:09:220068デフォルトの名無しさん
2008/12/17(水) 00:12:220と1の数値データを操作しているという点には同意しかねる
0069デフォルトの名無しさん
2008/12/17(水) 00:20:20前スレ >>996 だけど、いい感じに仕上がったね。
0070デフォルトの名無しさん
2008/12/17(水) 00:21:03なんでもいいのでお願いします
0071デフォルトの名無しさん
2008/12/17(水) 00:21:40興味があって勉強中ならもっと自分で頑張ってみてはどうかね
0072デフォルトの名無しさん
2008/12/17(水) 00:25:08こんな感じ?文字定数('a' みたいなの)使えばASCIIコード知らなくてもできるよ
#include <stdio.h>
int main()
{
int c;
while((c = getchar()) != '\n')
if(c >= 'a' && c <= 'z')
printf("%d", c - 'a' + 1);
else if (c == ' ')
printf("%d", c - ' ' + 27);
putchar('\n');
return 0;
}
0073デフォルトの名無しさん
2008/12/17(水) 00:40:550074デフォルトの名無しさん
2008/12/17(水) 00:41:38[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8360.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月17日AM7時30分まで
[5]特にありません。
0075デフォルトの名無しさん
2008/12/17(水) 00:46:56なんで?事実だよ。0と1とはっきり記述されていはいないが、
磁気で記録するメディアには+か-、CDではレーザーの反射を読み取る仕組みが
挙げられ、穴が開いているかいないか、さらに、PC内部では電気信号で
やはり+か-かで、あとはそれらの組み合わせで、より多くのパターンを表現しているんだし。
ビットくらい、知っているだろ?そういうこと。
0076デフォルトの名無しさん
2008/12/17(水) 00:49:26[2] 問題文(含コード&リンク):
文字列をコピーする関数を作成せよ。
char *my_strncpy(char *s1, char *s2, int n);
ただし、s2の文字列をs1へ、最大でn文字未満コピーするようにし、
s1がCの文字列の条件を満たすように作成せよ。
また、return valueはコピーした文字のポインタとする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 17日まで
[5] その他の制限: ポインタを習っています。
ポインタの考え方が難しくてよくわかりません。
詳しい説明も付けてくれるとありがたいです。
よろしくお願いします。
0077デフォルトの名無しさん
2008/12/17(水) 00:50:08そこまで言うなら、wikiに事実無根や間違いがあるなら指摘しな。
他の資料を見ても、単純に言い切れない過去の歴史と仕様は存在しているし。
あと、何かと笑うだけの奴も無能。説明と言う説明が出来ていないから。
頼む、ランクはともかく、大学で実験や研究をしていない奴は黙っていてくれ。
そういう機関でそれなりのものを見てくれば、汎用電子計算機に対する考えは変わるよ。
少なくとも、目の前の色や画像データでウハウハやったり、KI・MO・I!文字データで
ウヒウヒやっている奴らが、0と1のデジタルデータに翻弄されているように見えるから。
その文章や画像も、真面目なものなら良いけどさ。例え風景を撮影した写真も、
所詮は0と1の組み合わせの数値データ。それをハードなりソフトで展開して
人間が認識できるある形になっているが、もとは無機質なデジタルメディアに記録された数値データ。
0078デフォルトの名無しさん
2008/12/17(水) 00:51:29あと、お前にお似合いのプレゼント。ちゃんとコンパイルして実行してくれw
#include <stdio.h>
int main(void) {
int num[]={89,111,117,32,105,115,32,97,32,98,105,103,32,102,111,111,108,32,109,97,110,46,32,72,97,104,97,104,97,46},i;
for(i=0; i<sizeof(num)/sizeof(num[0]); i++) putchar(num[i]);
return 0;
}
0080デフォルトの名無しさん
2008/12/17(水) 00:54:2210 2.434 4.234 3.242 4.566
20 2.767 4.756 3.666 4.867
30 2.534 4.555 3.777 4.555
40 2.777 5.355 4.244 5.424
というデータファイルがあり、これをファイル入力して離散し、最終的に
0か1のデータにしたいです。そのためにまずこのテキストからf1,f2,f3,f4の
最大値(2.777,5.335,4.244,5.424)と最小値(2.434,4.234,3.242,4.555)を
見つけ出し、(データの値−最小値)/(最大値−最小値)で各値を算出し
step f1 f2 f3 f4
10 1 0 1 1
20 1 1 1 1
30 0 1 0 1
40 1 1 0 0
とう具合の結果を出したいのですが、できるかたよろしくお願いします。
自分で作ったものの頓珍漢な結果しか算出されません。TT
0081デフォルトの名無しさん
2008/12/17(水) 00:57:12いつになったら大学名教えてくれんだよw
0082デフォルトの名無しさん
2008/12/17(水) 00:58:54j=strlen(s);
は要らない
0083デフォルトの名無しさん
2008/12/17(水) 01:04:06宿題なのかな?
まずは頓珍漢なコードを見せてもらおうか
0084デフォルトの名無しさん
2008/12/17(水) 01:04:07画像データ、その他ファイルも、数値データの塊で、それを扱っているハードが
0と1の組み合わせで扱っていることくらい、普通に理解できる。
テレビを見て、画面の中に人がいるとは思わんだろ?w
あの映像も、何かハードウェアが映し出した映像を展開しているように、
数値データ(ファイル)をソフトに応じて実装された性能の範囲内で
処理を行っているのだよ、ワトソン君。
0085デフォルトの名無しさん
2008/12/17(水) 01:06:520086デフォルトの名無しさん
2008/12/17(水) 01:11:08> コンピュータ内部のすべての情報は ``デジタルデータ'' という情報形式で保存されています.
> デジタルデータとは,数字に置き替えられる形式の情報のことを指し,
> `0'と`1'の2通りの数字によって表現できます.文章や写真,映像,音声など
> 現実にあるさまざまな形式の情報は,デジタルデータに変換できます.
そういうこと。間違っていないことを、自分はそうは思いませんでは通用しないのが、
客観的な考えや意見が必要な人間社会で適合するには、重要なスキルだぞ。
嘘を言っていない人を嘘つき呼ばわりは、干されるだけ。もちっと理解力を身に着けような。
0087デフォルトの名無しさん
2008/12/17(水) 01:25:21#include <stdio.h>
int main()
{
int r = 0, x, y;
char op;
if (scanf("%d%d %c", &x, &y, &op) != 3)
return 1;
switch (op)
{
case '+': r = x + y; break;
case '-': r = x - y; break;
case '*': r = x * y; break;
case '/': r = x / y; break;
}
printf("%d\n", r);
return 0;
}
0088デフォルトの名無しさん
2008/12/17(水) 01:27:200089デフォルトの名無しさん
2008/12/17(水) 01:30:350090デフォルトの名無しさん
2008/12/17(水) 01:51:40[2] 問題文(含コード&リンク):
「果物名 単価 個数」の形式の取引のデータのファイルを読み込む。ファイルを読み込み終わった後に、「取引の総数」、
「合計の金額」、「金額が最大であった取引の(整数計算でする)」、「1取引あたりの平均金額(整数計算でする)」、
「金額の最大であった取引(最初を1とする)の番号」と「その金額」をprintfを用いて標準出力に表示するプログラムを作れ。
入力データファイルには /home/sample/PE1/2008/e12.txt を用いる。(ファイル名はfopenの因数に文字列定数として書いてよい)
ファイルの全データを格納できるような大きな配列を用いてはいけない。(平均は、金額の合計と取引の総数から計算できる)
個数と金額は、ゼロまたは府の値にならないとする。また、取引金額の最大値が複数の取引に現れることはないものとする。
出力の形式は次の実行結果の例を参考にせよ。
取り引数10
合計金額6424円 合計個数57個
平均112円/個 642円/取引
最大の取引は6番目で2064円
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2008年12月18日20時まで
[5] その他の制限:制限なし
よろしくお願いします。
0091デフォルトの名無しさん
2008/12/17(水) 02:02:09#include <stdio.h>
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){if(m[p]==0)
for(i=0;i<8;i++){
for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;
if(c&&m[v]==t){a+=c;v=p;
if(d)do m[v]=t,v+=r[i];
while(m[v]!=t);
}}}
char*h="・○●\n";
int main(){for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++p)k(),printf("%.2s",&h[m[p]*2]);
if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d",&p,&i),p+=i*9):++p;
else if(s)s=0,printf("pass");
else break;t=3-t;
}
return 0;
}
0092デフォルトの名無しさん
2008/12/17(水) 02:06:54strncpy と同じ仕様でよければこうかな
#include <stdio.h>
char *my_strncpy(char *s1, char *s2, int n){
int i;
for(i = 0; *s2 != '\0' && i < n; i++)
s1[i] = *s2++;
while(i < n)
s1[i++] = '\0';
return s1;
}
int main()
{
char *p, s1[257] = "zzzzzzzzzzzzzzz";
p = my_strncpy(s1, "sample", 7);
printf("p: %s s1: %s \n", p, s1);
return 0;
}
0093デフォルトの名無しさん
2008/12/17(水) 02:10:217行オセロを適当に改行してみたの?
0094デフォルトの名無しさん
2008/12/17(水) 02:15:25はい、分かりやすいように改行してみて、色々いじくってみたんですがエラーになってしまってお手上げで…
0095デフォルトの名無しさん
2008/12/17(水) 02:16:40#include <stdio.h> ⇒ #include <iostream>
printf("%.2s", &h[m[p]*2]); ⇒ cout << h[m[p]*2];
scanf("%d %d", &p, &i) ⇒ cin >> p >> i
余計なことだが、カンマで 1つの文に複数の式書くのってなんかきもいな
0096デフォルトの名無しさん
2008/12/17(水) 02:17:050097>>83 前半
2008/12/17(水) 02:18:18#include <stdlib.h>
#define MAX 4
int main(void)
{
FILE*fp;
char fname[80];
int step, a, b, c, d;
int f1[MAX], f2[MAX], f3[MAX], f4[MAX];
double max1, max2, max3, max4;
double min1, min2, min3, min4;
printf("入力ファイル名:");
gets(fname);
fp=fopen(fname,"r");
if(fp==NULL){
printf("%sをオープンできません\n",fname);
exit(1);
}
0098>>83 中半1
2008/12/17(水) 02:20:41while(fscanf(fp,"%d%d%d%d%d%", &step, &a, &b, &c, &d)!=EOF){
max1=f1[0]; /*データの最大値*/
for(i=1;i<MAX;i++){
if(f1[i]>max1)
max1=f1[i];
}
max2=f2[0];
for(i=1;i<MAX;i++){
if(f2[i]>max2)
max2=f2[i];
}
max3=f3[0];
for(i=1;i<MAX;i++){
if(f3[i]>max3)
max3=f3[i];
}
max4=f4[0];
for(i=1;i<MAX;i++){
if(f4[i]>max4)
max4=f4[i];
}
0099デフォルトの名無しさん
2008/12/17(水) 02:21:30char fname[80];
int step, a, b, c, d;
int f1[MAX], f2[MAX], f3[MAX], f4[MAX];
double max1, max2, max3, max4;
double min1, min2, min3, min4;
printf("入力ファイル名:");
gets(fname);
fp=fopen(fname,"r");
if(fp==NULL){
printf("%sをオープンできません\n",fname);
exit(1);
}
0100>>83 中半2
2008/12/17(水) 02:22:11for(i=1;i<MAX;i++){
if(f1[i]>max1)
max1=f1[i];
}
max3=f3[0];
for(i=1;i<MAX;i++){
if(f3[i]>max3)
max3=f3[i];
}
max2=f2[0];
for(i=1;i<MAX;i++){
if(f2[i]>max2)
max2=f2[i];
}
max4=f4[0];
0101デフォルトの名無しさん
2008/12/17(水) 02:23:35もっとハードウェアに落ちた話かと思って、閾を超える超えないで判断していて、それを便宜上01に
してるだけ、といいたかった。
物理的な話だと思いこんでたからピットのtypoかと思ったりもしたのに。
デジタルデータは0と1なんだよ!とかここで講釈しても何になるというのかね。
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8363.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:無期限ですが、できるだけ早く解決したい
0103>>83 中半2
2008/12/17(水) 02:25:14for(i=1;i<MAX;i++){
if(f1[i]<min1)
min1=f1[i];
}
min2=f2[0];
for(i=1;i<MAX;i++){
if(f2[i]<min2)
min2=f2[i];
}
min3=f3[0];
for(i=1;i<MAX;i++){
if(f3[i]<min3)
min3=f3[i];
}
min4=f4[0];
for(i=1;i<MAX;i++){
if(f4[i]<min4)
min4=f4[i];
}
0104>>83 last
2008/12/17(水) 02:26:39f1[i]=(f1[i]-min1)/(max1-min1);
for(i=0;i<MAX;i++)
f2[i]=(f2[i]-min2)/(max2-min2);
for(i=0;i<MAX;i++)
f3[i]=(f3[i]-min3)/(max3-min3);
for(i=0;i<MAX;i++)
f4[i]=(f4[i]-min4)/(max4-min4);
printf("%d %d %d %d %d ",step,f1[i],f2[i],f3[i],f4[i]);
}
fclose(fp);
return(0);
}
0105デフォルトの名無しさん
2008/12/17(水) 02:31:09いや、普通に比喩としても、仕組みの説明でも0と1の話は出るよ。
有るか無いか?あるいは符号化の話では矩形はなども用いられて。
まぁ、デジタル機器の仕組みを知る上では、重要な知識だよ。
0106デフォルトの名無しさん
2008/12/17(水) 02:32:07形式ではなく、あくまでも 信号 や 符号 ということで用いられる。
0107デフォルトの名無しさん
2008/12/17(水) 02:34:12ハードよりの視点になってしまってたです。ごめんなさい。
0108デフォルトの名無しさん
2008/12/17(水) 02:37:480109デフォルトの名無しさん
2008/12/17(水) 02:40:13for (k=1; k<=512; k++) {
int idx=-1;
/* ransu配列に一致するデータがあるか探す */
for (l=0; l<=15; l++){
if (k == ransu[l]) {
idx = l;
break;
}
}
if (idx != -1)
{
/* 見つかってたならransu1の値で振り分け */
switch (ransu1[l]) {
case 0:
for (b=0; b<=14; b++) {
fprintf(fpw1,"%d\n", dt15[b]);
}
break;
case 1:
for (c=0; c<=16; c++) {
fprintf(fpw1,"%d\n", dt17[c]);
}
break;
}
}
/* elseなのかどうかあまり解説見てない */
for (d=0; d<=15; d++) {
fprintf(fpw1,"%d\n", dt16[d]);
}
}
0110デフォルトの名無しさん
2008/12/17(水) 02:41:47- if (idx != -1)
+ if (idx != 16)
です。
とりあえずこういう風に分けてみるのはどうでしょうか。
0111デフォルトの名無しさん
2008/12/17(水) 02:42:59>>110無しでお願いします。
吊ってくる
0112デフォルトの名無しさん
2008/12/17(水) 04:35:14大雑把にこういうことがしたいのか?と思た
void fukumarete_ita_tokino_shori(int k) {
if (ransu1[k] == 0)
printf("dt15を書き込む処理\n");
else
printf("dt17を書き込む処理\n");
}
void fukumarete_inai_tokino_shori(void) {
printf("dt16を書き込む処理\n");
}
// 含まれたら1、無いなら 0
int ransu_ni_fukumareru_ka_douka(int k) {
int i;
for (i=0; i<16; i++)
if (ransu[i] == k)
return 1;
return 0;
}
//メイン処理〜
for (k=1; k<=512; k++)
{
if (ransu_ni_fukumareru_ka_douka(k))
fukumarete_ita_tokino_shori(k);
else
fukumarete_inai_tokino_shori();
}
0113デフォルトの名無しさん
2008/12/17(水) 05:52:47for (l=0; l<=15; l++){
if (k == ransu[l]) {
switch (ransu1[l]) {
case 0:
for (b=0; b<=14; b++) {
fprintf(fpw1,"%d\n", dt15[b]);
}
break;
case 1:
for (c=0; c<=16; c++) {
fprintf(fpw1,"%d\n", dt17[c]);
}
break;
}
break;
}
}
if(l==16){
for (d=0; d<=15; d++) {
fprintf(fpw1,"%d\n", dt16[d]);
}
}
}
0114デフォルトの名無しさん
2008/12/17(水) 06:35:56[2]問題文: 文字列をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込め。
[3]環境
[3.1]OS:WindowsXP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月19日AM9時00分まで
[5]特にありません。
0115デフォルトの名無しさん
2008/12/17(水) 06:47:26長いコードは炉だでよろしく
変数の型がでたらめだったり、a, b, c, d に取り込んだ値をいつ使うのか不明だったり
いろいろ突っ込みどころがあるけど、
> (データの値−最小値)/(最大値−最小値)で各値を算出し
これ整数(0, 1)にならないんだけど、何をもって1を出力したいのか書いてください禿
いちおう、何らかの意味の 0, 1 を出力するコードはできている
0116デフォルトの名無しさん
2008/12/17(水) 06:53:50#include <stdio.h>
#include <string.h>
int main()
{
char *s = "we will complete your home work!\n";
FILE *fb = fopen("data.bin", "wb"), *ft = fopen("data.txt", "w");
fwrite(s, sizeof(char), strlen(s), fb);
fprintf(ft, "%s", s);
return 0;
}
0117デフォルトの名無しさん
2008/12/17(水) 09:33:20[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8364.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: gcc
[3.3]言語:C
[4]期限:2008年12月20日 18時30分
よろしくお願いします
0118デフォルトの名無しさん
2008/12/17(水) 09:43:26コンパイルしてないからミスったらごめん
void getAverage(int kokugo[], int sansuu[], int rika[], float result[], int length)
{
int i;
for (i=0; i<length; i++)
result[i] = (float)(kokugo[i] + sansuu[i] + rika[i]) / 3;
}
0120デフォルトの名無しさん
2008/12/17(水) 10:52:32あとね、
using namespace std;
をincludeの下に書いておこう
もしくは
std::cout
みたいにstd:: をつける
0121デフォルトの名無しさん
2008/12/17(水) 11:10:31ありがとうございます!
using namespace std;
っての授業で使ってたんでこれを使うと自然に習った事を使ってるように見えるのですごく助かります!
0122デフォルトの名無しさん
2008/12/17(水) 11:38:13[1] 授業単元:プログラミング応用演習
[2] 問題文:
データベースのソート機能プログラム
・商品のデータ(名前と個数)を各項目で昇順・降順でソートできるようにする。
・まずどのフィールドでソートするか尋ねる文を表示し、
入力されたら、次に表示を降順か昇順か選ばせる文を表示する。
二つが入力されたら全フィールドでのソートを実行する。
・商品の名前はポインタ配列で宣言する。
・ソートにはバブルソートを用いる。
・個数の数値の入れ替えにはswap関数を用いる。
(商品名(ポインタ配列)の入れ替えは外部関数でなくてもよい)
・文字列の比較には標準のstrcmp関数を使う。(昇順はA-Z、降順はZ-A)
<商品名> <個数>
bread 199
rice 74
potate 33
egg 284
meat 131
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C言語
[4] 期限:12月22日(月)
0123デフォルトの名無しさん
2008/12/17(水) 11:53:08ありがとうございました
0124デフォルトの名無しさん
2008/12/17(水) 12:36:28[2] 問題文(含コード&リンク):
"TOKYO"などの文字列を扱うにはchar型の配列を用いる。
ただし、文字列はNULL文字を含むので、"TOKYO"を配列で
表現するにはchar s[6]; あるいは char[]="TOKYO";
と宣言する。このとき、初期化方法は、
char s[6]="TOKYO"; あるいは char s[]="TOKYO";
であり、また
char[6]={'T','O','K','Y','O','\0'}; /* \0はNULL文字*/
としてもよい。
このとき、文字数をカウントするプログラムを関数を用いて
どなたか作成しなさい。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc32)
[3.3] 言語: (C)
[4] 期限: ([2008年12月21日18:00まで] )
[5] その他の制限: (なし)
よろしくお願いします。
0125デフォルトの名無しさん
2008/12/17(水) 12:36:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8365.txt
0126デフォルトの名無しさん
2008/12/17(水) 12:46:25#include <stdio.h>
int mystrlen(const char *s) {
int c = 0;
while(*s++) c++;
return c;
}
int main(void) {
char s[] = "TOKYO";
printf("%sの文字数は%d\n", s, mystrlen(s));
return 0;
}
0127デフォルトの名無しさん
2008/12/17(水) 14:13:45[2] 問題文:
個人データを表す構造体personは、氏名、年齢、身長、体重、BMI(= 体重 / 身長^2)のメンバからなる。
BMIからは肥満度を判別することができる(プログラム中に場合分けしてあるのでそちらを参考)。
以上から、肥満度と標準体重(= 22 * 身長^2)を求めるプログラムを作成せよ。
ただし、(リダイレクト)入力した値とBMIを構造体メンバに格納し、それらメンバの値、肥満度、標準体重を出力すること。
また、BMIおよび標準体重を計算する関数と肥満度を計算する関数を作成して利用すること。
[3] 環境
[3.1] OS:win
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:リダイレクト処理を行ってプログラムを実行する。
頑張ってはみたものの、自分の力ではこれが精一杯でした。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8366.txt
改善点など、助言をいただきたいです。
0128デフォルトの名無しさん
2008/12/17(水) 14:32:54while文を使うということは分かるのですが
�@
キーボードから文字列を1行(改行するまで)読み込み、文字列を逆向きに出力するプログラムを作成しなさい。
【実行例】
文字列を入力: This is a pen.
逆向き出力 = .nep a si sihT
�A
キーボードから文字列を1行(改行するまで)読み込み、つぎに検索する文字keyを1文字読み込む。
最初に入力した文字列の中に、文字keyと一致する文字が何文字あるかを数えて出力するプログラムを作成しなさい。
ただし、空白や記号などを全てカウントして構わない。
ただし、キーボードから文字を(文字列ではなく)1文字読み込むには、getchar文を使う。
char key;
key = getchar();
と記述すれば、キーボードから文字を1文字だけ読み込んで key の中に代入してくれる。
scanf("%c",&key);
を使っても構わない。
【実行例】
文字列を入力: This is a pen.
文字key:s
文字sの頻度=2
0129デフォルトの名無しさん
2008/12/17(水) 14:54:11助言はちょっとめんどいので、とりあえず動きそうな感じに。
合ってるかは分からないけど
int level(person * p)
{
if (p->bmi < 18.5) return 0;
else if (p->bmi >= 18.5 && p->bmi < 25) return 1;
else if (p->bmi >= 25 && p->bmi < 30) return 2;
else if (p->bmi >= 30 && p->bmi < 35) return 3;
else if (p->bmi >= 35 && p->bmi < 40) return 4;
else return 5;
}
int main()
{
person p[N];
int i;
double NW;
char * hogehoge[] = { "Light", "Normal", "Heavy 1", "Heavy 2", "Heavy 3", "Heavy 4" };
for(i = 0; i < N; i++)
{
fscanf(stdin, "%s %d %lf %lf", p[i].name, &p[i].age, &p[i].height, &p[i].weight);
NW = func(p[i].height, p[i].weight, &p[i]);
printf("%10s %3d歳 %fcm %fkg | 肥満度は「%s」, 標準体重 = %fkg です。\n", p[i].name, p[i].age, p[i].height, p[i].weight, hogehoge[level(&p[i])], NW);
}
return 0;
}
0130デフォルトの名無しさん
2008/12/17(水) 15:09:04[2] 問題文:
個人データを表す構造体personは、氏名、年齢、身長、体重、BMI(= 体重 / 身長^2)のメンバからなる。
BMIからは肥満度を判別することができる(プログラム中に場合分けしてあるのでそちらを参考)。
以上から、肥満度と標準体重(= 22 * 身長^2)を求めるプログラムを作成せよ。
ただし、(リダイレクト)入力した値とBMIを構造体メンバに格納し、それらメンバの値、肥満度、標準体重を出力すること。
また、BMIおよび標準体重を計算する関数と肥満度を計算する関数を作成して利用すること。
[3] 環境
[3.1] OS:win
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:リダイレクト処理を行ってプログラムを実行する。
頑張ってはみたものの、自分の力ではこれが精一杯でした。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8366.txt
改善点など、助言をいただきたいです。
0131デフォルトの名無しさん
2008/12/17(水) 15:21:12>>129
ありがとうございます。どうやら大丈夫そうです。
実は、関数で場合分けして数値を返して・・・というのは考えていたのですが、返り値をどうにか文字列にできないかとググり、真似したものが投稿したものです。
課題は>>129で提出しようと思いますが、もし文字列を返す関数で定義できるのであれば、教えていただきたいです。
0132デフォルトの名無しさん
2008/12/17(水) 15:28:31char * level(person * p)
{
static char * hogehoge[] = { "Light", "Normal", "Heavy 1", "Heavy 2", "Heavy 3", "Heavy 4" };
if (p->bmi < 18.5) return hogehoge[0];
else if (p->bmi >= 18.5 && p->bmi < 25) return hogehoge[1];
else if (p->bmi >= 25 && p->bmi < 30) return hogehoge[2];
else if (p->bmi >= 30 && p->bmi < 35) return hogehoge[3];
else if (p->bmi >= 35 && p->bmi < 40) return hogehoge[4];
else return hogehoge[5];
}
0133デフォルトの名無しさん
2008/12/17(水) 15:35:30もしかしたら見当はずれかもしれませんが、関数内でポインタ配列を定義しても、関数を抜けると消滅してしまうということはないのでしょうか??
0134デフォルトの名無しさん
2008/12/17(水) 15:37:48staticだから大丈夫
0135デフォルトの名無しさん
2008/12/17(水) 15:41:49そうなんですか!! (@o@
ちょっとstaticについてググってきます。ありがとうございました。
0136デフォルトの名無しさん
2008/12/17(水) 15:47:10[2] 問題文(含コード&リンク):
aのx乗(a>0,a≠1,x∈Z)を求める関数power(a,x)を
作成してくなさい。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc32)
[3.3] 言語: (C)
[4] 期限: ([2008年12月20日18:00まで] )
[5] その他の制限: (なし)
0137デフォルトの名無しさん
2008/12/17(水) 15:50:22返り値どうやって返せばいいの?
0138デフォルトの名無しさん
2008/12/17(水) 15:51:14次のプログラムは、階乗計算の関数factを作りsin(x)をテーラー展開した式でsin(30°)をもとめるプログラムです、抜けている所があります。(___)を埋めて完成しなさい
2k-1
5 k-1 x
Σ (-1) ーーーーーー
k=1 (2k-1)!
※うまく指数が表せませんでした、見にくくて申し訳ないです。
#include<stdio.h>
#include<(____)>
int (___)(int m);
int main(void);
int main(void){
double x, s;
int k;
x =(___*________________)/180.0;
s =(__);
for( k=__; k <=__ k++){
s__ pow(___,___)*pow(__,_______)/fact(____);
}
printf("sin=%.7__\n",s);
return(0);
}
int fact(int m)
{
int s = 1, i;
if (m___0) return (__);
else for(i=1;i<=m;i++) s (___) i;
return (___);
}
0139デフォルトの名無しさん
2008/12/17(水) 15:56:250140デフォルトの名無しさん
2008/12/17(水) 15:59:251.正整数nを入力し、nまでで4で割り切れる数(4の倍数)の和を出力するfor文を利用したプログラムをつくりなさい
4+8+12+・・・・= ???
2.1の問題でfor文の変わりにWhile文を利用して作りなさい。
3.ある駐車場の駐車料金は、1時間(60分まで)350円で、以降15分ごとに90円です。
入庫時刻と出庫時刻を入力し、駐車料金を算出すプログラムを作りなさい。
次のプログラムは、階乗計算の関数factを作りsin(x)をテーラー展開した式でsin(30°)をもとめるプログラムです、抜けている所があります。(___)を埋めて完成しなさい
です、お願いします。なにもわからず瀕死状態です。テスト中です;;
0141デフォルトの名無しさん
2008/12/17(水) 16:05:10全然わからないんです。
ヒントに
A=aのx乗
両辺の対数をとる
loge A=xloge a
となり
A=eのloge a
となる
log xはlog(x)と書く.
と書いてありました。
0142デフォルトの名無しさん
2008/12/17(水) 16:16:40#include <stdio.h>
double power(int a, int x)
{
if (x == 0) return 1.0;
if (x < 0) return power(a, x + 1) / a;
if (x > 0) return power(a, x - 1) * a;
}
int main()
{
printf("%g\n", power(2, -3));
return 0;
}
0143デフォルトの名無しさん
2008/12/17(水) 16:23:05今テスト中なの?
0144テスト中
2008/12/17(水) 16:23:45そうです>_<
0145デフォルトの名無しさん
2008/12/17(水) 16:24:240146デフォルトの名無しさん
2008/12/17(水) 16:25:50テスト中に2chリロードしまくってるとか超笑える
0147デフォルトの名無しさん
2008/12/17(水) 16:28:300148テスト中
2008/12/17(水) 16:29:050149テスト中
2008/12/17(水) 16:30:520150デフォルトの名無しさん
2008/12/17(水) 16:41:27#include <stdio.h>
#define HOGE 4
int main(void)
{
int n=50;
int num;
int result = 0;
for (num = n / HOGE; num>0; num--)
result += num * HOGE;
printf("n=%d sum=%d\n", n, result);
return 0;
}
0151デフォルトの名無しさん
2008/12/17(水) 16:42:170152デフォルトの名無しさん
2008/12/17(水) 16:42:42#include <stdio.h>
#define HOGE 4
int main(void)
{
int n=50;
int result = 0;
int num = n / HOGE;
while (num>0)
result += num-- * HOGE;
printf("n=%d sum=%d\n", n, result);
return 0;
}
0153デフォルトの名無しさん
2008/12/17(水) 16:50:59[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8367.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland
[3.3] 言語:C++
[4] 期限:2008年12月22日(12:00)までです。
よろしくお願いします。
0154デフォルトの名無しさん
2008/12/17(水) 16:57:451.
#include <stdio.h>
int main(void){
char c[100] = "";
int i;
printf("文字列を入力:");
gets(c);
printf("逆向き出力:");
for(i = 99; i >= 0; i--) putchar(c[i]);
putchar('\n');
return 0;
}
0155デフォルトの名無しさん
2008/12/17(水) 16:58:422.
include <stdio.h>
int main(void){
char c[100] = "";
char key;
int i, j = 0;
printf("文字列を入力:");
gets(c);
printf("文字key:");
key = getchar();
printf("文字%cの頻度=", key);
for(i = 0; i < 100; i++) if(c[i] == key) j++;
printf("%d\n", j);
return 0;
}
0156デフォルトの名無しさん
2008/12/17(水) 17:00:56#include <stdio.h>
int main(void)
{
int time0, time1, temp;
int result = 350;
printf("入庫");
scanf("%2d:%2d", &time0, &temp);
time0 = time0 * 60 + temp;
printf("出庫");
scanf("%2d:%2d", &time1, &temp);
time1 = time1 * 60 + temp;
if (time0 >= time1)
return 1;
time1 -= (time0 + 60);
if (time1 > 0)
result += 90 * (time1 / 15 + 1);
printf("%d円\n", result);
return 0;
}
0157デフォルトの名無しさん
2008/12/17(水) 17:09:50>>91をiostreamを使った型に>>95と>>120を参考に書き直してみたのですが以下
のようなエラーが出ます。
21行目は「t-2?(cin >> p >>i),p+=i*9:):++p;」なのですが)の前に;を入れた
ら余計に沢山エラー文が出てしまいます。どうかお助けください!
#include <iostream>
using namespace std;
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){if(m[p]==0)
for(i=0;i<8;i++){
for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;
if(c&&m[v]==t){a+=c;v=p;if(d)do m[v]=t,v+=r[i];
while(m[v]!=t);}}}
char*h="・○●\n";int main(){for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;
for(;;a=d=0){for(p=9;p<82;++p)k(),cout<<h[m[p]*2];
if(a)
for(d=a=s=p=8;a==8;k())
t-2?(cin>>p>>i),p+=i*9):++p;else if(s)s=0,cout<<"pass";
else break;
t=3-t;
}return 0;}
エラー文
In function 'int main()':last.cpp:21: error:expected primary-expression before ')' token
last.cpp:21: error: expected `;'before ')' token
0158デフォルトの名無しさん
2008/12/17(水) 17:14:35宜しくお願いします!
0159デフォルトの名無しさん
2008/12/17(水) 17:17:57っつーか、やめとけ。
0160デフォルトの名無しさん
2008/12/17(水) 17:23:03なにがやめとけなんですか?
0161デフォルトの名無しさん
2008/12/17(水) 17:23:441年ぐらいかけるつもりなら止めないけど
0162デフォルトの名無しさん
2008/12/17(水) 17:26:30変数の意味を理解し次第replaceして
短くするための記述方法を開く。i++*9とか。
理解してないうちにprintfをcoutにしてみました!とか何でそう無謀な方向に進むのかがわからんよ。
0163デフォルトの名無しさん
2008/12/17(水) 17:38:54必修だから仕方なくやってるだけなんで、自分のものにしたいなんて思ってないんです。
どう直せばよろしいんでしょうか…('`)
0164デフォルトの名無しさん
2008/12/17(水) 17:44:24>必修だから仕方なくやってるだけなんで、自分のものにしたいなんて思ってないんです。
その心意気が気に入ったのでコンパイル時にエラーが出ないようにしといた。
#include <iostream>
using namespace std;int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){if(m[p]==0)for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(
c&&m[v]==t){a+=c;v=p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n"
;int main(){for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0
){for(p=9;p<82;++p)k(),cout<<h[m[p]*2];if(a)for(d=a=s=p=8;a==8;k())t-2?(cin>>p
>>i),(p+=i*9):++p;else if(s)s=0,cout<<"pass"; else break;t=3-t;}return 0;}
0165デフォルトの名無しさん
2008/12/17(水) 17:48:59元のソースは他人のだな。
ttp://pc11.2ch.net/test/read.cgi/tech/1087979678/1-25
21
0166デフォルトの名無しさん
2008/12/17(水) 17:54:08遅くなってすみません。
970さん、ありがとうございました。
しかし、問題文が不十分だったため、もう一度お尋ねします。
すみませんが、よろしくお願いします。
[1] 授業単元:プログラミングII
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8368.txt
[3] 環境
[3.1] OS:WinVista
[3.2] コンパイラ名とバージョン:VC++2008
[3.3] 言語:C言語
[4] 期限:2008年12月17日18:00
[5] その他の制限:問題文のテキストファイルに、例を載せておきました。
何度もすみませんが、どうかよろしくお願いします。
0167デフォルトの名無しさん
2008/12/17(水) 18:00:22http://pc11.2ch.net/test/read.cgi/tech/1228313292/972
じゃね?
0168前スレ987
2008/12/17(水) 18:02:50再度、できる方がいればよろしくお願いしますm(-_-)m
[1] 授業単元: プログラミング�U
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8353.txt
[3] 環境
[3.1] OS: Windows
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: 2008年12月17日3:00まで
[5] その他の制限:
課題2のみお願いします。
課題2で使う課題1のソースは自作して問題文に張っておいたので
それを使用して作成おねがいします。
0169デフォルトの名無しさん
2008/12/17(水) 18:03:46ありがとうございます!
0170デフォルトの名無しさん
2008/12/17(水) 18:06:11ほい。過去の資産流用。(笑)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8369.c
後から表示例見たんで、もうそのままにしてある。
表示ぐらいは何とかしてくれ。必要な要素は揃ってるはず。
後、整数で計算ということだが、作ったテストデータで都合が悪かったんで、
double でやってる。これも気に入らんかったら変えてくれ。
しかしお前、誤字多いな。w
0171デフォルトの名無しさん
2008/12/17(水) 18:06:57ありがとうございます!
>>165
このスレの119代目で教えてもらいましたw
そのスレの中身も参考になりました。どうやって動くか分からなかったのでw
あ、>>162さんの短くする方法を使って申し訳ないんですがまた書いて欲しいです…学校で習った記述と違う部分があるので…
本当にすいません'`
0172デフォルトの名無しさん
2008/12/17(水) 18:15:15なーんだ。じゃあそれが必修であるような学科に入ったのが間違いだよ
0173デフォルトの名無しさん
2008/12/17(水) 18:15:20#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 128
#define Y 15
#define H 5
int main(void)
{
char buff[N];
int year[Y], height[H];
int i, j;
FILE *fp = fopen("cshukudai.csv", "r");
for (i = 0; i < Y; ++i) year[i] = 0; for (i = 0; i < Y; ++i) height[i] = 0;
while (fgets(buff, N, fp) != NULL) {
strtok(buff, ",");
year[atoi(strtok(NULL, ",")) - 1975]++;
height[(atoi(strtok(NULL, ",")) - 166) / 5]++;
}
puts("生まれた年のヒストグラム");
for (i = 0; i < Y; ++i) {
printf("%4d:", 1975 + i);
for (j = 0; j < year[i]; ++j) putchar('*'); puts("");
}
puts("\n身長のヒストグラム");
for (i = 0; i < H; ++i) {
printf("%3d-%3d:", 166 + 5 * i, 170 + 5 * i);
for (j = 0; j < height[i]; ++j) putchar('*'); puts("");
}
fclose(fp);
return 0;
}
0174デフォルトの名無しさん
2008/12/17(水) 18:16:32>for (i = 0; i < Y; ++i) year[i] = 0; for (i = 0; i < Y; ++i) height[i] = 0;
for (i = 0; i < Y; ++i) year[i] = 0; for (i = 0; i < H; ++i) height[i] = 0;
0175デフォルトの名無しさん
2008/12/17(水) 18:18:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8370.txt
0176デフォルトの名無しさん
2008/12/17(水) 18:32:44>>174さん
すいません、書くのを忘れていましたが
読み込みファイル(cshukudai.csv)の数値を変えると、表示結果も変わるようにするんでしたorz
例えば、生まれた年の最低値は1975年ですが
cshukudai.csvの誰か一人の生まれた年を1970年に変更すると
ヒストグラムは、1970:* 1971: 1972:... と表示されるようにしたいんです。
分かりにくくてすいません。。。
0177デフォルトの名無しさん
2008/12/17(水) 18:41:44>>175 のはそうなってる。レコード数は25で決めうちしてるけど
0178168
2008/12/17(水) 18:47:24すいません
0179デフォルトの名無しさん
2008/12/17(水) 19:19:410180デフォルトの名無しさん
2008/12/17(水) 19:20:12ありがとうございます、助かりました
0181デフォルトの名無しさん
2008/12/17(水) 19:53:23なんでそんな、個人的などうでも良い質問をして
宿題に答えるのとは直接関係の無いレスしてんの?
馬鹿なの?野次馬なの?
0182前スレ866
2008/12/17(水) 19:54:311.数式を入力する(例:x^2y^3 + 2x^2z^3 - y^5)
2.並び替える(優先順位:乗数が大きいものが先、乗数が同じ場合は係数が大きいものを優先する)
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] 言語:C
[4] 期限: 2008年12月17日
数式を読み込んで式を個別に別けるとこまでは出来たんですが、(x^2y^3, +2x^2z^3, -y^5)
この別けた式から係数と乗数をどのようにして摘出するかアドバイスもらえませんか?
0183デフォルトの名無しさん
2008/12/17(水) 19:54:37無能ほど退屈
0184デフォルトの名無しさん
2008/12/17(水) 20:10:520185デフォルトの名無しさん
2008/12/17(水) 20:15:19どうもありがとうございます。
0186デフォルトの名無しさん
2008/12/17(水) 20:17:17[2]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8371.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8372.txt
[3]LINUX
C
[4]6時間後(木曜日午前2時)
よろしくお願いします。
0187デフォルトの名無しさん
2008/12/17(水) 20:18:27じゃあお前が7行オセロの宿題に答えてやれよwww
0188デフォルトの名無しさん
2008/12/17(水) 20:23:41係数、xの乗数、yの乗数をひとまとめにしてスタックに入れてやればいいんじゃね?
xの2乗と1乗が同時に出ることがないのならば。
0189デフォルトの名無しさん
2008/12/17(水) 20:23:530190デフォルトの名無しさん
2008/12/17(水) 20:35:01> じゃあお前が
ここは個人を指定、名指しして答えてもらうスレでもないんだが、
マジでスレタイと>>1が読めるようになってから、社会に出ろよ、ガキ
0191デフォルトの名無しさん
2008/12/17(水) 20:35:48[2] 問題文:
9桁までの素数で、
右から一桁ずつ桁数を減らしていった数が全て素数であるもの
を昇順に全て出力する (1行に1つずつ)。
最後に、1行空けて総数を出力すること。
出力先は、標準出力のこと。
例) 233 => 23x => 2xx
23 や 2 も上記条件を満たす素数である。
また、
「左」から一桁ずつ桁数を減らしていった数が全て素数であるもの
も同様に求めよ。
例) 223 => x23 => xx3
[3] 環境
OS,コンパイラは、特に指定しない。
言語は、 C/C++ のどちらでも。
[4] 期限: 12/25
[5] その他の制限:
プログラムの実行時間は、2秒以下とする。
0192182
2008/12/17(水) 20:37:29どうしたらいいですかね?
^の後の数字にしたら乗数が2桁以上のときに対応できないし…
文字列から数字だけを抽出する方法とかないですか?
0193デフォルトの名無しさん
2008/12/17(水) 20:39:32strto?()たとえば、strtol()で調べてみるといいよ。
0194デフォルトの名無しさん
2008/12/17(水) 20:40:02^の後ろに続く数字は全部乗数(っていうんだっけ?)として扱えばいいんじゃない?
0195デフォルトの名無しさん
2008/12/17(水) 20:41:23いや乗数が2桁のときはスタックの考え方でいけるだろ
例えば1つ目の数値があったとして2つ目の数値が来たら
1つ目の数値×10+2つ目の数値を記憶するとか。
0196デフォルトの名無しさん
2008/12/17(水) 20:47:39[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8373.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 2005
[3.3] 言語:C++
[4] 期限: 12月18日18:00迄
[5] その他の制限:strlenを使ってはいけない。for,if,while文は可。
よろしくお願いします。
0198デフォルトの名無しさん
2008/12/17(水) 20:52:44!?
うわ、見てませんでした。すいません。
ありがとうございます。
0199デフォルトの名無しさん
2008/12/17(水) 21:13:14他人と似たソースを提出したら、疑われるでおじゃるよ。
麻呂のソースを採用してたもう。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8374.c
0200デフォルトの名無しさん
2008/12/17(水) 21:15:44これまた酷いクソースだなwww
0201デフォルトの名無しさん
2008/12/17(水) 21:15:521個目は166個?
0202201
2008/12/17(水) 21:19:290203デフォルトの名無しさん
2008/12/17(水) 21:22:16さすれば、環境によるけど、文字数の制限は気にせず、チムポファイルの
許容範囲にまで広がるでもじゃる。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8375.c
0205デフォルトの名無しさん
2008/12/17(水) 21:30:41いちいち文字配列に書き込むのは良いのかよ?
どちらにしろ、一時的に記憶領域を確保して記録している点は同じだろ。
意見するにしても、考えが浅はか過ぎるんだよ、未熟者ってのは。
自分がそうしないこと=ありえない、間違っているという考えは、
多様化する社会では通用しない、孤立する考え、思想。
0206デフォルトの名無しさん
2008/12/17(水) 21:33:11誰でも同じものを共通して利用することが出来る。
しかし、経済力や技術力の差で、一般ピーポー君は
いくら高性能なエンジンを積んでも、混雑する路上を移動。
一方、金持ち、ヘリの免許とヘリを所有している大企業の社長は
昼食のために、ヘリで移動。費用は雲泥の差だがなw
そういうこと。
0207デフォルトの名無しさん
2008/12/17(水) 21:33:26個人的にはあのクソースはGJだとは思うがwww
0209デフォルトの名無しさん
2008/12/17(水) 21:39:46[2] 問題文(含コード&リンク):
「果物名 単価 個数」の形式の取引のデータのファイルを読み込む。ファイルを読み込み終わった後に、「取引の総数」、
「合計の金額」、「金額が最大であった取引の(整数計算でする)」、「1取引あたりの平均金額(整数計算でする)」、
「金額の最大であった取引(最初を1とする)の番号」と「その金額」をprintfを用いて標準出力に表示するプログラムを作れ。
入力データファイルには /home/sample/PE1/2008/e12.txt を用いる。(ファイル名はfopenの因数に文字列定数として書いてよい)
ファイルの全データを格納できるような大きな配列を用いてはいけない。(平均は、金額の合計と取引の総数から計算できる)
個数と金額は、ゼロまたは府の値にならないとする。また、取引金額の最大値が複数の取引に現れることはないものとする。
出力の形式は次の実行結果の例。
取り引数10
合計金額6424円 合計個数57個
平均112円/個 642円/取引
最大の取引は6番目で2064円
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2008年12月17日23時59分
[5] その他の制限:制限なし
0210デフォルトの名無しさん
2008/12/17(水) 21:41:25技術力にしても、知識にしても、ここの連中はレベルが低すぎるんだよ。
0211デフォルトの名無しさん
2008/12/17(水) 21:54:03そうなんですよねー
>>179
はいそうです。
>>184
なんとまぁ!w
ばれないように部分的に変えようと思うのでまた聞きにきますw
>>189
>>164でコンパイルできないんですか!?
まだ確かめられてなくて・・・
0212デフォルトの名無しさん
2008/12/17(水) 22:10:27ちょーてきとー
#include<stdio.h>
int main(){
int max_i=0,max_total=0;
int i,num,cost;
int sum = 0;
int total_num = 0;
if(!freopen("/home/sample/PE1/2008/e12.txt","r",stdin)){
perror("/home/sample/PE1/2008/e12.txt");
return;
}
for(i=0;scanf("%*s%d%d",&num,&cost)!=EOF;++i){
int total = num*cost;
if(total > max_total){
max_total = total;
max_i = i;
}
sum += total;
total_num += num;
}
printf("取り引数%d\n",i);
printf("合計金額%d円 合計個数%d個\n",sum,total_num);
if(i)printf("平均%d円/個 %d円/取引\n",sum/total_num,sum/i);
printf("最大の取引は%d番目で%d円",max_i+1,max_total);
}
0213デフォルトの名無しさん
2008/12/17(水) 22:11:282個目は2166?
0214デフォルトの名無しさん
2008/12/17(水) 22:30:14[2] 問題文:
以下の配列を小さい順にならべ変えるプログラムを作れ。
int numbers{10} = {82,47,2,29,95,15,38,66,51.72}
[3] 環境
[3.1] OS: windows xp
[3.2] コンパイラ名とバージョン:gcc -o
[3.3] 言語: C言語
[4] 期限: 2008年12月31日23時59分
[5] その他の制限:特になし、お願いします。
0215デフォルトの名無しさん
2008/12/17(水) 22:33:06ほい
#include <stdlib.h>
int compare(const int *a, const int *b)
{
return *a - *b;
}
main()
{
int numbers{10} = {82,47,2,29,95,15,38,66,51.72} ;
int i;
qsort(numbers, sizeof(numbers) / sizeof(int), sizeof(int), (int (*)(const void*, const void*))compare);
for (i = 0; i < 10; i++) {
printf("%d", data[i]);
}
printf("\n");
}
0216デフォルトの名無しさん
2008/12/17(水) 22:34:47> プログラムの実行時間は、2秒以下とする。
CPUの性能で差が出るのに?
0217デフォルトの名無しさん
2008/12/17(水) 22:42:292166個目の数は999962683で合ってる?
2166個だとprint文で結構掛かりそう
0218202=213
2008/12/17(水) 22:51:55実はちゃんと昇順で出してなかったから、最大値をはかってみたんだけど、999962683になってたよ。
2166なのは出るけど超遅い!これ2秒でできるのだろうか?
1個目は0.8秒(Core2Duo3Ghz)だけど2個目は40秒くらいかかる。。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8376.txt
もしよかったらどう解いたか教えてください。
0219217
2008/12/17(水) 22:55:47前の桁で求めた数値を利用するくらいしかしてない
自分の環境だとギリギリ2秒くらい
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8378.txt
0220デフォルトの名無しさん
2008/12/17(水) 22:56:47右にずらす、つまり10で割っていった値がそれ以前に求めた素数に
該当すればおk。
0221デフォルトの名無しさん
2008/12/17(水) 23:00:130223デフォルトの名無しさん
2008/12/17(水) 23:01:08だから理解力のない、日本語力もない馬鹿はレスするなつってんだよ、基地外
0224217
2008/12/17(水) 23:01:230225デフォルトの名無しさん
2008/12/17(水) 23:01:46それまで求めた値を使えば、わざわざ右にずらした値が
素数か、また求めなおす必要もないんだが?池沼は黙ってろよ。
0226デフォルトの名無しさん
2008/12/17(水) 23:02:41エラトステネスの篩を使うのもありじゃね?ただ、いくら速度を求めても
最終的にはCPUの性能に左右される。
0227デフォルトの名無しさん
2008/12/17(水) 23:04:442 3の倍数を除いたとしても3億なのでキツイ。
9桁までの素数を配列に詰めて2分探索するのがいいと思う
0228デフォルトの名無しさん
2008/12/17(水) 23:06:17それ言うと>>191の解をあらかじめテーブルに持っておきたくなるなw
0229デフォルトの名無しさん
2008/12/17(水) 23:07:47[2] 問題文:
HTTP1.1プロトコルを満たすサーバとクライアントを作れ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8377.zip
までは出来たんですが、
サーバが、fgetsしてクライアントの要求のGET /index.htmlを確認したら、残りの要求を無視するようにすると、ときどきパイプ破壊と表示されてプログラムが停止します。
これってどういう原因で起きてるんでしょう?(sarver.cの70行目前後です)
後、のこった要求を
while(fgets (str, STR_SIZE, ns_read));
で読もうとするとfgetsのところから進まなくなります。
これもなぜなんでしょう?
[3] 環境 Linux gcc
[4] 期限: 明日の昼頃まで
[5] その他の制限: とくになし
みにくいソースですけどよろしくお願いします。
他にも改善点などあれば教えていただきたいです。
0230デフォルトの名無しさん
2008/12/17(水) 23:08:239桁だからintにおさまるし、悪くはないと思う。
0231デフォルトの名無しさん
2008/12/17(水) 23:11:29右にずらすって考え方がそもそもおかしい。
元の素数に数値を足してそれが素数か判定してくのが早い。
0232デフォルトの名無しさん
2008/12/17(水) 23:12:18問題文がそうなんだが?いちいち五月蝿いなぁ、あんたは。
0233デフォルトの名無しさん
2008/12/17(水) 23:15:19そういう形の数であるかどうかだけなので、組み立てた結果そういう数字になっているというのもありだと思う。
が、そっちの方が速いかどうかは俺には分からん。
0234デフォルトの名無しさん
2008/12/17(水) 23:16:20実行速度確認したかったけどコンパイルできなかった…
Borland C++なんですけど
0235デフォルトの名無しさん
2008/12/17(水) 23:17:280236デフォルトの名無しさん
2008/12/17(水) 23:18:16それを繰り返せばおkってか?
0237デフォルトの名無しさん
2008/12/17(水) 23:19:590238デフォルトの名無しさん
2008/12/17(水) 23:22:31ありがとうございます!神よ!
0239デフォルトの名無しさん
2008/12/17(水) 23:37:43[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8381.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月18日AM7時30分まで
[5]特にありません,よろしくお願いします。
0240デフォルトの名無しさん
2008/12/17(水) 23:37:47[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8382.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: gcc
[3.3]言語:C
[4]期限:2008年12月20日 18時30分
よろしくお願いします
0241デフォルトの名無しさん
2008/12/17(水) 23:40:55[2] 仕様に基づいたシミュレーションプログラムを作成し、シミュレーション結果をExcelでグラフにしなさい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8383.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
[3.3] 言語:c言語
[4] 期限:12月18日
よろしくお願いします
0242191
2008/12/17(水) 23:48:08>>213,217,218
ですね。
最後の素数は、 999962683 です。
桁制限を外せば、
全部で 4260 個で
最後の素数は、357686312646216567629137 (24桁)だそうです。
どちらも有限集合なんですね。
にしても、回答が速いですね。
すごい。
>>216
32ビット CPU 動作周波数1GHz 以上を想定してました。
>>233 さんの言う通り、
求め方を指定したつもりは無かったです。
>>219
一桁の素数はハードコーディングでもよかった・・・スミマセン
0243デフォルトの名無しさん
2008/12/17(水) 23:49:370244デフォルトの名無しさん
2008/12/17(水) 23:51:43999962 < んんん?
99996 < んんんん?
9999 < んんんんん?
999 < んんんんんん?
99 < んんんんんんん?
9 < えっ!?
0245デフォルトの名無しさん
2008/12/17(水) 23:51:48[2] 問題文(含コード&リンク):
数学と英語の成績の2つのファイルを読んで処理する。
数学の成績ファイル math.txt の各行は「学生番号」「名前」「数学の得点」のデータがあり
英語の成績ファイル english.txt は「学生番号」「名前」「英語の得点」のデータがある。
2つのファイルの行数は同じ。原則的に学生も同じ順序だが、いくつかは間違っている。
2つのファイルを読み込み、両ファイルで学生番号が一致する学生は「2科目得点の和が140点以上」
かを判定し、そうなら「学生番号」「名前」「数学の得点」「英語の得点」「合計得点」を、
不一致ならば「<番号>と<番号>で一致せず」を1行でreport.txtという名のファイルに出力。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2008年12月18日12時00分
0246デフォルトの名無しさん
2008/12/17(水) 23:56:352種類あるから。。
0247デフォルトの名無しさん
2008/12/17(水) 23:57:47へええ、有限なんだねぇ。
そりゃそうか、と納得する一方で、なんか残念な気持ちも。
0248デフォルトの名無しさん
2008/12/18(木) 00:14:450249デフォルトの名無しさん
2008/12/18(木) 00:26:52[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8384.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8385.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 明日の12時まで
[5] その他の制限:特になし
0250デフォルトの名無しさん
2008/12/18(木) 01:20:48http://p1-up.axfc.net/uploader/He/
[1] 授業単元:
[2] 構造体の配列を作った住所録(メニューを使った選択式)
関数を使ってプログラムの最初にファイルを呼び出し 入力ファイルから構造体を読み込む(readモード)
メニューから終了を選ぶと配列からファイルへ出力
[3] 環境:普通
[3.1] WindowsVista
[3.2] visualstudio 2005
[3.3] 言語 C
[4] 期限: ([2008年12月18日12:00まで]
[5]住所録のcppファイルは↓にうpしてあります キーワードは「C言語」です
http://p1-up.axfc.net/uploader/He/upload.cgi?1229529794103920171
0251デフォルトの名無しさん
2008/12/18(木) 02:08:15[2] 問題文(含コード&リンク):下のレス
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年12月24日 13:00
[5] その他の制限: ヒントを使って作るらしいです。よろしくお願いします。
0252251
2008/12/18(木) 02:10:48下記プログラムは 文字列Tokyo を逆順に表示するプログラムである.
#include<stdio.h>
main()
{
static char string[ ]=“Tokyo”;
char *cp;
cp = string + 6;
while(--cp >= string)
putchar(*cp);
putchar(‘\n’);
}
実行結果
oykoT
上記プログラムを関数recpy()を作成して書き直しなさい.main関数をヒントに示す.データのやり取りにはポインタを用いること
0253251
2008/12/18(木) 02:11:20*ptr1 *ptr2 tempc の3つの変数を宣言して使用する.
逆に表示させるためには,文字の入れ替えをしなくてはならない.ソートプログラムを思い出す.
char *recpy(ptr)
char *ptr;
{
char *ptr1, *ptr2, tempc;
ptr1 = ptr2 = ■■■ ここは考える ■■■;
while(■■■ ここは考える ■■■){
■■■ ここは考える ■■■
}
--ptr2;
while(■■■ ここは考える ■■■)
{
文字列の入れ替え
}
0254デフォルトの名無しさん
2008/12/18(木) 02:24:43自分でも作ってみましたが、83個でしたが、昇順に並べるところまでは出来なかったものでして。
0255デフォルトの名無しさん
2008/12/18(木) 02:54:25そのコードを入手、提出することで>>254 >>191のいずれかまたは両方の評価が下がるだろう。
0256デフォルトの名無しさん
2008/12/18(木) 02:55:32> どうスレ違いか
宿題じゃないから。ある人が出した、突発的な課題だから。
0257デフォルトの名無しさん
2008/12/18(木) 02:56:380258デフォルトの名無しさん
2008/12/18(木) 02:58:12> のいずれかまたは両方の評価が下がるだろう。
なんで評価が下がるか、こっちの方が分からんわ・・・
0259デフォルトの名無しさん
2008/12/18(木) 03:29:210260デフォルトの名無しさん
2008/12/18(木) 03:31:45#include<stdio.h>
#include<time.h>
int isprime(int value){
int i;
if(value<=1) return 0;
if(value%2==0) return value==2;
for(i=3;i*i<=value;i+=2) if(value%i==0) return 0;
return 1;
}
void foo(int value, int digit, int maximum){
int i, next_value;
if(isprime(value)){
printf("%d\n", value);
if(value>=maximum/10) return;
next_value=value, digit*=10; // こっちが左から消しても素数
// next_value=value*10, digit=1; // こっちが右から消しても素数
for(i=1;i<=9;i++){
next_value+=digit;
if(next_value>maximum) return;
foo(next_value, digit, maximum);
}
}
}
int main(void){
int i;
clock_t s;
s=clock();
for(i=1;i<=9;i++) foo(i, 1, 1000000000);
printf("%.3f[sec]\n", (double)(clock()-s)/CLOCKS_PER_SEC);
return 0;
}
0261デフォルトの名無しさん
2008/12/18(木) 03:37:55右からのは83個と少ないから速いね。自分のも>>260のも、自分の環境では
0 〜 15ms で終了してるから、ほぼ処理時間は同じかな。自分も並び替えてはいないけど。
0262デフォルトの名無しさん
2008/12/18(木) 03:48:27エラトステネスの篩でやってみた
10^9 以下の素数をすべて求める段階だけで 60 秒かかる (PentiumM 1.7GHz)
素数テーブルが完成した後から時間を計ると早い(0.10秒)けどねw
0263デフォルトの名無しさん
2008/12/18(木) 04:01:54すまん、思いつきで言ったが、明らかに効率が悪いとすぐに分かったw
0264250
2008/12/18(木) 04:04:06さっきつながらなかったので送れてしまいましたがうpしました。
お願いいたします
0265デフォルトの名無しさん
2008/12/18(木) 05:10:07てんめぇ、せっかく人が作ってやってんのに、同じ宿題書き込んでんじゃねーよ。
10個程度しかレス見られないのかよ、カス。
0266デフォルトの名無しさん
2008/12/18(木) 05:51:120268デフォルトの名無しさん
2008/12/18(木) 06:11:42[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8392.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月18日AM8時00分まで(それか昼まで・・)
[5]急で申し訳ないのですがよろしくおねがいします
0269デフォルトの名無しさん
2008/12/18(木) 06:24:24#include<stdio.h>
int main(void)
{
unsigned int x=0x10fa; /*演算対象の初期化*/
unsigned int y=0x000F;
printf("%X AND %04X : %04X\n",x,y,x&y);
printf("%X OR %04X : %04X\n",x,y,x|y);
printf("%X XOR %04X : %04X\n",x,y,x^y);
printf("%X >> 2 : %04X\n",x,x>>2);
printf("%X << 2 : %04X\n",x,x<<2);
return 0;
}
0270デフォルトの名無しさん
2008/12/18(木) 06:25:12>>239 の方を解いてもらえないでしょうか?
0271デフォルトの名無しさん
2008/12/18(木) 06:38:13#include <stdio.h>
#define NINZU 3
#define KAMOKU 4
int main()
{
int ten[NINZU][KAMOKU]={ /*国語、算数、理科、社会の順に格納*/
{69,62,68,72}, /*伊藤くんの成績*/
{28,100,88,48}, /*田中さんの成績*/
{60,48,65,76}}; /*林くんの成績*/
int total = 0; /*合計点数*/
int i, j, all60over;
for (i=0; i<NINZU; i++) {
total = 0;
all60over = 1;
for (j=0; j<KAMOKU; j++) {
total += ten[i][j];
if (ten[i][j] < 60) all60over = 0;
}
if (total >= 260 || all60over) {
printf("OK\n");
} else {
printf("NG\n");
}
}
return 0;
}
0272デフォルトの名無しさん
2008/12/18(木) 06:55:16っつか、演算子を使わずに実装しろってオチは無かろうな?
0274デフォルトの名無しさん
2008/12/18(木) 07:53:27それくらい短い問題文なら、upローダ使わなくて、直接書いても大丈夫だと思う。
#include <stdio.h>
int getTeenagerCount(int *age){
return *age<0?0:(*age/10==1)+getTeenagerCount(age+1);
}
int main(){
int age[] = {18,29,10,19,22,9,20,-1};
printf("The number of teenager:%d\n",getTeenagerCount(age));
}
0275デフォルトの名無しさん
2008/12/18(木) 09:12:37どれ?
0276250
2008/12/18(木) 10:59:580277デフォルトの名無しさん
2008/12/18(木) 11:40:27リミットが迫ってるので出来るだけ早くお願いします。
0278250
2008/12/18(木) 12:25:46もしよろしければ引き続きお願いたします<(_ _)>
0279デフォルトの名無しさん
2008/12/18(木) 12:37:59入力はどんな形式のファイルになっているの?
入力は正しい形式になっていると仮定してもよいの?
0280デフォルトの名無しさん
2008/12/18(木) 12:43:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8393.txt
0282デフォルトの名無しさん
2008/12/18(木) 12:53:25ありがとうございます。
0283デフォルトの名無しさん
2008/12/18(木) 13:20:40ファイル形式はcsvでよろしいでしょうか?
0284デフォルトの名無しさん
2008/12/18(木) 13:26:32習ってない関数ってどれのことだよ
0285デフォルトの名無しさん
2008/12/18(木) 13:39:170286デフォルトの名無しさん
2008/12/18(木) 13:42:580287デフォルトの名無しさん
2008/12/18(木) 14:03:24そもそも課題の内容が分からないし、
そのコンパイルも通らないファイルをどうしたいのかさえ
0289デフォルトの名無しさん
2008/12/18(木) 14:40:34自分で当てはめればいいだろ
0290デフォルトの名無しさん
2008/12/18(木) 14:45:420291デフォルトの名無しさん
2008/12/18(木) 14:59:36はじめのは
GET /
が見つからなかったときに無限ループしてるんじゃないかと思った。
後のは、無限に読み込もうと待ってる気がする。
UNIXプログラムはうろ覚えだから的外れだったらごめんw
0292デフォルトの名無しさん
2008/12/18(木) 15:00:35>後、のこった要求を
何が残る予定なんだ?
0293デフォルトの名無しさん
2008/12/18(木) 15:35:44client側から以下(client.cの76,77行目)でGET /%s HTTP/1.1\r\nHOST: %s\r\n\r\nを送信します
size = sprintf (str, "GET /%s HTTP/1.1\r\nHOST: %s\r\n\r\n", url.path, url.host);
write (s, str, size+1);
server側はこれを受け取って処理するんですが
パスだけ取得できればいいんで、はじめは、fgets (str, STR_SIZE, ns_read);でGET /%s HTTP/1.1だけ読み込んで
そこからパスを取得してそれ以降の処理をしてました
でも、どうやらclient側から送信された文字列を全部受け取らずにそれ以降の処理に進むとパイプ破壊のエラーが出ることが分かったんで、
while(fgets (str, STR_SIZE, ns_read));でclient側から送信された文字列を全て(残りの”HOST: %s\r\n\r\n”の部分)取得しようとしたら、このwhile分の2回目のループのfgetsの部分で
止まってそれ以降プログラムが動かないみたいなんです
とりあえず、while(fgets (str, STR_SIZE, ns_read));をfgets (str, STR_SIZE, ns_read);に書き換えればパイプ破壊も起きず問題なく動くんですが、
ネット上のechoサーバサンプルコード見てても、特に何が原因でこうなってるのかよく分からなかったので質問させてもらいました
>>291
一応それ以降まで進んでることは確認してます
”HOST: %s\r\n”も読み込んで次に実行されたfgetsで止まってる見たいです
0294デフォルトの名無しさん
2008/12/18(木) 15:58:53>止まってそれ以降プログラムが動かないみたいなんです
client側が次に何か送って来るのを待っているんだから
0295182
2008/12/18(木) 16:01:54jousu[10],//乗数を格納
TEMP;//ソート用
char bunkatsu[10][NAGASA] = {},//別けた式を格納
TEMP_MOJI[10][NAGASA] = {};
for(i=0;i<tate-1;i++){
for (j=tate-1;j>i;j--){
if (jousu[j-1] < jousu[j]) {//前の要素のほうが大きいなら
//乗数配列の交換
TEMP = jousu[j];
jousu[j] = jousu[j-1];
jousu[j-1]= TEMP;
//分割式配列の交換
TEMP_MOJI[j] = bunkatsu[j];
bunkatsu[j] = bunkatsu[j-1];
bunkatsu[j-1] = TEMP_MOJI[j];
}
}
}
これでソートしようと思ってるんだけど、分割式配列の交換で代入できない型ってエラーが出ます。
char型で統一してるのに駄目なの?
0296デフォルトの名無しさん
2008/12/18(木) 16:05:17プログラム全体を貼り付けてよ
できればうpろだに
0297デフォルトの名無しさん
2008/12/18(木) 16:10:53>>291だけど、言いたかったのは>>293がうまく言ってくれたw
ns_readから読み込むと、普通のファイルと違ってパイプから読みこむから、読み込みたいときにパイプが空っぽだと、誰からパイプに入れてくれるのをずっと待ってるんだよ。
0298デフォルトの名無しさん
2008/12/18(木) 16:38:48[2] 問題文(含コード&リンク):
「エラトステネスのふるい」は素数を求めるアルゴリズムです。
このアルゴリズムを用いて、100までの素数をすべて表示する
プログラムを作成してみよう。
(ヒント)
101個の配列aを用意して、添字2〜100を数として扱います。
数2がふるいに入っている状態はa[2]=1、ふるいから取り
除かれた場合はa[2]=0となるようにします。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc32)
[3.3] 言語: (C)
[4] 期限: ([2008年12月20日18:00まで] )
[5] その他の制限: (なし)
0299デフォルトの名無しさん
2008/12/18(木) 16:50:55[2] 問題文(含コード&リンク):
year年 month月のカレンダーを表示するプログラムを作成してみよう。
ヒント
次の関数を作ってカレンダーを作成してみよう。
int leap(int year) 閏年の判定
int days(int year,int month) year年(month-1)月終了時までの日数のずれ
void cal_print(int year,int month) year年month月の表示
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc32)
[3.3] 言語: (C)
[4] 期限: ([2008年12月20日18:00まで] )
[5] その他の制限: (なし)
0300デフォルトの名無しさん
2008/12/18(木) 17:05:54http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8394.c
0301デフォルトの名無しさん
2008/12/18(木) 17:11:15#include <stdio.h>
int main(void)
{
int i, j;
int a[101];
for(i=2; i<101; i++)
a[i] = 1;
for(i=2; i<=10; i++){
for(j=i+1; j<101; j++){
if(j%i == 0){
a[j] = 0;
}
}
}
for(i=2; i<101; i++){
if(a[i]){
printf("%d\n", i);
}
}
return 0;
}
0302301
2008/12/18(木) 17:19:13for(i=2; i<=10; i++){
if(a[i]){
for(j=i+1; j<101; j++){
if(j%i == 0){
a[j] = 0;
}
}
}
}
0303デフォルトの名無しさん
2008/12/18(木) 17:20:180304デフォルトの名無しさん
2008/12/18(木) 17:20:27お願いします。
http://www.uploda.org/uporg1864479.c.html
パス:1111
0305デフォルトの名無しさん
2008/12/18(木) 17:20:38クライアントの write (1, str, size+1);も変だな。サイズ大きすぎるだろ。
0306デフォルトの名無しさん
2008/12/18(木) 17:27:38#include <stdio.h>
#define MAX 101
int main(void) {
int i,j,k;
int a[MAX]={0,0,1};
for(i=3; i<101; i++) a[i] = 1;
for(i=2; i<=10; i++) {
if(a[i]==1) for(k=i,j=i*2; j<101; j+=k) a[j] = 0;
}
for(i=2; i<101; i++)
if(a[i]) printf("%d ", i);
return 0;
}
0307デフォルトの名無しさん
2008/12/18(木) 17:29:03#include <stdio.h>
#define MAX 101
int main(void) {
int a[MAX]={0,0,1},i,j,k;
for(i=3; i<MAX; i++) a[i] = 1;
for(i=2; i*i<=MAX; i++) { if(a[i]==1) for(k=i,j=i*2; j<101; j+=k) a[j] = 0; }
for(i=2; i<MAX; i++) if(a[i]) printf("%d ", i);
return 0;
}
0308デフォルトの名無しさん
2008/12/18(木) 17:38:51{
int x;
int y;
}p;
int length_vector(struct Point p)
{
int a,b,c,d;
a=pow(p.x , 2 );
b=pow(p.y , 2 );
c = a + b;
d =sqrt(c);
return d ;
}
int main(void)
{
struct Point p;
printf("Input Point X: ");
scanf("%lf", &p.x);
printf("Input Point Y: ");
scanf("%lf", &p.y);
print_v(p); /* print_vを使用して,座標の表示 */
printf("The length of vector: %f\n", length_vector(p) );
return 0;
}
なぜ動かん!
0309デフォルトの名無しさん
2008/12/18(木) 17:45:180310デフォルトの名無しさん
2008/12/18(木) 18:03:36ページを開くことができませんでした…
0311デフォルトの名無しさん
2008/12/18(木) 18:04:040312デフォルトの名無しさん
2008/12/18(木) 19:29:35ありがとうございマス!
0313デフォルトの名無しさん
2008/12/18(木) 19:33:38途中まで、あってるか確証はありませんが、自分でやったのでこの続きをお願いします。
#include<stdio.h>
int main(void)
{
FILE *fp1,*fp2, *fp3;
int num, math, eng, total;
char name[20];
fp1=fopen("/home/sample/PE1/2008/e12math.txt","r");
if(fp1==NULL){
printf("open error\n");exit(1);
}
fp2=fopen("/home/sample/PE1/2008/e12eng.txt","w");
if(fp2==NULL){
printf("open error\n");exit(1);
}
fp3=fopen("report.txt.","x");
while(fscanf(pf1,"%d %s %d",&num,name,&math)!=EOF){
0314デフォルトの名無しさん
2008/12/18(木) 19:48:12どう間違えてたの?
0315デフォルトの名無しさん
2008/12/18(木) 19:51:22一致せずが1つあるはずなのになかった
0316デフォルトの名無しさん
2008/12/18(木) 19:52:400317デフォルトの名無しさん
2008/12/18(木) 19:56:17感じ
0318デフォルトの名無しさん
2008/12/18(木) 20:07:350319デフォルトの名無しさん
2008/12/18(木) 20:14:53どこら辺が>>313っぽくなればいいのかが読み取れないなぁ。
別に>>280と大差あるように見えない。
変数名をtypoしたりcloseをOS任せにする辺りが特徴?
0320デフォルトの名無しさん
2008/12/18(木) 20:34:32[2] 問題文: 16進数を入力するプログラムを作れ。
[3] 環境
[3.1] OS: windows xp
[3.2] コンパイラ名とバージョン:gcc -o
[3.3] 言語: C言語
[4] 期限: 2008年12月31日23時59分
[5] その他の制限:scanfは使用禁止。よろしくお願いします。
0321デフォルトの名無しさん
2008/12/18(木) 20:37:55#include <stdio.h>
#include <stdlib.h>
int main()
{
char s[1000];
int x;
fgets(s, 1000, stdin);
x = strtol(s, NULL, 16);
return 0;
}
0322デフォルトの名無しさん
2008/12/18(木) 20:40:15#include <stdio.h>
int main()
{
char str[256];
unsigned int n;
fgets(str, 256, stdin);
sscanf(str, "%x", &n);
return 0;
}
0323デフォルトの名無しさん
2008/12/18(木) 21:23:54検証に使った math.txt と eng.txt
そして実際にはどういう結果(出力)が欲しかったのか
それを示さないと何とも言えない。
0324デフォルトの名無しさん
2008/12/18(木) 21:29:240326デフォルトの名無しさん
2008/12/18(木) 21:43:49なお、整列完了までの途中経過を表示せよ。
いろいろなサイトで公開されているクイックソート昇順のプログラムを弄ってみたのですが
どうしてもうまく行きません。よろしくお願いします。
また、このプログラムを改良し、左端・中央・右端の3要素の中をうちを枢軸
右端)とする
場合のプログラムを考えよ。
に関しては自分で考えてみるつもりなのですが、もし良ければお願いします
0327デフォルトの名無しさん
2008/12/18(木) 21:51:09ほんとだ。よく見ず難癖つけてすまんかった>行数
0328デフォルトの名無しさん
2008/12/18(木) 22:14:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8395.c
0329デフォルトの名無しさん
2008/12/18(木) 22:24:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8396.c
0330デフォルトの名無しさん
2008/12/18(木) 22:38:43ありがとうございます。
ですが、今回は数列(12,43,17,23,57,50,17,41, 7,63)が指定されているので、
これをscanfでの入力もしくは、プログラム内に埋め込みという形で出来ないでしょうか?
0331デフォルトの名無しさん
2008/12/18(木) 22:40:26問題
0〜9、+、−、×、÷、(、)、を使った整数式を
ポーランド記法を使ったツリー構造に変換し出力。
さらに計算し解を出力するプログラムを作成。
ただし整数式は標準入力から式ブロックで入力され"quit"が
入力されるまで繰り返し入力できるものとする
※割り算によって発生する小数部は切り捨ててよい
※入力式の誤り判定は不必要とする
※ただし−符号は考慮すること
環境:WS
コンパイラ:gcc
制約:breakは原則使用禁止(Selectcase文は除く)
scanfは使用禁止
以上です。お願いします
0332デフォルトの名無しさん
2008/12/18(木) 22:43:24breakの代わりにgoto使ってもいい?
0333デフォルトの名無しさん
2008/12/18(木) 22:55:40聞いたことないのでだめかと…
基本的にループや条件分岐から抜け出すプログラムはだめだそうです
0334デフォルトの名無しさん
2008/12/18(木) 22:59:54http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8397.c
0336デフォルトの名無しさん
2008/12/18(木) 23:24:07>>487
ありがとうございます
EOFがないから終端の判断ができないってことですかね
サーバからクライアントにファイル内容を送信するときはEOFも送るからうまく止まってくれるという認識で大丈夫でしょうか?
readとかfgetsでEOFまで読めるかどうかとか考えたことなかったんで本当に助かりました
意図してるより少ない行数しか来なかったときは、
実際に使われてるプログラムではタイムアウトなどで対応してるんでしょうか?
参考になるサイトかソースも教えて頂けると助かります
0337デフォルトの名無しさん
2008/12/18(木) 23:36:28ありがとうございます。何度も何度も申し訳ないのですが
左端、中央、右端の3要素の中央値を枢軸(右端)になるように改良していただけないでしょうか?
0338デフォルトの名無しさん
2008/12/18(木) 23:44:06それって、本当にクイックイックソートなの?
0339デフォルトの名無しさん
2008/12/18(木) 23:53:56はい、間違いなくクイックソートです。
0340デフォルトの名無しさん
2008/12/18(木) 23:57:330341デフォルトの名無しさん
2008/12/18(木) 23:59:16左端、中央、右端の3要素の中央値を中軸(右端)とする改良をした場合の途中経過を表に記述せよ。
ただし、交換毎にその結果を1行で記述し、整列するまで記述せよ
このような課題です
0342デフォルトの名無しさん
2008/12/19(金) 00:08:28よう分からんけど、とりあえずソートは出来るから、提示してあるコードのpを
p=a[right]; に変更して。
0343デフォルトの名無しさん
2008/12/19(金) 00:16:230344デフォルトの名無しさん
2008/12/19(金) 00:33:2063 57 50 17 23 41 43 17 12 7
になるのですが、不完全ですよね?
0345デフォルトの名無しさん
2008/12/19(金) 00:35:19になったけど?
0346デフォルトの名無しさん
2008/12/19(金) 00:38:10変なところを弄ったかな?
0347デフォルトの名無しさん
2008/12/19(金) 00:38:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8398.c
0348デフォルトの名無しさん
2008/12/19(金) 00:41:32今回の数列(7,12,17,17,23,41,43,50,57,63)に変更するとうまくいきません
0349デフォルトの名無しさん
2008/12/19(金) 00:53:48さぁ考えよー。オラ知らんw
0350デフォルトの名無しさん
2008/12/19(金) 00:56:48試してないしろくすっぽ考えてないけどさ。
0351デフォルトの名無しさん
2008/12/19(金) 00:57:31降順になったのはたまたまpivotが最大値、もしくは最小値から離れた値だったのでは?
0352デフォルトの名無しさん
2008/12/19(金) 01:04:130353デフォルトの名無しさん
2008/12/19(金) 01:15:57http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8399.c
0354デフォルトの名無しさん
2008/12/19(金) 01:30:09本当にありがとうございました。
0355デフォルトの名無しさん
2008/12/19(金) 01:31:51[2] 問題文:
x(n+1){2x(n) (0≦x(n)≦1/2) :2(1-x(n)) (1/2<x(n)≦1)
の漸化式を使いx(n)の結果が何周期で元に同じ答えに戻るのかをカウントするプログラム
n=1のときのx(n)の数値は0.08とする。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: [12月19日08:00まで]
[5] その他の制限:特になし お願いします。
0356デフォルトの名無しさん
2008/12/19(金) 01:37:21何の式だよ
0357デフォルトの名無しさん
2008/12/19(金) 01:43:04x(n+1)です。
0358デフォルトの名無しさん
2008/12/19(金) 01:45:11同じ答えに戻らないな
0 に収束した
xn は double なんでしょ?
0359デフォルトの名無しさん
2008/12/19(金) 01:53:23[2] 問題文(含コード&リンク):
文字列の大小比較(辞書式順)を行う関数
int my_strcmp(char *s1, char *s2)
を作成せよ。ただし、return valueはs1<s2なら-1、s1=s2なら0、s1>s2なら1とする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 朝になるまで
[5] その他の制限: ポインタを習っています。
解説も付けてくれるとありがたいです。
よろしくお願いします。
0360デフォルトの名無しさん
2008/12/19(金) 02:01:3211番目で0.08に戻った
0361デフォルトの名無しさん
2008/12/19(金) 02:01:57はい、確かにdoubleです。
手計算だとn=11のときに0.08に戻る計算のはずですが・・・
0362デフォルトの名無しさん
2008/12/19(金) 02:15:10double 演算て加減算で誤差乗るからdoubleの意味で完全に一致することはなくなってしまうんだけど許容誤差が与えられれば収束するね
#include <stdio.h>
int main()
{
double xn = 0.08;
int i = 0;
do {
printf("xn:%.20f\n", xn);
if (xn >= 0 && xn <= 0.5)
xn = 2 * xn;
else if (xn > 0.5 && xn <= 1.0)
xn = 2*(1 - xn);
i++;
} while(xn != 0.08);
printf("%d回\n", i);
return 0;
}
普通はdoubleは等号比較なんてしないんだけど
0363デフォルトの名無しさん
2008/12/19(金) 02:17:38#define START 0.08
#define E 10e-8
}while(!(START-E<=xn&&xn<=START+E));
0364デフォルトの名無しさん
2008/12/19(金) 02:21:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8400.c
0365デフォルトの名無しさん
2008/12/19(金) 02:33:54文字の長さが違うと…
0366デフォルトの名無しさん
2008/12/19(金) 02:50:47文字コードの値は高いから、問題なし。標準ライブラリのstrcmpでも結果は同じ。
0367デフォルトの名無しさん
2008/12/19(金) 03:00:160368デフォルトの名無しさん
2008/12/19(金) 03:49:18value=my_strcmp("a","");
が一致になっちゃうよ
[2] 問題文(含コード&リンク):
授業で作った関数を使って8王妃問題の解を示す
[3] 環境
[3.1] OS: ウィンドウズ
[3.2] gcc
[3.3] 言語: C
[4] 今週中
[5] 授業で作った以下の関数を使用すること。
一つ目(その場所に置けるかどうか判定する)
int search(int bd[],int i){
int j;
for(j=1;j<i;j++){
if(bd[i]==bd[j])
{
return 0;
}
else if(bd[i]+i==bd[j]+j)
{
return 0;
}
else if(bd[i]-i==bd[j]-j)
{
return 0;
}
}
return 1;
int PrintBoard(int no,int bd[])
{
int i,j;
printf("%d番目の解\n",no);
for(i=1;i<=8;i++){
for(j=1;j<=bd[i]-1;j++){
printf(" .");
}
printf(" Q");
for(j=bd[i]+1;j<=8;j++){
printf(" .");
}
printf("\n");
}
printf("\n");
return 0;
}
0371239
2008/12/19(金) 06:42:07[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8401.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月19日AM8時00分まで
[5]239です、以前271さんに作って頂いたコードを元に
作成してみたのですがなかなかうまくいきません
途中までしかできていませんが、どなたか協力の方おねがいします。
0372デフォルトの名無しさん
2008/12/19(金) 06:51:43271だと具体的にどういう不備があったの?
0374271
2008/12/19(金) 07:11:16やめてくださいよw
> 合格条件の「全科目60点以上」(例:伊藤の全科目で60点以上あるのか?)なのかを知るために
> all 60overに「全科目60点以上なら1 どれか一つでも60未満があれば0 といった感じをif文で作りたいのですが
> わかりません
あったはずですけど、今はなぜかなくなってますね?
> あと氏名を表示させたいのですがどこで表示させればいいかがわかりません
そうなるだろうなあと思ってました。
0375デフォルトの名無しさん
2008/12/19(金) 07:19:29[2] 問題文(含コード&リンク):ディレクトリ内の全てのjpg画像をpbm画像にするプログラムの作成.
[3] 環境
[3.1] OS:Linux(Ubuntu)
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:出来れば今日中に
[5]system関数を使ってlinux内のdjpegなどを使っても可です
またシェルでも構いません
宜しくお願いします
0376デフォルトの名無しさん
2008/12/19(金) 07:51:49にゃるへそ。それじゃ、do whileにすればおk
0377デフォルトの名無しさん
2008/12/19(金) 10:35:39linux内にきっとあるconvertを使ってもいい?
0378デフォルトの名無しさん
2008/12/19(金) 10:50:32("","")は?
0379デフォルトの名無しさん
2008/12/19(金) 11:14:53>>375
> [5]system関数を使ってlinux内のdjpegなどを使っても可です
ってあるから、なんでもありなんじゃね?
0380デフォルトの名無しさん
2008/12/19(金) 11:25:16ディレクトリ内のやつを一括で変換出来れば何でも良いですよ
0381デフォルトの名無しさん
2008/12/19(金) 12:42:35#include <stdlib.h>
int main()
{
system("mogrify -format pbm *.jpg");
return 0;
}
見てのとおり、.jpg だけ変換
.jpegは変換しない
0382デフォルトの名無しさん
2008/12/19(金) 13:19:30それは一致でおkだろw
0383デフォルトの名無しさん
2008/12/19(金) 13:27:48標準ライブラリのstrcmpでも同じように検証してみな
0384デフォルトの名無しさん
2008/12/19(金) 14:57:14ありです.
今までImageMagick知らんかった..便利ですね
0385 ◆fYK1SYi0VA
2008/12/19(金) 15:41:29[2] 問題文(含コード&リンク):
サンプルプログラムを使用して、ポインタの線形リストを作成し、追加・削除・検索・表示がが出来ること。
ファイルからデータの読み込み、ファイルへのデータの保存が出来ること。
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: 分かりません
[3.3] 言語: C言語
[4] 期限: 12月22日
[5] その他:
教えて貰いたい部分は関数void yomu(List *list)のプログラムを書き換えて、
data.txtから3項目のデータを読み込めるようにしてほしいのです。
3項目は、整数型・文字型[10]・文字型[10]になっています。
プログラムは少し長いですが、手を加えて欲しいのは関数void yomu(List *list)の内容です。
読み込むファイル(data.txt)にはどのような内容になっているかについては、ソースプログラムの前に説明をします。
どなたかよろしくおねがいします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8402.txt
0386デフォルトの名無しさん
2008/12/19(金) 15:50:49うっし、並び替えも含めてAthlonXP 2800+ (2GHz)で約0.5秒で終了するコードが書けた。
自己満足。公開はしないが。
0387デフォルトの名無しさん
2008/12/19(金) 16:02:03http://o.pic.to/s9pf6
誰かプログラミングしてください(>人<)
0388デフォルトの名無しさん
2008/12/19(金) 16:05:17忘れてましたが、C言語でお願いします(>人<)
0389デフォルトの名無しさん
2008/12/19(金) 16:07:49忘れてはいけません、>>1読めでお願いします(>人<)
0390デフォルトの名無しさん
2008/12/19(金) 16:47:19[2] 問題文(含コード&リンク):正の整数nを読み込んで、
1+1/1!+1/2!+・・・1/n!
を計算し、その値を表示するプログラムを表示しなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: visualC++2005
[3.3] 言語: C
[4] 期限: 12月19日18:30まで
[5] 特になし
よろしくお願いしますm(__)m
0391デフォルトの名無しさん
2008/12/19(金) 17:00:37#include <stdio.h>
int main(void) {
double a,b; int i,n;
printf("Input n > ");
scanf("%d",&n);
if(n<0) return 1;
for(i=1,a=1.0,b=1.0; i<=n; i++) {
b=b/(double)i;
a+=b;
}
printf("%lf\n",a);
return 0;
}
0392デフォルトの名無しさん
2008/12/19(金) 17:13:13その環境で>>219を動かすとどれくらい?
0393デフォルトの名無しさん
2008/12/19(金) 17:13:51すいません、訂正します。
[1] 授業単元: プログラミング実習II
[2] 問題文(含コード&リンク):下記の画像i1.bmp(マスク画像 Mi1.bmp)を幅600×高さ400の画像の中心に配置し、
背景を緑色(r=0x00, g=0xc0, b=0x00)にしたBMP画像を生成するプログラム1を作成せよ。
[3] 環境
[3.1] OS: xp
[3.2] コンパイラ名とバージョン: いつも「bcc32 ファイル名 -lm」でコンパイルしてます。
[3.3] 言語: C言語
[4] 期限: 2009 / 01 / 09
[5] その他の制限: 本テーマで利用するC言語の知識:・シフト、論理演算 ・16進表示 ・数学関数(sin, cos) ・malloc関数 ・バイナリファイル
期限は1月9日ですが、早いとうれしいです。
よろしくお願いします。
0394デフォルトの名無しさん
2008/12/19(金) 17:15:07早速のレス、ありがとうございます
0395デフォルトの名無しさん
2008/12/19(金) 17:17:16450〜550ms。自分が作ったコードとほぼ同じ時間かな。
0396デフォルトの名無しさん
2008/12/19(金) 17:18:49トン
0397デフォルトの名無しさん
2008/12/19(金) 17:20:370398デフォルトの名無しさん
2008/12/19(金) 17:22:59[2] 問題文:最大10人分の名前を格納するポインタ配列を宣言し、
キーボードから一人づつ名前を入力し、その名前の文字列を格納できるメモリ領域を
確保してから名前の文字列を格納し、さらにそのメモリ領域へのポインタを配列に格納する。
最後に入力した人数分について、名前が格納されているアドレスと名前の文字列を出力するコードを
作成せよ。
[3] 環境
[3.1] OS: Fedora 10
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日まで
#include <stdio.h>
int main(void){
char *name[10],tmp[20];
int i,c=0;
printf("名前を最大10人分入力して下さい。\n");
for(i=0; i<10; i++){
scanf("%s",tmp);
name[i] = (char *)malloc(sizeof(char)*(strlen(tmp));
strcpy(name[i],tmp);
c++;
}
for(i=0; i<=c; i++)printf("%x %s\n",name[i],name[i]);
return 0;
}
10人に満たなくても、ctrl-Dで入力を終了出来るようにしたいのですが、できませんでした。
0399デフォルトの名無しさん
2008/12/19(金) 17:29:56画像、マスク画像と完成画像
0400デフォルトの名無しさん
2008/12/19(金) 17:31:04画像、マスク画像と完成画像
http://o.pic.to/s9pf6
0401デフォルトの名無しさん
2008/12/19(金) 17:46:18キー入力部分を
if (scanf("%s", tmp) != 1) break;
にでもしてみたら?
0402デフォルトの名無しさん
2008/12/19(金) 18:13:15授業ではどうやってwindows bitmapを扱うことになってるんだ?
APIとか使うのか?
0403デフォルトの名無しさん
2008/12/19(金) 18:16:16[2] 問題文(含コード&リンク):
バブルソートの実行時間を測定するプログラムを書きなさい。
乱数の出力に関してはSFMTを使用しなさい。
作ったプログラムを、比較回数をカウントできるように改良しなさい。
さらに、代入回数をカウントできるように改良しなさい。
なお、後に選択ソートや挿入ソートで実行時間の測定や代入回数のカウントを行うため、
実行用プログラムと、ソート単体のプログラムを分けなさい。
[3] 環境
[3.1] OS: Windows VISTA
[3.2] コンパイラ名とバージョン:bcc 5.5.1 for Win32
[3.3] 言語: C言語
[4] 期限: 年内
[5] その他の制限:この課題はソースの提出ではなく、出力結果を表に表し
結果に関する解説をするものですから、とくに制限はありません。
ですが、授業で作ったサンプルを元に、実行時間を測定するプログラムまでは作りましたので、
もし良ければ応用して欲しいです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8403.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8404.c
SFMTを使用したプログラムを書くと以下のエラーとなります。
警告 W8027 SFMT.c 255: forを含む関数はインライン展開できない
警告 W8027 SFMT.c 280: forを含む関数はインライン展開できない
協力お願いします
0404デフォルトの名無しさん
2008/12/19(金) 18:22:36> #include "sfmt.h"
このヘッダファイルはどこよ?
0405デフォルトの名無しさん
2008/12/19(金) 18:29:30ソースと同じディレクトリに入れればいいと教わりました。
0406デフォルトの名無しさん
2008/12/19(金) 18:30:05[2] 問題文(含コード&リンク):
1990/1/1以降の年月日を与えられると、
その年がうるう年かどうか、またその日が何曜日かを表す値を返す関数
「int wday(int y, int m, int d)」
を作りなさい。なお、
・1990/1/1が月曜日であること。
・うるう年は4で割り切れて100で割り切れない年、あるいは400で割り切れる年である。
を利用することとする。
年月日は、整数値で与え、
・西暦年はy ・月はm ・日はd
で表すものとする。
関数が返す値は次の整数値とする。
・普通の年の時…
月曜日は1 火曜日は2 水曜日は3 木曜日は4 金曜日は5 土曜日は6 日曜日は0
・うるう年の時…
月曜日は11 火曜日は12 水曜日は13 木曜日は14 金曜日は15 土曜日は16 日曜日は10
また、動作を確認するための適切なmain関数なども作成しなさい。
[3.1] OS: WindowsXP
[3.2] visualstudio Win32
[3.3] 言語: C言語
[4] 期限:2008/12/24
[5] その他の制限:
変数・データの出入力・演算子・条件分岐・繰り返し・配列を習い、
今回は、関数を自分で作ってみることが目的です。
どなたかよろしくお願いします(><)!!
0407デフォルトの名無しさん
2008/12/19(金) 18:31:59[2] 問題文(含コード&リンク):
0〜9、+、−、×、÷、(、)、を使った整数式を
ポーランド記法を使ったツリー構造に変換し出力。
さらに計算し解を出力するプログラムを作成。
ただし整数式は標準入力から式ブロックで入力され"quit"が
入力されるまで繰り返し入力できるものとする
※割り算によって発生する小数部は切り捨ててよい
※入力式の誤り判定は不必要とする
※ただし−符号は考慮すること
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc ヴァージョンは不明です;;
[3.3] 言語: C
[4] 期限: 2008年内
[5] 制約:break,gotoなどループや条件分岐から抜けるものは使用不可能(Selectcaseは除く)
以前書き込みましたがテンプレの存在を知らずにかいたため訂正いたしました
よろしくお願いします
0408,,・´∀`・,,)っ-○◎●
2008/12/19(金) 18:36:05SFMTって広大の斉藤君のやつだろ?
SSE2依存のライブラリ使うのになんでbcc使うの?馬鹿なの?死ぬの?
出題者がコンパイラ指定したなら文句言ってきなさい。
もし君の独断でbccを使ってるなら、コンパイラ変えなさい。
CygwinかVS2008 Express使いなさい。
0409デフォルトの名無しさん
2008/12/19(金) 18:37:43そうなんだけど、そのヘッダファイルも提示してくれよw
0410デフォルトの名無しさん
2008/12/19(金) 18:38:03>>404が言っているのは、sfmt.hってファイルは提示してくれないのか、ってことだろう。
このソース読みにくいし、危険なコードが見えるんだが・・・
main()内のint型変数nは、初期化してから使おうな。警告が出てもいいレベルだけどな。
0411,,・´∀`・,,)っ-○◎●
2008/12/19(金) 18:39:39「インライン関数をインライン展開できませんでした」ってだけなんで特に気にする事じゃないです。
むしろ「エラー」を見て欲しい。
0412,,・´∀`・,,)っ-○◎●
2008/12/19(金) 18:40:55こいつ以外にSFMTっていう乱数ライブラリあるのか知らないが
そもそもbccで使えた記憶が無い
0413デフォルトの名無しさん
2008/12/19(金) 18:49:32コンパイラの指定は無いのですが、最初の授業でBCCを使いなさいとは言われました。
学校の授業で使うPCはLinuxかWinXPを起動時に選択。どちらでもOKって感じで、XPが大半です。
LinuxはGCC XPはBCCです。
>>409
sfmt.hはttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/bin/dl/dl.cgi?SFMT:dSFMT-src-2.0.zip
の中に入っている物を使用しています。このzipの中の
sfmt.c,sfmt.h,sfmt-params.h,sfmt-paramas19937.hをソースと同じディレクトリに入れろ と言われています
>>410
授業中に配布されたプリントにあるプログラムをほとんど改変しない状態なのですが、
問題が多いのでしょうか?
0414,,・´∀`・,,)っ-○◎●
2008/12/19(金) 18:53:48gcc推してるならCygwinのほうがいいかもしれないが
VS2008 Expressでもいいと思う
0415デフォルトの名無しさん
2008/12/19(金) 18:54:100416,,・´∀`・,,)っ-○◎●
2008/12/19(金) 18:54:270417デフォルトの名無しさん
2008/12/19(金) 18:59:12GCC環境でこの課題は出来ないって事ですか?
SFMTの部分を無視して、普通に乱数を作り
比較回数と代入回数を求めるプログラムをお願いできませんか?
0418,,・´∀`・,,)っ-○◎●
2008/12/19(金) 19:02:09Visual C++ 2008 Expressでもいい。
Borland C++ 5.5.1使ってるんだろ?
もう一度聞くけど、bccでコンパイルしてemmintrin.hが無いとかのエラー出てないか?
エラーを確認しろ。「警告」はエラーではない。
0419デフォルトの名無しさん
2008/12/19(金) 19:02:56いくつかのサンプルで、実行結果と処理時間を計測して出せば良いんでしょ?
あと、見下す発言をする団子は、京産大未満
0420デフォルトの名無しさん
2008/12/19(金) 19:06:33> 中国沿岸で発生したダンゴリオンの大発生で、地元の漁師が頭を痛めている。
吹いたw
0421,,・´∀`・,,)っ-○◎●
2008/12/19(金) 19:13:38味方になってやるから教員のメールアドレス教えてよ。
ちなみにKOとかじゃないよね?
うちのマイミクに1年生向けの講義受け持ってる非常勤講師がいるけど。
0422デフォルトの名無しさん
2008/12/19(金) 19:28:15[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8405.txt
[3]
[3.1] LINUX
[3.3 C
[4] 12月20日午後18時
[5]構造体を使ってください。ファイルを入力するときは fopenを使ってください。
その入力したファイルから値を得るときに fscanfを使ってください。
0423,,・´∀`・,,)っ-○◎●
2008/12/19(金) 19:37:22まあいいや、とりあえずバブルソートの関数でっちあげてみたからとりあえずこれで出してみなよ。
っていうか、代入回数って何を指してるんだ?
順序入替の回数のことだと脳内補完したけど
#include <stdio.h>
void bubble_sort(int x[], int n)
{
int i, j, t;
int numOfComp = 0;
int numOfSwap = 0;
for (i = n - 1; i >= 0; i--) {
for (j = 1; j <= i; j++) {
numOfCmp ++;
if (a[j-1] > x[j]) {
numOfSwap ++;
t = x[j-1];
x[j-1] = x[j];
x[j] = t;
}
}
}
printf("比較回数: %d\n", numOfCmp);
printf("代入回数: %d\n", numOfSwap);
}
バブルソート本体はこんな感じでいいんだろ?
別ファイルにしろって言ってるように見えるが。
0424デフォルトの名無しさん
2008/12/19(金) 19:48:04そのようなエラーはないです。
C:\c>bcc32 btime.c bubble.c sfmt.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
btime.c:
bubble.c:
SFMT.c:
警告 W8027 SFMT.c 255: forを含む関数はインライン展開できない
警告 W8027 SFMT.c 280: forを含む関数はインライン展開できない
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
>>419
問題にはSFMT指定されていますが、違う物を使って問題ないと思います。
課題は、バブル・選択・挿入ソートで、データ数が5000・10000・15000・20000の時の
実行時間、比較回数、代入回数を表にして、それに関しての説明などです。
>>421
アドレスを教えるのはちょっと・・・
0425,,・´∀`・,,)っ-○◎●
2008/12/19(金) 19:58:15SSE2使用のdefineしなきゃbccでもコンパイルできるんだな。
逆に俺のほうが教えられたよ。っていうか斉藤君にも教えておくか。
で、btime.cがmainで、課題で作るのはbubble.cの中身だけだろ。
確認してみて。
0426デフォルトの名無しさん
2008/12/19(金) 19:59:50だんごのAAって
´∀` に、ほっぺたの・なのか
・∀・ にしかめ眉をつけたのか
それが気になって仕方ないんだけど
0427デフォルトの名無しさん
2008/12/19(金) 20:04:25いわゆる構ってちゃんって奴。うざすぎ。自作板では嫌われ者だぞ。
0428,,・´∀`・,,)っ-○◎●
2008/12/19(金) 20:06:29たまに松本研究室から俺宛にメールくるけどいつも斉藤君だよ。
松本教授と話したことが無い。忙しいだけなのか足元みられてるのかは知らんが。
というか、SFMT自体、彼の修士論文のネタだし。
0429デフォルトの名無しさん
2008/12/19(金) 20:06:31bubble.c insert.c select.cは教科書に載っている物を使用です。
先ほどアップした物も、教科書に載っている物です。
実行用のデータは授業の配付資料に書いてあるもので、SFMT用に手を加えてアップしてみました。
アップしたデータの時点で、時間測定は出来るので、これに比較回数と交換回数(代入回数と書いてある場所もあり)
をカウント出来る物に改良する。
データ数が5000・10000・15000・20000の時の時間と回数を出し、コレを元に
1,バブルソートと選択ソートの実行時間が異なる理由を簡潔に説明
2,上記を図表を用いて具体的に説明
というのが課題です。
0430デフォルトの名無しさん
2008/12/19(金) 20:12:380431,,・´∀`・,,)っ-○◎●
2008/12/19(金) 20:14:340432デフォルトの名無しさん
2008/12/19(金) 20:15:430433デフォルトの名無しさん
2008/12/19(金) 20:18:48そっかあ。ずいぶんgeekっぽい教授に思えたからせっせとがんばってるのかと思った。
0434デフォルトの名無しさん
2008/12/19(金) 20:21:59今このスレを見てる限りあなたの方がうざいんですけど。。。
0435デフォルトの名無しさん
2008/12/19(金) 20:22:090436デフォルトの名無しさん
2008/12/19(金) 20:23:19自作自演かよ、基地外w
お前の方がうぜぇよ。スレタイ読めよ、何馴れ合い、個人的な雑談を始めてんだよ?
とっとと宿題に答えるなり、無関係な話なら他所でやれや、日本語もろくに読めないガキ。
0437デフォルトの名無しさん
2008/12/19(金) 20:25:310438,,・´∀`・,,)っ-○◎●
2008/12/19(金) 20:25:44>>423でなにか問題あるかな?
0439デフォルトの名無しさん
2008/12/19(金) 20:27:30団子も、自分が解ける課題には食いつくくせに、馬鹿だの死ぬだの言っておきながら
答える気も無く、あっ、それ知ってる程度のことを言いたいだけだろ。
バブルソートなんて、効率が悪いのは分かりきっているし、その程度の課題も
自力で解けない奴が、のうのうと単位だけ貰って卒業って、どんだけレベルの低い学校だよ?
学校名を名乗れ。就職内定の逆ブラックリストにしてやんよ?
0440デフォルトの名無しさん
2008/12/19(金) 20:31:41無能は去れ
0441434
2008/12/19(金) 20:36:08おお、出題者が自演してると思われたのか。
だんごの自演とどっちなのか悩んでたw
そんな見る目ない人が人事権持ってる会社ってどこ?
パートナー企業に選ばないようにするから教えてくれw
0442デフォルトの名無しさん
2008/12/19(金) 20:37:28\ 丶 i. | / ./ /
\ ヽ i. .| / / /
\ ヽ i | / / /
\
-‐
ー
__ わ た し で す --
二 / ̄\ = 二
 ̄ | ^o^ |  ̄
-‐ \_/ ‐-
/
/ ヽ \
/ 丶 \
/ / / | i, 丶 \
/ / / | i, 丶 \
0443,,・´∀`・,,)っ-○◎●
2008/12/19(金) 20:39:34安定型だからデータ構造やサイズによってはむしろ有用なのに。
その程度で採否基準きめるなんて随分レベルの低い会社だな。企業名名乗れよ。ブラック企業リストにしてやんよ。
0444デフォルトの名無しさん
2008/12/19(金) 20:45:08そういうあなたもねw
よくミスってる人だよね?あ、まちがえた。あ、またまちがえた。っていう。
今がんばってどれかの課題のコード書いてるんでしょ?
次はミスしないでね。
でも、「俺は回答者さまだぞー!」って雰囲気はすごいステキ。がんばってね。
>>443
確かに破壊型は時々残念な結果を生むね
0445デフォルトの名無しさん
2008/12/19(金) 21:09:180446デフォルトの名無しさん
2008/12/19(金) 21:11:31実行してみたのですが・・・・
C:\c>bcc32 btime.c bsort.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
btime.c:
bsort.c:
エラー E2451 bsort.c 10: 未定義のシンボル numOfCmp(関数 bubble_sort )
エラー E2451 bsort.c 11: 未定義のシンボル a(関数 bubble_sort )
警告 W8004 bsort.c 21: 'numOfComp' に代入した値は使われていない(関数 bubble_sort
)
*** 2 errors in Compile ***
>>439
残念ながら>>434 = >>403ではありません。。。
0447,,・´∀`・,,)っ-○◎●
2008/12/19(金) 21:13:49あれ内部アルゴリズムはバブルソートかなんかだと思うよ。
少なくとも、nの2乗のオーダーの何かっぽい。
1万超えるとアホみたいに遅くなる。
大量にデータ扱う場合は遅くてしょうがないからオーナーデータで処理するけど(描画もオーナードロー)
クイックソートとかにしちゃうとまたおかしなことになるからね。
昔std::sortを安易につかっちゃって大目玉食らったことがある。結局stable_sortで落ち着いたけど。
>>445
リンケージリストならそうするだろうな。配列ではまずありえねぇ。
0448デフォルトの名無しさん
2008/12/19(金) 21:14:28そのぐらいエラー見て直せないの?
0449,,・´∀`・,,)っ-○◎●
2008/12/19(金) 21:16:47変数名あわせるのミスってたわ。修正してみた。
まあその辺も自分で直せる事も必要な能力だけど。
void bubble_sort(int x[], int n)
{
int i, j, t;
int numOfCmp = 0;
int numOfSwap = 0;
for (i = n - 1; i >= 0; i--) {
for (j = 1; j <= i; j++) {
numOfCmp ++;
if (x[j-1] > x[j]) {
numOfSwap ++;
t = x[j-1];
x[j-1] = x[j];
x[j] = t;
}
}
}
printf("比較回数: %d\n", numOfCmp);
printf("代入回数: %d\n", numOfSwap);
}
0450デフォルトの名無しさん
2008/12/19(金) 21:21:07挿入ソートをなんか勘違いしてるだろ
別に配列でも使えるぞ
0451デフォルトの名無しさん
2008/12/19(金) 21:26:03これの選択ソート、挿入ソート版もお願いできないでしょうか?
よく課題を見返すと、クイックソートとマージソートについても同じ事をやならいといけないみたいです。
0452,,・´∀`・,,)っ-○◎●
2008/12/19(金) 21:29:50使えるが、配列の途中にデータを挿入すると、後ろの要素を1個ずつ移動しないといけないよね?
ソートの対象をポインタ配列にしてなおかつリングバッファとして使うとそれなりに速くはなるが。
0453デフォルトの名無しさん
2008/12/19(金) 21:32:54いやなに当たり前なこといってんだよ
0454デフォルトの名無しさん
2008/12/19(金) 21:34:000455,,・´∀`・,,)っ-○◎●
2008/12/19(金) 21:44:31もう・・・ここでも見なさい
http://www1.cts.ne.jp/~clab/Contents/Sortindex.html
Google先生を使う能力も現場(笑)では結構重要だったりします。
>>454
それはそれでSIMD命令の使いどころではあるので俺的にはそんなに嫌いでもない。
1要素4バイト程度なら4要素同時に操作できるし
0456デフォルトの名無しさん
2008/12/19(金) 22:01:54この>>385の問題分かる方お願いします。
0457デフォルトの名無しさん
2008/12/19(金) 22:08:00どこに問題がありますか?
#include <stdio.h>
void select_sort (int x[] , int n )
{
int i , j, tmp , low_index , low_data ;
int hikaku = 0, koukan = 0;
for (i = 0 ; i < n-1 ; i++ ) {
low_data =x[i] ;
low_index = i ;
for(j = i + 1 ; j < n ; j++){
hikaku++;
if(low_data > x[j]){
low_data = x[j];
low_index = j;
}
}
tmp = x[i];
koukan++;
x[i] = x[low_index];
x[low_index] =tmp;
printf("比較回数: %d\n", hikaku);
printf("代入回数: %d\n", koukan);
}
}
0458,,・´∀`・,,)っ-○◎●
2008/12/19(金) 22:23:21/* ファイルを読込、表示させる */
while( fgets(n, 100, fp) != NULL ){ /* ファイルから1行読み込むのをNULLまで繰り返す */
printf("%s",n);
}
ここで読み込むようにすればいいわけ?
sscanfって、使ったことある?
Data newNode;
として
sscanf(n, "番号:%d 氏名:%s なまえ:%s \n", &(newNode.no), newNode.name, newNode.namae);
InsertRear(list, newNode);
でいいんじゃないの?
番号 氏名 なまえ
なんて文字列をデータに保存するのかって疑問もあるが
0459403
2008/12/19(金) 23:13:46どうしても警告が消えません
警告 W8027 SFMT.c 255: forを含む関数はインライン展開できない
警告 W8027 SFMT.c 280: forを含む関数はインライン展開できない
0460デフォルトの名無しさん
2008/12/19(金) 23:15:43それ警告じゃねーの?
0461デフォルトの名無しさん
2008/12/19(金) 23:16:230462デフォルトの名無しさん
2008/12/19(金) 23:23:130463デフォルトの名無しさん
2008/12/19(金) 23:26:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8406.c
0464,,・´∀`・,,)っ-○◎●
2008/12/19(金) 23:27:25bccには何か拘りある?どっちにしろ現状あまり薦められないが。
0465デフォルトの名無しさん
2008/12/19(金) 23:33:33学校のXPマシンでもこの警告は出ていたのですが、実行してみなかったので
XPだったらどうなったのか。。。
0466デフォルトの名無しさん
2008/12/19(金) 23:36:44必要な検証データを記録したら?別に、乱数発生については、
コードの提出はせず、結果を出して報告すれば良いんでしょ?
安定型は比較回数は要素の数で分かるし。ただ、記述を間違えると
交換回数に差が出るよ。
基本選択法だが、 >>457 と >>463 のように。
0467デフォルトの名無しさん
2008/12/19(金) 23:40:21> よくミスってる人だよね?あ、まちがえた。あ、またまちがえた。っていう
誰かと勘違いしてね?それは答えている人だろ?妄想しすぎで、あんたがキモイよ。
>>440
口先だけのお前が黙ってろ
0468デフォルトの名無しさん
2008/12/19(金) 23:40:590469デフォルトの名無しさん
2008/12/19(金) 23:47:44ちょ、回答者じゃないのかよw
0470デフォルトの名無しさん
2008/12/19(金) 23:52:29いや、>>1が読めない人?自分紹介の雑談スレじゃないんだよ、ここ。
ましてや、団子と話がしたいなら、団子が運営しているサイトにでも行ってくれ。
第三者からして見たら、そんな雑談こそ邪魔。
0471デフォルトの名無しさん
2008/12/19(金) 23:56:27回答されないからって文句たれんな
0472>>385>>456
2008/12/20(土) 00:01:26さっそくありがとうございます。
sscanf()は使った事がないので少し調べ、アドバイスを参考に改良してみたのですが、
エラーが出てしまい解決が出来ませんでした。エラー内容は、
エラー E2356 untitled.c 278: 'InsertRear' の再宣言で型が一致していない
たびたび申し訳ないのですが、どこが間違っているのでしょうか
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8407.txt
0473デフォルトの名無しさん
2008/12/20(土) 00:08:59しかし実際はvoidなのでエラーになったと。
InsertRearのプロトタイプ宣言をするか、
関数本体をもっと上に移動しなさい。
0474デフォルトの名無しさん
2008/12/20(土) 00:30:45[2] 問題文(含コード&リンク):
標準入力から整数n,d [dは非0]を入力し、
商n/dを小数の形式で標準出力へ出力してください。
商は丸めることなく表示してください。
循環小数の場合は、小数部の循環する部分を括弧で囲みます。
例:13/8=1.625
100/7=14.{285714}
123/(-99900)=-0.00{123}
[3] 環境
[3.1] OS:問いません
[3.2] コンパイラ名とバージョン:問いません
[3.3] 言語:C/C++のどちらでも可です
[4] 期限:2008/12/21 24:00
[5] その他の制限:特にありません
0475デフォルトの名無しさん
2008/12/20(土) 00:32:27ここってどうやって判定するん?
プロ教えて?
0476>>385>>456
2008/12/20(土) 00:43:23動作しました!ありがとうございます。
動作はしたのですが、なまえの出力がなぜか@になってしまいました。
理由が分かりません、これで最後にしますので訂正をお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8408.txt
0477デフォルトの名無しさん
2008/12/20(土) 00:56:18動かしてないから当たってるかどうかはしらんけど。
0478デフォルトの名無しさん
2008/12/20(土) 01:03:22#include<map>
#include<vector>
#include<iostream>
int main(void){
int n, d, amari;
std::map<int, int> amari_map;
std::vector<int> result;
std::cout << "input n d :";
std::cin >> n >> d;
if(d==0) return 1;
std::cout << n/d << ".";
if(n<0) n=-n;
if(d<0) d=-d;
for(int i=0;(amari=n%d);++i){
if(amari_map.find(amari)!=amari_map.end()) break;
n=amari*10;
amari_map[amari]=i;
result.push_back(n/d);
}
if(amari){
int j=amari_map.find(amari)->second;
for(int i=0;i<j;i++) std::cout << result[i];
std::cout << "{";
for(int i=j;i<result.size();i++) std::cout << result[i];
std::cout << "}";
}else{
for(int i=0;i<result.size();i++) std::cout << result[i];
}
return 0;
}
0479>>385>>456
2008/12/20(土) 01:04:00\nを削除して実行してみましたが、実行結果は変わりませんでした。
けど、確かに\nは不要かもしれません。
0480デフォルトの名無しさん
2008/12/20(土) 01:04:390481デフォルトの名無しさん
2008/12/20(土) 01:09:23::
0482478
2008/12/20(土) 01:10:31#include<map>
#include<vector>
#include<iostream>
int main(void){
int n, d, amari;
std::map<int, int> amari_map;
std::vector<int> result;
std::cout << "input n d :";
std::cin >> n >> d;
if(d==0) return 1;
if(d<0) n=-n, d=-d;
if(n<0) std::cout << "-", n=-n;
std::cout << n/d << ".";
for(int i=0;(amari=n%d);++i){
if(amari_map.find(amari)!=amari_map.end()) break;
n=amari*10;
amari_map[amari]=i;
result.push_back(n/d);
}
if(amari){
int j=amari_map.find(amari)->second;
for(int i=0;i<j;i++) std::cout << result[i];
std::cout << "{";
for(int i=j;i<result.size();i++) std::cout << result[i];
std::cout << "}";
}else{
for(int i=0;i<result.size();i++) std::cout << result[i];
}
return 0;
}
0483,,・´∀`・,,)っ-○◎●
2008/12/20(土) 01:10:53%sの後ろのスペース削ってみ?
0484デフォルトの名無しさん
2008/12/20(土) 01:16:26C++はよくわかんねえ。
アルゴリズムを川柳で説明してみて。
0485デフォルトの名無しさん
2008/12/20(土) 01:18:24なんとなく
解いてみたなら
それっぽい
0486>>385>>456
2008/12/20(土) 01:19:49実行してみましたが、出力結果は変わりませんでした。
sscanf()のある行を、
/* ファイルを読込、表示させる */
while ( fgets(n, 100, fp) != NULL) {
sscanf( n, "番号:%d 氏名:%s なまえ:%s \n", &(newNode.no), newNode.name, newNode.namae);
InsertRear( list, newNode );
}
fclose(fp); /*ファイルクローズ*/
変更パターン1
sscanf( n, "番号:%d 氏名:%s なまえ:%s\n", &(newNode.no), newNode.name, newNode.namae);
変更パターン2
sscanf( n, "番号:%d 氏名:%s なまえ:%s", &(newNode.no), newNode.name, newNode.namae);
変更パターン3
sscanf( n, "番号:%d 氏名:%s なまえ:%s ", &(newNode.no), newNode.name, newNode.namae);
0487デフォルトの名無しさん
2008/12/20(土) 01:19:57これをCでやるとどうなるの?
0488デフォルトの名無しさん
2008/12/20(土) 01:22:36実行したところ214が上手く作動しないんですが。
0489デフォルトの名無しさん
2008/12/20(土) 01:24:38それ俳句な!
0490デフォルトの名無しさん
2008/12/20(土) 01:28:29他にもソートのソースは出ているから、それを流用しちゃって。
配列のポインタと、要素数を与えてやれば良いだけだし。
0491デフォルトの名無しさん
2008/12/20(土) 01:29:25data.txtのなまえのコロンが全角になってるのが問題ではなかろうか
0492デフォルトの名無しさん
2008/12/20(土) 01:30:31481無視かよ
いいから、黙ってコロンを全部半角にしろ(データファイルも)
>>489
季語無いから川柳だろ
0493>>385>>456
2008/12/20(土) 01:32:56すぐに試してみます
0494デフォルトの名無しさん
2008/12/20(土) 01:36:33なんだと……
0495>>385>>456
2008/12/20(土) 01:37:22確認してきましたが、全て半角になっていました。
0496デフォルトの名無しさん
2008/12/20(土) 01:59:14>>376
do while にすると大体は正しく動くと思うのだが
"hoge" と "hogera" とかはよろしくない気がする。順序逆でも。
もし修正済みだったらごめん
0497デフォルトの名無しさん
2008/12/20(土) 01:59:14わがスレと思ふ
宿題の
欠けたることも
なしと思へば
0498デフォルトの名無しさん
2008/12/20(土) 02:02:05ん〜、最初を hoge にして 2番目を hogera で比較したが、
strcmpも自作の比較関数も、両方ともマイナスで返ってきたよ。
あと、両方とも空の場合、文字列と言うべきかは別として、
2つとも同じ文字列だと解釈しても成立。
0499デフォルトの名無しさん
2008/12/20(土) 02:15:57今ちゃんとコード読んだんだけど、fgets使ってるから
"hoge\n"と"hogera\n"を比較してることになるんじゃないのかな?
まあ課題だし、問題ないのかもしれないけど
0500デフォルトの名無しさん
2008/12/20(土) 02:18:59そうだけど、それでもstrcmpと比較しても、値はともかく正負、0は一致したよ。
もし改行コードを抜いて空文字にしても、長い方が辞書順では大きい値として
処理されて返ってくるから、問題はなし。while文が完了するのは
一致した時だし。ただ、一方に改行コード、もう一方を改行コード無しで
同じ文字だと認識しても、それはそれで改行コードの違いを
関数は判定するわけだから、改行コードの方が長いと解釈して問題なし。
strcmpでも同じ結果になるよ。
0501デフォルトの名無しさん
2008/12/20(土) 02:20:22一方に改行コード、もう一方を改行コード無しで、それより前の
印字可能な文字が同じだった場合
0502496
2008/12/20(土) 02:43:56do-whileってこういう修正?
俺がこれを勘違いしてるんだったらすまん
do{
if(*s1 != *s2) {
if(*s1-*s2>0) return 1;
else return -1;
}
else { s1++; s2++; }
}while( *s1 && *s2);
0503デフォルトの名無しさん
2008/12/20(土) 02:52:24それが真実なら、>>476のをうpするときにわざわざ全角に変えたということになるが?
俺にはdata.txtに全角コロンがあるように見えるし、ソースにも全角コロンが8文字ほど含まれているように見える
念のため言っておくと、全部ってのは文字通りソースとデータファイルに含まれるコロン全部だよ
一部(sscanfの箇所)だけみて全部半角だなんて言っていることは想像に難くないが
0504デフォルトの名無しさん
2008/12/20(土) 02:55:44自分で書いたら?
0505デフォルトの名無しさん
2008/12/20(土) 02:59:31われながら、なにがなんやらだけど
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8409.zip
0506デフォルトの名無しさん
2008/12/20(土) 03:06:14#include <stdio.h>
int my_strcmp(const char *s1, const char *s2) {
while( *s1 && *s2 ) {
if(*s1!=*s2) break;
s1++; s2++;
}
if(*s1-*s2>0) return 1;
else if(*s1-*s2<0) return -1;
return 0;
}
#define MAX 100
int main(void)
{
char s1[MAX],s2[MAX],value;
printf("Input string 1 > "); fgets(s1,MAX,stdin);
printf("Input string 2 > "); fgets(s2,MAX,stdin);
value=my_strcmp(s1,s2);
printf("value:%d\n",value);
if(value==0) printf("一致\n");
else printf("不一致\n");
return 0;
}
050787
2008/12/20(土) 05:51:26[2] 問題文(含コード&リンク):
斜面を落下する球体の瞬間速度を求めるプログラムを作りなさい。
球体の重量、斜面の傾斜角[θ]、測定位置[cm](落下位置からの距離)を自由に設定可能なものとし
測定位置における、瞬間速度を算出するプログラムを作りなさい。空気抵抗、斜面とボール間の摩擦、は考慮に入れなくてもよい。
なお、必要な行には説明も入れること。
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語:/C
[4] 期限: 2009/1/7
[5] その他の制限: なし
科目がちょっと違う気もしますが、どなたかお願いします…
0508デフォルトの名無しさん
2008/12/20(土) 06:32:20#include <stdio.h>
#include <math.h>
/* 重力加速度 */
#define G 9.8
int main(void) {
/* 傾斜角[ラジアン] */
double r = 0.5233;
/* 距離[cm] */
double x = 10.0;
printf("速度[m/s] = %d\n", (2 * G * sin(r) * x / 100) ** 0.5);
return 0;
}
こんな簡単な計算式をわざわざプログラミングする意味がわからん。
0509デフォルトの名無しさん
2008/12/20(土) 09:26:40[2] 問題文(含コード&リンク):
入力された数を16進数で表示するプログラムを作れ。
但し、文字(数字やアルファベット)を表示するのに関数putchar()を使うこと(scanfは禁止)。
(例)hexという名前のプログラムを作り、217を入力した場合以下のようになる。
Q:hello>hex
Input?217
Kotae = D9
Q:hello>
(注意この例でInput?やKotaeの部分を入力したものではなく、
プログラムが表示した部分である。これらはできるだけわかりやすいものにすることが望ましい。)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc -O
[3.3] 言語: C言語
[4] 期限: 12月25日
[5] その他の制限:特になし
0510デフォルトの名無しさん
2008/12/20(土) 09:38:11[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8410.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual stadio
[3.3] 言語: C
[4] 期限: 2008 12 23まで
[5] その他の制限:問題文に沿って足らないところを足してください
お願いします
0511デフォルトの名無しさん
2008/12/20(土) 10:29:12Input?ときてKotae=というのはどうかと思うがやってみた。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i;
int number;
char hex_table[] = "0123456789ABCDEF";
char temp_str[256];
printf("Input? ");
fgets(temp_str, 256, stdin);
number = atoi(temp_str);
for (i=28; i>=0; i-=4)
if ((number>>i)&15)
break;
printf("Kotae = ");
for (; i>=0; i-=4)
putchar(hex_table[(number>>i)&15]);
printf("\n");
return 0;
}
0512デフォルトの名無しさん
2008/12/20(土) 10:43:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8411.txt
雛側使わなかったらもっと効率良くなるんだけどね
0513デフォルトの名無しさん
2008/12/20(土) 11:47:450514デフォルトの名無しさん
2008/12/20(土) 12:05:11[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8412.txt
[3] 環境
[3.1] OS:cygwin
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2009年1月8日
[5] その他の制限: アルファベットの頻度を集計する関数の部分をやっていただきたいのですが
他にも足らない部分があったら補足をお願いします。
0515デフォルトの名無しさん
2008/12/20(土) 12:18:50{
if(isalpha(*p)!= 0)
{
Hind[*p - 'A']++;
}
}
0516デフォルトの名無しさん
2008/12/20(土) 12:32:53*p++はp++だけでいいよ
0517デフォルトの名無しさん
2008/12/20(土) 12:35:11すまん、チェックせずそのままコピってた
0518デフォルトの名無しさん
2008/12/20(土) 13:16:55ループの回数だね
>>512は26回ファイルを読み込んでるけど、それは関数の仕様が1文字ずつしか数えられないから
実際にはファイルの読み込みは1回で済むよ
0519デフォルトの名無しさん
2008/12/20(土) 13:19:51freq 関数の中で
if(isalpha(*p)!= 0)
{
この行を挿入→ Hind[*p - 'A']++;
}
ていうか >>510 とほとんど同じ問題だなこれ
0520デフォルトの名無しさん
2008/12/20(土) 14:01:57構造体に氏名、会員番号が入るようにしてデータ登録、データ検索、データ削除を
行うプログラムを作っています
登録、検索、削除はそれぞれ関数を呼び出して行うようにしていますが、
検索を呼び出した時に、ちょっと問題があります
検索仕様は、探す会員番号を入力すると、その会員番号の人を構造体から探して
その人の氏名を出力させるのですが
どうも氏名が出てきません
長いかもしれませんが、ご教授お願いします
0521デフォルトの名無しさん
2008/12/20(土) 14:05:500522デフォルトの名無しさん
2008/12/20(土) 14:08:520523520
2008/12/20(土) 14:16:34[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8413.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
[3.3] 言語: C
[4] 期限: 2009年1月16日
[5] その他の制限: 基本的な物は一通り終えています。
制限は特にありません。
0524デフォルトの名無しさん
2008/12/20(土) 14:36:04先頭に<string.h>
char *name; → char name[36];
hashtable[i].name = name; → strcpy(hashtable[i].name, name);
実行チェックはしていない
0525520
2008/12/20(土) 14:47:27ありがとうございます。
無事表示されました。
やっぱり登録のやり方がまずかったみたいですね
登録の関数からreturnすると、氏名が消えてたみたいです
0526デフォルトの名無しさん
2008/12/20(土) 15:05:56変数のスコープとか
ポインタの基本、文字列の扱いについてとか
ぐぐって調べるといいかもね。
これ以上はスレ違いだから初心者スレとか別の場所で頑張って
0527デフォルトの名無しさん
2008/12/20(土) 15:15:17幾らなんでも、変数名にハインドはありえなさすぎw
一瞬何事かと思ったよ
0528デフォルトの名無しさん
2008/12/20(土) 16:32:00ありがとうございました
0529デフォルトの名無しさん
2008/12/20(土) 21:55:250530デフォルトの名無しさん
2008/12/21(日) 00:27:40オセロの”ベース”を作ってもらいたいです。
環境Mac
言語C++
期限12月21日
123456
1・・・・・・
2・・・・・・
3・・○●・・
4・・●○・・
5・・・・・・
6・・・・・・
↑こんな感じです。
「(3,2)などの座標を入力すれば○と●が交互に置かれて、挟まれたら裏返る」という、ベースの段階を作ってもらいたいです。
人vs人でプレーするものが良いです。上の図のように、座標を表す数字もお願いします。
後から自分で、○と●の数をカウントしたり、どっちが勝ったか表示されるように手を加えたいと思っています。
そのため、大学ではiostreamで書いているので私が後から理解できるようにiostreamを使って欲しいです。
注文が多く時間も少なくて申し訳ないですが、どうかよろしくお願いしますm(__)m
0531デフォルトの名無しさん
2008/12/21(日) 00:30:540532デフォルトの名無しさん
2008/12/21(日) 00:59:50はい><
本当によろしくお願いします。。。
0533デフォルトの名無しさん
2008/12/21(日) 01:38:370534,,・´∀`・,,)っ-3・・○●・・4・・●○・・
2008/12/21(日) 01:58:57もしくはジュンク堂
0535デフォルトの名無しさん
2008/12/21(日) 02:19:03[2] 問題文(含コード&リンク):
画像のヒストグラムを調べるプログラムの作成。
及び2値化画像を作成するプログラム。
[3] 環境
[3.1] OS:Windows (LINUXでも可)
[3.2] コンパイラ名とバージョン: bcc(linuxはgcc)
[3.3] 言語: C言語
[4] 期限: 2008年12月22日
お願いします。
0536デフォルトの名無しさん
2008/12/21(日) 02:41:320537デフォルトの名無しさん
2008/12/21(日) 02:44:13画像の形式もわからないし、2値化の閾値をどうするのかも示されていないのに無理
0538デフォルトの名無しさん
2008/12/21(日) 06:00:00#include<iostream>
char*h="・○● \n 12345678",*r="ABCKMUVW";int p,t,a,d,c,v,i,m[101],s;
void k(){for(i=!m[++p]*8;i--;){for(c=0,v=p;m[v+=r[i]-76]==3-t;)c++;if(c&&m[v]==
t){a+=c;v=p;if(d)while(m[v]=t,m[v+=r[i]-76]-t);}}}int main(){for(i=10,m[46]=m[
55]=t=2;i--;m[i*10]=3,m[i*10+1]=m[i+1]=4+i)m[45]=m[56]=s=1;for(;t=3-t;a=d=p=0){
for(;p<91;k())std::cout<<h[m[p]*2]<<h[m[p]*2+1];if(a)for(d=a=s=p=8;a==8;k())std
::cin>>p>>i,p+=i*10;else if(s)s=0,std::cout<<"pass";else break;}return 0;}
0539デフォルトの名無しさん
2008/12/21(日) 06:53:15キモイからレスしないでくれる?名前くらい変えろ、目立ちたがり屋
0540デフォルトの名無しさん
2008/12/21(日) 11:44:10[2] 問題文(含コード&リンク):半径1の4次元球の体積を求めよ。ただし疑似乱数の組数をK(独立した疑似乱数の組の数)から2Kに変化させたときの面積の計算値の相対変化が10^(-2)以下となった場合収束しているものとする。
得られた結果は解析的に計算した値とあっているか?
ちなみにn次元球の体積は、
nが偶数のとき:{(r^n)/n!!}*(2π)^(n/2)
nが奇数のとき:{(r^n)/n!!}*2*(2π)^((n-1)/2)
である。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:今年まで
[5] その他の制限:特になし
お願いします
0541デフォルトの名無しさん
2008/12/21(日) 13:41:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8414.zip
0542デフォルトの名無しさん
2008/12/21(日) 14:55:20間違えた。こっちな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8416.zip
自分自身の勉強がてら書いてみた。
0543デフォルトの名無しさん
2008/12/21(日) 17:34:31[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8417.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2008年12月22日
よろしくお願いします。
0544デフォルトの名無しさん
2008/12/21(日) 17:49:30[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8418.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++ 2800
[3.3] 言語: CをC++へ
[4] 期限: 2008/12/23の朝
[5] その他の制限: 前スレで頼んで作ってもらったんですが 先生に見せたら
「実行がドス画面じゃ寂しいのでC++にしてみようか」といわれました。。。
最初は自分でやろうとしたんですがC++をあまりやったことがないので時間が足りなくて・・・
それと追加で悪いのですが 木の状態ごとに色づけ(今は星マークになっています)と全て終わっときに
1、最初に戻る or 2、終わりにする の選択肢をお願いします。
頼んでばかりですみません><
0545デフォルトの名無しさん
2008/12/21(日) 18:04:14>「実行がドス画面じゃ寂しいのでC++にしてみようか」
意味不明
WindowsAPIやMFCを使えってことか?
0546デフォルトの名無しさん
2008/12/21(日) 18:08:48すみません。。。
おっしゃるとおりWindowsAPIかMFCで作れといわれました
0547デフォルトの名無しさん
2008/12/21(日) 18:09:570548デフォルトの名無しさん
2008/12/21(日) 18:11:37俺の勘違いでなければ、main関数の前にプロトタイプ宣言書いて
main内の呼び出しを2行くらい書き換えるだけだと思うのだが
0549デフォルトの名無しさん
2008/12/21(日) 18:16:17普通に、出来ませんでしたって答えれば良い話じゃね?
0550デフォルトの名無しさん
2008/12/21(日) 18:19:372800年にもVC++が出るのか・・・
0551デフォルトの名無しさん
2008/12/21(日) 18:19:44分かりきったことまで書かないとあなたは気がすまないんですか!
0552デフォルトの名無しさん
2008/12/21(日) 18:21:120553デフォルトの名無しさん
2008/12/21(日) 18:22:150554デフォルトの名無しさん
2008/12/21(日) 18:26:16[2] 問題文(含コード&リンク):
以下のtexファイルがあるとして、
\documentclass[10pt,a4paper]{jsarticle}
\begin{document}
\begin{verbatim}
-3.703516e-01 -2.062342e+00 1.141508e-01 3.205204e-02 3.591625e-02 2.718481e-02
\end{verbatim}
\begin{enumerate}
\item Composition:
\begin{eqnarray}
\hat{\mu}=\mu+g\tilde{\mu}\\
\end{eqnarray}
\end{enumerate}
\end{document}
texファイルはここまで。このファイルをverbatim内の数値だけを書き換えるプログラムを作りなさい
ほかの記述はまったくかえずに。つまり改行とかtabとかもまったくそのまま
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語:C
[4] 期限: 2009/12/22
[5] その他の制限: なし
これって可能なのかな?
0555デフォルトの名無しさん
2008/12/21(日) 18:28:06[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8415.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月22日AM9:00まで
[5]特にありません。
0556デフォルトの名無しさん
2008/12/21(日) 18:33:49冷静に考えれば、困ること無いじゃん
0557デフォルトの名無しさん
2008/12/21(日) 18:36:07問題の意味がよくわからんかったけど、興味深かったので作ってみた。
自分のために作ったようなものなので他の人の待ったほうがいいかも。
OSはXP、コンパイラはBCC Developer(?)、言語はC++でつくり、new演算子使ってるんでCでは動かない。
また、4次元だけじゃなくn次元について解析できるようにしてるのでその分複雑。
俺のプログラムは理解しづらいと評判なので理解するのに時間かかりそう。
(俺としてはけっこう綺麗に作ったつもりだが)
もしよかったら、必要に応じて改良して使ってくれ。一応解説もつけた。
ttp://gigabyteserver.com/uploader01/upload.php?counting=094&firen=winplus.jp094.zip
0558デフォルトの名無しさん
2008/12/21(日) 18:40:28int data[DATA_NUM] = {105,244,303,506,13,95,394,55,1,925}; /*探索対象データ*/
int sh, i;
printf("検索値:");
scanf("%d", sh);
for(i=0;i<DATA_NUM;i++){
if(sh==data[i]){
break;
}
}
if( i<DATA_NUM ) {
puts("見つかりました");
} else {
puts("見つかりませんでした");
}
0559デフォルトの名無しさん
2008/12/21(日) 18:42:09>>549
「できませんでした」って言うのも考えたんですが
これの単位を落とすと非常にまずいので不安材料は消しておきたいんです。
不安を抱えたまま新年ってのも嫌ですしね・・・
0560デフォルトの名無しさん
2008/12/21(日) 18:45:18WinAPIとか習ってるの?
現実に出来ないような物を急に「できました」って持って行って平気なの?
0561デフォルトの名無しさん
2008/12/21(日) 18:47:58[2] 問題文(含コード&リンク):最長5文字の文字列を2列入力する。
char型の配列にそれぞれ格納後、それらを比較、
文字列が同じだったら「equal」と表示し、違ったら「not」と表示するプログラムを作成せよ。
エラー仕様:6文字目以降の入力。→先頭から5文字を有効とし、6文字目以降は無視する。
例:
文字列1:abcde
文字列2:abcde
equal
例2:
文字列1:abcd
文字列2:1234
not
例3:
文字列1:12345
文字列2:12345abc
equal
といった感じにしていただきたいのです。
[3] 環境
[3.1] OS: WinXP
[3.2] Borland C++ Compiler 5.5
[3.3] 言語: C言語
[4] 期限: ([2008年12月22日06:00まで]
[5] インクルードファイルはstdio.hとstring.hのみでstring.hの方はstrcpyとstrlen、strcmp、fgetsまでしか習っていません。
何卒よろしくお願いします。
0562デフォルトの名無しさん
2008/12/21(日) 18:54:31>逆ギレ
テンプレになりすましに関しての注意書きがある。
これを守ってない以上はおまいの責任だろ
まあ普通は気にしなくてもあんまり問題起きないんだけどさ
0563デフォルトの名無しさん
2008/12/21(日) 18:57:12char str1[128], str2[128];
printf("文字列1");
scanf("%s",str1);
printf("文字列2");
scanf("%s",str2);
if(0 == strncmp(str1,str2,5)){
puts("equal");
} else {
puts("not");
}
動作確認はしていない。
もしstrncmp使っちゃいけなかったら、str1[5] = '\0'とかすればよいと思う。
0564デフォルトの名無しさん
2008/12/21(日) 18:59:40一応授業のほうでやったんですけど 授業なら教科書通りにやればいいんですが
自作(作ってもらったものですが)を変換するとなるとやり方が難しくて・・・
全ての時間をそれに費やせばできるかもなんですが 他の授業もあってそこまで時間が取れなくて・・・
0565デフォルトの名無しさん
2008/12/21(日) 19:02:35#include <stdio.h>
int main(void)
{
char str1[100], str2[100];
int i;
fgets(str1, 100, stdin);
fgets(str2, 100, stdin);
for (i = 0; i < 5; i++) {
if (str1[i] != str2[i]) break;
}
printf("str1 = %sstr2 = %s", str1, str2);
printf((i == 5) ? "equal\n" : "not\n");
return 0;
}
0566デフォルトの名無しさん
2008/12/21(日) 19:03:28要件も理解していないようでは、時間があっても無理なんじゃね?
0567デフォルトの名無しさん
2008/12/21(日) 19:04:43[2] 問題文:下記に記載
[3] 環境
[3.1] OS: windows xp
[3.2]c++ builder5
[3.3] 言語:c++ builder
[5] その他の制限:なし
0に対応するmemo1の値は正常値で1に対応する値はエラー値として考え
memo1とmemo2を見比べてエラー値のあった部分はその前後の0(正常値)から
線形補間していきmemo3のように線形補間された配列を書き出すプログラムを作りたいのですが
どのように書いていけばよいのでしょうか?
お手数ですがよろしくお願いします。
0568デフォルトの名無しさん
2008/12/21(日) 19:05:03出来た分を持って行って妙なダメだしが出るくらいだから、単位はムリじゃないのか?
「可」ぐらいで通るのかも知れないけど・・・
0569デフォルトの名無しさん
2008/12/21(日) 19:05:565.6 0 5.6
6.1 0 6.1
6.1 0 6.1
7.2 ← 0 7.2
10 1 7.26
9.0 1 7.32
10 1 7.38
4.0 1 7.44
7.5 ← 0 7.5
5.9 0 5.9
5.4 0 5.4
5.5 0 5.5
5.4 ← 0 5.4
10 1 5.35
10 1 5.3
4.5 1 5.25
5.2 ← 0 5.2
6.1 0 6.2
・ ・ ・
・ ・ ・
0570デフォルトの名無しさん
2008/12/21(日) 19:05:58561ですが、strncmp使ってない場合、どこをstr1[5] = '\0'等に書き換えればよいですか。
教えていただけるとありがたいです。
0571デフォルトの名無しさん
2008/12/21(日) 19:09:43char str1[128], str2[128];
printf("文字列1:");
scanf("%s",str1);
printf("文字列2:");
scanf("%s",str2);
str1[5] = '\0';
str2[5] = '\0';
if(0 == strcmp(str1,str2)){
puts("equal");
} else {
puts("not");
}
0573デフォルトの名無しさん
2008/12/21(日) 19:45:55お前が犯人か、陰湿な基地外だな。
0574デフォルトの名無しさん
2008/12/21(日) 19:47:20[2] 問題文(含コード&リンク):最大8桁の整数を入力させ、それぞれをint型に格納する。
入力後、3数値の和を求め出力するプログラムを作成しなさい。
(エラー仕様:9文字以上の入力→先頭から8文字までを有効とし、9文字目以降を無視。
負の数、整数以外を入力:「Error!!数字文字以外の入力」と表示して終了。
改行のみの入力:「Error!!改行のみの入力」と表示して終了。
以下は仮プログラムになります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8419.txt
このプログラムの3数値の和を算出する部分を
インクルードファイルmath.hを使わない形に書き換えてもらいたいのです。
[3] 環境
[3.1] OS: WinXP SP2
[3.2] Borland C++ Compiler 5.5
[3.3] 言語: C言語
[4] 期限: ([2008年12月22日06:00まで]
[5] インクルードファイルはstdio.hとstring.hのみで
string.hの方はstrcpyとstrlen、strcmp、fgetsまでしか習っていません。
よろしくお願いします。
0575デフォルトの名無しさん
2008/12/21(日) 19:52:02別に「単位は無理じゃないか?」とか「時間があっても無理だろ?」
とかの意見は求めていませんので。
やってくださる方がいたらお願いします というお話です。
以後関係のない発言はスルーさせてもらいます。
0576デフォルトの名無しさん
2008/12/21(日) 19:56:330577デフォルトの名無しさん
2008/12/21(日) 20:00:22forのループを逆(デクリメント)にして、ループごとに10かけていけばいいと思うよ
0578デフォルトの名無しさん
2008/12/21(日) 20:00:55サンプルプログラムで、2箇所ある
value[i]+=(temp[j]-'0')*(int)pow(10,strlen(temp)-(j+1));//3数値の加算
を
value[i] *= 10;
value[i] += (temp[j]-'0');//数値の加算
に変更する。
0579デフォルトの名無しさん
2008/12/21(日) 20:10:36ぶっちゃけ、要件も示されていないと、誰もどうしようもないけどな
0580デフォルトの名無しさん
2008/12/21(日) 20:11:42. ハ,,ハ ミ _ ドスッ
. ( ゚ω゚ )彡―─┴┴─―
* * * \ / つ お断りし / ハ,,ハ
* * \ 〜′ /´ └―─┬/ ( ゚ω゚ ) お断りします
* ハ,,ハ * \ ∪ ∪ / / \
* ( ゚ω゚ ) * .\ / ((⊂ ) ノ\つ))
* お断りします * . \∧∧∧∧/ (_⌒ヽ
* * < お > ヽ ヘ }
* * * < の し 断 > ε≡Ξ ノノ `J
────────────< 予 ま わ >────────────
. オコトワリ < 感 す り >
ハ,,ハ ハ,,ハ .ハ,,ハ <. !! > ハ,,ハ
. .( ゚ω゚ ) . ( ゚ω゚ ) ( ゚ω゚ ) /∨∨∨∨\ ( ゚ω゚ )<お断り .ハ,,ハ
│ │ │ / .\ します>( ゚ω゚ )
,(\│/)(\│/)(\│ /. \
/ ♪お断りします♪ \
/ ハ,,ハ ハ,,ハ .ハ,,ハ ハ,,ハ\
. ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ )
0581デフォルトの名無しさん
2008/12/21(日) 20:24:3510かける処理はどこに入れればいいのでしょうか。
>>588
やってみたんですが、
123456789
123456789
123
と入力したら
9 + 9 + 123 = 141
となってしまったのですが。
0582デフォルトの名無しさん
2008/12/21(日) 20:29:28なんで%uでscanfして一気に足さないで複雑な処理をしてるの?
0583デフォルトの名無しさん
2008/12/21(日) 20:34:51掛ける10と足す逆じゃね?
0584デフォルトの名無しさん
2008/12/21(日) 20:36:480585デフォルトの名無しさん
2008/12/21(日) 20:37:38横からですまんが
それやると、最終的に10倍されて出てくる気がする
0586デフォルトの名無しさん
2008/12/21(日) 20:39:01template<class T> double median(T hw){
int size=sizeof(hw)/sizeof(hw[0]);
if(size==0){
throw domain_error("hwの中身がない");
}
sort(&hw[0],&hw[size-1],my_compare2);
int mid = size/2;
return size%2==0 ? (hw[mid]+hw[mid-1])/2 : hw[mid];
}
のようにtemplateを利用していますがsizeofで配列の要素の数は求められるのですが
vectorの要素の数が求められなくて困っています。
両方の要素数をもとめる方法を教えてください。
0587デフォルトの名無しさん
2008/12/21(日) 20:42:04【初心者歓迎】C/C++室 Ver.62【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1229095398/
0588デフォルトの名無しさん
2008/12/21(日) 20:44:31本当に配列の方がうまくいったの?w
特殊化すればいいんじゃね
0589デフォルトの名無しさん
2008/12/21(日) 20:53:18説明が遅れてもうしわけないのですが、宿題が出された講義ではtemplateあたりやっていたのでおそらくtemplateは使うものとするみたいです
0590デフォルトの名無しさん
2008/12/21(日) 20:57:14死ね
0591デフォルトの名無しさん
2008/12/21(日) 21:02:25[1] 授業単元: CをC++へ
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8418.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++ 2008
[3.3] 言語: C++
[4] 期限: 2008/12/23の朝
[5] その他の制限: 上記のものをWinAPIかMFCでお願いします。
追加で悪いのですが 木の状態ごとに色づけ(今は星マークになっています)と全て終わっときに
1、最初に戻る or 2、終わりにする の選択肢をお願いします。
なにか必要事項で足りないことがあれば質問してください。
よろしくお願いします。
0593デフォルトの名無しさん
2008/12/21(日) 22:04:30[2] 問題文(含コード&リンク):半径1の4次元球の体積を求めよ。ただし疑似乱数の組数をK(独立した疑似乱数の組の数)から2Kに変化させたときの面積の計算値の相対変化が10^(-2)以下となった場合収束しているものとする。
得られた結果は解析的に計算した値とあっているか?
ちなみにn次元球の体積は、
nが偶数のとき:{(r^n)/n!!}*(2π)^(n/2)
nが奇数のとき:{(r^n)/n!!}*2*(2π)^((n-1)/2)
である。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:今年まで
[5] その他の制限:特になし
お願いします
0594デフォルトの名無しさん
2008/12/21(日) 22:11:08>>557
0595デフォルトの名無しさん
2008/12/21(日) 22:35:59できるけど \input 使えばいいじゃん
間違いないぜ
0596デフォルトの名無しさん
2008/12/22(月) 00:36:54[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8421.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C++
[4] 期限: 12月22日24時まで
[5] その他の制限: 余裕があればコメントなんかつけてくれるとありがたいです
よろしくおねがいします。
0597デフォルトの名無しさん
2008/12/22(月) 00:50:09[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8422.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月22日AM8:00まで
[5]特になし
0598デフォルトの名無しさん
2008/12/22(月) 01:02:32"translation server error"
0599デフォルトの名無しさん
2008/12/22(月) 01:04:02訳は自力でいいんだよね?
0600デフォルトの名無しさん
2008/12/22(月) 02:13:15はい、訳は自力でなんとかしますので。
0601デフォルトの名無しさん
2008/12/22(月) 03:49:05当方の環境はcygwin/WindowsXP, 処理系はgcc3.4.4です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8423.txt
0602デフォルトの名無しさん
2008/12/22(月) 08:55:160603デフォルトの名無しさん
2008/12/22(月) 11:59:03http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8425.c
0604デフォルトの名無しさん
2008/12/22(月) 13:02:40[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8426.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
お願いします
0605デフォルトの名無しさん
2008/12/22(月) 13:31:26ありがとうございました。
0606デフォルトの名無しさん
2008/12/22(月) 15:41:19(1)
#include<stdio.h>
int main(void){
int i,num,data[10];
for(i=0;i<10;i++)
scanf("%d",&data[i]);
scanf("%d",&num);
for(i=0;i<10;i++) if(num==data[i]) break;
i=(i+1)%11;
printf("%d番目\n",i);
return 0;
}
(2)
#include<stdio.h>
int main(void){
int i,num,a=0,b=99,m,data[100];
for (i=0; i<100; i++)
data[i] = i+1;
scanf("%d", &num);
for (i=0;;i++){
if(a>b) {printf("not found.");break;}
m=(a+b)/2;
if(data[m]==num) {printf("%d番目 ループ%d回\n", m + 1, i);break;}
if(data[m]>num) b = m - 1;
else a=m+1;
}
return 0;
}
0607デフォルトの名無しさん
2008/12/22(月) 16:15:20http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8427.txt
0608デフォルトの名無しさん
2008/12/22(月) 17:00:12どこからどこまでがQ1とQ2かわからないので
0609デフォルトの名無しさん
2008/12/22(月) 17:22:05> // Q2 answer
とかちゃんと書いてあるのに、読めないのか
ていうか読んでないのか
0611デフォルトの名無しさん
2008/12/22(月) 17:38:23//Q2がどこまでなのかわからなくて・・すみません
0612デフォルトの名無しさん
2008/12/22(月) 17:40:46[1] 授業単元:コンパイラ
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8428.txt
[3] 環境
[3.1] OS: Mac OsX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 本日12/22日の22時まで
[5] その他の制限:特にありません。
時間がないのですがよろしくお願いします。
0613デフォルトの名無しさん
2008/12/22(月) 18:00:13ふつーにプログラムの流れ考えれば、return 0 まででしょ
main 以降の関数は、main の中で呼んでいる部分があれば使うし
なければ使わない。それだけ。
もしかして関数とかまだ習ってないの?
0614デフォルトの名無しさん
2008/12/22(月) 18:08:08ちょっと疑問。
void InsertNode(Node **top,int val,char *name)
と定義されてる関数があるのに
void putval(char *vname,int vval);
でいいの?
0615デフォルトの名無しさん
2008/12/22(月) 18:11:51できることならQ1とQ2のコードを別々の解として教えてほしいのですが
それぞれ問題がちがうので・・
0616デフォルトの名無しさん
2008/12/22(月) 18:12:44>>604です。
0617デフォルトの名無しさん
2008/12/22(月) 18:22:03やはり1つにまとめたほうがいいですかね?
まずは基本的な線形リストの関数を作って、そこから
2つの関数に対応するように作っている途中だったので
似たような関数があると思います;
inegetval関数とputval関数以外の関数は自分で作ったので無駄なら
消しちゃって下さい。
0618デフォルトの名無しさん
2008/12/22(月) 18:26:56ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8429.txt
0620デフォルトの名無しさん
2008/12/22(月) 18:34:58未熟者ゆえ分けてもらわなければどれがリニアサーチとバイナリサーチかわかりません。
0621デフォルトの名無しさん
2008/12/22(月) 18:38:57まとめると意味わからなくなるけど
せっかく操作対象となる線形リストを指定できるような形で関数定義されてるんだから
void putval(Node *list, char *vname,int vval);
の方がしっくりくるかなと思ったのよ。
618さんが答えだしてくれてるんで消えます。
0622デフォルトの名無しさん
2008/12/22(月) 18:39:32Q1
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8430.txt
Q2
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8431.txt
0623デフォルトの名無しさん
2008/12/22(月) 18:39:59迅速な回答ありがとうございます。
これはintgetvalとputval関数以外はそのままでいいってことですよね?
0624デフォルトの名無しさん
2008/12/22(月) 18:40:10この中に、完璧に習っている人が一人でもいると思っているのならそれは大間違いだ。
0625デフォルトの名無しさん
2008/12/22(月) 18:42:35自分もそのように思ったのですが元々定義されていた関数の引数の
個数を増やしていいのかわからなかったのであのようにしてました。
考えて下さっただけでもありがたいです!
0626デフォルトの名無しさん
2008/12/22(月) 18:47:360627デフォルトの名無しさん
2008/12/22(月) 19:46:09ありがとうございました。
0628デフォルトの名無しさん
2008/12/22(月) 19:56:53[2] 問題文:n行n列のデータをキーボードから入力し、対角要素を並べ換える。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++ Express Edition
[3.3] 言語:C
[4] 期限:2008年12月25日
[5] その他の制限:ポインタを使用。並べ換えの例として、3行3列の場合
12 13 24 12 20 91
20 18 80 ⇒ 13 18 22
91 22 34 24 80 34
となる。
よろしくお願いします。
0629デフォルトの名無しさん
2008/12/22(月) 20:14:39対角要素並び変わってないじゃん
転置してるだけじゃね?
0630デフォルトの名無しさん
2008/12/22(月) 20:15:27[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8435.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月23日AM8:00まで
[5]特にありません
0631デフォルトの名無しさん
2008/12/22(月) 20:33:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8437.c
0632デフォルトの名無しさん
2008/12/22(月) 20:44:19ありがとうございました。
0633デフォルトの名無しさん
2008/12/22(月) 21:03:19[2] 問題文(含コード&リンク):
10個の要素を持つint型配列arrayとint型の変数(配列要素)を指し示すポインタpを定義し、
キーボードから入力した10個の整数を配列要素に順次ポインタpを移動させながら代入し、
同様に入力した値とアドレスをポインタpを移動しながら出力する。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日迄
問題文がよく理解できないまま書いたところ、入力していない値が出てしまいました。
#include <stdio.h>
int main(void)
{
int array[10], *p, i;
*array=*p;
printf("入力:");
for(i=0; i<10; i++){
scanf("%d",&p);
p++;
}
for(i=0; i<10; i++){
printf("数値:%d 場所:%x\n",p,&array[i]);
p++;
}
return 0;
}
0634デフォルトの名無しさん
2008/12/22(月) 21:07:48#include <stdio.h>
int main(void)
{
int array[10], *p, i;
p=array;
printf("入力:");
for(i=0; i<10; i++){
scanf("%d",p);
p++;
}
p=array;
for(i=0; i<10; i++){
printf("数値:%d 場所:%x\n",*p,&array[i]);
p++;
}
return 0;
}
0635デフォルトの名無しさん
2008/12/22(月) 21:20:25ありがとうございました。
0636デフォルトの名無しさん
2008/12/22(月) 23:32:09[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8440.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月23日午前7時まで
[5]特になし。
0637デフォルトの名無しさん
2008/12/22(月) 23:34:30[2] 問題文(含コード&リンク): 画像ファイルを開いてメモリに読み込んで別名でメモリの内容を保存、またRGB成分ごとにグレースケールで保存
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:BCC
[3.3] 言語:C
[4] 期限:08/12/23/16:00
[5] その他の制限:ヘッダ構造体の宣言も行う
よろしくお願いします。
0638デフォルトの名無しさん
2008/12/22(月) 23:43:23>>636
#include<stdio.h>
int main()
{
int x1 = 5;
int x2 = 10;
int x3[2] = {20,25};
int *px[5];
int **ppx;
px[0] = NULL;
px[1] = &x1;
px[2] = &x2;
px[3] = x3;
px[4] = NULL;
ppx = &px[3]
return 0;
}
0639デフォルトの名無しさん
2008/12/23(火) 00:06:11>>535に対するレスにもあるけど、
画像ファイルの形式が分からない以上、
誰も答えてくれんぞ。
0640デフォルトの名無しさん
2008/12/23(火) 00:08:17申し訳ありません。BMPです。
0641デフォルトの名無しさん
2008/12/23(火) 02:37:42[1] 授業単元:小型計測制御システム開発
[2] 問題
入力:温度センサー
出力:LCD
割り込み:INTを使用
これを満たすプログラムの作成
[3] 環境
[3.1] OS:Windows vista
[3.2] コンパイラ名とバージョン: MPLAB IDE v.8.15
[3.3] 言語: C言語のみ
[4] 期限: [2008年12月27日]
[5] その他の制限:PICを用いて実際に作成します
使用PIC:マイクロチップ社 PIC16F877
40ピンのDIPで入出力ピンが33本あり、最大8チャンネルの10ビットAD変換機を内蔵
割り込み要因が最大14、動作電圧2〜6V、内蔵プログラムメモリの容量8KW
必ずこのPICを使用しなければいけません
よろしくお願いします。
0642デフォルトの名無しさん
2008/12/23(火) 04:09:150643デフォルトの名無しさん
2008/12/23(火) 04:51:57チップ名の他にピンの割付とかLCDの詳細がないと無理。
0644デフォルトの名無しさん
2008/12/23(火) 04:56:460645デフォルトの名無しさん
2008/12/23(火) 06:00:33BMPといわれても、まともに実装するととんでもない事になる
テスト用の画像ファイル出せよ
0646デフォルトの名無しさん
2008/12/23(火) 06:25:570647デフォルトの名無しさん
2008/12/23(火) 07:12:46#define MAX_LENGTH 255
#include<stdio.h>
int main()
{
int i;
int num;
char inputs[ MAX_LENGTH + 1 ];
char outputs[ MAX_LENGTH + 1 ];
memset( &inputs, '\0', MAX_LENGTH + 1 );
memset( &outputs, '\0', MAX_LENGTH + 1 );
printf( "inputs:");
gets( inputs );
printf( "num:" );
scanf( "%d", &num );
i = 0;
while ( i < num ) {
*( outputs + i ) = *( inputs + i );
if ( *( outputs + i ) == '\0' ) {
break;
}
i++;
}
printf( "outputs:");
puts( outputs );
return 0;
}
0648デフォルトの名無しさん
2008/12/23(火) 07:26:13>>646
#include<stdio.h>
#define MAX_NUM 100
int main() {
char inputs[MAX_NUM], outputs[MAX_NUM];
int num, i;
printf("inputs>");
fgets(inputs, MAX_NUM, stdin);
printf("num>");
scanf("%d", &num);
for (i = 0; i < MAX_NUM-1 && i < num && inputs[i] != '\n'; i ++)
outputs[i] = inputs[i];
outputs[i] = 0;
printf("outputs=%s\n", outputs);
return 0;
}
0649help me
2008/12/23(火) 08:41:02[2] 問題文
“data3.txt”というファイルを適当な微分点数で微分して
“data4.txt”というファイルに保存せよ。 データの中身は、
1列目がx、2列目がyである。
data3.txtの中身は、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8442.txt
です。
[3] 環境
OS:Linux
言語: C
[4] 期限:12月24日
よろしくお願いします。
0650デフォルトの名無しさん
2008/12/23(火) 08:52:46それだけだと解けなくね?
0651help me
2008/12/23(火) 08:59:50データを局所的にy=ax+b でフィットしてa だけを採用すればよい。とか、
例(5点微分)
微分する点の前後2点を含めて直線でフィットしながら傾きを求める。
などと教わりましたが、あまり理解ができませんでした。
0652デフォルトの名無しさん
2008/12/23(火) 09:18:290653デフォルトの名無しさん
2008/12/23(火) 09:53:55それ3点じゃね?
(f(x+1) - f(x-1))/2?
0654デフォルトの名無しさん
2008/12/23(火) 10:35:18BMPのファイルフォーマットについて
ttp://www.kk.iij4u.or.jp/~kondo/bmp/
>>645も言ってるように、
BMPといってもいろんな形式がある。
Cの授業なら、もっと前提が絞られていいはず。
0655637
2008/12/23(火) 12:27:44[1] 授業単元: C
[2] 問題文(含コード&リンク):BMP画像ファイルを開いてメモリに読み込んで別名でメモリの内容を保存、またRGB成分ごとにグレースケールで保存
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:BCC
[3.3] 言語:C
[4] 期限:08/12/23/16:00
[5] その他の制限:BITMAPFILE、INFOヘッダ構造体の宣言も行う、Heightは正数を想定
参考画像:ttp://www6.uploader.jp/user/yuuki0617/images/yuuki0617_uljp00104.bmp
各構造体を宣言して、mainの方で構造体変数で呼び出し、ファイルをバイナリモードで開き、その後で詰まっています・・・
0656デフォルトの名無しさん
2008/12/23(火) 12:31:06ってことはまぁ24bit限定でいいかな?
0657デフォルトの名無しさん
2008/12/23(火) 13:00:440658637
2008/12/23(火) 13:11:11はい、大丈夫です。
>>657
オフセットのパディングに関してはwindows.hをインクルードすればOKとだけ言われました・・・
0659デフォルトの名無しさん
2008/12/23(火) 15:44:18ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8443.c
こんなんでよい?
0660デフォルトの名無しさん
2008/12/23(火) 16:26:08>>645
WIN API 解禁だったとして、まともに実装するのは DIBSECTION 経由で BITMAP 生成
dc に連結して GetPixel で取得 出力側はこっちの都合の良い color space で
ってコースになるのかな?
0661デフォルトの名無しさん
2008/12/23(火) 17:05:36[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8444.txt
[3] 環境
[3.1] OS:Mac OSX
[3.2] gcc
[3.3] 言語: C言語
[4] 期限: 12/23 19時頃まで
よろしくお願いします。
0662661
2008/12/23(火) 18:21:31後期限は22時まででお願いします。
色々とすみません<(_ _)>
0663デフォルトの名無しさん
2008/12/23(火) 19:02:59[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8445.txt
[3] 環境
[3.1] OS:XP
[3.2] gcc
[3.3] 言語: C言語
[4] 期限: 12/24 20時頃まで
よろしくお願いします。
0664デフォルトの名無しさん
2008/12/23(火) 19:37:24http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8447.txt
よくわかんないけど5点微分してみた\(^o^)/
0665デフォルトの名無しさん
2008/12/23(火) 19:55:11[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8448.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月24日午前8時まで
[5]特になし。
0666デフォルトの名無しさん
2008/12/23(火) 20:07:160667デフォルトの名無しさん
2008/12/23(火) 20:08:50#include<stdio.h>
long int my_pow(long int x,long int n); /*べき乗を計算する関数*/
int main(void)
{
int x,n;
long int result;
printf("input x n : "); /*データの入力*/
scanf("%d %d",&x,&n);
result = my_pow(x,n); /*べき乗の計算*/
printf("%d\n",result); /*結果の表示*/
return 0;
}
long int my_pow(long int x,long int n)
{
if(n<1)return 1;
return x*my_pow(x,n-1);
}
0668デフォルトの名無しさん
2008/12/23(火) 20:11:52激しく同意。それでスレ内に全く同じ問題がないか検索すればいいのに
>>665
#include<stdio.h>
long int my_pow(int x, int n);/*べき乗を計算する関数*/
int main()
{
int x, n;
long int result;
printf("input x n : "); /*データの入力*/
scanf("%d %d",&x,&n);
result = my_pow(x, n); /*べき乗の計算*/
printf("%d ** %d = %d", x, n, result); /*結果の表示*/
return 0;
}
long int my_pow(int x, int n)
{
long int result = 1;
while (n-- > 0)
result *= x;
return result;
}
0669デフォルトの名無しさん
2008/12/23(火) 20:16:170671デフォルトの名無しさん
2008/12/23(火) 21:17:160672デフォルトの名無しさん
2008/12/23(火) 21:34:48#include以下のソースに
setvar(*vname)という関数(他に関数が必要ならそれも)をつくってほしいのですが
何をupすればよろしいでしょうか?
0673デフォルトの名無しさん
2008/12/23(火) 21:42:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8449.c
これ最初マインスイーパーを作るのかと思ったわw
合ってるのかよく分からんけどとりあえずうp
違ったら自由に修正して。
0674デフォルトの名無しさん
2008/12/23(火) 21:54:30自分で作ったエラーのやつ出してみろってこと。
0675デフォルトの名無しさん
2008/12/23(火) 21:59:14void setvar(char *vname)
{
Node *ptr=list
while(ptr->next!=NULL)
ptr=ptr->next;
ptr->next=AllocNode();
Node *x=ptr->next;
strcpy(x->name,vname);
}
です。
つっこみどころが多いと思いますがよろしくお願いします。
0676デフォルトの名無しさん
2008/12/23(火) 22:08:35別の部分でちゃんと結尾にNULLセットできてないとエスパー。
0677デフォルトの名無しさん
2008/12/23(火) 22:19:01すみません、別の部分とは他の関数で結尾にNULLがセットされてないと
いうことでしょうか?
あの関数を使用するソースはyaccソースなので必要最低限の所を
だけ書いたのですが。。
0678デフォルトの名無しさん
2008/12/23(火) 22:31:360679デフォルトの名無しさん
2008/12/23(火) 22:37:29つもりでしたが違いますかね?;
色々とおかしいところは変更して下さっていいのでお願いできないでしょうか?
0680デフォルトの名無しさん
2008/12/23(火) 22:48:04面倒だからエラーが出るというソース全部を出して。
0681デフォルトの名無しさん
2008/12/23(火) 22:49:56した場合にBus errorになってしまいます。
0682デフォルトの名無しさん
2008/12/23(火) 22:50:27listがNULLの場合のsetvarの挙動はどうなってんの?
0683デフォルトの名無しさん
2008/12/23(火) 22:53:58Node *xの宣言を関数の先頭に持ってくるとどうなる?
0684デフォルトの名無しさん
2008/12/23(火) 22:54:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8450.txt
0685デフォルトの名無しさん
2008/12/23(火) 23:04:44x=ptr->next;
としてもBUS ERRORでした;
0686デフォルトの名無しさん
2008/12/23(火) 23:05:55ファイル先頭の部分がコンパイルできねえ。
gccの環境を詳しく教えて。
0687デフォルトの名無しさん
2008/12/23(火) 23:07:400688デフォルトの名無しさん
2008/12/23(火) 23:08:090689デフォルトの名無しさん
2008/12/23(火) 23:09:110690デフォルトの名無しさん
2008/12/23(火) 23:11:49[2] 問題文(含コード&リンク):(A) http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8451.txt
(B)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8452.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: 任意
[3.3] 言語: C
[4] 期限: 2008年12月31日
(B)はなぜそれを選択したか簡単な説明をしてもらえると助かります
0691デフォルトの名無しさん
2008/12/23(火) 23:14:29共用体とプリプロセッサの順番を変えるくらいしか思いつかないよ
0692デフォルトの名無しさん
2008/12/23(火) 23:19:51あの部分だけ書いたのですが;;
>>686
gccの環境とはなんでしょうか?
ちなみにターミナルというアプリを使用しています。
自分はyacc ファイル名.yでy.tab.cといファイルを作り
gcc y.tab.c -llでコンパイルできました。
lexソースがいるからコンパイルできないのでしょうか?
必要ならlexソースもあげますが。。
0693デフォルトの名無しさん
2008/12/23(火) 23:20:08(B)は、
10x
20x
12x
18x
になるから1番。
0694デフォルトの名無しさん
2008/12/23(火) 23:23:27そうですか、yaccの部分を変えないといけないみたいですね。
スレ違いになってきましたので、そろそろ撤退します;
皆様ご迷惑をおかけしました、スレ汚しすみません<(_ _)>
0695help me
2008/12/23(火) 23:34:32おー、ありがとうございます。お礼遅くなりすみません。
0696デフォルトの名無しさん
2008/12/23(火) 23:41:09[2] 問題文(含コード&リンク)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8453.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
よろしくお願いします
0697デフォルトの名無しさん
2008/12/24(水) 00:49:27http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8454.txt
0698デフォルトの名無しさん
2008/12/24(水) 02:01:07void printBinary(unsigned x)
{
int i;
for (i = 7; i >= 0; i--) {
if(x >> i & 0x1)
putchar('1');
else
putchar('0');
}
putchar('\n');
}
int main(void)
{
unsigned n,m;
printf("Input non-negative integer: ");
scanf("%d", &n); /* n:元の数 */
/* 左に 4 ビットシフト */
m = n << 4;
printf("%u / %u = %d\n", m, n, m/n);
/* 左に 2 ビットシフトして元の数を加える */
m = (n << 2) + n;
printf("%u / %u = %d\n", m, n, m/n);
/* 16の倍数か確認 */
if ((n & 0x0f) == 0)
printf("%u %% 16 = 0 \n", n);
else
printf("%u %% 16 != 0 \n", n);
printBinary(n);
return 0;
}
0699デフォルトの名無しさん
2008/12/24(水) 02:27:29[2] 問題文(含コード&リンク):
Σ[n=1,10](n^3-2n) の値を計算し表示するプログラムを以下の条件において作成してください。
【条件1】少なくとも一つ以上の関数を用い、マクロも適宣用いること。
【条件2】関数のプロトタイプとマクロをヘッダーファイルにまとめ(proen11_2.h)、インクルードすること。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日
0700デフォルトの名無しさん
2008/12/24(水) 02:29:08> マクロ
マクロの内容は?
0701デフォルトの名無しさん
2008/12/24(水) 02:33:390702デフォルトの名無しさん
2008/12/24(水) 02:46:04[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8455.txt
[3] 環境
[3.1] Linux
[3.2] gcc 3.4
[3.3] C
[4] 期限:今日中
0703デフォルトの名無しさん
2008/12/24(水) 03:27:15> マクロも適宣用いること
あれ?目が悪くなったのかな。適宜の"宜"に隙間が空いてるように見えるんだけど
それはさておき、マクロは適宜使用なので適切な局面がなかったので使用しませんでしたとでも答えれば良い
---- proen11_2.h ----
int sum(int, int, int (*)(int));
---- proen11_2.c ----
#include <stdio.h>
#include "proen11_2.h"
int main() {
int f(int);
printf("%d\n", sum(1, 10, f));
return 0;
}
int f(int n) { return n*n*n - 2*n; }
int sum(int begin, int end, int (*f)(int)) {
int i, sum = 0;
for(i = begin; i <= end; ++i) sum += f(i);
return sum;
}
0704デフォルトの名無しさん
2008/12/24(水) 03:40:19>>699
> マクロも適宣用いること
あれ?目が悪くなったのかな。適宜の"宜"に隙間が空いてるように見えるんだけど
それはさておき、マクロは適宜使用なので適切な局面がなかったので使用しませんでしたとでも答えれば良い
703 名前:デフォルトの名無しさん 投稿日:2008/12/24(水) 03:27:15
>>699
> マクロも適宣用いること
あれ?目が悪くなったのかな。適宜の"宜"に隙間が空いてるように見えるんだけど
それはさておき、マクロは適宜使用なので適切な局面がなかったので使用しませんでしたとでも答えれば良い
0705デフォルトの名無しさん
2008/12/24(水) 03:45:060706デフォルトの名無しさん
2008/12/24(水) 03:49:210707デフォルトの名無しさん
2008/12/24(水) 03:53:40ツンデレだなぁ。素直に言えよ、目が悪くなりました、マクロの記述が分かりません、と。
素直が一番だよ?捻くれていたり、ごちゃごちゃ言う一言居士って嫌われるよ?
0708デフォルトの名無しさん
2008/12/24(水) 03:57:090710デフォルトの名無しさん
2008/12/24(水) 04:46:05分からない・・・・。
自分の知識では限界が。
とりあえず教科書読んできます
ありがとうございました
0711デフォルトの名無しさん
2008/12/24(水) 04:58:52あるいは、本当に出題者が間違えて記入した問題文を出してしまったか。
にしても、適宜と言う表現が適切だろうけど、いちいち自分の目がおかしくなったのかな?だの
マクロは使うのが適切じゃないからとか言い訳するのはどうかと。
別に、答えなければいけないという義務は、このスレにはありませんからw
0712デフォルトの名無しさん
2008/12/24(水) 05:17:28※ひろゆきも起きてます
http://live.nicovideo.jp/watch/lv22734
http://live.nicovideo.jp/recent
>グニャラくん ★
>「ニコニコ大百科」及び「お絵カキコ」「ピコカキコ」の開発者である。
>ニコニコ大百科の開発者であるとともにユーザーサポート要員でもあり
>要望板、不具合板等でユーザーの報告を受けて修正、追加する作業を行っている。
>
>ユーザーとフランクに(しかし丁寧に)接してくれるうえに、仕事が速く、不具合板で報告があってからものの数分で「修正しました!」と返事が返ってくることも度々である。
>書き込み日時を見ると深夜遅いことも多く、おまけに土日でも普通に掲示板にいることがあり、ちゃんと休みをとっているのかユーザーから心配されるほどである。
>
>実のところメインの業務は「Senna」の開発であり、ニコニコ大百科は副業である
>ニコニコ大百科の縁の下の力持ち的存在であり、現状なくてはならない存在と言える
0713デフォルトの名無しさん
2008/12/24(水) 05:26:360714デフォルトの名無しさん
2008/12/24(水) 08:29:20[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8456.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:明日まで
[5] 考えたのですが、途中で混乱してしまいわからなくなってしまいます
0715デフォルトの名無しさん
2008/12/24(水) 08:31:350716デフォルトの名無しさん
2008/12/24(水) 09:51:04不思議なマルチだな。
学校からは、「JavaまたはCで実装しろ」って言われてるのか?
★★ Javaの宿題ここで答えます Part 66 ★★
688 名前:デフォルトの名無しさん[] 投稿日:2008/12/24(水) 02:55:45
【 課題 】http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/521.txt
【 形態 】1. Javaアプリケーション(main()で開始)/
【 期限 】本日中
【 Ver 】1.6.0_07
【 補足 】丸投げです。よろしく御願いします。
0717デフォルトの名無しさん
2008/12/24(水) 09:59:50その手の「過程も示せ」系の宿題は
このスレでは往々にして、解だけポンと出されて終わりなことが多いから
今からもう一度、自分で考えておいた方が得策
0718デフォルトの名無しさん
2008/12/24(水) 10:01:29[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8461.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年12月25日23:59
[5] その他の制限:
よろしくお願いします
0719デフォルトの名無しさん
2008/12/24(水) 10:18:40そんなにしてまで汎用性持たせる必要あるのかと。
お前は関数のポインタ使いたかっただけ違うんかと。
0720デフォルトの名無しさん
2008/12/24(水) 10:21:37>>715
以後、問題文にリンクしか貼ってないやつは、俺は無視する。
0721デフォルトの名無しさん
2008/12/24(水) 10:27:59わざわざ宣言しなくてもいいよ。
自分の意見が採用されなかったから拗ねるって、
どんだけガキなんだか。
0722デフォルトの名無しさん
2008/12/24(水) 10:32:36リンクを一回クリックするのがそんなに面倒なのかw
0723デフォルトの名無しさん
2008/12/24(水) 10:33:26どんだけ構ってちゃんだよ、お前w
0724デフォルトの名無しさん
2008/12/24(水) 10:36:00> 気に入らない質問やその他や発言はスルーの方向で。
これが読めない、文盲が最近は多いんですね。
0725718
2008/12/24(水) 11:06:020726デフォルトの名無しさん
2008/12/24(水) 11:12:50とりあえず適切な位置で改行して
0727デフォルトの名無しさん
2008/12/24(水) 11:14:17ちなみに、>>715 ≠ >>720
0728デフォルトの名無しさん
2008/12/24(水) 11:26:11ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8462.txt
0729718
2008/12/24(水) 11:31:16よろしくお願いします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8463.txt
0730デフォルトの名無しさん
2008/12/24(水) 11:35:54そんな感じです。
0731デフォルトの名無しさん
2008/12/24(水) 11:49:17#include <stdio.h>
#include <limits.h>
int x, y, z;
int g(int z, int x) { y = 2 * x - y + 3 * z; x = z; return y - 123; }
int f(int x) { z = 7; z = g(x - 1, x + 1); return x - z; }
int main(void)
{
int x;
x = 100; y = 23; z = -72;
{
/* 頭を使わずループでゴリゴリ */
int i, j;
for (i = INT_MIN; i <= INT_MAX; ++i)
for (j = INT_MIN; j <= INT_MAX; ++j)
y = f(x + i);
z = f(x + y + j);
if ((x == 100) && (y == -14684) && (z == 11167)) {
printf("ア = %d, イ = %d\n", i, j);
return 0;
}
}
puts("not found...");
return 0;
}
0732デフォルトの名無しさん
2008/12/24(水) 11:51:380734714
2008/12/24(水) 13:07:26自分でもいろいろ試していますがうまくいきません
0735デフォルトの名無しさん
2008/12/24(水) 13:22:36[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8464.txt
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:Microsoft C/C++
[3.3] 言語:C言語
[4] 期限:2008年12月26日
[5] その他の制限:特にありません
よろしくお願いします。
0736デフォルトの名無しさん
2008/12/24(水) 13:28:02void swap(void *a,void *b,int length)
{
char *p,*q;
int i;
char t;
p=(char*)a;
q=(char*)b;
/*
ここを考えましょう。
*/
for (i = 0; i < length; i++, p++, q++)
{
t = *p;
*p = *q;
*q = t;
}
return;
}
0737デフォルトの名無しさん
2008/12/24(水) 13:34:180738デフォルトの名無しさん
2008/12/24(水) 13:34:40[2] 問題文(含コード&リンク):下に貼ってあります。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:明日です。
[5] その他の制限:構造体の3週目になります。
作成したプログラムへのアドバイス、それと一部作成をお願いしたいと思います。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8465.txt
0739デフォルトの名無しさん
2008/12/24(水) 13:38:15それは>>731を試した上での書き込みなん?
0740デフォルトの名無しさん
2008/12/24(水) 13:47:27問題1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8466.c
0741デフォルトの名無しさん
2008/12/24(水) 13:59:39[2] 問題文(含コード&リンク):下記に添付してます
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++2005
[3.3] 言語:C
[4] 期限:今日中(午後四時まで)
[5] その他の制限:なし
よろしくお願いします
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8468.txt
0742デフォルトの名無しさん
2008/12/24(水) 14:14:55void s_swap(char **str_a, char **str_b)
ぢゃねーかな(もとがポインタなので、ポインタのポインタで受け取らないといけない)。
0743デフォルトの名無しさん
2008/12/24(水) 14:38:01とりあえず名前だけで並び替えるとこんな感じかな
int size = sizeof(x) / sizeof(x[0]); /* 配列の要素数 */
int i, j;
Person temp;
for (i = 0; i < size - 1; ++i) {
for (j = i + 1; j < size; ++j) {
if (strcmp(x[i].name, x[j].name) > 0) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
for (i = 0; i < size; ++i)
printf("%15s, %4.1f, %3.1f\n", x[i].name, x[i].height, x[i].weight);
0744デフォルトの名無しさん
2008/12/24(水) 14:41:30問題2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8469.c
0745デフォルトの名無しさん
2008/12/24(水) 16:00:29すいません忘れてました。
問い1ですが、for文使用不可でした……
0746デフォルトの名無しさん
2008/12/24(水) 16:13:53[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8470.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:明日12時
0747デフォルトの名無しさん
2008/12/24(水) 16:22:23[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8471.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[5] 0以下で検索すると無限ループしてしまいます.
そうならないようにするにはどう変えたらいいでしょうか?
0748デフォルトの名無しさん
2008/12/24(水) 16:26:05検索の対象となるデータを全て検索したら、終了させなきゃ。
0749デフォルトの名無しさん
2008/12/24(水) 16:29:59ありがとうございます!!
あのwhile文の条件は、配列の要素を定義するときに最後にNULLがあれば使えるものでした。
今回は要素数を求めなければできないですよね。今気付きました。
身長・体重ソートも自分でできそうです。
0750デフォルトの名無しさん
2008/12/24(水) 16:38:070751デフォルトの名無しさん
2008/12/24(水) 16:50:35for文使うなとの事なら、こんな感じか…。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8472.c
0752デフォルトの名無しさん
2008/12/24(水) 17:23:19i++はなぜか使ってないわ行列を意識しているのかx成分とy成分が逆な気持ち悪いソースだなwww
0753デフォルトの名無しさん
2008/12/24(水) 17:59:25>>731はforループの後に{}を付けたのですが、何も実行されないです
0754デフォルトの名無しさん
2008/12/24(水) 18:10:05何も実行されないんじゃなくて終わるまですごく時間がかかるの
だからずっと待ってなきゃダメなの
0755デフォルトの名無しさん
2008/12/24(水) 18:13:03#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFLEN 80
#define N 4
int a[N][N], b[N][N];
int is_rotated(void)
{
int rotated = 1, i, j;
for (i = 0; i < N; ++i) for (j = 0; j < N; ++j) if (a[i][j] != b[N - (j + 1)][i]) rotated = 0; if (rotated) return 1; rotated = 1;
for (i = 0; i < N; ++i) for (j = 0; j < N; ++j) if (a[i][j] != b[N - (i + 1)][N - (j + 1)]) rotated = 0; if (rotated) return 1; rotated = 1;
for (i = 0; i < N; ++i) for (j = 0; j < N; ++j) if (a[i][j] != b[j][N - (i + 1)]) rotated = 0; if (rotated) return 1; return 0;
}
int main(void)
{
int i, j;
char buf[BUFLEN];
printf("%dx%dの行列aを入力してください\n", N, N);
for (i = 0; i < N; ++i) {
a[i][0] = atoi(strtok(fgets(buf, BUFLEN, stdin), " "));
for (j = 1; j < N; ++j) a[i][j] = atoi(strtok(NULL, " "));
}
printf("%dx%dの行列bを入力してください\n", N, N);
for (i = 0; i < N; ++i) {
b[i][0] = atoi(strtok(fgets(buf, BUFLEN, stdin), " "));
for (j = 1; j < N; ++j) b[i][j] = atoi(strtok(NULL, " "));
}
printf("is_rotated()の結果は%dです\n", is_rotated());
}
0756デフォルトの名無しさん
2008/12/24(水) 18:30:32uploader に上がってる奴もどこかで計算違いしてるんじゃね?
どうせ似たようなことをやらにゃいかんからがんがれ
0757デフォルトの名無しさん
2008/12/24(水) 19:22:590758デフォルトの名無しさん
2008/12/24(水) 19:28:22問題文orコードまちがえてんじゃねーの?
答えがあるような気がしない
0759デフォルトの名無しさん
2008/12/24(水) 19:30:58取りあえず、手計算で方程式解いて
a=816, b=-223
は出た(設問のア、イはa,bに変更)
因みに最終的な連立方程式は
-16a + 5b = -14171
3a - b = 2671
で、ロダのはyの代入を一箇所見逃してるのと、
最後のzの代入直前の符号ミスがひとつ
てか、Mathematica使えば瞬殺なんだがなあ
0760デフォルトの名無しさん
2008/12/24(水) 19:39:04答えはもう出てるけど一応修正。
#include <stdio.h>
#include <limits.h>
int x, y, z;
int g(int z, int x) { y = 2 * x - y + 3 * z; x = z; return y - 123; }
int f(int x) { z = 7; z = g(x - 1, x + 1); return x - z; }
int main(void)
{
int x;
x = 100; y = 23; z = -72;
{
/* 頭を使わずループでゴリゴリ */
int i, j;
int tempy, tempz;
for (i = INT_MIN; i <= INT_MAX; ++i)
for (j =INT_MIN; j <= INT_MAX; ++j) {
tempy = y; tempz = z;
y = f(x + i);
z = f(x + y + j);
if ((x == 100) && (y == -14684) && (z == 11167)) {
printf("ア = %d, イ = %d\n", i, j);
return 0;
}
y = tempy; z = tempz;
}
}
puts("not found...");
return 0;
}
0761デフォルトの名無しさん
2008/12/24(水) 20:39:16[2] 問題文(含コード&リンク):
氏名(文字列)、身長(倍精度実数)、体重、の3つのデータの
構造体personを定義し、リストのとおり構造体変数の配列x[]を初期化する。
x[]の要素について次の順に印字出力せよ。
1、名前をアルファベット順に印字
2、身長について昇順に印字
3、体重について昇順に印字
ただし、名前が同一の場合は身長または体重の昇順に印字。身長または体重が同一のとき
氏名のアルファベット順に印字。
リストpersonは
person x[] ={{"Tanaka", 180.6,67.9},{"Fujiwara",180.4,67.0}};
など適当に作る。
[3] 環境
[3.1] OS: Windows
[3.2] visual C
[3.3] 言語: C
[4] 期限: 明日
めんどくさい内容ですが、よろしくお願いします。
0762デフォルトの名無しさん
2008/12/24(水) 20:56:010763デフォルトの名無しさん
2008/12/24(水) 22:30:55遅くなりました。ありがとうございます
0764デフォルトの名無しさん
2008/12/25(木) 01:05:580765デフォルトの名無しさん
2008/12/25(木) 01:44:41[2] 問題文(含コード&リンク):
下記プログラムは 文字列Tokyo を逆順に表示するプログラムである.
#include<stdio.h>
main()
{
static char string[ ]=“Tokyo”;
char *cp;
cp = string + 6;
while(--cp >= string)
putchar(*cp);
putchar(‘\n’);
}
実行結果
oykoT
上記プログラムを関数recpy()を作成して書き直しなさい.main関数をヒントに示す.データのやり取りにはポインタを用いること
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2009年1月7日 13:00
[5] その他の制限: よろしくお願いします。
0766デフォルトの名無しさん
2008/12/25(木) 01:55:54なんだそれ
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1214209182
0767デフォルトの名無しさん
2008/12/25(木) 02:07:110768デフォルトの名無しさん
2008/12/25(木) 02:22:32ありがとうございました
0769デフォルトの名無しさん
2008/12/25(木) 05:18:49[2] 問題文(含コード&リンク): int型配列に格納して出力させるプログラム。
>ただし、6桁以上の文字列が入力された場合は、先頭から5 文字までを有効とし、6 文字目以降を無視する。
エラー仕様に、負の数が入力された場合、整数以外が入力された場合、改行のみの入力はエラーメッセージを表示して終了
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今日の昼
[5] その他の制限: よろしくお願いします。
0770デフォルトの名無しさん
2008/12/25(木) 05:45:240771デフォルトの名無しさん
2008/12/25(木) 07:12:45#include<stdio.h>
int main(void)
{
int i, j, a[5];
char temp[100];
gets(temp);
if(temp[0] == NULL) { /* 改行のみの入力 */
printf("Error!!改行のみの入力\n");
return 1;
}
else if (temp[0] == '-') { /* 負の数 */
printf("Error!!負の数\n");
return 1;
}
else {
for(i = 0; i < 5; i++){
if (temp[i] == NULL) break;
if(temp[i] < '0' || temp[i] > '9') { /* 数値以外の入力 */
printf("Error!!数字文字以外の入力\n");
return 1;
}
a[i] = temp[i] - '0';
}
}
printf("整数は");
for (j = 0; j < i; j++) printf("%d", a[j]);
printf("\n");
return 0;
}
0772デフォルトの名無しさん
2008/12/25(木) 07:40:56>int型配列に格納して出力
のところがよく分からなかったが、こんなかんじですか?
// int型配列を拡張しながら入力された5桁の数字を格納&出力していくプログラム。
// 6桁以上入力されたり、整数以外([0-9]+にマッチしない場合)は即座にエラーメッセージを出して終了。
// という動作を行ってくれるはず。メモ帳で作ったので動作確認してません。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char buf[16];
int *arr, x=0, size=16, grow=16, n, i, figure=5;
if( (arr = (int *)malloc(size)) != NULL ){
while( fgets( buf, sizeof(buf), stdin ) ){
for( i=0; buf[i]!=NULL && i<=figure; ++i ){
if( buf[i]<'0' || '9'<buf[i] ){ i=figure+1; break; }
n = n*10 + (buf[i]-'0');
}
if( i > figure ){ break; }
arr[x] = n;
if( ++x >= size ){
size+=grow; arr=(int *)realloc( arr, size );
}
printf( "arr[%d] = %d\n", x, n );
}
puts("Input error.");
}else{ printf( "malloc failed." ); }
}
0773デフォルトの名無しさん
2008/12/25(木) 07:42:57はインクルードする必要なかった...
0775デフォルトの名無しさん
2008/12/25(木) 08:21:51次の問題で行き詰ってしまったのでよろしくお願いします。
[1] 授業単元: プログラミングc
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8474.txt ←前問
前問から 5つ入力させて 5つの和を求める を付け足しなさい。
[3] 環境
[3.1] OS: win
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: c
[4] 期限: 今日昼まで
[5] その他の制限: よろしくおねがいします
0776デフォルトの名無しさん
2008/12/25(木) 11:41:23[2] 問題文(含コード&リンク):
(通常課題6-1)
以下の仕様で収支残高管理プログラムを作成せよ.ただし,残高処理の関数を独自で定義すること.その際,ファイルポインタについてはグローバル変数として宣言しても良い.
初期状態を除いてプログラム実行時に既存の残高額のファイル(balance.txt)を読み込む.ファイルが存在する場合に限り,balance.txt)を読み込む処理をすれば良い.
各処理を選択するメニュー画面を残高額とともに表示する.可能であれば,残高は桁区切りカンマを用いて表示すること.
終了時にその時点の残高額をファイル(balance.txt)に書き込む.
ヒント:最初にbalance.txtを読み込みモードで開いて読み込んだ後は,即座にファイルを閉じ,最後の書き込み時に,改めて書き込みモードで開いて同名のファイルに書き込みをすれば良い.
また,ファイルからの金額の読み込みにはfscanfを,書き込みにはfprintfを使用すると良い.
[3] 環境
[3.1] OS: Windows
[3.3] 言語:C
[4] 期限: [2008年12月26日13:00まで]
0777デフォルトの名無しさん
2008/12/25(木) 11:43:02[2] 問題文(含コード&リンク):
(通常課題6-2)
以下の仕様で英単語管理プログラムを作成せよ.配列の要素数を変更可能にするなどプリプロセッサ制御文を用いて拡張性の高いプログラムになるように工夫せよ.また,分割コンパイルしやすいように各機能別に関数化すること.
初期状態を除いてプログラム実行時に既存の英単語リストのファイル(list.txt)を読み込み,2次元配列に格納する.
(例:char words[単語数][単語文字数] ただし、単語数、単語文字数の部分には、プリプロセッサ制御文を用いること)
単語登録,リスト表示,終了の各機能が選択可能なメニュー画面を表示する.ただし,登録可能な単語数を表示し,リスト内と同一単語の登録は受付けない.また,リスト表示は登録した英単語を含めるものとする.
プログラム終了時に,新しくできた英単語リストを,読み出したファイルと同名のファイル(list.txt)に書き込む.なお,英単語リストのファイルは,1行1単語として出力するものとする.
ヒント:文字列の比較は「strcmp関数」,文字列のコピーは「strcpy関数」をそれぞれ使用し,引数の指定は各自で調査せよ.ヘッダーファイルには「<string.h>」を追加する必要がある.
[3] 環境
[3.1] OS: Windows
[3.3] 言語:C
[4] 期限: [2008年12月26日13:00まで]
0778デフォルトの名無しさん
2008/12/25(木) 11:44:16[2] 問題文(含コード&リンク):
(応用課題6-A1)
通常課題6-2に以下の機能として変更または追加してプログラムを拡張せよ.
リストファイル(words.txt)の読み込みと更新.
すべての英単語をアルファベット順(昇順)に並べ替えて画面にリスト表示する機能.並べ替え(ソート)の方法は各自で調査せよ.
リスト内の不要になった単語を削除する機能.ただし,削除確認を要求して削除機能を中止可能にする.
昇順リスト表示,単語削除の機能も選択できるようにメニュー画面に付加.
[3] 環境
[3.1] OS: Windows
[3.3] 言語:C
[4] 期限: [2008年12月26日13:00まで
0779デフォルトの名無しさん
2008/12/25(木) 12:52:30独学ではこうはいかなかった わざわざ図書館から本借りて目を凝らして仕組みを覚えたなあ
0780デフォルトの名無しさん
2008/12/25(木) 12:58:16balance.txtをあげろ
あとメニューの項目は?具体的にどう処理してほしい?
>>777
list.txtをあげろ
>>778
words.txtをあげろ
0781デフォルトの名無しさん
2008/12/25(木) 13:12:42メニューの項目は
[1] 収入
[2] 支出
[99] 終了
balance.txt
list.txt
words.txt
は自分でこれらの名前をつけてテキストファイルを保存するので指定はありません。
0782初心者
2008/12/25(木) 15:55:09[2] 問題文(含コード&リンク):
社会、理科、英語の得点から平均点と評価を与えるプログラムである。
各個人のデータは�@「出席番号」�A「文系・理系の区分」�B「社会」�C「理科」
�D「英語」�E「3教科の平均」�F「評価」からなる。ただし、具体的にデータとして
入れるのは�@�A�B�C�Dのみ。(残りはプログラムに処理させる)データは構造体で宣言する。「3教科平均」では、各人の社会・理科・英語の平均点を代入しておく。
「評価」には「文系であれば社会と英語の平均、理系であれば理科と英語の平均」に
応じて80以上はA、70〜79はB、60〜69はC、59以下はDといれる。出力はこれらを全て
埋めたものを表形式で出力する。さらに、「3教科の平均」で昇順にソートしておく。
(値の入れ替えはswap関数をつくる)
●検証用データ(変数の宣言時に代入しておく)
出席番号 文系・理系 社会 理科 英語
0001 文系 85 32 74
0002 理系 33 68 52
0003 理系 69 97 83
0004 文系 72 60 65
0005 文系 46 72 88
0006 文系 85 41 79
0007 理系 77 85 52
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 今週中までぐらいに
[5] その他の制限:繰り返し文、条件判断文、構造体などを勉強しました。
初心者なので、初心者にもわかるようなプログラムをお願いします。
0783デフォルトの名無しさん
2008/12/25(木) 16:07:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8475.c
0784783
2008/12/25(木) 16:10:07FILE *fileopen(char *, char *);
↑この行カットしてくれ
0785デフォルトの名無しさん
2008/12/25(木) 16:28:35int a;
a = 0XAB;
a = a << 4;
この時点での 変数aの値_____(16進)
答えと解き方を教えてください。
お願いします。
0786デフォルトの名無しさん
2008/12/25(木) 16:39:56printf ( "この時点での 変数aの値 %x (16進)", a ) ;
0787デフォルトの名無しさん
2008/12/25(木) 16:49:37変数aの値が何になるかと
なんでその値になるかの解き方
という意味です。
0788デフォルトの名無しさん
2008/12/25(木) 16:53:23http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8477.c
0789デフォルトの名無しさん
2008/12/25(木) 16:55:14質問テンプレに従って書け
0790デフォルトの名無しさん
2008/12/25(木) 17:17:020xAB (16進) : 10101011 (2進)
4ビットシフト 101010110000 (2進) : 0xAB0 (16進)
この時点での 変数aの値 AB0 (16進)
0791デフォルトの名無しさん
2008/12/25(木) 17:24:320792デフォルトの名無しさん
2008/12/25(木) 17:26:2316進数の場合左の4ビット消えて4つ0つける
という方法じゃないんですか??
0793デフォルトの名無しさん
2008/12/25(木) 17:30:40>>792
はぁ?
0794デフォルトの名無しさん
2008/12/25(木) 17:33:57教えてください!!
0795デフォルトの名無しさん
2008/12/25(木) 17:37:4716進数一文字分が4ビットなのはわかるよな?
それで左に4ビットずらしたんだからそりゃ右に0がついた形になるだろーが
0796デフォルトの名無しさん
2008/12/25(木) 17:42:42int型は4Byte
0xAB (16進) =
00000000000000000000000010101011 (2進数)
4bit左シフトすると
00000000000000000000101010110000
=0xAB0
ここまでだったらたとえH8Sなどの16bit環境でも同じ
0797デフォルトの名無しさん
2008/12/25(木) 17:50:430798デフォルトの名無しさん
2008/12/25(木) 17:51:20お前にはそう見えるのか?
0799デフォルトの名無しさん
2008/12/25(木) 18:03:21どうなるんですか?
0800デフォルトの名無しさん
2008/12/25(木) 18:04:24してみりゃいいじゃん。
0801デフォルトの名無しさん
2008/12/25(木) 18:11:05どうなるんですか?
0802デフォルトの名無しさん
2008/12/25(木) 18:25:18シフトによって生じた空きbitは0で埋めることになっているが
この問題はただのintで符号付き整数のため何で埋めるかはコンパイラに依存する
何度も言われてるが環境を書け
もしくは死ねばいいのに
0803デフォルトの名無しさん
2008/12/25(木) 18:26:410804デフォルトの名無しさん
2008/12/25(木) 18:51:19符号なし整数なら論理シフト
符号有り整数なら算術シフトとなっているが
これはC言語の規格の規格ではなく独自のもの
この問題に限っては結果は変わらないが
みんなが気にしているのはもっと大きくシフトしたときに誤解が生じるからだろう
たとえばaを左に24bitシフトして右に24bitもどしたときときに
一見もとの値に戻りそうな気がするけどそうじゃないのは解るよね?
0805デフォルトの名無しさん
2008/12/25(木) 19:25:33http://pc11.2ch.net/test/read.cgi/tech/1229424329/
> 今回、ACMがコンピューターの操作法を学ぶことではなく、計算機科学と
> はっきりと明示しており、提言が次期政権に受け入れられた場合には中
> 学校などで、プログラムを使った問題解決手法や初歩的な数理論理学
> などが取り入れられる可能性もでてきた。
日本でも実現されたら、宿題スレが大盛況www
0806デフォルトの名無しさん
2008/12/25(木) 19:27:02プログラムじゃなくて筆記で数値を書く必要があるってこと?
0808デフォルトの名無しさん
2008/12/25(木) 19:50:22時間がないので頼みます
0809デフォルトの名無しさん
2008/12/25(木) 20:02:20また、それを用いて modpow(2,q,71) (q=1,2,…,70) 及び modpow(a,345,691) (a=1,2,…,50) を全て求めよ
[3] 環境
[3.1] OS:Linux
[3.3] 言語:C
[4] 期限:12月30日まで
[5] その他の制限:特に無いです。よろしくお願いします
0810デフォルトの名無しさん
2008/12/25(木) 20:10:14#include <stdio.h>
int modpow(int a, int q, int p);
int main()
{
int i;
puts("modpow(2,q,71)");
for (i = 1; i <= 70 ; ++i) {
printf("modpow(2,%2d,71) = %3d\n", i, modpow(2, i, 71));
}
puts("modpow(a,345,691)");
for (i = 1; i <= 59 ; ++i) {
printf("modpow(%2d,345,691) = %3d\n", i, modpow(i, 345, 691));
}
return 0;
}
int modpow(int a, int q, int p)
{
int i, sum = 1;
for (i = 0; i < q; ++i) {
sum = (sum * a) % p;
}
return sum;
}
0811デフォルトの名無しさん
2008/12/25(木) 20:11:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8478.txt
0812デフォルトの名無しさん
2008/12/25(木) 20:13:13ありがとうございます
0813デフォルトの名無しさん
2008/12/25(木) 20:18:31#include <math.h> を加え
double modpow (int a,int b,int c) {
return pow((double)a,(double)b) % (double)c;
}
別にint型のままでいいなら
int modpow (int a,int b,int c) {
return pow(a,b) % c;
}
んで
int a,q;
for(i = 1;q <= 70;i++) printf("%d ",modpow(2,q,71));
for(i = 1;q <= 50;i++) printf("%d ",modpow(a,345,71));
pow(a,q) はaのq乗を求めるっぽいけどdouble専用だったか忘れた
0814デフォルトの名無しさん
2008/12/25(木) 20:20:480815デフォルトの名無しさん
2008/12/25(木) 20:32:57http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8479.c
0816813
2008/12/25(木) 20:43:54for文こと間違えたw
for(a = 1;a <= 70;a++) 〜
for(q = 1;q <= 50;q++) 〜 だな
うん、多分これは絶対コンパイルエラーでる
今修正したけど絶対出る
0818デフォルトの名無しさん
2008/12/25(木) 22:24:56んなことしたら、あっという間にオーバーフローして使い物にならんわw
因みに、巨大な整数を扱うときに使うアルゴリズムはこんな感じ
int modpow(int a, int q, int p)
{
int i, x = 1;
for(i = 1 << 30; i > 0; i >>= 1) {
x = (x * x) % p;
if(q & i) x = (x * a) % p;
}
return x;
}
0819デフォルトの名無しさん
2008/12/25(木) 22:43:36これって、授業の趣旨にもよるよなあ
何の制限もない(プログラミングの基礎)ならオーバーフローとか
気にしなくてもいいだろうが、
ちょっと整数論とかやったあとだと剰余の扱いをうまく計算しろっていう
課題にも見える
0820デフォルトの名無しさん
2008/12/25(木) 22:48:300821デフォルトの名無しさん
2008/12/25(木) 22:55:390が正に入るから、負の数の方が一個多い
0822デフォルトの名無しさん
2008/12/25(木) 23:13:17そりゃ 16bit 系の場合だな。正確には -32768 〜 32767 の 65536 個
int のサイズはプラットフォーム依存だから
普通のPCみたいな32bit系だったら -2147483648 〜 2147483647 だよ
>>821
0は正に入らないし、正に含めたら負と同じ数だろ
0823デフォルトの名無しさん
2008/12/25(木) 23:15:32[2] 問題文: 16進数を入力するプログラムを作れ
例
hello>inputhex
inputhex?
answer: 1000
このように対応する10進数を表示する。
[3] 環境
[3.1] OS: windows xp
[3.2] コンパイラ名とバージョン:gcc -o
[3.3] 言語: C言語
[4] 期限: 2009年1月10日
[5] その他の制限:scanf使用不可です、よろしくお願いします。
0824デフォルトの名無しさん
2008/12/25(木) 23:16:22ちょっと顔洗ってくる
0825821
2008/12/25(木) 23:17:23ていうか自分で -2147483648 〜 2147483647 って書いてるじゃん
0826デフォルトの名無しさん
2008/12/25(木) 23:17:35#include<stdio.h>
int main(void)
{
int i, j, a, sum = 0;
char temp[100];
for (i = 0; i < 5; i++) {
a = 0;
gets(temp);
if(temp[0] == NULL) {
printf("Error!!改行のみの入力\n");
return 1;
}
else if (temp[0] == '-') { /* 負の数 */
printf("Error!!負の数\n");
return 1;
}
else {
for(j = 0; j < 5; j++){
if (temp[j] == NULL) break;
if(temp[j] < '0' || temp[j] > '9') { /* 数値以外の入力 */
printf("Error!!数字文字以外の入力\n");
return 1;
}
a =a * 10 + (temp[j] - '0');
}
}
sum += a;
}
printf("和は%d\n", sum);
return 0;
}
0827デフォルトの名無しさん
2008/12/25(木) 23:19:13#include <stdlib.h>
#include <stdio.h>
int main()
{
char s[1000];
int x;
fputs("hello>inputhex\ninputhex? ", stdout);
fgets(s, 1000, stdin);
x = strtol(s, NULL, 16);
printf("answer: %d\n", x);
return 0;
}
0828822
2008/12/25(木) 23:32:13つまり -2147483648 〜 -1 の個数は 0 〜 2147483647 の個数よりも1多いと言いたいのですね、わかります (^^)
0829821
2008/12/25(木) 23:40:14負の数: -2147483648 〜 -1
ゼロ: 0
正の数: 1 〜 2147483647
そもそもは >>820 「-37750〜37750の・・・」 に対する突っ込みだよ
煽りにマジレスすんのつかれた
0830デフォルトの名無しさん
2008/12/25(木) 23:40:49もうそんな言い訳しなくていいから
0831デフォルトの名無しさん
2008/12/26(金) 00:06:190は先頭も0になっているわけだが、先頭が1でそれ以下が全て0でも
マイナスの値として使われているため、正と負では表現できるパターンに
1つ差があるということで。
0832初心者
2008/12/26(金) 00:40:20わからなくて困ってます。教えてください。
0833デフォルトの名無しさん
2008/12/26(金) 02:04:09ソートの方法は?なにか習ったの?
0834デフォルトの名無しさん
2008/12/26(金) 02:23:41#include<stdio.h>
enum{BU=1,RI}; // おいしい季節
struct data_t{
int num, k, s, r, e;
}*p, data[]={
{1, BU, 85, 32, 74},{2, RI , 33, 68, 52},{3, RI , 69, 97, 83},{4, BU, 72, 60, 65},
{5, BU, 46, 72, 88},{6, BU, 85, 41, 79},{7, RI , 77, 85, 52}
};
double ave3(struct data_t *data){return (data->s+data->r+data->e)/3.0;} // やらないか
void swap(struct data_t *a, struct data_t *b){struct data_t tmp;tmp=*a;*a=*b;*b=tmp;}
const char *rank(struct data_t *data){
int score=-1;
if(data->k==BU) score=(data->s+data->e)/2;
if(data->k==RI) score=(data->r+data->e)/2;
if(score>80) return "A";
if(score>70) return "B";
if(score>60) return "C";
if(score>=0) return "D";
return "Unknown";
}
const char *symbol(int k){return (k==RI)?"理系":(k==BU)?"文系":"不明";}
int main(void){
int i, j, data_num=7;
for(i=0;i<data_num;i++)
for(j=0;j+1<data_num-i;j++)
if(ave3(&data[j])>ave3(&data[j+1])) swap(&data[j], &data[j+1]);
for(i=0,p=data;i<data_num;i++,p++)
printf("%04d %s %3d %3d %3d %6.2f %s\n", p->num, symbol(p->k), p->s, p->r, p->e, ave3(p), rank(p));
return 0;
}
0835デフォルトの名無しさん
2008/12/26(金) 03:00:05A評価は固いぜ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8480.txt
0836デフォルトの名無しさん
2008/12/26(金) 03:51:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8481.txt
0837回答して下さる方へお願い
2008/12/26(金) 05:35:12明記下さると幸甚です。
★回答ソースに問題文の一部を転記して下さることをお願いします。
★アップローダーサイトを使わず、レスにソースを貼る場合でも
同様です。(問題文の箇条書きを1行明記)
★一言コメントを入れて下さると助かります。
0838デフォルトの名無しさん
2008/12/26(金) 05:55:01提示するのを原則とし、コンパイルしていないならしていないと書けば良いだろ。
0839デフォルトの名無しさん
2008/12/26(金) 07:27:35[2] 問題文(含コード&リンク):下に添付してます
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++2008
[3.3] 言語:C 言語
[4] 期限:今日中(午後1時まで)
[5] その他の制限:特にありません よろしくお願いします
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8482.txt
0840デフォルトの名無しさん
2008/12/26(金) 09:09:43#include <stdio.h>
#include <string.h>
void main ( void )
{
FILE *fpRead, *fpWrite ;
char savefile[256] ;
char buff[200] ;
size_t len, i, pos ;
printf ( "新規のテキストファイルの名前を入力してください\n->" ) ;
gets_s( savefile, 256 ) ;
fopen_s ( &fpWrite, savefile, "w" ) ;
fopen_s ( &fpRead, "test.c", "r" ) ;
while ( fgets(buff, 200, fpRead) != NULL ){
len = strlen(buff) ;
for ( i = 0 ; i < 4 ; i++ ){
for ( pos = 0 ; (i+pos) < len-1 ; pos += 4 ){
fprintf ( fpWrite, "%c", buff[i+pos] );
}
}
fprintf ( fpWrite, "\n" ) ;
}
fclose ( fpRead ) ;
fclose ( fpWrite ) ;
}
0841デフォルトの名無しさん
2008/12/26(金) 16:05:180842デフォルトの名無しさん
2008/12/26(金) 17:20:36[2]問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8484.txt
[3]環境
[3.1]OS:Windows
[3.3]言語:c++
[4]期限:1月10日まで
[5]特になし
0843デフォルトの名無しさん
2008/12/26(金) 17:53:080844デフォルトの名無しさん
2008/12/26(金) 18:11:59http://www.dotup.org/uploda/www.dotup.org16818.cpp
ループ多くて萎える・・・
int x,y,zをpublicにしたら怒られるよな、やっぱ
0845844
2008/12/26(金) 18:16:27if(a < 1001 && a > 0) これじゃ0を含まなくなるから
↓
if(a < 1001 && a >= 0) こんな感じにしといて
0846デフォルトの名無しさん
2008/12/26(金) 18:18:34質問者しだいだよね
0847デフォルトの名無しさん
2008/12/26(金) 18:21:38ありがとうございます
0848デフォルトの名無しさん
2008/12/26(金) 18:24:22setter でチェックしようとすると 戻りの void が仇になるね。
set から即 get で渡した値と異なっていたら再要求 とかも無駄が多い感じだな
0849デフォルトの名無しさん
2008/12/26(金) 18:33:57正常処理でループ抜けて、例外が来たらループ継続ってなんかいやな感じがする。
0850デフォルトの名無しさん
2008/12/26(金) 18:41:38[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8485.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C言語
[4] 期限:来週の月曜日
[5] その他の制限:特になし
0851デフォルトの名無しさん
2008/12/26(金) 18:42:200852デフォルトの名無しさん
2008/12/26(金) 20:36:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8486.txt
0853デフォルトの名無しさん
2008/12/26(金) 20:54:04>>850とかstrncmpを習った直後の問題だったらstrncmp使ってないと減点だろうし
0854デフォルトの名無しさん
2008/12/26(金) 20:59:190855デフォルトの名無しさん
2008/12/26(金) 20:59:56ありがとうございました
>>853
すみません、気を付けます
0856デフォルトの名無しさん
2008/12/26(金) 22:23:15ほんとに制限無かったら
>>850は
return strstr(txt, pat) != NULL ? (int)(ans - buff1) : -1;
とか書くんだけどさ、こういう初歩的な問題だと
多分出題者は上記のような答えは望んでないだろ?
0857デフォルトの名無しさん
2008/12/26(金) 22:26:36○return strstr(txt, pat) != NULL ? (int)(pat - txt) : -1;
0858デフォルトの名無しさん
2008/12/26(金) 22:28:27俺が悪かった、忘れてくれ。
カチャ
;y=ー( ゚д゚)・∵. ターン
\/| y |)
0859デフォルトの名無しさん
2008/12/26(金) 23:28:20丸写しは否認する
0860デフォルトの名無しさん
2008/12/26(金) 23:53:15#include <stdio.h>
int main(void)
{ int i, t;
int now[1001], prev[1001];
for(i = 0; i < 500; i++) {
now[i] = 0; }
now[500] = 1;
printf("%d %d\n", 500, 0);
for(i = 501; i < 1001; i++) {
now[i] = 0; }
for(i = 0; i < 1001; i++) {
prev[i] = now[i]; }
for(t = 1; t < 256; t++) {
now[0] = 0;
now[1000] = 0;
for(i = 1; i < 1000; i++) {
if (prev[i-1] == prev[i+1]) {
now[i] = 0;
} else {
now[i] = 1;
printf("%d %d\n", i, -t);
} }
for(i =0; i < 1001; i++) {
prev[i] = now[i];
} }
return (0);}
を書き換えて、2行目以降、下記のルールに従うプログラム を作成して下さい。1行目は上のプログラムと同じにしてください。
時刻t-1での 場所i-1, i, i+1の値 111 110 101 100 011 010 001 000
時刻tでの場所iの値 0 0 0 1 1 1 1 0
0861デフォルトの名無しさん
2008/12/27(土) 00:06:200862デフォルトの名無しさん
2008/12/27(土) 00:10:020863デフォルトの名無しさん
2008/12/27(土) 00:12:280864デフォルトの名無しさん
2008/12/27(土) 00:21:50t は時刻で 1〜 256 の値
i は位置を表していて、0〜1000 の値
初期時刻で i == 500 の位置だけが 1 で、他が 0
場所 i において、両端の点の前時刻(t-1)の値が0のとき0で
それ以外は 1 の値をとる
これって要は波動方程式みたいな偏微分方程式の近似解じゃね?
時間がたつにつれて i = 500 を中心として奇数の場所が1になっていって、
t = 256 のときに 245〜755 までの奇数の位置で 1 になるんだな
0865デフォルトの名無しさん
2008/12/27(土) 00:26:10シルピンスキーのガスケットといわれるフラクタル図形(の近似図形)のものらしいです。
めんどうでしたらスルーしてください^^;
0866デフォルトの名無しさん
2008/12/27(土) 00:28:44prev[i-1], prev[i], prev[i+1] の並びが
(1,1,1) (1,1,0) (1,0,1) (0,0,0) のとき now[i] = 0 で
(1,0,0) (0,1,1) (0,1,0) (0,0,1) のとき now[i] = 1 ってこと
だとすれば、
if(prev[i - 1] == prev[i + 1] ){
now[i] = 0;
} else {
now[i] = 1;
printf("%d %d\n", i, -t);
}
の代わりに
switch (prev[i + 1] | prev[i] << 1 | prev[i - 1] << 2) {
case 7:
case 6:
case 5:
case 0:
now[i] = 0;
break;
case 4:
case 3:
case 2:
case 1:
now[i] = 1;
printf("%d %d\n", i, -t);
}
と書けばおk
0867デフォルトの名無しさん
2008/12/27(土) 00:57:11int map[8] = { 0, 1, 1, 1, 1, 0, 0, 0 };
now[i] = map[prev[i + 1] | prev[i] << 1 | prev[i - 1] << 2];
0869デフォルトの名無しさん
2008/12/27(土) 02:12:14本当にルールあってるのかなー
シルピンスキーのガスケットにはみえねえ
■■■
■■ ■
■■ ■■■■
■■ ■ ■
■■ ■■■■ ■■■
■■ ■ ■ ■
■■ ■■■■ ■■■■■■
■■ ■ ■■■ ■
■■ ■■■■ ■■ ■ ■■■
■■ ■ ■ ■■■■ ■■ ■
■■ ■■■■ ■■ ■ ■ ■■■■
■■ ■ ■■■ ■■ ■■ ■ ■
■■ ■■■■ ■■ ■■■ ■■■ ■■ ■■■
■■ ■ ■ ■■■ ■ ■■■ ■ ■
■■ ■■■■ ■■ ■ ■ ■■■■■ ■■■■■■■
■■ ■ ■■■ ■■■■ ■ ■■■ ■
■■ ■■■■ ■■ ■■■ ■■ ■■ ■ ■■■
■■ ■ ■ ■■■ ■ ■■ ■■■ ■■■■ ■■ ■
■■ ■■■■ ■■ ■ ■■■■■■ ■ ■ ■■■ ■■■■
■■ ■ ■■■ ■■■■ ■■■■ ■■■ ■■ ■ ■
■■ ■■■■ ■■ ■■■ ■ ■■ ■ ■ ■ ■■■ ■■■
■■ ■ ■ ■■■ ■ ■■■ ■■ ■ ■■■ ■■ ■ ■ ■ ■
■■ ■■■■ ■■ ■ ■■■ ■ ■ ■■■■ ■ ■ ■■ ■■■■■■
0870デフォルトの名無しさん
2008/12/27(土) 02:22:49.. .. .. .. ..■■
.. .. .. .. ..■ ..■
.. .. .. .. ..■■■■
.. .. .. .. ..■ .. .. ..■
.. .. .. .. ..■■ .. ..■■
.. .. .. .. ..■ ..■ ..■ ..■
.. .. .. .. ..■■■■■■■■
.. .. .. .. ..■ .. .. .. .. .. .. ..■
.. .. .. .. ..■■ .. .. .. .. .. ..■■
.. .. .. .. ..■ ..■ .. .. .. .. ..■ ..■
.. .. .. .. ..■■■■ .. .. .. ..■■■■
.. .. .. .. ..■ .. .. ..■ .. .. ..■ .. .. ..■
.. .. .. .. ..■■ .. ..■■ .. ..■■ .. ..■■
.. .. .. .. ..■ ..■ ..■ ..■ ..■ ..■ ..■ ..■
.. .. .. .. ..■■■■■■■■■■■■■■■■
.. .. .. .. ..■ .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..■
.. .. .. .. ..■■ .. .. .. .. .. .. .. .. .. .. .. .. .. ..■■
.. .. .. .. ..■ ..■ .. .. .. .. .. .. .. .. .. .. .. .. ..■ ..■
.. .. .. .. ..■■■■ .. .. .. .. .. .. .. .. .. .. .. ..■■■■
.. .. .. .. ..■ .. .. ..■ .. .. .. .. .. .. .. .. .. .. ..■ .. .. ..■
.. .. .. .. ..■■ .. ..■■ .. .. .. .. .. .. .. .. .. ..■■ .. ..■■
.. .. .. .. ..■ ..■ ..■ ..■ .. .. .. .. .. .. .. .. ..■ ..■ ..■ ..■
.. .. .. .. ..■■■■■■■■ .. .. .. .. .. .. .. ..■■■■■■■■
.. .. .. .. ..■ .. .. .. .. .. .. ..■ .. .. .. .. .. .. ..■ .. .. .. .. .. .. ..■
.. .. .. .. ..■■ .. .. .. .. .. ..■■ .. .. .. .. .. ..■■ .. .. .. .. .. ..■■
.. .. .. .. ..■ ..■ .. .. .. .. ..■ ..■ .. .. .. .. ..■ ..■ .. .. .. .. ..■ ..■
0871デフォルトの名無しさん
2008/12/27(土) 02:39:28顔を135度傾ければいいんじゃね?w
0872デフォルトの名無しさん
2008/12/27(土) 04:02:36安直な言い掛かりは?w
0873デフォルトの名無しさん
2008/12/27(土) 09:39:270874デフォルトの名無しさん
2008/12/27(土) 13:01:45今回も、ルールがおかしいのでは?
0875デフォルトの名無しさん
2008/12/27(土) 14:35:01[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8487.txt
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:Microsoft C/C++
[3.3] 言語:C言語
[4] 期限:2009年1月9日
[5] その他の制限:特にありません
よろしくお願いします。
0876デフォルトの名無しさん
2008/12/27(土) 14:37:02[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8488.txt
実行用プログラム(貼り付けたのはバブルソート用)から実行する、クイックソートとマージソートの
比較回数と交換回数をカウントするプログラムを書きなさい。
[3] 環境
[3.1] OS: Windows VISTA
[3.2] コンパイラ名とバージョン:bcc 5.5.1 for Win32
[3.3] 言語: C言語
[4] 期限: 年内
[5] その他の制限: ソースの提示はなし。
比較回数 交換回数 実行時間を確認できればOK
よろしくお願いします
0877デフォルトの名無しさん
2008/12/27(土) 15:10:41なんか汚いけどどーぞ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8489.txt
0878デフォルトの名無しさん
2008/12/27(土) 15:16:24#include <stdlib.h>
#include <stdio.h>
int fmap[7][2] = { { 'M', 1000 }, { 'D', 500 }, { 'C', 100 }, { 'L', 50 }, { 'X', 10 }, { 'V', 5 }, { 'I', 1 } };
int main()
{
char buf[8];
int n, i;
while(1) {
fputs("Input integer (0 QUIT) ====>", stdout);
fgets(buf, sizeof(buf), stdin);
fflush(stdin);
n = atoi(buf);
if(!n) break;
printf("%d ===> ", n);
for(i = 0; i < 7; ++i) {
while(n >= fmap[i][1]) {
n -= fmap[i][1];
printf("%c", fmap[i][0]);
}
}
putchar('\n');
}
return 0;
}
0879デフォルトの名無しさん
2008/12/27(土) 15:27:20http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8490.txt
0881デフォルトの名無しさん
2008/12/27(土) 15:56:09どれを採用するの?
0882デフォルトの名無しさん
2008/12/27(土) 16:31:560883デフォルトの名無しさん
2008/12/27(土) 17:21:09【依頼75】
パンツにWiiリモコンを装着し女性でも立ちションの気分を味わえる「スパー・ピーピー・ブラーザー」 2008年12月27日 09時00分00秒
http://gigazine.net/index.php?/news/comments/20081227_super_pii_pii_brothers/
さまざまな変わった商品を取り扱っているThink Geekというサイトで、
女性でも立ちションのきぶんを味わえるWii専用ソフトが販売されているようです。
パンツにWiiリモコンが付いており、そのパンツをはいてプレイするという
非常に斬新なゲームになっているようです。
プレイムービーを見るとかなりシュールで笑ってしまいます。
では、どのようなソフトなのか見てみましょう
これが「スパー・ピーピー・ブラーザー」。本体価格は約35ドル(約3200円)。
http://gigazine.jp/img/2008/12/27/super_pii_pii_brothers/super-pii-pii-brothers-nintendo-wii-2.jpg
ゲーム中の画像
http://gigazine.jp/img/2008/12/27/super_pii_pii_brothers/Snap2.jpg
http://gigazine.jp/img/2008/12/27/super_pii_pii_brothers/Snap6.jpg
http://gigazine.jp/img/2008/12/27/super_pii_pii_brothers/super-pii-pii-brothers-nintendo-wii-1_m.jpg
プレイ動画
http://jp.youtube.com/watch?v=yQNKRDFanQE
0884デフォルトの名無しさん
2008/12/27(土) 18:31:56VC2008で確認。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8491.txt
0885デフォルトの名無しさん
2008/12/27(土) 20:18:06[2] 問題文
男子は A1、A2、A3 の3人
女子は B1、B2、B3 の3人がいます。
その際の、
男女がそれぞれあぶれない、カップルの組み合わせ六通りを
出力させなさい。
出力例
A1&B1、A2&B2、A3&B3
A1&B1、A2&B3、A3&B2
A1&B2、A2&B3、A3&B1
A1&B2、A2&B1、A3&B3
A1&B3、A2&B1、A3&B2
A1&B3、A2&B2、A3&B1
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:[2008年12月29日 00:00 まで]
[5] もし、APIが使えそうな場合でも、APIは使わないで欲しいです。
是非、よろしくお願いいたします。
0886デフォルトの名無しさん
2008/12/27(土) 20:19:150887デフォルトの名無しさん
2008/12/27(土) 20:19:530888デフォルトの名無しさん
2008/12/27(土) 20:50:42#include<stdio.h>
int main(void)
{
int a, b, i, j, m, n;
n = 3;
for (m = 1, i = n; i > 0; i--) m *= i;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
a = j;
b = (i%2) ? (m + (i/2) - j)%3: (j + (i/2))%3;
printf("A%d & B%d ,", a+1, b+1);
}
printf("\n");
}
return 0;
}
0889デフォルトの名無しさん
2008/12/27(土) 21:54:11a[2] = 6 - (a[0] + a[1]) と置いて(パターン数/2)+1回目以降のa[0]とa[1]をスワップさせればあら不思議
パターン数わかってないとできないし、要素数3じゃないとできないのもあれだけどねえ
int i;
int a[3];
for(i = 1;i <= 6;i++) {
int a[3];
if(i < 4) {
a[0] = (i%3)+1;
a[1] = (i+1)%3+1;
a[2] = 6 - (a[0]+a[1]);
printf("%d, %d, %d \n",a[0],a[1],a[2]);
}
if(i >= 4) {
a[1] = (i%3)+1;
a[0] = (i+1)%3+1;
a[2] = 6 - (a[0]+a[1]);
printf("%d, %d, %d \n",a[0],a[1],a[2]);
}
}
0890デフォルトの名無しさん
2008/12/28(日) 02:16:39[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8492.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月29日午前10時まで
[5]特になし。
0891デフォルトの名無しさん
2008/12/28(日) 02:25:38#include<stdio.h>
int main(void)
{
int num;
scanf("%d", &num);
if(num==1 || num==10)
printf("%d", num*10);
else if(num==2 || num==20)
printf("%d", num*20);
else
printf("%d", 0);
return 0;
}
#include<stdio.h>
int main(void)
{
int num;
scanf("%d", &num);
switch(num)
{
case 1:
case 10:
printf("%d", num*10); break;
case 2:
case 20:
printf("%d", num*20); break;
default:
printf("%d", 0); break;
}
return 0;
}
0892デフォルトの名無しさん
2008/12/28(日) 02:26:21VC++使わなくていいよ
つかなんでこんな簡単な奴もできねえんだよ・・・
0893デフォルトの名無しさん
2008/12/28(日) 03:41:270894デフォルトの名無しさん
2008/12/28(日) 03:43:480895デフォルトの名無しさん
2008/12/28(日) 03:49:22このスレでは偉そうになるわけだw
0896デフォルトの名無しさん
2008/12/28(日) 03:54:100897デフォルトの名無しさん
2008/12/28(日) 03:56:05今は論文でさえ、まるごとコピーで卒業できる時代だぜ。
0898デフォルトの名無しさん
2008/12/28(日) 03:58:17スレない探すのもめんどいね
0899デフォルトの名無しさん
2008/12/28(日) 05:39:110900デフォルトの名無しさん
2008/12/28(日) 06:00:14論文の複製、無修正別名付与、或は修正後同名付与が善になる
時代→21世紀
このパラダイムシフトの意味がわからないオコチャマ
が回答者として集うスレでつねw
0901デフォルトの名無しさん
2008/12/28(日) 09:01:43意味が分からないから詳しく教えてくれないか?
0902デフォルトの名無しさん
2008/12/28(日) 12:44:22おりはこの頃、理系大学単位不足で中退しました。。。。。。
0903デフォルトの名無しさん
2008/12/28(日) 12:46:27ってことは、その頃にその大学の卒業生はまだまともだった可能性が高いな
0904デフォルトの名無しさん
2008/12/28(日) 12:52:47まともかな?コピー機の前に20人ぐらい並ぶ時代だったけど。
0905デフォルトの名無しさん
2008/12/28(日) 15:03:51完成度の本質的に低いプログラムを握らせて後から
修正して辻褄を合わるやり方は今後一切通用しなく
なるだろな。
0906デフォルトの名無しさん
2008/12/28(日) 15:07:00ねーよ。今後もずっとそれ。
0907デフォルトの名無しさん
2008/12/29(月) 00:51:52[2]問題文:
OS上で一般ユーザー権限のないプログラムがスタックオーバーフローを使って管理
者権限を得て動作するようなプログラムを作成せよ。
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: cygwin
[3.3]言語:C
[4]期限:2008年12月31日午後5時まで
[5]特になし。
全く見当がつかないのでどうかよろしくお願いします。
0908デフォルトの名無しさん
2008/12/29(月) 01:10:24さてと、ちょっとおじさんと、警察署に行こうか?
0909デフォルトの名無しさん
2008/12/29(月) 01:29:10学生さんも大変だw
0910デフォルトの名無しさん
2008/12/29(月) 02:02:41わろたw
0911907
2008/12/29(月) 05:04:13問題は、スタックオーバーフローによって本来起こり得ない動作
をするプログラム(printf文で文字を出力等)を作成せよとのことです。
完全にやってることハッカーですもんねw
すいませんがどなたかよろしくお願いします。
0912デフォルトの名無しさん
2008/12/29(月) 05:16:420913デフォルトの名無しさん
2008/12/29(月) 05:20:500914デフォルトの名無しさん
2008/12/29(月) 06:46:58マジレスしとこうか
スタックオーバーフローを利用したその手の手法は
現行のOSじゃ不可能
途中で落っこちる
0915デフォルトの名無しさん
2008/12/29(月) 07:06:19#include<stdio.h>
#include<string.h>
int main(void){
char a[]="Good morning.";
char b[]="Good afternoon.";
char c[]="Good evening.";
strcat(b, "!dummy!");
puts(a);
puts(b);
puts(c);
return 0;
}
0916デフォルトの名無しさん
2008/12/29(月) 07:33:010917デフォルトの名無しさん
2008/12/29(月) 07:36:220918デフォルトの名無しさん
2008/12/29(月) 07:38:54いまどきの libc なんかは、スタックと自動変数の位置差をランダムに変える仕様になってるからな
>>916
printf文で文字を出力等といってるからバッファ溢れでいいんじゃね
もともと>>907が「勘違い」だったことを考えると
0919デフォルトの名無しさん
2008/12/29(月) 07:42:32ってか環境(コンパイラ等)によっては動かんだろうけど
#include<stdio.h>
void b(void);
void a(void *dummy){
void **p;
printf("%s begin\n", __FUNCTION__);
p=&dummy;
p[-1]=b;
printf("%s end\n", __FUNCTION__);
}
void b(void){
int dummy;
printf("%s begin\n", __FUNCTION__);
a(&dummy);
printf("%s end\n", __FUNCTION__);
}
int main(void){
b();
return 0;
}
0920デフォルトの名無しさん
2008/12/29(月) 07:55:40マシン語に落とした時に呼び出し規約などのabiとして
結果的にスタック問題が発生する事があるのかもしれないけど、
posix,win32レベルじゃないと分からないよね?
ましてや権限云々など。
0921746
2008/12/29(月) 11:50:12[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8494.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:今年中
[5] 746ですがうまくできなかったのでやりなおしを出されてしまいました。
特に回転させたものの比較がよくわからないです
0922デフォルトの名無しさん
2008/12/29(月) 14:53:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8495.txt
0923デフォルトの名無しさん
2008/12/29(月) 16:00:11[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8496.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: VC++2005
[3.3] 言語: C++
[4] 期限: 今年中
[5] その他の制限: 特にないです
よろしくお願いします。
0924デフォルトの名無しさん
2008/12/29(月) 16:49:07[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8497.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Microsoft C/C++
[3.3] 言語:C
[4] 期限:2009年1月9日
[5] その他の制限:特にありません
よろしくお願いします。
0925デフォルトの名無しさん
2008/12/29(月) 17:04:30ググれば掃いて捨てるほどでてくるだろ
0926デフォルトの名無しさん
2008/12/29(月) 19:09:50#include<stdio.h>
#define MAXNUM 1000
int main(void)
{
char flag[MAXNUM+1]={1,1};
int i, j;
for(i=0;i*i<=MAXNUM;i++)
{
if(!flag[i])
{
for(j=i*2;j<=MAXNUM;j+=i) flag[j]=1;
}
}
for(i=0;i<=MAXNUM;i++)
{
if(!flag[i])
{
printf(" %4d", i);
}
}
return 0;
}
0927デフォルトの名無しさん
2008/12/29(月) 22:16:50[2] 問題文(含コード&リンク):
ttp://www.jra.go.jp/JRADB/accessO.html にある数値の中から
問(1) 100.0以上1000.0未満の数
問(2) 1000.0以上10000.0未満の数
問(3) 10000以上の数
がそれぞれいくつあるか数えるプログラムを作れるなら作りなさい。(加点課題)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
[3.3] 言語:C
[4] 期限:2008年1月3日第5R発走時刻までに教授に送信
[5] その他の制限:今は構造体を習い始めたところ。関数までは基本的なものなら理解できる。
0928デフォルトの名無しさん
2008/12/29(月) 22:17:420929デフォルトの名無しさん
2008/12/29(月) 22:20:12あとプログラムでwebページ取得しろっていう意味でいいのか?
0931デフォルトの名無しさん
2008/12/30(火) 00:01:45あとは、出来さえすれば良いので習ってない知識使うも自由、問題文の解釈も自由、らしい。
教授の趣味丸出しの課題ですいません
0932デフォルトの名無しさん
2008/12/30(火) 00:45:230933デフォルトの名無しさん
2008/12/30(火) 01:40:55サーバーにメタデータを要求する仕組みを解析するのって簡単にできるん?
0934デフォルトの名無しさん
2008/12/30(火) 02:22:14勝手に改行が入ってしまいます。
<例>
scanf("%d",&menu);
fgets(ptr,LEN,stdin);
どうすればよいのでしょうか?
0935デフォルトの名無しさん
2008/12/30(火) 02:24:06scanf()系の関数とgets()系の関数は混ぜて使わない方が良い
どっちかに統一したらよい
0936デフォルトの名無しさん
2008/12/30(火) 02:25:54postしたりするだけで済む(とは限らないけどさ)んじゃねーの?
それなら、htmlちらっとみればできんじゃね?
どの道URLで取得は絶対に不可能なんだよなぁwどの情報表示なのかわかんねーもんww
0937デフォルトの名無しさん
2008/12/30(火) 02:28:40getsで統一したい場合、文字列として数字を読みこまなきゃだめですかね?
そこからコード変換して。
0938デフォルトの名無しさん
2008/12/30(火) 02:31:38fgetsしたものをsscanfにかけるのが楽かと、バッファの扱いに関してはだけど
整数のオーバーフローとかはまた別で
0939デフォルトの名無しさん
2008/12/30(火) 02:33:27よくあるのは、fgets した後に sscanf かな
その例だと
fgets(ptr, LEN, stdin);
sscanf(ptr, "%d", &menu);
fgets(ptr, LEN, stdin);
混ぜるなの理由は、scanf したとき '\n' は stdin ストリームから取り込まれないので
次の fgets の最初の文字が '\n' になるので結果的に fgets は空の文字列になって
しまうんだな
0940デフォルトの名無しさん
2008/12/30(火) 02:37:36つけたらできなかったっけ?
0941デフォルトの名無しさん
2008/12/30(火) 02:43:30int menu;
fgets(tmp,128,stdin);
sscanf(tmp,"%d",&menu);
試しにこうしてみたら動きました。
tmpの型サイズが[128]となっているのが不細工で気に入りませんが、
わざわざポインタを使うのもどうかと思ったので。(数字入力は関数として作っています。なのでptrは使えない)
もっと美しい方法があれば知りたいです。
0942デフォルトの名無しさん
2008/12/30(火) 02:49:400943デフォルトの名無しさん
2008/12/30(火) 04:21:18それはM$のCのみの処理系依存
標準では使えない
0944デフォルトの名無しさん
2008/12/30(火) 04:58:11メタデータというか、GETリクエストして得られたHTMLを解析すればいいと思う。
みれないのは現在そのファイルがないのか、アクセス制限なのか分からないけれど、
後者であればブラウザで表示するまでのパケットをみればどうにかなるんじゃない?
公開ページだからせいぜいReferer程度のものと思うけれど。
あと、こういう課題が出るくらいだからその辺(通信まわり)の知識もあるでしょきっと。
0945デフォルトの名無しさん
2008/12/30(火) 05:02:42勘違いしてないか?getしてもなんの意味もないだろ?
0946デフォルトの名無しさん
2008/12/30(火) 05:03:59学習レベルと要求に差がありすぎない?
なんか条件があるはず
0947デフォルトの名無しさん
2008/12/30(火) 05:10:03提示されたURLがpostリクエストの結果表示に過ぎないから
URLの入力で・・・
って言う問題文は明らかにおかしい、URLだけじゃ不正ページになるだけだもの
どこか勘違いしてるはず
0948デフォルトの名無しさん
2008/12/30(火) 05:13:41<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="gray12"><font color="#FA3515">エラー013</font></td>
</tr>
<tr>
<td><strong><font color="#FF0000" size="6">パラメータエラー</font></strong></td>
</tr>
そのページの一部を切り抜いてきたものだけど、
例えば、100%, gray12bといった数字が少しでも含まれるものも対象?
あと16進数のFA3515は、3515と解釈すればいいのかな…?
0949デフォルトの名無しさん
2008/12/30(火) 05:17:05>>931
安価がないからな・・・
これ見る限り不正ページは意図したものではないんじゃねー?
0950デフォルトの名無しさん
2008/12/30(火) 06:08:40あんまりサイトみてなかった。
こりゃ確かにPOSTしないとだめでした。
まあ、なもんで、>>947のURLだけじゃダメというのは同意。
あとは何をPOSTすればいいか分かればOKだねー
0951デフォルトの名無しさん
2008/12/30(火) 06:16:03単にサンプルとしてこのページの値で初期化しろって。
0952デフォルトの名無しさん
2008/12/30(火) 09:26:420953,,・´∀`・,,)っ-○◎●
2008/12/30(火) 16:05:47動作がMS環境依存で移植性がないのと、ファイルからリダイレクトしたときの動作がかなり怪しくなるので不可。
リアル大坊のときはこんな厨テク使ってた。
#define endscanf() do {} while (getchar() != '\n')
0954デフォルトの名無しさん
2008/12/30(火) 16:08:04お前のそれもそうだよなw
0955デフォルトの名無しさん
2008/12/30(火) 16:14:220956デフォルトの名無しさん
2008/12/30(火) 16:42:59rewindより遥かにましだよ。まさに厨テクという言葉がお似合いだけど。
0957デフォルトの名無しさん
2008/12/30(火) 18:17:39gets()とscanf()ってあまりよろしくないんですね
てっきりそれでもいいかなと思ってました。
0958デフォルトの名無しさん
2008/12/30(火) 19:23:47[2] 一度提出したのですが、まったく仕様を満たしていないと言われたので組みなおしをお願いしたいのですが…。
以下のリンクに問題、一度提出したプログラム、それに対する指摘を入れてあるのでお願いします。
http://toku.xdisc.net/cgi/up/ttt/nm7318.zip
(テンプレにあったアップローダーにアクセスできなかったので別のところから借りました。)
[3] 環境
[3.1] WinXP
[3.2] Borland C++ Compiler 5.5
[3.3] 言語:C言語
[4] 期限:[2008年1月2日22:00まで]
[5] 原則的にgoto 文は使用しない。
do while ループに関してはできるかぎり使用せず、while に統一する。
※キーボードからの入力は、scanf 関数およびgets 関数を使用せず、getchar 関数または、
fgets 関数を使用すること。
0959デフォルトの名無しさん
2008/12/30(火) 20:00:44gets使ってるじゃないか
0960デフォルトの名無しさん
2008/12/30(火) 20:18:24http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8498.txt
0961デフォルトの名無しさん
2008/12/30(火) 20:19:133数値の和を求める問題で、getchar関数を使うとして、1数値目を8文字目まで読み込んで後は読み捨てるとすると、
2数値目を読み込むとき今度困ったりしない?2数値目は9文字目から改行までにするの?それとも
次の改行が終わって(改行は1個とは限らない)次の数値が始まる所にするの?
いずれにしても厳しい先生だなw
0962デフォルトの名無しさん
2008/12/30(火) 21:06:27すいません。
ルールにgets、puts等を使ってはいけないというのを見逃してしまいまして。
申し訳ないです。自分のミスです。
>>960
ありがとうございます。
このプログラムから最後の
”Input \"c\" to continue”を抜かして、比較が終わったら、
何かキーを押して終了します。
を表示したいのですが…。
どうすればよろしいでしょうか。
>>961
文字を入れる→改行が入力されたら2つ目の数値へ。
1数値目が入力される→改行が2回、等の場合は2つ目の数値が入力される前に改行が入力されたので
”Error!!:数字文字以外の入力”と表示されるようにしていただきたいのです。
ex. 1234567→改行を2回入力したとき
1番目の数値入力:1234567
Error!!:数字文字以外の入力
何かキーを押して終了。
という感じです。
お願いします。
0963デフォルトの名無しさん
2008/12/30(火) 22:57:53[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8499.txt
[3] 環境
[3.1] WinVista
[3.2] Visual C++ 2008 Express Edition
[3.3] C
[4] 期限:特になし
[5] 指定:特になし
英単語管理プログラムで、既にプログラムはできています。
>配列の要素数を変更可能にするなどプリプロセッサ制御文を用いて拡張性の高いプログラムになるように工夫せよ.また,分割コンパイルしやすいように各機能別に関数化すること.
とあるのですが、綺麗に関数を分ける方法がわかりません。
独学で無理矢理分割しても自分のためにならないと思うので、各機能の関数化をお願いしたいです。
0964デフォルトの名無しさん
2008/12/30(火) 23:18:19まずはfopen周りをなんとかした方がいい。
0965デフォルトの名無しさん
2008/12/30(火) 23:41:570966デフォルトの名無しさん
2008/12/30(火) 23:50:07変な覚え方するより、セオリーに従った方法で覚えたほうが絶対いいと思うのですが、、
先生に質問しようにも学校は休みですし、他にも課題は大量にあるので。
0967965
2008/12/30(火) 23:53:240968デフォルトの名無しさん
2008/12/30(火) 23:57:22それは見れば大体分かることだと思います。
for文を使わず一つ一つの処理を書いてたり
else文を使わずにifの連続で判断をしていたり、と
プログラミングってちょっとした知識を知っているかどうかでプログラムの美しさは
全然変わってくると思っているので。
0969デフォルトの名無しさん
2008/12/30(火) 23:58:550970デフォルトの名無しさん
2008/12/31(水) 00:04:250971デフォルトの名無しさん
2008/12/31(水) 00:09:23>それは見れば大体分かること
自分のコード見てどこがまずいかは見れば大体分かるよな?
まずはそっちを修正しようぜ。
0972デフォルトの名無しさん
2008/12/31(水) 00:15:16「まずい」というのはわかりませんが、「どうにかならないのかな?」と思うところはあります。
しかしそれを直す方法はわかりません(とりあえずは調べていますが)
0973デフォルトの名無しさん
2008/12/31(水) 00:21:21錯誤もいいところじゃね。
0974デフォルトの名無しさん
2008/12/31(水) 00:55:28普通、それはわかってないと言う。「大体わかる」とか書くから誤解される。
0975デフォルトの名無しさん
2008/12/31(水) 01:06:52こうでも書かないと「まずは自分で調べろ」と言われそうなので。
はっきりいって10枚程度のスライドでプリプロセッサだの関数だのと見せられた程度でわかるわけがわかりません。
参考サイトなんかを見てもバックグランドとなる知識がないため完璧に理解することができません。
おまけに「拡張性の高いプログラムになるように工夫せよ.また,分割コンパイルしやすいように」とわりますが、
こんなところまで教えてくれる初心者向けサイトはありません。(拡張性が高いはまだしも、分割コンパイルなんてやったことすらないのに)
だからここに来たわけです。ここなら経験豊富な人も多いだろうと思ったので。
0976デフォルトの名無しさん
2008/12/31(水) 01:10:090977デフォルトの名無しさん
2008/12/31(水) 01:11:47しかし仕様書にはそう書いてあるので。
0978デフォルトの名無しさん
2008/12/31(水) 01:12:53ttp://www.google.co.jp/search?q=%8Ag%92%A3%90%AB+%83v%83%8D%83O%83%89%83%80+%8A%D6%90%94%89%BB
「拡張性の高いプログラム 機能別に関数化」でぐぐったらこのスレがひっかかってちょっとワロタ
>>976
とりあえず今の内に構造化とか勉強しとけって解釈でいいんじゃね?
0979デフォルトの名無しさん
2008/12/31(水) 01:14:55>こうでも書かないと「まずは自分で調べろ」と言われそうなので。
うそだったわけだ。
0980デフォルトの名無しさん
2008/12/31(水) 01:18:02質問スレですらそうなのに、ましてここは宿題スレだ。
0981デフォルトの名無しさん
2008/12/31(水) 01:19:28ファイル操作してるところを関数にしてみたら
0982デフォルトの名無しさん
2008/12/31(水) 01:19:49個人的に直したいと思うのは、
メニュー選択時の数字入力方式
flag、tmpcは省略できるのではないか
menu関数はもっと別のアプローチがあるのではないか(現時点では初めのメニュー分にしか対応できない)
こんな感じです。
しかしその前にこれらを関数分割化することが大事だと思うので。
0983デフォルトの名無しさん
2008/12/31(水) 01:22:290984デフォルトの名無しさん
2008/12/31(水) 01:30:31ファイルのオープン等は外部関数でやってもよいのですか?
仮に
void file(){
fp=fopen("list.txt","w");
}
void main(){
file();
fclose(fp);
}
(fpの宣言等は省略)とやってもできるのか?
fpはグローバル変数としなければならないのか?
等々疑問が大量に湧いてきます。これらを虱潰しにやっていっても、もっと効率のよい方法があると思うと・・・
0985デフォルトの名無しさん
2008/12/31(水) 01:36:43単語登録毎に、ファイル読み込み、重複チェック、書き込みやれば、処理が簡潔にならない?
0986デフォルトの名無しさん
2008/12/31(水) 01:48:41とりあえずこのプログラムは仕様書の内容に忠実に再現してあるので、それは駄目なようです。
(初めにファイルを読み込み、無ければ作成。次にそれを配列に格納。後は処理を繰り返し、最後にファイルに格納)
考えるほど頭が痛くなってきます。
文字を入力して格納するにしても、文字の入力だけを関数にすればいいのか、格納まで行えばいいのか(格納するにはポインタを使うべきなのか、グローバル関数にするべきなのか)
0987デフォルトの名無しさん
2008/12/31(水) 01:56:24そんな拡張性のない方法はどうかと
あと改行の扱い方が半端無いなこれ
0988デフォルトの名無しさん
2008/12/31(水) 02:25:42関数云々より2次元配列が気に入らない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8502.txt
0989デフォルトの名無しさん
2008/12/31(水) 02:40:49staticやら#if 0やら、自分の知らない手法が大量に出ているので、一つ一つ調べていって理解してみます。
ありがとうございました!
少し教えていただきたいのですが、あの二次元配列の何が問題だったのでしょうか?
文章サイズも+1しているようですが(改行コード用?)
0990デフォルトの名無しさん
2008/12/31(水) 07:28:22ヌル文字('\0')用。
せっかくキリのいい256にしてるのに+1してるのはちょっとムズかゆかったりするけど、
まぁ個人的な話。
C/C++の宿題を片付けます 121代目
http://pc11.2ch.net/test/read.cgi/tech/1230678123/
0992デフォルトの名無しさん
2008/12/31(水) 13:14:43これでどう?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8503.txt
0993デフォルトの名無しさん
2008/12/31(水) 16:07:10123456789改行
abc
と入力したら
Error!! 数字文字以外の入力
Error!! 改行のみの入力
123456789 + 0 + 0 =123456789
何かキーを押して終了
と出て、
改行を3回入力したら
Error!! 改行のみの入力
Error!! 改行のみの入力
Error!! 改行のみの入力
何かキーを押して終了
と出たのですが、
これを
数字文字以外が入力された場合はその時点で
Error!! 数字文字以外の入力とだけ表示しそこで終了。
改行が入力された時点で
Error!! 改行のみ入力とだけ表示し終了するようにしたいのですが。
お願いします。
0994デフォルトの名無しさん
2008/12/31(水) 16:33:53break; を return 0; に変えればいいと思う
0995デフォルトの名無しさん
2008/12/31(水) 16:36:43[2] 問題文(含コード&リンク):
A[3][3]={{3.0,0.01,0.1},{0.01,2.0,0.1},{0.1,0.01,1.0}}の固有値をヤコビ法で求める
[3] 環境
[3.1] Linux(Ubuntu)
[3.2] コンパイラ名とバージョン: gcc4.2.4-1ubuntu3
[3.3] 言語: C
[4] 期限: 2009年1月15日13:00まで
[5] その他の制限: 特になし
たぶん途中まではできていると思うのですが無限ループしてしまいます。
どこがよくないのかを教えてください。お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8504.c
0996デフォルトの名無しさん
2008/12/31(水) 16:40:40Visual C++ 2008 EE だと無限ループしなかったよ
0997デフォルトの名無しさん
2008/12/31(水) 16:55:35最後の方に無限ループしないようにnでストッパーをつけています。
それを外すと無限ループして値も収束してくれません。
0998デフォルトの名無しさん
2008/12/31(水) 17:01:27じゃあpでbreak;しなかったってことでしょ?
毎回p=0と初期化してるのはなんで?
0999デフォルトの名無しさん
2008/12/31(水) 17:16:05すいません、もう一回よく考えてきます
1000デフォルトの名無しさん
2008/12/31(水) 17:29:0210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。