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

このエントリーをはてなブックマークに追加
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++の宿題片付けます 141代目
http://hibari.2ch.net/test/read.cgi/tech/1286978599/
2デフォルトの名無しさん:2010/11/01(月) 00:56:39
>>1
3デフォルトの名無しさん:2010/11/01(月) 01:40:42
[1] 授業単元:C言語入門

[2] 問題文):最大24個の整数が格納できる配列を用意する。
この配列の先頭から10個分には1を代入し,
つづく6個分に は0を入れ,最後の8個分には-1を入れよ。

[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限:11月2日

良ければよろしくお願いします
4デフォルトの名無しさん:2010/11/01(月) 01:44:23
>>3
いや、それくらい自分でやれよw
5デフォルトの名無しさん:2010/11/01(月) 01:45:58
>>3
int main(void)
{
int ary[24]=
{
1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,
-1,-1,-1,-1,-1,-1,-1,-1
};
return 0;
}
6デフォルトの名無しさん:2010/11/01(月) 01:47:51
>>3
#include<stdio.h>

int main(void)
{
int array[24];
int i, index=0;

for(i=0;i<10;i++) array[index++]=1;
for(i=0;i<6;i++) array[index++]=0;
for(i=0;i<8;i++) array[index++]=-1;

return 0;
}
7デフォルトの名無しさん:2010/11/01(月) 01:49:32
>>5-6

ありがとうございます
助かりました
8デフォルトの名無しさん:2010/11/01(月) 02:45:36
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)

*記号を使ってでsin曲線を描け。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月2日
[5] その他の制限: なし
よろしくお願いします。
9デフォルトの名無しさん:2010/11/01(月) 02:48:48
助けてください
Windowsコンポーネントの情報の取得を教えてください
環境 MFC (VS2003)

COMは苦手です。何かヒントのページでも構いません
見つかりません

誰かお願いします。
10デフォルトの名無しさん:2010/11/01(月) 02:54:29
>>8
汚い正弦曲線で良ければ
http://ideone.com/ANYS5
11:2010/11/01(月) 02:55:15
9です。
追加で質問です。
WindowsコンポーネントはWin2003はレジストリから取得なのでしょうか?
もしそうならばキーとパスを教えていただけないでしょうか?

お願いします
12:2010/11/01(月) 03:02:14
9です。
事故解決しました
139 ◆hjAE94JkIU :2010/11/01(月) 04:00:13
9です。
解決してません。
そういうのはやめていただけませんか?
14デフォルトの名無しさん:2010/11/01(月) 08:50:51
>>8
追加させていただきます。
実行結果が下のような感じでお願いできますか。
|
|
|
___________________________
|
|
|
15デフォルトの名無しさん:2010/11/01(月) 08:53:58
>> 14
途中送信してしまいました
正弦曲線だけではなくグラフの縦と横線も表示できるようにお願いしたいです。
16デフォルトの名無しさん:2010/11/01(月) 09:22:57
17デフォルトの名無しさん:2010/11/01(月) 12:22:53
何度も言わせないで頂戴。早くカレンダーの課題を出して頂戴。
18デフォルトの名無しさん:2010/11/01(月) 15:34:47
>>17
西暦元年以降の二つの実在する年月日から、
経過日数を計算し、結果を返す関数を作成して
くれないか?w
19デフォルトの名無しさん:2010/11/01(月) 16:07:42
>>18 いや、それくらい自分でやれよw
20デフォルトの名無しさん:2010/11/01(月) 16:30:20
>>19
これ、難しいぞ
21デフォルトの名無しさん:2010/11/01(月) 16:45:34
>>20
修正ユリウス日が求められれば後は引き算するだけ
22デフォルトの名無しさん:2010/11/01(月) 16:54:47
今日から1億年後の曜日を調べよ
23デフォルトの名無しさん:2010/11/01(月) 16:56:34
>>21
>修正ユリウス日が求められれば

だからそれが難しいって言ってんだよ馬鹿?
24デフォルトの名無しさん:2010/11/01(月) 17:05:48
>>23
ごめん、調べれば公式やサンプルがゴロゴロでてくるから難しいとか考えたこともなかった
よく考えれば検索自体初心者にはハードルが高いよね
25デフォルトの名無しさん:2010/11/01(月) 17:18:59
>>8
昔作ったのでよければ。
http://ideone.com/vhfG7
26デフォルトの名無しさん:2010/11/01(月) 18:03:48
>>23
そんなものが難しいとか言っているお前がマジで馬鹿だろ?w
27デフォルトの名無しさん:2010/11/01(月) 18:08:52
>>24>>26
ソース貼ってから言えよカス
28デフォルトの名無しさん:2010/11/01(月) 18:10:39
( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ
29デフォルトの名無しさん:2010/11/01(月) 18:11:30
n人の成績データを一次元配列に格納し、平均点を求めるプログラムを作成せよ。
ただし、データ入力部、計算部、出力部は関数化せよ。


点数を入力するときに関数を使うらしいのですが
関数における配列の使い方がよくわかりません。
動的メモリを使うらしいのですが・・・。
30デフォルトの名無しさん:2010/11/01(月) 18:19:05
暦って各国ばらばらに導入されてるから、その事も考慮しないといけないな
31デフォルトの名無しさん:2010/11/01(月) 18:28:37
32デフォルトの名無しさん:2010/11/01(月) 18:33:41
失礼しました。

[1] 授業単元:応用プログラミング
[2] 問題文(含コード&リンク):
n人の成績データを一次元配列に格納し、平均点を求めるプログラムを作成せよ。
ただし、データ入力部、計算部、出力部は関数化せよ。

[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン: VB 2005
 [3.3] 言語: C++
[4] 期限: ([2010年11月02日まで
[5] その他の制限:
n人の成績データを一次元配列に格納し、平均点を求めるプログラムを作成せよ。
ただし、データ入力部、計算部、出力部は関数化せよ。
33デフォルトの名無しさん:2010/11/01(月) 18:34:47
コンパイラがwwww
34デフォルトの名無しさん:2010/11/01(月) 18:37:26
>>33
すいませんww
visual studio2005です
ベーシックじゃないですw
35デフォルトの名無しさん:2010/11/01(月) 18:50:51
すいません、>>32の補足です。
成績データ入力はテキストファイル(data.txt)入力で、出力はコンソールへお願いします。
nはテキストファイルの中身より求める。
一次元配列にはvectorってのを使うと良いらしいってことです。
data.txtの中身:
10
40
50
90
...
ってな感じでn人分成績があります。
3632:2010/11/01(月) 18:52:32
>>35
お前誰だよ。>>32>>35は別人です。
37デフォルトの名無しさん:2010/11/01(月) 18:59:14
>>36
そういう荒らしを防ぐためにトリップというものがあるので利用してね。
38デフォルトの名無しさん:2010/11/01(月) 18:59:14
>>32
vector やら algorithm はなんとなく控えておきました
やってから思ったが二重ポインタも控えた方がよかったでしょうか?
ttp://codepad.org/KlkKCJfO
39デフォルトの名無しさん:2010/11/01(月) 19:02:13
>>25
ありがとうございます
40デフォルトの名無しさん:2010/11/01(月) 19:18:07
>>27
x=(int)(365.25*y)+(y/400)-(y/100)+(int)(30.59*(m-2))+day-678912;
1,2月は前年の13,14月で計算
41デフォルトの名無しさん:2010/11/01(月) 19:26:52
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下の手順でプログラムを作成せよ
a)実数型配列内の最大値を求める関数MAXを作成(引数は実数型配列とその要素数とし、戻り値は最大値)
b)実数型配列内の最大値の要素番号を返す関数INDEXを作成(引数は実数型配列とその要素数,戻り値は最大値の要素番号)
c)a,bで作成した関数を呼び出して、配列内の最大値・要素番号を求めるプログラムを作成せよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年11月1日00:00
[5] その他の制限:最大値の要素番号は0も含む。またsizeof演算子を使用して配列の要素数を求めること

よろしくお願いします
42デフォルトの名無しさん:2010/11/01(月) 19:38:15
MAXとINDEXを別々の関数にするのは二度手間で無駄だからやだなあ
43デフォルトの名無しさん:2010/11/01(月) 19:42:19
44デフォルトの名無しさん:2010/11/01(月) 19:49:03
>>38
ありがとうございます。
2重ポインタも使わない感じでお願いしたいです・・・。
45デフォルトの名無しさん:2010/11/01(月) 19:54:07
>>43
ありがとうございます
46デフォルトの名無しさん:2010/11/01(月) 19:57:59
1] 授業単元: プログラミング2
[2] 問題文(含コード&リンク):
二次元平面上のある点はx座標とy座標とで表わされる。(x、yはそれぞれ実行値とする)
また、点a(2.0,3.0)と点b(6.0,5.0)とを考える。このとき次の問題を解くプログラムを作成せよ。
プログラムは全部まとめて1つのプログラムでよい。
1.二次元平面の天を表わす構造体struct pointを定義せよ。
2.点aと点bの中点を求めよ。
3・点aから点bまでの距離を求めよ。
4.点aと点bを結ぶ直線y=px+qのp,qを求めよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
47デフォルトの名無しさん:2010/11/01(月) 20:12:03
48デフォルトの名無しさん:2010/11/01(月) 20:57:57
>>47
感謝です
49デフォルトの名無しさん:2010/11/01(月) 21:54:08
>>44
使って良いのと駄目なの言わないで、あとからこうしてと言うと回答者やる気でないよ
C++でこの問題なら>>32の言うvector、algorithmを使って参照渡しで実現するのが普通
CとC++の区別付いてなくて、実はこれC言語の問題じゃないのか
50デフォルトの名無しさん:2010/11/01(月) 23:10:52
>>49
今更何を言ってるんだ。もう少しROMった方がよいんじゃないか。
C++と記載してある課題の大体7割はCの課題だよ。
51デフォルトの名無しさん:2010/11/01(月) 23:38:43
>>49
この程度のサイズの問題(たかだか30行程度)の書き直しが面倒なのですか?
あと、new したものを delete しないのはお行儀がわるいですね。
52デフォルトの名無しさん:2010/11/01(月) 23:41:37
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
count をもつqueue(待ち行列)を実現せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。



53デフォルトの名無しさん:2010/11/01(月) 23:42:02
>>43
与えられた実数型配列が負の数ばかりだと、最大値が狂います。
54デフォルトの名無しさん:2010/11/01(月) 23:42:53
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
連結リストでqueue(待ち行列)を実現せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。

55デフォルトの名無しさん:2010/11/01(月) 23:43:06
>>51
>>49>>38の回答者じゃないよ
そういうならお前がやってくれたらどう
56デフォルトの名無しさん:2010/11/01(月) 23:46:44
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
連結リストでqueue(待ち行列)を実現せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。




より目立つように協力してあげる
57デフォルトの名無しさん:2010/11/01(月) 23:47:34
>>55
さわるな、そいつは◆QZaw55cn4cだ
58デフォルトの名無しさん:2010/11/01(月) 23:49:55
countって何のカウントだよ
59デフォルトの名無しさん:2010/11/01(月) 23:52:30
infoseek が使えなくなったので、暫定的にアップローダ作りました。
「無料でCGIが使える」条件で探したので、サーバ稼働率は微妙かもしれません。
どこかに乗り換えるにしても、それまでの繋ぎということで。。。

http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
60デフォルトの名無しさん:2010/11/02(火) 00:01:09
>>58
これがcountなしの場合です
struct queue {
int *bd;
int hd;
int tl;
int mx;
char *id;
};
void error_id (char *frm, char *id)
{
fprintf(stderr, frm, id);
exit(1);
}
struct queue *newqueue (int maxsize, char *name)
{
struct queue *q;
if ((q = (struct queue *)malloc(sizeof(struct queue))) == NULL)
error_id("malloc for %s\n", name);
if ((q->bd = (int *)malloc(maxsize * sizeof(int))) == NULL)
error_id("malloc for %s's body\n", name);
q->hd = q->tl = 0;
q->mx = maxsize;
q->id = name;
return q;
}
61デフォルトの名無しさん:2010/11/02(火) 00:01:34
>>52
前スレで回答したんだけど、アンカーミスってたから気が付かなかったんだね(当たり前か)
ttp://codepad.org/zbsO9JCU
62デフォルトの名無しさん:2010/11/02(火) 00:09:12
>>61
恐らく先生から配列じゃなく連結リストでやれって言われたんじゃないのかな
63デフォルトの名無しさん:2010/11/02(火) 00:09:54
>>52 と >>54 は別人なんだよな

>>52 count を持つキュー => リングバッファ
>>54 連結リストでキュー => ポインターリンク

と普通は考えるんだが、>>52 が >>60 で示した例だとポインターリンクだ
訳が判らん 
64デフォルトの名無しさん:2010/11/02(火) 00:14:42
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
*********の部分を埋めて双方向リスト(先頭にデータを追加していくを完成させよ。
#include<stdio.h>
#include<stdlib.h>
struct NODE{
int info;
struct NODE *left;
struct NODE *right;
};
main(){
struct NODE *head,*p,*q,*r;
int data;
head=(struct NODE *)malloc(sizeof(struct NODE));
head->left=NULL; head->right=NULL;
while(1){
scanf("%d",&data); if(data<=0){break;}
r=(struct NODE *)malloc(sizeof(struct NODE));
r->info=data; r->left=NULL; r->right=NULL;
*************
*************
*************
*************
}
printf("双方向リスト(先頭から末尾へ):");
q=head->right;
while(q!=NULL){
printf("%d ",q->info); q=q->right;
} printf("\n");}
[3] 環境
 [3.1] OS: unix[3.2] コンパイラ名とバージョン: gcc[3.3] 言語: C
[4] 期限:11月3日
65デフォルトの名無しさん:2010/11/02(火) 00:16:40
[1] 授業単元: プログラミングU
[2] 問題文(含コード&リンク):
下のプログラムを参考にして、次の条件に合うデータを検索するようにプログラムを変更せよ。
1.学生番号の変わりに氏名を入力させ、氏名で検索を行って見つかった学生データを表示させるプログラムを作成せよ。
(ヒント)文字列の検索にはstrcmp(s1,s2)を使うとよい。strcmpは文字列s1と文字列s2を比較し、同じなら0以外の値を返す。
またstrcmpを使用する際には、ヘッダファイル"string.h"をインクルードするのを忘れないこと。
2.学生のうち、成績が最大の学生のデータのを表示させるプログラムを作成せよ。
3.得点を入力させ、成績が入力した得点以上の全ての学生のデータを表示させるプログラムを作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c
66デフォルトの名無しさん:2010/11/02(火) 00:18:46
>>63
そうなのか?
自分、>>52>>54は同一人物で、>>52は間違って以前の問題をupしてしまい、
慌てて今回の問題>>54をうpしたと思ったんだが...

age君どうなんだよ!
67デフォルトの名無しさん:2010/11/02(火) 00:19:07
>>63
countなしの例として以下もありました
struct queue *enqueue (int v, struct queue *q)
{
q->bd[q->tl] = v;
q->tl = (q->tl + 1) % q->mx;
if (q->tl == q->hd)
error_id("%s overflows\n", q->id);
return q;
}
int dequeue (struct queue *q)
{
int v = q->bd[q->hd];
if (q->hd == q->tl)
error_id("empty %s is dequeued\n", q->id);
q->hd = (q->hd + 1) % q->mx;
return v;
}
int qsize (struct queue *q)
{
int s = q->tl – q->hd;
if (s < 0)
s += q->mx;
return s;
}
6865続き:2010/11/02(火) 00:19:16

参考プログラム
#include<stdio.h>
#define MAX 20
#define MaxN 30

struct student{
int sid ;
char name[MaxN];
int score;
}typedef Student;

Student St[MAX+1] = {{0,0,0},
{1001,"井上太郎",85},
{1002,"菊池次郎",60},
{1003,"佐々木三郎",70},
{1004,"中村四郎",55},
{1005,"藤井五郎",90},
{1006,"松本六郎",80},
{1007,"山本七郎",70},
{1008,"渡辺八郎",75},
};
int N = 8;
6968続き:2010/11/02(火) 00:20:18
main()
{
int i;
int qid;


while(1){
printf("学生番号は?");
if( scanf("%d",&qid) ==EOF){break;}

i=N;
while(i>0){
if(St[i].sid == qid){break;}
i--;
}
if(i==0){
printf("学生番号%dはありません。\n",qid);
}else{
printf("学生番号=%04d 氏名=%s 得点=%d\n",St[i].sid,St[i].name,St[i].score);
}
}
printf("\n***終了***\n");
}

お願いします
70デフォルトの名無しさん:2010/11/02(火) 00:24:19
>>64
r->right = head->right;
r->left = head;
head->right->left = r;
head->right = r;
71デフォルトの名無しさん:2010/11/02(火) 00:31:16
>>66
両方とも今回出た問題です
72デフォルトの名無しさん:2010/11/02(火) 00:31:19
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):http://minus-k.com/nejitsu/loader/up77256.jpg
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年11月04日13:00まで
[5] その他の制限:関数、ポインタは未修

宜しくお願いします。
7372:2010/11/02(火) 00:35:24
1文字を2文字に置き換える知能を持ち合わせておちません・・・
頭の優れた方、宜しくお願いします。
74デフォルトの名無しさん:2010/11/02(火) 00:48:20
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
infix2postfixプログラムの改善案を作れ。
– 空白に関する仮定なし
– エラーチェック
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。


7574:2010/11/02(火) 00:49:04
追記です
infix2postfix プログラム
char c;
for (stackinit(); scanf(“%1c”, &c) != EOF; ) {
if (c == ‘)’)
printf(“%1c”, (char) pop());
if (c == ‘+’)
push((int) c);
if (c == ‘*’)
push((int) c);
while (‘0’ <= c && c <= ‘9’) {
printf(“%1c”, c);
scanf(“%1c”, &c);
}
if (c != ‘(’)
printf(“ ”);
}
printf(“\n”);
仮定:
演算子,被演算子,括弧
は空白で区切られている。
76デフォルトの名無しさん:2010/11/02(火) 00:56:33
>>72
>>73 以外は自分で出来るみたいだからこれで良いよな
string.h が禁止されてる場合は strlen() くらいは自作しろ

void ModefyString( char* src, char* dst, char c, char* new )
{
  int i, len;

  len = strlen( new );
  while( *src ) {
    if( *src == c ) {
      for( i = 0; i < len; i++ )
        *(dst + i) = *(new + i);
      dst += len;
    }
    else {
      *dst = *src;
      dst++;
    }
    src++;
  }
  *dst = 0x00;
}
77デフォルトの名無しさん:2010/11/02(火) 01:00:13
>>76
関数未修って言ってるぞ。
78デフォルトの名無しさん:2010/11/02(火) 01:00:25
>>70
エラーで実行できませんでした。
79デフォルトの名無しさん:2010/11/02(火) 01:04:13
>>70
head->right == NULL のときに、head->right->left は何?
80デフォルトの名無しさん:2010/11/02(火) 01:04:28
>>71
なんとなく理解した
君が参考で出したソースは count を持たないリングバッファのキューだから先に示した回答で >>52 は良いと思う
参考ソースと同様にバッファサイズを可変にする必要があるなら修正が必要だけどね
81デフォルトの名無しさん:2010/11/02(火) 01:04:33
>>70
3行目抜いたら実行できました。
82デフォルトの名無しさん:2010/11/02(火) 01:07:42
>>81
それだと双方向リストになってないと思うよ。
8370:2010/11/02(火) 01:09:47
>>78-79 いけねっ初歩的なミスだ
r->right = head->right; 
r->left = head; 
if( head->right ) head->right->left = r; 
head->right = r;

>>81 駄目な行を抜けば良いって考えは駄目だよ 
84デフォルトの名無しさん:2010/11/02(火) 01:11:14
>>77
そうか、でもまぁ出来る子なら読めば判るでしょ
85デフォルトの名無しさん:2010/11/02(火) 01:22:20
>>84
>>77じゃないが
ポインタも未修になっている
これ、main()と配列アクセスでがんばれってことだと思うが
ポインタ、関数駄目だから意外とやりづらいよ
86デフォルトの名無しさん:2010/11/02(火) 01:32:14
>>72
ポインタ未修を見逃して書き直すハメに

#include <stdio.h>
int main ( void )
{
char string_a[256] ;
char string_b[512]={0} ;
char a ;
char b[3] ;
int ia, ib ;

printf ( "input a string:" ) ;
gets ( string_a ) ;
printf ( "input a char:" ) ;
a = getchar() ;
printf ( "input b char:" ) ;
scanf ( "%2s", b ) ;

for ( ia=0,ib=0 ; string_a[ia]!=0 ; ia++,ib++ ){
if ( string_a[ia]==a ){
string_b[ib] = b[0] ;
string_b[++ib] = b[1] ;
}
else{
string_b[ib] = string_a[ia] ;
}
}
printf ( "input-array is %s\n", string_a ) ;
printf ( "changed-array is %s\n", string_b ) ;
}
87デフォルトの名無しさん:2010/11/02(火) 01:51:47
>>71
>>54 の分も書いたよ
ttp://codepad.org/YHVQIk09

しかし、参考ソース見ると、C++のコード出して大丈夫かなって気はする
前スレでテンプレートクラスは習ったって書いてあったから書いたけどね
88デフォルトの名無しさん:2010/11/02(火) 01:55:49
>>85
ポインタ使えないと文字列操作は書く気しないなぁ
学校もカリキュラムの組み立てを考えた方が良いと思う
89デフォルトの名無しさん:2010/11/02(火) 02:15:13
>>74
まだ諦めてなかったの?
題意が掴めないから誰も回答できないよ
改善案を作れっていうなら元のソースを完全な形で提示しないと駄目だよ
>>75 中にも欠落している行がある様に思うし(空白に対する処理が無い)

多分、一般式→逆ポーランド式の変換だとは思うけどね
90デフォルトの名無しさん:2010/11/02(火) 04:33:49
過去ログ検索ってもう使えない?
91デフォルトの名無しさん:2010/11/02(火) 04:36:53
それなんて宿題?
92 ◆QZaw55cn4c :2010/11/02(火) 06:22:54
呼ばれたようですね。
>>32
>>44
>>38 を参考にさせていただいて、2重ポインタを排除しました。
http://codepad.org/Vk3uGqjP
93デフォルトの名無しさん:2010/11/02(火) 06:26:11
>>32
>>44
delete を呼ばなくてはならないと指摘されていましたね。訂正いたします。
http://codepad.org/qySG3U69
94デフォルトの名無しさん:2010/11/02(火) 08:58:20
>>89
>>75 が不完全なところや、実行速度に問題があるから、正しく直せって課題でしょ。
stack 関係のコードがないから、動作検証もできないけどね。
95デフォルトの名無しさん:2010/11/02(火) 09:00:14
>>88
配列操作をすっとばして、ポインタを教えるカリキュラムの方がどうかしてると思うけど。
96デフォルトの名無しさん:2010/11/02(火) 09:01:02
>>92-93
new[]したものを delete []しないのはお行儀がわるいですね。
97デフォルトの名無しさん:2010/11/02(火) 09:07:08
なんで参照にしないんだろう
98デフォルトの名無しさん:2010/11/02(火) 09:32:12
>>95
ほぼ同時に教えるべきモノだと思う、同じモノなんだから
配列を教えた段階で宿題にするならN人の点数を配列に入れて平均出せくらいの問題で良いと思うよ
99デフォルトの名無しさん:2010/11/02(火) 09:33:59
下手に同時に教えると、混乱しやすいと思うが
100デフォルトの名無しさん:2010/11/02(火) 09:37:36
なぜ無意味な問題批判が止まないのか
101デフォルトの名無しさん:2010/11/02(火) 10:40:12
>>98
配列とポインタが同じって考えない方が良いな。
sizeof(a) / sizeof(a[0])
の結果が、a が配列かポインタかで異なることからも明らか。
102デフォルトの名無しさん:2010/11/02(火) 11:24:42
>>101
同じようなモノね、言いたかったのは

>>99
関連性が高いから同時に教えた方が良いと思う
2次元配列と配列へのアドレス配列は異なる事とかポインタを理解していないと教えにくい部分もあるから
ポインタで躓く生徒が多いからカリキュラムの後ろに配置するより、ポインタを理解できなければC言語は
理解できないくらいの思想でカリキュラムを組むべきだと思う
103デフォルトの名無しさん:2010/11/02(火) 11:32:33
>>93
average() に問題ないか?整数値の答えしか返ってこないと思うが
104デフォルトの名無しさん:2010/11/02(火) 11:40:42
(double)が無くなってsumがdouble型になってるな
105デフォルトの名無しさん:2010/11/02(火) 12:11:32
>>102
データ構造としての配列と実装としての配列を一緒に考えることが
正しいかどうかはかなり疑問、まあ学習者のタイプにもよるんだろうけど
106デフォルトの名無しさん:2010/11/02(火) 12:24:38
>>104
sum は double か、被除数が double だと問題ないんだっけっか?
なんか気持ち悪いけど
107デフォルトの名無しさん:2010/11/02(火) 13:59:54
>>102
自分の言いたいことを正しく日本語にしないと、相手には正確に伝わらないよ。
>>98 の書き方では、ほとんどの人があなたのことを誤解するんじゃないかな。
108デフォルトの名無しさん:2010/11/02(火) 18:10:14
>>103,104,106
通常の二項演算子では、被演算数の一方が double のときは、もう一方も double に変換され、結果も double になります。
(Usual arithmetic conversions)

K&R2 付録 A6.5
ISO/IEC 9899:1999 6.3.1.8
ISO/IEC 14882:2003 5.0.9 (としか書きようがないのですけど、こういう場合どうするんでしょうね)
109デフォルトの名無しさん:2010/11/02(火) 19:24:35
>>87
node = new CNode<T>;
if( ! node ) {
cout << "Alloc error, cannot push" << endl;
return 0;
}
で割り当て失敗時にif( ! node )の{...}が実行されることがあるんですか
実行させるためには
node = new(nothrow) CNode<T>;としないといけないんじゃないですか
110デフォルトの名無しさん:2010/11/02(火) 20:04:12
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
生年月日を入力してその曜日を求めるプログラムです。
西暦での入力まではできたのですが、これを西暦年ばかりでなく日本の元年の年数でも利用できるようにしたいです。
http://codepad.org/SU0xXKWS
年数の第1文字がCなら西暦年数、
Mなら明治の年数(元年1867)、
Tなら大正の年数(元年1912)、
Sなら昭和の年数(元年1926)、
Hなら平成の年数(元年1989)とする。

例:H22 11 2、あなたの誕生日は、火曜日です。

[3] 環境
 windows xp
 C言語
[4] 期限: 11月5日
[5] その他の制限: 特になし。
よろしくお願いいたします。
111デフォルトの名無しさん:2010/11/02(火) 20:16:59
>>17
ほれほれ、カレンダーの課題が出ましたよ。さあ、どうぞ。
112デフォルトの名無しさん:2010/11/02(火) 20:45:46
>>110
http://codepad.org/xVJIR6Xz

<stdlib.h> atoi()を使っちゃだめならまた考える
113112:2010/11/02(火) 20:49:43
ごめ
昭和の元年のが間違ってた
1626→1926で
114デフォルトの名無しさん:2010/11/02(火) 20:53:49
>>112
nEra が間違ってないか?
あと、1867, 1911, 1925, 1988 にしておけば、atoi 後の -1 も不要。
115デフォルトの名無しさん:2010/11/02(火) 20:56:46
>>112
ごめん、>>110 がすでに間違えてたのね。
明治元年は1868年だよ。
116デフォルトの名無しさん:2010/11/02(火) 21:02:49
>110
一応atoi使わない版
余り変わらない上に邪道臭いけど…
年号データを最初から-1しとくかどうかはお好みで

#include <stdio.h>

