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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 2.9 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

【前スレ】
C/C++の宿題を片付けます 56代目
http://pc8.2ch.net/test/read.cgi/tech/1135125328/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
2デフォルトの名無しさん:2006/01/09(月) 10:06:47

http://ugzone.com/flash/flash/2get.html

オラオラ、たまちゃん様が2getしちゃうぞ〜?
〜⌒〜⌒〜⌒〜/⌒\〜⌒〜
⌒〜⌒〜⌒〜/  `・ω)ミ
〜⌒〜⌒〜⌒〜 U彡〜⌒〜⌒〜⌒
〜⌒〜⌒〜⌒〜⌒〜⌒〜⌒〜⌒〜⌒〜
3デフォルトの名無しさん:2006/01/09(月) 10:17:15
>>1
4デフォルトの名無しさん:2006/01/09(月) 10:38:38
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):int_{-1}^{1}f(x)dxをモンテカルロ法で計算するプログラムを作れ。
               試行回数n:=2^MとしてM=2からM=20までのMの値と積分値を出力せよ。
               fは自分で適当に与える。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2006年1月6日18時
[5] その他の制限:なし
5デフォルトの名無しさん:2006/01/09(月) 10:47:09
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):n:=2^MでMを1から27まで順に変えながら、n以下の素数の個数p(n)と{p(n)*log{n}}/nの値を出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2006年1月6日18時
[5] その他の制限:なし
6デフォルトの名無しさん:2006/01/09(月) 10:49:13
>>4
>>5
間違えました。[4] 期限:2006年1月10日16時です。
7デフォルトの名無しさん:2006/01/09(月) 11:20:15
コピペ乙
8デフォルトの名無しさん:2006/01/09(月) 11:47:20
p = プッチ神父(2^M);
9デフォルトの名無しさん:2006/01/09(月) 14:45:02
>>4
数字、英字の前後には半角スペースを入れるように。
10デフォルトの名無しさん:2006/01/09(月) 14:47:13
>>9
俺基準?
11デフォルトの名無しさん:2006/01/09(月) 15:03:51
>>10
世間共通基準じゃないの?
教科書、論文もそうなってるし。
12デフォルトの名無しさん:2006/01/09(月) 15:27:44
>>5
実行にかなり時間がかかること、メモリを結構(300MB弱)必要とすること
の2点に注意せよ。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
char *sieve_of_eratosthenes(int upper) {
    int i, notprime;
    char *integers = (char *)malloc(upper + 1);
    for (i = 2; i <= upper; i++) integers[i] = 1;
    integers[0] = integers[1] = 0;
    for (i = 2; i <= upper / 2; i++) {
        notprime = i;
        while ((notprime += i) <= upper) integers[notprime] = 0;
    }
    return integers;
}
#define MAX_M (27)
int main(void) {
    int MAX = 2 << MAX_M, n, M, i, count = 0;
    char *sieve = sieve_of_eratosthenes(MAX);
    for (n = 2, M = 1; M <= MAX_M; n <<= 1, M++) {
        for (i = (n >> 1) + 1; i <= n; i++) if (sieve[i]) count++;
        printf("M=%2d:p(n)=%10d:{p(n)*log{n}}/n=%f\n", M, count, (count * log((double)n)) / n);
    }
    free(sieve);
    return 0;
}
13デフォルトの名無しさん:2006/01/09(月) 15:33:35
フェルマーとかその他色々とか
14デフォルトの名無しさん:2006/01/09(月) 18:08:15
めるせんぬ数
15デフォルトの名無しさん:2006/01/09(月) 19:04:36
[1] 授業単元:人工知能
[2] 問題文(含コード&リンク):
13台分の車両の長さの線路とその中心に3台分の転車台(くるっと回して向きを反転させる)があり、その上
に、1台の機関車と1〜7の番号が付けられた7台の客車の8両編成の列車が最初は右向きに配置されているとする。
この状態から転車台を使って、左向きに配置された状態(左から順に、機関車、客席1、2、‥)にする問題を
考える。ただし次のようなルールがある。
・機関車と客車は自由に切り離し可能であり、1回の転車で可能な台数は1〜3台である(ただし、線路の長さの関係
で、どんな状況でも1〜3台可能というわけではないことに注意。)
・転車台で向きを反転させる部分の中に、必ず機関車が含まれていなければならない。
・機関車には前後の向きはあるが、客席にはない。
目標状態に至るまでの手順を縦型探索、横型探索、A*アルゴリズムにより探索するプログラムを作成せよ。
ヒューリスティック値は各自でいろいろ設定してみて、最適なものを探してみること。また、状態を保持する
リストは配列のように保持可能な要素数が固定されているものでなく、ポインタなどを利用して保持可能要素数を
動的に変更可能なものを使用すること。
[3] 環境
 [3.1] OS:WindowsXP [3.2] borland bcc55 [3.3] 言語: C言語
[4] 期限: 1/19
初期状態
+++++++++++++++++++++++++++++++
|7|6|5|4|3|2|1|機関車|
+++++++++++++++++++++++++++++++
|←5台分→|←3台分 →|←5台分→|

初期状態から転車させた状態
+++++++++++++++++++++++++++++++
|7|6|5|4|3|機関車|1|2|
+++++++++++++++++++++++++++++++

目標状態
++++++++++++++++++++++++++++++++
|機関車|1|2|3|4|5|6|7|
++++++++++++++++++++++++++++++++
1615:2006/01/09(月) 19:06:47
すいません、前スレでも質問したのですが
切羽詰まっているのでこちらでも質問させてください。
卒業かかってるのでわかる方お願いします。。・;+゜・(ノД`):・゜+:・。
17デフォルトの名無しさん:2006/01/09(月) 19:30:44
18デフォルトの名無しさん:2006/01/09(月) 23:16:14
>>14
めるせんぬはゆるせんぬ
19デフォルトの名無しさん:2006/01/09(月) 23:23:34
[1] 授業単元:コンピュータ基礎
[2] 問題文:問題1 3つの整数の並べかえ
三つのint型整数を昇順に並べかえる関数
void sort3(int *n1, int *n2, int *n3)
を作成せよ。
たとえば、a、b、cがそれぞれ5、3、7のときに sort(&a&b&c) と呼び出した後には
aには3、bには5、cには7が格納されていなければならない
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10日の16時まで
[5] その他の制限: 動作確認のためのmain関数を作成する。
   
20デフォルトの名無しさん:2006/01/09(月) 23:57:58
>>19

#include <stdio.h>
void sort3( int *n1, int *n2, int *n3 )
{
int tmp;
if ( *n1 > *n2 ) { tmp = *n1; *n1 = *n2; *n2 = tmp; }
if ( *n2 > *n3 ) { tmp = *n2; *n2 = *n3; *n3 = tmp; }
if ( *n1 > *n2 ) { tmp = *n1; *n1 = *n2; *n2 = tmp; }
}
int main( void )
{
int a = 5, b = 3, c = 7;
printf( "a: %d, b: %d, c: %d\n", a, b, c );
puts( "sorting..." );
sort3( &a, &b, &c );
printf( "a: %d, b: %d, c: %d\n", a, b, c );
return 0;
}
21デフォルトの名無しさん:2006/01/10(火) 01:11:02
>>19
3つの数はmain(int argc, char *argv[])じゃないの??
22デフォルトの名無しさん:2006/01/10(火) 04:10:17
前スレ落ちた唐揚げ
23デフォルトの名無しさん:2006/01/10(火) 04:57:38
sagesage
24デフォルトの名無しさん:2006/01/10(火) 05:48:09
[1] 授業単元: 情報基礎論演習
[2] 問題文:8×8の盤面上で白と黒の石を使い、相手の色の石を自分の色の石で挟むことで反転させ合う、皆さんよくご存知のオセロと同じルールの白黒ゲームを自動的に実行して盤面を表示するプログラムを作りなさい。
      その際、実行する手は、その局面で最も多く相手の石を反転させるものを選ぶこと。ただし同数の手が複数あるときはその中の任意の1つを選べば良い。また、実行する手が存在しない場合はPass!と表示すること。
      白が先手として実行を開始すること。また各回とも次に示す情報を画面に表示すること。
       ・○あるいは●の石を置く座標
       ・それによって相手の何個の石が反転するか
       ・手を実行直後の盤面
      なお、盤面の表示は一手ごとに画面を静止させてキー入力を促すこと。
      最後には○、●それぞれの数を示し、どちらがかったかも示すこと。
      
[3] 環境
 [3.1] OS:Windows XP
 [3.2] CPad for Borland C++ Compiler
 [3.3] 言語: C
[4] 期限: 2006年1月10日まで
25デフォルトの名無しさん:2006/01/10(火) 06:44:34
>>24
今日が期限じゃん

こんなにギリギリで貼られても困る
俺は学校だし
26デフォルトの名無しさん:2006/01/10(火) 06:55:01
>>24
マルチ氏ね
2724:2006/01/10(火) 08:23:23
なんとかつくってもらえないですか?
期限ギリギリに課題にきずいて焦ってマルチになってしまったのですが・・・。
28デフォルトの名無しさん:2006/01/10(火) 10:16:24
日本語も満足に打てない様じゃ
一生PCの電源点けないほうがいいんじゃない
29デフォルトの名無しさん:2006/01/10(火) 10:24:55
[1] 授業単元:計算機数学
[2] 問題文(含コード&リンク):0,1,1,2,2,2,3,4 から 
              3個選んだときの順列をすべて出力せよ(重複を許す順列)
              ただし、同じ順列を表示しないこと
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2006年01月11日17:00まで
[5] その他の制限: 配列、ポインタ、再帰関数を使用 
         動的メモリ、構造体は習っていないので使用不可


出来ることならコメントもつけて頂けるとありがたいです。
ポインタと再帰関数を使ったプログラムが、
読めるかどうかも危うい未熟者ですので何卒、よろしくお願いします。
30デフォルトの名無しさん:2006/01/10(火) 10:28:20
焦って「はわわー」と(ry
31デフォルトの名無しさん:2006/01/10(火) 12:08:19
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
f(x,y)={((2x-y)^2*(x+3y)^2+x+y)/((4x^2+y^2)*(x^2+9y^2)+1)}+arctan(x^2+y^2-1)^2
の最小(極小)点およびその値(最小値)を次の方法で求める:
適当な初期値(x0,y0)から始めてn=0,1,2,3,・・・に対して
1.ynを固定して1変数関数g(x)=f(x,yn)を考え,
黄金分割法により、この最小点をx=xn+1として求める
2.上のxn+1を固定して,1変数関数h(y)=f(xn+1,y)を考え,
やはり黄金分割法により,最小点をy=yn+1として求める。

これらを繰り返して,(x1,y1),(x2,y2),・・・を生成し,(xn,yn)がほとんど変化
しなくなったら,これを近似解として返す。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc バージョン?
 [3.3] 言語: C
[4] 期限: 1月11日12:00まで
[5] その他の制限: xnとかxn+1→x*nではなくて、xの配列です。みづらくてすみません。

前スレでも聞いたのですが・・・。
この問題はもう駄目でしょうか・・・?
どなたかお願いいたします。
32デフォルトの名無しさん:2006/01/10(火) 12:13:43
>24
風邪で熱っぽい漏れが作ったぞ。

で、24はまだいるのか?
マルチしてるようだし、どっかで答えてもらったか?
33デフォルトの名無しさん:2006/01/10(火) 12:18:35
>>31
ダメってことないけど、ぱっと見でめんどくさそうなのは敬遠されがちだね。
せめて黄金分割法の説明してくれない限り、誰も手を出さないんでないかな。
34デフォルトの名無しさん:2006/01/10(火) 12:19:07
[1] 授業単元:プログラム基礎
[2] 問題文(含コード&リンク):毎日の株価を連続して入力し、
     前日より上昇している場合プラス記号'+’を、下降の場合は
     マイナス記号'-'を出力する(最初は'+’を出力してよい)。
      ストッパは-999とする。
   <入力例>
   23 24 19 17 20 24 27 23 18 16 -999

<出力例>
   + + - - + + + - - -
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月27日まで

どうかよろしくお願いします…m(__)m
35デフォルトの名無しさん:2006/01/10(火) 12:34:41
>>34
同じだったら?
36デフォルトの名無しさん:2006/01/10(火) 12:40:03
//>>34
//取り敢えず同じだったら'='を出力してみる。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int value;
int oldValue = 0;
for (;;) {
if (fscanf(stdin, "%d", & value) < 1) {
fprintf(stderr, "Illegal input.\n");
return EXIT_FAILURE;
}
if (value == -999) {
return EXIT_SUCCESS;
}
if (value > oldValue) {
putchar('+');
} else if (value < oldValue) {
putchar('-');
} else {
putchar('=');
}
oldValue = value;
putchar(' ');
}
}
3734:2006/01/10(火) 12:56:38
>>36
どうも有難うございますm(__)m
株価が同じ場合であったときのことは記載されていなかったので、
教授に聞いてこようかと思います。
38デフォルトの名無しさん:2006/01/10(火) 13:24:08
>>31
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1420.txt
かなりテキトーに作ってる。
ttp://gakuen.gifu-net.ed.jp/~contents/museum/golden/page62_5.html
この辺を参考にしたんで、手法が違ってるようなら勝手に直しとけ。
3924:2006/01/10(火) 14:34:15
まだ答えてもらってないです。
教えてほしいです。お願いします。
4032:2006/01/10(火) 15:09:24
4124:2006/01/10(火) 15:26:38
ありがとうございます。
ひとつ質問なんですが、このプログラムだと2手目の白がうったときに余計なところまでひっくり返りませんか?
42デフォルトの名無しさん:2006/01/10(火) 15:42:24
角が白くなったり黒くなったりします。


    __              へ
    i. ツ               ゝ_!
.   !_l     _r' ⌒ヽ    ノ ,/
.   l ゝ、  ゙T ̄了:), ri' " ,/
    ゙ゝ、 `)"ー、._,r:'"`  l、,/
      ヾ、     l :  i ,/
       Y    l :  l'"
        !     l : ,l←なぜか英雄
        l、   l : l
        /~ ニ口ニ{
          !    ヽ ゙!
        ゝ   ヾ. ゙! ,D.←質問した>>24
         \   ヽ.゙!ー七ヽ,   __
          \   )゙! く ゝ、  /゙ンニヾヽ,
 ̄ ̄ ̄ ̄ ̄ ̄ ̄/   / ゙!" ̄ ゙ ̄ト;'(_)゙lー! ̄ ̄ ̄ ̄ ̄ ̄ ̄
          /ゝ,/ l  !    l.l l_/ヽ.ヽ,H、←風邪を押して一所懸命
         / ,/   ゝニl    `¨¨   ~~~   PG組んだ>>32>>40
         (ゞヘ、   | |
4332:2006/01/10(火) 15:49:13
あー本当だ。
全然気付かなかった。
修正版↓
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1422.c
44デフォルトの名無しさん:2006/01/10(火) 15:57:02
>角が白くなったり黒くなったりします。

あ?
あーまだバグってんな。
4532:2006/01/10(火) 16:23:03
削除キー設定して無かったから消せやしねえ。

で、vol0.03。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1423.c
こうなったら、どこまで行くか試してみるのも一興か。
4631:2006/01/10(火) 16:24:06
>>38さんありがとうございます。
コンパイルしたところ、下のようなエラーが出てしまうのですが、どこか間違っているのでしょうか?
ougon.c: In function `main':
ougon.c:76: warning: control reaches end of non-void function
/tmp/cczqUJoV.o: In function `f':
/tmp/cczqUJoV.o(.text+0x53): undefined reference to `atan'
collect2: ld returned 1 exit status
4732:2006/01/10(火) 16:36:39
漏れの事かと思ってコンパイルしてエラー確認しちまったよ。>46
48デフォルトの名無しさん:2006/01/10(火) 16:52:05
>>46
gcc ougon.c -lm
        ~~~~多分この辺
4924:2006/01/10(火) 17:15:16
32さんありがとうございます。おかげで課題を終えることができそうです。
ほんとにありがとうございました。
50デフォルトの名無しさん:2006/01/10(火) 17:19:38
[1] 授業単元:基礎プログラミング演習

[2] 問題文(含コード&リンク):
構造体の配列を用いて、5人分の氏名、学籍番号、点数を記録し、
新しく入力された点数以上の氏名を出力するプログラムを書け。
(必ず、print_studen(struct student s)と言う学生一人分の情報を
 1行に表示する関数を作成し、それを利用して出力を行うこと。)

<構造体の例>
struct student{
char name[50], id[20];
int score;
};

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月23日まで
5131:2006/01/10(火) 17:29:10
>>47 申し訳ありませぬ
>>48 ありがとうございます。ご指摘の通りでした。

>>31をコンパイルして実行できたのですが、ループが3,4回くらいで終わるのは
仕様でしょうか?
52デフォルトの名無しさん:2006/01/10(火) 17:50:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
10個の整数の中から最大のものと最小のものを探す
関数をそれぞれ作成し、メインプログラムで与えた
10個の整数の中の最大値、最小値を求めるプログラム
(合計3個の関数から成る)を作成しなさい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2005年1月12日12:00まで
[5] その他の制限: どうかお願いします。
53デフォルトの名無しさん:2006/01/10(火) 18:14:52
>>52
#include <stdio.h>
#define SELECT2(op,x,y) ((y)op(x)?(y):(x))
#define SELECT3(op,x,y,z) SELECT2(op,(x),SELECT2(op,(y),(z)))
#define SELECT5(op,x,y,z,v,w) \
SELECT2(op,SELECT2(op,(x),(y)),SELECT3(op,(z),(w),(v)))
#define SELECT10(op,q,r,s,t,u,v,w,x,y,z) \
SELECT2(op,SELECT5(op,(q),(r),(s),(t),(u)),SELECT5(op,(v),(w),(x),(y),(z)))
#define SELECT10_F(f,q,r,s,t,u,v,w,x,y,z) \
int f##_10(q,r,s,t,u,v,w,x,y,z)int q,r,s,t,u,v,w,x,y,z; \
{ return SELECT10(f,q,r,s,t,u,v,w,x,y,z); }
#define max >
#define min <
SELECT10_F(max,q,r,s,t,u,v,w,x,y,z) SELECT10_F(min,q,r,s,t,u,v,w,x,y,z)
int main()
{
printf("max..%d\nmin..%d\n",
max_10(0,8,4,12,2,10,6,14,1,9),
min_10(0,8,4,12,2,10,6,14,1,9));
}
54デフォルトの名無しさん:2006/01/10(火) 18:19:41
>>52
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1424.txt
普通にループさせてみた

>>53
すばらしい。
55デフォルトの名無しさん:2006/01/10(火) 18:51:13
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
[問題]正の整数を入力し,それを各桁毎に分解し,
それらの数字を正順及び逆順に,間に1つ以上の空白をあけて出力するプログラムを書け。
例えば,12345 と入力したら,5 4 3 2 1 と 出力することになる。
ただし,整数の桁数は最大9桁であるとする.

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語: C++
[4] 期限: 一月下旬
[5] その他の制限: 繰り返しの問題です。よろしくお願いします。
56デフォルトの名無しさん:2006/01/10(火) 19:32:41
>>51
仕様。その回数が悪ければアルゴリズムとして多分紹介されない。
意図的にループ回数が長くなりそうな関数を用意したんで同様に突っ込んでみたら?
double f(double x, double y){double a = x - 57.0, b = y - 31.0; return 100*(a+b)*(a+b)+(b-a)*(b-a); }
あとはEPSを小さくして精度を上げるとか。
57デフォルトの名無しさん:2006/01/10(火) 19:49:10
>>55
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1425.txt
てきとーに作ってみた。

scanfの"%9s"の9を、#defineしたもので置き換えたかったんだが
これってどうやるんだっけ?忘れてしまった。
58デフォルトの名無しさん:2006/01/10(火) 19:57:32
>>55
仕様通り「分解」が面倒なので、ズルをした
#include <stdio.h>
#include <string.h>

#define swap(x,y) do{char temp; temp=x; x=y; y=temp;}while(0)

int main()
{
  int i,j,n;
  char s[10];
  printf("9桁以内の整数を入力\n-->");
  scanf("%s",s);
  if(strlen(s)>9){
    printf("9桁までと言ったはずだ\n");
    return 1;
  }
  n=strlen(s);
  for(i=0;i<n-1;i++){
    for(j=i+1;j<n;j++){
      if(s[i]<s[j]) swap(s[i],s[j]);
    }
  }
  for(i=0;i<n;i++){
    printf("%c ",s[i]);
  }
  putchar('\n');
  return 0;
}
59553:2006/01/10(火) 20:54:41
前スレしたのと同じなんですが・・・
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
Web ページの探索アルゴリズム
1.文字列操作を使ったURLの比較アルゴリズムの作成
2.HTML文書からハイパーリンクを抽出するアルゴリズムの作成
3.Webページの構成を解析するアルゴリズムの作成
   という問題です。
詳しくは http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1401.txt

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限: 1月11日8時まででお願いします。
以前、553としてお願いしたんですが、まだ完成していません。
明日、レポートとして提出しなければならないんです。コメントも書かないといけないんです。
  誰かお願いします。
60デフォルトの名無しさん:2006/01/10(火) 21:30:25
>>57
scanf("%*d",s,/*桁数指定する変数、等*/);
っていうのはprintf限定か?
61デフォルトの名無しさん:2006/01/10(火) 21:47:37
>>60
調べてみよう。
すぐに判ることだが、scanf()系では変換結果を無視してしまう。
62デフォルトの名無しさん:2006/01/10(火) 22:33:37
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
  2つのグラフが同型であるかどうかを判定するプログラムを作成しなさい。ただし、入力データは講義で配布した形式(mat4,mat5,...)のものとする。また、次の条件を守ること。

* プログラムはC言語で作成して下さい。
* 同型の場合はその対応(全単射)も出力すること。
* 可能な限り速いプログラムを作成しなさい。例えば、各頂点の次数に着目したり、木を探索する際途中で探索しても無意味だと判明した時点でそれ以下の探索を中止するなど枝刈りを行うことで高速化できます。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:どちらでも可
[4] 期限: 2006年01月11日16:00

入力データ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1426.zip
63デフォルトの名無しさん:2006/01/10(火) 22:42:46
>>59
誰も作ってくれなかったための保険として書いておくと、wget という
プログラムがあって、ソースも公開されているから参考になるかもね。
でもむずいよ。
ttp://www.gnu.org/software/wget/wget.html
64デフォルトの名無しさん:2006/01/10(火) 22:43:00
・sin(x)のマクローリン展開から√2の近似値を計算する
 プログラムを作成せよ。

・sin(π/4)の値を二倍して求めること。

・階乗と累乗の計算は各々関数で行うこと。

・πの値(3.141592)はプログラムに与える。

・重要な処理のところを、コメント文で簡単に説明する。

(お願い)

12日の朝8時50分ぐらいまでにお願いします。
65デフォルトの名無しさん:2006/01/10(火) 22:45:42
やらない理由
@テンプレに従っていない
A個人的に卒研が忙しい
BJavaしか使えない
66デフォルトの名無しさん:2006/01/10(火) 22:47:16
いやいや、AはともかくBならなんでこのスレをみてるんだよ ww
67 ◆1oKmZSIAF. :2006/01/10(火) 22:48:53
[1] 授業単元:暗号理論
[2] 問題文(含コード&リンク):
RSA暗号のプログラム作成。
まず鍵ペアの作成。
(1)Nを求める  N=p*q(p,qは素数) 素数は自分で入力することにする。

(2)Lを求める  L=lcm(p-1,q-1) 最小公倍数

(3)Eを求める  1<E<L gcd(E,L)=1 EとLの最大公約数は1(EとLは互いに素)

(4)Dを求める  1<D<L E*D mod L =1

(暗号化) 平文^E mod N (復号化) 暗号文^D mod N

p,q、平文を自分で入力して(1)〜(4)、暗号化、復号化を出力。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2006年1月11日朝まで。
  鍵ペアの作成まででも良いので、よろしくお願いします。
68デフォルトの名無しさん:2006/01/10(火) 22:52:47
>>62
拡張子 zip なのに zip じゃないとはこれいかに
69デフォルトの名無しさん:2006/01/10(火) 22:55:24
拡張子をexeにすると開けるお
7055:2006/01/10(火) 22:57:21
すいません問題が少し間違っていました。
正しい出力する数字は以下の通りです。

[2] 問題文(含コード&リンク):
[問題]正の整数を入力し,それを各桁毎に分解し,
それらの数字を正順及び逆順に,間に1つ以上の空白をあけて出力するプログラムを書け。
例えば,12345 と入力したら,

1 2 3 4 5 (正順)
5 4 3 2 1 (逆順)

と 出力(数字だけ)することになる。
ただし,整数の桁数は最大9桁であるとする。


すでに教えてくれた方には申し訳ありませんが、もう一度よろしくおねがいします。
71デフォルトの名無しさん:2006/01/10(火) 22:57:30
ごめん、Windows じゃない。でも .tar.gz だったから開けた。
でも文系だしわけわかんないからパス。
72デフォルトの名無しさん:2006/01/10(火) 22:58:43
>>66
すいませんBは一発ギャグです
73デフォルトの名無しさん:2006/01/10(火) 23:08:12
>>70
ばか。答え↓

#include <stdio.h>
int main( void )
{
int n_digits[10] = { 0,0,0,0,0,0,0,0,0,0 };
int c, i;
while (( c = getchar() ) != EOF )
++n_digits[ c - '0' ];
for ( c = 0; c < 10; ++c ) {
for ( i = 0; i < n_digits[c]; ++i )
printf( "%d ", c );
}
putchar( '\n' );
for ( c = 10; c >= 0; --c ) {
for ( i = 0; i < n_digits[c]; ++i )
printf( "%d ", c );
}
putchar( '\n' );
return 0;
}

>>72
ナイスぼけだったと思う
74デフォルトの名無しさん:2006/01/10(火) 23:09:51
>>70
意地悪してみた。VC6では無理かもしれない。
#include <iostream>
#include <sstream>
#include <string>
#include <iterator>
#include <altorithm>

int main()
{
    using namespace std;
    int n;
    cin >> n;
    ostringstream oss;
    oss << n;
    string str = oss.str();
    ostream_iterator<char> osit(cout, " ");
    copy(str.begin(), str.end(), osit);
    cout << '\n';
    copy(str.rbegin(), str.rend(), osit);
    cout << endl;
}
7558:2006/01/10(火) 23:12:17
>>70
見逃した俺も悪いが、それぐらいの修正は自分でやってくれよ
#include <stdio.h>
#include <string.h>

#define swap(x,y) do{char temp; temp=x; x=y; y=temp;}while(0)

int main()
{
  int i,j,n;
  char s1[10],s2[10];
  printf("9桁以内の整数を入力\n-->");
  scanf("%s",s1);
  if(strlen(s1)>9){
    printf("9桁までと言ったはずだ\n");
    return 1;
  }
  n=strlen(s1);
  strcpy(s2,s1);
  for(i=0;i<n-1;i++){
    for(j=i+1;j<n;j++){
      if(s1[i]>s1[j]) swap(s1[i],s1[j]);
      if(s2[i]<s2[j]) swap(s2[i],s2[j]);
    }
  }
  for(i=0;i<n;i++) printf("%c ",s1[i]);
  putchar('\n');
  for(i=0;i<n;i++) printf("%c ",s2[i]);
  putchar('\n');
  return 0;
}
76デフォルトの名無しさん:2006/01/10(火) 23:52:29
>>74
無意味な意地悪だったなw
7759:2006/01/11(水) 00:25:13
>>63
データを見ましたが、難しすぎてまったくわかりません。
これを出したら、さすがにやばいので、誰かお願いします。

私を助けてください。進級したいんです。これが甘えだということもわかってます。
よろしくお願いします。
78デフォルトの名無しさん:2006/01/11(水) 00:31:00
進級ってことは卒業するときにまた頼ってくるのかな・・・
79デフォルトの名無しさん:2006/01/11(水) 00:34:47
>>77
問題の中に書いてあるwww.edu.fe.takushoku-u.ac.jpにアクセス出来ないんだが。
www.takushoku-u.ac.jpならアクセス出来るんだけど違うよねぇ
80デフォルトの名無しさん:2006/01/11(水) 00:43:31
だってHTMLからハイパーリンク抽出するのめんどいんだもん
俺HTMLよく知らないし
81デフォルトの名無しさん:2006/01/11(水) 00:51:09
1字1字読んで
過去5文字が"href="だったらダウト
8255:2006/01/11(水) 00:55:57
>>73-75
ありがとうございます。
>>74
#include <iostream>
#include <sstream>
#include <string>
#include <iterator>
int main()
{
using namespace std;
int n;
cin >> n;
ostringstream oss;
oss << n;
string str = oss.str();
ostream_iterator<char> osit(cout, " ");
copy(str.begin(), str.end(), osit);
cout << '\n';
copy(str.rbegin(), str.rend(), osit);
cout << endl;
return 0;
}

という風にしてみたら自分のパソコンでは無事に実行できましたが大学に送ると以下のエラーが出ました。
work.cpp: In function `int main()':
work.cpp:15: implicit declaration of function `int copy(...)'
work.cpp:17: warning: cannot pass objects of type `reverse_iterator' through `...'
work.cpp:17: warning: cannot pass objects of type `reverse_iterator' through `...'
***error*** コンパイルできませんでした

何度もすみませんがまたよろしくお願いします。
83デフォルトの名無しさん:2006/01/11(水) 01:37:02
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): headコマンドを実装せよ
[3] 環境
 [3.1] OS:WinXP
 [3.2] BCC無償版
 [3.3] 言語: C
[4] 期限: 2006/01/12
http://proxy.f2.ymdb.yahoofs.jp/users/ccb552f0/bc/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8/head.c.c?bcgtoOEBR_MiPR_O

にソースをアップさせていただきました。
このソースに、コマンドラインから渡したパラメータを一つないし二つのみに限定し
三つ以上渡してしまった場合はエラー表示をさせるという機能を追加したいのですが
どうすればよいのでしょうか?
お手数でなければ、ソースにコメントをつけてくださると助かります。
不躾な御願いかと思われますが何卒よろしく御願いします。
84デフォルトの名無しさん:2006/01/11(水) 01:51:22
それくらいは自分でやれよ
85デフォルトの名無しさん:2006/01/11(水) 01:53:00
すみません・・・
86デフォルトの名無しさん:2006/01/11(水) 02:01:02
>>84
アホか。それを言ったらこのスレの意義がなくなるだろが。
87デフォルトの名無しさん:2006/01/11(水) 02:06:05
#include <iostream>
#include <algorithm>
#include <string>
#include <functional>

struct print : public std::unary_function< const char&, std::ostream& > {
std::ostream& operator()(const char& t) const {
return std::cout << t << ((t == '\n') ? "" : " ");
}
};

int main(int argc, char* argv[]) {
if (argc < 2) {
std::cout << "9" << std::endl;
return 1;
}
std::string str(argv[1]);
if (str.length() > 9) {
std::cout << "9" << std::endl;
return 1;
}
std::for_each(str.begin(), str.end(), print())('\n');
std::for_each(str.rbegin(), str.rend(), print())('\n');
return 0;
}
88デフォルトの名無しさん:2006/01/11(水) 02:08:36
"9" -> "9桁以上の正整数を引数うんぬん"
89デフォルトの名無しさん:2006/01/11(水) 02:15:12
cではなくてPascalなんですが、お願いできないでしょうか?
まったく手がつかずに困っています。
90デフォルトの名無しさん:2006/01/11(水) 02:18:25
>>89
Pascalの宿題は俺にやらせろ!!Part1
http://pc8.2ch.net/test/read.cgi/tech/1089719714/
91デフォルトの名無しさん:2006/01/11(水) 02:19:55
>>90
ありがとうございます!!
92デフォルトの名無しさん:2006/01/11(水) 05:35:59
>>83

if(argc>3)
return 0;
93デフォルトの名無しさん:2006/01/11(水) 06:03:38
>>77
今まで何を習ってきたのか
ここで甘えても何の進歩にもならない
また同じ事を繰り返すだけ
94デフォルトの名無しさん:2006/01/11(水) 07:32:21
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 nを入力すると、n!を計算して出力するプログラムを再帰を用いて作りなさい。
 (nを読み込む時に、fgets(), sscanf() を用いること。)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006/01/13
 単純だとは思いますが、どうかよろしくお願いします。
95デフォルトの名無しさん:2006/01/11(水) 08:43:23
既出
96デフォルトの名無しさん:2006/01/11(水) 09:57:21
>>94


#include <stdio.h>

int kai(int n)
{
  if(n==1) return n;
  else return n * kai(n-1);
}

int main()
{
  int a;
  char s[10];

  printf("数字入れなはれ(´・ω・) ");
  fgets(s,sizeof(s),stdin);
  sscanf(s,"%d",&a);

  if(a<=0) printf("\nまたまたご冗談を(´・д・`)");
  else printf( "\n%d の階乗は %d ですよ.\n", a, kai(a));

  return 0;
}
97デフォルトの名無しさん:2006/01/11(水) 09:57:56
>>94

#include <stdio.h>
unsigned get_factorial( unsigned n )
{
if ( n == 1 || n == 0 ) return 1;
return n * get_factorial( n-1 );
}
int main( void )
{
char buf[ 1024 ];
unsigned n;
printf( "Input n > " );
fgets( buf, sizeof(buf), stdin );
sscanf( buf, "%u", &n );
printf( "%u! = %u\n", n, get_factorial(n) );
return 0;
}
98デフォルトの名無しさん:2006/01/11(水) 10:31:05
課題の内容からしてかなり基礎的な事しかやってなさそうだけど
いきなりsizeofとか使ってきたら期待されそうだな。
99デフォルトの名無しさん:2006/01/11(水) 12:20:55
 fgets(s,sizeof(s)-1,stdin);

こう書かなくても平気?
100デフォルトの名無しさん:2006/01/11(水) 12:25:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
N個の要素よりなる配列をmain関数に宣言する。
配列にデータを読み込む関数inputをmainから呼んで入力を行い
データを書き出す関数outputを呼んで出力するプログラムを
配列で呼んで配列で受け取るやりかたで作成せよ
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年1月13日
[5] その他の制限:昔ここで教えて貰ったんですけど、ソースプログラムが
違うって言われたのでおねがいします。
101デフォルトの名無しさん:2006/01/11(水) 12:31:10
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
二次元渦の運動方程式をつかって二対の渦の運動を数値的に求める。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年1月20日
[5] その他の制限:gnuplot
102デフォルトの名無しさん:2006/01/11(水) 12:43:39
>>100 その時のソースうp
>>101 2次元渦の運動方程式を書け
1031引く必要ない:2006/01/11(水) 13:14:32
>>99
逝ってこい。
104101:2006/01/11(水) 13:18:18

http://www.math.meiji.ac.jp/~mk/lecture/ouyousuurijikken/experiment-ode.pdf
の3番 渦糸の力学系 平面状にあるN個の渦糸の運動を表す方程式よりお願いします。
105デフォルトの名無しさん:2006/01/11(水) 14:01:22
>>101
RKF45で?
106101:2006/01/11(水) 14:05:34
いいえ、紛らわしくてすみません。C言語でお願いします。
107デフォルトの名無しさん:2006/01/11(水) 14:59:37
Eular法でとりあえずやったが
あってんだかあってないんだかわからん

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

#define TIME_SLICE 0.001 /* h = t_{k+1} - t_k */

int usage()
{
printf("Usage: prog x1 y1 x2 y2 gamma1 gamma2 ");
return 1;
}
108デフォルトの名無しさん:2006/01/11(水) 15:00:43
続き

typedef struct _point
{
double x;
double y;
} point;

double distance(point p1, point p2)
{
return pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2);
}

double fx(int n, point* p, double* g)
{
double res = -g[1-n]*(p[n].y - p[1-n].y);
res /= 2*M_PI*distance(p[1],p[2]);
return res;
}
109デフォルトの名無しさん:2006/01/11(水) 15:01:23
続き

double fy(int n, point* p, double* g)
{
double res = g[1-n]*(p[n].x - p[1-n].x);
res /= 2*M_PI*distance(p[1],p[2]);
return res;
}

void f(point* p, double* g, point* res)
{
res[0].x = fx(0,p,g);
res[0].y = fy(0,p,g);
res[1].x = fx(1,p,g);
res[1].y = fy(1,p,g);
}
110デフォルトの名無しさん:2006/01/11(水) 15:02:10
続き

void euler(point* p, double* g)
{
point res[2];
f(p,g,res);
p[0].x += TIME_SLICE*res[0].x;
p[0].y += TIME_SLICE*res[0].y;
p[1].x += TIME_SLICE*res[1].x;
p[1].y += TIME_SLICE*res[1].y;
}

void show(point* p)
{
printf("(%lf,%lf),\t(%lf,%lf)\n",p[0].x,p[0].y,p[1].x,p[1].y);
}
111デフォルトの名無しさん:2006/01/11(水) 15:03:05
続き

int main(int argc, char* argv[])
{
point p[2];
double gamma[2];

if (argc < 7) return usage();

p[0].x = atof(argv[1]);
p[0].y = atof(argv[2]);
p[1].x = atof(argv[3]);
p[1].y = atof(argv[4]);
gamma[0] = atof(argv[5]);
gamma[1] = atof(argv[6]);

show(p);
while (1)
{
euler(p,gamma);
show(p);
}

return 0;
}
112101:2006/01/11(水) 15:18:02
ありがとうございます。少し見させてください。
私はrungekuttaの方でやってたのですがどうもうまくいきません。

問題用紙をスキャンしました。
http://briefcase.yahoo.co.jp/bc/kanaty321/vwp2?.tok=bc_HJkWBGPY6wJIL&.dir=/&.dnm=%b1%b2%b1%bf%c6%b0.pdf&.src=bc
課題8,9で止まっています。
113デフォルトの名無しさん:2006/01/11(水) 15:29:14
訂正 distance(p[1],p[2]); は distance(p[0],p[1]);
114デフォルトの名無しさん:2006/01/11(水) 15:32:13
[1] 授業単元: 情報工学
[2] 問題文(含コード&リンク):
連成振動の問題。http://www.ne.jp/asahi/tokyo/nkgw/gakusyu/rikigaku/kyousin/kyousin_kaisetu/kyousin_kaisetu.html
Runge-Kutta法で数値解を求めて、それを元に上記ページ上にあるようなグラフ(図1、図2)を描きたい。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月19日
[5] その他の制限:

115101:2006/01/11(水) 15:41:51
ありがとうございます。
実行についてですが、任意の条件をUsageに入れて実行するということでしょうか。
116デフォルトの名無しさん:2006/01/11(水) 15:42:24
[1] 授業単元:関数呼び出し
[2] 問題文(含コード&リンク):
・sin(x)のマクローリン展開から√2の近似値を計算する
 プログラムを作成せよ。

・sin(π/4)の値を二倍して求めること。

・階乗と累乗の計算は各々関数で行うこと。

・πの値(3.141592)はプログラムに与える。

