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

このエントリーをはてなブックマークに追加
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++の宿題片付けます 131代目
http://pc12.2ch.net/test/read.cgi/tech/1255709298/
2デフォルトの名無しさん:2009/11/14(土) 20:54:42
スレが新しくなったのでまた書かせてもらいます。

[1] 授業単元:
アルゴリズムとプログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10082.txt
プログラムに使用するデータファイル↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10071.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
11月17日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません
3デフォルトの名無しさん:2009/11/14(土) 20:55:42
前スレの>>999
ポインタがある時点でJavaよりCのがキツイだろ
C++に至っては苦行だ
4デフォルトの名無しさん:2009/11/14(土) 20:57:40
999 名前:デフォルトの名無しさん[sage] 投稿日:2009/11/14(土) 20:53:39
BASICが出来てパソコン大学小学生
Cが出来て中学生
C++が出来て高校生
Javaが出来て大学生
5デフォルトの名無しさん:2009/11/14(土) 21:03:19
ポインタは確かに難しい。中学生で初等幾何や方程式でザセツする
人が多いのと同じ。しかし、ポインタが使えない言語の難しさは
すぐにはわからないだけ
6デフォルトの名無しさん:2009/11/14(土) 21:16:05
でも俺はポインタに引っかかった記憶もオブジェクト指向に引っかかった記憶もない
7デフォルトの名無しさん:2009/11/14(土) 21:27:37
それが普通。
8デフォルトの名無しさん:2009/11/14(土) 21:29:20
というか単にセンスが無いだけ
9デフォルトの名無しさん:2009/11/14(土) 23:06:19
ポインタが使える=低級とかつては言われていたが、今では
初等的と呼ぶほうが良いかも
初等的が簡単というのは嘘。初等的なもののほうが高等なもの
に較べて難しいことが多い。負の数の概念を知らない小学生
が鶴亀算に苦労することでわかる。
じゃ高等的なものが易しいのかと言えばこれも嘘。まったく
別の次元の難しさがあるだけ。
10デフォルトの名無しさん:2009/11/14(土) 23:14:56
プログラム言語における低級の意味を勘違いしてるように見える。
11デフォルトの名無しさん:2009/11/14(土) 23:27:31
>>10
ハードウェアにソフトウェアが相当に組み込まれている現在
古いハードウェアに近い記述が出来ること=低級じゃないだろ?
ハードウェアと切り離されて一人歩きしつつあるのがプログラ
ミング言語
12デフォルトの名無しさん:2009/11/15(日) 00:56:01
そもそもC言語って高級言語だろ
13デフォルトの名無しさん:2009/11/15(日) 01:18:57
今やあらかたのプロセッサのアセンブラすら低級言語じゃないもの
が多い
14デフォルトの名無しさん:2009/11/15(日) 01:30:21
逆に言語に合わせて CPU 作ったらどうか。
CPU の構造をってことね。
15デフォルトの名無しさん:2009/11/15(日) 02:23:44
>>14
既にある
LISPマシンとかJavaネイティブマシンとか
16デフォルトの名無しさん:2009/11/15(日) 02:27:23
CPU に合わせた言語を作る→使いにくいのでそれを利用した
高級言語が出来る→ OSが発達してプログラマに言語派閥が出来るW
→ CPUメーカーも言語に合わせた便宜を計る
→CPUが巨大化してハードとソフトの境界線が曖昧になる
→ソフトウェア技術者が居なくなってOSがハードが主体になる
→衰退
この歴史の繰り返しだろw
17前959:2009/11/15(日) 02:58:51
>>前950
>>前988
printf("1ドル=%fポンド, (float)doll/pond);
printf("1ドル=%fポンド, (float)pond/doll);
の、どっちかしか無いだろ。
18デフォルトの名無しさん:2009/11/15(日) 03:07:51
ドル円のレートとポンド円のレートから、ドルポンドのレートを求めるんじゃないかと思うんだが。
19前959:2009/11/15(日) 03:31:35
ポンドドルは求めないと言ってないから。不要なら削除、
#include <stdio.h>
int main(void) {
  int doll=90, pond=149;

  printf("1米ドルと1英ポンドの値を入力してください > ");
  scanf("%d%d", &doll, &pond);
  printf("1ドル=%d円, 1ポンド=%d円\n", doll, pond);
  printf("1ドル=%fポンド\n", (float)doll/pond );
  printf("1ポンド=%fドル\n", (float)pond/doll );

  return 0;
}
20デフォルトの名無しさん:2009/11/15(日) 03:43:22
問題を正しく書いてほしい
正しい日本語で・・・
21デフォルトの名無しさん:2009/11/15(日) 05:12:11
>>4
その例えに反対する人の考えが異常とは言えないけど
それぞれの言語には長所も短所もあるし、オールマイティー
な言語は無いと考るのは正しいと思う
22デフォルトの名無しさん:2009/11/15(日) 08:30:11
>>14
Intel系とC言語とは、互いに相手に合わせてるけどな。
23デフォルトの名無しさん:2009/11/15(日) 09:22:10
[3] 環境
 [3.1]windows上のvmware 実際はlinux
 [3.2]gcc
 [3.3] c
[4]091116まで
サーバー ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10116.c
クライアント ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10117.c

コンパイルのオプションは-lsocket -lnsl -lresolv -lcurses -lrt
クライアント側がconnectに失敗して通信できなくて困ってる
修正したコードは載せなくていいので悪そうな点を教えてください。書き方が汚い点はご愛嬌でどうかよろしくお願いします
24デフォルトの名無しさん:2009/11/15(日) 12:30:17
早稲○大学理工学部の宿題です
[1] C言語(初心者)
[2] http://www-it.sci.waseda.ac.jp/CPR1/class12/20091026-submit.pdf
  の下の方のページにある大レポート
[3] 環境
 [3.3] 言語:C言語
[4] 期限: 11月16日
[5] その他の制限:数学関数、配列は使用不可、ページに詳細あり

何度やっても上手くいきません。解答お願いします。
25デフォルトの名無しさん:2009/11/15(日) 12:39:10
>何度やっても上手くいきません。
どこまで出来たか>>1のアップローダーに上げてみたら
それに、レポートに2chのURL載せることになるんじゃないの・・・
26デフォルトの名無しさん:2009/11/15(日) 13:05:28
#include <stdio.h>

int main(void)
{
int i, flg = 1;
double pi = 0.0, a = 1.0/2, b = 1.0/3;

for(i=0; i<=100; i++, a/=4, b/=9, flg*=-1) pi += flg * 4 * (a + b) / (2 * i + 1);

printf("%.8f\n", pi);

return 0;
}

パイだけ。
27 ◆fHUDY9dFJs :2009/11/15(日) 13:07:34
>>24 の質問者です
自分が作った物をあげました。設問1のパイを求める所で正しい数値が出らず
先へ進めなくてこまっています。私初心者でなぜ間違っているか分からない状態です。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10119.txt
Nが奇数の時に値が正常にでなくて困っております。
短いコードですがよろしくお願いします。
28デフォルトの名無しさん:2009/11/15(日) 13:11:27
intの割り算で0になってるから
1.0にするとか(double)でキャストするとかしないと
29 ◆fHUDY9dFJs :2009/11/15(日) 13:13:12
>>26
解答ありがとうございます。
しかし、問題のページにあるように"flg"というものはまだ習っていなくて
使ってはいけないことになっています。
そのため問題のページ21以降のヒントに書いてあるやり方でなくてはならないようです
どうぞよろしくお願いします。
30デフォルトの名無しさん:2009/11/15(日) 13:15:41
for(i=0; i<=100; i++, a/=4, b/=9) {
if(i%2) pi -= 4 * (a + b) / (2 * i + 1);
else pi += 4 * (a + b) / (2 * i + 1);
}
31 ◆fHUDY9dFJs :2009/11/15(日) 13:28:04
>>28,30
ありがとうございます
>>28
もう少し詳しくお願いします。

f+=4*(-1/(2*j+1))*(c+d); //fはnが奇数の時の近似値の合計です

ここのどこの箇所でしょうか?
32デフォルトの名無しさん:2009/11/15(日) 13:36:34
-1/(2*j+1)
-1とjはint
33デフォルトの名無しさん:2009/11/15(日) 13:44:24
>型変換に注意(第3回で学習).
これ
34 ◆fHUDY9dFJs :2009/11/15(日) 13:52:08
>>25,26,28,30,32,33

ありがとうございます解決することができました。
35アク禁中につきレス代行中:2009/11/15(日) 18:35:08
>23
echo_server.c:93
初期化されていないport
port = PORT;とかport = atoi(argv[1]);とかやるんじゃないのか

ERRが既にdefineされている
一般的にはif ( foo() == ERR )ではなく、if ( foo() < 0 )が使われる
36デフォルトの名無しさん:2009/11/15(日) 19:50:03
[1] 授業単元: C++
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10045.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語: C++
[4] 期限: 2009/11/15 24時まで

本日の24時までなので、宜しくお願い致します。
37 ◆c///I.TDdo :2009/11/15(日) 20:37:11
[1] 授業単元:Cプログラミング応用
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10121.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2009年11月17日23:59まで]
[5] その他の制限:問題文を書き換えるだけ

お願いします。
38デフォルトの名無しさん:2009/11/15(日) 20:38:39
前スレ969です。
画像フォーマットのサンプル画像をうpしました。
問題の方もメモとして同梱しました。
ご指導よろしくお願いします。

ttp://www.boxloader.net/small/
ファイル名:sb12623.zip
ダウンロードキー:969
39デフォルトの名無しさん:2009/11/15(日) 20:46:25
>>36
#include <iostream>
#include <string>

class Human{
public:
std::string name;
double height, weight;
Human(std::string, double, double);
};

Human::Human(std::string name, double height, double weight){
this->name = name;
this->height = height;
this->weight = weight;
}

int main(){
Human member("田中太郎", 170.5, 68.4);
std::cout<<member.name<<"さんの身長は、"<<member.height<<"cmで、体重は、"<<member.weight<<"kgです。"<<std::endl;
return 0;
}
40デフォルトの名無しさん:2009/11/15(日) 21:13:36
>>37
>printf("%d個の整数を昇順に入力してください。\n", nx);
printf("%d個の整数を降順に入力してください。\n", nx);

>while(x[i]<=x[i-1]);
while(x[i]>=x[i-1]);

>else if(a[pc] < key)
else if(a[pc] > key)
41 ◆c///I.TDdo :2009/11/15(日) 22:09:51
>>40
迅速な対応に感謝します。
ありがとうございました。
42デフォルトの名無しさん:2009/11/15(日) 22:57:19
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
下記の文字列を2次元配列に入力する。
LISP
C++
Ada
次に配列の2列の文字
S+a
を表示する。
[3] 環境
[3.1] OS:Windows XP
[3.3] 言語C++
[4] 期限:明日まで
[5] その他の制限:特にないです。

お願いします
43デフォルトの名無しさん:2009/11/15(日) 23:11:12
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
問題1
整数型の変数x, y, z を用意し,それぞれに1 ,2, 3 を代入せよ.その後,整数型の変数ans に合計を代
入せよ.その値をprintf で表示せよ.
問題2
半径r = 5 の円の演習L,面積S を求めるプログラムを作成せよ.ただし円周率は3.14 とする.
問題3
整数型変数a=255,b=16 としたとき,a+b, a-b, a*b, a/b を求めprintf で表示せよ.適切な形式で結果
が表示されるようにすること.
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2009年11月17日まで]
[5] その他の制限:問題数多いですが、お願いします。
44デフォルトの名無しさん:2009/11/15(日) 23:18:50
45デフォルトの名無しさん:2009/11/15(日) 23:26:32
>>43
問題1
#include <stdio.h>
int main(void)
{
int x, y, z, ans;
x = 1;
y = 2;
z = 3;
ans = x + y + z;
printf("%d", ans);
return 0;
}
問題2
#include <stdio.h>
int main(void)
{
int r = 5;
printf("L=%f S=%f", 2 * r * 3.14, r * r * 3.14);
return 0;
}
問題3
#include <stdio.h>
int main(void)
{
int a = 255, b = 16;
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b);
return 0;
}
46デフォルトの名無しさん:2009/11/16(月) 00:25:32
3元3列の連立方程式の係数を格納し、格納された結果を表示するプログラムを作成せよ。ただし次の2つのパターンでプログラムせよ。
係数を『初期化』を使って配列に入力する
キーボードから入力する

a00x+a01y+a02z=α
a10x+a11y+a12z=β
a20x+a21y+a22z=γ

#include <iostream>
using namespace std;
int main() {

return 0;
}
って感じでお願いできませんか?本当に分からないんです