int main()
{
int year, month, day, day_of_week;
int c, y, m, d;

int i ;
char ys[256] ;
char cEra[4] = { 'M', 'T', 'S', 'H' } ;
int nEra[4] = { 1868, 1912, 1926, 1989 } ;

printf("誕生日を入力して下さい=");
gets(ys) ;
sscanf ( ys+1, "%d %d %d",&year, &month, &day);

if ( *ys!='C' ){;
for ( i = 0 ; i < 4 ; i++ ){
if ( *ys==cEra[i] ){
year=nEra[i]+year-1 ;
break ;
}
}
if ( i==4){printf ( "Error\n" );return -1;}// エラーチェックする?
}

// 後は一緒
117デフォルトの名無しさん:2010/11/02(火) 21:07:32
昭和64年とかチェックしないとね
118デフォルトの名無しさん:2010/11/02(火) 21:19:50
えっ
119デフォルトの名無しさん:2010/11/02(火) 22:28:58
やるなら明治5年のグレゴリオ暦採用以前をどうするかってとこか
そんなやつもう生きてないだろうが
120デフォルトの名無しさん:2010/11/02(火) 22:29:28
>>117
ありえない和暦を入れたらNG出さないと駄目だよな
平成1年1月1日
昭和64年12月31日
121デフォルトの名無しさん:2010/11/02(火) 22:37:30
全然問題と関係ないし
122デフォルトの名無しさん:2010/11/02(火) 22:44:53
最近本当に余計な茶々を入れる奴が増えたな
自分では全くプログラムを書かず、人の書いたプログラムを重箱の隅をつつく
ようにしてケチばかり付ける奴
123デフォルトの名無しさん:2010/11/02(火) 22:53:39
>>122
あなた自身のことですね
124デフォルトの名無しさん:2010/11/02(火) 23:11:34
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
infix2postfixプログラムの改善案を作れ。
– 空白に関する仮定なし
– エラーチェック
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。

125124:2010/11/02(火) 23:12:59
配列による実現(エラーチェックなし)
#define max 100
static int stack[max+1], sp;
stackinit ()
{
sp = -1;
}
push (int v)
{
stack[++sp] = v;
}
int pop()
{
return stack[sp--];
}
int isempty ()
{
return (sp < 0);
}
126124:2010/11/02(火) 23:13:56
配列による実現(エラーチェックあり)
struct stack {
int*bd; /* stack body */
int pt; /* stack pointer */
int mx; /* stack body size */
char *id; /* stack identifier */
};
void error_id (char *frm, char *id)
{
fprintf(stderr, frm, id);
exit(1);
}
struct stack *newstack (int maxsize, char *name)
{
struct stack *s;
if ((s = (struct stack *)malloc(sizeof(struct stack))) == NULL)
error_id("malloc for %s\n", name);
if ((s->bd = (int *)malloc(maxsize * sizeof(int))) == NULL)
error_id("malloc for %s's body\n", name);
s->pt = -1;
s->mx = maxsize;
s->id = name;
return s;
}
127124:2010/11/02(火) 23:15:10
配列による実現(エラーチェックあり)その2
struct stack *push (int v, struct stack *s)
{
if (++(s->pt) >= s->mx)
error_id("%s overflows\n", s->id);
s->bd[s->pt] = v;
return s;
}
int pop (struct stack *s)
{
if (s->pt < 0)
error_id("empty %s is popped\n", s->id);
return s->bd[(s->pt)--];
}
int top (struct stack *s)
{
if (s->pt < 0)
error_id(“empty %s is referred\n”, s->id);
return s->bd[s->pt];
}
int isempty (struct stack *s)
{
return (s->pt < 0);
}
128デフォルトの名無しさん:2010/11/02(火) 23:15:46
>>123
やっぱり言うと思った
お前の事だよカス
129124:2010/11/02(火) 23:16:03
infix2postfixプログラム
char c;
for (stackinit(); scanf(“%1c”, &c) != EOF; ) {
if (c == ‘)’)
printf(“%1c”, (char) pop());
if (c == ‘+’)
push((int) c);
if (c == ‘*’)
push((int) c);
while (‘0’ <= c && c <= ‘9’) {
printf(“%1c”, c);
scanf(“%1c”, &c);
}
if (c != ‘(’)
printf(“ ”);
}
printf(“\n”);
仮定:
演算子,被演算子,括弧
は空白で区切られている。
130デフォルトの名無しさん:2010/11/02(火) 23:52:12
>>129
改善案を作れって具体的に何すりゃいいんだ?
131124:2010/11/02(火) 23:56:51
>>130
エラーをなくしたり、空白に関する仮定なしになるように作ってくだされば
大丈夫だと思います。
132デフォルトの名無しさん:2010/11/03(水) 00:00:22
>>131
それだと問題が「改善せよ」になるんじゃないか?
133124:2010/11/03(水) 00:15:36
>>132
そういうことになります
134124:2010/11/03(水) 00:37:02
誰か出来る人いないでしょうか・・・
135デフォルトの名無しさん:2010/11/03(水) 00:38:16
>>128 自己紹介乙
136デフォルトの名無しさん:2010/11/03(水) 00:42:51
>>96は都合が悪いから無視か、理解できてないのかどっちだろうな
137デフォルトの名無しさん:2010/11/03(水) 01:13:49
>>128
>>127を解いて
カスじゃないところを見せて
138デフォルトの名無しさん:2010/11/03(水) 01:18:52
>>124
じゃなくても良いけど
infix2postfixってstackを用いて何をするプログラム?
139デフォルトの名無しさん:2010/11/03(水) 01:21:03
>>138
関数名から読み取れないの?
140デフォルトの名無しさん:2010/11/03(水) 01:23:28
なんかあまりに美しくないコードすぎて読む気もしないんだが
>>129は「演算子,被演算子,括弧は空白で区切られているのを仮定してる」ので
これを空白で区切られてなくてもOKにしてエラーチェックすれば良いってこと?
141デフォルトの名無しさん:2010/11/03(水) 01:26:08
>>139
うん
142デフォルトの名無しさん:2010/11/03(水) 01:28:23
>>141
中置記法から逆ポーランド記法への変換関数。
143124:2010/11/03(水) 01:28:24
>>140
そうです。よろしくお願いします。
144デフォルトの名無しさん:2010/11/03(水) 01:34:03
>>142
私には理解不能の言葉がでて><ですが、どうもです。
145デフォルトの名無しさん:2010/11/03(水) 01:38:26
>>144
すごく簡単に言えば、「1 + 2」 → 「1 2 +」ってこと。
詳しくは wikipedia とかで勉強してください。
146124:2010/11/03(水) 02:09:11
期限が今日の12時までなので誰か分かる方がいたらよろしくお願いします。
147デフォルトの名無しさん:2010/11/03(水) 02:28:00
>>109
まぁそうだけど、malloc() のエラーなら強制終了しても問題ないじゃん
...というか、そこまで考えて書いてなかったよ
148デフォルトの名無しさん:2010/11/03(水) 02:44:13
>>124
まぁ諦めろ、後から小出しで情報を追加する態度も良くないし

>>125 がエラーチェックなしで >>126-127 がエラーチェックありだって?
両者の本質的な差はそんな事ではないよ
大方、手元にあったプリントかなんかを打ち込んで適当にコメント付けたんだろ

多分、講義の中で使った例題を基とした出題なんだろうと思う
どんな問題を出されたかも把握できない状態なら単位を落とした方が君の為だ
149デフォルトの名無しさん:2010/11/03(水) 03:55:21
一応、>>129 を動く様にはしてみた
ttp://codepad.org/TzddaDwI
けど、これで正しいのかも知らんし、改善されているかどうかも知らん
一ついえるのは >>129 はまともに動くコードでは無かったと言う事
参考ソースを寄せ集めた経緯を詳しく述べよ
150デフォルトの名無しさん:2010/11/03(水) 04:37:44
>>124
俺も問題がわかんね
とりあえず>>126-127を使って>>142をやった
標準入力から読み取る場合はgets()で
>>129は読んでない
質問の意味が違うならもう知らない、コードが汚いのも知らない

http://codepad.org/JCUfMZUF
151デフォルトの名無しさん:2010/11/03(水) 05:06:59
[1] 授業単元:プログラミング C++
[2] 問題文(含コード&リンク):
文章を標準入力ストリームから単語ごとに読み, その単語がはじめて単語であれば listに加え出現回数を1とする.
既に出現した単語ならリスト最後に単語をアルファベット順にソートし,出力するプログラムを作成せよ.
ただし以下の点に注意せよ:
文章の最初は大文字で始まるが(例えば"The"), これはすべて小文字(the)に変換せよ.
文章の最後や切目にはピリオド「.」やカンマ「,」がつくが, これは単語には加えない.
同様に単語さらに単語先頭と末尾のカッコ「(」「)」も単語には加えない.
先頭と末尾のシングルクォーテーションやダブルクォーテーション 「'」「"」も単語には加えない.
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:11月7日まで

よろしくおねがいします
152デフォルトの名無しさん:2010/11/03(水) 05:13:03
>>151
[5] その他の制限
を書いてください
153デフォルトの名無しさん:2010/11/03(水) 05:20:11
>>96,136
ご指摘ありがとうございます。
>>32
>>44
遅くなりましたが、訂正します。
http://codepad.org/tRy98pvU
154デフォルトの名無しさん:2010/11/03(水) 05:23:09
>>152
[5] その他の制限
特にないですけれども
今回の講義の内容はlist型と反復子(イテレータ, iterator)でした
155デフォルトの名無しさん:2010/11/03(水) 05:33:07
>>154
std::string使ってもいいの?
156デフォルトの名無しさん:2010/11/03(水) 05:39:14
>>155
はい問題文の条件を満たしていれば何であってもいいです
157デフォルトの名無しさん:2010/11/03(水) 05:42:53
それ以前に>>151の問題文は所々日本語がおかしすぎるw
もう少し落ち着いてこれで他人に通じるかどうか見直した方がいいんじゃないか?
158デフォルトの名無しさん:2010/11/03(水) 06:13:35
>>157
でもこれが原文なんですぅ
どこがおかしいですか?
159デフォルトの名無しさん:2010/11/03(水) 06:29:21
>>151
質問
1)最後にアルファベット順に出力とは
a 15
an 14
apple 4
be 17
みたいな感じかな?

2)can't みたいな単語はどうするの?「'」 が先頭や末尾ではないから有効な単語と考えると少し難しいね
160デフォルトの名無しさん:2010/11/03(水) 06:36:04
>>159
1)
はいそうです
2)
can'tで1つの単語としてください
161デフォルトの名無しさん:2010/11/03(水) 08:48:46
>>151
CとC++混在でアレなコードだけど一応動くと思う(細かいチェックはしてないからテストはした方が良い)
入力終了の条件が記されてないので、空行入力とEOFで終了する様に書いた
ttp://codepad.org/VYDVnsDs

std::list は初めて使ったから面白かったよ
162161:2010/11/03(水) 08:57:04
20行目間違ってるな
if( *s >= 'A' && *s <= 'Z' )
に直しとけ
163デフォルトの名無しさん:2010/11/03(水) 09:37:44
>>161-162
ありがとうございます
助かりました!
164デフォルトの名無しさん:2010/11/03(水) 10:45:04
>>163
テストしろよな、俺は大雑把なテストしかしてないから穴が有る可能性は高い
165デフォルトの名無しさん:2010/11/03(水) 14:48:19
まぁこんな場所でムキになっているあんた、C言語を何の為にやっているか
人生の目的なのか?金儲けの為なのか?授業で単位を取るだけなのか?
どちらにせよ、俺ら人間はどうせいつかは死ぬ生物だから
マターリいこうや?死ぬときの遺影とか墓のことも考えておけよ。
166デフォルトの名無しさん:2010/11/03(水) 14:51:28
誰と戦ってるの?
167デフォルトの名無しさん:2010/11/03(水) 15:48:09
過ぎ去り、二度と戻れない、そしていつか死ぬその日に向かって
生きられる時間が刻一刻と失われている、その時空と戦っているのさ。
しかし戦っても無駄。いつ自分が死ぬかなんて分からないが
必ずその日は来る。来たその後は自分はこの世に存在しない。
しかし、これからもC言語やコンピュータは人間の生活で使われていく。
168デフォルトの名無しさん:2010/11/03(水) 15:55:04
【質問テンプレ】
[1] 授業単元:プログラミング設計演習U
[2] 問題文(含コード&リンク):
0 から 9 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力して終了するプログラムを作成してください。
n 個の数はおのおの 0 から 9 までとし、1つの組み合わせに同じ数字は使えません。
たとえば、n が 3 で s が6 のとき、3 個の数字の合計が 6 になる組み合わせは、
1 + 2 + 3 = 6
0 + 1 + 5 = 6
0 + 2 + 4 = 6
の 3 通りとなります。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++2010
 [3.3] 言語: C++
[4] 期限: 2010/11/5 13:00
[5] その他の制限:
169デフォルトの名無しさん:2010/11/03(水) 16:41:02
>>151
・ listに加え出現回数を1 の意図不明。
・ 既に出現した単語ならリスト最後に単語を ...,出力する も意味不明。
素直に読むと index を idenx に変換してリストの最後に出力(付加する?) の意味に読み取れる。
170169:2010/11/03(水) 16:42:34
失礼、 deinx でした・・・
171デフォルトの名無しさん:2010/11/03(水) 17:15:53
>>168
面白い問題だね、力技で解いたけどもっとエレガントなやり方がありそうだ

ttp://codepad.org/glgVicE9
172デフォルトの名無しさん:2010/11/03(水) 17:27:26
[1] 授業単元: アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):
 typedef struct{char name[256]; unsigned char sex; unsigned char age;} PERSONAL_DATA
上記の構造体PERSONAL_DATA型の配列(要素数n)に格納された
n人の名前・性別・年齢のデータの中から同じ年齢の2人組の名前を全て表示せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland
 [3.3] 言語: C++
[4] 期限: ([2010年11月6日まで] または [無期限] のいずれか)
[5] その他の制限: 特に無し

自分でも考えてみたのですが、まず性別・年齢がunsigned char型の意味が、
そして年齢比較のアルゴリズムも、もう一つ構造体を定義して比較すれば良いのかが分かりません。
どうぞよろしくお願いします。
173デフォルトの名無しさん:2010/11/03(水) 17:40:24
>>172
0〜255の数字を表現するのには unsigned char で十分だから int の代わりに使ってるだけだよ
今時、メモリを節約する必要はあんまり無いから奇異に写るかもしれないけど昔は普通だった
FF7のパラメータ最大値が255なのはそんな理由だ

同じ年齢の二人組の意味が良くわからないな
同じ年齢のA、B、Cが居た場合、組み合わせ別に表示しろって事?
174デフォルトの名無しさん:2010/11/03(水) 17:40:27
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):リストを先頭から順に調べて和を求める
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: 2010年11月3日
[5] その他の制限: 特になし

考えてみたのですが、うまくできず困っています。
よろしくお願いします。
175デフォルトの名無しさん:2010/11/03(水) 17:52:31
>>172
>同じ年齢の2人組
のところをもう少し詳しく
そのデータの中には同じ年齢の人が2人しかいないの?
それとも例えば4人いたら6通りの2人組みが出来るわけだけどそれら全てを表示するの?
176デフォルトの名無しさん:2010/11/03(水) 18:34:04
>>174
リストってなんのリストだよ
データ構造ってことは線形リストの類だとは思うけどそっから作るのか
177デフォルトの名無しさん:2010/11/03(水) 18:46:05
>>173 >>175
早速の返信ありがとうございます。
unsigned charについては納得です。
同じ年齢の2人組について、出題プリントにはこれ以上書かれていませんが、
おそらくはnを各自に設定して、配列の要素をscanf等から取り込んだ後、
>>175さんの仰る通り、4人いたら重複しない6通りの2人組を画面に出力せよということだと思います。
178110:2010/11/03(水) 21:19:57
ありがとうございました。
無事できました。
179デフォルトの名無しさん:2010/11/03(水) 21:27:12
あとは、ここも見てみるといい
http://studiokingyo.fc2web.com/
180デフォルトの名無しさん:2010/11/03(水) 22:01:10
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文 ************を埋めて昇順にデータを保存する双方向リストを作成
#include<stdio.h>
#include<stdlib.h>
struct NODE{
int info;
struct NODE *left;
struct NODE *right; };
main(){
struct NODE *head,*p,*q,*r,*s; int data;
head=(struct NODE *)malloc(sizeof(struct NODE));
head->left=NULL; head->right=NULL;
while(1){
scanf("%d",&data); if(data<=0){break;}
r=(struct NODE *)malloc(sizeof(struct NODE));
r->info=data; r->left=NULL; r->right=NULL;
p=head->right; q=head;
while(p!=NULL){
if(p->info > r->info){
****************
}
*************
}
********* }
printf("双方向リスト(先頭から末尾へ):");
s=head->right;
while(s!=NULL){
printf("%d ",s->info); s=s->right;
} printf("\n");}
[3] 環境 Linux gcc 言語 C
また、よろしくお願いします。
181デフォルトの名無しさん:2010/11/03(水) 22:23:10
前から思ってたけどこの双方向リストのleftとrightって
中身を読まないとどっちが前から分からないセンスの無さがイラっとくる
先生に突っ込んであげた方がいいんじゃないの?
182デフォルトの名無しさん:2010/11/03(水) 22:25:59
左が前だろ
183デフォルトの名無しさん:2010/11/03(水) 22:27:57
>>181
「どっちが前から分からない」
あなたは日本語のセンスがないみたい。
184デフォルトの名無しさん:2010/11/03(水) 22:30:45
普通はprev/nextだな
left/rightとかかれると「んん?二分木か?」と思ってしまう
185デフォルトの名無しさん:2010/11/03(水) 22:48:42
日本人なら右が前ですよね
186デフォルトの名無しさん:2010/11/03(水) 22:59:24
左前って不吉だなw
187デフォルトの名無しさん:2010/11/03(水) 23:25:11
錠前は堅いです!
188 ◆QZaw55cn4c :2010/11/04(木) 00:24:22
189デフォルトの名無しさん:2010/11/04(木) 02:47:30
>>171
ありがとうございます
190デフォルトの名無しさん:2010/11/04(木) 03:00:51
>>171 C++じゃねぇ〜〜〜
191デフォルトの名無しさん:2010/11/04(木) 03:19:03
>>172
力技だけど世の中こんなもん、入力部分は自分で書いてね

ttp://codepad.org/jd2LGkHj
192デフォルトの名無しさん:2010/11/04(木) 03:21:31
>>176
線形リストの話です。すみません。説明不足で….
193デフォルトの名無しさん:2010/11/04(木) 03:30:10
>>176 の補足です。
線形リストで
ヒントで
int sum_list(Cell *p){
sum = 0;
while(p!=NULL){
データを足しこむ;
p = p->next;
}
合計を返す;
}

をもらいました。
194デフォルトの名無しさん:2010/11/04(木) 03:31:52
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
縦の長さがheight、横の長さがwidthのマス目で構成された盤面があります。
このマス目の中に適当に石を置きます。
この時、石を入れたマス目の中心の距離がちょうど2マス分だけ離れたマスに石を置くことはできません。
このルールに従うとき、この盤面に最大いくつの石を置くことができるでしょうか?
ただし、height、widthともに取れる値は1から1000とする。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2010年11月8日
[5] その他の制限: 特になし
195デフォルトの名無しさん:2010/11/04(木) 04:26:20
>>194
斜めの扱いは?
196デフォルトの名無しさん:2010/11/04(木) 04:31:37
[1] 授業単元:プログラミング(1)
[2] 問題文(含コード&リンク):
0000000000
0000000001
0000000010
0000000011
0000000100
~中略~
1111111110
1111111111
上記のように10進数の0~1023の数字を順に2進数で出力するプログラムを書け

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11/7 18時
[5] その他の制限:
特にありませんが現在if文やfor文を学んでいるというレベルなので
出来るだけ簡単な文で書いてもらえると有難いです。

197196 ◆WNoHkQXuFw :2010/11/04(木) 04:34:21
連投すみません

[1] 授業単元:プログラミング(1)
[2] 問題文(含コード&リンク):
1~1000までの整数のうち「3の倍数と3の付く数字」の
総和を求めるプログラムを書け

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11/7 18時
[5] その他の制限:
特にありませんが現在if文やfor文を学んでいるというレベルなので
出来るだけ簡単な文で書いてもらえると有難いです。
198デフォルトの名無しさん:2010/11/04(木) 04:37:46
>>196-197
関数って習ってる?
199196 ◆WNoHkQXuFw :2010/11/04(木) 05:00:06
>>198
ぐぐってみましたが多分やってないと思います
200デフォルトの名無しさん:2010/11/04(木) 05:03:23
>>199
じゃあこんなもんでどうよ
なんかみすってたら言って
http://codepad.org/UUyMah8d
http://codepad.org/XskS3kYx
201196 ◆WNoHkQXuFw :2010/11/04(木) 05:08:42
>>200
putcharだけ習っていませんがこれなら理解出来そうです
深夜なのに即レスありがとうございます!
202デフォルトの名無しさん:2010/11/04(木) 05:12:06
>>193
それヒントっちゅうより答えだろ、Cell の構造が示されてないから
typedef struct _cell { 
 int data; 
 struct _cell* next;
} Cell;
だと仮定すると

データを足しこむ→ sum += p->data;
合計を返す→ return sum;

だぉ
203デフォルトの名無しさん:2010/11/04(木) 05:15:47
>>196
#include <stdio.h>

int main(void)
{
int i;
char str[11] = {0};

for(i = 0; i < 10; i++) str[i] = '0';

do {
printf("%s\n", str);
for(i = 9; (str[i] = '1' + '0' - str[i]) == '0';) if(--i < 0) break;
}while(i >= 0);

return 0;
}
204デフォルトの名無しさん:2010/11/04(木) 05:18:15
ああ、今気づいたけどナベアツネタなのか
全然気づかんかんた
205デフォルトの名無しさん:2010/11/04(木) 05:47:08
>>203
ソレだと0からになるだろ
206デフォルトの名無しさん:2010/11/04(木) 05:49:12
>>205
0から始まってるのが見えない盲が何か言ってるよw
207デフォルトの名無しさん:2010/11/04(木) 05:58:41
>>206
ああ悪い;;
問題読まずに>>200だけ読んでたから間違えた
文句は>>200にいってくれ
208デフォルトの名無しさん:2010/11/04(木) 05:59:44
>>196
ちょっと短くしてみた
#include <stdio.h>

int main(void)
{
int i;
char str[11] = "0000000000";

while(1) {
printf("%s\n", str);
for(i = 9; (str[i] ^= 1) == '0'; ) if(--i < 0) return 0;
}}
209194:2010/11/04(木) 06:46:21
>>195
斜めは考慮にいれません。
あくまで縦方向、横方向のみ2マス離れた先に石が置けないルールです。
210デフォルトの名無しさん:2010/11/04(木) 06:56:03
○○  ○○
○○  ○○
  ○○
  ○○
○○  ○○
○○  ○○
って風に置いてくのか?
211194:2010/11/04(木) 07:01:28
>>210
その形が恐らく最大に石が置けるケースだと思います。
212デフォルトの名無しさん:2010/11/04(木) 07:02:23
>>204
それだと5の倍数でも何かしなければならないよ
213デフォルトの名無しさん:2010/11/04(木) 08:36:33
>>188
条件文などなしでもっとコンパクトに書けると言われました。
214デフォルトの名無しさん:2010/11/04(木) 09:05:11
本当にそれだけ言われたんなら先生節穴すぎだろwwww
215デフォルトの名無しさん:2010/11/04(木) 09:15:07
>>214
穴埋め問題で、埋めた箇所以外で指摘されるわけないだろ。
216デフォルトの名無しさん:2010/11/04(木) 09:23:42
>>214
2番目の穴埋めで、リストの後ろとだけ双方向に繋げて
3番目の穴埋めで、リストの前と双方向に繋げば、条件文はいらなくなるね。
217デフォルトの名無しさん:2010/11/04(木) 09:25:05
>>215
なに勘違いしてんだ?
結果がだめなんだがそれの指摘はいいんだろうかと
218デフォルトの名無しさん:2010/11/04(木) 10:06:07
[1] 授業単元:コンピュータプログラミング
[2] 問題文(含コード&リンク):
以下のアルゴリズムを使用しプログラムを作成せよ
<プログラム概要>
・256文字以内で文字列を入力させる
※半角文字のみで可。入力制御不要
・画面に入力された文字列を表示
文字列を前・後(中央折り返し)で反転
※シーゲンゴゴーゲンシ
※ジュギョウウョギュジ
・入力文字列と反転後の文字列を表示

<アルゴリズム>
@データ入力用と文字配列を宣言
A入力用と出力用の文字列を宣言
B文字列は文字列操作関数を使用
C出力用文字配列の先頭アドレスをポインタに設定
D最終文字一の中身を出力用文字配列の現在位置に代入
E以降、入力用は前方向、出力用は後方へポインタをずらす
F出力用配列の最終位置へ文字列終端子を代入
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VS
 [3.3] 言語: C
[4] 期限: 13:00まで

長文スイマセンお願いいたします
219デフォルトの名無しさん:2010/11/04(木) 10:20:23
ってことは、こことかどうかな
http://studiokingyo.fc2web.com/
有名な高度情報だゆ
220218:2010/11/04(木) 10:41:12
修正します

>『画面に〜文字列』を
文字数

>>219
誤爆ですか?
221デフォルトの名無しさん:2010/11/04(木) 10:43:40
>>217
ああ、すまん。結果が昇順じゃなくて降順になってるな。
他人のコードをコピペして実行するほど暇じゃなくて気づかなかったよ。
222デフォルトの名無しさん:2010/11/04(木) 10:44:45
>>213
***になってる近辺だけ書くとこうかな

p=head->right; q=head; 
while(p!=NULL){ 
  if(p->info > r->info){ 
    r->right = p; p->left = r; break; //***
  } 
  q = p; p = q->right; //*** 

q->right = r; r->left = q; //***
223デフォルトの名無しさん:2010/11/04(木) 10:46:46
>>194
計算でごり押し
正直前後の授業が分からないと質問の意図を測りかねる問題です
配列とかで地道にやれって問題なのかとも思ったけど

http://codepad.org/O5z9QABC
224デフォルトの名無しさん:2010/11/04(木) 10:50:31
>>202
ありがとうございます><
225デフォルトの名無しさん:2010/11/04(木) 10:53:49
>>218
駄目だ理解できねぇ、特にアルゴリズムが訳わかんね....

ABC[return] ←入力
3 ←文字数出力
ABCCBA ←入力と反転を出力

こんなイメージか?でも訳わかんねアルゴリズムに則って書くのは無理っぽいな
226218:2010/11/04(木) 10:56:42
>>225
画面は、多分それで合ってます
227デフォルトの名無しさん:2010/11/04(木) 11:09:53
>>225
文字数の出力って書いてあった?
228デフォルトの名無しさん:2010/11/04(木) 11:11:23
229デフォルトの名無しさん:2010/11/04(木) 11:20:13
>>218
なんか泥臭いけど
こういうことをやらせたいのかなぁ?

http://codepad.org/Tzyd48vG
230218:2010/11/04(木) 11:33:21
>>229
ありがとうございます

ただ、エラーが起きました
http://www.dotup.org/uploda/www.dotup.org1232135.png

でも、なんとなくイメージはわかりました
231デフォルトの名無しさん:2010/11/04(木) 11:34:36
>>230
てか、それって最後の}をコピペミスしただけじゃ・・・
232218:2010/11/04(木) 11:38:17
>>231
すいませんそうでした

ありがとうございました
これで、何とか提出用のソースはできたので
授業ギリギリまで、自力でどこまで出来るかやってみます

打ち切ります
233デフォルトの名無しさん:2010/11/04(木) 11:51:00
>>229
アルゴリズムの 4, 5 を満たしてない気がする。
出力用文字列の先頭が入力の最終文字だから、単に入力の反転だけ作るだけかな。
最後に、入力用の文字配列と出力用の文字配列を続けて出力。
234デフォルトの名無しさん:2010/11/04(木) 12:17:25
よく読めよ
235188:2010/11/04(木) 12:29:22
>>216
>>222
なるほど、うまいですね。
236デフォルトの名無しさん:2010/11/04(木) 18:02:19
C++の宿題なのですが、
さっぱり手が出なくて困ってます
どなたか手を貸していただけないでしょうか

キーボードから入力された正の整数xに対して、
2^n < x を満たす最も大きな整数nを求めるプログラムをwhile分を用いて書きなさい

というものなのですが…
237デフォルトの名無しさん:2010/11/04(木) 18:06:22
238デフォルトの名無しさん:2010/11/04(木) 18:08:05
>>236
すいません、テンプレでも書いておきます

[1] 授業単元:情報
[2] 問題文(含コード&リンク):キーボードから入力された正の整数xに対して、2^n < x を満たす最も大きな整数nを求めるプログラムをwhile分を用いて書きなさい
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Cygwin
 [3.3] 言語: C++
[4] 期限: 11/9
[5] その他の制限:特になし
239デフォルトの名無しさん:2010/11/04(木) 18:25:05
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):文字列の入出力をサブルーチンとして実行する
プログラムを作成せよ。ただし、文字列の入力は複数回行うことができ、
1回入力するたびに入力した文字列を標準出力へ出力すること。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:グローバル変数を使用しないこと。

連投しますが、よろしくお願いします。
240デフォルトの名無しさん:2010/11/04(木) 18:28:47
>>239
文字列入力の終了条件は?
241デフォルトの名無しさん:2010/11/04(木) 18:30:37
[1] 授業単元:プログラミング演習(テーマ:関数の使い方とデータの受け渡し方)
[2] 問題文(含コード&リンク):要素数が6つの配列を用意する。
その要素1,2に数値を代入し、配列の先頭アドレスを関数に渡し、
関数内で四則演算を行い、main関数内で結果を表示するプログラムを作成せよ。

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:グローバル変数を使用しないこと。
242デフォルトの名無しさん:2010/11/04(木) 18:32:12
[1] 授業単元:プログラミング演習(テーマ:関数の使い方とデータの受け渡し方)
[2] 問題文(含コード&リンク):文字列ポインタを戻り値とする関数を使用する
プログラムを作成せよ。その他の処理は各自実装すること。ただし、戻り値を
処理内容に含むこと。

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:グローバル変数を使用しないこと
243デフォルトの名無しさん:2010/11/04(木) 18:33:58
[1] 授業単元:プログラミング演習(テーマ:関数の使い方とデータの受け渡し方)
[2] 問題文(含コード&リンク):関数の再帰呼び出しを用いて、
入力した数値の階乗を求めるプログラムを作成せよ。
また、再帰呼び出しをしない場合のプログラムも作成せよ。



[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:グローバル変数を使用しないこと

以上、よろしくお願いします。
244デフォルトの名無しさん:2010/11/04(木) 18:35:22
[1] 授業単元:プログラミング演習B
[2] 問題文(含コード&リンク):二つのフォームを作成し、フォーム2で設定したパラメータを
フォーム1に反映させよ。
フォーム1にはこれまでやったOpenGLでのオブジェクトを描画し、フォーム2はフォーム1のオブジェクト色を変えるようにすること
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Borland C++Builder
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:OpenGLを使うこと
245デフォルトの名無しさん:2010/11/04(木) 18:36:10
>>241
#include <stdio.h>

int func(int* array)
{
  return 1+2;
}

int main(void){
  int array[6];
  array[1] = 10;
  array[2] = 20;

  printf("%d\n", func(array));
  return 0;
}
246デフォルトの名無しさん:2010/11/04(木) 18:38:46
>>242
#include <stdio.h>

char* func(void)
{
  return "fuck you!!";
}

int main(void){
  printf("%s\n", func());
  return 0;
}
247デフォルトの名無しさん:2010/11/04(木) 18:40:44
>>242
文字列ポインタってなに?
248デフォルトの名無しさん:2010/11/04(木) 18:42:45
>>243
#include <stdio.h>

int saiki(int num)
{
  if(num == 1){
    return 1;
  }
  else{
    return num * saiki(num-1);
  }
}

int no_saiki(int num)
{
  int result = 1;
  int i;
  for(i=0; i<num; i++){
    result *= (num-i);
  }
  return result;
}

int main(void){
  printf("%d, %d\n", saiki(5), no_saiki(5));
  return 0;
}
249デフォルトの名無しさん:2010/11/04(木) 18:43:29
>>244
「これまでやったOpenGLでのオブジェクト」ってのはどこだよ
250デフォルトの名無しさん:2010/11/04(木) 19:22:27
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):正の整数をキーボードから入力し、1からその整数までの和を計算し、出力するプログラムを組みなさい
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C++
[4] 期限:11/5

制約は特にないです
よろしくお願いします
251デフォルトの名無しさん:2010/11/04(木) 19:59:44
>>240
終了条件は各自工夫すること
となっています。
>>245 ,>>246 , >>248
ありがとうございます。
252 ◆QZaw55cn4c :2010/11/04(木) 20:38:30
253 ◆QZaw55cn4c :2010/11/04(木) 20:46:57
254デフォルトの名無しさん:2010/11/04(木) 20:55:26
もう我慢できなくなったのか
255デフォルトの名無しさん:2010/11/04(木) 21:16:09
[1]プログラミング演習
[2]真分数を入力して、小数点以下20桁までの小数を表示するプログラムを作成してください。
ただし、分子と分母をそれぞれ引数として、小数表示を実現する処理は浮動小数点演算を使用しない関数
void to_float(int a, int b)として実現すること。
実行例
分子:1
分母:7
0.14285714285714285714
[3]
 [3.1] windows
 [3.2] visualstdio2010
 [3.3] C言語
[4] 2010/11/7
[5] 関数までです。循環小数を使用しない方法が望ましいと言われました。
ただ、循環小数でもできるならそれでいいとのことです。お願いします。
256デフォルトの名無しさん:2010/11/04(木) 21:17:47
257デフォルトの名無しさん:2010/11/04(木) 21:41:18
>>255
#include <stdio.h>

int main(void){
  int bunsi, bunbo, counter;
  int flag_first_time = 1;
  printf("bunsi:"); scanf("%d", &bunsi);
  printf("bunbo:"); scanf("%d", &bunbo);

  while(1)
  {
    if(bunsi < bunbo){
      bunsi *= 10;
      printf("0");
      if(flag_first_time){
        flag_first_time = 0;
        printf(".");
      }
    }
    else{
      printf("%d", bunsi / bunbo);
      bunsi %= bunbo;
      bunsi *= 10;
    }
    if(20 < ++counter){
      break;
    }
  }
  return 0;
}
258デフォルトの名無しさん:2010/11/04(木) 21:54:12
>>255
あれ、一桁ずつ表示するんだったか・・・

http://codepad.org/8uPwSnCO
259デフォルトの名無しさん:2010/11/04(木) 21:57:54
>>239
お願いします

追加で
[1] 授業単元:プログラミング演習(テーマ:関数の使い方とデータの受け渡し方)
[2] 問題文(含コード&リンク):文字列ポインタを引数として渡し、
戻り値として文字列ポインタをセットする関数を使うプログラムを作成せよ。
その他処理は、各自で実装すること。ただし、戻り値を処理内容に含むこと。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/5
[5] その他の制限:グローバル変数を使用しないこと