・重要な処理のところを、コメント文で簡単に説明する。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C 
[4] 期限: 2006年1月13日8:50まで
117デフォルトの名無しさん:2006/01/11(水) 16:39:47
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1427.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2006年 1月17日
宜しくお願いします。
118デフォルトの名無しさん:2006/01/11(水) 17:43:26
119初心者ですみません:2006/01/11(水) 18:06:02
素数を求めるプログラムです。(A)〜(D)を教えてください。
#include <stdio.h>
int sosu (int n)
{
int i;
for ( _(A)_;_(B)_ ;i++){
if( _(C)_) {/*nがiで割り切れた場合には*/
return 0; /*0を返す*/
}
} /*繰り返し処理の終了*/
return 1; /*最後まで割り切れなかった場合には1を返す*/
}
int main()
{
int n, m;
printf ("自然数mを入力してください\n");
scanf ("%d", &m);
printf ("素数リストは次の通り\n");
for (n=1; n<=m; n++) { /* 2〜mまでの自然数を調べる */
if ( _(D)_) { /* nが自然数だった場合には */
printf ("%d", n); /* 画面に表示する */
}
}
printf ("\n");
return 0;
}

120デフォルトの名無しさん:2006/01/11(水) 18:18:10
>>119
(A) iの初期値は2
(B) iがnになったら終了
(C) nをiで割った余りが0なら
(D) 関数sosu()にnを引数として与えた結果が1なら
121デフォルトの名無しさん:2006/01/11(水) 18:55:49
>>119
いや、ハマったハマった。

(A) i=2
(B) i<n
(C) !(n%i) または n%i==0
(D) n!=1 && sosu(n)

蛇足ながら、最後画面に表示するところ、%d の後ろにスペース入れたほうが見やすい
122デフォルトの名無しさん:2006/01/11(水) 19:17:28
[1] 授業単元:NEC ソフト部新人教育
[2] 問題文:指摘したプログラムの誤りを直しなさい。
[3] 環境
[3.1] OS:UNIX
[3.2] : (gcc 2.9 VC 6.0等)
[3.3] 言語:C
[4] 期限:1/16(月)
[5] その他の制限:特になし

指摘事項
下記プログラムは点数にaaaなんて入力しても入ってしまうのは問題。
そこで次のように0〜100までの整数値しか入らないようにプログラムを直しなさい。

点数を入力=> aaa
点数に誤りがあります。0〜100までの整数値を入力=> 91
氏名を入力=>

となるようにしなさい。
123122:2006/01/11(水) 19:20:18
私が作成したプログラム。(途中省略)
#include <stdio.h>
#include <string.h>

int score;
char sca[4],name[150],buf[256];
FILE *fp;

int main(int argc,char* argv{}){
void fp1(){
fp = fopen( "seiseki2.txt" , a+ );
if( fp == NULL ){
printf("seiseki2.txt使用不可\n");
}
while(1){
printf( "氏名を入力=>" );
scanf( "%s" ,name );
if( strcmp( name , "end" ) ) == 0 )
break;
printf( "点数を入力=>" )
scanf( "%s" , buf );
if( strcmp(buf , "end" ) == 0 )
break;
sscanf( buf, "%d" , &score );
fprintf( fp, "%s " , name );
fprintf( fp, "%d\n" , score );
}
fclose(fp);
}
124デフォルトの名無しさん:2006/01/11(水) 20:42:48
>>123
そこまで書けたならわかるでしょ
125駅弁 ◆KcEqepNQxM :2006/01/11(水) 20:52:17
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1429.lzh
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: ボーランド
 [3.3] 言語: Cのみ可
[4] 期限: 明日です
[5] その他の制限: ttp://www9.plala.or.jp/sgwr-t/に載ってるくらいの知識の範囲で(めちゃめちゃ高度で不自然なプログラムじゃなきゃOKです。。。)

期限が迫ってるのに一向にプログラムが動いてくれないんです…。誰か助けてください!
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
2004年の通算日が何月何日の何曜日かを表示するプログラムを作りなさい。
1月から12月までの各月の日数の累計を配列に初期設定して使用する。
例えば、通算日の32日は「2月1日 (日)」である。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 特になし
127デフォルトの名無しさん:2006/01/11(水) 21:07:20
#include <stdio.h>
#define PI 3.1415926535897932384
double factorial(long n)
{
doublefn;
fn=n;
while(--n) fn*=n;
return fn;
}
>>116
double powern(double x, long n)
{
doublepx;
px=x;
while(--n) px*=x;
return px;
}
int main(void)
{
doublex, s, p;
intn;
x=PI/4.0;
s=0.0;
n=1;
do {
p = powern(x,n) / factorial(n);
if (n & 2) s-=p; else s+=p;
n+=2;
} while (p > 1E-15);
printf("%.15lf\n",s+s);
return 0;
}
128127:2006/01/11(水) 21:08:30
ヘンなとこに >>116 入っちゃった。>>116 トルアル
129127:2006/01/11(水) 21:13:17
>>125 駅弁
そのLZH落してみたらJPEG1枚しか入ってなかったぞ? これでどうやって解けと?
130デフォルトの名無しさん:2006/01/11(水) 21:19:08
131駅弁 ◆KcEqepNQxM :2006/01/11(水) 21:25:23
>>130
神!ありがとうございます!!!
132デフォルトの名無しさん:2006/01/11(水) 21:27:59
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
連成振動の問題。http://www.ne.jp/asahi/tokyo/nkgw/gakusyu/rikigaku/kyousin/kyousin_kaisetu/kyousin_kaisetu.html
Runge-Kutta法で数値解を求めて、それを元に上記のページのした辺りにあるようなグラフ(図1、図2)を描きたい。
RK法を用いたプログラムでこの連成振動の厳密解を出力するところまでいければあとはできるのですが・・・。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月19日
[5] その他の制限:
133デフォルトの名無しさん:2006/01/11(水) 21:30:37
1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): int i;
floatm[3]={1.0,2.0,3.0};
float *mp;
mp=&m[0]-1;
for(i=1;i<=3;i++){
printf("mp[%d]=%f\n",i,mp[i]);
}
を1オリジンにする(上は0オリジンらしいのです…)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] C言語
[4] 期限: 今日まで

もしよろしければよろしくお願いします。
134125 駅弁 ◆KcEqepNQxM :2006/01/11(水) 21:33:38
すいません
>>130に貼ってあったやつ(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1430.txt
)で
struct tableとかlagrange_interpolationとか使わずに配列(x[0]とか)でxとyを
読み込ませてみたいんですがどこいじればいいでしょうか。。。

それにしてもここにいる人たちはレスポンスすっげー速いですね。俺なんか1時間以上かかるのに…。
やっぱプロは尊敬。

135125 駅弁 ◆KcEqepNQxM :2006/01/11(水) 21:35:59
ばかだな俺・・・lagrange_interpolationって関数名じゃん。
吊ってくるorz
136デフォルトの名無しさん:2006/01/11(水) 21:56:35
>>133
よくわからんがこういうこと?
float m[4]={0.0,1.0,2.0,3.0};
for(i=1;i<=3;i++){
  printf("m[%d]=%f\n",i,m[i]);
}
137デフォルトの名無しさん:2006/01/11(水) 22:02:14
>>133
ようするに配列が1から始まるか0から始まるかってことか?
そのコードは1オリジンじゃないのか?
0に直すなら

int i;
float m[3]={1.0,2.0,3.0};
float *mp;
mp=&m[0];
for(i=0;i<3;i++){
printf("mp[%d]=%f\n",i+1,mp[i]);
}

