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

このエントリーをはてなブックマークに追加
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++の宿題を片付けます 101代目
http://pc11.2ch.net/test/read.cgi/tech/1197132472/
2デフォルトの名無しさん:2008/01/05(土) 15:52:27
2get
3デフォルトの名無しさん:2008/01/05(土) 15:54:05
>>1
4デフォルトの名無しさん:2008/01/05(土) 16:03:09
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):西暦を入力するとその年の祝日一覧を表示するプログラムを作れ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c
[4] 期限:2008年1月8日
[5] その他の制限:いかにも初心者が組みましたっぽいのをお願いします
5デフォルトの名無しさん:2008/01/05(土) 16:13:24
>>4
構造体、ポインタ、自作関数などはナシ?
64:2008/01/05(土) 16:30:41
>>5
それらはありで大丈夫です
書き忘れましたが、祝日名もおねがいします
振り替え休日は考慮しなくてもよいです
7デフォルトの名無しさん:2008/01/05(土) 16:37:54
国民の休日(両隣が祭日になっている祭日でない日)も無視っていい?
8デフォルトの名無しさん:2008/01/05(土) 16:39:29
あと、春分の日・秋分の日も無視ってるけど
9デフォルトの名無しさん:2008/01/05(土) 16:44:01
>>4
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5627.txt
コンパイラも通してないけどな

表示可の年の祝日を書いたテキストファイルを用意して、引数に年をいれればOK
ファイル名は[年].dat (例:2008.dat)な
10デフォルトの名無しさん:2008/01/05(土) 17:03:34
[1] 授業単元:プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5628.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 1/7 
[5] その他の制限:特に無いです
11デフォルトの名無しさん:2008/01/05(土) 17:17:09
>>10
aichi_yubin.txtの書式教えて
12デフォルトの名無しさん:2008/01/05(土) 17:28:22
>10 見てみた。回答とは関係無いんだけど
> fflush(stdin);
ってどうよ?
13デフォルトの名無しさん:2008/01/05(土) 17:33:48
[1] 授業単元:プログラミング
[2] 問題文:http://www.nlab.sogo1.ynu.ac.jp/ynu/lecture/ibt1/2007report.pdf の奇数番号問題
[3] 環境
 [3.1] OS:xp,linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2008年1月9日
[5] その他の制限:特にないです
14デフォルトの名無しさん:2008/01/05(土) 18:05:11
>>12
I'm not >>10
普通じゃね?ってかscanf使うなっていいたくはなるけど・・・
%*s(だっけ?)とか入れてもいいんだろうけど
15デフォルトの名無しさん:2008/01/05(土) 18:45:07
どうするかなぁ。
16デフォルトの名無しさん:2008/01/05(土) 18:56:32
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5633.txt
data file
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5632.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008/01/08
[5] その他の制限:初心者です
17デフォルトの名無しさん:2008/01/05(土) 19:40:25
[1] 授業単元:プログラミング
[2] 問題文
以下のpoint構造体について、
プログラム中で扱える点の数を可変にしたい。
実行時にキーボードから点の数を入力し、それにより動的に構造体の配列を確保するプログラムを作成せよ。
確保後、全ての座標値を0.0で初期化し、その結果を表示せよ。
最後に確保した領域を解放するのを忘れずに!


typedef struct {

double x;
double y;

} point;

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008/01/08
[5] その他の制限:
18デフォルトの名無しさん:2008/01/05(土) 19:50:07
[1] 授業単元:プログラミング
[2] 問題文
N x 3の行列を動的
に確保し、2つの行列の和を表示するプログラムを作成せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008/01/08
[5] その他の制限:
19デフォルトの名無しさん:2008/01/05(土) 22:44:35
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5626.c
前スレの最後の方で教えて頂いた分で質問をさせてください
my_sort(argc - 1, argv + 1);
ここの部分で、-1と、+1にしないと実際にも動かないんですが、なぜですか?
ここを-1、+1にしないといけない理由がわからないので教えてください
20デフォルトの名無しさん:2008/01/05(土) 22:58:35
>>19
コマンドライン引数の一つ目は実行しているプログラムのパスが入る。
なので実際には2つ目から使うことになるので+1する
引数の数はプログラムのパス以外の数なので-1する。
わかんなかったらコマンドライン引数全部出力して見るべし。
21デフォルトの名無しさん:2008/01/05(土) 23:17:27
>>20
ありがとうございます!!
22デフォルトの名無しさん:2008/01/06(日) 00:13:27
[1] 授業単元:プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5634.txt
[3] 環境
 [3.1] Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 1/8
[5] その他の制限:特に無いです
よろしくお願いします
23デフォルトの名無しさん:2008/01/06(日) 00:13:38
>>11
テキスト ドキュメント (.txt)です。
24デフォルトの名無しさん:2008/01/06(日) 00:18:01
aichi_yubin.txtをアップロードしろ、説明するよりそっちの方が早い
25デフォルトの名無しさん:2008/01/06(日) 00:20:50
>>23
お前の説明能力がいかに凄いものかわかった気がする。
26デフォルトの名無しさん:2008/01/06(日) 00:29:30
暇人だから、この102代目スレから日付変更時刻あたりに
スレの残り宿題をまとめる事にするわ。 よろしく。
解答が一つでもあって、返答も無いやつは満足したと見なす方向で。

【未解決問題】
>>10 1/7
>>13 1/9
>>16 1/8
>>17 1/8
>>18 1/8
>>22 1/8
27デフォルトの名無しさん:2008/01/06(日) 00:35:52
うぜえ
28 ◆7jGtaEUa1U :2008/01/06(日) 02:17:01
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5635.txt
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語:C
[4] 期限:2008年01月07日00:30まで
[5] その他の制限:

宜しくお願いします。
29デフォルトの名無しさん:2008/01/06(日) 03:34:05
[1] 授業単元:プログラミング演習
[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5636.txt
[3] 環境
 [3.1] OS:XPpro
 [3.2] gcc
 [3.3] 言語: C++
[4] 期限:1月8日

宜しくお願いします
30デフォルトの名無しさん:2008/01/06(日) 03:44:57
>>28
課題1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, j, k, a[10][10];
srand(time(NULL));
for(i=0; i<100; i++) {
j = rand() % (i + 1);
a[i/10][i%10] = a[j/10][j%10];
a[j/10][j%10] = i + 1;
}
for(i=0; i<10; i++) {
for(j=1; j<10; j++) {
for(k=j; k>0 && a[i][k] < a[i][k-1]; k--) {
int temp = a[i][k];
a[i][k] = a[i][k-1];
a[i][k-1] = temp;
}
}
}
for(i=0; i<10; i++) {
for(j=0; j<10; j++) printf("%4d", a[i][j]);
putchar('\n');
}
return 0;
}
31デフォルトの名無しさん:2008/01/06(日) 04:23:06
32デフォルトの名無しさん:2008/01/06(日) 04:33:19
整数が入力されたとき16進数で返す関数をつくる。
お願いします
33デフォルトの名無しさん:2008/01/06(日) 04:42:30
34デフォルトの名無しさん:2008/01/06(日) 07:11:06
>>32

#include <sstream>
#include <string>
#include <iostream>
#include <cassert>

template <typename T1, typename T2>
T1 hexadecimal_cast(T2 dec) {
    std::stringstream stream;
    stream << std::hex << dec;
    T1 result;
    stream >> result;
    return result;
}

int main() {
    assert("80" == hexadecimal_cast<std::string>(128));
}
35デフォルトの名無しさん:2008/01/06(日) 09:08:14
>>28
課題3
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5640.zip

どういう出力がいいのか分からなかったから、気に入らん所は自分で修正して。
36デフォルトの名無しさん:2008/01/06(日) 09:09:03
3735:2008/01/06(日) 09:11:59
>>35
すまん、メモリ解放し忘れてるわ
main関数のreturn前に
free(stemp.ave);
free(stemp.max);
free(stemp.min);
を追加してください。
38デフォルトの名無しさん:2008/01/06(日) 09:25:26
>>16
for(j=0;j<n-5;++j){ /* 変更 */
sumx = sumy = sumxy = sumx2 = 0; /* 付け足し */
for(i=j;i<j+5;++i){
sumx +=x[i];
sumy +=y[i];
sumxy+=x[i]*y[i];
sumx2+=x[i]*x[i];
}
// printf("%lf %lf %lf %lf - ",sumx,sumy,sumxy,sumx2);
a=(5.0*sumxy-sumx*sumy)/(5.0*sumx2-sumx*sumx);
b=(sumx2*sumy-sumxy*sumx)/(5.0*sumx2-sumx*sumx);
printf("a=%f b=%f\n",a,b);
}

とりあえずexcelで5ずつズラしながら線形近似の数式みてあってるっぽかったんで。
39デフォルトの名無しさん:2008/01/06(日) 09:52:52
>>17-18は前スレで答え出てたろ
40jtetyky:2008/01/06(日) 11:43:25
[1] 授業単元:情報処理演習
[2] 問題文
1、こちらで用意した暗号化ファイルlast_report.txtを読みで、
% ./a.out last_report.txt
と実行することにより、暗号を複合化した内容を書き出したファイル
decode.txtを作成するプログラムを作りなさい。
2、複合化のときは通常ずらした通常ずらした文字数を
あらかじめ知ることはできないので、1から25文字だけ
ずらしてできた文章を書き出しなさい。
3、複合化する部分は関数化しなさい。ただし、関数は
void Decording (unsigned char *cript, unsigned char *plain,
unsigned char shift)という型とし、criptは複合化前の文字列の
ポインタ、plainは複合化後の文字列のポインタ、shiftはずらした
文字の数である。
4、実行結果としてこちらが用意した暗号ファイルlast_report.txtを
複合化したものを載せなさい。
[3] 環境
 [3.1] OS:Linux 2.4
 [3.3] 言語:C
[4] 期限:2008年01月07日
[5] その他の制限:
last_report.txtのファイルの文章は
cuhho sxhyijcqi qdt xqffo dum oughです。         
41デフォルトの名無しさん:2008/01/06(日) 11:57:52
[1] 授業単元:プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5642.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio6.0
 [3.3] 言語: C++
[4] 期限: 1/8 
[5] その他の制限:関数は作らない

よろしくおねがいします
42デフォルトの名無しさん:2008/01/06(日) 12:48:31
>>39
コンパイルできませんでした・・
43デフォルトの名無しさん:2008/01/06(日) 13:17:22
[1] 授業単元:プログラミング
[2] 問題文:以下の行列A,PにおいてtPAPを計算するプログラム。(tPはPの行列式の行と列を入れ換えたものです。)
|2 1 1| |1/√2 1/√6 1/√3|
A=|1 2 1| P=|-1/√2 1/√6 1/√3|
|1 1 2| |0 -2/√6 1/√3|
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2008年1月7日14:00まで]
[5] その他の制限:関数を使ってください
よろしくお願いします。
44デフォルトの名無しさん:2008/01/06(日) 13:18:56
[1] 授業単元:プログラミング
[2] 問題文:以下の行列A,PにおいてtPAPを計算するプログラム。(tPはPの行列式の行と列を入れ換えたものです。)
|2 1 1| |1/√2 1/√6 1/√3|
A=|1 2 1| P=|-1/√2 1/√6 1/√3|
|1 1 2| |0 -2/√6 1/√3|
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2008年1月7日14:00まで]
[5] その他の制限:関数を使ってください
よろしくお願いします。
45デフォルトの名無しさん:2008/01/06(日) 13:20:54
>>43>>44なんですが、同じことをやってしまい、また、わかりづらくて申しわけありません
46デフォルトの名無しさん:2008/01/06(日) 13:30:55
>>38
ありがとうございました
47デフォルトの名無しさん:2008/01/06(日) 13:43:13
>>40
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5643.c

特に指定がなかったから、ファイルは一行&1024字にしか対応させてない。
48デフォルトの名無しさん:2008/01/06(日) 13:51:38
merry christmas and happy new yeqr

先生ーーーーーーーーーー!!!!

cryptはcriptになってるし、つっこみどころ多すぎだなw
49デフォルトの名無しさん:2008/01/06(日) 14:01:55
>>48
わざとかも知れんぞ。
50デフォルトの名無しさん:2008/01/06(日) 14:03:29
16進数を文字列として入力して、それを整数にして返す関数の作成
容易なものをおねがいします。
51デフォルトの名無しさん:2008/01/06(日) 14:04:04
複合もな
52デフォルトの名無しさん:2008/01/06(日) 14:07:00
>>42
ヒント:ちゃんとエラー文をここにかけ

>>50
http://pc11.2ch.net/test/read.cgi/tech/1197132472/985
53デフォルトの名無しさん:2008/01/06(日) 14:08:52
文字列が与えられたとき、それをアスキーコードの小さいものからならべなおす関数の作成
わかりやすいものをお願いします
54デフォルトの名無しさん:2008/01/06(日) 14:09:51
>>53
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
55デフォルトの名無しさん:2008/01/06(日) 14:10:16
>>41
#include <stdio.h>

int main () {

int i, yama=0, tani=0, iarray[100];

for (i = 1; i < 99; ++i) {
if (iarray[i-1] <= iarray[i] &&
iarray[i+1] > iarray[i]) {
++yama;
}
if (iarray[i-1] >= iarray[i] &&
iarray[i+1] < iarray[i]) {
++tani;
}
}

printf("山:%d個 谷:%d個", yama, tani);
return 0;
}
56デフォルトの名無しさん:2008/01/06(日) 14:15:12
>>53
#include <stdio.h>
void qsortString(char *a){
int n=strlen(a);
int i,j;
char t;
/* quick sort */
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(a[i]>a[j]){
t = a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
int main(){
char test[]="a1b2x3d7d6g2";
printf("Before:%s\n",test);
qsortString(test);
printf("After :%s\n",test);
return 0;
}

はい、どうぞ
57デフォルトの名無しさん:2008/01/06(日) 14:18:27
>>53
void SortString(std::string & rStr) {
std::sort(rStr.begin(), rStr.end());
}
58デフォルトの名無しさん:2008/01/06(日) 14:23:12
59デフォルトの名無しさん:2008/01/06(日) 14:24:25
>>58
たぶんこれなら>>36で動くはず。
60デフォルトの名無しさん:2008/01/06(日) 14:28:32
>>41
課題2
#include <stdio.h>
#include <stdlib.h>

int main () {

int a, b, c=1, x=0;
scanf("%d %d", &a, &b);

if (a < 0) {
a = abs(a);
c = -c;
}
if (b < 0) {
b = abs(b);
c = -c;
}

if (a < b) {
while (a--) x += b;
} else {
while (b--) x += a;
}

if (c < 0) x = -x;

printf("%d", x);
return 0;
}
61デフォルトの名無しさん:2008/01/06(日) 14:30:21
文字列が与えられたとき、その最後の3文字を表示する関数の作成
(3文字より短い場合はtoo short と表示)

わかりやすいソースでおねがいします
6260:2008/01/06(日) 14:32:54
abs関数必要なかったな
 abs(a) -> -a
 abs(b) -> -b
に置き換えてちょうだい
63デフォルトの名無しさん:2008/01/06(日) 14:34:18
>>61
#include <stdio.h>
void b(char *a){
int n = strlen(a);
if(n<3){printf("too short");return;}
printf("%s",a+n-3);
}
int main(){
b("123456789");
b("1AB");
b("12");
return 0;
}
64デフォルトの名無しさん:2008/01/06(日) 14:39:52
[1] 授業単元:プログラミング
[2] 問題文:以下の行列A,PにおいてtPAPを計算するプログラム。(tPはPの行列式の行と列を入れ換えたものです。)
|2 1 1| |1/√2 1/√6 1/√3|
A=|1 2 1| P=|-1/√2 1/√6 1/√3|
|1 1 2| |0 -2/√6 1/√3|
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2008年1月7日14:00まで]
[5] その他の制限:関数を使ってください
見にくいかもしれませんがよろしくお願いします。
65k5j7636j:2008/01/06(日) 14:40:01
>>47
ありがとうございました。助かります。
66デフォルトの名無しさん:2008/01/06(日) 14:54:07
>>64
#include <stdio.h>
#include <math.h>

void show(double src[3][3]){
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%9.5lf",src[i][j]);
printf("\n");
printf("\n");
}
void inverse(double dst[3][3],double src[3][3]){
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
dst[j][i]=src[i][j];
}
}
}
void multiple(double dst[3][3],double src1[3][3],double src2[3][3]){
int i,j,k;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
dst[i][j]=0;
for(k=0;k<3;k++){
dst[i][j]+=src1[k][j]*src2[i][k];
}
}
}
}
6760:2008/01/06(日) 14:55:05
課題3
(1)
#include <stdio.h>
int main () {
unsigned int i = 0, uiarray[30];
for ( ; i < 30; ++i) {
while (uiarray[i]--) printf("*");
printf("\n");
}
return 0;
}
(2)
#include <stdio.h>
int main() {
int i = 0, j, min = 0, iarray[30];
for ( ; i < 30; ++i) {
if (iarray[i] < min) min = iarray[i];
}
min = -min;
for (i = 0; i < 30; ++i) {
if (0 < iarray[i]) j = min;
else {
j = min + iarray[i];
iarray[i] = -iarray[i];
}
while (j--) printf(" ");
while (iarray[i]--) printf("*");
printf("\n");
}
return 0;
}
68デフォルトの名無しさん:2008/01/06(日) 14:55:14
>>64 >>66の続き
int main(){
double R2 = sqrt(2), R3 = sqrt(3), R6 = sqrt(6);
double A [3][3] = {{2,1,1},{1,2,1},{1,1,2}};
double P [3][3] = {{1/R2, 1/R6, 1/R3},{-1/R2, 1/R6, 1/R3},{0,-2/R6,1/R6}};
double tP [3][3], tPA [3][3], tPAP[3][3];
int i,j;
show(A);
show(P);

inverse (tP ,P);
show(tP);

multiple(tPA ,tP ,A);
show(tPA);

multiple(tPAP,tPA,P);
show(tPAP);

}
69デフォルトの名無しさん:2008/01/06(日) 15:08:12
>>59
対象データは見つかりませんでした。ってなります。
70デフォルトの名無しさん:2008/01/06(日) 15:10:36
>>69
同じフォルダにaichi_yubin.txtって名前のファイルをおけ。
つーかそんなメッセージでてこないと思うぞw
71デフォルトの名無しさん:2008/01/06(日) 15:11:20
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
入力された二つの数値の論理積、論理和、排他的論理和をそれぞれ出力するプログラムを作成
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ:gcc
 [3.3] 言語: C
[4] 期限:1/8
[5] その他の制限:特にないです
72デフォルトの名無しさん:2008/01/06(日) 15:11:30
>>69-70
おっとしっけい、メイン側のほうか。

具体的に何を入れてどううまくうごかない?
73デフォルトの名無しさん:2008/01/06(日) 15:17:59
>>71
#include <stdio.h>
int main () {
int x, y;
scanf("%d %d", &x, &y);
printf("論理積:%p 論理和:%p 排他的論理和:%p",
x & y, x | y, x ^ y);
return 0;
}
74デフォルトの名無しさん:2008/01/06(日) 15:18:32
>>69-70,72
っていうか、見つからないときの処理が入ってなかった orz すまんかった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5645.txt

75デフォルトの名無しさん:2008/01/06(日) 15:19:56
なんか今日宿題多いな
冬休みが空けるから皆あせってんのか
76デフォルトの名無しさん:2008/01/06(日) 15:20:43
#include <string.h>が足りない気がする
77デフォルトの名無しさん:2008/01/06(日) 15:20:56
>>73
ありがとうございました
78デフォルトの名無しさん:2008/01/06(日) 15:21:07
んじゃ、小一時間いなくなるんで、宿題があったら書いといてくれ。
暇になったらやる。
79デフォルトの名無しさん:2008/01/06(日) 15:23:03
プログラミングなんて興味ない学生が困って投稿し始めたのか知らんが
今日はやり応えある問題が少ないな。
80rwlu.o:2008/01/06(日) 15:27:09
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
  入力した整数を2進数に変換せよ。
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 2.4 )
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 1月8日
[5] その他の制限: 関数を用いる。


81デフォルトの名無しさん:2008/01/06(日) 15:37:45
>>72
できました。ありがとうございます。
82デフォルトの名無しさん:2008/01/06(日) 15:40:18
>>80
#include <stdio.h>

int main () {
int in, bit = 1;
scanf("%d", &in);
while (bit < in) bit *= 2;
if (!(in & bit)) bit /= 2;
while (bit) {
printf("%d", in & bit ? 1 : 0);
bit /= 2;
}
return 0;
}

if文のところなくす方法ないかな?
83j:2008/01/06(日) 15:41:58
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): したのjavaプログラムをc++言語に書き直す。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc 2.4 )
 [3.3] 言語: (C++)
[4] 期限: 1月7日
[5] その他の制限: なし





import java.io.*;
import java.util.regex.*;
class Test {
public static void main(String[] arg) throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String buf;
Pattern p = Pattern.compile("[0-9A-Za-z]+");
Matcher m;
while((buf=br.readLine())!=null){
m= p.matcher(buf);
while(m.find()){
System.out.println(m.group());
}
}
}
}

84デフォルトの名無しさん:2008/01/06(日) 15:43:35
03-1234-5678のように表された電話番号を引数として、市内局番(例だと1234)を整数値としてかえす関数の作成。

お願いします
8582:2008/01/06(日) 15:44:19
よく見たら整数か、自然数に脳内変換してしまった、スマンコってす。
一応今から整数版書き始めるけど、先に誰かできたら投稿しちゃってください。
86デフォルトの名無しさん:2008/01/06(日) 15:44:41
[1] 授業単元:プログラム実習
[2] 問題文(含コード&リンク):

C言語を用いて空いた上位部分に符号ビットと同じビットが入る
算術右シフトを行うプログラムを作成する

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月8日
[5] その他の制限:特になし

よろしくお願いします
87デフォルトの名無しさん:2008/01/06(日) 15:54:19
>>85
せっかくだから突っ込んでおくとその他の制限も読んだ方がいいよ
88デフォルトの名無しさん:2008/01/06(日) 15:55:29
>>85
さらに突っ込ませてもらうと値によっては無限ループにおちいるよ
89デフォルトの名無しさん:2008/01/06(日) 16:00:08
無限ループはアレだが、別に2の補数表現するとは書いていないから
0以下の場合頭に-つけるだでいいんじゃねーの。
90デフォルトの名無しさん:2008/01/06(日) 16:00:25
>>84
何も確認してないが……

int main(int argc, char* argv[])
{
    if (argc != 2)
    {
        fprintf(stderr, "電話番号入力しろゴルァ\n");
        return 0;
    }

    int x, y, z;
    int scan = sscanf(argv[1], "%d-%d-%d", &x, &y, &z);
    if (scan == 3)
    {
        printf("市内局番は%dじゃねーの? 間違ってても責任とらん\n", y);
    }
    else if (scan == 2)
    {
        printf("市内局番は%dじゃねーの? 間違ってても責任とらん\n", x);
    }
    else
    {
        printf("知らねwww\n");
    }
    return 0;
}
91デフォルトの名無しさん:2008/01/06(日) 16:02:36
#include <stdio.h>
void binaryPrint(int in)
{
unsigned int bit = 1<<(sizeof(int)*8-1);
while (!(in & bit)) bit >>= 1;
while (bit)
{
printf("%d", !!(in & bit));
bit >>= 1;
}
}
int main () {
int in;
scanf("%d", &in);
binaryPrint(in);
printf("\n");
return 0;
}
お題に沿ってif文を排除してみた。whileを使うのはずるいって意見は無視することにした。
0以下の場合頭に-つけるタイプは他の人に任せた
9291:2008/01/06(日) 16:04:28
あ、無限ループするのでよろしく
93デフォルトの名無しさん:2008/01/06(日) 16:05:21
平面上の点3個の点が与えられたとき、その3点の作る三角形の面積を返す関数をつくる。
3点はdouble p[3][2]で与え、面積の計算はヘロンの公式を使う
94デフォルトの名無しさん:2008/01/06(日) 16:07:21
>>93
三点の座標が与えられてるのに、ヘロンの公式とな……
95デフォルトの名無しさん:2008/01/06(日) 16:11:04
>>86
これでおkかな?
#include <stdio.h>

int rshift(int x, int n){
  int mask = 0, i;
  for(i=0; i<n; ++i) mask += 1<<sizeof(int)-i;
  if(x>0)return x >> n & ~mask;
  else return x >> n | mask;
}
int main(){
  int x,n;
  scanf("%d %d", &x, &n);
  printf("%d", rshift(x,n));
  return 0;
}
96デフォルトの名無しさん:2008/01/06(日) 16:12:49
[1] 授業単元:プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5580.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 1/9
[5] その他の制限:なし
97デフォルトの名無しさん:2008/01/06(日) 16:17:13
>>95
ありがとうございます
9895:2008/01/06(日) 16:18:04
訂正
#include <stdio.h>

int rshift(int x, int n){
  int mask = 0, i;
  for(i=0; i<n; ++i) mask += 1<<sizeof(int)-i;
  if(x>=0)return x >> n & ~mask;
  else return x >> n | mask;
}
int main(){
  int x,n;
  scanf("%d %d", &x, &n);
  printf("%d", rshift(x,n));
  return 0;
}
99デフォルトの名無しさん:2008/01/06(日) 16:24:31
なるほどなー。上のビットからみてくって発想はなかったわ。参考になるわ。
無限ループ解消と頭に-つけるバージョン。凡庸ですまん。

void binaryPrint(int in)
{
unsigned int bit = 1<<(sizeof(int)*8-1);
if (in == 0)
{
printf("0");
return;
}
if (in < 0)
{
printf("-");
in = -in;
}
while (!(in & bit)) bit >>= 1;
while (bit)
{
printf("%d", !!(in & bit));
bit >>= 1;
}
}
100デフォルトの名無しさん:2008/01/06(日) 16:31:14
[1] 授業単元:プログラミング
[2] 問題文: ファイルを読み込み、英字のみか、先頭が英字で二文字目以降が英字または数字である文字列を出力するプログラム
[3] 環境
 [3.1] windows
 [3.2] コンパイラ名とバージョン:gcc
[4] 期限: 1/7
[5] その他の制限:なし


よろしくお願いします
101デフォルトの名無しさん:2008/01/06(日) 16:33:10
>>100
追加  c++言語で
102デフォルトの名無しさん:2008/01/06(日) 16:35:01
>>100
追加  c++言語で
103デフォルトの名無しさん:2008/01/06(日) 16:35:20
>>100
日本語は初めてですか?
104デフォルトの名無しさん:2008/01/06(日) 16:41:18
>>103
お前は、何に言ってんだ、
なんにかよめねぇのか
105デフォルトの名無しさん:2008/01/06(日) 16:41:38
>>103 こんな感じ?
#include <fstream>
#include <string>

#include <iostream>

using namespace std;

int main( )
{
ifstream ifs("data.txt");
string buf;
getline(ifs, buf); /* ファイルを読み込む */
cout << "ABCDEFG"; /* 英字のみか、先頭が英字で二文字目以降が
英字または数字である文字列を出力する*/
return 0;
}
106デフォルトの名無しさん:2008/01/06(日) 16:42:45
>>100
mixiでは解答が得られそうに無いとの判断ですか?
107デフォルトの名無しさん:2008/01/06(日) 18:00:38
音声だけのスレ☆@
http://tmp7.2ch.net/test/read.cgi/mog2/1199609352/l50

人工音声をつかって罵り合おうぜ。
バカ2ちゃんども、聴覚も鍛えようぜ。
108デフォルトの名無しさん:2008/01/06(日) 19:05:31
>>100

>>105 もっと単純に

#include <iostream.h>

int main(void)
{
cout <<"ファイルを読み込み、英字のみか、先頭が英字で二文字目以降が英字または数字である文字列";
return 0;
}

なんじゃね?
109デフォルトの名無しさん:2008/01/06(日) 19:06:14
110デフォルトの名無しさん:2008/01/06(日) 19:07:59
111デフォルトの名無しさん:2008/01/06(日) 19:19:03
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):与えられた10進数の数値を4桁の16進数にして文字型配列に格納する
また、数値は16ビットで最上位ビットは符号を表すものとする
例)
567->0237
-2->FFFE
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月9日
112デフォルトの名無しさん:2008/01/06(日) 19:27:47
113デフォルトの名無しさん:2008/01/06(日) 19:34:33
>>111
int main () {
int i = 3, input;
scanf("%d", &input);

unsigned int mask = 0xF000;
while (mask) {
printf("%X", (input & mask)>>(i*4));
mask >>= 4;
--i;
}
return 0;
}
114デフォルトの名無しさん:2008/01/06(日) 19:40:18
>>113
それって配列使ってなくてテレビに表示してるだけじゃないの?
115デフォルトの名無しさん:2008/01/06(日) 20:00:30
>>114
つ・・・つられな・・・ いやつられよう。

「テレビかよ!!」
116デフォルトの名無しさん:2008/01/06(日) 20:01:32
テレビに表示するかどうかは実行環境に依存します。
117デフォルトの名無しさん:2008/01/06(日) 20:12:40
>>114
ごめんなさいね。お母さん問題文よく読まない上にゴミコードを書いちゃって・・・。

#include <stdio.h>
int main () {
char hex[5] = "";
int in, i;
scanf("%d", &in);

sprintf(hex, "%C%C%C%C",
(in & 0xF000)>>12,
(in & 0x0F00)>>8,
(in & 0x00F0)>>4,
in & 0x000F);

for (i = 0; i < 4; ++i) {
if (hex[i] < 10) {
hex[i] += 48;
} else hex[i] += 55;
}

printf("%s", hex);
return 0;
}
118デフォルトの名無しさん:2008/01/06(日) 20:26:25
>>117
かあちゃん、null terminatorはどこ?
119デフォルトの名無しさん:2008/01/06(日) 20:30:28
あら?そんな子はいないわよ。
120デフォルトの名無しさん:2008/01/06(日) 20:36:26
>>119
かあちゃん!!これじゃhex[4]が'\0'じゃなかったらprintfで出力結果がバグるだろうが!!
もうしっかりしてくれよなぁー
121デフォルトの名無しさん:2008/01/06(日) 20:38:25
>>120
と、ここまで書いてあれ?sprintfで処理すると勝手に付くんだっけ?と考え直してみたり。
122デフォルトの名無しさん:2008/01/06(日) 20:41:21
ごめんね。お母さんドジでごめんね。
そんな子、要らない子だと思っていたわ。
念のためにも
 sprintf(hex, "%C%C%C%C\0",
と置き換えてあげてください。
123デフォルトの名無しさん:2008/01/06(日) 20:42:23
>>122
かあちゃん、ごめん、弁当のふたんとこに海苔くっついてた・・・じゃなかった
sprintfでかってにつくから問題なさそう。むしろそれをやるとhex[5]に'\0'が代入されそうな悪寒。
124デフォルトの名無しさん:2008/01/06(日) 21:06:03
大丈夫、sprintf()には"%C%C%C%C\0"と"%C%C%C%C"を区別することができないから。
寧ろ、%Cそのものの方が問題。
125111:2008/01/06(日) 21:07:52
>>117
助かります、ありがとうございました
126デフォルトの名無しさん:2008/01/06(日) 21:17:01
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):年月日計算
問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5649.txt
サンプルプログラム:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5648.txt)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年1月8日9:00まで
[5] その他の制限:
  サンプルプログラムに「日付を一年ずらす関数」を付け加えることは必須です。後ははそれに加えて
  ・2つの入力年月日を実行時にキーボードから入力させるか、
   ファイルで与えるか、コマンドライン引数として与える
  ・日付を古い方にずらすか、新しい方にずらす。
   などに着目し4種類以上のプログラムを作るのですが1種類でもかまいません。
   すみませんがどうか宜しくお願い致します。
   
127126:2008/01/06(日) 21:21:11
すみませんサンプルプログラムのアドレスに「)」が付いて正しくリンクされていませんでした。
正しくはこちらになります。
サンプルプログラム:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5648.txt
128デフォルトの名無しさん:2008/01/06(日) 21:25:43
>>124
たしかに。sprintf使っていいなら%x使えばいいし。自家製でdec2hexするならこんな感じかな?

hex[0]=( (in & 0xf000)>>12 );
hex[1]=( (in & 0x0f00)>> 8 );
hex[2]=( (in & 0x00f0)>> 4 );
hex[3]=( (in & 0x000f) );
hex[4]='\0';

for(i=0;i<4;i++){
if( (0<=hex[i]) && (hex[i]<=9)) hex[i]+='0';
else if( (10<=hex[i]) && (hex[i]<=15) ) hex[i]+='A'-10;
else hex[i]='?';
}
129デフォルトの名無しさん:2008/01/06(日) 21:33:06
>>128
あれ?ちょっとまって。

hex[0]には最上ビットに符号の意味を持たせなきゃいけないんじゃないかな?
多分これだと

0x7fffffffと0xffffffffが同じ数字になりそうな悪寒。
130デフォルトの名無しさん:2008/01/06(日) 21:37:22
>>129
ちゃうちゃう・・・ごめん

0x7fff以上の正の整数がだめってだけですね。
131124:2008/01/06(日) 21:43:44
>>128
いや、単純に%Cなんて普通使えないって言いたかっただけ。
132デフォルトの名無しさん:2008/01/06(日) 22:13:11
>>131
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/vsnprintf.3.html

C (C99 にはないが SUSv2 にはある) lc と同じ。使ってはならない。

なるほど。
133デフォルトの名無しさん:2008/01/06(日) 23:30:29
>>68さん
ありがとうございました
134デフォルトの名無しさん:2008/01/06(日) 23:46:58
[1] 授業単元:プログラミング
[2] 問題文:連立1次方程式
0.001x1+10000.0x2=1000.0
10000.0x1+10000.0x2=2000.0
における解のプログラム{x1,x2は×(かける)1の掛け算ではなくx1(エックスワン)です}
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2008年1月7日14:00まで]
[5] その他の制限:2×2の逆行列のプログラムは新規作成
よろしくお願いします
135デフォルトの名無しさん:2008/01/06(日) 23:54:22
【未解決問題】
>>13 1/9
>>17 1/8
>>18 1/8
>>22 1/8
>>29 1/8
>>96 1/9
>>126 1/8 9:00
>>134 1/8 14:00
136デフォルトの名無しさん:2008/01/06(日) 23:58:22
>>135
>>134は1/7 14:00です
137デフォルトの名無しさん:2008/01/06(日) 23:59:25
>>136
まっちょれ
といてやる。
138デフォルトの名無しさん:2008/01/07(月) 00:01:34
[1] 授業単元: プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5650.txt
[3] 環境
 [3.1] OS:Windows/Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年1月9日
[5] その他の制限:特にないです
139デフォルトの名無しさん:2008/01/07(月) 01:16:17
>>134
#include <stdio.h>

int main(){
double A[2][2]={{0.001,10000.0},{10000.0,10000.0} };
double b[2] = {1000,2000};
double tA[2][2];
double x[2];
double ad_bc = A[0][0]*A[1][1]-A[0][1]*A[1][0];

if( fabs(ad_bc) < 1e-6 ){
printf("解なし");
return 1;
}
tA[0][0] = A[1][1] / ad_bc;
tA[0][1] = -A[1][0] / ad_bc;
tA[1][0] = -A[0][1] / ad_bc;
tA[1][1] = A[0][0] / ad_bc;

x[0] = b[0]*tA[0][0]+b[1]*tA[1][0];
x[1] = b[0]*tA[0][1]+b[1]*tA[1][1];

printf("x1 = %.15e, x2 = %.15e",x[0],x[1]);
return 0;
}
140デフォルトの名無しさん:2008/01/07(月) 01:55:39
>>139
ありがとうございました
助かりました
141デフォルトの名無しさん:2008/01/07(月) 02:19:05
[1] 授業単元:C
[2] 問題文
2つの3 x 3の行列を2次元配列に格納、
2つの行列の積を表示するプログラム。

