C/C++の宿題を片付けます 120代目

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
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/
2デフォルトの名無しさん:2008/12/16(火) 19:52:01
鏡を見ろよ、メガネピッツァさん?
3デフォルトの名無しさん:2008/12/16(火) 19:54:32
          ,. -―-、
         <-‐ヘ、9ノ‐>  
         从!イノiノヘilト   これどうぞ
         ゙ヘ(!|´ヮ`ノリ シュッ シュッ シュッ、アレ?
           /∩と彡 /
     彡   ノ,! /  ./  ミ ξ
   ξ     く/   ./    旦
   旦   /    ./
      /     /      ミ ξ
     /      /        旦
   | ̄ ̄ ̄ ̄ ̄|
   |          |
4デフォルトの名無しさん:2008/12/16(火) 20:32:25
>>前スレ998
a * Pn * (1 - area/Pn);
だとすると、
a * (Pn -area)
と言うことだもの。
整理されていない時点でおかしいし、内容も・・・
5デフォルトの名無しさん:2008/12/16(火) 20:34:58
>>前スレ992
int 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 される
6デフォルトの名無しさん:2008/12/16(火) 20:43:50
>>1
7998:2008/12/16(火) 20:59:33
>>1 乙


char* 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
8デフォルトの名無しさん:2008/12/16(火) 21:08:11
>>1さん乙
[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使用禁止

お願いします。
9デフォルトの名無しさん:2008/12/16(火) 21:10:19
汚名は返上すべき
10デフォルトの名無しさん:2008/12/16(火) 21:13:42
>>7 >>9
なんかスパロボにこんな台詞あったなwww
11デフォルトの名無しさん:2008/12/16(火) 21:14:17
わざと挽回にしてるのが理解できないとかw
12デフォルトの名無しさん:2008/12/16(火) 21:14:50
>>8 /* 酔っ払ってるから(ry *\
#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;
}
13デフォルトの名無しさん:2008/12/16(火) 21:24:40
[1] 授業単元: C言語システムプログラミング
[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の部分以外をお願いします。
14デフォルトの名無しさん:2008/12/16(火) 21:24:45
前スレ992です。

前スレ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])){
とすることで連続して空白文字がきた場合はカウントせず、
文字+空白文字となっているときのみカウントするようにしました。
15デフォルトの名無しさん:2008/12/16(火) 21:29:49
>>14
word("word?");
16デフォルトの名無しさん:2008/12/16(火) 21:47:28
前スレの962です。
申し訳ありませんが、もう一度お尋ねしたいと思います。

[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);
}
1716:2008/12/16(火) 21:48:01
>>16の続き

このプログラムの一部を関数にして書き換えたとする。

#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
1816:2008/12/16(火) 21:48:52
>>17の続き

いただいた回答を元に実行してみたのですが…
#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;
}
19デフォルトの名無しさん: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;
}
2016:2008/12/16(火) 21:49:26
>>18の続き


\\FILESV7\UN$\NE200071\デスクトップ\V\v.cpp(28) : error C2440: '=' : 'void' から 'int' に変換することはできません。
(新しい動作 ; ヘルプを参照)
void 型の式は他の型へ変換できません。

とエラーがでてしまいます…なぜでしょうか?
長々と、何度も申し訳ありません。
どなたか回答していただけたら嬉しいです。
21デフォルトの名無しさん:2008/12/16(火) 21:53:52
>>20
#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;
}
22デフォルトの名無しさん:2008/12/16(火) 21:54:59
指定された整数以下の最も大きなフィボナッチ数列に含まれる整数を返していないから。
要するにその関数は題意を満たしていない。
23デフォルトの名無しさん:2008/12/16(火) 22:03:24
>>16ー17
#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;
}
24デフォルトの名無しさん:2008/12/16(火) 22:06:25
>>17 >>16を使うのか。
#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;
}
2516:2008/12/16(火) 22:09:56
>>24
はい。
>>16を元に>>17に当てはまるように書き換えていただけたら嬉しいです。
2616:2008/12/16(火) 22:13:47
>>23
すみません、回答していただいたものを見落としていました
無事に実行できました、ありがとうございます!
27デフォルトの名無しさん:2008/12/16(火) 22:13:51
>>8
sum = N * (N+1) * (2*N+1) / 6;
28デフォルトの名無しさん:2008/12/16(火) 22:15:18
>>24
おれがなぐさめてやる。
2914:2008/12/16(火) 22:20:26
>>15
「word("word?");」と入力したとき、英単語「word」は2つあるにもかかわらず、
出力結果は1になってしまう、ということでしょうか?
30デフォルトの名無しさん:2008/12/16(火) 22:59:06
自由課題、カモーン!タイピング、スロットマシン、15パズル、ヒットエンドラーン!じゃなくて
ブローも用意してアルヨー!
31デフォルトの名無しさん:2008/12/16(火) 23:06:19
>>29
0 にならない?
32デフォルトの名無しさん:2008/12/16(火) 23:08:05
お手隙の方がいたら >>13 をお願いします。
途中まででも結構です
33デフォルトの名無しさん:2008/12/16(火) 23:09:53
初心者なんやけどCとC++って C++ = C + αみたいに
Cが強化されたのがC++ってことでいいのかな?
CでできることはC++で全て可能 とか
34デフォルトの名無しさん:2008/12/16(火) 23:15:09
>>33
ここで質問する話じゃねえだろ糞野郎
35デフォルトの名無しさん:2008/12/16(火) 23:17:44
>>34
大人しくここから出ていけよ、何か気に入らない発言があると
罵倒しないと気が済まない、一言居士
36デフォルトの名無しさん:2008/12/16(火) 23:18:36
>>33
C++というくらいだから、Cに何かを付け加えたもの。
一番大きいのはクラス。
37デフォルトの名無しさん:2008/12/16(火) 23:19:38
つまんない人がいますよね
プログラムを作る人はこうなのだろうかと思うと、悲しくなってくる
38デフォルトの名無しさん:2008/12/16(火) 23:21:08
C++はCのソースそのままでは動作が違うんだが、付け加えたものなんて嘘つくな
39デフォルトの名無しさん:2008/12/16(火) 23:22:06
40デフォルトの名無しさん:2008/12/16(火) 23:22:28
>>37
そんなスレ違いな発言を敢えてするお前もどうかと。
41デフォルトの名無しさん:2008/12/16(火) 23:23:19
>>38
Cにだって、ANSIとC99では動作が違う
そのくらいの差だろう
42デフォルトの名無しさん:2008/12/16(火) 23:26:58
>>41
ANSIとは?C99とは?
馬鹿丸出しですね
43デフォルトの名無しさん:2008/12/16(火) 23:27:15
初心者なんやけどC++とC#って
┌─┐
│   ++
│   ++
└─┘
みたいにC++が更に強化されたのがC#ってことでいいのかな?
44デフォルトの名無しさん:2008/12/16(火) 23:27:33
>>42
程度の低いレスですねw
45デフォルトの名無しさん:2008/12/16(火) 23:27:46
いいよ。
46デフォルトの名無しさん:2008/12/16(火) 23:28:19
>>44
わかってないんだろうなこの馬鹿は
答えてみろよ
47デフォルトの名無しさん:2008/12/16(火) 23:28:37
>>46
>>42
わかってないんだろうなこの馬鹿は
答えてみろよ
48デフォルトの名無しさん:2008/12/16(火) 23:29:35
>>43
 冗談でそういわれている。
シンタックスは、似ているように見えるが、全く別物。
49デフォルトの名無しさん:2008/12/16(火) 23:30:02
>>47
ANSIとは?C99とは?
50デフォルトの名無しさん:2008/12/16(火) 23:32:54
知的に問題のある人の基地外発言↓

42 名前:デフォルトの名無しさん 投稿日:2008/12/16(火) 23:26:58
>>41
ANSIとは?C99とは?
馬鹿丸出しですね

↑特徴:罵倒(バカ、アホといった類)の言葉を平然と投げかける。
これだけで人間性の低さが露呈しているのだが、本人は気づかないんでしょうね。
この世に、自分が知っていること、知らないことなんていくらでもあるが、
知らないようなことを持ち出して、知らなかったことを責め立てるくせに、
いざ自分が重要なことを知らないと他人から指摘されると、逆切れして
無関係な話を始め、お前は(自分がよく熟知していると自身のあることを持ち出して)
〜を知っているのか?自分基準でそれをこう答えないと、知らないことにするぞ、みたいな
自分の経験不足を無視して、相手の粗探しを始める。
あと、すれ違いだから、他所でやれ。
5114:2008/12/16(火) 23:34:26
>>31
結果は1になりました。
52デフォルトの名無しさん:2008/12/16(火) 23:34:43
ほんと馬鹿丸出しですね
知らないなら知らなかったと言えばいいのに
5314:2008/12/16(火) 23:35:17
>>39 前スレで既出だったんですね
ご親切にありがとうございました!
54デフォルトの名無しさん:2008/12/16(火) 23:36:18
[1] 興味本位で勉強中
[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言語
お願いします
55デフォルトの名無しさん:2008/12/16(火) 23:37:05
>>52
いや、あんた誰にレスしてんだ?無関係な人にレスして、自分の発言の汚さを
指摘されているって気づかない?バカだの丸出しだの、言動が低俗過ぎ。
そういう奴が言う言葉なんて、相手の粗探しをしようとしているとしか思えないのだが。
相手が何を知らないか、指摘すらしてないじゃん。自分はそうは思わない、程度の主張しかせず
相手にされていないって気づかない?w
56デフォルトの名無しさん:2008/12/16(火) 23:38:00
>>54
文字コードはEBCDICでいいのかい?
57デフォルトの名無しさん:2008/12/16(火) 23:38:33
>>55
お前は誰だ
58デフォルトの名無しさん:2008/12/16(火) 23:39:39
>>42
http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E
もちっとC言語について詳しくなってから発言しろ、青二才。
59デフォルトの名無しさん:2008/12/16(火) 23:40:38
>>58
もちっとC言語について詳しくなってから発言しろ、青二才。
60デフォルトの名無しさん:2008/12/16(火) 23:43:31
宿題スレだろ。スレ違いな発言で罵倒し合ってんじゃねー、出てけよ。
無関係な発言するなよ、出てけよ基地外 > バカとか平気で使う
精神レベルの低いお子ちゃまねぇ〜、おっぱい飲ーみたーいのぉ?

>>59
ぷっ、鸚鵡返ししか出来なくなったな。そういう 罵倒 しかしなくなった時点で
まともに議論が出来なくなったという証拠。言いたいことがあるなら、お前が
説明すれば良いだろ。ただし、スレタイを読めるくらいの日本語力をつけてから
日本語を話せよ、お子ちゃま。
61デフォルトの名無しさん:2008/12/16(火) 23:45:13
>>60
そんなに自分を責めるなよ
62デフォルトの名無しさん:2008/12/16(火) 23:49:58
42 名前:デフォルトの名無しさん 投稿日:2008/12/16(火) 23:26: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準拠を知らない無知は放置よろ。
63デフォルトの名無しさん:2008/12/16(火) 23:51:18
理解できてないなら黙ってればいいのに
64デフォルトの名無しさん:2008/12/16(火) 23:53:31
>>43
C++はCに1を加えたもの、もしくは、加える前の状態であるが、後で1加えられた状態になるもの
C♯はCを半音上げたもの
65デフォルトの名無しさん:2008/12/17(水) 00:03:38
>>2-1000
 とりあえず、スレッド違いなレスポンスは、控えるようにしてね。私のレスポンスを含めて。
チャットのように掲示板を使うガキは、もう一度掲示板の本質を考えてね。
最近ム板の一部のスレッドが、荒れているから、ID強制にした方が、良いと思う。
さて、リアルブートするか。
66デフォルトの名無しさん:2008/12/17(水) 00:04:26
ttp://ja.wikipedia.org/wiki/C99
> 少なくとも現時点の最新版に関しては、C++のC言語に対する上位互換性は完全に失われた。
検索すれば分かるものを。あと、C++コンパイラでCのソースが通るとか、
あれこれ言ったらキリがないんで。言語の使用とコンパイラの仕様も別に考えてくれ。
インターフェースなどの環境のこともあるが、所詮は0と1の数値データを
ちょちょいのちょいと操作、処理しているのさ。実行しているコンピュータ、
汎用電子”計算機”がな。

目の前にある文字や色のデータ、これもある法則や画像の形式に応じて
数値データが並んでいるんであって、それを色や形のあるものにしているのがソフト。
ある数値データを、ある法則に則って処理をしているわけだが。
ソフトは結局、OSやハードウェアの性能の範囲内の処理をしているのさ、ふっ。

あっ、宿題?今日は疲れたから、明日やってあげるね。麻呂のクソースでw
我ながら、ちょっと陶酔しちゃったぜ、かっちょえ〜〜!
67デフォルトの名無しさん:2008/12/17(水) 00:09:22
wikiがソースかよwwwwww
68デフォルトの名無しさん:2008/12/17(水) 00:12:22
>>66
0と1の数値データを操作しているという点には同意しかねる
69デフォルトの名無しさん:2008/12/17(水) 00:20:20
>>14
前スレ >>996 だけど、いい感じに仕上がったね。
70デフォルトの名無しさん:2008/12/17(水) 00:21:03
>>56
なんでもいいのでお願いします
71デフォルトの名無しさん:2008/12/17(水) 00:21:40
それを了承するとは。
興味があって勉強中ならもっと自分で頑張ってみてはどうかね
72デフォルトの名無しさん:2008/12/17(水) 00:25:08
>>54
こんな感じ?文字定数('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;
}
73デフォルトの名無しさん:2008/12/17(水) 00:40:55
どなたか>>19をお願いします('人`)
74デフォルトの名無しさん:2008/12/17(水) 00:41:38
[1]授業単元:C言語
[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]特にありません。
75デフォルトの名無しさん:2008/12/17(水) 00:46:56
>>68
なんで?事実だよ。0と1とはっきり記述されていはいないが、
磁気で記録するメディアには+か-、CDではレーザーの反射を読み取る仕組みが
挙げられ、穴が開いているかいないか、さらに、PC内部では電気信号で
やはり+か-かで、あとはそれらの組み合わせで、より多くのパターンを表現しているんだし。
ビットくらい、知っているだろ?そういうこと。

76デフォルトの名無しさん:2008/12/17(水) 00:49:26
[1] 授業単元: プログラミング
[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] その他の制限: ポインタを習っています。
ポインタの考え方が難しくてよくわかりません。
詳しい説明も付けてくれるとありがたいです。
よろしくお願いします。
77デフォルトの名無しさん:2008/12/17(水) 00:50:08
>>67
そこまで言うなら、wikiに事実無根や間違いがあるなら指摘しな。
他の資料を見ても、単純に言い切れない過去の歴史と仕様は存在しているし。
あと、何かと笑うだけの奴も無能。説明と言う説明が出来ていないから。
頼む、ランクはともかく、大学で実験や研究をしていない奴は黙っていてくれ。
そういう機関でそれなりのものを見てくれば、汎用電子計算機に対する考えは変わるよ。
少なくとも、目の前の色や画像データでウハウハやったり、KI・MO・I!文字データで
ウヒウヒやっている奴らが、0と1のデジタルデータに翻弄されているように見えるから。
その文章や画像も、真面目なものなら良いけどさ。例え風景を撮影した写真も、
所詮は0と1の組み合わせの数値データ。それをハードなりソフトで展開して
人間が認識できるある形になっているが、もとは無機質なデジタルメディアに記録された数値データ。
78デフォルトの名無しさん:2008/12/17(水) 00:51:29
>>63 お前が無知だということは、よーく分かった。お前が説明できないなら、黙っていれば良いだろw
あと、お前にお似合いのプレゼント。ちゃんとコンパイルして実行してくれ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;
}
7914:2008/12/17(水) 00:52:26
>>69
おかげ様で納得のいくプログラムになりました。
ご助力ありがとうございました。
80デフォルトの名無しさん:2008/12/17(水) 00:54:22
step  f1 f2 f3 f4
10 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

81デフォルトの名無しさん:2008/12/17(水) 00:57:12
>>77
いつになったら大学名教えてくれんだよw
82デフォルトの名無しさん:2008/12/17(水) 00:58:54
>>79
j=strlen(s);
は要らない
83デフォルトの名無しさん:2008/12/17(水) 01:04:06
>>80
宿題なのかな?
まずは頓珍漢なコードを見せてもらおうか
84デフォルトの名無しさん:2008/12/17(水) 01:04:07
0と1が思い浮かばなくても、ファイルのダンプをすれば、実行プログラム、テキストファイル、
画像データ、その他ファイルも、数値データの塊で、それを扱っているハードが
0と1の組み合わせで扱っていることくらい、普通に理解できる。
テレビを見て、画面の中に人がいるとは思わんだろ?w
あの映像も、何かハードウェアが映し出した映像を展開しているように、
数値データ(ファイル)をソフトに応じて実装された性能の範囲内で
処理を行っているのだよ、ワトソン君。
85デフォルトの名無しさん:2008/12/17(水) 01:06:52
この説明で相手より優位に立てると思ってる知能の低さが泣けてくる。
86デフォルトの名無しさん:2008/12/17(水) 01:11:08
http://cns-guide.sfc.keio.ac.jp/2002/2/1/1.html
> コンピュータ内部のすべての情報は ``デジタルデータ'' という情報形式で保存されています.
> デジタルデータとは,数字に置き替えられる形式の情報のことを指し,
> `0'と`1'の2通りの数字によって表現できます.文章や写真,映像,音声など
> 現実にあるさまざまな形式の情報は,デジタルデータに変換できます.
そういうこと。間違っていないことを、自分はそうは思いませんでは通用しないのが、
客観的な考えや意見が必要な人間社会で適合するには、重要なスキルだぞ。
嘘を言っていない人を嘘つき呼ばわりは、干されるだけ。もちっと理解力を身に着けような。
87デフォルトの名無しさん:2008/12/17(水) 01:25:21
>>74
#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;
}
88デフォルトの名無しさん:2008/12/17(水) 01:27:20
ぶっちゃけ、ここで聞いて要らん薮蛇出した奴には一緒っていっててもいいだろ。
89デフォルトの名無しさん:2008/12/17(水) 01:30:35
誰と戦ってるんだお前。
90デフォルトの名無しさん:2008/12/17(水) 01:51:40
[1] 授業単元: プログラミング演習
[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] その他の制限:制限なし

よろしくお願いします。
91デフォルトの名無しさん:2008/12/17(水) 02:02:09
これをc++のiostreamを使ったものに書き換えてください


#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;
}

92デフォルトの名無しさん:2008/12/17(水) 02:06:54
>>76
strncpy と同じ仕様でよければこうかな
#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;
}
93デフォルトの名無しさん:2008/12/17(水) 02:10:21
>>73
7行オセロを適当に改行してみたの?
94デフォルトの名無しさん:2008/12/17(水) 02:15:25
>>93
はい、分かりやすいように改行してみて、色々いじくってみたんですがエラーになってしまってお手上げで…
95デフォルトの名無しさん:2008/12/17(水) 02:16:40
>>91
#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つの文に複数の式書くのってなんかきもいな
96デフォルトの名無しさん:2008/12/17(水) 02:17:05
改行しただけで諦めただろwwwwww
97>>83 前半:2008/12/17(水) 02:18:18
#include <stdio.h>
#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);
}
98>>83 中半1:2008/12/17(水) 02:20:41

while(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];
}
99デフォルトの名無しさん:2008/12/17(水) 02:21:30
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);
}
100>>83 中半2:2008/12/17(水) 02:22:11
max1=f1[0]; /*データの最大値*/
for(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];
101デフォルトの名無しさん:2008/12/17(水) 02:23:35
おお、俺大人気。延々01の話されたよ!
もっとハードウェアに落ちた話かと思って、閾を超える超えないで判断していて、それを便宜上01に
してるだけ、といいたかった。
物理的な話だと思いこんでたからピットのtypoかと思ったりもしたのに。

デジタルデータは0と1なんだよ!とかここで講釈しても何になるというのかね。
102 ◆MiJ.aMrglc :2008/12/17(水) 02:23:48
[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] 期限:無期限ですが、できるだけ早く解決したい
103>>83 中半2:2008/12/17(水) 02:25:14
min1=f1[0]; /*データの最小値*/
for(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];
}
104>>83 last:2008/12/17(水) 02:26:39
for(i=0;i<MAX;i++) /*離散データ算出*/
f1[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);
}
105デフォルトの名無しさん:2008/12/17(水) 02:31:09
>>101
いや、普通に比喩としても、仕組みの説明でも0と1の話は出るよ。
有るか無いか?あるいは符号化の話では矩形はなども用いられて。
まぁ、デジタル機器の仕組みを知る上では、重要な知識だよ。
106デフォルトの名無しさん:2008/12/17(水) 02:32:07
ただ、本当に0と1という文字の形や、画像にしてもアナログ方式みたいな
形式ではなく、あくまでも 信号 や 符号 ということで用いられる。
107デフォルトの名無しさん:2008/12/17(水) 02:34:12
何を0として、何を1とするか、そこから考えないとだめじゃない?という
ハードよりの視点になってしまってたです。ごめんなさい。
108デフォルトの名無しさん:2008/12/17(水) 02:37:48
1を3で割れば仕組みが分かる。
109デフォルトの名無しさん:2008/12/17(水) 02:40:13
>>102
for (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]);
 }
}
110デフォルトの名無しさん:2008/12/17(水) 02:41:47
って麻呂みたいに書いてすぐミスに気づくとかorz
- if (idx != -1)
+ if (idx != 16)
です。

とりあえずこういう風に分けてみるのはどうでしょうか。
111デフォルトの名無しさん:2008/12/17(水) 02:42:59
ほんとだめだわ。。
>>110無しでお願いします。

吊ってくる
112デフォルトの名無しさん:2008/12/17(水) 04:35:14
>>102
大雑把にこういうことがしたいのか?と思た

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();
  }
113デフォルトの名無しさん:2008/12/17(水) 05:52:47
for (k=1; k<=512; k++) {
for (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]);
}
}
}
114デフォルトの名無しさん:2008/12/17(水) 06:35:56
[1]授業単元:C言語
[2]問題文: 文字列をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込め。
[3]環境
[3.1]OS:WindowsXP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月19日AM9時00分まで
[5]特にありません。
115デフォルトの名無しさん:2008/12/17(水) 06:47:26
>>80
長いコードは炉だでよろしく
変数の型がでたらめだったり、a, b, c, d に取り込んだ値をいつ使うのか不明だったり
いろいろ突っ込みどころがあるけど、

> (データの値−最小値)/(最大値−最小値)で各値を算出し

これ整数(0, 1)にならないんだけど、何をもって1を出力したいのか書いてください禿
いちおう、何らかの意味の 0, 1 を出力するコードはできている
116デフォルトの名無しさん:2008/12/17(水) 06:53:50
>>114 UNIX環境だとどちらも違いでないな
#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;
}
117デフォルトの名無しさん:2008/12/17(水) 09:33:20
[1]授業単元:プログラミングC
[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分

よろしくお願いします
118デフォルトの名無しさん:2008/12/17(水) 09:43:26
>>117
コンパイルしてないからミスったらごめん
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;
}
119デフォルトの名無しさん:2008/12/17(水) 10:43:46
>>95
ありがとうございます!
>>96
いえ、いじくってみますた!
120デフォルトの名無しさん:2008/12/17(水) 10:52:32
>>119
あとね、
using namespace std;
をincludeの下に書いておこう
もしくは
std::cout
みたいにstd:: をつける
121デフォルトの名無しさん:2008/12/17(水) 11:10:31
>>120
ありがとうございます!