こちらもお願いします。
260デフォルトの名無しさん:2010/11/04(木) 22:01:21
>>258
>[2]真分数を入力して
ってあるから、オーバースペックかも
261デフォルトの名無しさん:2010/11/04(木) 22:20:55
>>239
http://codepad.org/FQ5mMeZH
Ctrl+Zを入力で終了

入力・出力のワンセットでサブルーチンにするのか
ループするところまで含めてサブルーチンにするのかよく分からん
ふさわしいと思うほうで
262デフォルトの名無しさん:2010/11/04(木) 22:23:16
>>259
問題の意味がよく分からんな。
char* func(char* p) { return p; }
こんな関数を使うプログラムを作成してもOKなのかな。
263デフォルトの名無しさん:2010/11/04(木) 22:27:00
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
スタックを利用して、与えられたnに関するFarey数列の要素数を求めるプログラムを完成させよ。
#include <stdio.h>
#include <stdlib.h>
#define MAX 100000
main(){
int count,n,top,x[MAX],y[MAX],w;
scanf("%d",&n);
x[0]=0; y[0]=1;
x[1]=1; y[1]=1;
count=2;
top=2;
while(top>1){



}
printf("%dに関するFarey数の個数:%d\n",n,count);}
[3] 環境
 [3.1] OS:unix [3.2] コンパイラ名:gcc [3.3] 言語: C
264デフォルトの名無しさん:2010/11/04(木) 22:27:25
合計の関数あたりが無難じゃね?
265デフォルトの名無しさん:2010/11/04(木) 22:29:50
>>259
問題がイミフすぎる
適当だけど流れ的にこうなのだろうか?

http://codepad.org/hT4KjVao
266デフォルトの名無しさん:2010/11/04(木) 22:31:14
>>263
そのソースは問題文の一部なの?
それとも君が考えたもの?
問題文の一部ならそんな単位落としていい。
267デフォルトの名無しさん:2010/11/04(木) 22:38:05
>>263
要素数だけなら、単純にループ回しながら最大公約数見るだけで十分な気が
268デフォルトの名無しさん:2010/11/04(木) 23:05:22
[1] 授業単元:コンピュータ工学
[2] 問題文(含コード&リンク):
構造体配列のhairetu x[10]という名前の入れ物の
すべてに0と1を入れるプログラムを作成せよ。
ただし、ポインタの扱いで動作させるものとする。
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン:Visual Studio
 [3.3] 言語:C
[4] 期限:明日の午前中までです。
[5] その他の制限:ありませんが、できればソースコードは文字数が少なくて
シンプルなものを作っていただけるとありがたいです
269デフォルトの名無しさん:2010/11/04(木) 23:20:11
>>268
構造体の中身がどうなっててどこに0と1を入れるのか不明
勝手に構造体作っていいのか?
270デフォルトの名無しさん:2010/11/04(木) 23:25:24
構造体が配列なのか
配列のメンバを持つ構造体なのかよくわからんな
どっちにしても0と1をどう入れるんだって話だが
271デフォルトの名無しさん:2010/11/04(木) 23:26:33
>>268
>>269-270 そう思いますよね。
#include <stdio.h>
struct nakami
{
int zero;
int one;
} zero_one = { 0, 1};

struct nakami hairetsu[10];

int main()
{
int i;
for( i = 0; i != 10; i++ ){
*(hairetsu + i) = zero_one;
printf("%d: %d, %d\n", i , hairetsu[0].zero, hairetsu[0].one );
}
return 0;
}
272デフォルトの名無しさん:2010/11/04(木) 23:28:20
printf("%d: %d, %d\n", i , hairetsu[i].zero, hairetsu[i].one );
だorz
273デフォルトの名無しさん:2010/11/04(木) 23:29:55
>>255 >>258
御回答ありがとうございます。
>>255だとエラーになってしまいましたが>>258の方は完璧でした。
助かりました有難うございます。
274デフォルトの名無しさん:2010/11/05(金) 00:20:11
>>263
http://codepad.org/MnHEkj5k
並び替えとか無しで本当に数をカウントするだけ

変数名が変だとかもうちょっとマシな方法があるだろうとか
色々目をつぶって可能な限り元ソースを再利用
275デフォルトの名無しさん:2010/11/05(金) 01:56:01
>>266
空行の部分の穴埋め問題で、それで全文です。
提出はしないので単位には関係ありませんが、答えが気になったので。
276デフォルトの名無しさん:2010/11/05(金) 02:01:10
【Yahooニュース:尖閣ビデオ流出か ユーチューブに投稿 「恐らく本物」と海保関係者】
http://headlines.yahoo.co.jp/hl?a=20101105-00000512-san-soci

問題の動画です。
http://www.youtube.com/watch?v=JXkawnuyTn8
http://www.youtube.com/watch?v=bY0tgl6YLGI
http://www.youtube.com/watch?v=3eJsXP4HLVs
http://www.youtube.com/watch?v=gOUvdNjs_Cg
http://www.youtube.com/watch?v=q3JYT0G94-E
http://www.youtube.com/watch?v=A7h0S1nk9Hk

隠せなくするために早期拡散しましょう
277デフォルトの名無しさん:2010/11/05(金) 05:38:07
>>191
172です。mallocなんて関数があったんですね。
strcpyで逐次代入するより断然便利です。
どうもありがとうございました。
278デフォルトの名無しさん:2010/11/05(金) 06:43:04
>>263
こんな大きな配列を自動変数で取るように教えるってどうかなと思う。
大丈夫な環境でやってるんだろうけど。
279デフォルトの名無しさん:2010/11/05(金) 07:22:36
たったの80MBじゃん
まさかただの課題プログラムに対して可搬性とか言い出すのか
280デフォルトの名無しさん:2010/11/05(金) 07:26:38
そういうつまらない突込みをするのは◆QZaw55cn4cしかいない
281デフォルトの名無しさん:2010/11/05(金) 07:41:02
なんだこいつ
282デフォルトの名無しさん:2010/11/05(金) 08:05:05
麻ー呂っくを使うなんて、粋な計らいでおじゃる。
283191:2010/11/05(金) 08:42:19
>>277
ゴメン、何を言ってるのか全然わかんない (?_?)
アンカーが全て間違っている事を切に望む
284デフォルトの名無しさん:2010/11/05(金) 09:10:33
どなたか>>238をお願いします…
285デフォルトの名無しさん:2010/11/05(金) 09:25:13
>>238
#include <stdio.h>
int main(void) {
int x;
int n;
if (scanf("%d", &x) != 1 || x <= 0) {
printf("正の整数を入力してください\n");
return 0;
}
n = 0;
while (n < 31) {
if (x <= (1<<n)) {
printf("%d\n", n - 1);
return 0;
}
n++;
}
printf("%d\n", n - 1);
return 0;
}
286デフォルトの名無しさん:2010/11/05(金) 10:03:42
>>238
掛けずに割って見た
http://codepad.org/1EHR7tWc
287デフォルトの名無しさん:2010/11/05(金) 10:10:11
>>238
#include <stdio.h>

int main(void)
{
int i = 1, n = 0, x;

scanf("%d", &x);

while(1) {
i <<= 1;
if(i >= x) break;
n++;
}

printf("2^%d < %d\n", n, x);

return 0;
}
288デフォルトの名無しさん:2010/11/05(金) 12:06:38
while(1)をbreakしてるのみるとforでやれと思ってしまう
289デフォルトの名無しさん:2010/11/05(金) 12:10:56
n++の前でbreakすることに意味があるんだから、forにしてもなw
290デフォルトの名無しさん:2010/11/05(金) 12:23:06
whileでやるなら
breakする意味が無いだろお馬鹿さん

while((i<<=1)<x) {
n++;
}
291デフォルトの名無しさん:2010/11/05(金) 12:27:22
それなら最初からそう書いたら?
forとか言わないでw
292デフォルトの名無しさん:2010/11/05(金) 12:28:51
ぷぷぷ
293デフォルトの名無しさん:2010/11/05(金) 12:28:59
>>290
それは while のなかでいわば複文を書いているだけなのでは。
(i<<=1) のように短ければいいものの、この部分が長大なものになると、for(初期化;;) { 前処理; if()break; 後処理 } とかくのが自然な場合が多いものです。
294デフォルトの名無しさん:2010/11/05(金) 12:30:50
forを使って書き換えたのマダー
295デフォルトの名無しさん:2010/11/05(金) 12:30:59
だからそう言ってるじゃん
296デフォルトの名無しさん:2010/11/05(金) 12:33:58
条件処理部とインクリメントを空白にするなら、forである必要もないと思うが
297デフォルトの名無しさん:2010/11/05(金) 12:35:16
単に気持ちも問題でしょ
俺も個人的にwhileは終了条件を指定するものであって
無限ループに使うのはなんか条件判定が一個増えてるような気がして気持ち悪い
感情論なんで人それぞれだとは思うが
298デフォルトの名無しさん:2010/11/05(金) 12:39:02
>>296
while (1) { }
とすると警告してくるコンパイラがありまして
299デフォルトの名無しさん:2010/11/05(金) 12:39:17
っていうか問題の指定がwhileになってるだけなのになw
300デフォルトの名無しさん:2010/11/05(金) 12:42:51
「whileを使って」という指定であるなら
なおさら途中でbreakしないといけないような書き方は避けるべきとも受け取れるが…
whileの使い方を勉強させるための宿題なんでしょ?
301デフォルトの名無しさん:2010/11/05(金) 12:43:50
while(1)程度でそんなに熱くなるなよw
302デフォルトの名無しさん:2010/11/05(金) 13:07:45
試しにforで書いてみた
breakどころか中身もなくなった

for ( i=1,n=-1 ; i<x ; i<<=1,n++ );
303デフォルトの名無しさん:2010/11/05(金) 13:16:54
while(1)の方が分かりやすい
304デフォルトの名無しさん:2010/11/05(金) 13:41:58
どっちにしても小さい間だけループを回せばいいのに
大きくなった段階で抜けると実装するのはセンス無いってことか
305デフォルトの名無しさん:2010/11/05(金) 13:44:47
そんな話は誰もしてないw
306デフォルトの名無しさん:2010/11/05(金) 13:53:51
語尾にwつけて必死な人が一人いますね
307デフォルトの名無しさん:2010/11/05(金) 13:56:58
wつけてる人間を一人だと妄想して必死認定したい人がいますね
308デフォルトの名無しさん:2010/11/05(金) 14:05:39
>>304
意味不明。あなたの言うセンスのあるループの実装ってどんなのよ。
309デフォルトの名無しさん:2010/11/05(金) 14:19:47
いいから問題解けよ
310デフォルトの名無しさん:2010/11/05(金) 16:58:49
>>306 wwwwwwwwwwww
311デフォルトの名無しさん:2010/11/05(金) 17:15:21
>>278
800KBか
一般的な環境におけるデフォルトスタックサイズは1M程度だからセーフでは有るな
とはいえスタックに積むのは数KB程度と教えるほうが望ましいからヒープに逃がすべき
static って付けるだけで良いのにな
312デフォルトの名無しさん:2010/11/05(金) 20:57:06
スタックに配列をおくのはどうか。
プログラムの失敗でバッファオーバーランを引き起こすと、いとも簡単にコード情報を壊してしまうし、セキュリティホールになったりする。
68アーキテクチャのようにシステムスタックとユーザースタックが別であればよかったのだが。
313デフォルトの名無しさん:2010/11/05(金) 21:13:18
[1] 授業単元:自然言語処理
[2] 問題文(含コード&リンク):
曖昧性のないLR 表を利用して、ファイルに記述された「1
桁の数、+、*、(、)で構成される数式」を計算するプログラムを作成せよ。数式は1 行ず
つファイルに記述されているとする。
問題文↓
ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/rep2.pdf
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:12/3
[5] その他の制限:
資料
ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/nlp05.pdf
の5〜15ページ。
またよろしければよろしくお願いします。
変数の役割や処理内容なども解説してくださると有り難いです。
314デフォルトの名無しさん:2010/11/05(金) 22:40:44
>>312
範囲チェックしないプログラマの方がおかしいだろ。
315デフォルトの名無しさん:2010/11/06(土) 02:20:55
>>314
strcpy(), strcat(), etc
316デフォルトの名無しさん:2010/11/06(土) 12:36:13
>>315
天下のMS舐めんなよ

strcpy_s(), strcat_s()
317デフォルトの名無しさん:2010/11/06(土) 13:25:33
C1Xにも入る予定だしな
318デフォルトの名無しさん:2010/11/06(土) 13:45:59

「ご利用は計画的に」がC言語だと思ってたよ
319デフォルトの名無しさん:2010/11/06(土) 14:57:01
フェイルセーフは java や C# に任せれば良いと思う
プログラマの不注意で暴走するのがC/C++の醍醐味だと思うんだが
320デフォルトの名無しさん:2010/11/06(土) 15:36:07
暴走は慣れてくると快感にすら感じてくる
321デフォルトの名無しさん:2010/11/06(土) 18:07:17
>>315
そんな関数使うときは、バッファオーバーフローしないと確認した後じゃなきゃダメだろ。
確認できないときに文字数指定付き関数を使えない奴はプログラム書くな。
322デフォルトの名無しさん:2010/11/06(土) 18:44:04
だろ。
323デフォルトの名無しさん:2010/11/06(土) 23:02:06
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  解析木をprefixに変換するプログラムを書き実行せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。



324デフォルトの名無しさん:2010/11/06(土) 23:03:20
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  解析木をinfixに変換するプログラムを書き実行せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。

325デフォルトの名無しさん:2010/11/06(土) 23:05:47
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
再帰版と非再帰版のフィボナッチ数計算プログラムを作れ。  
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。

326デフォルトの名無しさん:2010/11/06(土) 23:08:01
[4] 期限:11月3日
1年あるじゃないか、時間あるから自分でヤレ
327デフォルトの名無しさん:2010/11/06(土) 23:15:02
わらた
328デフォルトの名無しさん:2010/11/06(土) 23:27:41
>>326
間違えました。
11月10日でした。
329デフォルトの名無しさん:2010/11/07(日) 00:30:43
>>313
か〜なり待ってくださいね。でも期限内には仕上げます。
昔血道をあげた分野だったりするのですが、もうすっかり忘れてしまいました。今最初の参考書を読み直しているところです。
http://www.amazon.co.jp/dp/4627805500/
330 ◆QZaw55cn4c :2010/11/07(日) 00:53:57
331デフォルトの名無しさん:2010/11/07(日) 01:10:39
>>325
#include <stdio.h>

int f1(int n, int a, int b)
{
return n ? f1(n - 1, b, a + b) : a;
}

int f2(int n)
{
int a = 0, b = 1;

while(n--) {
a += b;
b = a - b;
}

return a;
}

int main(void)
{
int n;

scanf("%d", &n);

printf("%d %d\n", f1(n, 0, 1), f2(n));

return 0;
}
332デフォルトの名無しさん:2010/11/07(日) 07:28:29
ここでオーダー厨登場

どいつもこいつも計算量が大きすぎる
O(logn)だろ
333デフォルトの名無しさん:2010/11/07(日) 09:26:15
>>332
Ο
334デフォルトの名無しさん:2010/11/07(日) 10:48:19
>>332
オーダー厨って適当な事しかいわない奴の事なの?
335デフォルトの名無しさん:2010/11/07(日) 15:56:51
オーダオーダ(そうだそうだ)
336デフォルトの名無しさん:2010/11/07(日) 16:19:10
フィボナッチ数なんて 32bit の範囲だと 50個も無いし
64bit の範囲でも 100個もないんだからテーブルにしておけば O(1) ですむ
337デフォルトの名無しさん:2010/11/07(日) 16:30:51
単純な加算なんだしbitに拘ることもない。
338デフォルトの名無しさん:2010/11/07(日) 16:39:10
「再帰使うとシンプルに書ける場合もある」ということを伝えるための授業なんだからオーダーなんて気にするな
まぁ、大抵の学生は
「ふーん、なんか便利そう。でも、結局どんな時に使うの?」
ってな感じで理解にまではいたらないんだけどなw
339デフォルトの名無しさん:2010/11/07(日) 16:46:08
再帰使ったTMPでテーブル生成すればいいな
340デフォルトの名無しさん:2010/11/07(日) 16:48:49
[1] 授業単元:C言語

[2] 問題文:以下の課題では、main関数を求めるなど、動作が可能なプログラムにして提出すること。
(1)3つのint型関数の最小値を返す関数を作成しなさい。
プロトタイプは次のようになる。int min3(int x, int y, int z);
キーボードから値を 3つ入力し、これらの関数に引数で値を渡す。関数で処理した結果を表示すること。
(2)2つの整数の和を求める関数及び差を求める関数を作成しなさい。
  プロトタイプは次のようになる。
int sum(int x, int y);
int diff(int x, int y);

  キーボードから値を2つ入力し、これらの関数に引数で値を渡す。関数で処理した結果を表すこと。

[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月8日

よろしくお願いします
341デフォルトの名無しさん:2010/11/07(日) 17:43:34
だからね、完全数とカレンダー算出の課題こいやー
342デフォルトの名無しさん:2010/11/07(日) 18:35:17
>>340 でなくて良いけど
>(1)3つのint型関数の最小値を返す関数を作成しなさい
int型関数ってint型を返す関数と思う?
そうすると、3つの関数があり、それらはint返す。で作るのはそれらの返り値の最小値を返す関数
int min3(int x, int y, int z); ってこと?
>キーボードから値を 3つ入力し、これらの関数に引数で値を渡す。
int min3(int x, int y, int z)については引数のこと言うことないから、
これらの関数は3つのint型関数ことを言っているのかな?
3つint型関数って何をする関数なんだろ? 創造力養うために、自分で適当に
値(int double...なんか)を受け取って何かして、そしてintを返す関数を作れってことかな?

今の学生って頭良いね。僕があまり理解できない文でも何を言っているのか理解できるんだね
343デフォルトの名無しさん:2010/11/07(日) 18:36:42
つまんない突っ込み
344デフォルトの名無しさん:2010/11/07(日) 18:39:57
>>343
問題分るなら>>340解答してあげなさいな
345 ◆QZaw55cn4c :2010/11/07(日) 19:03:25
>>340
http://codepad.org/luyIFIwo
http://codepad.org/y3OXX2B9
>>342 の指摘のとおり問題文が変です。妥当な線でコードを書きました問題があるようであれば返事をください。
346デフォルトの名無しさん:2010/11/07(日) 19:07:34
347デフォルトの名無しさん:2010/11/07(日) 19:07:49
>>341
『main関数を求めるなど』にも突っ込んだ方が良いな

多分、黒板に書かれた問題を写し間違ったんだとは思うけど、『3つのint型関数』と『これらの関数に』が
文章として変に整合性が取れてるから悩むよな
348341:2010/11/07(日) 19:10:11
>>347 いや、俺関係ねーし
349デフォルトの名無しさん:2010/11/07(日) 19:17:18
>>345
キーボードから値を入力してって書いてあるやん
350デフォルトの名無しさん:2010/11/07(日) 19:38:10
>>349 mainを自分で適当に書き換えれば良いだけ。
351デフォルトの名無しさん:2010/11/07(日) 19:45:22
他人の問題と関係ない部分のエラーチェックや型チェックの省略に対しては
鬼の首をとったかのような突っ込みをいれるのに、自分が言われるとコテを外してこの言い草とは…
他人に厳しく自分には甘く!ですね
352デフォルトの名無しさん:2010/11/07(日) 19:56:15
普段の行いが悪いから許容の範囲内かと思われる事までつっこまれちゃうんだなw
353デフォルトの名無しさん:2010/11/07(日) 20:34:08
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  解析木をprefixに変換するプログラムを書き実行せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月3日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。
354デフォルトの名無しさん:2010/11/07(日) 20:36:07
355デフォルトの名無しさん:2010/11/07(日) 21:22:53
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  解析木をprefixに変換するプログラムを書き実行せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月10日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。
356347:2010/11/07(日) 22:01:22
>>348
ゴメン、アンカーミスった >>342 だった
357デフォルトの名無しさん:2010/11/07(日) 22:11:42
>>355
ツリー構造で表現された数式を prefix, infix, postfix の表記に変換せよって問題なのか?
すこし漠然としすぎるな
せめて、基本となるツリー構造を成す構造体くらいは示さないと回答は得られないと思うよ
358デフォルトの名無しさん:2010/11/07(日) 22:18:30
[1] 授業単元:C言語
[2] 問題文(含コード&リンク)
 5人でじゃんけんをした時に引き分けになる確率を、
 モンテカルロ法を用いて求めよ。
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月11日
[5] その他の制限:乱数には stdlib.h のrand()>>3を使用せよ。
359355:2010/11/07(日) 22:19:40
>>357
postfixから解析木にへんかんするプログラムならありました
struct t2node {
int data;
struct t2node *left;
struct t2node *right;
};
struct t2node *postfix2tree ()
{
struct stack *s = newstack(SSIZE, SNAME) ;
struct t2node *n;
int c;
while ((c = getchar()) != EOF) {
n = (struct t2node *)malloc(size of *n);
n->data = c;
if (c == ‘+’ || c == ‘*’ || c == ‘-’ || c == ‘/’) {
n->right = pop(s);
n->left = pop(s);
} else {
n->left = n->right = NULL;
}
push(n, s);
}
return pop(s);
}
360デフォルトの名無しさん:2010/11/07(日) 22:30:07
>>358
#include<stdio.h>
#include<stdlib.h>

#define TRY_COUNT 100000
#define N 5

int main(void)
{
int aiko_count=0;
int i, j;

for(i=0;i<TRY_COUNT;i++)
{
int each_count[3]={0};
int zero_count=0;
for(j=0;j<N;j++)
{
each_count[rand()%3]++;
}
for(j=0;j<3;j++)
{
if(each_count[j]==0) zero_count++;
}
if(zero_count!=1) aiko_count++;
}
printf("%d/%d = %.2f%%\n", aiko_count, TRY_COUNT, aiko_count*100.0/TRY_COUNT);
return 0;
}
361デフォルトの名無しさん:2010/11/07(日) 23:03:11
>>359
数字は一桁に限定してるんだね
そのサンプルの手法で postfix 表記の数式からツリー構造(struct t2node の結合データ)を生成し、
生成されたツリー構造から prefix, infix 表記の文字列を作成しろって事か
() 付きで良いなら prefix は難しくないと思うけど infix は難しいな
362デフォルトの名無しさん:2010/11/07(日) 23:07:58
>>361
よろしくお願いします。
363デフォルトの名無しさん:2010/11/07(日) 23:31:18
>>359
追加の質問
struct stack, newstack(), pop(), push() のコードが提示されてないけど、これらは勝手にでっち上げて良いの?
pop() の戻り値、および push() の引数 n がキャストされていない事を考えると struct stack は t2node* 専用の
スタッカーと考えて良さそうだ(よって SSIZE はスタック上限と考える、SNAME は無視)
でっち上げるのは簡単だけど、授業の流れから派生した出題であるならば提示されたコードを流用しないと
マズイのではないのか?

そもそも、このコードは授業で提示されたコードなのか?
struct stack* s は newstack() 内で確保された領域であると考えられるのだが、このコードでは開放されていない
先に書いたように数字は1桁に限定されているから t2node の data は char で十分だ
また、空白等が入力された場合の考慮もなされていない
明らかに問題が多いこの様なコードを提示する講師が居るとも思えないのだが
364デフォルトの名無しさん:2010/11/07(日) 23:39:46
>>359
本当にそれは動くコードの一部から持ってきたのだろうか。
sizeof の間にスペースあったらダメでしょ。

>>361
何か勘違いか、思い違いしてると思う。
prefix にカッコは全く要らないよ。
解析木を深さ優先で訪れた順に出力するだけ。
infix も省略可能な余計なカッコがあっても良いならすごく簡単。
演算子を訪れたときに開きカッコ、演算子から返るときに閉じカッコ、
left が NULL か left 側から戻ってきたときにノードの値を出力、の3つだけで良いはず。

>>363
細かいけど、「開放」じゃなくて「解放」ね。
365デフォルトの名無しさん:2010/11/07(日) 23:43:04
>>364
動くかはわかりませんが、授業で例としてだされたコードです
366デフォルトの名無しさん:2010/11/07(日) 23:48:05
これはひどい
367デフォルトの名無しさん:2010/11/07(日) 23:52:10
なにがひどいんだ?
368デフォルトの名無しさん:2010/11/07(日) 23:53:09
stack関係ってどうせ>>129だろ?
質問者は>>124と同じってことでいいのか?
369デフォルトの名無しさん:2010/11/08(月) 00:05:59
>>364
prefix って()を全部無くしても問題無いんだっけ?
いやさっき始めて前置演算式というモノを知った俺が『だっけ』はおかしいな
infix も確かにそんなに難しくは無いな右へ末端まで追ってから左枝をたどる感じで再帰するだけだな

>>368
そうか、どっかで見た様な関数名だと思った、じゃあ後出し小僧か、俺はオリようかな
370デフォルトの名無しさん:2010/11/08(月) 00:18:18
>>369
大抵の人は、数式と同じように解析木の左が前になるようにノードを使用するから、
辿り方が左、右の順になると思う。まぁ、実装する人の自由だけど。
371デフォルトの名無しさん:2010/11/08(月) 00:21:05
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
キーボードから入力した1桁の整数の値に応じて、下記のswitch文と同等の動作をする処理を、if文を用いて作成しなさい。2つ処理の実行結果を確認しなしさい。
*実行結果は色々な入力値(switch文のcaseラベルで記述した値)を網羅して確認すること。

/* if文のとswitch文の動作を確認するプログラム */

#include<stdio.h>

int main(void){
   
  int sw; 
    printf("整数を入力してください:"); 

    scanf("%d", &sw);
    printf("switch文を使用した判定結果\n");
  
  switch (sw) {
    
    case 1 : puts("A"); puts("B"); break; 
  
    case 2 : puts("C"); 
    
    case 5 : puts("D"); break; 
  
    case 6 : 
    
  case 7 : puts("E"); break; 
    
    default : puts("F"); break;  

   }  
  
  

  printf("if文を使用した判定結果\n");
  
@ここにif文を使用した判定処理を入れる
    
  
   return(0);

}
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月9日
[5] その他の制限: なし
よろしくお願いします。
372デフォルトの名無しさん:2010/11/08(月) 00:26:26
>>370
間違っただけだよ、細かいなぁ
373デフォルトの名無しさん:2010/11/08(月) 00:29:27
>>371
else if を使ったコードは親の遺言で書くのを禁じられている
374デフォルトの名無しさん:2010/11/08(月) 00:30:15
>>367
出題者側の丸投げ具合がひどい、最低限の確認くらいしないんだなーって思った。
375デフォルトの名無しさん:2010/11/08(月) 00:38:58
>細かいけど、「開放」じゃなくて「解放」ね。

こういうつまらない突込みをするのは◆QZaw55cn4c
だから嫌われてるって気付かないのかな
376デフォルトの名無しさん:2010/11/08(月) 00:42:06
↓に「俺は嫌いじゃないぜ?」と本人がレスをつける
377デフォルトの名無しさん:2010/11/08(月) 00:43:31
>>375
悪いけど人違い。
誤字が誤解を生むことも多々あるから、できる限り気をつけた方が良いよ。
378デフォルトの名無しさん:2010/11/08(月) 00:49:14
379デフォルトの名無しさん:2010/11/08(月) 00:55:30
>>371
指定の通りif文で書きました。同じ動作になるか確認してない
if( sw == 1 ) {puts("A"); puts("B");}
if( sw == 2 ) {puts("C"); sw = 5;}
if( sw == 5 ) puts("D");
if( sw == 6 ) sw == 7;
if( sw == 7) puts("E");
if( sw < 1 || sw == 3 || sw == 4 || sw > 7 ) puts("F");
380デフォルトの名無しさん:2010/11/08(月) 00:56:08
>>373
else if 使わないでも実装できるけど、何でコード晒さないの?
381デフォルトの名無しさん:2010/11/08(月) 01:02:02
>>380
ヒントを与えれば自分で書けるんじゃないかと思ったから
382デフォルトの名無しさん:2010/11/08(月) 01:07:35
>>381
そんなヒントかどうかわからない文章を見てプログラムが書けるレベルの人なら、
ここで質問はしないだろう。
383デフォルトの名無しさん:2010/11/08(月) 01:07:37
少しでも自分で考えようという意思があったらこんなとこに丸投げしない
384デフォルトの名無しさん:2010/11/08(月) 01:10:37
>>379の、
if( sw == 6 ) sw == 7; は
if( sw == 6 ) sw = 7;
です。
ごめんなさい
385デフォルトの名無しさん:2010/11/08(月) 01:14:38
>>384
sw の書き換えなんかしないで、
3行目を if (sw == 2 || sw == 5)
4~5行目を if (sw == 6 || sw == 7)
と書けば間違えなかったのに。
386デフォルトの名無しさん:2010/11/08(月) 01:26:42
誰か355できないでしょうか?
387デフォルトの名無しさん:2010/11/08(月) 01:34:15
>>386
もし必須なら今年度この授業の単位を取ることはあきらめて、選択なら切りなさい。
あなたの理解度と質問の仕方では、解答者は多分現れないよ。
388デフォルトの名無しさん:2010/11/08(月) 01:57:56
>>363
授業で提示されたコードを使わなくても作れればOKだそうです。
389デフォルトの名無しさん:2010/11/08(月) 01:58:24
>>355
回答者に対するレスも無いからな
問題投げて回答のチェックもろくにしてないんじゃあるまいか
どんだけ怠けもんなんだか
390363:2010/11/08(月) 02:19:28
>>388
小出し小僧に回答する気は無い、>>363 は忘れてくれ
391デフォルトの名無しさん:2010/11/08(月) 03:10:54
関数A内で変数Bが一定以上の数値であるかどうかを判断(変数にはfor文で次々と値が代入されていく)し、以上なら1、以下なら0が結果として帰ってくるようにした後
main関数内で何番目の変数Aが1で何番目の変数Aが0だったかをcsvにひたすら書き込むプログラムを組んでもらえませんか?
392デフォルトの名無しさん:2010/11/08(月) 03:25:59
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  解析木をprefixに変換するプログラムを書き実行せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月10日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。
          次の構造を使用すること
          struct t2node {
          int data;
          struct t2node *left;
          struct t2node *right;
          };
          オペランドは一文字
          スタックの値のタイプを変更
          int → struct t2node *

393デフォルトの名無しさん:2010/11/08(月) 03:26:16
394デフォルトの名無しさん:2010/11/08(月) 03:37:26
>>391

#include <stdio.h>
#include <stdlib.h>

#define SUUTI 50

int func_a(int b) {
  if(SUUTI < b){ return 1; }
  else{ return 0; }
}

int main(void){
  int i;
  char cmd[100];
  for(i=0; i<10; i++){
    sprintf(cmd, "echo %d banme no hensu ha %d >> csv", i, func_a(rand()%100));
    system(cmd);
  }
  return 0;
}
395デフォルトの名無しさん:2010/11/08(月) 03:41:45
ひたすらって書いてあるんだから無限ループで回してやればいいのに優しいな!
396 ◆QZaw55cn4c :2010/11/08(月) 03:52:22
>>345
訂正します。
http://codepad.org/fwGb4YQ5

>>349
ご指摘感謝。
397デフォルトの名無しさん:2010/11/08(月) 04:24:00
あいかわらず問題まともに読めないんだな
脳のどっかに障害でもあんじゃねーのw
398デフォルトの名無しさん:2010/11/08(月) 04:42:29
長文粘着と同一視されてよほど根にもっているんですね。お気の毒なことです。
399デフォルトの名無しさん:2010/11/08(月) 05:12:03
その仮想敵を妄想するのが長文とそっくりなんだよw
400デフォルトの名無しさん:2010/11/08(月) 05:24:57
ご指摘感謝と言いつつなぜ(2)だけを修正して(1)はそのままなのか理解できないw
401デフォルトの名無しさん:2010/11/08(月) 05:27:23
長文が誰かも特定できていないのに、見えない敵と戦う気持ち悪い奴が
2ちゃんねるには増えましたね。他の板でも誰のことを言っているのか
分からないくらい身に覚えの無い言い掛かりをされることがありますが・・・
402デフォルトの名無しさん:2010/11/08(月) 05:31:29
>>398みたいな見えない敵と戦う気持ち悪い奴ってまじで困るよな
403デフォルトの名無しさん:2010/11/08(月) 05:51:33
久々にここを見たら、ここもおかしくなってたし。一匹頭のおかしなのが
別のことで口論になった時、getcharがどうとか言い出して
こっちは何のことかさっぱり、身に覚えがなかったし。あれは気持ち悪かった。
404デフォルトの名無しさん:2010/11/08(月) 05:55:20
お前が一体何と戦ってるのかわからない
405デフォルトの名無しさん:2010/11/08(月) 16:34:53
別に自分が戦っていなくても、相手が自分を別の人と勘違いして
見えない敵と戦っているだけだが・・・身に覚えが無くて無視していると
逃げたとか言い出すし。本当にキモイ、被害妄想で生きている奴って。
406デフォルトの名無しさん:2010/11/08(月) 16:38:13
◆QZaw55cn4cはほんとにキモイなぁ
407デフォルトの名無しさん:2010/11/08(月) 16:46:12
とりあえず、◆QZaw55cn4cが問題を読むのが不自由なのは事実だしなあ
408デフォルトの名無しさん:2010/11/08(月) 17:07:12
俺が仮想敵だ
409デフォルトの名無しさん:2010/11/08(月) 17:43:31
>>408
ビシッ       / ̄ ̄ ̄ ̄\
    / ̄\.(  人____)
   ,┤    ト|ミ/  ー◎-◎-)  int main() (笑)
  | \_/  ヽ    (_ _) )  if((c=getchar()) == EOF) { }
  |  __( ̄ |∴ノ  3 ノ    return は省略可
  |  ___)_ノ ヽ     ノ
  ヽ__) ノ    ))   ヽ