[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン:stady C
 [3.3] 言語: C
[4] 期限: 2008/01/08(月)(〜22:00)
[5] その他の制限:入門課題なので猿以上人未満でもわかるくらいでお願いします。

急で申し訳ありませんがお願いしますm(_ _)m
142デフォルトの名無しさん:2008/01/07(月) 02:21:27
>>141
どこの国の暦を使ってるんだ?
143デフォルトの名無しさん:2008/01/07(月) 02:29:29
人未満にわかるように書くのは至難の業だろ
144141:2008/01/07(月) 02:52:09
期限: 2008/01/07(月)(〜22:00)
申し訳ありません

高校生以上社会人未満でお願いします
145デフォルトの名無しさん:2008/01/07(月) 03:47:23
146デフォルトの名無しさん:2008/01/07(月) 05:10:57
147141:2008/01/07(月) 10:51:44
行列の入力は使用者の任意でscanfでお願いします。
>>146さん
ありがとうございます
しかし、文字化けで読めないのと難しいです
すみませんがもう少し低級なプログラムでお願いします
申し訳ありません
148 ◆vLIz8KOkPM :2008/01/07(月) 10:56:10
レポートが出されたのですが、全く出来ないので、どうかよろしくお願いしますm(__)m問題文をwordで送りたいので、やって戴ける方は、どうかメールを下さい。
ほんと出来ないので、どうかお願いします…

[1] 授業単元: プログラミング演習(木構造)
[2] 問題文:長いので、メールを下さいm(__)m
[3] 環境
 [3.1] OS: Linux
 [3.2] GNOME端末
 [3.3] 言語: C言語
[4] 期限: 1月12日正午
[5] 習った範囲
if文
switch文
for文
while文
関数
配列
構造体
ポインタ
ファイル操作
リスト
スタックとキュー
探索
木構造
149デフォルトの名無しさん:2008/01/07(月) 11:00:39
うpしろよ
150デフォルトの名無しさん:2008/01/07(月) 11:21:41
メールはねぇよw
151 ◆vLIz8KOkPM :2008/01/07(月) 11:24:31
図が入ってるんで…
どうかお願いしますm(__)m
152デフォルトの名無しさん:2008/01/07(月) 11:33:39
[1] 授業単元: 情報基礎
[2] 問題文 1000以下の素数を全て表示するプログラム
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限: 2008/01/08
[5] if文とfor文程度で作れるもの

153デフォルトの名無しさん:2008/01/07(月) 11:36:01
まぁ期限まで日数があるのは待つべし
期限が早いものからガンガル
154デフォルトの名無しさん:2008/01/07(月) 11:36:37
ごめんなさい、どうしてもできなくて悩んでたんですが今できましたorz
一応張ってみます
#include <stdio.h>

int main()
{
int a, b;

for(a = 2; a <= 100; a++){
for(b = 2; b < a; b++){
if(a % b == 0)break;
}
if (a == b) printf("%d \n", a);
}
return 0;
}
155デフォルトの名無しさん:2008/01/07(月) 11:40:02
#include <iostream>
using namespace std;
#define N 1000
main(){
int n,k, sosu[N+1];
for(n=0;n<=N;n++)sosu[n]=1;
for(n=2;n*n<=N;n++)
for(k=2*n;k<=N;k+=n)sosu[k]=0;
for(n=2;n<=N;n++)if(sosu[n])cout<<n<<endl;
}
156デフォルトの名無しさん:2008/01/07(月) 11:40:46
>>152
#include <stdio.h>
#define N 1024
int main(void)
{
  int i, j, k = 2, prime[N] = {2, 3};
  for(i = 5; i <= 1000; i += 2){
    for(j = 0; j < k && i%prime[j] != 0; j++);
    if(j == k) prime[k++] = i;
  }
  for(i = 0; i < k; i++) printf("%5d", prime[i]);
  putchar('\n');
  return 0;
}
157デフォルトの名無しさん:2008/01/07(月) 11:42:46
>>154
それだと数が多い場合に時間がかかる エネ***の篩が定番
158デフォルトの名無しさん:2008/01/07(月) 11:43:37
>>148
                l三`ー 、_;:;:;:;:;:;:j;:;:;:;:;:;:_;:;:;_;:-三三三三三l
               l三  r=ミ''‐--‐';二,_ ̄    ,三三三彡彡l_   この感じ・・・・
              lミ′   ̄    ー-'"    '=ミニ彡彡/‐、ヽ
                  l;l  ,_-‐ 、    __,,.. - 、       彡彡彳、.//  ZIPか・・・・
_______∧,、_‖ `之ヽ、, i l´ _,ィ辷ァ-、、   彡彡'r ノ/_ ______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄'`'` ̄ 1     ̄フ/l l::. ヽこ~ ̄     彡彳~´/  ̄ ̄ ̄ ̄ ̄ ̄
                 ヽ   ´ :l .l:::.         彡ィ-‐'′
                ゝ、  / :.  :r-、        彡′
              / ィ:ヘ  `ヽ:__,ィ='´        彡;ヽ、
          _,,..-‐'7 /:::::::ヽ   _: :_    ヽ      ィ´.}::ヽ ヽ、
      _,-‐'´    {  ヽ:::::::::ヘ `'ー===ー-- '   /ノ /::::::ヘ, ヽー、
159デフォルトの名無しさん:2008/01/07(月) 11:47:07
>>155-156
ありがとうございます、こんな早くレスがもらえるものなんですね。
参考にさせてもらます
160デフォルトの名無しさん:2008/01/07(月) 11:57:06
161デフォルトの名無しさん:2008/01/07(月) 12:19:28
素人の俺に>>154
if(a % b == 0)break;
の部分でで何で2以外の時も抜けられるのか教えてくれ
162デフォルトの名無しさん:2008/01/07(月) 12:22:15
2以外というか、aとbをそれぞれインクリメントしていって
a/bであまりがでない場合、つまり割り切れる場合は抜けるって構造だろう
163デフォルトの名無しさん:2008/01/07(月) 12:46:18
[1] 授業単元: C言語応用
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5653.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C言語
[4] 期限:
[5] その他:よろしくおねがいします。
164デフォルトの名無しさん:2008/01/07(月) 12:47:44
[1] 授業単元:プログラミング
[2] 問題:5を入力して以下の表示をするプログラム
____*
___*_*
__*_*_*
_*_*_*_*
*_*_*_*_*

(_はスペースです)
   
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c
[4] 期限:2008年1月8日
[5] その他の制限:for文でお願いします
165デフォルトの名無しさん:2008/01/07(月) 12:55:13
>>164
#include<stdio.h>
int main(void){
int a;
scanf("%d",&a);
if(a==5){
printf(" *\n * *\n * * *\n * * * *\n* * * * *\n");
}
return(0);
}
166デフォルトの名無しさん:2008/01/07(月) 13:06:49
>>164
#include <stdio.h>

int main() {

int i, ch, num;
scanf("%d", &num);
for (i = 1; i < num+1; ++i) {
for (ch = num - i; ch > 0; --ch) printf(" ");
for (ch = i; ch > 0; --ch) printf("* ");
printf("\n");
}
return 0;
}
167デフォルトの名無しさん:2008/01/07(月) 14:19:06
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5655.txt
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:c
[4] 期限:2008年1月8日

よろしくおねがいします。
168デフォルトの名無しさん:2008/01/07(月) 14:24:31
>>164
#include <stdio.h>

int main(){
  while(getchar() != '5');
  puts("    *\n   * *\n  * * *\n * * * *\n* * * * *");
  return 0;
}
169デフォルトの名無しさん:2008/01/07(月) 14:29:32
[1] 授業単元:C
[2] 問題文 複数の数値に対する最大公約数を求める関数を作成し、それを利用するプログラムを作成せよ。関数は下記の通りとする。
int gcm(int *in,int num)
  in  入力値が格納された配列の(先頭)ポインタ
num 入力値の最大公約数
入力に関して
  キーボードから、入力値がスペース1つ開けて1行で入力する。この時、入力を促す文字等は決して表示しないこと。
出力に関して
  結果+改行のみ出力。指定した数値・改行以外の文字等の出力は一切行わないこと。
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン:stady C
 [3.3] 言語: C言語
[4] 期限: 2008/01/08(月)(〜22:00)
[5] その他の制限:簡単にお願いします
170デフォルトの名無しさん:2008/01/07(月) 14:32:12
171ぽぴぴおぷ:2008/01/07(月) 14:36:18
0度から180度までのsin cosの値を10度ずつ表形式で表示せよ。
ただし sin cosはmath.h(算術計算用ヘッダー)をインクルードすること。
また、角度は弧度(ラジアン)で入力すること
値=sin(角度/360.0+2.0*3.14);

[3.1]OS:windows XP
[3.2]C++Builder
言語:C言語
期限:いますぐお願いします
172デフォルトの名無しさん:2008/01/07(月) 15:06:03
>>165,>>168
問題よく読めよ
173デフォルトの名無しさん:2008/01/07(月) 15:06:24
>>171

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

#define PI (3.14)
#define Rad(x) ( (x)/180 * PI )

int main()
{
  double i = 0;
  for (i = 0; i <= 180; i += 10) {
    if ( (0 != i) && (180 != i) ) {
      printf("sin(%3g) = %.*f\n",
           i, DBL_DIG, sin(Rad(i)) );
    } else {
      printf("sin(%3g) = 0\n", i, DBL_DIG);
    }
  }

  for (i = 0; i <= 180; i += 10) {
    if ( 90 != i ) {
      printf("cos(%3g) = %.*f\n",
           i, DBL_DIG, cos(Rad(i)) );
    } else {
      printf("cos(%3g) = 0\n", i, DBL_DIG);
    }
  }

  return 0;
}
174ぽぴぴおぷ:2008/01/07(月) 15:11:19
おつ!!


0度から180度までのsin cosの値を10度ずつ表形式で表示せよ。
ただし sin cosはmath.h(算術計算用ヘッダー)をインクルードすること。
また、角度は弧度(ラジアン)で入力すること
値=sin(角度/360.0+2.0*3.14);

[3.1]OS:windows XP
[3.2]C++Builder
言語:C言語
期限:いますぐお願いします
for文でお願いします
まだ1年生なので
175デフォルトの名無しさん:2008/01/07(月) 15:12:42
>>164
#include <stdio.h>

int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i = n; i >= 0; i--){
for(j=0;j <=i-1; j++)
putchar(' ');
for(k =n- j; k>0;k--)
printf("%c%c",'`*',' ');
putchar('\n');
}
}
176175:2008/01/07(月) 15:17:58
return 0;
を忘れてた。
177デフォルトの名無しさん:2008/01/07(月) 15:19:26
#include <stdio.h>
#include <float.h> /* DBL_DIG */
#include <math.h>

#define PI (3.14)
#define Rad(x) ( (x)/180 * PI )

int main()
{
  double i = 0;
  for (i = 0; i <= 180; i += 10) {
if ( (0 != i) && (180 != i) ) { /* かなり適当 */
printf("sin(%3g) = %.*f\n",
i, DBL_DIG, sin(Rad(i)) );
} else {
printf("sin(%3g) = 0\n", i);
}
}

for (i = 0; i <= 180; i += 10) {
if ( 90 != i ) { /* ここも */
printf("cos(%3g) = %.*f\n",
i, DBL_DIG, cos(Rad(i)) );
} else {
printf("cos(%3g) = 0\n", i);
}
}

return 0;
}
178デフォルトの名無しさん:2008/01/07(月) 15:20:15
誤爆った。 orz
179デフォルトの名無しさん:2008/01/07(月) 15:21:02
[1] 授業単元:C
[2] 問題文 コマンドラインから与えられた整数の引数をひとつ受け取って,その数と等しい個数のベクトルからなる配列を作成し,各ベクトルのx成分・y成分を読み込み,各ベクトルの長さを出力するプログラムを完成しなさい.
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン:任意
 [3.3] 言語: C言語
[4] 期限: 2008/01/08 15時まで
180デフォルトの名無しさん:2008/01/07(月) 15:26:20
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
??????? struct {
double x;
double y;
} ???????;
void InputVector(Vector *v)
{scanf("%lf", ???????);
scanf("%lf", ???????);
}double LengthVector(Vector v)
{return sqrt(???????);}
int main(int argc, char **argv)
{
int i;
int num;
Vector *varray;
if(argc !=2){
return 1;
}
num = atoi(???????);
if(num < 0){
return 1;
}
varray = (???????)malloc(???????);

181デフォルトの名無しさん:2008/01/07(月) 15:26:53
>>180続き
if(!varray){
return 1;
}

for(i = 0; i < num; i++){
InputVector(???????);
}

for(i = 0; i < num; i++){
printf("%lf\n", ???????);
}

???????;
return 0;
}
182デフォルトの名無しさん:2008/01/07(月) 15:31:15
問題:コマンドラインから与えられた入力ファイルが存在すれば,
そのファイルの中から与えられた整数の引数をひとつ受け取って,その数と等しい個数のベクトルからなる配列を作成し,各ベクトルのx成分・y成分を読み込み,
コマンドラインから入力ファイルが存在しなければ,
コマンドラインから与えられた整数の引数をひとつ受け取って,その数と等しい個数のベクトルからなる配列を作成し,各ベクトルのx成分・y成分を読み込む.
コマンドラインから与えられた出力ファイルが存在すれば,
各ベクトルの長さをそのファイルに出力し,
コマンドラインから与えられた出力ファイルが存在しなければ,
コマンドラインに出力する.
183デフォルトの名無しさん:2008/01/07(月) 15:32:53
>>182続き
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
??????? struct {
double x;
double y;
} ???????;
int InputVector(FILE *stream, Vector *v)
{
int result = fscanf(stream, "%lf", ???????);
if(result < 0) return result;
result = fscanf(stream, "%lf", ???????);
return result;}
double LengthVector(Vector v)
{return sqrt(???????);
}int main(int argc, char **argv)
{int i, num, checker;
Vector *varray;
FILE* inputstream;
FILE* outputstream = stdout;
//set input
if(argc < 2) {
fprintf(stderr, "input data from stdin\n");
inputstream = stdin;
}else
{inputstream = fopen(???????, ???????);
if(!inputstream)
{fprintf(stderr, "input file open error\n");
return 1;
184デフォルトの名無しさん:2008/01/07(月) 15:34:52
>>17

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

struct point{
double x;
double y;
};

int main()
{
struct point *cdl,*tmp;
int i, n;

printf("データの数は?: ");
scanf("%d", &n);

if((cdl = (struct point *)malloc(n * sizeof(struct point))) == NULL){
printf("メモリ確保に失敗しました。終了します。\n");
return 0;
}
185デフォルトの名無しさん:2008/01/07(月) 15:35:35
>>184 >>17の続き

tmp = cdl;
for(i=0;i<n;i++){
tmp->x = 0.0;
tmp->y = 0.0;
tmp++;
}

/*好きな作業しろ*/
tmp = cdl;
for(i=0;i<n;i++){
printf("point%d(%.2f,%.2f)\n",i,tmp->x,tmp->y);
tmp++;
}

free(cdl);
return 0;
}
186デフォルトの名無しさん:2008/01/07(月) 15:36:02
>>179-183は全部同一人物って事?
それならろだ使うなりしてほしい。

あとそのソース改変義務はあり?
187デフォルトの名無しさん:2008/01/07(月) 15:37:12
>>179>>180>>181
>>182>>183です
期限2008 1.8 15時まで解答お願いします
188デフォルトの名無しさん:2008/01/07(月) 15:40:58
>>174
まだいて間に合うなら作ってくるが?

あと、誰か>>184-185添削頼む。
189 ◆vLIz8KOkPM :2008/01/07(月) 15:41:25
結構時間がかかるプログラムなので、どうか>148をお願いしますm(__)m
190デフォルトの名無しさん:2008/01/07(月) 15:42:48
>>189
zipでまとめてUploaderにあげるといいよ。
191デフォルトの名無しさん:2008/01/07(月) 15:45:24
>>188

for (i = 0; i < n; ++i) {
cdl[i].x = 0.0;
cdl[i].y = 0.0;
printf("point%d(%.2f,%.2f)\n", i, cdl[i].x, cdl[i].y);
}
free(cdl);

じゃだめなん?
192デフォルトの名無しさん:2008/01/07(月) 15:45:35
>>189
木構造そのものはできてるけど、何が欲しいのかわからない。
193デフォルトの名無しさん:2008/01/07(月) 15:48:47
>>191
たぶん大丈夫だけど、初期化だけなのか、
その後データを扱うのかわからなかったから
拡張性を持たせてみた。
必要なきゃ、>>191のほうがすっきりしていいはず。
194デフォルトの名無しさん:2008/01/07(月) 15:56:23
>>169
#include <stdio.h>
#include <stdlib.h>

int gcm_(int l, int g){
  return l == 0 ? g : gcm_(g % l, l);
}

int gcm(int *in, int num){
  if (num == 2) return gcm_(in[0], in[1]);
  if (num > 2) return gcm_(*in, gcm(in + 1, num - 1));
  return *in;
}

int main(){
  int *p, n = 1;
  p = malloc(sizeof(int));
  if (p == NULL) return 1;
  while (scanf("%d", p + n - 1) == 1) {
    int *tmp = realloc(p, sizeof(int) * ++n);
    if (tmp == NULL) {
      free(p);
      return 1;
    }
    p = tmp;
  }
  printf("%d\n", gcm(p, n - 1));
  free(p);
  return 0;
}
195 ◆vLIz8KOkPM :2008/01/07(月) 16:00:21
>190
使い方がイマイチわからないのですが、ちょっと試してみます。

>192
課題に対して解答のプログラムが欲しいんです…よろしければメール頂けませんか?
196194:2008/01/07(月) 16:01:55
この方が簡潔か。

int gcm(int *in, int num){
  if (num == 1) return *in;
  else return gcm_(*in, gcm(in + 1, num - 1));
}
197デフォルトの名無しさん:2008/01/07(月) 16:08:57
>>195
うpろだ使った方がみんなに聞けていいと思いますよ。
自分も木構造は作ってありますが、問題見るまでできるかわからないので。。
198デフォルトの名無しさん:2008/01/07(月) 16:48:12
>>174の返答と>>195がうpろだから帰還しないので・・・
次の急ぎ課題はなにかあるのかな?
199デフォルトの名無しさん:2008/01/07(月) 17:02:06
宿題かもーん。
200デフォルトの名無しさん:2008/01/07(月) 17:13:35
>>167
お願いします。
201167 :2008/01/07(月) 17:17:25
すみません。
>>167 の課題2の区間は[1、2]です。
202 ◆vLIz8KOkPM :2008/01/07(月) 17:22:37
>195です
うpろだに投稿できたのですが、URLとかはどうやって貼るのですか?
203163:2008/01/07(月) 17:23:35
[1] 授業単元: C言語応用
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5653.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C言語
[4] 期限:
[5] その他:よろしくおねがいします。

もう一度書きます。。。
よろしくお願いします。
204デフォルトの名無しさん:2008/01/07(月) 17:47:07
>>141>>169の作動するプログラムお願いします
205デフォルトの名無しさん:2008/01/07(月) 18:00:54
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
#include<stdio.h>
#include<string.h>/*必要ならば使う。*/
int main(void){
char buf[200]={"0 2 4 5 12"};
printf("buf=%s\n",buf);
char a[100]={0};

/*ここから下のプログラムを完成させたい*/

/*bufから空白文字(スペース)を取り除いた、
0,2,4,5,12のみを配列aの先頭から順に格納する
つまり
a[0]=0,a[1]=2,a[2]=4,a[3]=5,a[4]=12,a[5]='\0'
となるように配列aに格納する。
ただし、bufは今"0 2 4 5 12"と整数5個で初期化してあるが、
実際は、整数が何個であっても(1つ以上100個以下)、動作するようにしたい。
(必ず整数の間には空白文字が入って初期化されているとする。)
*/
printf("a=%s\n",a);
return 0;
}
[3] 環境
 [3.1] OS:Mac Os X
 [3.2] gcc
 [3.3] 言語: C
[4] 期限:明日まで、至急お願いします
[5] その他の制限:なし

たぶん簡単な問題だと思います。
どなたかお願いします。
206デフォルトの名無しさん:2008/01/07(月) 18:12:38
>>204
>>141は作ってくる。すぐできると思うから張りついていてくれ。
ちなみにintか?doubleか?
207デフォルトの名無しさん:2008/01/07(月) 18:22:13
>>141>>204
#include<stdio.h>
#include<stdlib.h>
#define MAX 3

int main()
{
int i,j,k;
double matrix1[MAX][MAX],matrix2[MAX][MAX],matrix3[MAX][MAX];
double tmp;

/**** Format matrix ****/
for(i=0; i<MAX; i++)
for(j=0; j<MAX; j++){
matrix1[i][j] = ((double)rand() / ((double)RAND_MAX+1)*(double)MAX);
matrix2[i][j] = ((double)rand() / ((double)RAND_MAX+1)*(double)MAX);
matrix3[i][j] = 0.0;
}
208デフォルトの名無しさん:2008/01/07(月) 18:23:15
intでお願いします
209デフォルトの名無しさん:2008/01/07(月) 18:23:28
>>207続き



/**** Transposed matrix
for(i=0;i<MAX;i++)
for(j=i+1;j<MAX;j++){
temp = matrix2[i][j];
matrix2[i][j] = matrix1[j][i];
matrix1[j][i] = temp;
}
****/

for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++){
tmp = 0.0;
for(k=0;k<MAX;k++)
tmp += matrix1[i][k] * matrix2[j][k];
matrix3[i][j] = tmp;
}

/*後は好きに表示しな*/

return 0;
}
210デフォルトの名無しさん:2008/01/07(月) 18:24:50
>>208
すまん、doubleで作ってしまった・・・
douboleをintに変換してくれ。

間のtrans・・・は転置行列用だから必要になったら使ってみてくれ。
211デフォルトの名無しさん:2008/01/07(月) 18:33:37
>>205
>a[0]=0,a[1]=2,a[2]=4,a[3]=5,a[4]=12,a[5]='\0'
こうかいてあるけど、この通りに作るとしたら最後の出力の表示バグるよ
a[0]=0,a[1]=2,a[2]=4,a[3]=5,a[4]=1,a[5]='2',a[6]'\0'
ならできるけど
212デフォルトの名無しさん:2008/01/07(月) 18:40:08
問題に忠実に作った。

#include<stdio.h>
#define DEBUG

int main(void){
char buf[200]={"5 2 4 5 12"};
printf("buf=%s\n",buf);

char a[100]={0};

int i = 0, j = 0;
for ( ; i < 200 && buf[i] != '\0'; ++i) {
if (buf[i] == ' ') continue;

if (buf[i+1] != ' ') {
a[j] = a[j]*10 + buf[i];
} else {
a[j] += buf[i] - '0';
++j;
}
}
#ifdef DEBUG
for (i = 0; a[i] != '\0'; ++i) {
printf("a[%d]=%x\n", i, a[i]);
}
#endif
printf("a=%s\n",a);
return 0;
}
213212:2008/01/07(月) 18:41:54
補足で、buf[0]にいきなり'0'が入っているせいで
出力がいきなり終わるから、確認できるように5に置き換えてある。
214212:2008/01/07(月) 18:44:43
訂正
誤 a[j] = a[j]*10 + buf[i];
正 a[j] = a[j]*10 + buf[i] - '0';
215デフォルトの名無しさん:2008/01/07(月) 18:47:19
ありがとうございます。
216デフォルトの名無しさん:2008/01/07(月) 19:45:52
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5663.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 1/9
[5] その他の制限:なし
217デフォルトの名無しさん:2008/01/07(月) 19:46:18
画像を上げたいんですがいいロダ無いですか?
もちろん、課題関連です
218デフォルトの名無しさん:2008/01/07(月) 19:48:00
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク)
1〜12までの数字をそれぞれ3回ずつ使いランダムな数列を作る。
ただし、それぞれの数字は
Aグループ:12、2、10、7
Bグループ:4、3、1、11
Cグループ:9、8、6、5
のようにグループ分けされていて、同じグループの数字は最低1つ空けないといけない。
つまり、「… 9 4 3 …」などの並びを許さないが、「… 9 4 2 3 …」は可となる。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008/01/14
[5] その他の制限: 特になし

よろしくお願いします。
219デフォルトの名無しさん:2008/01/07(月) 19:52:23
>>203
一応書いたぞ
(ファイルが存在する場合ループにしたほうがよさげ。
そこは自分で変えてね。めんどくさいので無理矢理上書きする処理
にしてあるから。)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5664.txt
220デフォルトの名無しさん:2008/01/07(月) 19:54:52
221デフォルトの名無しさん:2008/01/07(月) 19:58:28
>>220
ありがとうございます
222デフォルトの名無しさん:2008/01/07(月) 20:13:44
>>218
444や919みたいなことは許されるの?
223 ◆vLIz8KOkPM :2008/01/07(月) 20:20:39
うpろだができたので、再び投稿します。
問題が難関だとおもわれるため、できる限り早めにやっていただけたら幸いです…
どうかよろしくお願いしますm(_ _)m


[1] 授業単元: プログラミング演習(木構造)
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5665.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] GNOME端末
 [3.3] 言語: C言語
[4] 期限: 1月12日正午
[5] 習った範囲
if文、switch文、for文、while文、関数、配列、構造体、ポインタ、ファイル操作
リスト、スタックとキュー、探索、木構造

いかにも初心者が作りましたって感じでお願いします。
224デフォルトの名無しさん:2008/01/07(月) 20:25:48
>>216
#include <stdio.h>
#include <stdlib.h>
#define FMAX 100 /* ファイル名最大値 */
#define LMAX 300 /* 1文の最大値 */

int main() {
FILE *fp;
char filename[FMAX], line[LMAX];
int count=1;
/* ここにプログラムを書く */

scanf("%s", filename);

if ((fp = fopen(filename, "r")) == NULL) {
printf("file not found");
return -1;
}

while (fgets(line, LMAX, fp) != NULL) {
printf("%3d : %s", count, line);
++count;
}

fclose(fp);

return 0;
}
225218:2008/01/07(月) 20:27:07
>>222
「4 4 4」は同じグループなのでアウトで
「9 1 9」は同じグループは連続していないのでOKです。
説明へたくそですいません。
226デフォルトの名無しさん:2008/01/07(月) 20:34:37
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):()下記の画像("t.bmp")を読み込み、その画像を1/3に縮小した画像を、縦3個、横3個並べた画像"s.bmp"を出力するプログラムを作成せよ。
なお、s.bmpのヘッダファイルに書き込むべき値は、 ファイルサイズ、画像サイズ、幅、高さ以外は元のファイルすなわちt.bmpのヘッダファイルの内容と同じで良い。 1/3に縮小した物を並べているので、ファイルサイズ、画像サイズ、幅、高さは微妙に変わる場合がある。
#元の幅、高さが3の倍数であれば同じであるが。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5667.txt このプログラム元におねがいします。中に指針的なものを書いてあります
ttp://ccfa.info/cgi-bin/up/src/up12831.bmp  元の画像です("t.bmp")
ttp://ccfa.info/cgi-bin/up/src/up12833.bmp  出力後の画像です"s.bmp

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: cc、gcc
 [3.3] 言語: C
[4] 期限: 1月10日までです
[5] その他の制限: 特にありません。よろしくお願いします
227デフォルトの名無しさん:2008/01/07(月) 21:01:22
[1] 授業単元:ニュートン・ラフソン法
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5668.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年1月8日
[5] その他の制限:できれば上級者が使うようなポインタや構造体、デストラクタなどの関数は使用せずにお願いします



原文をうpできないので問題文は自分でまとめたのですが不備があれば聞いてください
よろしくお願いします!
228デフォルトの名無しさん:2008/01/07(月) 21:11:39
>>218 1レスにするために無理してるので、自分で適当に展開しておいて
#include<stdio.h>
#include<stdlib.h>
typedef struct tag_group{
int num, rest[4*3];
}group_t;
group_t group[]={
{12,{12,12,12, 2, 2, 2,10,10,10, 7, 7, 7}},
{12,{ 4, 4, 4, 3, 3, 3, 1, 1, 1,11,11,11}},
{12,{ 9, 9, 9, 8, 8, 8, 6, 6, 6, 5, 5, 5}}
};
int main(void){
int i, j, wholenum=0, prev=-1, cur, group_num=3, idx;
for(i=0;i<group_num;i++) wholenum+=group[i].num;
while(wholenum){
if(prev<0) cur=rand()%group_num;
else cur=(prev+1+(rand()%(group_num-1)))%group_num;
for(j=0;j<group_num;j++) if(group[j].num*2>wholenum) cur=j;
if(group[cur].num<=0){
group[cur]=group[--group_num];
if(prev==cur) prev=-1;
if(prev==group_num) prev=cur;
continue;
}
idx=rand()%group[cur].num;
printf(" %2d", group[cur].rest[idx]);
group[cur].rest[idx]=group[cur].rest[--group[cur].num];
wholenum--;
prev=cur;
}
return 0;
}
229デフォルトの名無しさん:2008/01/07(月) 21:15:48
[1] 授業単元:アルゴリズム理論
[2] 問題文(含コード&リンク):
2つのn次元のベクトルa,bに対して、
内積はc=Σa[i]b[i]で定義される。
a,bの各要素が一様な確率p(0~1)で0でない値を取る時、
np^2回の乗算で内積を計算する方法は存在するか?
存在するならその方法でプログラムを書き、しないならそれを証明せよ
計算前に計算量及び記憶容量をO(n)だけ使用してa,bを改変してよい。
ただしその操作でaとbを同時に扱ってはならない。(例えば、その操作で先に各要素の積を計算してはならない)
if文などによるa,bの要素の比較は乗算と同じコストを持つとみなされ、乗算回数に含まれる

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VS2005
 [3.3] 言語: C++
[4] 期限:2008年1月31日
[5] その他の制限: 無し

お願いします。
230デフォルトの名無しさん:2008/01/07(月) 21:30:42
>>212
ありがとうございました!!!
231デフォルトの名無しさん:2008/01/07(月) 21:34:55
[1]プログラミングU
[2]

(1)
 次の学生の成績表を元に,出力結果のように合計点と平均点を出力するプログラムを作成せよ。ただし,for文を使うこと。

(成績表)
学籍番号 5001 5002 5003
数学 62 45 76
英語 75 65 93
国語 54 82 63
(出力結果)
数学の合計点=177点,数学の平均点=59.0点
英語の合計点=233点,英語の平均点=77.7点
国語の合計点=199点,国語の平均点=66.3点
(2)
(1)で作成したプログラムを元に,学生別の合計点を出力するプログラムを作成せよ
(出力結果)
学籍番号5001の合計点は,191点です。
学籍番号5002の合計点は,192点です。
学籍番号5003の合計点は,226点です。
(3)
(1)で作成したプログラムを元に,科目別の最高得点を表示するプログラムを作成せよ。
(出力結果)
数学の最高得点は70点です。

英語の最高得点は93点です。

国語の最高得点は82点です。
232デフォルトの名無しさん:2008/01/07(月) 21:35:22
(4)
(1)で作成したプログラムを元に,70点以上を得点した学生の人数を科目別に表示するプログラムを作成せよ。
(出力結果)
数学:1人
英語:2人
国語:1人
[3]環境
[3.1]XP
[3.2]visual studio 2005
[3.3]C++
[4]1/26
[5]なし
試行錯誤やりましたが、どうもうまくいきません。
よろしくお願いいたします。
233デフォルトの名無しさん:2008/01/07(月) 21:35:45
>>219
ありがとうございました!!!
234219:2008/01/07(月) 21:41:10
イエーイ!!
あんなソースでもありがとうございましたの言葉
もらえたぜ〜                    /
---\/-----------------------------
'`,、('∀`) '`,、
235デフォルトの名無しさん:2008/01/07(月) 21:45:02
>>227
ニュートン・ラフソン法を理解することに必死になってしまったがこんな感じでいいと思う
#include<stdio.h>
#include<math.h>

double f(double x, double a, double b, double c){
return a * x * x + b * x + c;
}
double df(double x, double a, double b, double c){
return 2 * a * x + b;
}

int main(void){
double x = 1.0;
double maxerror = 0.00000001;
double a = 3, b = 4, c = 1; /* x = -1/3 */
double EPS = f(x, a, b, c) / df(x, a, b, c);
int N;
for(N = 0; fabs(EPS) > maxerror; N++){
x -= EPS;
EPS = f(x, a, b, c) / df(x, a, b, c);
}
printf("X = %10.24f\n", x);
printf("N = %d\n", N);
printf("EPS = %3.24f\n", EPS);
return 0;
}
236デフォルトの名無しさん:2008/01/07(月) 21:51:09
>>204
>>194>>196はお気に召さないか?
237デフォルトの名無しさん:2008/01/07(月) 22:03:10
>>223
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5669.c
動作チェックがまだ不十分だけど、こんな感じでどうかな
238237:2008/01/07(月) 22:07:10
ああ、ロケールがUTFだからか
17行目の日本って部分が化けてるな
もし化けてたら日本ってかえておいて。
239デフォルトの名無しさん:2008/01/07(月) 22:08:37
>>235
すいません、せっかくニュートンラフソン法まで理解していただいて作っていただいたのですが・・・
問題は以下のリンク先の冒頭にあるように3次方程式なんです・・・

3次方程式は任意で良い の部分は
3次方程式の各係数は任意で良い の方が正しいですね・・・



ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5668.txt

ニュートン・ラフソン法と以下のヒントを用いて3次方程式の解を求めるプログラムを作成しなさい
3次方程式は任意で良い
240デフォルトの名無しさん:2008/01/07(月) 22:16:18
>>239
ああ、申し訳ない。何を考えていたんだろう。
mainでdouble a,b,c,dを定義して
fはax^3+bx^2+cx+d
dfは3ax^2+2bx+c
をreturnするように書き換えればおk
241デフォルトの名無しさん:2008/01/07(月) 22:21:01
つぎのようなファイルをオープンしようとすると読み込めないのですが改善策はありますでしょうか?
index.php_cmd=kgg&cmds=displaytxt&kid=0
242デフォルトの名無しさん:2008/01/07(月) 22:23:38
>>241
日本語でおk
243デフォルトの名無しさん:2008/01/07(月) 22:24:45
>>241
スレ違い.>>1読め
244デフォルトの名無しさん:2008/01/07(月) 22:29:59
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5670.txt
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:c
[4] 期限:2008年1月8日

もう一度書き込みました。必死ですみません…。
どなたか宜しくお願いします。


245237:2008/01/07(月) 22:33:12
>>223
問題文のメニューにノード削除コマンドが書いていなかったからすっかり忘れてたけど
削除コマンドも必要なのね・・・

というわけでデリートコマンド実装した。
あと書式が一部間違っていたり、メモリ解放してなかったり、色々まずい部分も修正済み。
>>237の訂正版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5671.c
246デフォルトの名無しさん:2008/01/07(月) 22:41:09
[1] 授業単元:プログラミング技術
[2] 問題文(含コード&リンク):
マクロ#ifdefなどを使い、条件コンパイルできるようなソースを書け。
なお#ifdefは
#ifdef 名前
//実行本体
#else //なくてもよい
//実行本体
#ifdef //#ifdefの終了
という使い方をする。 
 [3.1] OS:Linux
 [3.3] 言語:C
[4] 期限:2008年01月09日10:20まで
[5] その他の制限: なしです