using namespace std;
っての授業で使ってたんでこれを使うと自然に習った事を使ってるように見えるのですごく助かります!
122デフォルトの名無しさん:2008/12/17(水) 11:38:13
前すれ>>461どなたかお願いします(;´д`)


[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日(月)
123デフォルトの名無しさん:2008/12/17(水) 11:53:08
>>72
ありがとうございました
124デフォルトの名無しさん:2008/12/17(水) 12:36:28
[1] 授業単元:
[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] その他の制限: (なし)


よろしくお願いします。
125デフォルトの名無しさん:2008/12/17(水) 12:36:51
126デフォルトの名無しさん:2008/12/17(水) 12:46:25
>>124
#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;
}
127デフォルトの名無しさん:2008/12/17(水) 14:13:45
[1] 授業単元:
[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

改善点など、助言をいただきたいです。
128デフォルトの名無しさん:2008/12/17(水) 14:32:54
申し訳ないですが2問お願いしたいです。。。
while文を使うということは分かるのですが

@
キーボードから文字列を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
129デフォルトの名無しさん:2008/12/17(水) 14:54:11
>>127
助言はちょっとめんどいので、とりあえず動きそうな感じに。
合ってるかは分からないけど

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;
}
130デフォルトの名無しさん:2008/12/17(水) 15:09:04
[1] 授業単元:
[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

改善点など、助言をいただきたいです。
131デフォルトの名無しさん:2008/12/17(水) 15:21:12
すみません、>>130はスルーして下さい(^^;

>>129
ありがとうございます。どうやら大丈夫そうです。
実は、関数で場合分けして数値を返して・・・というのは考えていたのですが、返り値をどうにか文字列にできないかとググり、真似したものが投稿したものです。
課題は>>129で提出しようと思いますが、もし文字列を返す関数で定義できるのであれば、教えていただきたいです。
132デフォルトの名無しさん:2008/12/17(水) 15:28:31
>>131
char * 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];
}
133デフォルトの名無しさん:2008/12/17(水) 15:35:30
>>131
もしかしたら見当はずれかもしれませんが、関数内でポインタ配列を定義しても、関数を抜けると消滅してしまうということはないのでしょうか??
134デフォルトの名無しさん:2008/12/17(水) 15:37:48
>>133
staticだから大丈夫
135デフォルトの名無しさん:2008/12/17(水) 15:41:49
>>134
そうなんですか!! (@o@
ちょっとstaticについてググってきます。ありがとうございました。
136デフォルトの名無しさん:2008/12/17(水) 15:47:10
[1] 授業単元:
[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] その他の制限: (なし)
137デフォルトの名無しさん:2008/12/17(水) 15:50:22
>>136
返り値どうやって返せばいいの?
138デフォルトの名無しさん:2008/12/17(水) 15:51:14
環境 unixだったけ? 言語: C 期限: 今日 12月17日16:30まで^^;
次のプログラムは、階乗計算の関数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 (___);
}
139デフォルトの名無しさん:2008/12/17(水) 15:56:25
授業中かよw
140デフォルトの名無しさん:2008/12/17(水) 15:59:25
Unixな奴です。 C言語
1.正整数nを入力し、nまでで4で割り切れる数(4の倍数)の和を出力するfor文を利用したプログラムをつくりなさい
4+8+12+・・・・= ???
2.1の問題でfor文の変わりにWhile文を利用して作りなさい。
3.ある駐車場の駐車料金は、1時間(60分まで)350円で、以降15分ごとに90円です。
 入庫時刻と出庫時刻を入力し、駐車料金を算出すプログラムを作りなさい。
次のプログラムは、階乗計算の関数factを作りsin(x)をテーラー展開した式でsin(30°)をもとめるプログラムです、抜けている所があります。(___)を埋めて完成しなさい
です、お願いします。なにもわからず瀕死状態です。テスト中です;;
141デフォルトの名無しさん:2008/12/17(水) 16:05:10
>136
全然わからないんです。
ヒントに
A=aのx乗
両辺の対数をとる
loge A=xloge a
となり
A=eのloge a
となる
log xはlog(x)と書く.

と書いてありました。
142デフォルトの名無しさん:2008/12/17(水) 16:16:40
>>136
#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;
}
143デフォルトの名無しさん:2008/12/17(水) 16:23:05
>>140
今テスト中なの?
144テスト中:2008/12/17(水) 16:23:45
>>143
そうです>_<
145デフォルトの名無しさん:2008/12/17(水) 16:24:24
すげえ。
146デフォルトの名無しさん:2008/12/17(水) 16:25:50
そろそろタイムリミットなんじゃないの?テスト。
テスト中に2chリロードしまくってるとか超笑える
147デフォルトの名無しさん:2008/12/17(水) 16:28:30
提出の余裕をもってる可能性も考慮しろ
148テスト中:2008/12/17(水) 16:29:05
もう\(^o^)/ オワタ ...
149テスト中:2008/12/17(水) 16:30:52
ぐは OUT のゴング(チャイム)
150デフォルトの名無しさん:2008/12/17(水) 16:41:27
>>140 (1)
#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;
}
151デフォルトの名無しさん:2008/12/17(水) 16:42:17
無茶しやがって・・・
152デフォルトの名無しさん:2008/12/17(水) 16:42:42
>>140 (2)
#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;
}
153デフォルトの名無しさん:2008/12/17(水) 16:50:59
[1] 授業単元:プログラミング演習
[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)までです。

よろしくお願いします。
154デフォルトの名無しさん:2008/12/17(水) 16:57:45
>>128
1.
#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;
}
155デフォルトの名無しさん:2008/12/17(水) 16:58:42
>>128
2.
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;
}
156デフォルトの名無しさん:2008/12/17(水) 17:00:56
>>140 (3)
#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;
}
157デフォルトの名無しさん:2008/12/17(水) 17:09:50
>>119です。
>>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
158デフォルトの名無しさん:2008/12/17(水) 17:14:35
あ、改行が多すぎて書き込めなくて改行を消したので21行目ではないですが、該当ヶ所は同じです。

宜しくお願いします!
159デフォルトの名無しさん:2008/12/17(水) 17:17:57
括弧の数がおかしいじゃん
っつーか、やめとけ。
160デフォルトの名無しさん:2008/12/17(水) 17:23:03
>>159
なにがやめとけなんですか?
161デフォルトの名無しさん:2008/12/17(水) 17:23:44
そんなペースでやってるようじゃらちがあかんということ。
1年ぐらいかけるつもりなら止めないけど
162デフォルトの名無しさん:2008/12/17(水) 17:26:30
レイアウトを整えて
変数の意味を理解し次第replaceして
短くするための記述方法を開く。i++*9とか。
理解してないうちにprintfをcoutにしてみました!とか何でそう無謀な方向に進むのかがわからんよ。
163デフォルトの名無しさん:2008/12/17(水) 17:38:54
>>161-162
必修だから仕方なくやってるだけなんで、自分のものにしたいなんて思ってないんです。
どう直せばよろしいんでしょうか…('`)
164デフォルトの名無しさん:2008/12/17(水) 17:44:24
>>163
>必修だから仕方なくやってるだけなんで、自分のものにしたいなんて思ってないんです。
その心意気が気に入ったのでコンパイル時にエラーが出ないようにしといた。

#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;}
165デフォルトの名無しさん:2008/12/17(水) 17:48:59
>>163
元のソースは他人のだな。

ttp://pc11.2ch.net/test/read.cgi/tech/1087979678/1-25

21
166デフォルトの名無しさん:2008/12/17(水) 17:54:08
前スレ868です。
遅くなってすみません。
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] その他の制限:問題文のテキストファイルに、例を載せておきました。

何度もすみませんが、どうかよろしくお願いします。
167デフォルトの名無しさん:2008/12/17(水) 18:00:22
168前スレ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のソースは自作して問題文に張っておいたので
それを使用して作成おねがいします。
169デフォルトの名無しさん:2008/12/17(水) 18:03:46
>>154-155
ありがとうございます!
170デフォルトの名無しさん:2008/12/17(水) 18:06:11
>>90
ほい。過去の資産流用。(笑)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8369.c

後から表示例見たんで、もうそのままにしてある。
表示ぐらいは何とかしてくれ。必要な要素は揃ってるはず。
後、整数で計算ということだが、作ったテストデータで都合が悪かったんで、
double でやってる。これも気に入らんかったら変えてくれ。

しかしお前、誤字多いな。w
171デフォルトの名無しさん:2008/12/17(水) 18:06:57
>>164
ありがとうございます!
>>165
このスレの119代目で教えてもらいましたw
そのスレの中身も参考になりました。どうやって動くか分からなかったのでw



あ、>>162さんの短くする方法を使って申し訳ないんですがまた書いて欲しいです…学校で習った記述と違う部分があるので…

本当にすいません'`
172デフォルトの名無しさん:2008/12/17(水) 18:15:15
>>163
なーんだ。じゃあそれが必修であるような学科に入ったのが間違いだよ
173デフォルトの名無しさん:2008/12/17(水) 18:15:20
>>153
#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;
}
174デフォルトの名無しさん:2008/12/17(水) 18:16:32
1箇所間違えてた
>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;
175デフォルトの名無しさん:2008/12/17(水) 18:18:10
176デフォルトの名無しさん:2008/12/17(水) 18:32:44
>>153です

>>174さん
すいません、書くのを忘れていましたが
読み込みファイル(cshukudai.csv)の数値を変えると、表示結果も変わるようにするんでしたorz

例えば、生まれた年の最低値は1975年ですが
cshukudai.csvの誰か一人の生まれた年を1970年に変更すると
ヒストグラムは、1970:* 1971: 1972:... と表示されるようにしたいんです。

分かりにくくてすいません。。。
177デフォルトの名無しさん:2008/12/17(水) 18:41:44
>>176
>>175 のはそうなってる。レコード数は25で決めうちしてるけど
178168:2008/12/17(水) 18:47:24
期限は18日3時の間違えです
すいません
179デフォルトの名無しさん:2008/12/17(水) 19:19:41
なんで7行オセロを宿題に出すの?自由課題なの?
180デフォルトの名無しさん:2008/12/17(水) 19:20:12
>>87
ありがとうございます、助かりました
181デフォルトの名無しさん:2008/12/17(水) 19:53:23
>>179
なんでそんな、個人的などうでも良い質問をして
宿題に答えるのとは直接関係の無いレスしてんの?
馬鹿なの?野次馬なの?
182前スレ866:2008/12/17(水) 19:54:31
[2] 問題文(含コード&リンク)
1.数式を入力する(例: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)
この別けた式から係数と乗数をどのようにして摘出するかアドバイスもらえませんか?
183デフォルトの名無しさん:2008/12/17(水) 19:54:37
>>181
無能ほど退屈
184デフォルトの名無しさん:2008/12/17(水) 20:10:52
7行オセロとか変態的だからコピってもバレること請け合いなのに。
185デフォルトの名無しさん:2008/12/17(水) 20:15:19
前スレの931の方
どうもありがとうございます。
186デフォルトの名無しさん:2008/12/17(水) 20:17:17
[1]C
[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時)
よろしくお願いします。
187デフォルトの名無しさん:2008/12/17(水) 20:18:27
>>181
じゃあお前が7行オセロの宿題に答えてやれよwww
188デフォルトの名無しさん:2008/12/17(水) 20:23:41
>>182
係数、xの乗数、yの乗数をひとまとめにしてスタックに入れてやればいいんじゃね?
xの2乗と1乗が同時に出ることがないのならば。
189デフォルトの名無しさん:2008/12/17(水) 20:23:53
>>181はコンパイルできなくてイライラがたまってきた質問者
190デフォルトの名無しさん:2008/12/17(水) 20:35:01
>>187
> じゃあお前が
ここは個人を指定、名指しして答えてもらうスレでもないんだが、
マジでスレタイと>>1が読めるようになってから、社会に出ろよ、ガキ
191デフォルトの名無しさん:2008/12/17(水) 20:35:48
[1] 授業単元: 暇潰し
[2] 問題文:

 9桁までの素数で、
  右から一桁ずつ桁数を減らしていった数が全て素数であるもの
 を昇順に全て出力する (1行に1つずつ)。
 最後に、1行空けて総数を出力すること。
 出力先は、標準出力のこと。

 例) 233 => 23x => 2xx
  23 や 2 も上記条件を満たす素数である。

 また、
  「左」から一桁ずつ桁数を減らしていった数が全て素数であるもの
 も同様に求めよ。

 例) 223 => x23 => xx3

[3] 環境
  OS,コンパイラは、特に指定しない。
 言語は、 C/C++ のどちらでも。
[4] 期限: 12/25
[5] その他の制限:
 プログラムの実行時間は、2秒以下とする。
192182:2008/12/17(水) 20:37:29
>>188
どうしたらいいですかね?
^の後の数字にしたら乗数が2桁以上のときに対応できないし…
文字列から数字だけを抽出する方法とかないですか?
193デフォルトの名無しさん:2008/12/17(水) 20:39:32
>>192
strto?()たとえば、strtol()で調べてみるといいよ。
194デフォルトの名無しさん:2008/12/17(水) 20:40:02
>>192
^の後ろに続く数字は全部乗数(っていうんだっけ?)として扱えばいいんじゃない?
195デフォルトの名無しさん:2008/12/17(水) 20:41:23
>>192
いや乗数が2桁のときはスタックの考え方でいけるだろ
例えば1つ目の数値があったとして2つ目の数値が来たら
1つ目の数値×10+2つ目の数値を記憶するとか。
196デフォルトの名無しさん:2008/12/17(水) 20:47:39
[1] 授業単元:C++
[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文は可。
よろしくお願いします。
197デフォルトの名無しさん:2008/12/17(水) 20:49:12
>>196
同じ学校か?
>>154-155
198デフォルトの名無しさん:2008/12/17(水) 20:52:44
>>197
!?
うわ、見てませんでした。すいません。
ありがとうございます。
199デフォルトの名無しさん:2008/12/17(水) 21:13:14
>>196 きんもぉ〜★なクソースでおじゃる。
他人と似たソースを提出したら、疑われるでおじゃるよ。
麻呂のソースを採用してたもう。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8374.c
200デフォルトの名無しさん:2008/12/17(水) 21:15:44
>>199
これまた酷いクソースだなwww
201デフォルトの名無しさん:2008/12/17(水) 21:15:52
>>191
1個目は166個?
202201:2008/12/17(水) 21:19:29
83に訂正!
203デフォルトの名無しさん:2008/12/17(水) 21:22:16
>>196 2つめのクソースでおじゃる。チムポファイルを使うでおじゃるよ。
さすれば、環境によるけど、文字数の制限は気にせず、チムポファイルの
許容範囲にまで広がるでもじゃる。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8375.c
204デフォルトの名無しさん:2008/12/17(水) 21:24:31
>>199 >>203
いちいちファイルに読み書きしてるのかよ
205デフォルトの名無しさん:2008/12/17(水) 21:30:41
>>204
いちいち文字配列に書き込むのは良いのかよ?
どちらにしろ、一時的に記憶領域を確保して記録している点は同じだろ。
意見するにしても、考えが浅はか過ぎるんだよ、未熟者ってのは。
自分がそうしないこと=ありえない、間違っているという考えは、
多様化する社会では通用しない、孤立する考え、思想。
206デフォルトの名無しさん:2008/12/17(水) 21:33:11
まぁ、この世は不平等でも、C言語のライブラリは開発環境さえあれば、
誰でも同じものを共通して利用することが出来る。
しかし、経済力や技術力の差で、一般ピーポー君は
いくら高性能なエンジンを積んでも、混雑する路上を移動。
一方、金持ち、ヘリの免許とヘリを所有している大企業の社長は
昼食のために、ヘリで移動。費用は雲泥の差だがなw
そういうこと。
207デフォルトの名無しさん:2008/12/17(水) 21:33:26
独走過ぎて他人に読めないソース書かれても困ったもんだがなw

個人的にはあのクソースはGJだとは思うがwww
208191:2008/12/17(水) 21:36:53
>>202
83 で正解です。
因みに、最後(83番目)の素数は、73939133。
209デフォルトの名無しさん:2008/12/17(水) 21:39:46
[1] 授業単元: プログラミング
[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] その他の制限:制限なし
210デフォルトの名無しさん:2008/12/17(水) 21:41:25
使えるものは使え。テンポラリーファイルだって、普通に使われているんだが?
技術力にしても、知識にしても、ここの連中はレベルが低すぎるんだよ。
211デフォルトの名無しさん:2008/12/17(水) 21:54:03
>>172
そうなんですよねー
>>179
はいそうです。
>>184
なんとまぁ!w
ばれないように部分的に変えようと思うのでまた聞きにきますw
>>189
>>164でコンパイルできないんですか!?
まだ確かめられてなくて・・・
212デフォルトの名無しさん:2008/12/17(水) 22:10:27
>>209
ちょーてきとー
#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);
}
213デフォルトの名無しさん:2008/12/17(水) 22:11:28
>>191
2個目は2166?
214デフォルトの名無しさん:2008/12/17(水) 22:30:14
[1] 授業単元: 科学実習T
[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] その他の制限:特になし、お願いします。
215デフォルトの名無しさん:2008/12/17(水) 22:33:06
>>214
ほい
#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");
}
216デフォルトの名無しさん:2008/12/17(水) 22:34:47
>>191
> プログラムの実行時間は、2秒以下とする。
CPUの性能で差が出るのに?
217デフォルトの名無しさん:2008/12/17(水) 22:42:29
>>191
2166個目の数は999962683で合ってる?
2166個だとprint文で結構掛かりそう
218202=213:2008/12/17(水) 22:51:55
>>217
実はちゃんと昇順で出してなかったから、最大値をはかってみたんだけど、999962683になってたよ。
2166なのは出るけど超遅い!これ2秒でできるのだろうか?
1個目は0.8秒(Core2Duo3Ghz)だけど2個目は40秒くらいかかる。。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8376.txt
もしよかったらどう解いたか教えてください。
219217:2008/12/17(水) 22:55:47
>>218
前の桁で求めた数値を利用するくらいしかしてない
自分の環境だとギリギリ2秒くらい
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8378.txt
220デフォルトの名無しさん:2008/12/17(水) 22:56:47
それまで求めた素数を使ってもおkなんでしょ?
右にずらす、つまり10で割っていった値がそれ以前に求めた素数に
該当すればおk。
221デフォルトの名無しさん:2008/12/17(水) 23:00:13
なにいってんだ?
222217:2008/12/17(水) 23:00:26
>>220の方法が最速っぽいな
223デフォルトの名無しさん:2008/12/17(水) 23:01:08
>>221
だから理解力のない、日本語力もない馬鹿はレスするなつってんだよ、基地外
224217:2008/12/17(水) 23:01:23
ん、右にずらす前の素数判定で時間食うか
225デフォルトの名無しさん:2008/12/17(水) 23:01:46
>>221
それまで求めた値を使えば、わざわざ右にずらした値が
素数か、また求めなおす必要もないんだが?池沼は黙ってろよ。
226デフォルトの名無しさん:2008/12/17(水) 23:02:41
>>224
エラトステネスの篩を使うのもありじゃね?ただ、いくら速度を求めても
最終的にはCPUの性能に左右される。
227デフォルトの名無しさん:2008/12/17(水) 23:04:44
単純にふるいがけすると10億要素必要だからキツイ。
2 3の倍数を除いたとしても3億なのでキツイ。
9桁までの素数を配列に詰めて2分探索するのがいいと思う
228デフォルトの名無しさん:2008/12/17(水) 23:06:17
>>227
それ言うと>>191の解をあらかじめテーブルに持っておきたくなるなw
229デフォルトの名無しさん:2008/12/17(水) 23:07:47
[1] 授業単元: ネットワークプログラミング演習
[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] その他の制限: とくになし

みにくいソースですけどよろしくお願いします。
他にも改善点などあれば教えていただきたいです。
230デフォルトの名無しさん:2008/12/17(水) 23:08:23
処理の中で求めてその一覧をキャッシュして使うのは何も問題ないっしょ
9桁だからintにおさまるし、悪くはないと思う。
231デフォルトの名無しさん:2008/12/17(水) 23:11:29
>>225
右にずらすって考え方がそもそもおかしい。
元の素数に数値を足してそれが素数か判定してくのが早い。
232デフォルトの名無しさん:2008/12/17(水) 23:12:18
>>231
問題文がそうなんだが?いちいち五月蝿いなぁ、あんたは。
233デフォルトの名無しさん:2008/12/17(水) 23:15:19
いやいや、>>231じゃないが、そういう順で判定を行えとは書かれてないよ。
そういう形の数であるかどうかだけなので、組み立てた結果そういう数字になっているというのもありだと思う。
が、そっちの方が速いかどうかは俺には分からん。
234デフォルトの名無しさん:2008/12/17(水) 23:16:20
>>219
実行速度確認したかったけどコンパイルできなかった…
Borland C++なんですけど
235デフォルトの名無しさん:2008/12/17(水) 23:17:28
long longをintにすれば?
236デフォルトの名無しさん:2008/12/17(水) 23:18:16
それまで求めた素数を10倍して、10未満の素数を足してそれが素数か?
それを繰り返せばおkってか?
237デフォルトの名無しさん:2008/12/17(水) 23:19:59
10未満の素数ではなく、1 3 7 9 について吟味すればいいんじゃないかな。
238デフォルトの名無しさん:2008/12/17(水) 23:22:31
>>235
ありがとうございます!神よ!
239デフォルトの名無しさん:2008/12/17(水) 23:37:43
[1]授業単元:C言語
[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]特にありません,よろしくお願いします。
240デフォルトの名無しさん:2008/12/17(水) 23:37:47
[1]授業単元:プログラミングC
[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分

よろしくお願いします

241デフォルトの名無しさん:2008/12/17(水) 23:40:55
[1] 授業単元:プログラミングU
[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日

よろしくお願いします
242191:2008/12/17(水) 23:48:08
レス遅くなりました  ごめんなさい

>>213,217,218
ですね。
最後の素数は、 999962683 です。

桁制限を外せば、
全部で 4260 個で
最後の素数は、357686312646216567629137 (24桁)だそうです。
どちらも有限集合なんですね。


にしても、回答が速いですね。
すごい。

>>216
32ビット CPU 動作周波数1GHz 以上を想定してました。

>>233 さんの言う通り、
求め方を指定したつもりは無かったです。

>>219
一桁の素数はハードコーディングでもよかった・・・スミマセン
243デフォルトの名無しさん:2008/12/17(水) 23:49:37
999962683 > 99996268 < ん?
244デフォルトの名無しさん:2008/12/17(水) 23:51:43
9999626 < んん?
999962 < んんん?
99996 < んんんん?
9999 < んんんんん?
999 < んんんんんん?
99 < んんんんんんん?
9 < えっ!?
245デフォルトの名無しさん:2008/12/17(水) 23:51:48
[1] 授業単元: プログラミング演習
[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分
246デフォルトの名無しさん:2008/12/17(水) 23:56:35
>>243
2種類あるから。。
247デフォルトの名無しさん:2008/12/17(水) 23:57:47
>>242
へええ、有限なんだねぇ。
そりゃそうか、と納得する一方で、なんか残念な気持ちも。
248デフォルトの名無しさん:2008/12/18(木) 00:14:45
麻呂の会社は有限でおじゃるが、残念でもないでおじゃるよ。
249デフォルトの名無しさん:2008/12/18(木) 00:26:52
[1] 授業単元:データ構造とアルゴリズム
[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] その他の制限:特になし
250デフォルトの名無しさん:2008/12/18(木) 01:20:48

http://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
251デフォルトの名無しさん:2008/12/18(木) 02:08:15
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):下のレス
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年12月24日 13:00
[5] その他の制限: ヒントを使って作るらしいです。よろしくお願いします。
252251:2008/12/18(木) 02:10:48
[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関数をヒントに示す.データのやり取りにはポインタを用いること
253251:2008/12/18(木) 02:11:20
関数作成のヒント
*ptr1 *ptr2 tempc  の3つの変数を宣言して使用する.
逆に表示させるためには,文字の入れ替えをしなくてはならない.ソートプログラムを思い出す.

char *recpy(ptr)
char *ptr;
{
char *ptr1, *ptr2, tempc;
ptr1 = ptr2 = ■■■ ここは考える ■■■;
while(■■■ ここは考える ■■■){
■■■ ここは考える ■■■
}
--ptr2;
while(■■■ ここは考える ■■■)
{
文字列の入れ替え
}
254デフォルトの名無しさん:2008/12/18(木) 02:24:43
スレ違いで申し訳ありませんが、>>191 の答えのソースはありますか?
自分でも作ってみましたが、83個でしたが、昇順に並べるところまでは出来なかったものでして。
255デフォルトの名無しさん:2008/12/18(木) 02:54:25
どうスレ違いか分からないが、>>191が満足してるということはどこかにうまく動作するコードがあるだろう。
そのコードを入手、提出することで>>254 >>191のいずれかまたは両方の評価が下がるだろう。
256デフォルトの名無しさん:2008/12/18(木) 02:55:32
>>255
> どうスレ違いか
宿題じゃないから。ある人が出した、突発的な課題だから。
257デフォルトの名無しさん:2008/12/18(木) 02:56:38
授業単元が暇つぶしだw
258デフォルトの名無しさん:2008/12/18(木) 02:58:12
>>255
> のいずれかまたは両方の評価が下がるだろう。
なんで評価が下がるか、こっちの方が分からんわ・・・
259デフォルトの名無しさん:2008/12/18(木) 03:29:21
同じコードが複数提出されたらそりゃ減点だろ
260デフォルトの名無しさん:2008/12/18(木) 03:31:45
>>191 なんか乗り遅れて悔しいぜ。 昇順にしてない分だけ >>219 より早いかもしれない
#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;
}
261デフォルトの名無しさん:2008/12/18(木) 03:37:55
>>260
右からのは83個と少ないから速いね。自分のも>>260のも、自分の環境では
0 〜 15ms で終了してるから、ほぼ処理時間は同じかな。自分も並び替えてはいないけど。
262デフォルトの名無しさん:2008/12/18(木) 03:48:27
>>226
エラトステネスの篩でやってみた
10^9 以下の素数をすべて求める段階だけで 60 秒かかる (PentiumM 1.7GHz)
素数テーブルが完成した後から時間を計ると早い(0.10秒)けどねw
263デフォルトの名無しさん:2008/12/18(木) 04:01:54
>>262
すまん、思いつきで言ったが、明らかに効率が悪いとすぐに分かったw
264250:2008/12/18(木) 04:04:06
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=8352
さっきつながらなかったので送れてしまいましたがうpしました。
お願いいたします
265デフォルトの名無しさん:2008/12/18(木) 05:10:07
>>209=>>90
てんめぇ、せっかく人が作ってやってんのに、同じ宿題書き込んでんじゃねーよ。
10個程度しかレス見られないのかよ、カス。
266デフォルトの名無しさん:2008/12/18(木) 05:51:12
同じ学校の別の生徒だろ
267デフォルトの名無しさん:2008/12/18(木) 05:59:02
268デフォルトの名無しさん:2008/12/18(木) 06:11:42
[1]授業単元:C言語
[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]急で申し訳ないのですがよろしくおねがいします
269デフォルトの名無しさん:2008/12/18(木) 06:24:24
>>268
#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;
}
270デフォルトの名無しさん:2008/12/18(木) 06:25:12
スイマセン、どなたか
>>239 の方を解いてもらえないでしょうか?
271デフォルトの名無しさん:2008/12/18(木) 06:38:13
>>239(あまり検証してない)

#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;
}
272デフォルトの名無しさん:2008/12/18(木) 06:55:16
>>268
っつか、演算子を使わずに実装しろってオチは無かろうな?
273268:2008/12/18(木) 07:15:39
>>272
ハイ、それはないです。
274デフォルトの名無しさん:2008/12/18(木) 07:53:27
>>240
それくらい短い問題文なら、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));
}
275デフォルトの名無しさん:2008/12/18(木) 09:12:37
>>264
どれ?
276250:2008/12/18(木) 10:59:58
8391zip 住所録 と書いてあるものです
277デフォルトの名無しさん:2008/12/18(木) 11:40:27
>>245のものですが
リミットが迫ってるので出来るだけ早くお願いします。
278250:2008/12/18(木) 12:25:46
リミット過ぎてしまいましたが
もしよろしければ引き続きお願いたします<(_ _)>
279デフォルトの名無しさん:2008/12/18(木) 12:37:59
「2科目得点の和が140点以上」かを判定したらどうするの?
入力はどんな形式のファイルになっているの?
入力は正しい形式になっていると仮定してもよいの?
280デフォルトの名無しさん:2008/12/18(木) 12:43:50
281166:2008/12/18(木) 12:44:27
>>167
習ってない関数が多いので、だめだと言われました・・・