オリジンって言葉初めて聞いた
138136:2006/01/11(水) 22:06:01
>>137
>>133はポインタで出力時にだけ1オリジンになるように辻褄合わせてるだけじゃないの?
「オリジン」っていうぐらいだから配列の初期化部分が重要だと思う
139デフォルトの名無しさん:2006/01/11(水) 22:06:49
140デフォルトの名無しさん:2006/01/11(水) 22:08:56
>>139
やっとオリジン理解した。
141デフォルトの名無しさん:2006/01/11(水) 22:16:49
>>125
>>130みたらi=0Σ2じゃなくてi=0Σ7じゃん。式間違ってるやん(#゚Д゚)ゴルァ!!
調べてる間に答え書かれちまいましたよ(ノ∀`)
142デフォルトの名無しさん:2006/01/11(水) 22:24:21
すいません;;
こっちが問題でした…;(133はもう1オリジンらしぃです…)

m[0][0]数値1.1アドレス5044
m[0][1]数値1.2アドレス5048
m[0][2]数値1.3アドレス5052
m[1][0]数値2.1アドレス5056
m[1][1]数値2.2アドレス5060
m[1][2]数値2.3アドレス5064

上記の3行3列を宣言した場合のアドレスの並びと、要素数9の1次元の配列
を宣言した場合のアドレスの並びが等価で有ることを確認するプログラムを
作成する。

たびたびすいません;
143デフォルトの名無しさん:2006/01/11(水) 22:28:48
オリジンの意味がわからん俺がいる
オリジンってそもそも原点って意味だよな
それとも専門的な使い方があって俺が無知なだけか・・・
144デフォルトの名無しさん:2006/01/11(水) 22:33:08
オリジンってウチの先生が古くてそう使ってるみたいなんです。
ホント良くわかんないんですよね…
145デフォルトの名無しさん:2006/01/11(水) 22:34:24
>>142
二次元配列は2行3列のようだが?
146デフォルトの名無しさん:2006/01/11(水) 22:37:08
エスパーで察すると

float hoge[3][3]={ ... };

for(int i=0;i<9;i++)
printf("%f ",*(hoge+i));

って事?
147デフォルトの名無しさん:2006/01/11(水) 22:37:39
配列のインデックス等が1から始まるなら1オリジン
148デフォルトの名無しさん:2006/01/11(水) 22:37:58
3行3列の場合を勝手に考えて書いたけど、こんなのでいいの?
#include <stdio.h>

int main()
{
  int i;
  double m[3][3]={{1.1,1.2,1.3},{2.1,2.2,2.3},{3.1,3.2,3.3}};
  double *mp;
  mp=m;
  for(i=0;i<9;i++){
    printf("%lf\n",mp[i]);
  }
  return 0;
}
149デフォルトの名無しさん:2006/01/11(水) 22:44:25
>>132
Runge-Kutta法ならなんでもいいの?

・使用するRunge-Kuttaの次数とか
・その次数での計算に必要になるまで値を蓄積するために使うのはどの数値解法なのかとか
150デフォルトの名無しさん:2006/01/11(水) 22:49:08
あ…;
m[0][0]数値1.1アドレス5044
m[0][1]数値1.2アドレス5048
m[0][2]数値1.3アドレス5052
m[1][0]数値2.1アドレス5056
m[1][1]数値2.2アドレス5060
m[1][2]数値2.3アドレス5064
はいらないっぽいです;

正式には…
3行3列を宣言した場合のアドレスの並びと、要素数9の1次元の配列
を宣言した場合のアドレスの並びが等価で有ることを確認するプログラムを
作成する。
だけでした…;
151デフォルトの名無しさん:2006/01/11(水) 22:55:01
メモリ空間は1次元配列なんで2次元配列で宣言しようが1次元配列で宣言しようが同じなのですよ
152デフォルトの名無しさん:2006/01/11(水) 22:58:34
私の知識(記憶?)が確かなら
0 1 2 3 4 5… が 0オリジン
1 2 3 4 5 6… が 1オリジン
だったはず。

…それでも問題の意図するところが理解できないorz
153デフォルトの名無しさん:2006/01/11(水) 23:03:21
秒、分、時間、西暦、Cの配列の添え字、が0オリジン
月、年、COBOLの配列の添え字、が1オリジン
154デフォルトの名無しさん:2006/01/11(水) 23:40:32
>>150
m1[3][3]とm2[9]の各要素のアドレスを表示
155デフォルトの名無しさん:2006/01/11(水) 23:41:00
[1] 授業単元: プログラミング
[2] 問題文:3行3列を宣言した場合のアドレスの並びと、要素数9の1次元の配列
を宣言した場合のアドレスの並びが等価で有ることを確認するプログラムを
作成する。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] C言語
[4] 期限: 今日まで
156デフォルトの名無しさん:2006/01/11(水) 23:51:11
>>155
int main()
{
int array[9];
int matrix[3][3];
int i;

for (i = 0; i < 9; i++) {
printf("%p\t%p\n",&array[i], &matrix[i/3][i%3]);
}
}
157デフォルトの名無しさん:2006/01/11(水) 23:59:48
[1] 授業単元:基礎プログラミング演習

[2] 問題文(含コード&リンク):
構造体の配列を用いて、5人分の氏名、学籍番号、点数を記録し、
新しく入力された点数以上の氏名を出力するプログラムを書け。
(必ず、print_studen(struct student s)と言う学生一人分の情報を
 1行に表示する関数を作成し、それを利用して出力を行うこと。)

<構造体の例>
struct student{
char name[50], id[20];
int score;
};

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月14日まで
15855:2006/01/12(木) 00:11:27
>>73のを試しましたが私のパソコンでは答えの出力と終了が出てこず
大学に送信すると
{「7」を入力した場合正しくは[7(改行)7」ですが
あなたの答えは 「7(改行)10 10 10 10 10 7」 でした}
と返ってきました。

>>87のを試してみると入力を求められず、「9」を出力して終了してしまいました。

この問題の時点で習っているのがif文とfor、whileだけなので
他のものと見比べたりして色々試してみましたが自力では直すことが出来ませんでした。

また手助けよろしくおねがいします。
159デフォルトの名無しさん:2006/01/12(木) 00:14:34
>学生一人分の情報
全部?
160デフォルトの名無しさん:2006/01/12(木) 00:19:38
なんで左シフトした空きビットに0を入れると成り立つのか?

この質問はどこにもって行けばいい?
161デフォルトの名無しさん:2006/01/12(木) 00:21:12
墓場までもっていけ
162デフォルトの名無しさん:2006/01/12(木) 00:22:16
頼みますよ・・・助けてください
163デフォルトの名無しさん:2006/01/12(木) 00:24:09
>>158
"9"の文字列は"9桁の正整数を引数に"とでもしておいてください

入力はプログラム実行時引数として渡して下さい
例えば作ったプログラムがreverse.exeなら、
reverse 12345
で実行すれば結果は
1 2 3 4 5
5 4 3 2 1
となると思います。
164デフォルトの名無しさん:2006/01/12(木) 00:34:42
てか、これで出来るじゃん…

int main()
{
int a;
scanf("%d", &a);
while(a) {
printf("%d ", a % 10);
a /= 10;
}
putchar('\n');
}
165デフォルトの名無しさん:2006/01/12(木) 00:37:00
>>102
すみません、遅くなりました↓これです
void input(int *a){int i;for(i=0;i<N;i++){scanf("%d",&(a[i]));}}
void output(int *a){int i;for(i=0;i<N;i++){printf("%d\n",a[i]);}}
int main(){int a[N];input(a);output(a);return 0;}
166デフォルトの名無しさん:2006/01/12(木) 00:37:15
C言語のリスト構造がまったく理解できないのですが、
猿並の頭でも理解できるくらい詳しく解説しているサイトを教えていただけないでしょうか…。
サンプルプログラムみたいなのが載ってると理解しやすいかと思うのですが…。
167デフォルトの名無しさん:2006/01/12(木) 00:40:05
>>166
質は保証しない。Googleで出てきただけだから。
自己参照構造体
ttp://www9.plala.or.jp/sgwr-t/c/sec15-5.html
168デフォルトの名無しさん:2006/01/12(木) 00:42:06
>>163
#include <stdio.h>

main(){
int i;
char str[10];
gets(str);
for(i=0;i<strlen(str);i++)
printf("%c ",str[i]);
printf("\n");
for(i=strlen(str)-1;i>=0;i--)
printf("%c ",str[i]);
return 0;
}
169デフォルトの名無しさん:2006/01/12(木) 00:43:00
あっ、引数としてとってないや・・・(汗)
170132:2006/01/12(木) 01:12:02
>>149
レスが遅れてすみませんm(_ _)m

・使用するRunge-Kutta法は4段4次でお願いします。
・値の蓄積にはどのような方法でもいいです。
171デフォルトの名無しさん:2006/01/12(木) 02:47:17
[1] 授業単元:

[2] 問題文(含コード&リンク):

自分で任意のプログラムを作ります。
オセロのプログラムを作ろうと思っています。めちゃくちゃ簡単なのを作ろうと思っています。
使うのはprintf、scanf、if、forなどの超基本的なものだけでいきたいす。
コンピュータに手は打たせないで自分が二役分の手を打っていく形でコンピュータに手は考えさせないでいいです。
つまりはまずフィールドのようなものを表示するプログラム。そこに白、黒の人がが交互にマス目を埋めていくプログラム。
白、黒、黒、白などとフィールド中に縦横か斜めで並んだときに真ん中の黒を白に変えるプログラム。最後にどちらが勝ちか判定するプログラム。
黒や白、フィールドに何も置かれていない状態の表示は簡単のために0,1,2などで表示したほうがいいかもと思うんですが他の方法でもかまいません。

[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:c
[4] 期限: できれば今日中
[5] その他の制限: 200行以内くらいのプログラム。

アドバイス、協力してくれる方いましたらよろしくお願いします。一応メアドも載せときます。
172171:2006/01/12(木) 02:48:31
連投失礼します。メアドです。
173デフォルトの名無しさん:2006/01/12(木) 02:50:06
>>132
これでどう?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1433.txt
実行は初期値を4つ引数に渡して -o progname でコンパイルしたら
./progname [振子1の初期位置] [振子1の初期速度] [振子2の初期位置] [振子2の初期速度]
で実行し、出力は1行ごとにその時点での
[振子1の位置] [振子2の位置]

"時間微分が高次の時はそれぞれの変数が1次になるよう変数を増やす"
174デフォルトの名無しさん:2006/01/12(木) 02:57:53
>秒、分、時間、西暦、Cの配列の添え字、が0オリジン
>月、年、COBOLの配列の添え字、が1オリジン
どうでもいいけど思いっきり間違ってるな。
175 ◆RIMzpqxXe. :2006/01/12(木) 03:10:01
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):
プログラム2は指定したファイルを読み込み、英数字(AからZとaからzと0から9)の塊を表示するプログラムです。
ここで isalnum 関数は文字を読み、文字が英字が数字だった時は 0 以外、英字でも数字でもなかった場合は 0 を返すものです。
このプログラムと strcmp 関数を利用して、この塊が出て来る頻度を大文字小文字を区別した辞書順(strcmp が定める文字列の順序) に
並べるプログラムを作りたい。題意を満たすプログラムを作成しなさい。

プログラム2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1434.c

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:できればCでお願いします。
[4] 期限:2006年01月12日13:00まで
[5] その他の制限:特に制限はありません。よろしくお願いします。
176デフォルトの名無しさん:2006/01/12(木) 03:27:14
西暦は1オリジンだね。
COBOL はしらん。
17773:2006/01/12(木) 03:35:45
>>158
意味がわからん。
ソースに「でした」なんて書いてもいないのにそんな表示出るわけない。
↓ちょっと変えた。たぶん、Windows でも動く。

#include <stdio.h>
int main( void )
{
int n_digits[10] = { 0,0,0,0,0,0,0,0,0,0 };
int c, i;
while (( c = getchar() ) != EOF ) {
if ( c < '0' || '9' < c ) /* that's not a numeral */
continue;
++n_digits[ c - '0' ];
}
for ( c = 0; c < 10; ++c )
for ( i = 0; i < n_digits[c]; ++i )
printf( "%d ", c );
putchar( '\n' );
for ( c = 10; c >= 0; --c )
for ( i = 0; i < n_digits[c]; ++i )
printf( "%d ", c );
putchar( '\n' );
return 0;
}
178デフォルトの名無しさん:2006/01/12(木) 03:45:08
なんか 12345 54321 のやつだけ手厚くサポートされすぎだな
これだけ何種類も答えを提示されて一つも動かないとなると、
何をどう教えても無理じゃないかという気がしてきた
179デフォルトの名無しさん:2006/01/12(木) 03:45:38
>>175
"strcmpを利用して"って題意としてクリティカル?
180デフォルトの名無しさん:2006/01/12(木) 03:47:09
>>175
ぶっちゃけ問題の後半の意味がわからない









さて、自分の宿題やるか( 'A`)
181デフォルトの名無しさん:2006/01/12(木) 03:51:43
>>175
このソース汚すぎ。自分で書いただろ。
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/index.html#mokuji12
182 ◆RIMzpqxXe. :2006/01/12(木) 03:52:05
>>179
必須だと思います。

>>180
このような形にしたいのです。
入力
def abc
abc def ghi
出力
abc: 2
def: 2
ghi: 1
183デフォルトの名無しさん:2006/01/12(木) 03:56:27
>>179
入力の出現文字列塊は最大何文字以内とかの制約は?
184 ◆RIMzpqxXe. :2006/01/12(木) 03:57:54
>>181
教師側から提示されたものなので何とも…^^;
185 ◆RIMzpqxXe. :2006/01/12(木) 04:01:59
>>183
制約としては明記されていないので、一行の上限である80までだと思います。
186デフォルトの名無しさん:2006/01/12(木) 05:24:14
187 ◆RIMzpqxXe. :2006/01/12(木) 06:28:59
>>186
申し訳ありません、少しうとうとしてしまいました。
動作確認いたしました。ありがとうございます。

もう一つの問いに、先に作成したプログラムを書き換える問題で
「文字列の先頭から順に比較していき、最初に異なった文字の大小関係とし、
途中で文字が無くなった場合は無い方が小さいとする」
というものがあるのですが、これは簡単にできるものなのでしょうか?

例:
入力
abcd ab
defg ghi def

出力
ab
abcd
def
defg
ghi
188デフォルトの名無しさん:2006/01/12(木) 06:32:55
189デフォルトの名無しさん:2006/01/12(木) 06:42:04
>>171
俺も昔課題で先読み指向型オセロ作らされたからその時に考えたアイデアの一部

・マスは縦*横の2次元配列
・コマは白=0, 黒=1などどして数値で判別。
・コマをおく時はX=? Y=?それぞれをscanf等で入力

入力した後の処理
1.指定した座標にコマがないか、存在する座標か判別。 ある↓ 無い→座標再入力要求
2.隣接するマスで最低1個以上の相手のコマがあるかどうか調べる。 ある↓ 無い→座標再入力要求
3.相手のコマがある方向へ、マスがなくなるまでfor分でサーチ
 サーチして自分のコマがあったら、その部分まで全てのコマを自分のコマに置き換え 自分のコマが無い→座標再入力要求
 相手のコマがある方向全てに対して処理する
4.コマの切り替え

あとはパスの判定とかマスが全て埋まったらコマの数を数えて結果を出力する処理が必要。
他に効率のいいやり方があるだろうが俺の場合はこんな感じ。
printf、scanf、if、for、whileくらいでいけるはず。200行以内でいけるかは分からん。
190デフォルトの名無しさん:2006/01/12(木) 06:49:55
マジレスすると盤面2次元配列にすると面倒だから1次元のがいい
191デフォルトの名無しさん:2006/01/12(木) 07:03:40
>>187
頻度出力してる部分削ればいい
"%s: %d\n" を "%s\n"とかって
192デフォルトの名無しさん:2006/01/12(木) 07:07:27
面倒でも分かりやすいほうがいいよ。
まあどっちでもいいんだけど。
2次元なら↓みたいになるのかな

//0=空 1=● 2=○
int panel[8][8]=
{
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 2, 1, 0, 0, 0},
{0, 0, 0, 1, 2, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
}:
193デフォルトの名無しさん:2006/01/12(木) 07:08:33
2次元配列にすると変数そのものが扱いにくくなるんだよなぁ
特にポインタ関係
194デフォルトの名無しさん:2006/01/12(木) 07:17:56
8×8だと周りを壁で囲めないから判定面倒になるぞ
195171:2006/01/12(木) 07:25:40
みなさん、ありがとうございます。私もとりあえず2次元配列はわかると思うのでそっちで進めていこうと思います。
>>188ソースが半分以上意味わかめなので要所要所理解してみます。
>>189細かくありがとうございます。パスの概念とか見逃していました。
196デフォルトの名無しさん:2006/01/12(木) 07:31:44
二次元使ってると途中でマジで蹴り飛ばしたくなるからやめとけ
197 ◆RIMzpqxXe. :2006/01/12(木) 07:34:08
>>191
あ、すみません。
そういう事ではなくて、文字数が少ないものが上にくるようにしたいのですが。。。
どうにかできませんでしょうか?
198 ◆RIMzpqxXe. :2006/01/12(木) 07:40:42
申し訳ない、私の勘違いでした^^;

長い時間お付き合い頂きありがとうございました。
これで安心して学校へ行けそうです。
199デフォルトの名無しさん:2006/01/12(木) 07:54:02
あー、なんか終わってるぽい。でも折角作ったからあげとく。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1436.c
win2000、bccでしか確認してないけど、多分OK。
二次元で8×8だけど今のところ問題なし。
200デフォルトの名無しさん:2006/01/12(木) 07:55:41
安心して学校へって言っても実際力ついてないんだよな
そこんとこ錯覚しないでくれよ
201171:2006/01/12(木) 08:04:51
>>199ほんとありがとうございます。ちょっと私から見ると難しそうですが、めちゃくちゃ参考にします。
>>196わかりました。一次元でも考えてみます。
202デフォルトの名無しさん:2006/01/12(木) 08:41:27
甘えるやつを甘やかしてどんどん堕落させるのが俺らの役目ヽ( ゚∀゚)メ(゚∀゚ )ノ アヒャヒャヒャ
203199:2006/01/12(木) 08:57:58
>171
バグってた。入力に8以上の数字を入れるとさくっとメモリ破壊される。
修正版↓ #defineも入れといた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1439.c
Cygwin+gccでも動作確認OK。

>202
堕落、堕落はあざなえる縄のごとし。
204デフォルトの名無しさん:2006/01/12(木) 09:01:11
そして日本は腐ってく
俺みたいに
205デフォルトの名無しさん:2006/01/12(木) 10:10:12
time() 関数を使うと UNIX 時間を秒単位で得られますが、
もう少し細かく時間を知る方法は無いでしょうか?

外部のプロファイラなどに頼らず、
ある関数の開始と終了時点で計時し、
かかった時間を調べたいと思っています。

IA32 アーキテクチャの RDTSC レジスタを読み取って、
クロック数を得る事で粒度の細かい計時が可能なのですが、
もう少しポータブルな方法を探しています。
Cygwin, Linux および Solaris で共通に利用できるような
方法を探しています。
206デフォルトの名無しさん:2006/01/12(木) 10:28:38
clock()とかgettimeofday()とかgetusage()とか?
207初心者ですみません:2006/01/12(木) 10:49:34
出力した素数の数を数えるプログラムはどうやったら作れますか?

例えば、
1〜100までの素数の数は

25 です

このように表したいです
208デフォルトの名無しさん:2006/01/12(木) 10:55:32
wcに喰わせる。
209デフォルトの名無しさん:2006/01/12(木) 10:55:33
>>205
>>207
まず、>1をよく読むといいと思うよ。
210121:2006/01/12(木) 11:02:27
>>207
>>119流用

#include <stdio.h>
int sosu(int n){int i;for(i=2;i<n;i++){if(n%i==0){return 0;}}return 1;}
int main(){
int n,m,cnt;cnt=0;
printf ("自然数mを入力してください\n");
scanf ("%d", &m);
for (n=1; n<=m; n++){if (n!=1 && sosu(n)){
//printf ("%d ", n);
cnt++;}}printf ("\n素数は%d個\n",cnt);return 0;}

コメント外せば素数表示できる。
100入れたら25出たからたぶん大丈夫。
211121:2006/01/12(木) 11:07:16
訂正。とは言え自己満足のレベルだけど。

#include <stdio.h>
int sosu(int n){int i;for(i=2;i<n;i++){if(!(n%i)){return 0;}}return 1;}
int main(){int n,m,cnt;cnt=0;printf ("自然数mを入力してください\n");
scanf ("%d", &m);for (n=1; n<=m; n++){if (n!=1 && sosu(n)){
/*printf ("%d ", n);*/cnt++;
}}printf ("\n1〜%dまでの素数は%d個\n",m,cnt);return 0;}
212デフォルトの名無しさん:2006/01/12(木) 12:10:04
符号付2進展開のプログラムについてです。

[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
a^rをa,rごとに入力し、rを2進展開して(5^3)*(2^6)を求めるプログラムを作りなさい。
またrを符号付2進展開にした場合のプログラムも作りなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C言語
[4] 期限:2006年1月15日
[5] その他の制限:a,rの入力は面倒だと思うのでscanf使わずにプログラムに埋め込んでいいです。

問題文分かりにくいですが以下のようなことです。
(符号付じゃない場合)
   3 = 0 1 1・・・・・・5の指数部
   6 = 1 1 0・・・・・・2の指数部
ーーーーーーーーーー
上のように指数部を2進展開して上位ビットから見ていきます。
1がたったビットでは×仮数部をして、右にシフトするごとに2乗するようにします。 
このような仕様です。よろしくお願いします。
      
213デフォルトの名無しさん:2006/01/12(木) 13:05:50
#include <stdio.h>

int main( void )
{

int num, *pnt;

for( num = 10; num >= 6; num-- ){
printf( "value:%2d address:%p\n", num, &num );
}
while( num != 0 ){
pnt = #
printf( "value:%2d address:%p\n", *pnt, pnt );
num -= 1;
}

return 0;

}


関数とポインタ関数を用いて10〜1の値と、そのアドレスを表示せよというプログラムを書いたつもりなんですが、
これでいいんでしょうか
実行してみると、アドレスが全部同じなんですが・・・・・
214デフォルトの名無しさん:2006/01/12(木) 13:10:34
num という関数の確保した領域しか存在しないから、アドレスは一定だよ。
コードは汚いが合ってる。
215デフォルトの名無しさん:2006/01/12(木) 13:39:35
課題が出ました。お願いします
1,変数x,yにそれぞれ8と5を代入して,x/yを計算し,
整数解と実数解を出力するプログラムを作成せよ

2,sを入力し,sから200までの整数のうち16の倍数となる整数を
出力するプログラムをfor文またはwhile文を用いて作成せよ

3,nを入力したとき,その数を3で割ったとき,割り切れるならばaを
,1余るならばbを,2余るならばcを出力するプログラムを作成せよ。

4,n人分について国語,社会,数学,理科,英語の5科目の得点を入力し,
それぞれの合計点を計算した後,n人を合計点の小さい順に並び替え,
出力するプログラムを作成せよ。ただし,各科目の変数名を
ko,sy,su,ri,eiとし,配列名はtokutenとすること

5,すべて大文字の英字を10字以内で入力し,
そのうちの子音(a,i,u,e,o以外の文字)の部分を小文字に
変換して出力するプログラムを作成せよ。
(例:MOMOTAROU → mOmOtArOU)

6,15文字以内の文字列(英字)と3文字のキーワード(英字)を入力する.
このとき,先に入力した文字列にキーワードが含まれていたら 「あります」
,含まれていなければ 「ありません」 と,
メッセージを返すプログラムを作成せよ.
たとえば,入力文字が「takoikatai」のとき,
キーワードが「ika」の場合は「あります」,キーワードが「aji」の場合は「ありません」と表示されるようにする.
216すいません 215です:2006/01/12(木) 13:44:01
[1] 授業単元:プログラミング演習

[2] 問題文(含コード&リンク): 215です
[3] 環境
 [3.1] OS: (Windows xp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: (C
[4] 期限: 2006年1月14日24h
[5] その他の制限:、標準ライブラリは使ってはいけない
授業は215の範囲ぐらいしかいってません
217すいません 215です:2006/01/12(木) 13:48:28
一番はとけたのですが,後のものがとけません。
一番以外お願いします。
218デフォルトの名無しさん:2006/01/12(木) 14:05:34
>>214 関数とポインタ関数を用いて
とあるので違うと思う
219デフォルトの名無しさん:2006/01/12(木) 14:10:10
変数だと勝手に解釈したが…
220デフォルトの名無しさん:2006/01/12(木) 14:14:15
>>215
2.
scanf("%d".&s);
for(s;s<201;s++)
{
if(s%16==0)
{ printf("%d\t",s);
}
}

3.
scanf("%d",&n);
if(n%3==0)
{ printf("a\n");}
else if(n%3==1)
{ printf("b\n");}
else
{ printf("c\n");}

221デフォルトの名無しさん:2006/01/12(木) 14:19:19
>>215
何故1.が出来て2.3.が出来ないか!!

とりあえず2.
#include <stdio.h>
int main(){int i,s;
printf ("input s:");scanf ("%d", &s);printf("\n");
for( i=s; i<200; i++)if(!(i%16))printf("%d ",i);}
222デフォルトの名無しさん:2006/01/12(木) 14:24:23
[1] 授業単元:情報処理
[2] 問題文人工無能を作れ。
       やる気がなければオウム返しでもよい。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2006年2月上旬
[5] その他の制限:なし
223デフォルトの名無しさん:2006/01/12(木) 14:36:53
>222

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

int main(){
char buf[BUFSIZ];
while(fgets(buf, sizeof(buf), stdin)){
if(!strcmp(buf, "quit\n"))
break;
printf("> %s", buf);
}

return 0;
}
224デフォルトの名無しさん:2006/01/12(木) 14:45:07
>>215
の2
int s;
scanf("%d", &s);
s+=(16-(s%16))%16;
while(s<200)printf("%d\n", s), s+=16;
もう解決してるし・・・
せっかくだからおいとく
225デフォルトの名無しさん:2006/01/12(木) 14:53:16
>>215
5.(4はめんどいんで後回し)

#include <stdio.h>
int main(){char s[10+1],*p;
fgets(s,10+1,stdin);p=s;
while(1){if(*p=='\0') break;
if(*p>='A' && *p<='Z')if(*p!='A'&&*p!='I'&&*p!='U'&&*p!='E'&&*p!='O')*p+=0x20;
putchar(*p++);}}
226デフォルトの名無しさん:2006/01/12(木) 15:05:27
3.やっと動いた。
いちど別の変数に入れてポインタ指定しないとダメなんかな?
このへんの処理が(見た目)重い…

#include <stdio.h>
int main(){int n;char s[]={'a'},*p;p=s;scanf("%d",&n);putchar(*p+=n%3);}
227215:2006/01/12(木) 15:10:00
ありがとうございます。
自分でもいまやってるんですが,やはり皆さんはやいです。
すげー
228デフォルトの名無しさん:2006/01/12(木) 15:18:28
>>226
すげぇ無駄だな。
229215:2006/01/12(木) 15:19:01
すいません・・・
c++でした・・。
230デフォルトの名無しさん:2006/01/12(木) 15:20:02
うはwwwwwwwwww
最初に言えよwwwwwwwwwwwwww
231デフォルトの名無しさん:2006/01/12(木) 15:20:48
>>229
死ね
232デフォルトの名無しさん:2006/01/12(木) 15:21:45
テキストファイルを読み込み、最長の行を出力するプログラムを作成しなさい。
これ、教えて。
233デフォルトの名無しさん:2006/01/12(木) 15:22:01
>>226
putchar('a'+n%3);
これでいいね。
234215:2006/01/12(木) 15:28:40
すいません。 そこんとこもよくわからん初心者でして・・・
235226:2006/01/12(木) 15:31:57
>>233
動きましたw
改めて貼っとく。

#include <stdio.h>
int main(){int n;scanf("%d",&n);putchar('a'+n%3);}
236デフォルトの名無しさん:2006/01/12(木) 15:32:15
[1] 授業単元:情報工学
[2] 問題文(含コード&リンク):円周率をマチンの公式を使い1万桁表示するプログラムを作る.
多倍長演算を使い,5桁ごとに1つ空白を入れる.
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 今日中 1月12日24時まで
[5] その他の制限: なし
よろしくおねがいします
237デフォルトの名無しさん:2006/01/12(木) 15:35:34
[1] 授業単元:応用プログラミング
[2] 問題文(含コード&リンク):期末試験を手伝え。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 01/23 12:50〜14:20限定
[5] その他の制限: 留年かかってます。当日ここに高速で書き込むので即答をお願いします。
238デフォルトの名無しさん:2006/01/12(木) 15:36:20
>>237
手伝えってw
命令口調ワロス
239デフォルトの名無しさん:2006/01/12(木) 15:39:04
>>237
お手伝いロボット置いときますね。ぐぐっただけなんで詳細不明

               -―-
              . ´       ` 、
          '    , i l ! ヽ  ヽ
           〈\ .〃/‐リノ ノリ)ヘヽ.\`
        ,' ヽ \ /,ィ'"|`  f'!ヽト、!`   / ̄ ̄ ̄ ̄ ̄
          l//, ゙{0))! ヒ1!   ,l.!,. l、ヽ   .|
          ' /l/` リl、"´  lフ  イゝ   < 健康びーむ?
           '´ l/_i_リ,!  r._´ リ     |
            '「 , ‐ゝ>r'l〉く.、      \_____
           く,`l  ,.`Kト〉ヾヽ
             ゝL  ヾ.l、〉 r'
               ,-|  「 {} !_ |
                ! l、  `)}´}
               `>/`,-´、 ァ'
             く./ {_`」./ l}
             // 「i.     k
             ,.' /   >!    l}
          j /   r'j    i1
            ^!,'    k1   k'
240デフォルトの名無しさん:2006/01/12(木) 15:40:14
天才ハゲワロス
241デフォルトの名無しさん:2006/01/12(木) 15:53:13
マルチなんかに手伝わせたら
確実に留年する
242デフォルトの名無しさん:2006/01/12(木) 16:00:05
>>216
やばいな、見落としてた。

[5] その他の制限:、標準ライブラリは使ってはいけない
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^このへん
どうしようか・・・_| ̄|○ ゼンブヤリナオシカヨ
243デフォルトの名無しさん:2006/01/12(木) 16:10:51
標準ライブラリ駄目って<stdio.h>も駄目か?
244デフォルトの名無しさん:2006/01/12(木) 16:12:18
C++ でしょ?
cout もだめとか
245デフォルトの名無しさん:2006/01/12(木) 16:17:07
246デフォルトの名無しさん:2006/01/12(木) 16:26:28
>>215
WindowsAPI叩けってことだよね?
247デフォルトの名無しさん:2006/01/12(木) 16:36:40
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
d2y(x) / dx2 + dy(x) + y(x) = sin(πx)
0≦x≦1で定義された微分方程式
を境界条件 y(0)=0, y(1)=0のもとで解け

[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 1月13日17時まで
お願いします

248デフォルトの名無しさん:2006/01/12(木) 16:39:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
   ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。

:実行例:

a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4] 期限:2006年1月13日12:00まで
成績に関わるんでよろしくお願いします。
249デフォルトの名無しさん:2006/01/12(木) 18:14:04
[1] 授業単元: アルゴリズム演習B
[2] 問題文(含コード&リンク):
int t(int x, int y, int z) {
  if (x > y) return t(t((x-1),y,z),t((y-1),z,x),t((z-1),x,y));
  return y;
}
という関数tがある。tと等価な関数で高速なものを実装せよ。
目安としてはt(2006,1003,0)がtimeコマンドで10s以内

[3] 環境
 [3.1] OS: 問わない
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1/15(日)の23:59まで
250デフォルトの名無しさん:2006/01/12(木) 20:15:23
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): セット時刻になったらグラフィックを表示し音楽を鳴らすプログラムを作る
[3] 環境
 [3.1] OS:Windows
 [3.2] lcc
[4] 期限:17日
[5] その他の制限: グラフィックはchinouglなどをつかう


プログラミングが完成したらグラフィック処理、音楽処理、時間判定の処理を関数として書き、
main()から呼び出す形にしなきゃいけません。
・・・
int main(){
・・・
timecomp();
graphic();
music();
・・・


後、絵はなんでもいいです!
面倒だとは思いますがよろしくお願いします。

251デフォルトの名無しさん:2006/01/12(木) 20:25:45
chinougl おもしろすぎ
252デフォルトの名無しさん:2006/01/12(木) 20:26:56
[1] 授業単元: プログラミング
[2] 問題文:
 1.下のファイルに画像があります。その中の赤枠の中お願いします。その文章中の演習問題4-8の
  プログラムが1.cppです。

 2.ファイルの中にある、2.cppは2つの画像を重ねて画素の差の有無で0か255に出力するプログラムです。
  そして、もとの画像は、見た目が同じものを使うのですが出てきた画像は他の画像になっています、
  それは何故でしょうか?
  

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: VC 5.0か6.0
 [3.3] 言語: どちらでも可
[4] 期限: 1月13日14:00まで
[5] ファイルは(http://cgi.2chan.net/up2/up.htm)のf111554.zipです。
  出来ないと単位を取れないので、時間が無いですが、お願いします。
253デフォルトの名無しさん:2006/01/12(木) 20:34:25
ハッピー☆マテリアルですか?
それはともかく
>>250
グラフィック処理、音楽処理は機種依存の処理になるので
そのあたりは下で問い合わせた方がいいかもしれません
  【初心者歓迎】C/C++室 Ver.24【環境依存OK】
  http://pc8.2ch.net/test/read.cgi/tech/1135828083/l50
そのchinouglというライブラリの仕様がこちらからではわからないためです。

ここで回答できるのは
ソースにセット時刻を書き込むか(コンパイルしたら設定変更できない)
外部テキストファイルから読み込んでその時刻になったら
graphic(); 
music(); 
を呼び出すということくらいですがよろしいですか。

254デフォルトの名無しさん:2006/01/12(木) 20:39:32
>>252
#include "params.h" 
#include "ImageMDisp.cpp"
#include "ResultMDisp.cpp"
がどんなファイルかわかりませんので答えようがありません。

今なぜあなたが単位がとれるかどうかの瀬戸際に立たされているか
ということをよく考えればなんとか解決できるのかもしれません。
255デフォルトの名無しさん:2006/01/12(木) 20:47:04
google 検索によると chinougl は熊本大学限定ライブラリのようだ。
256デフォルトの名無しさん:2006/01/12(木) 20:50:42
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):整数iの自乗が1000以上で、一番1000に近い値となるiとiの自乗を出力するプログラムを作成
#include <stdio.h>

void main(void)
{
int i;
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ボーランドC++ Compiler
 [3.3] 言語:C++
お願いします
257デフォルトの名無しさん:2006/01/12(木) 20:53:49
>>254
そうですか、その辺は習っていなくて学校のサーバーから移してvoid Processing(unsigne〜〜[X_SIZE])以下を
打つように習っていました。

馬鹿すぎて取れなくて当然ということですか?
258デフォルトの名無しさん:2006/01/12(木) 20:58:38
>>256
切り番おめ。

#include <iostream>
int main( void )
{
int i = 0;
while( true ) {
++i;
if ( i*i >= 1000)
break;
}
std::cout << "i: " << i << " i*i: " << i*i << std::endl;
return 0;
}
259デフォルトの名無しさん:2006/01/12(木) 20:59:25
>>256
int i = (int)sqrt(1000)+0.5;
printf("%d %d", i, i*i);
260259:2006/01/12(木) 21:01:48
先越された上に間違えた上にageした。。。
261デフォルトの名無しさん:2006/01/12(木) 21:02:01
>258
#include <stdio.h> ってあるから
std::cout << "i: " << i << " i*i: " << i*i << std::endl;
でなくて、
printf("i:%d i*i:%d\n",i,i*i);
でないか。
262デフォルトの名無しさん:2006/01/12(木) 21:03:03
>>261
迷ったけど C++ て書いてるしと思って。
263デフォルトの名無しさん:2006/01/12(木) 21:04:49
>>257
Processing がどうのこうのとか何言ってるかぜんぜん通じないよ?
君の大学でしか通用しないことをここで当たり前のように言われても困る。
264デフォルトの名無しさん:2006/01/12(木) 21:20:33
>>263
すみません、はっきし言って、私、全然この授業わかってないので、もう諦めます。
265デフォルトの名無しさん:2006/01/12(木) 21:22:35
熊本がどうしたって?
266デフォルトの名無しさん:2006/01/12(木) 21:23:10
[1]C言語
[2] 数人分の学生成績データ・レコードを格納したファイル(名前をstu-seiseki)がある。
 各レコードの長さは次のとおりである。
 学生番号     7byte
 氏名      20byte
 英語・数学・国語  3byte
 
 学生番号は0番からの通し番号であり、
 各レコードは学生番号の順に並んでいるものとする。

 このデータを使って学生の成績に関する問い合わせを行うプログラムretrieve.cを作りたい。
 このプログラムは、キーボードから学生の番号を入力し該当する学生のレコードを検索、
 学生番号等の各項目のほかに、合計点と平均点を並べて表示するものとする。
 プログラム終了には、^bを押すものとする。

 【データの例】
 0000000 山田 太郎     030050060
 0000001 鈴木 花子     080075030

 【実行例】
 学生番号入力→1
 学番       氏名  英語 数学 国語 総点 平均点
  1        鈴木花子 80  75  30  185   61.7
[3]Windows C言語
[4]2006年1月13日 12:00まで
[5]バイナリモードでお願いします。
本当に困り果てています。よろしくお願いします。
267デフォルトの名無しさん:2006/01/12(木) 21:23:25
>262
言われるとそうかもって気になってきた。
256は確認して、いいほうを提出しる。

>263
まあ、257はライブラリってのがよく理解できてないだけだと思われ。

>257
Processingうんぬんは熊本大学?だけでしか使われてないから、部外者はわからない。
でも逆に「コピーされるように言われた」内容をこちらに伝えれば、部外者でもそれを使ってソースは書ける。
とりあえず、情報を出してみれば作ってくれる人もいると思うよ。
268267:2006/01/12(木) 21:26:32
文章打ってる間に>257が諦めた。orz
やっぱ打つのおそいのかな。
269デフォルトの名無しさん:2006/01/12(木) 21:27:37
熊本大学はグラフィックライブラリ chinougl のことね
Processing なんとかはしらない
270236:2006/01/12(木) 21:30:20
再スレです。
[1] 授業単元:情報工学
[2] 問題文(含コード&リンク):円周率をマチンの公式を使い1万桁表示するプログラムを作る.
多倍長演算を使い,5桁ごとに1つ空白を入れる.
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 今日中 1月12日24時まで
[5] その他の制限: なし
提出が明日なので、誰か助けてください!!
271デフォルトの名無しさん:2006/01/12(木) 21:51:14
>>270
マチンの公式 多倍長
でぐぐれば見つかるよ
272デフォルトの名無しさん:2006/01/12(木) 21:55:38
今から多倍長作ってたら期限に間に合わない罠
273257:2006/01/12(木) 22:03:51
>>267
ライブラリってのは、他のとこに作ったプログラムを引っ張ってきて使うってことですよね?

あと、
"ImageMDisp.cpp"
"ResultMDisp.cpp"
が見つかりましたのでうpします。
mip.cppはコピーされるように言われたものです。

http://vista.x0.com/index.php の vi18927.zip です。
274257:2006/01/12(木) 22:06:07
すみません間違えました vi18931.zip です。
275デフォルトの名無しさん:2006/01/12(木) 22:48:25
>>266
http://ccfa.info/cgi-bin/up/src/up22984.txt

終了条件の^bがわからなかったので、
学籍番号入力時に負の値を指定したら終了するようにした。
まあ、このあたりは適当に直してくれ。
276215///:2006/01/12(木) 23:11:05
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): 216に
[3] 環境
 [3.1] OS: (Windows xp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: (C
[4] 期限: 2006年1月14日24h
[5] その他の制限:標準らいぶらりいいそうです。すいません
277215///:2006/01/12(木) 23:12:11
3,nを入力したとき,その数を3で割ったとき,割り切れるならばaを
,1余るならばbを,2余るならばcを出力するプログラムを作成せよ。

4,n人分について国語,社会,数学,理科,英語の5科目の得点を入力し,
それぞれの合計点を計算した後,n人を合計点の小さい順に並び替え,
出力するプログラムを作成せよ。ただし,各科目の変数名を
ko,sy,su,ri,eiとし,配列名はtokutenとすること

5,すべて大文字の英字を10字以内で入力し,
そのうちの子音(a,i,u,e,o以外の文字)の部分を小文字に
変換して出力するプログラムを作成せよ。
(例:MOMOTAROU → mOmOtArOU)

6,15文字以内の文字列(英字)と3文字のキーワード(英字)を入力する.
このとき,先に入力した文字列にキーワードが含まれていたら 「あります」
,含まれていなければ 「ありません」 と,
メッセージを返すプログラムを作成せよ.
たとえば,入力文字が「takoikatai」のとき,
キーワードが「ika」の場合は「あります」,
キーワードが「aji」の場合は「ありません」と表示されるようにする.

 むずいです
278215///:2006/01/12(木) 23:15:24
すいません問題文は276に
279デフォルトの名無しさん:2006/01/12(木) 23:26:27
>>215
3。

int num;
scanf("%d", num);
switch(num % 3){
case 0: printf("a\n");
case 1: printf("b\n");
case 2: printf("c\n");
}
280デフォルトの名無しさん:2006/01/12(木) 23:27:34
[1] 授業単元:プログラミングW
[2] 問題文:
抽象クラス:Shape(抽象的に図形クラス)
以下で考える図形
 @円(Circle) :中心座標と半径
 A正方形(square) :一点の座標と一辺の長さ
 B楕円(ellipse) :楕円の方程式 
 C矩形(rectangle) :一点の座標と対角線の長さ
派生クラス
 @円(Circle) A正方形(square) B楕円(ellipse) C矩形(rectangle)
操作クラス(関数)
 @〜C:面積を求める、周の長さを求める、各図形を特徴付ける値を返す。
 @〜A:図形の大きさを拡大する、図形の大きさを縮小する。
 B〜C:離心率を変化させる。
 C:一辺の長さを変える。
この各図形およびその操作を実現できるプログラムを作成する。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限: 1月15日 23時59分まで
[5] その他の制限: 難しくてさっぱりです、お願いします><
281215///:2006/01/12(木) 23:32:36
279さん ありがと
282デフォルトの名無しさん:2006/01/12(木) 23:33:39
>>215
5
#include<stdio.h>
int main(void){
    char n[11],t[6]="AIUEO";
    int i,j;
    scanf("%s",n);/*10文字超えたらシラネ*/
    for(i=0;n[i];i++)
        if(n[i]>='A' && n[i]<='Z')/* 念のため */
            switch(n[i]){
                case 'A':case 'I':case 'U':case 'E':case 'O':
                    break;
                default:
                    n[i]+='a'-'A';
                break;
            }
    printf("%s\n",n);
    return 0;
}
283デフォルトの名無しさん:2006/01/12(木) 23:34:45
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): オーナーウィンドウからメニューを持ったウィンドウを
生成しなさい。また、このことを利用して何かプログラムを作り提出しなさい。
[3] 環境
 [3.1] OS: WindowsXP SP2
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: どちらでも可
[4] 期限: 明日の朝(やばいw
[5] その他の制限: 知識的には猫でもわかるシリーズのC/Win/ネットを読破したくらいです。
時間がないですがよろしくお願いします。
284デフォルトの名無しさん:2006/01/12(木) 23:35:17
285デフォルトの名無しさん:2006/01/12(木) 23:42:37
>>283
VCで環境依存(オーナーウィンドウからメニューを持ったウィンドウ…)
急ぎならこちらへ
くだすれVisual C++(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1135817069/l50
286デフォルトの名無しさん:2006/01/12(木) 23:43:16
ナイス誘導。だぜ。
287デフォルトの名無しさん:2006/01/12(木) 23:47:51
>215 #5

#include<stdio.h>

int main(){
 const char *conv="AbcdEfghIjklmnOpqrstUvwxyz";
 char buff[11];
 int i;

 scanf( "%10s", buff );
 for( i=0; i<10&&buff[i];++i ) buff[i]=conv[buff[i]-'A'];

 printf( "%s", buff );
 return 0;
}
288デフォルトの名無しさん:2006/01/13(金) 00:14:45
>>285
朝まで待ちますよ
289デフォルトの名無しさん:2006/01/13(金) 00:15:27
>252
ImageMDispは画像ファイルから配列に取り込む関数、ResultMDispは配列から画像ファイルに書き出す関数って事でOK?
ふたばのファイル流れてて見れなかったけど、vi18927って同じ物?
img10.cppの10行目では、image_in_1、image_in_2、image_outで36行目では、image_in_1、image_out、image_in_2だけどどっちが正しいの?
ソースのタイムスタンプが2005/12/20になってるけど、そこからいじってないの?

>2.ファイルの中にある、2.cppは2つの画像を重ねて画素の差の有無で0か255に出力するプログラムです。
>そして、もとの画像は、見た目が同じものを使うのですが出てきた画像は他の画像になっています、
>それは何故でしょうか?
差分があれば255にするんだよね。同じ画像を2つ重ねたら全部0で、もとの画像とは違う画像になると思うけど?
290デフォルトの名無しさん:2006/01/13(金) 00:17:28

というかスレ違い
CreateWindowの引数にメニューを指定するかカスタムウィンドウクラスのメンバ引数にメニューをしてやるか
もうこないでね
291デフォルトの名無しさん:2006/01/13(金) 00:22:28
>>215
#include <stdio.h>
#include <string.h>

int main(void){
char str[16], word[4], *result;
int i, len, chk;
printf("15文字以内の文字列でもいれたら?\n");
scanf("%s", str);
printf("3文字のキーワードでもいれたら?\n");
scanf("%s", word);

len = strlen(word);
if(len != 3){
printf("3文字って言うたやん\n");
return 0;
}

result = strstr(str, word);
if(result != NULL) printf("あります\n");
else printf("ありません\n");

return 0;
}
292252:2006/01/13(金) 00:47:03
>>289
ありがとうございます。
ImageMDispやResultMDispはもとからあって、特に説明は受けなかったので何なのか分かっていません。
そうです、vi18927は同じものです。
すみません多分、image_in_1、image_in_2、image_outがあってると思います。
はい、授業でやった時からいじっていません。

はい、あくまでも、「見た目は」同じ画像なんです、が実行すると学校のマークが出てきました。
たぶん元の画像に何かしらの細工がしてあったわけですよね?
293デフォルトの名無しさん:2006/01/13(金) 02:06:21
>292
>たぶん元の画像に何かしらの細工がしてあったわけですよね?
そうなるな。
正解した生徒にはわかる仕掛けを仕込んだんだろう。先生共もヒマだな。
ソースはあれでいいと思う。
image_in_1、image_in_2、image_outの順になるよう書き直せば終わりだ。


>236
技術評論社のC言語による最新アルゴリズム事典って本に、多倍長演算でMachinの公式使って円周率求める内容が載ってた。
著者のサイトからソースがダウンロードできる。
ttp://oku.edu.mie-u.ac.jp/~okumura/algo/
multprec.cがそれだ。
294117:2006/01/13(金) 02:09:08
>>117をお願いします。
295215///:2006/01/13(金) 02:09:39
うほっ皆ありがとうございます
今までやってたけど正直きびしいです
後の4をがんばって後1時間はやってみます・・。
296デフォルトの名無しさん:2006/01/13(金) 02:33:48
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
  3つの線分(整数)をキーボードから入力させ、その3つの線分で三角形を
  描くことができるなら“THEY CAN MAKE A TRIANGLE”
  描けないなら“THEY CAN`T MAKE A TRIANGLE”と表示する。
  (ヒント:三角形形成条件 3辺をa,b,cとした場合
       a<b+c且つb<c+a且つc<a+bであること
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:・・・本気でわかんない;ごめんなさい
 [3.3] 言語:C言語
[4] 期限:1月13日金曜日の午後6時
[5] その他の制限:入社前課題。C言語は独学で明解C言語(ソフトバンク)入門編を
         一度だけ読み通したのみ。

情報系に就職が決まったけど周りに情報系の人間が1人もいないから
ほぼ独学、質問できる人がいないから助けてくださいorz
ついでにフリーの良い開発環境を教えていただけたら幸せです。
297デフォルトの名無しさん:2006/01/13(金) 02:35:42
>>295
きさま"うほっ"だったのかぁ!
298デフォルトの名無しさん:2006/01/13(金) 02:38:04
>>296
その程度ができないようなら入社するな!!
独学で調べられないならやめてしまえ!!
ガキの遊びじゃねえんだよ!!
299296:2006/01/13(金) 02:41:53
>>298
そうですか・・・、なら解けるまでまた頑張ってみます。
ちょっと目がさめた気分です。
スレ汚しすみません。
300デフォルトの名無しさん:2006/01/13(金) 02:48:46
>>296
#include <stdio.h>
int main(void) {
    int a, b, c;
    printf("a?:"); scanf("%d", &a);
    printf("b?:"); scanf("%d", &b);
    printf("c?:"); scanf("%d", &c);
    if (a < b + c && b < c + a && c < a + b)
        printf("THEY CAN MAKE A TRIANGLE\n");
    else
        printf("THEY CAN`T MAKE A TRIANGLE\n");
    return 0;
}

勉強向けのフリーの開発環境は今ならこれがいい。ただし、Windows固有の
機能に依存した物を作ろうと思ったらそれなりにファイルの入手&設定が必要。
こんなものがフリーで使える事をありがたく思いなさい。

Visual C++ 2005 Express Edition 日本語版
ttp://www.microsoft.com/japan/msdn/vstudio/express/visualc/
301デフォルトの名無しさん:2006/01/13(金) 02:50:07
MS信者乙
302296:2006/01/13(金) 02:55:50
>>300
深夜なのにすみませんでした。そしてありがとうございます。
まだまだ本当に勉強が足らなくて本当に社会にでれるか心配ですが
できるだけ入社しても周りの脚を引っ張らないように頑張って勉強します。
色々お世話になりました。

そして298さん。他人任せにしてはいけないんだと思いなおせました。
叱咤ほんとにありがとう、もう一回本とか読み直します。
303デフォルトの名無しさん:2006/01/13(金) 02:56:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
  x, y, z がそれぞれ1から120までの数であるとき、
  三平方の定理(x2+y2=z2)を満足する(x,y,z)のうち、
  x,y,z の3つすべてが偶数であるものを出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Widows XP
 [3.2] コンパイラ名とバージョン:すみません分かりません。
 [3.3] 言語:C言語
[4] 期限:2006年1月20日

全くの初心者で困っています。
どなたか宜しくお願いします。
304デフォルトの名無しさん:2006/01/13(金) 03:01:56
ある長さxのバイト列αがあります。
xの範囲は1から1524バイトです。

αの中から特定のバイト3Eが含まれているからどうか
高速に見つける方法を考えなさいって問題が出されました
どうやって解いたらいいのでしょうか。

先頭からfor文で一個一個見ていくやり方を書いたら
怒られましたなぜ怒られたのかも解りません。
それ以外方法ないと思うのですが間違っていたら教えてください。
305デフォルトの名無しさん:2006/01/13(金) 03:10:54
>>304
有名なので二分木(2分探索)ってのがある。
http://www.sra.co.jp/people/miyata/algorithm/bsrch.txt
でも今時のcpuなら端から見てっても大して変わらないと思うが・・。
古き時代のテクって感じかねぇ
306デフォルトの名無しさん:2006/01/13(金) 03:16:15
>>296 教科書の一番最初のプログラムはコンパイルして、動かせましたか?

>>303
#include <stdio.h>
#define F(a) for (a = 2; a <= 120; a += 2)
int main(void) { int x, y, z; F(x) F(y) F(z) if (x * x + y * y == z * z)
printf("x = %d, y = %d, z = %d\n", x, y, z); return 0; }

>>304 スレ違い

>>305 うーん。与えられてる情報だと、バイト列としか言われてないので、線形サーチしか思い浮かばない。
307252:2006/01/13(金) 03:23:27
>>293
ありがとうございます。
課題は、どうしてあるかなので、適当な推測を書いておきます。
お世話になりました。
308デフォルトの名無しさん:2006/01/13(金) 03:23:55
>>306
303です。
ありがとうございます!
本当に助かりました!心より感謝致します。
309305:2006/01/13(金) 05:08:24
>>304 ふと思い出した。含まれているかどうか調べるだけならXNORでいいんだわ。
(A XNOR B) はCで書くと(A&B)|(!A&!B)
0x3E3E3E3EでXNORすれば4バイト単位で調べられる・・と
310魚チョコ:2006/01/13(金) 05:45:38
【おわびと訂正】
>>309 に下記のように誤りがありました。おわびして訂正致します。

(誤) (A&B)|(!A&!B)   (正) (A&B)|(~A&~B)

(誤) 0x3E3E3E3EでXNORすれば4バイト単位で調べられる
(正) まず 0x3E3E3E3E との XNOR をとる。
    その結果と 0xFF000000、0x00FF0000、0x0000FF00、0x000000FF
    との AND を順次マスク値と比較する。
    等しいものがあればそのバイトが 3Eh(00111110) だが、
    ここまでやって得があるのかははなはだ疑問だ。

311魚チョコ:2006/01/13(金) 05:47:36
というか EX-NOR とらないでも、
EX-OR とってマスクして 0 なら当たりじゃないか。
312魚チョコ:2006/01/13(金) 05:49:23
というかバイトデータ列を 4 バイトまとめて読みこんだら
CPU のエンヂアンに依存するじゃないか。
313デフォルトの名無しさん:2006/01/13(金) 06:42:19
何が駄目かっていうと総当り戦法が美しくないって教官は言ってるんじゃない?
しかし与えられてるのがバイト列のみであるから俺は総当り戦法しか思いつかん
これでもし教官の期待してるものが2分木やら線形リストやらだったら学校やめるな
314デフォルトの名無しさん:2006/01/13(金) 06:43:24
総当りは個人的には美しいから気にならない
まぁ美しいってより安心できるってだけかもしれんが
315デフォルトの名無しさん:2006/01/13(金) 06:44:47
バブルソート>クイックソート||マージソート
の構図が美しいと申したか
316デフォルトの名無しさん:2006/01/13(金) 07:01:04
バブルソート美しいじゃないか・・・・ソースが
317デフォルトの名無しさん:2006/01/13(金) 08:32:24
おまいらアフォか
探すのが1回(あるいは探すバイト値が一種類)だけとは限らないだろ
今後のことも考えて一旦バイト列αを二分木に構成しておくと2回目から効果が出るんだよ

あと、二分木と二分探索は違うものだから
318デフォルトの名無しさん:2006/01/13(金) 08:34:56
>>305==魚チョコ は死ね
319デフォルトの名無しさん:2006/01/13(金) 08:45:21
10×10の2次元配列に、平面のビットパターンが入っているとする。
左右反転、上下反転して出力。
320デフォルトの名無しさん:2006/01/13(金) 08:47:28
整数配列data[0]〜[9]に、0以上の整数が格納されている。
それぞれの配列要素ごとに、一行に*を印刷し、グラフをつくりたい。
最も大きな数字を*が50個となるように、スケーリングして表示。
321デフォルトの名無しさん:2006/01/13(金) 08:48:57
選択法の並べ替えアルゴリズムで大きい順に整数を並べ替えるプログラム。
322デフォルトの名無しさん:2006/01/13(金) 08:50:24
ライブラリ関数char toupper(char c)と同じ処理をする関数を記述せよ。(cが小文字であれば大文字を返し、それ以外はそのまま返す)
323デフォルトの名無しさん:2006/01/13(金) 08:53:01
2つの文字列str1[]とstr2[]のうち、文字列が長いほうを前にして、お互いを結合する関数void strcatlong(char str1[ ], char str2[ ])を記述せよ。(strlen,strcat関数は使用可)
324デフォルトの名無しさん:2006/01/13(金) 08:57:29
>>319-323
まとめて質問を却下とします
325ひお:2006/01/13(金) 09:02:12
@文字列にstr[]に整数表記(負の場合もある)が入っているとする。
それを整数に変換して返す関数int atoi(char str[ ])を記述せよ。

Aライブラリ関数int strcmp(char str1[ ], char str2[ ])と同じ処理をする関数を記述せよ。
326デフォルトの名無しさん:2006/01/13(金) 09:31:47
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
・sin(x)のマクローリン展開から√2の近似値を計算する
 プログラムを作成せよ。

・sin(π/4)の値を二倍して求めること。

・階乗と累乗の計算は各々関数で行うこと。

・πの値(3.141592)はプログラムに与える。

・重要な処理のところを、コメント文で簡単に説明する。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C 
[4] 期限: 2006年1月13日8:50まで
327デフォルトの名無しさん:2006/01/13(金) 09:32:57
[1] 授業単元:関数呼び出し
[2] 問題文(含コード&リンク):
・sin(x)のマクローリン展開から√2の近似値を計算する
 プログラムを作成せよ。

・sin(π/4)の値を二倍して求めること。

・階乗と累乗の計算は各々関数で行うこと。

・πの値(3.141592)はプログラムに与える。

・重要な処理のところを、コメント文で簡単に説明する。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C 
[4] 期限: 2006年1月16日8:50まで
328デフォルトの名無しさん:2006/01/13(金) 10:35:28
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
   ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。

:実行例:

a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4] 期限:2006年1月13日16:00まで
心底困り果てています、ホントによろしくお願いします
329デフォルトの名無しさん:2006/01/13(金) 10:51:13
>>328
#include <stdio.h>
#include <stdlib.h>

int main(int ac, char **av)
{
char buf[1024];
if(ac != 2){
fprintf(stderr, "Usage: hoge filename\n");
}else{
sprintf(buf, "dump %s", av[1]);
system(buf);
}
return 0;
}
330デフォルトの名無しさん:2006/01/13(金) 10:51:53
ああ、間違えた
#include <stdio.h>
#include <stdlib.h>

int main(int ac, char **av)
{
char buf[1024];
if(ac != 2){
fprintf(stderr, "Usage: hoge filename\n");
}else{
sprintf(buf, "debug.exe %s", av[1]);
system(buf);
}
return 0;
}
331デフォルトの名無しさん:2006/01/13(金) 11:24:22
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):三角関数(sin、cos、tan)を計算するプログラムを書きなさい
[3] 環境
 [3.1] OS: WindousXP
 [3.2] コンパイラ名とバージョン:Tera Term Pro ver.2.3 
 [3.3] 言語:C
[4] 期限:2006年1月17日
[5] その他の制限: stdio.hだけを使用して作ること
          (テーラー展開を用いて)
332デフォルトの名無しさん:2006/01/13(金) 11:25:58
引数の個数確認しかしていないw。酷いなぁ
333デフォルトの名無しさん:2006/01/13(金) 11:32:53
>コンパイラ名とバージョン:Tera Term Pro ver.2.3 
これは酷い
334デフォルトの名無しさん:2006/01/13(金) 12:20:49
335加賀:2006/01/13(金) 13:30:11
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):入力された文字列とキーの押し時間と離し時間をファイルへ書き出せ。
シフトキーを押した場合と押してない場合の区別をつけろ。
例:I have a pen の場合以下のように出力しなさい
0.135443 0.578212 I
0.159088 0.230911 0.127591 0.344145 0.099871 0.517189 0.148901 0.309172 have
0.200912 0.389001 a
0.187678 0.489176 0.112567 0.201985 0.158481 0.491371 pen
[3] 環境
 [3.1] Windows XP
 [3.2] Microsoft VC++ 6.0
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:2006年1月16日
[5] 次にプログラムまで自作してみましたが、これ以上はわからないです。よろしくお願いします。
336加賀:2006/01/13(金) 13:31:50
作ってみたプログラムpart1です。
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>

__int64 tsc2sec;

inline __int64 __fastcall RDTSC( )
{
_asm{
rdtsc
// _emit 0xf ← rdtsc でエラーが出る古いバージョン
// _emit 0x31 ← の環境のとき
}
}
337加賀:2006/01/13(金) 13:32:29
作ってみたプログラムpart2です。
int GetKeyTime(double *interval, int *code) {
int i,j,k;
__int64 st,ed;
double a;
static __int64 last=0;
static char ks[256]={0};

for(;;) {
for(i=0;i<0xfe;i++) {
k=GetAsyncKeyState(i);
if(((k&0x8000) >0)&&(ks[i]==0)) {
st=RDTSC();
*interval=(double)(st-last)/tsc2sec;
*code=i;
ks[i]=1;
last=st;
return(1);
}
if(((k&0x8000)==0)&&(ks[i]==1)) {
st=RDTSC();
*interval=(double)(st-last)/tsc2sec;
*code=i;
ks[i]=0;
last=st;
return(0);
}
}
}
return(0);
}
338加賀:2006/01/13(金) 13:33:51
作ってみたプログラムpart3です。
int main()
{
__int64 st;
clock_t t1;
int i,j,k;
double a,b;
char str[256];
FILE *fp1= fopen("test1.txt", "w");

st=RDTSC();
t1=clock();
while(clock()-t1<CLOCKS_PER_SEC);
tsc2sec=RDTSC()-st;

j=0;
while(GetAsyncKeyState(VK_RETURN)==0)
{
i=GetKeyTime(&b,&k);
if(i==1){
printf("Keycode:%x pressed : interval:%f\n",k,b);
if(j!=0)
fprintf(fp1,"%f ",b);
j++;
}

339加賀:2006/01/13(金) 13:34:39
作ってみたプログラムpart4です。
if(GetAsyncKeyState(VK_SPACE)<0)//スペースが押されていたときの処理
{
printf("SPACE KYE\n");
FILE *fp3 = fopen("test2.txt", "r");
while (fgets(str, 256, fp3) != NULL)
{
fprintf(fp1,"%s\n", str);
}
fclose(fp3);
if( remove( "test2.txt" ) == -1 )
perror( "'test2.txt' ファイルが削除できません" );
else
printf( "'test2.txt' ファイルが削除されました\n" );
}
if(i!=1)
{
FILE *fp2 = fopen("test2.txt", "a+");
printf("Keycode:%x released : interval:%f\n",k,b);
fprintf(fp1,"%f ",b);
fprintf(fp2,"%c",k);
fclose(fp2);
}
}
fclose(fp1);
return 0;
}
長々とすみません。
340加賀:2006/01/13(金) 14:03:27
すいません自己解決しました
341リストラくん ◆zts/Wuwm4c :2006/01/13(金) 14:26:47
[1] 授業単元:プログラムC言語
[2] 問題文(含コード&リンク): ポインタ配列の変数を下記の文字列(”JANUARY”〜”DECEMBER”)で初期化。各文字列、文字列の文字数
  文字列の最終文字(一文字)を表示させる。
  初期化文字列 January February March April May June July August September October November
         December
  実行結果 : JANUARYは7文字で最終文字はYです。
         −−−−−−−−−−−−−−−−
         DECEMBERは8文字で最終文字はRです。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: (1月15日まで)
[5] その他の制限: strlen() ポインタ配列の初期化(static) ポインタのポインタ をつかう

最終文字を表示させるところで詰まっています。よろしくお願いします。
342305:2006/01/13(金) 14:43:16
 ∧||∧
(  ⌒ ヽ  寝ぼけてた
 ∪  ノ  吊って来る
  ∪∪
343デフォルトの名無しさん:2006/01/13(金) 14:53:01
len= strlen(str[i]);
printf("%c",str[i][len-1]);
344デフォルトの名無しさん:2006/01/13(金) 14:57:30
345リストラくん ◆zts/Wuwm4c :2006/01/13(金) 15:15:46
>343
 なるほど、助かりました。
346デフォルトの名無しさん:2006/01/13(金) 15:18:32
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):構造体を用いて、名前(ローマ字で30文字)、年齢(int)、身長(double)、体重(double)
               を、別に用意したファイルから取り込み、年齢で昇順にソートする関数と
               名前で昇順にソートする関数を作り、その動作を確認するmain関数をつくる。
               昇順にソートする方法がわからないので、特にそこを教えていただければありがたいです。 
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2006年1月23日
[5] その他の制限:なし


347デフォルトの名無しさん:2006/01/13(金) 15:36:18
関数に命名するとき
「補間」って単語が辞書に引っかからないんだけど
みんななら何使う?
348デフォルトの名無しさん:2006/01/13(金) 15:38:47
[1] 授業単元: 物理プログラミング演習
[2] 問題文(含コード&リンク):
http://www.math.meiji.ac.jp/~mk/labo/java/uzu.html
ここにあるプログラムを使って、Nの値を変化させることにより、さまざまなNの値に対して数値的にもとめて
その結果について考察する。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 2.9 VC 6.0等
 [3.3] 言語: C
[4] 期限: 1月16日
[5] その他の制限:
349デフォルトの名無しさん:2006/01/13(金) 15:46:22
>>347
interpolation
350デフォルトの名無しさん:2006/01/13(金) 15:52:27
>>348
Cに移植しろってことか?
351初心者ですみません:2006/01/13(金) 15:53:14
[1] 授業単元:情報処理
[2] 問題文:
#include <stdio.h>
#define LOW 3 /* 行数 */
#define COLUMN LOW /* 列数 */
int main(){
int i,j,k;
double pivot,d;
double A[LOW][COLUMN + 1] /* 行列を作成 */
={{3,2,1,10},{2,5,2,18},{1,4,1,12}} /* A[行][列]  */
for (i = 0; i < LOW; i++){
pivot =____A____ ; /* ピボットとして行列Aの対角成分を選ぶ */
for (j = 0; j <= COLUMN; j++){
____B____; } /* これよりピボット要素の係数は1となる */
for (j = 0; j <= LOW; j++){ /* 第j行について第i列の要素を0とする */
   /* j=iのときはピボット対象行なので操作しない */
if(j == i) continue;
/* 第j行の第i列要素をdとして保存しておく */
   d = ____C____;
/* 第j行の各列(k)から、d倍したピボット行の各列要素を引く */
for (k = 0; k <= COLUMN; k++){
____D____;}}}
for (i = 0; i < LOW; i++){
printf ("X%d: %lf\n", i, A[i][3]);}
return 0;}
1) 解答がx1=1,X2=2,X3=3となるように適切に書き換えよ。(A)(B)(C)(D)を答えよ
2) 今回のプログラムでは解けない問題が存在する。どのような問題か2つ答えよ。
352デフォルトの名無しさん:2006/01/13(金) 15:56:37
再スレ
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
   ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。

:実行例:

a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4] 期限:2006年1月13日まで
心底困り果てています、ホントによろしくお願いします
353デフォルトの名無しさん:2006/01/13(金) 16:16:38
>>352
それは・・・機能的には不充分だが立派なバイナリエディタじゃないか。
そんな手間のかかるものをしかも一日で書いてクレとは・・・無理がある。
スーパーなPGがこのスレを見ればやってくれる可能性は零ではないけど。
諦めなさい
354デフォルトの名無しさん:2006/01/13(金) 16:22:04
5個の整数データ a[5]={4,2,6,5,1}を
入力し、最大値 MA を求めるプログラムをポインタを用いて
作成してください。
355デフォルトの名無しさん:2006/01/13(金) 16:22:34
>>351
1)
適切に描き換えるとA,B,C,Dの修正だけでは済まなくなります。が、あえて入れるとしたら、
(A) A[i][i]
(B) A[i][j] /= pivot
(C) A[j][i]
(D) A[j][k] -= d*A[i][k]
ただし他のところも直さねば動きません

2)
Ax = bの連立方程式を解いているので、rank(A) < dim(A)ならば解けません。

桁落ちが発生する計算を含む場合等も正しい解を得られないでしょう。
356348:2006/01/13(金) 16:25:33
>>350
はい。できれば移植してほしいのですが・・・m(_ _)m言語は指定されてないのでjavaのままでもかまいません。
ただどちらかといえばC言語の方が分かりやすいのでここに投稿しました。
課題内容としては、渦運動を視覚的に表示する機能はいらないのでこのソースを利用して渦運動の様子を数値的に出すようにしたいです。
渦群(N個)の数値を入力してそのときの運動を数値的に出力する課題です。
357デフォルトの名無しさん:2006/01/13(金) 16:37:49
18時までに提出の課題を5つ出されたのですが2つさっぱり解らなくて
単位がかかっているので、すいませんどなたか助けて下さい。

[1] 授業単元: オブジェクト指向言語
[2] 問題文(含コード&リンク):
問題(1) キーボードから入力したスペースを含む文字列に対して、以下の6つの情報を出力するプログラムを作成せよ。
          (a) 全文字数
          (b) 小文字の文字数
          (c) 大文字の文字数
          (d) アルファベット前半(AからM、および、aからm)の文字数
(e) アルファベット後半(NからZ、および、nからz)の文字数
(f) アルファベット以外の文字数
ただし、実行結果は以下と同じになるようにすること
Input a string: Hiroshima Institute of Technology
The input string is "Hiroshima Institute of Technology".
# of letters = 33
# of small letters = 27
# of large letters = 3
# of A-M and a-m = 15
# of N-Z and n-z = 15
# of other letters = 3

[3] 環境
 [3.1] OS : Linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C言語
[4] 期限:1月13日18時まで
358357:2006/01/13(金) 16:46:26
[1] 授業単元: オブジェクト指向言語
[2] 問題文(含コード&リンク):問題(2) キーボードから、文字列と一つの文字を入力する。
このとき、 与えた文字が文字列中の左から何番目に位置しているかを表示する。
ただし、文字列中に、指定した文字が二つ以上ある場合は一番左端の 文字の位置を、
また、指定した文字が全くない場合は nothing と表示する。

プログラムの関数の定義部分以外は、以下にあげるものを変更せず そのまま利用すること。
#include <stdio.h>
int find_letter( char *str, char ch );
int main(void) {
int num;
char in[80], ch;
printf("Input a string: ");
gets( in );
printf("Input a letter: ");
scanf("%c", &ch);
num = find_letter( in, ch );
if ( num==0 ) {
printf(" The letter '%c' of \"%s\" : nothing\n", ch, in);
} else {
printf(" The letter '%c' of \"%s\" : %d\n", ch, in, num);
}
return 0;
}
[3] 環境
 [3.1] OS : Linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C言語
[4] 期限:1月13日18時まで
359デフォルトの名無しさん:2006/01/13(金) 16:49:16
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
n人分について国語,社会,数学,理科,英語の5科目の得点を入力し,
n人の平均点の平均を計算した後,その平均より低い平均点を出力する
プログラムを作成せよ。ただし,各科目の変数名をkok,sya,suu,rik,eigとし,
配列名はtokutenとすること。
[3] 環境
 [3.1] OS:(Windows)
 [3.2] コンパイラ名とバージョン:(C++ ?)
 [3.3] 言語: (C/C++/どちらでも可)
[4] 期限: (2006年1月15日)

上記のような課題が出ました。
素人同然で全く分からないのでよろしくお願いします。
360デフォルトの名無しさん:2006/01/13(金) 17:08:56
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
   ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。