あけましておめでとうございます。
よろしくお願いします。。
247デフォルトの名無しさん:2008/01/07(月) 22:43:13
>>246
実行本体のところは何でもいいってこと?
248デフォルトの名無しさん:2008/01/07(月) 22:58:46
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):年月日計算
問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5649.txt
サンプルプログラム:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5648.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年1月8日9:00まで
[5] その他の制限:
  サンプルプログラムに「日付を一年ずらす関数」を付け加えるだけでよくなりました。
  他の処理はなんとか自分でできました。

恐縮ですがもう一度カキコさせて頂きます。私も必死ですみません...。
心やさしいお方宜しくお願いいたします。  
249デフォルトの名無しさん:2008/01/07(月) 23:10:29
>>248
/* 一年前の日付を求める */
void day_prev(int *y){
(*y)--;
}
250デフォルトの名無しさん:2008/01/07(月) 23:12:43
面倒くさいプログラムですが、グラフィック得意な職人さんよろしくお願いします。

[1] 授業単元:C言語演習〜3次元グラフィック〜
[2] 問題文(含コード&リンク):
最終課題としてオリジナル作品を制作する。
以下の仕様を満たすように作成すること。
・3次元オブジェクトを作成する。(基本なんでも良い)
・アニメーションを入れること。(自動アニメーションなど)
・シェーディングを用いること。(グローシェーディングなど)
・プログラムの説明をプログラム中に記載すること。

自分の希望は球体を3D描画し、光源を1つ用意し、グローシェーディングで球体表面に影を付け
自動アニメーションで360度光源が球体の周りを回転して、「月の満ち欠け」再現するようなプログラムを希望します。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: cygwin gcc (Devel, Libs, Graphicsをインストール)
 [3.3] 言語: C言語
[4] 期限: 2008/1/13(日)
[5] その他の制限:
cygwinでインストール時にDevel,Libs,Graphicsをインストールしてある環境で動作するものをお願いします。
コンパイル:-DWIN32 -lglut32 -lopengl32 -lglu32
GLUT,GLUIはインストールされています。
251219:2008/01/07(月) 23:14:37
>>244
(2)だけやった
#include <stdio.h>

double Simpson(int range)
{
double one_r = 1/(double)range;
double s,e = 0.0;
for(s = 1.0; s < 2.0; s += one_r)
e += (((1/(s + one_r))-1/s)/2 + (1/(s + one_r)))*one_r;

return e;
}
int main()
{
printf("区切りの数は5で%lf \n",Simpson(5));
printf("区切りの数は10で%lf \n",Simpson(10));
printf("区切りの数は20で%lf \n",Simpson(20));
printf("区切りの数は40で%lf \n",Simpson(40));
printf("区切りの数は100で%lf \n",Simpson(100));
printf("区切りの数は1000で%lf \n",Simpson(1000));
printf("区切りの数は5000で%lf \n",Simpson(5000));
return 0;
}
252デフォルトの名無しさん:2008/01/07(月) 23:15:18
>・プログラムの説明をプログラム中に記載すること。
これは欲張りすぎだろう・・・
253デフォルトの名無しさん:2008/01/07(月) 23:20:56
>>252
そうですね。
問題にそう書いてあるだけなので、プログラムを作成していただければ
後は自分でプログラムの説明を書きます。
どうかお願いします。
254デフォルトの名無しさん:2008/01/07(月) 23:24:35
>>248
1年ずらすだけなら
yが閏年か判断してからインクリメントして、
1足すか足さないかでできるんじゃないか?
255248:2008/01/07(月) 23:25:45
>>249
ありがとうございます!
難しく考えていました。
あとmainの中での処理はどう付け加えたら良いでしょうか?
256デフォルトの名無しさん:2008/01/07(月) 23:29:38
拾い忘れは無いと思うが、アンカーが多すぎますとか初めて食らった。
遠い順からアンカー無しで

【未解決問題】
>>179 1/8 15時
>>18  1/8
>>22  1/8
>>29  1/8
>>244 1/8 残り(1)のみ

>>246 1/09 10:20
>>96 1/9
>>13 1/9
>>138 1/9
>226 1/10
>148 1/12 正午
>250 1/13
>231-232 1/26
>229 1/31
257デフォルトの名無しさん:2008/01/07(月) 23:33:12
>>228
ありがとうございました。
早い回答で大変助かります。
せっかく時間があるので中身はきちんと自分で理解してから
提出しようと思います。
258デフォルトの名無しさん:2008/01/07(月) 23:34:01
>>246
#include <stdio.h>
#define jap

int main(){
puts(
#ifdef jap
"世界よ、こんにちは!"
#else
"Hello, World!"
#endif
);
return 0;
}
259デフォルトの名無しさん:2008/01/07(月) 23:40:10
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5672.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:[2008年1月8日 8:00まで
[5] その他の制限:前スレで解答済みの台形の公式を用い積分を計算するプログラムなのですが
このプログラムのデータ読み込みの部分と積分値を計算する部分を関数化したいのですが
どうすれば良いでしょうか?ちなみに前スレに問題を提示した者ではありません。
どなたかよろしくお願いいたします。
260248:2008/01/07(月) 23:46:34
>>254
ありがとうございます。
それだと]>>249さんに教えて頂いたものと違ってきますか?
具体的にプログラムを書いていただけると、
とても助かるのですがお願いできないでしょうか。。
261デフォルトの名無しさん:2008/01/07(月) 23:46:39
>>259
>どうすれば良いでしょうか?
スレ違い。関数化する宿題であればきちんと問題から書き直しするように。
262デフォルトの名無しさん:2008/01/07(月) 23:46:48
[1] 授業単元:C
[2] 問題文 複数の数値に対する最大公約数を求める関数を作成し、それを利用するプログラムを作成せよ。関数は下記の通りとする。
int gcm(int *in,int num)
  in  入力値が格納された配列の(先頭)ポインタ
num 入力値の最大公約数
入力に関して
  キーボードから、入力値がスペース1つ開けて1行で入力する。この時、入力を促す文字等は決して表示しないこと。
出力に関して
  結果+改行のみ出力。指定した数値・改行以外の文字等の出力は一切行わないこと。
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン:stady C
 [3.3] 言語: C言語
[4] 期限: 2008/01/08(月)(〜22:00)
[5] その他の制限:簡単にお願いします
263デフォルトの名無しさん:2008/01/07(月) 23:50:09
>>259
つまり
・読み込み用にopenfile関数。
・計算部分用にmath関数。
・最後にmain関数で結果を出力。
って感じで構成すればいいの?関数名は適当だけど。
264デフォルトの名無しさん:2008/01/07(月) 23:53:34
93スレの問いの答えお願いします
265219:2008/01/07(月) 23:56:01
>>244
(1)
C言語によるアルゴリズム事典から抜粋
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5673.txt
266デフォルトの名無しさん:2008/01/07(月) 23:56:50
>>264
>>93のことか?
>>94を読んで、>>1を読んで、質問から書き直すように。
267デフォルトの名無しさん:2008/01/08(火) 00:01:08
>>264
何のOS?コンパイラはなに?そもそもCかC++かすら分からないのに答えるのは相当なエスパー。
268デフォルトの名無しさん:2008/01/08(火) 00:03:37
269デフォルトの名無しさん:2008/01/08(火) 00:32:15
いくつかわからない問題があるのですが
これが一番解りませんでした。どうぞよろしくお願いします

[1] 授業単元: Cプログラム
[2] 問題文:while文または、for文を使って以下のように☆と★を表示させるプログラム
[表示例]
       ★
      ★☆★
     ★☆★☆★
    ★☆★☆★☆★
   ★☆★☆★☆★☆★
  ★☆★☆★☆★☆★☆★
 ★☆★☆★☆★☆★☆★☆★
★☆★☆★☆★☆★☆★☆★☆★

・最下段は★と☆が合計15個ならぶ
・☆印だけではなく、空白も表示させるようにする
*表示例が崩れた場合に一応。ツリー型です。
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語:C
[4] 期限: 今週金曜日昼まで
[5] その他の制限: 現在for文が終わったところです。まだループの中断は習っていません。if文も使用可能との事です
どうぞよろしくお願いします。また別の問題が解らなかったら現れるかもしれません。
270デフォルトの名無しさん:2008/01/08(火) 00:41:58
>>269

#include <stdio.h>
int main(void){
int n=7,i,j;
for(i=0;i<n;i++){
for(j=1;j<n-i;j++)
printf(" ");
for(j=0;j<i;j++)
printf("★☆");
printf("★\n");
}
return 0;
}
271デフォルトの名無しさん:2008/01/08(火) 00:50:48
>>269
#include<stdio.h>
#define N 7
int main(void){
int i,j;
for(i=0;i<N;i++){
printf("%*s★",(N-1-i)*2,"");
for(j=0;j<i;j++)
printf("☆★");
printf("\n");
}
return 0;
}
272デフォルトの名無しさん:2008/01/08(火) 00:51:27
273デフォルトの名無しさん:2008/01/08(火) 00:55:42
[1] 授業単元:プログラミング入門
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5676.txt
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:今週の金曜まで
[5] その他の制限:ポインタのところぐらいまでやってます。
よろしくお願いします。
274デフォルトの名無しさん:2008/01/08(火) 01:03:00
>>273
 仕様はそれであっているのか。なら書くが。
% はくっつくのかくっつかないのか、それともどちらも正しいのか。
文字(列)操作でも、オプションは printnum なのか
275273:2008/01/08(火) 01:06:55
printnumはオプションじゃなくて実行ファイル名ですけど?
276デフォルトの名無しさん:2008/01/08(火) 01:10:00
277デフォルトの名無しさん:2008/01/08(火) 01:13:39
>>179
 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5678.txt
こっちにしといてくれ、入力ミス回避のところうまく動いてなかった。
278デフォルトの名無しさん:2008/01/08(火) 01:13:50
>>273
#include <stdio.h>
#include <stdlib.h>

int main (int argc, char **argv) {

if (argc != 3) {
printf("usage: printnum [mode] [value]\n");
return -1;
}

switch (argv[1][0]) {
case 'o':
printf("%o", atoi(argv[2]));
break;
case 'x':
printf("%x", atoi(argv[2]));
break;
case 'd':
printf("%d", atoi(argv[2]));
break;
}

return 0;
}
279259:2008/01/08(火) 01:26:02
>>263
はいそういうことです。わかりにくくてすみません。
280259:2008/01/08(火) 01:31:23
>>261
定積分の計算を台形の公式をつかっておおよその値を求めるプログラムを作る
宿題が出たのですがそのプログラムは、「データの読み込み関数」と、「積分値を計算する関数」
を作ることが必須だったのです。関数名は何でもかまわないのですが..。
分かりにくくてすみませんでした。

281デフォルトの名無しさん:2008/01/08(火) 01:39:44
[1] 授業単元:最終課題
[2] 問題文:

10×10(変えることができる)の迷路の脱出過程(どこをどのように通ったか)を表示するプログラムを作成せよ
なお、Sはスタート地点・Gはゴール地点・Wは壁・Rは経路を示す
また脱出者は迷路に関する情報は事前に持っていないこととし、
脱出過程の表示は、定期的に現在地を表示するものと、最終的な経路を表示するものを用意すること。
SWWWWRWWWW
RWRRWRWWWW
RWWRWRWWWW
RRRRRRRRRR
WWRWWRWWWW
WWRWWRWWWW
WWRWWRWWWW
RRRRRRRRRR
WWWWWWWWWR
WWWWWWWWWG