すみませんが、もう一度お願いします。
282デフォルトの名無しさん:2008/12/18(木) 12:53:25
>>280
ありがとうございます。
283デフォルトの名無しさん:2008/12/18(木) 13:20:40
>>245
ファイル形式はcsvでよろしいでしょうか?
284デフォルトの名無しさん:2008/12/18(木) 13:26:32
>>281
習ってない関数ってどれのことだよ
285デフォルトの名無しさん:2008/12/18(木) 13:39:17
カマかけられたんじゃないの?
286デフォルトの名無しさん:2008/12/18(木) 13:42:58
前スレ972のどこに習ってない関数が・・・
287デフォルトの名無しさん:2008/12/18(木) 14:03:24
>>278
そもそも課題の内容が分からないし、
そのコンパイルも通らないファイルをどうしたいのかさえ
288281:2008/12/18(木) 14:23:38
>>284
>>286
const、boolなどです。

というより、例あるのだから、それにあてはめてやれと言われました。
289デフォルトの名無しさん:2008/12/18(木) 14:40:34
>>288
自分で当てはめればいいだろ
290デフォルトの名無しさん:2008/12/18(木) 14:45:42
>>229をよろしくお願いします
291デフォルトの名無しさん:2008/12/18(木) 14:59:36
>>290
はじめのは
GET /
が見つからなかったときに無限ループしてるんじゃないかと思った。
後のは、無限に読み込もうと待ってる気がする。
UNIXプログラムはうろ覚えだから的外れだったらごめんw
292デフォルトの名無しさん:2008/12/18(木) 15:00:35
>>290
>後、のこった要求を
何が残る予定なんだ?
293デフォルトの名無しさん:2008/12/18(木) 15:35:44
>>292
client側から以下(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で止まってる見たいです
294デフォルトの名無しさん:2008/12/18(木) 15:58:53
>>293
>止まってそれ以降プログラムが動かないみたいなんです
client側が次に何か送って来るのを待っているんだから
295182:2008/12/18(木) 16:01:54
int i=0,j=0,//イテレータ
jousu[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型で統一してるのに駄目なの?
296デフォルトの名無しさん:2008/12/18(木) 16:05:17
>>295
プログラム全体を貼り付けてよ
できればうpろだに
297デフォルトの名無しさん:2008/12/18(木) 16:10:53
>>293
>>291だけど、言いたかったのは>>293がうまく言ってくれたw
ns_readから読み込むと、普通のファイルと違ってパイプから読みこむから、読み込みたいときにパイプが空っぽだと、誰からパイプに入れてくれるのをずっと待ってるんだよ。
298デフォルトの名無しさん:2008/12/18(木) 16:38:48
[1] 授業単元:
[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] その他の制限: (なし)
299デフォルトの名無しさん:2008/12/18(木) 16:50:55
[1] 授業単元:
[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] その他の制限: (なし)

300デフォルトの名無しさん:2008/12/18(木) 17:05:54
301デフォルトの名無しさん:2008/12/18(木) 17:11:15
>>298
#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;
}
302301:2008/12/18(木) 17:19:13
間違えた
for(i=2; i<=10; i++){
if(a[i]){
for(j=i+1; j<101; j++){
if(j%i == 0){
a[j] = 0;
}
}
}
}
303デフォルトの名無しさん:2008/12/18(木) 17:20:18
>>301 ちょっとふいたw 答えは合っているが、ちょっと違う。
304デフォルトの名無しさん:2008/12/18(木) 17:20:27
>>296
お願いします。

http://www.uploda.org/uporg1864479.c.html
パス:1111
305デフォルトの名無しさん:2008/12/18(木) 17:20:38
>>229
クライアントの write (1, str, size+1);も変だな。サイズ大きすぎるだろ。
306デフォルトの名無しさん:2008/12/18(木) 17:27:38
>>298
#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;
}
307デフォルトの名無しさん:2008/12/18(木) 17:29:03
>>298
#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;
}
308デフォルトの名無しさん:2008/12/18(木) 17:38:51
struct Point
{
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;
}
なぜ動かん!
309デフォルトの名無しさん:2008/12/18(木) 17:45:18
print_v()を定義していないし、整数型じゃなくて浮動小数点型を使うべき
310デフォルトの名無しさん:2008/12/18(木) 18:03:36
>>300
ページを開くことができませんでした…
311デフォルトの名無しさん:2008/12/18(木) 18:04:04
>>310 嘘は言わなくて良いから。
312デフォルトの名無しさん:2008/12/18(木) 19:29:35
>>215
ありがとうございマス!
313デフォルトの名無しさん:2008/12/18(木) 19:33:38
>>245の者ですが>>280で少し間違いがあったみたいなのでもう一度お願いします。
途中まで、あってるか確証はありませんが、自分でやったのでこの続きをお願いします。

#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){
314デフォルトの名無しさん:2008/12/18(木) 19:48:12
>>313
どう間違えてたの?
315デフォルトの名無しさん:2008/12/18(木) 19:51:22
>>314
一致せずが1つあるはずなのになかった
316デフォルトの名無しさん:2008/12/18(木) 19:52:40
やり方も、できれば>>313のような漢字でお願いします
317デフォルトの名無しさん:2008/12/18(木) 19:56:17
>漢字
感じ
318デフォルトの名無しさん:2008/12/18(木) 20:07:35
何で英語が"w"ww
319デフォルトの名無しさん:2008/12/18(木) 20:14:53
>>316
どこら辺が>>313っぽくなればいいのかが読み取れないなぁ。
別に>>280と大差あるように見えない。

変数名をtypoしたりcloseをOS任せにする辺りが特徴?
320デフォルトの名無しさん:2008/12/18(木) 20:34:32
[1] 授業単元: 科学実習T
[2] 問題文: 16進数を入力するプログラムを作れ。
[3] 環境
 [3.1] OS: windows xp
 [3.2] コンパイラ名とバージョン:gcc -o
 [3.3] 言語: C言語
[4] 期限: 2008年12月31日23時59分
[5] その他の制限:scanfは使用禁止。よろしくお願いします。
321デフォルトの名無しさん:2008/12/18(木) 20:37:55
>>320
#include <stdio.h>
#include <stdlib.h>
int main()
{
char s[1000];
int x;
fgets(s, 1000, stdin);
x = strtol(s, NULL, 16);
return 0;
}
322デフォルトの名無しさん:2008/12/18(木) 20:40:15
>>320
#include <stdio.h>
int main()
{
char str[256];
unsigned int n;
fgets(str, 256, stdin);
sscanf(str, "%x", &n);
return 0;
}
323デフォルトの名無しさん:2008/12/18(木) 21:23:54
>>313=315であると仮定して

検証に使った math.txt と eng.txt
そして実際にはどういう結果(出力)が欲しかったのか
それを示さないと何とも言えない。
324デフォルトの名無しさん:2008/12/18(木) 21:29:24
math.txtに10人、eng.txtに11人あると最後の人が検出できなさそうにも見える
325280:2008/12/18(木) 21:32:49
今気づいたが29行目くらいに else を漬け忘れているような気がする
>>324
問題文に > 2つのファイルの行数は同じ とあるので。
326デフォルトの名無しさん:2008/12/18(木) 21:43:49
C言語にて、数列(12,43,17,23,57,50,17,41, 7,63)をクイックソートを用いて降順にソートしなさい。
なお、整列完了までの途中経過を表示せよ。

いろいろなサイトで公開されているクイックソート昇順のプログラムを弄ってみたのですが
どうしてもうまく行きません。よろしくお願いします。


また、このプログラムを改良し、左端・中央・右端の3要素の中をうちを枢軸
右端)とする
場合のプログラムを考えよ。

に関しては自分で考えてみるつもりなのですが、もし良ければお願いします
327デフォルトの名無しさん:2008/12/18(木) 21:51:09
>>325
ほんとだ。よく見ず難癖つけてすまんかった>行数
328デフォルトの名無しさん:2008/12/18(木) 22:14:16
329デフォルトの名無しさん:2008/12/18(木) 22:24:35
330デフォルトの名無しさん:2008/12/18(木) 22:38:43
>>328,329
ありがとうございます。
ですが、今回は数列(12,43,17,23,57,50,17,41, 7,63)が指定されているので、
これをscanfでの入力もしくは、プログラム内に埋め込みという形で出来ないでしょうか?
331デフォルトの名無しさん:2008/12/18(木) 22:40:26
授業単元:C言語
問題
0〜9、+、−、×、÷、(、)、を使った整数式を
ポーランド記法を使ったツリー構造に変換し出力。
さらに計算し解を出力するプログラムを作成。
ただし整数式は標準入力から式ブロックで入力され"quit"が
入力されるまで繰り返し入力できるものとする
※割り算によって発生する小数部は切り捨ててよい
※入力式の誤り判定は不必要とする
※ただし−符号は考慮すること
環境:WS
コンパイラ:gcc
制約:breakは原則使用禁止(Selectcase文は除く)
   scanfは使用禁止
以上です。お願いします
332デフォルトの名無しさん:2008/12/18(木) 22:43:24
>>331
breakの代わりにgoto使ってもいい?
333デフォルトの名無しさん:2008/12/18(木) 22:55:40
>>332
聞いたことないのでだめかと…
基本的にループや条件分岐から抜け出すプログラムはだめだそうです
334デフォルトの名無しさん:2008/12/18(木) 22:59:54
335102:2008/12/18(木) 23:06:31
102です。解決できました。
>>109-113の皆さん、ありがとうございました。
336デフォルトの名無しさん:2008/12/18(木) 23:24:07
>>484
>>487
ありがとうございます
EOFがないから終端の判断ができないってことですかね
サーバからクライアントにファイル内容を送信するときはEOFも送るからうまく止まってくれるという認識で大丈夫でしょうか?
readとかfgetsでEOFまで読めるかどうかとか考えたことなかったんで本当に助かりました

意図してるより少ない行数しか来なかったときは、
実際に使われてるプログラムではタイムアウトなどで対応してるんでしょうか?

参考になるサイトかソースも教えて頂けると助かります
337デフォルトの名無しさん:2008/12/18(木) 23:36:28
>>334
ありがとうございます。何度も何度も申し訳ないのですが
左端、中央、右端の3要素の中央値を枢軸(右端)になるように改良していただけないでしょうか?
338デフォルトの名無しさん:2008/12/18(木) 23:44:06
>>337
それって、本当にクイックイックソートなの?
339デフォルトの名無しさん:2008/12/18(木) 23:53:56
>>338
はい、間違いなくクイックソートです。
340デフォルトの名無しさん:2008/12/18(木) 23:57:33
いや、だったら普通にpの値を変えてやれば良いじゃん・・・
341デフォルトの名無しさん:2008/12/18(木) 23:59:16
数列(7,12,17,17,23,41,43,50,57,63)をクイックソートで降順に整列す場合
左端、中央、右端の3要素の中央値を中軸(右端)とする改良をした場合の途中経過を表に記述せよ。
ただし、交換毎にその結果を1行で記述し、整列するまで記述せよ

このような課題です
342デフォルトの名無しさん:2008/12/19(金) 00:08:28
>>341
よう分からんけど、とりあえずソートは出来るから、提示してあるコードのpを
p=a[right]; に変更して。
343デフォルトの名無しさん:2008/12/19(金) 00:16:23
あと、free(a);は削除。
344デフォルトの名無しさん:2008/12/19(金) 00:33:20
整列後が
63 57 50 17 23 41 43 17 12 7
になるのですが、不完全ですよね?
345デフォルトの名無しさん:2008/12/19(金) 00:35:19
63 57 50 43 41 23 17 17 12 7
になったけど?
346デフォルトの名無しさん:2008/12/19(金) 00:38:10
もう一度見直してみます・・・
変なところを弄ったかな?
347デフォルトの名無しさん:2008/12/19(金) 00:38:33
348デフォルトの名無しさん:2008/12/19(金) 00:41:32
数列(12,43,17,23,57,50,17,41, 7,63)ですと問題なく降順になるのですが、
今回の数列(7,12,17,17,23,41,43,50,57,63)に変更するとうまくいきません
349デフォルトの名無しさん:2008/12/19(金) 00:53:48
ある範囲を与えた時、左端も右端も17で同じ値のときにミスってたか・・・
さぁ考えよー。オラ知らんw
350デフォルトの名無しさん:2008/12/19(金) 00:56:48
do-whileの等号部分を弄ったらいいんじゃね?
試してないしろくすっぽ考えてないけどさ。
351デフォルトの名無しさん:2008/12/19(金) 00:57:31
ソース全部おじさんにみせてみなさい
降順になったのはたまたまpivotが最大値、もしくは最小値から離れた値だったのでは?
352デフォルトの名無しさん:2008/12/19(金) 01:04:13
知恵熱で頭がやばい・・・
353デフォルトの名無しさん:2008/12/19(金) 01:15:57
>>326 >>344 >>341 >>337 苦肉の策で if(a[l]==a[r]) l++; を入れてみた。出来たw

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8399.c
354デフォルトの名無しさん:2008/12/19(金) 01:30:09
なるほど・・・さすがですね。

本当にありがとうございました。
355デフォルトの名無しさん:2008/12/19(金) 01:31:51
[1] 授業単元: C
[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] その他の制限:特になし お願いします。
356デフォルトの名無しさん:2008/12/19(金) 01:37:21
>>355
何の式だよ
357デフォルトの名無しさん:2008/12/19(金) 01:43:04
>>356
x(n+1)です。
358デフォルトの名無しさん:2008/12/19(金) 01:45:11
>>355
同じ答えに戻らないな
0 に収束した

xn は double なんでしょ?
359デフォルトの名無しさん:2008/12/19(金) 01:53:23
[1] 授業単元: プログラミング
[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] その他の制限: ポインタを習っています。
解説も付けてくれるとありがたいです。
よろしくお願いします。

360デフォルトの名無しさん:2008/12/19(金) 02:01:32
>>358
11番目で0.08に戻った
361デフォルトの名無しさん:2008/12/19(金) 02:01:57
>>358
はい、確かにdoubleです。