410デフォルトの名無しさん:2010/11/08(月) 18:22:37
人気に嫉妬ってやつか
411デフォルトの名無しさん:2010/11/08(月) 18:27:32
#include <stdio.h>
int main() 笑
412 ◆QZaw55cn4c :2010/11/08(月) 19:13:08
>>340
あらためて、訂正いたします。
http://codepad.org/kwXt7HDB
http://codepad.org/rtVx8e2n

>>349, >>400
ご指摘感謝いたします。
413デフォルトの名無しさん:2010/11/08(月) 19:15:44
>>409,411
ISO/IEC 9899:1999 5.1.2.2.1 の "or equivalent" という文言に ISO/IEC 9899:1999 の 6.7.5.3 14 を適用すれば、
int main() { ... }
が C99 に準拠していることがわかります。
414デフォルトの名無しさん:2010/11/08(月) 19:18:58
>>409
ISO/IEC 9899:1999 の 5.1.2.2.3.1 によれば、
reaching the } that terminates the
main function returns a value of 0.
とあり、return は省略可能と考えてもいいと思います。
415デフォルトの名無しさん:2010/11/08(月) 19:20:22
C99は規格として認められていませんので。
416デフォルトの名無しさん:2010/11/08(月) 19:33:34
「中国人が海上保安官を銛でついた」
政治家、ジャーナリストの発言まとめ


20101024 新報道2001
石原都知事「海に落ちた海保職員を中国人が銛で突いた」(2:35〜)
http://www.youtube.com/watch?v=ib-GUTzngp0&feature=related

20101107 たかじんのそこまで言って委員会
惠 隆之介「海に落ちたのを銛で突いた」(00:30〜)
http://www.youtube.com/watch?v=mEIb9Oe3BpA

20101108 ワイドスクランブル
佐々淳之 「中国人は海保隊員を海に突き落とし、
一生懸命泳いでるのを銛で突き、船で乗り上げて沈めようとした」(0:10〜)
http://www.youtube.com/watch?v=OV2YUnGHPqs


417デフォルトの名無しさん:2010/11/08(月) 20:41:42
>>392
態度の悪い君に回答を与えるのは気が引けるが、問題として面白かったので書いてみた
ttp://codepad.org/4YbhUO8b

postfix の数式を入力すると prefix, infix 形式で出力する
入力として有効なのは数字と+*/-のみ、数字は一桁毎に一つの要素として認識する
postfix の書式が誤っている場合、領域確保に失敗した場合、数式が入力されなかった場合に終了する

いろんな式を入力するのが面倒なので
ttp://www.cs.man.ac.uk/~pjj/cs212/fix.html
このページに有る Examples のみ確認した
418358:2010/11/08(月) 20:59:41
>>360
どうもです
419デフォルトの名無しさん:2010/11/08(月) 22:13:20
#include <stdio.h>
int main(void)
{
double a, b, c; char d;
printf("数字 演算子 数字 のように入力して下さい。 \n");
printf("例 12.4 * 4.0 \n");
scanf("%lf %c %lf", &a, &d, &b);

/*判定文により、加算、減算、乗算、除算を判定して計算。*/

printf("答えは, %lf です。 \n", c);
}

未完成な部分をどなたかやっていただけないでしょうか
420デフォルトの名無しさん:2010/11/08(月) 22:28:22
[1] 授業単元:
[2] 問題文(含コード&リンク):アンプを(pic16f84aを用いた)赤外線リモコンで制御するためのプログラム
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: sdccとgputils(どちらもXP対応)
 [3.3] 言語: C
[4] 期限:2010年11月10日
http://shino.pos.to/eda/remocon2.htmlに参考プログラムがあるのですが,エラーがでて上手くコンパイルできません。
どなたかわかる方がいらっしゃれば教えていただきたいと思います。
421デフォルトの名無しさん:2010/11/08(月) 22:39:49
>>420
君が求める情報はここにある。
http://www.hyuki.com/writing/techask.html
422デフォルトの名無しさん:2010/11/08(月) 23:13:22
>>413
gcc は main() と main(void) とを明確に区別しているみたいね。
http://codepad.org/VkFGfIse
http://codepad.org/ceeCh56u
423デフォルトの名無しさん:2010/11/08(月) 23:16:29
何懐かしいAA貼ってんだよ、俺にもやらせろw

ビシッ       / ̄ ̄ ̄ ̄\   ←ISO準拠、標準スタイルが理解出来ない時代遅れの島国根性ジャポネーゼ
    / ̄\.(  人____)
   ,┤    ト|ミ/  ー◎-◎-)  int main() (笑)
  | \_/  ヽ    (_ _) )  if((c=getchar()) == EOF) { }
  |  __( ̄ |∴ノ  3 ノ    return は省略可
  |  ___)_ノ ヽ     ノ
  ヽ__) ノ    ))   ヽ
424デフォルトの名無しさん:2010/11/08(月) 23:18:05
>>419
次からは>>1みてテンプレ通りに依頼しよう
http://codepad.org/luBc66Ht

ifとswitchのどっちで判定するのか分からなかったから
一応両方書いたので授業でやったのと近いほうだけ残してね
425デフォルトの名無しさん:2010/11/08(月) 23:18:42
>>414
あんたまた墓穴掘ったなw
ISOを参考にしたらって、CとC++で別に存在するんだが???
C++に関してはコンパイラで確認もしたがreturnの省略は可能で
エラーも警告もなかったが、Cでやればどうなる?
CもC++でいけるから区別しないって言うなら、C言語限定に限らないんで
その話は通用しないよ。あとint mainに関してもプログラムの開始をmain関数にすると
前提条件もあり、引数についてもvoid または2つのパラメーターについて明記されているから。
426デフォルトの名無しさん:2010/11/08(月) 23:20:15
断っておくがあくまでも「ISO準拠の標準スタイル」についてであって
そうでなくても通用するかしないかについては言及していないし
独自の環境であればそれに限らずとも補足したのにいつまでもしつけぇんだよ!
427デフォルトの名無しさん:2010/11/08(月) 23:28:34
ISO準拠とかトリッキーな技は必要ねーんだよ
出題のレベルと意図を汲んで丁寧に書いてやればいいのに
それが分かってない◆QZaw55cn4cが多すぎる
428デフォルトの名無しさん:2010/11/08(月) 23:28:42
標準C 標準C99 §5.1.2.2.1 Program startup
標準C++ §3.6.1 Main function
ttp://www.bohyoh.com/CandCPP/FAQ/FAQ00042.html

>>414 キモッ。そろそろ見えない敵と戦っている自分が
周りから変な目で見られていると自覚して下さいね。
429デフォルトの名無しさん:2010/11/08(月) 23:32:13
#include <stdio.h>
int main(void) {
// return 0;
}
--------------------------
#include <iostream>
int main() {
// return 0;
}
--------------------------

retunr 0; をコメントアウトしてあるが、//ありと無しでこれらをコンパイルすれば
コンパイラが出す警告を見れば分かる。それでもコンパイルが通ったからだの
C++では省略可能だからと言って、int mainのintを無視するような解釈とか
するからおかしくなる。コンパイラが自動的に処理している部分もあるんで
使用している環境によっては気づかない人がいるんだろうけど、そういう人は
適切なコードが書けているとは思えない。
430デフォルトの名無しさん:2010/11/08(月) 23:40:49
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  解析木をprefixに変換するプログラムを書き実行せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月10日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。
          次の構造を使用すること
          struct t2node {
          int data;
          struct t2node *left;
          struct t2node *right;
          };
          オペランドは一文字
          スタックの値のタイプを変更
          int → struct t2node *



431デフォルトの名無しさん:2010/11/08(月) 23:48:20
しねばいいのに
432デフォルトの名無しさん:2010/11/08(月) 23:49:01
そろそろ新しいネタで頼む
433デフォルトの名無しさん:2010/11/08(月) 23:57:19
>>427
>トリッキーな技
別にトリッキーでもないけど?
434417:2010/11/09(火) 00:24:27
>>430
だから書いてやったよ
#include <stdio.h> から始めたければ、ソースの先頭に追加すれば良い
struct t2node は data が int な為、この問題には適さない( data は char であるべきだ)
これも使いたければ、構造体定義を適当な位置に追加し、main() で無意味に変数定義を行えば良い
435デフォルトの名無しさん:2010/11/09(火) 00:40:05
>>434
どうもありがとうございます
436434:2010/11/09(火) 00:59:59
>>435
お前馬鹿だろ
437デフォルトの名無しさん:2010/11/09(火) 01:22:43
>>436
何故??
438デフォルトの名無しさん:2010/11/09(火) 01:50:21
>>437
馬鹿の1礼儀を知らない
単に見落としていたなら >>435 でその非礼を詫びるべき
見た上で条件(#include <stdio.h> で始まる等)を満たしていないと判断していたならアンカーを付けて、
その諭旨を伝えるべきで、問題を張り重ねるべきではない

馬鹿の2題意を理解していない
通常、<stdio.h> から始めると指定されているならC言語で書く事が条件となるし、struct t2node を
使用する事が条件なら無意味に定義しただけでは駄目
つまり、>>434 に書かれている様な対応では問題が有る

まぁ馬鹿の2に関してはここに来てる以上は仕方ないけど、馬鹿の1はコミュニケーション能力の問題
人と接する礼儀も知らずプログラミング能力も無いならプログラマとしては全く役に立たないよ
早いうちに進路を見直すことをお勧めする
439デフォルトの名無しさん:2010/11/09(火) 01:59:16
いやよ、年収1千万円程度の貧乏人だから、お前らみたいに優れた
プログラミングは出来ないけど、PCならそれなりの環境を整えているから
俺に金儲けになるプログラムを作ってくれYO!
440デフォルトの名無しさん:2010/11/09(火) 02:00:21
>>438
あんた、悪いことは言わん。変な奴は相手にしない方が良い。
長文のあんたの方が精神的に問題があるようにしか思われないぞ?
441デフォルトの名無しさん:2010/11/09(火) 02:27:22
進路がどうとか言うけど、最初は成績が悪く、実力が無かった人が
イチローみたいにメジャーで活躍するくらいにまで成長する可能性はある。稀だがw
まあどうせいつかは死ぬ人間だし、とんとんで良いんじゃない?
極めたつもりになっている奴は危険。例え平均以下でも、何か
他人には無い優れた能力があれば、それを利用して金儲けした方がマシ。
C言語が出来なくても生きていけますよ?それよりもまともに活動できる
身体こそまさに自分にとって一番の資本、財産。健康を害してからでは遅いよ。
頑張れば健康を悪化させる前の様に元気になる訳でもなく、ただでさえ経年劣化で
年を取れば能力が劣っていくというのに。

長年世話になった、一緒に仕事をしてきた人が末期がんになっちまった。
自分もいつか、何かしら病気か、運良く寿命まで生きられるか知らんが
こんな場所でガミガミしている人生が楽しいかい?
442デフォルトの名無しさん:2010/11/09(火) 02:35:24
>>440
もう相手にする気は無いよ、あれが最後だ
>>417 をそのまま提出して講師にどんな突っ込みを入れられるは知りたいが、それ以外の興味は無い
443デフォルトの名無しさん:2010/11/09(火) 02:41:46
>>441
ポカーーーン
444デフォルトの名無しさん:2010/11/09(火) 03:07:29
いつもの長文粘着君じゃねーかw
445デフォルトの名無しさん:2010/11/09(火) 04:16:58
>>444 違うよ
446デフォルトの名無しさん:2010/11/09(火) 05:26:16
え?だって誰もが一生は一度きりでしょ?明日死ぬかも知れない人生で
いつまでも単なる自己満足で、金にもならない知識の使い方をし続ける訳?
自分一人がこの世に存在していなくても、困る人は身内や接していた人の中には
いるかもしれないが、世の大半の人間から見たらちっぽけな存在だから
社会全体から見たら大して困らないよ。そういう自覚ありますか?
例え総理になった人でも、歴史に名の残る人物だろうと、所詮は1人の人間ですよ。
447デフォルトの名無しさん:2010/11/09(火) 05:27:53
チラシの裏にでも書いてろよ、このゴミがw
448デフォルトの名無しさん:2010/11/09(火) 07:01:53
>>446
何処への誤爆?
449デフォルトの名無しさん:2010/11/09(火) 07:36:50
[1] 授業単元:cプログラミング
[2] 問題文(含コード&リンク):
キーボードから数字(2〜9)を入力し、入力された数字を辺の長さとする正方形
を表示する。なお、入力が間違っている場合、再度入力を要求する。
↓こんな感じ
実行結果例

数字(2〜9)を入力してください:0
入力エラーです!!
数字(2〜9)を入力してください:3
 * * * 
 
 *   *
 
 * * *

[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:11月11日
[5] その他の制限:whileを使って。
450デフォルトの名無しさん:2010/11/09(火) 08:31:33
>>425
典拠を示してください。コンパイラの振る舞いはコンパイラ実装者の考えであり、ISO/IEC 9899:1999 や ISO/IEC:14882:2003 の中にそれを示す箇所がありますか?
451デフォルトの名無しさん:2010/11/09(火) 08:32:23
>>428
原典でどうぞ。 ISO/IEC 9899:1999 からしめしてください。JIS でもいいです。
452デフォルトの名無しさん:2010/11/09(火) 08:40:43
>>449
#include <stdio.h>

int main(void)
{
int i, j, n;

while(1) {
printf("数字(2〜9)を入力してください:");
scanf("%d", &n);
if(2 <= n && n <= 9) break;
printf("入力エラーです!!\n");
}

for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) printf("%c ", i == 1 || j == 1 || i == n || j == n ? '*' : ' ');
printf("\n\n");
}

return 0;
}
453218:2010/11/09(火) 12:21:54
すいません、再提出になったので
再度質問します

途中までやったのですが、
反転と最終文字列にNULLを入れる方法がわかりません

誰か教えてください
お願いします

http://codepad.org/Si7Uicah
454デフォルトの名無しさん:2010/11/09(火) 13:21:07
>>453
http://codepad.org/LDkz8urR

一部コメントも修正
終端文字はCではNULLとNULL文字(\0)を明確に区別するので
\0としましたが先生がNULLと言い張るようなら直して下さい
455デフォルトの名無しさん:2010/11/09(火) 13:25:39
>>453
問題が変わってるな
>>218 の時は ABC -> ABCCBA の問題と認識してたんだよね
でも実は ABC -> CBA の問題だったから再提出になったんじゃね?
そんで >>229 の *out = *in で ABC を代入してる部分を外せばOKって考えたんじゃね?

マルチしないで少しくらいは自分で考えなよ、>>229 が優しければ教えてくれるよ

456デフォルトの名無しさん:2010/11/09(火) 13:45:20
単純に反転でいいのか?
457455:2010/11/09(火) 13:50:25
>>456
あくまで俺の推測だから >>453 の弁を待ちなよ
458デフォルトの名無しさん:2010/11/09(火) 13:53:42
(1)
in :ABC
out:CBA

(2)
in :ABC
out:ABCCBA

(3)中央折り返しってこうとも受け取れる
in :ABCDEF
out:ABCFED


実は(1)で
printf ( "%s", in ) ;
printf ( "%s\n", out ) ;
としてるから一見(2)に見える表示になるとも予測できる

さぁ、どれだ?
459デフォルトの名無しさん:2010/11/09(火) 14:01:39
こうだろ
in: ABCDE
out: BACED
460デフォルトの名無しさん:2010/11/09(火) 15:12:37
[1] 授業単元: コンピュータ基礎
[2] 問題文(含コード&リンク):
3行3列の実数行列aijとbijの積を計算するプログラムを作成せよ。
ただし、乗算結果の行列をcijとして計算を行うものとする。
行列の要素への入力は、代入文あるいは初期化子を用いること。
[3] 環境
 [3.1] OS: Windows 7
 [3.2] コンパイラ名 gcc
 [3.3] 言語: C
[4] 期限: 本日17時まで
急ぎで申し訳ありませんがよろしくお願いします。
461デフォルトの名無しさん:2010/11/09(火) 15:29:09
#include <stdio.h>

int main(void){
  int aij[3][3] = { {1,1,1}, {1,1,1}, {1,1,1}, };
  int bij[3][3] = { {1,2,3}, {4,5,6}, {7,8,9}, };
  int cij[3][3];

  int i,j;

  for(j=0; j<3; j++){
    for(i=0; i<3; i++){
      cij[j][i] = aij[j][0]*bij[0][i] +
            aij[j][1]*bij[1][i] +
            aij[j][2]*bij[2][i];
    }
  }

  printf("===result===\n");
  for(i=0; i<3; i++){
    for(j=0; j<3; j++){
      printf("%d ", cij[i][j]);
    }
    puts("");
  }
  return 0;
}
462デフォルトの名無しさん:2010/11/09(火) 16:09:00
実数だった。反省はしないし修正もしない。
463デフォルトの名無しさん:2010/11/09(火) 17:10:33
>>452 ありがとうございます><
464デフォルトの名無しさん:2010/11/09(火) 18:05:14
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
以下のような動作をするプログラムを作成せよ。
・main()関数の引数を用いて整数値xを与える。
・fgetsを用いて、標準入力(キーボード)から英単語と英文字cを与える。
・英単語のx番目以降の文字をcに変える関数を作って使用する。
・変更された英単語と整数値を使って文字列"変更された後の英単語_整数値"を作る
・puts()またはfputs()を用いて出力
実行例:./a.out 5 キーボード入力:information p 実行結果(表示):infoppppppp_5
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年11月11日まで
465デフォルトの名無しさん:2010/11/09(火) 18:08:11
>>464の問題を下のように解いたのですが
実行結果がinfo_5となります。
どこを修正すればよいのか教えてください。

#include<stdio.h>
#include<stdlib.h>
#define MAXSTR 30

void change_str(char *s1, char c, int x)
{
int i;
for(i=x-1; s1[i]='\0'; i++){
s1[i] = '!';
}
}
int main(int argc, char *argv[])
{
char str_a[MAXSTR];
char str_b[MAXSTR];
char str_c[MAXSTR];
char moji;
int n = atoi(argv[1]);
puts("英単語と英文字を入力してください");
fgets(str_a, MAXSTR, stdin);
sscanf(str_a, "%s%c", str_b, moji);
change_str(str_b, moji, n);
sprintf(str_c, "%s_%d",str_b,n);
fputs(str_c,stdout);
printf("\n");

return 0;
}
466デフォルトの名無しさん:2010/11/09(火) 18:28:59
467デフォルトの名無しさん:2010/11/09(火) 18:47:23
俺は嘘は1つも言ってないぜ?一度、重病に罹って病気になる前の
健全な体に戻るとでも?例え著しく悪化させただけで、薬や手術で
一時的に悪化が食い止められても、それ以上は良くならない。
人間の肉体もこうしている間に経年劣化で衰え続けているというのに。
成人するまでの成長なんて、平均寿命の約80年の間の1/4に過ぎない
生まれた時は何も知らない、出来ない所から何か出来るようになるまでの
未熟な時期に過ぎない。その何かが出来るようになったら
さっさと金儲けの為に、得た知識や知恵を使わないと、老化して
時代遅れになって使い物にならなくなったら、存するのは自分だよ。
自分の肉体が一番の資本、財産。
468デフォルトの名無しさん:2010/11/09(火) 18:49:18
>>429
申し訳ありませんが、個々のコンパイラの事情はともかく、
ISO/IEC 9899:1999 の 5.1.2.2.3.1 には
reaching the } that terminates the
main function returns a value of 0.
とはっきりかいてあり、また、
ISO/IEC 9899:1999 の 6.7.5.3.14 には、
An identifier list declares only the identifiers of the parameters of the function. An empty
list in a function declarator that is part of a definition of that function specifies that the
function has no parameters. The empty list in a function declarator that is not part of a
definition of that function specifies that no information about the number or types of the
parameters is supplied.124)
とかいてあります。
実存するコンパイラにはそのコンパイラなりの事情があるとおもいますので、規格にそってお話しできないものでしょうか?
469デフォルトの名無しさん:2010/11/09(火) 18:59:26
>>422
みたいですね。gcc には gcc の事情があるのでしょうね。でも、
ISO/IEC 9899:1999 6.7.5.3 14 には、
An empty list in a function declarator that is part of a definition of that function specifies that the
function has no parameters.
とありますから、C99 的には func() と func(void) は関数定義の一部であるかぎり同一ですね。

でもね、もともとは、
int main(void) とかかずに int main() とかくと「ISO に従っていない」という人がいるので、「int main() もC99に準拠しているよ」と主張しているわけです。
C89 ならばなんの問題もなく int main() は C89 に準拠しているわけです。