[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++
[4] 期限:2008年1月9日
[5] その他の制限:関数を使って、なるべく簡単な方法でお願いしますm(_ _)m
282デフォルトの名無しさん:2008/01/08(火) 01:44:04
>>226

( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5680.zip

ごめん・・・原型とどめてないお・・・
283デフォルトの名無しさん:2008/01/08(火) 01:49:12
>>280
宿題であればちゃんとテンプレに沿って問題を書け
(その上で前スレで類似解答があったことを書く)
他人のを使って横着はイクナイ
284デフォルトの名無しさん:2008/01/08(火) 01:52:29
[1] 授業単元:ライブラリ強化週間
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5679.zip
えーっと、新しいガベージコレクト方法を思いついたというか、参照カウント法の拡張で循環参照に対応できないかという試みです。
その名もユニークカウント法!ってやってたら、ウイークポインタがあるらしいけど、それともちょっと違う。
で、個人では追跡しきれないので手伝ってほしいというものです。
要点は配列クラスとして、最低限満たしているかということと、メモリのスマッシュとリークが発生しないことを確かめたいです。
TMemoryはメモリの操作のラッパーでメチャメチャ低機能です。
UniqueCounterは所有権を他の同じクラスと共有して一意なモノの所有者をカウントします。破棄は最後に残ったひとつが担当しています。
TArrayは上の二つを利用してD言語の影響で作った配列クラスを実現します。っていうかそういう予定です。
[3] 環境
 [3.1] OS: Any(筆者はWindows使用)
 [3.2] コンパイラ名とバージョン:VC++9 Express。他。
 [3.3] 言語:C++
[4] 期限: 3日間位
[5] その他の制限: STL可。BOOST&TR1以降禁止。なるべく標準の範囲で。マルチスレッドは考慮しない。

よろしくお願いします。
285237:2008/01/08(火) 01:54:11
>>223
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5681.c

223から返事はないが、寝る前に例外処理に対応した最終版をupしとこう
それじゃgood luck
286デフォルトの名無しさん:2008/01/08(火) 01:55:50
1] 授業単元:プログラミング
[2] 問題文
次のsample.txtを配列a[][]にいれてからモニターに表示しなさい。


101 287 345 391 348 287 391
371 388 39 388
88 404 150 428 404 387 145 299 404 197
320 397 141 342 428 429 206
36 214 412 88 176 214 346 210 406 308
250 26 112 370 328 328 284


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:[2008年1月8日 13:00まで
[5] その他の制限:ファイルの入出力を最近ならいました
287デフォルトの名無しさん:2008/01/08(火) 01:55:54
>>284
それは宿題なのか?違うなら帰れ
288デフォルトの名無しさん:2008/01/08(火) 02:06:38
>>287
自分への宿題って言うのはだめ。。。ですよねぇ〜。

λ...<帰る。

ファイルは寝て起きたら消します。
乱文失礼しました。
289259:2008/01/08(火) 02:09:21
>>283
すみませんでした。以後気をつけます。
まだ時間があるのでなんとか頑張ってみます。
290デフォルトの名無しさん:2008/01/08(火) 02:10:09
〜を作れってのならまだしも、デバッグしろってのはスレ違いすぎる
291デフォルトの名無しさん:2008/01/08(火) 02:20:14
>>286
汎用性は持たせずにそれを解ければおk?
292246:2008/01/08(火) 02:34:38
>>247
ちょっとそこらへん怪しく感じたので、明日に友人に聞いてみます;;

>>258
回答ありがとうです!実行本体がなんでもよかったら是非使わせてもらいます!
293デフォルトの名無しさん:2008/01/08(火) 03:13:57
>>286
#include <stdio.h>
#define GYOU 6
#define RETU 11

int main()
{
FILE *fp = fopen("sample.txt","r");
int a[GYOU][RETU] = {0};
int ch,num,tmp,i,j;
for( i = 0; i < GYOU; i++){ for( j = 0; j < RETU; j++){
for(num = 0;(ch = fgetc(fp)) > ' ';){
tmp = ch - '0';
num *= 10;
num += tmp;
}
if(ch == ' ')
a[i][j] = num;
else if(ch == '\n')
break;
}
}
for( i = 0; i < GYOU; i++){ for( j = 0; j < RETU; j++){
if(a[i][j])
printf("%d ",a[i][j]);
}
putchar('\n');
} return 0;
}
294デフォルトの名無しさん:2008/01/08(火) 06:01:21
>>29
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <functional>
#include <map>
using namespace std;
typedef multimap<int,string,greater<int> > mmap;
int main(void){
string name;
cout <<"ファイル名教えれ:";
cin >> name;
ifstream ifs( name.c_str() );
if( !ifs ) { cerr << name << "なんか知らないんだからね" ; return 1; }
mmap tensu;
string buf;
while ( getline( ifs, buf ) ) {
string::size_type pos ( buf.find( " " ) );
tensu.insert( mmap::value_type( atoi( buf.substr( pos ).c_str() ), buf.substr( 0, pos ) ) );
}
for( mmap::iterator it ( tensu.begin() );it != tensu.end(); ++it )
cout << it->first << ":" << it->second << endl;
}
課題の要求が良くわからんのだが,適当に
295デフォルトの名無しさん:2008/01/08(火) 06:31:09
296デフォルトの名無しさん:2008/01/08(火) 07:06:08
>>270 >>271
亀ですいませんが
ありがとうございました
297デフォルトの名無しさん:2008/01/08(火) 08:47:08
>>282
ありがとうございます
結果が白黒になるんでしょうか?家にLINUX環境が無いので確認できません…
なるのでしたら修正方法をご教授いただきたいです
298デフォルトの名無しさん:2008/01/08(火) 09:22:55
>>297
結果を白黒にしないのなら、310 行目の bmpimg_monochrome() 関数の
呼び出しを削除すればおk。
299るRJ:2008/01/08(火) 11:29:39
[1] 授業単元:情報処理演習
[2] 問題文(含コード&リンク):
  10進数で入力した整数を2進数に変換するプログラムを作成せよ。
  ただし関数を用いること。
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: gcc 2.4
 [3.3] 言語: C
[4] 期限: 1月9日 九時
[5] その他の制限:
300 ◆vLIz8KOkPM :2008/01/08(火) 11:51:41
>>223の問題に対して>>245の解答をいただいたのですが、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5686.txt
のようなエラーがでました。修正していただけないでしょうか?


301デフォルトの名無しさん:2008/01/08(火) 12:14:37
もうほんと助けてくださいお願いします

講義 プログラミング概論(教養

(平面状の座標を構造体で表す

平面状の二点の座標を読み込み、それら2点の距離を出力するCプログラムを作成せよ

但し、プログラム作成においては、平面状の点をX座標(実数値)、Y座標(実数値)の組の構造体で表し、
それにpointというデータ型名を付けるものとする
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

です、お願いします。
302デフォルトの名無しさん:2008/01/08(火) 12:16:58
書き忘れました

 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: (C
[4] 期限: 30分後・・・・・
303デフォルトの名無しさん:2008/01/08(火) 12:32:01
みんなおはよう

>>299
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5687.c
再帰処理してあるから適当に読み取ってくれ。
304デフォルトの名無しさん:2008/01/08(火) 12:37:24
>>301
見てるか?後5分待て。今気がついたから即効作る。
305デフォルトの名無しさん:2008/01/08(火) 12:43:11
>>299
#include<stdio.h>
void d2b(unsigned int n){
unsigned int m=0;
int i;
for(i=0;n>0;m=m*2+n%2,n/=2,i++);
for(i+=!i;i>0;printf("%d",m%2),m/=2,i--);
printf("\n");
}
int main(void){
int n;
printf("n=");
scanf("%d",&n);
d2b(n);
return 0;
}
306デフォルトの名無しさん:2008/01/08(火) 12:44:14
ありがとうございますお願いします
(:_;)
307デフォルトの名無しさん:2008/01/08(火) 13:02:45
>>301
すまん、間に合わなかったなあ・・・
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5688.c

コンパイル時に gcc ファイル名 -lm
としてくれ。遅れてすまん。。。
308デフォルトの名無しさん:2008/01/08(火) 13:27:16
>>300
typedef struct NODE {
char name[NMAX];
struct NODE *parent;
struct NODE *child[CMAX];
}NODE;
309 ◆vLIz8KOkPM :2008/01/08(火) 13:43:38
>>245さん、>>308さん本当にありがとうございます。
死ぬ程助かりました…
一応バカなりに、ちょっとは理解したいため、プログラムにコメントで、解説をつけていただけないでしょうか…?
自分でプログラムの説明できるようになりたいんで…
これがプログラムです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5690.txt

あと、このプログラム中で、NMAX128 DMAX128 CMAX128をひとつにまとめて、MAX512にしてもいいんですか?
310デフォルトの名無しさん:2008/01/08(火) 14:19:33
未終了の課題まだー?
311デフォルトの名無しさん:2008/01/08(火) 14:55:57
宿題かもーん。
312デフォルトの名無しさん:2008/01/08(火) 15:00:07
[1]C言語
[2]三つのint型整数を昇順に並びかえる関数
 void sort3(int *n1,int:n2,int:n3){/*…*/}
 を作成せよ
[3]
OS:XP 言語:C++
[4]
1月11日(金)

よろしくお願いします
313デフォルトの名無しさん:2008/01/08(火) 15:25:19
281
誰かお願いします(ノ_・。)
314デフォルトの名無しさん:2008/01/08(火) 15:31:58
>>312
引数がわけわかめ
315デフォルトの名無しさん:2008/01/08(火) 15:36:01
//>>312

#include <ostream.h>
#include <stdlib.h>

template<class T>
class Sort {
private:
  void sort2(T& i1, T& i2) {
    T temp = 0;
    if ( i1 > i2 ) {
      temp = i1; i1 = i2; i2 = temp;
    }
  }

public:
  void sort3(int* n1, int* n2, int* n3) {
    sort2(*n1, *n2);
    sort2(*n2, *n3);
    sort2(*n1, *n2);
  }
};

int main()
{
  int x, y, z; Sort<int> sort;
  srand(time(NULL));
  x = rand(); y = rand(); z = rand();
  sort.sort3(&x, &y, &z);
  cout << x << " <= " << y << " <= " << z << endl;
  return 0;
}
316デフォルトの名無しさん:2008/01/08(火) 15:43:57
>>313
迷路自体のプログラムはできてるんですか?
表示というか、経路管理の関数だけ作ればおk?
317デフォルトの名無しさん:2008/01/08(火) 15:55:38
>>281
これはひどい。最短求められてない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5691.txt
318デフォルトの名無しさん:2008/01/08(火) 16:27:20
1 C言語
2 8パズルの解法
1、84
162
537 の状態から
123
456
78 に至る(空白=0)コマの動かし方を求める。まず初期状態から動かせる向きをその都度ランダム
に選んで状態を変えることによって目標状態を目指すプログラムを作りなさい。

2、1のプログラムを改良して過去に一度なったことがある状態に2回以上ならないようにしてください。

3,1 unix
3,2 gcc
3,3 c
4 今日中

プログラムの宿題なんですが解いてくださいお願いします。こまってます。
319デフォルトの名無しさん:2008/01/08(火) 16:35:03
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):西暦を入力すると、その年の祝日・国民の休日・振替休日を表示するプログラムを作成せよ。
なお、休日については以下を参照すること。
http://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E6%9A%A6#.E5.9B.BD.E6.B0.91.E3.81.AE.E7.A5.9D.E6.97.A5
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:?
 [3.3] 言語:C
[4] 期限:2008年1月8日23時
[5] その他の制限:よろしくお願いします
320デフォルトの名無しさん:2008/01/08(火) 16:49:09
何年から何年まで対応するんだ。
ハッピーマンデー前後だけでも大きく変わるのだが
321デフォルトの名無しさん:2008/01/08(火) 16:50:28
318誰か助けてください。やばいんです。
322デフォルトの名無しさん:2008/01/08(火) 16:53:31
>>320
1948年以降です
現行の休日制度が変わらないと仮定して、9999年ぐらいまで対応していただきたいです
323デフォルトの名無しさん:2008/01/08(火) 16:53:53
wikiのページを参照だと!?
324デフォルトの名無しさん:2008/01/08(火) 16:56:49
325デフォルトの名無しさん:2008/01/08(火) 17:01:07
>>318
とりあえず
自分の書いた中で
どこかおかしなとこがないか見直そうぜ
326デフォルトの名無しさん:2008/01/08(火) 17:05:49
>>317
>>324
ありがとうございます!!(・_・、)
327デフォルトの名無しさん:2008/01/08(火) 17:08:41
>>325さん
すいません。
840
162
537
から
123
456
780
です。これでいいでしょうか?
他におかしい点あったら指摘お願いします。
328デフォルトの名無しさん:2008/01/08(火) 17:23:10
>>327
325じゃないけど、何がしたいのか分からない。
・最初の数字バラバラの状態は、手動入力で受付るようにすのか?
 それともファイルを読み込むのか?
 もしくはランダムで作成するのか?

・パズル解くまでの過程は1つ1つ表示するのか?
 それとも手動入力orファイル読み込み後、いきなり並び替え後を表示していいのか?
 それだと、どういう順序で解いたのか分からない。(題意では>>コマの動かし方を求める。ってあるぞ?)
329デフォルトの名無しさん:2008/01/08(火) 18:08:35
>>138 なんですけど、明日までなんでどうかよろしくお願いします(>_<)
330 ◆CxWBqy7wZQ :2008/01/08(火) 18:53:37
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
二分木の問題で数式をノードとしたものです。
大方の形はできているのですが何故か正しい計算結果が出ません。
どなたか修正お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5693.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.3
 [3.3] 言語: C
[4] 期限: 1月9日24:00
[5] その他の制限:
よろしくお願いします。
331273:2008/01/08(火) 18:56:29
>>274
すいません。%のことは書き間違えてました。%は全部くっついてません。
>>278
ありがとうございます。

誰か2番の問題の方も書いていただけませんか?
332デフォルトの名無しさん:2008/01/08(火) 19:27:10
[1] 授業単元:卒論
[2] 問題文(含コード&リンク):素数の連結リストの作成
[3] 環境
 [3.1] OS: windows home
 [3.2] コンパイラ名とバージョン: gcc(cygwin)
 [3.3] 言語: C
[4] 期限: 特にないですが、早ければ早いほどありがたいです
[5] その他の制限: 特になし

一応プログラムを作ってみました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5694.txt
数値のリストへの格納、2の倍数が格納されているリストの削除までは正常に行えているようなのですが
3の倍数が格納されてるリストを削除しようとする時にcore dumpしているようです。

カーマイケル数を求めるために必要なリストを作っている最中なので、先に進めず悩んでいます
core dumpの原因が分かる方、ヒントor修正お願いします
333デフォルトの名無しさん:2008/01/08(火) 19:37:42
下記URLの奇数問題を解ける人がいなくて困ってます。助けてください。
http://www.nlab.sogo1.ynu.ac.jp/ynu/lecture/ibt1/2007report.pdf

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク) :上記URL
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.3
 [3.3] 言語: C
[4] 期限: 明日の朝一です
[5] その他の制限: 特にありません

よろしくお願いします。
334デフォルトの名無しさん:2008/01/08(火) 19:57:11
>>315
ありがとうございました
参考にさせて頂きます
335デフォルトの名無しさん:2008/01/08(火) 20:46:22
>>332
60行目あたりの
>for(j=pow(q,2);j<MAX;j=j+2*q) list_remove(list_search(&data,j));
でlist_searchからNULLが返ったときにコアダンプ。
おそらくポインタの使いかたとかじゃないかと思うけど。
正確にはlist_removeのif (*p != NULL)でエラーが出てるはず。

for文にあまりぶち込まない方がいいとおもいます。
336デフォルトの名無しさん:2008/01/08(火) 21:15:11
>>332
list_search(&data, j)がNULLのときにエラーが起きてる気がする。
q=3;
while(pow(q,2)<=MAX){
    for(j=pow(q,2);j<MAX;j=j+2*q) list_remove(list_search(&data,j));
        /*リストから9,15,21,24,...のデータが入ってるリストを削除*/
    q += 2;
        /*次はリストから25,35,45,55,...のデータが入ってるリストを削除*/
        //45は既に無いからlist_search(&data, j)はNULLでエラー
}

そもそも篩には向いてないような。
いきなり2からMAXまでリストにするのではなく、
小さい素数から順にリストにしていくのがこの場合妥当だと思われ。
337デフォルトの名無しさん:2008/01/08(火) 21:19:58
>>333
とうとう横浜国立大学が来たか...
338デフォルトの名無しさん:2008/01/08(火) 21:27:37
[1] 授業単元:プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5695.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 1/9
[5] その他の制限:特に無いです

339デフォルトの名無しさん:2008/01/08(火) 21:40:28
340237:2008/01/08(火) 21:46:33
>>309
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5696.txt

このプログラムで定義した木構造は、それぞれのノードが
そのノードの名前、親ノードへのポインタ、子ノードへのポインタを持っている。
ただし、子ノードへのポインタは、ノード構造体ポインタの配列として所持している。
その配列の限界値、つまりひとつのノードが持つことができる子ノードの数はCMAXとしてマクロ定義してある。
DMAXマクロ定義は木構造の深さの最大値を定義してある。
これは検索コマンド実行時に、検索によって見つかったノードのパスを表示する際に使用している。
NMAXマクロ定義はノードの名前の最大値を定義してある。
したがって、NMAX、CMAX、DMAXはそれぞれ違う意味を持つため一括で定義することはオススメできない。

一応、一度手を出した宿題だからやったけど、もうこれ以上のことは期待しないでくれ。
コメントは>>285を基に、若干修正しながらつけた(プログラムの構造自体は全く変わっていない)
ファイルエンコードはshift-jis
341デフォルトの名無しさん:2008/01/08(火) 21:50:50
[1] 授業単元:プログラミング
[2] 問題文: 次のパターンを識別する単一パーセプトロンを構成せよ。
        x2=x1-0.5
(0.5<x1<1)の範囲で上部分をy=0,下部分をy=1でお願いします

[3] 環境
 [3.1] XP
[4] 期限: 1/9
[5] その他の制限:特に無いです
342デフォルトの名無しさん:2008/01/08(火) 22:13:25
>>338
どうでもいいが、Gは0x47だな。
343デフォルトの名無しさん:2008/01/08(火) 22:23:04
[1] 授業単元: C言語応用
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5653.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C言語
[4] 期限:
[5] その他:よろしくおねがいします。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5698.txt

前にもお願いしましたが今回は細かい仕様書もうpしました。
よろしくお願いします。
344デフォルトの名無しさん:2008/01/08(火) 22:28:54
[1] 授業単元:プログラミング技術
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5699.txt
このソースコードを2つ以上に分けて分割コンパイルできるようにせよ
大域変数のmain以外のファイルからの参照に関してはextrnキーワードを使う
例:
gcc s1.c s2.c
gcc -o s.out s1.o s2.o
とするとs1とs2をリンクしてs.outを作成してくれる

 [3.1] OS:Linux
 [3.3] 言語:C
[4] 期限:2008年01月09日10:20まで
[5] その他の制限: なしです

あけましておめでとうございます!
どうかよろしくお願いします。
345デフォルトの名無しさん:2008/01/08(火) 22:29:54
いい加減little busters消そうぜ
346デフォルトの名無しさん:2008/01/08(火) 22:48:07
>>318
意味わからんが15ゲームの簡単バージョンってこと?
「群論 置換群」でググッてみなさいとエスパーしてみる
347デフォルトの名無しさん:2008/01/08(火) 23:20:18
>>344
//ヘッダファイルsh.h
#include <stdio.h>
#include <stdlib.h>
typedef struct node{int x;int y;int data;struct node *next;}MyList;
extern MyList *datahead;

MyList *AllocMyList(void);
int initialize(void);
int SumMyList(MyList *m);
int CountMyList(MyList *m);
double AveMyList(MyList *m);
int DeleteMyList(MyList *m, int n);
int AppendMyList(MyList *m, int x, int y, int data);
void PrintMyList(MyList *m);
int CmpX(MyList *p, MyList *q);
int CmpY(MyList *p, MyList *q);
int CmpData(MyList *p, MyList *q);
MyList *Merge(MyList *a, MyList *b, int (*cmp)(MyList*, MyList*));
MyList *MergeSort(MyList *m, int (*cmp)(MyList*, MyList*));
void quit(void);
348デフォルトの名無しさん:2008/01/08(火) 23:22:58
//s1.c
#include "sh.h"
int main(int argc, char *argv[]){...}

//s2.c
#include "sh.h"
MyList *AllocMyList(void){...}
int initialize(void){...}
int SumMyList(MyList *m){...}
int CountMyList(MyList *m){...}
double AveMyList(MyList *m){...}
int DeleteMyList(MyList *m, int n){...}
int AppendMyList(MyList *m, int x, int y, int data){...}
void PrintMyList(MyList *m){...}
int CmpX(MyList *p, MyList *q){...}
int CmpY(MyList *p, MyList *q){...}
int CmpData(MyList *p, MyList *q){...}
MyList *Merge(MyList *a, MyList *b, int (*cmp)(MyList*, MyList*)){...}
MyList *MergeSort(MyList *m, int (*cmp)(MyList*, MyList*)){...}
void quit(void){...}
349デフォルトの名無しさん:2008/01/08(火) 23:24:09
忘れてた。
s2.cに下記を追加。
MyList *datahead=NULL;
350デフォルトの名無しさん:2008/01/08(火) 23:36:39
351デフォルトの名無しさん:2008/01/08(火) 23:49:23
【時間切れ】 (1/8)
>259 >318 >319

【未解決問題】
>>13 >>333 1/9 明日の朝一
>>138 1/9
>>338 1/9
>>341 1/9
>>330 1/9 24:00

>148 1/12 正午
>250 1/13
>231-232 1/26
>229 1/31
>343 不明
352デフォルトの名無しさん:2008/01/09(水) 00:05:43
>>338
前もあっただろ。少し手直しさせてもらったが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5701.txt
353344:2008/01/09(水) 00:16:29
>>347-349
解答ありがとうございます!
追加というのはs2.cの一番下でいいんですよね?
s1.cが短いのですが、これコンパイルできるのですか!?
354デフォルトの名無しさん:2008/01/09(水) 00:17:21
>>138
>>329

とりあえず srec.c の方だけ

( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5702.c

続き(tsrec.c)が欲しい場合は、「わっふるわっふる」と書き込んでください。
355354:2008/01/09(水) 00:21:57
あっ、ごめ。
ソート順が逆だったよ・・・
itemrel_compare 関数の戻り値をひっくりかえせばおk。
356 ◆Ao1q5GKtuo :2008/01/09(水) 01:00:29
[1] 授業単元:プログラミング
[2] 問題文
http://www.uploda.org/uporg1194609.rar.html
パス:C++(半角)

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語:C++
[4] 期限:1/9 18:00
[5] その他の制限:
    問題文と一緒に同梱してあるプログラム(自作)程度しか分かりません。orz
    「新しいプロジェクト」→「VisualC++」→「CLR」→「Windowsフォーム アプリケーション」にて作成。
    提出の指定形式になります。

    同梱したプログラムに何か付け足せば正常作動することが分かっています。
    (他の人に聞きましたが、それ以上教えてくれませんでした)


今日中とかいうのは無理なお願いだと承知ですが、どうかよろしくお願いします。。。
357デフォルトの名無しさん:2008/01/09(水) 01:12:13
ぱっと見ただけでqsortからnが参照できるとは思えんが
358デフォルトの名無しさん:2008/01/09(水) 02:09:10
>>356
C++/CLR はこのスレの範疇なのかというのは置いくとして,
まあ,おそらくはこういうことなんだろうけど,
void qsort(int m,int k){
j=m;
if (m<n){
v=a[m]; p=m-1; q=k+1;
for(i=m;i<=n;i++) { if(a[i]<v) { b[j++]=a[i]; } }
p=j-1;
//修正 if(a[i]=v) → if(a[i]==v)
for(i=m;i<=n;i++) { if(a[i]==v){ b[j++]=a[i]; } }
q=j;
for(i=m;i<=n;i++){ if(a[i]>v){ b[j++]=a[i]; } }
// 追加
for(i=1;i<=n;i++){ a[i]=b[i]; }
if(m<=p){ qsort(m,p); }
if(q<=n){ qsort(q,n); }
}
}
これをクイックソートとは言いたくないなぁ
359デフォルトの名無しさん:2008/01/09(水) 02:23:37
>>354
わっふるわっふる

じゃなくて、ありがとうございますm(__)m
よろしければ、わっふるわっふるw
360デフォルトの名無しさん:2008/01/09(水) 02:29:31
>>359

ナイスわっふる。

( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5703.c

ちょっといい加減に書いてあるけど、紙で提出する分にはバレないでしょうw
361デフォルトの名無しさん:2008/01/09(水) 02:50:58
>>360さん、どうもありがとうございました!m(__)m
362デフォルトの名無しさん:2008/01/09(水) 02:51:36
>>330
1. それぞれのNodeのdataの領域を確保してない.
typedef struct node {
char data[20]; //char *data;
struct node *left;
struct node *right;
} Node;
とするか,逐一 realloc() するようにする.
2. main()でのdata への代入が文字列なので,strcpy() なり,strcat() なりで.

363デフォルトの名無しさん:2008/01/09(水) 03:13:47
>>362
dd
文字列ポインタがまずかったみたいですね
364デフォルトの名無しさん:2008/01/09(水) 03:37:42
LINUX上でWORDファイルの読み取り属性を変更したいのですが、LINUXでWIN32APIは使用できるのでしょうか?
教えてください
365デフォルトの名無しさん:2008/01/09(水) 03:41:10
【質問テンプレ】
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5705.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 1/9 今日の7時頃まで
[5] その他の制限: 大変急で申し訳ないのですがよろしくお願いします<(_ _)>


366デフォルトの名無しさん:2008/01/09(水) 03:41:28
>>364
Linux板池。
それとも「WORDファイルの読み取り属性を変更するプログラムを作れ」って宿題か?
とりあえず>>1な。
367364:2008/01/09(水) 03:51:11
>>365
>>366
どうもすみません。以下が質問文です

[1] 授業単元: ソフトウェア開発の演習
[2] 問題文 
   LAMP環境のwebアプリを作っていますが、PHPからC言語プログラムを実行して、
   ワードファイルの読み取り属性を変更したいと思っています。しかしながら、windowsでは
   win32APIなどの関数を使って、読み取り属性変更はできますが、Linux上ではそのようなことができるのでしょうか   ?また、PHPからC言語のプログラムは実行可能でしょうか?
[3] 環境
 [3.1] OS: FedraCore6
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 1/10 までです
[5] PHP上からC言語の実行ファイルを実行して、読み取り属性を変えたいと思っております。
368デフォルトの名無しさん:2008/01/09(水) 03:56:27
>>367
問題文は先生から出されたままを記述しろ
PHPによるwebアプリはスレ違いだから他へ行け
369364:2008/01/09(水) 03:59:57
>>368
そうですか。すみません・・・
370デフォルトの名無しさん:2008/01/09(水) 04:09:22
>>367
Linux板行った方がいいと思うけどな。
あっちなら専門だから。
371デフォルトの名無しさん:2008/01/09(水) 04:26:38
>>365
input[0]の内容
0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
input[1]の内容
0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

格納されてるように見えるが
372デフォルトの名無しさん:2008/01/09(水) 04:28:27
>>250です。
期限13日までと書きましたが、ソースコードの詳細な仕様書を書かないといけないので
余裕を持って前日12日くらいまでに作成していただけると助かります。
(自分のレベルではソースコードを理解して、仕様書作るのを1日でやるのは難しいので)

お手をわずらわせますが、よろしくお願いします。
373デフォルトの名無しさん:2008/01/09(水) 04:32:46
>>・プログラムの説明をプログラム中に記載すること。
これも自分でやりますので、プログラムの作成をよろしくお願いします。m(_ _)m
374365:2008/01/09(水) 04:54:24
>>371
input[]は
input[]="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
で初期化しているので
input[0]=0
input[1]=1
ではないのでしょうか?
それともtableのことなのでしょうか・・・
375365:2008/01/09(水) 05:00:14
ちなみにcur,ch,nextは
3行目以降の左から数字、記号、数字に対応しています。
3行目を読み込むプログラムで
table[cur][p-input]=next;
の後にprintfでその中身を表示すようとしてもなにも表示されないのです@@;
たぶんwhileの条件で蹴られてると思うのですがよくわかりません;
よろしくお願いします<(_ _)>
376デフォルトの名無しさん:2008/01/09(水) 05:18:03
>>365 int i, j;をブロック先頭で宣言して
    for(i = 0; i < 2; i++){
        for(j = 0; j < sizeof(input) - 1; j++)
            printf("%d ", table[i][j]);
        printf("\n");
    }
をreturn 0;直前にやれば、中身はきっちり表示される。
377365:2008/01/09(水) 05:43:46
例えばなのですが3行目の始めの
0 a 1
を読み込むときに
table[cur][p-input]=next;のときに
curが0でp-inputが記号aの場所(配列inputの中のaの場所、何番目か)
なのでp-inputが10でnextが1なので
table[0][10]=1となると思うのですが
>>367
のプログラムを加えても0000000・・・・
しか表示されないのですがなぜでしょうか@@;
すみません無知で・・・
378デフォルトの名無しさん:2008/01/09(水) 05:49:06
>>365
読み込んでるファイルをチェック。
1行目の末尾に、つまり改行前に半角スペースがあるとか。
379デフォルトの名無しさん:2008/01/09(水) 05:49:26
1行目だけじゃないや、3行目以降も。
380365:2008/01/09(水) 06:03:44
う〜ん、半角スペースとかはなかったですね;
末尾の数字を打ってすぐ改行していました・・・。
なにがおかしいんでしょうかね;
381365:2008/01/09(水) 06:36:04
3行目を読み込むときのwhileの条件がおかしくて
elseでの格納がうまくいってないみたいです;(どこがおかしいのかはわからずorz)
ちなみにgcc -Wallでコンパイルしたときには
whileの条件の行に
warning: format '%c' expects type 'char *',but argument 4 has type
'int *'
みたいなのが出てきます・・
382デフォルトの名無しさん:2008/01/09(水) 07:56:56
>>381
chがint型なんでchar型にしる
383365:2008/01/09(水) 08:03:43
エラーっぽいのはきえましたが3行目以降が読み込めないorz
384デフォルトの名無しさん:2008/01/09(水) 09:09:30
[1] プログラミング演習
[2] 降順のマージソートを作れ。
[3.1] mac os [3.2] gcc [3.3] C [4] 期限: 1月10日
[5] 単純な問題だろうと思うのですがつまづきまくりです。。お願いします。。。演算子<=を変えるだけではだめですよね。
昇順のマージソート↓
WORD *merge_sort(WORD* x) {
WORD *a, *b, *y;
if(x == NULL || x->next == NULL) return x;
a = x; b = x->next;
if(b != NULL) b = b->next;
while(b != NULL) {
a = a->next; b = b->next;
if(b != NULL) b = b->next;
}
y = a->next; a->next = NULL;
return merge(merge_sort(x), merge_sort(y));
}

WORD *merge(WORD* x, WORD* y) {
WORD z, *p; p = &z;
while(x != NULL && y != NULL) {
if(x->count <= y->count) {
p->next = x; p = x; x = x->next;
} else{
p->next = y; p = y; y = y->next; }}
if(x == NULL) p->next = y;
else p->next = x;
return z.next; }
385デフォルトの名無しさん:2008/01/09(水) 09:38:33
ソース自体意味が分からんのだが・・・
こんな面倒な事する必要あるか?
386デフォルトの名無しさん:2008/01/09(水) 09:43:41
>>384
マージソートってこんなアルゴリズムだったっけ?
387デフォルトの名無しさん:2008/01/09(水) 10:02:32
[1] 授業単元:プログラミング総合
[2] 問題文(含コード&リンク):
(1)1〜1000の範囲の乱数を100個発生させて、50〜500までの数字のみを抜き出して画面に表示させる。

(2)トランプゲームのブラックジャックを作れ

(3)-10〜10までの範囲の整数の乱数を3つ発生させ、それぞれを二次方程式ax^2+bx+cの係数値として方程式の解を求めよ。また、それを1000回繰り返した場合の、二つの実数解になる確率、虚数解になる確率、十回となる確率をそれぞれ画面に表示せよ

(4)1〜20の乱数を二つ発生させ、その和を予測しキーボードから入力、正解したら終了。チャンスは10回

(5)引数としてA,B,Cグループの値を関数heikinに渡し、以下を求め画面に表示させる。
1.A、B、Cそれぞれの平均値
2.全部の平均値

A.(123、234、531、768、981)
B.(918、392、029、250、762、520、238)
C.(987、098、518、987)

(6)自然数0〜99の範囲の乱数を30個発生させて、それらを小さい順に並び替えて画面に表示させる

(7)英文のテキストファイルから、aとbの数を数える

(8)1940年1月1日を0として生年月日を連続値に置き換え、その数値を種として乱数を発生させ、乱数値を4で割った余りが0「大吉」、1「中吉」、2「小吉」、3「凶」となるおみくじを作成せよ

[3] 環境
[3.1] OS Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C
[4] 期限:1/10の午後1時まで
よろしくお願いします。
388デフォルトの名無しさん:2008/01/09(水) 10:03:57
>>384
普通にできてるだろ。
プロトタイプ宣言してなくてエラーとかじゃない限り。
もしくは単方向リストじゃないとか。
389デフォルトの名無しさん:2008/01/09(水) 10:04:57
>>384
連結リストにしてるから面倒くさいな。

WORD *merge(WORD* x, WORD* y) {
WORD z, *p; p = &z;
while(x != NULL && y != NULL) {
if(x->count >= y->count) { /* 変更箇所 */
p->next = x; p = x; x = x->next;
} else{
p->next = y; p = y; y = y->next; }}
if(x == NULL) p->next = y;
else p->next = x;
return z.next; }

これでいいんじゃね
390384:2008/01/09(水) 10:05:43
失礼しました追記です。
WORD x、yは構造体のリストです。
構造体はint型のcountを持っていてこの数字の順に並べ替えます。
このソースで昇順のソートはできているのですが…
391デフォルトの名無しさん:2008/01/09(水) 10:18:04
>>387 (1)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {

int i, x;
srand(time(NULL));

for (i = 1; i <= 100; ++i) {
x = (rand()+1) % 1000;
if (50 <= x && x <= 500) {
printf("%3d: %d\n", i, x);
}
}

return 0;
}
392デフォルトの名無しさん:2008/01/09(水) 11:07:29
>>387 (3) >>392-393
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

int dim() {

int a, b, c, D;

a = rand() % 20 - 10;
b = rand() % 20 - 10;
c = rand() % 20 - 10;

printf("%dx^2 + %dx + %d = 0\n", a, b, c);
D = b * b - 4 * a * c;

if (D > 0) {
printf("x = %lf, %lf\n",
(-b+sqrt(D))/(2*a), (-b-sqrt(D))/(2*a));
return 1;
}
if (D < 0) {
printf("x = %lf + j%lf, %lf - j%lf\n",
(float)-b/(2*a), sqrt(-D)/(2*a), (float)-b/(2*a), sqrt(-D)/(2*a));
return -1;
}
if (D == 0) {
printf("x = %lf\n", (float)-b/(2*a));
return 0;
}
}
393デフォルトの名無しさん:2008/01/09(水) 11:08:11
int main() {
int i = 0, a = 0, b = 0, c = 0, result = 0;
srand(time(NULL));
for ( ; i < 1000; ++i) {
result = dim();
if (result == 1) ++a;
else if (result == -1) ++b;
else if (result == 0) ++c;
}
printf("実数解の確率 = %2.2f%%\n", (float)a/10);
printf("虚数解の確率 = %2.2f%%\n", (float)b/10);
printf("重解の確率 = %2.2f%%\n", (float)c/10);
return 0;
}
394デフォルトの名無しさん:2008/01/09(水) 11:17:23
訂正
rand() % 20 - 10;
じゃなくて
rand() % 20 * rand() & 1 ? 1 : -1;
だな。
395デフォルトの名無しさん:2008/01/09(水) 11:20:46
ああスマン
rand() % 21 - 10;
だ、脳みそに蛆わいてたって事で
396デフォルトの名無しさん:2008/01/09(水) 12:10:30
>>339
free忘れてるぞ
397デフォルトの名無しさん:2008/01/09(水) 12:12:55
プロセス終了すれば解放されるさ。
398332:2008/01/09(水) 12:32:50
>>335-336
重複してる数の処理のところで不具合起こってたんですね、なるほど
学科での課題では連結リスト扱う機会が少なかったもので…正直知識不足の状態です
wikipediaに掲載されてたプログラムをベースに手探りで作ったものだったので、
自分じゃどこが悪いのか途方に暮れてました
これを機会に色々勉強してみます。ありがとうございました!

>>339
ありがとうございます!自分が作ったものより単純明快でありがたいです
今このプログラムにカーマイケル数を探すプログラムを追加して動かしてます
とりあえず一千万までの数値を見つけてますが、いつ終わることやらw
399デフォルトの名無しさん:2008/01/09(水) 12:34:56
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5707.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 6.0
 [3.3] 言語:C
[4] 期限:2008年1月11日

お願いします
400デフォルトの名無しさん:2008/01/09(水) 13:08:31
>>399
#include <stdio.h>
#include <math.h>

int main() {

unsigned int x, y, z, i;
int tunnel[20];
printf("物体のサイズ(縦,横,高さ):");
scanf("%d,%d,%d", &x, &y, &z);

for (i = 0; i < 20; ++i) {
printf("%d番目のトンネルの半径:", i+1);
scanf("%d", &tunnel[i]);

if (tunnel[i] <= 0) {
tunnel[i] = 0;
break;
}
}
printf("物体のサイズ:縦:%d,横:%d,高さ:%d\n", x, y, z);
if (x > y && x > z) x = z;
else if (y > x && y > z) y = z;
for (i = 0; tunnel[i] != 0; ++i) {
printf("%d番目のトンネル(半径%d):", i+1, tunnel[i]);

if (sqrt(x*x + y*y) < (double)(tunnel[i]<<1)) {
printf("YES\n");
} else printf("NO\n");
}
return 0;
}
401384:2008/01/09(水) 13:43:22
>>389さん
それだとリストの要素がなぜか減ってしまうんです。
100個のはずが50個になったり。。。
402365:2008/01/09(水) 13:48:29
期限がちょっとすぎてしまってやばいので
どなたか>>365の問題点を教えていただけないでしょうか?
よろしくお願いします。
403デフォルトの名無しさん:2008/01/09(水) 14:07:36
>>402
ちゃんと>371が指摘した通りに出力されているのが>376のロジックで確認できるよ。
その他の問題は兎も角、それだけに関しては問題がなさそうなんだが。
あーそうそう、table[]は初期化しておくべきだと思うけどね。
404 ◆vLIz8KOkPM :2008/01/09(水) 14:47:55
>>340さん
大変ありがとうございます。おかげさまで助かりました。
わざわざ時間を割いて頂き、ほんとうにありがとうございましたm(_ _)m
405365:2008/01/09(水) 14:53:28
>>403
0で初期化した後に試してみたら>>371
ように表示されるならいいのですが
ずっと0しか表示されないのです;;
なので代入できていないのかと思っているのですが。
406デフォルトの名無しさん:2008/01/09(水) 14:57:59
もう一回、改めてソースとデータを貼ってご覧。
407365:2008/01/09(水) 15:10:13
>>406
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5708.txt
でデータは
0
1 2
0 a 1
0 b 1
1 a 2
1 b 1
2 a 0
です。
よろしくお願いします<(__)>
408デフォルトの名無しさん:2008/01/09(水) 15:44:45
>>407
はい、実行結果。
--
0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
--
これの何が問題なのか判らん。
409365:2008/01/09(水) 16:42:53
>>408
現在Terminalというソフト?でやっているのですが
なぜか0 0 0 0 0 0 0 0・・・・しかでないんですよね;
別の翻訳するの探してみたいと思いますorz
410デフォルトの名無しさん:2008/01/09(水) 16:47:19
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5709.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:2008年1月09日(本日の11時程度まで)
期限がすぐで申し訳ないのですが…ほぼ初心者 なのでそれっぽいプログラム書いてくださると助かります。
よろしくお願いします。
411デフォルトの名無しさん:2008/01/09(水) 16:47:33
>>401
ソースうp汁
412デフォルトの名無しさん:2008/01/09(水) 17:18:26
413デフォルトの名無しさん:2008/01/09(水) 17:22:28
randが駄目だ……
414デフォルトの名無しさん:2008/01/09(水) 17:51:56
>>409
まさかとは思うがデータファイルの改行が CR (0x0d) とかいう落ち?
415デフォルトの名無しさん:2008/01/09(水) 18:05:38
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
  端末から2つの整数aとbを入力し、a以上b以下の範囲の素数を小さい順に
  ファイルlist.txtに出力するプログラムを書け。一行に一個の素数となるようにせよ。
  ソースプログラムと、a=300、b=340とした場合の実行結果を提出せよ。
  なお、あるひとつの整数が素数であるかないかの判定の部分は、関数sosuuとして
  mainの外に書くこと。つまりint sosuu(int);として、sosuu(10);は偽つまり0を、
  sosuu(13);は真つまり0以外の値をretuenするようにせよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語:C
 [4] 期限: 2008.01.10
 [5] その他の制限:なんでもありです

授業に出ていたにもかかわらず、まったくわかりません。よろしくお願いいたします・・。
416デフォルトの名無しさん:2008/01/09(水) 18:18:55
[1] 画像処理演習
[2] 問題文
255*255のpgm形式の画像がある。
各ピクセルのRGBから輝度を読み取りその平均を出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Vine-Linux4.1
 [3.2] コンパイラ名とバージョン: gcc バージョンは不明です。
 [3.3] 言語:C言語
[4] 期限: 1/10 正午まで
[5] その他の制限:
freadを使って作成するようにとのことでした。fgetはNG。
以上よろしくお願いします。
417416:2008/01/09(水) 18:24:00
訂正です。
画像サイズは256*256です。
すいませんでした。
418デフォルトの名無しさん:2008/01/09(水) 18:27:25
>>416
pgmはグレイだから、RGBはないわけだが。
それから、輝度の値域は?
例えばpgm画像のdepth指定に関わらず0-255と考えるのか、
或いはpgm画像のdepthを考慮して0-1と考えるのか。
419デフォルトの名無しさん:2008/01/09(水) 18:31:47
>>415
結果は自分で確認して(うちでは実行できた)
#include <stdio.h>
#include <math.h>
#define TRUE (-1)
#define FALSE (0)
int sosuu(int num){
int count,limit;
count=2;
limit=(int)sqrt((double)num);
while(count<=limit)
{
if((num%count)==0)return FALSE;
count++;
}
return TRUE;
}
int main(void){
int a,b,count;
FILE *fp;
fp=fopen("list.txt","w");
if(fp==NULL){printf("fopen error!\n");return 1;}
printf("a=");scanf("%d",&a);
printf("b=");scanf("%d",&b);
if(a>b){printf("入力値はa<=bにして下さい。\n");return main();}
for(count=a;count<=b;count++)
{
if(sosuu(count))fprintf(fp,"%d\n",count);
}
fclose(fp);
return 0;
}
420416:2008/01/09(水) 18:38:11
>>418
早速レスが。
pgmってグレイですねorz
カラーの問題も読んで問題提示してたよ…
輝度の領域は0-255です。
421デフォルトの名無しさん:2008/01/09(水) 19:30:51
>>420
それじゃ、depthは255であることを期待していいの?
サイズも決まっているみたいだからいいよね。
422416:2008/01/09(水) 19:41:10
OKです。
よろしくお願いします。
423365:2008/01/09(水) 19:52:00
>>414
データファイルの改行が CR (0x0d) とは
どうやって確認?するのでしょうか;
424デフォルトの名無しさん:2008/01/09(水) 19:52:18
[1] 数値計算プログラム
[2] 問題文
差分法(陰解法)を用いて
d~2f/dt~2 = d~2f/dx~2 + d~2f/dy~2の解を求めるプログラムを作れ。
陽解法と比較して格子点の刻み幅を変えた場合の安定性などについて考察せよ。
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc バージョンは不明です。
 [3.3] 言語:C言語
[4] 期限: 1/10 24時まで
[5] その他の制限: 特になし。
先生がある程度のソースをスライドで見せてくれたのですがよくわかりません。
どなたかお願いします。
425365:2008/01/09(水) 19:57:14
>>414
ちなみにmiというエディタを使っていて
DFA.defのような(DFA定義ファイル)のデータを使っています
426414:2008/01/09(水) 20:26:32
>>425
mi なら mi の機能で改行コードの判別が出来るはずだが,miは使ってないのでしらない.
とりあえず,od -tx1 <問題のデータファイル> ってやって
0000000 30 0d 31 20 32 0d 30 20 61 20 31 0d 30 20 62 20
こんなかんじなら,CR( 0x0d ),
0000000 30 0a 31 20 32 0a 30 20 61 20 31 0a 30 20 62 20
なら LF( 0x0a )
0000000 30 0d 0a 31 20 32 0d 0a 30 20 61 20 31 0d 0a 30
なら CRLF
427デフォルトの名無しさん:2008/01/09(水) 20:41:19
mi ってどんなエディタ? vi クローン?
428365:2008/01/09(水) 20:42:12
>>426さん
今調べてみたところCR(Mac)になっており
LF(UNIX)にしてみたらできました!><
改行コードで結果が変わるとは・・・
回答ありがとうございます_〆(;ωq`)
429365:2008/01/09(水) 20:53:29
>>427
よくはわかりませんが
みみかきエディタと呼ばれているものです@@
430デフォルトの名無しさん:2008/01/09(水) 21:02:41
[1] 授業単元: C++ プログラミング
[2] 問題文: USBカメラからの映像を動画、画像キャプチャーできるプログラムを作成せよ
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C++
[4] 期限: 1/11
[5] その他の制限:特に無いです

こんばんは。シンプルなものでよいそうなのですが、よくわかりません。
お手数ですが、どなたかよろしくお願いします。
431デフォルトの名無しさん:2008/01/09(水) 21:09:06
             . ィ
.._ .......、._    _ /:/l!
 :~""''.>゙' "~ ,、、''‐'、|         _
゙、'、::::::ノ:::::::_,.-=.  _〜:、         /_.}'':,
 ``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ
 ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:'  ノ゙ノブ   <またまたご冗談を
"   .!-'",/  `'-‐'') /\ `/ でノ-〈
 .-''~ >'゙::    ‐'"゙./  ヽ.,'   ~ /
   //:::::       ',    /    ,:'゙
432デフォルトの名無しさん:2008/01/09(水) 21:20:57
>>430
悪いことは言わない。諦めろ。

http://www1.bbiq.jp/kougaku/link_videocap.html
ここを読んで自力でやるか、やってもらえる人が表れるのを待つしかない。
俺は手元にwebカメ(ry
433デフォルトの名無しさん:2008/01/09(水) 21:59:48
#include <stdio.h>
#define buffer_size 10000

main(char *argv[])
{
char str[1000];
FILE *p;
char buffer[10000];

p=fopen(argv[1],"r");
if(p){
while(fgets(buffer,buffer_size,p)){
printf("%s",buffer);
}
}

if(!p){

p=fopen(argv[1],"w");
printf("ファイルに何か書き込んでください。\n");
while(fputs(buffer,p)!=-1);
}

fclose(p);
}

コマンドラインでmain.exe test.txtとすればtest.txt を読み込み or に書き込むプログラムを作りたいのですが、間違いを指摘してください。
main関数の引数は利用します。よろしくお願いします。
434デフォルトの名無しさん:2008/01/09(水) 22:02:23
>>433
main(char *argv[]) ここが間違ってる
435デフォルトの名無しさん:2008/01/09(水) 22:03:37
>>433
何を書き込みたいの???
while(fputs(buffer,p)!=-1);
436433:2008/01/09(水) 22:11:12
>>434
うん、俺もそこ意味わかんねぇけど、
適当にどっかからコードペーストした。
読んだところによるとそれやると、
argv[0]=main.exe
argv[1]=test.txt
argv[2]=何とか
argv[3]=・・・ってなるらしい。
どうしたらコマンドライン引数利用してファイル入出力できるんですか?
修正程度で指摘おね。
>>435
スキャることにします。ありがとう。
437デフォルトの名無しさん:2008/01/09(水) 22:14:26
だから>>434に書いてあるだろ。それすら調べることもせんのか。
438デフォルトの名無しさん:2008/01/09(水) 22:16:05
スレ違いだ。
439デフォルトの名無しさん:2008/01/09(水) 22:16:11
int main(int argc, char *argv[])

argc:argvの要素数
argv:コマンドライン引数
440 ◆g/ZMVdytmo :2008/01/09(水) 22:16:41
[1]プログラミング演習

[2]n次正方行列A,Bを読み込み和Cを求める。
同様にn次正方行列D,Eを読み込み、積Fを求め、行列C,Fを出力するプログラムを作成せよ。
但し、行列A,Dを共用体x_1、行列B,Eを共用体x_2として宣言し同じ記録領域を使用するものとする。
nは最大100まで対応し、要素はfloatとする。
下に、各行列の値を記す。

1 2 3 4 5 6 1 2 3 2 3 4
A= 4 5 6 B= 7 8 9 X= 4 5 6 Y= 5 6 7
7 8 9 1 2 3 7 8 9 8 9 1

[3.1]solalis
[3.2]cc
[3.3]C言語
[4]2008年1月14日
[5]#include<stdio.h>のみ

急で申し訳ありませんが、どうかよろしくお願いします。
441 ◆g/ZMVdytmo :2008/01/09(水) 22:23:22
行列の値がずれてしまっていました。
各行列ともに3次正方行列です。

Aは、上から{1,2,3}{4,5,6}{7,8,9}
Bは、上から{4,5,6}{7,8,9}{1,2,3}
行列Xが、正しくは行列Dであり、上から{1,2,3}{4,5,6}{7,8,9}
行列Yが、正しくは行列Eであり、上から{2,3,4}{5,6,7}{8,9,1}
となります。

申し訳ありませんでしたでした。
442お願いします:2008/01/09(水) 22:30:09
[1] 授業単元:プログラミング入門
[2] 問題文:
複数の整数の平均・分散を求めるプログラムを作成せよ.
ただし平均・分散ともに小数点第3位以下を切り捨て小数点第2位まで求めるものとする.
入力に関して
 キーボードからまず入力する整数の個数を入力し(最大100とする)改行する.
 次に指定した数の整数をスペース1ずつ開けて一行で入力するものとする.入力を促す文字等は表示しないこと
出力に関して
 一行目に平均(+改行)二行目に分散(+改行)を数値のみ出力する.指定した数値・改行以外の文字等の出力は一切行わないこと.

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Study C Ver2
 [3.3] 言語:C
[4] 期限:平成19年1月10日14:00まで
[5] その他の制限:Cプログラミングの入門教科からの出題ですので極々基礎的・簡単なコードでの解答をお願いします。
443433:2008/01/09(水) 22:33:15
>>439
ありがとうございます。
修正したら3秒で100Mを超える勢いで書き込むウィルスができました。
後は自分で修正いたします。
ありがとでした。
444デフォルトの名無しさん:2008/01/09(水) 22:37:18
>>441
Eの値がおかしくないか?
共用体ならA=D, B=Eになると思うが。
445デフォルトの名無しさん:2008/01/09(水) 22:43:51
446デフォルトの名無しさん:2008/01/09(水) 22:46:33
>>441
#include <stdio.h>

void main()
{
float x_1[100][100],x_2[100][100];
float buf;
int n,i,j,k;
l: scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%f",&x_1[i][j]);
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%f",&x_2[i][j]);
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
buf=0;
for(k=0;k<n;k++){
buf+=x_1[i][k]*x_2[k][j];
}
printf("%f ",buf);
}
printf("\n");
}
goto l;
}
やっつけ。
447デフォルトの名無しさん:2008/01/09(水) 22:47:34
どうでもいいが、buffer_sizeをdefineした意味無いなw
448デフォルトの名無しさん:2008/01/09(水) 22:50:03
[1] 授業単元: 応用プログラミング演習
[2] 問題文: ペイントやAdobePhotoshopのような画像処理ソフトを作成せよ
[3] 環境
 [3.1] WindowsXP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 1/13
[5] その他の制限:Win32APIをしっかり勉強すること
449デフォルトの名無しさん:2008/01/09(水) 22:50:44
そんな課題今まで放置するなよwww
450デフォルトの名無しさん:2008/01/09(水) 22:51:19
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5714.txt

読み込むファイル:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5715.txt

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
 [4] 期限:2008年1月10日21:00まで
 [5] その他の制限:特になしです

ファイル操作について習ったのですが、あまりよく分かりません…。
よろしくお願いします。
451433:2008/01/09(水) 22:51:19
>>447
どっかの本に
「数値をその場で代入していくと長いコードになると
何の数値か意味わからなくなるからできるだけそうしろ」
って書いてた気がする
452デフォルトの名無しさん:2008/01/09(水) 22:56:41
char buffer[10000];にもbuffer_size使わないとダメだろ
453433:2008/01/09(水) 22:58:33
>>452
見落としてた、ありがとう
454デフォルトの名無しさん:2008/01/09(水) 23:16:24
>>444
別人だけどレス。おかしくないよ、共用体だから。
455デフォルトの名無しさん:2008/01/09(水) 23:34:40
【時間切れ】 (1/9)
>13 >333 >341

【未解決問題】
>>416 1/10 12:00
>>387 1/10 13:00 済み(1),(3)
>>450 1/10 21:00
>>424 1/10 24:00
>>384 1/10

>>430 1/11
>148 1/12 12:00
>448 1/13
>250 1/13
>231-232 1/26
>229 1/31
>343 不明
456デフォルトの名無しさん:2008/01/10(木) 00:18:19
457456:2008/01/10(木) 00:28:08
データファイルに無駄に改行が入ってるとクラッシュするから
気になるようならヘッダーに<ctype.h>をインクルードして
fgetsのループのところに
if (isprint(wordFreq[num].term[0]) == 0) {
--num;
continue;
}
を挿入してください。
458 ◆g/ZMVdytmo :2008/01/10(木) 00:31:55
>>446
素早い返答ありがとうございます。
とても助かりました。
もし可能であれば、「goto」を使用せずに組む方法でご教授願えますでしょうか?
あまりgotoを使用しないように、と言われておりますので……。
何度も訂正してしまい申し訳ありませんが、もしお手数でなければ宜しくお願いいたします。
459デフォルトの名無しさん:2008/01/10(木) 00:50:33
>>458
プログラムの流れを理解しようとしてる?
そのgotoは無限ループさせてるだけだよ
460446:2008/01/10(木) 00:54:25
>>458
while(1)かwhile(true)に変えればいい
C言語でtrueって定義されてたかなーと思ってgotoにしただけ
461デフォルトの名無しさん:2008/01/10(木) 00:54:27
462デフォルトの名無しさん:2008/01/10(木) 00:59:28
>>458関連
共用体じゃないけどいいの?
463デフォルトの名無しさん:2008/01/10(木) 01:00:09
>>387 (7)
#include <stdio.h>
main()
{
int c,ca=0,cb=0;
char filename[100];
FILE *fp;
printf("入力ファイル名:");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL){
printf("ファイル名:%sを開けませんでした。\n");
exit(1);
}
while((c=fgetc(fp))!=EOF){
if(c=='a')
ca++;
else if(c=='b')
cb++;
}
printf("ファイル中のaの数:%d bの数%d\n",ca,cb);
fclose(fp);
}
適当につくってみた。aとbの数を分けなくていいならカウントしてるところと表示のところを
変更してください。
464デフォルトの名無しさん:2008/01/10(木) 01:04:07
>>461
それ自分で実行してみて変だと思わない?
465デフォルトの名無しさん:2008/01/10(木) 01:07:30
【解決済み?】
>>450 1/10 21:00

【未解決問題】
>>416 1/10 12:00 画像関係
>>387 1/10 13:00 済み(1),(3) (8)まである
>>424 1/10 24:00 差分法(陰解法)を用いて・・・
>>384 1/10 降順のマージソート 最終>>411

>>430 1/11 c++でwebカメラ関係
>148 1/12 12:00 
>448 1/13
>250 1/13
>231-232 1/26
>229 1/31
>343 不明
466461:2008/01/10(木) 01:11:53
>>464
ああ、ごめん、ゴミいれたままだったわorz

>>450 こっちが本物・・・
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5718.c
467デフォルトの名無しさん:2008/01/10(木) 01:14:12
いやソート自体が昇順だし、ソートもちゃんとスワップできてない。
つーか、>>456でいいんじゃないの?
468461:2008/01/10(木) 01:22:12
>>467
ちゃんと見た?
始めのは昇順だが後のは降順よ?
ソート関数名は間違えてたが、ちゃんと動いたの確認してるよ。
単語頻度であって、その後のアルファベット順にソートするとは書かれてないし。
469デフォルトの名無しさん:2008/01/10(木) 01:22:27
>>387
(4)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( int argc, char ** args ) {
const int chance = 10;
int r1, r2, s, i;
srand( time( NULL ) );
r1 = rand() % 20 + 1;
r2 = rand() % 20 + 1;
for ( i = 0; i < chance; ++i ) {
printf( "input num >" );
scanf( "%d", &s );
if ( s == ( r1 + r2 ) ) {
printf( "BINGO!! ( %d, %d ) \n", r1, r2 );
return 0;
}
printf( "NG\n" );
}
printf( "hidden num = %d ( %d, %d ) \n", r1 + r2, r1, r2 );
return 0;
}
470467:2008/01/10(木) 01:26:49
>>468
ゴミ入れたままっつーから何か取り除いたのかと思ったよ。すまんね。

でもこの問題の意図は分かってる?
単語と頻度がセットになって、頻度の高い単語を上に持ってこいって問題でしょ。
だからスワップするとき頻度だけでなく、単語もスワップしないと意味がない。
471461:2008/01/10(木) 01:35:55
>>470
たびたびすまんがまた違うのうpしてた。
が、言うとおり単語スワップはしてないので、>>456がいいね。
472デフォルトの名無しさん:2008/01/10(木) 01:41:14
>>387
(5)
#include <stdio.h>
#define sizeofary( A ) (sizeof((A))/sizeof(*(A)))
long sum( int a[], int l ) {
long s = 0;
if ( !a || l < 1 ) { return 0; }
while ( l-- ) { s += a[ l ]; }
return s;
}
double av( int a[], int l ){ return ( !a || l < 1 ) ? 0 : (double)sum( a, l ) / l; }
void heikin( int a[], int al, int b[], int bl, int c[], int cl ) {
long len,ss;
len = al + bl + cl;
ss = sum( a, al ) + sum( b, bl ) + sum( c, cl );
printf( "avg of A = %lf\n", av( a, al ) );
printf( "avg of B = %lf\n", av( b, cl ) );
printf( "avg of C = %lf\n", av( c, cl ) );
printf( "avg of All = %lf\n", ( len < 1 ) ? 0 : (double)ss / len );
}
int main( int argc, char ** args ){
int a[] = { 123, 234, 531, 768, 981 }, b[] = { 918, 392, 29, 250, 762, 520,238}, c[] = { 987, 98, 518, 987};
heikin( a, sizeofary(a), b, sizeofary(b), c, sizeofary(c) );
return 0;
}
473デフォルトの名無しさん:2008/01/10(木) 01:53:38
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5719.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C
[4] 期限: 1月14日まで
[5] その他の制限: なし

よろしくお願いします。
474デフォルトの名無しさん:2008/01/10(木) 01:59:43
>>387
(6)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 30
int cmp( int * a, int * b ){ return *a - *b; }
int main( int argc, char ** args ){
int a[ N ], i;
srand( time( NULL ) );
for ( i = 0; i < N; ++i ) a[ i ] = rand() % 100;
for ( i = 0; i < N; ++i ) printf( "%d ", a[ i ] ); puts( "" );
qsort( a, N, sizeof ( a[ 0 ] ), (int(*)(const void *,const void *))cmp );
for ( i = 0; i < N; ++i ) printf( "%d ", a[ i ] ); puts( "" );
return 0;
}
475デフォルトの名無しさん:2008/01/10(木) 02:01:54
>>450 sscanf使ってみた。
#include<stdio.h>
#define LENGTH 50 /* 一単語の最大長(文字数)*/
typedef struct {
char term[LENGTH]; /* 単語 */
int freq; /* 頻度 */
} termFreq;
void sortByFreq(termFreq word[],int num){
int i,j;
termFreq tmp;
for(i=0;i<num;i++){
for(j=num-1;j>i;j--){
if(word[j-1].freq < word[j].freq){
tmp=word[j-1]; word[j-1]=word[j]; word[j]=tmp;
}
}
}
}
main(){
int num=0,i;
char line[LENGTH*2];
termFreq wordFreq[500];
FILE *fp;
fp=fopen("dat.txt","r");//ファイル名は任意で書き換える
while(fgets(line,2*LENGTH-1,fp)!=NULL){
sscanf(line,"%s\t%d",wordFreq[num].term,&wordFreq[num].freq); num++;}
sortByFreq(wordFreq,num);
for(i=0;i<num;i++)
printf("%s\t%d\n",wordFreq[i].term,wordFreq[i].freq);
}
476デフォルトの名無しさん:2008/01/10(木) 02:09:00
>>416 1/10 12:00 画像関係
>>387 1/10 13:00 済み(1),(3)(4)(5)(6)(7) 後(2)(8)
>>424 1/10 24:00 差分法(陰解法)を用いて・・・
>>384 1/10 降順のマージソート 最終>>411

>>430 1/11 c++でwebカメラ関係
>148 1/12 12:00 
>448 1/13
>250 1/13
>231-232 1/26
>229 1/31
>343 不明
>473 1/14
477デフォルトの名無しさん:2008/01/10(木) 02:30:30
478デフォルトの名無しさん:2008/01/10(木) 02:43:42
>>4509の人気に嫉妬
479デフォルトの名無しさん:2008/01/10(木) 02:49:11
こうして、切磋琢磨しあいできあがった>>450のプログラムは
先生にも解読不能ながら、最高速の演算速度を叩き出すのであった。
480>>480:2008/01/10(木) 03:21:32
>>387
(8)
#include<stdio.h>
#include<stdlib.h>
int f(int y, int m, int d){
if(m < 3)
y--, m += 12;
return y * 365 + y / 4 - y / 100 + y / 400 + (m + 1) * 306 / 10 + d - 428 - 708205;
}
int main(void){
char a[][5] = {"大吉", "中吉", "小吉", "凶"};
int y, m, d;
printf("年 月 日 = ");
scanf("%d %d %d",&y, &m, &d);
srand(f(y, m, d));
printf("%s\n", a[rand() % 4]);
return 0;
}
481デフォルトの名無しさん:2008/01/10(木) 03:25:20
>450
>構造体wordFreqに格納し

どこにそんな構造体が?
482デフォルトの名無しさん:2008/01/10(木) 03:51:58
>>250です。
自力で完成できたので、>>250は終了ということで御願いします。
483デフォルトの名無しさん:2008/01/10(木) 08:31:31
[1] 2次元配列
[2] 次の文章を2次元配列で初期化し、使われている単語の数を求めたい。ただし、文字数、行数はわかっていないものとする。
A time to work
And a time to play
I think I will find another way
It's not my time to go

[3] 環境
 [3.1] Windows
 [3.2] gcc
 [3.3] C
[4] 期限:2007/1/18
[5] 条件分岐(if,switch など)、繰り返し計算(for,while など)、自作関数、配列・多次元配列などは学びました
以下やっていないので内容はよく分かりませんが、「ポインタ」、「ファイルの入出力」、「構造体」、「マクロ」(以上、教科書の項目より)などは
まだやっていないので、これらの知識を要しないものでお願いします
あと、文章の行数と1行あたりの文字数が既知であるとしたときのプログラムは自分でつくることができたので、
それを>>484(あたり)に載せておきます。これを改良していただけると幸いです。
484483:2008/01/10(木) 08:34:06
自分で書いたプログラム([5]に書いたように題意は満たしませんが、一応動きました)

#include <stdio.h>
int main()
{
char str[4][35]={"A time to work",
"And a time to play",
"I think I will find another way",
"It's not my time to go" };

int i,j,count=0;

for(i=0;i<4;++i){
for(j=0;j<35;++j){
if(str[i][j]==' ') {count+=1;}
}


}

printf("単語数=%d",count+4);
/*1行につき「(単語数)=(空白文字数)+1」で、それが4行分*/
}
485デフォルトの名無しさん:2008/01/10(木) 09:09:21
>>424
波動方程式の陰解法の差分式が、
よほどマイナーなのか見つからない(もしかすると、拡散方程式の間違いか?)。
ちょっと差分式調べてきて。
あと初期値と境界条件もよろしく。
486485:2008/01/10(木) 09:20:55
くそ……、書いた後に見つけちまった……。
487 ◆OxJHzKNBv2 :2008/01/10(木) 09:50:25
[1] 授業単元:C入門
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5722.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Study C
 [3.3] 言語:C
[4] 期限:1月10日14:00
[5] その他の制限:問題文に記載しております.
ぎりぎりまで自分でやろうとしたのですがどうしても出来なかったのでお助けください.
488デフォルトの名無しさん:2008/01/10(木) 09:53:38
#define e 4294967296
...
char str[e][e]=...
489デフォルトの名無しさん:2008/01/10(木) 09:54:56
>>487
>>446をほんの少し書き換えればいい
490 ◆OxJHzKNBv2 :2008/01/10(木) 11:14:00
>>487
ごめんなさいヒント頂いたのですが勉強不足でわかりませんTT
3重ループを使うようなのですが・・・
どなたかよろしくお願い致します
491416:2008/01/10(木) 12:17:59
データの読み取りに時間がかかりましたが、何とか自己解決できました。
よって>>416終了とさせていただきます。
ありがとうございました。
492デフォルトの名無しさん:2008/01/10(木) 12:29:31
493デフォルトの名無しさん:2008/01/10(木) 12:39:15
>>448

あなたがGIMP開発者ですね^^
494デフォルトの名無しさん:2008/01/10(木) 13:24:09
#include <stdio.h> //>>416
struct image {int width; int height; int depth; unsigned char * image;};
static struct image getPgm(const char * fileName)
{
struct image tmp = {0, 0, 0, NULL};
char buf[100];
FILE * fp = fopen(fileName, "r");
if (fp == NULL) return tmp;
fscanf(fp, "%99s", buf);
if (strcmp(buf, "P2") != 0) return tmp;
fscanf(fp, "%d%d%d", & tmp.width, & tmp.height, & tmp.depth);
tmp.image = malloc(tmp.width * tmp.height);
for (int ic = 0; ic < tmp.width * tmp.height; ++ic) {
int value;
fscanf(fp, "%d", & value);
tmp.image[ic] = value;
}
return tmp;
}
static void printPgmInfo(struct image img)
{
int sum = 0;
for (int ic = 0; ic < img.width * img.height; ++ic) sum += img.image[ic];
printf("width:%d, height:%d, depth:%d\nconc ave.:%g\n", img.width, img.height, img.depth, (double) sum / img.width / img.height);
}
int main(int argc, char ** argv)
{
if (argc < 2) {fprintf(stderr, "Usage:%s <ascii pgm file>.\n", argv[0]); return 1;}
printPgmInfo(getPgm(argv[1]));
return 0;
}
495デフォルトの名無しさん:2008/01/10(木) 13:26:01
399です
>>400さん早速の解答ありがとうございます。

しかしそのようにプログラミングして、実行してみた所、半径を入力できず(1〜20番目のトンネルの半径と表示されるだけ)、正しいプログラムになりませんでした…。

馬鹿な私にはどこがいけないのかわかりません…。

どなたか助けてください…。お願いします。
496デフォルトの名無しさん:2008/01/10(木) 13:36:43
>>495
scant()のフォーマットをよく見てみな
497デフォルトの名無しさん:2008/01/10(木) 13:37:46
secant()かと思った
498デフォルトの名無しさん:2008/01/10(木) 13:39:28
>>495
>400のソースをコンパイルして実行して、>399にあった問題文の例の通りに入力したら例の通りに出力されたけど。
カンマが余計だとか、アルファベットを入れているだとか、なんかやらかしてない?
499デフォルトの名無しさん:2008/01/10(木) 14:02:09
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク):(自然数n = 10, r = 0, 1, . . . , 10 に対してnCr を出力するプログラム)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 本日16時まで
[5]
500デフォルトの名無しさん:2008/01/10(木) 14:12:21
>>499
#include <stdio.h>
int ncr(int n,int r){
if(n == r || r==0){
return 1;
}else{
return (ncr(n-1,r-1) + ncr(n-1,r));
}
}

void main(){
int n,r;
for(n=1;n<=10;n++){
for(r=1;r<=n;r++){
printf("%dC%d=%d\n",n,r,ncr(n,r));
}
}
}
501デフォルトの名無しさん:2008/01/10(木) 14:13:34
#include <stdio.h>
int main()
{
for (int r = 0; r <= 10; ++r) {
printf("10C%d\n", r);
}
return 0;
}
502デフォルトの名無しさん:2008/01/10(木) 14:15:11
>>500
どうもありがとうございますm(__)m
503デフォルトの名無しさん:2008/01/10(木) 14:19:39
    /、;:;:;:;:;:;:;:;:;ー-:;、_;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l
   ./ミミミミミ、;:;:;:;:;:;:;:;:;:;:ー-;:;、;:_;:;_:;::-‐'"´i
   lミミミミミミミミミー-::、;;;;_;:;:;:;:;:;i;:;:;:;:;:;:;:;:i
  ,!ミミミミミミミミミ   _;`-、;;;!:-‐'''´|ミi
 //`,ヾミミミミシ‐'″  'ー‐'  :  'ニフ' i;/
 l l ,rヾミミミ      _,,,,,   ノ  _,,_ l
 ',ヽヾ、ヾミミ     ィで)ヽ、   r';ィび、.ノ
  ヽ、__,, ミミ      `゙゙'''"フ`  | `゙'''フ'i
  〃 i l ミミ      /´    | `ー'´l
  /ヾ.l ミミ       /'    |  /
. /:::::',ヽヽ`       / ` `゙ー-' /
r/::::::::::',ヽヽ           i:i ', /  >>501
/::::::::::::::ヽヽ\    '"ー===-'/   いとあはれなり
ヽ:::::::::::::::::ヾ、 ` 、   ゙'一''ー'ノ′
、 \:::::::::::::::ヽ  ` ー‐-t't::i´゙ー-、
.`-、 `ー-:、::::::ヾ'、     //:::l ヽ `゙ー- 、
504デフォルトの名無しさん:2008/01/10(木) 14:33:45
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク): 実数a, b, c に対して,2 次方程式ax2 + bx + c = 0 が実数解を持つ場合にはその解x1, x2 と相対誤
差(ax2i
+ bxi + c)/xi(i = 1, 2) を表示し,そうでない場合には「実数解無し」と表示するプログラム
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 本日16時まで
先ほどは大変ありがとうございます。もう一度お願いいたします。
505デフォルトの名無しさん:2008/01/10(木) 14:59:09
>>498
どうやら私がやらかしていたようです。 もう一度見直して実行したら正確に出力されました。
506デフォルトの名無しさん:2008/01/10(木) 17:51:12
[1] 授業単元: 計算物理学
[2] 問題文:self-avoiding ウォーク
      格子上のランダムウォークでは、同じ格子点を何度も訪れることができる。これに対して1度訪れた格子点には2度と行けない条件を課したものが、self-avoidingウォークである。
      2次元正方格子上のself-avoiding ウォークを実現するためのアルゴリズムを考案せよ。あらかじめ適当な大きさの格子をとり、その格子点にすでに来たかを示す変数を持つ必要がある。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C
[4] 期限: 明日17:00
[5] その他の制限: なし

どうかよろしくお願いします
507デフォルトの名無しさん:2008/01/10(木) 18:02:35
[1] 授業単元:
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5728.txt
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限: 2008年1月11日 9:00まで

よろしくお願いします
508デフォルトの名無しさん:2008/01/10(木) 18:18:05
>>507
課題4
#include <stdio.h>

int nArraySum(int nArray[], int nArraySize)
{
int i , kei=0;

for(i=0;i<nArraySize;i++){ kei+=nArray[i]; } //kei=kei+nArray[i]と同じ

return kei;
}

int main(void)
{
char input[10];
int a[10]={1, 2, 11, 4, 15, 7, 9, 12, 3, 6};
int nArraySize;
int kei;

nArraySize=sizeof(a)/sizeof(a[0]); //配列のサイズ求める
kei=nArraySum(a,nArraySize); //戻り値で合計の値を受け取る
printf("合計=%d\n",kei);

return 0;
}
509デフォルトの名無しさん:2008/01/10(木) 18:29:15
>>508 のchar input[10]消しといて
510デフォルトの名無しさん:2008/01/10(木) 18:56:02
>>507
課題5(>>508のmain関数を以下に変える)
int main(void)
{
char input[20] , fileName[20];
int a[10];
int nArraySize;
int i=0 , kei;
FILE *fp;

printf("入力ファイル>>>"); scanf("%s",fileName);
if((fp=fopen(fileName,"r"))==NULL){ printf("ファイル%sが見つかりません\n",fileName); exit(1); }
printf("出力ファイル>>>"); scanf("%s",fileName);

while(fscanf(fp,"%s",input)!=EOF){
a[i]=atoi(input);
i++;
}
fclose(fp);

nArraySize=sizeof(a)/sizeof(a[0]); //配列のサイズ求める
kei=nArraySum(a,nArraySize); //戻り値で合計の値を受け取る
printf("合計=%d\n",kei);

fp=fopen(fileName,"w");
fprintf(fp,"合計=%d\n",kei);
fclose(fp);

return 0;
}
511デフォルトの名無しさん:2008/01/10(木) 19:17:50
[1] 授業単元:プログラミング 2
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5729.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 1/15
[5] その他の制限:なし

512デフォルトの名無しさん:2008/01/10(木) 19:20:37
[1] プログラミング
[2] 問題文http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5730.txt
[3]
 [3.1] Unix
 [3.2] gcc
 [3.3] C
[4] 期限:1月10日午後9時まで
[5] その他の制限: 特にありません

お願いします。
513デフォルトの名無しさん:2008/01/10(木) 19:35:12
>>508-510
ありがとうございましたm(_ _)m
514デフォルトの名無しさん:2008/01/10(木) 19:47:00
[1] 授業単元:自由課題
[2] 問題文(含コード&リンク):ランダムで麻雀牌を14枚取得し、その役を表示するプログラムを作成せよ。
なお、14枚目の牌をあがり牌とし、ツモ・ロン両方の場合に対応できるようにすること。
また、鳴き・立直・海底・ドラ・天和等やあまりにローカルな役は考えなくてもよいとする。
[3] 環境
 [3.1] OS: 不問
 [3.2] コンパイラ名とバージョン: 不問
 [3.3] 言語: c
[4] 期限: 2008/1/15
[5] その他の制限: 牌は4枚x34種=136枚でお願いします
515デフォルトの名無しさん:2008/01/10(木) 19:55:40
それで役ができる確率は天和と同じだろw
516273:2008/01/10(木) 20:19:41
>>350

亀レスですがそれだとオプションと文字を同時に入力しないといけなくなります。
プログラムを起動させた後に標準入力させないとダメみたいです。
517デフォルトの名無しさん:2008/01/10(木) 20:39:42
>>511

#include <stdio.h>
#include <math.h>
#define PI 3.141592
double radius(double x, double y);
double angle(double x, double y);

int main() {
double xpos, ypos;
printf("X座標:");
scanf("%lf", &xpos);
printf("Y座標:");
scanf("%lf", &ypos);
printf("極座標に変換すると\n");
printf("(動径r, 偏角θ)=(%f, %fπ)\n",
radius(xpos, ypos), angle(xpos, ypos));
printf("となります。\n");
}

double radius(double x, double y)
{
return sqrt(pow(x, 2.0) + pow(y, 2.0));
}

double angle(double x, double y)
{
return atan2(y, x)/PI;
}

//これでおk?
518512:2008/01/10(木) 21:01:48
>>512のものです。
期限が過ぎてしまいましたので、スルーしてください。
ありがとうございました。
519デフォルトの名無しさん:2008/01/10(木) 21:27:59
>>518
ありがとうございます。
520デフォルトの名無しさん:2008/01/10(木) 21:50:28
[1] 授業単元:プログラミング1
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5731.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:2008年1月16日
[5] その他の制限:問題文参考にしろと言われてるので
元のプログラムをなるべく変えてないものをお願いします。
521 ◆CxWBqy7wZQ :2008/01/10(木) 21:50:59
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
今作ってるプログラムなんですが実行するとどうしてもエラーが出る部分があります。
その部分を切り離してみたのでどこがおかしいか指摘お願いします。
/*****************/で囲んだ部分が怪しいと睨んでいるのですが・・・
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5732.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.3
 [3.3] 言語: C
[4] 期限: 1月10日24:00
[5] その他の制限:
よろしくお願いします。
522デフォルトの名無しさん:2008/01/10(木) 21:54:48
>>520
最小値を探したいのなら、minは100.0で初期化して rate[i] < min にかえるべき
523デフォルトの名無しさん:2008/01/10(木) 22:02:44
>>521
何がしたいのか書いてくれよ
524デフォルトの名無しさん:2008/01/10(木) 22:04:46
>>521
関数 Node *term(void) 内の
tok = get_token();
で tok に NULL が代入されてるにもかかわらず
strcmp の引数に使ってるからとか?
525デフォルトの名無しさん:2008/01/10(木) 22:05:23
>>521
char *term[5]={"5"}でcharポインタ配列のひとつめの要素は初期化してるけど
その後の要素は未定義なのにそれ取り出して比較しようとするからだろ。
二個取り出したいならchar *term[5]={"5","5"}とするべき
526デフォルトの名無しさん:2008/01/10(木) 22:06:17
>>521
何がしたいのか分からないが、tokがNULLでないかチェックするor予め値を入れておく(今回が入れ忘れの場合)。
527デフォルトの名無しさん:2008/01/10(木) 22:08:35
チェックはterm側でもget_token側でもいいな
何がしたいのか(ry
528 ◆CxWBqy7wZQ :2008/01/10(木) 22:10:20
NULLなのに比較したせいなんですね
つまらない質問すいませんでした
529520:2008/01/10(木) 22:17:02
>>522
ありがとうございます。
530450:2008/01/10(木) 22:18:25
遅くなりましたが、
>>456
>>461
>>475
>>477
の方々、回答ありがとうございました。
531デフォルトの名無しさん:2008/01/10(木) 22:22:38
506にも誰か答えてやろーぜ

って言っても俺は物理さっぱりだから何のことやら分かりかねるが
532デフォルトの名無しさん:2008/01/10(木) 22:29:39
今の状況整理だれかヨロ
533デフォルトの名無しさん:2008/01/10(木) 22:31:56
>>506
実現するだけなら3x3のbool配列の配列を作ればいいんじゃないの。
534デフォルトの名無しさん:2008/01/10(木) 22:36:27
3x3でなくて、ただ単に正方格子サイズの配列を作って
一度行った地点をマークしてけばよい。
535デフォルトの名無しさん:2008/01/10(木) 22:45:37
>>506
#include<stdio.h>
#include<stdlib.h>
#define FIELD_WIDTH 10
#define FIELD_HEIGHT 10

static int field[FIELD_HEIGHT][FIELD_WIDTH];

void adjust(int *x, int *y){
*x=(*x+FIELD_WIDTH)%FIELD_WIDTH;
*y=(*y+FIELD_HEIGHT)%FIELD_HEIGHT;
}
int is_passed(int x, int y){
adjust(&x, &y);
return field[y][x];
}
int main(void){
int i, x=0, y=0, dx[]={1,0,-1,0},dy[]={0,1,0,-1}, dir, dirlist[4], dirnum;

for(;;){
field[y][x]=1;
for(i=0,dirnum=0;i<4;i++)
if(!is_passed(x+dx[i], y+dy[i])) dirlist[dirnum++]=i;
if(dirnum<=0) break;
dir=dirlist[rand()%dirnum];
x+=dx[dir];
y+=dy[dir];
adjust(&x, &y);
printf("(%d,%d)\n", x, y);
}
return 0;
}
536デフォルトの名無しさん:2008/01/10(木) 23:16:53
>>506
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5734.txt

え、こういうことじゃなくて?
あ、すいません読解力が無くて・・

tabずれまくりですいまそんww
眠い寝る!
537デフォルトの名無しさん:2008/01/10(木) 23:29:48
→→→→→↓
↓←←←←←
→→→→→↓


みたいに進めばいいんじゃないの?
538デフォルトの名無しさん:2008/01/10(木) 23:32:57
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5735.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月14日
[5] その他の制限: 特にないです
539デフォルトの名無しさん:2008/01/10(木) 23:33:35
>>536
それのどこがランダムウォークなんだよ
教養が無いな。
540デフォルトの名無しさん:2008/01/10(木) 23:34:50
>>539
self-avoiding ウォーク
541デフォルトの名無しさん:2008/01/10(木) 23:36:03
ランダムウォークなんていつ定義されたんだよww
542デフォルトの名無しさん:2008/01/10(木) 23:38:25
>>538
少し上で同じようなのを解いたので
#include<stdio.h>
#include<math.h>

double f(double x, double a, double b, double c, double d){
return a * x * x * x + b * x * x + c * x + d;
}
double df(double x, double a, double b, double c){
return 3 * a * x * x + 2 * b * x + c;
}

int main(void){
double x = 1.0;
double maxerror = 0.0001;
double a = 1, b = -10, c = 10, d = 50;
double EPS = f(x, a, b, c, d) / df(x, a, b, c);
int N;
for(N = 0; fabs(EPS) > maxerror; N++){
x -= EPS;
EPS = f(x, a, b, c, d) / df(x, a, b, c);
}
printf("X = %10.24f\n", x);
printf("N = %d\n", N);
printf("EPS = %3.24f\n", EPS);
return 0;
}
543デフォルトの名無しさん:2008/01/10(木) 23:38:49
乱数の種も置き換えずにランダムウォークと言い張る>>535が居るスレはここですか?
544デフォルトの名無しさん:2008/01/10(木) 23:40:44
>>540
前提になるランダムウォークの条件すら満たしてないって事を言ってるんですけど?
545デフォルトの名無しさん:2008/01/10(木) 23:47:42
>>544
self-avoiding walk = 自分自身と交わらないランダムウォーク
546デフォルトの名無しさん:2008/01/10(木) 23:52:50
>>506は首都大学東京の学生さん?
547デフォルトの名無しさん:2008/01/10(木) 23:56:54
544じゃないが、前提条件はランダムウォーク。
それに加えて、同じ地点に移動しようとした場合はフォールトさせれば良い。
それだけのことだが、>>538のは現地点を考慮せずに目茶目茶にポイントしてくだけだからだめだし、
>>535(>>538もだが)乱数の種を指定しなおさないから、2回目の実行以降は実質的に乱数ではなくなる。
548デフォルトの名無しさん:2008/01/10(木) 23:58:04
すまん、>>538じゃなくて>>536だわ。
549デフォルトの名無しさん:2008/01/11(金) 00:42:22
【時間切れ】 (1/10)
>384 >387 (2) >487 >504 >512 >521

【未解決問題】
>>506 1/11 17:00
>>430 1/11

>>148 1/12 12:00
>>250 1/12
>>448 1/13
>>473 1/14
>514 1/15
>483 1/18
>231-232 1/26
>229 1/31
>343 不明
550デフォルトの名無しさん:2008/01/11(金) 00:43:24
>>250は抜いておいてくれ、すまない
551デフォルトの名無しさん:2008/01/11(金) 01:00:30
per*sumよりも乱数aの数が小さい場合はstudentに1を入れて
その数を数えるプログラムを作ります。
それを10回繰り返して最終的な1の数を数えたいです。

ですが以下のようにすると数字が正しく出ません。
どこがいけないのでしょうか??

条件としてmain以外の関数を使うようにとのことです。
すべてmain内に書いた時はちゃんと動いたんですが
外に出したらどこかがおかしくなってしまって・・・。

お願いします。
552デフォルトの名無しさん:2008/01/11(金) 01:01:08
#include <stdio.h>
#include <stdlib.h>
/*---------------確率判定--------------------------*/
void fun1(int *sum,double *per,int student[]){
int i;
double a,per2;
srand(2000);
for(i=0;i<300;i++){
a = (double)rand() / (RAND_MAX +1.0);
per2 =(*sum) * (*per);
if(a<per2) student[i]=1;
}
}
/*---------------要素が1であるものの数を数える関数---------------------*/
void Count(int student[],int *num,int *sum,int *day){
int i;
for(i=0;i<300;i++){
if(student[i]==1) *num= *num +1;
}
*sum=*num;
printf("# %d %d \n",*day,*sum);
}
553デフォルトの名無しさん:2008/01/11(金) 01:02:08
/*--------------------------main関数--------------------------------------*/
int main(void){
int student[300],i,num=0,day,sum[10];
double per,a,per2;
sum[0]=1;
for(day=1;day<=10;day++){
fun1(&sum[day-1],&per,student);
Count(student,&num,&sum[day],&day);
     num =0;
}
return 0;
}
/*-----------------------------------------------*/
554デフォルトの名無しさん:2008/01/11(金) 01:07:46
>>551
ここはデバッグスレじゃありません。
555デフォルトの名無しさん:2008/01/11(金) 01:23:30
何で整数までポインタで渡してるんだ?別にどうでもいいけど
556デフォルトの名無しさん:2008/01/11(金) 01:31:30
double per,...;

fun1(納day-1],&per,student);
557デフォルトの名無しさん:2008/01/11(金) 01:42:22
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから数式を入力して、その数式の因子間に半角空白を
入れて表示するプログラムを作成する。
ただし結果は1つの文字列として表示すること。

ex)
1*2*(3+5)/4+5-1
1 * 2 * ( 3 + 5 ) / 4 + 5 - 1

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc3.3
 [3.3] 言語: C
[4] 期限: 1月11日 12:00
[5] その他の制限: 特にないです

よろしくお願いします。
558557:2008/01/11(金) 01:45:32
追記です
入力は数字、演算子(+,-,*,/)、括弧のみです
559デフォルトの名無しさん:2008/01/11(金) 02:11:11
ローマ数字でも、いいですかね?
560デフォルトの名無しさん:2008/01/11(金) 06:20:11
ネタかもしれんが、2ch一時停止するんだっけ?
>>1のうpろだにアンカ付きでうpすればおkかな。
561デフォルトの名無しさん:2008/01/11(金) 07:39:53
>>557 字句解析はしてない
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    int i, size = 1024, len;
    char *buf = (char*)malloc(size), *str;
    for(i = 0; ; i++){
        if((i - size)/size == 0)
            if((buf = (char*)realloc(buf, (i/size + 1)*size)) == NULL)
                return perror("malloc"), 1;
        if((buf[i] = getchar()) == EOF || buf[i] == '\n' || buf[i] == '\0')
            break;
    }
    buf[i] = '\0';
    if((len = (int)strlen(buf)) == 0)
        return 1;
    if((str = (char*)malloc(2*len)) == NULL)
        return perror("malloc"), 1;
    for(i = 0; i < len; i++)
        str[2*i] = buf[i], str[2*i + 1] = ' ';
    str[2*i - 1] = '\0';
    puts(str);
    free(buf);
    free(str);
    return 0;
}
562デフォルトの名無しさん:2008/01/11(金) 07:42:09
× (i - size)/size == 0
○ (i - size)%size == 0
563デフォルトの名無しさん:2008/01/11(金) 07:44:44
>>557