47デフォルトの名無しさん:2009/11/16(月) 00:27:09
/   //   /  ト--ミ、、_::::::::::`:"'':―┼――――l  //   /
 / //   /|    ト--ミ、、_:::::::::::::`:"'':―┼――――l  /    /
  /   / |   ト--ミ、、_:::::::::::::::`:"'':―┼――――l
`'ー-‐''"   ヽ、_ .,ト--ミ、、_:::::::::::::::::`:"'':―┼――――l    
         / /ミミ三三ミ'ー‐-- 、、_:::::::|:::::::::::::::::::::::j     
 か っ .テ | .{ミミミ三三、     、ー=、`'┴―――fミ',     //
 ァ  て ン. | ミミミミミ三シ  . . . . `―'ノ l ii l (ヲ  lミil
  |  約 .プ  ヽ!ミミミミf'"   _,,.,,_:.:.:.:,.  _j_ .:.:.:.  lミリ    /
  |  束 レ   >!ミミO   。',ィでiンミ、:.:.、__, -,ィも=、',l:l′
  |  し  守  /,ヾミミ'  o ,,゜, ̄`゙`ラ .:. 三 f"´ ̄゜o O  
  |  た ら  |.へ}ミミ     `二ニノ ,、 jl ',` ―''" ,l!   
  |  じ  ず  |二ノミ'   u    ,ィ'"     ト、   ,!
 ッ .ゃ .に   |fソ!'ミ        / `^ヽ,_ノi  " ,'   /
 ! ! な  質   ',{i,ミ'     /  _,,...,_,,..,、l   /.      / 
   い  問   ヽN,   /  ,ィiTTTTTト, ,} ,/  //   /  /
   で  は   ./.   /  ,/⌒'ー'‐'‐'‐',リ l  /.      /   
   す  し   /'、ヽ  .l  {,ゝ、‐r‐'ン-i/ ,/ , イレ、、/     /   
       な  〈 ヽ丶 丶 ヾくZェェェシ' ノ ,i'lヽ、 `ヾー--、_
      い '⌒ヽ´ヽ 丶、 ` ` ‐ -- ‐'".,/ノ,l  \  \  ヽ
48デフォルトの名無しさん:2009/11/16(月) 00:29:33
>>45
問題3最後のprintfって型変換すべき?
4946:2009/11/16(月) 00:41:35
テンプレート使います
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
3元3列の連立方程式の係数を格納し、格納された結果を表示するプログラムを作成せよ。ただし次の2つのパターンでプログラムせよ。
係数を『初期化』を使って配列に入力する
キーボードから入力する
[3] 環境
 [3.1] OS:xubuntu
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:[2009年11月17日まで]
[5] その他の制限:配列を使ってやるっていうのと、cout→出力、cin→入力って感じですね。あと、上にも書いた始まりと終わりを46に書いた、あの様にしてくれると(もしかしたらcmathは入るかもしれませんが)ありがたいです。
50デフォルトの名無しさん:2009/11/16(月) 00:49:16
[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):
1.数値の入力されたテキストファイルを引数から読み込み、合計を求めるプログラムを作れ。
各行を2次元配列に格納する。何も入力されてない行か、0のみの行があれば読み込み終了。その後計算を行う。
〜入力ファイル例〜
908
29
3095
5968

のように改行で終わるか、
9824
2554
4869
0
で終了
2.テキストファイルを引数から読み込み、中のデータの順を入れ替えて出力。
〜入力例〜
あいう

えお
〜出力例〜
おえ

ういあ
コマンドプロンプト上に出力し、さらに「入力ファイル名-out.txt」の形でファイル出力も行え
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: BCC
 [3.3] 言語: C言語
[4] 期限: 11月20日正午
51デフォルトの名無しさん:2009/11/16(月) 00:49:40
>>42
#include <iostream>

int main()
{
char array[][5] = {"LISP","C++","Ada"};

for (int i = 0; i < 3; i++) {
std::cout << array[i][2];
}
std::cout << std::endl;

return 0;
}
52デフォルトの名無しさん:2009/11/16(月) 00:50:43
>>48
整数変数同士の/の結果は整数なのがC言語の規格。
型変換をしたら問題に反することになる。
53デフォルトの名無しさん:2009/11/16(月) 01:15:51
54デフォルトの名無しさん:2009/11/16(月) 01:43:59
55デフォルトの名無しさん:2009/11/16(月) 02:22:41
[1] 授業単元:画像圧縮
[2] 問題文(含コード&リンク):配列[ysize][xsize]内にある値を順番に符号化してゆく
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++
 [3.3] 言語: C++
[4] 期限: 2009年11月19日23:59まで

画像圧縮に詳しい方お願いします。
研究課題の一つでjpeg圧縮の符号化部分についてです。
今の段階はレベルシフト、DCT、量子化を終えた後で、8x8=64ブロックの量子化データを
ジグザグスキャンし配列q[64]に格納しています。(現段階ではDC成分とAC成分は混同しています。)
その後、各値に対しハフマン符号を割り当てるまでは思いつくのですが、実際に符号化し、ファイルに出力
するまでの流れが分かりません。
お願いします。
56アク禁中につきレス代行中:2009/11/16(月) 06:55:56
>55
JPEG―概念からC++での実装まで-橋本-晋之介
http://www.amazon.co.jp/dp/4797330457
をお薦めする
しかしながら、Amazonではもう取り扱ってないみたい
大抵の大学の図書館には置いてあると思う
57 ◆m68dVLRBiQ :2009/11/16(月) 08:49:32
[1] 授業単元:Cプログラミング初級
[2] 問題文(含コード&リンク):ttp://www-it.sci.waseda.ac.jp/CPR1/class12/20091026-submit.pdf
       "17ページ"に問題。17ページ以降に解答の手法の制限などの記述あり。
[3] 環境
 [3.3] 言語:C言語
[4] 期限:11月16日
[5] その他の制限: 配列はまだ習っていない程度の知識、手法を用いて

昨日も質問した者ですが、"問題2"で詰まってしまいました。自分が書いたソースは

htp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10124.txt です

短いコードですが、どこの箇所で間違ってしまったのかご指摘お願いします。
58デフォルトの名無しさん:2009/11/16(月) 10:32:14
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
問題
キーボードから3つの整数を入力し,その合計と平均を求めて表示しなさい.

問題
キーボードから3つの数値をfloat 型変数に読み込み,その合計と平均を求めて表示しなさい.
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2009年11月17日まで]
[5] その他の制限:
59デフォルトの名無しさん:2009/11/16(月) 10:46:12
♯include 〈studio.h〉

int main(void)

float n1,n2,n3,sum,ave;

puts("3つ数字いれろ");
printf();scanf();
printf();scanf();
printf();scanf();

sum
ave

printf();

return(0);



携帯からだからこれが限界
60デフォルトの名無しさん:2009/11/16(月) 10:48:38
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
問題1
長方形の面積を求めるプログラムを作成しなさい。

問題2
5人分の体重をキーボードから入力し、平均を求めるプログラムを作成しなさい。

問題3
平成の年を入力し,西暦に変換するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2009年11月18日まで]
[5] その他の制限: 特になし。
よろしくお願いします。
61デフォルトの名無しさん:2009/11/16(月) 11:16:15
[1] 授業単元:C言語とアルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10087.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:出来るだけ早めに

よろしくお願いします
62デフォルトの名無しさん:2009/11/16(月) 12:20:38
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
問1:キーボードから身長を入力し、170cm以上なら「高い」と表示し、
そうでなければ「低い」と表示するプログラムを作成しなさい。

問2:キーボードから身長を入力し、
180cm以上なら「高い」、
150cm以上、180cm未満なら「普通」、
150cm未満なら「低い」と表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2009年11月18日まで]
[5] その他の制限:
お願いします。
6349:2009/11/16(月) 12:24:31
連立方程式を解くのはは無視して下の問い(2つ)をやるらしいんです
64デフォルトの名無しさん:2009/11/16(月) 12:44:36
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
問題
キーボードから10人分の身長を入力し、
180cm以上なら「高い」、
150cm以上、180cm未満なら「普通」、
150cm未満なら「低い」と表示するプログラムを作成しなさい。

問題
キーボードから10人分の身長を入力し、
合計と平均を計算し、表するプログラムを作成示しなさい。
(なお小数点以下は無視して下さい。)
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2009年11月18日まで]
[5] その他の制限:
65デフォルトの名無しさん:2009/11/16(月) 12:48:14
>>57
>for(k=1;k>1;k++){
これじゃループ実行されない

>l++;
lってどこから出てきたの?
66デフォルトの名無しさん:2009/11/16(月) 12:48:49
67デフォルトの名無しさん:2009/11/16(月) 12:56:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
1から100までの数の合計を計算し、表示するプログラムを作成しなさい。


キーボードから10人分の身長を順次、配列に記録し、全部を入力してから、10人の身長を表示しなさい。さらに合計と平均を計算して表示するプログラムを作成しなさい。
※配列を使う問題

[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2009年11月18日まで]
[5] その他の制限:
68デフォルトの名無しさん:2009/11/16(月) 13:04:13
[1] 授業単元: ネットワークプログラミング
[2] 問題文(含コード&リンク):
 あなたのマシンのIPアドレスを表示しなさい

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: どちらでも可
[4] 期限: 11/17
[5] その他の制限: 特になし ライブラリも好きなものを用いて良い。 ただし出来る限り簡潔に書くこと

よろしくお願いします
69デフォルトの名無しさん:2009/11/16(月) 13:12:44
>>68
puts("127.0.0.1");
70デフォルトの名無しさん:2009/11/16(月) 13:49:52
[1]授業単元:プログラミング演習
[2] 1から100,000,000までの数を列挙する。
nまで書き終わった時点でそれぞれの数字dがtimes[d] (0<=d<=9)回使われていたとする。
times[d]が小さい順にdを並べて順列を作る。(同じ回数の場合dが大きいほうが後)この順列が最初累積何回変わったか
nが1000の倍数毎の表にして出力(100000まで)
回数と順位を要素とする構造体配列を使うこと

[3] Windows vista/Visual studio 2008/C言語
[4]本日中
ポインタは習っていません
急いでます。苦しいです。よろしくです。
71デフォルトの名無しさん:2009/11/16(月) 14:14:09
>>69
自分のIPは203から始まるのに
127から始まるIPが表示されました
何かおかしいのではないでしょうか?
72デフォルトの名無しさん:2009/11/16(月) 14:15:33
[1]授業単元:プログラミング演習
[2] 1から100000までの数を列挙する。
nまで書き終わった時点でそれぞれの数字dがtimes[d] (0<=d<=9)回使われていたとする。
times[d]が小さい順にdを並べて順列を作る。(同じ回数の場合dが大きいほうが後)この順列が最初からそれまでに累積何回変わったか
nが1000の倍数毎に表にして出力(100000まで)
回数と順位を要素とする構造体配列を使うこと

[3] Windows vista/Visual studio 2008/C言語
[4]本日中
ポインタは習っていません
急いでます。苦しいです。よろしくです。
73デフォルトの名無しさん:2009/11/16(月) 14:38:20
#include <stdio.h>

int main(void)
{
int i, j, k, times[10] = {0}, num[10], flg, cnt = 0;

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

for(i=1; i<=100000000; i++) {
for(j=i; j; j/=10) times[j%10]++;
for(j=9,flg=0; j>0; j--) {
for(k=0; k<j; k++) {
if((times[num[k]] > times[num[k+1]]) ||
(times[num[k]] == times[num[k+1]] && num[k] > num[k+1])) {
int temp = num[k];
num[k] = num[k+1];
num[k+1] = temp;
flg = 1;
}
}
}
if(flg) cnt++;
if(i%1000 == 0) printf("%d:%d\n", i, cnt);
}

return 0;
}
74デフォルトの名無しさん:2009/11/16(月) 14:55:22
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
問題1

二次元配列に九九の表をいったん格納する(初期化で代入することは禁じる)。その後、それらの値のルートをとった結果を表形式で出力するプログラムを作れ。

問題2

キーボードから50文字までの文字列(アルファベット、数字、記号の半角)を5つ入力する。入力がすべて終了したら、最後に入力した文字列から順番に出力するプログラムを
作成せよ。文字列は2次元配列に格納すること。

[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2009年11月18日まで]
[5] その他の制限:
7572:2009/11/16(月) 15:17:03
>>73
大変助かりました。
ありがとうございます。恐縮です。ついでな質問で
申し訳ございませんが、codepadで実行を確認しました
が表示が多少変でした。timeoutは仕方がないと思ってます。
実行確認ページ http://codepad.org/9lwH5O5S
どこを直せばいいですか?あと構造体配列はtimesだと
書いて大丈夫ですよね
76デフォルトの名無しさん:2009/11/16(月) 15:51:15
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
問題1

次の文章をプログラム中に文字列として与える.

The metropolitan government and the Tokyo 2016 Bid Committee had a budget of 15 billion yen to campaign to host the Games, of which 10 billion yen was shouldered by the metropolitan government.

アルファベット(ピリオド含む,大文字,小文字は区別しない),数字がそれぞれ何回出現したかをカウントして出力するプログラムを作成せよ


[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2009年11月18日まで]
[5] その他の制限:
77デフォルトの名無しさん:2009/11/16(月) 17:07:47
>>65ありがとうございます
解決しました
78デフォルトの名無しさん:2009/11/16(月) 17:30:02
// Part132_024 問題2 //

#include<stdio.h>
//#define scanf scanf_s
#define pi 3.14159265
int main(void) {
  double pi6pi = pi*pi/6;
  double z=0, w=0, y=0;          // z,w,yの詳細は以下で説明
  int k;

  printf("Input the volume of error:");
  scanf("%lf", &z);            // zは実行の際自分で設定する誤差
  for(k=1; ; k++) {
    w += 1.0/(k*k);            // wはシグマの値
    y = pi6pi - w;            // yは評価の式の左辺の値
    if(y < z) break;          // ループを抜ける条件
  }
  printf("The smallest integer is %d.", k);
  return 0;
}
7972:2009/11/16(月) 17:48:22
>>73さんのコードを提出しました。ありがとうございました。
80デフォルトの名無しさん:2009/11/16(月) 19:32:02
>>68
pus("fusianasan");
81デフォルトの名無しさん:2009/11/16(月) 20:24:46
1] 授業単元: C++
[2] 問題文(含コード&リンク):公開鍵と秘密鍵を作り、これらを使い暗号化と復号化を行うプログラムを書け。(RSA暗号)
[3] 環境
[3.1] OS: Windows/vista
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語: C++
[4] 期限: 2009/11/17朝まで
暗号化と復号化の手順は
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10129.txt
C言語が苦手なもので・・よろしくお願いします。
82デフォルトの名無しさん:2009/11/16(月) 20:33:56
>>81
テキストの一番下切れてない?
83デフォルトの名無しさん:2009/11/16(月) 20:40:33
>>82
「This is Anser

」をつけ忘れてしまいましたw特に問題はないと思います。。
84デフォルトの名無しさん:2009/11/16(月) 22:21:25
3元3列の連立方程式の係数を格納し、格納された結果を表示するプログラムを作成せよ。ただし次の2つのパターンでプログラムせよ。
1.係数を『初期化』を使って配列に入力する
2.キーボードから入力する
聞いてみたら問題に、そうは書いてあるけど、連立方程式は考えないでよくて、下の1.2をやるみたいなんですが、どうやるか分かる人いますか?
a00x+a01y+a02z=α
a10x+a11y+a12z=β
a20x+a21y+a22z=γ

85デフォルトの名無しさん:2009/11/16(月) 22:23:37
ここまでやりましたが、違うみたいなんですが、あとどこをどう修正すればいいんですか?

#include <iostream>
using namespace std;

int main() {
int i,j;
double a00,a01,a02,a10,a11,a12,a20,a21,a22;
double a[3][3]={{a00,a01,a02},{a10,a11,a12},{a20,a21,a22}};

for(i=0;i<3;i++) {
for(j=0;j<3;j++) {
cout("%9f",a[i][j]);
} cout << '\n';
} cout << '\n';

for(i=0;i<3;i++) {
for(j=0;j<3;j++) {
cout << "a[%d][%d] = i,j\n";
cin >> "%lf",&a[i][j];
}
}

for(i=0;i<3;i++) {
for(j=0;j<3;j++) {
cout << "%9f",a[i][j];
} cout << "\n";
} cout << "\n";

return 0;
}
多分、%9fとか書いてる所が違うんですよね
86デフォルトの名無しさん:2009/11/16(月) 22:51:20
>>56
レスありがとうございます。
その本は軽く目を通したのですが詳しすぎて理解出来ませんでした。
c++の知識はポインタまでをさらっと習った程度なので・・・
専門分野過ぎましたね。
87デフォルトの名無しさん:2009/11/16(月) 23:27:41
88デフォルトの名無しさん:2009/11/16(月) 23:42:16
[1] 授業単元:文字を利用したプログラム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10130.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 11月23日(月)まで
[5] その他の制限:リンクにある演習E5(1)を参考に
よろしくお願いします。
>>2
http://codepad.org/WHr1H5tv
結果は 11 くらいになりました。しっかりと結果を検証したわけではないので‥‥‥お友達の結果と比較してくださいね。
90デフォルトの名無しさん:2009/11/17(火) 00:42:45
>>87
ごめんなさい。ありがとうございます。何か連立方程式を解くって言うのを抜いて考えるらしくて、
普通に行列を2つの問の様に作るようなんです…
91デフォルトの名無しさん:2009/11/17(火) 00:45:17
>>78
ありがとうございます
92デフォルトの名無しさん:2009/11/17(火) 00:48:24
>>89
ありがとうございます!
93デフォルトの名無しさん:2009/11/17(火) 03:56:47
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):入力した文字列中のアルファベットについて、大文字なら小文字、小文字なら大文字に変換するプログラムを作成せよ。
また、アルファベット以外の入力は全て'*'に置き換えるようにすること。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C
[4] 期限: 2009/11/18まで
[5] その他の制限:特にありません
94デフォルトの名無しさん:2009/11/17(火) 04:29:23
>>93
#include <stdio.h>
#include <ctype.h>
#define BUFF_SIZE 512

int main()
{
int i;
char buff[BUFF_SIZE];

printf("アルファベットを入力してください\n> ");
fgets(buff, BUFF_SIZE, stdin);

for (i = 0; (buff[i] != '\0') && (buff[i] != '\n'); i++) {
if (islower(buff[i]))
buff[i] = toupper(buff[i]);
else if (isupper(buff[i]))
buff[i] = tolower(buff[i]);
else
buff[i] = '*';
}
printf("変換後の文字列: %s\n", buff);

return 0;
}
95デフォルトの名無しさん:2009/11/17(火) 04:37:06
>>88
#include<stdio.h>

int main(void)
{
char c = 'y'; /* 名前の先頭のローマ字 */
char abc[] = "abcdefghijklmnopqrstuvwxyz!";
int i = 0;

while(abc[i] != c && abc[i] != '\0')
i++;

printf("%c\n", abc[i + 1]);
return 0;
}
96デフォルトの名無しさん:2009/11/17(火) 05:24:40
97デフォルトの名無しさん:2009/11/17(火) 06:42:59
struct meibo {char name[20];int eigo; int kokugo;}
みたいな構造体でmeibo_t[]にループでどんどんデータを入れて生きたいのですがどうすれば良いですか?
int a= 0; meibo[a]=みたいにするとエラーがでますし、何か[0]にどんどん数字が足されてるような気がします
};
98デフォルトの名無しさん:2009/11/17(火) 10:22:50
C言語なら俺に聞け(入門篇) Part 55
http://pc12.2ch.net/test/read.cgi/tech/1256818218/l5

#include <stdio.h>
int main(void) {
  struct meibo {char name[20];int eigo; int kokugo;};
  struct meibo meibo_t[10], meibo_s={"aaa", 60, 90};
  int a;

  for(a=0; a<10; a++) {
    meibo_s.eigo = 60+a;
    meibo_s.kokugo = 90+a;
    meibo_t[a] = meibo_s;
  }
  return 0;
};
99デフォルトの名無しさん:2009/11/17(火) 11:18:41
for(i=0; i<n; i++) scanf("%s %d%d", meibo_t[i].name, &meibo_t[i].eigo, &meibo_t[i].kokugo);
100デフォルトの名無しさん:2009/11/17(火) 15:02:28
http://www.dotup.org/uploda/www.dotup.org368330.png
レポート課題ってやつを誰か教えてください
101デフォルトの名無しさん:2009/11/17(火) 15:05:11
102デフォルトの名無しさん:2009/11/17(火) 15:11:36
ありがとうございます
103100:2009/11/17(火) 15:48:21
#include <stdio.h>
main()
{
double pai,k,N,x,y,z;
pai=3.14159;
k=1.0;
x=(pai*pai)/6.0;
y=0;
z=0;

z=x-y;
while(z<0.01)
{

while(k<=N)
{
y+=1.0/(k*k);
}

}
printf("最小のNは,%dです.\n",N);

}

で合ってますか?
104デフォルトの名無しさん:2009/11/17(火) 16:29:15
あってません
105100:2009/11/17(火) 16:30:25
ですよね。。
106デフォルトの名無しさん:2009/11/17(火) 17:32:26
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):
ベクトルの加減、ベクトルの内積、2つのベクトルのなす角度cosθ
2つのベクトルを適当に初期化して行う事
[3] 環境
 [3.1] OS:xubuntu
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:[2009年11月20日まで]
[5] その他の制限:cout→出力、cin→入力、配列を使う事、
#include <iostream>
using namespace std;
int main() {で始めて
return 0;
}で終わるようにする。もしかしたらcmathとかくらい入るかも知れませんがこんな感じです
107106:2009/11/17(火) 17:34:14
書くの忘れてすみません。この3つのプログラム1つにまとめるんです。
あと、配列は一次元配列(もしかしたら二次元配列も使わないとできないかも)使います。
108デフォルトの名無しさん:2009/11/17(火) 18:36:58
>>95
ありがとうございます!
109デフォルトの名無しさん:2009/11/17(火) 19:04:11
>100 削除されてる
#include <stdio.h>
main()
{
  double pai,x,y,z;
  int k;
  pai=3.14159;
  k=0;
  x=(pai*pai)/6.0;
  y=0;

  z=x-y;
  while(z>0.01)
  {
    k++;
    y+=1.0/(k*k);
    z=x-y;
  }
  printf("最小の k は %d です.\n", k);
}
110デフォルトの名無しさん:2009/11/17(火) 21:11:29
[1] 授業単元 OSとC言語
[2] A1...Anさん(n>1)とN枚(N>1のカードがある。A1..Anさんは次の操作を
交代交代で平等な機会のもとに行う。
操作: カードをM枚(M<N)ランダム(予約済みを除く)に選択し
カードが白紙状態なら鉛筆で自分の名前を書き、自分の経験値に1を足す
カードに自分の名前が書いてあるならばそれを消しゴムで消して、
経験値に1を足す。
カードに他人の名前が書いてあるならばそれに関してはなにもし
ないが、そのカードに関してはもういちど引くことが予約される。
経験値は各自最初は0とする。この操作が繰り返されていくとやがて
誰も経験値が増えない状態になることがある。nとNとMを適当に選んで
どの位で(各自の経験値の平均が指標)そういう状態になるか多数回行って
統計的にそれを調査するプログラムを作ってください。
[3]Linux/gcc4.0/C言語
[4] 11/23まで
よくわかってません。問題文写し間違いかもしれないのでよろしくです
111110:2009/11/17(火) 21:27:12
抜けてた一文を見つけました。

カードも初期状態では白紙とする
112デフォルトの名無しさん:2009/11/17(火) 21:31:07
> そのカードに関してはもういちど引くことが予約される。

がよくわからないのですが。
113デフォルトの名無しさん:2009/11/17(火) 21:40:53
>>112
例えばM=3として、1番と5番と10番のカードを引いて、1番と10番に
関しては名前を書いたり消したりすることができたが、5番には既に
他人の名前が書いてあったとする。この時、次の番にはもう一度5番を
引かなければならない
という意味じゃないかと
114デフォルトの名無しさん:2009/11/17(火) 21:49:58
>>113
で、その5番は、また、次の時にも引いてこなければならないわけですか?
115デフォルトの名無しさん:2009/11/17(火) 22:02:05
前スレの
>>826-829
今更ですがありがとうございました
116デフォルトの名無しさん:2009/11/17(火) 22:02:20
>>110
名前を書く、消す、次回回しにする
これらの操作は一つのカードに関して一回の機会で排他的に1回だけ
と解釈するしかなさそうだけどそれでもおkかどうかだな
11723:2009/11/17(火) 22:05:11
>>44
今日それをコンパイルして動かしてみたんだけどもクライアント側を移動させた場合
なぜか7回以上のキー入力を受け付けなくなってストップする
exitされたわけでもなくただフリーズした状態っぽい
あとクライアントの入力に対してちゃんとwriteもしくはサーバでreadできてないらしくて
サーバ側の画面に入力が反映されない。サーバ→クライアントはクライアントで7回入力するまでは問題無しでした
しっかりconnectできてました。ありがとう
118デフォルトの名無しさん:2009/11/17(火) 22:12:11
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10132.txt
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日までっす


すみませんよろしくお願いします
119デフォルトの名無しさん:2009/11/17(火) 22:18:34
>>61なのですが明日までなので誰かお願いします。。
120デフォルトの名無しさん:2009/11/17(火) 22:20:35
>>118
#include <stdio.h>
#include <stdlib.h>

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

srand(time(NULL));

ans = rand() % 100;

for(i=1;;i++) {
printf("%d回目です。いくつだと思いますか?", i);
scanf("%d", &n);
if(ans > n) printf("もっと大きいです\n");
else if(ans < n) printf("もっと小さいです\n");
else break;
}
printf("当たりです\n");

return 0;
}
121デフォルトの名無しさん:2009/11/17(火) 22:50:22
>>120
早っ!

ありがとうございます!
122デフォルトの名無しさん:2009/11/17(火) 23:07:46
>>120
#include <time.h>っていらないんですか?
123デフォルトの名無しさん:2009/11/17(火) 23:25:04
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
文字列GHIJKLMABCDERSTUVWFNOPQXYZに対して入力した文字列の第1文字目と第2文字目の間にある文字列を表示するプログラムを作る。
例:入力文字列がCQであったときCDERSTUVWFNOPQを表示する。
[3] 環境
[3.1] OS:Windows XP
[3.3] 言語C++
[4] 期限:19日まで
124デフォルトの名無しさん:2009/11/17(火) 23:36:46
>>122
>>120だけならstdlib.hだけで十分
125デフォルトの名無しさん:2009/11/17(火) 23:38:58
>>123
#include<string>
#include<iostream>

int main(void)
{
std::string str="GHIJKLMABCDERSTUVWFNOPQXYZ";
int first, second;
char first_char, second_char;

first_char='C';
second_char='Q';

std::cin >> first_char;
std::cin >> second_char;

if((first=str.find(first_char))==std::string::npos) return 1;
if((second=str.find(second_char))==std::string::npos) return 1;

for(int i=first;i<=second;i++) std::cout << str[i];
for(int i=second;i<=first;i++) std::cout << str[i];

return 0;
}
126125:2009/11/17(火) 23:41:44
>>123 125の訂正
#include<string>
#include<iostream>

int main(void)
{
std::string str="GHIJKLMABCDERSTUVWFNOPQXYZ";
int first, second;
char first_char, second_char;

std::cin >> first_char;
std::cin >> second_char;

if((first=str.find(first_char))==std::string::npos) return 1;
if((second=str.find(second_char))==std::string::npos) return 1;

for(int i=first;i<=second;i++) std::cout << str[i];
for(int i=second;i<first;i++) std::cout << str[i];

return 0;
}
127デフォルトの名無しさん:2009/11/17(火) 23:45:59
128デフォルトの名無しさん:2009/11/17(火) 23:55:01
>>125
速いレス、ありがとうございます。
129デフォルトの名無しさん:2009/11/18(水) 00:05:51
130125:2009/11/18(水) 00:11:01
>>126 訂正
for(int i=second;i<first;i++) std::cout << str[i];

if(first!=second) for(int i=second;i<=first;i++) std::cout << str[i];

もうダメだ寝る
131デフォルトの名無しさん:2009/11/18(水) 00:11:20
>>127さんありがとうございます!!
132 ◆DOp/dR22WY :2009/11/18(水) 05:48:04
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):txtファイルを複製するGUIプログラムを作りなさい
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:borland
 [3.3] 言語:どちらでも可
[4] 期限:11月18日10時まで(無茶な期限で申し訳ありません)
[5] その他の制限:要望なのですが、OKボタンを押すとコピーができるようなものになっているとありがたいです。
133 ◆DOp/dR22WY :2009/11/18(水) 05:56:33
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):txtファイルを複製し、新たなtxtファイルを作るGUIプログラムを作りなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:borland
 [3.3] 言語:どちらでも
[4] 期限:11月18日朝10時(無茶ですが、よろしくお願いします)
[5] その他の制限:要望なのですが、起動するとコピーするか否かを問われ、OKボタンを押すとコピーするようなものだとありがたいです。細かいニュアンスはこちらで変えられます。
134 ◆DOp/dR22WY :2009/11/18(水) 05:58:32
投稿ミスだと思って同じものを2度書いてしまいました。
申し訳ありません。
135デフォルトの名無しさん:2009/11/18(水) 09:29:45
[1] 授業単元:プロミング基礎
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10133.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限:11月18日朝10時30分
[5] その他の制限:特になし
よろしくお願いします
136デフォルトの名無しさん:2009/11/18(水) 10:31:50
>>135
期限:11月20日朝10時30分 でした
137137:2009/11/18(水) 10:33:17
// 5つのデータを入力して、最大のものを表示出力するように変更せよ。
#include<stdio.h>
main(){
  int a,b,min,k;
  scanf("%d", &a);
  min = a;
  k=0;
  do{
    scanf("%d", &b);
//  if(min > b)
    if(min < b)
      min = b;
    k++;
  }
//while(k<2);
  while(k<4);
  printf("%d\n", min);
}
// for文を用いて書き換えよ。
#include<stdio.h>
main(){
  int a,b,min;
  scanf("%d", &a);
  min = a;
  for(;;){
    scanf("%d", &b);
    if(b <= 0) break;
    if(min > b) min = b;
  }
  printf("%d\n", min);
}
138デフォルトの名無しさん:2009/11/18(水) 10:36:11
>>137
ありがとうございます
139デフォルトの名無しさん:2009/11/18(水) 10:37:32
>>137
ありがとうございます
140デフォルトの名無しさん:2009/11/18(水) 10:59:35

多重繰り返し文を使って,z=1-(x2+y2)とz=0平面とで 囲まれる領域の体積の近似値を求めよ.

です。よろしくおねがいします。
141デフォルトの名無しさん:2009/11/18(水) 11:09:23
[1] 授業単元:C言語
[2] 問題文:
整数値として入力された数を素因数分解するプログラムを作成せよ。
表示は、612 = 2^2*3^2*17のようにする、これは2の2乗×3の2乗×17という意味である

[3] 環境
 [3.1] OS:WindowsXP
 [3.2]visual studio2008
 [3.3] 言語:C
[4] 期限:11月18日20時、無理な期限ですいません


普通に全部×で表示するものはできたんですが、612 = 2^2*3^2*17と^をつかい、〜の何乗と表現するやり方がわかりませんでした。
よろしくおねがいします。
14244:2009/11/18(水) 11:10:12
>>117
俺の環境では何の問題無し。
gdbとコンパイル仕方ググってみたら?
143デフォルトの名無しさん:2009/11/18(水) 11:27:13
>>141
#include <stdio.h>

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

scanf("%d", &n);

printf("%d = ", n);

for(i=2;;i++) {
for(j=0;n%i==0; j++) n/=i;
if(j) {
if(j==1) printf("%d ", i);
else printf("%d ^ %d ", i, j);
if(n==1) break;
printf("* ");
}
}

return 0;
}
144デフォルトの名無しさん:2009/11/18(水) 11:29:33
>>140
x2 y2 って何ですか?
145デフォルトの名無しさん:2009/11/18(水) 11:33:39
>>144
x^2 y^2ってことだと思います
146デフォルトの名無しさん:2009/11/18(水) 11:37:54
>>137
ありがとうございます
147デフォルトの名無しさん:2009/11/18(水) 11:39:24
>>143
ありがとうございました
148水羽:2009/11/18(水) 13:31:25
それほど長くないアドレス帳の製作をお願いします。
149デフォルトの名無しさん:2009/11/18(水) 14:30:58
[2] 問題文:
opencvのテンプレートマッチングのテンプレート画像を4つにして
4つの画像で比較したうち
一番近い一致度を表示するプログラム

[3] 環境
 [3.1] OS:WindowsXP
 [3.2]visual studio2005
 [3.3] 言語:C++
[4] 期限:11月21日

お願いします。
150デフォルトの名無しさん:2009/11/18(水) 16:44:34
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10134.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] visual studio2008
 [3.3] 言語: C
[4] 期限: 11月19日 午前7時

よろしくおねがいします

151106:2009/11/18(水) 21:22:44
19日まででしたすみません
152デフォルトの名無しさん:2009/11/18(水) 23:26:33
>>150
#include <stdio.h>

int main( )
{
char name[16];
char m[] = "hoge";
char n[] = "fuga";
memset( name, 0, sizeof( name ) );
sprintf( name, "%s%s", m, n );
printf( "name=\"%s\"\n", name ) );
return 0;
}
153デフォルトの名無しさん:2009/11/18(水) 23:28:24
string.hのインクルードが抜けてた。

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

int main( )
{
char name[16];
char m[] = "hoge";
char n[] = "fuga";
memset( name, 0, sizeof( name ) );
sprintf( name, "%s%s", m, n );
printf( "name=\"%s\"\n", name ) );
return 0;
}
154デフォルトの名無しさん:2009/11/18(水) 23:44:31
ありがとうございました
155デフォルトの名無しさん:2009/11/19(木) 00:36:04
38です。
2、3まででも構いませんので、どなたかよろしくお願いします。

[1] 画像処理プログラム
[2]
1 画像を読み込む
2 1の任意の箇所の隣接した同系色を範囲選択
3 読み込んだ画像の任意の箇所から色を抽出
4 2で選択した範囲を3の色で塗りつぶす
5 結果を出力する
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: どちらでも可
[4] 期限: 09/11/30
[5] その他の制限: 制限なし

156デフォルトの名無しさん:2009/11/19(木) 09:22:08
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):分数クラス
分数を扱うクラスを作成する。クラス名前はBunsu。データメンバはint型でbunshiとbunboでprivateとする。
コンストラクタにより初期化をおこなう。初期値が指定されなかったときはデフォルトコンストラクタでbunshi,bunboとも1で初期化すること。
またBunsuクラスの振る舞いをテストする適切なmain関数も作成すること。1ファイルで作成してください。

作成するメンバ関数
・コンストラクタ
・デフォルトコンストラクタ
・bunboを返すGetbunbo
・bunshiを返すGetbunshi
・bunboに代入するSetbunbo
・bunshiに代入するSetbunshi
・分数を加算する Addbunsu
加算した結果を約分してbunshi,bunboに設定する。

[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C++
[4] 期限:[2009年11月22日23:00まで]
[5] その他の制限:特にありません。
よろしくお願いします。
157デフォルトの名無しさん:2009/11/19(木) 11:41:03
[1] 授業単元: アルゴリズム&アプリケーション
[2] 問題文(含コード&リンク):売掛表がcsvファイルで作られています。
各行の情報は、
顧客名,前月繰越高,当月入金高,当月売上高,締め日付
であり、締め日付で昇順に整列していて、見出し等冗長部分はありません。
今回は問題を単純化するため、一人の顧客分しか扱わないことにします。
さて更新プログラムのバグから、或る月の前月繰越高が
その前月の 前月繰越高-当月入金高+当月売上高 と不整合になってしまいました。
不整合になった以降の情報が正しく、
それ以前の情報の当月入金高、当月売上高、締め日付については誤りがないとして、
1) 不整合部分を探し
2) それ以前のすべての前月繰越高を全体が整合するように書き換えなさい。
ファイルは一旦別のファイル(例えば/tmp/xxxxxx)に正しいものをつくり、
その後、元のcsvファイルに書き戻しなさい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 期限はありません
[5] その他の制限: 日付などの持ち方は自由に工夫してよい。
158デフォルトの名無しさん:2009/11/19(木) 12:31:02
[1] 授業単元: プログラム演習V
[2] 問題文(含コード&リンク):
整数nを読み込み、最外周の長さnの数字のとぐろをまいた図を出力するプログラムを作りなさい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 今月の30日まで
[5] その他の制限: 特にありません
よろしくお願いします
159デフォルトの名無しさん:2009/11/19(木) 12:35:54
>>158
例 n=22の時

1111111111111111111111
2
45555555555555555555 2
4 6 2
4 8999999999999999 6 2
4 8 0 6 2
4 8 233333333333 0 6 2
4 8 2 4 0 6 2
4 8 2 67777777 4 0 6 2
4 8 2 6 8 4 0 6 2
4 8 2 6 0111 8 4 0 6 2
4 8 2 6 0 2 8 4 0 6 2
4 8 2 6 0 8 4 0 6 2
4 8 2 6 999998 4 0 6 2
4 8 2 6 4 0 6 2
4 8 2 5555555554 0 6 2
4 8 2 0 6 2
4 8 11111111111110 6 2
4 8 6 2
4 777777777777777776 2
4 2
3333333333333333333332
はこんな感じになります
160デフォルトの名無しさん:2009/11/19(木) 13:02:41
       _______________|__________________
_________|_______ ________|__________
______|_______ ______|______ _______|_______ ______|_______
| | | | | | | |
川      ヒ 猪      小 三      カ  桜      健
       田      ク 木      川 沢      レ  庭      介
              ソ        直        リ          
              ン        也        ン

                              補欠   橋本
                                   中西
                                   秋山
                                   神取
               さて!!!この結果どうなる???
               選手は好きに使っていいよ!!
161デフォルトの名無しさん:2009/11/19(木) 14:11:01
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
  次の式を積分するプログラムを作りなさい。積分範囲は考慮せず、無限に積分するプログラムを作成しなさい。
  r = a*b+c*d
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: visual studio2005
 [3.3] 言語: C言語
[4] 期限: 今年の11月23日
[5] その他の制限: 特になし
162デフォルトの名無しさん:2009/11/19(木) 14:13:08
163デフォルトの名無しさん:2009/11/19(木) 17:03:01
>>162
早い回答ありがとうございます。
助かりました。
164デフォルトの名無しさん:2009/11/19(木) 17:49:53
>>158
#include<stdio.h>
#include<stdlib.h>

#define N_MAX 40
#define WRITE(x, y, v) ((x)>=0 && (x)<(n) && (y)>=0 && (y)<(n) && buf[y][x]==0 && (buf[y][x]=(v)))

int main(int argc, char *argv[])
{
char buf[N_MAX][N_MAX+1]={{0}};
int i, n, x=-1, y=0;
int vx[]={1,0,-1,0}, vy[]={0,1,0,-1};

n=22;
if(argc==2) n=atoi(argv[1]);
if(n>N_MAX) n=N_MAX;

for(i=0;i<n;i++)
{
while(WRITE(x+vx[i%4], y+vy[i%4], '0'+(i+1)%10))
{
WRITE(x+vx[(i+1)%4],y+vy[(i+1)%4],' ');
x+=vx[i%4];
y+=vy[i%4];
}
}
for(i=0;i<n;i++) puts(buf[i]);

return 0;
}
165デフォルトの名無しさん:2009/11/19(木) 18:01:34
>>164
http://codepad.org/
に貼付けてからカキコしてね
166デフォルトの名無しさん:2009/11/19(木) 19:05:31
>>125
#include<iostream> は、まだ習ってないので
#include<iostream> を使わずに
printfでお願いしたいです
167デフォルトの名無しさん:2009/11/19(木) 20:49:56
>>140
http://codepad.org/bD0kHquN
理論値とあわないので、なにか勘違いしているかも。
168デフォルトの名無しさん:2009/11/19(木) 22:48:18
[1] 授業単元:C言語とアルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10137.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:明日までに

急ですがよろしくお願いします
169106:2009/11/19(木) 22:50:36
誰かお願いします
170デフォルトの名無しさん:2009/11/19(木) 23:28:59
[1] 授業単元:
[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10136.txt
スタックの内容を表示する関数print_stack_mtrxは分割してあります。


stdinを使って読み込むようにしてありますが、これを変更してfopen()とgetc()をつかって
ファイルを読み込む仕様に変更してください。


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

171デフォルトの名無しさん:2009/11/19(木) 23:45:40
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10138.txt
2次元配列を利用して、2進数を入力。
10進数、16進数に変換する。
2進数→10進数まで出来たけどそれ以降が・・・
何を2次元配列にするかもわからないです。
Cの標準関数とかはわかりません。習ってないです。
[3] 環境
 [3.1] OS:Windows
 [3.2] BCPad使ってます
[4] 期限:21日土曜日までに

どなたか、よろしくお願いします。

172デフォルトの名無しさん:2009/11/20(金) 01:13:47
論理の問題ですが

95年「ここ数年で一番出来が良い」
96年「10年に1度の逸品」
97年「1976年以来の品質」
98年「10年に1度の当たり年」
99年「品質は昨年より良い」
00年「出来は上々で申し分の無い仕上がり」
01年「ここ10年で最高」
02年「過去10年で最高と言われた01年を上回る出来栄え」「1995年以来の出来」
03年「100年に1度の出来」「近年にない良い出来」
04年「香りが強く中々の出来栄え」
05年「ここ数年で最高」
06年「昨年同様良い出来栄え」
07年「柔らかく果実味が豊かで上質な味わい」
08年「豊かな果実味と程よい酸味が調和した味
09年「50年に1度の出来栄え」

です
173デフォルトの名無しさん:2009/11/20(金) 01:50:07
意味がわからない
ボージョレ・ヌーボー
174デフォルトの名無しさん:2009/11/20(金) 01:56:02
順位をつけろってことか?
175デフォルトの名無しさん:2009/11/20(金) 02:36:50
>>172
要するに「どれも五十歩百歩」と言いたいわけだよな
誰も去年の謳い文句まで覚えてない事を逆手に取ってる
176デフォルトの名無しさん:2009/11/20(金) 11:10:35
>>168ですが
誰かお願いします。。
177デフォルトの名無しさん:2009/11/20(金) 11:47:41
178デフォルトの名無しさん:2009/11/20(金) 11:49:43
>>177
ありがとうございます!!
179デフォルトの名無しさん:2009/11/20(金) 11:50:08
180デフォルトの名無しさん:2009/11/20(金) 11:57:53
181デフォルトの名無しさん:2009/11/20(金) 13:55:44
[1] 授業単元:関数を利用したプログラム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10144.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 11月27日(fri)まで
[5] その他の制限: 今習っているプログラム:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10145.txt
よろしくお願いします。
182デフォルトの名無しさん:2009/11/20(金) 14:01:29
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):1〜10までの数値の1乗〜5乗を計算し配列に格納し、一覧として表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名: visual studio2005
 [3.3] 言語:C言語
[4] 期限:11月21日
[5] その他の制限:戻り値と数学関数は使えません。

横に1の○乗、縦に○の1乗という感じで表示させるようにしたいです。
よろしくお願いします。
183デフォルトの名無しさん:2009/11/20(金) 15:27:45
>>182
#include <stdio.h>

int main(void)
{
int a[10][5], i, j;

for(i=0; i<10; i++) {
a[i][0] = i + 1;
for(j=1; j<5; j++) a[i][j] = a[i][j-1] * (i + 1);
}

for(i=0; i<10; i++) {
for(j=0; j<5; j++) printf("%d ", a[i][j]);
putchar('\n');
}

return 0;
}
184デフォルトの名無しさん:2009/11/20(金) 15:36:37
>>181
#include <stdio.h>

double fukaishisuu(double t, double h)
{
return 0.81* t + 0.01 * h * (0.99 * t - 14.3) + 46.3;
}

int main(void)
{
double t, h, f;

printf("気温を入力:");
scanf("%lf", &t);
printf("湿度を入力:");
scanf("%lf", &h);

f = fukaishisuu(t, h);

if(f < 60) printf("cold\n");
else if(f < 75) printf("comfort\n");
else printf("discomfort\n");

return 0;
}
185149:2009/11/20(金) 16:19:42
149誰か願いします。
186デフォルトの名無しさん:2009/11/20(金) 17:42:19
文字列の引数ってどうやって作ればいいのかな?
エラーでないようにするにはどこを弄ればいいのでしょう・・


#include <stdio.h>

int main(void){

char a = "hello";
printf("a" , a);

}
187デフォルトの名無しさん:2009/11/20(金) 18:16:53
char *a
188デフォルトの名無しさん:2009/11/20(金) 18:24:11
>>187
有難うございますm(__)m
恐縮ですがもう少々・・

#include <stdio.h>

int main(void){
char *a = "hello";
printf("%s " , *a);
}

これではやはりhelloと表示されないです。どこがおかしいのでしょうか?
189デフォルトの名無しさん:2009/11/20(金) 18:26:24
s/*a/a/
190デフォルトの名無しさん:2009/11/20(金) 18:30:54
>>189
有難うございました!
m(__)m
191デフォルトの名無しさん:2009/11/20(金) 19:05:56
あれ、この方法では文字列を引数として渡せないんですか?


#include <stdio.h>

int aa(char *a){
printf("%s " , a);
return 0;
}


int main(void){
char *a = "hello";
int aa( *a );
}
192デフォルトの名無しさん:2009/11/20(金) 19:09:34
int aa( *a );
から
aa(a);
193デフォルトの名無しさん:2009/11/20(金) 19:19:50
>>192
お答え有難うございましたm(__)m
ヒントを手がかりに色々考えてみます。
194106:2009/11/20(金) 21:06:20
169ですが、だれかお願いします…
195デフォルトの名無しさん:2009/11/20(金) 21:13:13
ベクトルって何次元?
196デフォルトの名無しさん:2009/11/20(金) 21:55:24
>>194
勝手に二次元で作ったよ
三次元以上も要領は同じ

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10146.txt
197デフォルトの名無しさん:2009/11/20(金) 22:37:25
float型に直接16進数を格納し、浮動小数点を生成するプログラムを教えてください
198デフォルトの名無しさん:2009/11/20(金) 23:07:11
float型に直接じゃないけど、intとfloatのメンバーをもつ共用体を使うとか
199デフォルトの名無しさん:2009/11/20(金) 23:18:25
float f;

*(int *)&f = 0x〜
200デフォルトの名無しさん:2009/11/21(土) 00:23:35
[1] 授業単元: コンピュータアーキテクチャ
[2] 問題文(含コード&リンク):
以下の仕様を満たすもぐらたたきゲームを作成する。
・一度に一つ以上の文字を画面上に表示する
一定時間以内に表示された文字と同じキーが押されたら得点
 とする
 キー入力を受け付ける一定時間が過ぎたら文字を消去する
 以上の処理を一定回数繰り返す
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: mipsel
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: 2009年11月24日09:00まで
よろしくお願いします。
201デフォルトの名無しさん:2009/11/21(土) 01:21:34
[1] アルゴリズム
[2] 手入力したい数列の数をまず入力し、その数だけ数列を手入力します。
その中に連続数がある場合、その連続数の個数を初めに入力した数から引いた結果を表示。
[3] 環境
 [3.1] OS: Linux
 [3.3] 言語:C
[4] 期限: 特になし

よろしくお願いします。
202106:2009/11/21(土) 02:07:59
>>195
どうもありがとうございます。例としては、下の内積プログラムがあるんですが、こんな感じだし、難し過ぎないかなと思ったんですが…classとかはまだやっていないし。
おもにやっているのはfor if continue while くらいなんですよね。配列(一次元配列と二次元配列)は今やっていますが。

#include <iostream>
using namespace std;

int main() {
float w[] = {1.2,2.3,3.4,4.5,5.6};
float x[] = {4.8,2.6,1.3,9.1,8.7};
float u = 0.0;
int i;

for(i=0;i<5;i=i++) {
u += w[i] * x[i];
}

cout << "u=" << u << "です\n";

return 0;
}
203デフォルトの名無しさん:2009/11/21(土) 02:16:24
204デフォルトの名無しさん:2009/11/21(土) 02:19:05
NULL ポインタfreeが古い処理系じゃまずかった理由?
一部の古い処理系ではNULLは定数ではなくmalloc書き込み専用変数
だった。(一般は参照のみ可)
古い話なんで細かいことは省略するが、プログラムのモジュール通信
の為だけに特権的な値を設定することなど貴重なアドレス空間の無駄
遣いでタブーという時代の要請としておく
freeはNULLを参照しないで機械的にブロック解放を行うので
間違った値を与えると確実にヒープを壊しプログラムは早晩落ちた。
205デフォルトの名無しさん:2009/11/21(土) 02:21:05
俺に聞けスレ向けの誤爆スマソ
206デフォルトの名無しさん:2009/11/21(土) 03:45:03
>>202
>>196にあるよ
207201:2009/11/21(土) 15:43:01
>>203
素早いご回答、本当にありがとうございます!勉強になりました。
208デフォルトの名無しさん:2009/11/21(土) 16:10:22
>>204
その環境を教えていただけるでしょうか。
209デフォルトの名無しさん:2009/11/21(土) 16:30:37
free(NULL); とやるとfree()は何もしないんだが・・・・
210デフォルトの名無しさん:2009/11/21(土) 17:00:45
誤爆だって言ってるんだからそっちのスレで聞けよ。
211デフォルトの名無しさん:2009/11/21(土) 17:31:08
[1] 授業単元:プログラミング演習第一
[2] 問題文:
#include <stdio.h>

int main(void)
{
int t = 6;

if(t >= 6 && t < 12){
printf("%d時です。おはようございます。\n",t);
}else if (t >= 12 && t < 18) {
printf("%d時です。こんにちは。\n",t);
}else if (t >= 18 && t < 24) || (t >= 0 &&t < 6)){
printf("%d時です。こんばんは。\n",t);
}else {
printf("%d時は時刻の範囲外です。\n",t);
}
return 0;
}
これのswitch文で書き換えたプログラムを作成しなさい。
ただし、case文の使用は4回を上限とする。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11月23日まで
どなたかお願いします
212デフォルトの名無しさん:2009/11/21(土) 18:21:08
[1] 授業単元:プログラミング演習
[2] 問題文:
3行3列の実数行列A=[a_ij]とB[b_ij]の積ABを計算せよ。
ただし、乗算結果の行列を[c_ij]として次の計算を行うものとする。
行列の要素への入力は、代入文あるいは初期化子をもちいること。
c_ij=Σa_ik×b_kj (Σはk=0で、2までです)
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11月23日まで
どなたかお願いします
213デフォルトの名無しさん:2009/11/21(土) 18:23:57
>>211
#include <stdio.h>
int main(int argc, char* argv[])
{
    int t = 6;
                /*  0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 */
    int hour[24] = {3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3};

    t = atoi(argv[1]);
    if(t<0 || t>23)
        printf("%d時は時刻の範囲外です。\n",t);
    else
    switch(hour[t]) {
    case 1:
//  if(t >= 6 && t < 12){
        printf("%d時です。おはようございます。\n",t);
        break;
    case 2:
//  }else if (t >= 12 && t < 18) {
        printf("%d時です。こんにちは。\n",t);
        break;
    case 3:
//  }else if ((t >= 18 && t < 24) || (t >= 0 &&t < 6)){
        printf("%d時です。こんばんは。\n",t);
        break;
//  default:
//  }else {
//      printf("%d時は時刻の範囲外です。\n",t);
    }
    return 0;
}
214デフォルトの名無しさん:2009/11/21(土) 18:29:20
>>212ですが[5]が抜けてました
if、switch、do文、while文、for文、配列しかならっていません。
できれば配列とfor文でお願いします。
215デフォルトの名無しさん:2009/11/21(土) 18:35:15
>>211
switch((t & 0x1f) / 6) {
case 1:
break;
case 2:
break;
case 0:
case 3:
break;
default:
break;
}
肝の部分だけ。汎用性はない。
216デフォルトの名無しさん:2009/11/21(土) 19:17:04
>>213>>215
ありがとうございます。参考になりました。
217106:2009/11/21(土) 19:28:21
>>206
そうなんですが、こんなに複雑じゃないと無理でしょうか…?
習ってない表現も沢山あるので…(print.aとかclassなどなど)
218デフォルトの名無しさん:2009/11/21(土) 20:04:43
>>184
ありがとうございました!
219デフォルトの名無しさん:2009/11/21(土) 20:51:56
[1] 授業単元: lT
[2] 問題文(含コード&リソク):
すぐに運用可能なMMORGPゲ一ムを作成してください。
キャラクタ、マップ、イベントを編集可能なエディタを含めること。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: 任意
 [3.3] 言語: C+-+-
[4] 期限: 1970年1月1日00:00まで
[5] その他の制限: すべてGPLライセンスにすること。
220デフォルトの名無しさん:2009/11/21(土) 21:29:00
>219
面白そうだね
221デフォルトの名無しさん:2009/11/22(日) 00:46:26
[1] 授業単元: プログラミングU
[2] 問題文(含コード&リンク):
 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10149.txt
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: visual studio 2003
 [3.3] 言語: C
[4] 期限: 2009/11/26まで

どうかよろしくお願いします。
222デフォルトの名無しさん:2009/11/22(日) 01:25:16
>>221
これ放物線になる?
単なる連立一次方程式(直線)に見えるんだが・・・
223デフォルトの名無しさん:2009/11/22(日) 02:02:18
224デフォルトの名無しさん:2009/11/22(日) 03:06:44
C++で、ベクトルの加減を行うプログラムを教えてください。
#include <iostream>
using namespace std;
int main() {

return 0;
}
入力→cin 出力→cout
配列とforでお願いします。
225デフォルトの名無しさん:2009/11/22(日) 03:07:31
>>224ですが、配列と言っても
int [2]={2,4};とか
こんな感じのとか二次元配列しかやってないです
226デフォルトの名無しさん:2009/11/22(日) 06:27:56
>>223
早い対応ありがとうございます。
227デフォルトの名無しさん:2009/11/22(日) 08:17:21
>>224 <関数>テンプレート >>1
228デフォルトの名無しさん:2009/11/22(日) 12:41:03
>>123 >>166
をお願いします
229デフォルトの名無しさん:2009/11/22(日) 12:49:35
>>228
C++習ってるなら普通真っ先に<iostream>を使うと思うんだが。
逆に<string>は使ってもいいわけ?
230デフォルトの名無しさん:2009/11/22(日) 13:05:59
string は string.h と見間違えているだけなんだろ
231デフォルトの名無しさん:2009/11/22(日) 14:51:33
110って難しい?
232デフォルトの名無しさん:2009/11/22(日) 14:55:13
めんどくさいだけで難しくは無いな
233デフォルトの名無しさん:2009/11/22(日) 16:05:04
>>231
>>112が書いているように問題の一部が意味不明
だから誰も答えられなかったのではないかと。
234デフォルトの名無しさん:2009/11/22(日) 16:59:14
M枚ひくときに自由に選べる枚数が減るって意味だろ
235124:2009/11/22(日) 17:00:43
2つのベクトルを適当に初期化してください
236デフォルトの名無しさん:2009/11/22(日) 18:47:57
[1] C言語プログラミング演習
[2] 標準入力の文字列に含まれるタブをコマンドラインで与えたサイクルのタブストップでスペースに変換するプログラム
(コマンドラインに 2 4 2 4 を与えた場合タブを入力したら3 7 10 17 20 27...が桁位置に
なるようスペースを挿入する)
入力は半角文字に限って良い。またコマンドラインからは正の整数を表すものが
与えられるとして良い
[3] Windows vista/Borland C++ 5.5/C言語でコード
制限:fgetsを使う。
[4] できるだけ早く
237デフォルトの名無しさん:2009/11/22(日) 19:00:17
>>236 てけとーにつくった
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char**argv){
    int tabstop = argc > 1 ? atoi(argv[1]) : 4,pos=0,c;
    while((c=getchar())!=EOF)
    switch(c){
        case '\t':
            do putchar(' ');while(++pos%tabstop);
            break;
        case '\r':case '\n':
            putchar(c);
            pos = 0;
            break;
        default:
            putchar(c);
            ++pos;
            break;
    }
    return 0;
}
238デフォルトの名無しさん:2009/11/22(日) 19:14:26
難しすぎだ
239デフォルトの名無しさん:2009/11/22(日) 19:29:43
どなたか>>212>>214をお願いします
240デフォルトの名無しさん:2009/11/22(日) 20:04:27
[1] 授業単元: プログラミング論U
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10150.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: dev c++
 [3.3] 言語: C++
[4] 期限: 11月23日15:00まで
[5] その他の制限: 特になしです。

問2(1)を書きました。添削・解説お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10151.txt
241デフォルトの名無しさん:2009/11/22(日) 20:21:22
>>239
#include <stdio.h>

int main(void)
{
int a[3][3], b[3][3], c[3][3], i, j, k;

for(i=0; i<3; i++) for(j=0; j<3; j++) scanf("%d", &a[i][j]);
for(i=0; i<3; i++) for(j=0; j<3; j++) scanf("%d", &b[i][j]);

for(i=0; i<3; i++) for(j=0; j<3; j++) for(c[i][j]=k=0; k<3; k++) c[i][j] += a[i][k] * b[k][j];

return 0;
}
242デフォルトの名無しさん:2009/11/22(日) 21:18:27
>>240 千円に付き1日20銭の間違いだろうか?
// 問1
#include <stdio.h>
main()
{
  int i;
  float rate, sum;

  rate = 20./100000;
  sum = 100000;
  for(i=1; i<=30; i++){
    sum *= 1 + rate;
  }
  printf("元利合計 = %d,%03d 円\n", (int)(sum/1000), (int)sum%1000);
}
// 問2
#include <stdio.h>
main()
{
  int i;
  float rate, sum, gankin;

  rate = 0.04;
  sum = gankin = 100000;
  for(i=1; i<=10; i++){
    sum *= 1 + rate;
    printf("%2d:%d\n", i, (int)(sum-gankin) );
    gankin = sum;
  }
  printf("元利合計 = %d,%03d 円\n", (int)(sum/1000), (int)sum%1000);
}
243デフォルトの名無しさん:2009/11/22(日) 21:24:30
>>241
ためしてみたらエラーでできなかったんですが
244デフォルトの名無しさん:2009/11/22(日) 21:35:05
エラーだって言うんなら、エラーメッセージぐらい貼れよ
245デフォルトの名無しさん:2009/11/22(日) 21:39:40
エラーメッセージがでなくて、なんにも動作しないやつです
246デフォルトの名無しさん:2009/11/22(日) 21:41:48
完全に正常に動作して終了してるだけ。
問題文は計算せよであって、計算結果の表示は求められてないから。
247デフォルトの名無しさん:2009/11/22(日) 21:43:45
>>246
  for(i=0; i<3; i++) {
    for(j=0; j<3; j++) printf("%3d ", c[i][j]);
    puts("");
  }
  return 0;
248106:2009/11/22(日) 23:19:28
誰か本当にお願いします…
#include <iostream>
using namespace std;

int main() {
float w[] = {1.2,2.3,3.4,4.5,5.6};
float x[] = {4.8,2.6,1.3,9.1,8.7};
float u = 0.0;
int i;

for(i=0;i<5;i=i++) {
u += w[i] * x[i];
}

cout << "u=" << u << "です\n";

return 0;
}
レベル的にはこんなもんなはずなんです
249デフォルトの名無しさん:2009/11/22(日) 23:46:17
>>229-230
すいません
<string>もまだ、習っていませんでした
250デフォルトの名無しさん:2009/11/23(月) 00:54:01
251デフォルトの名無しさん:2009/11/23(月) 01:17:33
>>248
ベクトルの定義方法の指定が曖昧すぎてどうにも出来ん。
252デフォルトの名無しさん:2009/11/23(月) 01:20:32
>>249
>>196じゃだめなん?
だめならどこがだめなのかはっきり言ってくれ
レスが付かない事には直しようがない
253デフォルトの名無しさん:2009/11/23(月) 01:21:20
×>>249
>>248

>>196をお願いだから見てくれ
これでもだめなら理由を説明してくれ
254デフォルトの名無しさん:2009/11/23(月) 01:23:34
>>250のソース、関数の戻り値間違えてた
指摘面倒なんで適当に修正してください
255デフォルトの名無しさん:2009/11/23(月) 01:25:36
まさかとは思うが>>106しか見ていないのか?

>>106
>>196

これでどうだ
256デフォルトの名無しさん:2009/11/23(月) 01:36:55
なんか質問者にイライラする
ああああああ
257デフォルトの名無しさん:2009/11/23(月) 01:52:01
見なきゃいいじゃん。
258デフォルトの名無しさん:2009/11/23(月) 02:29:08
259106:2009/11/23(月) 02:42:19
表現が難しいんです…
絶対、この例文レベルより難しいですよね…何か、1次元配列2つで終了するって言ってたので
#include <iostream>
using namespace std;

int main() {
float w[] = {1.2,2.3,3.4,4.5,5.6};
float x[] = {4.8,2.6,1.3,9.1,8.7};
float u = 0.0;
int i;

for(i=0;i<5;i=i++) {
u += w[i] * x[i];
}

cout << "u=" << u << "です\n";

return 0;
}
260106:2009/11/23(月) 02:46:23
cosθのやつは直行するベクトルを選んで初期化って書いてあるんですが、これの意味わかる人いますか?
261デフォルトの名無しさん:2009/11/23(月) 02:48:04
cosθ=0つまり
→ →
a ・ b = 0って事だろ
262106:2009/11/23(月) 03:02:07
>>260
ありがとうございます。直行するベクトルを適当に何か入力してみようと思うんですが、
(4,-3)(3,4)とすると、
和が(7,1) 差が(1,-7) はいいんですが、内積とcosθが0になりました。こういう事ですよね
263デフォルトの名無しさん:2009/11/23(月) 03:10:04
まあそういう事
自分で方眼紙にベクトル描画してみな?
264106:2009/11/23(月) 03:56:27
>>263
ありがとうございました。
265デフォルトの名無しさん:2009/11/23(月) 04:00:29
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):
行列の足し算(A+B)を行うプログラムを作成せよ(A,Bを適当に初期化して、3*3行列で行う事)
行列の足し算(A*B)を行うプログラムを作成せよ(A,Bを適当に初期化して、3*3行列で行う事)
[3] 環境
 [3.1] OS:xubuntu
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:[2009年11月20日まで]
[5] その他の制限:cout→出力、cin→入力、配列を使う事、
#include <iostream>
using namespace std;
int main() {で始めて
return 0;
}で終わるようにする。もしかしたらcmathとかくらい入るかも知れませんがこんな感じです

また課題が来てしまいました。あと、あまり複雑すぎずお願いします。
266デフォルトの名無しさん:2009/11/23(月) 10:29:44
267デフォルトの名無しさん:2009/11/23(月) 13:07:53
線分の集まりで与えられた図形が
相似図形として似ていることを調べるにはどうすればいいですか。
268デフォルトの名無しさん:2009/11/23(月) 13:09:16
簡単のために、2次元座標に
4点与えた4角形に限定して良いです。
269267:2009/11/23(月) 13:22:01
重複している面積で出来そうなので、
つながっているとは限らない4線分の配置位置の類似検出を知りたいです
270デフォルトの名無しさん:2009/11/23(月) 14:04:20
>>265
cin使用
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10155.txt

簡単な構文が希望なら、[5]にそう書いた方がいいと思うよ。
〜を習ったばかり程度の構文レベルでお願いします、とか。
関数とかクラスにした方がまとまったり汎用性が出たりするから
ココにいるような人達は特に指定がなければそっちにしてしまうと思う
271デフォルトの名無しさん:2009/11/23(月) 14:59:02
>>266
>>270
ありがとうございます。
>>270さんの方で思ったのですが、初期化ってされていないですよね?
272デフォルトの名無しさん:2009/11/23(月) 15:28:25
どうせcinで入れるし長くなるので入れなかった
適当に0とか入れといてくだしあ
273271:2009/11/23(月) 15:29:11
ttp://codepad.org/Hvu8mvhu
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10155.txt
どちらも初期化(上は2つのベクトルを適当に初期化、下はA,Bを適当に初期化)しないといけないんですが、どうしたらいいですか?
274271:2009/11/23(月) 15:31:13
>>272
書いてるうちに返信が来てましたすみません。
A[3][3]={}, B[3][3]={}ですか?
275デフォルトの名無しさん:2009/11/23(月) 16:03:24
どなたか>>200をお願いできないでしょうか。
276デフォルトの名無しさん:2009/11/23(月) 16:21:34
やってやりたいけどWindowsでVCしかないから無理だな
system("cls")でコンソールクリアはWindowsだけだったよな?
277271:2009/11/23(月) 16:36:10
初期化ってつまりこういう事なんですかね?
#include<iostream>
using namespace std;
int main() {
double A[3][3]={{1,1,6},{5,3,2},{2,2,2}};
double B[3][3]={{4,1,3},{2,4,3},{5,9,2}};
  double temp;
int i,j,k;

for(i=0;i<3;i++){
for(k=0;k<3;k++){
}
}

for(i=0;i<3;i++){
for(k=0;k<3;k++){
}
}

cout<<"和:A+B="<< '\n';
for(i=0;i<3;i++){
cout<<" { ";
for(j=0;j<3;j++){
cout<< (A[i][j]+B[i][j]);
if(j!=2)
cout<<" , ";
}
cout<< " }" << '\n';
}
cout<< '\n';
278271:2009/11/23(月) 16:37:13
cout<<"積:A*B="<< '\n';
for(i=0;i<3;i++){
cout<<" { ";
for(j=0;j<3;j++){
temp=0.0;
for(k=0;k<3;k++)
temp += A[i][k]*B[k][j];
cout<< temp;
if(j!=2)
cout<< " , ";
}
cout<< " }" << '\n';
}

return 0;
}
続き
279271:2009/11/23(月) 16:46:26
あと、106のやつは
#include <iostream>
#include <cmath>

using namespace std;

int main() {

static const int N = 2;
double va[N]={3,-4};
double vb[N]={4,3};
double a,b;
double p;

for (int i = 0; i < N; ++i) {
for (int i = 0; i < N; ++i) {
}
}

cout << "va + vb = (" ;
for (int i = 0; i < N; ++i) {
cout << va[i] + vb[i];
if (i < N - 1) {
cout << ", ";
}
}
cout << ")" << '\n';
280デフォルトの名無しさん:2009/11/23(月) 16:47:00
[1] 授業単元:プログラミング演習
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10157.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11月24日まで
お願いします
281271:2009/11/23(月) 16:47:49
cout << "va - vb = (" ;
for (int i = 0; i < N; ++i) {
cout << va[i] - vb[i];
if (i < N - 1) {
cout << ", ";
}
}
cout << ")" << '\n';
     p = 0;
for (int i = 0; i < N; ++i) {
p += va[i] * vb[i];
}
cout << "va・vb = " << p << '\n';

a = 0;
for (int i = 0; i < N; ++i) {
a += va[i] * va[i];
}
a = sqrt(a);

b = 0;
for (int i = 0; i < N; ++i) {
b += vb[i] * vb[i];
}
b = sqrt(b);
if (a * b != 0) {
cout << "cosθ = " << p / (a * b) << '\n';
}
return 0;
}
ですかね?初期化というと
282デフォルトの名無しさん:2009/11/23(月) 17:12:03
>>280
#include <stdio.h>

int main(void)
{
int i, j, k = 2 * 16;

printf("   |0 1 2 3 4 5 6 7 8 9 A B C D E F\n");
printf("---+--------------------------------\n");
for(i=2; i<8; i++) {
printf(" %d |", i);
for(j=0; j<16; j++) {
if(k==0x7f) continue;
printf("%c ", k++);
}
putchar('\n');
}

return 0;
}
283デフォルトの名無しさん:2009/11/23(月) 18:18:20
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): 以下の掛け算の表示プログラムを作成しなさい。
    1 2 3  4  5  6  7  8  9 10
    2 4 6  8 10 12 14 16 18 20
    3 6 9 12 15 18 21 24 27 30
    ・
    ・
    ・
   10・・・                    100
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C言語
[4] 期限: 11月27日 17時

どなたかよろしくお願いします。
284デフォルトの名無しさん:2009/11/23(月) 18:24:30
#include <stdio.h>

int main(void)
{
int i, j;

for(i=1; i<=10; i++) {
for(j=1; j<=10; j++) printf("%3d", i * j);
puts("");
}

return 0;
}
285デフォルトの名無しさん:2009/11/23(月) 18:41:00
>>282
ありがとうございます
286デフォルトの名無しさん:2009/11/23(月) 18:43:55
>>284
ありがとうございます。助かりました。
287デフォルトの名無しさん:2009/11/23(月) 18:49:32
>>271
ttp://wisdom.sakura.ne.jp/programming/c/c18.html
変数を宣言した時に値も代入するのが初期化

長いソースを直接書くと見にくいからろだ等使って
288271:2009/11/23(月) 18:50:25
>>287
ありがとうございます
289271:2009/11/23(月) 18:53:11
>>287
例えば,106の答えのttp://codepad.org/Hvu8mvhuなら
変数宣言をいじって、{}をつければいいだけですよね?しかし、あまり変わらないないですか?
290271:2009/11/23(月) 19:12:00
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):
行列とベクトルの掛け算
y=Ax (A(3*3行列以上)とxを適当に初期化)
[3] 環境
 [3.1] OS:xubuntu
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:[2009年11月20日まで]
[5] その他の制限:cout→出力、cin→入力、配列を使う事、
#include <iostream>
using namespace std;
int main() {で始めて
return 0;
}で終わるようにする。もしかしたらcmathとかくらい入るかも知れませんがこんな感じです
あとなるべく優しいレベルで作ってください。
多分これで今回の課題はラスト問題です
291デフォルトの名無しさん:2009/11/23(月) 19:13:38
>>289
配列では値を代入するのが初期化。
 double A[3][3]={ };
とやっても何も代入してないから初期化ではない
292デフォルトの名無しさん:2009/11/23(月) 19:27:33
>double A[3][3]={ };
コンパイル通らないだろw
293デフォルトの名無しさん:2009/11/23(月) 19:31:02
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10161.txt
ソース:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10158.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10159.c

[3] 環境
 [3.1] OS: Linux
 [3.2]
 [3.3] 言語: C
[4] 期限: 11月26日まで
[5] その他の制限: なし

お願いします
294デフォルトの名無しさん:2009/11/23(月) 19:37:48
long
double
i++
n-1
Power
2.421230
295デフォルトの名無しさん:2009/11/23(月) 19:42:14
>>291
省略すると0が入るよ
296デフォルトの名無しさん:2009/11/23(月) 19:59:07
イライライライラ
297デフォルトの名無しさん:2009/11/23(月) 19:59:51
見なけりゃいいってのは無しな
レス使いすぎなんだよ
298デフォルトの名無しさん:2009/11/23(月) 20:16:27
>>293
ここまでヒント出てる問題は自力でやってほしいなぁ
299デフォルトの名無しさん:2009/11/23(月) 20:20:42
皆さんの中で>>219の宿題はどうなりましたか?
300デフォルトの名無しさん:2009/11/23(月) 20:24:56
その言語で書ける人はおそらくここにはいない
301デフォルトの名無しさん:2009/11/23(月) 21:37:09
>>250 >>254
ありがとうございます!
302271:2009/11/23(月) 21:39:01
double va[N]={};
double vb[N]={};
こんな感じなんですが
303271:2009/11/23(月) 21:40:24
それか長くなるけど
#include <iostream>
#include <cmath>

using namespace std;

int main() {

static const int N = 2;
double va[N]={3,-4};
double vb[N]={4,3};
double a,b;
double p;

for (int i = 0; i < N; ++i) {
for (int i = 0; i < N; ++i) {

}
}

304271:2009/11/23(月) 21:41:59
cout << "va + vb = (" ;
for (int i = 0; i < N; ++i) {
cout << va[i] + vb[i];
if (i < N - 1) {
cout << ", ";
}
}
cout << ")" << '\n';
cout << "va - vb = (" ;
for (int i = 0; i < N; ++i) {
cout << va[i] - vb[i];
if (i < N - 1) {
cout << ", ";
}
}
cout << ")" << '\n';
     p = 0;
for (int i = 0; i < N; ++i) {
p += va[i] * vb[i];
}
cout << "va・vb = " << p << '\n';

a = 0;
for (int i = 0; i < N; ++i) {
a += va[i] * va[i];
}
305271:2009/11/23(月) 21:42:42
a = sqrt(a);

b = 0;
for (int i = 0; i < N; ++i) {
b += vb[i] * vb[i];
}
b = sqrt(b);
if (a * b != 0) {
cout << "cosθ = " << p / (a * b) << '\n';
}
return 0;
}
3つは続きです
306290:2009/11/23(月) 23:08:42
誰か290分かる人いませんか?
307デフォルトの名無しさん:2009/11/23(月) 23:15:44
「行列×行列」のプログラムをベースにしたらわかりそうなもんだが。
308デフォルトの名無しさん:2009/11/24(火) 14:50:27
できなくて困っています。
任意の0でない自然数nをキーボードで入力し、入力した数字が奇数の場合、その数字に3を掛けと1を足します。入力した数字が偶数の場合、その数字を2で割ります。
309308の続き:2009/11/24(火) 14:52:04
そして得られた数字に同様の操作をし、1に達した時点で終了します。そしてこの操作をした回数とこの操作で出た最大値を表示させたい。
以上のプログラムが複雑でつくれません。どうか教えてもらえないでしょうか。
310デフォルトの名無しさん:2009/11/24(火) 15:17:19
#include <stdio.h>

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

scanf("%d", &n);

for(i=0, max=n; n!=1; i++) {
if(n % 2) n = n * 3 + 1;
else n /= 2;
if(n > max) max = n;
}

printf("%d回 最大値%d\n", i, max);

return 0;
}
311デフォルトの名無しさん:2009/11/24(火) 15:28:46
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):
ベクトルの加減、ベクトルの内積、2つのベクトルのなす角度cosθ
2つのベクトルを適当に初期化して行う事
[3] 環境
 [3.1] OS:xubuntu
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:[2009年11月20日まで]
[5] その他の制限:cout→出力、cin→入力、配列を使う事、
#include <iostream>
using namespace std;
int main() {で始めて
return 0;
}で終わるようにする。
あと、文中に
#difine N 3
int main() {
double inp=0.0,normx=0.0,cos;
double x[]={};
double y[]={};
for(int i = 0;i<N;i++) {
inp += x[i] * y[i];
normx += x[i] * x[i];
normy += y[i] * y[i];
}
normx=sqrt(normx);
normy=sqrt(normy);
cos = inp / ( norm * normy);
これを含めてほしいんですが
312デフォルトの名無しさん:2009/11/24(火) 15:41:26
テストにユーグリッドの互除法から最大公約数を求めるプログラムを作る問題があるっぽいんですが、一緒にそれのフローチャートを作る問題も出るっぽいんです。
プログラム自体は
#include <iostream>
using namespace std;

int main() {
int m=48,n=36,t,i;

for(i=0;;i++) {
cout << "m" << i << " " << m << " n" << i << " " << n << '\n';
if(!(t=m%n))
break;
m=n;
n=t;
}
cout << "n" << i << "=" << n << '\n';

return 0;
}
できてるんですが、フローチャートが書けません。誰か分かる人いませんか?フローチャート質問コーナーは無いのでここに書きました…
313デフォルトの名無しさん:2009/11/24(火) 16:00:42
[1] プログラミング演習
[2]サンプルプログラムを改良し、ピボット数が小さくなっても停止せずに、
行を入れ替えることでプログラムが最後まで計算を続けることができるようにせよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10163.txt
 [3.1] WindowsXP
 [3.2] turbo CかBorland C++
 [3.3] C++
[4] 今週木曜日まで
[5] おねがいします。
314デフォルトの名無しさん:2009/11/24(火) 16:30:28
[1] 授業単元: プログラミング

[2] 問題文(含コード&リンク):
遺伝的アルゴリズムを基にTSP(巡回セールスマン問題)の近似解法のプログラムを書け。
ただし都市数の数は5〜6個程度で、都市間の距離は自由に決めてよいとする。

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

[4] 期限: [2009年11月30日まで]

[5] その他の制限:特にありませんが、分かりやすくお願いします


C初心者です、遺伝的アルゴリズムの概念を理解するだけで正直精一杯でした…
宜しくお願いします
315デフォルトの名無しさん:2009/11/24(火) 16:56:21
>>310
ありがとうございます。
316デフォルトの名無しさん:2009/11/24(火) 17:36:55
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10165.txt
[3] 環境
 [3.1] OS: Windous Vista
 [3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:明日までです・・・


すみません問題が二つあるのですがよろしくお願いします
317デフォルトの名無しさん:2009/11/24(火) 17:55:23
課題1
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i, j, temp, a[10];

srand(time(NULL));

for(i=0; i<10; i++) {
a[i] = rand() / (RAND_MAX + 1.0) * 1000;
printf("%d%c", a[i], i==9 ? '\n' : ',');
}

for(i=9; i>0; i--) {
for(j=0; j<i; j++) {
if(a[j] > a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}

for(i=0; i<10; i++) printf("%d%c", a[i], i==9 ? '\n' : ',');

return 0;
}
318デフォルトの名無しさん:2009/11/24(火) 17:59:01
課題2
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i, j, a[10] = {0};

srand(time(NULL));
for(i=0; i<100; i++) a[rand()%10]++;

for(i=0; i<10; i++) {
printf("%d:", i);
for(j=0; j<a[i]; j++) putchar('*');
putchar('\n');
}

return 0;
}
319デフォルトの名無しさん:2009/11/24(火) 18:02:53
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10170.txt
              :http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10171.txt  
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: (11/26)
[5] 一つ目のURLが問題、2つ目が問題のプログラム例です
宜しくお願いします。
320デフォルトの名無しさん:2009/11/24(火) 18:09:39
>>317-318

流石です!
ありがとうございます
321デフォルトの名無しさん:2009/11/24(火) 18:11:33
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):

2つの文字列をS1とS2の配列に読み、S1の文字列の最初からn個目にS2の文字列を挿入する。
例えば、文字列が12345とABでn=3の場合、123AB45となる。
(1) 配列を用いて作る。
(2)関数とポインターを用いて作る。

[3] 環境
windows xp
言語:C

[4] 期限: 26日

よろしくお願いします
322デフォルトの名無しさん:2009/11/24(火) 18:57:49
ggrks
323デフォルトの名無しさん:2009/11/24(火) 19:52:40
>>321 (1)
#include <stdio.h>
#define LEN 100
int main(void) {
  char data1[LEN+1], data2[LEN+1], data3[LEN*2+1];
  int n, len;

  printf("S1="); fgets(data1, LEN+1, stdin); len = strlen(data1)-1; data1[len] = '\0';
  printf("S2="); fgets(data2, LEN+1, stdin); data2[strlen(data2)-1] = '\0';
  printf("n="); scanf("%d", &n);
  if(len < n) n = len;
  strncpy(data3, data1, n);
  data3[n] = '\0';
  strcat(data3, data2);
  strcat(data3, &data1[n]);
  puts(data3);
  return 0;
}
324デフォルトの名無しさん:2009/11/24(火) 21:51:37
>>313
当方の環境は cygwin/Windows XP, 処理系は gcc 3.4.4 です。
http://codepad.org/rqMERblh
部分ピポット選択としています。大概はこれでOKだと思います。

>>322
他に言うことはないのでしょうか。
325324:2009/11/24(火) 22:26:48
ピボッティングでは絶対値の最大をとるべきでしたね。
訂正します。
http://codepad.org/vNlQ4hMb
326デフォルトの名無しさん:2009/11/24(火) 23:47:16
38です。
提出期限が30までになっていましたが先生の都合で今週末までに変更になってしまいました。
どなたかお願いいたします。

[1] 授業単元: 画像処理プログラム
[2] 問題文(含コード&リンク): 自動選択ツール(魔法の杖)を作成せよ
                   画像フォーマットに関しては特に制限なし
[[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語: どちらでも可
[4] 期限: 09/11/27
[5] その他の制限: 制限なし
327デフォルトの名無しさん:2009/11/25(水) 00:10:09
>>326
こんなもん即興で作れるレベルじゃない
とっかかりも何もなしに丸投げされても作る人はいないと思われ
328デフォルトの名無しさん:2009/11/25(水) 00:22:46
[1]プログラミング言語論
[2]プログラムの製造とライフサイクルについてC言語アプリ開発の実際を踏まえて
論ぜよ 自作Cコードを含めること。
[3] Linux/Gcc/C言語 (Mozzilaプロジェクト)が授業で取り上げられました
[4] なるべく早めに

意味がよくわかりません。指針だけでもよろしくです。
329デフォルトの名無しさん:2009/11/25(水) 00:28:32
>>327
ですよねえ・・・もう今回のはスルーすることにします。
色々レス下さった方々ありがとうございました。
330デフォルトの名無しさん:2009/11/25(水) 02:16:03
[1] 授業単元:プログラム
[2]問題文
次の要領でテストの点数を入力し、それぞれの点数代の人数が何人いるか求めるプログラム
1.テストの点数を入力するガイダンスを用いて次のように出力 :点数の入力 終了条件:eあるいはE
2.fgets()を用いて、テストの点数を文字列として入力
3.2で入力した文字列が'e'または'E'ならば処理2〜5の処理を終了して6の処理を行う
4.文字列で入力した点数をint型変数に変換(atoiを使用する)
5.4で変換したint型の点数が0点以上100点以下なら、それぞれの点数代の人数を数える。
6.5の結果の表示
[3]
[3.1]XP
[3.2]Visual C++ 2008
[3.3] C言語
[4]2009年11月30日まで
[5]関数、文字列の復習問題です

331デフォルトの名無しさん:2009/11/25(水) 03:04:11
>321 (2)
#include <stdio.h>
#define SIZE 100
char *ins(char *s1, int n, char *s2)
{
 static char dst[SIZE*2];
 if(strlen(s1)>n){
  strcpy(dst, s1); dst[n]='\0';
  strcat(dst, s2);
  strcat(dst, s1+n);
 }else{
  sprintf(dst, "%s%s", s1, s2);
 }
 return dst;
}
int main(int argc, char *argv[])
{
 char S1[SIZE*2], S2[SIZE];
 int n;
 sscanf(argv[2], "%d", &n);
 sprintf(S1, "%s", argv[1]);
 sprintf(S2, "%s", argv[3]);
 sprintf(S1, "%s", ins(S1, n, S2)); printf("[%s]\n", S1);
 return 0;
}

コマンドラインで>実行.exe S1の文字列 n S2の文字列[Enter]
332323:2009/11/25(水) 04:39:48
>>321 (2) 問題が曖昧。配列S1の書き換えを行うヴァージョン。
#include <stdio.h>
#include <string.h>
#define LEN 100
void concat(char *s1, char *s2, char *s3, int n) {
  strcpy(s3, s1); s1[n] = '\0';
  strcat(s1, s2);
  strcat(s1, &s3[n]);
}
int main(void) {
  char S1[LEN+1], S2[LEN+1], work[LEN+1];
  int n, len;

  printf("S1="); fgets(S1, LEN+1, stdin); len = strlen(S1)-1; S1[len] = '\0';
  printf("S2="); fgets(S2, LEN+1, stdin); S2[strlen(S2)-1] = '\0';
  printf("n="); scanf("%d", &n);
  if(len < n) n = len;
  concat(S1, S2, work, n);
  puts(S1);
  return 0;
}
333デフォルトの名無しさん:2009/11/25(水) 06:56:38
[1] 授業単元:C言語で金儲け
[2]問題文
簡単に金が稼げるプログラムを作れ!
[3]
[3.1] OS全般(特に問わない)
[3.2] gcc
[3.3] C言語
[4] 今すぐニダ
[5] 最低でも1億円は稼ぐこと
334デフォルトの名無しさん:2009/11/25(水) 06:57:56
>>333
種銭を10億円出せ
335デフォルトの名無しさん:2009/11/25(水) 07:17:34
>>328
的外れかもしれないけど、
まず、ライフサイクルがどこを指してるのかがよくわからん。
プログラムそのものを指してるのか、プログラムの製造過程(?)を指してるのか。
前者ならプログラム内でどの関数からスタート(エントリポイント)して
どの関数を経由して最終的にどの関数で終了するのか、
後者ならPDCAサイクルみたいなのを書けばいいんじゃないかな、とか思った。
とはいえ「C言語アプリ開発の実際」が意味不明だからよくわからん。
336デフォルトの名無しさん:2009/11/25(水) 08:39:35
337デフォルトの名無しさん:2009/11/25(水) 10:03:29
[1] 授業単元:プログラム
[2] 問題文:
二つの値xとyの大きい方の値を返す関数形式マクロは以下のように
定義できる
#define max(x,y) ((x) > (y) ? (x) : (y))
このマクロを利用して、四つの値a,b,c,dの値の最大値を求める
max(max(a,b), max(c,d))
および
max(max(max(a,b), c), d)
がどのように展開されるかを示すし、考察を加えよ。
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: c言語
[4] 期限: ありません
[5] その他の制限: このプログラムを作ってほしいと思います。
if,for,関数,関数形式マクロは勉強しました。
C言語初心者ですよろしくお願いします。

338デフォルトの名無しさん:2009/11/25(水) 10:03:52
[1] 授業単元:プロミング基礎
[2] 問題文(含コード&リンク):5つの整数データ入力に対する合計計算アルゴリズム
1.変数 s に 0 を設定する。
2.変数 k に 0 を設定する。
3.もし k < 5 でなければ、7.へ行く。
4.整数の入力を変数 a に格納する。
5.変数 s に 変数 a を加えて、変数 s に 代入する。
6.変数 k の内容を 1 だけ増やし、3.にもどる。
7.変数 s を出力表示する。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限:11月25日朝10時20分
[5] その他の制限:特になし
よろしくお願いします

339デフォルトの名無しさん:2009/11/25(水) 10:41:13
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):5人の学生の3教科(国・数・英)の点数を
読み込んで、2次元配列を用いて以下の条件を満たすプログラムを作成せよ。
(1)科目別の最高点を求める。
(2)各学年の3教科の平均を求める。
これらを表にして表示する。
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C言語
[4] 期限: ありません
[5] その他の制限: if,for、配列を習いました。
c言語は初心者です。よろしくお願いします。
340デフォルトの名無しさん:2009/11/25(水) 10:51:50
341デフォルトの名無しさん:2009/11/25(水) 10:54:02
342デフォルトの名無しさん:2009/11/25(水) 11:32:09
>>337
プログラミングをする問題ではないな
1カ所だけ埋めてみるので、後は同じように変換してみて。
#define max(x,y) ((x) > (y) ? (x) : (y))
max(max(a,b), max(c,d))

max(((a) > (b) ? (a) : (b)), max(c,d))
343デフォルトの名無しさん:2009/11/25(水) 12:14:43
>>339
どこからデータを読み込んでどういった表にするのかも詳しく
344デフォルトの名無しさん:2009/11/25(水) 12:24:00
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10172.zip
 上記のグラデーション画像(濃淡画像、サイズ256×256)
 の画素値を計算で求めるプログラムによって作成せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月25日17:00
[5] その他の制限:特にありません。

プログラミング初心者です。
画像のダウンロード等お手数をおかけしますが、
分かる方いましたらお願いしたいです。
345デフォルトの名無しさん:2009/11/25(水) 12:30:44
>>338
#include<stdio.h>

int main()
{
int s=0, k=0, a;

for (k = 0;k < 5;k++)
{
printf("整数を入力してください:");
scanf("%d", &a);
s += a;
}

printf("変数sの値は%dです。", s);

return 0;
}

もう時間過ぎてるし意味ないかw
346デフォルトの名無しさん:2009/11/25(水) 12:55:18
>>344
上からx(0から開始)ピクセル目の画素値=[x, x, x](RGB)
※横方向は全て同じなので省略
ってだけじゃないの?
347デフォルトの名無しさん:2009/11/25(水) 13:27:51
>>346
32階調のようだ
348デフォルトの名無しさん:2009/11/25(水) 14:30:17
>>337
1.以下の内容を例えば、tect.cに保存
#define max(x,y) ((x) > (y) ? (x) : (y))
max(max(a,b), max(c,d))

2.gcc -E test.c を実行すると、以下の結果を得られる。
# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.c"
((((a) > (b) ? (a) : (b))) > (((c) > (d) ? (c) : (d))) ? (((a) > (b) ? (a) : (b))) : (((c) > (d) ? (c) : (d))));
349デフォルトの名無しさん:2009/11/25(水) 14:30:46
>>344
拡張子がJPGになってるけど、ファイル形式が正確にはPNGみたい
350デフォルトの名無しさん:2009/11/25(水) 16:11:48
>>346,347,349
画像を作成するのをどのように書けばいいのか見当がつかなくて…
拡張子JPGにしてしまったのですが、元画像はPNGでした。
紛らわしいことをして申し訳ありません!
351デフォルトの名無しさん:2009/11/25(水) 16:25:13
>>339 >>343

データはキーボードから点数を入力で。
表は、
番号|  国語  数学  英語  |最高 |最低 |平均
  1 |      |   |   |
  2 |       |   |   |
(中 略)
     5 |       |   |   |
    ――――――――――――――――――――――――――――――
    最高 |
    最低 |
    平均 |
表はこんな感じで。
最低点の表示もお願いします。

よろしくお願いします。
352デフォルトの名無しさん:2009/11/25(水) 16:27:33
>>351

表がずれてしまってすみません。
353デフォルトの名無しさん:2009/11/25(水) 16:49:05
>>350
画素値を求めるんじゃなくて画像を作るの?
質問の内容がよくわかんない
354デフォルトの名無しさん:2009/11/25(水) 16:50:03
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
(1)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10173.txt
(2)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10175.txt
(3)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10174.txt
(4)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10176.txt

たくさんあって申し訳ないです・・

[3] 環境
 [3.1] OS:Linux (emacsで作成して、ktermでコンパイルするやつです。)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月25日17:00

プログラミング初心者です。
簡単な問題ばかりらしいのですが、自分にはできません。でも提出には間に合わせたいです・・

聞ける友達もいなく、ここに頼るしかないです。至急よろしくお願いします。
355デフォルトの名無しさん:2009/11/25(水) 16:53:20
>>354の期限、間違えました。期限は、26日の18時までです。
でもできれば今日中に提出したいですのでよろしくお願いいたします。。
356デフォルトの名無しさん:2009/11/25(水) 17:26:26
>>353
画像を作るプログラムです。
誤解を招く文章ですみませんでした!
357デフォルトの名無しさん:2009/11/25(水) 18:12:28
[1] 授業単元: データ構造とアルゴリズム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10177.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 11/26日いっぱい
お願いします。
358 ◆DBNFZzxhyk :2009/11/25(水) 19:59:25
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10178.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2009年11月27日20:00まで]
[5] その他の制限:特にありません。

お願いします。
359デフォルトの名無しさん:2009/11/25(水) 20:45:21
課題がかぶったら死亡
360デフォルトの名無しさん:2009/11/25(水) 22:49:09
361デフォルトの名無しさん:2009/11/25(水) 22:54:06
>>323 >>332
ありがとうございます
362312:2009/11/26(木) 00:42:26
だれか312を助けてください
363デフォルトの名無しさん:2009/11/26(木) 03:04:21
>>336
ありがとうございました。本当にたすかりました。
364デフォルトの名無しさん:2009/11/26(木) 06:08:45
>>358
http://codepad.org/xjHSjbj3

というか,ほとんどできあがっていたよ。
これでいいのだろうか・・・。
365デフォルトの名無しさん:2009/11/26(木) 06:50:47
【質問テンプレ】
[1]授業単元:応用C言語演習
[2]問題文(含コード&リンク)
標準入力から1文字以上の英数字と'_'で構成される単語を読み込み、
それぞれの単語が何回、何行目の何個目の単語に出現したかを単語アルファベット順
にリストする索引作成プログラム
アルファベット順出力の後出現頻度(出現が多い単語順、同数についてはアルファベ
ット順)順についても同じ書式で出力
改行記号とタブ/アルファベット/数字/ '_' /空白しか標準入力されないとして良い。
入力行数、単語長、種数、単語辺りの出現回数に制限は無い。
単語の前後の区切りは単語を構成しない文字とする。(行末記号を含む)
書式: 単語 (回数) 位置(行番号が若い順)改行
位置: 'L'行番号(1から開始)-行内単語番号(1から開始)
alpha (3回) L32-5 L66-4 L124-1
beta (2回) L192-1 L276-3
[3] 環境
OS:FedoraCore11/コンパイラgcc4.0/言語 C言語 
[4] 期限 12/1迄
[5]その他の制限:
400行以内(マルチステートメント不可)
stdio.h stdlib.h string.h以外の使用禁止 fgets使用のこと(fgetc等の一文字読み取り系は不可)
366デフォルトの名無しさん:2009/11/26(木) 11:59:14
>>351
学年は関係なくなっちゃたのかな。
367デフォルトの名無しさん:2009/11/26(木) 13:57:06
>>357どなたかお願いします。
368デフォルトの名無しさん:2009/11/26(木) 17:09:06
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10180.txt

たくさんあって申し訳ないです・・

[3] 環境
 [3.1] OS:Linux (emacsで作成して、ktermでコンパイルするやつです。)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月30日17:00

前回もこの板にお世話になりました。

プログラミング初心者です。

聞ける友達もいなく、ここに頼るしかないです。

またまたよろしくお願いします。
369デフォルトの名無しさん:2009/11/26(木) 17:29:48
1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10181.txt

[3] 環境
 [3.1] OS:Linux (emacsで作成して、ktermでコンパイルするやつです。)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月29日17:00

こちらもどうかよろしくお願いいたします。。
370370:2009/11/26(木) 17:35:01
371デフォルトの名無しさん:2009/11/26(木) 17:43:42
>>368全部頼むな!!多いだろ
372 ◆DBNFZzxhyk :2009/11/26(木) 17:54:42
>>364
ありがとうございます。
しかし、

現在のデータ:0/100
(1)プッシュ (2)ポップ (0)終了:1
データ:25
0 25  ←この行(番号?とプッシュした数字)は表示されませんでした。
どうかもう一度お願いします。
373デフォルトの名無しさん:2009/11/26(木) 18:23:09
>>365
良問です。丸投げなど勿体ない。
374デフォルトの名無しさん:2009/11/26(木) 18:41:28
>>368
課題1
#include<stdio.h>
#define min2(x, y) ((x < y) ? x : y)

int min3(int x, int y, int z);

int min3(x, y, z)
{
  return min2(min2(x, y), z);
}

int main(void)
{
    printf("%d\n", min3(3, 5, 1));
    return 0;
}
375デフォルトの名無しさん:2009/11/26(木) 18:47:10
>>370,374ありがとうございます。

多くて申し訳ないです・・
376デフォルトの名無しさん:2009/11/26(木) 18:55:36
まじでどなたか>>357お願いします。
377デフォルトの名無しさん:2009/11/26(木) 19:07:01
>>368
>>374 課題1の訂正(入力を促すメッセージを追加)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10183.c
378デフォルトの名無しさん:2009/11/26(木) 19:10:32
以前ここのスレで「Visual BasicのプログラムをCにしてください」
とお願いしたものです。
その時、良心的に解答してくださった方がいたのですが、
事情によりその際のデータが全て消えてしまいました。
もしあの時助けてくださった方がここを見ていて、
心当たりがあったら私のメールアドレスにメールしていただけないでしょうか?
大変困っています。よろしくお願い致します。
379デフォルトの名無しさん:2009/11/26(木) 19:21:17
380デフォルトの名無しさん:2009/11/26(木) 19:21:44
>>368
課題3
putstar(n)は、*を1行分出力するものだとエスパーしてみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10184.c
381デフォルトの名無しさん:2009/11/26(木) 19:38:28
>>368
〜課題4〜
文字型配列 str='ABCDEFG'が初期設定されている。このstrのデータを英大文字から、英小文字に変換しなさい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10186.c
382デフォルトの名無しさん:2009/11/26(木) 19:40:12
>>380
× while (n-- >= 0)
○ while (n-- > 0)
383デフォルトの名無しさん:2009/11/26(木) 20:40:17
>>378
これだな

C/C++の宿題片付けます 130代目
http://pc12.2ch.net/test/read.cgi/tech/1250204272/669

669 名前:デフォルトの名無しさん[[email protected]] 投稿日:2009/10/05(月) 00:26:36
どなたか、Visual BasicをC言語に書き換えることができる方いませんか?
元のプログラムが少し長いので、可能な方はメールにてお知らせいただければ、
問題文を添付させていただきたいと思っています。
よろしくお願い致します。
384デフォルトの名無しさん:2009/11/26(木) 20:48:49
[1] 授業単元:ヒューマンインターフェイス
[2] 問題文(含コード&リンク):少なくとも以下の英文を日本語分に翻訳できるプログラムを作成せよ
           1.The boy beats a dog with a stick.
2.Every boy loves a dog .
3.The dog is loved by every boy.
4.The boy saw a girl with a telescope.
5.The boy saw a girl with a dog.
6.The boy cut a stick with a saw.
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限:明日の17時まで
[5] その他の制限:キーボードから入力文を入力し、ディスプレイに翻訳結果を出力する

外部ファイルを参照すれば良いのかと思ったけど手も足も出ませんでした。
よろしくお願いします。
385デフォルトの名無しさん:2009/11/26(木) 20:57:22
>>384
女の人に頼め
386デフォルトの名無しさん:2009/11/26(木) 21:02:32
>>383
その通りです!
わざわざ探してくださってありがとうございます。
あの時に回答してくれた方がこの書き込みに気付いてくれることを祈ります…
387デフォルトの名無しさん:2009/11/26(木) 21:06:22
>>385
女の人とは??
388デフォルトの名無しさん:2009/11/26(木) 21:07:44
>>386
仕事として発注したなら、
受注した方は守秘義務の観点から既に削除している可能性が高いわけで…
389デフォルトの名無しさん:2009/11/26(木) 21:11:41
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10187.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: visual studio  
 [3.3] 言語:C言語
[4] 期限:2009年11月30日
[5] その他の制限:なし
390デフォルトの名無しさん:2009/11/26(木) 21:12:07
だれか>>357やってくれませんか
明日までなのにできなくて…
391デフォルトの名無しさん:2009/11/26(木) 21:26:17
C言語です。
数百回分の計算データがありそのデータを10回毎に見ていって(10回目、20回目、30回目…)前にみた時より、
aが50増えたらaをbに変更するもの作りたいのですが、どなたかアドバイスください。
392デフォルトの名無しさん:2009/11/26(木) 21:32:26
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
3つの自然数を辺にもつ直角三角形を1000個出力するプログラムを書きなさい。
ただし、3つの辺 a, b, c は a <= b <= c とする。
また、3辺の比率が同じものはカウントしないこととする。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:11月30日24:00まで
[5] その他の制限:まだあまり習っていないのでできるだけ簡単なコードで書いていただけるとありがたいです

どうしてもできません
よろしくお願いします
393デフォルトの名無しさん:2009/11/26(木) 21:33:07
>>391
具体例を出して分かるように説明してくれれば…
394デフォルトの名無しさん:2009/11/26(木) 21:51:53
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10188.txt
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 特になし
[5]特になし

gccをするとincompatible type for argument a of distanceというエラーが出ます。
エラーの文の意味は分かるのですが、変数のタイプは一致しているのでは?という自分の認識で困っています・・・・。
どなたかこのエラーが何故出るか教えてください。
395デフォルトの名無しさん:2009/11/26(木) 21:54:18
>394
全く違います
396デフォルトの名無しさん:2009/11/26(木) 21:54:38
>>392
ピタゴラスの定理から適当に1000個取りだした。
#include<stdio.h>
int main(){
    int n=2,i;
    for(i=0;i<1000;++i){
        int m = 5+i*2;
        int a = 2*m*n;
        int b = m*m-n*n;
        int c = m*m+n*n;
        printf("a=%d b=%d c=%d\n",a,b,c);
    }
    return 0;
}
397デフォルトの名無しさん:2009/11/26(木) 21:57:52
>>392
素直にやるならこんな感じか
http://codepad.org/KEgPTtQ9
398デフォルトの名無しさん:2009/11/26(木) 21:58:06
>>392
#include<stdio.h>
#include<math.h>

int gcd(int a, int b){
int c;

while((c=a%b)) a=b, b=c;
return b;
}

int is_ok(int a, int b, int c){
return (a<=b && (c*c==a*a+b*b) && (gcd(a, gcd(b, c))==1));
}

int main(void){
int a, b, c, count=0;

for(c=2;count<1000;c++){
for(b=c/1.42;b<c && count<1000;b++){
a=sqrt(c*c-b*b);
if(is_ok(a, b, c) || is_ok(++a, b, c)){
printf("%4d : a=%d b=%d c=%d\n", ++count, a, b, c);
}
}
}
return 0;
}
399デフォルトの名無しさん:2009/11/26(木) 21:59:06
>>394
ソース的にはxとyの配列そのものを渡したいようだから
distance(x,y);
で関数を呼び出し、
double distance(double *x,double *y)
で受け取らないといけない。
というか、
(double x[],double y[])
みたいな記述は出来ない。

ついでに言うとdistance関数でreturn記述されてないからエラーか警告出てるはず
400デフォルトの名無しさん:2009/11/26(木) 22:00:44
>>397
同じ比率はカウントしないって言ってんのにそれかよw
401デフォルトの名無しさん:2009/11/26(木) 22:01:40
>>393
例えばですが…
お店の売り上げデータaをb日間毎日取り、c日おきにその売り上げデータを見ていきます。
c=10ならば10日,20日,30日…
そして売り上げが前回(現在が40日目だったら前の30日目)と比較してしたときより+500増えていたら
売り上げデータaを嘘の売り上げデータeに書き換えという感じのものです。

ちょっとわかりにくいと思いますがすみません…
402デフォルトの名無しさん:2009/11/26(木) 22:04:48
>>401
>>391のbは何?
403デフォルトの名無しさん:2009/11/26(木) 22:05:31
>>399
>(double x[],double y[])
>みたいな記述は出来ない。
できるよ
意味はポインタと同じ
404デフォルトの名無しさん:2009/11/26(木) 22:08:22
>>402さん
>>391のbは>>401だとeです

わかりずらくてすみません…
405デフォルトの名無しさん:2009/11/26(木) 22:09:10
>>401,404
データ改竄の手伝いをしろと?
406デフォルトの名無しさん:2009/11/26(木) 22:10:37
>>401
このデータならこうなって欲しいというのがあると分かりやすい

実際にダミーのデータを作って説明してつかい
407デフォルトの名無しさん:2009/11/26(木) 22:11:49
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
課題1、文字列、と2つの整数(それぞれ n, m とする)を入力すると
n文字目から m文字 *に変えるプログラムを書け。

実行例
  文字を入力して下さい
Toshidaigaku
nを入力して下さい
4
mを入力して下さい
2
出力は
Tos**daigaku

課題2、文字列を入力すると、全ての文字を次の文字コードの文字に
変えて、結果を表示するプログラムを書け。

実行例

文字を入力して下さい
Toshidaigaku
出力は
Uptijebjhblv
408デフォルトの名無しさん:2009/11/26(木) 22:12:51
課題3、文字列を入力すると、文字列中の
a の個数を数えるプログラムを書け。

実行例

文字を入力して下さい
Toshidaigaku
aが2個含まれています

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C++
[4] 期限: 申しわけないのですが明日、11月27日までです。
[5] その他の制限:
#include <stdio.h>
int main()
スタートでお願いします。
409デフォルトの名無しさん:2009/11/26(木) 22:18:23
>>405
変な例を出してしまいましたが…

a毎にデータを取っていき、前回と比較して指定した数値を越えていたら転置を行うプログラムです。
410デフォルトの名無しさん:2009/11/26(木) 22:19:05
>>407-408
文字列を str[],ループカウンタにint型の i を宣言しているとして、
課題1
for(i=0;i<m;i++) str[n+i-1]='*";
課題2
for(i=0;i<strlen(str);i++) str[i]++;
課題3
int count=0;
for(i=0;i<strlen(str);i++) if(str[i]=='a')count++;

後は自分で考えな。
411デフォルトの名無しさん:2009/11/26(木) 22:20:01
>>410訂正
課題1
× '*"
○ '*'
412デフォルトの名無しさん:2009/11/26(木) 22:29:26
>>406さん
>>401の例で20日目が2600円で10日目が2000円だとすると前回のデータより+500円以上増えていて
書き換えの条件が満たされているので2600円を-600円して2000円にする。
500円以上増えていたら-600円、500円以上になってなかったらデータはそのままにしておくという感じです。
413392:2009/11/26(木) 22:34:39
>>396
>>397
>>398
ありがとうございます
こんなにすぐにできるとは思ってませんでした
ちなみに>>397を同比率を除くようにするにはどうしたらいいんでしょうか?
少し気になったのでよろしければ教えてください
414357:2009/11/26(木) 22:37:06
>>357解ける方いらっしゃいませんか。ホント解けなくて困ってます。
明日の正午までなんです。お願いします。
415デフォルトの名無しさん:2009/11/26(木) 22:42:39
>>413
最大公約数が1
416デフォルトの名無しさん:2009/11/26(木) 23:00:46
417392:2009/11/26(木) 23:14:22
>>415
最大公約数が1とはどういうことでしょうか?
418デフォルトの名無しさん:2009/11/26(木) 23:17:37
最大公約数が1なら、その比率は今まで出てきてないと言える。
419373:2009/11/26(木) 23:21:37
>>365
当方の環境は Windows XP/cygwin 処理系は gcc 3.4.4. です。
http://codepad.org/31SYKANG
メモリーリークがあったらごめんなさい。
420デフォルトの名無しさん:2009/11/26(木) 23:38:23
>>410
ありがとうございます。
助かりました。

がんばってみます
421デフォルトの名無しさん:2009/11/26(木) 23:39:12
422419:2009/11/27(金) 00:14:33
>>365
残念ながら、問題の半分しかできていないことが判明しました。
アルファベット順の出力のあと、出現度順でも出力しなければならないところが、前半のアルファベット順しか出力できていません。
今日は疲れたので、また明日考えます。おやすみなさい。
423デフォルトの名無しさん:2009/11/27(金) 00:45:15
#include <iostream>
using namespace std;

int main() {
int m=48,n=36,t,i;

for(i=0;;i++) {
cout << "m" << i << " " << m << " n" << i << " " << n << '\n';
if(!(t=m%n))
break;
m=n;
n=t;
}
cout << "n" << i << "=" << n << '\n';

return 0;
}
お願いします。C++ですが、これのフローチャート教えてくれませんか?本当に助けてください
424423:2009/11/27(金) 00:47:18
ユーグリッドの互除法です
425デフォルトの名無しさん:2009/11/27(金) 01:08:08
[1]やさしいC++ 演習
[2]
(1) int値 n,一つのcharポインタpを引数に持ちcharポインタを戻り値型とする関数atosを次の仕様のもとに作成
pがNULLでないならばそれが指す領域をdelete[]解放してNULLを返す。pがNULLの場合はpに16文字分の領域を割り当て,指す領域にsprintf関数によりnの10進文字列表現を書き込
みそれを返す。
(2) キーボードから正の整数が入力され、入力促進文字列(プロンプト)を表示し
入力待ちを行い、入力された整数をint参照型引数nに入れて戻る関数inputを作成
マニュピュレータやscanfを使用しないこと。
(3)8個のintへの参照引数を持つsortという名称のvoid関数を作成
左からみてある引数が負ならそれを含めた残りの引数を整列対象としない条件のもとで
引数を小さい順に整列。整列対象の数を一行一列に空白区切りで出力する。
この時atos関数を使うこと。処理記述にループ(ループ文を使うこと)があってはならない。
(4) (1)~(3)の関数を用いてmain(void)関数を実行すると,それまでに入力された正の整数を
sort関数を用いてソート/表示した後新しい整数をinput関数を用いて読み込む
ことを8回繰り返した後、入力された8個の整数を整列したものをsort関数により表示する
ようなものを作成する。for文とswitch文を使うこと。配列を使わないこと。
(5) (1)〜(4)についてそれぞれ独立にテストしたコードを作成すること
[3] MacOS-X(Leopald)/g++ 3.0/C++言語
[4] 今週末まで
[5]stdio.h stdlib.hの使用が許可される。malloc/freeの使用禁止。new/delete ([]も可)を
使うこと。取得したメモリ領域はmain関数から戻るまでに解放する一般的なC++コードの
標準に従うものとする。
426425:2009/11/27(金) 01:26:20
訂正
>(2) キーボードから正の整数が入力され、入力促進文字列(プロンプト)を表示し
>入力待ちを行い、入力された整数をint参照型引数nに入れて戻る関数inputを作成
>マニュピュレータやscanfを使用しないこと。

(2) キーボードから正の整数が入力されるまで、入力促進文字列(プロンプト)を表示し
入力待ちを行い、入力された整数をint参照型引数nに入れて戻る関数inputを作成
マニュピュレータやscanfを使用しないこと。
427デフォルトの名無しさん:2009/11/27(金) 01:37:49
428>>358 ◆DBNFZzxhyk :2009/11/27(金) 12:21:58
>>364さんがやって下さったのですが、>>358のテキストの解例のようにならないので、どなたかもう一度お願いします・・・
429デフォルトの名無しさん:2009/11/27(金) 13:02:14
>>428 85行目 if (s != NULL) { return; } を、 if (s == NULL) { return; }
430デフォルトの名無しさん:2009/11/27(金) 17:12:17
[1]C言語演習
[2] コマンドラインで与えられた整数を読み取りその総和を返す関数を作りなさい。
但し、一つでも数字でない文字列が与えられた場合はその文字列を表示し、計算できない
ことをメッセージ出力する。整数は64ビット符号付き整数の範囲とし与えられた数が
その範囲に収まらない場合や総和の計算の途中でそうなる場合も、オーバーフローする
旨メッセージ出力すること。
[3] OS:WIndows Vista コンパイラ:Visual studio 2005 言語:C言語
[4] 12/1まで
[5] 使用するライブラリが少ない程高い評価が付くそうです。
時間的に辛いので丸投げします。よろしくお願いします
431422:2009/11/27(金) 18:21:12
432デフォルトの名無しさん:2009/11/27(金) 20:17:03
[1] 授業単元:暇なヤシ集まれ
[2] 問題文(含コード&リンク):
 最大10桁の数字列sと 10000 以下の正整数dが
 与えられたとき、sの各数字を並べ替えて出来る全
 ての数の中で、dで割り切れる数の総数を求める。

 計算例) s, d => 解
 ・ 000, 1 => 1
 ・ 1234567890, 1 => 3628800
 ・ 123434, 2 => 90
[3] 環境: C, C++ どちらでも可
[4] 期限:無期限
[5] その他の制限:
 出来る限り速いアルゴリズムでお願いします。
 総当りしか思い付きません・・・orz
433デフォルトの名無しさん:2009/11/27(金) 20:48:08
>>432
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
void hoge(int *number, int *is_used, int size, int d, long long value, int *count){
int i, prev=-1;
for(i=0;i<size;i++){
if(is_used[i] || prev==number[i]) continue;
is_used[i]=1;
hoge(number, is_used, size, d, value*10+number[i], count);
is_used[i]=0;
prev=number[i];
}
if(prev<0 && value%d==0) *count+=1;
}
int cmp(const int *a, const int *b){return *a-*b;}
void fuga(char *s, int d){
int number[10], is_used[10]={0}, count=0, i;
for(i=0;i<10 && s[i];i++){
if(!isdigit(s[i])) return;
number[i]=s[i]-'0';
}
qsort(number, i, sizeof(int), (int (*)(const void*,const void*))cmp);
hoge(number, is_used, i, d, 0LL, &count);
printf("%s, %d => %d\n", s, d, count);
}
int main(void){
fuga("000", 1);
fuga("1234567890", 1);
fuga("123434", 2);
return 0;
}
434 ◆DBNFZzxhyk :2009/11/27(金) 21:08:00
>>429
表示されました、ありがとうございます。
435デフォルトの名無しさん:2009/11/27(金) 23:06:22
[1] 授業単元:C言語とアルゴリズム
[2] 問題文(含コード&リンク):
課題1 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10193.txt
課題2 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10192.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:明日11:30までに

よろしくお願いします。
436431:2009/11/27(金) 23:24:02
>>365
訂正します。
http://codepad.org/qS3Gh6kJ
437デフォルトの名無しさん:2009/11/28(土) 01:17:53
>>435
http://codepad.org/7dntfMeW
http://codepad.org/l5bQp6Jr
即興とはいえ情けなくなるほど汚いソースだorz
438デフォルトの名無しさん:2009/11/28(土) 01:21:40
1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10181.txt

[3] 環境
 [3.1] OS:Linux (emacsで作成して、ktermでコンパイルするやつです。)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月29日17:00

こちらもどうかよろしくお願いいたします。。
439デフォルトの名無しさん:2009/11/28(土) 01:32:52
440デフォルトの名無しさん:2009/11/28(土) 01:33:39
>>438
課題2
#include<stdio.h>

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

scanf("%d", &n);
for(i=0;i<n;i++)
{
printf("%*s", n-1-i, "");
for(j=0;j<i*2+1;j++) printf("*");
printf("\n");
}

return 0;
}
441439:2009/11/28(土) 01:36:36
インクルード忘れてるし最初のfor文でnじゃなくて5使ってるし・・・///////
442デフォルトの名無しさん:2009/11/28(土) 02:05:45
443デフォルトの名無しさん:2009/11/28(土) 02:11:17
// 係数すべてゼロの場合は方程式成り立つんじゃね?っと
#include <stdio.h>
#include <math.h>
int main(void) {
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
if (b == 0) {
if (c == 0) {
printf("x=任意の複素数\n");
} else {
printf("解なし\n");
}
} else {
printf("x=%f\n", -c/b);
}
} else {
double D = b*b - 4*a*c;
if (D < 0) {
printf("x=%f%+fi, x=%f%+fi\n", -b/(2*a), sqrt(-D)/(2*a), -b/(2*a), -sqrt(-D)/(2*a));
} else if (0 < D) {
printf("x=%f, x = %f", (-b+sqrt(D))/(2*a), (-b-sqrt(D))/(2*a));
} else {
printf("x=%f\n", -b/(2*a));
}
}
return 0;
}
444442:2009/11/28(土) 02:43:25
>>443
そういやそうだ
指摘さんくす
445デフォルトの名無しさん:2009/11/28(土) 11:51:12
>>378 >>383
本当に困っています。
見ていたらよろしくお願い致します。
446デフォルトの名無しさん:2009/11/28(土) 12:12:36
>>445
その人が仮に見ていても、恐らく良心から意図的に捨ててるだろうよ。
そして恐らく再度やってくれることも無いと思われ。
ファイルで個人情報、企業情報が入っていない部分だけ再度アップして、
やってくれる人が他にまだ居るかどうか確かめてみたらどう?(俺はPASS
だし本人でもない)
447デフォルトの名無しさん:2009/11/28(土) 16:39:58
>>437さん
ありがとうございました!!
448デフォルトの名無しさん:2009/11/28(土) 17:29:57
俺はFORTRANで書かれた有限要素法のプログラムをC言語に
移植した事がある

そんなに大きなプログラムではなかったがそれでも3日かかった

仕事でやったから問題なかったが、個人的に頼むと料金が発生すると
思うよ3日もかかるんじゃ
449デフォルトの名無しさん:2009/11/28(土) 18:52:46
うん個人でFORTRANプログラムをCに直接移植したりしようとすると
著作権関係の料金がかかるかもな
450デフォルトの名無しさん:2009/11/28(土) 20:10:11
>>449
その逆もあるので大部分は相殺だよ
ただそれぞれの言語の長所が生かせていないものを交換
する場合を除いて徒労に終わるケースが多いけど
451デフォルトの名無しさん:2009/11/28(土) 22:47:32
[1]やさしいC言語
[2] 4つの数を大きさの小さい順に並べ替える関数 Sort4(int *a,int *b.int *c,int *d)
(呼び出し後a<=b<=c<=dとなる)を作り、この関数を利用してキーボードから4つ
の整数を読み取り、大きい順に出力するプログラムを作りなさい。
Sort4関数の中ではループ文(while/do while/for)を用いないこと
[3]
OS :Windows XP
コンパイラ:Borland C++ 5.5.1
言語:C言語
[4] 12/8迄
[5] stdio.h string.hのみを利用 文字列入出力にはfgets/fprintfのみを使うこと。
malloc関数は利用出来ない。テキストファイルの行数、行内文字数に制限は無い。
452451:2009/11/28(土) 22:49:16
[5]は他の人の課題の写し間違いでした。無視して下さい
よろしくです
453451:2009/11/28(土) 22:56:05
すみません。問題文の最後の1文が抜けてました
>またライブラリ関数を含め、外部関数を呼び出してはならない
を追加してください。度重なる追加修正すみませんでした
454デフォルトの名無しさん:2009/11/28(土) 23:08:09
>>451
#include<stdio.h>

void Sort4(int *a, int *b, int *c, int *d)
{
if(*a>*b) *a^=*b,*b^=*a,*a^=*b;
if(*c>*d) *c^=*d,*d^=*c,*c^=*d;
if(*a>*c) *a^=*c,*c^=*a,*a^=*c;
if(*b>*d) *b^=*d,*d^=*b,*b^=*d;
if(*b>*c) *b^=*c,*c^=*b,*b^=*c;
}

int main(void)
{
int a, b, c, d;

while(scanf("%d%d%d%d", &a, &b, &c, &d)==4)
{
Sort4(&a, &b, &c, &d);
printf("a=%d b=%d c=%d d=%d\n", a, b, c, d);
}

return 0;
}
455451:2009/11/28(土) 23:57:13
>>454
ありがとうございました。動作を確認しました。
できれば ^=をどうして使っているのか教えて下さると嬉しく思います。
456デフォルトの名無しさん:2009/11/29(日) 00:20:53
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10195.txt
[3] 環境
[3.1] OS: Windows/vista
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語: C++
[4] 期限: 2009/12/31まで

よろしくお願いします。
457デフォルトの名無しさん:2009/11/29(日) 01:54:19
>>455
454じゃないけどXOR交換アルゴリズムといわれている手法
http://ja.wikipedia.org/wiki/XOR%E4%BA%A4%E6%8F%9B%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
同じ数字が1組以上あると正常に動作しないことに注意
458デフォルトの名無しさん:2009/11/29(日) 01:59:37
[1] 基礎プログラミング実習

[2]99文字までの文字列を入力し,アルファベットの小文字は大文字に,アルファベットの大文字は小文字に,
またアルファベット以外の文字はアスタリスク’*’に変換した文字列を出力するプログラムを作成せよ.

[3] microsoft visual c++ 2008
[4]月曜日に提出です
[5]以下、実行結果です。

99文字以下の文字列を入力してください.abcABC123sDFgh#"x32YY=

変換された文字列はABCabc***SdfGH**X**yy*です.


追伸:
ちなみにどうやらアスキーコードを使うらしいです。
大文字のコードに32を足せば小文字のコードになるとか言ってました。
これを使わなければいけないようです。
あとライブラリ関数は使用不可です。
文字列とかやったの初めてです。

どうかお願いします。
459デフォルトの名無しさん:2009/11/29(日) 02:01:38
>>458
自分ではここまではなんとか書きました。

#include<stdio.h>
int main(void)
{
char x[100];
int i;
printf("99文字以下の文字列を入力してください");
scanf("%s",x);
for(i=0;;i++)
if(x[i]==0)
break;
printf("変換された文字列は%sです.",x[100]);
}

自分でも何してるのかあんまりわからないです…
460デフォルトの名無しさん:2009/11/29(日) 02:13:36
#include<stdio.h>
void convert(char* x, int len){
 for (int i=0; i<len; i++){
  if ( ('a' <= x[i]) && (x[i] <= 'z') )
   x[i] -= 32;
  else if ( ('A' <= x[i]) && (x[i] <= 'Z') )
   x[i] += 32;
  else
   x[i] = '*';
 }
}
int main(void)
{
char x[100];
int i;
printf("99文字以下の文字列を入力してください");
scanf("%s",x);
convert(x, 99);
printf("変換された文字列は%sです.",x[100]);
}
461デフォルトの名無しさん:2009/11/29(日) 02:24:46
void convert(char* x, int len)とか&&とかって何ですか?
すいません、習ってなくてよくわからなくて…
includeとint main(void)の間にプログラムとか入れたんですね。
正直よくわかりませんが…、まだ習い始めて二ヶ月程度経ってすらなくて…
462デフォルトの名無しさん:2009/11/29(日) 02:26:57
>>460
全角スペースは使うな。
あと、実行したらどうなるか考えてから書き込め
463デフォルトの名無しさん:2009/11/29(日) 02:29:35
>>459
#include <stdio.h>

int main(void)
{
int i;
char x[100];

scanf("%s", x);

for(i=0; x[i]; i++) {
if('a'<=x[i] && x[i]<='z') x[i] -= 32;
else if('A'<=x[i] && x[i]<='Z') x[i] += 32;
else x[i] = '*';
}

printf("%s", x);

return 0;
}
464デフォルトの名無しさん:2009/11/29(日) 02:30:08
…すいません、どうやらC言語でかかないといけないようです…
465デフォルトの名無しさん:2009/11/29(日) 02:32:51
なんでこいつらコンパイルしないの?w
466463:2009/11/29(日) 02:35:56
>>465
こいつらって俺も入ってるのか?
どこがおかしいか教えてくれ
467466:2009/11/29(日) 02:39:12
ごめんなさい。僕が無知でした
468465:2009/11/29(日) 02:39:53
ごめんなさい。僕が無知でした
469デフォルトの名無しさん:2009/11/29(日) 02:40:04
できました、こんなに早くできるとは驚きです。
本当に有難うございます。

少し気になるのですが、ifの後の()にある&&と””はどういう意味ですか?
いつも私は(;;)という感じで書きますので…
470デフォルトの名無しさん:2009/11/29(日) 02:49:12
if()に(;;)って書くのか?w
471デフォルトの名無しさん:2009/11/29(日) 02:52:03
>>470
…すいません、私の勘違いでした。forと間違いました。
でも&&とか''は使ったことないので、意味とかを教えていただければ助かります。
472デフォルトの名無しさん:2009/11/29(日) 02:56:52
げげっ、げろげろ〜!
473デフォルトの名無しさん:2009/11/29(日) 03:07:05
&&は論理演算子
474デフォルトの名無しさん:2009/11/29(日) 06:40:15
いくら初心者といってもこの程度の意味は授業で習ってるだろ?
475デフォルトの名無しさん:2009/11/29(日) 08:55:52
【質問テンプレ】
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10196.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Borland C++ 5.5.1
 [3.3] 言語:C
[4] 期限:[2009年11月30日23:00まで]
[5] その他の制限:問題参照

自分でも考えたのですが分岐やループが複雑になってしまって駄目でした
よろしければお願いします
476デフォルトの名無しさん:2009/11/29(日) 09:14:45
>>474
本当に授業でやってないんだ…
477デフォルトの名無しさん:2009/11/29(日) 09:14:52
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int k, m, n, q, r;

do { scanf("%d", &n); } while(n==1);

k=2;
while(1) {
m = k * k;
if(m > n) {
printf("%d", n);
exit(1);
}
q = n / k;
r = n % k;
if(r) k++;
else {
printf("%d ", k);
if(q==1) exit(1);
n = q;
}}
return 0;
}
478デフォルトの名無しさん:2009/11/29(日) 09:22:31
>>475 問題文のままだと素因数分解できないので少し変えた
#include<stdio.h>
int main(void){
int k, m, n, q, r;
step1: do{
printf("\nInput n : ");
scanf("%d", &n);
}while(n<=1);
step2: k=2;
step3: m=k*k;
step4: if(n<m){
printf("%d\n", n);
exit(1);
}
step5: if(n>=m)
{
q=n/k;
r=n%k;
}
step6: if(r!=0){
k++;
goto step3;
}
step7: if(r==0) printf("%d*", k);
step8: if(q==1){
exit(1);
}else{
n=q;
goto step4;
}
return 0;
}
479デフォルトの名無しさん:2009/11/29(日) 10:02:16
>>475
この手の宿題って、アルゴリズムを手順に分解するときに無駄が多いよなあ。
個人的には↓のようにしたいところだが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10198.c
480デフォルトの名無しさん:2009/11/29(日) 10:29:46
>>475
> 自然数Nが素因数分解できるとき、N≧G^2となる素因数Gが存在することが数学的に証明されている
本当ですか?
17 >= 4 * 4
481デフォルトの名無しさん:2009/11/29(日) 10:30:27
>>477
ありがとうございました
助かります
>>478
goto文も一つ一つにラベルをつけてやると処理がわかりやすいですね
>>479
そんな単純に記述できるんですね
勉強になりました
482デフォルトの名無しさん:2009/11/29(日) 10:32:40
>>480
テキストの問題通りだとすればそう記述されています
483デフォルトの名無しさん:2009/11/29(日) 10:33:40
>>480
17は素因数分解出来るのかい。
484480:2009/11/29(日) 10:33:55
ん、かんちがい。 >>479 が美しい。
485デフォルトの名無しさん:2009/11/29(日) 10:46:25
最後に一つだけ>>475の問題についてです(4)の文はnがm未満が正しい記述ですよね?
486デフォルトの名無しさん:2009/11/29(日) 11:23:32
[1] 授業単元:C言語演習
[2] 問題文: 1〜100までの数字を繰り返し入力し、最後に0を入力するとこれまでに
入力された値の合計値を表示するプログラムを作成しなさい。ただし
1〜100以外の数字が入力されたときは”エラー”と表示させる。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 12月10日

どなたか、よろしくお願いします。
487デフォルトの名無しさん:2009/11/29(日) 13:07:49
>>486
#include<stdio.h>
int main(){
int n,sum = 0;
scanf("%d",&n);
while(n >= 1 && n <= 100){
sum = sum + n;
scanf("%d",&n);
}
if(n == 0)
printf("%d\n",sum);
else
printf("エラー\n");
}
488デフォルトの名無しさん:2009/11/29(日) 13:15:53
[1] 授業単元:C++
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10199.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語: C++
[4] 期限: 2009年11月29日24:59分まで

本日までなのでよろしくお願いします。
489デフォルトの名無しさん:2009/11/29(日) 14:11:49
>>487さん

遅ればせながら、ありがとうございました。
490デフォルトの名無しさん:2009/11/29(日) 14:44:46
#include <iostream>
using namespace std;

int main() {
int m=48,n=36,t,i;

for(i=0;;i++) {
cout << "m" << i << " " << m << " n" << i << " " << n << '\n';
if(!(t=m%n))
break;
m=n;
n=t;
}
cout << "n" << i << "=" << n << '\n';

return 0;
}

ユーグリッドの互除法で、最大公約数を求めたプログラムなんですが、本当にお願いします。プログラムは書けたんですが、誰かこれのフローチャートを教えてください…これのフローチャートがかけないんです。しかも、テストに出るらしいです。これを書くのが

始まりと終わり→楕円
処理を行う→四角
判断を行う→ひし形
です
491デフォルトの名無しさん:2009/11/29(日) 15:23:46
>>490
Googleあたりで、"ユークリッドの互除法 フローチャート"で検索すればいくらでも出てくると思う。
492デフォルトの名無しさん:2009/11/29(日) 17:21:54
493デフォルトの名無しさん:2009/11/29(日) 17:25:16
同じ余算を条件式とループ内で2回繰り返すのは無駄
494デフォルトの名無しさん:2009/11/29(日) 17:41:11
そう思うならコードで語れ。
495デフォルトの名無しさん:2009/11/29(日) 17:45:50
while(g3 = g1 % g2) {
g1 = g2;
g2 = g3;
}
496デフォルトの名無しさん:2009/11/29(日) 17:47:23
>>484
短くかいてるけど、効率としては格段に落ちるものが美しいとかw
497デフォルトの名無しさん:2009/11/29(日) 18:30:00
[1] 授業単元:C
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10200.txt
[3] 環境
 [3.1] OS:Windows vista
 [3.2] bcc5.5.1
 [3.3] 言語:C
[4] 期限:2009年11月30日16時
[5] その他の制限:問題文参照

よろしくお願いします
498デフォルトの名無しさん:2009/11/29(日) 18:34:45
CPUの実行ステップ数が効率の全てだと思い込んでる人多いよね。
499デフォルトの名無しさん:2009/11/29(日) 20:32:39
コプロセッサも使い切りたい?
500デフォルトの名無しさん:2009/11/29(日) 21:09:58
>>497
stdio.hしか使ったらだめなの?
501デフォルトの名無しさん:2009/11/29(日) 21:13:38
>>497
>while(*p++) p2-=2;
なんなんだよ、これはw

下のから考えると

while(*p2) p2++;
p2--;

だろw
502デフォルトの名無しさん:2009/11/29(日) 21:23:07
>>501に加えて、
このwhileループだとp2のアドレスがNULL文字まで移動するんで
while抜けた後にポインタ一つ戻す(p2--)とよい。
(そうしないと反転後のpの先頭文字がNULL→空文字列扱いとなる)
あくまで既存のソースを再利用するなら、だけどね。
503デフォルトの名無しさん:2009/11/29(日) 21:25:29
501は戻してるようにしか見えないが?
504423:2009/11/29(日) 21:26:16
本当にお願いします。もう時間が迫っているんです…
505デフォルトの名無しさん:2009/11/29(日) 21:27:31
どなたか>>456をお願いしますm(_)m
506デフォルトの名無しさん:2009/11/29(日) 21:27:54
>>503
うん。今気づいた。死にたい。
507デフォルトの名無しさん:2009/11/29(日) 21:42:30
>>456
void read_data_file(char*file){
int i, n;
FILE *fp;

fp = fopen(file, "r");
fscanf(fp, "%d", &n);

for(i=0; i<n; i++) fscanf(fp, "%d", W + i);
for(i=0; i<n; i++) fscanf(fp, "%d", P + i);

fclose(fp);
}

void write_data_file(char*file,int N){
int i;
FILE *fp;

fp = fopen(file, "w");

fprintf(fp, "%d\n", N);
for(i=0; i<N*2; i++) fprintf(fp, "%d\n", rand() % 100 + 1);

fclose(fp);
}

508デフォルトの名無しさん:2009/11/29(日) 21:56:58
>>475
よく考えると、qが1になることってありえなくね?
509デフォルトの名無しさん:2009/11/29(日) 22:01:25
>>491
自分が作ったそのプログラムを基にしないといけないし、しかも、あったけど記号とかも台形とかだったりするんですよ…
テストにでるみたいだから誰か本当に教えてください
510デフォルトの名無しさん:2009/11/29(日) 22:08:58
>>500
stdio.hのみでお願いします
>>501
正直よくわかっていないのでプログラム書いていただけたら幸いです

511デフォルトの名無しさん:2009/11/29(日) 22:09:34
フローチャートを簡単に書き込み方法がない以上、
回答はあんまり期待できないと思うぜ
512デフォルトの名無しさん:2009/11/29(日) 22:11:33
>>510
void reverse(char *p)
{
char *p2 = p, tmp;

while(*p2) p2++;

while(p < --p2) {
tmp = *p;
*p++ = *p2;
*p2 = tmp;
}
}
513デフォルトの名無しさん:2009/11/29(日) 22:24:25
>>512
なるほど
とても参考になりました
感謝します
514デフォルトの名無しさん:2009/11/29(日) 22:33:16
もうひとつ聞きたいのですが>>512
char *p2 = p, tmp;と宣言していますが

char *p2,tmp;
*p2=p;
とした場合、移植性のないポインタ変換とエラーが出て

char *p2,tmp;
p2=p;
には問題がないのはなぜでしょうか
ポインタについてはまだわからないところが多いのでつまらないことでしたらスルーしてもらってもかまいません
515デフォルトの名無しさん:2009/11/29(日) 22:39:08
>>490
変数初期化

ループ開始

mとnの値を出力

m/nの余りが0か→(Yes)ループ抜ける→nの値を出力
↓(No)
m=n
n=除算の余り
←ループに戻る

これだけでいいんじゃね?
516デフォルトの名無しさん:2009/11/29(日) 22:39:16
*p2に代入していいのはchar型変数だから、pを代入すると警告が出る。

宣言時の初期化char *p2 = p; は
char *p2;
p2 = p;
と同じ意味で、
char *p2;
*p2 = p;
とは全くの別物。
517デフォルトの名無しさん:2009/11/29(日) 22:40:43
>>516
勉強になります
本当にありがとうございました
518デフォルトの名無しさん:2009/11/29(日) 22:43:47
ポインタ変数を宣言するときにアスタリスク使うのと、
ポインタが指すアドレスの"値"を取得するのにアスタリスク使うのとで混乱しやすい。
519デフォルトの名無しさん:2009/11/29(日) 22:55:01
[1] 授業単元:Webプログラム
[2] 問題文(含コード&リンク): 2つの浮動小数点型(double型)の値を
「気温(度)」「湿度(%)」を表す値として2つの因数で受け取り
それらの値によって求められた不快指数の値(double型)を戻り値とする
関数をfukaiという関数で作成。
さらに、このfukai関数を利用し、キーボードから気温と湿度を入力すると
不快指数の値を表示するプログラムを作成。
体感を表す言葉として、不快指数が60未満で[cold],60以上75未満[comfort]
75以上[discomfort]と表示するようにすること。

※気温をt 湿度をhとすると
不快指数=0.81×t+0.01×h×(0.99×t−14.3)+46.3
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2009年11月30日22:00まで

どうかお願いします。
520デフォルトの名無しさん:2009/11/29(日) 22:58:35
>>509
授業で教えられた形状でないとだめなら友達からノートでも借りないとむり
521デフォルトの名無しさん:2009/11/29(日) 23:05:48
522デフォルトの名無しさん:2009/11/29(日) 23:08:17
>>521
ありがとうございます
523デフォルトの名無しさん:2009/11/29(日) 23:13:05
>>519
#include <stdio.h>

double fukai(double temp, double humidity)
{
return 0.81 * temp + 0.01 * humidity * (0.99 * temp - 14.3) + 46.3;
}

int main()
{
double temp, humidity, discomfort_index;

printf("気温(度) = ");
scanf("%lf", &temp);

printf("湿度(%) = ");
scanf("%lf", &humidity);

discomfort_index = fukai(temp, humidity);

printf("不快指数 = %f\n", discomfort_index);

if (discomfort_index < 60.0)
puts("[cold]");
else if (discomfort_index < 75.0)
puts("[comfort]");
else
puts("[discomfort]");

return 0;
}
524デフォルトの名無しさん:2009/11/29(日) 23:13:50
>>520
やり方は何でもいいんですが、
始まりと終わり→楕円
処理を行う→四角
判断を行う→ひし形
ならいいんです…
525デフォルトの名無しさん:2009/11/29(日) 23:16:58
どなたか>>314はできないでしょうか…?
もし可能ならばお願いします
526490:2009/11/29(日) 23:22:22
http://imepita.jp/20091129/840870
もう本当にダメです。誰か教えてください。絶対間違ってますので
527デフォルトの名無しさん:2009/11/29(日) 23:23:19
[1] 授業単元: 上級プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10201.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: C++
[4] 期限: 11月30日16:00まで
[5] その他の制限: 問題文を参照

よろしくお願いします
528デフォルトの名無しさん:2009/11/29(日) 23:23:59
>>524
Googleとかで調べたページに記号の説明ぐらい書いてあるでしょ
置換することもできない?
529デフォルトの名無しさん:2009/11/29(日) 23:24:11
>525
大抵の遺伝的プログラミング/アルゴリズムの解説書には載っていると思うけど
簡単めのだったら

伊庭 斉志 著『Cによる探索プログラミング 基礎から遺伝的アルゴリズムまで』
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06730-3
でも読んだらいいよ

いまからでも間に合う、書店に急げ
530デフォルトの名無しさん:2009/11/29(日) 23:32:58
フローチャートならEXCELで描けるんじゃないの?
531490:2009/11/29(日) 23:42:21
>>528
このプログラムを基にして作らないといけないじゃないですか
532デフォルトの名無しさん:2009/11/29(日) 23:59:11
>>531
目的のプログラムのフローチャートがそのまま落ちてる訳無いだろ
そのくらい自分の頭使え
533490:2009/11/30(月) 00:15:27
>>532
テストに同じ問題出るから焦ってるんです助けてください
534デフォルトの名無しさん:2009/11/30(月) 00:16:49
プログラムが「書けた」のなら、それをフローチャートにするのもそう難しいことじゃない。
535デフォルトの名無しさん:2009/11/30(月) 00:17:52
>533
覚えた解答は意味が無い
本質を見極めろ
536490:2009/11/30(月) 00:25:42
誰か本当に助けてください。お願いします。別にテストで点取れればそれでいいです
537デフォルトの名無しさん:2009/11/30(月) 00:28:30
>>534
そんなわかり切ってること言うなよ
538デフォルトの名無しさん:2009/11/30(月) 01:12:07
539デフォルトの名無しさん:2009/11/30(月) 01:24:33
>>527
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10203.txt

済みません多分題意に沿ってないプログラムですが一応動くので

考え方を何回四でもよく意味がわかりませんでした
540デフォルトの名無しさん:2009/11/30(月) 01:40:14
>>490
プログラムをそのままフローチャートにした
ttp://www1.axfc.net/uploader/Img/so/66309.jpg
541540:2009/11/30(月) 01:42:33
「i+=1」は「i++」のほうがいいかも
542デフォルトの名無しさん:2009/11/30(月) 01:58:38
>>527です
>>539ありがとうございます

問題見直したら、先ほどの問題に不備がありました・・・訂正後問題↓↓↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10204.txt
行列が2つとも5×5で指定されていました。
申し訳ありません
考え方のところは私も読めば読むほど混乱しまって・・・

是非、時間があるかたよろしくお願いします。
543デフォルトの名無しさん:2009/11/30(月) 02:46:54
>>542
いや4×4が5×5になったとしてもちょっといじるだけですぐ出来る
んだけど、aとbという二つの行列があって、題意に沿えばa,b両方
とも使わなければならないんだけど、それとは別に捉えてa^(-1)と
b^(-1)とdetAとdetBを求めるのでもいいんだね?

それかA^(-1)Bを求めるのかよくわからない

とにかく自分で適当に判断して書くよ
考え方がよくわからないので
544デフォルトの名無しさん:2009/11/30(月) 02:59:53
>>542
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10205.txt

ほい
これで0点という事はないと思うが考え方に沿ってないので
減点されるかもしれん
答えは合ってるはずなので
545デフォルトの名無しさん:2009/11/30(月) 03:39:41
>>544
ありがとうございます。
とても助かりました
546デフォルトの名無しさん:2009/11/30(月) 06:54:51
フローチャートの人からものすごくゆとり臭が漂ってくる
547デフォルトの名無しさん:2009/11/30(月) 07:06:34
プロシージャフローダイアグラムとデータフローダイアグラム
どちらが処理の記述に適しているか判定するアルゴリズムはある?
548デフォルトの名無しさん:2009/11/30(月) 08:14:52
>>507
ありがとうございました!
549365:2009/11/30(月) 08:49:49
>>431
お手数おかけしました。
仕様と若干(標準入力ではない)異なるようですが、これは
何とかなりそうです。感謝です。
550デフォルトの名無しさん:2009/11/30(月) 11:24:22
[1] 授業単元: プログラミングU
[2] 問題文(含コード&リンク):

2進数と10進数の相互変換のプログラムを作る。
自作関数として変換(計算)部分と入力部分とを分ける。
正負の数、少数も変換できるようにする。
入力はScanfを使用する。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C言語
[4] 期限: 2009年12月01日まで
[5] その他の制限: 特にありません。

期限が明日と短いですが、よろしくお願いします。
551431:2009/11/30(月) 12:34:14
>>549
>>365
こりは申し訳ない。再度訂正いたします。標準入力からよみとります。
http://codepad.org/Kj2UIIJb
552デフォルトの名無しさん:2009/11/30(月) 12:39:40
ポインタ変数について詳しく教えてください
553デフォルトの名無しさん:2009/11/30(月) 14:55:45
>>487
なんですけれど、間違っていませんか?
実行できませんが…
554デフォルトの名無しさん:2009/11/30(月) 14:59:34
char *name[] = {"Item1","Item2","Item3"};

name[]の配列数を調べるにはどうすれば良いでしょうか?
555デフォルトの名無しさん:2009/11/30(月) 15:41:17
>>554
sizeof(name)/4てのはどう?

#include <iostream>
int main()
{
char *name[] = {"Item1","Item2","Item3"};
int n = sizeof(name)/4;
std::cout << n << std::endl;
for(int i=0;i<n;i++){
std::cout << name[i] << std::endl;
}

return 0;
}
556デフォルトの名無しさん:2009/11/30(月) 16:19:41
>554
要素数だよね
sizeof name/sizeof name[0]
sizeof name/sizeof*name

[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
配列の要素数をコンパイル時にに求めるマクロを作成することを考える

ここで、
#define numberof(Array) \
(sizeof(*Array)?sizeof(Array)/sizeof(Array[0]):0u)

#define numberof_(Array)\
(sizeof(Array)/sizeof(0[Array]))
を定義し

int array[4][16]について
numberof(array)とnumberof_(array)
およびnumberof(array + 0)とnumberof_(array + 0)
の予想されるそれぞれの値とコンパイル結果について考察してください
特にnumberof_(array + 0)の値については
(array + 0)の型を示した上で値を求めた計算式を示てください
また、追加の課題としてできる人はnumberof()の問題点を指摘し、
改良方法を詳しく示すようにあります、お願いします

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: cc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
 [3.3] 言語: C言語
[4] 期限:[2009年11月30日23:59まで]
[5] その他の制限:特に無し
557デフォルトの名無しさん:2009/11/30(月) 16:48:25
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10207.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:visual Studio 2008
 [3.3] 言語: C言語
[4] 期限: 12月1日午前9時
[5] その他の制限:テキストファイル内に記載しました。

急で申し訳ありませんが、よろしくお願い致します。
558デフォルトの名無しさん:2009/11/30(月) 16:52:09
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10207.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:visual Studio 2008
 [3.3] 言語: C言語
[4] 期限: 12月1日午前9時
[5] その他の制限:テキストファイル内に記載しました。

急で申し訳ありませんが、よろしくお願い致します。
559デフォルトの名無しさん:2009/11/30(月) 16:54:32
>>558 2重書き込みです。すみません。
560デフォルトの名無しさん:2009/11/30(月) 17:00:42
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
int型整数の4乗を返す関数
int pow4(int x)
を作成せよ。(ただし関数powは使用しない)

(実行例)
整数を入力してください:5
その4乗値は625です。


[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: emacsでつくり、ktermでコンパイルするやつです
 [3.3] 言語: C言語
[4] 期限:[2009年12月1日18時まで]
[5] その他の制限:特に無し

どうぞよろしくお願い致します。

561デフォルトの名無しさん:2009/11/30(月) 17:09:03
562デフォルトの名無しさん:2009/11/30(月) 17:17:31
563デフォルトの名無しさん:2009/11/30(月) 17:44:00
>>561さん
ありがとうございます、非常に助かりました。
564デフォルトの名無しさん:2009/11/30(月) 18:27:01
いんてじゃーーーー!なんでや
565デフォルトの名無しさん:2009/11/30(月) 20:16:42
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10209.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12月1日まで
どなたかお願いしますm(_ _)m
566デフォルトの名無しさん:2009/11/30(月) 20:44:12
[1] 授業単元:プログラミング演習
[2] 問題文:
文字をキーボードから入力させ、英大文字は英小文字に変換して、英小文字は英大文字に変換して
その他の文字はそのまま出力するプログラムを作成しなさい。文字の入力にはgetchar関数を、
出力にはputchar関数を必ず使用し、文字の変換には標準ライブラリを使用しないこと。
なお、入力する文字は「Programing 1」とし、Ctrl+Dで入力終了とする
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12月2日まで
[5] その他の制限: コンソール入出力というところまで習っています
急ですみませんがよろしくお願いします
567432:2009/11/30(月) 21:22:47
>>433
遅くなって、ゴメンなさい。
質問から30分ですか、速いですね!
ただ、そのプログラムは重複順列の総当りですよね?

後出しで申し訳ありませんが、
以下の例題を1秒以内で解きたいのです。
(先頭行は出題の個数)
----- 入力 -------------------------
10
1234567890 10
1357986420 11
9451358855 1169
3512689124 572
1265324600 5123
3210246982 3631
3202320321 1234
9999444422 913
1232156985 9865
3596956842 124
----- 出力 -------------------------
362880
316800
70
1818
98
158
8
12
60
3758
568デフォルトの名無しさん:2009/11/30(月) 21:36:31
>>565
#include<stdio.h>

int main(void)
{
int i, year;
double riritu;
long gankin, risoku=0, goukei;

printf("%-28s: ", "元金[円]を入力してください");
scanf("%ld", &gankin);
printf("%-28s: ", "年利[%]を入力してください");
scanf("%lf", &riritu);
printf("%-28s: ", "預金年度を入力してください");
scanf("%d", &year);

goukei=gankin;
printf("+------+----------+----------+\n");
printf("| %4s | %8s | %8s |\n", "年度", "利息", "元利合計");
printf("+------+----------+----------+\n");
for(i=0;i<=10;i++)
{
printf("| %4d | %8.0ld | %8ld |\n", year+i, risoku, goukei);
risoku=goukei*(riritu/100);
goukei+=risoku;
}
printf("+------+----------+----------+\n");

return 0;
}
569デフォルトの名無しさん:2009/11/30(月) 22:20:56
>>567
参考までに >>432 の環境で >>433 だとどのくらい時間がかかるの?

CPU : Atom N270 1.6GHz (HT有効)
OS : WindowsXP Home SP3 32bit
コンパイラ : gcc (MinGW 3.4.5)
コンパイルオプション : -O2

>>567 の問題を解くと 4.2秒 くらいだから
早いマシンなら普通に1秒切るんじゃないの?
570デフォルトの名無しさん:2009/11/30(月) 23:02:37
[1] 授業単元: プログラミング実習
[2] 問題文:基数変換
  すべての実数(整数、小数で+-含む)10→2、2→10に変換せよ。
  このとき、入力部と出力部を関数化せよ。
[3] 環境
 [3.1] OS:Linux (emacsで作成して、gccでコンパイルするやつです。)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月1日17:00

どうかよろしくお願いいたします。。
571デフォルトの名無しさん:2009/11/30(月) 23:04:36
1] 授業単元: プログラミング実習
[2] 問題文:基数変換
  すべての実数(整数、小数で+-含む)10→2、2→10に変換せよ。
  このとき、入力部と出力部を関数化せよ。
[3] 環境
 [3.1] OS:Linux (emacsで作成して、gccでコンパイルするやつです。)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月1日17:00

どうかよろしくお願いいたします。。
572432:2009/11/30(月) 23:53:26
>>569
2.5秒でした

CPU: Celeron 2.2GHz
OS: XP Home SP3 (メモリ512MB)
コンパイラ: gcc 4.4.0 (MinGW)
最適化オプション: -O2

これより速いマシンでも1秒切るのは、多分きついと思います。
573デフォルトの名無しさん:2009/12/01(火) 00:01:28
>>572
普通に1秒切ったけど・・・

CPU Phenom II X4 945
メモリ 8GB
OS Win7x64
コンパイラ VC++2008
最適化オプション等 デフォルト
574432:2009/12/01(火) 00:26:51
>>573
あらら、最近のマシンは速いねぇ〜w
64bit だからかな?(ハードは詳しくないので間違ってたらゴメン)

コンマ何秒か、計測できますか?
できたら、参考までに教えてください。
575デフォルトの名無しさん:2009/12/01(火) 00:29:30
マシンの速さのチェックには向かない問題
576デフォルトの名無しさん:2009/12/01(火) 00:30:55
実行マシン指定しないで絶対値で速度比較してもほとんど意味ないと思うんだが
577デフォルトの名無しさん:2009/12/01(火) 00:32:10
マシンの総合スペックを求めるのは>>365の問題あたりで、1Gバイトを超える
テキストを読み込ませて正常に落ちず(メモリが足りない場合はその旨報告
して終了)に動作するかとかでチェックだろうな
578デフォルトの名無しさん:2009/12/01(火) 01:09:47
>>573
のスペックだとそのうち6G位のテキストファイル丸ごと読み込ませされそうだな
579デフォルトの名無しさん:2009/12/01(火) 10:17:21
571
どなたかよろしくお願いいたします。。
580デフォルトの名無しさん:2009/12/01(火) 12:02:27
>>555-556
お礼遅くなりましたが
ありがとうございました
581デフォルトの名無しさん:2009/12/01(火) 12:12:01
C++です。

文字列を二次元配列に保存するにはどうしたらよいのでしょうか?

ユーザに名前を読み込む人数を入力させた後、名前を人数分入力してその名前を二次元配列に保存したいです。

const int max_mojisu = 20;
cout << "生徒の数を入力してください";
cin >> member;

char ninzu[menber][max_mojisu];                       ←上で人数を入力させて、配列の要素の制限に使おうとするとエラーが・・・

cout << "生徒の名前を入力していっていください" << endl;
cin.getline( )                                    ←()内の書き方がわかりません・・・

わかりにくいと思いますがよろしくお願いします。
582デフォルトの名無しさん:2009/12/01(火) 12:43:03
std::vector<std::string> ninzu(member);
getline(cin,ninzu);
583デフォルトの名無しさん:2009/12/01(火) 12:50:45
for(int i=0;i<member;++i)getline(cin,ninzu[i]);
だった
584デフォルトの名無しさん:2009/12/01(火) 13:04:55
>> 571
http://codepad.org/ciNZ5KWN

やってみた。
エラーチェックとかはしてないので,注意してください。
585584:2009/12/01(火) 13:07:46
>>571
問題文をチェックしてみたら,「+」を忘れてたことに気付いた。
勘弁してね。
586デフォルトの名無しさん:2009/12/01(火) 13:15:03
>>584
ありがとうございます!
587デフォルトの名無しさん:2009/12/01(火) 16:55:39
>>570
バカな質問かもしれないので、恐る恐る聞くのですが、
浮動小数点数の実装されたもののビット表現は2進数と呼ぶのですか。
588デフォルトの名無しさん:2009/12/01(火) 16:56:25
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10211.txt
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: VC++2008
 [3.3] 言語: C++
[4] 期限: 12/1 23;59
[5] その他の制限:

お願いします。
589デフォルトの名無しさん:2009/12/01(火) 17:13:30
[1]C言語入門
[2] 3つの整数x,y,zを入力し、これらを引数として、大きい順に入れ替えて返す関数をつくれ。ただしポインタ変数を用いること。
main関数は整数の入力と結果の表示のみにする。

[3.1] Linux
[3.2] gcc 3.4
[3.3] C
[4] 2009/12/7/15:00
[5] 特になし。

よろしくお願いします
590デフォルトの名無しさん:2009/12/01(火) 17:31:13
[1]C言語実習
[2] 覆面算 SEND+MORE=MONEYを解くプログラム(各字は数字を表す)
2進数から16進数の場合について、解がある時は一つずつ進数を明示した上で
表示。但しいずれの場合も最上位桁は0ではないものとする。
[3] OS:Windows XP 言語C( Visual studio)
[4] 12/15迄
[5]特に無し
591デフォルトの名無しさん:2009/12/01(火) 17:54:35
>>587
IEEE形式だと、実数は符号ビット+仮数部+指数部で構成され
仮数部と指数部の内部表現は2進数で表現されている。
仮数部は最上位を省略とかしてたりするから詳細は下で
http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0
592590:2009/12/01(火) 18:00:03
2進数==>8進数
の間違いでした。ミスを訂正します
593デフォルトの名無しさん:2009/12/01(火) 18:09:48
594デフォルトの名無しさん:2009/12/01(火) 18:56:55
>>588
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10214.c

課題(2)
任意の数字と桁数を入力し、桁数に該当する整数を出力する関数を各自で定義し結果を出力するプログラムを書け。
例えば数字に123456789と入力し、桁数を5とした場合下5桁の5を出力する関数。
595デフォルトの名無しさん:2009/12/01(火) 19:14:29
>>588
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10215.c

課題(3)
課題(1)の整数を配列形式で定義し、同様に最大値、最小値、平均値を出力するプログラムを書け。
(余力があれば分散も考えてみよ)
596デフォルトの名無しさん:2009/12/01(火) 19:27:54
>>432
>>433 とは違うやり方
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10216.c
俺の環境では多少速くなった
597デフォルトの名無しさん:2009/12/01(火) 20:26:45
588です。回答ありがとうございました。
申し訳ないのですがC++の方でもお願いできないでしょうか
598デフォルトの名無しさん:2009/12/01(火) 20:56:40
http://www.dnj.ynu.ac.jp/kageilab/kagei/lecture/CPP_exerc_net/CPP_exerc_1.html
問題1.5を教えてください。

変数の代入を使って入れ替えるにはどうすればいいのでしょうか?
599デフォルトの名無しさん:2009/12/01(火) 20:57:50
>>430
当方の環境は Windows XP/cygwin、処理系は gcc 4.3.2 です。
http://codepad.org/TgmK9FF5
コマンドラインの各数をいったん正の数としてとりこみ10進2進変換→符号反転を行うため、負の最小の数 -9223372036854775808 は overflow 扱いになります。
600デフォルトの名無しさん:2009/12/01(火) 21:11:10
601デフォルトの名無しさん:2009/12/01(火) 21:23:58
>>597
(2) http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10218.cpp
(3) http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10217.cpp

(2)の方,ファイル上のコメントが間違ってるけど,気にしないで.
C++流っぽくないかも.
602デフォルトの名無しさん:2009/12/01(火) 21:33:54
>>598

例えば,元がa : 1, b: 2とすると,これをa: 2, b: 1とすればゴールです.
単純にa = b; b = aとやったのでは,a = 2, b = 2となってしまいます.
なので,もう一つ変数を用意して,消えてしまう値をそこに入れておきます.

というのが,そこの「ヒント」にかかれていることです.
603598:2009/12/01(火) 21:43:38
わかりました
604デフォルトの名無しさん:2009/12/01(火) 21:57:28
[1] 授業単元:
[2] 問題文(含コード&リンク):https://www.ioi-jp.org/JOI/auth/showForm.action?id=t4&term=pr
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: VC++2008
 [3.3] 言語: C
[4] 期限: 特になし
[5] その他の制限:

得点を比較するプログラムです
最初に書いてあるscanfは、比較する回数を入力して、
ループの中に入ってからのscanfは、比較する数字を入力して、大きい方に1を足して
最後にはカウントした数字を出力します

#include<stdio.h>
int main(){
int a,c=0,b,d=0,n,m;
scanf("%d",&n);
for(m=0;m<n;m++){
scanf("%d %d",&a,&b);
if(a > b) c++;
else if(a < b) d++;
}
printf("%d %d",c,d);
return 0;
}

こういうプログラムを考えました
ファイルから数字を読み込むプログラムに変えたいのですが、
どうすればファイルから読み込むことが出来るようになりますか?
少し席を外しますが、俺は必ず言います お願いします
605デフォルトの名無しさん:2009/12/01(火) 22:00:23
俺は×
お礼は○
です
606デフォルトの名無しさん:2009/12/01(火) 22:07:32
>>604
リンク先は認証が必要で読んでないのですが….
ファイルから読みたいのなら,ファイルをオープンするところからはじまります.

こちらの記事などいかがでしょうか.
「第17章 ファイル入出力 - 初心者のためのポイント学習C言語」
http://www9.plala.or.jp/sgwr-t/c/sec17.html
607デフォルトの名無しさん:2009/12/01(火) 22:10:45
>>601
ご丁寧にありがとうございました。
608デフォルトの名無しさん:2009/12/01(火) 22:18:28
[1] 授業単元:C言語とアルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10219.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:明日11:30までに

よろしくお願いします!

>>435なのですがエラーがたくさん出てきて実行できなかったのでやってもらえないでしょうか?
申し訳ございません。
609デフォルトの名無しさん:2009/12/01(火) 22:38:03
>>608

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10220.c

課題1-2は,このプログラムのsearch_print()を少し修正すればよいだけなので,簡単でしょう.
610デフォルトの名無しさん:2009/12/01(火) 22:43:12
>>606さん

問題
A さんと B さんがゲームで対戦した.対戦は N 回にわたって行った.各回の対戦において,
より高い点数を獲得した人がその回の勝者となる.
すなわち,第 i 回目の対戦で
A さんの点数が B さんの点数より大きければ第 i 回目は A さんの勝ち,
B さんの点数が A さんの点数より大きければ B さんの勝ち,
同点の場合はどちらの勝ちにもならない.
N 回の対戦における A さんと B さんの点数が与えられたとき,
A さんと B さんがそれぞれ何回勝ったかを出力するプログラムを作成せよ.

入力
入力は 1+N 行からなる.
1 行目には対戦の回数 N (1 ≦ N ≦ 1000000) が書かれている.
2 行目以降の i+1 行目 (1 ≦ i ≦ N) には i 回目の対戦における A さんと B さんの点数が空白区切りで書かれている.
各々の点数は 0 以上 100 以下の整数である.

出力
出力は 1 行からなる. A さんが勝った回数と B さんが勝った回数をこの順に空白で区切って出力せよ.



となっています
入力データ2までとかならまだ件数が少ないので良いのですが、
入力データ5になると1万件の入力データがあるのでファイルを読み込む以外は無いと思いました

そのサイトに行ってもどうすればいいか良く解りませんでした
ですので、書き方ではなくてソースを書いてください お願いします
611デフォルトの名無しさん:2009/12/01(火) 22:59:05
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10222.txt
[3]環境
 [3.1] OS:Vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:明後日

よろしくお願い致します
612デフォルトの名無しさん:2009/12/01(火) 23:02:44
>>610
ファイルからの入力についての質問ということで良いでしょうか.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10221.c
こちらをご覧ください.

ファイル上のコメントにファイルのフォーマットを記述しておきました.
すなわち,各行にAのポイントとBのポイントが,スペースで区切られているようなフォーマットです.
入力は,効率よく,うまくやろうと思うとすっっっごく面倒くさいので,よくある書き方の一例で許してください.

以下は実行の様子です.
ちゃんとin.txtから読み込めていることがわかります.

Z:\test>gcc -Wall test.c

Z:\test>a in.txt
A: 10, B:100
A: 20, B: 15
A: 2, B: 0
A: 121, B: 14

Z:\test>
613デフォルトの名無しさん:2009/12/01(火) 23:07:53
>>610
リダイレクトすれば変更なしでいける
614デフォルトの名無しさん:2009/12/02(水) 00:43:49
>>611

http://codepad.org/gimueiJ2

Goto文とかせこい手使ってるけど気にしないでほしい。
615デフォルトの名無しさん:2009/12/02(水) 00:47:49
>>611
インクルードファイルがコピペできてなかった

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

メンゴ
616デフォルトの名無しさん:2009/12/02(水) 02:29:05
>>610
なぁ、認証が必要な、現在進行形の公式な問題を公開してもいいのか?
617デフォルトの名無しさん:2009/12/02(水) 03:17:14
普通は解答サイトへの認証ブロックが設けられるのが先で
問題そのものに設けられるのは、それだけ教育現場での
競争が激しいってことの証しかもな。
自分で解く能力よりか、いかに他人の助けを借りて総合的に
問題解決が出来るかがIT時代以後の能力評価基準になって
るわけだし。(もちろんこれは破綻への道でしかないが)
でこういうスレがそれを煽っているとw
どんなに簡単な問題でも貼られてから24時間は解答を敢
えて貼らないというのはそろそろ不文律にしたほうがいい
んでね?質問者の設定した締め切り時刻の24時間以内
ってのが理想だとオモ
618デフォルトの名無しさん:2009/12/02(水) 03:19:21
999.99以下の3行3列の正の実数データを入力してください

data[0][0]の値? 350.23
data[0][1]の値? 1.0
data[0][2]の値? 503.25
data[1][0]の値? 625
data[1][1]の値? 3.1415
data[1][2]の値? 50.27
data[2][0]の値? 999
data[2][1]の値? 750.75
data[2][2]の値? 0

ここまでデータ入力
集計の結果は次のとおりである.

350.23 1.00 503.25 : 854.48

625.00 3.14 50.27 : 678.41

999.00 750.75 0.00 : 1749.75

=================================

1974.23 754.89 553.52 : 3282.64

続行するには何かキーを押してください . . .

となるようなプログラムをうっているのですが…
619デフォルトの名無しさん:2009/12/02(水) 03:19:56
他人の力を借りて ×
自分の力を極力使わず ○
620619:2009/12/02(水) 03:21:29
>>618の修正ね
621デフォルトの名無しさん:2009/12/02(水) 03:22:13
長いので二回ぐらいに分けて質問します。
私は今、

999.99以下の3行3列の正の実数データを入力してください

data[0][0]の値? 350.23
data[0][1]の値? 1.0
data[0][2]の値? 503.25
data[1][0]の値? 625
data[1][1]の値? 3.1415
data[1][2]の値? 50.27
data[2][0]の値? 999
data[2][1]の値? 750.75
data[2][2]の値? 0

集計の結果は次のとおりである.

350.23 1.00 503.25 : 854.48
625.00 3.14 50.27 : 678.41
999.00 750.75 0.00 : 1749.75
=================================
1974.23 754.89 553.52 : 3282.64

続行するには何かキーを押してください . . .



のように表示されるプログラムを作っているのですが、
622619:2009/12/02(水) 03:22:27
>>617だった(連投スマソ)
623デフォルトの名無しさん:2009/12/02(水) 03:45:46
よくわからないので教えて下さい。
点プレには沿いたくありません
624デフォルトの名無しさん:2009/12/02(水) 05:12:40
今回だけだぞ
>>621
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 3
int main(void)
{
int i, j;
double data[M][N], sumcol[M] = {0.0}, sumrow[N] = {0.0}, sumall = 0.0;
printf("999.99以下の%d行%d列の正の実数データを入力してください\n\n", M, N);
for (i = 0; i < M; i++)
for (j = 0; j < N; j++) {
printf("data[%d][%d]の値? ", i, j);
scanf("%lf", &data[i][j]);
}
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
printf("%.2f ", data[i][j]);
sumcol[i] += data[i][j];
sumrow[j] += data[i][j];
}
printf(": %.2f\n", sumcol[i]);
}
puts("=================================");
for (i = 0; i < N; i++) {
printf("%.2f ", sumrow[i]);
sumall += sumrow[i];
}
printf(": %.2f\n\n", sumall);
return 0;
}
625デフォルトの名無しさん:2009/12/02(水) 05:16:38
一行抜けてた
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 3
int main(void)
{
int i, j;
double data[M][N], sumcol[M] = {0.0}, sumrow[N] = {0.0}, sumall = 0.0;
printf("999.99以下の%d行%d列の正の実数データを入力してください\n\n", M, N);
for (i = 0; i < M; i++)
for (j = 0; j < N; j++) {
printf("data[%d][%d]の値? ", i, j);
scanf("%lf", &data[i][j]);
}
puts("\n集計の結果は次のとおりである.\n");
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
printf("%.2f ", data[i][j]);
sumcol[i] += data[i][j];
sumrow[j] += data[i][j];
}
printf(": %.2f\n", sumcol[i]);
}
puts("=================================");
for (i = 0; i < N; i++) {
printf("%.2f ", sumrow[i]);
sumall += sumrow[i];
}
printf(": %.2f\n\n", sumall);
return 0;
}
626デフォルトの名無しさん:2009/12/02(水) 05:18:19
https://www.ioi-jp.org/
俺も登録して誰かに解いてもらおうかな
627デフォルトの名無しさん:2009/12/02(水) 07:19:43
>>626
回答者に報酬がないものか。小遣いかせぎしたいもの。
628デフォルトの名無しさん:2009/12/02(水) 07:23:19
[1] 授業単元:
[2] 問題文(含コード&リンク):粒子の数値計算
[3] 環境
 [3.1] OS:Linux
 [3.2] g++
 [3.3] 言語:C++
[4] 期限: 早めに
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10223.cpp
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10224.cpp
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10225.c
3つめのcファイルはhファイルに変えてください

うまく位置の更新ができなくて困っています。同じ値が繰り返しでてきます。
あと100個の位置データをでるようにしているはずですがなぜか69個しかでてきません

よろしくおねがいします
629デフォルトの名無しさん:2009/12/02(水) 07:49:20
>>600
ありがとうございます!
630デフォルトの名無しさん:2009/12/02(水) 08:10:00
国語の先生に数学は兎も角理科の問題まで聞かれても困る
というのが実際のところだろw
しかも「早めに」だし....
一般論だけであるという但し書き付きだがアドバイス

テンプレートクラスの多用はバグのもと。余程慣れてないと
特有の癖(言語文法の制約からくるもので作者が下手という
わけではない)がバグを誘発する。
せっかくC++で書いているんだから、出来る限りすべて
クラス化して記述。(インスタンスを作らないクラスを
mainで呼び出す)
あと大事なこと。「おかしいな」と思ったら余りしつこく追求せず
そのコードを潔く捨てて忘れて1から書き直すこと。急がば回れ。
631デフォルトの名無しさん:2009/12/02(水) 13:41:15
>>614-615
サンキューベリーマッチ!
632デフォルトの名無しさん:2009/12/02(水) 14:10:28
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10226.txt
[3]環境
 [3.1] OS:Vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:明日

どういう意味かわかりません・・・よろしくお願いします
633デフォルトの名無しさん:2009/12/02(水) 14:24:18
void intary_rcpy(int v1[], const int v2[],int no){
int i;
for(i=0;i<no;i++) v1[i]=v2[no-1-i];
}
で動けばラッキーだと思え
634デフォルトの名無しさん:2009/12/02(水) 14:24:27
>>532 要素数がnoであるint型の配列v2の並びを逆順にしたものを配列v1に格納する関数
http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/32
635デフォルトの名無しさん:2009/12/02(水) 15:29:20
>>566をどなたかお願いします
636デフォルトの名無しさん:2009/12/02(水) 15:35:33
637デフォルトの名無しさん:2009/12/02(水) 15:36:02
>>635
アンカーミス?
638ああああ:2009/12/02(水) 16:07:19
【質問テンプレ】
[1] 授業単元:大学の授業
[2] 問題文(含コード&リンク):したにまとめて書きました
[3] 環境
 [3.1] OS: (Windows/Linux/等々) windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) ビジュアルスタジオ2005??
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) Cでおねがいします
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) なるべく早く
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) ありません

したにつづく
639ああああ:2009/12/02(水) 16:09:40
1:originalファイルから、シミュレーション範囲(数値)を読み取り、insertedファイルにコピー
2:absorbalファイルから、水分子の各原子の位置(座標)を読み取る


3:2の座標をランダムに発生させた数(ランダムに発生させた数の範囲は0以上originalファイルから読み込んだ範囲まで)だけ平行移動し、insertedファイルに書きたす
  3は入力されたn回繰り返す

4:3の結果をinsertedファイルに書き足し、そのあとendを2回書きこみ終了


以下のコードではシミュレーション範囲は読み取れているが乱数発生時に反映されていない
また、水分子の位置も毎回同じになっている→これを改善したい

つづく
640ああああ:2009/12/02(水) 16:11:27
#include<stdafx.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#include<iostream> //substr関数用
#pragma warning(disable : 4192) //警告を制御
#pragma warning(disable : 4996)
int main(void)
{
/*ファイルアドレス記憶用のポインタ変数*/
FILE*fp_original; //シュミレーション範囲(長さや角度など)のoriginal.carファイル用
FILE*fp_absorbal; //挿入したい分子構造のabsorbal.carファイル用
FILE*fp_inserted; //insertedファイル=original.carファイル+absorbalファイルを基に計算を行った結果


printf("デバッグ22行目\n");

/*使用する3つのファイル(original,absorbal,inserted)の準備*/
//↓マテスタで作った、シュミレーション範囲(長さや角度など)の.carファイル(original.car)を読み込む(書きたせてはいけない)
fp_original=fopen("original.car","r"); //r:読み込み、テキストモード

//↓マテスタで作った、挿入したい分子構造の.carファイル(absorbal.car)を読み込む(書きたせなくてよい)
fp_absorbal=fopen("absorbal.car","r");



641ああああ:2009/12/02(水) 16:12:21
#include<stdafx.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#include<iostream> //substr関数用
#pragma warning(disable : 4192) //警告を制御
#pragma warning(disable : 4996)


int main(void)
{


/*ファイルアドレス記憶用のポインタ変数*/

FILE*fp_original; //シュミレーション範囲(長さや角度など)のoriginal.carファイル用
FILE*fp_absorbal; //挿入したい分子構造のabsorbal.carファイル用
FILE*fp_inserted; //insertedファイル=original.carファイル+absorbalファイルを基に計算を行った結果
642ああああ:2009/12/02(水) 16:20:20
すいません。上に書いたコードは間違いです…
テンプレの内容は同じですが、よろしくお願いします。

つくりたいプログラムの説明
1:originalファイルをそのままinsertedファイルにコピー
2:absorbalファイルから01,H1,H2原子の座標を引っ張り出し、
それに発生させた乱数(乱数の範囲は0〜insertedのシミュレーション範囲まで)
を加え、その結果をinsertedファイルに書き足す。
2を入力した回数繰り返す

です。
各ファイルの中は以下の通り(続く)

643ああああ:2009/12/02(水) 16:25:03
つづき
!BIOSYM archive 3
PBC=ON
Materials Studio Generated CAR File
!DATE Thu Nov 19 17:13:56 2009
PBC 12.0000 12.0000 12.0000 90.0000 90.0000 90.0000 (P1)
O1 -1.741302123 -0.790912385 -6.162912333 XXXX 1 xx O 0.000
H1 -2.498841233 -1.371238949 -6.162123933 XXXX 1 xx H 0.000
H2 -0.983761232 -1.378123949 -6.161232933 XXXX 1 xx H 0.000
O2 -4.566621230 -1.546123478 -4.791230741 XXXX 1 xx O 0.000

シミュレーション範囲は12.0000 12.0000 12.0000 です。


644デフォルトの名無しさん:2009/12/02(水) 17:55:26
リンク使えよ
645デフォルトの名無しさん:2009/12/02(水) 19:47:49
質問者は

http://codepad.org/

これつかったほうがいいと思う
646デフォルトの名無しさん:2009/12/02(水) 20:04:46
ふざけて質問してるのかと思った
647デフォルトの名無しさん:2009/12/02(水) 20:14:46
>>645
問題をアップするのだから codepad は使えないのでは?
テンプレどおりでいいと思います。
むしろ回答側で codepad にて身の潔白を証明するのがいいかと。
648デフォルトの名無しさん:2009/12/02(水) 20:34:15
>>647
Plain Textってのもあるみたいだよ.
649デフォルトの名無しさん:2009/12/02(水) 20:43:12
>>633-634
ありがとうございまっする
650ああああ:2009/12/02(水) 20:57:11
643のつづきです

absorbalファイルの中!BIOSYM archive 3
PBC=OFF
Materials Studio Generated CAR File
!DATE Thu Nov 05 15:15:30 2009
O1 -10.396332 -8.568939 -2.443329 XXXX 1 xx O 0.000
H1 -11.153873 -9.156903 -2.443329 XXXX 1 xx H 0.000
H2 -9.638791 -9.156903 -2.443329 XXXX 1 xx H 0.000
end
end


651ああああ:2009/12/02(水) 20:59:11
codepad使いこなせませんでした…

連投で申し訳ありませんが非常に困っておりますのでよろしくお願いします!!
652デフォルトの名無しさん:2009/12/02(水) 21:12:51
#include <iostream>
#include <cmath>
using namespace std;

int main() {
double a,b,c;
cin >> a >> b >> c;

if(a==0) {
cout << (-c/b) << '\n';
}
else if((b*b-4*a*c)<0) {
cout << (-b/2/a) << 'i' << sqrt(4*a*c-b*b)/2/a << '\n';
}
else {


}

return 0;
}

C++で二次方程式のプログラムを作るんですが条件は虚数解、実数解、a=0の時で分けるんですが最後のelseの下にcoutの文一行だけ書いてないんですが教えてくれませんか
653デフォルトの名無しさん:2009/12/02(水) 21:58:41
2次方程式の解の公式って、中学生で習うんだっけ?
654デフォルトの名無しさん:2009/12/02(水) 22:01:22
>>651
アンカーすら付けて無いから、650に気付かない人は多いだろうな。
本当に困っているなら尚更、テンプレ>>1にある掲示板に問題を書き込むべし。
655デフォルトの名無しさん:2009/12/02(水) 23:13:04
>>653
高校ですよ
656デフォルトの名無しさん:2009/12/02(水) 23:16:08
#include <iostream>
#include <cmath>
using namespace std;

int main() {
  double a,b,c,D;

  cin >> a >> b >> c;
  if(a==0) {
    if(b!=0)
      cout << (-c/b) << '\n';
  }
  else {
    D = b*b-4*a*c;
    if(D < 0) {
      cout << -b/(2*a) << "±" << sqrt(-D)/(2*a) << "*i" << endl;
    }
    else {
      cout << -b/(2*a) + sqrt(D)/(2*a) << ", ";
      cout << -b/(2*a) - sqrt(D)/(2*a) << endl;
    }
  }
  return 0;
}
657デフォルトの名無しさん:2009/12/02(水) 23:33:56
>>656
ありがとうございます

これのフローチャートを最後に誰か教えてくれませんか?

開始と終了→楕円
処理を行う→四角
判断を行う→ひし形
でお願いします
658デフォルトの名無しさん:2009/12/02(水) 23:42:21
>・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
ここまで教えてあげないといけないの?
659デフォルトの名無しさん:2009/12/02(水) 23:58:42
628ですが一部抜粋

#include <iostream>
#include <cstdlib>

double uniformed_rand(void)
{
return (rand()+1.0)/RAND_MAX;
}

int main(void){
int n=100;
double r=1.0;
double x,y,z;

for(n=0;n<100;n++)
{
x=(uniformed_rand()*2-1)*r;
y=(uniformed_rand()*2-1)*r;
z=(uniformed_rand()*2-1)*r;
if(x*x+y*y+z*z<r*r) n++;
std::cout << x << " " << y << " " << z<< std::endl;
}

return 0;
}

これで100個のデータが出て欲しいんですが69個しかでてきません
原因はどこにあるんでしょうか?
660デフォルトの名無しさん:2009/12/03(木) 00:12:19
>>659
n++ が多い
661デフォルトの名無しさん:2009/12/03(木) 00:27:55
>>660
n++消したら69個にはならなくなりましたが180個くらいになってしまいます。
たびたびすいません
662デフォルトの名無しさん:2009/12/03(木) 00:32:00
>>661
15c15
< for (n = 0; n < 100; n++) {
---
> for (n = 0; n < 100;) {
19c19
< if (x * x + y * y + z * z < r * r)
---
> if (x * x + y * y + z * z < r * r) {
21c21,22
< std::cout << x << " " << y << " " << z << std::endl;
---
> std::cout << x << " " << y << " " << z << std::endl;
> }
663デフォルトの名無しさん:2009/12/03(木) 00:45:57
>>662
ありがとうございます
解決致しました
感謝します
664デフォルトの名無しさん:2009/12/03(木) 03:20:42
[1] C言語
[2] 問題文(含コード&リンク):
問題1 unsigned int型の引数を1つ持ち, その値を2進数で印字する戻
値のない関数, print_bin() を作成し, 動作を確認できるプロ
グラムとして作成して rep07.c として提出せよ。
ただし, putchar() 以外のライブラリ関数を使用してはなら
ない。
問題2 double型の配列とint型の引数を持ち, double型の戻値を持つ関
数を考える。第一引数のdouble型の配列の要素数が第二引数で
与えられるとして, 第一引数のdouble 型の配列に格納されてい
る値のうち最大のものを戻値として返す関数 max_d_array() を
作成し, 動作確認できるプログラムとして作成して rep08.c と
して提出せよ。
ただし, max_d_array() 内部ではいかなる関数も呼んではな
らず, 制御構文としては while()文, if()文, return文のみを
用いて実装しなければならない。do-while()文, for()文,
switch-case文, goto文, 条件式(三項演算子?:)は使ってはなら
ない。三項演算子以外の各種演算子と変数は自由に使って良い。
問題3 
標準入力からの入力に対して、アルファベットの文字を3文字ず
らして標準出力に出力するシーザー暗号化プログラムを作成し
て、rep09.c として提出せよ。具体的には, 小文字に対しては
a -> d, b -> e, ..., w -> z, x -> a, y -> b, z -> c なる
変換である。もちろん大文字に関しても同様の変換処理をしな
ければならない。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語: C
[4] 期限: h21 12月4日 13時 まで
[5] その他の制限:特になし
665デフォルトの名無しさん:2009/12/03(木) 04:05:21
666デフォルトの名無しさん:2009/12/03(木) 07:12:40
>>664
問題2
#include <stdio.h>

double max_d_array(double *p, int n)
{
double max = *p;

while(--n) if(max < *++p) max = *p;

return max;
}

int main(void)
{
double a[] = {1,2,3,4,5};

printf("%f\n", max_d_array(a, sizeof a / sizeof *a));

return 0;
}
667デフォルトの名無しさん:2009/12/03(木) 09:18:09
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):分数クラス2
分数を扱うクラスを作成する。クラス名はBunsu。データメンバはint型でbunshiとbunboでpraivateとする。
コンストラクタにより初期化をおこなう。初期値が指定されなかったときは省略時引数ででbunshi,bunboとも1で初期化すること。
またBunsuクラスの振る舞いをテストする適切なmain関数も作成すること。1ファイルで作成してください。

作成する関数
・コンストラクタ
・演算子のオーバーロード(friend関数で作成すること)
+, -, *, /, ==, != の演算子について多重定義を行なう。演算結果は約分する。
>>と<<のオーバーロード(friend関数で作成すること)
・<<Bunsuクラスのオブジェクトをcoutで出力すると分子/分母の形式で出力する。
[3] 環境
 [3.1] OS:Windows(Vista)
 [3.2] コンパイラ名とバージョン:VisualStudio2008
 [3.3] 言語:C++
[4] 期限:[2009年12月6日22:00まで]
[5] その他の制限:とくにありません。
よろしくお願いします。
668デフォルトの名無しさん:2009/12/03(木) 10:27:25
669デフォルトの名無しさん:2009/12/03(木) 13:28:13
1] 授業単元:プログラミング演習
[2] 問題文
氏名をキーボードから入力させ、入力された文字列長を求めて画面に表示するプログラムを作りなさい。
ただし、文字列長を求めるのに標準ライブラリ関数を使用しないこと。バッファオーバーランなどが発生する
不正な入力は行われないものとする。
[3] 環境
 [3.1] Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:明後日まで
[5] その他の制限:コンソール入出力というところまで習っています。
どなたかお願いします
670デフォルトの名無しさん:2009/12/03(木) 16:17:04
671デフォルトの名無しさん:2009/12/03(木) 17:30:39
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
関数としてy=sinx,y'=sinx+xcosxを取り上げ、f'(x)=sinx+xcosxの値を数値微分による方法から計算するプログラムを作成し
解析値と比較してみよ。ただしh=0.1とし、0≦x≦πとせよ。
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみ
[4] 期限: (2009年12月5日10:00まで]
[5] その他の制限:特にはありません。

すいませんが、よろしくお願いします。
672デフォルトの名無しさん:2009/12/03(木) 18:22:19
>>671
f(x) を求めるのですか?それとも f ' (x) ? ∫f(x)dx ?
なにを求めるのか教えてください。
673デフォルトの名無しさん:2009/12/03(木) 20:30:13
[1] 授業単元:プログラミング
[2] 問題文:並べ替え部分を関数(ポインターを用いる)にして書き直す。
元のプログラム↓

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10231.txt
[3] 環境
 [3.1] OS: Windows xp
 [3.2] VC 6.0
 [3.3] 言語: C
[4] 期限: 12月5日
[5] その他の制限:特にないです
674デフォルトの名無しさん:2009/12/03(木) 20:53:07
>>673
ほとんど答えが書いてあるような問題だけど・・・

#include<stdio.h>

void swap(int *l, int *r)
{
int tmp;
tmp=*l;
*l=*r;
*r=tmp;
}

int main(void)
{
int n1,n2;

puts("2つの整数を入力してください。");
printf("整数A:"); scanf("%d",&n1);
printf("整数B:"); scanf("%d",&n2);
swap(&n1, &n2);
puts("これらの値を交換しました。");
printf("整数Aは%dです。\n",n1);
printf("整数Bは%dです。\n",n2);
return 0;
}
675デフォルトの名無しさん:2009/12/03(木) 21:15:12
>>156 ちょっと見てから提出したほうがいい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10232.cpp
676デフォルトの名無しさん:2009/12/03(木) 22:47:39
>>672
遅レスすいません。
f'(x)を求める問題です。
677デフォルトの名無しさん:2009/12/03(木) 23:12:17
[1] 授業単元:プログラミング演習
[2] 1.サンプルプログラムを参考に乱数によって生成した20個の数字を配列に入れ、バブルソートによって小さい順に表示するプログラムを作成せよ。
2.サンプルプログラムを参考乱数によって生成した20個の数字を配列に入れ、バブルソートによって大きいものから順に表示するプログラムを作成せよ。
3.キーボードから次々に整数を入力し、入力のたびにそれまでに入力した数字を小さい順に表示するプログラムを作成せよ。数字は10個入力したらプログラムは終了するようにすること.
4.0から1までのdouble型の数字を20個乱数によって生成し、小さい順に表示するプログラムを作成せよ。
5.以下の英単語を辞書順に(アルファベット順に)ソートによって並べ替えて表示するプログラムを作成せよ。すべての4文字の単語であることを利用してもよい。

mane, malt, mama, mark, mare, maid, made, mach, many, mess, meat, neat, like, lime, limb

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10230.txt
 [3.1] WindowsXP
 [3.2] turbo C
 [3.3] C++
[4] 今週中
[5] 1、2番は乱数の生成がわからなかったのでできませんでした。よろしくおねがいします。
678デフォルトの名無しさん:2009/12/03(木) 23:13:27
[1] 授業単元:プログラミング演習
[2] 1.サンプルプログラムを参考に乱数によって生成した20個の数字を配列に入れ、バブルソートによって小さい順に表示するプログラムを作成せよ。
2.サンプルプログラムを参考乱数によって生成した20個の数字を配列に入れ、バブルソートによって大きいものから順に表示するプログラムを作成せよ。
3.キーボードから次々に整数を入力し、入力のたびにそれまでに入力した数字を小さい順に表示するプログラムを作成せよ。数字は10個入力したらプログラムは終了するようにすること.
4.0から1までのdouble型の数字を20個乱数によって生成し、小さい順に表示するプログラムを作成せよ。
5.以下の英単語を辞書順に(アルファベット順に)ソートによって並べ替えて表示するプログラムを作成せよ。すべての4文字の単語であることを利用してもよい。

mane, malt, mama, mark, mare, maid, made, mach, many, mess, meat, neat, like, lime, limb

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10230.txt
 [3.1] WindowsXP
 [3.2] turbo C
 [3.3] C++
[4] 今週中
[5] 1、2番は乱数の生成がわからなかったのでできませんでした。よろしくおねがいします。
679デフォルトの名無しさん:2009/12/03(木) 23:14:20
[1] 授業単元:プログラミング演習
[2] 1.サンプルプログラムを参考に乱数によって生成した20個の数字を配列に入れ、バブルソートによって小さい順に表示するプログラムを作成せよ。
2.サンプルプログラムを参考乱数によって生成した20個の数字を配列に入れ、バブルソートによって大きいものから順に表示するプログラムを作成せよ。
3.キーボードから次々に整数を入力し、入力のたびにそれまでに入力した数字を小さい順に表示するプログラムを作成せよ。数字は10個入力したらプログラムは終了するようにすること.
4.0から1までのdouble型の数字を20個乱数によって生成し、小さい順に表示するプログラムを作成せよ。
5.以下の英単語を辞書順に(アルファベット順に)ソートによって並べ替えて表示するプログラムを作成せよ。すべての4文字の単語であることを利用してもよい。

mane, malt, mama, mark, mare, maid, made, mach, many, mess, meat, neat, like, lime, limb

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10230.txt
 [3.1] WindowsXP
 [3.2] turbo C
 [3.3] C++
[4] 今週中
[5] 1、2番は乱数の生成がわからなかったのでできませんでした。よろしくおねがいします。
680デフォルトの名無しさん:2009/12/03(木) 23:19:30
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):以下のURLにあるプログラムが、どこがどういう風になってこの書き方になっているのか説明
して頂ける方を募集してます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10233.txt


[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:大至急
[5] その他の制限:特に制限はないです
681デフォルトの名無しさん:2009/12/04(金) 00:08:37
>>679

5.以下の英単語を辞書順に(アルファベット順に)ソートによって並べ替えて表示するプログラムを作成せよ。
http://codepad.org/bIdj4pYj
682デフォルトの名無しさん:2009/12/04(金) 00:11:13
>>679
乱数は,#include <stdlib.h>してrand()したらOK.
srand()するとなおよい.
683671:2009/12/04(金) 00:19:24
671ですがどなたかお願いできませんか?
684デフォルトの名無しさん:2009/12/04(金) 00:22:13
>>683
> y=sinx,y'=sinx+xcosx
2つの関数じゃないなら、これって矛盾してないかい?
685671:2009/12/04(金) 00:31:41
>>684
y'はただyの式を微分しただけなので特に矛盾はないと思うんですが
ただ正直、私も題意を理解できなかったのでここに書かせてもらいました…

686デフォルトの名無しさん:2009/12/04(金) 00:44:23
y=xsinxの間違いじゃないんですか
687デフォルトの名無しさん:2009/12/04(金) 00:47:53
[1] 授業単元:プログラミング演習
[2] 1.サンプルプログラムを参考に乱数によって生成した20個の数字を配列に入れ、バブルソートによって小さい順に表示するプログラムを作成せよ。
2.サンプルプログラムを参考乱数によって生成した20個の数字を配列に入れ、バブルソートによって大きいものから順に表示するプログラムを作成せよ。
3.キーボードから次々に整数を入力し、入力のたびにそれまでに入力した数字を小さい順に表示するプログラムを作成せよ。数字は10個入力したらプログラムは終了するようにすること.
4.0から1までのdouble型の数字を20個乱数によって生成し、小さい順に表示するプログラムを作成せよ。
5.以下の英単語を辞書順に(アルファベット順に)ソートによって並べ替えて表示するプログラムを作成せよ。すべての4文字の単語であることを利用してもよい。

mane, malt, mama, mark, mare, maid, made, mach, many, mess, meat, neat, like, lime, limb

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10230.txt
 [3.1] WindowsXP
 [3.2] turbo C
 [3.3] C++
[4] 今週中
[5] 1、2番は乱数の生成がわからなかったのでできませんでした。よろしくおねがいします。
688デフォルトの名無しさん:2009/12/04(金) 01:47:52
[1] 授業単元:
アルゴリズムとプログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10234.txt

[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
12月11日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません
689 ◆zQtEQMmE7o :2009/12/04(金) 12:32:18
[1] 授業単元:
プログラミング基礎実習
[2] 問題文(含コード&リンク):
n個の中からr個を取り出すときの組合わせの数nCrを求める関数を作成せよ。
ただし、再帰は使わないこと!(繰返し文を使う)
エラー処理(n<1、r<1の場合、n<rの場合)も考える。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年12月7日
[5] その他の制限:
演算と型、プログラムの流れの分岐、プログラム流れの繰返し、配列、関数までしか習っていません。
教科書で言うと明解C言語入門編(柴田望洋、2009年第15刷)を使っていて、その第6章までです。
よろしくお願いします。
690デフォルトの名無しさん:2009/12/04(金) 13:20:45
[1] 授業単元:
プログラミング基礎
[2] 問題文(含コード&リンク):
キーボードから実数配列a[N][N]の各要素に値を入力し、すべての要素の総和を求めるプログラムを作成せよ。
ただし、総和を求める部分はmain関数と別の関数を作ること。
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年12月7日
[5] その他の制限:
演算と型、プログラムの流れの分岐、プログラム流れの繰返し、配列、関数の中でお願いします。
691デフォルトの名無しさん:2009/12/04(金) 15:08:05
>>687
> [5] 1、2番は乱数の生成がわからなかったのでできませんでした。よろしくおねがいします。

#include <stdio.h>
#include <stdlib.h> //<---rand()のために必要

int main(void)
{
    printf("%d\n", rand());
    printf("%d\n", rand() % 100); //<---0から99の範囲で乱数を得たい場合
    return 0;
}
692デフォルトの名無しさん:2009/12/04(金) 15:53:23
693デフォルトの名無しさん:2009/12/04(金) 16:07:38
694デフォルトの名無しさん:2009/12/04(金) 17:21:22
>>693
thx
695デフォルトの名無しさん:2009/12/04(金) 20:19:40
>>674
ありがとうございます
ポインタについて勘違いていました
696デフォルトの名無しさん:2009/12/05(土) 03:48:10
はじめまして、この while loops コードを元に
2種類のコード、for loops と do...while loopsに変えていただけませんか?
よろしくおねがいします。C++です。 

#include <iostream>
#include <string>
using namespace std;
int main()
{
int firstnum, secondnum; // variable to store the number
firstnum = 0; // temp number
secondnum = 0; // temp number
while (firstnum >= secondnum) //get the first and second number until they are correct
{
cout << "PLEASE ENTER THE FIRST NUMBER: "; // ask user what to do
cin >> firstnum;
cout << endl << "PLEASE ENTER THE SECOND NUMBER:";
cin >> secondnum;
cout << endl;

if (firstnum >= secondnum) // if first number is more than second number
{
cout << "THE FIRST NUMBER MUST BE LESS THAN THE SECOND NUMBER. PLEASE TRY AGAIN." << endl << endl;
}
}
697デフォルトの名無しさん:2009/12/05(土) 03:50:11
すみません つづきです。
int i = firstnum; // variable to store the number
int evensum = 0; // variable to store the even sum
int oddsum = 0; // variable to store the odd sum
cout << endl << "ODD NUMBERS BETWEEN " << firstnum << " AND " << secondnum << endl;
while (i <= secondnum) // number is less or equal to second number
{
if (i%2 == 0) //even number
{
evensum += i; // even sum
}
else //odd number
{
cout << i << endl;
oddsum += i; // add sum
}
i++;
}
698デフォルトの名無しさん:2009/12/05(土) 03:51:10
最後のつづきです。

cout << endl << "SUM OF EVEN NUMBERS BETWEEN " << firstnum << " AND " << secondnum << ": ";
cout << evensum << endl;
i = firstnum;
cout << endl << "THE SQUARES OF THE NUMBERS BETWEEN 1 AND 10: " << endl; // numbers between firstnumber and second number
while (i <= secondnum) // number is less or equal to second number
{
if (i<=10) // number is less or equal to 10
{
cout << i << ": " << (i * i) << endl;
}
i++;
}
cout << endl << "SUM OF ODD NUMBERS BETWEEN " << firstnum << " AND " << secondnum << ": ";
cout << oddsum << endl << endl;
return 0;
}
よろしくおねがいします。
699デフォルトの名無しさん:2009/12/05(土) 04:51:20
while (firstnum >= secondnum)
→for(;firstnum >= secondnum;)
→do {} while (firstnum > secondnum);

while (i <= secondnum)
→for(;i <= secondnum;)
→do {} while(i < secondnum);
700デフォルトの名無しさん:2009/12/05(土) 06:43:28
>>688
http://codepad.org/E2Lqx0Ia

各ファイルに分割するのは自分でやってください。
それから,data.dat の仕様がわからなかったので,
適当に決めました。
なので,間違っているかもしれません。

どうでもいいけど,スタックに「プッシュダウン」って言うんかなぁ。
701デフォルトの名無しさん:2009/12/05(土) 06:59:56
適当にググっただけでもそれなりに使われてることはわかると思うけど。
702700:2009/12/05(土) 07:25:18
>>701
へー。初めて知った。
push, pop はそれぞれ,push down, pop up の略なんだね。
サンクス。
703デフォルトの名無しさん:2009/12/05(土) 16:55:39
C言語で文字列出力の「puts」を使って
改行しないにはどうすればいいでしょうか?
704デフォルトの名無しさん:2009/12/05(土) 16:57:48
putsを使わず別の関数にする
705デフォルトの名無しさん:2009/12/05(土) 19:07:42
その場合、一番最後でちゃんと改行してね
706デフォルトの名無しさん:2009/12/05(土) 20:25:18
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10236.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VS2008
 [3.3] 言語: C
[4] 期限:12月7日
[5] その他の制限: 問題文に記述してあります。

よろしくお願いします。
707デフォルトの名無しさん:2009/12/05(土) 20:36:15
>>704
ありがとうございます。
printfでも代わりに出来そうでした。
708デフォルトの名無しさん:2009/12/05(土) 23:54:11
map<string , int>に似たもので、新規単語には連番を付けて
登録単語にはその番号を返し、
さらにx[10]としたら番号の単語を返すにはどうすればいいですか。
709デフォルトの名無しさん:2009/12/06(日) 00:03:41
[1] 授業単元:C言語とアルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10227.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:明日8:30までに

よろしくお願いします!
710デフォルトの名無しさん:2009/12/06(日) 01:33:29
次のようなデータがテキストファイルで1ギガ程度あり、これを数値順にソートしたいです。
どのようにすればいいですか。

文字列 タブ 数値
・・・・・・・
・・・・・・・
711デフォルトの名無しさん:2009/12/06(日) 01:36:31
>>710
つ テンプレ
それよかデータベース板経由を推奨
712デフォルトの名無しさん:2009/12/06(日) 02:01:32
>>709
#include <stdio.h>
#define ARRAY_SIZE 100
#define LINE_NUM 10

void print_array(int a[ARRAY_SIZE])
{
int i, j;
for (i = 0; i < ARRAY_SIZE/LINE_NUM; i++) {
for (j = 0; j < LINE_NUM; j++) {
printf("%d ", a[i*LINE_NUM + j]);
}
printf("\n");
}
}

void max_sort(int a[ARRAY_SIZE])
{
int i, j, tmp;
for (i = 0; i < ARRAY_SIZE-1; i++) {
for (j = i+1; j < ARRAY_SIZE; j++) {
if (a[i] > a[j]) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
}
713デフォルトの名無しさん:2009/12/06(日) 02:03:15
>>709
続き
int main(void)
{
int a[ARRAY_SIZE] = {0};
int i, j;
for (i = 0; i < ARRAY_SIZE; i++)
{
a[i] = rand()%899 + 100;
}

puts("整列前のaの内容は次の通りです.");
print_array(a);

max_sort(a);

puts("整列後の配列aの内容は次の通りです.");
print_array(a);

return 0;
}


max_sort関数内の if (a[i] > a[j]) を if (a[i] < a[j]) にすると
課題2の答えになる
714デフォルトの名無しさん:2009/12/06(日) 12:42:34
>710 OSはWindowsか?
まず 「文字列 タブ 数値」のファイルを1行づつ読みながら「適切な空白の幅に数値 タブ 文字列」を出力するプログラムAを作り
Aの結果を sort /L C して
sortの結果を 「文字列 タブ 数値」に戻せば良い

ちなみにAで"適切な空白の幅に数値"にしないと
sortで"1","2","23","123","1234" 等がちゃんと並ばない
最大桁以上に "^^^1", "^123","1234"ってなるようにする ("^"は空白)
715デフォルトの名無しさん:2009/12/06(日) 12:50:40
>714
"タブ"を項目の区切り文字に指定できて、ソートに使うキーが何番目の項目か指定できて、
キーを数値として比較する 「ソート」プログラムを作ればおk
716デフォルトの名無しさん:2009/12/06(日) 13:02:48
10Mや精々100Mだったらその方法でもいいかも知れないが、1Gもある
ような対象になった場合は、別の問題が多数発生するんで必ずしもそれで良い
とは限らなくなってくる。
Sortプログラムの作りによってはファイルシステムの作りによっては
OSによってはオチる可能性がある。最新のWindowsとかはセキュリティー
ガードが堅いからOSは落ちないがプログラムは落ちたり著しく速度が
落ちたりするんで。
717デフォルトの名無しさん:2009/12/06(日) 13:15:38
#696です。長々とすみませんでした。
#699さんありがとうございました。簡易過ぎて私には出来ませんでした。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10237.txt
こっちで再度お願いします。
718デフォルトの名無しさん:2009/12/06(日) 13:33:41
>>717
2乗計算ってなんですか?
719デフォルトの名無しさん:2009/12/06(日) 13:47:16
>>718さん、
ごめんなさい、乗計算squareの事です。
720デフォルトの名無しさん:2009/12/06(日) 13:52:57
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):分数クラス2
分数を扱うクラスを作成する。クラス名はBunsu。データメンバはint型でbunshiとbunboでpraivateとする。
コンストラクタにより初期化をおこなう。初期値が指定されなかったときは省略時引数ででbunshi,bunboとも1で初期化すること。
またBunsuクラスの振る舞いをテストする適切なmain関数も作成すること。1ファイルで作成しても分割して作成しても良い。
作成する関数
・コンストラクタ
・演算子のオーバーロード(friend関数で作成すること)
+, -, *, /, ==, != の演算子について多重定義を行なう。演算結果は約分する。
>>と<<のオーバーロード(friend関数で作成すること)
・<<Bunsuクラスのオブジェクトをcoutで出力すると分子/分母の形式で出力する。
・>>Bunsuクラスのオブジェクトにcinで入力する時 分子/分母の形式で入力できるようにする。
・変換関数
デ-タメンバbunshiとbunboの値をdouble型として返す。
[3] 環境
 [3.1] OS:Windows(Vista)
 [3.2] コンパイラ名とバージョン:VisualStudio2008
 [3.3] 言語:C++
[4] 期限:[2009年12月6日22:00まで]
[5] その他の制限:とくにありません。
よろしくお願いします。
721デフォルトの名無しさん:2009/12/06(日) 14:04:49
722デフォルトの名無しさん:2009/12/06(日) 14:05:57
>>719
square ってなんですか?
数式で示してください。
723デフォルトの名無しさん:2009/12/06(日) 14:10:51
>>710
とりあえず、これでどこまでいけますか?
標準入力からデータを得て、標準出力に書き込みます。
./a < data.txt > output.txt

メモリフルになると、取り込めた分だけソートして出力します。
これでダメならマージソートを書きます。
http://codepad.org/DAxSnaAj
724デフォルトの名無しさん:2009/12/06(日) 14:23:07
>>722さん、たびたびすみません。
(x*x)です。
725デフォルトの名無しさん:2009/12/06(日) 14:28:17
726デフォルトの名無しさん:2009/12/06(日) 14:56:43
>>725さん、
どうもありがとうございました!
これからdefineとundefineを分割して2種類のコード書きます。
幼稚な質問に答えて頂き感謝です。
727デフォルトの名無しさん:2009/12/06(日) 15:14:22
┏━━━━━━━━━━━━━━━━━━━━━━━━┓
┣━━━━━━━━━━━━━━━━━━━━━━━━┫
┃                                                ┃
┃                                                ┃
┃                                                ┃
┃                                                ┃
┃                                                ┃
┃                                                ┃
┃                                                ┃
┃                                                ┃
┃                                                ┃
┃                                                ┃
┃┌───────────────┐              ┃
┃│文字列の表示                  │              ┃
┃│背景は透過                    │              ┃
┃│この窓は表示を操作できる       |              ┃
┃│縦対横が必ず黄金比            |              ┃
┃└───────────────┘              ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━┛

こんな画面を
Win32APIとかいうものを使って
WindowsXP SP3で表示するようなコードを
BCCとかいうフリーのコンパイラなるものを使って
書けとか言うわけのわからない課題をだされたのですが
なんとかお教えねがえませんでしょうか。
BCCというのはBorland社が公開している
フリーのC/C++のコードをexeにするソフトだということは判りました。
なんとかBCCデベロッパというフリーソフトを用いて
何もない枠をウィンドウを表示させることはできました。
でもウィンドウ内に文字列を表示するウィンドウを作るとかわけわかめです。
728デフォルトの名無しさん:2009/12/06(日) 15:17:03
とりあえずBCCは由緒正しいコンパイラだ
729デフォルトの名無しさん:2009/12/06(日) 15:18:18
Borlandのスタンスは割と好きだった
730デフォルトの名無しさん:2009/12/06(日) 15:23:15
>>727
細かい条件がよくわからない

http://www.kumei.ne.jp/c_lang/sdk/sdk_83.htm
こういうので中のウィンドウが背景透過してたらいいの?
表示を操作できるってつまりどういうこと?
731デフォルトの名無しさん:2009/12/06(日) 15:33:49
>>730
講義内容のおさらいをすると
最終的にはドラゴンクエストみたいな
コマンド選択式で
選択によってあらかじめ用意された絵とシナリオを
表示する、というプログラムを作るようです。

そのなかで
ドラゴンクエストみたいな会話表示ウィンドウを作るのが
今回の課題のようです。

>>727のような絵を渡され
後は口頭で説明されたのを
半分うつらうつらしながらメモしたものによると
大枠のウィンドウをアスペクト比(ウィンドウの横対縦の比率のこととメモにあります)を
4:3に維持しながらその中にドラクエみたいな
大枠の画面に対して一定の比率で
固定されていて、背景が半透過されていて
枠内をクリックで表示<>非表示が切り替わるようなメッセージ表示用の枠を作りなさい、ということのようです。
732デフォルトの名無しさん:2009/12/06(日) 15:38:15
>>717
入力された二つの数字も範囲に含みます。
http://codepad.org/bTPsd8NE
733デフォルトの名無しさん:2009/12/06(日) 15:41:14
#include <windows.h>

LRESULT CALLBACK WindowProc
int WINAPI WinMain

とかはわかります。
四角いウィンドウしか表示しないウィンドウは自力で作れました。
734デフォルトの名無しさん:2009/12/06(日) 15:52:01
>>731
それだけじゃ作りようがない

その中のウィンドウっていうのは図形か画像の描画で作るって事?
そしたらゲームループみたいなのを回して、毎フレーム画面にリペイントをかけたり
ゲームっぽい作り方をする必要があると思うけど、そういう課題なの?

たぶん、細かい動作とか、講義でやって資料とか貰ってるんじゃない?

それとそういう拡張前提のプログラムだったら、自分でやらないと
その先の拡張ができなくて詰むと思うのだけど
735デフォルトの名無しさん:2009/12/06(日) 15:54:27
[1] 授業単元:プログラミング演習
[2] 問題文:
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10239.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 関数の作り方まで習っています。
急ですみませんが、どなたかお願いします。
736735:2009/12/06(日) 15:59:52
すみません。3問目の「16時間36分13秒は59773秒です。」の直前の
「不正な時間、分、または秒が入力されました」の文章は不要でした。
737デフォルトの名無しさん:2009/12/06(日) 16:09:45
>>734
同じ講義に出ていた友人にメールで聞いたのだけど
どうも選択肢4つに従って
4つのパターンが表示されればいいらしい。
文系学部の1単位の教養講義「ウィンドウズプログラム入門」なので
専門の方が作るようなハイレベルのものじゃないです。

ウィンドウを表示させて
ウィンドウの任意の位置にフォントを表示させるのはできました。
今、猫でもできるWindowsプログラムというを見ながら書いているのだけど
こりゃ難しいわ。

前述の友人の話によると明後日に出す課題は
>>730の先に書いてあるMDIというもののようです。
文字は表示できなくてもよいから
大きな親ウィンドウの中に
枠なしの角が丸い子ウィンドウを表示して
親ウィンドウ内を左クリックすると子ウィンドウが表示<->非表示と切り替わる

ということが出来るようになさい、というのが今回の課題のようです。
738デフォルトの名無しさん:2009/12/06(日) 16:10:47
というか焦ってテンプレ見てませんでした。
ちょっとテンプレにそって改めて書かせていただきます。
スレ汚しすみません。
739デフォルトの名無しさん:2009/12/06(日) 16:14:29
>>725さん、すみません。>>726です。
お手数ですが、チェックして頂けますか?エラーが出てしまいます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10240.txt
私の入力で何所かが間違っているのですが、解りません。。。
本当にすみません。よろしくお願いします。
740デフォルトの名無しさん:2009/12/06(日) 16:25:33
#732さん、>>717です。
載せて戴いたのはC言語ですよね?説明の仕方が悪くてごめんなさい。
C++言語と最初に書いておけば良かったです。貴重なお時間すみませんでした。

741デフォルトの名無しさん:2009/12/06(日) 16:36:04
>>735
2.
#include <stdio.h>

int calc_sec(int h, int m, int s) {
return (h<0||23<h||m<0||59<m||s<0||59<s) ? -1 : (h * 60 + m) * 60 + s;
}

int main(void)
{
int h, m, s, ans;

printf("時間(0〜23)を入力してください:");
scanf("%d", &h);
printf("分(0〜59)を入力してください:");
scanf("%d", &m);
printf("秒(0〜59)を入力してください:");
scanf("%d", &s);

ans = calc_sec(h, m, s);

if(ans==-1) printf("不正な時間、分、または秒が入力されました\n");
else printf("%d時間%d分%d秒は%d秒です。\n", h, m, s, ans);

return 0;
}
742732:2009/12/06(日) 16:38:07
>>740
じゃ、C++ で。
http://codepad.org/ioLIZmPA
743735:2009/12/06(日) 16:51:27
>>741
お早い解答ありがとうございます。助かりました。
もし良ければどなたか他の問題もお願いします。
744デフォルトの名無しさん:2009/12/06(日) 16:53:55
2.じゃなくて3.だな。
745デフォルトの名無しさん:2009/12/06(日) 17:00:24
>>735
2.
#include <stdio.h>

int conv_letter(int ch)
{
return ('a'<=ch&&ch<='z')||('A'<=ch&&ch<='Z') ? ch ^ 0x20 : ch;
}

int main(void)
{
int ch;

while((ch=getchar())!=EOF) putchar(conv_letter(ch));

return 0;
}
746デフォルトの名無しさん:2009/12/06(日) 17:12:49
>>745
XORで変換できるんだ.
知りませんでした.
747デフォルトの名無しさん:2009/12/06(日) 17:13:30
>>739 君の年齢の数だけ確認すればOK
748デフォルトの名無しさん:2009/12/06(日) 17:17:33
>>735
1.
#include <stdio.h>

int clac_pandi(int p, double r, int y)
{
while(y--) p *= 1 + r / 100;
return p;
}

int main(void)
{
int p, y, d;
double r;

printf("元金[円]を入力してください : ");
scanf("%d", &p);
printf("年利[%]を入力してください  : ");
scanf("%lf", &r);
printf("預金年度を入力してください : ");
scanf("%d", &y);

d = clac_pandi(p, r, y);

printf("%d円を年利%f%%で%d年間預金すると、%d円になります。\n", p, r, y, d);

return 0;
}
749デフォルトの名無しさん:2009/12/06(日) 18:31:11
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10241.txt
[3] 環境
 [3.1] windows xp
 [3.2] VC 2005
 [3.3] C
[4] 期限: 12月8日
[5] 特にないです
750 ◆7Yg80/WtOE :2009/12/06(日) 19:15:07
[1] 授業単元:Cプログラミング応用
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10242.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2009年12月8日20:59まで]
[5] その他の制限:再帰の問題です。combinationを用いる。

お願いします。
751デフォルトの名無しさん:2009/12/06(日) 19:29:29
>>749
「下記構造体型配列」の構造体ってどんなのでしょうか.
752デフォルトの名無しさん:2009/12/06(日) 22:17:13
>>750
当方の環境は Windows XP/cygwin, 処理系は gcc 4.3.2 です。
http://codepad.org/G8LDY47D
753デフォルトの名無しさん:2009/12/06(日) 22:56:07
>>749
下記構造体型配列を作る。
データは入力すること。
確認のため各配列要素を表示すること。

20  40  10  50  30
CD  GH  AB  IJ  EF

#include <stdio.h>
#define MAX 5
struct sa {
  int  ia[MAX];
  char ca[MAX][20+1];
};
int main(void) {
  int  i;
  struct sa data = {20,40,10,50,30,"CD","GH","AB","IJ","EF"};

  printf("INPUT %d NUMBERS :", MAX);
  for(i=0; i<MAX; i++) scanf("%d", &data.ia[i]);
  printf("INPUT %d WORDS :", MAX);
  for(i=0; i<MAX; i++) scanf("%s", data.ca[i]);
  for(i=0; i<MAX; i++) printf(" %d ", data.ia[i]);
  puts("");
  for(i=0; i<MAX; i++) printf(" %s ", data.ca[i]);
  return puts("");
}
754デフォルトの名無しさん:2009/12/06(日) 23:13:46
【質問テンプレ】
[1] 授業単元:C
[2] 問題文(含コード&リンク):
入力されたデータをもとに売上明細を作成して表示する。
入力データは商品名と金額で、最大20件とし、^zで終了する。
入力されたデータは構造体配列に記録し、
入力終了後金額を集計して合計を表示する。

<構造体メンバ>
商品名:char型10桁
金額:long型


<実行結果>
^z
商品名    金額
パソコン   248500
ラジオ     3200
テレビ    120500
オーディオ  314000
レイゾウコ   65800
クーラー    79000
合計    831000


[3] 環境
 [3.1] OS: WindowsVISTA
 [3.2]Lcpad
 [3.3] 言語:C

よろしくお願いします
755742:2009/12/06(日) 23:32:08
一部 printf() が残っていました。
http://codepad.org/O4UYo6ph
756デフォルトの名無しさん:2009/12/06(日) 23:35:43
757 ◆7Yg80/WtOE :2009/12/07(月) 01:19:51
>>752
>>756
どうもありがとうございます。
758デフォルトの名無しさん:2009/12/07(月) 01:21:01
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):

問題1
double型の変数a,bを引数とし,小さい値を返す関数minと
大きい値を返す関数maxを作成せよ。

問題2
扇形の面積を求めるプログラムを作成せよ。

[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2009年12月08日まで]
[5] その他の制限:mainを使用。

よろしくお願いします。
759デフォルトの名無しさん:2009/12/07(月) 02:41:11
[1] 授業単元:C応用
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10244.txt
[3] 環境
 [3.1] Windows
 [3.2] VC2005
 [3.3] C++
[4] 期限: 2009年12月8日
[5] その他の制限: 連結リストの演習です。
760デフォルトの名無しさん:2009/12/07(月) 02:43:46
>>758
問題1
double min(double a,double b){return (a<=b)?a:b;}
double max(double a,double b){return (a>=b)?a:b;}

問題2
http://codepad.org/KQn7aW7H
761デフォルトの名無しさん:2009/12/07(月) 02:50:21
762735:2009/12/07(月) 02:52:39
>>745>>748
ありがとうございます。
助かりました。
763 ◆FKHan0pzBo :2009/12/07(月) 09:39:32
>>754
#include <stdio.h>
#define MAX 20
struct aa {
  char a1[10+1];
  long b1;
};
char *comma(int a, char *tmp){
  if(a < 1000)
    sprintf(tmp, "%d", a);
  else if(a < 1000000)
    sprintf(tmp, "%d,%03d", a/1000, a%1000);
  else
    sprintf(tmp, "%d,%03d,%03d", a/1000000, a/1000%1000, a%1000);
  return tmp;
}
int main(void) {
  struct aa data[MAX];
  char tmp[20];
  int i, j;
  long total = 0;
  for(i=0; i<MAX; i++) {
    j = scanf("%s%ld", data[i].a1, &data[i].b1);
    if(j < 2) break;
  }
  printf("商品名\t  金額\n");
  for(j=0; j<i; j++) {
    printf("%s\t%8s\n", data[j].a1, comma(data[j].b1, tmp));
    total += data[j].b1;
  }
  return printf("合計\t%8s\n", comma(total, tmp));
}
764デフォルトの名無しさん:2009/12/07(月) 14:35:43
scanfでクラス名(文字)、午前・午後の入場者数を入力して、
各クラス毎の入場料を出力するという問題です


#include<stdio.h>
int main(){
nt n,gozen,gogo,money[9],money2[9];
char c,home[9];
for(n=0;n<9;n++){
//クラス名 午前の入場者数 午後の入場者数
scanf("%s %d %d",&c,&gozen,&gogo);
home[n] = c;
money[n] = gozen;
money2[n] = gogo;
}
for(n=0;n<9;n++){
c = home[n];
gozen = money[n] * 200;
gogo = money2[n] * 300;
printf("%s %d %d\n",c,gozen,gogo);
}
return 0;
}

私はこう考えたのですが、
printf("%s %d %d\n",c,gozen,gogo);
の所が何故か上手くいきません

どこがおかしいのでしょうか
ご指導お願いします
765デフォルトの名無しさん:2009/12/07(月) 14:37:23
cが文字だから%sじゃなくて%c
766デフォルトの名無しさん:2009/12/07(月) 14:41:04
>>765
回答ありがとうございます
%cでも試してはみたんですが、
デバッグエラーというのが出てきます

これは出てもいいのでしょうか?
767デフォルトの名無しさん:2009/12/07(月) 14:50:48
printfだけじゃなくて、scanfの%sも%cにした?
768デフォルトの名無しさん:2009/12/07(月) 15:19:50
>>767
デバッグエラーはでなくなりました

ですが、scanfで2回しか読み込めなくなりました
ステップインをしてみて、
一回目と二回目までは、scanfを通ったときに入力できるのですが、
三回目のscanfは通っているのに入力できないです・・・。
769 ◆FKHan0pzBo :2009/12/07(月) 15:38:26
scanf("%c%d%d%*c",&c,&gozen,&gogo);
printf("%c %d %d\n",c,gozen,gogo);
770770:2009/12/07(月) 16:19:17
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):鶴と亀の頭の数の合計と足の数の合計を入力して, 鶴が何羽,亀が何匹いるか
    を表示する。(ヒント:頭の数と足の数を変数として,鶴の数と亀の数について連立
    方程式を作り,解を与える式の値を表示させればよい)
[3] 環境
 [3.1] OS: Windows XP Prof.
 [3.2] コンパイラ名とバージョン: BCC Developer
 [3.3] 言語: C++
[4] 期限: 明後日まで
[5] その他の制限: ここまで習っています
http://www.hino.meisei-u.ac.jp/is/iga/hit-u/No7/C1.pdf
771デフォルトの名無しさん:2009/12/07(月) 16:32:53
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):これに全て記載 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10245.c
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:わかりません
 [3.3] 言語: C言語
[4] 期限: 2009年12月08日AM10:30まで (明日まで)
[5] その他の制限: 特にありません。
よろしくお願いします
772デフォルトの名無しさん:2009/12/07(月) 16:55:45
>>715
/bin/sort のことですか
773デフォルトの名無しさん:2009/12/07(月) 18:53:16
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク): 構造体を使って二つの複素数の積を求める
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限: 2009年12月14日PM2:30まで
[5] その他の制限:ありません

よろしくお願いします
774 ◆FKHan0pzBo :2009/12/07(月) 19:12:55
>>770
/*
x + y = a
2x + 4y = b

x = a - y

2(a - y) + 4y = b
a - y + 2y = 1/2 b
a + y = 1/2 b
y = 1/2b - a

x + (1/2b - a) = a
x + 1/2b - a = a
x + 1/2b = 2a
x = 2a - 1/2b


鶴4亀5 a=9 b=26

*/
#include <stdio.h>
int main(void) {
  int turu, kame, atama, ashi;

  printf("HOW MENY HEADS ? :"); scanf("%d%*c", &atama);
  printf("HOW MENY FOOTS ? :"); scanf("%d%*c", &ashi);
  turu = 2*atama - ashi/2;
  kame = ashi/2 - atama;
  return printf("TUTU = %d\nKAME = %d\n", turu, kame);
}
775デフォルトの名無しさん:2009/12/07(月) 20:20:31
その綴りはわざと?
776デフォルトの名無しさん:2009/12/07(月) 20:49:41
777デフォルトの名無しさん:2009/12/07(月) 20:53:13
>>776
回答ありがとうございました。
助かりました。
778デフォルトの名無しさん:2009/12/07(月) 22:58:51
[1] 授業単元:プログラミング演習2
[2] 問題文(含コード&リンク): 長いのでここに記載します http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10246.txt 
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限: 2009年12月9日(水)まで
[5] その他の制限:特にありません

お願いします。
779デフォルトの名無しさん:2009/12/08(火) 04:07:11
へえ、英語が出来るんだ。名無しさん。
780778:2009/12/08(火) 12:31:48
すみません 問題文はIE上だと文字化けするようです。
IEでも見れるように直しました。 
課題2-2のほうをお願いします。
[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10247.txt
781デフォルトの名無しさん:2009/12/08(火) 12:54:38
#include <stdio.h>

#define N 128

int main(int argc, char **argv)
{
int data[N], *p, i, n;
float sum = 0;
FILE *fin, *fout;

if(argc!=3) return 0;
if((fin=fopen(argv[1], "r"))==NULL) return 0;

fscanf(fin, "%d", &n);

for(i=0,p=data; i<n; i++) {
fscanf(fin, "%d", p);
sum += *p++;
}
fclose(fin);

if((fout=fopen(argv[2], "w"))==NULL) return 0;
fprintf(fout, "平均=%f\n", sum/n);
fclose(fout);

return 0;
}
782デフォルトの名無しさん:2009/12/08(火) 17:52:30
783778:2009/12/08(火) 18:14:11
>>781
返事が遅くなってすいません。
回答ありがとうございました。
784デフォルトの名無しさん:2009/12/09(水) 00:03:41
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): 構造体を身長順に並べ変えなさい。身長が同じ場合は番号が若い順に並べなさい。
  作ったけどうまくいかなかったのがこれです。
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10249.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限: 2009年12月9日(水)まで
[5] その他の制限:特にありません

お願いします。
785デフォルトの名無しさん:2009/12/09(水) 00:13:51
>>784
基本的なことから間違ってる

・構造体の中で#includeしてる
・if( st[k].height = st[l].height )のところは比較式になってない。代入してる
786784:2009/12/09(水) 00:18:54
返信ありがとうございます。
まだC言語始めたばっかりなので基本がなってなくてすいません。
if( st[k].height = st[l].height )の式を少しいじったらできました。
どうもありがとうございました。
787デフォルトの名無しさん:2009/12/09(水) 00:20:32
まず番号で昇順にバブルソート
次に身長で降順にバブルソート
実に簡単
788デフォルトの名無しさん:2009/12/09(水) 00:26:17
アホかw
789 ◆FKHan0pzBo :2009/12/09(水) 00:36:49
>>784
#include<stdio.h>
struct data{
  int no;
  char name[20];
  double height;
};

int main(void){
  int k,l;
  struct data stb;
  struct data st[20] = { { 1,"一郎",180.0 }, { 2,"二郎",175.5 },{ 3,"三郎",180.0 }, { 4,"四郎",175.5 },{ 5,"五郎",169.9 }, { 6,"六郎",169.9 }, };

  for ( k = 0 ; k<5 ; k++ ){
    for ( l = k+1 ; l<6 ; l++ ){
      if ( st[k].height == st[l].height ) {
        if ( st[k].no > st[l].no ) {
          stb = st[k] ; st[k] = st[l] ; st[l] = stb ;
        }
      } else if ( st[k].height > st[l].height ) {
        stb = st[k] ; st[k] = st[l] ; st[l] = stb ;
      }
    }
  }
  printf("身長順\n");
  for(l=0 ; l<6 ; l++){
    printf("%d %s %lf\n", st[l].no, st[l].name, st[l].height) ;
  }

  return 0;
}
790デフォルトの名無しさん:2009/12/09(水) 00:36:56
私のパソコンのスペックを舐めないでほしい。バブルソートたかが2回どうということはない
791デフォルトの名無しさん:2009/12/09(水) 00:41:32
オイラ質問者とは別人のC言語初心者だけど質問いい?
>struct data st[20] = { { 1,"一郎",180.0 }, { 2,"二郎",175.5 },{ 3,"三郎",180.0 }, { 4,"四郎",175.5 },{ 5,"五郎",169.9 }, { 6,"六郎",169.9 }, };
ここがよくわからない。st[20]ってデータ5個なのに20に設定するのってどうして?
あと六郎のデータのあとにカンマ入ってるけどこれ何?以降のデータ省略って意味?
超初心者でゴメンお
792デフォルトの名無しさん:2009/12/09(水) 00:44:58
793デフォルトの名無しさん:2009/12/09(水) 00:45:16
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10250.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:12月10日18:00mmまで
[5] その他の制限: 特に無し
794デフォルトの名無しさん:2009/12/09(水) 00:52:06
なんの処理してるんだ・・・
795デフォルトの名無しさん:2009/12/09(水) 00:55:22
>791
>st[20]ってデータ5個なのに20に設定するのってどうして?
なんとなくだろ
僕なら要素数(20)も省略する
要素数があらかじめ分かっていたら、それ以上の初期化子の並びが存在することをコンパイラに警告してもらうためにあえて要素数を省略しない場合もある

>六郎のデータのあとにカンマ入ってるけどこれ何?以降のデータ省略って意味?
データ省略ともいえる
あってもなくても構わないが、カンマをあらかじめ入れておけば、追加するときにカンマを忘れて意図しない初期化にならないようにできる
ある種の習慣みたいなもんだよ
余談だけど、C89ではenumの最後の列挙子のあとにカンマが付けられないという一貫性の無い仕様、C99では付けられるようになった
796デフォルトの名無しさん:2009/12/09(水) 00:58:18
>>793
if(used[i]==0)
used[i] = 1
used[i] = 0
797791:2009/12/09(水) 01:00:26
>>795
どうもありがとうございやす
勉強になりました
798791:2009/12/09(水) 01:03:25
>>796
警告:変数 j が使用されていません
799791:2009/12/09(水) 01:04:26
いや、オイラ793とは別人だけど。すんません
コンパイルしたら警告でた
800デフォルトの名無しさん:2009/12/09(水) 01:20:38
nqueen問題なのか、順列なのか分からんw
801デフォルトの名無しさん:2009/12/09(水) 01:21:24
>800
禿同
802782 ◆FKHan0pzBo :2009/12/09(水) 02:02:26
803デフォルトの名無しさん:2009/12/09(水) 02:02:36
>784のソースコードと>792のソースコードがとても似ているように感じるのは気のせいか?
804デフォルトの名無しさん:2009/12/09(水) 02:06:20
>>803
さすがにこれだけ単純な内容だと
普通に書いたら誰でも同じような内容になると思う
805デフォルトの名無しさん:2009/12/09(水) 02:10:15
しかし[20]で一致は偶然とは思えない
806デフォルトの名無しさん:2009/12/09(水) 02:13:22
#include の位置が同じだったらコピペ認定でもいいけどな
807デフォルトの名無しさん:2009/12/09(水) 03:12:45
名前にchar[20]てのは俺が学生の頃もありがちな数字だったなぁ
あと入力バッファに80とかもよくやった
808デフォルトの名無しさん:2009/12/09(水) 03:17:01
名前の方じゃなくて、構造体配列の方じゃね?
809デフォルトの名無しさん:2009/12/09(水) 03:58:47
あー、そっちかぁ。
でも>>784には努力の跡が見えるし、学生の課題として似てるの範囲には含まれないレベルだと思うよ。
810デフォルトの名無しさん:2009/12/09(水) 04:01:56
[1] アルゴリズム

[2] 自然数の数列内にあるnよりも大きい数と小さい数が
数列上においてnの前後にそれぞれ一つずつある場合、そのnを出力する。
つまり、(n-a,...,n+b,....n,....n+c,....,n-d)という風になっているnを探すプログラムです。

[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: C

よろしくお願いします。
811デフォルトの名無しさん:2009/12/09(水) 04:03:56
> つまり
がわからんw
具体例を述べる!
812デフォルトの名無しさん:2009/12/09(水) 04:08:29
nより前に大きい数と小さい数が一つずつ、nより後ろにも大きい数と小さい数が一つずつ?
813デフォルトの名無しさん:2009/12/09(水) 04:18:13
日本語でおk?
課題文や問題文を意訳せずにそのまま書けばいいのに
814782 ◆FKHan0pzBo :2009/12/09(水) 08:32:09
数当てゲーム n=100
50より大きくて120より小さい数: 90
90より大きくて120より小さい数: 98
98より大きくて120より小さい数: 102
98より大きくて102より小さい数: 100
正解!!>>810
815デフォルトの名無しさん:2009/12/09(水) 08:57:07
810をどう読んだらそうなるのかわからん。
816810:2009/12/09(水) 13:38:13
分かりにくかったようで申し訳ないです。
教授が口にしただけでちゃんとした問題文がなく、自己流で書きました。

具体例をあげますと、
数列(4 8 2 1 7 9 3 5 6)を入力します。
この場合、4と6は両端なので前後片方しかないので除外します。
同様に8と5を見ると8の前には4だけ、5の後ろには6しかないので除外します。
2 1は前に4 8と大きい数字しかないので除外します。
7は前後に大きい数字と小さい数字があるので残します。
9は数列の中で最大なので除外できます。
3 5 6は後ろに小さい数字がないので除外します。
結果、7と表示して終了です。

大変お手数をおかけしましたが、よろしくお願いします。
817デフォルトの名無しさん:2009/12/09(水) 13:45:05
一つずつじゃねーじゃねーかw
818デフォルトの名無しさん:2009/12/09(水) 13:47:05
>>810 先ず、フローチャートだぜ
819デフォルトの名無しさん:2009/12/09(水) 13:54:44
>>816
#include <stdio.h>
int f(int *p, int n, int size)
{
int i, s, l;
if(n <=1 || size-2<=n) return 0;
for(i=s=l=0; i<n; i++) {
if(p[i] > p[n]) l++;
else if(p[i] < p[n]) s++;
}
if(s==0 || l==0) return 0;
for(i=n+1, s=l=0; i<size; i++) {
if(p[i] > p[n]) l++;
else if(p[i] < p[n]) s++;
}
return s && l;
}

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

for(i=0; i<sizeof a / sizeof *a; i++) if(f(a, i, sizeof a / sizeof *a)) printf("%d\n", a[i]);

return 0;
}
820810:2009/12/09(水) 14:10:29
>)817
そうでした・・・すいません。
>>818
    順数列の入力
    ↓      ↓
数列数が5以上 4以下→終了(4以下のときどれも除外できないので)
    ↓
数列の中で最大最小の値と
最初と最後に入力した値は除外できる。
    ↓
残りの数値に前後に大小の値が一つ以上あれば除外
    ↓
残った値を表示して終了


こんな感じです。
>>819
早速書いていただき本当に感激です。実行させたりして勉強させてもらいます。
821デフォルトの名無しさん:2009/12/09(水) 15:39:42
>>820
> 残りの数値に前後に大小の値が一つ以上あれば除外
「二つ以上」が正しいなら、>>819
return s && l; を
---> return (s==1) && (l==1);  でいいと思う。
822デフォルトの名無しさん:2009/12/09(水) 15:42:17
フローチャート作れたらプログラム組めてもよさそうなのにな
823デフォルトの名無しさん:2009/12/09(水) 15:45:11
それが出来ないのが初心者
824デフォルトの名無しさん:2009/12/09(水) 15:46:25
>>821
ダメです。
825デフォルトの名無しさん:2009/12/09(水) 15:53:11
826デフォルトの名無しさん:2009/12/09(水) 15:55:24
827デフォルトの名無しさん:2009/12/09(水) 15:57:37
>>821
二つ以上と解釈するなら一つ前の
>if(s==0 || l==0) return 0;
これも変更しないとマズくね?
828デフォルトの名無しさん:2009/12/09(水) 15:59:38
自分より大きい数と小さい数の両方が、自分より前にも後ろにもあるような数を求める。
個数は1つ以上ならいくつでもいい。

>return (s==1) && (l==1);
なんてしたら解が出なくなる可能性が高い。
829デフォルトの名無しさん:2009/12/09(水) 16:00:56
>>810の言葉だと
前後にひとつずつとあるが・・
830デフォルトの名無しさん:2009/12/09(水) 16:02:35
>>816の例を見ろw
831デフォルトの名無しさん:2009/12/09(水) 16:03:41
つまるところ810は日本語があまり上手ではないと
832デフォルトの名無しさん:2009/12/09(水) 16:05:24
>>810の説明が下手なのが元凶ではあるが、
>>816-820がまともに読めないアホにも問題有り。
833デフォルトの名無しさん:2009/12/09(水) 16:16:06
810の時点で「一つずつ」じゃなくて「一つ以上」って書いてあれば、
全く問題なく済んだのにな。
834デフォルトの名無しさん:2009/12/09(水) 16:17:39
819で解決済み
この話題はオシマイ
835デフォルトの名無しさん:2009/12/09(水) 16:23:11
バカな>>821>>827>>829が何も言わなければよかったのになw
836デフォルトの名無しさん:2009/12/09(水) 16:27:45
810や821や827や829がゆとり世代だったとしたら俺は政府を恨むよ。日本語も出来ない日本人を量産しやがって・・・
837デフォルトの名無しさん:2009/12/09(水) 16:34:04
つまり・・・まともな人間は俺だけってことだな
838デフォルトの名無しさん:2009/12/09(水) 16:41:14
ID出ない板でよかったねw
839デフォルトの名無しさん:2009/12/09(水) 16:44:31
>>816
教授に条件を確認した方がいいんじゃないか?
840デフォルトの名無しさん:2009/12/09(水) 16:47:40
さっきからあげてるのは同じヤツ?
841デフォルトの名無しさん:2009/12/09(水) 17:12:08
[1] 授業単元: C言語演習編
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10252.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2009年12月11日(金)まで
[5] その他の制限:ありません

よろしくお願いします
842デフォルトの名無しさん:2009/12/09(水) 17:20:38
市販のテキストの問題とかなら後ろのページに模範解答とかあるんじゃないのかなぁ・・・
大学時代にプログラミング入門の授業あったけど先生の出す課題の大半はテキストに答え載ってたけど
大半の学生がテキストまともに読まないからテキストの問題だということにも気づいてなかったよ
まぁ私は答えなど見なくても作ることに問題はありませんでしたが
843デフォルトの名無しさん:2009/12/09(水) 17:26:20
でっていう
844デフォルトの名無しさん:2009/12/09(水) 18:01:38
>>841
問1:
#include <stdio.h>
int main(void)
{
int n;
char data[128],*p;
puts("文字列を入力してください");
printf("文字列:");
scanf("%s",data);
printf("文字列の文字数をカウントします。\n");
p=data;
for(n=0;*(p+n)!='\0';n++);
printf("文字列: %s 文字数: %d\n",data,n);
return 0;
}
845デフォルトの名無しさん:2009/12/09(水) 18:18:09
>>842
問2:
#include <stdio.h>

int main(int argc,char *argv[])
{
int n;
char data[128],*p;
FILE *fp;
if(argc==1){
puts("文字列を入力してください");
printf("文字列:");
scanf("%s",data);
printf("文字列の文字数をカウントします。\n");
p=data;
for(n=0;*(p+n)!='\0';n++);
}
else{
if((fp=fopen(argv[1],"r"))==NULL)
return 1;
for(n=0;(data[n]=fgetc(fp))!=EOF;n++);
data[n]='\0';
fclose(fp);
}
printf("文字列: %s 文字数: %d\n",data,n);

return 0;
}
846デフォルトの名無しさん:2009/12/09(水) 18:19:37
>845レス番ミスった
>>841
847デフォルトの名無しさん:2009/12/09(水) 18:24:39
>>844
>>845
回答ありがとうございました。
とても助かりました。
848デフォルトの名無しさん:2009/12/09(水) 18:26:21
>>845
for(n=0;(data[n]=fgetc(fp))!=EOF;n++);のところ
for(n=0;(data[n]=(char)fgetc(fp))!=EOF;n++);にキャストしたほうがいいかも
849841:2009/12/09(水) 18:27:54
すいません。 名前欄に書くのを忘れてました。
改めて>>844 >>845の人へ
ありがとうございました。
850デフォルトの名無しさん:2009/12/09(水) 18:29:19
さて、課題も終わったことだし空いた時間でエロゲでもやるか
851デフォルトの名無しさん:2009/12/09(水) 18:46:46
>>850
最近のお勧めなに?
852デフォルトの名無しさん:2009/12/09(水) 18:48:33
>>848
fgetcの返り値はintなのでそれ以前の問題
853デフォルトの名無しさん:2009/12/09(水) 18:51:01
>>848
forでそんなことするなよ
854デフォルトの名無しさん:2009/12/09(水) 20:18:34
アラフォーだらけのスレ
855デフォルトの名無しさん:2009/12/09(水) 20:37:01
>>848
fgetc() の返り値は int。EOF と比較するのにchar にキャストするのは間違いのもと。
856デフォルトの名無しさん:2009/12/09(水) 20:41:30
848は逃げたの?
857デフォルトの名無しさん:2009/12/09(水) 21:11:03
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] その他の制限: forとかwhileとかまでしか習っていないです。

宿題かなり出たのです出が、全くわからないので、数問連続で丸投げさせていただきます。すいません。
858デフォルトの名無しさん:2009/12/09(水) 21:14:52
>>857
問題文貼れていませんでした。もう1度。


1] 授業単元: forとかwhileとか
[2] 問題文(含コード&リンク):
ycm2の面積を有する円の半径xを,2分法を用いて近似解を求める.
(a) 区間を10分割してどの区間に解があるかを求めるプログラムを作成しなさい.
(b) 解がある区間が見つかったら,さらにその区間を10分割してどの区間に解があるかを求めるという作業を5回繰り返すプログラムを作成しなさい.

(補足)2分法
2分法とは,中間値の定理に根拠をおいて,数式的に解くことのできない方程式の解を求める方法である.
下図に示すように,xの値を少しずつ変化させた場合に,隣り合う二つのf(x)の値の符号が異なる区間が存在すると,その方程式の解はその区間内に存在する.
区間を少しずつ狭めていくことにより,その方程式の近似解を求めることができる.方程式の近時解法として代表的なものには2分法の他に,ニュートン法もある.
[3] 環境
 [3.1] OS:Windows
 [3.2] わかりません・・・。
 [3.3] 言語:C++
[4] 期限: ([2009年12月11日16:00まで]
[5] その他の制限: forとかwhileとかまでしか習っていないです。

宿題かなり出たのです出が、全くわからないので、数問連続で丸投げさせていただきます。すいません。
859デフォルトの名無しさん:2009/12/09(水) 21:16:15

1] 授業単元: forとかwhileとか
[2] 問題文(含コード&リンク): 関数y=x3+1の微分曲線を求めるプログラムを作成しなさい.計算範囲は0≦x≦2とし,間隔は0.1とする.


[3] 環境
 [3.1] OS:Windows
 [3.2] わかりません・・・。
 [3.3] 言語:C++
[4] 期限: ([2009年12月11日16:00まで]
[5] その他の制限: forとかwhileとかまでしか習っていないです。

宿題かなり出たのです出が、全くわからないので、数問連続で丸投げさせていただきます
860デフォルトの名無しさん:2009/12/09(水) 21:19:54
>>858
ycm2 ってなんですか?
861デフォルトの名無しさん:2009/12/09(水) 21:20:39
>>859
微分曲線ってなんですか?
x3 というのは x の 3 乗ですか?
[1] 授業単元:C言語とアルゴリズム
[2] 問題文(含コード&リンク):
課題 リスト処理
  実行結果のようにキーボードから入力して整数を入力順にリストに格納し、入力値に
番号を付けて表示するプログラムを作成しなさい.ただし入力の終了はCtrl+dで行えるようにすること。
入力する値や個数が実行例と異なる場合にも正しく動作するようにすること.
必ず1個以上の整数が入力されるとする.

[実行結果]
整数を順番に入力してください.
5
10
15
20
25
入力データは以下の通りです.
[1] 5
[2] 10
[3] 15
[4] 20
[5] 25

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:明日8:30までに
[5] その他の制限:malloc関数 free関数 sizeof演算子 リスト構造を使うこと.

よろしくお願いします!
[1] 授業単元:C言語とアルゴリズム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10253.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:明日8:30までに
[5] その他の制限:

何度もすみません。よろしくお願いします!
864デフォルトの名無しさん:2009/12/09(水) 22:49:15
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org440057.pdf
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc emacsで作って、ktermでコンパイル
 [3.3] 言語: C言語
[4] 期限:明日18時までに

ファイル重いですが、どうかどうかよろしくお願いします!!

演習問題の番号に*がついた奴は必修なので、優先してお願いします!!

とても多いですが、皆さんのお力をお借りしたいです。。
865デフォルトの名無しさん:2009/12/09(水) 22:53:25
>>864
どれやるのかわからんだろが
866デフォルトの名無しさん:2009/12/09(水) 23:04:35
>>865ですよね。すみません。

えっと、演習問題1-1,1-2,1-3,1-6,1-7,1-8,1-9です。

よろしくお願いします。

また分かりづらい所あれば指摘お願いします。
867デフォルトの名無しさん:2009/12/09(水) 23:06:16
一題ずつ、テキストで抜き出して、短くここに直接書けば
回答率上がると思われ。
868デフォルトの名無しさん:2009/12/09(水) 23:10:25
>>864をどうかお願いします。
869デフォルトの名無しさん:2009/12/09(水) 23:31:13
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):
文字列ABCDEFGHIJKLMNに対して入力した文字列の第1文字目と第2文字目の間にある文字列を表示するプログラムを作る。 ただし標準ライブラリは使用しないこと。
[3] 環境
 [3.1] OS:windows xp
 [3.2] vc2005
 [3.3] c
[4] 期限:10日 11時
[5] >>123と似ているのですか、標準ライブラリが使えません。よろしくお願いします
870デフォルトの名無しさん:2009/12/09(水) 23:32:03
>>863
Windows XP/cygwin/gcc 3.4.4 です。
http://codepad.org/HgeI4UYi
871デフォルトの名無しさん:2009/12/09(水) 23:32:38
>>862
http://codepad.org/Qzk7lmqJ

汚いコードでメンゴ
872870:2009/12/09(水) 23:37:07
アンカーミス訂正
>>862
873デフォルトの名無しさん:2009/12/09(水) 23:40:19
>>869
WinAPIを使うのか。アセンブラ埋め込みか。
874デフォルトの名無しさん:2009/12/09(水) 23:40:30
あー・・・その他の制限全く読んでなかった。
ゴメン、871のは無しで。
875デフォルトの名無しさん:2009/12/09(水) 23:43:53
【コラム】Hello Worldコレクション (16) DOSのアセンブラ編 - システムコール、CON、標準出力を使い分ける
http://journal.mycom.co.jp/column/helloworld/016/index.html
876デフォルトの名無しさん:2009/12/09(水) 23:56:48
>>870に吹いたから

>>863
課題1
http://codepad.org/8hFsZjsS
課題2
http://codepad.org/KyCpxhcB

ただ演算した結果を表示しただけだよ。出来れば内容を理解してほしいな
877デフォルトの名無しさん:2009/12/10(木) 00:05:44
>>863
Visual C++で作成
http://codepad.org/D83lLvNG

こんなんでいいかな
878デフォルトの名無しさん:2009/12/10(木) 00:11:24
>>864
pdfというURLで見る気を削がれ
pdfの紙の向きが縦じゃなくて読む気を削がれ
問題内容は紙を丸写しして実行するだけ

コーディングさせるためだけに来ただろお前
879デフォルトの名無しさん:2009/12/10(木) 00:23:50
>>876>>877さん
せっかくやってもらったのに申し訳ありませんが習っていないとこが多少あるのでもう少し簡単なプログラムにはなりませんか?
880デフォルトの名無しさん:2009/12/10(木) 00:28:04
先生「あれ?君の提出したソースに授業でやってないところがあるねぇ・・・君実はプログラムに詳しいのかい?だったら授業の手伝いをしてほしいんだが」
881デフォルトの名無しさん:2009/12/10(木) 00:28:51
>>879
何のために
> [5] その他の制限:
という項目があると思ってんだ
882876:2009/12/10(木) 00:29:06
>>880
昨日ネットワークプログラミングで言われたばっかだからやめてくれw

>>879
課題のレベルに合わせたつもりだったけど、具体的にどこがわからない?
% 演算子以外には簡単にする要素が無いけど
883デフォルトの名無しさん:2009/12/10(木) 00:36:07
>>878そこをどうかお願いします。

ほんとに困ってて、2chしか頼るところがないんです。聞ける人もいなくて・・

やることが山ずみで、pdfファイルになってしまいました。
すみません。

どうか今回だけ大目に見ていただけないでしょうか・・
884デフォルトの名無しさん:2009/12/10(木) 00:38:40
宿題部分だけをテキストにするくらいは
30分で済むだろ
885デフォルトの名無しさん:2009/12/10(木) 00:51:20
君がその書き込みを見たときにやりたいと思うかい?

聞きたいことがあるなら質問をすればいいじゃないか
こっちは聞きたいこともわからなければコレは優先してやれだのふざけるな
人を利用するだけに来たのなら君は最低な人間だ

じゃなけりゃ>>884
886デフォルトの名無しさん:2009/12/10(木) 01:19:38
>>885おっしゃるとおりだと反省しました・・・すみませんでした

改めて、

[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10254.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc emacsで作って、ktermでコンパイル
 [3.3] 言語: C言語
[4] 期限:明日18時までに


よろしくお願いします。
887デフォルトの名無しさん:2009/12/10(木) 01:59:58
>>886
問題番号とURLの対応間違ってたらごめんです。

演習問題1-6
http://codepad.org/Y7DOy8hA

演習問題1-7
http://codepad.org/ePFSTnSw

演習問題1-8
http://codepad.org/igXmyA25

演習問題1-9
http://codepad.org/uL5VwgAq
double 習っていたら,修正してください。

演習問題1-10
http://codepad.org/e9878C7j
888デフォルトの名無しさん:2009/12/10(木) 03:39:03
866 :デフォルトの名無しさん :2009/12/09(水) 23:04:35
>>865ですよね。すみません。

知らんぞお前の事。日本語変わった?
889888:2009/12/10(木) 04:17:13
#include <stdio.h> // >864 1-1
int main( void ){
  char c;
  char *p; /* ポインタの宣言 */

  c = 'A';
  p = &c; /* ポインタの値設定 */
  printf( "%c\n", *p); /* ポインタの指す値を表示 */
  return 0;
}
#include <stdio.h> // >>864 1-2
int main( void ){
  char c = 'A';
  char *p; /* ポインタの宣言 */

  p = &c; /* ポインタの値設定 */
  printf( "%c\n", *p); /* ポインタの指す値を表示 */
  *p = *p + 2; /* ポインタの指す値を+2 */
  printf( "%c\n", *p); /* ポインタの指す値を表示 */
  return 0;
}
#include <stdio.h> // >>>864 1-3
int main( void ){
  int a = 611, *ptr;

  ptr = &a;
  printf( "変数aのアドレス=%p\n", &a);
  printf( "変数aの値=%d\n", a);
  printf( "ポインタptrの値=%p\n", ptr);
  printf( "ポインタptrの指す値=%d\n", *ptr);
  return 0;
}/* %pはアドレスを表示するための変換指定 */
890デフォルトの名無しさん:2009/12/10(木) 12:48:57
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
sinxをテイラー展開しn項目で打ち切ったものについて
xについては0から2πまでの範囲を0.05π刻みでけいさんし、nについてはn=1,2,3,4(すなわち3次、5次、7次、9次までの展開)について計算し
x   sinx 3次まで ・・・・・9次まで
0.0 …
0.157 …
のような数表を自分で指定したファイルに出力するプログラムを作成しなさい。
[3] 環境
 [3.1] OS: windowsVista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009 12/11
[5] その他の制限:特にはありません。よろしくお願いします。
891デフォルトの名無しさん:2009/12/10(木) 13:33:45
やることが山積みで宿題ができないというが、宿題はやることに含まれないのが不思議でならん。
学生にとって宿題は優先度の高い「やること」だと思うんだけどな。
892デフォルトの名無しさん:2009/12/10(木) 13:50:07
宿題とかいらないから
全国共通の単位認定ペーパー試験でも作ってそれパスした奴らにだけ単位与えろよ
ろくに出来もしない奴らに単位認定してる意味がわからん
授業や宿題は学習の手助け的なとこに位置づけてほしいわ
九九や割り算や少数もワカランような奴が中学卒業とか
微積分もろくに分かってないような理系が大学卒業とか
バカらしいわ
893デフォルトの名無しさん:2009/12/10(木) 13:52:40
微分積分ってなんですかって厳密に答えられるやつがどれだけいるのか
894デフォルトの名無しさん:2009/12/10(木) 13:53:59
>>893
だよな
何のための大学だよって感じ
895デフォルトの名無しさん:2009/12/10(木) 14:05:55
>>890
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10255.txt

なおファイル名の入力にgets()を使うのが不安なら
自分でfgets()などに直す事
896デフォルトの名無しさん:2009/12/10(木) 14:08:24
テイラー展開で階乗やpowって計算量無駄に多いね
897デフォルトの名無しさん:2009/12/10(木) 14:20:32
>>896
そう思うならお前が書いてやれカス
898デフォルトの名無しさん:2009/12/10(木) 14:21:25
そんなの書く必要もないくらい初歩だろw
899デフォルトの名無しさん:2009/12/10(木) 14:25:07
>>898
あーやっぱり書けないんだバーカ

俺の場合はわざと誤差を少なくするために後ろから足しているので
こういう風になってんだよ

悔しければ書け

書けるという口だけなら誰でも言える
900デフォルトの名無しさん:2009/12/10(木) 14:27:35
900get
901デフォルトの名無しさん:2009/12/10(木) 14:30:32
大学で数値計算という感じの授業とかで誤差を減らし精度を上げるための手法を学ぶが
文系の一般教養レベルのプログラミング系の授業だとそこまで求められていなかったりもする
問題文のアルゴリズムをそのまま実現すればいいというレベル
902デフォルトの名無しさん:2009/12/10(木) 14:45:19
>>858>>859です。
>>860さん
cm2は平方センチメートルのことです。すいません。
>>861さん
微分曲線とは、その直線の傾きのことで、要するに、
0から2の範囲で与えられた式を微分しなさい
という問題です。
x3はxの3乗のことです。
903デフォルトの名無しさん:2009/12/10(木) 14:49:43
ソースがちょっと変わったものだと
先生が来て説明を求められたりしたことが数度あった
まぁ自分で書いたソースだったから無問題だったけど
ここで依頼してる人たちって先生から何か質問されても大丈夫なのかなぁ
904デフォルトの名無しさん:2009/12/10(木) 14:49:51
1] 授業単元: forとかwhileとか
[2] 問題文(含コード&リンク): ある整数を入力し,その約数をすべてと約数の個数を表示するプログラムを作成しなさい.


[3] 環境
 [3.1] OS:Windows
 [3.2] わかりません・・・。
 [3.3] 言語:C++
[4] 期限: ([2009年12月11日16:00まで]
[5] その他の制限: forとかwhileとかまでしか習っていないです。

もう1問あります。よろしくおねがいします・・・。
905デフォルトの名無しさん:2009/12/10(木) 14:51:37
コマンドラインでコンパイルしてるならコンパイラ名わかるんでねいの?
GUIソフト使ってるならソフト名とか
まぁいいけどさ
906デフォルトの名無しさん:2009/12/10(木) 14:53:00
>>901
だから人の書いたプログラムに文句だけしか付けられないんなら
すっこんでろってんだよ
907デフォルトの名無しさん:2009/12/10(木) 14:53:22
[2] 問題文(含コード&リンク): ある整数を入力し,それより小さい素数をすべて表示するプログラムを作成しなさい.[3] 環境
 [3.1] OS:Windows
 [3.2] わかりません・・・。
 [3.3] 言語:C++
[4] 期限: ([2009年12月11日16:00まで]
[5] その他の制限: forとかwhileとかまでしか習っていないです。

>>858,>>859,>>904と併せてよろしくお願いします。
908デフォルトの名無しさん:2009/12/10(木) 14:54:07
>>906
ハゲ同
909デフォルトの名無しさん:2009/12/10(木) 14:54:50
数学わからないお・・・
910デフォルトの名無しさん:2009/12/10(木) 14:59:26
> forとかwhileとか
条件分岐とか配列とかポインタとか標準入出力とか
Mathの関数とかオリジナル関数とか
いままで何を習ったのかなぁ・・・
どのレベルで実現すりゃあいいのかなぁ
911デフォルトの名無しさん:2009/12/10(木) 15:00:28
積み残し対策はいいけど、ループ内分岐はよろしくないな。
912デフォルトの名無しさん:2009/12/10(木) 15:05:06
>>904

#include <stdio.h>
int main(void)
{
int n,i,m=0; /*nは入力された数値を記録するため、mは約数の数をカウント*/
printf("InputNunber:");
scanf("%d",&n);
for(i=1;i<=n;i++)
if(n%i==0){ /*%は余りを計算するってことだよ*/
printf("%d,",i);
m++;
}
printf("\n%ds\n",m);
}


実行結果はこんなかんじ
InputNunber:35
1,5,7,35,
4s
913デフォルトの名無しさん:2009/12/10(木) 15:08:26
C++だからprintfやscanfじゃなくてcoutとかcinとかじゃないの?
914912:2009/12/10(木) 15:08:48
ごめんC++だったのね
Cで書いちゃったよ
915デフォルトの名無しさん:2009/12/10(木) 15:13:26
i<=n よりi*i<=nにして、最後にnの分を足すのが効率的。
916デフォルトの名無しさん:2009/12/10(木) 15:17:49
>>915の方法でちゃんと動作するの?
917デフォルトの名無しさん:2009/12/10(木) 15:21:07
144(=12*12=3^2*2^8)の約数
72も約数
i*i<=nだと72は抽出されない
918デフォルトの名無しさん:2009/12/10(木) 15:22:04
>>917
嘘つき
919デフォルトの名無しさん:2009/12/10(木) 15:24:16
素数の方やってたから書き間違えた。
i*2<=nの間違いw
920デフォルトの名無しさん:2009/12/10(木) 15:30:41
i*i<=nまででよくね?
約数を小さい順に並べろとは言ってないんだから
表示に
printf("%d,%d,",i,n/i);
ってすればよくね?

921デフォルトの名無しさん:2009/12/10(木) 15:34:51
それだと平方根を2個表示しちゃわないか?
922デフォルトの名無しさん:2009/12/10(木) 15:36:46
i*i<nにしてループの外でi*i==nを判定して・・・・面倒か
923デフォルトの名無しさん:2009/12/10(木) 15:37:59
>>907
#include <iostream>

int isPrime(int n)
{
if(n<2) return 0;
if(n==2) return 1;
if(n%2==0) return 0;

for(int i=3; i*i<=n; i+=2) if(n%i==0) return 0;

return 1;
}

int main()
{
int n;

std::cin >> n;

for(int i=0; i<n; i++) if(isPrime(i)) std::cout << i << std::endl;
}
924デフォルトの名無しさん:2009/12/10(木) 15:45:16
>>923
for whileまでしか習ってない奴に 関数定義させるなよw
925デフォルトの名無しさん:2009/12/10(木) 16:11:42
先生に不正を疑われちゃうねw
926デフォルトの名無しさん:2009/12/10(木) 16:21:18
>>907
#include <iostream>

int main()
{
int n;

std::cin >> n;

if(n <= 2) return 0;

std::cout << '2' << std::endl;

for(int i=3; i<n; i+=2) {
for(int j=3; j*j<=i; j+=2) if(i%j==0) goto l;
std::cout << i << std::endl;
l:
}
}
927デフォルトの名無しさん:2009/12/10(木) 16:34:48
>>922
無理
928デフォルトの名無しさん:2009/12/10(木) 16:42:02
無理じゃない
#include <stdio.h>

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

scanf("%d", &n);

for(i=1; i*i<n; i++) {
if(n%i==0) {
printf("%d %d ", i, n/i);
m+=2;
}}
if(i*i==n) {
printf("%d", i);
m += 1;
}

printf("\n%d\n", m);

return 0;
}
929デフォルトの名無しさん:2009/12/10(木) 16:43:10
printf,scanf -> cout,cint
930デフォルトの名無しさん:2009/12/10(木) 16:44:22
cintってw
931デフォルトの名無しさん:2009/12/10(木) 16:45:04
タイプミスくらい許せサスケ
932デフォルトの名無しさん:2009/12/10(木) 16:55:04
>>926
goto l?breakって無いんだっけ?
933デフォルトの名無しさん:2009/12/10(木) 17:01:29
breakだと、ループ外でもう一度条件判断が必要になる。
934デフォルトの名無しさん:2009/12/10(木) 17:04:22
ああゴメン、ソースちゃんと読めてなかったわbreakはダメだったね
935890:2009/12/10(木) 17:07:08
>>895
ありがとうございます。ほんとに助かりました
936810:2009/12/10(木) 18:20:16
みなさんにはご迷惑をかけ、恥ずかしく思っておりますが>>819で分からなかったので質問させてもらいます。

>>819では具体例で示した数列での解しかわからないので、数列を入力できるように

int i, a;
printf("数列の入力:");
scanf("%d", &a);

としたところエラーがでてコンパイルができませんでした。

また、>>819のプログラムのa[]= { 数列 }の数列の数を増やしたりすると求めている解と違う解が表示されたりしました。


独習Cを読んで直そうにも初心者すぎて正直ぜんぜん分かりませんでした。。。
本当に申し訳ないのですが、どう直したら、入力ができて正確な解も求まるプログラムになるのか教えてください。
フローチャートは>>820で示したので大丈夫だと思います。
937 ◆FKHan0pzBo :2009/12/10(木) 18:26:15
int a[] = {4,8,2,1,7,9,3,5,6};
int smain(void) {
  int i;
  for(i=0; i<sizeof a / sizeof *a; i++)
    if(f(a, i, sizeof a / sizeof *a))
      printf("%d ", a[i]);
  return 0; }
int main(void) {
  int a1,a2,a3,a4,a5,a6,a7,a8,a9;
  for(a1=1;a1<=9;a1++){
  for(a2=1;a2<=9;a2++){
    if(a1==a2) continue;
  for(a3=1;a3<=9;a3++){
    if(a1==a3 || a2==a3) continue;
  for(a4=1;a4<=9;a4++){
    if(a1==a4 || a2==a4 || a3==a4) continue;
  for(a5=1;a5<=9;a5++){
    if(a1==a5 || a2==a5 || a3==a5 || a4==a5) continue;
  for(a6=1;a6<=9;a6++){
    if(a1==a6 || a2==a6 || a3==a6 || a4==a6 || a5==a6) continue;
  for(a7=1;a7<=9;a7++){
    if(a1==a7 || a2==a7 || a3==a7 || a4==a7 || a5==a7 || a6==a7) continue;
  for(a8=1;a8<=9;a8++){
    if(a1==a8 || a2==a8 || a3==a8 || a4==a8 || a5==a8 || a6==a8 || a7==a8) continue;
  for(a9=1;a9<=9;a9++){
    if(a1==a9 || a2==a9 || a3==a9 || a4==a9 || a5==a9 || a6==a9 || a7==a9 || a8==a9) continue;
    a[0]=a1; a[1]=a2; a[2]=a3; a[3]=a4; a[4]=a5; a[5]=a6; a[6]=a7; a[7]=a8; a[8]=a9;
    printf("\n%d %d %d %d %d %d %d %d %d = ", a1, a2, a3, a4, a5, a6, a7, a8, a9 );
    smain();
  }}}}}}}}}
}/* 9*8*7*6*5*4*3*2 = 9! = 362,880 */
938デフォルトの名無しさん:2009/12/10(木) 19:35:52
なんと数列の入力も必要だったのか
939デフォルトの名無しさん:2009/12/10(木) 20:16:37
>>907の者です。
ありがとうございます。
ここでまさかの自分のミスが発覚いたしまして、
C++ではなく、Cでした;;

お暇な方がいらっしゃれば、>>858>>859にも力を貸していただきたいです。
940デフォルトの名無しさん:2009/12/10(木) 21:39:53
>>869をお願いします
941デフォルトの名無しさん:2009/12/10(木) 21:55:50
>>858
これ問題文足りてる?
それとも俺の頭が足りないだけか?
942デフォルトの名無しさん:2009/12/10(木) 22:09:53
>>941
y平方センチの半径みたいだから、区間の初期値が判れば後は区間毎の円の面積を求めるだけみたいだが…
その区間の初期値をどうするのかがオレにはよくわからん
943デフォルトの名無しさん:2009/12/10(木) 23:41:52
>>869 >>940
標準ライブラリ使えないとなると入出力も自作というわけで無理。以上
944デフォルトの名無しさん:2009/12/10(木) 23:44:28
>>940
<stdio.h> <string.h>さえ使うなという事か?
やるやついるのか??
945デフォルトの名無しさん:2009/12/10(木) 23:47:28
【コラム】Hello Worldコレクション (16) DOSのアセンブラ編 - システムコール、CON、標準出力を使い分ける
http://journal.mycom.co.jp/column/helloworld/016/index.html
946デフォルトの名無しさん:2009/12/11(金) 00:32:28
>>941さん>>942さん
>>858です。
初期値は自分で定めていいようです。
先生問題の出し方適当なので・・・。
947デフォルトの名無しさん:2009/12/11(金) 01:08:24
>>936
配列への入力もちゃんとできないのかよw

int i, a[10];

printf("数列の入力:");
for(i=0; i<10; i++) scanf("%d", a + i);

あと、求める解と違う解が出た具体的な例をあげてみて。
948デフォルトの名無しさん:2009/12/11(金) 02:38:53
[1] 授業単元:ファイル入出力
[2] 問題文(含コード&リンク):
/*タイトル:関数におけるポイント利用プログラム */
/*概要:呼び出し元の変数のアドレスの受け渡しを */
/*   ポイントを用いて行う。         */
/*適宜、プログラム中にコメントを入れる。    */

#include 〈stdio.h〉

/*関数のプロトタイプ宣言 */
int calc(double input_data, double * data_ptr );

int main(void) /* 引数無しのmain関数 */
{
double input_data; /*入力データ*/
double result_data; /*計算結果 */

/*入力データのキーボードからの入力 */
printf("入力値は?->");
scanf("%lf",&input_data);

/*関数呼び出し時に、変数result_dataのアドレスを引数として渡す */
calc(input_data, &result_data);

/*関数calcによって書きこまれた計算結果の表示 */
printf("%lf * 2 = %lf\n", input_data, result_data);

return 0; /* 正常終了 :/
}
949デフォルトの名無しさん:2009/12/11(金) 02:39:37

/* オリジナル関数calc */
/* calc(入力データ、計算結果のアドレスを格納するポインタ) */
int calc(double input_data, double * data_ptr)
{
/*ポインタを使って、呼び出し元のデータ格納場所に値を設定 */
*data_ptr = input_data * 2;

return0; /* 正常終了 */
}

上記プログラムを参考に、
二つの入力データの変数(倍精度実数型)
double input_data1, input_data2;
に対しての、四則演算(+、−、*、/)の結果を、それぞれ
double plus_data, minus_data, multiply_data, divide_data;
の4変数に設定する機能を持つ、オリジナル関数calcを作成せよ。
ただし、main関数上でのcalc関数の呼び出し方法は、以下のようにすること。
calc(inpt_data1, input_data2, &plus_data, &minus_data, &multiply_data, _data);
最後に、main関数上で上記4変数に格納された計算結果を画面に出力せよ。
以上の仕様のプログラムを、calc.cという名前で作成せよ。
calc.cをVisual Studioで実行して、実行結果をcalc.c内の文末に「コメント行」として記載せよ 。
 [3.1] OS: Vista
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 2009年12月11日14:40まで

全くわからないです…。
950デフォルトの名無しさん:2009/12/11(金) 02:40:44
あ、>>949>>948の続きです
951デフォルトの名無しさん:2009/12/11(金) 02:59:00
>>892
漢字を正しく選ぶことができないあなたは小学校を卒業してもよかったのですか?
952デフォルトの名無しさん:2009/12/11(金) 03:13:35
>>951
現行制度だから卒業出来てしまったんだな
酷い社会だ
953デフォルトの名無しさん:2009/12/11(金) 03:26:09
>>944
それが使えないだけならたいしたことないんだけどねぇ
954デフォルトの名無しさん:2009/12/11(金) 03:47:55
VC2005ってC++じゃないの?>>869ではCになってるけど
Cの仕様で作れってこと?
VC2005ってのは標準ライブラリ無しでも何か作れるの?
標準ライブラリ以外のライブラリ使っておkってこと?
955デフォルトの名無しさん:2009/12/11(金) 03:56:36
956デフォルトの名無しさん:2009/12/11(金) 03:57:32
VC2005でCのコードを書くことはもちろんできるし、Cの中でアセンブラを書くことももちろんできる
標準ライブラリ以外のライブラリが標準ライブラリを使っていることは十分考えられる
957デフォルトの名無しさん:2009/12/11(金) 04:08:36
標準Cライブラリ - Wikipedia
ttp://ja.wikipedia.org/wiki/標準Cライブラリ

>>869のは
文字の抽出に標準ライブラリの関数を使うなということだと推測
>>896はあまりにも自分でプログラミングしなかったせいで
皆のレスの意味がわかってないんじゃないの?
stdioが使えないという意味すら分かってないレベルだと推測
もうどうしようもない
958デフォルトの名無しさん:2009/12/11(金) 14:24:39
正直このレベルのプログラミングを他人に頼むような人々が
プログラマになるってことが信じられない
959デフォルトの名無しさん:2009/12/11(金) 14:29:09
え?
ここで聞いてるのはただ単位が欲しいだけの学生じゃないの?
960デフォルトの名無しさん:2009/12/11(金) 14:30:13
×単位が欲しいだけの学生
○単位が欲しいだけのぼっち
961デフォルトの名無しさん:2009/12/11(金) 15:07:32
962デフォルトの名無しさん:2009/12/11(金) 15:09:51
>>961
Error 403
963デフォルトの名無しさん:2009/12/11(金) 15:11:27
小林教授に通報すればいいのかな?
964デフォルトの名無しさん:2009/12/11(金) 15:29:45
下のやつを使って入力した数字の階上の積と総和を出力するようにしてください

#include <stdio.h>

main()
{
float fact;
int i, n;

scanf("%d\n",&n);
fact = 1;
for(i=2;i<=n;i++)
{
fact = fact * i;

}

printf("%.0f\n",fact);
for(i=1;i<=n;i++)
{
fact = fact + i;

}

printf("%.0f\n",fact);

return 0;
}
965デフォルトの名無しさん:2009/12/11(金) 15:36:45
http://www.sc.isc.tohoku.ac.jp/~tacky/
滝沢寛之教授だそうだ
966デフォルトの名無しさん:2009/12/11(金) 16:18:08
下のように支払い金額の計算書を出力するように下のプログラムを修正してください。
menu0 650 1 650
menu1 680 2 1360
menu2 720 3 2160
menu3 840 2 1680
menu4 920 1 920
menu5 980 0 0
menu6 1080 0 0
menu7 1280 1 1280
goukei 10 6370

#include <stdio.h>

967デフォルトの名無しさん:2009/12/11(金) 16:20:07
main()
{
int i, order;
int menu[8];

for(i=0;i<8;i++) menu[i]=0;
for(i=1;i<=10;i++)
{
scanf("%d",\&order)
if( order >=0 && order <= 7)

{
++menu[order];

}
}

for(i=0;i<8;i++){

printf("menu %d; %d\n", i , menu[i]);
}
return 0;
}
968デフォルトの名無しさん:2009/12/11(金) 16:31:57
menu3の金額は無視するってことでいいのかな?
969デフォルトの名無しさん:2009/12/11(金) 16:37:29
menu3は無視せずお願いします。

メニュー番号を10回打ち込んでメニューそれぞれの個数と合計を出力する感じです。
970デフォルトの名無しさん:2009/12/11(金) 17:07:10
971デフォルトの名無しさん:2009/12/11(金) 17:07:58
合計が6370だとmenu3を無視してるんだがw
972デフォルトの名無しさん:2009/12/11(金) 17:49:54
合計間違ってました。すいません。
973デフォルトの名無しさん:2009/12/11(金) 18:17:23
>>908
自演乙
そんなに gets() を否定されたことに根をもっているのでしょうかね。
974デフォルトの名無しさん:2009/12/11(金) 18:20:09
>>960
ぼっちってなんですか?
975デフォルトの名無しさん:2009/12/11(金) 19:33:14
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):

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



[3] 環境
 [3.1] OS:vista
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C++
[4] 期限: 2009年12月16日まで
[5] その他の制限:

平均値がずれ出した辺りからもうお手上げです
間違いの指摘だけでも良いのでお願いします。

表1
ttp://fx.104ban.com/up/src/up10431.jpg
表2
ttp://fx.104ban.com/up/src/up10430.jpg
976デフォルトの名無しさん:2009/12/11(金) 20:20:46
#include <stdio.h>
#define NINZU 4 // お題の指示は、グローバル変数ではなくてマクロ定数のことと思う
#define KOUMOKU 4
float heikin(int *);
char hyouka(float);
void hyouji(int, int *, float, char);
int main() {
int i;
int bango[NINZU] = {1, 2, 3, 4};
int tensu[NINZU][KOUMOKU] = {
{4, 3, 5, 4}, {5, 4, 4, 4}, {3, 2, 2, 2}, {3, 4, 3, 3}
};
float average[NINZU] = {0}; // これの初期化をしろとお題に書いてある
printf("No | 技術力 | 正確さ | 難易度 | 表現力 | 平均点 | 評価|\n");
for (i = 0; i < NINZU; i++) {
average[i] = heikin(tensu[i]);
hyouji(bango[i], tensu[i], average[i], hyouka(average[i]));
}
}
float heikin(int *tensu) {
int i;
float average = 0;
for (i = 0; i < KOUMOKU; i++) average += tensu[i];
average = average / KOUMOKU;
return average;
}
977デフォルトの名無しさん:2009/12/11(金) 20:21:33
char hyouka(float average) {
if (4.0f <= average) {
return 'A';
} else if (3.0f <= average) {
return 'B';
} else if (2.0f <= average) {
return 'C';
} else {
return 'D';
}
}
void hyouji(int no, int *tensu, float a, char h) {
int i;
printf(" %d|", no);
for (i = 0; i < KOUMOKU; i++) {
printf("%8d|", tensu[i]);
}
printf("%8.2f|%8c|\n", a, h);
}
978デフォルトの名無しさん:2009/12/11(金) 20:23:21
インデント調整したり、カラム表示を調整などは任せた。
979デフォルトの名無しさん:2009/12/11(金) 20:36:46
大学の宿題レベルのC言語が一覧であるサイトないですか?
980デフォルトの名無しさん:2009/12/11(金) 20:54:57
大学もピンキリだし。
ここの過去ログ見ればなかなか難しいのもあるよ

そんなことより次スレマダー?
981デフォルトの名無しさん:2009/12/11(金) 20:57:16
ちっと立ててくる。
982デフォルトの名無しさん:2009/12/11(金) 21:00:06
立てた。

C/C++の宿題片付けます 133代目
http://pc12.2ch.net/test/read.cgi/tech/1260532772/
983デフォルトの名無しさん:2009/12/11(金) 22:02:32
>>974
ひとりぼっちの学生。略してぼっち。大生板とか就職板とかではよく見かける単語
984デフォルトの名無しさん:2009/12/11(金) 22:04:33
大学のプログラミングの授業で使われる
市販のプログラミング入門書とかの問題を先生たちは出題することが多い
考えるのが面倒らしい
答えがそのまんま掲載されてることもあるから
そのまんま打ち込めばいいってことよくある
985デフォルトの名無しさん:2009/12/11(金) 22:43:41
でっていう
986デフォルトの名無しさん:2009/12/11(金) 23:59:05
>>988
週末は課題のうp少なくて暇だね
987デフォルトの名無しさん:2009/12/12(土) 00:04:53
>>988
課題?
988デフォルトの名無しさん:2009/12/12(土) 01:11:17
>>976-978
迅速かつ丁寧な回答ありがとうございます
良く見ると間違いだらけの資料ですねwすいませんでした
989デフォルトの名無しさん:2009/12/12(土) 02:56:42
>>976-978
迅速かつ丁寧な回答ありがとうございます
良く見ると間違いだらけの資料ですねwすいませんでした
990デフォルトの名無しさん:2009/12/12(土) 06:24:59
>>899
最初に足す分だけはpowとfactorialで求めて、
そこに-i*2*(i+1)/(rad*rad)をかけてけば
毎回powとfactorial使うよりは計算少なくなるんじゃ?
991デフォルトの名無しさん:2009/12/12(土) 06:44:50
>>990
わかってるってそんな事言われなくても
初心者に見やすいプログラムをと基本に則って書いただけだ
最適化などいくらでも出来るがプログラムが読みにくくなる
992デフォルトの名無しさん:2009/12/12(土) 07:45:32
その割には初心者が避けるべきgets()とかは平気で使ってんのなw
993デフォルトの名無しさん:2009/12/12(土) 07:49:59
文句があるなら自分で手本を示せばいいじゃない
できるならねw
994デフォルトの名無しさん:2009/12/12(土) 08:06:32
ループの中のif (i == 0) は無駄。
ループを抜けた後にradを足せばいい。

pow(-1.0, i)を毎回計算するのはアホ。
iの偶奇で分岐するとか、flgをもってflg*=-1とかにしたほうがマシ。

printf("出力ファイル '%s' をオープン出来ませんでした。\n");
%sに対応する文字列がない。

あんまり初心者のためになるものとは思えない。
995デフォルトの名無しさん:2009/12/12(土) 09:35:59
>>992
初心者はどうしてgets()は避けるべきなのか全然わかりませんけど?
初心者だからこそgets()で十分だと思うんですが
996デフォルトの名無しさん:2009/12/12(土) 09:37:20
>>994
だからお前がソース書けや、って言ってるの
わかった?
早く書け

それからその%sのバグは自分でもわかっててちゃんと直したけど
うpしてないだけです
997デフォルトの名無しさん:2009/12/12(土) 10:05:01
>直したけどうpしてないだけです
アホだw
998デフォルトの名無しさん:2009/12/12(土) 10:05:47
>>996
ソース書いたけどうpしてないだけです
999デフォルトの名無しさん:2009/12/12(土) 10:11:46
>>998
同じ手が通用すると思うな
俺は少なくとも1回うpしている
1000デフォルトの名無しさん:2009/12/12(土) 10:12:25
終わり
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。