int main() と int main(void) とに違いがあれば、int main() はC89に準拠した書き方ですし、
int main() と int main(void とに違いがなければ、ISO/IEC 9899:1999 5.1.2.2.1 の "or equivalent" という文言にしたがって、C99 に準拠していることになります。
この辺の論理に追いついていない人がまだまだいるみたいですね。
470デフォルトの名無しさん:2010/11/09(火) 18:59:41
規格うんぬんは後付理由で
「ちょっとうっかり忘れちゃいましたw」って認めちゃいなよ
471デフォルトの名無しさん:2010/11/09(火) 19:03:11
これがツン期ってやつか
472デフォルトの名無しさん:2010/11/09(火) 19:11:06
>>468-469
規格とかじゃなく、このスレでは宿題の指定環境でエラー、警告でないが重要
VC2005でC言語と指定されているのに、サポートしていないC99の規格ではあーだこーだと言ってもしょうがない
規格の話したければ、このスレじゃなくC言語スレで汁
473デフォルトの名無しさん:2010/11/09(火) 19:17:07
>>468
さすがにお前には日本語も英語も、事情を把握する頭もないわw
黙っとけ、自分の方が理解力がないと思われますよ?
474デフォルトの名無しさん:2010/11/09(火) 19:19:16
>>468-469
相手が言ってもいないことを言った、そう思ったとか妄想して反論するから悪い。
お前の方が標準スタイルという意味を全く理解していない。
そもそも、コンパイラにまで話が及ぶと、環境の話にまでもつれ込むんでやめとけ。
あくまでもISO、ANSI準拠の標準スタイルでは、独自の環境はそれに限らずと
補足してあるのも見落としているよ。
475デフォルトの名無しさん:2010/11/09(火) 19:27:53
>>468-469 もう止めようぜ。長文でうざいよ。あんたの解釈の仕方が不適切。
476デフォルトの名無しさん:2010/11/09(火) 19:56:00
>>466
ありがとうございます。
477デフォルトの名無しさん:2010/11/09(火) 20:44:35
※C99は正式な規格ではありません。
478デフォルトの名無しさん:2010/11/09(火) 20:48:14
>>475
これくらいの分量で長文とは、ゆとり脳もいいところですな。
479デフォルトの名無しさん:2010/11/09(火) 20:51:08
>>478
すぐに「ゆとり」という言葉で片付けようとするのが典型的な思考停止人間ですな。
こんなことしてるよりちゃんと小学校行ったほうがよいですな。
480デフォルトの名無しさん:2010/11/09(火) 21:17:08
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 配列の中の値をランダムで選択し、表示。また、ランダムでも、大きな値の方が選択されやすくして表示。配列の値={2,2,4,5,5,8,9,10,2,3}
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: :cygwin
[3.3] 言語: C
[4] 期限:2010年11月09日24:00まで
[5] その他の制限:なし


なんか何言ってるかわかりづらいと思いますが、よろしくお願いいたします。
481デフォルトの名無しさん:2010/11/09(火) 21:41:47
>>480
本当に何いってるか分からない
http://codepad.org/A6OTdl1l
482デフォルトの名無しさん:2010/11/09(火) 21:58:16
#include <stdio.h>
#define SIZE 10
int main(int argc, char* argv[]){
  int i, max=0, ransu1, ransu2;
  int array[SIZE] = { 2,2,4,5,5,8,9,10,2,3}; int count[SIZE] = {0};
  for(i=0; i<SIZE; i++){
    if(max < array[i]){ max = array[i]; }
  }
  for(i=0; i<100000; i++){
    do{
      ransu1 = rand() % SIZE;
      ransu2 = rand() % max;
    }while(array[ransu1] < ransu2);
    count[ransu1]++;
  }
  printf("=== result ===\n");
  for(i=0; i<SIZE; i++){ printf("array[%d] was %d times selected\n", i, count[i]); }
  return 0;
}
$ ./a.exe
=== result ===
array[0] was 5074 times selected
array[1] was 5051 times selected
array[2] was 8391 times selected
array[3] was 10081 times selected
array[4] was 10138 times selected
array[5] was 15477 times selected
array[6] was 16865 times selected
array[7] was 17056 times selected
array[8] was 5105 times selected
array[9] was 6762 times selected
483デフォルトの名無しさん:2010/11/09(火) 22:00:46
>>420
昨日書き込みした420ですが,リンク先に行けばわかるのでしょうか?
484デフォルトの名無しさん:2010/11/09(火) 22:03:06
>>481ありがとうございます!

助かりました(;_;)



大きい値が選択されやすい、というプログラムがつくりたかったかんじです。

485デフォルトの名無しさん:2010/11/09(火) 22:54:45
do{} whileの条件は<=だったかな…
486デフォルトの名無しさん:2010/11/10(水) 00:04:08
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define NITEM(arr) (sizeof(arr)/sizeof(arr[0]))

int main(void){
int value[]={2,2,4,5,5,8,9,10,2,3};
int weight[NITEM(value)], weight_sum;
int i, j, r;

srand(time(NULL));

weight_sum=0;
for(i=0;i<NITEM(value);i++) weight_sum+=(weight[i]=value[i]+0);

for(j=0;j<100;j++){
r=rand()%weight_sum;
for(i=0;i<NITEM(value);i++){
if(r<weight[i]) break;
r-=weight[i];
}
printf("%d\n", value[i]);
}

return 0;
}
487デフォルトの名無しさん:2010/11/10(水) 01:09:37
>>425
>CとC++で別に存在するんだが???

Cの場合(ISO/IEC 9899:1999 5.1.2.2.3 1)は >>414 で示したとおり return なしでも return 0 と同じとありますし、
C++ の場合は、ISO/IEC 14882:2003 3.6.1.5 で、

A return statement in main has the effect of leaving the main function (destroying any objects with automatic
storage duration) and calling exit with the return value as the argument. If control reaches the end
of main without encountering a return statement, the effect is that of executing

とあり、return なしで main() を抜けるのは exit() を呼ぶのと同じ、とあります。
C でも C++ でも main() で return を省略した場合の振る舞いが規定されている以上、main() での return は省略可能と考えて問題ないでしょう。

>C++に関してはコンパイラで確認もしたがreturnの省略は可能で
>エラーも警告もなかったが、

どこぞのコンパイラがエラーや警告を吐くとか吐かないとかで判断するのは間違ってやしませんか?


488デフォルトの名無しさん:2010/11/10(水) 01:14:36
>>432
「float 使う奴は馬鹿」
by ISO/IEC 9899:1999 6.5.2.2.6
はどうですかね。
489デフォルトの名無しさん:2010/11/10(水) 02:12:02
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11月13日
[5] その他の制限:#include<stdio.h>  int main() breakを使う

円周率 π の値を近似式

π ≈ 4Σ(−1)^n[{(1/2)^2n+1} +{(1/3)^2n+1}]/( 2 n + 1 ) を用いて小数第8位まで正しい値(3.14159265)を出力し,(Σはn=0。100まで)


その π の値を用いて入力された数値 ε に対して,次の不等式を満た
す最小の自然数 N を求めるプログラムを作れ.


|{π^2}/6-Σ(k=1.N)1/k^2|<ε



できる方がいたらやり方を教えてください。
490デフォルトの名無しさん:2010/11/10(水) 02:51:13
マルチポストすみません。後からこのスレを発見したもので。。
491デフォルトの名無しさん:2010/11/10(水) 02:56:03
#include <stdio.h>
#include <math.h>

int main()
{
int i, k, n = 0;
double e, p = 0, f;
printf( "e :" );
scanf( "%lf", &e );
for( i=0; i<=100; ++i )
p += 4 * pow( -1.0, i ) * ( pow( 1.0 / 2.0, 2 * i + 1 ) + pow( 1.0 / 3.0, 2 * i + 1 ) ) / ( 2 * i + 1 );
do {
++n;
f = p * p / 6.0;
for( k=1; k<=n; ++k )
f -= 1.0 / ( k * k );
} while( !( fabs( f ) < e ) );
printf( "N = %d\n", n );
return 0;
}
492デフォルトの名無しさん:2010/11/10(水) 03:18:56
πの表示とbreak使用が無くね?
493491訂正:2010/11/10(水) 03:39:03
>>492
thx

#include <stdio.h>
#include <math.h>

int main()
{
int i, k, n = 0;
double e, p = 0, f;

printf( "e :" );
scanf( "%lf", &e );

for( i=0; i<=100; ++i )
p += 4 * pow( -1.0, i ) * ( pow( 1.0 / 2.0, 2 * i + 1 ) + pow( 1.0 / 3.0, 2 * i + 1 ) ) / ( 2 * i + 1 );
printf( "pi = %.8f\n", p );

while( 1 ) {
++n;
f = p * p / 6.0;
for( k=1; k<=n; ++k )
f -= 1.0 / ( k * k );
if( fabs( f ) < e )
break;
}
printf( "N = %d\n", n );

return 0;
}
494デフォルトの名無しさん:2010/11/10(水) 03:44:48
489に追加です。すみません。

表示は以下のようにする.
Input the volume of error: 0.000001【Enter】
Pi is 3.14159265.

the smallest integer N is ␣␣␣␣.

配列,数学関数は使ってはいけない.
495デフォルトの名無しさん:2010/11/10(水) 03:47:10
後出ししね
496493修正:2010/11/10(水) 05:27:53
#include <stdio.h>
#define ABS( x ) (((x)<0)?-(x):(x))
double dnpow( double x, int n )
{ return n > 0 ? x * dnpow( x, n - 1 ) : 1.0; }
double af( double p, int n )
{
int k;
double f = p * p / 6.0;
for( k=1; k<=n; ++k )
f -= 1.0 / ( (double)k * k );
return ABS( f );
}
int find_n( double p, double e, int n_min, int n_max )
{
int n_mid = ( n_min + n_max ) / 2;
return n_min + 1 == n_max ? n_max : af( p, n_mid ) < e ? find_n( p, e, n_min, n_mid ) : find_n( p, e, n_mid, n_max );
}
int main()
{
int i, n = 1;
double e, p = 0;
printf( "Input the volume of error: " );
scanf( "%lf", &e );
for( i=0; i<=100; ++i )
p += 4.0 * dnpow( -1.0, i ) * ( dnpow( 1.0 / 2.0, 2 * i + 1 ) + dnpow( 1.0 / 3.0, 2 * i + 1 ) ) / ( 2 * i + 1 );
printf( "Pi is %.8f.\n\n", p );
for( n=1; ; n*=2 ) if( af( p, n ) < e ) break;
n = n == 1 ? n : find_n( p, e, n / 2, n );
printf( "the smallest integer N is %d.\n", n );
return 0;
}
497デフォルトの名無しさん:2010/11/10(水) 08:05:09
<<496
http://codepad.org/AhRSeykS

で試したらtimeoutになってしまいました。。。


なぜでしょう?
498デフォルトの名無しさん:2010/11/10(水) 09:18:52
499デフォルトの名無しさん:2010/11/10(水) 09:58:03
codepadでscanf()すりゃそうなるだろ
500デフォルトの名無しさん:2010/11/10(水) 10:07:42
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
143 から3224 までの自然数n のうち、
13 で割ると余りが6 の倍数になる自然数の個数とその総和を求めよ

[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 特にありません
[5] その他の制限:
for,if文をやった程度なので出来るだけ簡単な文でお願いします。
501デフォルトの名無しさん:2010/11/10(水) 10:10:16
連投すいません
後1問あります

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
60 から7352 の自然数n のうち、9 または14 または19 の倍数に該当する自然数の総和を求めよ

[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 特にありません
[5] その他の制限:
for,if文をやった程度なので出来るだけ簡単な文でお願いします。
502デフォルトの名無しさん:2010/11/10(水) 10:11:34
最後です
よろしくお願いします。

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
素数の総和の計算 2+3+5+…+n+… のとき、総和が初めて9129 以上になる素数nを求めよ

[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 特にありません
[5] その他の制限:
for,if文をやった程度なので出来るだけ簡単な文でお願いします。
503484:2010/11/10(水) 10:36:10
いつの間にか回答が複数も!
ありがとうございました!
504デフォルトの名無しさん:2010/11/10(水) 10:37:06
>>500
#include <stdio.h>
int main()
{
int i, count = 0, sum = 0;
for (i = 143; i <= 3224; i++) {
if (i % 13 == 6) {
count++;
sum += i;
}
}
printf("count=%d, sum=%d\n", count, sum);
return 0;
}
505デフォルトの名無しさん:2010/11/10(水) 10:39:15
>>501
#include <stdio.h>
int main()
{
int i, sum = 0;
for (i = 60; i <=7352; i++) {
if (i % 9 == 0 || i % 14 == 0 || i % 19 == 0) {
sum += i;
}
}
printf("sum = %d\n", sum);
return 0;
}
506デフォルトの名無しさん:2010/11/10(水) 10:39:56
>>502
#include <stdio.h>
int main()
{
int i, j, sum = 0;
for(i = 2; ; i++) {
int f = 1;
for (j = 2; ; j++) {
if (j * j > i)
break;
if (i % j == 0) {
f = 0;
break;
}
}
if (f == 0)
continue;
sum += i;
if (sum > 9129)
break;
}
printf("prime number = %d, sum = %d\n", i, sum);
return 0;
}
507デフォルトの名無しさん:2010/11/10(水) 10:44:07
>>504
小学校からやり直せw
508デフォルトの名無しさん:2010/11/10(水) 10:58:17
>>506
微妙だな
509デフォルトの名無しさん:2010/11/10(水) 11:14:09
>>504-506
ありがとうございます

>>504はif文6だけでなく他の6の倍数も条件に付け足せば大丈夫そうですかね
後お手数なんですが>>506ってcontinueとbreak使わずに表せますか?
510デフォルトの名無しさん:2010/11/10(水) 11:36:08
>>509
適当に考えてみた
http://codepad.org/vre8boYy
511デフォルトの名無しさん:2010/11/10(水) 11:40:19
すみません、もう1つお願いします
何度も申し訳ない

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
21 から1324 までの自然数n のうち、10 の位の数字が3 となる素数の個数を求めよ

[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 特にありません
[5] その他の制限:
for,if文をやった程度なので出来るだけ簡単な文でお願いします。
512デフォルトの名無しさん:2010/11/10(水) 11:44:28
21からと中途半端な、自然数の内って1324までの
素数の中で10の位が3となる値の個数を求めればおkね
513デフォルトの名無しさん:2010/11/10(水) 12:19:47
おまいら直接貼るときは全角空白2つでインデント付けろよ。みにくいアヒルの子かよ
514デフォルトの名無しさん:2010/11/10(水) 12:22:41
>>511
#include<stdio.h>

int main(void)
{
int i, n, count=0;

for(n=21;n<=1324;n++)
{
if((n/10)%10==3)
{
for(i=2;i*i<=n;i++)
{
if(n%i==0) break;
}
if(i*i>n) count++;
}
}
printf("\n%d\n", count);

return 0;
}
515デフォルトの名無しさん:2010/11/10(水) 12:27:18
ちなみにviなら以下のコマンドを実行するだけでいい
:%s /\t/  /g
516デフォルトの名無しさん:2010/11/10(水) 12:30:04
コピペ前提なのに全角スペース入れろって頭沸いてるんだろうか
517デフォルトの名無しさん:2010/11/10(水) 12:39:15
全角インデントとかアホすぎるなw
518デフォルトの名無しさん:2010/11/10(水) 12:43:07
じゃあ醜いソースを晒してろよクズ
519デフォルトの名無しさん:2010/11/10(水) 12:46:30
こいつは真性だな
520デフォルトの名無しさん:2010/11/10(水) 12:51:59
日本人て他人をこきおろすの大得意だよな
そりゃ萎縮して新しいことやる気が失せるは
521デフォルトの名無しさん:2010/11/10(水) 12:56:35
>>513>>518みたいな他人をこきおろすクズは本当に迷惑だよな
522デフォルトの名無しさん:2010/11/10(水) 12:57:21
codepad使えは解決
なんか常駐的に張り付いてる人で頑なにcodepadの使用を拒否してる人がいるよね
コーディングスタイルが全く一緒だからたぶん同じ人だろうとは思うけど
523デフォルトの名無しさん:2010/11/10(水) 13:01:58
コード見るのに一手間かけないといけないのがめんどい
524デフォルトの名無しさん:2010/11/10(水) 13:02:48
うちの環境だとcodepad重いんだよな
525デフォルトの名無しさん:2010/11/10(水) 13:03:41
2chがtabに対応してないのが悪い
526デフォルトの名無しさん:2010/11/10(水) 13:08:01
直接貼り付けられたソースを読み解く労力と
ワンクリックする労力を比べたら俺は後者を取るな
527デフォルトの名無しさん:2010/11/10(水) 13:09:26
>>522
◆QZaw55cn4cみたいな妄想野郎だなw
528デフォルトの名無しさん:2010/11/10(水) 13:14:06
>>513 >>518 池沼乙w
529デフォルトの名無しさん:2010/11/10(水) 13:58:34
>>526
それは自分が質問者じゃないからだよ。
質問者はただ一刻も早く答えが欲しいだけなんだ。
読み解こうなんてそもそも考えない。
530デフォルトの名無しさん:2010/11/10(水) 14:09:38
質問者に置換機能で
全角スペースをタブに一発変換なんて頭ないから
よく分からないエラーが出ますって言い出すに1票
531デフォルトの名無しさん:2010/11/10(水) 14:10:46
質問者でもないのに読み解いて間違いを指摘してくれるのはとてもありがたい。
しかしそれでも質問者のニーズを第一に考えるべきだと思う。
532デフォルトの名無しさん:2010/11/10(水) 14:26:39
こんな時間に、あんたらニーズとか言ってないでニートをどうにかしろ
533デフォルトの名無しさん:2010/11/10(水) 15:42:59
中国人だったらこういうことでも商売にしてしまえるんだろうがな。
知識や情報は無償であるべきだと思ってしまう。
534デフォルトの名無しさん:2010/11/10(水) 16:04:00
ニートは三日やったらやめられない
535デフォルトの名無しさん:2010/11/10(水) 17:17:32
わざわざワンクリするぐらいだったらコード見ない方を選ぶは
536デフォルトの名無しさん:2010/11/10(水) 17:27:59
>>496

ありがとうございます。

できたらABS dnpow pow を使わないやつもお願いできますか?

まだ習ってないもので。。。

あと int main(void)使っていただけると助かります。


何度もすみません。
537デフォルトの名無しさん:2010/11/10(水) 17:35:26
ぶはっ!選ぶは!!
538デフォルトの名無しさん:2010/11/10(水) 17:43:42
好きに生きようぜ
539デフォルトの名無しさん:2010/11/10(水) 17:55:05
>>536
af,find_nは習ったのか? dnpowを習ってないんだから習ってないだろ?
>あと int main(void)使っていただけると助かります。
>>489 [5] その他の制限:#include<stdio.h>  "int main()" breakを使う
ポカーーーン
540デフォルトの名無しさん:2010/11/10(水) 18:28:16
>>536
>>489
>[5] その他の制限:#include<stdio.h>  int main() breakを使う
これで言いたいのは
#include<stdio.h>:
stdio.hにある関数は使って良いが、これにない関数は使用しないこと
int main():
プログラムで自分で作成してよい関数はint main()のみで、それ以外の関数は
自分で作成しないこと
break:
問題はループ処理で求めよ(caseで求めよじゃないよな)と強制している

が条件ですと言いたいのじゃないの?
541デフォルトの名無しさん:2010/11/10(水) 18:37:37
[1] 授業単元:C言語

[2] 問題文:
  次に表示します

[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C

[4] 期限:11月12日

よろしくお願いします
542デフォルトの名無しさん:2010/11/10(水) 18:38:40
[2] 問題文:
(1)10個の最大値を求める
10人の身長データを順にcmで入力したとき、一番大きな身長は何pかを表示するプログラムを作成しなさい。
   実行結果は次の形らしいです。
   1人目の身長を入力してください (単位 : cm)
(入力待ち)
2人目の身長を入力してください (単位 : cm)
(入力待ち) .....略.....
10人目の身長を入力してください (単位 : cm)
(入力待ち)
   この中で身長が高い人は、○○cmです。
 ・指定
   for文を使い処理を10回繰り返す。
   最大値を記憶する変数を用意し、0を代入しておく。
543デフォルトの名無しさん:2010/11/10(水) 18:39:21
(2)買い物金額を計算し、整理するプログラムを次の使用で作成しなさい。
  「税抜き単価」と「個数」を入力すると、次の出力が得られる。
   1.合計金額と税込み合計金額
   2.一番単価の安かったものの金額(税抜)
   3.一番単価の高かったものの金額(税抜)
    ・ただし、すべての商品が課税対象で税率5%とする。
    ・単価に0を入力したら処理を終了する。
   実行結果は次の形らしいです。
買い物をした単価は? : (入力待ち)
   何個買いましたか? : (入力待ち)
   これまでの合計金額は、○○(税込 : △△)円です。
   一番安いものの値段は、税抜××円です。
   一番高いものの値段は、税抜□□円です。
...............処理の繰り返し
   買い物の単価は : (0を入力して終了)

 ・指定
   単価の最小値・最大値を記憶する変数、単価の最大値を記憶する変数、金額合計を記憶する変数を用意し、それぞれ、10000、0、0を代入しておく。
   while(l)で無限ループ作る
544デフォルトの名無しさん:2010/11/10(水) 18:40:07
(3)関数f(x)の最大値と最大値となる場合のxの値を求め、表示しなさい。
    f(x)=x2乗-3x+4
ただし、xは0.0001刻みとし、範囲は-10<=x<=10とする

(4)掛け算九九の票を作成する。
  ・出力例
   1 2 3 4 5 6 7 8 9
2................
3................
4................
5................
6................
7................
8................
9................
 ・指定
for文を用いた2重ループを使い、九九の各値は計算式で求める。表示桁数を調整して見栄映えよく出力すること。
  
545デフォルトの名無しさん:2010/11/10(水) 18:40:48
以上ですよろしくお願いします。
546デフォルトの名無しさん:2010/11/10(水) 19:00:28
>>544
(3) は最小値じゃないのですか?f(x) は下に凸ですから、この問題だと、最大値は区間の端のf(-10), f(10) のいずれかになるのですが?
547 ◆QZaw55cn4c :2010/11/10(水) 19:12:52
548デフォルトの名無しさん:2010/11/10(水) 19:14:04
>>540

その通りです!

c言語後期から始まったばかりで全然わかんないんで
質問の仕方も雑になってしまいました。

すみません。

ではよろしくお願いします。
549デフォルトの名無しさん:2010/11/10(水) 19:15:54
>>539

あ、習ってないです。
550デフォルトの名無しさん:2010/11/10(水) 19:37:43
なんだか楽しくなってきたな。
551デフォルトの名無しさん:2010/11/10(水) 19:42:08
関数を使用してはいけないって明記してないから講師じゃなくて生徒の都合って気がしてくるぜ
552デフォルトの名無しさん:2010/11/10(水) 19:54:57
今は乗り切れてもこんなん解けなくて卒業出来るの?
553デフォルトの名無しさん:2010/11/10(水) 19:56:13
コピペするだけの奴に都合なんて有るのかなぁ....
554デフォルトの名無しさん:2010/11/10(水) 22:08:17
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):
FFTWの1024*1024実部配列に256*128bmp画像を埋め込む
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1350122908
問題コード
http://codepad.org/Lvb3n7zg

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express
 [3.3] 言語: C/C++
[4] 期限: 2010年11月14日まで

原因がわからなくて困っています。お助けください。
555デフォルトの名無しさん:2010/11/10(水) 22:24:49
Perl忍者は糞
556デフォルトの名無しさん:2010/11/10(水) 22:28:21
fftw_complex の定義は?
普通の複素数なら構造体だと思うんだけど
しかも一次元配列でとってるのに代入は二次元配列で代入してるのは何故?
557デフォルトの名無しさん:2010/11/10(水) 22:36:18
>>556
>普通の複素数なら構造体だと思うんだけど
そうだね。実部配列ってことから
67: V[v].re = in[a];
と妄想
他の実部配列アクセスも同様
558デフォルトの名無しさん:2010/11/10(水) 22:40:52
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):
問題コード
http://codepad.org/1iH3TBS7


線形リストを用いた括弧チェッカーです。
1:対象要素を増やす(例えば< > の組み合わせ)
2:/* */のような2文字での判定
3:コメント文内の括弧については判定をしない
4://もコメント文として対応
等の改造をしてください。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年11月11日まで

とのことで
上記のコードを参考にしろと言われましたが
いまいちコードを理解することができず困っています。
よろしくお願いします。
559デフォルトの名無しさん:2010/11/10(水) 23:10:37
>>558
参考ってこれ動くのか?
Push において双方向リンクの設定が正しくないから一つポップしたら壊れそうだけど
しかし、汚いコードだなぁ、久しぶりに見た
560559:2010/11/10(水) 23:12:57
>>558
聞くの忘れたので追記
言語Cって書いてあるからC++使っちゃ駄目?
561デフォルトの名無しさん:2010/11/10(水) 23:26:43
>>560
C言語でお願いします。
講義でC++を使用していないので・・・。

参考コード自体にもバグがあるって言ってましたが。。
562デフォルトの名無しさん:2010/11/10(水) 23:35:15
>>559
bracket.Hidari の処理は間違ってないと思し、ちゃんと動く。
ただし、bracket.Migi は全然使っていない。
双方向リストではなくて単方向リストみたいだ。

アセンブラを読んでいる気持ちになった。

で、全面的に書き直したいのだけれどもいいですかね? >>558
563デフォルトの名無しさん:2010/11/10(水) 23:44:21
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク):下のプログラムを参考にして、太郎さんと花子さんの各教科の平均点を関数で作る(オブジェクトで渡す)
http://imepita.jp/20101022/678990
[3] 環境
 [3.1] OS: linux
 [3.3] 言語: C++
[4] 期限: [2010年11月12日まで
[5] その他の制限: なるべく出力はcout 入力はcinを使ってください。あと、なるべく簡単にしてください。コンストラクタとか、アクセス指定子とか、クラスを関数に渡すとかは習いました。
564563:2010/11/10(水) 23:46:14
あと、実行結果も教えてください。家ではvisual c++を使ってます
565デフォルトの名無しさん:2010/11/10(水) 23:53:37
>>558
もう一点気が付いたんだけど、このプログラムがC言語の括弧をチェックする為のものなら
<>に対応するのはどうかと思うぞ
for( i = 0; i < n; i++ ) ここで<>の整合性が取れなくなるから 『) に対応する ( が無い』とかのエラーで
処理中断してしまう、良いのか?

>>562
駄目じゃね? end->hidari は end を指してるから一つ pop すると end = end になると思うよ
566デフォルトの名無しさん:2010/11/11(木) 00:34:13
>>565
最初に
end = NULL;

push のとき:、
new = malloc();
new->hidari = end;
のあとで
end = new;
と end を更新しています。


pop のとき
tmp = end;
end = end->hidari;
free(tmp);

だから普通の線形リストとすれば問題なく動いているようにみえるのですが。
最初のpush では end->hidari は もともとの end の値である NULL で、end 自身は新しく確保した領域をポイントし、
そのあと pop したときには、スタックの要素がなくなって、end = end->hidari で NULL になるのは問題ないのでは?
567デフォルトの名無しさん:2010/11/11(木) 01:03:37
>>566
俺の勘違いだな、動くような気がする
後ろから片方向リンクってのが見慣れないから引っかかったよ

でもスタックなら後ろから片方向が効率は良いな...真似する気にはならんけど
568デフォルトの名無しさん:2010/11/11(木) 02:48:05
>>558
あんまり綺麗に書けなかった

ttp://codepad.org/WdCr1SDP

ざっと試した感じでは問題無さそうだが、厳密なテストは面倒くさいので任せた
569568:2010/11/11(木) 08:11:44
>>558
やっぱり、サンプルのスタック方式を踏襲するのが気に喰わないので書き直した
....そしたらバグが見つかった、テヘッ(^^

ttp://codepad.org/f05DseJK

なんかもっと綺麗に書けそうなんだけどなぁ
570568:2010/11/11(木) 08:23:05
さらに見直したら、>>569 の 80,82,83 行目は無意味だ、清書する習慣は何処へ行ったのだろう...
571デフォルトの名無しさん:2010/11/11(木) 08:48:28
>>558
すみません。括弧チェッカーって何ですか?
572デフォルトの名無しさん:2010/11/11(木) 11:18:13
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
  5個の果物から3個取り出してかごに入れるときの入れ方は何通りあるか。
  この組み合わせを計算するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 11月13日まで
[5] その他の制限: ユーザ定義関数化すること。

よろしくお願いします。
573デフォルトの名無しさん:2010/11/11(木) 11:24:54
果物の種類がわからない
574572:2010/11/11(木) 11:35:05
>>573
すみません。
りんご、みかん、ぶどう、桃、いちごです。
575デフォルトの名無しさん:2010/11/11(木) 11:39:24
printf("%d",5*4*3);
576デフォルトの名無しさん:2010/11/11(木) 11:43:16
組み合わせだぞw
577575:2010/11/11(木) 11:45:35
P(){printf("%d",5*4*3/3/2/1);}
578デフォルトの名無しさん:2010/11/11(木) 13:38:25
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
  
実数を10個キーボードから入力として受け付け,
その後,最初の5個のデータの平均値,及びすべて(10個の)
データの平均値を実数値で出力しなさい。
(この問題は配列を使用してはいけない)

入力例: 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
入力例に対する出力: 2.500000 5.000000 注)
%fで出力の書式を指定した場合,小数点以下何桁表示されるかは処理系に依存するので気にしなくてよい。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc4 [3.3] 言語: C
[4] 期限: 11月11日まで
[5] その他の制限: 問題文に,「実数」と記述されていればdouble型を,
「整数」と記述されていればint型を使用すること。
579デフォルトの名無しさん:2010/11/11(木) 13:48:18
>>578
#include<stdio.h>

int main(void)
{
double x=0., ave10=0., ave5=0.;
int i;

for(i=0;i<10;i++)
{
scanf("%lf", &x);
if(i<5) ave5=(ave5*i+x)/(i+1);
ave10=(ave10*i+x)/(i+1);
}
printf("%f %f\n", ave5, ave10);

return 0;
}
580デフォルトの名無しさん:2010/11/11(木) 13:50:27
ひでえなw
581デフォルトの名無しさん:2010/11/11(木) 13:54:25
>>568>>569
ありがとうございます。
582デフォルトの名無しさん:2010/11/11(木) 14:21:19
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
 http://www.dotup.org/uploda/www.dotup.org1244314.pdf.html
課題7〜10までおねがいします。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 2010年11月15日まで
[5] その他の制限: 問題文に記述されています。
583デフォルトの名無しさん:2010/11/11(木) 14:21:22
>>578
#include<stdio.h>

int main(void)
{
double x, ave10=0, ave5=0;
int i;

for(i=0;i<10;i++)
{
scanf("%lf", &x);
if(i<5) ave5 += x;
ave10 += x;
}
printf("%f %f\n", ave5/5, ave10/10);

return 0;
}
584デフォルトの名無しさん:2010/11/11(木) 14:23:46
>>572
#include <stdio.h>
int combination(int n, int m){
  int i, ans=1;

  if(n-m < m) m = n-m;
  for(i=1; i<=m; i++)
    ans *= n--;
  for(i=1; i<=m; i++)
    ans /= i;
  return ans;
}
int main(void){
  int n, m;
  char buf[20];

  while(1){
    printf("n m = ");
    fgets(buf, sizeof(buf), stdin);
    if(sscanf(buf, "%d%d", &n, &m) != 2)
      continue;
    printf("%dC%d = %d\n", n, m, combination(n, m));
  }
}
585デフォルトの名無しさん:2010/11/11(木) 14:24:01
582 追記 フローチャートは いりません。
586デフォルトの名無しさん:2010/11/11(木) 14:26:32
[1] 授業単元:プログラミング演習(テーマ:関数の使い方とデータの受け渡し方)
[2] 問題文(含コード&リンク):main 関数内の標準入力から入力された
文字列を引数として関数に渡し、関数内で表示するプログラムを作成せよ。




[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 11/12
[5] その他の制限:グローバル変数を使用しないこと

お願いします。
587デフォルトの名無しさん:2010/11/11(木) 14:37:26
>>586
#include<iostream>
#include<string>

void str_disp(const std::string & str)
{
std::cout << str << std::endl;
}

int main(void)
{
std::string str;

getline(std::cin, str);
str_disp(str);

return 0;
}
588デフォルトの名無しさん:2010/11/11(木) 18:05:29
>>582
pdf をダウンロードするの面倒くさい
589デフォルトの名無しさん:2010/11/11(木) 18:13:00
>>582
C言語の内定者課題って、まさかプログラマにはならないよね?
590デフォルトの名無しさん:2010/11/11(木) 18:16:18
【質問テンプレ】
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):複数の変曲点があるデータ系列の極大点と極小点を検出するプログラムを作成
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ:VisualC++
 [3.3] 言語: どちらでも可
[4] 期限:無期限
[5] その他の制限:for文、if文、while文などの基本的な使用方法は習っています。
           8点ほどの極大と極小を求めたい。
           データ系列は数値で500点与えられており、精度の問題から同じ値が2点並ぶ場合もあります。
           検出結果として極大4点、極小4点がそれぞれの配列として出力されても、極大と極小が交互に並ぶ配列として出力されても問題ありません。

591デフォルトの名無しさん:2010/11/11(木) 18:54:38
>>582
ひょっとして・・・
592デフォルトの名無しさん:2010/11/11(木) 19:28:44
>>589
多分、そうじゃないの
ソフト屋の内定段階で課題の出来が酷いのは落とすとかそんなんでしょ
簡単すぎて話しにならない問題だけど

>>582
フローチャート必要って書いてるけど、君は貰ったソースに合わせてフローを書くつもりなの?
フローが書けるなら書いたものを提示してそれに合わせたソースを貰うほうが良いと思うけど
そもそも、フローが書けるならソースも書けると思うが....
593デフォルトの名無しさん:2010/11/11(木) 19:33:09
いきなり出されて「これ書き起こして」ってならともかく
家に帰ってまでできないってどういうこった。
594デフォルトの名無しさん:2010/11/11(木) 19:35:37
答えられない無能はレスしなくて結構ですので…
595デフォルトの名無しさん:2010/11/11(木) 19:40:40
>>592
>多分、そうじゃないの
ですよね。 プログラマになる人が簡単な問題を宿題依頼するなんて異常ですよね
きっと土方さんになるから宿題依頼するんですよね
596デフォルトの名無しさん:2010/11/11(木) 19:49:48
自分で答えられない無能は課題の解答を提出しなくて結構ですので…
内定会社より
597デフォルトの名無しさん:2010/11/11(木) 19:53:25
こんなので釣れるんだな
598デフォルトの名無しさん:2010/11/11(木) 20:09:09
>>582
書いたぞ、4本纏めて一本になってるから勝手に分割しろ
ttp://codepad.org/AxIhIXUL
599デフォルトの名無しさん:2010/11/11(木) 21:10:32
>>590
#include<stdio.h>

#define SIGN(x) ((x)<0.0?-1:1)

int main(void)
{
double value=0.0, value_prev=0.0;
int i, sign=1, sign_prev=1;

for(i=0;scanf("%lf", &value)==1;i++)
{
sign=SIGN(value-value_prev);
if(i>1 && sign!=sign_prev)
{
printf("%d %f\n", i, value_prev);
}
value_prev=value;
sign_prev=sign;
}

return 0;
}
600デフォルトの名無しさん:2010/11/11(木) 21:22:54
>>590
>>599 の修正 同値が連続した場合と精度落ち対策
#include<stdio.h>
#include<string.h>

#define SIGN(x) ((x)<0.0?-1:(x)>0.0)

int main(void)
{
char buf[256], buf_prev[256];
double value=0.0, value_prev=0.0;
int i, sign=1, sign_prev=1;

for(i=0;scanf("%s", buf)==1;i++)
{
if(sscanf(buf, "%lf", &value)!=1) break;

sign=SIGN(value-value_prev);
if(sign==0) sign=sign_prev;
if(i>1 && sign_prev && sign!=sign_prev)
{
printf("%d %s\n", i, buf_prev);
}
strcpy(buf_prev, buf);
value_prev=value;
sign_prev=sign;
}

return 0;
}
601 ◆QZaw55cn4c :2010/11/11(木) 21:27:47
>>598
unsigned char c;
c = (unsigned char)getchar() (爆笑)
602 ◆QZaw55cn4c :2010/11/11(木) 21:29:42
>>598
char s1[128];
fgets( s1, 127, stdin ); (笑) なぜ1減らすのですか?
603デフォルトの名無しさん:2010/11/11(木) 21:37:13
>>601
なんか変か?厳格なキャストが染み付いてるだけの話だが

>>602
fgets() は指定文字数まで読み込むが終端にNULLを付加するんじゃなかったっけ?
604デフォルトの名無しさん:2010/11/11(木) 21:37:36
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク):10人分の各教科の平均点を計算する関数を実装してください。
[3] 環境
 [3.1] OS: linux
 [3.3] 言語: C++
[4] 期限: [2010年11月12日まで]
[5] その他の制限: なるべく出力はcout 入力はcinを使ってください。あと、なるべく簡単にしてください。コンストラクタとか、アクセス指定子とか、クラスを関数に渡すとかは習いました。

605デフォルトの名無しさん:2010/11/11(木) 21:40:10
>>603
長さが128文字以上の文字列を入力すると、おかしな動作しませんか?
606デフォルトの名無しさん:2010/11/11(木) 21:48:25
◆QZaw55cn4c が>>598に喧嘩売ってきたぉ
それもトリップ入りで売ってきた
>>598を敵と認識としたんだ
607デフォルトの名無しさん:2010/11/11(木) 21:54:17
>>601
unsigned char じゃまずかったな signed じゃないと EOF と比較できねぇや

>>605
おかしな動作というかストリームに残ってる文字列が次の fgets に渡されるだろうね
業務等で書くコードならストリームが空になるまで読み込みを繰り返すとかを行うんだけど、
所詮は問題だからね
先の例題だとこんな感じかな

char s[16], dum[16];
fgets( s, 15, stdin );
while( fgets( dum, 15, stdin ) )
  ;
608 ◆QZaw55cn4c :2010/11/11(木) 21:57:35
>>598
>#define C08
>printf( "%d: %c\t", v, (unsigned char)v );
まず、v < 128 であるし、integer promotion により、関数の引数は int に格上げされるから、char や unsigned char でキャストするのは意味がありません。
(ISO/IEC 9899:1999 6.5.2.2.6)
v == 127 のときは v は printable でないから、そのまま printf() にわたすのはどうでしょうか。
せめて
printf("%d: %c\t", v, (isprint(v)) ? v : ' ');
くらいのガードをしておくのが安全というものです。
609デフォルトの名無しさん:2010/11/11(木) 21:59:10
>>607
まだまずいと思う。
sの末尾が改行でないときは、getcharを使って、
改行コードがくるまで読み捨てるのがいいかも
610 ◆QZaw55cn4c :2010/11/11(木) 22:11:31
>>607
ISO/IEC 9899:1999 7.19.7.6
int getchar(void);

この手の関数の返り値は int で受ける。
611 ◆QZaw55cn4c :2010/11/11(木) 22:14:20
>>603
get指定した文字数-1 まで読み込み終端に \0 をつける。
ISO/IEC 9899:1999 7.19.7.2
612デフォルトの名無しさん:2010/11/11(木) 22:19:14
>>608
明示的なキャストが染み付いてるだけだって、習慣だよ
例えば整数の除算結果を実数に代入する場合
 d = (double)a/b; とする人も居るだろうけど俺は必ず d = (double)a / (double)b; とする 
暗黙のキャストが有るから無駄なキャストは意味が無いなんて考える人は業務でコードを書いてない人だけ
明示的なキャストは他者に誤解を与える可能性を低下させる意味が有るからね

127が printable じゃないのは知らんかったよ

>>609
言っている意味が判らないな、fgets() を NULL が返るまで繰り返せば同じだと思うが
613デフォルトの名無しさん:2010/11/11(木) 22:23:01
>>611
そうか俺の記憶違いみたいだね
なんかバッファサイズ - 1 にする習慣が付いてるんだけど、なんでそんな習慣が付いたのか謎だな
同じような誤解をしてる人に教わったんだろうか?
614デフォルトの名無しさん:2010/11/11(木) 22:27:23
>>598
本当に助かりました。感謝します。
615デフォルトの名無しさん:2010/11/11(木) 22:31:20
>>613

char buff[256] ;

fgets( buff, 256, stdin ) ;
はこれでOK

scanf ( "%255s", buff ) ;
はこうじゃないとバッファオーバーフローする
616デフォルトの名無しさん:2010/11/11(木) 22:31:45
>>612
1行目と2行目を別々に変数に代入したい訳で
1行目が長いときに、あふれた分を捨てたいけど、
fgetsを使うと2行目も捨ててしまいませんか?
617デフォルトの名無しさん:2010/11/11(木) 22:32:44
もうそういう時はscanfを使うのやめようぜ。
俺なら256を変更しても通用するコードを書く。
618デフォルトの名無しさん:2010/11/11(木) 22:36:20
>>615
なるほど謎は解けた、確かに最初に覚えるのは scanf だもんなぁ、有難う

>>616
どうしてそう思うの?そもそもそう思うんならテストコード書いて試してみればいいじゃん
619デフォルトの名無しさん:2010/11/11(木) 22:40:52
>>618
了解。撤回です
620618:2010/11/11(木) 22:44:15
>>616
テストコード書けば良いのは俺だった
確かに、fgets() で無限ループ作ったらそこで止まるわなwwww
先のコードはこうか
while( fgets( dum, 16, stdin ) )
  if( strchr( dum, '\n' ) ) break;
621デフォルトの名無しさん:2010/11/11(木) 22:49:40
確かに適性をみるにはこの程度の問題でもよいことがよくわかる。
622デフォルトの名無しさん:2010/11/11(木) 23:37:17
printf(" %3d: %c %3d: %c %3d: %c %3d: %c %3d: %c %3d: %c\n",
i,i,i+16,i+16,i+32,i+32,i+48,i+48,i+64,i+64,i+80,i+80);

こんな風にする奴は適性0かなw
623デフォルトの名無しさん:2010/11/11(木) 23:45:08
誰か563をお願いします
624デフォルトの名無しさん:2010/11/12(金) 00:27:58
>>612
getchar の返り値を int で受けない人は、unicode を扱う瞬間に泣くことになる。
今回の件については、char で受けるその悪い習慣は直した方が良いと思うよ。
まぁ、下記サイトでも参照して勉強し直してくれ。
http://symple.jp/98.html
625デフォルトの名無しさん:2010/11/12(金) 00:42:02
getchar で unicode を扱う機会なんか有るのか?
そも、このスレ以外で getchar やら scanf を使う機会が有るのかとも言えるが
626デフォルトの名無しさん:2010/11/12(金) 00:51:27
返り血を浴びてしまう前に戻れ!
627デフォルトの名無しさん:2010/11/12(金) 01:01:06
>>624
int getcharなのにcharで受けるってのが、そもそも異常でしょ

なんで、int getcharなのにcharで受けるんですか?
628デフォルトの名無しさん:2010/11/12(金) 01:04:15
ttp://www.bohyoh.com/CandCPP/C/Library/getchar.html
返却値
stdinが示す入力ストリームの次の文字を返す。
ストリームでファイルの終わりが検出された場合、
そのストリームに対するエラー表示子をセットしてEOFを返す。
629デフォルトの名無しさん:2010/11/12(金) 01:14:44
>>623 >>563
その問題は既に回答されていたぞ
前スレかも知らんけど、スキャンされたページの記憶が有る
630 ◆QZaw55cn4c :2010/11/12(金) 05:07:33
>>612
「キャストしておれば無問題」という思考・態度に疑問を感じます。そのうち promotion ではまります。いや、もうはまりかけです。でも早い段階ではまることをお勧めします。
631デフォルトの名無しさん:2010/11/12(金) 05:20:50
>>630
さすがにお前の思い上がりには脱帽したよ。あんた、大掛かりなものになると
すぐに失敗して、その初歩的なミスに気づかないタイプだろ。
問題文を読み間違えるくらいだし。
632デフォルトの名無しさん:2010/11/12(金) 06:21:15
>>623
私の場合画像が読めなくて保留になっている。
633デフォルトの名無しさん:2010/11/12(金) 06:46:31
叩かれまくった仕返しをしてるんだと思うけど、叩いた人とは別人なんだよねw
634デフォルトの名無しさん:2010/11/12(金) 09:29:51
>>630
promotion って何?
635デフォルトの名無しさん:2010/11/12(金) 10:59:02
>>600
sign_prev=1

sign_prev=0
636 ◆/91kCCQXBo :2010/11/12(金) 11:03:51
>>563 >>604
GCCをインストールしておけ。
637デフォルトの名無しさん:2010/11/12(金) 11:26:13
>>590
#include<stdio.h>
#include<string.h>

#define SIGN(x) ((x)<0.0?-1:(x)>0.0)

int main(void)
{
char buf[256], buf_prev[256];
double value, value_prev;
int i, sign, sign_prev=0;

for(i=0;scanf("%s", buf)==1;i++)
{
if(sscanf(buf, "%lf", &value)!=1) break;

if(i==0) value_prev=value;

sign=SIGN(value-value_prev);
if(sign==0) sign=sign_prev;
if(sign_prev && sign!=sign_prev)
{
printf("%d %s\n", i, buf_prev);
}
strcpy(buf_prev, buf);
value_prev=value;
sign_prev=sign;
}

return 0;
}
638デフォルトの名無しさん:2010/11/12(金) 11:52:59
>>623
これじゃないか?

http://codepad.org/CSjyyeuw
639 ◆QZaw55cn4c :2010/11/12(金) 11:57:00
>>634
ISO/IEC 9899:1999 6.3.1.1
640デフォルトの名無しさん:2010/11/12(金) 12:53:33
>>639
Integer Promotion ならそう書けば良いのに、新しいライブラリセットかなんかと思ったよ

「値が失われるかも知れません」というワーニングを無視できる人なら嵌るかもね
641デフォルトの名無しさん:2010/11/12(金) 13:00:22
ワーニングって何ですか?
642デフォルトの名無しさん:2010/11/12(金) 13:14:20
>>641
ググれw
643デフォルトの名無しさん:2010/11/12(金) 14:01:40
発音がどうとか表記がどうとか
644デフォルトの名無しさん:2010/11/12(金) 14:02:51
アテンションプリーズ
645デフォルトの名無しさん:2010/11/12(金) 14:20:30
まぁ、みんな内心おかしいとは思ってるけど
国内では「ワ」の方が通りがいいからそう言ってるんだ、言わせんなよ恥ずかしい
だってほとんどの人が向こうの人と話するときだけはちゃんと発音してるし
646デフォルトの名無しさん:2010/11/12(金) 14:23:36
main() がどうしたとか発音がどうしたとか問題が出ないと退屈なんだろうな
647デフォルトの名無しさん:2010/11/12(金) 14:25:23
退屈なのはお前だろw
648デフォルトの名無しさん:2010/11/12(金) 14:35:09
忙しい人は来ないです、多分
649デフォルトの名無しさん:2010/11/12(金) 15:04:02
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク):行頭でピリオド(.)が入力されるまで、
入力された文字を出力するプログラムを作成しなさい。なお、行頭ピリオド自身は表示しない。
[条件] 配列を使用しないこと。つまり、1 文字ずつgetchar で入力し、
putchar で出力することになる。<入出力情報>
入力出力
キーボードディスプレイ
<エラー仕様>
行頭ピリオドの後に文字がある場合は、
行頭でピリオドと認識し、プログラムを終了
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: [2010年11月15日まで]
[5] その他の制限:
<エラー仕様>
行頭ピリオドの後に文字がある場合は、
行頭でピリオドと認識し、プログラムを終了
650デフォルトの名無しさん:2010/11/12(金) 15:12:48
>>649
それ内定者課題ですよね
651デフォルトの名無しさん:2010/11/12(金) 15:36:18
このスレに2人も質問者が居るとは....内定出したのはどんな会社だろうか?
652デフォルトの名無しさん:2010/11/12(金) 16:43:36
[1] プログラミング演習
[2]非負の整数値をキーボードから入力して、その整数値から8個の数字を取り出す。
 unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。
[3] 環境
 [3.1] windows7
 [3.2] visual stdio2010
 [3.3] c言語
[4] 2010/11/14まで
[5] 関数までポインタ、構造体、文字列はまだならっていません。
実行例
unsigned int 型変数から8この数字を取り出す。
非負の整数を入力してください 679772770
二進数表示:???????
8個の数字:???????
?部分は隠されていてわかりません。問題文そのままです。
お願いいたします。
653デフォルトの名無しさん:2010/11/12(金) 16:55:42
>>652
ずいぶんと曖昧な仕様だな。
654デフォルトの名無しさん:2010/11/12(金) 17:00:41
>>652
#include <stdio.h>

int main(void)
{
unsigned int u;
int i;
printf("非負の整数を入力してください ");
scanf("%u", &u);

printf("二進数表示:");
for(i = 31; i >= 0; i--) printf("%d", u >> i & 1);
printf("\n");

printf("8個の数字:");
for(i = 7; i >= 0; i--) printf("%d ", u >> i * 4 & 15);
printf("\n");

return 0;
}
655デフォルトの名無しさん:2010/11/12(金) 17:01:32
>>652
構造体習ってないって事はビットフィールドも習ってないって事だよな
つまりはビットシフトとマスク演算だけで処理しろって事だ
[5] の書き方が不明瞭だけど関数は習っているの?
656655:2010/11/12(金) 17:07:20
>>652
入力が8桁以下の場合はどうするの?右詰め or 左詰め?
657655:2010/11/12(金) 17:13:36
入力された数字の各桁を4bitに入れると考えたが、よく見ると入力例は9桁だな
しかも出力の8桁の数字は入力と同じになるから意味無いし...
謎の仕様と言えよう....
658デフォルトの名無しさん:2010/11/12(金) 17:41:50
>>652 制限が厳しいな。共用体は?

/* 未確認 */

#include<stdio.h>

#define _INT_BITS 32

int main( int, char** )
{
  unsigned int number = 0;
  int i = 0;

  if( ( 8 * sizeof(int) ) != _INT_BITS )
  { return (-1); }

  scanf("非負の整数を入力してください: %u", &number);

  printf("二進数表示: ");
  i = _INT_BITS;
  do { putchar( ( ( number >> (--i) ) & 0x01 ) ? '1' : '0'); }
  while( i > 0 );

  printf("\n8個の数字: ", );
  i = ( _INT_BITS / 8 );
  do { printf( "%d ", ( number >> ( --i * 4 ) ) & 0x0f ) ); }
  while( i > 0 );
 

  return 0;
}
659デフォルトの名無しさん:2010/11/12(金) 17:42:42
謎解きでもしよう。事例、679772770からは7個の数字しか取り出せない。ということは、
重複を当然と思っているということだ。
つまり、3 が入力されたら、8個の数字は 3,3,3,3,3,3,3,3 だということになる。
34だったら 3,3,3,3,3,3,3,3 から 始まって、4,4,4,4,4,4,4,4 まで256通りの可能性がある。
Prolog的に非決定性で解を列挙していけばよいのかな?
660デフォルトの名無しさん:2010/11/12(金) 17:43:25
どんだけ時間かかってるんだ、俺w
661デフォルトの名無しさん:2010/11/12(金) 17:44:43
>>659
しまった。5個の数字しか取り出せない、だ。
662デフォルトの名無しさん:2010/11/12(金) 17:54:13
>>658
ゴミ貼るなよ
663 ◆QZaw55cn4c :2010/11/12(金) 18:05:14
>>640
>「値が失われるかも知れません」というワーニングを無視できる人なら嵌るかもね
そして考えもなくキャストを連発する人も。
664デフォルトの名無しさん:2010/11/12(金) 18:05:36
>>652 は題意を理解してるんだろうか?
665デフォルトの名無しさん:2010/11/12(金) 18:06:57
お前ら、俺の妄想でゲソ
>その整数値から8個の数字を取り出す
だから、8個(桁)以上の値からなる数値列の入力するが前提条件になるんじゃない烏賊
で、問題になるのがunsigned intで表せる数値を超えた数値列(9が100個とか)の入力があったときでゲソ
この場合、その数値列の数値を自分で適当に8個選んで、unsigned intで表せる数値を作るでゲソ
(超えない場合は、頭から8個そのまま選べば良いんじゃない烏賊)

そして、そのunsigned intを2進、と16進で表すでゲソ

679772770の場合、使える数値およびその個数は 0:1個、2:1個、6:1個、7:5個、9:1個 でゲソ
これから8個の数値、77777692とか作れってことじゃな烏賊
666デフォルトの名無しさん:2010/11/12(金) 18:09:09
4bitはどこ?
667デフォルトの名無しさん:2010/11/12(金) 18:13:50
確かにゴミ過ぎたわ。
というかCを忘れ始めている自分に凹んだ。
668 ◆QZaw55cn4c :2010/11/12(金) 18:18:50
669デフォルトの名無しさん:2010/11/12(金) 18:20:47
>>666
Hex表示をするための入れ物に4bitじゃな烏賊
Hex表示用の入れ物8個を作り、それにuintを4bitづつ分解して入れるでゲソ
670デフォルトの名無しさん:2010/11/12(金) 18:29:30
>>668
>行頭ピリオドの後に文字がある場合は、
>行頭でピリオドと認識し、プログラムを終了
これのときはピリオドの後の文字を表示しないで終了じゃないのか?
671 ◆QZaw55cn4c :2010/11/12(金) 18:36:38
>>670
>>582 の pdf が失われてしまったので定かではないのですが、記憶では、ピリオドの後の文字を表示するような例が示されていました。
でも、>>670 の仕様ならば、
http://codepad.org/oOyZXSn2
672デフォルトの名無しさん:2010/11/12(金) 18:40:03
<エラー仕様>
行頭ピリオドの後に文字がある場合は、
行頭でピリオドと認識し、プログラムを終了

>>582と同じだよ。pdfでもそうなっている。
673デフォルトの名無しさん:2010/11/12(金) 18:54:24
>>652です
>>654
御回答有難うございます!
>>655
関数は習っています。
>>656
その点については何も書いていないんです…。
>>658
有難うございます。
しかし、エラーが出ました…。

余計かなと思って書かなかったのですが、ヒントに
4ビットのみ有効にするためには、それ以外のビットを無効、すなわち0にする必要がある。
とあります。
674デフォルトの名無しさん:2010/11/12(金) 19:11:43
そのヒントが余計かどうか判断できるなら、問題解くのも簡単だろw
675デフォルトの名無しさん:2010/11/12(金) 19:29:30
>>673
ヒントを聞いても題意が掴めないのは俺だけではないだろう

非負の整数値をキーボードから入力して、その整数値から8個の数字を取り出す。 
unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。

『4bitごとに区切ることによって8個の数字を取得する』ならば >>654 の回答で良いんだけどね
676デフォルトの名無しさん:2010/11/12(金) 19:35:54
>>674
すみません。なんとなくで判断しました。
イントロダクションみたいなところに
0〜9までの1桁の数字は、2進数で 0000)2〜 1001)2 と4bitの幅があれば表現することができます。
32bitコンピュータ環境において符号無し整数型unsigned intは通常32bitの大きさを持ちます。
このことから、unsigned int型の変数には、それを4bitごとに区切ることによって8桁分の数字を格納することが可能です