:実行例:

a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n

         |||途中省略|||

0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
BLNo.->-1
[3] 環境 Windows C言語
[4] 期限:2006年1月13日まで
心底困り果てています、ホントによろしくお願いします
後は自力で考えますんでここまででも教えてください
361デフォルトの名無しさん:2006/01/13(金) 17:16:02
今読みにきた者ですが。C言語のことで質問があります。
囲碁のプログラムを自分で作成しているのですが、
「人間対人間」が対極していたとします。その時、黒石の方が白石より強かったとします。
そこで、白石の方が弱いので、負けの方向にいっています。
そこで、今打っている白石を黒石の方に、黒石を白石の方に
今打っている変換するプログラムを打ちたいのですが、自分でも試してみたのですが
なかなか上手いようにはいきません。
C言語での回答、宜しくお願い致します。
362デフォルトの名無しさん:2006/01/13(金) 17:19:39
>>357
#include <stdio.h>
#include <string.h>
#define LEN 256
int main(){
    char c, str[LEN];
    int i, small, large, atom, ntoz, other;
    small = large = atom = ntoz, other = 0;
    printf("Input a string: ");
    gets(str);
    printf("The input string is \"");
    for (i = 0; str[i] != '\0'; i++) {
        if (islower(str[i]) != 0) small++;
        else if (isupper(str[i]) != 0) large++;
        c = tolower(str[i]);
        if (('a' <= c) && (c <= 'm')) atom++;
        else if (('n' <= c) && (c <= 'z')) ntoz++;
        else other++;
        printf("%c", str[i]);
    }
    puts("\".");
    printf("# of letters = %d\n", i);
    printf("# of small letters = %d\n", small);
    printf("# of large letters = %d\n", large);
    printf("# of A-M and a-m = %d\n", atom);
    printf("# of N-Z and n-z = %d\n", ntoz);
    printf("# of other letters = %d\n", other);
    return 0;
}
363デフォルトの名無しさん:2006/01/13(金) 17:21:48
訂正
small = large = atom = ntoz = other = 0;
364デフォルトの名無しさん:2006/01/13(金) 17:29:42
>>357
(a) strlen()
(b) int count_lower(const char *s) {int count = 0; for (; *s; s++) if (islower(*s)) count++; return count;}
(c) int count_upper(const char *s) {int count = 0; for (; *s; s++) if (isuppler(*s)) count++; return count;}
(d), (e)
int count_sub(const char *s, int a, int b) {int count = 0; for (; *s; s++) if (*s >= a && *s <= b) count++; return count;}
int count_a_m(const char *s) {return count_sub(s, 'a', 'm') + count_sub(s, 'A', 'M'); }
int count_n_z(const char *s) {return count_sub(s, 'n', 'z') + count_sub(s, 'N', 'Z'); }
int count_a_m(const char *s) {return strlen(s) - count_lower(s) - count_upper(s); }

>>360 その内容を16進コードで更新するプログラムを作る。
というところの詳細がわからんので、パス。 表示だけなら、簡単。
365デフォルトの名無しさん:2006/01/13(金) 17:35:22
>360は、何日か経ったらまた来る気じゃないか?
「自力で考えましたができませんでした」とかいって。
366デフォルトの名無しさん:2006/01/13(金) 17:37:27
>>361
まずは日本語の勉強をしてください
367デフォルトの名無しさん:2006/01/13(金) 17:39:17
>>361
次に、スレ違いであることを理解し、二度と来ないようにして下さい
368357:2006/01/13(金) 17:38:55
>>362>>364
すごく助かりました!本当にありがとうございます!
369デフォルトの名無しさん:2006/01/13(金) 17:45:08
あー、張り忘れ。やっぱりまだ風邪治ってないな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1447.c
370デフォルトの名無しさん:2006/01/13(金) 17:45:27
>>355
Ax = bの連立方程式を解いているので、rank(A) < dim(A)ならば解けません。

桁落ちが発生する計算を含む場合等も正しい解を得られないでしょう。

詳しくお願いします
371デフォルトの名無しさん:2006/01/13(金) 18:18:01
rankはよくわからんが、
x + y + z = 1 かつ x + y + z = 0なんてのは解けん気がするぞ。
372デフォルトの名無しさん:2006/01/13(金) 18:40:46
[1] 授業単元:基礎プログラミング演習

[2] 問題文(含コード&リンク):
構造体の配列を用いて、5人分の氏名、学籍番号、点数を記録し、
新しく入力された点数以上の氏名を出力するプログラムを書け。
(必ず、print_student(struct student s)と言う学生一人分の情報を
 1行に表示する関数を作成し、それを利用して出力を行うこと。)

<構造体の例>
struct student{
char name[50], id[20];
int score;
};

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月23日まで