手計算だとn=11のときに0.08に戻る計算のはずですが・・・
362デフォルトの名無しさん:2008/12/19(金) 02:15:10
>>361
double 演算て加減算で誤差乗るから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は等号比較なんてしないんだけど
363デフォルトの名無しさん:2008/12/19(金) 02:17:38
こんなね
#define START 0.08
#define E 10e-8
}while(!(START-E<=xn&&xn<=START+E));
364デフォルトの名無しさん:2008/12/19(金) 02:21:33
365デフォルトの名無しさん:2008/12/19(金) 02:33:54
>>368
文字の長さが違うと…
366デフォルトの名無しさん:2008/12/19(金) 02:50:47
印字可能な文字(SPを含む)は、印字できないような文字(DELを除く)より
文字コードの値は高いから、問題なし。標準ライブラリのstrcmpでも結果は同じ。
367デフォルトの名無しさん:2008/12/19(金) 03:00:16
解の公式を加算減算だけで表したいんだがどういうプログラムになるのかわからない・・・
368デフォルトの名無しさん:2008/12/19(金) 03:49:18
>>366
value=my_strcmp("a","");
が一致になっちゃうよ
[1] 授業単元:プログラミング
[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;
370 [―{}@{}@{}-] 369:2008/12/19(金) 04:39:55
つづき


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;
}
371239:2008/12/19(金) 06:42:07
[1]授業単元:C言語
[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さんに作って頂いたコードを元に
作成してみたのですがなかなかうまくいきません
途中までしかできていませんが、どなたか協力の方おねがいします。
372デフォルトの名無しさん:2008/12/19(金) 06:51:43
>>371
271だと具体的にどういう不備があったの?
373239:2008/12/19(金) 07:06:58
>>372
271ですと各点数と合計と氏名が表示されないのでわかりにくいと指摘されまして
374271:2008/12/19(金) 07:11:16
> /*合格条件で使う変数 all60over の初期化で0を設定しました

やめてくださいよw

> 合格条件の「全科目60点以上」(例:伊藤の全科目で60点以上あるのか?)なのかを知るために
> all 60overに「全科目60点以上なら1 どれか一つでも60未満があれば0 といった感じをif文で作りたいのですが
> わかりません

あったはずですけど、今はなぜかなくなってますね?

> あと氏名を表示させたいのですがどこで表示させればいいかがわかりません

そうなるだろうなあと思ってました。
375デフォルトの名無しさん:2008/12/19(金) 07:19:29
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):ディレクトリ内の全てのjpg画像をpbm画像にするプログラムの作成.

[3] 環境
 [3.1] OS:Linux(Ubuntu)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:出来れば今日中に
[5]system関数を使ってlinux内のdjpegなどを使っても可です
またシェルでも構いません
宜しくお願いします
376デフォルトの名無しさん:2008/12/19(金) 07:51:49
>>368
にゃるへそ。それじゃ、do whileにすればおk
377デフォルトの名無しさん:2008/12/19(金) 10:35:39
>>375
linux内にきっとあるconvertを使ってもいい?
378デフォルトの名無しさん:2008/12/19(金) 10:50:32
>>376
("","")は?
379デフォルトの名無しさん:2008/12/19(金) 11:14:53
>>377

>>375
> [5]system関数を使ってlinux内のdjpegなどを使っても可です
ってあるから、なんでもありなんじゃね?
380デフォルトの名無しさん:2008/12/19(金) 11:25:16
>>377
ディレクトリ内のやつを一括で変換出来れば何でも良いですよ
381デフォルトの名無しさん:2008/12/19(金) 12:42:35
>>375

#include <stdlib.h>
int main()
{
system("mogrify -format pbm *.jpg");
return 0;
}


見てのとおり、.jpg だけ変換
.jpegは変換しない
382デフォルトの名無しさん:2008/12/19(金) 13:19:30
>>378
それは一致でおkだろw
383デフォルトの名無しさん:2008/12/19(金) 13:27:48
>>378
標準ライブラリのstrcmpでも同じように検証してみな
384デフォルトの名無しさん:2008/12/19(金) 14:57:14
>>381
ありです.
今までImageMagick知らんかった..便利ですね
385 ◆fYK1SYi0VA :2008/12/19(金) 15:41:29
[1] 授業単元: 情報処理U
[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
386デフォルトの名無しさん:2008/12/19(金) 15:50:49
>>191
うっし、並び替えも含めてAthlonXP 2800+ (2GHz)で約0.5秒で終了するコードが書けた。
自己満足。公開はしないが。
387デフォルトの名無しさん:2008/12/19(金) 16:02:03
[課題1:] 下記の画像i1.bmp(マスク画像 Mi1.bmp)を幅600×高さ400の画像の中心に配置し、背景を緑色(r=0x00, g=0xc0, b=0x00)にしたBMP画像を生成するプログラム1を作成せよ。

http://o.pic.to/s9pf6


誰かプログラミングしてください(>人<)
388デフォルトの名無しさん:2008/12/19(金) 16:05:17
>>387

忘れてましたが、C言語でお願いします(>人<)
389デフォルトの名無しさん:2008/12/19(金) 16:07:49
>>388
忘れてはいけません、>>1読めでお願いします(>人<)
390デフォルトの名無しさん:2008/12/19(金) 16:47:19
1] 授業単元:C言語
[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
391デフォルトの名無しさん:2008/12/19(金) 17:00:37
>>390
#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;
}
392デフォルトの名無しさん:2008/12/19(金) 17:13:13
>>386
その環境で>>219を動かすとどれくらい?
393デフォルトの名無しさん:2008/12/19(金) 17:13:51
>>389
すいません、訂正します。

[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日ですが、早いとうれしいです。
よろしくお願いします。

394デフォルトの名無しさん:2008/12/19(金) 17:15:07
>>391
早速のレス、ありがとうございます
395デフォルトの名無しさん:2008/12/19(金) 17:17:16
>>392
450〜550ms。自分が作ったコードとほぼ同じ時間かな。
396デフォルトの名無しさん:2008/12/19(金) 17:18:49
>>395
トン
397デフォルトの名無しさん:2008/12/19(金) 17:20:37
まぁ、ほぼ似たアルゴリズムにはなるが、自分は再帰を使用したけど。
398デフォルトの名無しさん:2008/12/19(金) 17:22:59
[1] 授業単元:C
[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で入力を終了出来るようにしたいのですが、できませんでした。
399デフォルトの名無しさん:2008/12/19(金) 17:29:56
>>393

画像、マスク画像と完成画像
400デフォルトの名無しさん:2008/12/19(金) 17:31:04
>>393

画像、マスク画像と完成画像

http://o.pic.to/s9pf6
401デフォルトの名無しさん:2008/12/19(金) 17:46:18
>>398
キー入力部分を
if (scanf("%s", tmp) != 1) break;
にでもしてみたら?
402デフォルトの名無しさん:2008/12/19(金) 18:13:15
>>393
授業ではどうやってwindows bitmapを扱うことになってるんだ?
APIとか使うのか?
403デフォルトの名無しさん:2008/12/19(金) 18:16:16
[1] 授業単元:アルゴリズム
[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を含む関数はインライン展開できない

協力お願いします
404デフォルトの名無しさん:2008/12/19(金) 18:22:36
>>403
> #include "sfmt.h"
このヘッダファイルはどこよ?
405デフォルトの名無しさん:2008/12/19(金) 18:29:30
>>404
ソースと同じディレクトリに入れればいいと教わりました。
406デフォルトの名無しさん:2008/12/19(金) 18:30:05
[1]授業単元:プログラミング1
[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] その他の制限:
変数・データの出入力・演算子・条件分岐・繰り返し・配列を習い、
今回は、関数を自分で作ってみることが目的です。
どなたかよろしくお願いします(><)!!
407デフォルトの名無しさん:2008/12/19(金) 18:31:59
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
0〜9、+、−、×、÷、(、)、を使った整数式を
ポーランド記法を使ったツリー構造に変換し出力。
さらに計算し解を出力するプログラムを作成。
ただし整数式は標準入力から式ブロックで入力され"quit"が
入力されるまで繰り返し入力できるものとする
※割り算によって発生する小数部は切り捨ててよい
※入力式の誤り判定は不必要とする
※ただし−符号は考慮すること

[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc ヴァージョンは不明です;;
 [3.3] 言語: C
[4] 期限: 2008年内
[5] 制約:break,gotoなどループや条件分岐から抜けるものは使用不可能(Selectcaseは除く)

以前書き込みましたがテンプレの存在を知らずにかいたため訂正いたしました
よろしくお願いします
408,,・´∀`・,,)っ-○◎●:2008/12/19(金) 18:36:05
>>403
SFMTって広大の斉藤君のやつだろ?
SSE2依存のライブラリ使うのになんでbcc使うの?馬鹿なの?死ぬの?
出題者がコンパイラ指定したなら文句言ってきなさい。

もし君の独断でbccを使ってるなら、コンパイラ変えなさい。
CygwinかVS2008 Express使いなさい。
409デフォルトの名無しさん:2008/12/19(金) 18:37:43
>>405
そうなんだけど、そのヘッダファイルも提示してくれよw
410デフォルトの名無しさん:2008/12/19(金) 18:38:03
>>403
 >>404が言っているのは、sfmt.hってファイルは提示してくれないのか、ってことだろう。

 このソース読みにくいし、危険なコードが見えるんだが・・・
main()内のint型変数nは、初期化してから使おうな。警告が出てもいいレベルだけどな。
411,,・´∀`・,,)っ-○◎●:2008/12/19(金) 18:39:39
ちなみに「警告」はエラーじゃないです。
「インライン関数をインライン展開できませんでした」ってだけなんで特に気にする事じゃないです。
むしろ「エラー」を見て欲しい。
412,,・´∀`・,,)っ-○◎●:2008/12/19(金) 18:40:55
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index-jp.html
こいつ以外にSFMTっていう乱数ライブラリあるのか知らないが
そもそもbccで使えた記憶が無い
413デフォルトの名無しさん:2008/12/19(金) 18:49:32
>>408
コンパイラの指定は無いのですが、最初の授業で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
授業中に配布されたプリントにあるプログラムをほとんど改変しない状態なのですが、
問題が多いのでしょうか?
414,,・´∀`・,,)っ-○◎●:2008/12/19(金) 18:53:48
それよりemmintrin.hが無いとかのエラー出てないか?

gcc推してるならCygwinのほうがいいかもしれないが
VS2008 Expressでもいいと思う
415デフォルトの名無しさん:2008/12/19(金) 18:54:10
>>408 が見えなかったが、NGに指定してた団子かw
416,,・´∀`・,,)っ-○◎●:2008/12/19(金) 18:54:27
とりあえずsageるか
417デフォルトの名無しさん:2008/12/19(金) 18:59:12
いきなり難しいことを言われてちょっと混乱気味なのですが、
GCC環境でこの課題は出来ないって事ですか?

SFMTの部分を無視して、普通に乱数を作り
比較回数と代入回数を求めるプログラムをお願いできませんか?
418,,・´∀`・,,)っ-○◎●:2008/12/19(金) 19:02:09
むしろGCCを使え。Cygwinをインストールするときにgccを選択すればいい。
Visual C++ 2008 Expressでもいい。
Borland C++ 5.5.1使ってるんだろ?

もう一度聞くけど、bccでコンパイルしてemmintrin.hが無いとかのエラー出てないか?
エラーを確認しろ。「警告」はエラーではない。
419デフォルトの名無しさん:2008/12/19(金) 19:02:56
乱数発生の部分は自分で作っても問題ないんでしょ?
いくつかのサンプルで、実行結果と処理時間を計測して出せば良いんでしょ?
あと、見下す発言をする団子は、京産大未満
420デフォルトの名無しさん:2008/12/19(金) 19:06:33
http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&hs=cTc&q=%E3%83%80%E3%83%B3%E3%82%B4%E3%83%AA%E3%82%AA%E3%83%B3&btnG=%E6%A4%9C%E7%B4%A2&lr=
> 中国沿岸で発生したダンゴリオンの大発生で、地元の漁師が頭を痛めている。
吹いたw
421,,・´∀`・,,)っ-○◎●:2008/12/19(金) 19:13:38
>>417
味方になってやるから教員のメールアドレス教えてよ。

ちなみにKOとかじゃないよね?
うちのマイミクに1年生向けの講義受け持ってる非常勤講師がいるけど。
422デフォルトの名無しさん:2008/12/19(金) 19:28:15
[1] C
[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を使ってください。
423,,・´∀`・,,)っ-○◎●:2008/12/19(金) 19:37:22
>>417
まあいいや、とりあえずバブルソートの関数でっちあげてみたからとりあえずこれで出してみなよ。

っていうか、代入回数って何を指してるんだ?
順序入替の回数のことだと脳内補完したけど

#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);
}

バブルソート本体はこんな感じでいいんだろ?
別ファイルにしろって言ってるように見えるが。
424デフォルトの名無しさん:2008/12/19(金) 19:48:04
>>418
そのようなエラーはないです。
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
アドレスを教えるのはちょっと・・・
425,,・´∀`・,,)っ-○◎●:2008/12/19(金) 19:58:15
こっちでも確認した。
SSE2使用のdefineしなきゃbccでもコンパイルできるんだな。
逆に俺のほうが教えられたよ。っていうか斉藤君にも教えておくか。

で、btime.cがmainで、課題で作るのはbubble.cの中身だけだろ。
確認してみて。
426デフォルトの名無しさん:2008/12/19(金) 19:59:50
まつもとまことさんじゃないんだ?
だんごのAAって
´∀` に、ほっぺたの・なのか
・∀・ にしかめ眉をつけたのか
それが気になって仕方ないんだけど
427デフォルトの名無しさん:2008/12/19(金) 20:04:25
団子は基地外だから、放置、スルーした方が良いよ。
いわゆる構ってちゃんって奴。うざすぎ。自作板では嫌われ者だぞ。
428,,・´∀`・,,)っ-○◎●:2008/12/19(金) 20:06:29
>>426
たまに松本研究室から俺宛にメールくるけどいつも斉藤君だよ。
松本教授と話したことが無い。忙しいだけなのか足元みられてるのかは知らんが。
というか、SFMT自体、彼の修士論文のネタだし。
429デフォルトの名無しさん:2008/12/19(金) 20:06:31
>>425
bubble.c insert.c select.cは教科書に載っている物を使用です。
先ほどアップした物も、教科書に載っている物です。

実行用のデータは授業の配付資料に書いてあるもので、SFMT用に手を加えてアップしてみました。

アップしたデータの時点で、時間測定は出来るので、これに比較回数と交換回数(代入回数と書いてある場所もあり)
をカウント出来る物に改良する。
データ数が5000・10000・15000・20000の時の時間と回数を出し、コレを元に

1,バブルソートと選択ソートの実行時間が異なる理由を簡潔に説明
2,上記を図表を用いて具体的に説明

というのが課題です。
430デフォルトの名無しさん:2008/12/19(金) 20:12:38
431,,・´∀`・,,)っ-○◎●:2008/12/19(金) 20:14:34
随分懐かしいブログだな
432デフォルトの名無しさん:2008/12/19(金) 20:15:43
433デフォルトの名無しさん:2008/12/19(金) 20:18:48
>>428
そっかあ。ずいぶんgeekっぽい教授に思えたからせっせとがんばってるのかと思った。
434デフォルトの名無しさん:2008/12/19(金) 20:21:59
>>427
今このスレを見てる限りあなたの方がうざいんですけど。。。
435デフォルトの名無しさん:2008/12/19(金) 20:22:09
436デフォルトの名無しさん:2008/12/19(金) 20:23:19
>>434
自作自演かよ、基地外w
お前の方がうぜぇよ。スレタイ読めよ、何馴れ合い、個人的な雑談を始めてんだよ?
とっとと宿題に答えるなり、無関係な話なら他所でやれや、日本語もろくに読めないガキ。
437デフォルトの名無しさん:2008/12/19(金) 20:25:31
ほらやっぱり。うぜえ。
438,,・´∀`・,,)っ-○◎●:2008/12/19(金) 20:25:44
>>429

>>423でなにか問題あるかな?
439デフォルトの名無しさん:2008/12/19(金) 20:27:30
>>434 = >>403 か。答えてもらう側のくせして、偉そうにしてんじゃねーよ。
団子も、自分が解ける課題には食いつくくせに、馬鹿だの死ぬだの言っておきながら
答える気も無く、あっ、それ知ってる程度のことを言いたいだけだろ。
バブルソートなんて、効率が悪いのは分かりきっているし、その程度の課題も
自力で解けない奴が、のうのうと単位だけ貰って卒業って、どんだけレベルの低い学校だよ?
学校名を名乗れ。就職内定の逆ブラックリストにしてやんよ?
440デフォルトの名無しさん:2008/12/19(金) 20:31:41
>>439
無能は去れ
441434:2008/12/19(金) 20:36:08
>>439
おお、出題者が自演してると思われたのか。
だんごの自演とどっちなのか悩んでたw
そんな見る目ない人が人事権持ってる会社ってどこ?
パートナー企業に選ばないようにするから教えてくれw
442デフォルトの名無しさん:2008/12/19(金) 20:37:28
 \                    /
   \  丶       i.   |      /     ./       /
    \  ヽ     i.   .|     /    /      /
      \  ヽ    i  |     /   /     /
   \
                                  -‐
  ー
 __          わ た し で す            --
     二          / ̄\           = 二
   ̄            | ^o^ |                 ̄
    -‐           \_/                ‐-

    /
            /               ヽ      \
    /                    丶     \
   /   /    /      |   i,      丶     \
 /    /    /       |    i,      丶     \  
443,,・´∀`・,,)っ-○◎●:2008/12/19(金) 20:39:34
バブルソートが効率が悪い?www
安定型だからデータ構造やサイズによってはむしろ有用なのに。

その程度で採否基準きめるなんて随分レベルの低い会社だな。企業名名乗れよ。ブラック企業リストにしてやんよ。
444デフォルトの名無しさん:2008/12/19(金) 20:45:08
> 自分が解ける課題には食いつくくせに

そういうあなたもねw

よくミスってる人だよね?あ、まちがえた。あ、またまちがえた。っていう。
今がんばってどれかの課題のコード書いてるんでしょ?
次はミスしないでね。

でも、「俺は回答者さまだぞー!」って雰囲気はすごいステキ。がんばってね。

>>443
確かに破壊型は時々残念な結果を生むね
445デフォルトの名無しさん:2008/12/19(金) 21:09:18
挿入ソートならともかくバブルソートは無いわ
446デフォルトの名無しさん:2008/12/19(金) 21:11:31
>>438
実行してみたのですが・・・・
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ではありません。。。
447,,・´∀`・,,)っ-○◎●:2008/12/19(金) 21:13:49
Win32顧問コントロールって、リストビューのヘッダ押すとソートする機能あるよね。
あれ内部アルゴリズムはバブルソートかなんかだと思うよ。
少なくとも、nの2乗のオーダーの何かっぽい。
1万超えるとアホみたいに遅くなる。

大量にデータ扱う場合は遅くてしょうがないからオーナーデータで処理するけど(描画もオーナードロー)
クイックソートとかにしちゃうとまたおかしなことになるからね。
昔std::sortを安易につかっちゃって大目玉食らったことがある。結局stable_sortで落ち着いたけど。

>>445
リンケージリストならそうするだろうな。配列ではまずありえねぇ。
448デフォルトの名無しさん:2008/12/19(金) 21:14:28
>>446
そのぐらいエラー見て直せないの?
449,,・´∀`・,,)っ-○◎●:2008/12/19(金) 21:16:47
>>446

変数名あわせるのミスってたわ。修正してみた。
まあその辺も自分で直せる事も必要な能力だけど。

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);
}
450デフォルトの名無しさん:2008/12/19(金) 21:21:07
>>447
挿入ソートをなんか勘違いしてるだろ
別に配列でも使えるぞ
451デフォルトの名無しさん:2008/12/19(金) 21:26:03
なるほど・・・うまく実行できました。

これの選択ソート、挿入ソート版もお願いできないでしょうか?
よく課題を見返すと、クイックソートとマージソートについても同じ事をやならいといけないみたいです。
452,,・´∀`・,,)っ-○◎●:2008/12/19(金) 21:29:50
>>450
使えるが、配列の途中にデータを挿入すると、後ろの要素を1個ずつ移動しないといけないよね?
ソートの対象をポインタ配列にしてなおかつリングバッファとして使うとそれなりに速くはなるが。


453デフォルトの名無しさん:2008/12/19(金) 21:32:54
>>452
いやなに当たり前なこといってんだよ
454デフォルトの名無しさん:2008/12/19(金) 21:34:00
そんなmemmoveラッシュな実装ってやだな
455,,・´∀`・,,)っ-○◎●:2008/12/19(金) 21:44:31
>>451
もう・・・ここでも見なさい
http://www1.cts.ne.jp/~clab/Contents/Sortindex.html
Google先生を使う能力も現場(笑)では結構重要だったりします。


>>454
それはそれでSIMD命令の使いどころではあるので俺的にはそんなに嫌いでもない。
1要素4バイト程度なら4要素同時に操作できるし
456デフォルトの名無しさん:2008/12/19(金) 22:01:54
本当に困っています。
この>>385の問題分かる方お願いします。
457デフォルトの名無しさん: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);
}
}
458,,・´∀`・,,)っ-○◎●:2008/12/19(金) 22:23:21
>>456
/* ファイルを読込、表示させる */
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);

でいいんじゃないの?


番号  氏名  なまえ

なんて文字列をデータに保存するのかって疑問もあるが
459403:2008/12/19(金) 23:13:46
結局のところ、BCCでSFMTの利用は出来ないのでしょうか?
どうしても警告が消えません
警告 W8027 SFMT.c 255: forを含む関数はインライン展開できない
警告 W8027 SFMT.c 280: forを含む関数はインライン展開できない
460デフォルトの名無しさん:2008/12/19(金) 23:15:43
>>459
それ警告じゃねーの?
461デフォルトの名無しさん:2008/12/19(金) 23:16:23
警告だから無視すればいいんじゃねーの? だ
462デフォルトの名無しさん:2008/12/19(金) 23:23:13
無視して実行すると、VISTAのデータ実行防止で強制終了になってしまいます。
463デフォルトの名無しさん:2008/12/19(金) 23:26:04
464,,・´∀`・,,)っ-○◎●:2008/12/19(金) 23:27:25
データ実行防止で云々は別の問題な気がするが。
bccには何か拘りある?どっちにしろ現状あまり薦められないが。
465デフォルトの名無しさん:2008/12/19(金) 23:33:33
コマンドプロンプトを管理者モードで実行してみたのですが、結局同じエラーで強制終了でした。
学校のXPマシンでもこの警告は出ていたのですが、実行してみなかったので
XPだったらどうなったのか。。。
466デフォルトの名無しさん:2008/12/19(金) 23:36:44
とりあえず、適当に乱数を用意して、とっととそれぞれのソートの
必要な検証データを記録したら?別に、乱数発生については、
コードの提出はせず、結果を出して報告すれば良いんでしょ?
安定型は比較回数は要素の数で分かるし。ただ、記述を間違えると
交換回数に差が出るよ。
基本選択法だが、 >>457 と >>463 のように。
467デフォルトの名無しさん:2008/12/19(金) 23:40:21
>>444
> よくミスってる人だよね?あ、まちがえた。あ、またまちがえた。っていう
誰かと勘違いしてね?それは答えている人だろ?妄想しすぎで、あんたがキモイよ。

>>440
口先だけのお前が黙ってろ
468デフォルトの名無しさん:2008/12/19(金) 23:40:59
そうですね。結果だけでいいので、今問題なく動いている状態で調べてレポートを書いてみます
469デフォルトの名無しさん:2008/12/19(金) 23:47:44
>>467
ちょ、回答者じゃないのかよw
470デフォルトの名無しさん:2008/12/19(金) 23:52:29
>>469
いや、>>1が読めない人?自分紹介の雑談スレじゃないんだよ、ここ。
ましてや、団子と話がしたいなら、団子が運営しているサイトにでも行ってくれ。
第三者からして見たら、そんな雑談こそ邪魔。
471デフォルトの名無しさん:2008/12/19(金) 23:56:27
質問者ならごちゃごちゃ言わずに宿題貼れようっとうしい
回答されないからって文句たれんな
472>>385>>456:2008/12/20(土) 00:01:26
>>458
さっそくありがとうございます。
sscanf()は使った事がないので少し調べ、アドバイスを参考に改良してみたのですが、
エラーが出てしまい解決が出来ませんでした。エラー内容は、
エラー E2356 untitled.c 278: 'InsertRear' の再宣言で型が一致していない

たびたび申し訳ないのですが、どこが間違っているのでしょうか
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8407.txt


473デフォルトの名無しさん:2008/12/20(土) 00:08:59
InsertRear関数本体前に使用されたInsertRearがint型とみなされた。
しかし実際はvoidなのでエラーになったと。

InsertRearのプロトタイプ宣言をするか、
関数本体をもっと上に移動しなさい。
474デフォルトの名無しさん:2008/12/20(土) 00:30:45
[1] 授業単元:休日プログラミング
[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] その他の制限:特にありません
475デフォルトの名無しさん:2008/12/20(土) 00:32:27
>循環小数の場合は、小数部の循環する部分を括弧で囲みます。
ここってどうやって判定するん?
プロ教えて?
476>>385>>456:2008/12/20(土) 00:43:23
>>473
動作しました!ありがとうございます。

動作はしたのですが、なまえの出力がなぜか@になってしまいました。
理由が分かりません、これで最後にしますので訂正をお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8408.txt
477デフォルトの名無しさん:2008/12/20(土) 00:56:18
sscanf の2番目の引数の最後の改行入らなくね?
動かしてないから当たってるかどうかはしらんけど。
478デフォルトの名無しさん:2008/12/20(土) 01:03:22
>>474 さあ、検算してくれたまへ
#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;
}
479>>385>>456:2008/12/20(土) 01:04:00
>>477
\nを削除して実行してみましたが、実行結果は変わりませんでした。

けど、確かに\nは不要かもしれません。
480デフォルトの名無しさん:2008/12/20(土) 01:04:39
ありがとうございます
481デフォルトの名無しさん:2008/12/20(土) 01:09:23
>>476
::
482478:2008/12/20(土) 01:10:31
>>474 >>478 の修正版 ( abs(n)<abs(d) かつ n*d<0 の時に対応させた )
#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;
}
483,,・´∀`・,,)っ-○◎●:2008/12/20(土) 01:10:53
>>479
%sの後ろのスペース削ってみ?

484デフォルトの名無しさん:2008/12/20(土) 01:16:26
>>482
C++はよくわかんねえ。
アルゴリズムを川柳で説明してみて。
485デフォルトの名無しさん:2008/12/20(土) 01:18:24
>>484
なんとなく
解いてみたなら
それっぽい
486>>385>>456:2008/12/20(土) 01:19:49
>>483
実行してみましたが、出力結果は変わりませんでした。

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);
487デフォルトの名無しさん:2008/12/20(土) 01:19:57
> 循環小数の場合は、小数部の循環する部分を括弧で囲みます。
これをCでやるとどうなるの?
488デフォルトの名無しさん:2008/12/20(土) 01:22:36
>>214
実行したところ214が上手く作動しないんですが。
489デフォルトの名無しさん:2008/12/20(土) 01:24:38
>>485
それ俳句な!
490デフォルトの名無しさん:2008/12/20(土) 01:28:29
>>488
他にもソートのソースは出ているから、それを流用しちゃって。
配列のポインタと、要素数を与えてやれば良いだけだし。
491デフォルトの名無しさん:2008/12/20(土) 01:29:25
>>486
data.txtのなまえのコロンが全角になってるのが問題ではなかろうか
492デフォルトの名無しさん:2008/12/20(土) 01:30:31
>>486
481無視かよ
いいから、黙ってコロンを全部半角にしろ(データファイルも)

>>489
季語無いから川柳だろ
493>>385>>456:2008/12/20(土) 01:32:56
>>492
すぐに試してみます
494デフォルトの名無しさん:2008/12/20(土) 01:36:33
>>492
なんだと……
495>>385>>456:2008/12/20(土) 01:37:22
>>492
確認してきましたが、全て半角になっていました。
496デフォルトの名無しさん:2008/12/20(土) 01:59:14
遅レスですまぬが
>>376
do while にすると大体は正しく動くと思うのだが
"hoge" と "hogera" とかはよろしくない気がする。順序逆でも。
もし修正済みだったらごめん
497デフォルトの名無しさん:2008/12/20(土) 01:59:14
このスレば
わがスレと思ふ
宿題の
欠けたることも
なしと思へば
498デフォルトの名無しさん:2008/12/20(土) 02:02:05
>>496
ん〜、最初を hoge にして 2番目を hogera で比較したが、
strcmpも自作の比較関数も、両方ともマイナスで返ってきたよ。
あと、両方とも空の場合、文字列と言うべきかは別として、
2つとも同じ文字列だと解釈しても成立。
499デフォルトの名無しさん:2008/12/20(土) 02:15:57
>>498
今ちゃんとコード読んだんだけど、fgets使ってるから
"hoge\n"と"hogera\n"を比較してることになるんじゃないのかな?
まあ課題だし、問題ないのかもしれないけど
500デフォルトの名無しさん:2008/12/20(土) 02:18:59
>>499
そうだけど、それでもstrcmpと比較しても、値はともかく正負、0は一致したよ。
もし改行コードを抜いて空文字にしても、長い方が辞書順では大きい値として
処理されて返ってくるから、問題はなし。while文が完了するのは
一致した時だし。ただ、一方に改行コード、もう一方を改行コード無しで
同じ文字だと認識しても、それはそれで改行コードの違いを
関数は判定するわけだから、改行コードの方が長いと解釈して問題なし。
strcmpでも同じ結果になるよ。
501デフォルトの名無しさん:2008/12/20(土) 02:20:22
ちと補足
一方に改行コード、もう一方を改行コード無しで、それより前の
印字可能な文字が同じだった場合
502496:2008/12/20(土) 02:43:56
>>500
do-whileってこういう修正?
俺がこれを勘違いしてるんだったらすまん