とありますが。まったく分からないです…。
677デフォルトの名無しさん:2010/11/12(金) 19:44:45
じゃあなんで>>652の入力例は9桁なんだよw
678デフォルトの名無しさん:2010/11/12(金) 19:49:26
>677
すみません、私自身理解できないんです。
課題の実行例には679772770がありまして…。
679デフォルトの名無しさん:2010/11/12(金) 19:52:30
>>676
それは皆判ってるよ、問題は >>652 に曖昧な部分が有って題意が掴めないって事なんよ
>>654 の解釈は入力された unsigned int を 4bit 毎に分割して8個の整数(0〜15)を表示するなんだけど、
問題文の格納が引っかかるんだよね

俺がイメージしたのは入力された8桁の整数の各桁を4bitに格納して出来た unsigned int を2進表示する、
なんだけど、それだと入力と出力の2行目が同じになるから変だし例題が9桁なのも変

まぁ問題文が少しおかしいだけで >>654 の解釈が正しいとするのが妥当だろうなぁ
680デフォルトの名無しさん:2010/11/12(金) 19:55:06
#include <stdio.h>

int main(void)
{
unsigned int u, ans = 0;
int i;

scanf("%u", &u);

for(i = 0; i < 8; i++, u /= 10) ans |= (u % 10 & 15) << i * 4;

for(i = 31; i >= 0; i--) printf("%d", ans >> i & 1);

return 0;
}
681デフォルトの名無しさん:2010/11/12(金) 19:57:49
>>680
確かに両方の回答を提出しとくってのも考えだわなぁww
682デフォルトの名無しさん:2010/11/12(金) 20:12:45
要するに10進数 12345678 を16進数 0x12345678 に直しないさい。
って問題かね。
683デフォルトの名無しさん:2010/11/12(金) 20:23:14
>>682
それちょっと違うw
684デフォルトの名無しさん:2010/11/12(金) 20:25:02
>>676
問題文に自分なりの解釈を入れるな。
可能な限り一字一句正確に問題を書くこと。
自分の解釈を入れたければ、
問題文の後に、
 自分はこう解釈しました
と自分の考えだと分かるように入れろ。
685デフォルトの名無しさん:2010/11/12(金) 21:19:26
まさかBCDの事ではあるまいな。
686デフォルトの名無しさん:2010/11/12(金) 21:22:35
int変数に二進化十進形式で格納された8桁の数値を、元に戻すということかな
687デフォルトの名無しさん:2010/11/12(金) 21:28:00
#include <stdio.h>
void eratos(int *array,int n)
{
int i,j,sum;
array = (int*)malloc(n * sizeof(int));
for (i=0;i<n;i++){
array[0]=array[1]=-1;
array[i]=1;

}
for (i=2;i<=n;i++) {
for (j=i+i;j<n;j+=i) {
array[j]=-1;
}
}
for (i=0,sum=0;i<=n;i++) {
if (array[i]==1) {
printf("%6d",i);
sum++;
if (sum%10==0){
printf("\n");
}
}
}
if(sum%10!=0){
printf("\n\n");
printf("素数の数:%d \n",sum);
}

}
688デフォルトの名無しさん:2010/11/12(金) 21:30:17
int main()
{
int *a;
int n;

n=0;

printf("要素数:");
scanf("%d",&n);

eratos(a,n);

return 0;
}

error C3861: 'malloc': 識別子が見つかりませんでした
とエラーが出ます。どなたか教えてください!

ちなみにプログラムは、この形じゃないとダメだそうです。
689デフォルトの名無しさん:2010/11/12(金) 21:36:32
>>688
#include <stdlib.h>
690デフォルトの名無しさん:2010/11/12(金) 21:36:39
>>688
この形って何?言ってる意味がわからない。
とりあえず、最初の行に
#include<stdlib.h>
を追加しる。
691デフォルトの名無しさん:2010/11/12(金) 21:41:22
24bitのビットマップ画像から16bit(R5bit G6bit B5bit)のデータに変換したいのですが、どのようにしたらいいのでしょうか?
カラーごとに
RとBは取得した8bitの値/255*32
G取得した8bitの値/255*64
で問題はありませんか?
692デフォルトの名無しさん:2010/11/12(金) 21:45:44
>>690
この形って言うのは「ポインタと関数」を使用したプログラムのことです。
わかりづらくしちゃってすいません!

あと、プログラムが正常に動作しました。ありがとうございます!
693デフォルトの名無しさん:2010/11/12(金) 21:48:32
bitmapのフォーマットを調べれ
fopenで普通にバイナリ単位で処理していけば良い
694デフォルトの名無しさん:2010/11/12(金) 21:54:45
>>691
> RとBは取得した8bitの値/255*32
> G取得した8bitの値/255*64
型によるが、おそらく↓にした方が良い。
 32*RとBは取得した8bitの値/255
 64*G取得した8bitの値/255
695デフォルトの名無しさん:2010/11/12(金) 21:56:51
>691
再量子化ねぇ
C = R, B
floor(C / 255. * 31.)

G
floor(G / 255. * 31.)

僕ならYCbCrにしてさらに削るけどな
696デフォルトの名無しさん:2010/11/12(金) 21:57:44
>695
G
floor(G / 255. * 63.)
だった、超笑い
697694:2010/11/12(金) 21:57:50
間違えた。こうか。
 31*RとBは取得した8bitの値/255
 63*G取得した8bitの値/255
698デフォルトの名無しさん:2010/11/12(金) 22:00:51
ビットマップの24ビットのはBGRの順にそれぞれ8bitずつ管理されているが
先頭からヘッダ、一番下の行から順に、さらに横の画素数が4の倍数でなければ
00で穴埋めされているなど、調べれば少々厄介でも単純だと分かる。

ttp://kuwalab.net/technics/bitmap/index.html
699デフォルトの名無しさん:2010/11/12(金) 22:06:34
ビットマップは圧縮されてないからいいよね。
jpegなんかはライブラリ使わないと直接扱う気にはちょっとなれない。
700デフォルトの名無しさん:2010/11/12(金) 22:27:27
>>699
規格としては圧縮形式もあったと思った
701デフォルトの名無しさん:2010/11/12(金) 22:31:34
Perl忍者の宿題はここでいいんですか
702691:2010/11/12(金) 22:56:31
みなさんレスありがとうございます

16bitの画像をバイナリエディタの構造体編集で見てみたのですが
001C 2 BiBitCount ピクセルあたりのビット数(1,4,8,24)。それぞれ16進では(0x01,0x04,0x08,0x18)
の値が10進数で56という値になっていました。
24bitの場合は40です。

これは保存した画像データのヘッダが何かおかしいのでしょうか?
それともバイナリエディタの方で何かズレが生じしてしまっているものなのでしょうか?
703デフォルトの名無しさん:2010/11/12(金) 23:08:20
>>702
どこ見て言ってるのか分からないけど
biBitCountは
16bitビットマップなら16(0x10)
24bitビットマップなら24(0x18)
のはずだぞ
704デフォルトの名無しさん:2010/11/12(金) 23:18:19
>>702
Windows環境で見れるなら、画像ファイルを選択して
そのプロパティを見るといいよ。概要に情報が載るから。
705デフォルトの名無しさん:2010/11/12(金) 23:18:31
>>703
こんな感じになっちゃいました・・・
http://vip.20ch.net/s/vip20ch346.png
706デフォルトの名無しさん:2010/11/12(金) 23:19:24
>>704
16bitは対応してないようです
707デフォルトの名無しさん:2010/11/12(金) 23:28:45
>>705
エスパーすると
BITMAPFILEHEADERの読み取りがずれてるんじゃない?
この中には2byteの型が含まれてるから
アライメントが4byteだと後ろがどんどんズレてしまう
Cで言うと

#pragma pack(push,2)
typedef struct tagBITMAPFILEHEADER {
unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
} BITMAPFILEHEADER;
#pragma pack(pop)

としないと構造体単位で読む場合は
みたいにアライメントを2byte境界にしないと正しく読めない
708デフォルトの名無しさん:2010/11/12(金) 23:35:58
>>705
先頭のSizeからして変
4D42って”BM”だけど、もしかして先頭から読ませてない?
709デフォルトの名無しさん:2010/11/12(金) 23:38:43
まさか
BITMAPFILEHEADERを読まずにいきなり
BITMAPINFOHEADERを読んでるってオチか?
710デフォルトの名無しさん:2010/11/12(金) 23:42:41
fopenで開いて先頭から一バイトずつ見ていけよ
711デフォルトの名無しさん:2010/11/12(金) 23:55:36
>>629
>>638
それは、人ごとの平均点なんで、
教科ごとの平均点を出すプログラムを今度は作るんです
712デフォルトの名無しさん:2010/11/13(土) 00:05:51
>>632
http://imepita.jp/20101112/863500
これで見れないでしょうか
713デフォルトの名無しさん:2010/11/13(土) 00:22:35
[1] 授業単元:TCP/IPソケットプログラミング
[2] 問題文(含コード&リンク):
(1)
ttp://www.ohmsha.co.jp/data/link/4-274-06519-7/index.htm
ここにあるオープンソースのTCPEchoServer-Forkを改造しSIGCHILDでゾンビプロセスを回収するようにする。その際にはsignalかsigactionシステムコールを用いる
(2)
マルチプロセス版のサーバーがクライアントと接続を確立させるまでの流れについて詳しく記述説明せよ
(3)
マルチプロセス版のサーバーが子プロセス(ゾンビプロセス)を回収する方法について2通り説明せよ
[3] 環境
 [3.1] OS:Ubuntu
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限: 11月15日17:00まで
[5]オーム社のホームページのソースコードを流用しています。■範囲を改造して動くものにしたいんですが…
ネットワークプログラミングの初歩で躓いてしまったのでどなたか教えてください。
714 ◆QZaw55cn4c :2010/11/13(土) 00:28:52
>>691
ご参考になれば幸いです。
http://codepad.org/DWbiFx0L
>>704
それが、サイズからして明らかに16bitビットマップなのに、「ビットの深さ」は32になってしまいます。
715デフォルトの名無しさん:2010/11/13(土) 00:35:28
画像を保存したソフトがバグってんだろ。ペイントとか普通に間違ったヘッダ情報入れることあるぜ
716デフォルトの名無しさん:2010/11/13(土) 00:38:52
ねーよw
717デフォルトの名無しさん:2010/11/13(土) 00:42:07
>>714
ありがとうございます!
コードについての質問なんですが、この部分では絶対値を取っているようですが、何故高さや幅の絶対値をとっているのでしょうか?
long iabs(long n) {
return (n > 0) ? n : -n;
}

>>715
そうかもしれません
読み込んでみたら0x41から正しいカラーのデータが入っていました。
こちらを見ると0x36からのようですが
ビットマップのフォーマット
http://kuwalab.net/technics/bitmap/index.html
718 ◆QZaw55cn4c :2010/11/13(土) 00:49:20
>>717
高さ biHeight が負ならイメージ情報が上から下へ、そうでなければ下から上へ格納されることを示しているとのことですので、
それに対応しました。
調べてみると、幅 biWidth が負になることはないようで、>>714 で絶対値をとっているのは余計でしたね。
719デフォルトの名無しさん:2010/11/13(土) 00:52:11
>>716
いや普通にある。
今試しに新規画像作って、ImageAsっていうソフトで32ビットに変換した後、
ペイントで24ビット指定で上書き保存した後プロパティで見ると32ビットのままになってるし。
720 ◆QZaw55cn4c :2010/11/13(土) 00:58:16
>>719
私もペイントで作業していたのですが、ペイントは正しく動いており、プロパティの方がいいかげんなようです。
721デフォルトの名無しさん:2010/11/13(土) 01:01:25
>>719 だからねーよw
722デフォルトの名無しさん:2010/11/13(土) 02:16:09
ねむれなひ。未解決の問題なにかある?
723デフォルトの名無しさん:2010/11/13(土) 02:16:57
俺の年収が一向に上がらない問題がある。解決してくれ。
724デフォルトの名無しさん:2010/11/13(土) 02:18:44
725 ◆QZaw55cn4c :2010/11/13(土) 02:32:48
>>717
その web ページは 16bitビットマップのカラーマスクについては情報が抜けています。
16bitビットマップでは、ヘッダ・情報ヘッダの次にカラーマスク情報があり、それからイメージ情報が格納されます。
このカラーマスク情報については、私は
http://www.ruche-home.net/?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2FBMP%A5%D5%A5%A1%A5%A4%A5%EB%BB%C5%CD%CD%2F%A5%D0%A5%A4%A5%CA%A5%EA%B9%BD%C2%A4#bitfields
を参照しました。
>>714 では、
void task_write_bitfield(FILE *fp)
近辺を参照ください。
726デフォルトの名無しさん:2010/11/13(土) 02:49:29
なんでMSDN見ないの
727デフォルトの名無しさん:2010/11/13(土) 03:15:10
>>724 さんくす
728デフォルトの名無しさん:2010/11/13(土) 13:12:46
[1] 授業単元:中級プログラミング
[2] 問題文(含コード&リンク):0から99までの範囲で整数の乱数を1000個、配列mとして生成させた後、ターゲットとなる整数を1つ定めて検索する。ターゲット数はコマンド引数 (プログラム開始時に与える引数 argv)として与える。
何番目の数字でターゲット整数が見つかるか、番兵を使わない関数 NonSentinel と、番兵を使う関数 Sentinel の 2つで求めるプログラムを完成させなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc バージョンは最新
 [3.3] 言語:C
[4] 期限:日曜日まで
[5] その他の制限:特になし

授業資料でこれを参考にしろとのことです。txtでうpしたのでよろしくお願いします。
http://www.dotup.org/uploda/www.dotup.org1247688.txt.html
「ここを作る」が2箇所あるので、よろしくお願いします。
729デフォルトの名無しさん:2010/11/13(土) 13:21:18
番兵って誰だよw
730デフォルトの名無しさん:2010/11/13(土) 13:32:37
>>729
えっ?
731デフォルトの名無しさん:2010/11/13(土) 13:45:17
>>729
俺だよ
732デフォルトの名無しさん:2010/11/13(土) 13:52:48
>>728
多分、こんな話じゃないかと思うけど、Sentinel() の方が有利である事を強調した実装にした方が良いのかな?
int NoSentinel(int target, int* m, int n)
{
int i;
for( i = 0; i < n; i++ )
 if( m[i] == target ) return i;
return -1;
}
nt Sentinel(int target, int* m, int n)
{
int i = 0;
m[n] = target;
while( m[i] != target )
i++;
if( i == n ) return -1;
else return i;
}
733デフォルトの名無しさん:2010/11/13(土) 15:21:32
ストッパー用に要素一つ増やさないとならないね
734デフォルトの名無しさん:2010/11/13(土) 15:29:22
>>729
最近現れるようになった文末w野郎は「番兵」を知らない情弱であったことが判明した。
735デフォルトの名無しさん:2010/11/13(土) 15:51:07
最近は自宅警備と言ってあげる方がわかりやすい
736デフォルトの名無しさん:2010/11/13(土) 16:02:19
>>728のソースだと番兵を何も設定してないんだけどw
737デフォルトの名無しさん:2010/11/13(土) 16:10:26
そら、これから番兵をつかってコードをかくんやから、なんもなくてあたりまえや。
738デフォルトの名無しさん:2010/11/13(土) 16:18:01
番兵に設定した値がデータの終端を示すのが普通なのに、
配列の最後に値入れてないし、sentinel()の引数にサイズ渡してるしで意味わかんない
739732:2010/11/13(土) 16:21:51
>>734
俺も知らなかったぉ