//あまりテストしてないが

#include <stdio.h>
#include <string.h>

int main()
{
 char buff[256];

 //入力を受け取る
 scanf_s("%s", buff, 128);
 
 //空白の挿入
 char numbers[] = "0123456789 "; //数字
 char operators[] = "()+-*/";
 for(int i = 0; buff[i] != '\0'; i++) {
  for(int j = 0; j < strlen(operators); j++) {
   if(buff[i] != operators[j]) {
    continue;
   }
   char workbuff[256];
   strcpy_s(workbuff, 256, &buff[i+1]);
   buff[i+1] = buff[i];
   buff[i]  = ' ';
   buff[i+2] = ' ';
   strcpy_s(&buff[i+3], 128, workbuff);
   i += 2;
   goto L_END;
  }
564デフォルトの名無しさん:2008/01/11(金) 07:45:29
//エラー出たので続き

  for(int j = 0; j < strlen(numbers); j++) {
   if(buff[i] != numbers[j]) {
    continue;
   }
   goto L_END;
  }
  printf("error\n");
 L_END:;
 }
 printf("%s\n", buff);
 return 0;
}
565デフォルトの名無しさん:2008/01/11(金) 07:48:35
こんにちはVisual Studioさん
566 ◆P2TN8xagh2 :2008/01/11(金) 10:42:07
[1]授業単元:
コンピュータグラフィックス演習

[2]問題文:
1−7章の内容を用いて,アニメーションを表示するプログラムを作れ.

1章 ウィンドウ設定と基本図形の描画
2章 3次元図形の描画と陰面処理
3章 モデリング入門
4章 アニメーション
5章 イベント処理
6章 シェーディング
7章 光源の設定


[3]環境
[3.1]XP
[3.2]VC 6.0
[3.3]C++

[4]期限:
1/15 9:00

[5]その他の制限:
・異なる時刻における表示結果を数枚貼ること.
・異なる反射モデルを用いた複数の物体を含むこと.
・光源の設定を時間と共に変えること.

アニメーションの具体例は提示されてないのでどのようなアニメーションでも構いません。
かなり丸投げですがよろしくお願いいたします。
567デフォルトの名無しさん:2008/01/11(金) 10:56:45
http://oshiete1.goo.ne.jp/qa3668420.html

質問者は回答ではなくヒントを求めているようなので
ちょっとココで話させてくれ。

この問題、難しくね? オレの頭が硬いのか?

普通は一の位から始めて c = d % 10; d /= 10; と進めていくと思うんだけど。

d = 502で決めうちだとしても、いきなり「5」を求めるにはどうすればいい?
(d / (int)(pow(10, (2-i))) % 10 としたいがmath.hはない。
まさか i == 0? ((d / 100) % 10):(i == 1? ((d / 10) % 10):(d % 10)) なわけないよな。
568デフォルトの名無しさん:2008/01/11(金) 11:17:15
[1] 授業単元:C入門
[2] 問題文 円周率を求めるプログラムを作成せよ。
1.rand()関数を用いて0〜1のx座標,y座標を生成する。
 2.原点との距離を求め,座標が半径1の円内かどうか調べ,円内である場合,円外である場合をそれぞれカウントする。
 3.以上を指定回数分繰り返し,半径1の円内である確率がπ/4であることからπを求める

 入力に関して
   キーボードから,繰り返し回数を入力する。上限はint型の最大値(実際には最大値を入れると膨大な時間がかかるのでテストは1分程度で終了する値でよい)。
 出力に関して
   結果(求めた円周率)のみを浮動小終点(double型を%lf)で出力(+改行)。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Study C
 [3.3] 言語:C
[4] 期限:1月13日14:00
[5] その他の制限:一年なのでそこまで難しいのはつかわずにお願いします。
569デフォルトの名無しさん:2008/01/11(金) 11:20:14
[1] 授業単元:C入門
[2] 問題文 英文の文字列を入力した場合,文字数・単語数・文章数を求めるプログラムを作成せよ。
英文中の特殊文字は(,(カンマ).(ピリオド)!(イクスクラメーション)?(クエスチョンマーク))のみとする。単語の間には1つ以上(2つ以上でも可)のスペースが入れるものとする。
文章の最後には必ず .(ピリオド)!?のどれかが単独で使われる。,(カンマ)や.(ピリオド)!?の後にスペースが入る可能性があるが前にはスペースは入らないものとする。
省略につかう .(カンマ)は今回はないものとする。

 入力に関して
   キーボードから,文字列を一行で入力
 出力に関して
   文字数・単語数・文章数をそれぞれスペース1つあけて1行で出力(+改行)[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Study C
 [3.3] 言語:C
[4] 期限:1月13日14:00
[5] その他の制限:一年なのでそこまで難しいのはつかわずにお願いします。
570デフォルトの名無しさん:2008/01/11(金) 12:02:34
>>569
大阪電気通信大学生乙。
571デフォルトの名無しさん:2008/01/11(金) 12:53:27
506、430期限近し
がんがれ
572デフォルトの名無しさん:2008/01/11(金) 13:09:04
>>569 文字数、単語数、文章数の意味がわからない
573デフォルトの名無しさん:2008/01/11(金) 14:10:41

糞アメリカ人がWTCジャンプアウト!!!バカザマ!バカザマ!バカザマ!

http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg

これが糞アメリカ人のWTCからジャンプアウトのザマだ

http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg

これが糞アメリカ人のWTCからジャンプアウトのザマだ

http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg

これが糞アメリカ人のWTCからジャンプアウトのザマだ

http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg

これが糞アメリカ人のWTCからジャンプアウトのザマだ

http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
574デフォルトの名無しさん:2008/01/11(金) 14:19:32
>>572
Many people have to work on the weekend. Some people do not mind. Other people think it is terrible.
なら
文字数79 単語数19 文章数3
って事です。
575デフォルトの名無しさん:2008/01/11(金) 14:20:09
>>567
ループを使え。
576デフォルトの名無しさん:2008/01/11(金) 15:15:09
1] 授業単元:数値解析
[2] 問題文(含コード&リンク):n次正方行列Aが狭義対角優位行列か否かを判定するプログラムを作成せよ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
 [3.3] 言語: C
[4] 期限: 2008.1.17日中 
[5] その他の制限:

577デフォルトの名無しさん:2008/01/11(金) 15:16:47
#include <stdio.h>

#define buffer_size 10000


main(int argc ,char *argv[])
{
FILE *p,*q;
char buffer[buffer_size];

p=fopen(argv[1],"r");

if(p){

while(fgets(buffer,buffer_size,p)){

printf("%s",buffer); } }
fclose(p);
q=fopen(argv[1],"w");
if(!q){
printf("文字列を書き込んでください\n");
gets(buffer);
fprintf(q,buffer);};

fclose(q);
}
ファイルを読み込めばすれど、書き込めません。
どの箇所が間違っているのでしょうか。
578デフォルトの名無しさん:2008/01/11(金) 15:23:23
>>577
スレ違い。

・p がNULLのときにfclose()しちゃダメ。
・q がNULLのときにfprintf()しちゃダメ。
・そもそもgets()は使っちゃダメ。
579デフォルトの名無しさん :2008/01/11(金) 15:34:27
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):迷路の問題なんです。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5478.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008 1月12日10:30まで
[5] その他の制限: ヒントとして書かれているプログラムに使われている初歩的な関数しか習っていません。
プログラムが長くてわかりずらいところもありますが、どうかよろしくお願いします。

580デフォルトの名無しさん :2008/01/11(金) 15:35:40
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):迷路の問題なんです。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5478.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008 1月12日10:30まで
[5] その他の制限: ヒントとして書かれているプログラムに使われている初歩的な関数しか習っていません。
プログラムが長くてわかりずらいところもありますが、どうかよろしくお願いします。

581デフォルトの名無しさん:2008/01/11(金) 15:37:05
[1] 授業単元:プログラミング
[2] 問題文:
文字列を逆順にコピーする関数xcopyをポインタを用いて作り、確認のための
プログラムを作成してください。ただしxcopy(char *to,char *from)とします。
なお対象とするデータは通常の英数字とします。
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: bcc?ですかね。。。
 [3.3] 言語: Borland C++