do{
if(*s1 != *s2) {
if(*s1-*s2>0) return 1;
else return -1;
}
else { s1++; s2++; }
}while( *s1 && *s2);
503デフォルトの名無しさん:2008/12/20(土) 02:52:24
>>495
それが真実なら、>>476のをうpするときにわざわざ全角に変えたということになるが?

俺にはdata.txtに全角コロンがあるように見えるし、ソースにも全角コロンが8文字ほど含まれているように見える
念のため言っておくと、全部ってのは文字通りソースとデータファイルに含まれるコロン全部だよ
一部(sscanfの箇所)だけみて全部半角だなんて言っていることは想像に難くないが
504デフォルトの名無しさん:2008/12/20(土) 02:55:44
まぁ、あのコードじゃ不完全だし、それじゃどうとか言うくらいなら、
自分で書いたら?
505デフォルトの名無しさん:2008/12/20(土) 02:59:31
>>393
われながら、なにがなんやらだけど
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8409.zip
506デフォルトの名無しさん:2008/12/20(土) 03:06:14
>>359 まんどくせっ
#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;
}
50787:2008/12/20(土) 05:51:26
[1] 授業単元: ソフトウェア制作実習
[2] 問題文(含コード&リンク):

斜面を落下する球体の瞬間速度を求めるプログラムを作りなさい。

球体の重量、斜面の傾斜角[θ]、測定位置[cm](落下位置からの距離)を自由に設定可能なものとし
測定位置における、瞬間速度を算出するプログラムを作りなさい。空気抵抗、斜面とボール間の摩擦、は考慮に入れなくてもよい。
なお、必要な行には説明も入れること。

[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語:/C
[4] 期限: 2009/1/7
[5] その他の制限: なし

科目がちょっと違う気もしますが、どなたかお願いします…
508デフォルトの名無しさん:2008/12/20(土) 06:32:20
>>507

#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;
}

こんな簡単な計算式をわざわざプログラミングする意味がわからん。
509デフォルトの名無しさん:2008/12/20(土) 09:26:40
[1] 授業単元: 科学実習T
[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] その他の制限:特になし
510デフォルトの名無しさん:2008/12/20(土) 09:38:11
[1] 授業単元: C
[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] その他の制限:問題文に沿って足らないところを足してください
お願いします
511デフォルトの名無しさん:2008/12/20(土) 10:29:12
>>509
Input?ときて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;
}
512デフォルトの名無しさん:2008/12/20(土) 10:43:35
>>510
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8411.txt

雛側使わなかったらもっと効率良くなるんだけどね
513デフォルトの名無しさん:2008/12/20(土) 11:47:45
その効率っていうのは処理速度とかそんなのですか?
514デフォルトの名無しさん:2008/12/20(土) 12:05:11
[1] 授業単元:プログラミング演習
[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] その他の制限: アルファベットの頻度を集計する関数の部分をやっていただきたいのですが
             他にも足らない部分があったら補足をお願いします。
515デフォルトの名無しさん:2008/12/20(土) 12:18:50
for(p=buf; *p; *p++)
{
 if(isalpha(*p)!= 0)
 {
  Hind[*p - 'A']++;
 }
}
516デフォルトの名無しさん:2008/12/20(土) 12:32:53
>>515
*p++はp++だけでいいよ
517デフォルトの名無しさん:2008/12/20(土) 12:35:11
>>516
すまん、チェックせずそのままコピってた
518デフォルトの名無しさん:2008/12/20(土) 13:16:55
>>513
ループの回数だね
>>512は26回ファイルを読み込んでるけど、それは関数の仕様が1文字ずつしか数えられないから
実際にはファイルの読み込みは1回で済むよ
519デフォルトの名無しさん:2008/12/20(土) 13:19:51
>>514
freq 関数の中で
if(isalpha(*p)!= 0)
{
この行を挿入→ Hind[*p - 'A']++;
}

ていうか >>510 とほとんど同じ問題だなこれ
520デフォルトの名無しさん:2008/12/20(土) 14:01:57
ソースコード:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8413.txt

構造体に氏名、会員番号が入るようにしてデータ登録、データ検索、データ削除を
行うプログラムを作っています

登録、検索、削除はそれぞれ関数を呼び出して行うようにしていますが、
検索を呼び出した時に、ちょっと問題があります
検索仕様は、探す会員番号を入力すると、その会員番号の人を構造体から探して
その人の氏名を出力させるのですが
どうも氏名が出てきません

長いかもしれませんが、ご教授お願いします
521デフォルトの名無しさん:2008/12/20(土) 14:05:50
教示
522デフォルトの名無しさん:2008/12/20(土) 14:08:52
テンプレ
523520: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] その他の制限: 基本的な物は一通り終えています。
制限は特にありません。
524デフォルトの名無しさん:2008/12/20(土) 14:36:04
>>523
先頭に<string.h>
char *name; → char name[36];
hashtable[i].name = name; → strcpy(hashtable[i].name, name);
実行チェックはしていない
525520:2008/12/20(土) 14:47:27
>>524
ありがとうございます。
無事表示されました。

やっぱり登録のやり方がまずかったみたいですね
登録の関数からreturnすると、氏名が消えてたみたいです
526デフォルトの名無しさん:2008/12/20(土) 15:05:56
>>525
変数のスコープとか
ポインタの基本、文字列の扱いについてとか
ぐぐって調べるといいかもね。
これ以上はスレ違いだから初心者スレとか別の場所で頑張って
527デフォルトの名無しさん:2008/12/20(土) 15:15:17
>>514
幾らなんでも、変数名にハインドはありえなさすぎw
一瞬何事かと思ったよ
528デフォルトの名無しさん:2008/12/20(土) 16:32:00
>>508
ありがとうございました
529デフォルトの名無しさん:2008/12/20(土) 21:55:25
団子はランクF未満のクズ
530デフォルトの名無しさん:2008/12/21(日) 00:27:40
自由課題
オセロの”ベース”を作ってもらいたいです。
環境Mac
言語C++
期限12月21日


 123456
1・・・・・・
2・・・・・・
3・・○●・・
4・・●○・・
5・・・・・・
6・・・・・・
↑こんな感じです。

「(3,2)などの座標を入力すれば○と●が交互に置かれて、挟まれたら裏返る」という、ベースの段階を作ってもらいたいです。
人vs人でプレーするものが良いです。上の図のように、座標を表す数字もお願いします。
後から自分で、○と●の数をカウントしたり、どっちが勝ったか表示されるように手を加えたいと思っています。
そのため、大学ではiostreamで書いているので私が後から理解できるようにiostreamを使って欲しいです。

注文が多く時間も少なくて申し訳ないですが、どうかよろしくお願いしますm(__)m
531デフォルトの名無しさん:2008/12/21(日) 00:30:54
7行オセロでは無理だったか・・・・
532デフォルトの名無しさん:2008/12/21(日) 00:59:50
>>531
はい><
本当によろしくお願いします。。。
533デフォルトの名無しさん:2008/12/21(日) 01:38:37
7行はアルゴリズムから7行とはよく言ったもんだ。
「リバーシのアルゴリズム」ってそのものズバリな本があったな。図書館いってみ?
もしくはジュンク堂
535デフォルトの名無しさん:2008/12/21(日) 02:19:03
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):
画像のヒストグラムを調べるプログラムの作成。
及び2値化画像を作成するプログラム。

[3] 環境
 [3.1] OS:Windows (LINUXでも可)
 [3.2] コンパイラ名とバージョン: bcc(linuxはgcc)
 [3.3] 言語: C言語
[4] 期限: 2008年12月22日
お願いします。
536デフォルトの名無しさん:2008/12/21(日) 02:41:32
画像ってなんだよ
537デフォルトの名無しさん:2008/12/21(日) 02:44:13
>>535
画像の形式もわからないし、2値化の閾値をどうするのかも示されていないのに無理
538デフォルトの名無しさん:2008/12/21(日) 06:00:00
>>530 7行に収めましたのでどうぞ。
#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;}
539デフォルトの名無しさん:2008/12/21(日) 06:53:15
>>534
キモイからレスしないでくれる?名前くらい変えろ、目立ちたがり屋
540デフォルトの名無しさん:2008/12/21(日) 11:44:10
[1] 授業単元: 乱数
[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] その他の制限:特になし