>>728 の main() には誤りが有るし、"40" って意味不明な行もあるけど写し間違えたのかな?
740デフォルトの名無しさん:2010/11/13(土) 16:22:06
>>738
よく読め
741デフォルトの名無しさん:2010/11/13(土) 16:23:12
>>738
サイズ渡さないで誰が番兵か判るんか?
742デフォルトの名無しさん:2010/11/13(土) 16:24:38
>>741
ハハハ
743デフォルトの名無しさん:2010/11/13(土) 16:25:16
>>741
お前が番兵の意味わかってない
744741:2010/11/13(土) 16:32:13
>>743
ここにフローが有るから読んだ方が良いな、ちなみに俺は >>732 でここ見て番兵法を知った
ttp://tokyo.cool.ne.jp/itcareerup/kaisetsu_1-2-3.html
745デフォルトの名無しさん:2010/11/13(土) 16:34:32
>>729
番兵って、検索する値を配列の一番最後に入れて
検索する値と一致したらループを終了。
その値が一番後ろで検索された場合、求める値が
配列には存在していないことが分かる。
746デフォルトの名無しさん:2010/11/13(土) 16:55:47
番兵って線形リストのNULL終端と同じだからな
線形リスト知ってるやつはどういうものかわかる
配列でわざわざ番兵って使っているのいるのかな
747デフォルトの名無しさん:2010/11/13(土) 16:58:17
このスレの回答見る限り>>732みたいな効率化はしない人間の方が多そうだな
748デフォルトの名無しさん:2010/11/13(土) 17:10:47
>>746
すまね。
>配列でわざわざ番兵って使っているのいるのかな
は誤解をまねくな。固定長配列で数字検索するのにわざわざ....だな
文字列(配列)の場合は'\0'が番兵だよな
749デフォルトの名無しさん:2010/11/13(土) 17:28:16
>>747
スレタイ読めないの?
750デフォルトの名無しさん:2010/11/13(土) 17:29:01
>>713
シグナルハンドラーを用意して SIGCHILD が来たときに wait() するだけじゃないの?
static void sigProc( int sig )
{
 if( sig == SIGCHAILD ) wait(0);
}
int main( 〜 )
{
 〜
 signal( SIGCHILD, sigProc );

みたいな感じ
但し、これには落とし穴が有る
select(), recv(), send() 等を実行中にシグナル受信した場合、そのシグナルは関数内で受信され、
関数はエラーとなり errno に EINTR が設定される
さらに受信したシグナルはシグナルハンドラーに渡らない
見た感じでは上記の関数は親プロセスで使用されていないので問題なさそうだけど、accept() も同様の
問題を抱えている可能性は有る(良いリファレンスのページが見つからなかったから自信無し)
これを回避するには sigprocmask で一時的にシグナルの受信をブロックするんだけど、環境依存が有ったかも知れん

[5] に関してはオームのページの何処かも、■範囲が何かも判らんから回答できないな


751750:2010/11/13(土) 18:01:55
記述に誤りが有ったので訂正と補足

×上記の関数 ○上記のシステムコール

accept() もシステムコールだから先の問題を抱えているのは確かだな
しかももっと悪い事に accept() は接続を受けるまでリターンしない
困ったなwww

もし、受信するシグナルが SIGCHILD だけで有るなら accept() がエラーを返したときに errno が EINTR だったら
wait(0) を実行するという荒業は有効かも知れない

正しく処理したいなら
0) sigprocmask() で SIGCHILD をブロックする
1) select() で accept 要求が存在するか確認する
2) 要求が存在したならば accept() を実行する
3) sigprocmask() でブロックを解除する
4) accept() を行った場合は fork() 等の処理
5) sleep() で1秒程度停止する
この様な処理でループを形成すれば1秒に一回はシグナルハンドラーにシグナル受信するチャンスを与えられる
ソケット通信のサンプルコードでここまでする必要があるかは疑問だけどな
752デフォルトの名無しさん:2010/11/13(土) 18:50:14
分散させるプログラムが課題が出たのですが、小数は%fでよめません、読めるはずですが
おしえて
753デフォルトの名無しさん:2010/11/13(土) 18:55:13
>>752
日本語でおk


まぁ、doubleなら%lfで読めばいいと思うよ
754デフォルトの名無しさん:2010/11/13(土) 18:58:51
>>752
つ %s
755デフォルトの名無しさん:2010/11/13(土) 19:00:23
>>752
#include <stdio.h>
int main() {
double d;
do {
scanf("%lf", &d);
printf("d = %f\n", d);
} while (d > 0);
return 0;
}
/* end */
756デフォルトの名無しさん:2010/11/13(土) 19:38:01
>>636
多分学校のではインストールされてると思うんですが…
757デフォルトの名無しさん:2010/11/13(土) 19:39:16
>>638のプログラムを
人ごとの平均点じゃなくて科目ごとの平均点を出すように変えてほしいんです。
758デフォルトの名無しさん:2010/11/13(土) 20:01:58
>>757
ポインタは習ったの?
759デフォルトの名無しさん:2010/11/13(土) 20:40:53
>>563
もっとスマートな方法があるだろうけど
質問レベルからするとこういうことなのかな?
単に引数でオブジェクトを2つとって平均返す関数つくるのかとも思ったけど
そのあと10人になるみたいなので
http://codepad.org/TLGCE0Np

ファイル分割はしてない
760デフォルトの名無しさん:2010/11/13(土) 20:52:46
>>753
ありがとうございましたできました。
lが必要とは先生の説明が間違ってたとは思わず、。
761デフォルトの名無しさん:2010/11/13(土) 21:12:36
先生はfloatでも使ってたんじゃ?
762デフォルトの名無しさん:2010/11/13(土) 21:35:30
>>>761
いい講義ではscanfを使わないdobleを使う平均でした、
課題のクストにscanの関数%fで指示でしたが講義ではキーから入力を使わなかったよ
763デフォルトの名無しさん:2010/11/13(土) 21:54:54
ここ見て思ったこと。
能力のない講師は、能力のない生徒より10000000倍ぐらい厄介だ。
764デフォルトの名無しさん:2010/11/13(土) 22:23:08
here look think thing.
no intel instructor is no intel student than 10000000 mul about yakkai.
765728:2010/11/13(土) 23:20:01
番兵の件で書き込んだ者です、なんか混乱を招いたみたいですみませんorz
頂いたレス参考にやってみます!
ありがとうございました。
766デフォルトの名無しさん:2010/11/13(土) 23:32:31
俺が番兵だ
767デフォルトの名無しさん:2010/11/13(土) 23:38:22
番兵君RX
768デフォルトの名無しさん:2010/11/13(土) 23:51:02
番兵ちゃん、マラソン世界一周は無事に終わるかな・・・
769デフォルトの名無しさん:2010/11/13(土) 23:57:57
>>759
ありがとうございます。どうして次の問題が10人分の平均ってわかったんですか?
770デフォルトの名無しさん:2010/11/14(日) 00:02:45
宿題スレの回答者はエスパー
771デフォルトの名無しさん:2010/11/14(日) 00:03:35
>>563=>604じゃなかったんか
772デフォルトの名無しさん:2010/11/14(日) 00:08:18
>>771
そうです。
ありがとうございます。
773デフォルトの名無しさん:2010/11/14(日) 00:57:55
>>750>>751
アドバイスありがとうございます!!
urlのサイトのサンプルコードのTCPEchoServer-Forkの40~48行間を改造するだけなんです
774デフォルトの名無しさん:2010/11/14(日) 01:02:01
>>773
>40~48行間を改造するだけなんです
そうなん。たった40-48行間を改造するだけなら、まだ時間あるから自分で出来るよ

名無しゲト、ずさーーーー
775デフォルトの名無しさん:2010/11/14(日) 01:13:47
>>759
因みに10人分の方はどうなるんでしょうか?
776デフォルトの名無しさん:2010/11/14(日) 02:18:10
>>759
あと、オブジェクトで渡すというのはどういう意味なんでしょうか
777750:2010/11/14(日) 05:40:08
>>774
40-48 を改造するというより 40-48 が不要になると思うよ
シグナルハンドラが SIGCHILD を拾うのは子プロセスが exit() した直後
そこで wait() を実行する事で子プロセスは完全に開放される
だから childProcCount をグローバル変数としてシグナルハンドラ内で wait() 直後にデクリメントするべきだ

40-48 を残した上でシグナルハンドラを実装すると子プロセスの2重殺しが生じるかも知れない
1) 子プロセスが SIGCHILD を送信
2) 親プロセスが waitpid() を実行
3) 親プロセスが SIGCHILD を受信
この順番で処理されると childProcCount が実際より小さくなってしまう

この辺は実際に動かして確認してごらん
childProcCount をデ/インクリメントした直後にその値を表示するようにして確認してみると良い
778デフォルトの名無しさん:2010/11/14(日) 05:42:20
>>765
無知な奴が勝手に混乱してただけだから気にするな
779750:2010/11/14(日) 09:22:03
>>773
>>777 はアンカーミスで >>773 に対するモノだった

ちょっと実務で嵌った件を思い出したので補足
シグナルハンドラ内で wait() を実行した時に、既に waitpid() で処理されていた場合は wait() が制御を返さないので
親プロセスは停止してしまうな
よって、シグナルハンドラ内でも waitpid() をノンブロックで実行すべきだ
サンプルコードでは waitpid() が 0 を返した場合は childProcCount を減じてないから、
同様の処理をシグナルハンドラ内でも行うなら先に述べた2重殺しによる問題は生じないだろう

一般に親プロセスのメインループ内で waitpid() を行うというのは少数派の様な気がする
シグナルハンドラ内で子プロセスの開放を処理できる事を前提として、
何らかの理由で開放できなかった子プロセスが無いかを確認する意味で
メインループを抜けてから waitpid() が 0 を返すまで実行する、これが普通じゃないかな
もっともサンプルコードだとメインループを抜ける事は無いんだけどね

>>713 の 3) の2通りは上記2パターンの事だろう
1)ループ内で waitpid() を実行し状態変化が有った子プロセスを検出・開放する、言わば能動的手法
2)シグナルハンドラ内で waitpid() または wait() を実行し終了報告を送ってきた子プロセスを開放する、言わば受動的手法

なんか文章下手でスマン
780デフォルトの名無しさん:2010/11/14(日) 09:29:02
よろしくお願いいたします。
[1] 授業単元:C++言語入門
[2] 問題文(含コード&リンク):

ネットワークのルートアドレスとネットマスク、そしてチェックしたいIPアドレスを
渡して、チェックしたいIPアドレスがそのネットワークに含まれているかどうかを
チェックする関数int checkIPAddress(unsigned int root,unsigned int mask,unsigned
int address)を以下のように書いた。空欄をうめよ。
ただし、あるIPアドレスがネットワークに含まれているかどうかチェックするには、
ネットワークのルートアドレス(root)と、チェックしたいIPアドレス(address)の
ネットワークIDを比較してその値が同じであったら、そのネットワークに含まれていると
判定します。IPアドレス中のネットワーク部は、ネットマスクのビットパターンが1である部分と
考えます。IPアドレスからネットワークIPを取り出すには、IPアドレスをネットマスクの
ビットごとのANDを取り出します。詳細はインターネットの検索エンジンで「ネットマスク」
をキーワードに調べてください。

int checkIPAddress(unsigned int root,unsigned int mask,unsigned int address)
{
return(root 空欄@ 空欄A)==(root 空欄B 空欄C)
}