[4] 期限: [2008年01月13日21:00まで]
[5] その他の制限: 特にありません。


よろしくお願いします。
582>>506:2008/01/11(金) 16:13:07
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 20
static int su[N][N], x, y;
typedef enum{UP, RIGHT, DOWN, LEFT}dir;
unsigned nrand(int n){ return (unsigned)(n*(double)rand()/(RAND_MAX + 1.0));}
dir drand(void){ return nrand(4);}
int chkdir(dir d){
  if(d == UP) return y <= 0 ? 0 : su[x][y - 1] == 0;
  if(d == RIGHT) return x >= N - 1 ? 0 : su[x + 1][y] == 0;
  if(d == DOWN) return y >= N - 1 ? 0 : su[x][y + 1] == 0;
  return x <= 0 ? 0 : su[x - 1][y] == 0;
}
int ismove(void){return chkdir(UP) || chkdir(RIGHT) || chkdir(DOWN) || chkdir(LEFT);}
void move(dir d){d == UP ? y-- : d == RIGHT ? x++ : d == DOWN ? y++ : x--;}
void print(void){
  int i, j;
  for(i = 0; i < N; i++, putchar('\n'))
    for(j = 0; j < N; j++) putchar(i == x && j == y ? '*' : su[i][j] ? '+' : ' ');
}
int main(void){
  srand((unsigned int)time(NULL));
  x = nrand(N), y = nrand(N);
  su[x][y] = 1, print();
  while(ismove()){
    dir d = drand();
    su[x][y] = 1;
    if(chkdir(d)) move(d), print();
  }
  return 0;
}
583デフォルトの名無しさん:2008/01/11(金) 16:15:57
>>430ってファームウェア作れってこと?
とても個人レベルでできる問題の気がしないんだがw
584デフォルトの名無しさん:2008/01/11(金) 16:37:16
>>581
#include<stdio.h>
void xcopy(char *to,char *from){
int i=0,j=0;
while(from[i]!=NULL) i++;
while(from[i-1]!=NULL){
to[j]=from[i-1];
j++;
i--;
}
to[j]=NULL;
}
main(){
char *to,*from;
scanf("%s",from);
xcopy(to,from);
printf("%s",to);
}
585デフォルトの名無しさん:2008/01/11(金) 16:47:35
>>584
ダウト。偶偶動くかも知らんが、大抵動かないと思う。まして、規格に未定義なロジックになっている。
586デフォルトの名無しさん:2008/01/11(金) 17:06:44
>>585
>>581が指定したBorland C++なら動くからおk
587デフォルトの名無しさん:2008/01/11(金) 17:09:35
ていうか何がおかしいのかわからんわけだが
588デフォルトの名無しさん:2008/01/11(金) 17:10:30
>>586
ホントに? BCCだと必ず動く保証がある? 普通にメモリアクセスエラーが起きそうなんだけど。
589デフォルトの名無しさん:2008/01/11(金) 17:12:00
つ[from[i-1]]
590デフォルトの名無しさん:2008/01/11(金) 17:15:08
>>588
動くだろ。
まあ
from[i-1]!=NULL

i!=0
で解決すっけど
591588:2008/01/11(金) 17:16:44
>589の指摘したところも問題だけど、main()が無茶苦茶なんだけど?
592デフォルトの名無しさん:2008/01/11(金) 17:21:09
mainは問題無いんじゃないかと。voidとか細かい話?
593デフォルトの名無しさん:2008/01/11(金) 17:22:09
昔の音楽家のことだろ?
594デフォルトの名無しさん:2008/01/11(金) 17:24:27
おいおい、>>584=>>586=>>587=>>590か?
指摘されたんだから動かしてみるくらいのことした方がいいぞ。
そもそも、>>581をよく読んだ方がいいな。「ポインタを用いて」と言う問題ならインデックス変数を使っちゃダメだろ。
595デフォルトの名無しさん:2008/01/11(金) 17:25:18
実際に動くかどうかはともかく、
これのどこがおかしいか分からないというのはやばいと思うが

#include<stdio.h>
void xcopy(char *to,char *from){
 int i=0,j=0;
 while(from[i]!=NULL) i++; //まあ動くがNULL→'\0'
 while(from[i-1]!=NULL){
//from[-1]が0である保証はない(ちゃんと止まる保証は無い)
  to[j]=from[i-1];
  j++;
 i--;
 }
 to[j]=NULL;
}
main(){
char *to,*from; //領域確保しろよ
scanf("%s",from);
xcopy(to,from);
printf("%s",to);
}
596デフォルトの名無しさん:2008/01/11(金) 17:29:50
>>588の指摘はなるほどと思ったんだけどさ、

>>594
ポインタオンリーでやれとは書いてないだろ
用いてるんだから

>>595
どこにこの程度の課題で麻呂する奴がいるんだよw
597デフォルトの名無しさん:2008/01/11(金) 17:31:00
>>588じゃなくて>>589だった
598デフォルトの名無しさん:2008/01/11(金) 17:41:26
>>596
「配列使え」と書くべきだったのかもしらんが、
俺が言いたいのは領域確保せずにポインタ使うなということなんですが。
そんなにおかしい指摘か?
599デフォルトの名無しさん:2008/01/11(金) 17:43:05
>>581
#include <stdio.h>

void xcopy(char *to, char *from)
{
  int i, len = 0;
  while(from[len] != '\0')
    len++;
  to[len] = '\0';
  for(i = 0; i < len; i++)
    to[i] = from[len - 1 - i];
}

int main(void)
{
  char from[128], to[128];
  scanf("%127s", from);
  xcopy(to, from);
  puts(to);
  return 0;
}
600デフォルトの名無しさん:2008/01/11(金) 17:43:50
>>596
自分の馬鹿を棚に上げないで、ちゃんと現実を直視しろよ。
その程度のプログラムも書けないならもっと謙虚に他人のレスを読め。
601598:2008/01/11(金) 17:45:00
すまん、「領域確保せずにポインタ使うな」じゃおかしいな
「どこ指してっか分からんポインタをそのまま使うな」くらいで
602デフォルトの名無しさん:2008/01/11(金) 17:46:04
メモリクリーンニングだと思えばどうということはない
603デフォルトの名無しさん:2008/01/11(金) 17:47:22
つーか、そうするとmallocって何って気がしてくるな
非常に哲学
604デフォルトの名無しさん:2008/01/11(金) 17:47:41
ま、こんなもんでしょ。
--
#include <stdio.h>
#include <string.h>
void xcopy(char *to,char *from)
{
char * p = strchr(from, '\0'); // strchr()使っちゃいけないならその辺は適当に。
while (p > from) { // ポインタを使うと、いかにもCらしく書けますな。逆に言えば、読みにくいw
* to++ = * --p;
}
* to = '\0';
}
int main(){
char from[100], to[100];
scanf("%99s", from); // 99で制限しておけばオーバフローは回避できる。
xcopy(to, from);
printf("[%s]\n", to);
return 0;
}
--
がーん、既に>599に書かれていたかw

>>602
見苦しい。
605デフォルトの名無しさん:2008/01/11(金) 17:48:26
>>603
どういう意味?
606デフォルトの名無しさん:2008/01/11(金) 17:52:08
>>605
>>>595
>どこにこの程度の課題で麻呂する奴がいるんだよw
麻呂 = mallocと意訳してしまった
607デフォルトの名無しさん:2008/01/11(金) 17:53:14
私女だけどmalloc()をマロックって言う人って・・・
608デフォルトの名無しさん:2008/01/11(金) 17:56:59
>>607
http://www.google.co.jp/search?hl=ja&q=malloc+%E9%BA%BB%E5%91%82&lr=
まだ1件だが、googleはそのうちやってくれると信じている。

>>580
最短経路を求める必要あり?
609デフォルトの名無しさん:2008/01/11(金) 17:59:18
>>575
穴埋めらしいよ
610デフォルトの名無しさん:2008/01/11(金) 17:59:41
日本人はエムアロック派とマロック派がいるが、
ネイティブは大抵マロックなんだぜ。
611デフォルトの名無しさん:2008/01/11(金) 18:01:51
確かに留学生はマロックって言うわ、
発音しやすいのかな
612デフォルトの名無しさん:2008/01/11(金) 18:04:41
めもりーあろけーしょん派
613デフォルトの名無しさん:2008/01/11(金) 18:06:05
それは、ない
614577:2008/01/11(金) 18:41:25
>>578
ありがとうございます。
gets()は使っちゃ駄目なんですか?
知りませんでした。勉強になりました。
#include <stdio.h>
#define buffer_size 10000

main(int argc ,char *argv[])
{
FILE *p;
char buffer[buffer_size];
p=fopen(argv[1],"r");
if(p){
while(fgets(buffer,buffer_size,p)){
printf("%s",buffer); }
}
if(!p){
printf("なにか書き込んでください。\n")
scanf("%s",buffer);
p=fopen(argv[1],"w");
if(EOF==fprintf(p,buffer))
printf("見事にエラーです。\n");
};
fclose(p);
}
615デフォルトの名無しさん:2008/01/11(金) 18:56:09
>>583
単に普通のプログラムだろ?
俺もやってみたけどわかんないんでやめたw
すまん
616デフォルトの名無しさん:2008/01/11(金) 18:58:08
>>614
だからスレ違いだというのに……
で、gets()を使っちゃダメなのと同じ理由で、scanf()で素の"%s"を使っちゃダメ。
617デフォルトの名無しさん:2008/01/11(金) 19:00:54
>>614
if(p){
……
}
if(!p){
って書き方は嫌い。

p=fopen(argv[1],"r");
はもっと嫌い。
618デフォルトの名無しさん:2008/01/11(金) 19:04:10
>>614が何をしたいのかがわからないが
エスパー的に解釈してこういうことか?

#include <stdio.h>
#define buffer_size 10000

void main(int argc ,char *argv[])
{
FILE *p;
char buffer[buffer_size];
p=fopen(argv[1],"r");
if(p){
while(fgets(buffer,buffer_size,p)){
printf("%s",buffer); }
}
fclose(p) ;

p=fopen(argv[1],"a");// ファイルに追記する(前回の内容を破棄していいなら"w"で)
if(p){
printf("\nなにか書き込んでください。\n") ;
scanf("%s",buffer);
fprintf ( p, buffer ) ;
};
fclose(p);
}
619デフォルトの名無しさん:2008/01/11(金) 21:05:46
[1] 授業単元:
[2] 問題文:
2つの最大50桁の自然数を入力して、その和・差・積を求めるプログラムを作成せよ
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:CPad for Borland
 [3.3] 言語:C++
[4] 期限:2008年1月12日まで
[5] その他の制限:

10文字以上入力するとエラー発生しちゃいます。。
50桁も入力できません
おねがいします!(>_<)
620デフォルトの名無しさん:2008/01/11(金) 21:33:00
>>619
どの程度習ったんだ? 多倍長と言って意味がわかるか。これによってだいぶ違ってくるんだが……
621デフォルトの名無しさん:2008/01/11(金) 22:12:55
多倍長..
習ってないです(ノ_・。)
622デフォルトの名無しさん:2008/01/11(金) 22:17:18
>>621
そうか。だが、残念なことに課題は多倍長をモロに使う問題なんだな……
というより、多倍長整数そのものが課題だと言ってもいい。

とりあえず、多倍長でぐぐれ。
623デフォルトの名無しさん:2008/01/11(金) 22:23:06
[1] 授業単元:プログラミング 2
[2] 問題文:
[3] 環境 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5736.txt
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 1/15
[5] その他の制限:なし
624デフォルトの名無しさん:2008/01/11(金) 22:25:10
>>622
わかりました!
あざす!!!
625デフォルトの名無しさん:2008/01/11(金) 22:26:50
>>623
int isfloat(char * f)の作成のみ

int isfloat(char* f)
{
if (f == NULL || strlen(f) == 0)
{
return 0;
}
char* err;
strtod(f, err);
if (strlen(err) == 0)
return 1;
else
return 0;
}
626536:2008/01/11(金) 22:57:39
>>506
時間切れですが作ってみたんで・・

>>582さんの表示のアイデアをパクった
・初期位置は(0, 0)固定という味気ない仕様
・糞ースでもうしわけ

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5737.txt

627デフォルトの名無しさん:2008/01/11(金) 23:40:19
 >>568
 モンテカルロだろうな。http://www.geocities.jp/supermisosan/montecarlo.html
 無作為に選んだが、変数、変数名、処理の一部、などを、課題文に沿うように適切にすればよい。
初めて買ったC言語の本に載ってた懐かしい課題。
628デフォルトの名無しさん:2008/01/11(金) 23:42:48
>>623 もっと格好良い方法がないものか
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int isfloat(char *f){
  while(isspace(*f)) f++;
  if(*f == '-') f++;
  while(isdigit(*f)) f++;
  if(*f == '\0') return 1;
  if(*f != '.') return 0;
  f++;
  while(isdigit(*f)) f++;
  if(*f == '\0') return 1;
  return 0;
}
int main(void){
  float num, sum = 0;
  char f[128];
  while(1){
    printf("実数を入力(q:end):");
    scanf("%127s", f);
    if(f[0] == 'q' && f[1] == '\0') break;
    if(isfloat(f)){
      num = atof(f);
      sum += num;
      printf("num = %f\nsum = %f\n", num, sum);
    }else
      printf("この文字列は実数が(ry\n");
  }
  printf("sum = %f\n", sum);
  return 0;
}
629デフォルトの名無しさん:2008/01/12(土) 00:02:47
>>619 ですが、
入力を文字列として読み取ってひと桁ずつを配列に入れて計算する方法教えてください!
ちなみにこの方法って差も積も出せますか?
630デフォルトの名無しさん:2008/01/12(土) 00:03:05
【時間切れ】 (1/11)
>430

【未解決問題】
>>579 1/12 10:30
>>148 1/12 12:00
>>619 1/12

>>569 1/13 14:00
>>448 1/13
>>473 1/14
>566 1/15 9:00
>514 1/15
>576 1/17日中
>483 1/18
>231-232 1/26
>229 1/31
>343 不明
631デフォルトの名無しさん:2008/01/12(土) 00:03:07
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
課題:(吸収スペクトルや)蛍光スペクトルの測定で得られるデータを処理するプログラムを作成せよ.

ただし,以下の機能を有し,最初の画面(またはメインの画面)には作成者のIDと氏名が
一緒に表示されるようにすること.


1.データの読み込み
2.データの表示(数値,グラフ,ピークトップの波長や強度など)
[ 3.データの印刷(数値,グラフ,ピークトップの波長や強度など) ]

プログラムは,提出者が作成したデータおよび配布したデータ(ex01data.txt, em01data.txt))で テストすること.
グラフには両軸とも目盛と説明を入れること(縦軸は蛍光強度,横軸は波長(nm)).

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual C++ 6.0
 [3.3] 言語: C++
[4] 期限: [2008年01月12日17:00まで]
[5] その他の制限: ポインタを使ってテキストをよみこんでください。

全然歯が立ちません。
助けてください。
よろしくおねがいします。
632デフォルトの名無しさん:2008/01/12(土) 00:06:32
情報が少なすぎ
633デフォルトの名無しさん:2008/01/12(土) 00:06:36
>>631
・作成者のIDと氏名
・配布したデータ(ex01data.txt, em01data.txt))
これが無いとエスパーじゃなきゃ無理。
634デフォルトの名無しさん:2008/01/12(土) 00:10:32
>>629
右の1文字を切り取って配列にぶち込むだけだろ。
635デフォルトの名無しさん:2008/01/12(土) 00:11:52
>>628
それって、指数表記に対応できるか?
tp://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
1.2e10みたいな感じの奴。
636デフォルトの名無しさん:2008/01/12(土) 00:15:01
>>635
そんな条件無いだろ。
637デフォルトの名無しさん:2008/01/12(土) 00:15:54
>>634
めっっちゃ初歩ですが配列の使い方、いまいちよくわかっておりません
時間があるかた作っていただけるとありがたいです(ノ_・、)
638デフォルトの名無しさん:2008/01/12(土) 00:19:28
>>635
>>623 の問題より
条件1. 文字列内の各文字が0〜9までの数字か、マイナス記号(-)、小数点(.)のみで構成されている。
条件2. マイナス記号は文字列の最初(0番目の要素)以外は入らない。(もちろんなくても良い。)
条件3. 小数点は1つしか含まない。(場所はどこでもよい。)
639デフォルトの名無しさん:2008/01/12(土) 00:22:48
初めまして
プログラミングの課題が出されたのですが、さっぱりわかりません。
代わりにプログラムを作って頂けないでしょうか。お願いします。

[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):正整数a以上b以下のHappyNumberを求めるプログラムを作成せよ。
ただし、関数を使うこと。
HappyNumberとは、正整数nの各桁の数を2乗し、その合計を求め、
その合計の各桁の数を2乗し、またその合計を求める計算を繰り返したとき、
最終的に1となる正整数nのことをいう。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: よくわかりません。
 [3.3] 言語: C++