お願いします
541デフォルトの名無しさん:2008/12/21(日) 13:41:21
542デフォルトの名無しさん:2008/12/21(日) 14:55:20
>>530
間違えた。こっちな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8416.zip
自分自身の勉強がてら書いてみた。
543デフォルトの名無しさん:2008/12/21(日) 17:34:31
[1] 授業単元: プログラム演習
[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日
よろしくお願いします。
544デフォルトの名無しさん:2008/12/21(日) 17:49:30
[1] 授業単元: CをC++へ
[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、終わりにする の選択肢をお願いします。

頼んでばかりですみません><
545デフォルトの名無しさん:2008/12/21(日) 18:04:14
>>544
>「実行がドス画面じゃ寂しいのでC++にしてみようか」
意味不明
WindowsAPIやMFCを使えってことか?
546デフォルトの名無しさん:2008/12/21(日) 18:08:48
>>545
すみません。。。
おっしゃるとおりWindowsAPIかMFCで作れといわれました
547デフォルトの名無しさん:2008/12/21(日) 18:09:57
ばれた上で遊ばれてるな
548デフォルトの名無しさん:2008/12/21(日) 18:11:37
>>543
俺の勘違いでなければ、main関数の前にプロトタイプ宣言書いて
main内の呼び出しを2行くらい書き換えるだけだと思うのだが
549デフォルトの名無しさん:2008/12/21(日) 18:16:17
>>544
普通に、出来ませんでしたって答えれば良い話じゃね?
550デフォルトの名無しさん:2008/12/21(日) 18:19:37
>>544
2800年にもVC++が出るのか・・・
551デフォルトの名無しさん:2008/12/21(日) 18:19:44
できないからここで頼んでいるんです><
分かりきったことまで書かないとあなたは気がすまないんですか!
552デフォルトの名無しさん:2008/12/21(日) 18:21:12
逆ギレktkr
553デフォルトの名無しさん:2008/12/21(日) 18:22:15
そんなこといってないで早く作ってください!
554デフォルトの名無しさん:2008/12/21(日) 18:26:16
[1] 授業単元: 実験
[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] その他の制限: なし

これって可能なのかな?
555デフォルトの名無しさん:2008/12/21(日) 18:28:06
[1]授業単元:C言語
[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]特にありません。
556デフォルトの名無しさん:2008/12/21(日) 18:33:49
>>551
冷静に考えれば、困ること無いじゃん
557デフォルトの名無しさん:2008/12/21(日) 18:36:07
>>540
問題の意味がよくわからんかったけど、興味深かったので作ってみた。
自分のために作ったようなものなので他の人の待ったほうがいいかも。

OSはXP、コンパイラはBCC Developer(?)、言語はC++でつくり、new演算子使ってるんでCでは動かない。
また、4次元だけじゃなくn次元について解析できるようにしてるのでその分複雑。
俺のプログラムは理解しづらいと評判なので理解するのに時間かかりそう。
(俺としてはけっこう綺麗に作ったつもりだが)

もしよかったら、必要に応じて改良して使ってくれ。一応解説もつけた。
ttp://gigabyteserver.com/uploader01/upload.php?counting=094&firen=winplus.jp094.zip
558デフォルトの名無しさん:2008/12/21(日) 18:40:28
>>555
int 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("見つかりませんでした");
}
559デフォルトの名無しさん:2008/12/21(日) 18:42:09
逆切れしたのは誰か知りませんが放っておいて 焦って2008を2800って書きました。

>>549
「できませんでした」って言うのも考えたんですが
これの単位を落とすと非常にまずいので不安材料は消しておきたいんです。
不安を抱えたまま新年ってのも嫌ですしね・・・
560デフォルトの名無しさん:2008/12/21(日) 18:45:18
>>559
WinAPIとか習ってるの?
現実に出来ないような物を急に「できました」って持って行って平気なの?
561デフォルトの名無しさん:2008/12/21(日) 18:47:58
[1] 授業単元:文字列の比較
[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までしか習っていません。
何卒よろしくお願いします。
562デフォルトの名無しさん:2008/12/21(日) 18:54:31
>>559
>逆ギレ
テンプレになりすましに関しての注意書きがある。
これを守ってない以上はおまいの責任だろ

まあ普通は気にしなくてもあんまり問題起きないんだけどさ
563デフォルトの名無しさん:2008/12/21(日) 18:57:12
>>561
char 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'とかすればよいと思う。
564デフォルトの名無しさん:2008/12/21(日) 18:59:40
>>560
一応授業のほうでやったんですけど 授業なら教科書通りにやればいいんですが
自作(作ってもらったものですが)を変換するとなるとやり方が難しくて・・・
全ての時間をそれに費やせばできるかもなんですが 他の授業もあってそこまで時間が取れなくて・・・
565デフォルトの名無しさん:2008/12/21(日) 19:02:35
>>561
#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;
}
566デフォルトの名無しさん:2008/12/21(日) 19:03:28
>>564
要件も理解していないようでは、時間があっても無理なんじゃね?
567デフォルトの名無しさん:2008/12/21(日) 19:04:43
[1] 授業単元:c++builder
[2] 問題文:下記に記載
[3] 環境
 [3.1] OS: windows xp
 [3.2]c++ builder5
 [3.3] 言語:c++ builder
[5] その他の制限:なし

0に対応するmemo1の値は正常値で1に対応する値はエラー値として考え
memo1とmemo2を見比べてエラー値のあった部分はその前後の0(正常値)から
線形補間していきmemo3のように線形補間された配列を書き出すプログラムを作りたいのですが
どのように書いていけばよいのでしょうか?
お手数ですがよろしくお願いします。
568デフォルトの名無しさん:2008/12/21(日) 19:05:03
>>564
出来た分を持って行って妙なダメだしが出るくらいだから、単位はムリじゃないのか?
「可」ぐらいで通るのかも知れないけど・・・
569デフォルトの名無しさん:2008/12/21(日) 19:05:56
memo1 memo2 memo3
5.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
・     ・    ・
・     ・    ・
570デフォルトの名無しさん:2008/12/21(日) 19:05:58
>>563
561ですが、strncmp使ってない場合、どこをstr1[5] = '\0'等に書き換えればよいですか。
教えていただけるとありがたいです。
571デフォルトの名無しさん:2008/12/21(日) 19:09:43
>>570
char 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");
}
572デフォルトの名無しさん:2008/12/21(日) 19:16:07
>>563>>565>>571
561です。ありがとうございました。
573デフォルトの名無しさん:2008/12/21(日) 19:45:55
>>562
お前が犯人か、陰湿な基地外だな。
574デフォルトの名無しさん:2008/12/21(日) 19:47:20
[1] 授業単元:文字列の計算
[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までしか習っていません。
よろしくお願いします。
575デフォルトの名無しさん:2008/12/21(日) 19:52:02
頼んだほうで悪いですけど言わせてもらいます。
別に「単位は無理じゃないか?」とか「時間があっても無理だろ?」
とかの意見は求めていませんので。
やってくださる方がいたらお願いします というお話です。
以後関係のない発言はスルーさせてもらいます。
576デフォルトの名無しさん:2008/12/21(日) 19:56:33
トリ付けなかった結果がこれだよ!!!!!!
577デフォルトの名無しさん:2008/12/21(日) 20:00:22
>>574
forのループを逆(デクリメント)にして、ループごとに10かけていけばいいと思うよ
578デフォルトの名無しさん:2008/12/21(日) 20:00:55
>>574
サンプルプログラムで、2箇所ある
value[i]+=(temp[j]-'0')*(int)pow(10,strlen(temp)-(j+1));//3数値の加算

value[i] *= 10;
value[i] += (temp[j]-'0');//数値の加算
に変更する。
579デフォルトの名無しさん:2008/12/21(日) 20:10:36
>>575
ぶっちゃけ、要件も示されていないと、誰もどうしようもないけどな
580デフォルトの名無しさん:2008/12/21(日) 20:11:42
                      クルッ
.                     ハ,,ハ    ミ  _ ドスッ
.                    ( ゚ω゚ )彡―─┴┴─―
    *  *  *  \       /   つ  お断りし /      ハ,,ハ
  *          *   \   〜′ /´ └―─┬/       ( ゚ω゚ ) お断りします
 *    ハ,,ハ     *   \   ∪ ∪      /        /    \
 *   ( ゚ω゚ )    *     .\         /       ((⊂  )   ノ\つ))
 * お断りします  *     . \∧∧∧∧/             (_⌒ヽ
  *           *       <      お >            ヽ ヘ }
    *  *  *        < の し 断 >       ε≡Ξ ノノ `J
────────────< 予 ま わ >────────────
.        オコトワリ      < 感 す り >
  ハ,,ハ    ハ,,ハ     .ハ,,ハ  <. !!      >     ハ,,ハ
. .( ゚ω゚ ) . ( ゚ω゚ )  ( ゚ω゚ )  /∨∨∨∨\   ( ゚ω゚ )<お断り    .ハ,,ハ
   │      │      │   /          .\         します>( ゚ω゚ )
,(\│/)(\│/)(\│ /.              \
               /   ♪お断りします♪  \
              / ハ,,ハ   ハ,,ハ   .ハ,,ハ   ハ,,ハ\
.              ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ )
581デフォルトの名無しさん:2008/12/21(日) 20:24:35
>>577
10かける処理はどこに入れればいいのでしょうか。

>>588
やってみたんですが、
123456789
123456789
123
と入力したら
9 + 9 + 123 = 141
となってしまったのですが。
582デフォルトの名無しさん:2008/12/21(日) 20:29:28
>>574
なんで%uでscanfして一気に足さないで複雑な処理をしてるの?
583デフォルトの名無しさん:2008/12/21(日) 20:34:51
>>578
掛ける10と足す逆じゃね?
584デフォルトの名無しさん:2008/12/21(日) 20:36:48
ごめんどっちでもいいか
585デフォルトの名無しさん:2008/12/21(日) 20:37:38
>>583
横からですまんが
それやると、最終的に10倍されて出てくる気がする
586デフォルトの名無しさん:2008/12/21(日) 20:39:01
C++でvectorと配列の両方で動くmedian関数をつくっているのですが

template<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の要素の数が求められなくて困っています。
両方の要素数をもとめる方法を教えてください。
587デフォルトの名無しさん:2008/12/21(日) 20:42:04
>>586
【初心者歓迎】C/C++室 Ver.62【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1229095398/
588デフォルトの名無しさん:2008/12/21(日) 20:44:31
>>586
本当に配列の方がうまくいったの?w

特殊化すればいいんじゃね
589デフォルトの名無しさん:2008/12/21(日) 20:53:18
引数がvectorと配列だけで想定されているので特殊化してしまうと、templateで作成する意味がなくなってしまうのですが
説明が遅れてもうしわけないのですが、宿題が出された講義ではtemplateあたりやっていたのでおそらくtemplateは使うものとするみたいです
590デフォルトの名無しさん:2008/12/21(日) 20:57:14
>>589
死ね
591デフォルトの名無しさん:2008/12/21(日) 21:02:25
>>590 オマエガナー
592 ◆lk.BtVFWHM :2008/12/21(日) 21:07:02
544ですが いろいろ書き忘れがあったようなのでもう1度書かせていただきます。

[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、終わりにする の選択肢をお願いします。
なにか必要事項で足りないことがあれば質問してください。
よろしくお願いします。
593デフォルトの名無しさん:2008/12/21(日) 22:04:30
[1] 授業単元: 乱数
[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] その他の制限:特になし

お願いします
594デフォルトの名無しさん:2008/12/21(日) 22:11:08
595デフォルトの名無しさん:2008/12/21(日) 22:35:59
>>554
できるけど \input 使えばいいじゃん
間違いないぜ
596デフォルトの名無しさん:2008/12/22(月) 00:36:54
[1] 授業単元: 計算法
[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] その他の制限: 余裕があればコメントなんかつけてくれるとありがたいです
          よろしくおねがいします。
597デフォルトの名無しさん:2008/12/22(月) 00:50:09
[1]授業単元:C言語
[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]特になし
598デフォルトの名無しさん:2008/12/22(月) 01:02:32
>>597
"translation server error"
599デフォルトの名無しさん:2008/12/22(月) 01:04:02
>>597
訳は自力でいいんだよね?
600デフォルトの名無しさん:2008/12/22(月) 02:13:15
>>599
はい、訳は自力でなんとかしますので。
601デフォルトの名無しさん:2008/12/22(月) 03:49:05
>>597
当方の環境はcygwin/WindowsXP, 処理系はgcc3.4.4です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8423.txt
602デフォルトの名無しさん:2008/12/22(月) 08:55:16
603デフォルトの名無しさん:2008/12/22(月) 11:59:03
604デフォルトの名無しさん:2008/12/22(月) 13:02:40
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8426.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
お願いします
605デフォルトの名無しさん:2008/12/22(月) 13:31:26
574です。
ありがとうございました。
606デフォルトの名無しさん:2008/12/22(月) 15:41:19
>>604
(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;
}
607デフォルトの名無しさん:2008/12/22(月) 16:15:20
608デフォルトの名無しさん:2008/12/22(月) 17:00:12
>>607できれば2つ別々の解でお願いできませんか
どこからどこまでがQ1とQ2かわからないので
609デフォルトの名無しさん:2008/12/22(月) 17:22:05
> // Q1 answer
> // Q2 answer

とかちゃんと書いてあるのに、読めないのか
ていうか読んでないのか
610607:2008/12/22(月) 17:35:43
>>609
なんかありがたいことにフォローしてくれる人がいてビックリ。
611デフォルトの名無しさん:2008/12/22(月) 17:38:23
>>609いや読んだんですけどreturn 0以下のプログラムはQ1,Q2共通なんでしょうか?
//Q2がどこまでなのかわからなくて・・すみません
612デフォルトの名無しさん: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] その他の制限:特にありません。
時間がないのですがよろしくお願いします。

613デフォルトの名無しさん:2008/12/22(月) 18:00:13
>>611
ふつーにプログラムの流れ考えれば、return 0 まででしょ

main 以降の関数は、main の中で呼んでいる部分があれば使うし
なければ使わない。それだけ。

もしかして関数とかまだ習ってないの?
614デフォルトの名無しさん:2008/12/22(月) 18:08:08
>>612
ちょっと疑問。
void InsertNode(Node **top,int val,char *name)
と定義されてる関数があるのに
void putval(char *vname,int vval);
でいいの?
615デフォルトの名無しさん:2008/12/22(月) 18:11:51
まだ完璧に習っているわけではないので正直分からないところも多いです。
できることならQ1とQ2のコードを別々の解として教えてほしいのですが
それぞれ問題がちがうので・・
616デフォルトの名無しさん:2008/12/22(月) 18:12:44
>>615
>>604です。
617デフォルトの名無しさん:2008/12/22(月) 18:22:03
>>614
やはり1つにまとめたほうがいいですかね?
まずは基本的な線形リストの関数を作って、そこから
2つの関数に対応するように作っている途中だったので
似たような関数があると思います;
inegetval関数とputval関数以外の関数は自分で作ったので無駄なら
消しちゃって下さい。
618デフォルトの名無しさん:2008/12/22(月) 18:26:56
619618:2008/12/22(月) 18:29:12
>>612
宛てだった。
620デフォルトの名無しさん:2008/12/22(月) 18:34:58
>>607をQ1の答えとQ2の答えをそれぞれ別々のソースコードにしてもらうことはできませんか
未熟者ゆえ分けてもらわなければどれがリニアサーチとバイナリサーチかわかりません。
621デフォルトの名無しさん:2008/12/22(月) 18:38:57
>>617
まとめると意味わからなくなるけど
せっかく操作対象となる線形リストを指定できるような形で関数定義されてるんだから
void putval(Node *list, char *vname,int vval);
の方がしっくりくるかなと思ったのよ。
618さんが答えだしてくれてるんで消えます。
622デフォルトの名無しさん:2008/12/22(月) 18:39:32
623デフォルトの名無しさん:2008/12/22(月) 18:39:59
>>618
迅速な回答ありがとうございます。
これはintgetvalとputval関数以外はそのままでいいってことですよね?
624デフォルトの名無しさん:2008/12/22(月) 18:40:10
>>615
この中に、完璧に習っている人が一人でもいると思っているのならそれは大間違いだ。
625デフォルトの名無しさん:2008/12/22(月) 18:42:35
>>621
自分もそのように思ったのですが元々定義されていた関数の引数の
個数を増やしていいのかわからなかったのであのようにしてました。
考えて下さっただけでもありがたいです!
626デフォルトの名無しさん:2008/12/22(月) 18:47:36
>>622ありがとうございました。やっと違いが分かりました
627デフォルトの名無しさん:2008/12/22(月) 19:46:09
>>601
ありがとうございました。
628デフォルトの名無しさん:2008/12/22(月) 19:56:53
[1] 授業単元:コンピュータプログラム
[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
となる。
よろしくお願いします。
629デフォルトの名無しさん:2008/12/22(月) 20:14:39
>>628
対角要素並び変わってないじゃん

転置してるだけじゃね?
630デフォルトの名無しさん:2008/12/22(月) 20:15:27
[1]授業単元:C言語
[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]特にありません
631デフォルトの名無しさん:2008/12/22(月) 20:33:14
632デフォルトの名無しさん:2008/12/22(月) 20:44:19
>>631
ありがとうございました。
633デフォルトの名無しさん:2008/12/22(月) 21:03:19
[1] 授業単元:C
[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;
}

634デフォルトの名無しさん:2008/12/22(月) 21:07:48
>>633
#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;
}
635デフォルトの名無しさん:2008/12/22(月) 21:20:25
>>634
ありがとうございました。
636デフォルトの名無しさん:2008/12/22(月) 23:32:09
[1]授業単元:C言語
[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]特になし。
637デフォルトの名無しさん:2008/12/22(月) 23:34:30
[1] 授業単元: C
[2] 問題文(含コード&リンク): 画像ファイルを開いてメモリに読み込んで別名でメモリの内容を保存、またRGB成分ごとにグレースケールで保存
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:BCC
 [3.3] 言語:C
[4] 期限:08/12/23/16:00
[5] その他の制限:ヘッダ構造体の宣言も行う

よろしくお願いします。
638デフォルトの名無しさん:2008/12/22(月) 23:43:23
>>636
>>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;
}
639デフォルトの名無しさん:2008/12/23(火) 00:06:11
>>637
>>535に対するレスにもあるけど、
画像ファイルの形式が分からない以上、
誰も答えてくれんぞ。
640デフォルトの名無しさん:2008/12/23(火) 00:08:17
>>639
申し訳ありません。BMPです。
641デフォルトの名無しさん:2008/12/23(火) 02:37:42
すみません、初めてのC言語のため全くわからない状態です。

[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を使用しなければいけません

よろしくお願いします。
642デフォルトの名無しさん:2008/12/23(火) 04:09:15
このスレ見てるといろんなアルゴリズムを学べるな
643デフォルトの名無しさん:2008/12/23(火) 04:51:57
>>641
チップ名の他にピンの割付とかLCDの詳細がないと無理。
644デフォルトの名無しさん:2008/12/23(火) 04:56:46
ピンが無いと、頭にピンと来ないってかぁ?なんつって
645デフォルトの名無しさん:2008/12/23(火) 06:00:33
>>640
BMPといわれても、まともに実装するととんでもない事になる
テスト用の画像ファイル出せよ
646デフォルトの名無しさん:2008/12/23(火) 06:25:57
スイマセン、どなたか630を解いて頂けないでしょうか?
647デフォルトの名無しさん:2008/12/23(火) 07:12:46
>>646

#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;
}
648デフォルトの名無しさん:2008/12/23(火) 07:26:13
getsはやめようぜ。

>>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;
}
649help me:2008/12/23(火) 08:41:02
[1] 授業単元:C言語
[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日
よろしくお願いします。
650デフォルトの名無しさん:2008/12/23(火) 08:52:46
>>649
それだけだと解けなくね?
651help me:2008/12/23(火) 08:59:50
離散データを直線でフィットして、微分をしなさい。
データを局所的にy=ax+b でフィットしてa だけを採用すればよい。とか、
例(5点微分)
微分する点の前後2点を含めて直線でフィットしながら傾きを求める。
などと教わりましたが、あまり理解ができませんでした。
652デフォルトの名無しさん:2008/12/23(火) 09:18:29
数値微分
653デフォルトの名無しさん:2008/12/23(火) 09:53:55
>651
それ3点じゃね?
(f(x+1) - f(x-1))/2?
654デフォルトの名無しさん:2008/12/23(火) 10:35:18
>>640
BMPのファイルフォーマットについて
ttp://www.kk.iij4u.or.jp/~kondo/bmp/

>>645も言ってるように、
BMPといってもいろんな形式がある。

Cの授業なら、もっと前提が絞られていいはず。
655637: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の方で構造体変数で呼び出し、ファイルをバイナリモードで開き、その後で詰まっています・・・
656デフォルトの名無しさん:2008/12/23(火) 12:31:06
>>655
ってことはまぁ24bit限定でいいかな?
657デフォルトの名無しさん:2008/12/23(火) 13:00:44
構造体のアライメントに関して習っている?
658637:2008/12/23(火) 13:11:11
>>656
はい、大丈夫です。

>>657
オフセットのパディングに関してはwindows.hをインクルードすればOKとだけ言われました・・・
659デフォルトの名無しさん:2008/12/23(火) 15:44:18
660デフォルトの名無しさん:2008/12/23(火) 16:26:08
スレ違いすまん

>>645
WIN API 解禁だったとして、まともに実装するのは DIBSECTION 経由で BITMAP 生成
dc に連結して GetPixel で取得 出力側はこっちの都合の良い color space で
ってコースになるのかな?
661デフォルトの名無しさん:2008/12/23(火) 17:05:36
[1] 授業単元:コンパイラ
[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時頃まで
よろしくお願いします。
662661:2008/12/23(火) 18:21:31
#include<stdio.h>の↑のstruct vnodeは無視してください;
後期限は22時まででお願いします。
色々とすみません<(_ _)>
663デフォルトの名無しさん:2008/12/23(火) 19:02:59
[1] 授業単元:C
[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時頃まで
よろしくお願いします。
664デフォルトの名無しさん:2008/12/23(火) 19:37:24
>>649
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8447.txt
よくわかんないけど5点微分してみた\(^o^)/
665デフォルトの名無しさん:2008/12/23(火) 19:55:11
[1]授業単元:C言語
[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]特になし。
666デフォルトの名無しさん:2008/12/23(火) 20:07:16
どんな問題なのか一行くらい書けばいいのに
667デフォルトの名無しさん:2008/12/23(火) 20:08:50
>>665
#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);
}
668デフォルトの名無しさん:2008/12/23(火) 20:11:52
>>666
激しく同意。それでスレ内に全く同じ問題がないか検索すればいいのに

>>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;
}
669デフォルトの名無しさん:2008/12/23(火) 20:16:17
long my_pow(long x, long y) { return (long)pow(x,y);}
670661:2008/12/23(火) 20:26:50
>>661は線形リストの操作に関する問題です、
よろしくお願いします<(_ _)>
671デフォルトの名無しさん:2008/12/23(火) 21:17:16
setvarだけ修正した方が速いと思うからうpヨロ。
672デフォルトの名無しさん:2008/12/23(火) 21:34:48
>>671
#include以下のソースに
setvar(*vname)という関数(他に関数が必要ならそれも)をつくってほしいのですが
何をupすればよろしいでしょうか?
673デフォルトの名無しさん:2008/12/23(火) 21:42:58
>>663
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8449.c
これ最初マインスイーパーを作るのかと思ったわw
合ってるのかよく分からんけどとりあえずうp
違ったら自由に修正して。
674デフォルトの名無しさん:2008/12/23(火) 21:54:30
>>672
自分で作ったエラーのやつ出してみろってこと。
675デフォルトの名無しさん:2008/12/23(火) 21:59:14
>>674
void setvar(char *vname)
{
Node *ptr=list
while(ptr->next!=NULL)
ptr=ptr->next;
ptr->next=AllocNode();
Node *x=ptr->next;
strcpy(x->name,vname);
}
です。
つっこみどころが多いと思いますがよろしくお願いします。
676デフォルトの名無しさん:2008/12/23(火) 22:08:35
mainでどのように使ったかのかも知りたいところだけど、
別の部分でちゃんと結尾にNULLセットできてないとエスパー。
677デフォルトの名無しさん:2008/12/23(火) 22:19:01
>>676
すみません、別の部分とは他の関数で結尾にNULLがセットされてないと
いうことでしょうか?
あの関数を使用するソースはyaccソースなので必要最低限の所を
だけ書いたのですが。。
678デフォルトの名無しさん:2008/12/23(火) 22:31:36
多分、変数listの宣言時にNULLをセットしてないとかだと超能力。
679デフォルトの名無しさん:2008/12/23(火) 22:37:29
変数listはmain関数の中のInitList(&list)でNULLに初期化している
つもりでしたが違いますかね?;
色々とおかしいところは変更して下さっていいのでお願いできないでしょうか?
680デフォルトの名無しさん:2008/12/23(火) 22:48:04
>>661のソースだと特に問題ない気がする。

面倒だからエラーが出るというソース全部を出して。
681デフォルトの名無しさん:2008/12/23(火) 22:49:56
エラーがでるといったソースは>>661のソースのsetvar関数を>>675のように
した場合にBus errorになってしまいます。
682デフォルトの名無しさん:2008/12/23(火) 22:50:27
>>675
listがNULLの場合のsetvarの挙動はどうなってんの?
683デフォルトの名無しさん:2008/12/23(火) 22:53:58
>>675
Node *xの宣言を関数の先頭に持ってくるとどうなる?
684デフォルトの名無しさん:2008/12/23(火) 22:54:15
685デフォルトの名無しさん:2008/12/23(火) 23:04:44
Node *xをまず宣言して
x=ptr->next;
としてもBUS ERRORでした;
686デフォルトの名無しさん:2008/12/23(火) 23:05:55
>>684
ファイル先頭の部分がコンパイルできねえ。
gccの環境を詳しく教えて。
687デフォルトの名無しさん:2008/12/23(火) 23:07:40
yacc使ってるからじゃない?
688デフォルトの名無しさん:2008/12/23(火) 23:08:09
これcじゃなくてyaccだろwwwwwww
689デフォルトの名無しさん:2008/12/23(火) 23:09:11
ってそう言ってたか
690デフォルトの名無しさん:2008/12/23(火) 23:11:49
[1] 授業単元: C
[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)はなぜそれを選択したか簡単な説明をしてもらえると助かります
691デフォルトの名無しさん:2008/12/23(火) 23:14:29
>>684
共用体とプリプロセッサの順番を変えるくらいしか思いつかないよ
692デフォルトの名無しさん:2008/12/23(火) 23:19:51
yaccですけどリストの部分はcでできると言っていたので
あの部分だけ書いたのですが;;
>>686
gccの環境とはなんでしょうか?
ちなみにターミナルというアプリを使用しています。
自分はyacc ファイル名.yでy.tab.cといファイルを作り
gcc y.tab.c -llでコンパイルできました。
lexソースがいるからコンパイルできないのでしょうか?
必要ならlexソースもあげますが。。
693デフォルトの名無しさん:2008/12/23(火) 23:20:08
>>690
(B)は、
10x
20x
12x
18x
になるから1番。
694デフォルトの名無しさん:2008/12/23(火) 23:23:27
>>691
そうですか、yaccの部分を変えないといけないみたいですね。
スレ違いになってきましたので、そろそろ撤退します;
皆様ご迷惑をおかけしました、スレ汚しすみません<(_ _)>
695help me:2008/12/23(火) 23:34:32
>>664
おー、ありがとうございます。お礼遅くなりすみません。
696デフォルトの名無しさん:2008/12/23(火) 23:41:09
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8453.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
よろしくお願いします
697デフォルトの名無しさん:2008/12/24(水) 00:49:27
698デフォルトの名無しさん:2008/12/24(水) 02:01:07
>>690
void 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;
}
699デフォルトの名無しさん:2008/12/24(水) 02:27:29
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):

Σ[n=1,10](n^3-2n) の値を計算し表示するプログラムを以下の条件において作成してください。
【条件1】少なくとも一つ以上の関数を用い、マクロも適宣用いること。
【条件2】関数のプロトタイプとマクロをヘッダーファイルにまとめ(proen11_2.h)、インクルードすること。


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日
700デフォルトの名無しさん:2008/12/24(水) 02:29:08
>>699
> マクロ
マクロの内容は?
701デフォルトの名無しさん:2008/12/24(水) 02:33:39
指定されてないです、自分で作れってことだと思います。
702デフォルトの名無しさん:2008/12/24(水) 02:46:04
[1]認識工学
[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] 期限:今日中
703デフォルトの名無しさん:2008/12/24(水) 03:27:15
>>699
> マクロも適宣用いること
あれ?目が悪くなったのかな。適宜の"宜"に隙間が空いてるように見えるんだけど
それはさておき、マクロは適宜使用なので適切な局面がなかったので使用しませんでしたとでも答えれば良い

---- 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;
}
704デフォルトの名無しさん:2008/12/24(水) 03:40:19
703 名前:デフォルトの名無しさん 投稿日:2008/12/24(水) 03:27:15
>>699
> マクロも適宣用いること
あれ?目が悪くなったのかな。適宜の"宜"に隙間が空いてるように見えるんだけど
それはさておき、マクロは適宜使用なので適切な局面がなかったので使用しませんでしたとでも答えれば良い

703 名前:デフォルトの名無しさん 投稿日:2008/12/24(水) 03:27:15
>>699
> マクロも適宣用いること
あれ?目が悪くなったのかな。適宜の"宜"に隙間が空いてるように見えるんだけど
それはさておき、マクロは適宜使用なので適切な局面がなかったので使用しませんでしたとでも答えれば良い
705デフォルトの名無しさん:2008/12/24(水) 03:45:06
メインの中に関数宣言きもい!
706デフォルトの名無しさん:2008/12/24(水) 03:49:21
707デフォルトの名無しさん:2008/12/24(水) 03:53:40
>>703
ツンデレだなぁ。素直に言えよ、目が悪くなりました、マクロの記述が分かりません、と。
素直が一番だよ?捻くれていたり、ごちゃごちゃ言う一言居士って嫌われるよ?
708デフォルトの名無しさん:2008/12/24(水) 03:57:09
709デフォルトの名無しさん:2008/12/24(水) 04:29:51
710デフォルトの名無しさん:2008/12/24(水) 04:46:05
>>703
分からない・・・・。
自分の知識では限界が。
とりあえず教科書読んできます
ありがとうございました
711デフォルトの名無しさん:2008/12/24(水) 04:58:52
問題文には適宜と書かれていたが、ここで質問した人がそれを適切に読めなかったのか、
あるいは、本当に出題者が間違えて記入した問題文を出してしまったか。
にしても、適宜と言う表現が適切だろうけど、いちいち自分の目がおかしくなったのかな?だの
マクロは使うのが適切じゃないからとか言い訳するのはどうかと。
別に、答えなければいけないという義務は、このスレにはありませんからw
712デフォルトの名無しさん:2008/12/24(水) 05:17:28
生放送にニコニコ大百科の製作者が職場から生放送してるぞ
 ※ひろゆきも起きてます
http://live.nicovideo.jp/watch/lv22734
http://live.nicovideo.jp/recent
>グニャラくん ★
>「ニコニコ大百科」及び「お絵カキコ」「ピコカキコ」の開発者である。
>ニコニコ大百科の開発者であるとともにユーザーサポート要員でもあり
>要望板、不具合板等でユーザーの報告を受けて修正、追加する作業を行っている。

>ユーザーとフランクに(しかし丁寧に)接してくれるうえに、仕事が速く、不具合板で報告があってからものの数分で「修正しました!」と返事が返ってくることも度々である。
>書き込み日時を見ると深夜遅いことも多く、おまけに土日でも普通に掲示板にいることがあり、ちゃんと休みをとっているのかユーザーから心配されるほどである。

>実のところメインの業務は「Senna」の開発であり、ニコニコ大百科は副業である
>ニコニコ大百科の縁の下の力持ち的存在であり、現状なくてはならない存在と言える
713デフォルトの名無しさん:2008/12/24(水) 05:26:36
714デフォルトの名無しさん:2008/12/24(水) 08:29:20
[1] 授業単元:基礎プログラミング演習
[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] 考えたのですが、途中で混乱してしまいわからなくなってしまいます
715デフォルトの名無しさん:2008/12/24(水) 08:31:35
どんな問題なのか一行くらい書けばいいのに
716デフォルトの名無しさん:2008/12/24(水) 09:51:04
>>702
不思議なマルチだな。
学校からは、「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
【 補足 】丸投げです。よろしく御願いします。
717デフォルトの名無しさん:2008/12/24(水) 09:59:50
>>714
その手の「過程も示せ」系の宿題は
このスレでは往々にして、解だけポンと出されて終わりなことが多いから
今からもう一度、自分で考えておいた方が得策
718デフォルトの名無しさん: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] その他の制限:

よろしくお願いします
719デフォルトの名無しさん:2008/12/24(水) 10:18:40
>>703
そんなにしてまで汎用性持たせる必要あるのかと。
お前は関数のポインタ使いたかっただけ違うんかと。
720デフォルトの名無しさん:2008/12/24(水) 10:21:37
>>718
>>715

以後、問題文にリンクしか貼ってないやつは、俺は無視する。
721デフォルトの名無しさん:2008/12/24(水) 10:27:59
>>720
わざわざ宣言しなくてもいいよ。
自分の意見が採用されなかったから拗ねるって、
どんだけガキなんだか。
722デフォルトの名無しさん:2008/12/24(水) 10:32:36
>>720
リンクを一回クリックするのがそんなに面倒なのかw
723デフォルトの名無しさん:2008/12/24(水) 10:33:26
>>720
どんだけ構ってちゃんだよ、お前w
724デフォルトの名無しさん:2008/12/24(水) 10:36:00
>>1
> 気に入らない質問やその他や発言はスルーの方向で。
これが読めない、文盲が最近は多いんですね。
725718:2008/12/24(水) 11:06:02
あの、投稿し直したほうがいいでしょうか
726デフォルトの名無しさん:2008/12/24(水) 11:12:50
>>725
とりあえず適切な位置で改行して
727デフォルトの名無しさん:2008/12/24(水) 11:14:17
回答者が減ることを学生どもに忠告する親切心のつもりだったんだがね。
ちなみに、>>715>>720
728デフォルトの名無しさん:2008/12/24(水) 11:26:11
729718:2008/12/24(水) 11:31:16
投稿し直しました
よろしくお願いします

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8463.txt
730デフォルトの名無しさん:2008/12/24(水) 11:35:54
>>716
そんな感じです。
731デフォルトの名無しさん:2008/12/24(水) 11:49:17
>>714 試してないけどとりあえず。

#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;
}
732デフォルトの名無しさん:2008/12/24(水) 11:51:38
for(j = ...) のループに { } つけるの忘れてた。まあいいか。
733714:2008/12/24(水) 12:09:12
>>728
>>731
ありがとうございます
734714:2008/12/24(水) 13:07:26
実行してみたら、違う値になってしまいました
自分でもいろいろ試していますがうまくいきません
735デフォルトの名無しさん:2008/12/24(水) 13:22:36
[1] 授業単元:プログラミング
[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] その他の制限:特にありません

よろしくお願いします。
736デフォルトの名無しさん:2008/12/24(水) 13:28:02
>>735
void 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;
}
737デフォルトの名無しさん:2008/12/24(水) 13:34:18
>>729もお願いします
738デフォルトの名無しさん:2008/12/24(水) 13:34:40
[1] 授業単元:C
[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
739デフォルトの名無しさん:2008/12/24(水) 13:38:15
>>734
それは>>731を試した上での書き込みなん?
740デフォルトの名無しさん:2008/12/24(水) 13:47:27
741デフォルトの名無しさん:2008/12/24(水) 13:59:39
[1] 授業単元:C言語
[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
742デフォルトの名無しさん:2008/12/24(水) 14:14:55
>>741
void s_swap(char **str_a, char **str_b)

ぢゃねーかな(もとがポインタなので、ポインタのポインタで受け取らないといけない)。
743デフォルトの名無しさん:2008/12/24(水) 14:38:01
>>738
とりあえず名前だけで並び替えるとこんな感じかな

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);
744デフォルトの名無しさん:2008/12/24(水) 14:41:30
745デフォルトの名無しさん:2008/12/24(水) 16:00:29
>>740
すいません忘れてました。
問い1ですが、for文使用不可でした……
746デフォルトの名無しさん:2008/12/24(水) 16:13:53
[1] 授業単元:C言語
[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時
747デフォルトの名無しさん:2008/12/24(水) 16:22:23
[1] 単元: バイナリサーチ
[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以下で検索すると無限ループしてしまいます.
そうならないようにするにはどう変えたらいいでしょうか?
748デフォルトの名無しさん:2008/12/24(水) 16:26:05
>>747
検索の対象となるデータを全て検索したら、終了させなきゃ。
749デフォルトの名無しさん:2008/12/24(水) 16:29:59
>>743
ありがとうございます!!
あのwhile文の条件は、配列の要素を定義するときに最後にNULLがあれば使えるものでした。
今回は要素数を求めなければできないですよね。今気付きました。

身長・体重ソートも自分でできそうです。
750デフォルトの名無しさん:2008/12/24(水) 16:38:07
>>748具体的には何を書き足せばいいんでしょうか
751デフォルトの名無しさん:2008/12/24(水) 16:50:35
>>745
for文使うなとの事なら、こんな感じか…。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8472.c
752デフォルトの名無しさん:2008/12/24(水) 17:23:19
>>746
i++はなぜか使ってないわ行列を意識しているのかx成分とy成分が逆な気持ち悪いソースだなwww
753デフォルトの名無しさん:2008/12/24(水) 17:59:25
>>739
>>731はforループの後に{}を付けたのですが、何も実行されないです
754デフォルトの名無しさん:2008/12/24(水) 18:10:05
>>753
何も実行されないんじゃなくて終わるまですごく時間がかかるの
だからずっと待ってなきゃダメなの
755デフォルトの名無しさん:2008/12/24(水) 18:13:03
>>746
#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());
}
756デフォルトの名無しさん:2008/12/24(水) 18:30:32
>>734
uploader に上がってる奴もどこかで計算違いしてるんじゃね?
どうせ似たようなことをやらにゃいかんからがんがれ
757デフォルトの名無しさん:2008/12/24(水) 19:22:59
インクリメントを使いこなす講座
758デフォルトの名無しさん:2008/12/24(水) 19:28:22
>>714
問題文orコードまちがえてんじゃねーの?
答えがあるような気がしない
759デフォルトの名無しさん:2008/12/24(水) 19:30:58
>>734
取りあえず、手計算で方程式解いて

a=816, b=-223

は出た(設問のア、イはa,bに変更)
因みに最終的な連立方程式は

-16a + 5b = -14171
3a - b = 2671

で、ロダのはyの代入を一箇所見逃してるのと、
最後のzの代入直前の符号ミスがひとつ

てか、Mathematica使えば瞬殺なんだがなあ
760デフォルトの名無しさん:2008/12/24(水) 19:39:04
>>731はyとzが書き換えられるのを考えてなかったわ。
答えはもう出てるけど一応修正。
#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;
}
761デフォルトの名無しさん:2008/12/24(水) 20:39:16
[1] 授業単元:C 構造体
[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] 期限: 明日
めんどくさい内容ですが、よろしくお願いします。
762デフォルトの名無しさん:2008/12/24(水) 20:56:01
これって流行ってるのか?
763デフォルトの名無しさん:2008/12/24(水) 22:30:55
>>673
遅くなりました。ありがとうございます
764デフォルトの名無しさん:2008/12/25(木) 01:05:58
>>761大宮先生には連絡しておいた
765デフォルトの名無しさん:2008/12/25(木) 01:44:41
[1] 授業単元:プログラミング演習
[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] その他の制限: よろしくお願いします。
766デフォルトの名無しさん:2008/12/25(木) 01:55:54
767デフォルトの名無しさん:2008/12/25(木) 02:07:11
何度も出てくる課題はネタなのでスルーで
768デフォルトの名無しさん:2008/12/25(木) 02:22:32
>>766
ありがとうございました
769デフォルトの名無しさん:2008/12/25(木) 05:18:49
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): int型配列に格納して出力させるプログラム。
>ただし、6桁以上の文字列が入力された場合は、先頭から5 文字までを有効とし、6 文字目以降を無視する。
エラー仕様に、負の数が入力された場合、整数以外が入力された場合、改行のみの入力はエラーメッセージを表示して終了
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 今日の昼
[5] その他の制限: よろしくお願いします。
770デフォルトの名無しさん:2008/12/25(木) 05:45:24
?????????
771デフォルトの名無しさん:2008/12/25(木) 07:12:45
>>769
#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;
}
772デフォルトの名無しさん:2008/12/25(木) 07:40:56
>769
>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." ); }
}
773デフォルトの名無しさん:2008/12/25(木) 07:42:57
#include <string.h>
はインクルードする必要なかった...
774デフォルトの名無しさん:2008/12/25(木) 08:01:36
>>772 >>771
ありがとうございました
775デフォルトの名無しさん:2008/12/25(木) 08:21:51
>>769です。
次の問題で行き詰ってしまったのでよろしくお願いします。
[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] その他の制限: よろしくおねがいします
776デフォルトの名無しさん:2008/12/25(木) 11:41:23
[1] 授業単元: プログラミング演習2
[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まで]
777デフォルトの名無しさん:2008/12/25(木) 11:43:02
[1] 授業単元: プログラミング演習2
[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まで]
778デフォルトの名無しさん:2008/12/25(木) 11:44:16
[1] 授業単元: プログラミング演習2
[2] 問題文(含コード&リンク):
(応用課題6-A1)
通常課題6-2に以下の機能として変更または追加してプログラムを拡張せよ.
リストファイル(words.txt)の読み込みと更新.
すべての英単語をアルファベット順(昇順)に並べ替えて画面にリスト表示する機能.並べ替え(ソート)の方法は各自で調査せよ.
リスト内の不要になった単語を削除する機能.ただし,削除確認を要求して削除機能を中止可能にする.
昇順リスト表示,単語削除の機能も選択できるようにメニュー画面に付加.


[3] 環境
 [3.1] OS: Windows
 [3.3] 言語:C
[4] 期限: [2008年12月26日13:00まで
779デフォルトの名無しさん:2008/12/25(木) 12:52:30
プログラミングの宿題って基本的なアルゴリズム学べるからいいよねえ
独学ではこうはいかなかった わざわざ図書館から本借りて目を凝らして仕組みを覚えたなあ
780デフォルトの名無しさん :2008/12/25(木) 12:58:16
>>776
balance.txtをあげろ
あとメニューの項目は?具体的にどう処理してほしい?
>>777
list.txtをあげろ
>>778
words.txtをあげろ
781デフォルトの名無しさん:2008/12/25(木) 13:12:42
>>780

メニューの項目は
[1] 収入
[2] 支出
[99] 終了
balance.txt
list.txt
words.txt
は自分でこれらの名前をつけてテキストファイルを保存するので指定はありません。
782初心者:2008/12/25(木) 15:55:09
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
社会、理科、英語の得点から平均点と評価を与えるプログラムである。
各個人のデータは@「出席番号」A「文系・理系の区分」B「社会」C「理科」
D「英語」E「3教科の平均」F「評価」からなる。ただし、具体的にデータとして
入れるのは@ABCDのみ。(残りはプログラムに処理させる)データは構造体で宣言する。「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] その他の制限:繰り返し文、条件判断文、構造体などを勉強しました。
初心者なので、初心者にもわかるようなプログラムをお願いします。

783デフォルトの名無しさん:2008/12/25(木) 16:07:10
784783:2008/12/25(木) 16:10:07
あ、いらん物いれてた…
FILE *fileopen(char *, char *);
↑この行カットしてくれ
785デフォルトの名無しさん:2008/12/25(木) 16:28:35
解答欄に16進数を記入する場合は、0Xを除いた形で解答して下さい。

  int a;
  a = 0XAB;
  a = a << 4;
この時点での 変数aの値_____(16進)

答えと解き方を教えてください。
お願いします。
786デフォルトの名無しさん:2008/12/25(木) 16:39:56
>>785
printf ( "この時点での 変数aの値 %x (16進)", a ) ;
787デフォルトの名無しさん:2008/12/25(木) 16:49:37
>>786
変数aの値が何になるかと
なんでその値になるかの解き方
という意味です。
788デフォルトの名無しさん:2008/12/25(木) 16:53:23
789デフォルトの名無しさん:2008/12/25(木) 16:55:14
>>785
質問テンプレに従って書け
790デフォルトの名無しさん:2008/12/25(木) 17:17:02
>>785
0xAB (16進) : 10101011 (2進)
4ビットシフト 101010110000 (2進) : 0xAB0 (16進)
この時点での 変数aの値 AB0 (16進)
791デフォルトの名無しさん:2008/12/25(木) 17:24:32
>>790違わね??
792デフォルトの名無しさん:2008/12/25(木) 17:26:23
>>790
16進数の場合左の4ビット消えて4つ0つける
という方法じゃないんですか??
793デフォルトの名無しさん:2008/12/25(木) 17:30:40
>>791
>>792
はぁ?
794デフォルトの名無しさん:2008/12/25(木) 17:33:57
>>793
教えてください!!
795デフォルトの名無しさん:2008/12/25(木) 17:37:47
>>794
16進数一文字分が4ビットなのはわかるよな?
それで左に4ビットずらしたんだからそりゃ右に0がついた形になるだろーが
796デフォルトの名無しさん:2008/12/25(木) 17:42:42
環境書いてないけどwindowsとかの32bit環境であるなら
int型は4Byte
0xAB (16進) =
00000000000000000000000010101011 (2進数)

4bit左シフトすると
00000000000000000000101010110000
=0xAB0

ここまでだったらたとえH8Sなどの16bit環境でも同じ
797デフォルトの名無しさん:2008/12/25(木) 17:50:43
テンプレに沿って環境を書かないからもめるいい例だな。
798デフォルトの名無しさん:2008/12/25(木) 17:51:20
>>797
お前にはそう見えるのか?
799デフォルトの名無しさん:2008/12/25(木) 18:03:21
右に4ビットシフトした場合は
どうなるんですか?
800デフォルトの名無しさん:2008/12/25(木) 18:04:24
>>799
してみりゃいいじゃん。
801デフォルトの名無しさん:2008/12/25(木) 18:11:05
右に4ビットシフトして左に4ビットシフトした場合は
どうなるんですか?
802デフォルトの名無しさん:2008/12/25(木) 18:25:18
符号無し整数のときは
シフトによって生じた空きbitは0で埋めることになっているが
この問題はただのintで符号付き整数のため何で埋めるかはコンパイラに依存する
何度も言われてるが環境を書け
もしくは死ねばいいのに
803デフォルトの名無しさん:2008/12/25(木) 18:26:41
論理シフトでも算術シフトでもなくてもよかったのか・・・どっちかなんだと思ってたよ・・・・
804デフォルトの名無しさん:2008/12/25(木) 18:51:19
gccやVSだったら
符号なし整数なら論理シフト
符号有り整数なら算術シフトとなっているが
これはC言語の規格の規格ではなく独自のもの
この問題に限っては結果は変わらないが
みんなが気にしているのはもっと大きくシフトしたときに誤解が生じるからだろう
たとえばaを左に24bitシフトして右に24bitもどしたときときに
一見もとの値に戻りそうな気がするけどそうじゃないのは解るよね?
805デフォルトの名無しさん:2008/12/25(木) 19:25:33
■ ACM(米計算機学会)が、ゆとり教育排除宣言、オバマ次期政権に科学教育の拡充を提言
http://pc11.2ch.net/test/read.cgi/tech/1229424329/

> 今回、ACMがコンピューターの操作法を学ぶことではなく、計算機科学と
> はっきりと明示しており、提言が次期政権に受け入れられた場合には中
> 学校などで、プログラムを使った問題解決手法や初歩的な数理論理学
> などが取り入れられる可能性もでてきた。

日本でも実現されたら、宿題スレが大盛況www
806デフォルトの名無しさん:2008/12/25(木) 19:27:02
>>787
プログラムじゃなくて筆記で数値を書く必要があるってこと?
807735:2008/12/25(木) 19:47:05
>>736
遅くなってすみません。ありがとうございました。
808デフォルトの名無しさん:2008/12/25(木) 19:50:22
>>775
時間がないので頼みます
809デフォルトの名無しさん:2008/12/25(木) 20:02:20
[2] 問題文:自然数 a,p,q について a^q (aのq乗)を p で割ったときの余りを計算する関数 modpow(a,q,p) を作成せよ
      また、それを用いて 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] その他の制限:特に無いです。よろしくお願いします
810デフォルトの名無しさん:2008/12/25(木) 20:10:14
>>809
#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;
}
811デフォルトの名無しさん:2008/12/25(木) 20:11:14
812デフォルトの名無しさん:2008/12/25(木) 20:13:13
>>811
ありがとうございます
813デフォルトの名無しさん:2008/12/25(木) 20:18:31
>>809
#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専用だったか忘れた
814デフォルトの名無しさん:2008/12/25(木) 20:20:48
剰余演算にdouble来ると怒られなかったっけ?
815デフォルトの名無しさん:2008/12/25(木) 20:32:57
816813:2008/12/25(木) 20:43:54
>>809
for文こと間違えたw

for(a = 1;a <= 70;a++) 〜
for(q = 1;q <= 50;q++) 〜 だな

うん、多分これは絶対コンパイルエラーでる
今修正したけど絶対出る
817809:2008/12/25(木) 21:03:49
>>810-816
素早い返信感謝します。ありがとうございました
818デフォルトの名無しさん:2008/12/25(木) 22:24:56
>>813
んなことしたら、あっという間にオーバーフローして使い物にならんわ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;
}
819デフォルトの名無しさん:2008/12/25(木) 22:43:36
>>809
これって、授業の趣旨にもよるよなあ
何の制限もない(プログラミングの基礎)ならオーバーフローとか
気にしなくてもいいだろうが、
ちょっと整数論とかやったあとだと剰余の扱いをうまく計算しろっていう
課題にも見える
820デフォルトの名無しさん:2008/12/25(木) 22:48:30
int型は確か-37750〜37750の65535+1個の整数だったっけか?
821デフォルトの名無しさん:2008/12/25(木) 22:55:39
>>820
0が正に入るから、負の数の方が一個多い
822デフォルトの名無しさん:2008/12/25(木) 23:13:17
>>820
そりゃ 16bit 系の場合だな。正確には -32768 〜 32767 の 65536 個
int のサイズはプラットフォーム依存だから
普通のPCみたいな32bit系だったら -2147483648 〜 2147483647 だよ

>>821
0は正に入らないし、正に含めたら負と同じ数だろ
823デフォルトの名無しさん:2008/12/25(木) 23:15:32
1] 授業単元: 科学実習T
[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使用不可です、よろしくお願いします。
824デフォルトの名無しさん:2008/12/25(木) 23:16:22
あかん、単純な足し算にも頭が回らない・・・
ちょっと顔洗ってくる
825821:2008/12/25(木) 23:17:23
ビット表現上の話だよ?
ていうか自分で -2147483648 〜 2147483647 って書いてるじゃん
826デフォルトの名無しさん:2008/12/25(木) 23:17:35
>>808
#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;
}
827デフォルトの名無しさん:2008/12/25(木) 23:19:13
>>823
#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;
}

828822:2008/12/25(木) 23:32:13
>>825
つまり -2147483648 〜 -1 の個数は 0 〜 2147483647 の個数よりも1多いと言いたいのですね、わかります (^^)
829821:2008/12/25(木) 23:40:14
いや、そうじゃなくて・・・
負の数: -2147483648 〜 -1
ゼロ:   0
正の数: 1 〜 2147483647

そもそもは >>820 「-37750〜37750の・・・」 に対する突っ込みだよ
煽りにマジレスすんのつかれた
830デフォルトの名無しさん:2008/12/25(木) 23:40:49
>>829
もうそんな言い訳しなくていいから
831デフォルトの名無しさん:2008/12/26(金) 00:06:19
先頭の1ビットを符号で使い、残りを値として使うわけだが、
0は先頭も0になっているわけだが、先頭が1でそれ以下が全て0でも
マイナスの値として使われているため、正と負では表現できるパターンに
1つ差があるということで。
832初心者:2008/12/26(金) 00:40:20
どなたか<<782をおねがいします。

わからなくて困ってます。教えてください。
833デフォルトの名無しさん:2008/12/26(金) 02:04:09
>>832
ソートの方法は?なにか習ったの?
834デフォルトの名無しさん:2008/12/26(金) 02:23:41
>>782
#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;
}
835デフォルトの名無しさん:2008/12/26(金) 03:00:05
836デフォルトの名無しさん :2008/12/26(金) 03:51:22
837回答して下さる方へお願い:2008/12/26(金) 05:35:12
★コンパイル確認済みか検証済みかそれともドラフトレベルか
明記下さると幸甚です。
★回答ソースに問題文の一部を転記して下さることをお願いします。
★アップローダーサイトを使わず、レスにソースを貼る場合でも
同様です。(問題文の箇条書きを1行明記)
★一言コメントを入れて下さると助かります。
838デフォルトの名無しさん:2008/12/26(金) 05:55:01
当方〜でコンパイルとか書いているあいつか。っつか、コンパイル、実行を確認したものを
提示するのを原則とし、コンパイルしていないならしていないと書けば良いだろ。
839デフォルトの名無しさん:2008/12/26(金) 07:27:35
[1] 授業単元:プログラミング言語U
[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
840デフォルトの名無しさん:2008/12/26(金) 09:09:43
>>839
#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 ) ;

}
841デフォルトの名無しさん:2008/12/26(金) 16:05:18
void main (笑)
842デフォルトの名無しさん:2008/12/26(金) 17:20:36
[1]プログラミング言語c++
[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]特になし
843デフォルトの名無しさん:2008/12/26(金) 17:53:08
結果の英文が笑える
844デフォルトの名無しさん:2008/12/26(金) 18:11:59
>>842
http://www.dotup.org/uploda/www.dotup.org16818.cpp

ループ多くて萎える・・・
int x,y,zをpublicにしたら怒られるよな、やっぱ
845844:2008/12/26(金) 18:16:27
訂正
if(a < 1001 && a > 0) これじゃ0を含まなくなるから

if(a < 1001 && a >= 0) こんな感じにしといて
846デフォルトの名無しさん:2008/12/26(金) 18:18:34
問題文だとsetterの方で値チェックするんじゃないかって気がするけどまぁ
質問者しだいだよね
847デフォルトの名無しさん:2008/12/26(金) 18:21:38
>>844
ありがとうございます
848デフォルトの名無しさん:2008/12/26(金) 18:24:22
>>846
setter でチェックしようとすると 戻りの void が仇になるね。
set から即 get で渡した値と異なっていたら再要求 とかも無駄が多い感じだな
849デフォルトの名無しさん:2008/12/26(金) 18:33:57
例外投げるって話ならvoid戻りでも平気なんだろうけど
正常処理でループ抜けて、例外が来たらループ継続ってなんかいやな感じがする。
850デフォルトの名無しさん:2008/12/26(金) 18:41:38
[1] 授業単元:C言語
[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] その他の制限:特になし

851デフォルトの名無しさん:2008/12/26(金) 18:42:20
おねがいします
852デフォルトの名無しさん:2008/12/26(金) 20:36:49
853デフォルトの名無しさん:2008/12/26(金) 20:54:04
初歩的な問題を依頼するときは、どこまで習ってるのか書いて欲しいな。
>>850とかstrncmpを習った直後の問題だったらstrncmp使ってないと減点だろうし
854デフォルトの名無しさん:2008/12/26(金) 20:59:19
その他の制限:特になし
855デフォルトの名無しさん:2008/12/26(金) 20:59:56
>>852
ありがとうございました
>>853
すみません、気を付けます
856デフォルトの名無しさん:2008/12/26(金) 22:23:15
>>854

ほんとに制限無かったら
>>850
return strstr(txt, pat) != NULL ? (int)(ans - buff1) : -1;
とか書くんだけどさ、こういう初歩的な問題だと
多分出題者は上記のような答えは望んでないだろ?
857デフォルトの名無しさん:2008/12/26(金) 22:26:36
×return strstr(txt, pat) != NULL ? (int)(ans - buff1) : -1;
○return strstr(txt, pat) != NULL ? (int)(pat - txt) : -1;
858デフォルトの名無しさん:2008/12/26(金) 22:28:27
すまん、コードは間違ってた。
俺が悪かった、忘れてくれ。

カチャ
  ;y=ー( ゚д゚)・∵. ターン
  \/| y |)
859デフォルトの名無しさん:2008/12/26(金) 23:28:20
めんどくさいから一部だけ定義でいいやもう
丸写しは否認する
860デフォルトの名無しさん: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
861デフォルトの名無しさん:2008/12/27(土) 00:06:20
コードも問題も意味不すぎる
862デフォルトの名無しさん:2008/12/27(土) 00:10:02
それでもこのスレにはエスパーがいると信じてるから・・・・・
863デフォルトの名無しさん:2008/12/27(土) 00:12:28
for文多すぎだろjk・・・
864デフォルトの名無しさん:2008/12/27(土) 00:21:50
まず元のコードから解読してみる
t は時刻で 1〜 256 の値
i は位置を表していて、0〜1000 の値

初期時刻で i == 500 の位置だけが 1 で、他が 0
場所 i において、両端の点の前時刻(t-1)の値が0のとき0で
それ以外は 1 の値をとる

これって要は波動方程式みたいな偏微分方程式の近似解じゃね?
時間がたつにつれて i = 500 を中心として奇数の場所が1になっていって、
t = 256 のときに 245〜755 までの奇数の位置で 1 になるんだな
865デフォルトの名無しさん:2008/12/27(土) 00:26:10
意味不ですよね・・
シルピンスキーのガスケットといわれるフラクタル図形(の近似図形)のものらしいです。
めんどうでしたらスルーしてください^^;
866デフォルトの名無しさん:2008/12/27(土) 00:28:44
「下記のルール」はおそらくこういう意味だろう

prev[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
867デフォルトの名無しさん:2008/12/27(土) 00:57:11
変換テーブル使えばルールの変更に柔軟に対応できる

int map[8] = { 0, 1, 1, 1, 1, 0, 0, 0 };

now[i] = map[prev[i + 1] | prev[i] << 1 | prev[i - 1] << 2];
868866:2008/12/27(土) 01:11:31
>>867
たしかに
869デフォルトの名無しさん:2008/12/27(土) 02:12:14
>>865
本当にルールあってるのかなー
シルピンスキーのガスケットにはみえねえ
                         ■■■
                        ■■  ■
                       ■■ ■■■■
                      ■■  ■   ■
                     ■■ ■■■■ ■■■
                    ■■  ■    ■  ■
                   ■■ ■■■■  ■■■■■■
                  ■■  ■   ■■■     ■
                 ■■ ■■■■ ■■  ■   ■■■
                ■■  ■    ■ ■■■■ ■■  ■
               ■■ ■■■■  ■■ ■    ■ ■■■■
              ■■  ■   ■■■  ■■  ■■ ■   ■
             ■■ ■■■■ ■■  ■■■ ■■■  ■■ ■■■
            ■■  ■    ■ ■■■   ■  ■■■  ■  ■
           ■■ ■■■■  ■■ ■  ■ ■■■■■  ■■■■■■■
          ■■  ■   ■■■  ■■■■ ■    ■■■      ■
         ■■ ■■■■ ■■  ■■■    ■■  ■■  ■    ■■■
        ■■  ■    ■ ■■■  ■  ■■ ■■■ ■■■■  ■■  ■
       ■■ ■■■■  ■■ ■  ■■■■■■  ■   ■   ■■■ ■■■■
      ■■  ■   ■■■  ■■■■     ■■■■ ■■■ ■■   ■   ■
     ■■ ■■■■ ■■  ■■■   ■   ■■    ■   ■ ■ ■■■ ■■■
    ■■  ■    ■ ■■■  ■ ■■■ ■■ ■  ■■■ ■■ ■ ■   ■  ■
   ■■ ■■■■  ■■ ■  ■■■ ■   ■  ■■■■   ■  ■ ■■ ■■■■■■
870デフォルトの名無しさん:2008/12/27(土) 02:22:49
ルールを {0, 0, 1, 1, 1, 1, 0, 0} にすると見事に自己相似なガスケットになるが二等辺三角形にはならない

.. .. .. .. ..■■
.. .. .. .. ..■ ..■
.. .. .. .. ..■■■■
.. .. .. .. ..■ .. .. ..■
.. .. .. .. ..■■ .. ..■■
.. .. .. .. ..■ ..■ ..■ ..■
.. .. .. .. ..■■■■■■■■
.. .. .. .. ..■ .. .. .. .. .. .. ..■
.. .. .. .. ..■■ .. .. .. .. .. ..■■
.. .. .. .. ..■ ..■ .. .. .. .. ..■ ..■
.. .. .. .. ..■■■■ .. .. .. ..■■■■
.. .. .. .. ..■ .. .. ..■ .. .. ..■ .. .. ..■
.. .. .. .. ..■■ .. ..■■ .. ..■■ .. ..■■
.. .. .. .. ..■ ..■ ..■ ..■ ..■ ..■ ..■ ..■
.. .. .. .. ..■■■■■■■■■■■■■■■■
.. .. .. .. ..■ .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..■
.. .. .. .. ..■■ .. .. .. .. .. .. .. .. .. .. .. .. .. ..■■
.. .. .. .. ..■ ..■ .. .. .. .. .. .. .. .. .. .. .. .. ..■ ..■
.. .. .. .. ..■■■■ .. .. .. .. .. .. .. .. .. .. .. ..■■■■
.. .. .. .. ..■ .. .. ..■ .. .. .. .. .. .. .. .. .. .. ..■ .. .. ..■
.. .. .. .. ..■■ .. ..■■ .. .. .. .. .. .. .. .. .. ..■■ .. ..■■
.. .. .. .. ..■ ..■ ..■ ..■ .. .. .. .. .. .. .. .. ..■ ..■ ..■ ..■
.. .. .. .. ..■■■■■■■■ .. .. .. .. .. .. .. ..■■■■■■■■
.. .. .. .. ..■ .. .. .. .. .. .. ..■ .. .. .. .. .. .. ..■ .. .. .. .. .. .. ..■
.. .. .. .. ..■■ .. .. .. .. .. ..■■ .. .. .. .. .. ..■■ .. .. .. .. .. ..■■
.. .. .. .. ..■ ..■ .. .. .. .. ..■ ..■ .. .. .. .. ..■ ..■ .. .. .. .. ..■ ..■



871デフォルトの名無しさん:2008/12/27(土) 02:39:28
>>870
顔を135度傾ければいいんじゃね?w
872デフォルトの名無しさん:2008/12/27(土) 04:02:36
何その、ケツの割れ目を前にもってくれば良いんじゃね?みたいな
安直な言い掛かりは?w
873デフォルトの名無しさん:2008/12/27(土) 09:39:27
(☄・д・)☄
874デフォルトの名無しさん:2008/12/27(土) 13:01:45
前スレの終わりごろにも、"ロジスティック差分方程式"を間違って書いてるやつがいたっけ。
今回も、ルールがおかしいのでは?
875デフォルトの名無しさん:2008/12/27(土) 14:35:01
[1] 授業単元:プログラミング
[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] その他の制限:特にありません

よろしくお願いします。

876デフォルトの名無しさん:2008/12/27(土) 14:37:02
[1] 授業単元:アルゴリズム
[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

よろしくお願いします
877デフォルトの名無しさん:2008/12/27(土) 15:10:41
878デフォルトの名無しさん:2008/12/27(土) 15:16:24
>>875
#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;
}
879デフォルトの名無しさん:2008/12/27(土) 15:27:20
880875:2008/12/27(土) 15:51:56
>>877-879
助かりました。素早いご回答ありがとうございます。
881デフォルトの名無しさん:2008/12/27(土) 15:56:09
>>880
どれを採用するの?
882デフォルトの名無しさん:2008/12/27(土) 16:31:56
(☄・д・)☄
883デフォルトの名無しさん:2008/12/27(土) 17:21:09
http://img.2ch.net/ico/o_anime_basiin.gif
【依頼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
884デフォルトの名無しさん:2008/12/27(土) 18:31:56
885デフォルトの名無しさん:2008/12/27(土) 20:18:06
[1] 授業単元:プログラミング
[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は使わないで欲しいです。

是非、よろしくお願いいたします。
886デフォルトの名無しさん:2008/12/27(土) 20:19:15
本当にAPI使わないとぶっちゃけなにもできないんだけどまぁ気にせず無視すればいいんだろうな・・・・・
887デフォルトの名無しさん:2008/12/27(土) 20:19:53
コンソールでいいんだよね?念のため聞くけど
888デフォルトの名無しさん:2008/12/27(土) 20:50:42
>>885
#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;
}
889デフォルトの名無しさん:2008/12/27(土) 21:54:11
>>885
a[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]);
}
}
890デフォルトの名無しさん:2008/12/28(日) 02:16:39
[1]授業単元:C言語
[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]特になし。
891デフォルトの名無しさん:2008/12/28(日) 02:25:38
>>890
#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;
}
892デフォルトの名無しさん:2008/12/28(日) 02:26:21
>>890
VC++使わなくていいよ
つかなんでこんな簡単な奴もできねえんだよ・・・
893デフォルトの名無しさん:2008/12/28(日) 03:41:27
>>892 ???
894デフォルトの名無しさん:2008/12/28(日) 03:43:48
こんな簡単なやつも出来ないやつだからここに来るわけだ
895デフォルトの名無しさん:2008/12/28(日) 03:49:22
こんな簡単な宿題しか答えられないけど、それ未満の奴がいるから
このスレでは偉そうになるわけだw
896デフォルトの名無しさん:2008/12/28(日) 03:54:10
宿題依頼した奴はまるごとソースコピって提出してるのかな
897デフォルトの名無しさん:2008/12/28(日) 03:56:05
当たり前だろ。
今は論文でさえ、まるごとコピーで卒業できる時代だぜ。
898デフォルトの名無しさん:2008/12/28(日) 03:58:17
ところで、まだ未回答の質問ってあったりするのかな。
スレない探すのもめんどいね
899デフォルトの名無しさん:2008/12/28(日) 05:39:11
900デフォルトの名無しさん:2008/12/28(日) 06:00:14
論文の複製、別名付与が悪だった時代→20世紀

論文の複製、無修正別名付与、或は修正後同名付与が善になる
時代→21世紀

このパラダイムシフトの意味がわからないオコチャマ
が回答者として集うスレでつねw
901デフォルトの名無しさん:2008/12/28(日) 09:01:43
>>900
意味が分からないから詳しく教えてくれないか?
902デフォルトの名無しさん:2008/12/28(日) 12:44:22
>論文の複製、別名付与が悪だった時代→20世紀

おりはこの頃、理系大学単位不足で中退しました。。。。。。
903デフォルトの名無しさん:2008/12/28(日) 12:46:27
>>902
ってことは、その頃にその大学の卒業生はまだまともだった可能性が高いな
904デフォルトの名無しさん:2008/12/28(日) 12:52:47
>903

まともかな?コピー機の前に20人ぐらい並ぶ時代だったけど。
905デフォルトの名無しさん:2008/12/28(日) 15:03:51
ま、取り敢えず名前を売る為に、カラ売りのように
完成度の本質的に低いプログラムを握らせて後から
修正して辻褄を合わるやり方は今後一切通用しなく
なるだろな。
906デフォルトの名無しさん:2008/12/28(日) 15:07:00
>>905
ねーよ。今後もずっとそれ。
907デフォルトの名無しさん:2008/12/29(月) 00:51:52
[1]授業単元:上級C言語プログラミング
[2]問題文:
OS上で一般ユーザー権限のないプログラムがスタックオーバーフローを使って管理
者権限を得て動作するようなプログラムを作成せよ。
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: cygwin
[3.3]言語:C
[4]期限:2008年12月31日午後5時まで
[5]特になし。

全く見当がつかないのでどうかよろしくお願いします。
908デフォルトの名無しさん:2008/12/29(月) 01:10:24
>>907
さてと、ちょっとおじさんと、警察署に行こうか?
909デフォルトの名無しさん:2008/12/29(月) 01:29:10
大晦日まで宿題か・・・
学生さんも大変だw
910デフォルトの名無しさん:2008/12/29(月) 02:02:41
>>907
わろたw
911907:2008/12/29(月) 05:04:13
すいません、勘違いでした。
問題は、スタックオーバーフローによって本来起こり得ない動作
をするプログラム(printf文で文字を出力等)を作成せよとのことです。

完全にやってることハッカーですもんねw

すいませんがどなたかよろしくお願いします。
912デフォルトの名無しさん:2008/12/29(月) 05:16:42
×ハッカー
913デフォルトの名無しさん:2008/12/29(月) 05:20:50
○バッカー
914デフォルトの名無しさん:2008/12/29(月) 06:46:58
>>907
マジレスしとこうか
スタックオーバーフローを利用したその手の手法は
現行のOSじゃ不可能

途中で落っこちる
915デフォルトの名無しさん:2008/12/29(月) 07:06:19
>>907
#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;
}
916デフォルトの名無しさん:2008/12/29(月) 07:33:01
それはスタックじゃなくてバッファではなかろうか。
917デフォルトの名無しさん:2008/12/29(月) 07:36:22
スタック領域だからいいんじゃね?
918デフォルトの名無しさん:2008/12/29(月) 07:38:54
>>914
いまどきの libc なんかは、スタックと自動変数の位置差をランダムに変える仕様になってるからな

>>916
printf文で文字を出力等といってるからバッファ溢れでいいんじゃね
もともと>>907が「勘違い」だったことを考えると
919デフォルトの名無しさん:2008/12/29(月) 07:42:32
>>916 これならスタックオーバフローでおk?
ってか環境(コンパイラ等)によっては動かんだろうけど
#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;
}
920デフォルトの名無しさん:2008/12/29(月) 07:55:40
c言語からスタックって見えるのかな?なんか言語の機能として定義されてる?
マシン語に落とした時に呼び出し規約などのabiとして
結果的にスタック問題が発生する事があるのかもしれないけど、
posix,win32レベルじゃないと分からないよね?
ましてや権限云々など。
921746:2008/12/29(月) 11:50:12
[1] 授業単元:C言語
[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ですがうまくできなかったのでやりなおしを出されてしまいました。
特に回転させたものの比較がよくわからないです
922デフォルトの名無しさん:2008/12/29(月) 14:53:19
923デフォルトの名無しさん:2008/12/29(月) 16:00:11
[1] 授業単元:C++
[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] その他の制限: 特にないです

よろしくお願いします。
924デフォルトの名無しさん:2008/12/29(月) 16:49:07
[1] 授業単元:プログラミング
[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] その他の制限:特にありません

よろしくお願いします。
925デフォルトの名無しさん:2008/12/29(月) 17:04:30
>>924
ググれば掃いて捨てるほどでてくるだろ
926デフォルトの名無しさん:2008/12/29(月) 19:09:50
>>924
#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;
}
927デフォルトの名無しさん:2008/12/29(月) 22:16:50
[1] 授業単元:実践プログラミング
[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] その他の制限:今は構造体を習い始めたところ。関数までは基本的なものなら理解できる。
928デフォルトの名無しさん:2008/12/29(月) 22:17:42
>>927 締め切りは1月4日でした
929デフォルトの名無しさん:2008/12/29(月) 22:20:12
URL直じゃアクセスできんな
あとプログラムでwebページ取得しろっていう意味でいいのか?
930924:2008/12/29(月) 22:23:48
>>925
すみません。調べてませんでした。
>>926
ありがとうございました。
931デフォルトの名無しさん:2008/12/30(火) 00:01:45
>>929 URLさえ変えれば問(1)〜(3)の範囲にあるオッズを探して買い方が何通りあるか探してくれるようなものにすれば良いみたい。
あとは、出来さえすれば良いので習ってない知識使うも自由、問題文の解釈も自由、らしい。
教授の趣味丸出しの課題ですいません
932デフォルトの名無しさん:2008/12/30(火) 00:45:23
accessOはどこ?
933デフォルトの名無しさん:2008/12/30(火) 01:40:55
>>929
サーバーにメタデータを要求する仕組みを解析するのって簡単にできるん?
934デフォルトの名無しさん:2008/12/30(火) 02:22:14
scanf関数(数字入力)の後にfgets関数(文字列入力)を入れたらfgetsの方に
勝手に改行が入ってしまいます。
<例>
scanf("%d",&menu);
fgets(ptr,LEN,stdin);

どうすればよいのでしょうか?
935デフォルトの名無しさん:2008/12/30(火) 02:24:06
>>934
scanf()系の関数とgets()系の関数は混ぜて使わない方が良い
どっちかに統一したらよい
936デフォルトの名無しさん:2008/12/30(火) 02:25:54
>>933
postしたりするだけで済む(とは限らないけどさ)んじゃねーの?
それなら、htmlちらっとみればできんじゃね?

どの道URLで取得は絶対に不可能なんだよなぁwどの情報表示なのかわかんねーもんww
937デフォルトの名無しさん:2008/12/30(火) 02:28:40
>>935
getsで統一したい場合、文字列として数字を読みこまなきゃだめですかね?
そこからコード変換して。
938デフォルトの名無しさん:2008/12/30(火) 02:31:38
>>937
fgetsしたものをsscanfにかけるのが楽かと、バッファの扱いに関してはだけど

整数のオーバーフローとかはまた別で
939デフォルトの名無しさん:2008/12/30(火) 02:33:27
>>934
よくあるのは、fgets した後に sscanf かな
その例だと
fgets(ptr, LEN, stdin);
sscanf(ptr, "%d", &menu);
fgets(ptr, LEN, stdin);

混ぜるなの理由は、scanf したとき '\n' は stdin ストリームから取り込まれないので
次の fgets の最初の文字が '\n' になるので結果的に fgets は空の文字列になって
しまうんだな
940デフォルトの名無しさん:2008/12/30(火) 02:37:36
fgetsの前に fflush(stdin); または rewind(stdin);
つけたらできなかったっけ?
941デフォルトの名無しさん:2008/12/30(火) 02:43:30
char tmp[128];
int menu;
fgets(tmp,128,stdin);
sscanf(tmp,"%d",&menu);

試しにこうしてみたら動きました。
tmpの型サイズが[128]となっているのが不細工で気に入りませんが、
わざわざポインタを使うのもどうかと思ったので。(数字入力は関数として作っています。なのでptrは使えない)
もっと美しい方法があれば知りたいです。
942デフォルトの名無しさん:2008/12/30(火) 02:49:40
書式が決まってるなら scanf だけでも結構いける
943デフォルトの名無しさん:2008/12/30(火) 04:21:18
>>940
それはM$のCのみの処理系依存
標準では使えない
944デフォルトの名無しさん:2008/12/30(火) 04:58:11
>>933
メタデータというか、GETリクエストして得られたHTMLを解析すればいいと思う。
みれないのは現在そのファイルがないのか、アクセス制限なのか分からないけれど、
後者であればブラウザで表示するまでのパケットをみればどうにかなるんじゃない?
公開ページだからせいぜいReferer程度のものと思うけれど。
あと、こういう課題が出るくらいだからその辺(通信まわり)の知識もあるでしょきっと。
945デフォルトの名無しさん:2008/12/30(火) 05:02:42
>>944
勘違いしてないか?getしてもなんの意味もないだろ?
946デフォルトの名無しさん:2008/12/30(火) 05:03:59
>>927
学習レベルと要求に差がありすぎない?
なんか条件があるはず
947デフォルトの名無しさん:2008/12/30(火) 05:10:03
>>927

提示されたURLがpostリクエストの結果表示に過ぎないから
URLの入力で・・・
って言う問題文は明らかにおかしい、URLだけじゃ不正ページになるだけだもの
どこか勘違いしてるはず
948デフォルトの名無しさん:2008/12/30(火) 05:13:41
>>927
<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と解釈すればいいのかな…?
949デフォルトの名無しさん:2008/12/30(火) 05:17:05
>>948
>>931
安価がないからな・・・

これ見る限り不正ページは意図したものではないんじゃねー?



950デフォルトの名無しさん:2008/12/30(火) 06:08:40
>>945
あんまりサイトみてなかった。
こりゃ確かにPOSTしないとだめでした。

まあ、なもんで、>>947のURLだけじゃダメというのは同意。
あとは何をPOSTすればいいか分かればOKだねー
951デフォルトの名無しさん:2008/12/30(火) 06:16:03
もしかすると、double配列から指定範囲の要素毎にカウントするだけのプログラムなのかもね
単にサンプルとしてこのページの値で初期化しろって。
952デフォルトの名無しさん:2008/12/30(火) 09:26:42
>>951それでよいのでは?
953,,・´∀`・,,)っ-○◎●:2008/12/30(火) 16:05:47
>>940
動作がMS環境依存で移植性がないのと、ファイルからリダイレクトしたときの動作がかなり怪しくなるので不可。
リアル大坊のときはこんな厨テク使ってた。