[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: ([2010年11月30日まで
781デフォルトの名無しさん:2010/11/14(日) 10:18:04
こんにちは。基礎クラスで恐縮ですがよろしくお願いします。
[1] 授業単元: C基礎T
[2] 問題文(含コード&リンク):
問題1 int型変数 i , j が -10 < i <10 , -20 < j < 20 を満たすとする。
11*i + 7*j がちょうど1となるi , jの組み合わせを全て求めるプログラムを作成せよ。

問題2 キーボードから正の整数を1つ入力しその数が素数であるかを判定するプログラムを
for文 break文などを用いて作成せよ

問題3 キーボードから正の整数を1つ入力し、その数を二進数に変換して出力するプログラム。
forを用いること。表示形式は任意で正しければよい。
例えば、2で割ったあまりと商の値によって下の桁のビットから求めるなど。
 [3.1] Linux
 [3.2] gcc
 [3.3] C言語
[4] 期限:11月15日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
習ったのはfor文までで、配列などはまだ使ってません。
782 ◆QZaw55cn4c :2010/11/14(日) 11:22:30
783デフォルトの名無しさん:2010/11/14(日) 11:43:10
>>780
return ( root & mask ) == ( root & address );
か?でも、root == address の場合は偽になっちゃうな
return ( root & mask ) == ( address & mask );
の方が正しいと思うんだけど
784デフォルトの名無しさん:2010/11/14(日) 12:13:36
無料RPG製作ツール「ロープレジェネレーター」
ttp://sekisekki.net/regene.htm

特徴
直感的操作で簡単なゲームが作れます。
簡単に配布可能な状態に出力することができます。
HSP(ttp://hsp.tv/)製のソースコード付きで、スクリプトの知識があれば
自由度の非常に高いカスタマイズができます

・要望、不満点、バグ報告、応援メッセージなどなど書き込みお願いします。
今もどんどん進化中だ。
785デフォルトの名無しさん:2010/11/14(日) 12:14:51
<
786デフォルトの名無しさん:2010/11/14(日) 12:37:04
787デフォルトの名無しさん:2010/11/14(日) 12:40:55
[1] 授業単元:C言語

[2] 問題文:
(1)10個の最大値を求める
10人の身長データを順にcmで入力したとき、一番大きな身長は何pかを表示するプログラムを作成しなさい。
   実行結果は次の形らしいです。
   1人目の身長を入力してください (単位 : cm)
(入力待ち)
2人目の身長を入力してください (単位 : cm)
(入力待ち) .....略.....
10人目の身長を入力してください (単位 : cm)
(入力待ち)
   この中で身長が高い人は、○○cmです。
 ・指定
   for文を使い処理を10回繰り返す。
   最大値を記憶する変数を用意し、0を代入しておく。

[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C

[4] 期限:11月15日

よろしくお願いします
788デフォルトの名無しさん:2010/11/14(日) 12:42:52
[1] 授業単元:C言語

[2] 問題文:買い物金額を計算し、整理するプログラムを次の使用で作成しなさい。
  「税抜き単価」と「個数」を入力すると、次の出力が得られる。
   1.合計金額と税込み合計金額
   2.一番単価の安かったものの金額(税抜)
   3.一番単価の高かったものの金額(税抜)
    ・ただし、すべての商品が課税対象で税率5%とする。
    ・単価に0を入力したら処理を終了する。
   実行結果は次の形らしいです。
買い物をした単価は? : (入力待ち)
   何個買いましたか? : (入力待ち)
   これまでの合計金額は、○○(税込 : △△)円です。
   一番安いものの値段は、税抜××円です。
   一番高いものの値段は、税抜□□円です。
...............処理の繰り返し
   買い物の単価は : (0を入力して終了)

 ・指定
   単価の最小値・最大値を記憶する変数、単価の最大値を記憶する変数、金額合計を記憶する変数を用意し、それぞれ、10000、0、0を代入しておく。
   while(l)で無限ループ作る

[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C

[4] 期限:11月15日

よろしくお願いします
789デフォルトの名無しさん:2010/11/14(日) 12:54:12
[1] 授業単元:C言語

[2] 問題文:2〜1000の範囲すべての要素を求める
【指定】
・整数変数は、iとjの2個用意する
・iが素数か否かを調べる。それを2〜1000まで変化させる。
・iをjで割り、その余りが0ならば、iは素数でない。jは、2〜i-lまで変化させて、iが素数か否か調べる。
・iをjで割った余りをi%jで計算する。
・ループは2重
・外側は、iのループで、2〜1000の範囲である。
・内側は、jのループで2〜i-lまでの範囲。ただしiをjで割った余りが0になればループから抜ける(break文)
・iが素数か否かには、マークをつける。例えば、整数のprimeを用意し、これが1ならば素数、0ならば素数でないとする。
・外側のループの始まりでは、prime=1とする。
・内側のループでiをjで割ったとき余りが0ならば、prime=0として、break文をもちいてループから脱出する。
・外側ループの終わりには、prime=1ならば、iをディスぷれぃに書き出す命令を書く。

[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C

[4] 期限:11月12日

どうかよろしくお願いします
790デフォルトの名無しさん:2010/11/14(日) 13:03:21
scanfで値を読み取って何らかの計算をしてprintfで出力するプログラムは秋田
791デフォルトの名無しさん:2010/11/14(日) 13:09:48
別に無理に答えなくて良いんだぞ?
792デフォルトの名無しさん:2010/11/14(日) 13:42:25
>>775
>>759じゃないけど
太郎、花子って2人の入力してるんだから、あとは同じように8人分のデータを記述
するだけじゃない? 10人の時はプログラムに入力データ記述じゃなく、実用性を持たせる
ためにキーボード/ファイルからのデータ入力に対応するようにしろと?
793デフォルトの名無しさん:2010/11/14(日) 13:46:52
>>786
2年前の問題を同じ様に見間違える奴が居るのは面白いなw
同じ奴が再履修したとかだったらもっと笑えるけど
794デフォルトの名無しさん:2010/11/14(日) 13:57:46
>>788
1) 税込み計算をする時に小数点以下はどう扱う?
2) 税込み計算は単価に対して行うのか単価*個数に対して行うのか( 1)の答えが『小数点以下も扱う』なら関係ないけど)
が不明だな
795デフォルトの名無しさん:2010/11/14(日) 15:41:25
http://hibari.2ch.net/test/read.cgi/tech/1289715349/l50

1 : ◆QZaw55cn4c :2010/11/14(日) 15:15:49
あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。
796デフォルトの名無しさん:2010/11/14(日) 17:22:12
>>787
http://codepad.org/hp6QBC6E

>>788
http://codepad.org/lFzyyxKx

>>789
http://codepad.org/9bBzz5mv


ここまで詳細にヒントが出されてるなら自分でやれと思ってしまうが…
797 ◆QZaw55cn4c :2010/11/14(日) 17:28:56
>>796
(>>789)
>for ( j = 2 ; j < i-1 ; j++ ){
j < i
の方が問題的にも数学的にも正確ですね。

>>795
情宣ありがとうございます。
798デフォルトの名無しさん:2010/11/14(日) 17:30:57
>>797
相変わらず問題文が読めませんね
799 ◆QZaw55cn4c :2010/11/14(日) 17:34:03
>>798

>>789
>・内側は、jのループで2〜i-lまでの範囲。
j == i - 1 も含まれませんか?
800デフォルトの名無しさん:2010/11/14(日) 17:42:13
for ( j = 2 ; j <= i-1 ; j++ )
ってことじゃねーの
何で指定どおりに作らないのが正だと思っているのか知らんけど。
801デフォルトの名無しさん:2010/11/14(日) 17:52:52
◆QZaw55cn4c
自分で隔離スレ作っているのに、なんでここに来るんだ
客を隔離スレでひたすら待てよ
客が来ないもんだから、同業スレを荒らしに来たのか
802デフォルトの名無しさん:2010/11/14(日) 18:02:17
>>789
http://codepad.org/pwKn0e35

あいよ!j <= i-1だね
実際はj<=i/2まで調べればOKだから
結果変わらないので見落としてた、申し訳ないね
803デフォルトの名無しさん:2010/11/14(日) 18:02:53
>>801
客なんて簡単には来ないだろうから、大目に見てやれよ
1)無償のここで出題する
2)難問なので一日たってもレスが無い
3)仕方ないから有償スレを利用する
普通の客はこうするよ、つまりここで回答が得られない様な難問が一日期限が短くなって ◆QZaw55cn4c の客になる訳だ
頑張れよ >> ◆QZaw55cn4c
804デフォルトの名無しさん:2010/11/14(日) 19:21:17
>>802
for ( j = 2 ; j * j < i + 1 ; j++ )

これじゃ駄目かい?
805デフォルトの名無しさん:2010/11/14(日) 19:26:05
>>789
酷い問題文だと思うのだが、解答をだした人がいるのか・・・
806デフォルトの名無しさん:2010/11/14(日) 19:30:30
問題文読む限りその通りに作らないとまずい部類だろ
大人しく指定に従った方が吉だよ
807デフォルトの名無しさん:2010/11/14(日) 19:37:08
スレの性質上
どんなアホな質問でもテンプレに従ってる以上
回答は出さざるを得ないとは思うが
808デフォルトの名無しさん:2010/11/14(日) 19:37:26
>>806
おとなしく指定に従いたいのは山々だけど、2〜i-lではねぇ。
809デフォルトの名無しさん:2010/11/14(日) 19:50:13
>>1
気に入らない質問やその他の発言はスルーの方向で。
810デフォルトの名無しさん:2010/11/14(日) 20:03:09
>>789の依頼日、今日なのに
>[4] 期限:11月12日 には突っ込みいれないの
ゆとり世代だから、期限も超ゆとりなんだろ
811デフォルトの名無しさん:2010/11/14(日) 23:11:09
>>792
多分それを対応させるんだと思います

812デフォルトの名無しさん:2010/11/14(日) 23:15:53
>>811
もう対応してあるじゃん
813デフォルトの名無しさん:2010/11/14(日) 23:19:27
>>812
あ、そうなんですか。
ファイルを別に用意するのかと思ってました。
814デフォルトの名無しさん:2010/11/14(日) 23:24:59
wwwwwwwwwwwwwwwwww
wぺっぺろぺーwwwwwwwwwww
wwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwww
815デフォルトの名無しさん:2010/11/15(月) 00:09:51
>>792
10人分にするのはfor文とか使うんですか…
816デフォルトの名無しさん:2010/11/15(月) 00:18:31
[1] 授業単元: コンピュータシュミレーション
[2] 問題文:
下記は入試の学科別出願数である。
この表を折れ線グラフ、棒グラフおよび円グラフにするプログラムを作りなさい。
数学345、情報873、電気848、材料563、機械886、交通456、建設238、環境255、建築556
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:visual stdio2010
 [3.3] 言語: C++
[4] 期限:2010年11月16日まで
[5] その他の制限: 特にないです。
よろしくお願いします。
817デフォルトの名無しさん:2010/11/15(月) 00:21:16
>>759って
kokutoになってたりkokugoになってたりするんですが、これって何か意味はあるんでしょうか?
818デフォルトの名無しさん:2010/11/15(月) 00:29:37
>>815
妙な単発質問繰り返すまえにちゃんと他の人が聞いてることに答えろよ
10人分のデータはどこからもってくるんだ?
元画像みたいにソースに直接かきこまれてるのか?
配列になってるのか?
標準入力で打ち込むのか?
ファイルに読み込むのか?
その辺はっきりさせろ
819デフォルトの名無しさん:2010/11/15(月) 00:31:39
>>818
どちらも別にファイルを作ってそこから持ってくるんです。
820デフォルトの名無しさん:2010/11/15(月) 00:32:06
>>818
怒りに任せて書かないで、一度落ち着いてから書け。
ファイル「から」読み込むだろ。
821デフォルトの名無しさん:2010/11/15(月) 00:33:00
>>819
「どちらも」ってどれとどれ?
822デフォルトの名無しさん:2010/11/15(月) 00:35:37
>>820
そうです。すみません。ファイルから読み込むんです。

>>821
>>563>>604の問題です。
823デフォルトの名無しさん:2010/11/15(月) 00:44:00
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
・ランダムな整数列を生成し,選択ソートにより並べ替えるプ
ログラムを作れ。
(randを使用すること)
•またその実行時間を計測せよ
– UNIXのtime コマンドを使用すること
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月17日
[5] その他の制限: #include <stdio.h>からはじめること。
          mainの中身もお願いします。


824デフォルトの名無しさん:2010/11/15(月) 00:48:48
C++で<stdio.h>と来たか。乱数の個数の指定はなしか。
825823:2010/11/15(月) 01:21:39
すいませんが823は書き間違えました
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
・ランダムな整数列を生成し,選択ソートにより並べ替えるプ
ログラムを作れ。
(randを使用すること)
•またその実行時間を計測せよ
– UNIXのtime コマンドを使用すること
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限:11月17日
[5] その他の制限:  mainの中身もお願いします。

826デフォルトの名無しさん:2010/11/15(月) 07:29:48
C++でstdio.h使ってることに過剰反応する馬鹿はまさかいないよな?
827デフォルトの名無しさん:2010/11/15(月) 08:03:30
>>816
それをCUIで表示するの?
それとも Windowsアプリ を書くの?
どっちにしろ面倒だな、◆QZaw55cn4c のお客第一号候補かな?
828デフォルトの名無しさん:2010/11/15(月) 08:49:02
>>825
ほとんどCだけどな
ttp://codepad.org/rLytJVbT
829デフォルトの名無しさん:2010/11/15(月) 10:02:15
>>713はできたのか?
中途半端な解説で終わらせたけど何も反応ないな
830デフォルトの名無しさん:2010/11/15(月) 10:25:35
>>829
中途半端とは失礼だな、少なくとも何の意見も出してない奴に言われる筋合いは無いぞ
そもそも、あれを中途半端だと言えるだけの知識が君に有るとも思えないがな

あえて回答は与えなかったのは、通信・プロセス管理まで実装するレベルならヒントだけ与えれば自力でなんとかするだろうと考えたから
まぁどうしても出来ないってレスが有れば回答を与えても良いけどな
831デフォルトの名無しさん:2010/11/15(月) 12:21:23
>>816
>>795
あと、キャラクタベースにするか Windows アプリにするか教えてください。
832デフォルトの名無しさん:2010/11/15(月) 12:37:11
>>830
お前何様だよ
黙って宿題やれやカス
833デフォルトの名無しさん:2010/11/15(月) 12:55:23
>>831
中途半端が悪いことかどうかは置いといて、
質問スレじゃなくて宿題スレなんだから
片付いてない場合中途半端と言われてもしょうがないだろ
834デフォルトの名無しさん:2010/11/15(月) 13:00:40
完成品じゃないならゴミ
835デフォルトの名無しさん:2010/11/15(月) 13:06:00
[1] 授業単元:コンパイラ基礎
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1251271.txt.html
[3] 環境OS:Linux
コンパイラ名とバージョン:gcc
言語:C
[4] 期限:11月17日
836デフォルトの名無しさん:2010/11/15(月) 13:12:15
>>832
君よりは経験の有るプログラマだとは思うけどね
悔しかったら君が解けば良い

>>833
×中途半端な解説で
○中途半端に解説で

後者なら失礼とは感じない
837デフォルトの名無しさん:2010/11/15(月) 13:17:09
>>836
解けもしないくせに偉そうな奴だな
黙って引っ込んでろ
838デフォルトの名無しさん:2010/11/15(月) 13:19:00
宿題スレで議論やウンチするのは禁止
839デフォルトの名無しさん:2010/11/15(月) 13:21:17
自信があるのかないのかはっきりしない人だな
840デフォルトの名無しさん:2010/11/15(月) 13:51:13
>>837
失礼な奴だな、実は既に書いたが出題者からの要求が無いからアップしてないだけだ
実は書いてないくせにとか言われるのが悔しいから main() だけアップしてやる
ttp://codepad.org/IWQq0rHj
841デフォルトの名無しさん:2010/11/15(月) 14:36:33
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1251359.txt
[3] 環境:ubuntu
コンパイラ名とバージョン:gcc
言語:C
[4] 期限:11月15日
よろしくお願いします。
842デフォルトの名無しさん:2010/11/15(月) 14:50:47
>>841

#include <stdio.h>

int calc_kaijo(int n)
{
  int i=1;
  for(;0<n; i*=n--);
  return i;
}

int main(void)
{
  int n;
  while(1)
  {
    printf("input:");
    scanf("%d", &n);
    if(n < 0){ break; }
    printf("output:%d\n", calc_kaijo(n));
  }
  return 0;
}
843デフォルトの名無しさん:2010/11/15(月) 14:56:01
>>841

#include <stdio.h>

int result[9][9] =
{
  {81,72,63,54,45,36,27,18, 9},
  {72,64,56,48,40,32,24,16, 8},
  {63,56,49,42,35,28,21,14, 7},
  {54,48,42,36,30,24,18,12, 6},
  {45,40,35,30,25,20,15,10, 5},
  {36,32,28,24,20,16,12, 8, 4},
  {27,24,21,18,15,12, 9, 6, 3},
  {18,16,14,12,10, 8, 6, 4, 2},
  { 9, 8, 7, 6, 5, 4, 3, 2, 1},
};
int main(void)
{
  int i, j;
  for(i=0; i<9; i++){
    for(j=0; j<9; j++){
      printf("%2d ", result[i][j]);
    }
    puts("");
  }
  return 0;
}
844デフォルトの名無しさん:2010/11/15(月) 15:01:14
>>841

#include <stdio.h>

void print_cyokkaku_sankakkei(int x)
{
  int i;
  if(x < 1){
    return ;
  }
  else{
    for(i=0; i<x; i++){
      printf("*");
    }
    puts("");
    print_cyokkaku_sankakkei(x-1);
  }
}

int main(void)
{
  int x;
  printf("input:");
  scanf("%d", &x);
  print_cyokkaku_sankakkei(x);
  return 0;
}
845デフォルトの名無しさん:2010/11/15(月) 15:15:25
全角スペースw
846デフォルトの名無しさん:2010/11/15(月) 16:02:44
[1] 授業単元:C言語入門

[2] 問題文):#include <stdio.h>

void
main( void )
{
int a[10];
int i;
int *p;

for( i=0; i<10; i++ )
{
a[i] = i; /* i番目の要素に値iを入れる */
}

printf( "番号 : " );
scanf( "%d", &i );

p = a; /* 配列の先頭要素をポインタが指すようにする */
printf( "%d 番目=%d", i, *(p+i) );
return;
}
このプログラムを改造
1.a[i]の入力→キーボードから
2.*pの確認→while文を使う。
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限:11月16日
847デフォルトの名無しさん:2010/11/15(月) 16:50:04
>>846
#include <stdio.h>
int main( void ) {
int a[10], i; int* p;
for( i = 0; i < 10; i++ ) { printf( "%d番目の数字を入力:", i + 1 ); scanf( "%d", a + i ); }
p = a;
while( 1 ) {
printf( "表示させたいのは何番目の数字ですか:" ); scanf( "%d", &i );
if( i < 1 || i > 10 ) { printf( "範囲外の数字が入力されたので終了します\n" ); break; }
printf( "%d番目の数字は%dです\n", i, *(p+i-1) );
}
return 0;
}
848841:2010/11/15(月) 17:22:33
>>842
御早い回答ありがとうございます。
参考にさせていただきます!
849デフォルトの名無しさん:2010/11/15(月) 18:20:06
このスレには痛い「経験の有るプログラマ」がいるらしいな
850デフォルトの名無しさん:2010/11/15(月) 18:27:25
経験のないプログラマきどりよりはマシだろ
851デフォルトの名無しさん:2010/11/15(月) 18:40:13
余裕があるから痛さを演出できるのだ。
おまいらはエンターテナーとしての自覚に欠けている。
852デフォルトの名無しさん:2010/11/15(月) 19:06:31
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1251680.txt.html
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年11月15日00:00まで
[5] その他の制限:特になし
よろしくお願いします
853852:2010/11/15(月) 19:09:01
申し訳ありませんが、問題文中(↓)の(2),(3)はミスですので無視してください
1. 数字を数値に変換する関数char_int の作成

(1) 数字を数値に変換する関数 char_int を作成せよ.ただし,引数として1 文字を値渡しで
渡し,戻り値は変換後の数値とする.また,数字以外の文字が渡された場合は戻り値を-1 とする.

(2) 作成した関数 char_to_int が正常に動作するかどうかを次のmain 関数を使って確認せよ.

(3) 実行結果
854 ◆QZaw55cn4c :2010/11/15(月) 19:13:44
>>851
同意。
自ら隔離スレまで作る、ワタクシこと◆QZaw55cn4c の痛さといったら、もう誰にもまねできないんじゃないですか?
隔離スレ自体は速攻で存亡の危機にありますが。
855デフォルトの名無しさん:2010/11/15(月) 19:15:06
巣に帰れ
856デフォルトの名無しさん:2010/11/15(月) 19:17:06
C言語で簡単なマリオみたいなアクションゲームを作っています。
マリオのジャンプの実装方法は見つけたのですが、ダッシュはどのように実装すればいいのでしょうか?

マリオのジャンプ実装法とVerlet積分 - Gemmaの日記
http://d.hatena.ne.jp/Gemma/20080517/1211010942
857デフォルトの名無しさん:2010/11/15(月) 19:20:37
痛さを演出できるのだ(笑)
858>>713:2010/11/15(月) 19:21:20
>>840
ありがとおおおおおおおおおおおおおおおおおおおおおおお
時間にギリギリ間に合ったけど所々あやふやだった

誰か俺をコンパイルしてくれ
859デフォルトの名無しさん:2010/11/15(月) 19:22:22
>>856
スレ違いだ、帰れ。
俺はお前より経験の有るプログラマだ。
860デフォルトの名無しさん:2010/11/15(月) 19:23:23
>>858
もう二度と来るなよ。
861デフォルトの名無しさん:2010/11/15(月) 19:24:30
>>852

#include <stdio.h>

int char_int(char c)
{
  if(('0' <= c) && (c <= '9')){ return (c-'0'); }
  return -1;
}

void str_to_int(char* str, int* result, int* num)
{
  for(*num=0; *num<strlen(str); (*num)++){
    result[*num] = char_int(str[*num]);
  }
}

int main(void)
{
  char str[6] = "12345";
  int result[5];
  int num, i;
  str_to_int(str, result, &num);
  printf("文字列\"%s\" -> %d 個の整数値", str, num);
  for(i=0; i<num; i++){ printf("%d, ", result[i]); }
  return 0;
}
862デフォルトの名無しさん:2010/11/15(月) 19:26:18
すみません、ベルガモットティーの美味しいいれかたを教えてください。
863デフォルトの名無しさん:2010/11/15(月) 19:29:23
>>861
ひでえな
864デフォルトの名無しさん:2010/11/15(月) 19:30:53
>>856
なんで計算でやろうとするの?
そういうのはエミュレーターでマリオを走らせて1フレームずつ座標変化を確認してテーブル化するのが基本。
本物のマリオもテーブル化でやってると思う。
865デフォルトの名無しさん:2010/11/15(月) 19:33:37
>>864
エスパーかw
866デフォルトの名無しさん:2010/11/15(月) 19:38:56
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
キーボードからONを入力すると1を、OFFを入力すると0(ゼロ)を、その他の入力ではErrorとそれぞれ表示するプログラムを作れ。
この場合、ONとOFFは大文字、小文字、それらの混合を問わないものとする。

*注
Cのライブラリ関数の中にtoupper()とtolower()という関数があり、それぞれ文字型データを引数として受け取り小文字は大文字に、大文字はそのまま(tolower()は逆)返す関数がある。
使い方を調べて使用せよ。  
 
  [3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月17日
[5] その他の制限: なし
よろしくお願いします。
867デフォルトの名無しさん:2010/11/15(月) 19:46:55
#include <stdio.h>

int main(void)
{
  char str[100];
  scanf("%s", str);
  int i;
  for(i=0; i<strlen(str); i++){ str[i] = toupper(str[i]); }
  if(strcmp(str, "ON") == 0){ puts("1"); }
  else if(strcmp(str, "OFF") == 0){ puts("0"); }
  else{ puts("Error"); }
  return 0;
}
868デフォルトの名無しさん:2010/11/15(月) 19:58:00
>>858
main() だけで判ったって事は select() と sigprocmask() については自分で調べて実装したって事だね
もう用無しだけど、僕が書いたコードはこれ

ttp://codepad.org/WkGZDhbs

あやふやな部分を確認してくれると嬉しい
869デフォルトの名無しさん:2010/11/15(月) 19:58:43
ひでえな
870852:2010/11/15(月) 20:02:04
>>861で回答してもらったものが正常に動作しなかったので
すみませんがどなたか>>852をお願いします
871デフォルトの名無しさん:2010/11/15(月) 20:11:54
>>870
>正常に動作しなかったので
って、どう期待する動作と違った?
期待した動作と>>861の駄目な動作ぐらい書かないと、はぁそうですかだよ
また解答貰っても、また正常に動作しなかったのでの繰り返しになる可能性ある
872デフォルトの名無しさん:2010/11/15(月) 20:14:29
>>870
俺は >>861 じゃないけど動いたよ
強いてケチつけるなら <string.h> が include されてない事と、出力の最後に改行コードが無いくらいだな
873872:2010/11/15(月) 20:15:53
>>871
おせっかいだったね、すまん
874852:2010/11/15(月) 20:26:26
>>852です。>>861でいただいた回答をコンパイルしたところ、
c.c:5 error: stray ‘\343’ in program
のようなエラーが大量に出てきてしまい、コンパイルできませんでした。

他の方はちゃんと動いているようなのですが、コンパイラの問題でしょうか?
875デフォルトの名無しさん:2010/11/15(月) 20:28:40
全角スペースw
876デフォルトの名無しさん:2010/11/15(月) 20:31:31
全角スペースの話は新参者の為にテンプレに追加すべきだと思う
877デフォルトの名無しさん:2010/11/15(月) 20:34:19
全角スペースでインデントするアホが悪いだろw
878デフォルトの名無しさん:2010/11/15(月) 20:35:57
>>861
全角スペースはともかく
strlenを使うのはちょっと問題から外れてる気がする
879デフォルトの名無しさん:2010/11/15(月) 20:36:38
条件判定部でstrlen()とかバカ丸出しw
880デフォルトの名無しさん:2010/11/15(月) 20:38:33
普通にヌル文字で終了判定すればいいものを
881デフォルトの名無しさん:2010/11/15(月) 20:42:30
>>816です
>>816
>>831
本当に基礎的な知識しかないので用語が分からないのですが
wordにプログラムを書いて提出しろとのことなのでアプリにする必要はないとおもいます。
お時間あって出来る方お願いします。
882852:2010/11/15(月) 20:50:10
みなさんありがとうございます。
半角で字数下げして無事にコンパイルできたのですが、どなたか
strlenを使わないコードにしてもらえませんでしょうか
883デフォルトの名無しさん:2010/11/15(月) 20:51:04
int main(int argc, char *argv[])
{
           return 0;
}
884デフォルトの名無しさん:2010/11/15(月) 20:51:25
>>881
Word だと?まさか Word にグラフ書けって問題じゃあるまいな
885デフォルトの名無しさん:2010/11/15(月) 20:54:16
・キーボードから入力された2つの整数a,bに対して,aからbまでの総和を求めるプログラム

・二つの入力した整数値x,yのxのy乗を計算するプログラム

・画面に(m,n)(n=1....5,m=1....5)とその掛け算の結果を表示するプログラム

・画面の一行目には*を1個、二行目には2個、三行目には3個のように表示するプログラム

単位かかってるんだ。さっぱりわからんから頼む
886デフォルトの名無しさん:2010/11/15(月) 20:58:26
>>882
str_to_int() の strlen() 使わない版だ、他は変更しなくて良い

void str_to_int( char* s, int* res, int*num )
{
(*num) = 0;
while( *s ) {
(*res) = char_int( *s );
s++; res++; (*num)++;
}
}
887882:2010/11/15(月) 21:01:33
>>886
ありがとうござました
888デフォルトの名無しさん:2010/11/15(月) 21:06:10
>>884
書き方分かりにくくてすいません。
visual stdioでつくったプログラムとその実行結果をwordに移すというものです。
889デフォルトの名無しさん:2010/11/15(月) 21:12:10
890デフォルトの名無しさん:2010/11/15(月) 21:12:26
>>885
============================
#include <stdio.h>

int main(void)
{
  int a,b,sum=0;
  printf("a:"); scanf("%d", &a);
  printf("b:"); scanf("%d", &b);

  sum = a;
  while(a!=b){
    if(a < b){ a++; }
    else{ a--; }
    sum += a;
  }
  printf("result:%d", sum);

  return 0;
}
============================
#include <stdio.h>

int main(void)
{
  int x,y,result=1;
  printf("x:"); scanf("%d", &x);
  printf("y:"); scanf("%d", &y);
  while(y--){ result*=x; }
  printf("result:%d", result);
  return 0;
}
891デフォルトの名無しさん:2010/11/15(月) 21:21:46
============================
#include <stdio.h>

int main(void)
{
  int m,n;
  for(m=1; m<=5; m++){
    for(n=1; n<=5; n++){
      printf("m:%d,n:%d,m*n:%d\n", m, n, m*n);
    }
  }
  return 0;
}
============================
#include <stdio.h>

int main(void)
{
  int i=0,j;
  while(++i){
    for(j=0; j<i; j++){ printf("*"); }
    puts("");
  }
  return 0;
}
892デフォルトの名無しさん:2010/11/15(月) 21:25:16
>889
>890
y < 0のときはどうなの
893デフォルトの名無しさん:2010/11/15(月) 21:26:58
ヌル文字判定で済む所をわざわざstrlenを使って可読性を上げているところに気づけないとはプログラミングセンスがない
894885:2010/11/15(月) 21:32:32
>>889
>>890
>>891
ありがとうございました!

あと本当にすみません。
四つ目の問題は、入力した整数値の行まで表示することでしたorz

それともう一つお願いします
キーボードから入力した5つの整数値を配列に入れて、その総和を求めるプログラムを作成
895デフォルトの名無しさん:2010/11/15(月) 21:36:40
>>893
可読性云々前に
ループ回すたびにstrlenを呼び出すのがセンス無いんだよ
896デフォルトの名無しさん:2010/11/15(月) 21:38:20
>>892
そんなこと書いてないから
897デフォルトの名無しさん:2010/11/15(月) 21:40:37
>>888
じゃアプリは必要だよね、VS指定って書いてるからwindowsのGUIアプリで間違い無さそうだ
そもそもCUIで円グラフなんて考えたくもないしね
んでもってその描画結果のスクリーンショットを Word に張ってプログラムと一緒に出せって事だね

はっきり言おう、それを明日の朝までに無償で書いてくれる物好きは多分居ない、諦めろ

駄目もとで >>795 のスレに依頼するとなんとかなるかも知れない、500円掛かるらしいけど
....まぁ俺は断られる方に賭けるけどね
898デフォルトの名無しさん:2010/11/15(月) 21:43:20
899デフォルトの名無しさん:2010/11/15(月) 21:45:19
y < 0のとき対応

#include <stdio.h>

int main(void)
{
  int x,y;
  double result = 1.0;
  printf("x:"); scanf("%d", &x);
  printf("y:"); scanf("%d", &y);

  if(x != 0){
    if(0 < y){
      while(y--){ result*=x; }
    }
    else if(y < 0){
      y *= -1;
      while(y--){ result*=x; }
      result = 1/result;
    }
  }
  printf("result:%f", result);
  return 0;
}
900デフォルトの名無しさん:2010/11/15(月) 21:50:40
致命的な問題が起きない限り可読性優先すべきだろ
処理速度優先ならプログラミング言語なんか全部破棄して回路設計で半田ごてでもやってろ
901デフォルトの名無しさん:2010/11/15(月) 21:52:12
>>900
決まり文句ってのがあってだね
902885:2010/11/15(月) 21:54:27
>>898
ありがとうございます!
903デフォルトの名無しさん:2010/11/15(月) 21:54:50
904デフォルトの名無しさん:2010/11/15(月) 21:58:24
>>900
半田ごてさんこんばんわwwwwww
905デフォルトの名無しさん:2010/11/15(月) 22:00:48
回路設計では半田ごて使わなくね?
っていうか今時半田ごてじゃなくて半導体パターンプリントじゃね?
906デフォルトの名無しさん:2010/11/15(月) 22:02:21
それなんてゴテハン?
907デフォルトの名無しさん:2010/11/15(月) 22:04:08
ゴッテゴテやな
908デフォルトの名無しさん:2010/11/15(月) 22:07:00
>>905
FPGL を verilog とか VHDL とか SFL(笑)とか。
909デフォルトの名無しさん:2010/11/15(月) 22:09:29
SFL(笑)だけ知らないんだけど、なんかダメな奴なの?
910デフォルトの名無しさん:2010/11/15(月) 22:11:21
「回路設計で半田ごてする」というのはどういう作業なのだろう?
911デフォルトの名無しさん:2010/11/15(月) 22:11:28
ということで
>>852
Verilog,VHDL,SystemVerilog,SystemC等好きなHDLで解答することになりました。
よろしくです。
912デフォルトの名無しさん:2010/11/15(月) 22:12:29
今時半田ごてなんて単語を聞くとは思わなかった
913デフォルトの名無しさん:2010/11/15(月) 22:14:20
半田このやろう!
914デフォルトの名無しさん:2010/11/15(月) 22:14:42
>>911
大日本民国の誇る最強HDL
でNTTがやった
915デフォルトの名無しさん:2010/11/15(月) 22:15:01
>>900
回路にしてしまうと、拡張や修正に莫大なコストがかかるんだな、これが。
もし就職して製品コードを書くんだとしたら、可読性も速度も両方重要だよ。
変な言い訳してないで、正しい指摘は受け入れなさい。
916デフォルトの名無しさん:2010/11/15(月) 22:15:43
>>914>>909
917デフォルトの名無しさん:2010/11/15(月) 22:15:51
>>909
http://ja.wikipedia.org/wiki/SFL
だめではないと思いますが、知名度が‥‥‥。
1990 年代に学部の授業でいろいろとやらせてもらいました。
当時は GAL/FPGA (>>908 で typo ってしまいました。) までは体験しなかったのですが、もしそこまでいける状況であればもっと楽しかったかもしれません。

C++ 風の OO (virtualはありません)だったことを記憶しています。
918デフォルトの名無しさん:2010/11/15(月) 22:18:42
◆QZaw55cn4cは巣に帰れよ
919デフォルトの名無しさん:2010/11/15(月) 22:19:27
>>917 ◆QZaw55cn4c付け忘れているんじゃない?
920デフォルトの名無しさん:2010/11/15(月) 22:19:59
>>914>>917
なるほど、Verilog、VHDLは知ってるけどSFLは聞いたこともなかったよw
921デフォルトの名無しさん:2010/11/15(月) 22:21:36
宿題こないなー
922デフォルトの名無しさん:2010/11/15(月) 22:24:06
たまにはエッチなC言語の宿題来いよ!
923デフォルトの名無しさん:2010/11/15(月) 22:34:44
>>919
それはないだろ、◆QZaw55cn4c が40歳だと思うか?
924デフォルトの名無しさん:2010/11/15(月) 22:39:05
半田後手
925デフォルトの名無しさん:2010/11/15(月) 22:48:24
みかかの文字が目に入った時点で拒絶反応が
926デフォルトの名無しさん:2010/11/15(月) 22:55:59
>>816
暇つぶしに作ってみた。
http://codepad.org/sIKafWwL
927デフォルトの名無しさん:2010/11/15(月) 23:02:44
「〜てみた」
928デフォルトの名無しさん:2010/11/15(月) 23:15:01
半田このやろう!
929デフォルトの名無しさん:2010/11/16(火) 00:20:34
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1251271.txt.html
[3] 環境OS:Linux
コンパイラ名とバージョン:gcc
言語:C
[4] 期限:11月17日
930デフォルトの名無しさん:2010/11/16(火) 00:44:51
E()とかT()とかF()とか舐めてんの?その上コメントもない。読みたくねえよ
931デフォルトの名無しさん:2010/11/16(火) 01:18:27
>>930
文句言う相手がちがうYo
講師が学生をなめきっているんだよ
それ、元出題者の講師に言え
講義にちゃんと出ている奴ならコメント無しでも問題ないんだろうがな
丸投げ君はね....分るだるよね
932デフォルトの名無しさん:2010/11/16(火) 01:18:55
さすがにこれは酷いな、グローバル変数しか無いんじゃないのか?
933デフォルトの名無しさん:2010/11/16(火) 01:26:13
C99環境ないからコンパイル通らないや
俺もパス
934デフォルトの名無しさん:2010/11/16(火) 01:47:15
bcc 通してみたけど明確なミススペルが有ったよ
while() が While() だったり、RPALEN が PRALEN だったりとか、 '\' なんてのも有ったな
環境云々のレベルじゃないね
コードの意図としては数式の文法チェックだと思うけど、正しいと思う式を入力してもエラーになるからバグってる可能性大
ちゅかコンパイルも通してないソースがバグって無い可能性はかなり低いよね

『このプログラムを改造して』って言われたらパスするよ、>>929 が不憫でならないよ

935デフォルトの名無しさん:2010/11/16(火) 02:02:36
>>480で質問させてもらった者です。
これを利用して、http://codepad.org/AqL2FSg7このようにしたのですが
うまくいきません。
内容は、
no[]の最小値を選択してそこに+2をする、ここまではいいのですが、追加で、
no[]の配列から最小値を選択するときに、最小値が複数存在した場合、
value[]の配列の中の大きいほうの値をランダムで選択して(値が大きい方が選ばれやすくする)、
no[]の配列に、選択されたvalue[]と同じ位置に+2をして、その結果を出力する。

またよく説明できないんですが、
たとえば、最初はno[]がすべて0で最小値が等しいからvalue[]の値を見て、
8とか、9とか10とかの大きい値が(ランダムに)選ばれます。9が選ばれたとすると、
9はvalue[]の7番目だから、no[]の7番目に+2をします。
次は、no[]の7番目に2って入ってるから、それ以外、最小値を選択して、
value[]の値を見て8や10などの大きい値が(ランダムに)選ばれます。
10が選ばれたとすると10は8番目だからno[]の8番目に+2をする
これの100回くり返します。

すみません。よろしくお願いします。
936デフォルトの名無しさん:2010/11/16(火) 06:49:38
937デフォルトの名無しさん:2010/11/16(火) 07:24:23
866の者です。 
867の方に作ってもらったプログラムですがどれを入力してもErrorとなってしまいます。
すみませんが修正の方をお願い出来ますか?
よろしくお願いします
938デフォルトの名無しさん:2010/11/16(火) 07:35:42
俺はちゃんと動くよ
具体的な実行結果を載せてくれよ
939デフォルトの名無しさん:2010/11/16(火) 07:42:00
[1] 授業単元:組込み工学
[2] 問題文(含コード&リンク):入力された上位4bitと下位4bitを計算して
その結果を16進数で表すプログラムを作成せよ。
例として上位4bitが12、下位4bitが5のときは11と出力。
応用として逆転したものも作ること。
例として上位4bitが12、下位4bitが5のときはEEと出力。
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: visual studio
 [3.3] 言語:C
[4] 期限:明日の12時まで
[5] その他の制限:応用ではチルダ~を使わないで作ること。
940デフォルトの名無しさん:2010/11/16(火) 07:43:47
>>939
入力は「1101」みたいに2進数ビット?
941デフォルトの名無しさん:2010/11/16(火) 07:44:28
あぁごめん、書いてあるね
>例として上位4bitが12、下位4bitが5のときは11と出力。
942デフォルトの名無しさん:2010/11/16(火) 08:03:16
>>939
入力するのは19711みたいに数字1個でいいの?
943デフォルトの名無しさん:2010/11/16(火) 08:16:35
すみません、説明不足でした。
入力は二回です
一回目のときに二進数で15までの上位4bit、
二回目のときに二進数で15までの下位4bitというのでお願いします。
944デフォルトの名無しさん:2010/11/16(火) 08:42:03
2回にわけて入力して、しかもそのまま足すだけじゃ、上位でも下位でもないような
945デフォルトの名無しさん:2010/11/16(火) 08:43:42
ちょっと計算方法が良く分からん
946デフォルトの名無しさん:2010/11/16(火) 09:24:42
ただの足し算だろ
947デフォルトの名無しさん:2010/11/16(火) 10:20:07
ただの足し算だろ(笑)
948デフォルトの名無しさん:2010/11/16(火) 10:28:14
ビットフィールドでやるのか、シフト演算子でやるのか
949デフォルトの名無しさん:2010/11/16(火) 10:57:42
>>939
上位4bitが12(0x0c)、下位4bitが5(0x05)のときは0x11(*1)と出力なのか?
単に加算してる様にしか見えないな、0xEE は 0xFF - 0x11 だから(*1)のビット反転したものだ
例から考えると問題はこうじゃないのか?

入力した数値(0〜255)の上位4bitと下位4bitを加算した結果を16進で表示せよ
また、結果のビット反転も16進で表示せよ

問題文とは似ても似つかないな...orz
950デフォルトの名無しさん:2010/11/16(火) 12:05:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):キーボードからONを入力すると1を、OFFを入力すると0を、
その他の入力ではErrorとそれぞれ表示するプログラムを作れ。この場合ONとOFFは大文字、小文字、それらの混合を問わないものとする。
『注』
cのライブラリ関数の中にtoupper()とtolower()という関数があり、
それぞれ文字型データを引数として受け取り小文字は大文字に、大文字はそのまま(tolower()はその逆)返す関数がある。使い方を調べて使用せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: emacs
 [3.3] 言語:C
[4] 期限: 2010/11/17
951デフォルトの名無しさん:2010/11/16(火) 12:18:31
>>950
#include <stdio.h>

int main(void)
{
  char str[100];
  scanf("%s", str);
  int i;
  for(i=0; str[i] != '\0'; i++){ str[i] = toupper(str[i]); }
  if(strcmp(str, "ON") == 0){ puts("1"); }
  else if(strcmp(str, "OFF") == 0){ puts("0"); }
  else{ puts("Error"); }
  return 0;
}
952939:2010/11/16(火) 12:44:14
>>939です。ごめんなさい。実は私、組込み的なことをやっているので
皆さんにはちょっとわかりにくかったかもしれません。
よく考えたらただの足し算でした。
>>949さんのような解釈で間違いありません。
迷惑をかけてしまいすみませんでした。
953デフォルトの名無しさん:2010/11/16(火) 12:51:54
>>951

950です。
すごく早い対応ありがとうございます。
954デフォルトの名無しさん:2010/11/16(火) 12:56:00
>>952
組み込みやってる奴がみんなお前みたいな日本語不自由者に思われるからやめてください
955デフォルトの名無しさん:2010/11/16(火) 13:43:27
すみません、以前>>511の質問をして>>514の解答をいただいたのですが
この文をbreak文を使わずに表せますか?
よろしければお願いします
何度も申し訳ないです
956デフォルトの名無しさん:2010/11/16(火) 13:46:08
>>955
#include<stdio.h>

int main(void)
{
int i, n, count=0;

for(n=21;n<=1324;n++)
{
if((n/10)%10==3)
{
int is_prime=1;
for(i=2;i*i<=n;i++)
{
if(n%i==0) is_prime=0;
}
if(is_prime) count++;
}
}
printf("\n%d\n", count);

return 0;
}
957デフォルトの名無しさん:2010/11/16(火) 13:50:52
>>956
すみません、[is_prime]の文を使わずに…
もうforとifの他は使わないくらい簡単にお願いできますか
958デフォルトの名無しさん:2010/11/16(火) 13:55:01
959デフォルトの名無しさん:2010/11/16(火) 13:59:44
>>958
ありがとうございます
学びはじめたばかりの自分でも理解出来ました
何度もお手数をおかけしました
960デフォルトの名無しさん:2010/11/16(火) 14:09:15
>>959
理解できたなら別スレの質問も締めておいてね、やっていること殆ど同じなんで。
961デフォルトの名無しさん:2010/11/16(火) 14:11:04
すみません、>>958で該当する数の総和を求める場合はどのようなものになりますか
962デフォルトの名無しさん:2010/11/16(火) 14:18:25
前に>>510で回答している。
prime関数で素数かどうか調べて総和の入れ物のsumに入れているだけ。
963デフォルトの名無しさん:2010/11/16(火) 14:29:15
>>962
ありがとうございます
無事出来ました
964デフォルトの名無しさん:2010/11/16(火) 15:06:06
半田このやろう!
965デフォルトの名無しさん:2010/11/16(火) 17:35:51
[1] 授業単元:統計データ解析
[2] 問題文:

【時刻】【降水量】【気温】
1 10:00 10 10
2 10:30 10 20


300000 22:30 20 25

上記のテキストデータをそれぞれ配列として読み取り、降水量の最大値と気温の平均値を求めるプログラムを作成せよ。尚、時刻は文字列として読み取ること。

[3] 環境
 [3.1] OS:Windows
 [3.2] VC 6.0
 [3.3] 言語:C
[4] 期限: 2010年11月19日

コンパイルまでは出来たのですが、作成したexeファイルを実行するとエラーが出てしまいます。
要素数を300000ではなく、100にすると上手く実行できました。
口頭での課題でしたので、表現が曖昧かもしれませんがどうかよろしくお願い致します。
966デフォルトの名無しさん:2010/11/16(火) 17:41:11
>>965
配列はstaticに取れ
967デフォルトの名無しさん:2010/11/16(火) 17:43:00
変数は全てグローバルにしろ
968デフォルトの名無しさん:2010/11/16(火) 17:48:29
>>967
それはやり過ぎ
969デフォルトの名無しさん:2010/11/16(火) 17:50:39
>>965
とりあえず100でOKだった時のソースをどっかに張れ
見れば一発系の不具合臭い
970デフォルトの名無しさん:2010/11/16(火) 18:05:46
0か1かをランダムに出力する変数rndを作りたいのですが、以下のように記述し、ループを回すと
ほとんど0しか出力されませんでした。どのようにすればこれより良い乱数が作れますか?
rnd=(int)((double)rand() / ((double)RAND_MAX + 1) * 2);
971デフォルトの名無しさん:2010/11/16(火) 18:08:18
皆さんご指導ありがとうございます。

>>956
授業中に作ったもので手元にソースは無いのですが、型の宣言?はこんな感じでした。
#define num 700000
char jikoku[num];
int kousui;
int kion;
972デフォルトの名無しさん:2010/11/16(火) 18:08:25
static int rnd = 0;

rnd = rnd ? 0 : 1;
973デフォルトの名無しさん:2010/11/16(火) 18:11:49
すみません num 700000ではなく300000(100)です。
ソースの他の部分は参考書をそのままコピペしました。
974デフォルトの名無しさん:2010/11/16(火) 18:15:44
>>970
(rand()>>4)%2
975デフォルトの名無しさん:2010/11/16(火) 18:16:51
>>971
1行ずつ読むんだろうから
そこは文字数じゃないと思うぞ
976 ◆QZaw55cn4c :2010/11/16(火) 18:22:38
>>970
http://codepad.org/1fNIcmC4
手元の環境(cygwin/gcc 4.3.4) でも codepad でもうまくいくんですけれどもね。
実行した環境やコンパイラを教えてください。
977デフォルトの名無しさん:2010/11/16(火) 18:29:55
◆QZaw55cn4cはお帰り下さい
自分の技術知識を売り物にしようってんだからタダで答えちゃいかん
978デフォルトの名無しさん:2010/11/16(火) 18:55:28
まぁべつに質問者は宿題が片付けられればなんでもいいわけだから、
回答者なんて気にしてないんじゃない?
979デフォルトの名無しさん:2010/11/16(火) 19:12:21
>>970
別のアルゴリズムを使う
980デフォルトの名無しさん:2010/11/16(火) 19:17:26
10年前とかならともかく
今の乱数生成器はよくできてるから
普通にrand()%2でもそんなに偏ることはないと思うけどな
毎回srand()とかしてない限りは
981デフォルトの名無しさん:2010/11/16(火) 19:19:09
えっ!?
982デフォルトの名無しさん:2010/11/16(火) 19:23:06
下位ビット捨ててるだけだからある程度は偏ると思うけど
01交互とかはないだろうけど
983デフォルトの名無しさん:2010/11/16(火) 19:31:54
交互が欲しいなら乱数いらなくね?
984デフォルトの名無しさん:2010/11/16(火) 19:36:06
printf("0か1かをランダムに入力してください: ");
scanf("%d", &rnd);
985デフォルトの名無しさん:2010/11/16(火) 19:42:17
15パズルを解くプログラムを作りなさいという課題に
同じ盤面を通らないで後はランダムに状態を遷移させているのですが、4000回状態を遷移しても完成に至りません
そういうものなのでしょうか?また、なぜか探索は使ってはいけないそうです・・
986デフォルトの名無しさん:2010/11/16(火) 19:46:24
探索しないでランダムだったら運を天に任せるしか
987デフォルトの名無しさん:2010/11/16(火) 20:06:31
15パズルこのスレで作った気がするw
いや?あれはマインスイーパだったか。
数独もやったなぁ。不完全ながら。最近回答してないなぁ。
◆QZaw55cn4cさんは相変わらずはっちゃけててワロタw
988デフォルトの名無しさん:2010/11/16(火) 20:08:06
「同じ盤面を通らない」がうまくいってないんじゃ
989デフォルトの名無しさん:2010/11/16(火) 20:08:57
試してみた
#include <stdio.h>
#include <stdlib.h>

main()
{
int i;
for (i=0;i<50;i++)
printf("%d",rand()%2);
return 0;
}

DMC :00111101001100111110001110110001001101100011101100
Turbo C++ :00001110000110001111101010110111100111010000100111
VC6〜10、Open Watcom1.9 :11001000001111111010100100100110101011101101101110
gcc(cygwin) :01101000001111101001011000110011100100000110001111
990デフォルトの名無しさん:2010/11/16(火) 20:09:37
最初のシャッフルがおかしいとか?
ランダムに詰め込んでも駄目だったはず。
並んでるのを、ずらしていかないと。
991デフォルトの名無しさん:2010/11/16(火) 20:10:48
>>989
シードを固定するか、それか、
もっと沢山回して、0/1比を出しておくれ。
992デフォルトの名無しさん:2010/11/16(火) 20:11:24
>>988
状態数が 15!/2 とするなら 4000回程度で完成する確率は 0.0000001% 未満
993985:2010/11/16(火) 20:12:21
>>988
そこはうまく行ってるはずなんですけどね・・・
994デフォルトの名無しさん:2010/11/16(火) 20:17:58
3分C言語
995デフォルトの名無しさん:2010/11/16(火) 20:21:23
メルセンヌツイスタでも使えよ
996 ◆QZaw55cn4c :2010/11/16(火) 20:28:50
>>990
偶奇性(パリティ)があるんですよね、たしか。
997デフォルトの名無しさん:2010/11/16(火) 20:29:14
>>991
自分でやれよと思いつつやってみた
#include <stdio.h>
#include <stdlib.h>

main()
{
int i,zero=0,one=0;
for (i=0;i<100000;i++)
rand()%2?one++:zero++;
printf("0:%d\n1:%d\n比(0:1):%g\n",zero,one,(double)zero/one);
return 0;
}
DMC
0:49961
1:50039
比(0:1):0.998441
turbo C++
0:49959
1:50041
比(0:1):0.998361
VC6〜10、Open Watcom1.9
0:49855
1:50145
比(0:1):0.994217
gcc(cygwin)
0:49579
1:50421
比(0:1):0.983301
VCと
998デフォルトの名無しさん:2010/11/16(火) 20:30:19
途中で送ってしまった
VCとwatcomのルーチン同じなのか?
999985:2010/11/16(火) 20:40:50
>>992
確かに状態数を考えるとランダムな状態遷移は現実的じゃないですね・・・
このスレの方に知恵を借りたいのですが、挙動はランダムに見えて、結果的に完成するような
動きをさせることはできますか?
1000デフォルトの名無しさん:2010/11/16(火) 20:45:58
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。