ヒントでもいいので,何とぞお手柔らかにお願いします
373デフォルトの名無しさん:2006/01/13(金) 18:51:29
#include <stdio.h>
int input(FILE *s, struct student *s, int n)
{
int i;
for (i = 0; i < n && fscanf("%s %s %d", &s->name, &s->id, &s->score) == 3; i++, s++)
;
return i;
}
void print_student(struct student s)
{
printf("%s %s %d\n", s.name,, s.id, s.score);
}
int main(void)
{
struct student s[5];
input(stdin, s, sizeof(s)/sizeof(s[0]));
あーメンドウになった。あとよろしく。
374デフォルトの名無しさん:2006/01/13(金) 19:17:05
>>370
俺もよく分かってないが、解の存在定理じゃねーのか?
連立一次方程式が解を持つ必要十分条件は
rank[A] = rank[A b]

つーかこれ以上は板違いだろ
線形代数なんだし、数学板池
375117:2006/01/13(金) 19:24:22
>>344
ありがとうございます!とても助かります。
376デフォルトの名無しさん:2006/01/13(金) 20:59:39
オブジェクト指向言語という単元で、Cを使うのか・・・
結構意味不明だな。
377デフォルトの名無しさん :2006/01/13(金) 21:21:52
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):石置き対戦ゲームを作りなさい。
このゲームとは、マス目の上に、交互に石(○か×)を置いていき、
縦横斜めのいずれかに自分の石が並んだほうが勝つというゲームである。
ただし、すでに石が置いてある所には石は置けない。
(1)3×3マス([1]〜[3],[A]〜[C])で、先手、後手が選択でき、
既に石の置いてあるところを選択すると、(指定位置には石は置けません)
と表示しなさい。
(順番が回ってくるごとに[位置を指定してください。(先手) 1A
のように表示する。入力方法は[1A]や、[3C]といった方法にする。)
勝ち負けの表示は自由とする。
(2)以下の追加機能を追加しなさい。
[1] : マス目を指定できるようにする(n×n)。(n個並べたら勝ち。)
[2] : コンピュータ対戦ができるようにする。(空き目をランダム検索する)
[3] : コンピュータ対戦ができるようにする。(勝てるアルゴリズム作成)
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 2006年1月24日12:00まで
[5] その他の制限: 条件:特にありません。よろしくお願いします。
378デフォルトの名無しさん:2006/01/13(金) 21:29:25
>>377
そんな簡単なの授業の内容理解してれば分かるだろ。
だいたい「勝てるアルゴリズム作成」が無理
379デフォルトの名無しさん:2006/01/13(金) 21:35:10
勝てるアルゴ作成は無理じゃないぞ
人間側を邪魔しなけりゃいいだけだし
380デフォルトの名無しさん:2006/01/13(金) 21:52:05
3x3の場合はある
381デフォルトの名無しさん:2006/01/13(金) 21:56:32
先手勝ちの可能性・後手負けない手しかないが。
パターン総当りになるんで面白くないかも。
382381:2006/01/13(金) 22:01:03
>>381
3×3限定な。
先手角に置く。後手中心以外で必敗
383デフォルトの名無しさん:2006/01/13(金) 22:03:37
何故この人は自己レスしてるんだろう・・・
384デフォルトの名無しさん:2006/01/13(金) 22:05:07
変な人警報
385デフォルトの名無しさん:2006/01/13(金) 22:11:34
つーか>>378が言うほど>>377のプログラムは簡単じゃないと思うのは俺だけ?
386デフォルトの名無しさん:2006/01/13(金) 22:12:22
>>372
#include <stdio.h>
#define STUDENT_NUM 5
struct student {
char name[50], id[20];
int score;
};
void print_student(struct student s);
void print_passedStudent(struct student s[], int student_num, int pass_score);
int main() {
int pass_score;
struct student student[STUDENT_NUM] = {{"Tanaka", "A01", 70 },{"Kato", "A02", 40 },{"Sato", "A03", 90 },{"Ito", "A04", 100 },{"Yamada", "A05", 80 },};
printf("点数を入力してください: ");
scanf("%d", &pass_score);
print_passedStudent(student, STUDENT_NUM, pass_score);
return 0;
}
void print_student(struct student s) {
printf("氏名:%s\t学籍番号:%s\t点数:%d\n", s.name, s.id, s.score);
}
void print_passedStudent(struct student s[], int student_num, int pass_score) {
int i;
for (i = 0; i < student_num; ++i) {
if (s[i].score >= pass_score) {
print_student(s[i]);
}
}
}
387デフォルトの名無しさん:2006/01/13(金) 22:16:52
>>385
難しいってより長いたるいって感じ
388デフォルトの名無しさん:2006/01/13(金) 22:20:34
コンピュータの思考ルーチン作れって話ではないのかな?
漏れも興味ある。
スーパーハカーさんお願いします
389デフォルトの名無しさん:2006/01/13(金) 22:31:27
1.先攻なら必ず真ん中におく
2.自分がリーチになったら揃えにいく
3.相手が     〃     邪魔をする
4.斜めを優先的に埋めていく

これぐらいで結構強くなるんじゃない?
判定順は番号の通りで
390デフォルトの名無しさん:2006/01/13(金) 22:37:07
>248=>360
一部適当だが作ったぞ。
ろだが規制中で投稿できないからどこかいいとこ教えれ。
391デフォルトの名無しさん :2006/01/13(金) 22:40:42
>>378-385,387-389
「勝てるアルゴリズム」ってのは多分「勝てるように考えたアルゴリズム」
ってことだとおもわれる。
392デフォルトの名無しさん:2006/01/13(金) 22:42:13
つまりユーザに勝たせるアルゴってこと?
393デフォルトの名無しさん:2006/01/13(金) 22:48:35
んー。n x nかー・・・。
ちと暇つぶしでつくってみるか。工夫しないやつを。
394デフォルトの名無しさん:2006/01/13(金) 22:51:59
n×nって、リーチやビンゴの判定ややこしそう・・・
395デフォルトの名無しさん:2006/01/13(金) 22:59:10
じゃ俺も参戦♪
12時までにできなかったら宿題始めるからやめる
396359:2006/01/13(金) 23:43:50
自分でも考えてるんですがサッパリ分かりません。
どなたかお願いしますm(__)m
397デフォルトの名無しさん:2006/01/13(金) 23:48:00
>>396
C++で答えて「Cでした」とかだと腹が立つから一応聞いておく。
出力に使うのはcoutと習った?それともprintfと習った?
398395:2006/01/13(金) 23:48:14
画面の消去でバグってムカついたからやめたヘ(゚∀゚ヘ)アヒャ
後はまかせた
399デフォルトの名無しさん:2006/01/13(金) 23:54:01
>>397
System.out.println()と習いました><
400デフォルトの名無しさん:2006/01/13(金) 23:56:16
>>399
えぇと、釣りかな?一応本人だったときのために言っておくけど、それは
Javaだからこのスレの担当範囲外。次のスレに移動してね。
★★ Java の宿題ここで答えます Part 54 ★★
http://pc8.2ch.net/test/read.cgi/tech/1133778112/
401デフォルトの名無しさん:2006/01/13(金) 23:57:14
>>400
俺は>>359じゃないよ♪w
402デフォルトの名無しさん:2006/01/14(土) 00:02:49
[1] 基礎プログラミング
[2] 二つのファイルを比べ、違っている最初の行を表示する。
[5] ファイル入出力を用いる
お願いしますm(_ _)m
403デフォルトの名無しさん:2006/01/14(土) 00:04:06
テンプレに従う気があるのかないのか、はっきりして欲しいものである。
404デフォルトの名無しさん:2006/01/14(土) 00:22:26
>>396
#include<stdio.h>
#include<stdlib.h>
int main(void){
int kok,sya,suu,rik,eig,n,i;
float *tokuten,heikin=0.0;
printf("何人分のデータ?:");
scanf("%d",&n);
tokuten = calloc(n,sizeof(float));
for(i=0;i<n;i++){
printf("%d人目のデータ入力\n",i+1);
printf("国語の点数:");scanf("%d",&kok);
printf("社会の点数:");scanf("%d",&sya);
printf("数学の点数:");scanf("%d",&suu);
printf("理科の点数:");scanf("%d",&rik);
printf("英語の点数:");scanf("%d",&eig);
tokuten[i] = (kok+sya+suu+rik+eig)/5.0;
}
for(i=0;i<n;i++)
heikin += tokuten[i];
heikin /= n;
printf("全体の平均点は%f\n以下平均未満の点数\n",heikin);
for(i=0;i<n;i++){
if(tokuten[i]<heikin)
printf("%d人目%f\n",i+1,tokuten[i]);
}
return 0;
}
問題の意味取り違えてたとしても知らない
405デフォルトの名無しさん:2006/01/14(土) 00:23:31
スーパーハカー来た?

>>377
石置き対戦の[1]対人戦n×n並べたら勝ち、まで。
最大9×9、デバッグ甘め。とりあえず動く風
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1451.txt
406359:2006/01/14(土) 00:34:04
>>397
printfと習いました。
よく理解してなくて申し訳ありません。

>>404
ありがとうございます!
本当に助かります。
407215///:2006/01/14(土) 00:40:10
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): n人分について国語,社会,数学,理科,英語
の5科目の得点を入力し,
それぞれの合計点を計算した後,n人を合計点の小さい順に並び替え,
出力するプログラムを作成せよ。ただし,各科目の変数名を
ko,sy,su,ri,eiとし,配列名はtokutenとすること
[3] 環境
 [3.1] OS: (Windows xp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: (C++
[4] 期限: 2006年1月14日24h
[5] その他の制限:、

できません

408デフォルトの名無しさん:2006/01/14(土) 00:45:53
>>407
この流れだとネタにしか見えないんだが
409390:2006/01/14(土) 00:46:01
410デフォルトの名無しさん:2006/01/14(土) 00:47:23
>402 foo.txt、bar.txt決めうちにした。

#include<iostream>
#include<fstream>
#include<string>
#include<iterator>
#include<algorithm>

#define FILE1 "foo.txt"
#define FILE2 "bar.txt"

using namespace std;

template<typename T1, typename T2>
void print( const pair<T1,T2> &t ) {
 cout << *(t.first) << "," << *(t.second);
}

int main() {
 ifstream is1(FILE1), is2(FILE2);
 print( mismatch( istream_iterator<string>(is1), istream_iterator<string>(), istream_iterator<string>(is2)));
}
411デフォルトの名無しさん:2006/01/14(土) 01:15:21
>>377 の○×ゲーム作ってる人、てーあげて。
412デフォルトの名無しさん:2006/01/14(土) 01:18:42
[1] 授業単元: アルゴリズム演習B
[2] 問題文(含コード&リンク):
int t(int x, int y, int z) {
  if (x > y) return t(t((x-1),y,z),t((y-1),z,x),t((z-1),x,y));
  return y;
}
という関数tがある。tと等価な関数で高速なものを実装せよ。
目安としてはt(2006,1003,0)がtimeコマンドで10s以内

[3] 環境
 [3.1] OS: 問わない
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1/15(日)の23:59まで
おねがいします。
413デフォルトの名無しさん:2006/01/14(土) 01:29:59
>>412

数学の問題得意じゃないけど
int t( int x, int y, int z )
{
if ( x <= y ) return y;
if ( y <= z ) return z;
return x;
}

でいいんじゃないか?
元の関数と違う結果を返す x, y, z の組み合わせ例を見つけたら
教えて。
414デフォルトの名無しさん:2006/01/14(土) 01:30:33
>>411
ノシ
とりあえず枠だけ作るのに2時間かかりました
415デフォルトの名無しさん:2006/01/14(土) 01:34:30
やりかけ。<○×
・・・まあ、なんだ・・・あとは明日以降。
416デフォルトの名無しさん:2006/01/14(土) 01:43:28
>>413
ワロタ
417413:2006/01/14(土) 01:47:51
てゆか元のアルゴリズムで t(2006,1003,0) はいくつになるの?
再帰複雑すぎて脳内実行できないし、元のアルゴリズム遅すぎて結果でるまで待てないし、
検証の仕様がないんだけど。
418デフォルトの名無しさん:2006/01/14(土) 01:51:59
じゃあ俺も○×作ってみるか
419405:2006/01/14(土) 01:52:05
>>411
ノシ

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

[2]CPU戦・ランダムで置くところまで。4でCPU対戦。

update 1451.txt
>右上→左下の判定が出来てなかったもより
今は反省している
>あと、メッセージを問題文に準拠
420405:2006/01/14(土) 02:13:57
そろそろ宿題スレのレベルじゃなくなってくるなぁ。

とりあえず今の考えでは
1.自分が置いて「勝ち」なら、その手を選ぶ
  リーチ目の行・列があれば、ってこと
2.相手にリーチ目があれば全力で阻止
3.ライン(1列)上に相手の石が無く、なおかつ
  自分の石が一番多いラインをカウント
  ライン上に相手の石があれば、そのラインを
  揃えて勝つことはできない
4.3.のラインの自石が置ける場所にクロスするラインで
  3.の判定を行い、最善を選ぶ
5.3.を満たす列がまったく無い場合、勝つことができない。
  逆に相手に揃えさせない手を選ぶ。
6.5.を満たす列が無くなった場合、すなわちどこの
  空きマスを見ても縦横に○×両方入っている場合は
  実質引き分けとなる。空いてるマスにランダムで。

これからの方針はこんな感じ。では寝ます ノシ
ちなみに4.の判定をすると、ダブルリーチの目を
自ら潰すように動くと思われ。
421デフォルトの名無しさん:2006/01/14(土) 02:15:49
[1]授業単元というか、項目: プロセス間通信
[2]問題文: 
既定のディレクトリにあるファイルをオープンし、ファイルの中身を読む。
ファイルは一日単位で自動的に生成され、名前は
2005_12_31.txtのようなフォーマットになっていて、開く対象のファイルはコマンドラインの
オプションで指定する。(./exefilename prm1 prm2)
例えば、prm1が2005_12_20,prm2が2006_01_10であれば、2005年12月20日から
2006年1月10日までのファイルを順番にオープンする。
ファイルの中身は一行が最大200Byteのテキストで、全て5行で構成されるログのようなもので、
1つのレコードの最後、つまり5行目の終端に、DBGPRT=ONかDBGPRT=OFFという文字列が
付加されている。
ファイルリードは1つの関数として実行し、開くファイルの数だけその関数を実行する事とする。
ファイルリード関数の先頭で子プロセスを生成しておく。
関数内で1つのレコード(MAX200Byte*5)を読み込み、5行目の最後がDBGPRT=ONだった場合、
標準出力に吐き出させる。ただし、吐き出しは子プロセスで行う事。
子プロセスとのプロセス間通信には共有メモリを用い、また、ダブルフォークは禁止とする。
子プロセスの埋葬は必ず行う事。

尚、ソースコードはC言語で記述し、文字列はchar型の配列で扱う事。

上記以外の制約は無し。

[3]環境
 OS:Linux
 コムパイラ:GCC
 言語:C
[4]期限 お勉強なので特になし。

どう取り組んだら良いのかさっぱりです。
取り合えず方針だけでも教えて頂ければ幸いです。それ以前に、プロセス間通信は分かりますが共有メモリを使っての
プロセス間通信はどうやってやるとですか??
422デフォルトの名無しさん:2006/01/14(土) 02:19:28
>>421
だぶるふぉーっくって何だ?
423デフォルトの名無しさん:2006/01/14(土) 02:22:42
相変わらず人気だねこのスレ
424デフォルトの名無しさん:2006/01/14(土) 02:23:18
>>422
量子力学の基本だろ
425デフォルトの名無しさん:2006/01/14(土) 02:26:18
426デフォルトの名無しさん:2006/01/14(土) 02:30:19
[1] 授業単元:プログラミング論
[2] 問題文(含コード&リンク):
【1】1+2+3+...+100を計算するプログラムを作成してくださいfor文を使用してください。
#include<stdio.h>
void  main(void)
{
  int gokei,i;

【2】【1】のプログラムをwhile文を用いて書き直してください。

【3】整数iの自乗が1000以上で、もっとも100に近い値となるiとiの自乗を算出するプログラムを作成してください。
#include<stdio.h>
void  main(void)
{
  int i;

【4】18の倍数で、300以下の最大の整数を求めるプログラムを作成してください。
#include<stdio.h>
void  main(void)
{
  int i;

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:bcc32 Ver.5.5.1.2
 [3.3] 言語:C
[4] 期限:2006/1/15
[5] その他の制限:あまり詳しいことは分からないのですが、
            出来るだけ初歩的なコードで書いてください。
すいません。
結構、量があるとは思いますが、どうぞよろしくお願い致します。
427デフォルトの名無しさん:2006/01/14(土) 02:35:48
【3】の意味を理解できるやついるのか?
428デフォルトの名無しさん:2006/01/14(土) 02:39:22
【1】

gokei = 0;
for(i =1;i<=100;++i){
gokei += i;
}

【2】
gokei = 0;
i = 1;
while(i <= 100){
gokei += i;
++i;
}

【4】
i = 300 - (300 % 18);

>427
10000の間違いなんじゃない?
429デフォルトの名無しさん:2006/01/14(土) 02:41:12
#include<stdio>

main(void){

int n1 = 1;
for(;n1 * n1 > 1000;n1++)



ん?? LOOPしねぇぞオイ
430デフォルトの名無しさん:2006/01/14(土) 02:45:49
いや待て、こうだ。

int n1 = 200;
int n2 = 0;
while(1)
{
n2 = n1 * n1;
if(n2 < 1000)
break;
n1--;
}
431デフォルトの名無しさん:2006/01/14(土) 02:48:32
1.
#include<stdio.h>
void main(void){int gokei,i;gokei=0;for(i=1;i<=100;i++)gokei+=i;printf("%d\n",gokei);}
2.
#include<stdio.h>
void main(void){int i=0,gokei=0;while(i<100)gokei+=++i;printf("%d\n",gokei);}
3.
#include<stdio.h>
void main(void){int i=0;while(i*i<1000)i++;i--;printf("i=%d, i^2=%d\n",i,i*i);}
4.
#include<stdio.h>
void main(void){int i;i=300-(300%18);printf("%d\n",i);}
432431:2006/01/14(土) 02:52:27
3.間違い。忘れてくれ。
問題読めば読むほどワカラン
433デフォルトの名無しさん:2006/01/14(土) 02:53:00
>>421
おマイの頭にSIGKILL
SIGSEGVしてるぞ
434デフォルトの名無しさん:2006/01/14(土) 03:00:55
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1455.txt
リーチ目をおさえるまでやってみた。
435デフォルトの名無しさん:2006/01/14(土) 03:02:01
二乗1000以上で最も100に近いんだがら答え100じゃねーの?
#include<stdio.h>
void main(void){puts("100");return 0;}
436デフォルトの名無しさん:2006/01/14(土) 03:03:10
>>434
なんでそんな情熱あるの?w
437434:2006/01/14(土) 03:03:41
メインループの
 if(search_reach(&x, &y, current)) printf("<%c%c>\n",x+'1', y+'A');
はテストコードなんで無視してちょ。
438デフォルトの名無しさん:2006/01/14(土) 03:05:30
あえて誰もつっこまなかった事を。
やるな>435

i=0;
while(1){
if(1000 <= (100-i)^2){
i = 100-i;
break;
}
if(1000 <= (100+i)^2){
i = 100+i;
break;
}
++i;
}

printf("%d %d\n",i,i^2);
439デフォルトの名無しさん:2006/01/14(土) 03:14:52
>>438
愛がゼロだからそのまま抜けるな。
440デフォルトの名無しさん:2006/01/14(土) 03:40:21
>>438
なんて愛の無いプログラムなんだろう。
441デフォルトの名無しさん:2006/01/14(土) 03:43:48
^ 演算子の使い方が斬新だと思いました。
442426:2006/01/14(土) 03:58:11
皆さん、本当に申し訳ありません。

【3】の問題は
整数iの自乗が1000以上で、もっとも「1000」

です。
こんな下らないミスで混乱させてしまい、申し訳ありません。
それでも、真剣に考えてくださって本当にありがとうございます。
これで、単位どうにかなりそうです。
443デフォルトの名無しさん:2006/01/14(土) 04:00:38
てゆか、その問題前に答えたんだけど。
別の人?
444デフォルトの名無しさん:2006/01/14(土) 04:03:49
実は俺ヘッダーで^のオーバーライドをしてたんだよ!
445デフォルトの名無しさん:2006/01/14(土) 04:04:24
オーバーロードだった
ハズカシス
446438:2006/01/14(土) 04:07:29
あい、いのちのあい。ちのいろはだいちにすてて。

>441
あー、何考えてんだ、漏れ。

>444-445
もう寝れ。漏れも寝る。
447デフォルトの名無しさん:2006/01/14(土) 04:18:57
>>443
私が質問するのは今回が初めてなので、
同じ授業を取っていた人が質問したと思います。
448デフォルトの名無しさん:2006/01/14(土) 04:26:00
基礎中の基礎であって聞くレベルのものでないと思うんだがなあ。
449デフォルトの名無しさん:2006/01/14(土) 04:35:31
でも、このスレの人って基礎的なものしか答えてくれないよなぁ
めんどくさいってのもあるけど
450デフォルトの名無しさん:2006/01/14(土) 04:40:13
>>442
(゚Д゚)ノ ァィ
#include<stdio.h>
void main(void){
int i;
for(i=1;i*i<1000;i++);
printf("%d %d\n",i,i*i);
}
451デフォルトの名無しさん:2006/01/14(土) 04:50:17
>>442
>整数iの自乗が1000以上で、もっとも「1000」

日本語勉強し直せよ
整数iの自乗が1000以上で、もっとも「1000」に近い「i」なら1000だろ
i == 32 を期待してるなら、
整数iの自乗が1000以上で、もっとも小さい「i」
452デフォルトの名無しさん:2006/01/14(土) 04:52:18
>>450
死ね
453デフォルトの名無しさん:2006/01/14(土) 04:54:40
何故死なねばならん
とりあえず通報しといた
454デフォルトの名無しさん:2006/01/14(土) 05:38:12

ところで、総当り方式のマルバツプログラムは組んだんだが、3x3までは動く。
4x4はダメダ...
3x3の組合せ(9!)362880
4x4の組合せ(16!)20922789888000
...いや、6x6のオセロが解けるってきいてたもんで、4x4ならラクに行けるんじゃないかと...
先に計算量を予想しとかんといかんですな...



455デフォルトの名無しさん:2006/01/14(土) 05:42:16
そんな真面目にやらんでも・・・逆に提出できなくなるかもw
456デフォルトの名無しさん:2006/01/14(土) 07:10:35
プログラムの課題を提出するときって大抵、プログラムの説明を書き添える必要があるけど
ここでソースコード書いてもらっても理解出来なきゃ自分が困るだけだな。
457デフォルトの名無しさん:2006/01/14(土) 07:12:41
mallocやらcallocやら使ってる人いるけど
実際問題そんなの出して問題ないのかな?
458デフォルトの名無しさん:2006/01/14(土) 07:30:54
そんなん出してって

C99以前では
int num;
scanf("%d",&num);
int hoge[num];
というのは駄目ですからー
遅かれ早かれ動的メモリ確保は履修するべき、しないならうんこ
459デフォルトの名無しさん:2006/01/14(土) 07:38:52
>プログラムの説明を書き添える必要があるけど

それは教官が馬鹿な場合だけだ
460デフォルトの名無しさん:2006/01/14(土) 07:40:51
>>458
えっ?それできるの?マジで?
461デフォルトの名無しさん:2006/01/14(土) 07:43:26
>>458
できないんですけど・・・
462デフォルトの名無しさん:2006/01/14(土) 07:50:09
>>459
馬鹿じゃなくて理解できているかどうか確認するために書かせる
463デフォルトの名無しさん:2006/01/14(土) 07:56:08
>>459
自分で理解して組み上げたものか、ここで丸投げしたものかの判断で
ソース内か別pdfなどで説明を要求してくる先生もいる。
464デフォルトの名無しさん:2006/01/14(土) 08:00:40
そんな恐ろしい教師いるのか
俺はそんなことなかったな
465デフォルトの名無しさん:2006/01/14(土) 08:03:13
そういう意味では独自のライブラリをかませて
余所(このスレの回答者とか)で動作確認できなくすることで
丸投げ対策してるのではないかとも思いたくなる。
466デフォルトの名無しさん:2006/01/14(土) 08:03:23
まぁそれが本人の為だし
それが恐ろしいとか、うざいとか言うなら
大学なんて辞めてアルバイトでもした方がいいよ

生半可な知識で現場に出てこられても使えないだけだし
467デフォルトの名無しさん:2006/01/14(土) 08:04:33
何怒ってるんだコイツ?
たかが大学の授業なのに
468デフォルトの名無しさん:2006/01/14(土) 08:05:24
どこが怒ってるの?
469デフォルトの名無しさん:2006/01/14(土) 08:16:44
「大学で何やってきたんだ?」って恥はかきたくないがな
470デフォルトの名無しさん:2006/01/14(土) 08:16:48
>>463
えっ、それが普通じゃないの?
てか、そうじゃないと本当の意味で理解してるのか分からない。
友達のソースを改変して、できましたって持ってくこともできるし。
471デフォルトの名無しさん:2006/01/14(土) 08:29:05
大学の教授はどうしてもわからないなら友達の写してもネットにあるのを真似してもいい
だけど、コピーペーストだけはするな
まんまでいいから自分で打ち込めとか言ってた
472デフォルトの名無しさん:2006/01/14(土) 08:34:57
>>449
プログラムは組みたいけど、数学の勉強はいまさらしたくない。
漸化式とか、ぐぐってもサパーリ理解不能。

本末転倒だとは思うんだけど、ね。
めんどうな計算はコンピーターにやらせよう。
「3桁×3桁は電卓で。」の、ゆとり教育。
473デフォルトの名無しさん:2006/01/14(土) 08:35:33
>>417
あたかも自分で書いたように見せかけて提出すると犯罪だけど
覚えるだけならそれでもいいかもね。
474377:2006/01/14(土) 09:05:38
>>391-392
コンピュータ側を強くするという意味だそうです。
>>405さん 有難うございます。俺も頑張ってみますが、まだプログラムを
考えてくださってる方もいるようなので、よろしくお願いします。
475デフォルトの名無しさん:2006/01/14(土) 09:15:00
てゆーかこれなんか授業の宿題レベルじゃないような・・・・
476デフォルトの名無しさん:2006/01/14(土) 09:18:30
>>472
おまえ漸化式も知らないでプログラマやってんの?w
477デフォルトの名無しさん:2006/01/14(土) 09:20:55
>>474-475
ここで書かれたコンピュータ側プログラムでどれが一番強いか競わせたいね。
だれかネットワーク対戦用に共通の土俵を作ってくれ。
478デフォルトの名無しさん:2006/01/14(土) 09:31:38
リバーシの最強アルゴリズムとか一人でやってくださいって感じなんだが
479472:2006/01/14(土) 09:46:19
>>476
正直、行列とかわからん。3D興味ないし。
ベクトル内積ぐらいならなんとか。

作りたいものが10年前のレベルだからいいじゃん。
日曜プログラマだし。(元プロ)
480デフォルトの名無しさん:2006/01/14(土) 09:47:14
元プロって、コボラーかなにかですか?
481デフォルトの名無しさん:2006/01/14(土) 10:01:12
[1] 授業単元:基礎プログラミング演習
[2] 問題文(含コード&リンク):
構造体の配列を用いて、5人分の氏名、学籍番号、点数を記録し、
新しく入力された点数以上の氏名を出力するプログラムを書け。
(必ず、print_student(struct student s)と言う学生一人分の情報を
 1行に表示する関数を作成し、それを利用して出力を行うこと。)

< 構造体の例 >
struct student{
char name[50], id[20];
int score;
};
< 実行例 >
Name? Tanaka (fgets と sscanf によって5人分のデータを入力する)
ID? 103
Score? 80
(途中省略)
Passing score? 70
102 Suzuki 90
103 Tanaka 80
 
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月17日まで

何とぞお手柔らかにお願いします
482479:2006/01/14(土) 10:03:12
>>480
Cだけど、表示まわりは社内ライブラリが充実してたし
(支店の人間がさわることは許されなかった)、
ほとんどSQLだけ。

業務アプリなんて、VB+データベースの知識だけで十分。
こんなんで全国1,000店舗の販売管理できるんだもんな。
483デフォルトの名無しさん:2006/01/14(土) 10:07:08
>>482
雑談したいだけならどっか逝けよ
484デフォルトの名無しさん:2006/01/14(土) 12:29:07
>>482
× データベースの知識
○ データベースの使い方
485デフォルトの名無しさん:2006/01/14(土) 13:47:50
[1] 授業単元:プログラミングU
[2] 問題文:
二分探索木における挿入、削除、検索のアルゴリズムを簡潔に説明し、そのプログラムを作成せよ。
ただし、挿入、削除、検索はそれぞれ再帰を用いた関数でプログラムを作れ。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:1/26まで
[5] その他の制限:特に無し

よろしくお願いします。
486デフォルトの名無しさん:2006/01/14(土) 13:49:48
487デフォルトの名無しさん:2006/01/14(土) 13:51:14
よく見たら再帰かよ
BinarySearchで再帰なんて使うメリット無いだろ
488デフォルトの名無しさん:2006/01/14(土) 14:22:45
業務アプリ(しか出来ない)プログラマって差別されがち
489デフォルトの名無しさん:2006/01/14(土) 14:41:41
ソートや2分木なんかはループ書くより再帰で書いたほうが解り易いんだが
490デフォルトの名無しさん:2006/01/14(土) 14:49:52
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):数字パズル。パズル完成時にクリアメッセージ「おめでとう!」等が表示されるようにせよ。(配列の初期配置と現在値の合同判定をする関数を組んで下さい)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1462.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C
[4] 期限: [2006年01月16日24:00まで]
[5] その他の制限: 特にありませんが、お願いする関数はint moveのswitch(S)下、caseのbreak;直前毎に組み込んでくださると見易くて助かります。
それと私自身の力不足の為、グローバル変数が混じっていますが多めに見て下さい…それでは宜しくお願い致します。
491デフォルトの名無しさん:2006/01/14(土) 14:50:59
何の説明もなしにそんな長いソース読む気失せる
492デフォルトの名無しさん:2006/01/14(土) 14:52:35
ぱっと見ただけだけど
いわゆる15パズルっぽいな
493490:2006/01/14(土) 15:01:06
うああ、確かに長いソースですね…

プログラムとして動くようにはなっているので、bcc32でコンパイルすればどんな状態なのか一発でわかるのですが…
実際参考にする必要性のある箇所は少ないはずです…多分グローバル関数のnumと配列担当のint table位だと思います。
他の関数は数字混ぜたり書いたりしてるだけなので…
494デフォルトの名無しさん:2006/01/14(土) 15:49:14
>>490
masu 定義直後に int masu0[11][11];int started = 0;
tableinit() 呼出直後に copy();
start() 呼出直後に started = 1;
指定位置に judge();
void copy(){int x, y;for(x=1;x<=num;++x) for(y=1;y<=num;++y) masu0[x][y]=masu[x][y];}
void judge(){int x, y;if(!started) return;for(x=1;x<=num;++x) for(y=1;y<=num;++y) if(masu0[x][y]!=masu[x][y]) return;printf("おめでとう!\n");}
495デフォルトの名無しさん:2006/01/14(土) 16:25:01
>>460
最近はできる
昔はできなかった

VC++6.0なんかだとできない
496212:2006/01/14(土) 16:34:33
何度もすみません、212です。
ややこしい問題ですがどうかよろしくお願いします。
符号付2進展開のプログラムについてです。

[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
a^rをa,rごとに入力し、rを2進展開して(5^3)*(2^6)を求めるプログラムを作りなさい。
またrを符号付2進展開にした場合のプログラムも作りなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C言語
[4] 期限:2006年1月15日
[5] その他の制限:a,rの入力は面倒だと思うのでscanf使わずにプログラムに埋め込んでいいです。

問題文分かりにくいですが以下のようなことです。
(符号付じゃない場合)
   3 = 0 1 1・・・・・・5の指数部
   6 = 1 1 0・・・・・・2の指数部
ーーーーーーーーーー
上のように指数部を2進展開して上位ビットから見ていきます。
1がたったビットでは×仮数部をして、右にシフトするごとに2乗するようにします。 
このような仕様です。よろしくお願いします。
497デフォルトの名無しさん:2006/01/14(土) 17:00:38
>>491
この程度で長いって逝ってたらやばいぞ
498デフォルトの名無しさん:2006/01/14(土) 17:11:05
○×ゲーム
僕にはこれが限界ですた
http://smzk55.hp.infoseek.co.jp/maru_batu.c
499デフォルトの名無しさん:2006/01/14(土) 17:33:42
[1] 授業単元:プログラム
[2] 問題文 台形の面積を計算する関数を作成せよ.ただし上底,下底,高さは
main関数内で取り込み,これら3変数を関数の引数として与えるものとする.
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:初心者でもわかりやすい感じ…;
よろしくお願いします。
500デフォルトの名無しさん:2006/01/14(土) 17:50:00
>>499
・関数内で表示するのか、値を返すのか
・引数および面積の値は実数か整数か
501デフォルトの名無しさん:2006/01/14(土) 17:53:50
計算する関数を作成せよ
値は実数
502デフォルトの名無しさん:2006/01/14(土) 17:55:23
ええと…
「値を返す」「実数」でお願いします!
503デフォルトの名無しさん:2006/01/14(土) 17:55:28
とりあえず台形の面積の計算方法を教えれ
504デフォルトの名無しさん:2006/01/14(土) 17:56:33
>>500
表示する必要はなさそう
505デフォルトの名無しさん:2006/01/14(土) 17:57:24
(上底+下底)×高さ÷2だと思います。
506デフォルトの名無しさん:2006/01/14(土) 18:00:02
>>505
マジレスワロスw

>>499
double (double top,double bot,double h)
{
  return (top+bot)*h/2.0;
}
507デフォルトの名無しさん:2006/01/14(土) 18:04:11
ワロスってなんですか??
506番さんのを詳しく教えてほしいのですが…
508デフォルトの名無しさん:2006/01/14(土) 18:04:25
(top+bot)*h

このタイミングで桁あふれしないか?

(h/2.0)*(top+bot)

とするとか...
509デフォルトの名無しさん:2006/01/14(土) 18:06:01
(top+bot)/2.0*h
510506:2006/01/14(土) 18:11:20
>>508
ごめん
計算順序考えなかった上に関数名つけてなかった・・・吊ってくるノシ
511デフォルトの名無しさん:2006/01/14(土) 18:12:02
>>508
>(h/2.0)*(top+bot)
このタイミングで桁落ちしないか?
512デフォルトの名無しさん:2006/01/14(土) 18:13:10
ややこしい問題ですがどうかよろしくお願いします。
符号付2進展開のプログラムについてです。

[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
a^rをa,rごとに入力し、rを2進展開して(5^3)*(2^6)を求めるプログラムを作りなさい。
またrを符号付2進展開にした場合のプログラムも作りなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C言語
[4] 期限:2006年1月15日
[5] その他の制限:a,rの入力は面倒だと思うのでscanf使わずにプログラムに埋め込んでいいです。

問題文分かりにくいですが以下のようなことです。
(符号付じゃない場合)
   3 = 0 1 1・・・・・・5の指数部
   6 = 1 1 0・・・・・・2の指数部
ーーーーーーーーーー
上のように指数部を2進展開して上位ビットから見ていきます。
1がたったビットでは×仮数部をして、右にシフトするごとに2乗するようにします。 
このような仕様です。よろしくお願いします。
513デフォルトの名無しさん:2006/01/14(土) 18:13:49
ややこしい問題ですがどうかよろしくお願いします。
符号付2進展開のプログラムについてです。

[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
a^rをa,rごとに入力し、rを2進展開して(5^3)*(2^6)を求めるプログラムを作りなさい。
またrを符号付2進展開にした場合のプログラムも作りなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C言語
[4] 期限:2006年1月15日
[5] その他の制限:a,rの入力は面倒だと思うのでscanf使わずにプログラムに埋め込んでいいです。

問題文分かりにくいですが以下のようなことです。
(符号付じゃない場合)
   3 = 0 1 1・・・・・・5の指数部
   6 = 1 1 0・・・・・・2の指数部
ーーーーーーーーーー
上のように指数部を2進展開して上位ビットから見ていきます。
1がたったビットでは×仮数部をして、右にシフトするごとに2乗するようにします。 
このような仕様です。よろしくお願いします。
514デフォルトの名無しさん:2006/01/14(土) 18:13:53
C#の質問もOKですか???
515デフォルトの名無しさん:2006/01/14(土) 18:14:21
ややこしい問題ですがどうかよろしくお願いします。
符号付2進展開のプログラムについてです。

[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
a^rをa,rごとに入力し、rを2進展開して(5^3)*(2^6)を求めるプログラムを作りなさい。
またrを符号付2進展開にした場合のプログラムも作りなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C言語
[4] 期限:2006年1月15日
[5] その他の制限:a,rの入力は面倒だと思うのでscanf使わずにプログラムに埋め込んでいいです。

問題文分かりにくいですが以下のようなことです。
(符号付じゃない場合)
   3 = 0 1 1・・・・・・5の指数部
   6 = 1 1 0・・・・・・2の指数部
ーーーーーーーーーー
上のように指数部を2進展開して上位ビットから見ていきます。
1がたったビットでは×仮数部をして、右にシフトするごとに2乗するようにします。 
このような仕様です。よろしくお願いします。
516デフォルトの名無しさん:2006/01/14(土) 18:14:52
ややこしい問題ですがどうかよろしくお願いします。
符号付2進展開のプログラムについてです。

[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
a^rをa,rごとに入力し、rを2進展開して(5^3)*(2^6)を求めるプログラムを作りなさい。
またrを符号付2進展開にした場合のプログラムも作りなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C言語
[4] 期限:2006年1月15日
[5] その他の制限:a,rの入力は面倒だと思うのでscanf使わずにプログラムに埋め込んでいいです。

問題文分かりにくいですが以下のようなことです。
(符号付じゃない場合)
   3 = 0 1 1・・・・・・5の指数部
   6 = 1 1 0・・・・・・2の指数部
ーーーーーーーーーー
上のように指数部を2進展開して上位ビットから見ていきます。
1がたったビットでは×仮数部をして、右にシフトするごとに2乗するようにします。 
このような仕様です。よろしくお願いします。
517デフォルトの名無しさん:2006/01/14(土) 18:15:01
ある意味マルチ
518デフォルトの名無しさん:2006/01/14(土) 18:15:26
ややこしい問題ですがどうかよろしくお願いします。
符号付2進展開のプログラムについてです。

[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
a^rをa,rごとに入力し、rを2進展開して(5^3)*(2^6)を求めるプログラムを作りなさい。
またrを符号付2進展開にした場合のプログラムも作りなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C言語
[4] 期限:2006年1月15日
[5] その他の制限:a,rの入力は面倒だと思うのでscanf使わずにプログラムに埋め込んでいいです。

問題文分かりにくいですが以下のようなことです。
(符号付じゃない場合)
   3 = 0 1 1・・・・・・5の指数部
   6 = 1 1 0・・・・・・2の指数部
ーーーーーーーーーー
上のように指数部を2進展開して上位ビットから見ていきます。
1がたったビットでは×仮数部をして、右にシフトするごとに2乗するようにします。 
このような仕様です。よろしくお願いします。
519デフォルトの名無しさん:2006/01/14(土) 18:28:19
はやく教えろやカス
520デフォルトの名無しさん:2006/01/14(土) 19:00:03
○×、先読みのない静的評価関数
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1463.txt
521520:2006/01/14(土) 19:02:16
/* 負け目=-900 */ ←このコメントは嘘
522デフォルトの名無しさん:2006/01/14(土) 19:35:12
>>496,512,513,515,516,518
一応聞いておくけど

(1)5^3=5*5*5ですか?
ふつうCだと「^」は排他的論理和で使わているので(5^3=6)。

(2)(5^3)*(2^6)の「*」の部分はどう計算するのですか?
ふつうに「*」を使って計算するのか、2つを2進化して
和とビットシフトで計算するのですか?また、5と3を
連動して累乗?を計算するのか、独立して累乗を計算するのか?

(3)途中で「rを符号付2進展開にした場合」とありますが
a,rはどの型で定義しますか?(int ,unsigned int,double)
それによって、計算結果が無意味になる場合もあります。
523490:2006/01/14(土) 19:37:15
わわ、もう答え返って来てる…
素晴らしいスレッドですね。出来る限り自力で解けるように精進しようと思います。

>>494さん有難う御座いましたー。
524デフォルトの名無しさん:2006/01/14(土) 19:50:24
>>514
C#はC#の質問できそうなスレがありますが
    ミスターサタンのC#相談室    
http://pc8.2ch.net/test/read.cgi/tech/1092656075/l50
【やったね】C#最強伝説 第2章【ゲイツ】
http://pc8.2ch.net/test/read.cgi/tech/1070469339/l50

C#の独自機能を使わずC/C++の範囲でどうにかなる
場合もありますので自身で判断してください。
525212:2006/01/14(土) 19:52:26
>>522さん
返答ありがとうございます。
(1)5^3は5×5×5です。
(2)ビットシフトのほうでお願いします。
(3)a,rとも巨大な数にも対応できるように一応多倍長で定義しています。
色々説明が抜けていてすみません。
ちなみに212と496以外は自分ではありません。
今度はトリップのつけ方覚えてきます。
526デフォルトの名無しさん:2006/01/14(土) 20:55:53
> (3)a,rとも巨大な数にも対応できるように一応多倍長で定義しています。
定義がよくわからん。自前の浮動小数点数だとは思うが、それだったら、定義が必要。
とりあえず、講義で足し算とか掛け算くらはいは出てるだろうから、それをUP。

> OX作ってる人。
いや・・・がんばってるな。乙。
この手のゲームの場合、思考ルーチンは手だけを返すというのもアリ。
ゲーム状態を保持するなら、手番も構造体に入れるといいかも?
527デフォルトの名無しさん:2006/01/14(土) 21:06:42
>>496
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1464.txt
まずは簡単にa,rともにintでa>0、r≧0の場合のみ。
この時点ではr<0に対してa^rが0になってしまったり
>>522の「連動して」計算しても10進数でいう小数点以下が
維持されないのででたらめな値になる。そのため(3)で聞いてみた。

>>525
多倍長の形式がわからないので、学外でも使用できるライブラリか
自作なら
・多倍長の形式と代入(main内の埋め込みでおk)
・多倍長同士の和を求める関数
(和さえ分かれば差積も比較的容易と思う。商はやや難だが)
・多倍長における1464.txtで言うところの論理積「&」のビットシフト「>>」の処理
あたりを示してほしい
528212 ◆mL2ZRk1cK. :2006/01/14(土) 21:29:43
>>526さん
すみません、多倍長のヘッダファイルは先生が作ってくれた物を
そのまま使っているので定義のところがわかりません。
わかり次第UPします!

>>527さん
ありがとうございます!
さっそく試してみます。
多倍長に関しては上に書いたようにまだよく
分かってない部分があるので
わかり次第書き込みます。
協力していただいて本当にありがとうございます!
529デフォルトの名無しさん:2006/01/14(土) 21:37:09
[1] 授業単元: プログラミング1
[2] 問題文(含コード&リンク):
このプログラムを改良して、以下の機能を実現させろ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1465.txt

リダイレクションでhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1466.txt このファイルを入力します。
datファイルでしたがUPしたらtxtになってしまいました。
駅名 所在地 次の駅までの距離 ってなってます
(1) 全ての駅について、その駅から下り方向の全ての駅との距離を表形式で標
準出力に出力(上り方向は表示する必要はない)
[イメージ]
Tokyo Shina Yokoh ....Hakat
Tokyo 0.0 6.8 28.8 ....
Shina 0.0 22.0 ....
.....
Hakat 0.0

(2) 表出力後、標準入力から駅名を2個入力し、その区間の駅名・駅間距離を
下り方向で表示(入力される駅名が下り方向順とは限らないので注意する
こと)



[3] 環境
 [3.1] OS: Windows
 [3.2] Borland bcc
 [3.3] 言語: C
[4] 期限: 来週中
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
お願いします
530デフォルトの名無しさん:2006/01/14(土) 21:37:53
>>498 >>520さん 有り難うございます。
参考にさせていただきます。
531デフォルトの名無しさん:2006/01/14(土) 22:21:27
[1] 授業単元:プログラミング基礎
[2] 問題文:以下の通りです
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年1月23日まで

丸投げで申し訳ありません><問題文の意味さえ理解出来ていない
ド素人ですが、どなたかお願い出来ませんでしょうかm(_._)m
-------------------------------------------------------------

問1 次の関数を作成しなさい。

a. 数値の入った配列を引数として受け取り、その整数部(小数点以下切り捨て)
の合計を計して返す関数。データの終わりは 0.0になっている。
その最初の行は,int intsum(list)とする。

例:intsum([-19.5,30.8,-60.93,25.21,0.0]) → -24

b. 文字列を引数として受け取って、その中の数字の個数を数えて返す関数。そ
の最初の行は,int digitnumber(list)とする。

例:digitnumber("EXPO 2005 will begin on March 25.") → 6
532531:2006/01/14(土) 22:22:24
問2 次のプログラムを実行したときの結果を記しなさい。

#include <stdio.h>
int main(void)
{
int natural[10];
int i=1,j,k;
int sum=0;
for (j=0;j<=9;j++) {
natural[j]=i;
i++;
}
for (k=0; k<=9; k++) {
sum+=natural[k];
}
printf("%d\n",sum);
}
533デフォルトの名無しさん:2006/01/14(土) 22:31:59
>>532
結果だけなら55
やってることは、配列natural[10]に1〜10まで数を入れて
配列naturalに収められている数を順番にsumに足していってる
534デフォルトの名無しさん:2006/01/14(土) 22:34:52
>>531
int intsum(list)
double list[];
{
int sum = 0;
while(*list!=0.0){
sum+=(int)*list;
++list;
}
return sum;
}

int digitnumber(list)
char* list;
{
int count = 0;
while(*list!='\0'){
if('0'<=*list&&*list<='9') ++count;
++list;
}
return count;
}
535デフォルトの名無しさん:2006/01/14(土) 22:39:04
[1] 授業単元: アルゴリズム演習B
[2] 問題文(含コード&リンク):
1G(=ゴールド), 5G, 15G, 32Gの4種類のみの硬貨が存在する国を考える。
ある金額n(0 <= n <= 100000000)Gを払うのに必要な硬貨の最小枚数を求めるプログラムpayを作成しなさい

実行例
$ ./pay 33
2
$ ./pay 9
4
$ ./pay 100000000
3125000

[3] 環境
 [3.1] OS: 問わず
 [3.2] コンパイラ: gcc
 [3.3] 言語: C/C++
[4] 期限: 2006 1/16 17:00まで
よろしくおねがいします。
536デフォルトの名無しさん:2006/01/14(土) 22:40:43
>>524さん
有難うございます。
ここで聞いてみます!
537デフォルトの名無しさん:2006/01/14(土) 22:47:45
>>535
pay 9 って 5 じゃね?

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

int main(int argc, char* argv[]){
int coins[] = {32,15,5,1,0};
int money = atoi(argv[1]);
int count = 0, *coin=coins;
while(money&&*coin){
if(money<*coin) ++coin;
else {money-=*coin; ++count;}
}
if(money) printf("Unpayable.\n");
else printf("%d", count);
}
538デフォルトの名無しさん:2006/01/14(土) 22:51:57
>>537
5ですた
539デフォルトの名無しさん:2006/01/14(土) 22:52:33
>>537 45G支払うときは3枚だよな・・・?
540537:2006/01/14(土) 22:54:36
逝ってきま
541デフォルトの名無しさん:2006/01/14(土) 22:54:41
>>539
そうです
542デフォルトの名無しさん:2006/01/14(土) 23:28:51
やっと>>539がわかった俺ガイル

誤(PG):45=32+5+5+1+1+1
正   :45=15+15+15

で、どうやって実装するの?
スーパーハカー期待wktk
543531:2006/01/14(土) 23:29:14
解答いただけた方々ありがとうございましたm(_._)m
544デフォルトの名無しさん:2006/01/14(土) 23:31:12
糞ロジックできたよー
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
  int money[]={32,15,5,1,1},pay1=atoi(argv[1]),pay2=pay1;
  int num1=0,num2=0,i;
  for(i=0;i<4;i++){
    num1+=pay1/money[i];
    pay1%=money[i];
  }
  for(i=1;i<4;i++){
    num2+=pay2/money[i];
    pay2%=money[i];
  }
  if(num1<num2) printf("%d\n",num1);
  else printf("%d\n",num2);
  return 0;
}
545デフォルトの名無しさん:2006/01/14(土) 23:38:00
77=32+15+15+15 で4枚
泥沼です
546デフォルトの名無しさん:2006/01/14(土) 23:50:22
関係ないけど「解答いただけた方々」というのは敬語としては間違ってます。
正しくは「(御)解答くださった方々」。
547デフォルトの名無しさん:2006/01/14(土) 23:51:50
[1]授業単元:プログラミング
[2]問題文(含コード&リンク):任意の文字列の左右を逆転させる(EX:Program⇒margorP)プログラムをスタック(LIFO)のデータ構造を用いて作成せよ。
[3]環境
[3.1]OS:windows
[3.2]コンパイラ名とバージョン:VC
[3.3]言語:C
[4]期限:1月16日
[5]その他の制限:なし
よろしくお願いします
548デフォルトの名無しさん:2006/01/15(日) 00:21:01
>>535 -
浅学なもんですまないが

1,5,15,32の4つの整数を考えた場合

15は5の3倍だし、5は1の5倍
これから15は (1の5倍 && 5の3倍) だから15は1*15と確かめられる
1*(n*5) → 5*n && 5*(n*3) → 15*n = 1*(n*15) → 15*n
しかし32は5の倍数ではないのでここで不都合が起きる
もしある金額が5の倍数である場合32のコイン計算は除いたほうがいいだろう。(※1)
しかし32と15の公倍数の場合(例えば480 = 最小公倍数)、※1により32のコイン計算を除外した場合
480の最小コインの枚数は32Gの15枚であるはずが、15Gの32枚と返されてしまう。
であるから、32と15の公倍数である場合は※1の例外処理はまずいだろう。
(証明は出来ないですがorz)

長くなりましたプログラムにすると次になりました

549デフォルトの名無しさん:2006/01/15(日) 00:21:35
>>547
#include<stdio.h>
#include<stdlib.h>
typedef struct stack_impl_tag {struct stack_impl_tag *prev; char data;} StackImpl;
typedef struct stack_tag {StackImpl* ptr;} Stack;
int StackPush(Stack *s, char x) {
    StackImpl *temp;
    if (s->ptr) {
        if (!(temp = (StackImpl*)malloc(sizeof(StackImpl)))) return 0;
        temp->prev = s->ptr; s->ptr = temp;
    } else {
        if (!(s->ptr = (StackImpl*)malloc(sizeof(StackImpl)))) return 0;
        s->ptr->prev = NULL;
    }
    s->ptr->data = x;
    return 1;
}
int StackPop(Stack *s, char *x) {
    StackImpl *temp;
    if (!s->ptr) return 0;
    *x = s->ptr->data; temp = s->ptr->prev; free(s->ptr);
    if (temp) s->ptr = temp; else s->ptr = NULL;
    return 1;
}
void StackInit(Stack *s) {s->ptr = NULL;}
void StackFree(Stack *s) {char temp; while (StackPop(s, &temp)) {}}
int main(void) {
    Stack s; int i; char c; StackInit(&s);
    while ((i = getchar()) != EOF && i != '\n') StackPush(&s, (char)i);
    while (StackPop(&s, &c)) putchar(c);
    StackFree(&s); return 0;
}
550デフォルトの名無しさん:2006/01/15(日) 00:21:44
int main()
{
int c1=0,c5=0,c15=0,c32=0;
int money = 480;

if( money%5 || !(money%480) ){
c32 = money / 32;
money -= c32*32;
}
c15 = money / 15;
money -= c15*15;

c5 = money / 5;
money -= c5*5;

c1 = money;

printf("各々コイン 32G=%d 15G=%d 5G=%d 1G=%d\n",c32,c15,c5,c1);
printf("合計枚数 %d\n",c32 + c15 + c5 + c1);
getch();
return 0;
}
というかもう結論出てたりするのかしら
551デフォルトの名無しさん:2006/01/15(日) 00:22:47
>>549
狙ったかのような割り込み乙
552デフォルトの名無しさん:2006/01/15(日) 00:22:53
[1] 授業単元:プログラミング演習
[2] 問題文@n個のデータを入力して、その最大、
最小、中央値を求めよ。ただしnは100までの数とする。
A次のフィボナッチ数列Fnを計算し、Fn≧50となるときの第n項を
出力せよ。
Fn=Fn-2+Fn-1  ただし、F0=0、F1=1
B10文字までの英字を入力して、「入力された英字のそれぞれを
1文字前の英字で表す。」という規則で変換した暗号を出力せよ。
C任意の文字列を入力して、文字を右に数文字ずらした文字列を作成したい
。例えば、「delicate」を右に3文字ずらすと「atedelic」となる。
任意の10文字の文字列と右へずらす数を入力して、新しい文字列の結果
を出力せよ。
[3] 環境
 [3.1] OS: (Windows xp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: (C++
[4] 期限: 2006年1月16日24h
[5] その他の制限:
 僕の手ではあまるんでよかったらお願いします・
553548:2006/01/15(日) 00:28:15
100000000で試した所
5の倍数 && 480の倍数ではないから32Gのコイン計算がされてませんねorz

うむむ出直してきます
554デフォルトの名無しさん:2006/01/15(日) 00:32:16
>>547
もう出たけどせっかく書いたし貼っとく。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=26836
"Download as file" っていうリンクをクリック
555547:2006/01/15(日) 00:40:19
>>550 >>554
ありがとうございました。
556デフォルトの名無しさん:2006/01/15(日) 00:41:10
>>535
この擦れに長く居たせいで自明に見えるw
# include <stdio.h>
# include <stdlib.h>

int min(int x, int y)
{
  return x < y ? x: y;
}
int mincoins(int amount, const int *coins, int n_coins)
{
  int x, y;
  if(n_coins == 0 || amount < 0)
    return -1;
  if(amount == 0)
    return 0;
  x = mincoins(amount-coins[0], coins, n_coins);
  y = mincoins(amount, coins+1, n_coins-1);
  if(x == -1)
    return y;
  if(y == -1)
    return x+1;
  return min(x+1, y);
}
int main(int ac, char **av)
{
  const int coins[] = {32, 15, 5, 1};
  if(!av[1])
    return 1;
  printf("%d\n", mincoins(atoi(av[1]), coins, 4));
  return 0;
}
557544:2006/01/15(日) 00:43:05
リベンジ
思いつきで書いてテストしてないけど
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
  int money[]={32,15,5,1,1},pay=atoi(argv[1]);
  int num=0,i;
  if(pay%5!=0){
    while(pay>=money[0]){
      pay=pay-money[0];
      num++;
      if(pay%5==0) break;
    }
  }
  for(i=1;i<4;i++){
    num+=pay/money[i];
    pay%=money[i];
  }
  printf("%d\n",num);
  return 0;
}
558デフォルトの名無しさん:2006/01/15(日) 00:43:29
>>535
これでどうだ?

int main(int argc, char* argv[]){
int money = atoi(argv[1]);
int hasuu[15] = {0,1,2,3,4,1,2,3,4,5,2,3,4,5,6};
int i, c32, c15;
int count = (money/480)*15;
int min;
money%=480;
min=count+money;
for(i=0;i<15;++i){
int nokori = money-i;
for(c32=0;c32<=nokori/32;++c32){
for(c15=0;c15<=(nokori-c32*32)/15;++c15){
if(c32*32+c15*15==nokori){
int temp = c32+c15+hasuu[i];
if(temp<min) min = temp;
}
}
}
}
printf("%d\n", count+min);
}
559556:2006/01/15(日) 00:45:32
100000000についてstack overflowするな。
うんこ。
560デフォルトの名無しさん:2006/01/15(日) 00:47:26
>>552
なぜかBだけやってみた。
フィボナッチ数列を再帰で実装しろとかいいだしたら、
コードコンプリートの上巻で指導教官を殴れ。
#include <string>
void convertString(std::string &str) {
for(unsigned i = 0; i < str.size(); ++i)
str[i] = str[i] - 1;
}

int main(int argc, char *argv[])
{
using namespace std;
std::string inputText;
cout << "Input Alphabet(MAX10) >";
cin >> inputText;

if(inputText.size() > 10){
cout << "Input String Size Err!" << endl;
return 0;
}
convertString(inputText);
cout << inputText << endl;
return 0;
}
561デフォルトの名無しさん:2006/01/15(日) 00:49:57
解法はリングバッファを使った漸化式だろ。
562デフォルトの名無しさん:2006/01/15(日) 00:51:35
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1467.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C のみで
[4] 期限: 20050116まで
[5] その他の制限: 再帰を使う問題です。よろしくお願いします。


563デフォルトの名無しさん:2006/01/15(日) 00:56:58
>>562
自分でそのリンクの文書を読み直してみろ。それで伝わると思うか?
564デフォルトの名無しさん:2006/01/15(日) 00:59:56
>>552
Cもやった。
第1引数がシフトする文字列で、第2引数が右シフト数。

void shiftString(std::string &str, unsigned shift_num) {
shift_num = shift_num % str.size();
std::string tempStr;
tempStr.assign(str.begin() + shift_num, str.end());
tempStr.append(str.begin(), str.begin() + shift_num);
std::cout << tempStr << std::endl;
}
565デフォルトの名無しさん:2006/01/15(日) 01:32:52
[1] 授業単元:基礎プログラミング演習
[2] 問題文(含コード&リンク):
構造体の配列を用いて、5人分の氏名、学籍番号、点数を記録し、
新しく入力された点数以上の氏名を出力するプログラムを書け。
(必ず、print_student(struct student s)と言う学生一人分の情報を
 1行に表示する関数を作成し、それを利用して出力を行うこと。)

< 構造体の例 >
struct student{
char name[50], id[20];
int score;
};
< 実行例 >
Name? Tanaka (fgets と sscanf によって5人分のデータを入力する)
ID? 103
Score? 80
(途中省略)
Passing score? 70
102 Suzuki 90
103 Tanaka 80
 
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月17日まで

何とぞお手柔らかにお願いします
566デフォルトの名無しさん:2006/01/15(日) 01:35:22
>>565
print_student(struct student s)

こんな構造体の値渡しの関数作らせる学校ってどこ?
567デフォルトの名無しさん:2006/01/15(日) 01:42:57
>>552
@http://homepage3.nifty.com/catfood/up/src/up0833.txt
Aはnが50以上ということだろうか?
不明瞭。
568デフォルトの名無しさん:2006/01/15(日) 01:44:58
f(n)>=50って意味だと思うぞ。
569デフォルトの名無しさん:2006/01/15(日) 01:46:19
>>568
あ、ホントだ・・・orz
疲れているな。
570デフォルトの名無しさん:2006/01/15(日) 01:54:14
>>552
ということで

int main(int argc, char *argv[])
{
int fib_n_2 = 0;
int fib_n_1 = 1;
int fibNum = 0;
int n = 2;
while(1) {
fibNum = fib_n_2 + fib_n_1;
printf("%d ", fibNum);
if(fibNum > 50) break;
fib_n_2 = fib_n_1;
fib_n_1 = fibNum;
++n;
}

printf("\nFn>50となる最初のnは%dです\n", n);
}
571デフォルトの名無しさん:2006/01/15(日) 01:58:25
>>560
都内の国立大学です・・・
572565:2006/01/15(日) 02:00:36
>>566 さんへの間違いです
573デフォルトの名無しさん:2006/01/15(日) 02:41:36
まあ・・K&R 2ndだって値渡しあるからさ。
574デフォルトの名無しさん:2006/01/15(日) 03:22:57
国立大学生様なのにここに頼るとは
相当な落ちこぼれ
575デフォルトの名無しさん:2006/01/15(日) 03:31:58
大学は入ったモン勝ち
576デフォルトの名無しさん:2006/01/15(日) 03:45:11
#include <stdio.h> /* コインの問題 int で計算できると仮定している。引数のチェックはしてない */
#define NELEMS(a) (sizeof(a)/sizeof(a[0]))
int f(int n) {
  int buf[32]; /* 最大の貨幣と同じサイズ */
  int table[] = {1, 5, 15, 32}; /* 貨幣の種類 */
  int i, j, min;
  buf[0] = 0;
  for (i = 1; i < NELEMS(buf); i++)
    buf[i] = NELEMS(buf);
  for (i = 1; i <= n; i++) {
    min = buf[(NELEMS(buf) + i - table[0]) % NELEMS(buf)];
    for (j = 1; j < NELEMS(table); j++) {
      if (min > buf[(NELEMS(buf) + i - table[j]) % NELEMS(buf)])
        min = buf[(NELEMS(buf) + i - table[j]) % NELEMS(buf)];
    }
    buf[i % NELEMS(buf)] = min + 1;
  }
  return min + 1;
}
int main(int argc, char *argv[]) {
  printf("%d\n", f(atoi(argv[1])));
  return 0;
}
577デフォルトの名無しさん:2006/01/15(日) 03:53:26
>>574
偏差値高い=脳みそ回転速い
は間違い
578デフォルトの名無しさん:2006/01/15(日) 04:11:32
[1] 授業単元: アルゴリズム演習C
[2] 問題文(含コード&リンク):
1G(=ゴールド), 5G, 10G, 50G, 100G, 500Gの6種類のみの硬貨が存在する国を考える。
ある金額n(0 <= n <= 5000)Gを払うのに、受け取る釣銭も含めて財布の中の硬貨の
枚数が最小になる支払い方法を求めるプログラムpayを作成しなさい。
なお、財布の中身の初期値は6種類の硬貨の枚数をコマンドラインパラメータで与え、
支払い金額の入力に応じて支払い方法を提示後、さらに次の支払い金額の入力させる。
毎回釣銭を表示し、支払い後の6種類の硬貨の残り枚数も表示する。
改行のみ入力で終了。
釣銭として渡される硬貨は常に最小枚数になる組み合わせで支払われるものとする。

579デフォルトの名無しさん:2006/01/15(日) 04:12:27
実行例
$ ./pay 4 1 4 1 4 1
input ? 237
支払
1G * 2
5G * 1
10G * 3
100G * 2
釣銭
0
(2 0 1 0 2 1)

input ? 507
支払
1G * 2
50G * 1
500G * 1
釣銭
5G * 1
10G * 4
(1 4 0 0 2 0)

input ?
終了

[3] 環境
 [3.1] OS: 問わず
 [3.2] コンパイラ: gcc
 [3.3] 言語: C/C++
[4] 期限: 2006 1/16 17:00までです。よろしくおねがいします。
580デフォルトの名無しさん:2006/01/15(日) 04:19:23
正誤表

動作要件
誤 支払い金額の入力に応じて支払い方法を提示後、さらに次の支払い金額の入力させる
正 支払い金額の入力に応じて支払い方法を提示後、さらに次の支払い金額を入力させる。

釣銭の条件
誤 釣銭として渡される硬貨は常に最小枚数になる組み合わせで支払われるものとする。
正 釣銭として渡される硬貨は常に最小枚数になる組み合わせで受け取るものとする。

実行例の初期値
誤 $ ./pay 4 1 4 1 4 1
正 $ ./pay 4 1 4 0 4 1
581デフォルトの名無しさん:2006/01/15(日) 04:48:55
>>574
国立大学に入れないほどバカなんですか?w
パソコンとテレビで勉強ほとんどしなかったけど・・・
582デフォルトの名無しさん:2006/01/15(日) 04:53:38
国立っていってもピンからきりまであるからな
583デフォルトの名無しさん:2006/01/15(日) 04:55:05
2流私立に入るくらいなら国立の方がいいけどな。
私立に比べれば授業料安いし。
584デフォルトの名無しさん:2006/01/15(日) 05:04:26
>>582
YOUみたいに国立大学をひがんでるやつってホント頭悪いよね
585デフォルトの名無しさん:2006/01/15(日) 05:10:47
ム板って学歴コンプ多そうだね
586デフォルトの名無しさん:2006/01/15(日) 05:26:19
見苦しいから、学校のネタはそろそろやめておくれ。

ところで、>>578 1,5,15,32Gのヤツはお気に召したのか?
587デフォルトの名無しさん:2006/01/15(日) 05:41:17
抜け道というかなんというか。

サイフの中のコインの枚数を最小にするには、
1)サイフの中のコインを全部支払う
2)受け取るつり銭は>>537のアルゴリズム

セルフのガソリンスタンドでよく私がやる手法だ。
588デフォルトの名無しさん:2006/01/15(日) 05:42:18
>>587
ジュースの自販機にはそれが通用しないやつが多くないか?
589デフォルトの名無しさん:2006/01/15(日) 06:03:12
>>576のが一番応用が利くと思うけどO(n)なのが気になるね
まあ32Gしかない国で100000000の支払が発生することはないだろうが
590デフォルトの名無しさん:2006/01/15(日) 06:42:41
そーだねー。>589
f(n) = f(n-定数1) + 定数2ってなってればいいんだけどね。
591デフォルトの名無しさん:2006/01/15(日) 07:48:46
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
2つの文字列を入力し、1つの文字列に結合した後、結合した文字列を出力するプログラムを作りなさい。
但し、2つの文字型ポインタs,tを引数として、tの指す文字列(ヌル文字までの文字データ)を
sの指す文字列の最後(ヌル文字の位置)以後に複写する関数(mycat)を作り、main関数では
その関数を呼び出すようにしなさい。
[3] 環境
 [3.1] OS:LINUX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2006.01.16
[5] その他の制限:なるべく平易なコードでお願いします・・。
よろしくおねがいします
592デフォルトの名無しさん:2006/01/15(日) 08:13:23
char *mycat(char *s, const char *t) {char *r = s; while(*s) s++; while(*s++ = *t++); return r;}
593デフォルトの名無しさん:2006/01/15(日) 08:19:17
mainがありません
594535:2006/01/15(日) 08:25:27
>>586
578は私ではないです。

>>589
確認はしていませんがリングバッファを利用したDPになっているので正しいでしょう、
最大が100000000GなのでO(n)で十分というかこれより良いオーダーは無いと思います。
595デフォルトの名無しさん:2006/01/15(日) 08:30:38
>>593
mainくらい自分で書けるだろ。
関数呼ぶだけなんだから。
596デフォルトの名無しさん:2006/01/15(日) 08:37:42
両替機を持って歩けばいいじゃないか
597デフォルトの名無しさん:2006/01/15(日) 08:44:14
最初に480で割って、その余りだけで計算していいんじゃね?
598デフォルトの名無しさん:2006/01/15(日) 09:01:57
#include <stdio.h>
void mycat(char* s,char* t)
{
for(;*s;s++);
for(;*t;t++){
*s=*t;
s++;
}
return;
}
int main(void)
{
char a[80]="abc";
char b[]="def";
mycat(a,b);
printf("%s",a);
return 0;
}
599535:2006/01/15(日) 09:10:44
>>597
その方法では
483=32*15+1*3で18枚になりますが、
483=32*14+15*2+5*1の17枚での支払いが存在するので間違いです
600デフォルトの名無しさん:2006/01/15(日) 09:25:27
[1] 授業単元、プログラミングT
[2] 問題文、
文字色を変換する方法を用いて、
フランス国旗を「文字の色」で画面に表示するプログラムを作成せよ。
ヒント:
文字の表示色を変えるには以下の関数を用いる。
プロトタイプ宣言を忘れないこと
void color(int n)
{
if(n<0 || 7<n)
return;
printf(“\33[3%dm”,n);
}
☆main() で1行分文字を出力し、適当な回数ループさせる。

[3] 環境
 [3.1] OS、Windows98
 [3.2] borland C++
 [3.3] 言語:C++
[4] 期限:明日まで。
わかる方がいましたらよろしくお願いします。
601デフォルトの名無しさん:2006/01/15(日) 09:45:16
>>600
borland C++ のバージョンは?
602デフォルトの名無しさん:2006/01/15(日) 10:10:37
コンソールAPIとかC/C++なのか
603デフォルトの名無しさん:2006/01/15(日) 10:23:14
>>535
あのさぁ、どういうプログラムを作るのかぐらいは自分で考えるか他で聞いてからにしろよ
数学とか理科はここでやるんじゃないんだから
604529:2006/01/15(日) 11:02:21
お願いします。
605デフォルトの名無しさん:2006/01/15(日) 11:09:34
[1] 授業単元:プログラミングB
[2] 問題文(含コード&リンク):
構造体の配列を用いて、5人分の氏名、学籍番号、点数を記録せよ。
(まだ続くのですが、ここまでをお願いします・・・)

< 構造体の例 >
struct student{
char name[50], id[20];
int score;
};
< 実行例 >
Name? Tanaka (fgets と sscanf によって5人分のデータを入力する)
ID? 103
Score? 80
 
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月18日まで

どうかお手柔らかにお願いします
606デフォルトの名無しさん:2006/01/15(日) 11:12:08
>>600
XPとかのDOS窓ではエスケープシーケンス使えないよ
607212 ◆mL2ZRk1cK. :2006/01/15(日) 11:25:14
すみません、やはり多倍長の定義というのがよく分からなかったのですが
足し算はfanction_add(fb_int, fb_int);で定義されて
fnction_add(a,b);でa+bの多倍長型の値が返ってきます。
ビットシフトはfanction_sift(fb_int*, int);で定義されて
fanction_sift(a,b);でaをbビットシフトできます。
bの値が正なら右シフト、負なら左シフトです。

527さんのプログラムについてですが、if(r&1)というのがよくわかりません。
rと1のビット毎の論理積で、1が立っていればif内の処理をやるのだと思うのですが
内部でやってることが理解できてません。
例えばrが1101の場合、1=(0001)との論理積をとると、rの最下位ビットから
見ていく、という考えで合っているでしょうか?。
言葉足らず、稚拙な説明で申し訳ありません。
608535:2006/01/15(日) 11:56:34
>>603
このスレは"書きかた"は教えられるけど
"解きかた"は教えられないということですか?
609デフォルトの名無しさん:2006/01/15(日) 12:06:39
>>607
あとは
・定数の設定関数(a=1みたいなことができるやつ)
・論理積を取る関数(a&1)
・乗算(a=b*c)
かな。指数に負の数があることも考えると除算も必要かも。
610デフォルトの名無しさん:2006/01/15(日) 12:09:19
多倍長整数なのかなぁ?
611デフォルトの名無しさん:2006/01/15(日) 12:18:53
fb_intって型だから整数だと思う。
612デフォルトの名無しさん:2006/01/15(日) 12:24:04
>>607
面倒だから
多倍長型についての演算子のオーバーロードでもしろよ
+ / * - = のオーバーロードさえ出来きれば何でも出来るだろ
613212 ◆mL2ZRk1cK. :2006/01/15(日) 12:26:19
a = fanction_set(A);でint型のAがfb_int型のaに入ります。
乗算はfanction_mul(fb_int, fb_int);で定義されて
fanction_mul(a, b);でa×bの値がfb_int型で返ってきます。
論理積を取る関数はよくわからないのですがビット計算に
fanction_bitand(a, b)というのがありました。
多分これだと思います。定義はfanction_bitor(fb_int , fb_int)です。
除算はfanction_div(a, b);です。
614デフォルトの名無しさん:2006/01/15(日) 12:47:38
整数の範囲の範囲で考えるなら、あれだな。
指数は負では分数になってしまうから、非負だな。
function_iszero()ってのは、こっちの想像で書いている。
値がゼロだったら、真を返す関数があると思うので、それに置き換えてくれ。
(ひょっとしたら、比較するだけのcompare()かもしれんが・・・その辺はてきとーに)

fb_int function_exp(fb_int a, fb_int r)
{
fb_int b = function_set(1);
fb_int mask = function_set(1);
while (function_iszero(r)) {
if (!function_iszero(function_bitand(r, mask))) {
b = function_mul(b, a);
}
a = function_mul(a, a);
}
return b;
}
615デフォルトの名無しさん:2006/01/15(日) 13:29:15
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
次のように、一行に日付とその日の最高気温、最低気温が記録されたファイル(ファイル名:temp.dat)があるとする。
1 10.0 30.0
2 12.1 28.8
3 11.3 25.2
4 10.5 27.4
5 13.1 28.0
このファイルを読み込んでファイルの中での最高気温が最も高い日の日付と最高気温、
同様に最も低い最低気温をその日付を表示するプログラムを表示せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2006年1月17日
[5] その他の制限:なし

よろしくお願いします。
616デフォルトの名無しさん:2006/01/15(日) 13:40:04
既視感がする。ファイルの読み込みはリダイレクト(リダイレクション)
#include <stdio.h>
int main(void)
{
int day, mind, maxd;
double min, max, minm, maxm;
if (scanf("%d %lf %lf", &mind, &minm, &maxm) != 3)
exit(1);
maxd = mind;
while (scanf("%d %lf %lf", &day, &min, &max) == 3) {
if (minm > min) {
minm = min;
mind = day;
}
if (maxm < max) {
maxm = max;
maxd = day;
}
}
printf("min %d %f, max %d %f\n", mind, minm, maxd, maxm);
return 0;
}
617212 ◆mL2ZRk1cK. :2006/01/15(日) 13:55:11
多倍長の2進展開(符号なし)プログラムできました!
みなさんありがとうございます!

これから614さんのプログラムを組み込んで符号付の方を
完成させたいと思います。
また後ほど報告いたします。
618615:2006/01/15(日) 14:06:46
>>616
ありがとうございました
ただ、temp.datを使って表せないでしょうか
テンプレ不備すいません
619600:2006/01/15(日) 14:13:51
>>601さん
最新のものだと思います。
>>606さん
すみません、どういうことでしょうか?TT
620デフォルトの名無しさん:2006/01/15(日) 14:32:37
こいつもうだめだ

文字を色付きで出力する手段
エスケープシーケンス
各種方言の関数
コンソールAPI
621デフォルトの名無しさん:2006/01/15(日) 14:34:51
>>618 次のよーに実行する。
$ a.out <temp.dat

プログラム内でファイルをオープンさせろってんだったら、自分で直してちょ。
fopen(), fclose(), fscanf(), fprintf()っての使えばなんとかなるから。
622600:2006/01/15(日) 14:40:00
XPではこの課題はできないということなのでしょうか?
623デフォルトの名無しさん:2006/01/15(日) 14:43:51
XP エスケープシーケンス でぐぐってみるとだな・・・
624600:2006/01/15(日) 14:50:38
>>623さん
アドバイスありがとうございます、全部は理解できないもののある程度
わかりました、今は自宅のPCですが明日の授業の際にソースファイルを学校に
持って行き学校のPCで実行したいと思います。
肝心の課題自体がわからないので、どなたかわかる方いましたらよろしくお願いします。
625デフォルトの名無しさん:2006/01/15(日) 15:01:58
626デフォルトの名無しさん:2006/01/15(日) 15:16:58
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
ポインタを使って、
配列の中に保存されている整数の最大のものとその要素番号とを
出力するプログラムを作りなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月16日18:00まで
[5] その他の制限: よろしくおねがいします。
627デフォルトの名無しさん:2006/01/15(日) 15:20:01
>>621
>自分で直してちょ。
そこをなんとか。。。
628デフォルトの名無しさん:2006/01/15(日) 15:20:49
long __stdcall GetStdHandle(long);
long __stdcall SetConsoleTextAttribute(long, long);
long __stdcall SetConsoleCursorPosition(long, long);
typedef enum {
black, dblue, dgreen, dcyan, dred, dmagenta, dyellow, gray,
dgray, blue, green, cyan, red, magenta, yellow, white,
} color;
void cursor(long h, int y, int x)
{
SetConsoleCursorPosition(h, (y << 16) | (x & 0x0000FFFF));
}
void conattr(long h, char bg, char fg)
{
SetConsoleTextAttribute(h, (bg << 4) | (fg & 0x0F));
}
void cls(long h, int t, int b, int l, int r, char c)
{
int i, j;
for(j = t; j < b; j++) for(i = l; i < r; i++) cursor(h, j, i), putch(c);
}
void beep(void)
{
putch('\a');
}
629621とは別人:2006/01/15(日) 15:23:39
>>627
>if (scanf("%d %lf %lf", &mind, &minm, &maxm) != 3)
FILE *fp;
fp=fopen("temp.dat", "r");
if (fscanf(fp, "%d %lf %lf", &mind, &minm, &maxm) != 3)

>while (scanf("%d %lf %lf", &day, &min, &max) == 3) {
while (fscanf(fp, "%d %lf %lf", &day, &min, &max) == 3) {

この程度変えればできるはず。
630デフォルトの名無しさん:2006/01/15(日) 15:27:43
>>626
#include <stdio.h>
int main(void)
{
int array[] = {1134,14146,2435,123,61,1234,12513,2462};
int n, i, max, maxi;
n = sizeof(array) / sizeof(array[0]); // 要素数。sizeof知らなければn=9みたいに自分で設定しなさい。
max = array[0];
maxi = 0;
for( i = 1 ; i < n ; i++ ) {
if( array[i] > max ) {
max = array[i];
maxi = i;
}
}
printf("array[%d] が最高値 %d を取るナリ\n", maxi, max);
return 0;
}
631デフォルトの名無しさん:2006/01/15(日) 15:30:14
>>629
何度もありがとうございました。
632デフォルトの名無しさん:2006/01/15(日) 15:30:52
>>600 適当だけどこんなのでいいのかね。
#include <stdio.h>
void color(int);

int main(){
int i;
for (i = 0; i < 3; i++){
color(4); printf("FR");
color(7); printf("AN");
color(3); printf("CE\n");
}
color(7);
return 0;
}

void color(int n)
{
if(n<0 || 7<n) return;
printf("\33[3%dm",n);
}
633デフォルトの名無しさん:2006/01/15(日) 15:34:40
>>630
>[2] 問題文(含コード&リンク):
>ポインタを使って、
634デフォルトの名無しさん:2006/01/15(日) 15:39:59
maxiが分かってるんだからmaxは記憶しなくて良いような
635デフォルトの名無しさん:2006/01/15(日) 16:07:27
[1] 授業単元:プログラミングB
[2] 問題文(含コード&リンク):
構造体の配列を用いて、5人分の氏名、学籍番号、点数を記録せよ。
(まだ続くのですが、ここまでをお願いします・・・)

< 構造体の例 >
struct student{
char name[50], id[20];
int score;
};
< 実行例 >
Name? Tanaka (fgets と sscanf によって5人分のデータを入力する)
ID? 103
Score? 80
 
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月18日まで

どうかお手柔らかにお願いします
636529:2006/01/15(日) 16:22:44
529ですが、期限が明後日まででした。自分で考えてみたのですがわかりません。
表の横の駅名の表示すらうまくいきません
637デフォルトの名無しさん:2006/01/15(日) 17:20:50
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
#include<stdio.h>
#include<string.h>
int nagasa(char*);
void main()
{
int n1;
static char moji1[20];
gets(moji1);
n1=nagasa(moji1);
printf("文字列1の文字数=%d\n",n1);
return;
}
int x=0;
while(*retu!='\0')
{printf("文字数列1の文字=%c\n",*retu);
x++;
retu++;}
return x;

で、while(*retu!='\0')の部分が間違っているみたいです。。

3] 環境 [
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2006.01.14
よろしくお願いします。
638デフォルトの名無しさん:2006/01/15(日) 17:23:17
>>637
もう期限すぎてるよ。どんまい。
639デフォルトの名無しさん:2006/01/15(日) 17:24:39
>>637
whileじゃなくて関数が間違ってる

#include<stdio.h>
#include<string.h>
int nagasa(char*);
void main()
{
int n1;
static char moji1[20];
gets(moji1);
n1=nagasa(moji1);
printf("文字列1の文字数=%d\n",n1);
return;
}

int nagasa(char* retu)
{
int x=0;
while(*retu!='\0') {
printf("文字数列1の文字=%c\n",*retu);
x++;
retu++;
}
return x;
}
640637:2006/01/15(日) 17:41:59
ありがとぽっぽです!!
641117:2006/01/15(日) 17:44:22
>>117の(2)ですが改めて自分で考えてみましたがうまくできませんでした。
どなたか宜しくお願いします。
642デフォルトの名無しさん:2006/01/15(日) 18:19:37
[1] 授業単元:プログラミングI
[2] 問題文:下記の行列の積を求めるプログラムを作れ。
 (123)(123)
 (456)(456)
      (789)
[3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 分らない
 [3.3] 言語: C
[4] 期限: 2006年1月16日まで
[5] その他の制限: 超初心者です。。。
643デフォルトの名無しさん:2006/01/15(日) 18:21:19
>>529
http://www.borujoa.org/upload/source/upload4319.c
とりあえず表だけ。でかいのでa.txtとして出力するようにした
644デフォルトの名無しさん:2006/01/15(日) 18:29:50
>>643
どうもありがとうございます。
645デフォルトの名無しさん:2006/01/15(日) 18:36:54
>>642
(゚Д゚)ノ ァィ
#include<stdio.h>
int main(void){
int mat1[2][3]={{1,2,3},{4,5,6}},mat2[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j,k,s;
for(i=0;i<2;i++){
for(j=0;j<3;j++){
s = 0;
for(k=0;k<3;k++)
s += mat1[i][k]*mat2[k][j];
printf("%d ",s);
}
puts("");
}
return 0;
}
646デフォルトの名無しさん:2006/01/15(日) 18:46:32
>>641 ミスってるかもしれんが、質問は受け付けない。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
double avg(const void *p) { double a, b, c; sscanf((char *)
p, "%*s%lf%lf%lf", &a, &b, &c);return (a + b + c) / 3; }
int cmp(const void *a, const void *b) {if (avg(a) < avg(b))
return -1; if (avg(a) == avg(b)) return 0;return 1; }
char data[100][100]; int n; void load(FILE * fp) {for (n = 0;
n < 100 && fgets(data[n], 100, fp); n++) ; } char *chomp(char
s) {size_t len = strlen(s); if (len > 0 && s[len-1] == '\n')
s[len-1] = 0; return s;} void print(void) { int i; printf(
"%s", data[0]);for (i = 1; i < n; i++) printf("%s %f\n"
, chomp(data[i]), avg(data[i])); }int main(void) {load(stdin)
;
qsort(data[1], n - 1, 100, cmp); print(); return 0;}
647デフォルトの名無しさん:2006/01/15(日) 18:56:02
[1] 授業単元:プログラミング演習
[2] 問題文 ・日本のある都市の東経を入力し、明石市(東経135度)
の標準時間とのずれを計算するプログラムを、関数を用いて作れ
[3] 環境
 [3.1] OS: (Windows xp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: (C++
[4] 期限: 2006年1月16日24h
[5] その他の制限:
 できないんでお願いします
648デフォルトの名無しさん:2006/01/15(日) 19:00:14
俺はC++ができませんヽ(´ー`)ノ
649デフォルトの名無しさん:2006/01/15(日) 19:03:24
同じく。<C++
650デフォルトの名無しさん:2006/01/15(日) 19:04:56
拡張子だけcppにしとけばばれなくね?
651デフォルトの名無しさん:2006/01/15(日) 19:08:38
関数()を作った後で class ほにゃらら{ } でくくる
main() で ぺけぺけ = new ほにゃらら(); ぺけぺけ.関数(); ってする

でいいんじゃねの?
652デフォルトの名無しさん:2006/01/15(日) 19:11:00
あれ?なんかJavaと似てるな
653デフォルトの名無しさん:2006/01/15(日) 19:11:03
>>651
そんなことをしなくてもstd::cinとstd::coutとstd::stringを使えば十分だと思う。
654デフォルトの名無しさん:2006/01/15(日) 19:13:17
"::"はよくわからん
655デフォルトの名無しさん:2006/01/15(日) 19:15:07
んー。scanf()/printf()でバレバレ・・・。

C++はやりづらいんだわ・・・。
#include <iostream>
std::cin >> hogehoge;

#include <iostream>
using namespace std;
cin >> hogehoge;

#iinclude <iostream.h>
cin >> hogehoge;

教科書や授業でどの流儀を使ってるかわからんからなぁ・・・。
STL使っていいものかどうかも悩む。
std::stringなんてつかわんで、自作文字列クラスとか・・
656デフォルトの名無しさん:2006/01/15(日) 19:21:08
>>655
1番最後は規格外なので逝ってよし。
657デフォルトの名無しさん:2006/01/15(日) 19:21:18
STLはさすがに範囲内じゃないの。標準ライブラリだし。
658デフォルトの名無しさん:2006/01/15(日) 19:22:17
>>641
ボクも作ってみた
プログラムド素人なので間違ってるかも('A`)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1470.txt
659デフォルトの名無しさん:2006/01/15(日) 19:29:56
>>647
日本国内の時刻はどこも同じでは
というツッコミはなしですか
660zoo:2006/01/15(日) 19:30:02
う〜ん。お金関係のことについては全く分からないな・・・。
既存組織とプロジェクトマネジメントの違いを比較して論じよ。
比較してか。ど素人だから意味不明・・・
661デフォルトの名無しさん:2006/01/15(日) 19:30:35
>>659
足し蟹
662600:2006/01/15(日) 19:34:09
>>632さん
ありがとうございます、すごく助かりました^^

XPでエスケープシーケンスを設定?してみようと思うのですが、ググった
サイト等ではいまいちわかりませんでした、環境変数のところでやるのでしょうか?
663デフォルトの名無しさん:2006/01/15(日) 19:37:36
#include <stdio.h>
int main(void)
{
float ne;
scanf("%f", &ne);
printf("%f 秒\n", 24 * 3600 * (ne - 135.0) / 360);
return 0;
}
664デフォルトの名無しさん:2006/01/15(日) 19:38:14
665600:2006/01/15(日) 19:42:54
>>628さんのは私に対してのレスなのですか??
難しすぎてちょっとわからないのですが^^;
666デフォルトの名無しさん:2006/01/15(日) 19:45:12
>>656 VC6とか書かれてると、一番下の書き方がいいのかも? と思ってしまう。
667デフォルトの名無しさん:2006/01/15(日) 19:57:12
[1] 授業単元:プログラミング入門
[2] 問題文:ポーランド電卓プログラムで、数値の先頭に「0x」が
あるときだけ16進数として読み取るようにしなさい。
(例: 11 0x11 +   = 28)
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:2006年01月16日AM7:00まで
[5] その他の制限:
ポーランド電卓のプログラムはできたのですが、数値の先頭に「0x」が
あるときだけ16進数として読み取る。というのができません。
よろしくお願いします。
668デフォルトの名無しさん:2006/01/15(日) 19:57:29
[1] 授業単元:プログラミング基礎
[2] 問題文:下の3問です
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年1月20日まで

何も解らず、丸投げでスミマセン...どうかよろしくお願いします。


(1) 標準入力から50個の実数を読み込み,降順に整列させた結果を印刷する
プログラムを作成しなさい。

(2) 標準入力から英語の文を読んで,大文字はすべて小文字に直し,
それ以外の文字はそのまま出力するプログラムを作成しなさい。
例:入力=[A Happy New Year!] 出力=[a happy new year!]

(3) 試験の得点(int型)を引数として受け取り,それが「80〜100なら4」を,
「60〜79なら3」を,「40〜59なら2」を,「0〜39なら1」を,
「101以上または0未満なら0を関数の値として返す関数を作成しなさい。
例:shiken(65)->3
669デフォルトの名無しさん:2006/01/15(日) 20:03:24
670デフォルトの名無しさん:2006/01/15(日) 20:14:00
>>668 (2)
#include <stdio.h>
#include <ctype.h>

int main(void){
char str[255], *p = str;
gets(str);
while(*p){
printf("%c", tolower(*p++));
}
return 0;
}
671デフォルトの名無しさん:2006/01/15(日) 20:16:48
>>667 ポーランド電卓のプログラムはできたのですが、
→出来た分だけup
672ごめんなさい:2006/01/15(日) 20:17:24
[1] 授業単元:プログラミング演習
[2] 問題文@n個のデータを入力して、その最大、
最小、中央値を求めよ。ただしnは100までの数とする。
A次のフィボナッチ数列Fnを計算し、Fn≧50となるときの第n項を
出力せよ。
Fn=Fn-2+Fn-1  ただし、F0=0、F1=1
B10文字までの英字を入力して、「入力された英字のそれぞれを
1文字前の英字で表す。」という規則で変換した暗号を出力せよ。
C任意の文字列を入力して、文字を右に数文字ずらした文字列を作成したい
。例えば、「delicate」を右に3文字ずらすと「atedelic」となる。
任意の10文字の文字列と右へずらす数を入力して、新しい文字列の結果
を出力せよ。
[3] 環境
 [3.1] OS: (Windows xp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: (C
[4] 期限: 2006年1月16日24h
[5] その他の制限:
 Cでもお願いします


673デフォルトの名無しさん:2006/01/15(日) 20:18:27
[1] 授業単元:プログラミング演習
[2] 問題文 ・日本のある都市の東経を入力し、明石市(東経135度)
の標準時間とのずれを計算するプログラムを、関数を用いて作れ
[3] 環境
 [3.1] OS: (Windows xp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: (C
[4] 期限: 2006年1月16日24h
[5] その他の制限:
 すんません
674デフォルトの名無しさん:2006/01/15(日) 20:18:46
>>669
ありがとうございます。

Tokyo とTokyoを入れたときに距離が0にならないです。
また例えばTokyo Shizuokaと入力したとき
Shizuoka とShizuokaの距離が0にならないんですが・・・
675デフォルトの名無しさん:2006/01/15(日) 20:20:22
>>668
(1)
#include<stdio.h>
int main(void){
int num[50],i,j,a;
for(i=0;i<50;i++)
scanf("%d",&num[i]);
for(i=0;i<50;i++)
for(j=0;j<49-i;j++)
if(num[j]<num[j+1]){
a = num[j];
num[j] = num[j+1];
num[j+1] = a;
}
for(i=0;i<50;i++)
printf("%d ",num[i]);
puts("");
return 0;
}
676デフォルトの名無しさん:2006/01/15(日) 20:20:32
そーだよなぁ・・・C言語を学ぶのにC++コンパイラ使うんだもんなぁ。
言語のネーミングの話とか、興味ないと混同してしまうかもな。
拡張子(といってもワカランかもしれんが)、を「.c」にしても動くものなら、
それはC言語でかかれているので、心配しないように。
677デフォルトの名無しさん:2006/01/15(日) 20:22:21
double func(double x) {return 0;} /* 日本国内のある経度の自国と明石との時差を返す関数 */
678デフォルトの名無しさん:2006/01/15(日) 20:25:23
>>668
(3)
int shiken(int ten){
if(ten<=100&&ten>=80)return 4;
else if(ten<=79&&ten>=60)return 3;
else if(ten<=59&&ten>=40)return 2;
else if(ten<=39&&ten>=0)return 1;
else return 0;
}
679デフォルトの名無しさん:2006/01/15(日) 20:26:55
>>675
印刷してください(><)
680デフォルトの名無しさん:2006/01/15(日) 20:36:41
なんか、ネタが多い気もするが・・・。
681デフォルトの名無しさん:2006/01/15(日) 20:39:26
>>671
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1472.txt
これです。分割してます。
読みにくくてすみません…。
682デフォルトの名無しさん:2006/01/15(日) 20:40:04
>>672
@
#include<stdio.h>
#define n 100
int main(void){
double num[n],a;
int i,j;
for(i=0;i<n;i++)
scanf("%lf",&num[i]);
for(i=0;i<n;i++)
for(j=0;j<n-i-1;j++)
if(num[j]>num[j+1]){
a = num[j];
num[j] = num[j+1];
num[j+1] = a;
}
if(n%2==0)
a = (num[n/2]+num[(n/2)-1])/2;
else
a = num[(n-1)/2];
printf("最大値:%f\n最小値:%f\n中央値:%f\n",num[0],num[n-1],a);
return 0;
}

>>679
あ、ごめん無理
683デフォルトの名無しさん:2006/01/15(日) 20:45:50
>>672
A
#include<stdio.h>
int F(int);
int F(int n){
if(n==0)return 0;
if(n==1)return 1;
return F(n-1)+F(n-2);
}
int main(void){
int i;
for(i=0;F(i)<=50;i++);
printf("第%d項\n",i);
return 0;
}
684デフォルトの名無しさん:2006/01/15(日) 20:45:54
685デフォルトの名無しさん:2006/01/15(日) 20:50:28
>>672
B
#include<stdio.h>
int main(void){
int c,i=0;
while((c=getchar())!='\n'){
if(i>=10)break;
if(c=='a'||c=='A')
c += 'z'-'a';
else
c -= 1;
printf("%c",c);
i++;
}
return 0;
}
686デフォルトの名無しさん:2006/01/15(日) 20:56:27
>>684
たびたびすいません。2つともTokyo入れるとバグリます
687デフォルトの名無しさん:2006/01/15(日) 21:00:54
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
構造体の配列を用いて、5人分の氏名、学籍番号、点数を記録せよ。
(まだ続くのですが、ここまでをお願いします・・・)

< 構造体の例 >
struct student{
char name[50], id[20];
int score;
};
< 実行例 >
Name? Tanaka (fgets と sscanf によって5人分のデータを入力する)
ID? 103
Score? 80
 
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月18日まで

何とぞお手柔らかにお願いします
688デフォルトの名無しさん:2006/01/15(日) 21:02:05
>>672
A
#include <stdio.h>

int fib(int n) {
int a=1, b=1;
while(--n) b=b+a, a=b-a;
return b;
}

int main(void){
int n;
printf("第何項?\n");
scanf("%d", &n);
printf("Fn=%d", fib);
return 0;
}
689デフォルトの名無しさん:2006/01/15(日) 21:03:53
〔課題〕windowsに常駐し、ctrl+oが押されたら使用しているアプリケーション(テキスト編集系ソフトウェアに限る)
にかかわらず「あ」と入力するプログラムを作成せよ
です。

学部で習っていたのはC++ですが、去年の院試験の問題ですのでもしかしたら違う言語を
使うのかも。でも俺自身C++が一番理解できるので皆様よろしくおねがいです。
690デフォルトの名無しさん:2006/01/15(日) 21:07:46
>>672
C#include<stdio.h>
#include<string.h>
int main(void){
char str[11],str2[11];
int n,i;
while(1){
printf("文字列入力(10文字):");
scanf("%s",str);
if(strlen(str)==10)break;
}
printf("何文字ずらす?:");
scanf("%d",&n);
for(i=0;i<10;i++){
if(i+n<10)str2[i+n] = str[i];
else str2[(i+n)%10] = str[i];
}
for(i=0;i<10;i++)
printf("%c",str2[i]);
return 0;
}
691デフォルトの名無しさん:2006/01/15(日) 21:19:01
>>686
修正前のなら確かにおかしくなるけど修正後は動くと思うのだが(´・ω・`)
692デフォルトの名無しさん:2006/01/15(日) 21:20:22
>>687
fgetsってことはファイルあるのか?
それともfgetsを使って標準入力か?
693デフォルトの名無しさん:2006/01/15(日) 21:23:13
>>691
2つとも同じ駅名にすると距離が7.5534534534534e+276みたいになります
694668:2006/01/15(日) 21:24:09
レスが速くてビックリしています、ありがとうございました!!
695デフォルトの名無しさん:2006/01/15(日) 21:24:40
>>692
標準入力の方だと思います
696641:2006/01/15(日) 21:25:12
>>646 >>658
ありがとうございます。助かりました。
697デフォルトの名無しさん:2006/01/15(日) 21:28:25
なんか久々にスレ住人が親切だな
698デフォルトの名無しさん:2006/01/15(日) 21:28:28
[1]授業単元:プログラミング演習
[2]問題文(含コード&リンク):1から10000までの素数をすべて求め、表示するプログラムを作れ。
[3]環境
[3.1]OS:windows
[3.2]コンパイラ名とバージョン:BCC
[3.3]言語:C
[4]期限:1月17日
[5]その他の制限:なし
お願いします。
699デフォルトの名無しさん:2006/01/15(日) 21:30:59
>>698
だから、そういうのはとりあえず素数の求め方は自分で調べるか数学板で聞くかしない?
700デフォルトの名無しさん:2006/01/15(日) 21:31:53
>>673
東経が何度だろうが、日本国内であれば時差は0な訳だが。
とか言っていなくなるのもなんだから、
#include <stdio.h>
int main(void) {
    double east_longitude, diff;
    printf("東経?:"); scanf("%lf", &east_longitude);
    diff = (east_longitude - 135) / 15;
    printf("%d時間%d分", (int)diff, (int)((diff - (int)diff) * 60));
    return 0;
}
701デフォルトの名無しさん:2006/01/15(日) 21:33:05
>>693 プログラムの下のほうにある
//同じ駅の場合
printf("\n駅名:%s 距離%f",station2,0);
の所にブレークポイントをして、同じ名前の時来るか調べて。
まさか printf("\n駅名:%s 距離%f",station2,0.);じゃないよなぁ・・
702デフォルトの名無しさん:2006/01/15(日) 21:34:40
>>695
そうか
じゃ記録ってどこにするの?
ファイル出力?
だとしたらどんな感じで?
703デフォルトの名無しさん:2006/01/15(日) 21:34:56
>>701
ブレークポイントってなんですか?
704デフォルトの名無しさん:2006/01/15(日) 21:36:35
>>701
printf("\n駅名:%s 距離%f",station2,0.);にしたらできました
705デフォルトの名無しさん:2006/01/15(日) 21:38:57
臨界点
706デフォルトの名無しさん:2006/01/15(日) 21:39:38
>>704 ぐはっ、Borlandは自動的に型変換してくれないのか。まぁ動いてよかったです
707デフォルトの名無しさん:2006/01/15(日) 21:40:17
>>706
いろいろありがとうございました。あとは表の表示とか工夫してみます
708デフォルトの名無しさん:2006/01/15(日) 21:43:24
>>702
う〜ん、普通の感じで考えていただければいいと思うんですが・・・
入力は、fgets(),sscanf()
出力は、printf()
って感じで。今は、出力はいいので構造体の入力をどういう風にすればいいのかを教えて欲しいです
709デフォルトの名無しさん:2006/01/15(日) 21:46:53
>>708
入力ですか・・fgetsとsscanf使えだからこんなんでいいのかなぁ?
#include<stdio.h>
typedef struct{
char name[50],id[20];
int score;
}student;
int main(void){
student stu[5];
char test[10];
int i;
for(i=0;i<5;i++){
printf("Name? ");
fgets(stu[i].name,50,stdin);
printf("ID? ");
fgets(stu[i].id,20,stdin);
printf("Score?" );
fgets(test,10,stdin);
sscanf(test,"%d",&stu[i].score);
}
return 0;
}
710デフォルトの名無しさん:2006/01/15(日) 21:48:50
>>698
>>119から引用。総当り。

#include <stdio.h>
int sosu(int n){int i;for(i=2;i<n;i++){if(!(n%i)){return 0;}}return 1;}
int main(){int n,m,cnt;cnt=0;m=10000;for (n=1; n<=m; n++){if (n!=1 && sosu(n)){printf ("%d ", n);cnt++;}};return 0;}
711710:2006/01/15(日) 21:53:49
すまんこ。なんかいろいろムダが。
再うp

#include <stdio.h>
int sosu(int n){int i;for(i=2;i<n;i++){if(!(n%i)){return 0;}}return 1;}
int main(){int n;for(n=2; n<=10000; n++){if(sosu(n)){printf("%d ", n);}}return 0;}
712デフォルトの名無しさん:2006/01/15(日) 21:54:06
>>709
どうもありがとうございます。
fgets() のところにそういう風に入れるんですか!
授業のプリントにそこまで書いてなかったんで・・・
713デフォルトの名無しさん:2006/01/15(日) 21:58:39
>>698
#include<stdio.h>
int main(void){
int table[10000],i,j,k;
for(i=2;i<=10000;i++)
table[i] = 1;
for(i=2;i<=10000;i++){
if(table[i]!=0)
for(j=i*2;j<=10000;j+=i)
table[j] = 0;
}
for(k=0,i=2;i<=10000;i++){
if(table[i]!=0){
if(k>0&&k%10==0)puts("");
printf("%5d ",i);
k++;
}
}
printf("\n素数の数 %d個\n",k);
return 0;
}
714デフォルトの名無しさん:2006/01/15(日) 21:59:35
>>598
>>592
どうもありがとうございます
715デフォルトの名無しさん:2006/01/15(日) 21:59:51
>>698
#include <stdio.h>
#define N (10000)
void sieve_of_eratosthenes(int *integers) {
    int i, notprime;
    for (i = 2; i <= N; i++) integers[i] = 1;
    integers[0] = integers[1] = 0;
    for (i = 2; i <= N / 2; i++) {
        notprime = i;
        while ((notprime += i) <= N) integers[notprime] = 0;
    }
}
int main(void) {
    int i, sieve[N + 1];
    sieve_of_eratosthenes(sieve);
    for (i = 2; i <= N; i++) if (sieve[i]) printf("%5d", i);
    return 0;
}
716デフォルトの名無しさん:2006/01/15(日) 22:00:33
>>712
書いてなかったってことはもしかして違うんじゃないかw
717デフォルトの名無しさん:2006/01/15(日) 22:03:27
>>681 きちんと分かれていたのでちょっとびっくり(失礼)
main()内:atof(s)→strtod(s, NULL)
getop()内:構文チェックが甘くなるけれども、下記を2箇所とも変更
while(isdigit(s[++i] = c = getch()))→while(isalnum(s[++i] = c = getch()))
718デフォルトの名無しさん:2006/01/15(日) 22:05:13
>>716
一応問題文はこんな感じなんですが・・・

構造体の配列を用いて、5人分の氏名、学籍番号、点数を記録し、
新しく入力された点数以上の氏名を出力するプログラムを書け。
(必ず、print_student(struct student s)と言う学生一人分の情報を
 1行に表示する関数を作成し、それを利用して出力を行うこと。)
719デフォルトの名無しさん:2006/01/15(日) 22:16:28
[1] 授業単元:プログラミング1
[2] 問題文:問題1〜3まで
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:わかりません><
 [3.3] 言語:C
[4] 期限:2006年1月23日まで
[5] 期限:チンプンカンプンな為、親切な方何卒お願い致します・・・

問題1
以下のプログラムのprintf文(1)〜(4)の出力結果を答えなさい。

#include <stdio.h>
int main(void)
{
int f(int);
int i,j;
i=10;
printf("%d\n",i); (1)
j=f(i);
printf("%d\n",j); (2)
printf("%d\n",i); (3)
}

int f(int j)
{
int i,s;
s=0;
for(i=1;i<=j;i=i+2)s+=i;
printf("%d\n",i); (4)
return(s);
}
720719:2006/01/15(日) 22:17:32
問題2
以下のプログラムを実行すると5行の出力が得られる。それらの出力
結果を答えなさい。

#include
int main()
{
int n=0;
int taro=5,hana=6;
int sum=taro+hana
printf("%4.1f\n", 3.14159);
printf("%d\n", n++);
printf("%d\n", ++n);
printf("%d\n", sum);
printf("%d\n", sum/n);
721719:2006/01/15(日) 22:18:30
問題3
以下のリストのように定義されたint型の関数leap(int)がある。
この関数に以下の(1)〜(5)の引数を与えたときに返される値を答えなさい。



(1) leap(794);
(2) leap(1192);
(3) leap(1600);
(4) leap(2000);
(5) leap(2003);
(6) leap(2004);

-----リスト -----------------------------------------------
int leap(int y)
{
if (y%4 != 0 || y%100 == 0 && y%400 != 0)
return 0;
else
return 1;
if (y > 2000)
return 3;
else if (y > 1000)
return 4;
else
return 5;
}
------------------------------------------------------------

以上です、よろしくお願いします。
722681:2006/01/15(日) 22:18:50
>>717
ありがとうございます!
逆ポーランドのプログラムは実は丸写しなんできちんとしてましたw
723デフォルトの名無しさん:2006/01/15(日) 22:26:23
>>719

問題1
(1)10
(2)25
(3)10
(4)11

問題2
そのプログラムじゃコンパイルは通らない

問題3
(1) 0
(2) 1
(3) 1
(4) 1
(5) 0
(6) 1
724デフォルトの名無しさん:2006/01/15(日) 22:33:58
>>718
ああ・・・つまり関数は自分で調べろってことだったのでは
ところで構造体の宣言がその教授に習ってないやw
typedef struct{}studentを
struct studentに変えておいて
宣言はstudentからstruct studentに変えておいて
725デフォルトの名無しさん:2006/01/15(日) 22:37:36
>>723
最後に"}"くらい追加してあげてください・・・
726デフォルトの名無しさん:2006/01/15(日) 22:43:02
>>719の問題3(>>721)渋いな。
後半の意味がまったく無い。
727719:2006/01/15(日) 23:09:20
>>723さん
ありがとうございます、記入漏れすみませんでした><

問題2
以下のプログラムを実行すると5行の出力が得られる。それらの出力
結果を答えなさい。

#include
int main()
{
int n=0;
int taro=5,hana=6;
int sum=taro+hana
printf("%4.1f\n", 3.14159);
printf("%d\n", n++);
printf("%d\n", ++n);
printf("%d\n", sum);
printf("%d\n", sum/n);
}

728デフォルトの名無しさん:2006/01/15(日) 23:12:00
>>727
動くようになるまで、間違いはあと2つだ。ガンガレ!
729デフォルトの名無しさん:2006/01/15(日) 23:21:07
5行?・・・俺は4行しか出ないんだが・・・。
a.c:1:10: #include expects "FILENAME" or <FILENAME>
a.c: In function `main':
a.c:7: error: syntax error before "printf"
a.c:8: warning: implicit declaration of function `printf'

まあ・・・なんだ・・・自分でコンパイル&実行するだけの課題なのだから、自分でやろうや。
730デフォルトの名無しさん:2006/01/15(日) 23:25:09
>#include <stdio.h>

>int sum=taro+hana ;

>return 0; ?
731698:2006/01/15(日) 23:36:16
>>710 >>713 >>715
ありがとうございました。
732デフォルトの名無しさん:2006/01/15(日) 23:38:49
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
  速度が64kbpsであるインターネットがある。
  この回線を使って、サイズが n MB(n を入力する)のファイルを
  ダウンロードするのにかかる時間を表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Widows XP
 [3.2] コンパイラ名とバージョン:すみません。わからないです
 [3.3] 言語:C言語
[4] 期限:2006年2月1日

初心者です。どうか宜しくお願いします。
733デフォルトの名無しさん:2006/01/15(日) 23:49:46
>>730
return 0;はなくても動く
734デフォルトの名無しさん:2006/01/15(日) 23:53:31
>>732
(゚Д゚)ノ ァィ
#include<stdio.h>
int main(void){
double n;
printf("何MのDLをお望みで?:");
scanf("%lf",&n);
printf("%f秒ほどかかるかと\n",n*1024/8.0);
return 0;
}
735デフォルトの名無しさん:2006/01/16(月) 00:05:03
すみません、符号付2進展開のプログラムやっていたのですが
最も基本の符号付2進展開すらできません。
符号付2進展開とは-1,0,1で表される展開のことで
7=-1+(2*2*2)→2進表記で(1 0 0 -1)のようにすることです。
符号付2進展開の定義としてN=N(0)+N(1)*2+N(2)*2^2+・・・・+2^rの展開で
N(i)が0でなければN(i+1)=0を満たすものです。

-1がたったビットでは仮数部の逆数をかけるようにしたいです。
int型でもいいのでよろしくお願いします。
問題文: (a^5)×(b^7)×(c^3)の指数部を符号付2進展開して計算。
a,b,cは任意の数を代入。
その他の制限:今回は指数部だけ展開していただければ結構です。
a^5=a×a×a×a×aです。
できれば以下のような仕様ですと助かります。
先にa×b、a×c、b×c、a×b×cを計算しておいて
指数部を読み込み、
0 1 0 1
1 0 0−1
0 1 0−1
------------
上位ビットから見ていき、縦に(0 0 1)なら×a(0 1 0)なら×b、(1 0 0)なら×c、(1 1 0)なら×abの
ようにして(a^5)×(b^7)×(c^3)を一気に計算できるようにしたいです。何度もすみませんがよろしくお願いします。
736212 ◆mL2ZRk1cK. :2006/01/16(月) 00:06:01
名前入れ忘れました、753は私です。
737デフォルトの名無しさん:2006/01/16(月) 00:06:31
753なんてまだ存在しません
738デフォルトの名無しさん:2006/01/16(月) 00:07:33
>>735が何を言ってるかわからない俺は勝ち組
739デフォルトの名無しさん:2006/01/16(月) 00:10:34
>732
通信の遅延、サーバでかかる時間、クライアントで受け取った後の時間、輻輳といったものは含まれてない。
必要に応じて修正せよ。

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

/* assuming tcp/ip on ether */
#define PACKET_HEADER_SIZE (22+20+20)
#define PACKET_CONTENT_SIZE 1460
#define K * 1000
#define Mi * 1024*1024
#define BPS / 8
#define BYTE * 1
#define LINESPEED (64 K BPS)

int main( int narg, const char *args[] ){
 int megbytes;
 long datasize, packets, totalsize;
 double time;

 if( args[1] == 0 ) return;
 megbytes = atoi( args[1] );
 if( megbytes < 0 ) return;

 datasize = megbytes Mi BYTE;
 packets = ceil( datasize / ( double )PACKET_CONTENT_SIZE );
 totalsize = datasize + packets * PACKET_HEADER_SIZE;
 time = (double)totalsize / LINESPEED;

 printf( "%f seconds.\n", time );
}
740212 ◆mL2ZRk1cK. :2006/01/16(月) 00:11:33
すみません、735でした。
環境です。
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
>>735
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C言語
[4] 期限:2006年1月16日
741739:2006/01/16(月) 00:12:09
補足: nはコマンドライン引数で呉れてやってる。
742デフォルトの名無しさん:2006/01/16(月) 00:22:07
>>735 宿題ならテンプレにしたがうこと。
また、1の補数やら、2の補数やらの話ではなさそうなので、
符号付2進展開の解説資料をupするなり、webページを教えるなり。
まあ、そういうことで。
743デフォルトの名無しさん:2006/01/16(月) 00:43:51
==、,-、  、ヽ、 \>   ,,  '''\ _
メ゙ヽ、\ ̄""" ̄--‐   、 \  /ゝ、\
=─‐\\‐  /─'''''ニ二\''' |レレゝゝ、\
 ̄く<<く >, ゙、/<三三二\ ̄\ゝゝゝゝゝゞ''ヽ、       / ̄ ̄ ̄ ̄ ̄
<<<<〈__入 ゙、く彡三三三二ヽくゝ\メメメゝ、_ゝ、\     | さあ質問を言え
くく<<<<<< ゙、 ゙、ミ三三二ニ─ゝゝゝゝゝ,,,,,,,、 '( ゙''ヽ、ヽ、   < どんな質問も何度でも
くくくくくく彡‐ヽ ゙、ミ三三二ニ'''くくゝゝ_ゝゝ、\\_,>」ノ,    | スルーしてやろう・・・
く く く く く 彡゙、゙、三三二ニ‐くゝ、/ ,,,,,,,,メメゝヽ''''"ゝゞ丶、  \_____
二─二二彡彡、゙、三三二==くメゝ/   ゙'ヽ、メゝゝゝゝゝゝゞ''ヽ-、,,,,,,_
‐'''" ̄ \彡彡ミ、゙、三二=''"く<メ/::      \''-、メメゝゝゝ_ゝ 、 ,,、ヽヽ
、  ,,,,- ゙彡//ヾ、三二= くゝ/:::....      \>∠レ-,-‐ニ二メヽ''ヽ ノ
 ゙ヽ、,,,-‐//_///,,、゙、三二=  ゙、 ""'''      ヽ>//レレヽ,,___  /
-,,,,,,-‐'''"""/////,,ヽ ゙、三二─ ゙ヽ.         //-ヘヘ,、 レレレレノ
''"      ,l|"////ノ,、\彡'''''‐-ニ,、 ::::::::::,,,,,,,,//    ゙ヽフ/|/| レ'
      /ゝ、/ヽ|ヽレ,,゙ヽ、゙''ヽ、,,,,,,_ヽ''ニ='',,-'"、─-,,,,,_   ̄"'ノ
     /メ / レ/,''"へへべ''─---- ̄-メヽ"ゝゞゝヽ、  >---''"
    /ヘヘ、|//ヘヘヘヘヘヘヘヘ,,-イ ̄ | ̄"'''-ニニニ二-''"
   /ヘヘ∧/./フヘヘヘヘヘヘヘ,/イ  /  /   /    ゙ノ\、\
   /ゝゝ| / /メヘヘヘヘヘヘ/'" |  /  /  /    /  \\
  /ゝ /|‐/ /フヘへヘヘヘ/∧  /-'"-'''"__,,-''"    /     /、\
 //|_| /./へへへヘヘ、// |/      \_,,,,-‐'"    /  ゙、.゙、
'"/ヽ"/'"へへヘヘヘヘ//  ノ          \    ,,,,-‐'"    ゙、゙、
.ノ //へへヘヘヘヘ//ヽ ./            ゙、''""      ,,/、゙、
/-"へへヘヘヘヘヘ//  |‐"              \_,,,,,,,,-‐'''"   | |
へへへへヘヘヘヘ//ヽ ノ                ゙,         | |
744デフォルトの名無しさん:2006/01/16(月) 00:48:58
>>743
クリリンは六星球じゃないんですか?
745デフォルトの名無しさん:2006/01/16(月) 01:05:17
>743
チチは感度抜群って本当ですか?
746デフォルトの名無しさん:2006/01/16(月) 01:13:41
==、,-、  、ヽ、 \>   ,,  '''\ _
メ゙ヽ、\ ̄""" ̄--‐   、 \  /ゝ、\
=─‐\\‐  /─'''''ニ二\''' |レレゝゝ、\
 ̄く<<く >, ゙、/<三三二\ ̄\ゝゝゝゝゝゞ''ヽ、       / ̄ ̄ ̄ ̄ ̄
<<<<〈__入 ゙、く彡三三三二ヽくゝ\メメメゝ、_ゝ、\     |
くく<<<<<< ゙、 ゙、ミ三三二ニ─ゝゝゝゝゝ,,,,,,,、 '( ゙''ヽ、ヽ、   <   スルー
くくくくくく彡‐ヽ ゙、ミ三三二ニ'''くくゝゝ_ゝゝ、\\_,>」ノ,    |
く く く く く 彡゙、゙、三三二ニ‐くゝ、/ ,,,,,,,,メメゝヽ''''"ゝゞ丶、  \_____
二─二二彡彡、゙、三三二==くメゝ/   ゙'ヽ、メゝゝゝゝゝゝゞ''ヽ-、,,,,,,_
‐'''" ̄ \彡彡ミ、゙、三二=''"く<メ/::      \''-、メメゝゝゝ_ゝ 、 ,,、ヽヽ
、  ,,,,- ゙彡//ヾ、三二= くゝ/:::....      \>∠レ-,-‐ニ二メヽ''ヽ ノ
 ゙ヽ、,,,-‐//_///,,、゙、三二=  ゙、 ""'''      ヽ>//レレヽ,,___  /
-,,,,,,-‐'''"""/////,,ヽ ゙、三二─ ゙ヽ.         //-ヘヘ,、 レレレレノ
''"      ,l|"////ノ,、\彡'''''‐-ニ,、 ::::::::::,,,,,,,,//    ゙ヽフ/|/| レ'
      /ゝ、/ヽ|ヽレ,,゙ヽ、゙''ヽ、,,,,,,_ヽ''ニ='',,-'"、─-,,,,,_   ̄"'ノ
     /メ / レ/,''"へへべ''─---- ̄-メヽ"ゝゞゝヽ、  >---''"
    /ヘヘ、|//ヘヘヘヘヘヘヘヘ,,-イ ̄ | ̄"'''-ニニニ二-''"
   /ヘヘ∧/./フヘヘヘヘヘヘヘ,/イ  /  /   /    ゙ノ\、\
   /ゝゝ| / /メヘヘヘヘヘヘ/'" |  /  /  /    /  \\
  /ゝ /|‐/ /フヘへヘヘヘ/∧  /-'"-'''"__,,-''"    /     /、\
 //|_| /./へへへヘヘ、// |/      \_,,,,-‐'"    /  ゙、.゙、
'"/ヽ"/'"へへヘヘヘヘ//  ノ          \    ,,,,-‐'"    ゙、゙、
.ノ //へへヘヘヘヘ//ヽ ./            ゙、''""      ,,/、゙、
/-"へへヘヘヘヘヘ//  |‐"              \_,,,,,,,,-‐'''"   | |
へへへへヘヘヘヘ//ヽ ノ                ゙,         | |
747デフォルトの名無しさん:2006/01/16(月) 01:17:29
>>746
どうしてプリンセス・メグはNECを止めたんですか?
748デフォルトの名無しさん:2006/01/16(月) 01:22:13
>>747
処女のアイドルを教えてください
749デフォルトの名無しさん:2006/01/16(月) 01:29:32
==、,-、  、ヽ、 \>   ,,  '''\ _
メ゙ヽ、\ ̄""" ̄--‐   、 \  /ゝ、\
=─‐\\‐  /─'''''ニ二\''' |レレゝゝ、\
 ̄く<<く >, ゙、/<三三二\ ̄\ゝゝゝゝゝゞ''ヽ、       / ̄ ̄ ̄ ̄ ̄
<<<<〈__入 ゙、く彡三三三二ヽくゝ\メメメゝ、_ゝ、\     |
くく<<<<<< ゙、 ゙、ミ三三二ニ─ゝゝゝゝゝ,,,,,,,、 '( ゙''ヽ、ヽ、   <   スルー
くくくくくく彡‐ヽ ゙、ミ三三二ニ'''くくゝゝ_ゝゝ、\\_,>」ノ,    |
く く く く く 彡゙、゙、三三二ニ‐くゝ、/ ,,,,,,,,メメゝヽ''''"ゝゞ丶、  \_____
二─二二彡彡、゙、三三二==くメゝ/   ゙'ヽ、メゝゝゝゝゝゝゞ''ヽ-、,,,,,,_
‐'''" ̄ \彡彡ミ、゙、三二=''"く<メ/::      \''-、メメゝゝゝ_ゝ 、 ,,、ヽヽ
、  ,,,,- ゙彡//ヾ、三二= くゝ/:::....      \>∠レ-,-‐ニ二メヽ''ヽ ノ
 ゙ヽ、,,,-‐//_///,,、゙、三二=  ゙、 ""'''      ヽ>//レレヽ,,___  /
-,,,,,,-‐'''"""/////,,ヽ ゙、三二─ ゙ヽ.         //-ヘヘ,、 レレレレノ
''"      ,l|"////ノ,、\彡'''''‐-ニ,、 ::::::::::,,,,,,,,//    ゙ヽフ/|/| レ'
      /ゝ、/ヽ|ヽレ,,゙ヽ、゙''ヽ、,,,,,,_ヽ''ニ='',,-'"、─-,,,,,_   ̄"'ノ
     /メ / レ/,''"へへべ''─---- ̄-メヽ"ゝゞゝヽ、  >---''"
    /ヘヘ、|//ヘヘヘヘヘヘヘヘ,,-イ ̄ | ̄"'''-ニニニ二-''"
   /ヘヘ∧/./フヘヘヘヘヘヘヘ,/イ  /  /   /    ゙ノ\、\
   /ゝゝ| / /メヘヘヘヘヘヘ/'" |  /  /  /    /  \\
  /ゝ /|‐/ /フヘへヘヘヘ/∧  /-'"-'''"__,,-''"    /     /、\
 //|_| /./へへへヘヘ、// |/      \_,,,,-‐'"    /  ゙、.゙、
'"/ヽ"/'"へへヘヘヘヘ//  ノ          \    ,,,,-‐'"    ゙、゙、
.ノ //へへヘヘヘヘ//ヽ ./            ゙、''""      ,,/、゙、
/-"へへヘヘヘヘヘ//  |‐"              \_,,,,,,,,-‐'''"   | |
へへへへヘヘヘヘ//ヽ ノ                ゙,         | |
750デフォルトの名無しさん:2006/01/16(月) 01:32:55
==、,-、  、ヽ、 \>   ,,  '''\ _
メ゙ヽ、\ ̄""" ̄--‐   、 \  /ゝ、\
=─‐\\‐  /─'''''ニ二\''' |レレゝゝ、\
 ̄く<<く >, ゙、/<三三二\ ̄\ゝゝゝゝゝゞ''ヽ、       / ̄ ̄ ̄ ̄ ̄
<<<<〈__入 ゙、く彡三三三二ヽくゝ\メメメゝ、_ゝ、\     |
くく<<<<<< ゙、 ゙、ミ三三二ニ─ゝゝゝゝゝ,,,,,,,、 '( ゙''ヽ、ヽ、   <   シースルー
くくくくくく彡‐ヽ ゙、ミ三三二ニ'''くくゝゝ_ゝゝ、\\_,>」ノ,    |
く く く く く 彡゙、゙、三三二ニ‐くゝ、/ ,,,,,,,,メメゝヽ''''"ゝゞ丶、  \_____
二─二二彡彡、゙、三三二==くメゝ/   ゙'ヽ、メゝゝゝゝゝゝゞ''ヽ-、,,,,,,_
‐'''" ̄ \彡彡ミ、゙、三二=''"く<メ/::      \''-、メメゝゝゝ_ゝ 、 ,,、ヽヽ
、  ,,,,- ゙彡//ヾ、三二= くゝ/:::....      \>∠レ-,-‐ニ二メヽ''ヽ ノ
 ゙ヽ、,,,-‐//_///,,、゙、三二=  ゙、 ""'''      ヽ>//レレヽ,,___  /
-,,,,,,-‐'''"""/////,,ヽ ゙、三二─ ゙ヽ.         //-ヘヘ,、 レレレレノ
''"      ,l|"////ノ,、\彡'''''‐-ニ,、 ::::::::::,,,,,,,,//    ゙ヽフ/|/| レ'
      /ゝ、/ヽ|ヽレ,,゙ヽ、゙''ヽ、,,,,,,_ヽ''ニ='',,-'"、─-,,,,,_   ̄"'ノ
     /メ / レ/,''"へへべ''─---- ̄-メヽ"ゝゞゝヽ、  >---''"
    /ヘヘ、|//ヘヘヘヘヘヘヘヘ,,-イ ̄ | ̄"'''-ニニニ二-''"
   /ヘヘ∧/./フヘヘヘヘヘヘヘ,/イ  /  /   /    ゙ノ\、\
   /ゝゝ| / /メヘヘヘヘヘヘ/'" |  /  /  /    /  \\
  /ゝ /|‐/ /フヘへヘヘヘ/∧  /-'"-'''"__,,-''"    /     /、\
 //|_| /./へへへヘヘ、// |/      \_,,,,-‐'"    /  ゙、.゙、
'"/ヽ"/'"へへヘヘヘヘ//  ノ          \    ,,,,-‐'"    ゙、゙、
.ノ //へへヘヘヘヘ//ヽ ./            ゙、''""      ,,/、゙、
/-"へへヘヘヘヘヘ//  |‐"              \_,,,,,,,,-‐'''"   | |
へへへへヘヘヘヘ//ヽ ノ                ゙,         | |
751デフォルトの名無しさん:2006/01/16(月) 01:34:53
宿題無くなったとたんにやる事なくなるなぁ・・・
752デフォルトの名無しさん:2006/01/16(月) 01:48:40
>すみません、符号付2進展開のプログラムやっていたのですが
符号付2進展開ってコトバははじめて聞きました。

>最も基本の符号付2進展開すらできません。
>符号付2進展開とは-1,0,1で表される展開のことで
>7=-1+(2*2*2)→2進表記で(1 0 0 -1)のようにすることです。
そんな表記は初めてみました。
10進数の7を2進数で表記する場合、普通は111となります。
符号付の数を表記する場合、10進数の-7でしたら、2進数ですと-111となります。

>-1がたったビットでは仮数部の逆数をかけるようにしたいです。
>int型でもいいのでよろしくお願いします。
仮数部というのは、不動小数点数の一部を表すときに使う言葉です。ここで使われている意味がわかりません。
それから、過去ログを読むと、そもそも、多倍長整数を扱っていたのですから、逆数は表現できません。
整数の逆数は分数になります(特別に0の逆数はありません)。
int 型でもいいとのことですが、やはり、int型は整数ですので、逆数は表現できません。

と、ここまで、書けばおわかりのように、説明がまったく意味不明です。
753デフォルトの名無しさん:2006/01/16(月) 02:13:47
必死だな
754質問者じゃないよ。:2006/01/16(月) 02:20:07
> >すみません、符号付2進展開のプログラムやっていたのですが
> 符号付2進展開ってコトバははじめて聞きました。
>
> >最も基本の符号付2進展開すらできません。
> >符号付2進展開とは-1,0,1で表される展開のことで
> >7=-1+(2*2*2)→2進表記で(1 0 0 -1)のようにすることです。
> そんな表記は初めてみました。
> 10進数の7を2進数で表記する場合、普通は111となります。
> 符号付の数を表記する場合、10進数の-7でしたら、2進数ですと-111となります。
質問者が言ってる表記はあまり知られてないだろうが、有る。
この点に関しては質問者の説明不足が悪いんだが。

> >-1がたったビットでは仮数部の逆数をかけるようにしたいです。
> >int型でもいいのでよろしくお願いします。
> 仮数部というのは、不動小数点数の一部を表すときに使う言葉です。ここで使われている意味がわかりません。
> それから、過去ログを読むと、そもそも、多倍長整数を扱っていたのですから、逆数は表現できません。
> 整数の逆数は分数になります(特別に0の逆数はありません)。
> int 型でもいいとのことですが、やはり、int型は整数ですので、逆数は表現できません。
仮数部→底 って訂正が正しいんだろう。ついでに「浮」動小数。
関数内で計算中の数を割ればいいじゃん。

> と、ここまで、書けばおわかりのように、説明がまったく意味不明です。
そんなことはない。
755デフォルトの名無しさん:2006/01/16(月) 02:24:18
ここは議論スレではありません
お帰りくださいませ
756デフォルトの名無しさん:2006/01/16(月) 03:11:42
ませ〜
757デフォルトの名無しさん:2006/01/16(月) 03:15:16
今日はもうないな
さて自分の宿題やるか( 'A`)
758デフォルトの名無しさん:2006/01/16(月) 08:18:33
[1] 授業単元:プログラミング演習(c)
[2] 問題文(含コード&リンク):
時間(0以上23以下)を入力し、以下に示す時間に従った挨拶を出力をするプログラムを作成しなさい。
プログラムは0以上24未満の時間が入力されるまで繰り返しなさい。
0-3:Good night
4-11:Good morning
12-16:Good afternoon
17-20:Good evening
21-23:Good night
但し、メッセージを出力する関数内で、以下の文字型ポインタ配列を宣言して使用しなさい。
char *greeting[4] = {
"Good morning",
"Good aftenoon",
"Good evening",
"Good night",
};

main関数内では、その関数を呼び出すようにしなさい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2006.01.17です・・・。
[5] その他の制限: お手柔らかにお願いします。
恥ずかしながら丸投げです・・・。
759デフォルトの名無しさん:2006/01/16(月) 08:40:18
int main()
static const struct {
int begin;
int end;
char * const str;
} greetings[] = {
{0, 3, "Good night"},
{4, 11, "Good morning"},
{12, 16, "Good afternoon"},
{17, 20, "Good evening"},
{21, 23, "Good night"},
};
int hour;
for (;;) {
if (scanf("%d", & hour) != 1) {
return EXIT_FAILURE;
}
for (int ic = 0; ic < sizeof(greetings); ++ic) {
if (hour >= greetings[ic].begin && hour <= greetings[ic].end) {
printf("%s\n", greetings[ic].str);
return EXIT_SUCCESS;
}
}
}
760デフォルトの名無しさん:2006/01/16(月) 10:24:40
1] 授業単元:
[2] 問題文(含コード&リンク):
list<int> 型の要素全ての和を求める関数 int sumlist(list<int>&) を定義して下さい.
#include <iostream>
#include <list>
using namespace std;
int main(){
list<int> lst;
for(int i=0 ; i < 10 ; i++)lst.push_back(i);
cout << "size =" << lst.size() << endl;
for(list<int>::iterator it = lst.begin(); it != lst.end() ; ++it)
cout << *it << ' ';
cout << endl;

for(list<int>::iterator it = lst.begin(); it != lst.end() ;){
if((*it) % 3 == 0){
it = lst.erase(it);
}
else {
++it; } }
for(list<int>::iterator it = lst.begin(); it != lst.end() ; ++it)
cout << *it << ' ';
cout << endl;
return 0;}
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: マイクロソフトビジュアルスタジオ
 [3.3] 言語: C++
[4] 期限: 1月23日
[5] その他の制限:
761デフォルトの名無しさん:2006/01/16(月) 11:34:28
>>760
int sumlist(std::list<int> &anSrc)
{
std::list<int>::iterator iEnd = anSrc.end();
int nResult = 0;

for (std::list<int>::iterator iProc = anSrc.begin();
iProc != iEnd;
++iProc)
{
nResult += *iProc;
}

return nResult;
}

久しぶりにC++書いたから間違ってても白根
コンパイル環境は脳内g++
762デフォルトの名無しさん:2006/01/16(月) 11:38:03
>>735 
>-1,0,1で表される展開のことで
ひょっとしてこれのこと?
http://www.google.co.jp/search?complete=1&hl=ja&c2coff=1&q=%E5%B9%B3%E8%A1%A1%E4%B8%89%E9%80%B2%E6%95%B0
まぁ、アレだ「13枚のコインのうち重さが違うのが1枚(ry」に応用されるやつだ。

#include<stdio.h>
int p3n(int,char []);
int main(int argc ,char **argv)
{
    int i;char s[40];
    for(i=-20;i<20;i++){
        p3n(i,s);printf("%s\n",s);
    }
    return 0;
}
int p3n(int a,char s[])
{
    char t,c[]="zpn";/* z-ero p-positive n-egative */
    int b,j,i=0;
    do{
        b=a%3;
        s[i++]=c[b+(b<0)*3];
        a=a/3+(b==2)-(b==-2);
    }while(a);
    s[i]=0;b=i--/2;
    for(j=0;j<b;j++){
        t=s[j];s[j]=s[i-j];s[i-j]=t;
    }
    return 0;
}
763212 ◆mL2ZRk1cK. :2006/01/16(月) 12:01:59
>>みなさん
色々不備があって申し訳ありませんでした。
符号付2進展開についてはこちらも資料が少なくて手間取っています。
手元にある資料によると定義としてN=N(0)+N(1)*2+N(2)*2^2+・・・・+N(r-1)*2^(r-1)+2^rの展開で
N(i)が0でなければN(i+1)=0を満たすものです。 これしか載っていませんでした。
多分係数をー1、0、1にとった三進展開だと思うのですが・・・
仮数部→底、これは恥ずかしい間違いでした。
764デフォルトの名無しさん:2006/01/16(月) 14:30:26
[1] 授業単元: C演習
[2] 問題文(含コード&リンク):
文字列を入力し、入力した文字数を出力するプログラムを作りなさい。
ただし、文字列の先頭アドレスを因数として、文字列の長さを返す関数(mylen)をつくり、
main関数ではその関数を呼び出すようにしなさい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:今日中に提出
[5] その他の制限: この時期にこんなんできないようじゃオhルといわれましたorz
おねがいします・・・・。
765デフォルトの名無しさん:2006/01/16(月) 14:41:57
>>764
馬鹿な俺にもできたから終わってんな
まぁ、プロが見たらボロ糞言うだろうが、気にするなw
char *mylen(char *str){
int count=0;
while(*str++)count++;
return count;
}
int main(){
〜〜〜〜〜〜〜〜〜
   return 0;
}
766デフォルトの名無しさん:2006/01/16(月) 15:02:11
>>764
wakarimasen
orz
767デフォルトの名無しさん:2006/01/16(月) 15:27:53
>>764

size_t mylen(char String[]) // char *Stringと書いてもいい
{
return strlen(String);// 便利な標準関数だぜ
}

※注
教授にヌッ殺されても責任は取れません
768デフォルトの名無しさん:2006/01/16(月) 15:33:41
むしろ正解じゃまいか
769デフォルトの名無しさん:2006/01/16(月) 15:41:14
>>764
に制限が無い所を見ると>>767はむしろ
忠実かつ見易さ、どちらも大正解だろう
770デフォルトの名無しさん:2006/01/16(月) 15:47:40
>>765
char型のポインタを返すのかint型の値を返すのかはっきりしろYO
って言うのは置いとくとしてだ

どこまでポインタ進める気だw
771デフォルトの名無しさん:2006/01/16(月) 15:57:01
772デフォルトの名無しさん:2006/01/16(月) 16:02:59
>>770
今気づいたし・・・i|l||l|i orz
773デフォルトの名無しさん:2006/01/16(月) 16:10:31
[1] 授業単元:プログラム演習2
[2] 問題文(含コード&リンク): http://making-gold-princessmaki.hp.infoseek.co.jp/last.htm
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: V.C6.0
 [3.3] 言語: C++
[4] 期限: 1週間後ですがテスト期間中なので早めにやってもらえると
嬉しいれす。
774デフォルトの名無しさん:2006/01/16(月) 16:31:42
みんな、明治大学の坂野先生に通報したりしたらだめだよ
775デフォルトの名無しさん:2006/01/16(月) 16:33:37
名城大学の坂野先生にも通報しないでね
776デフォルトの名無しさん:2006/01/16(月) 16:34:20
>>774
今音速でメールで伝えた
777774:2006/01/16(月) 16:36:14
あ、ホントだ。名城だった。
778魚チョコ:2006/01/16(月) 16:44:30
>>776
音速なのかっ ミ ゚ □゚ミ
779デフォルトの名無しさん:2006/01/16(月) 16:45:32
ガビーン!今更消しても遅いか…
780デフォルトの名無しさん:2006/01/16(月) 16:47:07
ガビーンとか久しぶりに聞いたので許してやってくれ。
781デフォルトの名無しさん:2006/01/16(月) 16:53:00
素で送った→時すでに遅し
782デフォルトの名無しさん:2006/01/16(月) 16:54:05
メールの内容は??
783デフォルトの名無しさん:2006/01/16(月) 16:54:06
音速ならまだ届いてない
まだ間に合う!
784デフォルトの名無しさん:2006/01/16(月) 17:08:31
俺が音回線から光回線に変更しといた
785デフォルトの名無しさん:2006/01/16(月) 17:09:08
もう手遅れだよ。今先生からリンクを張ってくれるように
リターン来ちゃった。

でも可愛そうだからそこは無視しておいたよ
786デフォルトの名無しさん:2006/01/16(月) 17:11:15
まぁ、送った所で誰が頼んだのかは調べても分からんから
ここに貼られたソース使わなけりゃ大丈夫じゃね
787デフォルトの名無しさん:2006/01/16(月) 17:17:26
>>785サンクス
でも課題どうしよ
788魚チョコ:2006/01/16(月) 17:18:09
というか >>773 は行数多くなるからここに貼りきれないとおむうんだが…… ミ゚д ゚ ミ
789デフォルトの名無しさん:2006/01/16(月) 17:22:13
最近、魚チヨコ→魚チョコ だった事に気付いた
790デフォルトの名無しさん:2006/01/16(月) 17:28:59
>>787
メアド晒せば誰かがソース送ってくれるかも知れないね。
もしかしたら先生から罠が送られてくるかもしれないが…
791デフォルトの名無しさん:2006/01/16(月) 17:33:16
リンクにソースを載せて教えてくれた人に以前教えてもらったけど
それは面倒をかけるので無理ですかね??
792デフォルトの名無しさん:2006/01/16(月) 18:07:00
>>787
報告&先生へのメールはしていないので安心して下さい。

僕のかわいい嘘ですので・・・。本当に申し訳ない(;´Д`)
793デフォルトの名無しさん:2006/01/16(月) 18:20:22
すいません、下のをCに直してください。

int main4( void )
{
int n; // number of students
int ko, sy, su, ri, ei;

std::cout << "input number of students > ";
std::cin >> n;
int tokuten[n];
for ( int i = 0; i < n; ++i ) {
std::cout << "--- student (" << i << ") ---" << std::endl;
00050: std::cout << "input kokugo
794デフォルトの名無しさん:2006/01/16(月) 18:20:51
だが断る
795デフォルトの名無しさん:2006/01/16(月) 18:21:59
お願いします;;
796デフォルトの名無しさん:2006/01/16(月) 18:28:17
あ、それ書いたの俺だ。
797デフォルトの名無しさん:2006/01/16(月) 18:31:37
>>796
だが断れw
798797:2006/01/16(月) 18:33:32
てゆか C++ って依頼に書いてあったから C++ で書いたんだけど。
次スレから「C++ と C の違いが分からない人は C って書きましょう」
みたいなことテンプレに入れようよ。
799デフォルトの名無しさん:2006/01/16(月) 18:34:37
[1] 授業単元: 数値解析
[2] 問題文:
d^2*f/d*x^2 + d^2*f/d*y^2 = 0
境界条件 f(0,y)=10 f(10,y)=5

上記の偏微分方程式を有限要素法により求めるプログラムの作成。

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


僕にはむずかしいです、よろしくお願いします!!
800デフォルトの名無しさん:2006/01/16(月) 18:35:47
>>798
てゆーかなんで俺を名乗ってるんだ??
801デフォルトの名無しさん:2006/01/16(月) 18:37:39
>>800
あ、番号一つ間違えた。ごめん。
802794:2006/01/16(月) 18:49:52
ごめんなさい

803デフォルトの名無しさん:2006/01/16(月) 18:50:20
>>773よくみたら「プログラムを作る」プログラムかよ。メンドクセ(゚听)
804デフォルトの名無しさん:2006/01/16(月) 18:53:34
>>792ヲイヲイびつくりしたわよ。
めんどくさいのはわかっていますが、改めてお願い申し上げまする
805デフォルトの名無しさん:2006/01/16(月) 18:59:34
>>803
ん、コンパイラもどきを作れってことか。
字句解析、構文解析、意味解析・・・無理だろw
806デフォルトの名無しさん:2006/01/16(月) 19:00:08
なんか依頼者の癖に「めんどくさいのはわかったいますが」とか
たいそうな口の聞き方だな
と思ったかも
807デフォルトの名無しさん:2006/01/16(月) 19:01:52
コンパイラもどき? 入力された内容に従って構造体の定義を出力
するだけだと思う。いや、それでも十分面倒いけどね。
808デフォルトの名無しさん:2006/01/16(月) 19:20:45
[1] 授業単元:プログラミング
[2] 問題文:@nを入力し,100からnまでの整数のうち15の倍数となる
整数を出力するプログラムをfor文またはwhile文を用いて作成せよ
A n円を入力した後,画面に「1・ドル 2・ユーロ 3・ウォン」
と表示され,1,2,3のいずれかの番号を入力すると,
その指定した通貨の額にn円を換算するプログラムを作成せよ。
なお,為替レートは,ネットなどで調べること。
B n人分について国語,社会,数学,理科,英語の5科目の得点を入力し,
n人の平均点の平均を計算した後,その平均より低い平均点を
出力するプログラムを作成せよ。ただし,各科目の変数名を
kok,sya,suu,rik,eigとし,配列名はtokutenとすること。
C 10文字以内の文字列(英字)を入力し,
子音(a,i,u,e,o以外の文字)
を取り除いた文字列を出力するプログラムを作成せよ。
(例:momotarou → ooaou)
D 速度が64kbpsであるインターネットがある.この回線を使って,
サイズが n MB(n を入力する)のファイルをダウンロード
するのにかかる時間を表示するプログラムを作成せよ.
[3] 環境
 [3.1] OS:xp
 [3.2] コンパイラ名とバージョン:わかりません
 [3.3] 言語:C
[4] 期限:2006年1月18
[5 お願いします
809デフォルトの名無しさん:2006/01/16(月) 19:23:55
>>793
単純に、書き換えるだけでいいんじゃないのか?
std::coutってのはprintf使えってこと
std::cinってのはscanf使えってこと
他に何か難しいことってある?
810 ◆345n4KctKs :2006/01/16(月) 19:24:10
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
配列{1,3,5,7,9,0,2,4,6,8}があるとき、4番目の要素を削除し、7番めに10を挿入せよ。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC.NET 2003
 [3.3] 言語: C
[4] 期限: 明後日まで
[5] その他の制限: Cの基本的なことのみ習っている。
要素の削除、挿入は関数を作って、その関数で行う。

お願いします。
811 ◆345n4KctKs :2006/01/16(月) 19:25:46
#include <stdio.h>

void del(int a[], int x, int result_tmp[]){
int i,y;
for(i=0; i<10 ;i++){
if(i<x){
y=a[i];
result_tmp[i]=y;
}
y=a[i+1];
result_tmp[i]=y;
}
}

//int insert(){

void main() {
int i, result[10], hairetu[10];
hairetu[1,3,5,7,9,0,2,4,6,8];

del(hairetu, 4, result);//削除する数字

//insert(hairetu, 7, 10);//挿入する数字

for(i=0; i<10; i++){
printf("%d\n", result[i]);
}
}

途中までですが、このように書いたのですが、うまくいきません。助言をお願いします。
812デフォルトの名無しさん:2006/01/16(月) 19:27:58
>>810
int main()
{
int a[]={1,3,5,9,0,10,4,6,8};

return 0;
}
813デフォルトの名無しさん:2006/01/16(月) 19:31:07
>>811
工エエェェ(´д`)ェェエエ工工 ツッコミいっぱい
814デフォルトの名無しさん:2006/01/16(月) 19:33:07
>>808
A以外はこのスレで解答済みだから探して。
Cは微妙に違うけど大体いっしょのがある。
815デフォルトの名無しさん:2006/01/16(月) 19:35:17
>>811
流し読みしたがオーバーフローは起きてるし、y経由させる意味ないし
どうみてもelse抜けてるし、それ以上に無駄だし

書き込み用イテレータと読み込み用イテレータを共有せずに
別々に確保してみれ
816 ◆345n4KctKs :2006/01/16(月) 19:40:46
>>815
ありがとうございます、やってみます。
main関数の方は問題ないですか?
817デフォルトの名無しさん:2006/01/16(月) 19:41:48
・・・・・・もう何も言うまい
818 ◆345n4KctKs :2006/01/16(月) 19:43:56
イテレーターって関数のdel関数の方のことですよね?
mainも問題ありそうだってのもわかってはいたのですが、それよりもdelの方が気になっていて・・・
819デフォルトの名無しさん:2006/01/16(月) 19:44:48
>>816
エラー表示通りやれば問題無い。
820デフォルトの名無しさん:2006/01/16(月) 19:56:36
821デフォルトの名無しさん:2006/01/16(月) 20:06:51
>>816
int *del(int a[], int x, int result_tmp[]){
  int i,*y = resulut_tmp;
  for(i=0; i<10 ;i++){
    *result_tmp = a[i];
    if(a[i]++ == 3){;}
    *result_tmp = a[i];
  }
return *y;
}
delの関数はこれでおkだろ(^ω^;)
あとはここのプロの方々の改良が加われば鬼に金棒。
822デフォルトの名無しさん:2006/01/16(月) 20:28:20
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):末尾に記します
[3] 環境
 [3.1] OS: TurboLinux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2006年01月17日22:00まで]
[5] その他の制限: 違うグラフでも動くようにせよ。
  ヒント:通った辺と通っていない辺を区別する配列、再帰関数を使う
問題文
次のグラフを一筆書きするプログラムを書け。
{
{ 0, 1, 1, 0, 1},
{ 1, 0, 1, 1, 1},
{ 1, 1, 0, 1, 1},
{ 0, 1, 1, 0, 0},
{ 1, 1, 1, 0, 0},
}

出力は以下の様に表示せよ
4 -> 3 -> 2 ->・・・


単位が危ういので、どうか助けて欲しいです。
823デフォルトの名無しさん:2006/01/16(月) 20:34:48
>>822
ヒントはあくまでヒントだから無視するとして
全てのノードが繋がってると仮定しても
高々5!通りしか無いんだから、それを一つずつ
そのグラフに適合するか見ていけばいいんじゃね?
824デフォルトの名無しさん:2006/01/16(月) 20:35:17
コミットサイズとは何ですか?
どなたか教えてください。
825デフォルトの名無しさん:2006/01/16(月) 20:37:44
>>824
すれ違いということだ!
826824:2006/01/16(月) 20:38:41
すいません。自己解決しました。
827ZEX#:2006/01/16(月) 20:39:38
[1] 授業単元:情報基礎C
[2] 問題文:半径8cm、高さ15cm、円周率3.1415926
上記を用いて円柱、円錐、球の体積を求めよ
[3] 環境
 [3.1] OS: winXP
 [3.2] ちょっと分りません
 [3.3] c/c++コンソールアプリケーション
[4] 期限: 2006年01月30日
[5] その他の制限:特に無し

お願いします。。。
828ZEX#:2006/01/16(月) 20:40:51
sage忘れスマソ
829デフォルトの名無しさん:2006/01/16(月) 20:51:40
( ・∀・)つ[紙とペン]
830魚チョコ:2006/01/16(月) 20:53:25
>>827 こんなんでいいのか? ミ ゚ 仝゚ミ
#include <stdio.h>
int main(){
double r=8.0;
double h=15.0;
double pi=3.1415926;
printf("円柱の体積(cc)=%lf\n",pi*r*r*h);
printf("円錐の体積(cc)=%lf\n",(1.0/3.0)*pi*r*r*h);
printf("球の体積(cc)=%lf\n",(4.0/3.0)*pi*r*r*r);
return 0;
}
831デフォルトの名無しさん:2006/01/16(月) 20:53:41
>>828
言おうと思ったこと先に >>829 に言われたからプログラムの方書く

#include <stdio.h>
#define PI 3.1415926
double get_cylinder_volume( double height, double radius )
{
return radius * radius * PI * height;
}
double get_cone_volume( double height, double radius )
{
return get_cylinder_volume( height, radius ) / 3;
}
double get_sphere_volume( double radius )
{
return radius * radius * radius * PI * 3 / 4;
}
int main( void )
{
double height = 15;
double radius = 8;
printf( "円柱\t%lf cm3\n", get_cylinder_volume( height, radius ) );
printf( "円錐\t%lf cm3\n", get_cone_volume( height, radius ) );
printf( "球\t%lf cm3\n", get_sphere_volume( radius ) );
return 0;
}
832デフォルトの名無しさん:2006/01/16(月) 20:54:53
>>810
空要素の定義がないから適当だお。

#include <stdio.h>
int del(int a[], int size, int idx)
{
int i;
if(idx < 0 || idx >= num) return -1;
for(i = idx+1; i < num; i++) a[i-1] = a[i];
return 0;
}
int ins(int a[], int size, int idx, int data)
{
int i;
if(idx < 0 || idx >= num) return -1;
for(i = idx+1; i < num; i++) a[i] = a[i-1];
a[idx] = data;
return 0;
}
int main(int argc, char **argv)
{
int a[] = {1,3,5,7,9,0,2,4,6,8};
del(a, sizeof(a)/sizeof(a[0]), 3); /* 配列aの4番目の要素を削除 */
ins(a, sizeof(a)/sizeof(a[0]), 6, 10); /* 配列aの7番目に10を挿入 */
return 0;
}
833ZEX#:2006/01/16(月) 20:58:09
感謝します!お世話になりました。
834832:2006/01/16(月) 20:59:55
× size
○ num

これだから脳内コンパイラは…
835732:2006/01/16(月) 21:10:06
>>734
>>739
ありがとうございます!かなり助かります。
また何かあったら宜しくお願いします
836デフォルトの名無しさん:2006/01/16(月) 21:17:33
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1475.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C のみで
[4] 期限: 20050117まで
[5] その他の制限: 再帰を使う問題です。よろしくお願いします。
837デフォルトの名無しさん:2006/01/16(月) 21:42:15
迷路といえば再帰と相場は決まっている。
安心しろ。
838デフォルトの名無しさん:2006/01/16(月) 21:54:21
[1] 授業単元: 数値解析
[2] 問題文:
d^2*f/d*x^2 + d^2*f/d*y^2 = 0
境界条件 f(0,y)=10 f(10,y)=5

上記の偏微分方程式を有限要素法により求めるプログラムの作成。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc borland 
言語: C
[4] 期限: 明後日まで
[5] その他の制限:特になし
839デフォルトの名無しさん:2006/01/16(月) 22:00:55
>>838
有限要素法とやらの参考ページを付けろ
それがない限りおそらくスルーされる
840デフォルトの名無しさん:2006/01/16(月) 22:13:31
841デフォルトの名無しさん:2006/01/16(月) 22:17:56
>>836
賞味期限1年前か。

それはさておき、おもしろそうなんじゃが、今日は○×時代(>>377出題)のように熱くなれる時間が無い…
今回はおとなしくROMっておきます。

★     ┌ ┐
└ ─ ┐ │ │
    └ ┘ ☆
蛇足だけど、今はものすごく、この部分の表示を作りたい。
842デフォルトの名無しさん:2006/01/16(月) 22:23:28
>>839
馬鹿ばっかってことか
843808:2006/01/16(月) 22:34:17
Aお願いします・・
844デフォルトの名無しさん:2006/01/16(月) 22:39:52
>>843
何ができないのかワカメ。
845840:2006/01/16(月) 22:53:19
>>841
やってみました。840のprint関数を置き換えます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1477.txt
846デフォルトの名無しさん:2006/01/16(月) 23:04:53
>>808 /2
#include<stdio.h>

int main(void){
    double y,d,e,w,p;
    int c;
    char *s[]={"円","ダラ","ユロ","ヲン"};
    d=360.0;
    e=130.0;
    w=0.001;
    scanf("%lf",&y);
    printf("「1・ドル 2・ユーロ 3・ウォン」");
    scanf("%d",&c);
    switch(c){
        case 1:p=d;break;
        case 2:p=e;break;
        case 3:p=w;break;
        default:p=1.0;c=0;
    }
    if(c)printf("%.0f円は%.2f%sです。",y,y/p,s[c]);
    return 0;
}
http://quote.yahoo.co.jp/q?d=t&s=USDJPY=X
http://quote.yahoo.co.jp/q?d=t&s=EURJPY=X
http://quote.yahoo.co.jp/q?d=t&s=KRWJPY=X
使わない部分があるが気にしないでくれ
847841:2006/01/16(月) 23:23:51
>>845
お、お願いしたわけじゃ…ないんだからね!
誤解しないでよ!
848デフォルトの名無しさん:2006/01/16(月) 23:53:01
[1] 授業単元: 情報処理
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1478.txt

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
言語: C
[4] 期限: 1/18まで
[5] その他の制限:例にならった形で
849デフォルトの名無しさん:2006/01/17(火) 00:08:11
ウォンって通貨単位が不愉快
850デフォルトの名無しさん:2006/01/17(火) 00:09:18
>>848
またお前か
その課題作った奴の名前とお前の学校教えろ
851デフォルトの名無しさん:2006/01/17(火) 00:17:49
>>848
悪いが俺にそのソースは読めない
852デフォルトの名無しさん:2006/01/17(火) 00:18:37
>>773 http://www.borujoa.org/upload/source/upload4336.c
とりあえずキリのいい所まで、今日はもう寝るぽ。後は自分でやってもいいし。
853デフォルトの名無しさん:2006/01/17(火) 00:18:56
>>850
またってことは前に出てたのでしょうか?
とりあえずこのスレだけで過去スレ読んでなかったので読んでみます
854デフォルトの名無しさん:2006/01/17(火) 00:25:31
>>848
例にならった形なら16進こんな感じかな?(8進は自明)
一応エラーメッセージは同じだし、2個所直すと11桁目(intが32bitの場合)からバグるのも同じ。
バグり方は違うけど、そこは勘弁して。

#include<stdio.h>

main()
{
int dec, bit, coef=0;
char hex[11]={0}, endchar;
do{
scanf("%d%c",&dec,&endchar);
printf("%3d\t",dec);
while(dec ! = 0) {
bit = dec % 16;
dec \ = 16;
hex[coef] = "0123456789ABCDEF"[bit];
++coef;
}
printf("%10s\n", hex);
} while(endchar != '*');
}
855デフォルトの名無しさん:2006/01/17(火) 00:29:33
2進、8進、16進まとめて表示

#include <stdio.h>
char *get_binary_expression( int n )
{
static char buf[ 1024 ];
char *end = buf + sizeof(buf) - 1;
*end-- = '\0';
while ( buf != end ) {
*end = '0' + n%2;
if ( n < 2 ) break;
n /= 2; --end;
}
return end;
}
static void print_result( int n )
{
printf( " %d\t%s\t%o\t%X\n", n, get_binary_expression( n ), n, n );
}
int main( void )
{
char buf[32];
int a;
while (1) {
fgets( buf, sizeof(buf), stdin );
if ( buf[0] == 'q' ) break;
sscanf( buf, "%d", &a );
print_result( a );
}
}
856:2006/01/17(火) 00:45:29
すいませんが質問です.

c:\a.txt  の場所にtextファイルがあります.

このtextファイルを読み込んで配列に格納したいのですがうまくいきません.

a.txtファイルには

1  1  1   12   15
1  1  2   13   14
1  1  3   24   36

のように一行に五つの数字があります.
これを
a[1],b[1],c[1],d[1],e[1]
a[2],b[2],c[2],d[2],e[2]
a[3],b[3],c[3],d[3],e[3]

の配列に格納していきたいのですがどのようなアルゴリズムを組めばいいのか教えてください.
c++で,MFCを使うのですが…

CFile file("c:\\a.txt", CFile::modeRead );
CArchive ar(&file, CArchive ::load);


このやり方を誰か教えてください.
857デフォルトの名無しさん:2006/01/17(火) 00:55:14
全角なのか、そうなのか。
858お助けを:2006/01/17(火) 01:28:04
859デフォルトの名無しさん:2006/01/17(火) 01:31:12
>>848
なんだこの分かりにくい例は
ビット演算の方が遥かに分かりやすいわ
860デフォルトの名無しさん:2006/01/17(火) 05:48:53
テンプレの守らん奴への戻り値は0でいいと思うよ
861デフォルトの名無しさん:2006/01/17(火) 05:58:08
[1] 授業単元:プログラミングB
[2] 問題文(含コード&リンク):

#include <stdio.h>
int ch;
void getch0(void) {
 ch = getchar();
}
int expression(void);
int factor(void) {
 int val;
 if(ch >= '0' && ch <= '9') {
 val = ch-'0';
 getch0();
 }
 else if(ch == '(') {
 getch0();
 val = expression();
 getch0();
 }
 return val;
}
int term(void) {
 int val;
 val = factor();
 while(ch == '*') {
 getch0();
 val = val * factor();
 }
 return val;
}
862デフォルトの名無しさん:2006/01/17(火) 05:58:53
int expression(void) {
  int val;
  val = term();
  while(ch == '+') {
   getch0();
   val = val + term();
  }
  return val;
}
int main(void) {
 printf("expression? ");
 getch0();
 printf("value=%d\n", expression());
}

この計算プログラムにおいて,2*(3+(4+5)*6) を計算するとき,
どういう順番で,expression, term, factorを呼び出して計算がなされて,
最終的な答えに行き着くのかを説明しなさい。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月20日まで

 何とぞお手柔らかにお願いします!
863デフォルトの名無しさん:2006/01/17(火) 06:00:22
>>861-862 で一つのプログラムです。
864お助けを:2006/01/17(火) 06:10:21
1] 授業単元: データ構造とアルゴリズム
[2] 問題文(含コード&リンク): http://www.mm.ics.saitama-u.ac.jp/~kawasaki/ensyu2005/ex13/ex13.html
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月17日
なにとぞお願いします
865デフォルトの名無しさん:2006/01/17(火) 06:15:20
>>864
今日までじゃん。
せめて夜に頼めばよかったのに。
866デフォルトの名無しさん:2006/01/17(火) 09:38:17
【質問テンプレ】
[1] 授業単元: 応用数学
[2] 問題文(含コード&リンク): http://next1.cc.it-hiroshima.ac.jp/LectureNote/CPP/Exercise4.html
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C++
[4] 期限: 2006年01月19日am:9:00まで] または [無期限] のいずれか)
[5] その他の制限:http://next1.cc.it-hiroshima.ac.jp/LectureNote/CPP/LectureNote.html
お願いします
867デフォルトの名無しさん:2006/01/17(火) 10:45:10
1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
list<int> 型の要素全ての和を求める関数 int sumlist(list<int>&) を定義して下さい.
#include <iostream>
#include <list>
using namespace std;
int main(){
list<int> lst;
for(int i=0 ; i < 10 ; i++)lst.push_back(i);
cout << "size =" << lst.size() << endl;
for(list<int>::iterator it = lst.begin(); it != lst.end() ; ++it)
cout << *it << ' ';
cout << endl;
for(list<int>::iterator it = lst.begin(); it != lst.end() ;){
if((*it) % 3 == 0){
it = lst.erase(it);
}
else {
++it; } }
for(list<int>::iterator it = lst.begin(); it != lst.end() ; ++it)
cout << *it << ' ';
cout << endl;
return 0; }
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:Microsoft Visuaal Studio
 [3.3] 言語: C++
[4] 期限: 1月23日
[5] その他の制限: >>761ではだめだったのでもう一度お願いします


868デフォルトの名無しさん:2006/01/17(火) 11:03:48
>>854
>>855
どうもありがとうございました
869デフォルトの名無しさん:2006/01/17(火) 11:16:07
>>852
ありがとうございます。いろいろありましたが、今後ともよろしくお願いします。
870RE:856:2006/01/17(火) 11:20:42
[1] 授業単元: プログラム
[2] 問題文:下に書いてある通りです。
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: VC++ 6.0
 [3.3] 言語:C++
[4] 期限:1月19日
[5] その他の制限: なし、できればよいので。

c:\a.txt  の場所にtextファイルがあります.
このtextファイルを読み込んで配列に格納したいのですがうまくいきません.
a.txtファイルには
1  1  1   12   15
1  1  2   13   14
1  1  3   24   36
のように一行に五つの数字があります.
これを
a[1],b[1],c[1],d[1],e[1]
a[2],b[2],c[2],d[2],e[2]
a[3],b[3],c[3],d[3],e[3]
の配列に格納していきたいのですがどのようなアルゴリズムを組めばいいのか教えてください.
c++で,MFCを使うのですが…
CFile file("c:\\a.txt", CFile::modeRead );
CArchive ar(&file, CArchive ::load);


このやり方を誰か教えてください.
871デフォルトの名無しさん:2006/01/17(火) 11:44:00
cout << accumulate(lst.begin(),lst.end(),0) << endl;
872822:2006/01/17(火) 11:51:39
>>823
返答ありがとうございます
ただ、どのようなプログラムになるのか
全く想像がつかないのです

そんなわけで、
プログラムの雛形を提示していただけると助かるのですが
どうか助けてください。
873デフォルトの名無しさん:2006/01/17(火) 12:16:01
>>870
そのa.txtとやらの仕様を詳しく記述せよ
874お助けを:2006/01/17(火) 12:22:27
1] 授業単元: データ構造とアルゴリズム
[2] 問題文(含コード&リンク): http://www.mm.ics.saitama-u.ac.jp/~kawasaki/ensyu2005/ex13/ex13.html
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月18日 正確には12;00までです
なにとぞお願いします
875 ◆345n4KctKs :2006/01/17(火) 12:30:28
皆さんありがとうございます。
なんとかできそうです。お世話になりました。
876デフォルトの名無しさん:2006/01/17(火) 13:01:01
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):下記参照
[3] 環境
 [3.1] OS:(Windowsxp)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/C++
[4] 期限: 2006年1月18日(明日)まで
[5] その他の制限: 特になし

0と1を使用した32桁の文字列を入力

0が1つの場合1と置く 0が2つ連続すると2と置く 0が3つ連続すると3と置く
0が4連続=4 0が5連続=5 0が6連続=6 0が7連続=7 0が8連続=8 0が9連続=9

1が1連続=a 1が2連続=b 1が3連続=c 1が4連続=d 1が5連続=e 
1が6連続=f 1が7連続=g 1が8連続=h 1が9連続=i
上のように変換した文字列を表示する
(0や1が10個以上連続した場合下の例のように置き換える
 {例}1が12個連続→1が9連続のiと1が3連続のcに置き換える
)

最後に最初に入力した0と1を使用した32桁の文字列を表示

全体的の例
11111001100000000000000111111110  ・・・(1)
e2b95h1                     ・・・(2)
11111001100000000000000111111110   ・・・(3)

条件の付けたし{(2)で出力した文字列を用いて(1)と同じ文字列を(3)に出力してください}

前スレの>>540ですが、上の条件を満たしてつくらなければいけないことを言われたのでよろしくお願いします。
なんどもなんどもすみません。
877デフォルトの名無しさん:2006/01/17(火) 13:03:55
ちなみに>>876の全体的の例の
・・・(1)
・・・(2)
・・・(3)
は出力に必要ないです。
878:2006/01/17(火) 13:04:59
a.txtの中身はこのようになっています.
これを列ごとにそれぞれの配列に上から番号順(0〜)に入れていくのですが,どのようにしたらいいのか教えてください.
1 1 1 416 228
1 1 2 403 229
1 1 3 388 229
1 1 4 374 229
1 1 5 360 229
1 2 1 417 214
1 2 2 403 213
1 2 3 390 214
1 2 4 375 214
1 2 5 361 214
1 2 6 346 215
879デフォルトの名無しさん:2006/01/17(火) 13:27:18
そもそもMFCなぞスレ違いな訳だが
C標準、C++標準なら回答できたものを
880デフォルトの名無しさん:2006/01/17(火) 13:57:21
>>876
前スレの回答のどこが不満なのかわからない。

>条件の付けたし{(2)で出力した文字列を用いて(1)と同じ文字列を(3)に出力してください}

このへんは満たしてるし。
881デフォルトの名無しさん:2006/01/17(火) 14:18:43
ttp://pc8.2ch.net/test/read.cgi/tech/1133778112/695

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

int main(){
int i,l;
char ins[256],outs[256];
scanf("%s",ins);
l = strlen(ins);
for(i=0; i < l;++i){
outs[l-i-1] = ins[i];
}
outs[l] = 0;
printf("%s",outs);
return 0;
}
882デフォルトの名無しさん:2006/01/17(火) 14:48:10
>>880
そうなんですか?わかりました。
どうも迷惑かけました。
883デフォルトの名無しさん:2006/01/17(火) 15:02:08
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
配列の中に保存されている整数の最大のものとその要素番号とを
出力するプログラムを作りなさい。
ただし、ポインタを使うこと。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年1月18日18:00まで
[5] その他の制限: すいませんがよろしくおねがいします。
884魚チョコ:2006/01/17(火) 16:34:35
>>883 全部ポインターで書くとわかりづれえな ミ゚仝 ゚ ミ
#include <stdio.h>
#include <limits.h>
int SearchMax(int *p, int num)
{
int i, max, loc;
max=INT_MIN;
for ( loc=i=0; i<num; i++, p++ ) {
if ( *p > max ) {
max=*p;
loc=i;
}
}
return loc;
}
int main()
{
int p[5]={-666,666,-666,666,-666};
int max;
max=SearchMax(p,5);
printf("max: p[%d] = %d\n",max,*(p+max));
return 0;
}
885デフォルトの名無しさん:2006/01/17(火) 17:06:13
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1480.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] VC++ 6.0
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:1月20日
[5] その他の制限:特になし
886デフォルトの名無しさん:2006/01/17(火) 17:18:23
( ゚Д゚)文字化けしてるー(´゚c_,゚`)
887デフォルトの名無しさん:2006/01/17(火) 17:43:22
【質問テンプレ】
[1] 授業単元: 応用数学
[2] 問題文(含コード&リンク): http://next1.cc.it-hiroshima.ac.jp/LectureNote/CPP/Exercise4.html
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C++
[4] 期限: 2006年01月19日am:9:00まで
[5] その他の制限:http://next1.cc.it-hiroshima.ac.jp/LectureNote/CPP/LectureNote.html
お願いします
888デフォルトの名無しさん:2006/01/17(火) 17:58:51
学校の恥晒しになるから校名を特定できるアドレス使うな
889デフォルトの名無しさん:2006/01/17(火) 18:00:09
それ言わなければ気づかないやつもいるのに
なんで言っちゃうかなぁ(;´Д`)
890デフォルトの名無しさん:2006/01/17(火) 18:03:50
とりあえず、学校宛てにメール送っておいたほうがいいかな。
891デフォルトの名無しさん:2006/01/17(火) 18:07:13
そんなにやりたくないのかお前ら
892デフォルトの名無しさん:2006/01/17(火) 18:18:33
>>891
やりたくなるような宿題を持ってこい。退屈するだろう。
893デフォルトの名無しさん:2006/01/17(火) 18:32:13
依頼者が美人女子大生だったら今すぐにでもC++を勉強して回答するッ!
894デフォルトの名無しさん:2006/01/17(火) 18:32:56
依頼者が美人女子大生だろうが今すぐにC++勉強する気はない
895デフォルトの名無しさん:2006/01/17(火) 18:43:12
>>887
一カ所にまとめて全部書きなおせ
・Studentクラスが保持しなければならないデータメンバとインターフェース
・入力データ
・何処まで使っていいのか(STL/boost/etc...)
896デフォルトの名無しさん:2006/01/17(火) 18:44:16
最近流れが速くてこたえる気になれないな・・・
まあ,俺のでる幕がないということか
897デフォルトの名無しさん:2006/01/17(火) 18:48:38
>>349
さんくすw
898デフォルトの名無しさん:2006/01/17(火) 18:50:35
>>892
いやいや、見てる感じ答えてるほうも口だけが多いじゃん。
簡単なのにしか教えてねーし。
有限要素法ぐらいしっとけ。
899デフォルトの名無しさん:2006/01/17(火) 18:52:59
有限要素法なんざ授業でやったっきり忘れましたが何か?
つーか,ここに常駐してる人間はふつー有限要素法なんか習わんと思うぞ
900デフォルトの名無しさん:2006/01/17(火) 18:53:41
おれは情けなくなってきた
901デフォルトの名無しさん:2006/01/17(火) 18:55:21
数値計算とか自分の宿題じゃないとググりたくねーし
902デフォルトの名無しさん:2006/01/17(火) 19:02:09
計算法は載せるのが普通では?
いきなり何とかの定理で計算とか言われても分からん。
903デフォルトの名無しさん:2006/01/17(火) 19:23:19
バカばっかり。
俺がやってやろうか?
904デフォルトの名無しさん:2006/01/17(火) 19:29:49
>>898
>有限要素法は、計算機により構造物の変形や応力を解析するための近似解析手法
材物板住人でなければ物理板の住人でも無いんだから知るかよ
905デフォルトの名無しさん:2006/01/17(火) 19:29:54
前振りするやつはやらない
906yu- ◆gR613BN6BY :2006/01/17(火) 19:50:28
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):ポーカーゲームを作れ(仕様書も
[3] 環境
 [3.1] OS: windows2000
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: ([2006年1月20日23:59
[5] その他の制限:「相手との勝負」があればきわめて単純でかまわない。ワンペア、ツーペア、スリーカード程度までの単純な役があればよい

よろしくお願いします
907デフォルトの名無しさん:2006/01/17(火) 20:08:07
さっさと答えろやクズ共
908デフォルトの名無しさん:2006/01/17(火) 20:29:10
typedef enum{onepea,twopea,threecard}Yaku a;
if(a==0)puts("ワンペア");
909デフォルトの名無しさん:2006/01/17(火) 20:42:05
printf("花京院の魂も賭けますか?\(y,n\):");
910デフォルトの名無しさん:2006/01/17(火) 20:42:08
[1] 授業単元:コンピュータ基礎
[2] 問題文:文字列s[]から変数cに入力した文字を全て取り除く関数DelCh(s,c)を作りなさい。
      c = 'a'としたとき
      <実行例>
        Input String:C-language
Output string:C=lnguge
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 17日の23:59分まで
[5] その他の制限:表示させるのはmain関数でお願いします。ポインタを使用してでお願いします。
911デフォルトの名無しさん:2006/01/17(火) 20:43:21
実行例がずれてしまって申し訳ありません。
912デフォルトの名無しさん:2006/01/17(火) 21:34:07
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
正方形の一辺の長さn(n>0)を入力して,その大きさを持つ正方形を文字AとCを使用して出力するプログラムを書け。
例えばnの値が5であるときは,次のように出力されるはずである。

AAAAA
ACCCA
ACCCA
ACCCA
AAAAA

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC6.0
 [3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特になし。よろしくお願いします。
913デフォルトの名無しさん:2006/01/17(火) 21:44:35
>>912
あほ
914デフォルトの名無しさん:2006/01/17(火) 21:48:03
>>912
#include <stdio.h>
void draw_rectangle(int n)
{
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (i == 0 || i == n-1 || j == 0 || j == n-1)
putchar('A');
else
putchar('C');
}
putchar('\n');
}
}
int main()
{
int n;
printf("正数を入力してください: ");
scanf("%d", &n);
draw_rectangle(n);
return 0;
}
915915:2006/01/17(火) 21:56:34
[1] 授業単元:プログラミングB
[2] 問題文(含コード&リンク):

#include <stdio.h>
int ch;
void getch0(void) {
 ch = getchar();
}
int expression(void);
int factor(void) {
  int val;
  if(ch >= '0' && ch <= '9') {
  val = ch-'0';
  getch0();
  }
  else if(ch == '(') {
  getch0();
  val = expression();
  getch0();
  }
  return val;
}
int term(void) {
  int val;
  val = factor();
  while(ch == '*') {
  getch0();
  val = val * factor();
  }
  return val;
}
916915:2006/01/17(火) 21:57:25
int expression(void) {
  int val;
  val = term();
  while(ch == '+') {
   getch0();
   val = val + term();
  }
  return val;
}
int main(void) {
 printf("expression? ");
 getch0();
 printf("value=%d\n", expression());
}

この計算プログラムにおいて,2*(3+(4+5)*6) を計算するとき,
どういう順番で,expression, term, factorを呼び出して計算がなされて,
最終的な答えに行き着くのかを説明しなさい。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年1月20日まで

 何とぞお手柔らかにお願いします!
917デフォルトの名無しさん:2006/01/17(火) 22:07:48
>>910
#include <stdio.h>

void DelCh(char *s, char c){
char *p, *q;
p = q = s;
while(*p != '\0'){
if(*p != c){
*q = *p;
q++;
}
p++;
}
*q = '\0';
}

int main(void){
char s[32], c, *r;
printf("Input String:");
gets(s);
printf("Input Char:");
scanf("%c", &c);
DelCh(s, c);
printf("Output String:%s", s);

return 0;
}
918デフォルトの名無しさん:2006/01/17(火) 22:21:07
>>915
一回以下のプログラムで実行してみる。
#include <stdio.h>
int ch;
void getch0(void) {
 ch = getchar();
}
int expression(void);
int factor(void) {
  int val;
printf("factor\n");
  if(ch >= '0' && ch <= '9') {
  val = ch-'0';
  getch0();
  }
  else if(ch == '(') {
  getch0();
  val = expression();
  getch0();
  }
  return val;
}
int term(void) {
  int val;
printf("term\n");
  val = factor();
  while(ch == '*') {
  getch0();
  val = val * factor();
  }
  return val;
}
919デフォルトの名無しさん:2006/01/17(火) 22:22:15
int expression(void) {
  int val;
printf("expression");
  val = term();
  while(ch == '+') {
   getch0();
   val = val + term();
  }
  return val;
}
int main(void) {
 printf("expression? ");
 getch0();
 printf("value=%d\n", expression());
}
わからなければ、実際に計算している前後でも出力してみる(valなど)。
920デフォルトの名無しさん:2006/01/17(火) 22:23:18
[1] 授業単元:情報処理
[2] 問題文 タブ区切りで10個の数字が並んでいるtxtファイル
21 34 4 145 … こんな感じで一行です。桁はまちまち
が5つありそこから、10行 5列にひとまとめにして、csvで出力しなさいというのです
[3] 環境
 [3.1] OS:Windows XP
 [3.2] VC++ 6.0
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:1月20日
[5] その他の制限:特になし

おながいします…
921デフォルトの名無しさん:2006/01/17(火) 22:25:05
>>920
いや、言語わかんないし
10個の数字を10*5のcsvにしろってのもよく分らないし
922918,919:2006/01/17(火) 22:28:12
<printf("expression");
>printf("expression\n");
923920:2006/01/17(火) 22:32:43
>>921
言語はCでおながいします
10個の数字が書いてあるファイルが5つあって
それをひとまとめにして一つのファイルにしてくださいという感じです

[1] 授業単元:情報処理
[2] 問題文 タブ区切りで10個の数字が並んでいるtxtファイル
21 34 4 145 … こんな感じで一行です。桁はまちまち
が5つありそこから、10行 5列にひとまとめにして、csvで出力しなさいというのです
[3] 環境
 [3.1] OS:Windows XP
 [3.2] VC++ 6.0
 [3.3] 言語: C
[4] 期限:1月20日
[5] その他の制限:特になし
924デフォルトの名無しさん:2006/01/17(火) 22:33:30
>>923
ファイル名は?
925デフォルトの名無しさん:2006/01/17(火) 22:34:01
>>923
ゴメン2つ目のは俺がちゃんと読んでないだけだった
926920:2006/01/17(火) 22:37:22
>>924
入力ファイルはdata1.txt data2〜data5という感じで連番になっています
出力のファイル名は多分なんでも大丈夫です

>>925
いえいえとんでもないです、文が分かりにくくて申し訳ないです
927デフォルトの名無しさん:2006/01/17(火) 22:39:29
【質問テンプレ】
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
任意の文字列を読み込んで、中央の文字を堺に、その前後を入れ替えるプログラムを作成せよ。
文字列の最大長さは255文字とせよ。もし、文字列の長さが奇数の場合は、中央の文字は、移動させずにそのままとすること。
入力した文字の長さが、最初に偶数か奇数か判断すると良い。
[3] 環境
 [3.1] os:Windows xp
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C言語
[4] 期限: 2007年1月23日10時まで
[5] その他の制限:
本当に基本でpritfやscanfやfor文とかやりました。
あと、文字と文字列、配列、剰余演算子、strlen関数、for文を理解すること
と書いてあります。

途中まであります。

#include 〈stdio.h )
main()
{
     int i,j,k,1;
     char ins[256],outs[256];
     printf(“input string:“) ;
     scanf(“%s”,ins) ;
     1=strlen(ins) ;

おねがいします!
928デフォルトの名無しさん:2006/01/17(火) 22:47:40
>>920
int a[5], n;
FILE *fp;
while ((n = fscanf(fp, "%d%d%d%d%d", &a[0], &a[1], &a[2], &a[3], &a[4])) == 5) {
printf("%d,%d,%d,%d,%d\n", a[0], a[1], a[2], a[3], a[4]);
}
929ひよこ:2006/01/17(火) 22:52:29
visualC と C は別物なんですか?
930ひよこ:2006/01/17(火) 22:55:05
別で聞きます。酢間祖
931デフォルトの名無しさん:2006/01/17(火) 22:59:28
>>927
しばらくは手をつけなくても良さそうだね
932デフォルトの名無しさん:2006/01/17(火) 23:03:02
>>931
てか1年間もあるとそのまま忘れられそう
933デフォルトの名無しさん:2006/01/17(火) 23:05:21
>>927
やってみたけど駄目だぁ
入れ替えはできるけど位置が間違ってるw
934デフォルトの名無しさん:2006/01/17(火) 23:07:25
>>927
#include <stdio.h>
#include <string.h>

int main()
{
char s[256];
int len;
int i;
char tmp;
printf(" input string: ");
scanf("%s",s);
len = strlen(s);
for (i = 0; i < len/2; ++i) {
tmp = s[i];
s[i] = s[len-1-i];
s[len-1-i] = tmp;
}
printf("output string: %s\n", s);
return 0;
}

別に奇偶判定の必要なかったが
935デフォルトの名無しさん:2006/01/17(火) 23:13:27
>>934
そうゆう意味だったのかぁ、
漏れはてっきり前後一文字だけかと思ったwwww(⊃Д`)恥ずかしぃ
936デフォルトの名無しさん:2006/01/17(火) 23:18:20
>>917さんありがとうございます。
これ見ながらもう一度考え直しますノシ
937920:2006/01/17(火) 23:18:46
>>928
ありがとうございます(TдT) アリガトウ

これはfpにはどうやって値を入れればよいのでしょうか…
938デフォルトの名無しさん:2006/01/17(火) 23:22:20
C++解答者って少ないのか。
言語 C++と書いてあったので、
喜び勇んでSTLだらけなコードを書いたら拒絶された。
939デフォルトの名無しさん:2006/01/17(火) 23:25:28
>>927
>>934修正

for (i = 0; i < len/2; ++i) {
tmp = s[i];
s[i]=s[(len-1)/2+(len-1)%2+i];
s[(len-1)/2+(len-1)%2+i] = tmp;
}
940デフォルトの名無しさん:2006/01/17(火) 23:26:32
>>935
あ、前後1文字ってことか?よくわからん。
それならこっち
#include <stdio.h>
#include <string.h>

int main()
{
char s[256];
int len;
int i;
char tmp;
printf(" input string: ");
scanf("%s",s);
len = strlen(s);
if (len%2 == 0) {
tmp = s[len/2];
s[len/2] = s[len/2-1];
s[len/2-1] = tmp;
}
printf("output string: %s\n", s);
return 0;
}
941915:2006/01/17(火) 23:29:45
>>918-919
お願いします。どのコマンドで数字を読み込むのかも分からなくて・・・
942デフォルトの名無しさん:2006/01/17(火) 23:33:10
>>937 (920) そこまで分かっているなら、手持ちのfopen()つかってるプログラムを参考にしてくれ。
943デフォルトの名無しさん:2006/01/17(火) 23:34:11
>>938
勉強になるから問題に気づいたら考えては見るが
そもそも問題自体がそんなになくね?
944デフォルトの名無しさん:2006/01/17(火) 23:34:30
>>938
このスレでの話なら、その通り。私も何度も書き直した回答者の1人。
C++をbetter Cとしてしか使わない質問者や出題者があまりにも多い。
945920:2006/01/17(火) 23:38:26
>>942
なるほど、ではガンガッテやってみます。ありがとうございました。
徹夜すれば今日中に何とか終わらせられそうです。
946デフォルトの名無しさん:2006/01/17(火) 23:39:49
30分切ってるぞ
947デフォルトの名無しさん:2006/01/17(火) 23:44:27
>>939
そういう意味だったのか。
でも、それだと真ん中も変わっちゃう
for (i = 0; i < len/2; ++i) {
tmp = s[i];
s[i]=s[(len+1)/2+i];
s[(len+1)/2+i] = tmp;
}
948デフォルトの名無しさん:2006/01/17(火) 23:44:37
>>944
そこらへんのC++の入門書らしきものはみんな
まずテンプレートが後回しで、それに引きずられてSTLも後のほうに回される。
iostreamがクラステンプレートだという話も滅多に出てこない。

まして学校の授業でそこまで到達するわけがないというところだろう。

#全然関係はないけれどC++のiostreamは仮想継承の説明にもってこいだと思うんだけどな。
949デフォルトの名無しさん:2006/01/17(火) 23:48:40
>>945
これじゃだめ?
#include <stdio.h>
int main(void) {
    int i, c;
    char filename[16];
    FILE* srcfp, *destfp = fopen("data.csv", "w");
    for (i = 0; i < 5; i++) {
        sprintf(filename, "data%d.txt", i + 1);
        srcfp = fopen(filename, "r");
        for (; ; ) {
            if ((c = fgetc(srcfp)) == EOF) break;
            if (c == '\t') fputc(',', destfp);
            fputc(c, destfp);
        }
        fclose(srcfp);
    }
    fclose(destfp);
    return 0;
}
950デフォルトの名無しさん:2006/01/17(火) 23:49:28
まあ、大学で1年プログラム勉強するとして週1コマ講義1コマ演習の30週くらいだから。
はじめて言語ふれる人が90時間くらいじゃそんなもんでしょ。classまで行かん気もするが。
951デフォルトの名無しさん:2006/01/17(火) 23:51:23
>>948
もう教科書はAccelerated C++にすりゃいいんじゃね
憂鬱本→独習C++だとただ何となく面白そうという印象しかなかったが
その後にAccelerated読んで世界が変わったな
952デフォルトの名無しさん:2006/01/17(火) 23:53:33
>>948
まず配列としてstd::vector<>を使う、みたいなことしてもいいと
思うんだが。たしかAccelerated C++とかそうじゃなかったっけ?
あれ初心者が読むのは無理ではあるが。
953デフォルトの名無しさん:2006/01/18(水) 00:20:05
>>945
完成形の形になってる!!!!!111
ほんとありがとうございます、すぐに試してみます有り難うございます!
954デフォルトの名無しさん:2006/01/18(水) 00:31:57
>>953
アセりすぎ
955デフォルトの名無しさん:2006/01/18(水) 00:44:17
[1] 授業単元: プログラミング1
[2] 問題文含: スロットマシーンを作成せよ
[3] 環境
 [3.1] OS:windows
 [3.2] VC 6.0
 [3.3] 言語:C
[4] 期限:
[5] 習い始めたばかりです。この問題を3日前に提出しろといわれて、
今日が期限になってしまいました。藁にもすがる思いです。どうかお願いします。
956デフォルトの名無しさん:2006/01/18(水) 00:57:24
[1] 情報処理
[2] ヒープソートによって昇順にソートするプログラムを作る
[3] 環境
 [3.1] OS:windowsXP
 [3.2] VC++ 6.0
 [3.3] C
[4] 期限: とくに無しです
[5] 関数呼び出し、while文、if文、for文などのできるだけ簡単なのを使って欲しい。
ソートするのは、配列data[]の中身{7,5,9,1,2,8,3,6,4}で。
957デフォルトの名無しさん:2006/01/18(水) 00:57:28
>>938
「習った範囲」もしくは「習っていなくても本人が理解している」という前提がつくからかと。
習っていないSTLを理解できる人間は、こんなところで質問しませんわね。
958デフォルトの名無しさん:2006/01/18(水) 00:59:50
>>955
それなに?GUIで作れってことか?
てか始めたはかりにしてはその課題うざいな
959デフォルトの名無しさん:2006/01/18(水) 01:01:32
ランダムで数字3つ表示させればいいんじゃね?
知らんけど
960デフォルトの名無しさん:2006/01/18(水) 01:01:36
ヒープソートシラネ┐(´∀`)┌
961955:2006/01/18(水) 01:03:28
ごめんなさい環境は
 [3.2] VC++ 
でした。
>>958 GUIという言葉ググって初めて知りました(笑)
はい。グラフィックを使って作成しなくちゃならないんです・・・
962デフォルトの名無しさん:2006/01/18(水) 01:11:29
これ誰もやらない予感
963デフォルトの名無しさん:2006/01/18(水) 01:16:51
exeファイルのソースを見ることができる方法はありませんか?
964デフォルトの名無しさん:2006/01/18(水) 01:19:39
>>956
#include <stdio.h>
void heapsort(int arr[], unsigned int N) {
    unsigned int n = N, i = n / 2, parent, child;
    int t;
    for (; ; ) {
        if (i > 0)
            t = arr[--i];
        else {
            if (--n == 0) return;
            t = arr[n]; arr[n] = arr[0];
        }
        parent = i; child = i * 2 + 1;
        while (child < n) {
            if (child + 1 < n && arr[child + 1] > arr[child]) child++;
            if (arr[child] > t) {
                arr[parent] = arr[child];
                parent = child; child = parent * 2 + 1;
            } else break;
        }
        arr[parent] = t;
    }
}
int main(void) {
    int a[] = {5, 1, 4, 2, 3}, i;
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) printf("%d ", a[i]);
    printf("\n");
    heapsort(a, sizeof(a) / sizeof(a[0]));
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) printf("%d ", a[i]);
    return 0;
}
965デフォルトの名無しさん:2006/01/18(水) 01:20:00
>963
ソースを持っている人に頼む
966964:2006/01/18(水) 01:20:29
>>956
すまん、aをdataに、配列の中身をそれに書き換えてくれ。
967デフォルトの名無しさん:2006/01/18(水) 01:22:40
>>963
『CやC++のソースファイルとして』という意味ならば、>>965以外にない。
アセンブリを読んで自分でCに書き下すのも一手。ただし、非常に手間と
時間がかかる。
968デフォルトの名無しさん:2006/01/18(水) 01:23:12
>スロット
ダイアログボックスベースのプログラムで、
スロットの数字表示にボタンコントロール3つ。
タイマーでボタンのテキストを変更。
ボタンを押されたらボタンを無効化
とか、そんなもんだろ。
969デフォルトの名無しさん:2006/01/18(水) 01:27:26
[1] 授業単元:プログラミングII演習
[2] 問題文(含コード&リンク):
自分の好きな野球チームの選手名、背番号、ポインタの入る構造体を
9つ作り打順通りのリニアリストを作れ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: 2006/1/24/
[5] その他の制限: リニアリストがよくわからないのでお願いします
970デフォルトの名無しさん:2006/01/18(水) 01:40:47
struct LinerList { char namae[100], sebangou[10]; struct LinerList *pointer } linerlist[] = {
/* 好きなチームがないのでリストを作れません */
"itiban san", "12", &linerlist[1];
"niban san", "34", &linerlist[2];
/* 略 */
"ku san", "1001", NULL];
};
971デフォルトの名無しさん:2006/01/18(水) 01:48:07
/*キャラエディットの選手名って悩むよな*/
972デフォルトの名無しさん:2006/01/18(水) 01:50:41
寝ぼけてるな。配列内の;は,だ。
973デフォルトの名無しさん:2006/01/18(水) 01:58:09
>>972
ついでに、Linearだし、{}が足りないし、]になってる。
974デフォルトの名無しさん:2006/01/18(水) 02:07:56
スロットマシンは無理ですか・・・
975デフォルトの名無しさん:2006/01/18(水) 02:11:36
自分の好きな野球チームのポインタって何?
976デフォルトの名無しさん:2006/01/18(水) 02:27:52
スロットマシンとか無理だろ。
金払ってもらわないとやる気しないよ。普通に。
977デフォルトの名無しさん:2006/01/18(水) 02:35:03
基本的にめんどくさがり多いのでGUIはまず回答返ってこない
978デフォルトの名無しさん:2006/01/18(水) 02:39:34
bmpとかの画像キャラクターをウィンドウ上で左右に動かすのも難しいですか?
979デフォルトの名無しさん:2006/01/18(水) 02:40:55
実際ウィンドウ出すのが面倒い。てゆか Windows 起動するのが面倒い。
980デフォルトの名無しさん:2006/01/18(水) 02:41:02
てゆーかwindow出す部分のみですら書きたくないw
981デフォルトの名無しさん:2006/01/18(水) 02:44:27
可哀想だから2日後卒研のプログラム提出なければやってあげたいんだけどな・・・
なんでこんなギリギリに来たんだ
982デフォルトの名無しさん:2006/01/18(水) 02:50:59
>>981 そうですよね・・。自分なりに2日間は調べて頑張ってみたんですけど
全然お手上げ状態で(悲)
983デフォルトの名無しさん:2006/01/18(水) 02:55:02
本当に GUI を要求されているのか?
ランダムに数字三つ出して、そろったらおめでとう!って表示する
みたいなんでいいんじゃないのか?
あるいは、Java アプレットの宿題じゃないのか?
勉強始めたばかりのやつにそんな課題出すヤツいないだろ。
984デフォルトの名無しさん:2006/01/18(水) 02:56:29
VC++とか前のレスで書いてたからCだとは思うけど
それにしても入門じゃないな
てかCで習いはじめでGUIとかありえん
985デフォルトの名無しさん:2006/01/18(水) 03:01:06
>>983 
「スロットマシーンを作成せよ」だけだったので
多分それでいいのだと思います。window上にそれを出すのは
できますか?
986デフォルトの名無しさん:2006/01/18(水) 03:08:39
>>985
なんでお前はウィンドウ上に出したがるんだ。
普通初心者に課題を出すときそんなこと要求しないから。
コンソール (コマンドプロンプト) に表示するだけでいいんだろ、たぶん。
987デフォルトの名無しさん:2006/01/18(水) 03:09:20
はい。Windows上でCプログラム。
#include <stdlib.h>
int main(void) {system("start http://ehagon.com/JavaScript/Slot/"); return 0;}
988デフォルトの名無しさん:2006/01/18(水) 03:11:30
>>985
今まで授業で何を習ったかおおまかに言ってみ?
989デフォルトの名無しさん:2006/01/18(水) 03:21:45
window上に絵を書いたり
その後動くボールだとかアニメーションをやってました。
990デフォルトの名無しさん:2006/01/18(水) 03:26:13
完全にGUIだなもうダメポ
991デフォルトの名無しさん:2006/01/18(水) 03:26:32
まー、この時間から寝ると死ぬのでやれるだけやってみようか・・・。
>>989 次のことをして欲しい
・習った、作った、資料として渡されたプログラムのソースをup
・次スレを立てる

余談だが、コンソールならconio.h読んで、_kbhit()、_getch()を使う。
992デフォルトの名無しさん:2006/01/18(水) 03:29:29
コンソールでキーイベント検知する方法を今始めて知った
993デフォルトの名無しさん:2006/01/18(水) 03:32:34
>>955
http://gamdev.org/up/img/4404.zip
とりあえずドラム1個回転させておいたぜ
994デフォルトの名無しさん:2006/01/18(水) 03:37:50
たててきました。
>>993 それC++じゃないですか?
http://pc8.2ch.net/test/read.cgi/tech/1137522945/
995デフォルトの名無しさん:2006/01/18(水) 03:38:57
C++とか以前に何includeしてるんだか俺にはわからん
996デフォルトの名無しさん:2006/01/18(水) 03:46:42
うpもうちょいまってください
997デフォルトの名無しさん:2006/01/18(水) 03:52:18
998デフォルトの名無しさん:2006/01/18(水) 04:02:54
独自ライブラリか。厄介だな。いや、無理だな。
999デフォルトの名無しさん:2006/01/18(水) 04:03:48
C言語グラフィックス教材専用を見て大笑いした。
WinMainとか、WinProcとか無いのはいいんだけど、
Windowsにべったりやんけ。

んで、当たり前だけど、そのC言語グラフィックス教材専用のライブラリが無いと、組めませんぜ?
1000デフォルトの名無しさん:2006/01/18(水) 04:05:10
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。