#define endscanf() do {} while (getchar() != '\n')
954デフォルトの名無しさん:2008/12/30(火) 16:08:04
>>953
お前のそれもそうだよなw
955デフォルトの名無しさん:2008/12/30(火) 16:14:22
fputsって2回以上評価されることもある?
956デフォルトの名無しさん:2008/12/30(火) 16:42:59
>>954
rewindより遥かにましだよ。まさに厨テクという言葉がお似合いだけど。
957デフォルトの名無しさん:2008/12/30(火) 18:17:39
>>938
gets()とscanf()ってあまりよろしくないんですね
てっきりそれでもいいかなと思ってました。
958デフォルトの名無しさん:2008/12/30(火) 19:23:47
[1] 文字列の比較、計算
[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 関数を使用すること。

959デフォルトの名無しさん:2008/12/30(火) 20:00:44
>>958
gets使ってるじゃないか
960デフォルトの名無しさん:2008/12/30(火) 20:18:24
961デフォルトの名無しさん:2008/12/30(火) 20:19:13
>>958
3数値の和を求める問題で、getchar関数を使うとして、1数値目を8文字目まで読み込んで後は読み捨てるとすると、
2数値目を読み込むとき今度困ったりしない?2数値目は9文字目から改行までにするの?それとも
次の改行が終わって(改行は1個とは限らない)次の数値が始まる所にするの?

いずれにしても厳しい先生だなw
962デフォルトの名無しさん:2008/12/30(火) 21:06:27
>>959
すいません。
ルールにgets、puts等を使ってはいけないというのを見逃してしまいまして。
申し訳ないです。自分のミスです。

>>960
ありがとうございます。
このプログラムから最後の
”Input \"c\" to continue”を抜かして、比較が終わったら、
何かキーを押して終了します。
を表示したいのですが…。
どうすればよろしいでしょうか。

>>961
文字を入れる→改行が入力されたら2つ目の数値へ。
1数値目が入力される→改行が2回、等の場合は2つ目の数値が入力される前に改行が入力されたので
”Error!!:数字文字以外の入力”と表示されるようにしていただきたいのです。

ex. 1234567→改行を2回入力したとき
1番目の数値入力:1234567
Error!!:数字文字以外の入力

何かキーを押して終了。

という感じです。
お願いします。
963デフォルトの名無しさん:2008/12/30(火) 22:57:53
[1] 授業単元:プログラム基礎
[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] 指定:特になし

英単語管理プログラムで、既にプログラムはできています。
>配列の要素数を変更可能にするなどプリプロセッサ制御文を用いて拡張性の高いプログラムになるように工夫せよ.また,分割コンパイルしやすいように各機能別に関数化すること.
とあるのですが、綺麗に関数を分ける方法がわかりません。
独学で無理矢理分割しても自分のためにならないと思うので、各機能の関数化をお願いしたいです。
964デフォルトの名無しさん:2008/12/30(火) 23:18:19
>>963
まずはfopen周りをなんとかした方がいい。
965デフォルトの名無しさん:2008/12/30(火) 23:41:57
自分のためになるよ!
966デフォルトの名無しさん:2008/12/30(火) 23:50:07
>>965
変な覚え方するより、セオリーに従った方法で覚えたほうが絶対いいと思うのですが、、
先生に質問しようにも学校は休みですし、他にも課題は大量にあるので。
967965:2008/12/30(火) 23:53:24
解答がまともである保証はあるのかな?
968デフォルトの名無しさん:2008/12/30(火) 23:57:22
>>967
それは見れば大体分かることだと思います。

for文を使わず一つ一つの処理を書いてたり
else文を使わずにifの連続で判断をしていたり、と
プログラミングってちょっとした知識を知っているかどうかでプログラムの美しさは
全然変わってくると思っているので。
969デフォルトの名無しさん:2008/12/30(火) 23:58:55
無駄を省いてどう”短く"書くか に限る
970デフォルトの名無しさん:2008/12/31(水) 00:04:25
それだけの実力があるなら投げることないと思うのだが
971デフォルトの名無しさん:2008/12/31(水) 00:09:23
>>968
>それは見れば大体分かること

自分のコード見てどこがまずいかは見れば大体分かるよな?
まずはそっちを修正しようぜ。
972デフォルトの名無しさん:2008/12/31(水) 00:15:16
>>971
「まずい」というのはわかりませんが、「どうにかならないのかな?」と思うところはあります。
しかしそれを直す方法はわかりません(とりあえずは調べていますが)
973デフォルトの名無しさん:2008/12/31(水) 00:21:21
まだ知識に乏しい初心者がくるところに「どこが問題かわかるだろ?そこを直せよ」なんて、
錯誤もいいところじゃね。
974デフォルトの名無しさん:2008/12/31(水) 00:55:28
>>972
普通、それはわかってないと言う。「大体わかる」とか書くから誤解される。
975デフォルトの名無しさん:2008/12/31(水) 01:06:52
>>974
こうでも書かないと「まずは自分で調べろ」と言われそうなので。

はっきりいって10枚程度のスライドでプリプロセッサだの関数だのと見せられた程度でわかるわけがわかりません。
参考サイトなんかを見てもバックグランドとなる知識がないため完璧に理解することができません。
おまけに「拡張性の高いプログラムになるように工夫せよ.また,分割コンパイルしやすいように」とわりますが、
こんなところまで教えてくれる初心者向けサイトはありません。(拡張性が高いはまだしも、分割コンパイルなんてやったことすらないのに)
だからここに来たわけです。ここなら経験豊富な人も多いだろうと思ったので。
976デフォルトの名無しさん:2008/12/31(水) 01:10:09
分割するほどの処理じゃないから、そのままの方がいいような
977デフォルトの名無しさん:2008/12/31(水) 01:11:47
>>976
しかし仕様書にはそう書いてあるので。
978デフォルトの名無しさん:2008/12/31(水) 01:12:53
>>975
ttp://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
とりあえず今の内に構造化とか勉強しとけって解釈でいいんじゃね?
979デフォルトの名無しさん:2008/12/31(水) 01:14:55
>>975
>こうでも書かないと「まずは自分で調べろ」と言われそうなので。

うそだったわけだ。
980デフォルトの名無しさん:2008/12/31(水) 01:18:02
――掲示板で聞くことは自分で調べると言わない。
質問スレですらそうなのに、ましてここは宿題スレだ。
981デフォルトの名無しさん:2008/12/31(水) 01:19:28
>>977
ファイル操作してるところを関数にしてみたら
982デフォルトの名無しさん:2008/12/31(水) 01:19:49
>>979
個人的に直したいと思うのは、
メニュー選択時の数字入力方式
flag、tmpcは省略できるのではないか
menu関数はもっと別のアプローチがあるのではないか(現時点では初めのメニュー分にしか対応できない)

こんな感じです。
しかしその前にこれらを関数分割化することが大事だと思うので。
983デフォルトの名無しさん:2008/12/31(水) 01:22:29
どうでもいいことに噛みついてんなよ根暗共
984デフォルトの名無しさん:2008/12/31(水) 01:30:31
>>981
ファイルのオープン等は外部関数でやってもよいのですか?
仮に
void file(){
fp=fopen("list.txt","w");
}
void main(){
file();
fclose(fp);
}

(fpの宣言等は省略)とやってもできるのか?
fpはグローバル変数としなければならないのか?
等々疑問が大量に湧いてきます。これらを虱潰しにやっていっても、もっと効率のよい方法があると思うと・・・
985デフォルトの名無しさん:2008/12/31(水) 01:36:43
>>984
単語登録毎に、ファイル読み込み、重複チェック、書き込みやれば、処理が簡潔にならない?
986デフォルトの名無しさん:2008/12/31(水) 01:48:41
>>985
とりあえずこのプログラムは仕様書の内容に忠実に再現してあるので、それは駄目なようです。
(初めにファイルを読み込み、無ければ作成。次にそれを配列に格納。後は処理を繰り返し、最後にファイルに格納)

考えるほど頭が痛くなってきます。
文字を入力して格納するにしても、文字の入力だけを関数にすればいいのか、格納まで行えばいいのか(格納するにはポインタを使うべきなのか、グローバル関数にするべきなのか)
987デフォルトの名無しさん:2008/12/31(水) 01:56:24
>>985
そんな拡張性のない方法はどうかと

あと改行の扱い方が半端無いなこれ
988デフォルトの名無しさん:2008/12/31(水) 02:25:42
>>963
関数云々より2次元配列が気に入らない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8502.txt
989デフォルトの名無しさん:2008/12/31(水) 02:40:49
>>988
staticやら#if 0やら、自分の知らない手法が大量に出ているので、一つ一つ調べていって理解してみます。
ありがとうございました!
少し教えていただきたいのですが、あの二次元配列の何が問題だったのでしょうか?
文章サイズも+1しているようですが(改行コード用?)
990デフォルトの名無しさん:2008/12/31(水) 07:28:22
>>989
ヌル文字('\0')用。

せっかくキリのいい256にしてるのに+1してるのはちょっとムズかゆかったりするけど、
まぁ個人的な話。
991デフォルトの名無しさん:2008/12/31(水) 08:02:24 BE:142006853-PLT(43140)
次スレ立てました
C/C++の宿題を片付けます 121代目
http://pc11.2ch.net/test/read.cgi/tech/1230678123/
992デフォルトの名無しさん:2008/12/31(水) 13:14:43
993デフォルトの名無しさん:2008/12/31(水) 16:07:10
>>992
123456789改行
abc
と入力したら

Error!! 数字文字以外の入力

Error!! 改行のみの入力
123456789 + 0 + 0 =123456789
何かキーを押して終了

と出て、

改行を3回入力したら

Error!! 改行のみの入力

Error!! 改行のみの入力

Error!! 改行のみの入力
何かキーを押して終了

と出たのですが、

これを
数字文字以外が入力された場合はその時点で
Error!! 数字文字以外の入力とだけ表示しそこで終了。
改行が入力された時点で
Error!! 改行のみ入力とだけ表示し終了するようにしたいのですが。

お願いします。
994デフォルトの名無しさん:2008/12/31(水) 16:33:53
>>993
break; を return 0; に変えればいいと思う
995デフォルトの名無しさん:2008/12/31(水) 16:36:43
[1] 授業単元:情報処理2
[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
996デフォルトの名無しさん:2008/12/31(水) 16:40:40
>>995
Visual C++ 2008 EE だと無限ループしなかったよ
997デフォルトの名無しさん:2008/12/31(水) 16:55:35
すいません。
最後の方に無限ループしないようにnでストッパーをつけています。
それを外すと無限ループして値も収束してくれません。
998デフォルトの名無しさん:2008/12/31(水) 17:01:27
>>997
じゃあpでbreak;しなかったってことでしょ?
毎回p=0と初期化してるのはなんで?
999デフォルトの名無しさん:2008/12/31(水) 17:16:05
右上にある要素を数えたいと思ったんですが・・・
すいません、もう一回よく考えてきます
1000デフォルトの名無しさん:2008/12/31(水) 17:29:02
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。