[4] 期限: 2008年1月14日まで
[5] その他の制限: 関数を使うところまで
640229:2008/01/12(土) 00:36:54
自分でもやってますがどうにも難しいですね・・・
乗算回数がnpより良い方法が見つかりませんし、存在しないかもしれません。
641デフォルトの名無しさん:2008/01/12(土) 00:40:37
>>640
ぶっちゃけ協力してあげたくても数学の知識が足りない。すまん。
642デフォルトの名無しさん:2008/01/12(土) 00:57:22
>>229 (>>640
やってみたけど、問題の意味を取り違えてるかもしれん
この場合だと乗算回数はどっちになるの?
n * ( 2 + p * p )
それとも
n * p * p

#include<iostream>

int main(void)
{
double a[10]={0.0, 0.1, 0.0, 2.2, 0.0, 0.0, 3.3, 4.4, 0.0, 5.5};
double b[10]={0.1, 0.0, 2.2, 0.0, 0.0, 3.3, 4.4, 0.0, 5.5, 0.0};
double c=0.0;
int i, skip_flag[10]={0};

for(i=0;i<10;i++) if(a[i]==0.0) skip_flag[i]=1;
for(i=0;i<10;i++) if(b[i]==0.0) skip_flag[i]=1;
for(i=0;i<10;i++) if(!skip_flag[i]) c+=a[i]*b[i];

std::cout << c << std::endl;

return 0;
}
643デフォルトの名無しさん:2008/01/12(土) 01:09:01
>>639
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
int DigitPowSum(int n){
int sum = 0;
while(n){
int i=n%10;
sum+=i*i;
n/=10;
}
return sum;
}
bool IsHappyNumber(int n){
list<int> check;
while(1){
if(n==1)return true;
if(find(check.begin(),check.end(),n)!=check.end())return false;
check.push_back(n);
n=DigitPowSum(n);
}
}
int main(void){
int a,b;
cin >> a;
cin >> b;
for(int i=a;i<=b;++i)if(IsHappyNumber(i))cout<<i<<endl;
return 0;
}
list使っていいのか知らないけど。もしかしたら大きな勘違いで無駄なことやってるかも。
644642:2008/01/12(土) 01:12:14
>>640
>>642 をちょっと修正した
>aとbを同時に扱ってはならない
に抵触するかもしれない
#include<iostream>

int main(void){
double a[10]={0.0, 0.1, 0.0, 2.2, 0.0, 0.0, 3.3, 4.4, 0.0, 5.5};
double b[10]={0.1, 0.0, 2.2, 0.0, 0.0, 3.3, 4.4, 0.0, 5.5, 0.0};
double c=0.0;
int i, j, skip_flag[10]={0};

// 改変のターン ここから
for(i=0;i<10;i++) if(a[i]==0.0) skip_flag[i]=1;
for(i=0;i<10;i++) if(b[i]==0.0) skip_flag[i]=1;
for(i=0,j=0;i<10;i++) if(!skip_flag[i]) a[j++]=a[i];
for(i=0,j=0;i<10;i++) if(!skip_flag[i]) b[j++]=b[i];
// 改変のターン ここまで

// 乗算のターン ここから
for(i=0;i<j;i++) c+=a[i]*b[i];
// 乗算のターン ここまで

std::cout << c << std::endl;

return 0;
}
645デフォルトの名無しさん:2008/01/12(土) 01:35:39
>>643
list<int> が激しく無駄じゃね?
set<int> にして global か static にしたほうがいい気がする.
ただ,>>639 の定義に従うと,1,10,100,1000,...,10^n しか該当しない気がするので
bool IsHappyNumber( int a )
{
while ( a > 1 ) {
if ( a % 10 ) {
break;
}
a /= 10;
}
return ( a == 1 || a == 10 ) ;
}
でいいんじゃないかとおもうが,自信はない.
646デフォルトの名無しさん:2008/01/12(土) 01:42:12
>>645
7とか13とかも該当するでしょ?
list<int>は無駄っぽいけど、
循環してるのをどうやって判定すればいいかわからんから力技でやってみた。
647デフォルトの名無しさん:2008/01/12(土) 01:43:22
>>645
残念ながら、その予想は間違い。
31とかが、HappyNumberになるよ
648デフォルトの名無しさん:2008/01/12(土) 01:51:25
>>646-647
その通りだった.勘違いしてた.
649デフォルトの名無しさん:2008/01/12(土) 01:51:34
#include<iostream>
#include<set>
using namespace std;
bool IsHappyNumber( int n ){
set<int> check;
while(1){
check.insert(n);
int sum=0;
while(n)
{
int i=n%10;
sum+=i*i;
n/=10;
}
n=sum;
if(n==1)return true;
if(check.find(n)!=check.end()) return false;
}
}
int main(void){
int a,b;
cin >> a;
cin >> b;
for(int i=a;i<=b;++i)if(IsHappyNumber(i))cout<<i<<endl;
return 0;
}
確かにsetの方が簡潔にかけるのと、あと関数2つも必要なかったので書き直してみた。
staticにしたほうがいいってのがよくわかんないけど・・・
650デフォルトの名無しさん:2008/01/12(土) 02:00:19
これ面白いな。
最終的には4を含むループにはまるか、1で終わるかのどっちかなんだな。
証明もできたがはじめて知ったよ。
651デフォルトの名無しさん:2008/01/12(土) 02:10:08
ああ 力技で解いた自分が恥ずかしい orz
652デフォルトの名無しさん:2008/01/12(土) 02:56:42
>>569
/* goto使いまくりだけど */
#include  <stdio.h>
#include  <string.h>

int  main(void)
{
  char  buff[256];
  gets_s(buff, 256);

  int  charaNum  =  0;
  int  wordNum    =  0;
  int  sentenceNum  =  0;
  for(int i = 0; i < strlen(buff); i++)  {
    if(buff[i] == '.')  {
      sentenceNum++;
      wordNum++;
      goto  LABEL_SPACESKIP;
    }
653デフォルトの名無しさん:2008/01/12(土) 02:57:21
/* 続き */

    if((buff[i] == ',') || (buff[i] == ' '))  {
      wordNum++;
      goto  LABEL_SPACESKIP;
    }
    charaNum++;
    if(false)  {
    LABEL_SPACESKIP:;
      for(int j = i+1; j < strlen(buff); j++)  {
        if(buff[j] != ' ')  {
          i  =  j-1;
          goto  LABEL_CONTINUE;
        }
      }
      break;
    }
  LABEL_CONTINUE:;
  }
  printf(" %d\n", charaNum);
  printf(" %d\n", wordNum);
  printf(" %d\n", sentenceNum);

  return  0;
}
654デフォルトの名無しさん:2008/01/12(土) 02:59:06
訂正。

if(buff[i] == '.') {

if((buff[i] == '.') || (buff[i] == '!') || (buff[i] == '?')) {
655デフォルトの名無しさん:2008/01/12(土) 03:46:48
>>617

>p=fopen(argv[1],"r");
>はもっと嫌い。

後学のために、その理由を教えていただけませんか?
当方は
if ((p = fopen(argv[1], "r")) == NULL) { }
と書いています。ただ、
if(isplaha(c)) { }
はよく使いますが、
if (!(p = fopen(argv[1], "r"))) { }
は私自身がつまづくのでしません。
宗教論争のつもりはないです。ただ、他の方の感覚を知りたいだけです。
656655:2008/01/12(土) 03:50:30
s/isplaha/isalpha/g
657デフォルトの名無しさん:2008/01/12(土) 04:00:38
他のスレでやれ
658デフォルトの名無しさん:2008/01/12(土) 07:49:56
659デフォルトの名無しさん:2008/01/12(土) 08:04:01
>>579
当方の環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) で確認しています。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5739.txt

>>657
これは失礼。では宿題を解きながらではいかが?
660デフォルトの名無しさん:2008/01/12(土) 08:30:17
/* 棒を倒す */のところの処理が不思議で妊娠しそう
661デフォルトの名無しさん:2008/01/12(土) 09:05:49
x = 2のところのせいで判りづらいけど、
必ず一通りの経路しかないようになってんのか。
迷路って面白いな。
662デフォルトの名無しさん :2008/01/12(土) 11:22:51
>>658
ありがとうございます!!
663デフォルトの名無しさん:2008/01/12(土) 11:30:16
>231-232
の書き込みをした者です。
今日の午後2時までに可能なところまで回答していただけないでしょうか。
よろしくお願いいたします。
664デフォルトの名無しさん:2008/01/12(土) 11:30:20
>>642
その場合2n+(n*p*p)と扱われます。
ifによって乗算回数を減らす事はほぼ禁止されています。
>>644は0でない要素数が同じでないと正しく動きません。
665デフォルトの名無しさん:2008/01/12(土) 12:22:16
>>663
最初の数学の合計点が出力結果にならないので諦めた
666デフォルトの名無しさん:2008/01/12(土) 12:38:38
>>569
#include <stdlib.h>

static void in_word(char *t, int *c, int *w, int *s);
static void in_space(char *t, int *c, int *w, int *s);

static void in_word(char *t, int *c, int *w, int *s)
{
if (!*t || *t == '\n')
return;
*c += 1;
switch (*t) {
case ' ': case ',':
return in_space(++t, c, w, s);
case '.': case '?': case '!':
*s += 1;
return in_space(++t, c, w, s);
default:
return in_word(++t, c, w, s);
}
}
/*続く*/
667デフォルトの名無しさん:2008/01/12(土) 12:39:03
/*続き*/
static void in_space(char *t, int *c, int *w, int *s)
{
if (!*t || *t == '\n')
return;
*c += 1;
switch (*t) {
case ' ': case ',':
return in_space(++t, c, w, s);
default:
*w += 1;
return in_word(++t, c, w, s);
}
}

int main(int ac, char **av)
{
char text[1024];
int c, w, s;

fgets(text, sizeof text, stdin);

c = w = s = 0;
in_space(text, &c, &w, &s);
printf("character:%d word:%d sentence:%d\n", c, w, s);

return 0;
}
668デフォルトの名無しさん:2008/01/12(土) 12:39:42
音声出力のソースを作っています。
以下のソースで、ファイルは出力されるのですが、音声が出てきません。
どこを修正すればよいか教えていただけませんか?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define SIZE 22050*5
#define OFFSET 23
int main(int argc,char *argv[])
{
FILE *fp;
short int inbuf[SIZE];
short int outbuf[SIZE];
int i,f,f0,amp,PI;
f = 440;
f0 = 11050;
amp = 5000;
if((fp = fopen("test-sound-16-22.wav", "rb")) == NULL ) {
printf("ファイルオープンエラー\n");
exit(EXIT_FAILURE);
}
669デフォルトの名無しさん:2008/01/12(土) 12:40:58
続き

fread(inbuf, sizeof(short int), SIZE, fp);
fclose(fp);
for (i=OFFSET; i<200; i++)
printf("%d, ",inbuf[i]);
printf("\n");
for (i=0; i<OFFSET; i++)
outbuf[i]=inbuf[i];
for (i=0; i<(SIZE-OFFSET); i++){
outbuf[i+OFFSET] = amp * sin(2*PI*i*(f/f0));
}
for (i=(SIZE-OFFSET); i<SIZE; i++)
outbuf[i]=0;
if((fp = fopen("testfile2.wav", "wb")) == NULL ) {
printf("ファイルオープンエラー\n");
exit(EXIT_FAILURE);
}
fwrite(outbuf, sizeof(short int), SIZE, fp);
fclose(fp);
return 0;
}
670デフォルトの名無しさん:2008/01/12(土) 12:43:30
>>668
スレ違い。
もし宿題であって丸投げするのであれば>>1をよく読んで書き直し。
671デフォルトの名無しさん:2008/01/12(土) 12:56:54
>>663
すみません、間違えた数字を書いていました。

(成績表)
学籍番号 5001 5002 5003
数学 62 45 70
英語 75 65 93
国語 54 82 63
672デフォルトの名無しさん:2008/01/12(土) 13:00:20
(1)はここまでできているのですがこの先がわかりません。
#include <stdio.h>

int main(void)
{
int seiseki[3][4]={{5001,62,75,54},{5002,45,65,82},{5003,70,93,63}};
int i, total[3]={0,0,0};
double ave[3];
673デフォルトの名無しさん:2008/01/12(土) 13:00:47
>>655
ためしに、引数つけずにプログラムを実行したらどうなる?
674デフォルトの名無しさん:2008/01/12(土) 13:30:36
>>483
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5740.txt

>>672
実は数日前に適当にやって、変態になった。
クソースだな http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5740.txt
参考にしないでくれ。
675デフォルトの名無しさん:2008/01/12(土) 13:31:33
676デフォルトの名無しさん:2008/01/12(土) 13:32:35
>>231-232
>>663 >>671
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5742.txt
丁寧にやってたらちょっと時間かかった。
もうすでに書いた後だったんで>>672のソースは使ってない。
677デフォルトの名無しさん:2008/01/12(土) 13:34:14
>>672
C++じゃないの?
678デフォルトの名無しさん:2008/01/12(土) 13:36:27
>>677を読むまで疑問にすら思わなかった俺涙目w
coutを書き換えるくらいでOKなように書いてあるけど
679デフォルトの名無しさん:2008/01/12(土) 13:49:45
>>674-676
ありがとうございます。でもこのプログラムだと習ってないことが多いので申し訳ないのですがこれは自分には難しすぎます。

あと合計点や平均点の画面出力にはprintf文でやりたいと思います。

#include <stdio.h>

void main(void) ←ここ間違えていたので直しました
{
int seiseki[3][4]={{5001,62,75,54},{5002,45,65,82},{5003,70,93,63}};
int i, total[3]={0,0,0};
double ave[3];

680デフォルトの名無しさん:2008/01/12(土) 13:54:46
>>679
>>232の[3.3]を見直して自分の迂闊さに後悔するんだ
681デフォルトの名無しさん:2008/01/12(土) 14:05:12
>>680
このプログラムはC++ではないのですか?
学校ではこういう風に教わったので、他の方法などはわかりません。すみません
682658:2008/01/12(土) 14:06:02
>>662
自分のではなく、>>659さんの方でお願いします。
683デフォルトの名無しさん:2008/01/12(土) 14:11:45
>>672 >>679 >>681
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5743.txt
一応C言語に直した。
先生に何言語を教えてくれているのか一度ちゃんと質問した方がいいと思う。
684デフォルトの名無しさん:2008/01/12(土) 14:25:37
C++という区分だけでなく、
クラス、STL、Boostを使用とかも明記すればいいかもね(Boost使う授業とか熱そうだな)。
685デフォルトの名無しさん:2008/01/12(土) 14:28:58
[1] 授業単元:C言語
[2] 問題文:構造体としてT1時T1分T1秒とT2時T2分T2秒をキーボードから入力し、経過時間を求め、表示するプログラムを作成しなさい。但し、秒は実数型とする
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:fujitsu workbench
 [3.3] 言語:C
[4] 期限:1月16日16:00
[5] その他の制限:T1=7時25分12.33秒 T2=12時3分27.55秒.時間は24時間60分60秒で
それ以上はNGで安全装置を働かせる
686デフォルトの名無しさん:2008/01/12(土) 14:29:08
C言語だと
制御文、配列、関数、構造体、ポインタ
あたりがおおまかな節目になるかな?
687デフォルトの名無しさん:2008/01/12(土) 14:32:16
>>685 閏秒ってのは考えなくていいのね?
688デフォルトの名無しさん:2008/01/12(土) 14:34:34
>>687
考えなくていいです
689デフォルトの名無しさん:2008/01/12(土) 14:37:53
>>619 です
>>629 に書いた方法で誰かプログラムお願いします!
690デフォルトの名無しさん:2008/01/12(土) 14:39:20
>>683
非常に参考になりました、感謝致します。
どうもありがとうございました。
691デフォルトの名無しさん:2008/01/12(土) 14:39:29
>>689
ダブル使ってもだめ?
692デフォルトの名無しさん:2008/01/12(土) 14:55:21
>>691
double ですか??
使っても50桁入力できません(ノ_・。)
693デフォルトの名無しさん:2008/01/12(土) 14:57:41
>>692
んじゃ、今からとっかかる
他にやってる人がだしたらまあそっちで。
694デフォルトの名無しさん:2008/01/12(土) 15:07:53
>>693
ありがとうございます(ノд`。)
695デフォルトの名無しさん:2008/01/12(土) 15:28:04
掛け算が面倒だな
696デフォルトの名無しさん:2008/01/12(土) 15:39:21
この方法だと掛け算はむりですかねー
697デフォルトの名無しさん:2008/01/12(土) 15:42:39
ヒント
2*3
2+2+2

と思ったが50桁分ループさせるのはそれはそれで面倒そうだな
698デフォルトの名無しさん:2008/01/12(土) 15:52:02
あーその手があった!
もうめんどくてもなんでもいいっス(ノ_・。)
699デフォルトの名無しさん:2008/01/12(土) 16:00:28
いや、掛け算だって筆算でやるようにやっていけばできるだろ。
少ない数なら>>697でもいいけど1億回以上も加算してたら処理が終わらん。
700デフォルトの名無しさん:2008/01/12(土) 16:05:42
>>685
ほんと分かんないんでお願いします
701デフォルトの名無しさん:2008/01/12(土) 16:06:31
最近のCPUならちょっとくらい無理させても平気だって! たぶん
最初は加算ができてれば実装が楽かと思ったんだけど・・・
702デフォルトの名無しさん:2008/01/12(土) 16:07:30
>>700
期限はまだあと4日もあるのにたった2時間で催促するなよw
703デフォルトの名無しさん:2008/01/12(土) 16:08:47
たしかに、、
704685:2008/01/12(土) 16:27:18
サーセン、コピペした時の手違いで期限が今日なんで
焦ってんです。
705デフォルトの名無しさん:2008/01/12(土) 16:31:24
今日ならもう期限切れだから焦る必要は無いような・・・
というか>>700に期限を間違えてたって書けよ
706デフォルトの名無しさん:2008/01/12(土) 16:33:39
>>619
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5744.c
色々制限が入ってるけど、面倒なので例外処理は無視してる
707685:2008/01/12(土) 16:37:42
>>705
700が別人なんで重ね重ねすいません。
708デフォルトの名無しさん:2008/01/12(土) 16:53:15
'\0'で制御してた俺は一体……
709デフォルトの名無しさん:2008/01/12(土) 16:56:01
>>708
char A[]="123"を、
"321\0" に変換し、
"32100000000...000\0" に変換してから
0x03, 0x02, 0x01, 0x00, ... に変換

して計算しようとしていた自分は一体……
710デフォルトの名無しさん:2008/01/12(土) 17:03:53
すべて1+1で計算させてみようとしてた俺は orz 無謀すぎた

>>707
で、別人なのはいいけど期限は結局いつなの?
711デフォルトの名無しさん:2008/01/12(土) 17:24:55
>>619 です!
ほんとありがとうございました!
これで宿題はとりあえず..(ノ_・。)
面接があって、自分で説明するにはまだわかんないことだらけなのでまた質問しにきます!
712デフォルトの名無しさん:2008/01/12(土) 17:30:03
>>711
それを最後に、>>619の姿を見たものはいなくなるのであった...
713デフォルトの名無しさん:2008/01/12(土) 17:45:44
>>619 また現れました
あのーまだ
#define
ってならってないんですけども

ないと出来ないですか?(ノ_・。)
714デフォルトの名無しさん:2008/01/12(土) 17:46:27
[1] 授業単元:c++
[2] 問題文(含コード&リンク):
名前、出身都道府県、生年月日を読み込み、名前、生年月日、満年齢、出身都道府県の順に
出力するプログラムをクラスを用いて作成せよ。満年期を計算する場合には現在の日付
(年月日)が必要となるが、これはアクセサを用いて値を入れること。
名前:内藤大介 出身都道府県:東京都 生年月日:1987年08月07日

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
期限: ([2008年01月15日12:30まで]
[5] その他の制限

715デフォルトの名無しさん:2008/01/12(土) 17:46:35
>>713
Nってかいてるのを50に書き直す
716デフォルトの名無しさん:2008/01/12(土) 17:47:23
  ( ゚д゚) 
_(__つ/ ̄ ̄ ̄/_ 
  \/    /
     ̄ ̄ ̄
 
  ( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_ 
  \/    /
     ̄ ̄ ̄
717デフォルトの名無しさん:2008/01/12(土) 17:48:16
>>716
もっと私を見て!!
718デフォルトの名無しさん:2008/01/12(土) 18:43:37
>>685

#include  <stdio.h>

/* 7時25分12.33秒 なら 7 25 12.33 と入力 */

typedef  struct  _stime  {
  int  hour;
  int  minute;
  float  second;
}  stime;

void  safety(stime* ptr)
{
  if(ptr->hour > 24) ptr->hour = 24;
  if(ptr->minute > 60) ptr->minute = 60;
  if(ptr->second > 60.0f) ptr->second = 60;
}

int  main(void)
{
  stime  t1, t2, t3;
  /* 時 分 秒で入力 */
  scanf("%d %d %f", &t1.hour, &t1.minute, &t1.second);
  scanf("%d %d %f", &t2.hour, &t2.minute, &t2.second);

  /* 安全装置 */
  safety(&t1);
  safety(&t2);
  

/* 続く */
719デフォルトの名無しさん:2008/01/12(土) 18:44:41
/* 続き */

  t3.hour  =  t2.hour - t1.hour;
  t3.minute  =  t2.minute - t1.minute;
  t3.second  =  t2.second - t1.second;

  if(t3.second < 0)  {
    t3.minute--;
    t3.second  +=  60.0f;
  }
  if(t3.minute < 0)  {
    t3.hour--;
    t3.minute  +=  60;
  }
  if(t3.hour < 0)  {
    t3.hour  +=  24;
  }

  printf("経過時間 %d時間%d分%5.2f秒\n", t3.hour, t3.minute, t3.second);
  return  0;
}

/* 題意がよく分からないけどこういうこと? */
720デフォルトの名無しさん:2008/01/12(土) 19:24:33
>>639
mixiにも書いてるマルチじゃん。
ttp://mixi.jp/view_bbs.pl?id=26879853&comment_count=0&comm_id=602606
820 2008年01月11日 14:01

りょ〜
初めまして
プログラミングの課題が出されたのですが、さっぱりわかりません。
代わりにプログラムを作って頂けないでしょうか。お願いします。

[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):正整数a以上b以下のHappyNumberを求めるプログラムを作成せよ。
      ただし、関数を使うこと。 HappyNumberとは、正整数nの各桁の数を2乗し、その合計を求め、
      その合計の各桁の数を2乗し、またその合計を求める計算を繰り返したとき、最終的に1となる正整数nのことをいう。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: よくわかりません。
 [3.3] 言語: C++
[4] 期限: 2008年1月14日まで
[5] その他の制限: 関数を使うところまで

愛知教育大学に通報しといた。
721デフォルトの名無しさん:2008/01/12(土) 19:25:17
>>619 です
何度もすいません
あと100回くらい来そうです、、
>>706 のプログラムで、
一桁ずつ配列に入れる部分てどこになりますか?


変な質問だったらすいません
722デフォルトの名無しさん:2008/01/12(土) 19:30:50
真面目にコード理解する気あるなら、一度自分で書き直して
つまったところでサンプルみて補った方が良いよ。
ここは基本的に丸投げされた宿題を解く場であって 、解き方を教える場ではないしな。
まあ親切な解答者なら解説までしてくれるかもしれないが。
723デフォルトの名無しさん:2008/01/12(土) 19:50:08
>>722
わかりました!!
724デフォルトの名無しさん:2008/01/12(土) 20:18:31
>>717
         (<、,,> ":::::::::::::::::::::::::::: 、
      〜〈/::::::::::::::::::::::::::::::::::::::::::::)
       〃:::::::::::::::::::::::::::::::::::::::::<、    ど ロ こ
     ~そ:::::::::::::::::::::::::::::::::::::::::::::::::::::,)   も リ の
  、_ ,, /::::::::::::::::::::::::、,ゝ===く:::::::,:::::ヽ  め コ
    `V::::::::::::::::::::、_γ      `ヾ,_ < ! ン
     l::::::::::::::::::::::く(   r,J三;ヾ   )> く,
 〜v,ん:::::::::::::::´:::::::=; {三●;= }  ,=ニ `/l/!/⌒Y
     l:::::::::::::::::::::::::::::ゝ≡三=イ ´::::゙:::::::::::::::::::::::::::::::
 、m,.. ,ゞ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
725デフォルトの名無しさん:2008/01/12(土) 20:56:16
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5745.txt
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2008年01月14日10時まで
[5] その他の制限: 特にないです

よろしくお願いします。
726デフォルトの名無しさん:2008/01/12(土) 21:55:49
#include <stdio.h>
#define BUF_SIZE 1024

int main() {

char in[BUF_SIZE];
int i;
scanf("%s", in);

for (i = 0; in[i] != '\0'; ++i) {
if (in[i] == 't' && in[i+1] == 'i') {
printf("chi");
++i;
} else putchar(in[i]);
}
return 0;
}
727デフォルトの名無しさん:2008/01/12(土) 22:09:08
>>710
1/12 26:00が定刻です。
>>718
大変ありがとうございます、安全装置は時間が単位ごと
に24時60分60秒を超えない様に設定するようです。
その他の制限:T1=7時25分12.33秒 T2=12時3分27.55秒は正直この数値は
なんでもいいです。
728 ◆9MN.Jyzx0c :2008/01/12(土) 23:20:13
729デフォルトの名無しさん:2008/01/12(土) 23:28:37
くだらねえ
730デフォルトの名無しさん:2008/01/12(土) 23:34:56
>>727,728
ありがとうございます、助かりました。
731デフォルトの名無しさん:2008/01/12(土) 23:51:45
【時間切れ】 (1/12)
>579 >148 >631

【未解決問題】
>>448 1/13

>>473 1/14
>>566 1/15 9:00
>>714 1/15 12:30
>>514 1/15
>>576 1/17日中
>229 1/31
>343 不明
732デフォルトの名無しさん:2008/01/13(日) 00:12:01
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5747.zip
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 今日の12時まで
[5] その他の制限:
〆切が近くて本当に申し訳ありませんが、宜しくお願いします。
733デフォルトの名無しさん:2008/01/13(日) 00:20:47
>>732
"0"使っていいの?
734デフォルトの名無しさん:2008/01/13(日) 00:23:08
735 ◆9MN.Jyzx0c :2008/01/13(日) 00:26:06
>>732

#include <stdio.h>

int main()
{
    for(long a=1001; a<=9999; a+=2)
    {
        long b=987654321/a;
       
        if(a*b==987654321)
            printf("%ld * %ld = %ld\n", a, b, a*b);
    }
   
    return 0;
}
736デフォルトの名無しさん:2008/01/13(日) 00:28:40
>>733
やっぱり一番上の桁0は駄目なんじゃないかな

とりあえず俺は
for(i = 1000; i < 9999; i++)
  for(j = 100000; j < 999999; j++)
    条件を満たすか判定
でやるから、おまいはもっと賢い方法でやれ
737デフォルトの名無しさん:2008/01/13(日) 00:33:19
>>732
#include<stdio.h>
int main(void){
int i,j,k=987654321;
for(i=1000;i<=9999;i++)
if(k%i==0){
j=k/i;
printf("%9d\n",i);
printf("x %7d\n",j);
printf("---------\n");
printf("%9d\n",j%10*i);
printf("%8d\n",j/10%10*i);
printf("%7d\n",j/100%10*i);
printf("%6d\n",j/1000%10*i);
printf("%5d\n",j/10000%10*i);
printf("%4d\n",j/100000%10*i);
printf("---------\n");
printf("%9d\n",i*j);
}
return 0;
}
738デフォルトの名無しさん:2008/01/13(日) 00:33:56
>>736
とりあえず因数分解しろよw
739 ◆9MN.Jyzx0c :2008/01/13(日) 00:35:28
>732
途中表示を忘れたので訂正
#include <stdio.h>
int main()
{
    for(long a=1000; a<=9999; a++)
    {
        long b=987654321/a;
       
        if(a*b==987654321)
        {
            printf("      %4ld\n*  %6ld\n----------\n"
                  "      %4ld\n"
                  "    %4ld\n"
                  "  %5ld\n"
                  "  %5ld\n"
                  " %5ld\n"
                  " %4ld\n"
                  "----------\n"
                  " %9ld\n\n\n", a, b,
                  b%10*a,
                  (b/10)%10*a,
                  (b/100)%10*a,
                  (b/1000)%10*a,
                  (b/10000)%10*a,
                  (b/100000)%10*a,
                  a*b);
        }
    }
   
    return 0;
}
740732 :2008/01/13(日) 00:54:27
こんなに早くやってもらえるとは思いませんでした。
本当に助かりました。
ありがとうございます。
741 ◆u2YjtUz8MU :2008/01/13(日) 01:01:32

[1] 授業単元: C言語

[2] 問題文(含コード&リンク):1から10までの数値を並び替えし、並び替えた10個の数字の合計(和)を出力。
              またその合計を10で割った商と余りを出力する。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Borland C++ 5.5.1
 [3.3] 言語: C言語でよろしくお願いします。
[4] 期限: 明日まで。
[5] その他の制限:void inputnum outputnum for sortnum 等はOKらしい。
742 ◆u2YjtUz8MU :2008/01/13(日) 01:03:15
>>741です。 
どなたかお願いいたします。
743デフォルトの名無しさん:2008/01/13(日) 01:05:41
>>741
元データはランダムに並んでるのか? > 1から10
使っていいライブラリは?
744デフォルトの名無しさん:2008/01/13(日) 01:07:10
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
n角形(n>2)の面積を求めるプログラムを作成せよ
関数を用いてtxtファイルにある座標を読み込む形式のもの
解答においては三角形分割せずに台形の面積の総和として表す方法で解く事を指定する
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:visual stadio 2005
 [3.3] 言語: C
[4] 期限: 1月14日24時まで
[5] その他の制限:特にありません
745デフォルトの名無しさん:2008/01/13(日) 01:13:16
>>732 ベンチマークと思えばどうということはない
#include <stdio.h>

int cntdigit(int n)
{
  int cnt = 0;
  while(n) cnt++, n /= 10;
  return cnt;
}

int main(void)
{
  int i, j, w[6];
  for(i = 1000; i <= 9999; i++){
    for(j = 100000; j <= 999999; j++){
      w[0] = i*(j%10);
      w[1] = i*((j/10)%10);
      w[2] = i*((j/100)%10);
      w[3] = i*((j/1000)%10);
      w[4] = i*((j/10000)%10);
      w[5] = i*((j/100000)%10);
      if(cntdigit(w[0]) == 4 && cntdigit(w[1]) == 4 &&
      cntdigit(w[2]) == 5 && cntdigit(w[3]) == 5 &&
      cntdigit(w[4]) == 5 && cntdigit(w[5]) == 4 &&
      w[0] + 10*w[1] + 100*w[2] + 1000*w[3] + 10000*w[4] +100000*w[5] == 987654321)
        printf("%d , %d\n", i, j);
    }
  }
  return 0;
}
746 ◆u2YjtUz8MU :2008/01/13(日) 01:17:54
>>743
元データはランダムに並んでいます。
ライブラリに関しては一切問題文には、触れられていませんでしたがあまり高度なものは使用しないで頂きたいです
747デフォルトの名無しさん:2008/01/13(日) 01:22:00
>746
なに順に並び替えるの?
748 ◆u2YjtUz8MU :2008/01/13(日) 01:24:59
>>747
降順です。
749デフォルトの名無しさん:2008/01/13(日) 01:26:50
>>744
>台形の面積の総和として表す方法で解く事

>>1
>・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
750664:2008/01/13(日) 01:32:13
>>642
勘違いをしていました。この場合はn+(n*p*p)と扱われます
751デフォルトの名無しさん:2008/01/13(日) 01:39:53
>>714
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5749.txt

生年月日と満年齢の両方でソート掛ける意味ないと思うので、満年齢でだけソートしてます
752デフォルトの名無しさん:2008/01/13(日) 01:40:08
解答においては三角形分割せずに台形の面積の総和として表す方法で解く事を指定する

この一文が全くもって意味不明なのだが…
四角形(特に凸四角形)はどうするんだろうか
n>2となっているが三角形はどうするんだろうか
753デフォルトの名無しさん:2008/01/13(日) 01:42:01
おまえどんだけ内藤大介が好きなんだよw
754デフォルトの名無しさん:2008/01/13(日) 01:43:14
>>749
あほか? その数式含めて解けってのが出題の意図だろうが?
つか、こんなもん計算問題のうちにも入らんだろ?
755デフォルトの名無しさん:2008/01/13(日) 01:48:19
>>744
テキストファイルの書式は?
756デフォルトの名無しさん:2008/01/13(日) 01:49:12
>>752
X軸なりX軸で切って、切ったところの交点求めれば台形ってことでは?
端は 3角形になるけど…………
まさか禁止してないよね? >>744
757751:2008/01/13(日) 01:51:23
>>714
ごめん、満年齢でソートが意味ないんだった、逆だ
生年月日でソート掛けんといかんよな、場所はわかると思うから適当に直してくれ
758デフォルトの名無しさん:2008/01/13(日) 01:52:29
>>754
「出題の意図」とか言い始めるとこのスレの存在そのものを否定するような・・・
759デフォルトの名無しさん:2008/01/13(日) 01:57:01
ふとした疑問?
与えられたn角形が凸であることの保証はあるんだろうか?
760 ◆9MN.Jyzx0c :2008/01/13(日) 02:04:19
>741
入出力の指定がないのでてきとーに。
問題文の解釈ゆれもてきとーに。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5750.c
761 ◆u2YjtUz8MU :2008/01/13(日) 02:11:24
>>760
遅い時間までありがとうございます。 助かりました。
762744 ◆wF.16HeCFk :2008/01/13(日) 02:15:18
>>756の方ので正しいと思います

自分の文章がアレで迷惑かけてしまい申し訳ない
763デフォルトの名無しさん:2008/01/13(日) 02:27:32
>>741 辞典丸写しわっしょい
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define MIN 1
#define N 1000

int sum_and_distsort(int n, int a[], int b[]){
  int i, x, sum = 0, cnt[MAX - MIN + 1] = {0};
  for(i = 0; i < n; i++) cnt[a[i] - MIN]++;
  for(i = 1; i <= MAX - MIN; i++) cnt[i] += cnt[i - 1];
  for(i = n - 1; i >= 0; i--){
    x = a[i] - MIN;
    b[--cnt[x]] = x + MIN;
  }
  for(i = 0; i < MAX - MIN; i++) sum += cnt[i]*(MIN + i);
  return sum;
}

int main(void){
  int i, a[N], b[N], sum;
  srand((unsigned)time(NULL));
  for(i = 0; i < N; i++) a[i] = rand()%(MAX - MIN + 1) + MIN;
  sum = sum_and_distsort(N, a, b);
  puts("\nビフォア");
  for(i = 0; i < N; i++) printf("%3d ", a[i]);
  puts("\nアフター");
  for(i = 0; i < N; i++) printf("%3d ", b[i]);
  printf("\n合計 %d 商 %d 余り %d\n", sum, sum/10, sum%10);
  return 0;
}
764デフォルトの名無しさん:2008/01/13(日) 02:40:24
sumの計算の位置がまずい……
for(i = 0; i < MAX - MIN; i++) sum += cnt[i]*(MIN + i);

for(i = n - 1; i >= 0; i--){
の上に移動希望
7651問目:2008/01/13(日) 03:00:14
[1] 授業単元:
[2] 問題文:方程式 f(x)=x^2-c の近似値をニュートン法で求めることにより √c の近似値を求めよ。x の初期値は2、収束条件は|X_n+1 - X_n| < 10^(-5)とする。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:2008年1月15日24:00まで
[5]下みたいになるようにお願いします。

<実行結果>
平方根を求めいた値を入力せよ:2
初期値x[0]:2
収束条件:1.0e-5
計算結果
-n--x-------y------
 0 2.00000        2
 1 1.50000      0.25
 2 1.41667  0.0069444
 3 1.41422 6.0073e-06
 4 1.41421 4.5108e-12
√2.0の近似値は1.414214です。
7662問目:2008/01/13(日) 03:03:29
[1] 授業単元:情報処理演習
そのほかは上と同じです。

問題文:次の微分方程式を、オイラー法を用いて近似解を求めなさい。
L(di/dt)+Ri=E

実行結果(例)
L:0.1
R:1
E:10
刻み幅:0.05
終了時間:1.0
t0:0.0
i0:0.0
近似解
0.00 0.00000
0.05 5.00000
0.10 7.50000
・・・
1.00 9.99999
767デフォルトの名無しさん:2008/01/13(日) 05:26:40
768デフォルトの名無しさん:2008/01/13(日) 05:35:37
769デフォルトの名無しさん:2008/01/13(日) 05:42:28
俺、数学にがてなんだぜ。
770デフォルトの名無しさん:2008/01/13(日) 05:48:15
卒業研究で一緒にやってるヤツが
↓こんなコード書いたんだが何でこれで上手くいくのか
解説してくしてほしい・・・・

void strcpy (char *s, char *t){
while (*s++ = *t++)
;
}
771デフォルトの名無しさん:2008/01/13(日) 05:49:42
while ((*s++ = *t++) != '\0') の簡略形
772デフォルトの名無しさん:2008/01/13(日) 06:02:58
>>770
質問とは関係ないけどtはconst char *にした方が良い。
773デフォルトの名無しさん:2008/01/13(日) 06:11:10
>>770
質問とは関係ないけどtはregister const char *にした方が良い。
774デフォルトの名無しさん:2008/01/13(日) 06:17:46
>>771
何で簡略できるのかわからん・・・
俺グループで一番馬鹿なんだ・・・・
775デフォルトの名無しさん:2008/01/13(日) 06:49:54
while( *t != '\0' ){
 *s = *t;
 ++s;
 ++t;
}
これくらい分解したらわかりやすいんじゃないの?
*s ++s;は*(s++)と省略できて、優先順位の関係から括弧も省略できて*s++になる
まず「後置インクリメント」でぐぐるところからはじめるといいと思う

>>770
質問とは関係ないけどスレ違い
776デフォルトの名無しさん:2008/01/13(日) 07:23:57
>>770
while(a != 0)をwhile(a)と省略できる
while(a == 0)をwhile(!a)と省略できる

文字列の終端にはNULL文字('\0')が入っている。
これは値は0なので>>771の言うとおり簡略できる。

>>775
卒業研究も宿題のうちだから、それでわからないことなんだしいいんじゃね?
777デフォルトの名無しさん:2008/01/13(日) 09:45:08
卒研は宿題とは違うものだし、まぁ百歩譲って宿題だとしても
テンプレつかって丸投げしてもらわないと

>>770みたいな「ごく普通の質問」は質問スレでやるべき
このスレは別に学校スレじゃない
778デフォルトの名無しさん:2008/01/13(日) 09:58:05
>>731
いつもありがとうございます。助かります。

申告をば。
>>579 は, >>658, >>659 で回答されています。
779714:2008/01/13(日) 10:14:04
>>751
私ははすごいエラーが出てたいへんだったのに(笑)
とても助かりました。
ありがとうございます。
780デフォルトの名無しさん:2008/01/13(日) 10:22:59
>>766
#include <stdio.h>

double f(double l, double r, double e, double i)
{
    return (-r*i + e)/l;
}

int main(void)
{
    double l, r, e, dt, tn, t, i;

    printf("L:"); scanf("%lf", &l);
    printf("R:"); scanf("%lf", &r);
    printf("E:"); scanf("%lf", &e);
    printf("刻み幅:"); scanf("%lf", &dt);
    printf("終了時間:"); scanf("%lf", &tn);
    printf("t0:"); scanf("%lf", &t);
    printf("i0:"); scanf("%lf", &i);

    printf("近似解\n");
    printf("%.2f %.5f\n", t, i);
    while(t <= tn){
        i += dt*f(r, l, e, i);
        t += dt;
        printf("%.2f %.5f\n", t, i);
    }

    return 0;
}
781デフォルトの名無しさん:2008/01/13(日) 10:47:41
>>765 右揃えが再現できてない
#include <stdio.h>
#include <math.h>

double f(double c, double x){ return x*x - c;}
double g(double x){ return 2*x;}

int main(void){
    double c, x, prevx, epsilon;
    int n = 0;

    printf("平方根を求めいた値を入力せよ:");
    scanf("%lf", &c);
    printf("初期値x[0]:");
    scanf("%lf", &x);
    printf("収束条件:");
    scanf("%lf", &epsilon);

    printf("-n--x-------y------\n");
    printf("%3d %.5f %g\n", n, x, f(c, x));
    while(1){
        prevx = x;
        x = prevx - f(c, prevx)/g(prevx);
        n++;
        printf("%3d %.5f %g\n", n, x, f(c, x));
        if(fabs(x - prevx) < epsilon)
            break;
    }
    printf("√%.1fの近似値は%.6fです。\n", c, x);

    return 0;
}
782デフォルトの名無しさん:2008/01/13(日) 10:52:39
%g -> %11g
783デフォルトの名無しさん:2008/01/13(日) 10:59:37
784デフォルトの名無しさん:2008/01/13(日) 11:03:07
>>781
書式でマイナス指定するんじゃなかったっけ?
785デフォルトの名無しさん:2008/01/13(日) 11:05:28
786デフォルトの名無しさん:2008/01/13(日) 11:06:43
>>783 >>785
どうした?

とりあえず俺も

>>775
787デフォルトの名無しさん:2008/01/13(日) 11:12:58
NUL文字が代入されないってことかな? かな?

マージャンどうしよっかなー。
達成感なさそうだしなー。
788デフォルトの名無しさん:2008/01/13(日) 12:17:56
マージャンの役なんて知りません ><

>>514 は本当に学校で出る宿題なのかw
789デフォルトの名無しさん:2008/01/13(日) 12:51:19
麻雀ww
役全部知らないといけないじゃん。
790デフォルトの名無しさん:2008/01/13(日) 12:52:35
いや、自由課題だから自分で考えたんでしょ。
それを丸投げしてるわけだが。
791デフォルトの名無しさん:2008/01/13(日) 13:23:54
      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
       |     わかやまぁ〜     |
      \____ _____/
               V       / ̄ ̄ ̄ ̄ ̄\
          , ゛ 三 ミ ヽ   | わかやま   |
         ( ( (( ゚∀゚ )) ) ) |   わかやま |
          ヾヽミ 三彡, ソ′\_  ___/
  ワカヤマ〜,、,、  )ミ  彡ノ      V
      ヽ゚・゚っ (ミ 彡゛  (\|\|\∩
      彡JJ   \(     ヽ( ゚∀゚)|ミ
             ))     \   ヽミ
            (         \  __つミ
                     \)ミ
792デフォルトの名無しさん:2008/01/13(日) 13:31:16
>>566
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5754.zip

昔作ったOpenGLのサンプルだよ、ロボットがクルクル回転するだけ
MFC + OpenGLなんでキツイかも知らんが

マテリアルと光源の設定変更は含まれてない、CChildView::DrawWithOpenGL()で設定してるから
タイマとか使って固定値の部分を変更すりゃいいはず
.NET 2005で作ったからVC6への移行は自分でよろ、MFCのSDIでDoc-Viewなしのプロジェクト作れ
後は opengl32.lib glu32.lib glaux.lib をリンクすりゃいいだけと思う
793デフォルトの名無しさん:2008/01/13(日) 13:44:00
[1] 授業単元:プログラミング 2
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5755.txt
[3] 環境
 [3.1] XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 1/15
[5] その他の制限:なし
794デフォルトの名無しさん:2008/01/13(日) 14:17:34
int janken(void)
{
int p, c;
char *hand[] = {"グー","チョキ","パー"};

printf("あなたの手は?\n(0.グー、1.チョキ、2.パー):");
scanf("%d", &p);

c = rand() / (RAND_MAX + 1.0) * 3;

printf("ジャンケン!ポン!!\nあなた:%s <vs> COM:%s\n", hand[p], hand[c]);

return (c - p + 2) % 3;
}
795 ◆u2YjtUz8MU :2008/01/13(日) 16:55:26
>>741です。皆さんありがとうございました。
もう一つだけお願いしたい事があるんです。
#include <stdio.h>
#define OK 0

main(){
int num1,num2,num3,num4,num5,num6,num7,num8,num9,num10;
long a,d,r;

printf("num1 =");
scanf("%d",&num1);
printf("num2 =");
scanf("%d",&num2);
printf("num3 =");
scanf("%d",&num3);
printf("num4=");
scanf("%d",&num4);
796 ◆u2YjtUz8MU :2008/01/13(日) 16:56:17
printf("num5=");
scanf("%d",&num5);
printf("num6=");
scanf("%d",&num6);
printf("num7=");
scanf("%d",&num7);
printf("num8=");
scanf("%d",&num8);
printf("num9=");
scanf("%d",&num9);
printf("num10=");
scanf("%d",&num10);

a = num1+num2+num3+num4+num5+num6+num7+num8+num9+num10;
d = a/10;
r = a%10;

printf("和 =%d\n",a);
printf("商 =%d\n",d);
printf("余 =%d\n",r);

return(OK);
}このプログラムに10個のに入力した数値を昇順にソートする機能をつけて欲しいです。お願いします。
797デフォルトの名無しさん:2008/01/13(日) 17:01:27
もとプログラムの改版はだめなのか?
配列にしねぇとめんどくせぇよw
798デフォルトの名無しさん:2008/01/13(日) 17:05:45
配列を使えない人だって居るんだぞう!
799 ◆u2YjtUz8MU :2008/01/13(日) 17:06:49
大きく改版してもかまわないです。
自分でも長いなあと思っていたので。
800デフォルトの名無しさん:2008/01/13(日) 17:08:13
配列にしない利点が全くないようなw
801デフォルトの名無しさん:2008/01/13(日) 17:25:39
嫌がらせのようにmallocで動的確保
802デフォルトの名無しさん:2008/01/13(日) 17:41:51
[1] 授業単元:
[2] 問題文:複数のコンテナから、最初に見つかった、空のコンテナの番号を求めよ、但し空のコンテナが無かった場合は-1をかえすこと。
[3] 環境
 [3.1] OS: Windows XP SP2
 [3.2] Visual Studio 2005
 [3.3] C++
[4] 期限:特になし
[5] その他の制限:templateによる、コードでお願いします。

vector<int> vec1
vector<int> vec2
vector<int> vec3
以降、vectorコンテナの数は不定とします、

この中から、空のコンテナが見つかったら、最初に見つかった番号返し、無ければ
-1を返したいのですが、今はこんな格好が悪く、汎用性もない関数しか書けません
templateを使って、Genericな書き方を教えてください
int SearchEmptyContainer()
{
 if( vec1.empty() )
  return 1;
 if( vec2.empty() )
  return 2;
 if( vec3.empty() )
  return 3;
 if( vec4.empty() )
  return 4;
 if( vec5.empty() )
  return 5;
 return -1;
}
803デフォルトの名無しさん:2008/01/13(日) 17:50:41
>>802
vec1, vec2, vec3を更にvectorに放り込んじゃいかんの?
804デフォルトの名無しさん:2008/01/13(日) 17:51:18
>>792

|       |
 \_因_/
    □
    □
805デフォルトの名無しさん:2008/01/13(日) 18:01:09
>>803
>>802です、thxです
その方法でも、全然問題ありませんが、templateというか、
ちょっと複雑になると、特殊化ちか、ファンクタが書けないので教えてもらえませんか
806538:2008/01/13(日) 18:21:54
亀すみません。
>>542さんのとおりやったのですがうまくいきません。
X = 7.951602932829518799451307
N = 4
EPS = 0.000000041451814407547454
実行するとこうなります。
あと、できれば初心者が書くようなやつでお願いします。
807デフォルトの名無しさん:2008/01/13(日) 18:39:43
>>804
ちょっww
808デフォルトの名無しさん:2008/01/13(日) 19:07:34
>>805
言わんとしてる事がよく分からんが、こんなのか?

#include <iostream>
#include <vector>

using namespace std;

template <typename Container>
int GetEmpty(const vector<Container> & rVct) {
 typename vector<Container>::const_iterator it = find_if(
  rVct.begin(),
  rVct.end(),
  mem_fun_ref(&Container::empty)
 );
 return (it == rVct.end()) ? -1 : distance(rVct.begin(), it)+1;
}

int main()
{
 vector< vector<int> > vct(4, vector<int>(1));
 vct[2].clear();

 cout << GetEmpty(vct) << endl;
}
809デフォルトの名無しさん:2008/01/13(日) 19:11:52
ありゃ、インデント効いてない…。
ちなみに>>808の実行結果は3ね。
810538:2008/01/13(日) 19:13:37
すみません自己解決しました
811802:2008/01/13(日) 19:42:45
>>809
thxです、教えてもらったコードを、そのままコンパイルすると、
思いっきりエラーが出るんですが・・・・
(8) : error C3861: 'find_if': 識別子が見つかりませんでした
(21) : コンパイルされたクラスの テンプレート のインスタンス化 'int GetEmpty<std::vector<_Ty>>(const std::vector<std::vector<_Ty>> &)' の参照を確認してください
with
[
_Ty=int
]
(11) : error C3861: 'mem_fun_ref': 識別子が見つかりませんでした
(13) : warning C4244: 'return' : '__w64 int' から 'int' への変換です。データが失われる可能性があります。
エラー 2、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
812802:2008/01/13(日) 20:08:15
>>809
#include <functional>
#include <algorithm>
を追加したら、コンパイルが通りました
813デフォルトの名無しさん:2008/01/13(日) 20:16:59
ああ
814デフォルトの名無しさん:2008/01/13(日) 20:17:24
815802:2008/01/13(日) 20:23:35
使い方なんですが
vector< vector<int> > vct(4, vector<int>(1));
として定義して
GetEmpty(vct)で関数を読んでますけど
例えば、既に出来合いのint型のvectorコンテナがこのようにある場合
vector<int> foo;
vector<int> hoge;
vector<int> hage;
のコンテナをGetEmpty(vct)に引き渡す場合、どのように呼んだらいいでしょうか
お願いします。

816デフォルトの名無しさん:2008/01/13(日) 20:45:58
>>815
vct.push_back(foo);
vct.push_back(hoge);
vct.push_back(hage);
817802:2008/01/13(日) 20:53:38
>>816thx
vector<int> foo;
vector<int> hoge;
vector<int> hage;
は既に定義済みで、値は入っていたり、いなかったり、としてその場合
int main
{
vector< vector<double> > vct;
vct.push_back(foo);
vct.push_back(hoge);
vct.push_back(hage);
cout << GetEmpty(vct) << endl;
return 0;
}
これでできました
thx
818デフォルトの名無しさん:2008/01/13(日) 21:14:05
>>775
while(1)
{
*s=*t;
if(*t=='\0') break;
++s;
++t;
}
819 ◆Mvt5U7iySM :2008/01/13(日) 21:27:41
[1] 授業単元:
[2] 問題文:http://133.5.18.167/rinkou/program/gauss.pdf LU分解を用いた連立一次方程式の課題
  作ってみたプログラムのソース:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5756.txt
  使うdata.txt:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5757.txt
         :http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5758.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] Microsoft Visual C++ 2008 Express Edition
 [3.3] 言語: C++
[4] 期限: 無期限
[5] その他の制限:
5758.txtだときちんと結果がですのですが、
5757.txtを試すと実行結果が x0 =    1.#INF0 となります。
if(a[i][i] == 0){ double max = a[i][i];/* 最大値を求める*/ 〜 b[i] = e;} の部分が
間違っているようなのですが、どう間違っているかがわかりません。よろしくお願いします。
820デフォルトの名無しさん:2008/01/13(日) 21:56:22
今全部みたけど、いろんな大学からきてるんだね。
821デフォルトの名無しさん:2008/01/13(日) 22:02:30
>>819
> if(a[i][i] == 0){ double max = a[i][i];/* 最大値を求める*/ 〜 b[i] = e;} の部分が
> 間違っているようなのですが

ちょびっと見ただけだけど、fabs忘れてるとか?
double max = fabs(a[i][i]);/* 最大値を求める*/
822デフォルトの名無しさん:2008/01/13(日) 22:06:32
>>783,785-786,818
寝る直前に書いたやつに突っ込むなよ ゚・(ノД`)
ちなみに9時に起こされました
823デフォルトの名無しさん:2008/01/13(日) 22:18:16
>>820
でも、やっぱり超上位大はいないんだよね。
最高でも横国。
824デフォルトの名無しさん:2008/01/13(日) 22:26:22
よろしくお願いします。

[1] 授業単元:
[2] 問題文(含コード&リンク):二つの複素数Z1,Z2を読み込んで、それぞれの絶対値、及びZ1とZ2の和、差、積、商を求めて出力するプログラムをクラスを用いて作成せよ。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
[4] 期限: 2008年1月18日
[5] その他の制限
825デフォルトの名無しさん:2008/01/13(日) 22:26:49
if(a[i][i] == 0)がそもそもってのはとりあえず置いといて
> for(j = i++; j < M; j++){
for(j = i+1; j < M; j++){
826 ◆Mvt5U7iySM :2008/01/13(日) 22:32:06
>>821さん、>>825さんありがとうございます。解決しました!
827デフォルトの名無しさん:2008/01/13(日) 22:53:54
[1] 授業単元:
[2] 問題文:第1引数で指定したディレクトリのファイル一覧をファイルサイズと共に表示するプログラムを作れ。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年1月15日
[5] その他の制限:

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>

main(int argc,char **argv){
DIR *dp;
struct dirent *dirp;
if((dp = opendir(argv[1]))==NULL){
perror("opendir");
exit(0);
}
while((dirp = readdir(dp)) != NULL){
printf("%s\n",dirp->d_name);
}
closedir(dp);
}

ファイルの一覧を表示することは上のプログラムでできたのですが、サイズの表示法が分かりません。
どうかよろしくお願いします。
828デフォルトの名無しさん:2008/01/13(日) 23:04:35
829デフォルトの名無しさん:2008/01/13(日) 23:29:35
>>827
stat使わなきゃだめかな?
それとも他に何かあるんだろうか。
830デフォルトの名無しさん:2008/01/13(日) 23:29:46
>>778 サンキュ

【時間切れ】 (1/13)
>448

【未解決問題】
>>744 1/14 24:00
>>741 1/14 >>795-796 再質問

>>514 1/15
>>827 1/15
>>576 1/17日中
>>824 1/18
>229 1/31
>343 不明
831デフォルトの名無しさん:2008/01/13(日) 23:45:51
>>827 UNIXさっぱり判らん
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>

int main(int argc, char *argv[])
{
  DIR *dp;
  struct dirent *dirp;
  struct stat st;

  if((dp = opendir(argv[1])) == NULL){
    perror("opendir");
    exit(EXIT_FAILURE);
  }

  while((dirp = readdir(dp)) != NULL){
    printf("%s",dirp->d_name);
    if(stat(dirp->d_name, &st) >= 0)
      printf("\t%ldbyte", st.st_size);
    printf("\n");
  }
  closedir(dp);

  return EXIT_SUCCESS;
}
832デフォルトの名無しさん:2008/01/13(日) 23:46:46
>>830
ホント助かる。
ありがと。
833827:2008/01/13(日) 23:57:07
>>831
それでできました!ありがとうございます!
構造体statというのを知らなかったので勉強してきます。
834デフォルトの名無しさん:2008/01/14(月) 00:12:54
>>827

while ((dirp = readdir(dp)) != NULL) {
    struct stat st;
    char path[256];

    snprintf(path, sizeof(path), "%s/%s", argv[1], dirp->d_name);
    if (stat(path, &st)) {
        perror("stat");
        return 1;
    }
    printf("%s\t%ld\n",dirp->d_name, st.st_size);
}
835デフォルトの名無しさん:2008/01/14(月) 00:17:42
つまらない質問かもしれませんが、配列の添え字の変数の型がdouble
だとgccのコンパイルが通らないんですがこれは仕様ですか?
836デフォルトの名無しさん:2008/01/14(月) 00:19:49
画像の出力のプログラミングなんですが。
#define WIDTH 600
#define HEIGHT 400

中略

for(i=0; i<HEIGHT; i++){
for(j=0; j<WIDTH; j++){
image[i][j] =(short int)(sin(j/50.0)*10000+10000);
上記で画像を作成してあります。そして指定した部分だけを出力するプログラムを作りたいです。
自分で簡単に作ったのは
if(i < WIDTH /2)
なんですがこれだとただ左半分しか出力されなくもっと細かく指定して出力したいんですが・・
例えば、WIDTH200〜300番地、HEIGHT300〜400 ←この部分だけを出力するような
誰かお願いします。
837デフォルトの名無しさん:2008/01/14(月) 00:20:37
仕様です、お勧めはしないが(int)でキャストすりゃ通ることは通る
が、doubleを添え字に使うようなバカは普通しない
838デフォルトの名無しさん:2008/01/14(月) 00:22:25
>>837
dです
839831:2008/01/14(月) 00:23:18
>>834じゃないとサイズがおかしいな……
840デフォルトの名無しさん:2008/01/14(月) 00:31:47
>>836
今一どうしたいのかわかんないけど
矩形を転送するなら開始位置とサイズを指定するよ、こんな風に

void blt(int dx, int dy, int sx, int sy, int sw, int sh)
dx, dy = 転送先の位置
sx, sy = 転送元の開始位置
sw, sh = 転送元のサイズ
841デフォルトの名無しさん:2008/01/14(月) 00:35:25
マージャンやってる人いる??
842デフォルトの名無しさん:2008/01/14(月) 00:37:40
たぶん居ないんじゃないかと。
843デフォルトの名無しさん:2008/01/14(月) 00:39:29
麻雀??
844デフォルトの名無しさん:2008/01/14(月) 00:39:40
>>841に期待
845836:2008/01/14(月) 00:41:12
>>840
その方法だと別の関数使いますか?
したいことは・・縦600×横400の画像があって、この画像のうち、縦200〜300の間の部分と横200〜300の間の部分だけを出力するような?やつです
文字だと説明しづらいですね;
if(i < 400<=200){
if(j < 300<=200){
これだと問題ありますよね?


846デフォルトの名無しさん:2008/01/14(月) 00:43:31
麻雀ってどの課題??
847デフォルトの名無しさん:2008/01/14(月) 00:51:34
>>845
とりあえず>>1のテンプレ読んだ方がいいと思うが、誰かに怒られそうだし

#define WIDTH 600
#define HEIGHT 400
image[i][j] =(short int)(sin(j/50.0)*10000+10000);

で指定された領域を転送したいのなら

void blt(int dx, int dy, int sx, int sy, int sw, int sh)
{
  for(int y=0; y<sh; y++){
    memcpy(&dest_image[dy+y][dx], &image[sy+y][sx], sw);
  }
}

dest_imageは転送先ね、こんな感じになると思う。後、

   if(i < 400<=200){

これコンパイル通ると思うけど、絶対意図した動きにならんから…
848デフォルトの名無しさん:2008/01/14(月) 00:57:24
>>845
コラー!!
849デフォルトの名無しさん:2008/01/14(月) 00:58:27
850デフォルトの名無しさん:2008/01/14(月) 00:59:21
[1] 授業単元:C言語のシステムコール
[2] 問題文: ln -s file1 file2と同じ動作をするコマンドslinkをつくりなさい。
[3] 環境
 [3.1] OS: Windows(Cygwin)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年1月14日中
[5] その他の制限:

C言語でのシンボリックリンクのつくり方が全くわかりません。
シンボリックリンクの定義は理解しているのですが・・・。
かなり丸投げな質問ですが、よろしくお願いします。
851デフォルトの名無しさん:2008/01/14(月) 01:00:19
>>846
自分で探そう。
852514:2008/01/14(月) 01:00:55
麻雀の者です。
まず、提出日が1/18であったことを訂正し、お詫び申し上げます。
あと、配牌をランダムにしてしまうと実質天和並みの確率になってしまうので
聴牌になるまでツモり続けるとか、1回だけ不要牌交換できるとか、
その辺の実装は皆さんにお任せします。
853836:2008/01/14(月) 01:01:39
847>>ありがとうございます。それもやってみます
ちなみに出力する部分を数値で指定とかはできませんか?
854デフォルトの名無しさん:2008/01/14(月) 01:04:30
>>848
ワロタww


855デフォルトの名無しさん:2008/01/14(月) 01:05:00
>>853
コラー!! とにかく >>1 のテンプレ嫁
小出しにすんな、後質問の意味もわからん
856デフォルトの名無しさん:2008/01/14(月) 01:08:04
>>850

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    if (argc < 3) {
        fprintf(stderr, "%s <srcpath> <dstpath>\n", argv[0]);
        return 1;
    }

    if (symlink(argv[1], argv[2]) < 0) {
        perror("symlink");
        return 1;
    }

    return 0;
}
857デフォルトの名無しさん:2008/01/14(月) 01:11:07
麻雀ってそういうことか。
うん。これはめんどくさいし、役しらないから無理ですね。
858デフォルトの名無しさん:2008/01/14(月) 01:15:37
>>857
コラー!!
859デフォルトの名無しさん:2008/01/14(月) 01:19:11
このスレを見ている人はこんなスレも見ています。(ver 0.20)
任天堂がゲオに対してスマブラXの出荷数を絞る [ハード・業界]
【ドラマ】「ハチミツとクローバー」低視聴率スタート、理由は原作破壊? [芸スポ速報+]
ガニ股打法のいぶし銀@埼玉西武'08-2 [プロ野球]
【野球】埼玉西武、「デーブ式脳トレ」でV奪回へ [芸スポ速報+]
任天堂就職スレpart14 [
860デフォルトの名無しさん:2008/01/14(月) 01:23:19
麻雀プログラムは
麻雀しってて
めんどくさがりじゃなくて
時間に暇がある人
しかできないでしょ。
861デフォルトの名無しさん:2008/01/14(月) 01:24:37
>時間に暇がある人
この条件はここに来てる時点で満たしていると思う。
862デフォルトの名無しさん:2008/01/14(月) 01:34:32
>>859
回答に回ってる人は殆ど専ブラ使ってる気がす
863デフォルトの名無しさん:2008/01/14(月) 01:42:11
線ブラ ハァハァ
864デフォルトの名無しさん:2008/01/14(月) 01:43:58
みなみけハァハァ
865デフォルトの名無しさん:2008/01/14(月) 01:48:10
アニヲタまでいるのですね。
866514:2008/01/14(月) 01:50:17
僕の考えはこうです。

@萬子、筒子、索子、字牌の順に、例えば0〜8、10〜18、20〜28、29〜35のようにナンバリングします。
A各牌が何個あるかを配列変数にカウントアップします。
B特殊な形式である、国士と七対子かを判定してしまいます。
C上記に該当しなかった場合、まず順子を優先して判定してしまいます。
D残りの牌で刻子および対子(雀頭)を判定し、一度点数計算しておきます。
Eもし順子が3組あって、かつ3つの順子が同じ牌であった場合
 刻子に直したほうが点が高い可能性もあるので、点を比較し、低かったら順子に戻します。

これでいけますかね?
もし無理そうならテンパイかどうかだけでもいいです。
ちなみに僕はすでにテンパってます(笑
867デフォルトの名無しさん:2008/01/14(月) 01:53:29
HAHAHA!!
868デフォルトの名無しさん:2008/01/14(月) 01:56:00
これがアメリカンジョークってやつか。
869デフォルトの名無しさん:2008/01/14(月) 02:09:47
(笑
870デフォルトの名無しさん:2008/01/14(月) 03:51:14
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5760.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:1/15 正午まで
[5] その他の制限:実行例はあくまでも一例なので、同様の処理を行えるのならばコマンドの出力内容は変更しても構いません
探索には深さ、幅優先探索のどちらを用いても構わないとの事です
可能なら、関数の処理内容等にコメントを付けて頂けると嬉しいです

実行例の検索の部分 下の「大阪府 大阪市 北区」は「京都府 京都市 北区」の間違いでした
871 ◆GmgU93SCyE :2008/01/14(月) 05:22:56
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5764.txt
[3] 環境
 [3.1]xp
 [3.2] コンパイラ名 gcc
 [3.3] 言語:C
[4] 期限:2008年01月15日pm:5まで
[5] その他の制限:いかにも初心者っぽい感じでお願いします。標準ライブラリは習いました。
誰か救いの手をお願いします。
872デフォルトの名無しさん:2008/01/14(月) 06:17:20
>>871
ポインタ使っていいかどうかも書いてくれればなおよい。
aceg...グループとbdgh...グループの判定に論理演算使ってるけど、もし気に入らなければ
1つめの条件式を str[count]== 'a' || str[count]=='c' || ... 、2つめの条件式を str[count]=='b' || str[count]=='d' || ...とすればよい。
#include <stdio.h>
#include <ctype.h>
void EncryptAndDecrypt(char str[])
{
int count=0;
while(str[count]!='\0')
{
if(isalpha(str[count]))
{
if(str[count]&(0x01))
str[count]++;
else
str[count]--;
}
count++;
}
}
int main(void)
{
char test[100];
gets(test);
printf("暗号化前:%s\n",test);
EncryptAndDecrypt(test);
printf("暗号化後:%s\n",test);
EncryptAndDecrypt(test);
printf("複号化後:%s\n",test);
return 0;
}
873デフォルトの名無しさん:2008/01/14(月) 06:22:30
>>866
あがったときのロン牌ツモ牌が
874デフォルトの名無しさん:2008/01/14(月) 10:19:24
>>866
>ちなみに僕はすでにテンパってます(笑
それは報告しなくていいです
875デフォルトの名無しさん:2008/01/14(月) 10:32:12
>>866
>ちなみに僕はすでにテンパってます(笑
いりません。
876デフォルトの名無しさん:2008/01/14(月) 10:35:06
>>830
877デフォルトの名無しさん:2008/01/14(月) 10:38:40
麻雀の課題は大学ででたの??
878デフォルトの名無しさん:2008/01/14(月) 10:42:33
そんなわけないでしょ。
麻雀知らない人だっていんじゃん。
879デフォルトの名無しさん:2008/01/14(月) 10:57:10
だったら課題のテーマ変えたほいうがいいんじゃない?
どうせだれもやらないでしょ。
面倒くさすぎて。
880デフォルトの名無しさん:2008/01/14(月) 11:21:39
>>866
> ちなみに僕はすでにテンパってます(笑
じゃ、通しで。
881デフォルトの名無しさん:2008/01/14(月) 11:56:30
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):200×200の画像を作り、任意に指定した範囲を切り出せ。for文とif文を使用せよ
[3] 環境
 [3.1] OS: mac
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 1月15日
[5] その他の制限: やさしいC言語程度は習いました
よろしくお願いします
882デフォルトの名無しさん:2008/01/14(月) 12:33:25
>>568>>569のはしるプログラムお願いします
883 ◆P2TN8xagh2 :2008/01/14(月) 12:42:52
>>792
ありがとうございます
全くの無知なんでVC6への移行のやり方がさっぱりわかりませんが
四苦八苦しながらがんばりたいとおもいます
884デフォルトの名無しさん:2008/01/14(月) 12:43:01
>>793
エラーがでるのでもう一回お願いします。
885デフォルトの名無しさん:2008/01/14(月) 12:52:21
>>880
山田君。座布団1枚あげてあげて。
886デフォルトの名無しさん:2008/01/14(月) 12:52:55
【ドラマ】「ハチミツとクローバー」低視聴率スタート、理由は原作破壊? [芸スポ速報+]
【野球】埼玉西武、「デーブ式脳トレ」でV奪回へ [芸スポ速報+]
任天堂就職スレpart14 [就職]
トヨタグループについて語るスレ5 [就職]
◆◆自動車部品業界 その20◆◆ [就職]
887デフォルトの名無しさん:2008/01/14(月) 12:53:33
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【ドラマ】「ハチミツとクローバー」低視聴率スタート、理由は原作破壊? [芸スポ速報+]
【野球】埼玉西武、「デーブ式脳トレ」でV奪回へ [芸スポ速報+]
任天堂就職スレpart14 [就職]
トヨタグループについて語るスレ5 [就職]
◆◆自動車部品業界 その20◆◆ [就職]
888デフォルトの名無しさん:2008/01/14(月) 13:18:33
>>884
>>794ででないじゃん。どんなのでるの
889デフォルトの名無しさん:2008/01/14(月) 14:03:01
たとえば「r_fp」のファイルの最後の5行を、出力ファイル「w_fp」に書き出す
ってどうやれば良いですか?
890デフォルトの名無しさん:2008/01/14(月) 14:04:10
891デフォルトの名無しさん:2008/01/14(月) 14:14:08
>>889
コラー!!
892343:2008/01/14(月) 14:34:33
[1] 授業単元: C言語応用
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5765.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C言語
[4] 期限:
[5] その他:よろしくおねがいします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5766.txt
自分で強引に作ってみました。出来ればこの原型をなるべく崩さすに
最適な処理のための修正と指摘、細かい関数分けなどをよろしくお願いします。
よろしくお願いします。
893デフォルトの名無しさん:2008/01/14(月) 14:41:19
>>889
system("tail -5 r_fp > w_fp")
894 ◆GmgU93SCyE :2008/01/14(月) 14:43:05
>>872
ありがとうございます!
すみませんポインタは使いません。

10行入力した場合のプログラム終了は
どうなるのですか??
895デフォルトの名無しさん:2008/01/14(月) 14:51:03
WInXP Visual C++ 2005 pro で
896デフォルトの名無しさん:2008/01/14(月) 14:54:58
すいません、visual C++ 2005でIsNaNを使用するための名前空間のインクルードの方法を教えてください。

現在、下記のようなエラーが出ます。
error C3861: 'isNaN': 識別子が見つかりませんでした

http://msdn2.microsoft.com/ja-jp/library/system.double.isnan.aspx
を参考にして、
ソースコードの一番上に
using namespace System
と付け加えたのですが…だめでした。
897デフォルトの名無しさん:2008/01/14(月) 14:57:22
>>896
C++なのかC++/CLIなのかはっきりしようぜ
そして質問はスレ違い。宿題であれば>>1を読んで書き直し。
898デフォルトの名無しさん:2008/01/14(月) 14:59:00
多分そのうちtypoでコーラになるぞ
899デフォルトの名無しさん:2008/01/14(月) 15:06:19
コーラ!!
900デフォルトの名無しさん:2008/01/14(月) 15:19:37
900
901343:2008/01/14(月) 15:23:32
あっ期限は今日中までなんです・・・。
めんどくさいと思いますが、助けてください。
よろしくお願いします。
902デフォルトの名無しさん:2008/01/14(月) 15:25:11
>>901
残念ながらすでにサーバー上から消えてるw
903デフォルトの名無しさん:2008/01/14(月) 15:27:21
自分で強引に作ったならそれでいいじゃん
904デフォルトの名無しさん:2008/01/14(月) 15:33:48
きっと先生もわかってくれるよ。
905デフォルトの名無しさん:2008/01/14(月) 15:34:35
>>896
コラー!!
906デフォルトの名無しさん:2008/01/14(月) 15:34:49
先生だって、人間だしな
907デフォルトの名無しさん:2008/01/14(月) 15:46:44
俺が先生なら許さん。
908デフォルトの名無しさん:2008/01/14(月) 15:47:46
それこそ『コラー!!』だよね。
909デフォルトの名無しさん:2008/01/14(月) 15:49:12
>>881
> [3.1] OS: mac

これだけで敷居が激高になってるな、つか越えられない壁
910デフォルトの名無しさん:2008/01/14(月) 15:50:55
コラーレベル

Lv -1 : ほめる
宿題の題意まで理解して解答してくる。

Lv 0: まったく怒らない
ちゃんと宿題をしてくる

Lv 1: ちょっとおこる
コンパイラは通るけど、まともに動かない。
あるいは仕様を間違えている。
→ やり直す時間をくれたり。

Lv 2: 結構おこる
コンパイラ通さずに「うごきませんでした・・・」
→ とっとと直してこいという。

Lv 3: 相当おこる
何も提出物なしに「できませんでした・・・」
→ 単位はやらん

Lv MAX: キレる
クラスの大半がコピー。
911デフォルトの名無しさん:2008/01/14(月) 15:54:54
>>909 >>881
そうだな。

>>881 画像の形式はpnmでいいのかな?
PBMとかPGMとか。
912デフォルトの名無しさん:2008/01/14(月) 15:55:16
>Lv MAX: キレる
ありえるww
913デフォルトの名無しさん:2008/01/14(月) 15:57:46
>>912
ついでに、他人の宿題をしてやるときは、自分の解答とはまったく別に作るのが常識。
内容さえ理解すればコーディングスタイルとアルゴリズム変えて、5人分くらいすぐにできる。
914343:2008/01/14(月) 16:03:16
そんなこと言わずにどうかお願いします><
915デフォルトの名無しさん:2008/01/14(月) 16:04:01
>>914
>>343のファイルがもうないんだけど?
916343:2008/01/14(月) 16:09:28
>>892にもう一回書きました。
よろしくお願いします。
917デフォルトの名無しさん:2008/01/14(月) 16:13:48
>>916
最終五行ってできてなくない?
918343:2008/01/14(月) 16:18:15
>>917
あっそうです
そこだけ出来てないです・・・
919デフォルトの名無しさん:2008/01/14(月) 16:40:35
>>918
あーー、これまるっきり作り直しだな・・・
920デフォルトの名無しさん:2008/01/14(月) 16:45:36
その反応はひどい

@ファイルの内容全てをバッファに確保して、最後の5行だけ出力
Aバッファを5行ずつ確保して、ファイルストリームが最後まで行ったらバッファを出力
B先に行数をカウントして、最後の5行だけバッファに確保

Bが楽かな、Aは叩かれそう
921デフォルトの名無しさん:2008/01/14(月) 16:46:09
A5行を逐一更新していくだな。
922デフォルトの名無しさん:2008/01/14(月) 16:51:06
ここは冬休み中何もしなかった大学生が顔青ざめながら必死に書き込みしてる様が
容易に想像できるなw
923デフォルトの名無しさん:2008/01/14(月) 17:08:58
まぁ、そんなに青ざめずにドライブでもしてぱーっと遊ぼうぜ。
924デフォルトの名無しさん:2008/01/14(月) 17:12:45
[1] 授業単元: プログラミング2
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5768.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 1/15
[5] その他:よろしくおねがいします。
925デフォルトの名無しさん:2008/01/14(月) 17:32:07
>>918
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5769.txt

めんどくさくなったんで、ここまで。
926デフォルトの名無しさん:2008/01/14(月) 17:43:20
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

Horner法を用いたNewton法で次の方程式の解を求めよ
f(x) = x^5 - 7*x^4 + 16*x^3 - 8*x^2 -16*x + 16 = 0

[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年1月14日24:00まで
[5] その他の制限:

よろしくお願いします。
927デフォルトの名無しさん:2008/01/14(月) 18:30:27
大学の冬休みって今日までなんだ。
7までかと思ってた。
928デフォルトの名無しさん:2008/01/14(月) 18:35:08
大学によるでしょ
929デフォルトの名無しさん:2008/01/14(月) 18:36:40
最近ニュートン法の課題多いね。
930デフォルトの名無しさん:2008/01/14(月) 18:39:08
情報系ならどこでもやるからね>ニュートン
931デフォルトの名無しさん:2008/01/14(月) 18:45:36
ハハハ。
Fランク大の僕は一度もみたことないけどね。
932デフォルトの名無しさん:2008/01/14(月) 18:48:58
それは報告しなくていいです
933デフォルトの名無しさん:2008/01/14(月) 19:01:01
サーセン。
934デフォルトの名無しさん:2008/01/14(月) 19:07:08
[1] 授業単元:CPサイエンス
[2] 問題文(含コード&リンク):
文字列照合についてです。
boyersearch(ボイヤー・ムーアのアルゴリズム)に対して、テキストは演習3で採用
したものと同じものを入力すると家庭する。その場合、長さ6のパターンの中で、比較回数が
最小となるものはどのようなパターンであろうか?そのパターンを求めよ。
そして、その場合に実行結果から求められる比較回数を書け。そして、
比較回数が最少となる理由を述べよ。
(パターンがテキスト内で出現しない場合について考えることとする。)

演習3のテキストは、オンラインヘルプcpの出力です。
man -c cp | col -b |
[3] 環境
 [3.1] OS: Mac
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: 2008/01/15の早朝(7時くらい)
[5] その他の制限:
935デフォルトの名無しさん:2008/01/14(月) 19:44:41
ニュートンって基礎だったんだ。
936デフォルトの名無しさん:2008/01/14(月) 19:47:35
『情報系』ならね
937デフォルトの名無しさん:2008/01/14(月) 20:26:20
>>925
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5770.txt

ここの部分があまりよくわからないんですが
strcpyを使う理由とか、あと%5とかの計算方法についても教えてください
いちいちすいませんよろしくお願いします
938デフォルトの名無しさん:2008/01/14(月) 20:39:53
>>937
%は余剰。5 % 2 = 2 あまり 1ね。

最初は
[0]
[1]
[2]
[3]
[4]

1個目は[0]にコピー。
2個目は[1]にコピー。
939デフォルトの名無しさん:2008/01/14(月) 20:41:36
>>938
書きかけで送信したんで

1個目は[0]にコピー。
2個目は[1]にコピー。
3個目は[2]にコピー。
4個目は[3]にコピー。
5個目は[4]にコピー。
で、6個目は0にコピーしたいんで余剰を使う
5 % 5 = 1 あまり 0 で0になる

ところで、5個以下のときは全部だすんで最初から5こ暗い出力してる

ってことで。
940デフォルトの名無しさん:2008/01/14(月) 20:47:46
そろそろ次スレ
941デフォルトの名無しさん:2008/01/14(月) 20:47:49
#include <stdlib.h>
でRAND_MAXとうつとシンボルが未定義ですとなります。
どぅすれば解消されますか?
942デフォルトの名無しさん:2008/01/14(月) 20:50:43
>>941
回線切る
943デフォルトの名無しさん:2008/01/14(月) 20:52:30
コンパイラも書いてないからエスパー待ちだな
944デフォルトの名無しさん:2008/01/14(月) 20:58:09
#ifndef RAND_MAX
#define RAND_MAX 0x7FFF
#endif
945デフォルトの名無しさん:2008/01/14(月) 21:01:15
>>942>>943すいませんでした
>>944ありがとうございます
946デフォルトの名無しさん:2008/01/14(月) 21:01:57
>>945
いや、その解決策正しくないからwww
947944:2008/01/14(月) 21:11:56
RAND_MAXの定義例は0xFFFだってじっちゃんがいってた。
どのコンパイラか知りたいな。
948デフォルトの名無しさん:2008/01/14(月) 21:12:36
冬休みはやっぱり課題すくなかったね。
終盤怒涛(みすず)だったけど。
949デフォルトの名無しさん:2008/01/14(月) 21:16:51
>>939
何回も、理解が遅くてすいません
問題の最後の5行という部分はこの処理ではどの部分にあたりますか?
950デフォルトの名無しさん:2008/01/14(月) 21:16:55
>>946そうなんですか?
study cです
951デフォルトの名無しさん:2008/01/14(月) 21:24:14
使ったことないし、手元にないな……。

開発者? のページみると、32767.0で割ってるな。
0x7FFFでいいんじゃない?(適当)
952デフォルトの名無しさん:2008/01/14(月) 21:48:37
1] 授業単元:プログラミング
[2] 問題文:セットした時刻になったらグラフィックを表示し音楽を鳴らすプログラムを作る。
[3] 環境
 [3.1] Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 1月15日
[5] その他の制限:グラフィックはchinouglなどを使いグラフィック画面に好きな絵を表示する。
 音楽は、winmm.libをリンクすることによって、PlaySound関数やmciSendString関数を使いwavファイルやmp3ファイルを演奏することができる。

困っています。どうぞよろしくお願いします
953デフォルトの名無しさん:2008/01/14(月) 22:12:02
結局麻雀はノータッチっと。
954>>744 ◆wF.16HeCFk :2008/01/14(月) 22:16:50
どなたかやっていただけないでしょうか・・・
一時までに提出なのです(´;ω;`)
955デフォルトの名無しさん:2008/01/14(月) 22:20:24
テキストの書式は?
956デフォルトの名無しさん:2008/01/14(月) 22:21:08
質問に答えずにやってくれといわれてもね
957デフォルトの名無しさん:2008/01/14(月) 22:21:34
[1] 授業単元:プログラミング
[2] 問題文:物理プログラミングをせよ
       ウィンドウズアプリケーションで作成せよ

   物:          正四角形(2次元)と地面を作る
   地面の動き:    方後キーの←→でその方向に傾く
   正四角形の動き: 地面に落ちたり
               地面が傾いたらすべるようにする

   なおDxLibを使うこと
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c
[4] 期限:2008年1月5日
[5] その他の制限:期日しかいのでよろしくおねがいします

どちらかというとゲームプログラミングに近い気がしたので
ここで質問するべきか迷いましたが皆さんなら作ってくださるだろうと思い
ここに書き込みさせてもらいました
958デフォルトの名無しさん:2008/01/14(月) 22:28:54
冬休みの宿題ラッシュか
959デフォルトの名無しさん:2008/01/14(月) 22:29:20
期日過ぎてるし。
960デフォルトの名無しさん:2008/01/14(月) 22:30:25
wwwww
961 ◆GmgU93SCyE :2008/01/14(月) 22:33:00
すいません。
どなたか>>871に救いの手をお願いします。。。
962957:2008/01/14(月) 22:33:07
>>959すみませんタイプミスです
15日の誤りですでした
963デフォルトの名無しさん:2008/01/14(月) 22:33:21
繁盛してるなw
964デフォルトの名無しさん:2008/01/14(月) 22:39:52
みんな。
もうここは終わる。
次スレをたててくれ。」
965デフォルトの名無しさん:2008/01/14(月) 22:42:21
自分でたてろww
966デフォルトの名無しさん:2008/01/14(月) 22:53:11
>>961
ホレ。エラー処理は知らん。2バイト文字も知らん。
コメント入れてたんだけど改行多すぎ言われた・・・orz
#include <stdio.h>
#include <ctype.h>
char swap_char(char src)
{
if(isalpha(src)){
if(src%2 == 1){
return src + 1;
}
else{
return src - 1;
}
}
return src;
}
int main()
{
char line[83];
int i,j;
for(i = 0;i < 10;i++){
fgets(line, 83, stdin);
for(j = 0;line[j] != '\0';j++){
putchar(swap_char(line[j]));
}
}
return 0;
}
967デフォルトの名無しさん:2008/01/14(月) 22:56:07
レス書き込んでから思ったんだけど、swap_charってなんだこの訳分からん関数名www
まあいいや。
968デフォルトの名無しさん:2008/01/14(月) 22:57:03
969デフォルトの名無しさん:2008/01/14(月) 22:58:39
おつ!!
970デフォルトの名無しさん:2008/01/14(月) 23:03:40
乙!
971デフォルトの名無しさん:2008/01/14(月) 23:06:26
>>955
txtファイルはこんな感じです
引っ張り出そうとしたら二回フリーズして出すのが遅れました大変申し訳ありません
もう時間が無いので無駄な足掻きかもしれませんがよければよろしくお願いします
ttp://www.uploda.org/uporg1203457.txt.html
972デフォルトの名無しさん:2008/01/14(月) 23:09:53
ume
973デフォルトの名無しさん:2008/01/14(月) 23:11:38
sakura
974デフォルトの名無しさん:2008/01/14(月) 23:17:18
bamboo
975デフォルトの名無しさん:2008/01/14(月) 23:18:17
976デフォルトの名無しさん:2008/01/14(月) 23:27:36
埋め
977デフォルトの名無しさん:2008/01/14(月) 23:28:33
この勢いだと埋まるのに時間がかかりそうだな
まだ解答がもらえてない人はいまのうちにアピールしたら?
978デフォルトの名無しさん:2008/01/14(月) 23:31:54
>>977
良いこといった。
1000までに回答するようがんばるよ。
979デフォルトの名無しさん:2008/01/14(月) 23:55:51
いつものまとめ。 返答がないものは全て解決済みと勝手に判断している。
エラーで動かないなら、どういうエラーかはちゃんと書いて欲しいものだな。

【時間切れ】 (1/14)
>744 >741 >343(>892) >926

【未解決問題】
>>934 1/15 早朝(7時くらい)
>>870 1/15 正午
>>514 1/15
>>881 1/15
>>924 1/15  >>793と別人? >>794
>>952 1/15
>>957 1/15

>576 1/17日中
>824 1/18
>229 1/31
980 ◆GmgU93SCyE :2008/01/15(火) 00:08:20
>>966さんありがとうございます。
でもエラーでは。。。;;
全くわからない自分にとってはキツいです;;
今のうちに回答してもらえるなら>>871
をお願いします!!!
明日期限なのであせってます。。申し訳ないです。。
981デフォルトの名無しさん:2008/01/15(火) 00:14:07
>>881
200x200の画像を表示するだけのプログラム作って晒してみな
ここの連中なら、そのソースがあれば任意部分の切り出しくらい朝飯前で作ってくれると思うぞ
982 ◆dxXqzZbxPY :2008/01/15(火) 00:16:42
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5772.txt
[3] 環境
 [3.1] xp
 [3.2] コンパイラ名 gcc
 [3.3] 言語:C
[4] 期限:1月15日
[5] その他の制限:初心者です。あまりプロっぽくなければいいです。それ以上は望みません。やってくれるだけでありがたいです。
ライブラリは学びました。
983デフォルトの名無しさん:2008/01/15(火) 00:18:37
>>980
>>966を実行してみた上で、何か問題点があるのなら具体的に。
984デフォルトの名無しさん:2008/01/15(火) 00:19:29
>>980
おまwww
あせりすぎ。
ちょっとぐらい動かしてから言ってくれ。
エラー処理ってのは異常な入力したら暴走するかも知れんっつーこった。
TDL 100 years!がSCK 100 zfbqt!になるとこまでは見た。(VCでやったケド)
問題文に文字コードの記述がないってことは、多分半角文字だけで大丈夫だから。
自分のトコで動かしてみてダメだったら、どうダメだったか書け。

とりあえず1時までは起きてるから。
985デフォルトの名無しさん:2008/01/15(火) 00:28:13
【質問テンプレ】
[1] 授業単元:基礎
[2] 問題文(含コード&リンク):符号なし整数A,Bがある。
 0≦A,B≦0xffffffffのとき、A/Bがもっとも円周率に近いものを、A,B共に列挙せよ。
 なお、円周率は math.h で定義されている M_PI を用いること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C
[4] 期限: 1/17
[5] その他の制限: 単位がかかっているのでおねがいします
986 ◆cPUZU5OGFs :2008/01/15(火) 00:30:09
分からないのでお願いします。
プログラミング習い始めて1年が経つ頃の問題です(再履修なので実質2年目…)。

[1] 授業単元:2分探索木
[2] 問題文(含コード&リンク):(http://www.uploda.net/cgi/uploader1/index.php?dlpas_id=0000284278.txt)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限: 提出期限が過ぎてしまったので早めにお願いします
[5] その他の制限:特にないと思います。


2分探索木で登録回数をカウントするプログラムがあるので
それを非再帰版に書き換えるのと実行中のスタックの内容を逐次表示する問題
更に、スタックオーバーフローのエラーを表示する問題です。
自分でも何やってるのか全く分からないのでお願いします…。
987 ◆cPUZU5OGFs :2008/01/15(火) 00:31:01
書き忘れました。
>>986のパスは「c」でお願いします。
988 ◆gDKJL3vNys :2008/01/15(火) 00:56:30
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):マイコンと回路(sw2個とLED4個) 応用回路(モーター回路、A/D変換回路を用いても可)を使って
               オリジナル課題を作成
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:GCC Debeloper Lite
[3.3] 言語:C言語
[4] 期限:1月16日中(17日が提出なので・・・)
[5] その他の制限: 特に無いと思います

ポートの番号はこちらで直しますので空白か適当に設定しておいていただければありがたいです

個人的にswを押した回数(sw1でもsw2でもどちらでもか、どちらか一方からの入力でもかまいません)
でLED1〜4の点灯パターンが変わる みたいなプログラムを作ろうと考えたのですが
可能でしょうか?
またほかにいいプログラムあればアドバイスお願いいたします
989744 ◆wF.16HeCFk :2008/01/15(火) 00:59:30
解答はいただけなかったようですが、ありがとうございました
リアルでの他の課題にも追われていたため、質問への対応が遅くなったりして
迷惑をかけてしまい大変申し訳ない

もし考えていた方がいらしゃったのなら、その方にお礼申し上げます
990デフォルトの名無しさん:2008/01/15(火) 01:04:55
>>988
マイコンうp
991デフォルトの名無しさん:2008/01/15(火) 01:09:24
>>982
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5773.txt

printfの変わりにfwrite使えばいいのかな、一応いけると思うが
992デフォルトの名無しさん:2008/01/15(火) 01:13:32
>>988
H8ならまけせとけ、他のマイコンだったらお手上げ
993デフォルトの名無しさん:2008/01/15(火) 01:21:01
>>982
#include <stdio.h>
#include <stdlib.h>
void printint(int d)
{
char num[12];//数値10桁+符号用+\0用で12個分確保
itoa(d,num,10);
puts(num);
}
main()
{
int d;
printf("数値入力:");
scanf("%d",&d);
printint(d);
}
itoa使うなとは書いてないからこれで。
994デフォルトの名無しさん:2008/01/15(火) 01:24:00
もううめるね。
995デフォルトの名無しさん:2008/01/15(火) 01:24:20
996デフォルトの名無しさん:2008/01/15(火) 01:24:43
997デフォルトの名無しさん:2008/01/15(火) 01:26:16
>>744
風呂入ってて時間切れたの忘れてた。折角だから
昨日作った奴を載せとく。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5774.txt
998デフォルトの名無しさん:2008/01/15(火) 01:36:41
おしっこ漏れそうっ。
999デフォルトの名無しさん:2008/01/15(火) 01:38:53
1000なら麻雀だれもやらない。
1000デフォルトの名無しさん:2008/01/15(火) 01:40:06
>>993
ぬかった、その手があったかw
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。