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

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

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

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

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 102代目
http://pc11.2ch.net/test/read.cgi/tech/1197132472/
2デフォルトの名無しさん:2008/01/14(月) 23:02:31
             ∩___∩
             |ノ⌒  ⌒ ヽ
             / ●)  ●) |
オツカレチャ━━━━━|   ( _●_)  ミ━━━━━ン♪
            彡、  |∪| 、`
              /  ヽノ  ヽ
             / 人    \\   彡
           ⊂´_/  )    ヽ__`⊃
                / 人 (
               (_ノ (_)
3デフォルトの名無しさん:2008/01/14(月) 23:16:24
>>1
前スレのアドレス間違ってるぞクズ
低脳が粋がって新スレ立てるなボケ
半年ロムってろゆとり
4デフォルトの名無しさん:2008/01/14(月) 23:19:16
>>3
ム板でツンデレを見ることになるとは

>>1
5デフォルトの名無しさん:2008/01/14(月) 23:24:19
>>1
乙。

>>3
ツンデレ乙。
6デフォルトの名無しさん:2008/01/14(月) 23:37:53
C/C++の宿題を片付けます 102代目
http://pc11.2ch.net/test/read.cgi/tech/1199515728/

まだ埋まっていないので質問者はこちらへどうぞ
7デフォルトの名無しさん:2008/01/15(火) 00:01:11
>>1 乙ンデレ
8デフォルトの名無しさん:2008/01/15(火) 01:19:42
Cで任意の4つの数字を入力して四則演算(カッコ無し)
で10にするプログラム教えてください
9デフォルトの名無しさん:2008/01/15(火) 01:26:26
>>8
コラー!!
10デフォルトの名無しさん:2008/01/15(火) 01:43:34
おしっこ漏れちゃったぉ。
11 ◆gDKJL3vNys :2008/01/15(火) 01:52:04
前スレ>>990 >>992
レスありがとうございます 
申し訳ありませんマイコンにも種類があるのですね
ハードウェアマニュアルによるとH8/3664グループと書かれています
たしかH8/3664Nだと思われます
12デフォルトの名無しさん:2008/01/15(火) 01:52:18
>>8
scanf("%d %d %d %d",a,b,c,d);
printf("%d+%d+%d+%d+%d\n",a,b,c,d,10-(a+b+c+d));
13デフォルトの名無しさん:2008/01/15(火) 01:55:31
>>12
2 4 6 8 → 2+4-6+8=10
みたいな意味じゃないの?
14デフォルトの名無しさん:2008/01/15(火) 01:56:17
四則計算も出来ないとは…orz
2*4-6+8=10だ。
15デフォルトの名無しさん:2008/01/15(火) 02:06:48
16デフォルトの名無しさん:2008/01/15(火) 03:40:56
17デフォルトの名無しさん:2008/01/15(火) 03:49:17
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):入力した文字列(アルファベット)の中に、指定したもじがいくつあるかカウントするプログラムを作成せよ。カウントした値を表示させること。なおカウントする文字列が該当しない場合は、0と表示する。

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

どうかよろしくお願いします
18デフォルトの名無しさん:2008/01/15(火) 03:50:49
>>000000000000000000000000000000000017
文字の指定方法は?
19デフォルトの名無しさん:2008/01/15(火) 04:05:55
http://pc11.2ch.net/test/read.cgi/tech/1199515728/576
狭義対角優位って |a_ii| >= 培aij| (j!=i) でよかったっけ
// diagonally dominat -> 1, else -> 0
int is_dd_sq_matrix( double * mat, int n ) {
int i, j;;
if ( mat == 0 || n < 1 ) return 0;
for ( i = 0; i < n; ++i ) {
double a = fabs( mat[ i * n + i ] );
for ( j = 0; j < n; ++j ) a -= fabs( mat[ i * n + j ] );
if ( a < 0 ) return 0;
}
return 1;
}
int main(){
int n = 10;
double * mat = malloc( sizeof(double)*n*n);
if ( mat ) { int i;for(i=0;i<n*n;++i) mat[ i ] = rand()/(double)RAND_MAX;
printf( "mat is%sdd\n", is_dd_sq_matrix(mat,n) ? " " : " not "); free(mat);}
return 0;}
20デフォルトの名無しさん:2008/01/15(火) 05:41:06
http://pc11.2ch.net/test/read.cgi/tech/1199515728/985
もっときれいな方法がありそうだが
#include <stdio.h>
#include <math.h>
typedef unsigned int uint;
int main( int argc, char ** args ){
uint a, b, ma, mb;
double dif = 4., l = 3., u = 4.;
for ( b = 1; b < (0xFFFFFFFF / 3); ++b ){
for ( a = (uint)(b * l - 1); a < (uint)( b * u + 1 ); ++a ){
if ( dif > fabs( M_PI - (double)a / b ) ) {
ma = a; mb = b;
dif = fabs( M_PI - (double)a / b );
l = M_PI - dif; u = M_PI + dif;
printf ( "a:%u, b:%u, a/b:%.20lf, dif:%.20lf\n", a, b, (double)a/b, dif );
}
}
}
printf ( "a:%u, b:%u, a/b:%.20lf, dif:%.20lf\n", ma, mb, (double)ma/mb, dif );
return 0;
}
21デフォルトの名無しさん:2008/01/15(火) 06:57:41
>>17
#include <stdio.h>

int StrCount(char *str,int chr)
//戻り値:カウント値
//str:文字列
//chr:カウントする文字
{
int result;
result=0;
while(*str)
{
if(*str==chr)result++;
str++;
}
return result;
}

int main(void)
{
char str[1024];int count;int chr;
printf("文字列を入力してください。");gets(str);
printf("カウントする文字を入力してください。");chr=getc();
count=StrCount(str,chr);
printf("%d個見つかりました。\n",count);
return 0;
}
22デフォルトの名無しさん:2008/01/15(火) 09:27:39
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
  0がでる確率40%、1〜50がでる確率10%、51〜100がでる確率10%、101〜150がでる確率10%
 151〜200がでる確率10%、201以上がでる確率20%
  上記の条件で乱数を1000個発生させるプログラムを作成しなさい。 
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2008年1月16日12時
[5] その他の制限:特にないです

よろしくお願いします
238:2008/01/15(火) 09:35:42
>14
それです!良かったら教えてください。unixのgccです。
24デフォルトの名無しさん:2008/01/15(火) 09:38:45
>>23
とりあえず>>1をよく読んで書き直し
25デフォルトの名無しさん:2008/01/15(火) 09:52:28
>>22
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, r;
srand((unsigned int)time(0));
for(i=0;i<1000;i++)
{
r = (int)((rand() / ((double)RAND_MAX+1.0f)) * 10);
if( r < 6 )
{
r *= 50;
r += (int)((rand() / ((double)RAND_MAX+1.0f)) * 49)+1;
}
else r = 0;
printf("%d\n", r);
}
return 0;
}
遅刻しそうであせって作ったので間違ってるかも。確認は自分でヨロ
26デフォルトの名無しさん:2008/01/15(火) 10:44:41
>>22
上限は?
27デフォルトの名無しさん:2008/01/15(火) 10:50:19
http://pc11.2ch.net/test/read.cgi/tech/1199515728/985
これじゃだめかな?

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

int main(void)
{
    unsigned int A, B = 1;

    A = B * (unsigned int)M_PI;
    while (A <= 0xffffffff) {
        printf("A = %d, B = %d\n", A, B);
        B++;
        A = B * (unsigned int)M_PI;
    }
    return 0;
}
28デフォルトの名無しさん:2008/01/15(火) 11:13:17
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):
実数aと非負整数nを読み込みaのn乗を計算して出力するプログラミングを作りなさい。
実数aと非負整数nに対して、aのn乗を計算する再帰関数double power(double a,int n)を必ず
作成すること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:1月19日まで
[5] その他の制限: とりあえず再帰関数を使う。
29デフォルトの名無しさん:2008/01/15(火) 11:17:55
#include <stdio.h>
#include <malloc.h>
#define buffer_size 10
int main(int argc ,char *argv[])
{FILE *p;
char buffer[buffer_size];
if(argv[1]==0){
printf("ファイル名を入力してください\n");
scanf("%s",&argv[1]);
}else if(argv[1]==0){
printf("プログラムを終了します。");return 0;
}
p=(FILE *)malloc(sizeof(FILE));
if(p == 0){
perror("領域確保に失敗");return 0;
}
p=fopen(argv[1],"r");
if(p){
while(fgets(buffer,buffer_size,p)){
printf("%s",buffer); }
}
if(!p){
printf("文字列を書き込んでください\n");
scanf("%s",buffer);
p=fopen(argv[1],"w");
if(fprintf(p,buffer)==0){
perror("終了します。\n");return 0;}
};
fclose(p);free(p);return 0;
}
うまい下手はさておいてこのプログラムの間違いを教えてください。コマンド未入力の場合、既存ファイルがあるにも関らず入力を促す。セグメンテーション、アボートエラーがでます。よろしくお願いします。
30デフォルトの名無しさん:2008/01/15(火) 11:21:48
>>29
>if(argv[1]==0){ 
>printf("ファイル名を入力してください\n"); 
>scanf("%s",&argv[1]); 
>}else if(argv[1]==0){ 
>printf("プログラムを終了します。");return 0; 
>} 

・argv[1] == 0 じゃなくて argc == 0
・if(argv[1]==0) ・・・ else if(argv[1]==0)
             ↑ねーよwwww
31デフォルトの名無しさん:2008/01/15(火) 11:35:21
>>29-30
スレ違い。

一応間違いを以下に指摘。
# 詳細は、初心者スレなどで
--
#include <malloc.h>
scanf("%s",&argv[1]);
p=(FILE *)malloc(sizeof(FILE));
--以下省略
32デフォルトの名無しさん:2008/01/15(火) 11:42:09
前スレ870です
多少なら締め切りをオーバーしてもOKなので、今からでもどなたか解答をお願いできますでしょうか
33デフォルトの名無しさん:2008/01/15(火) 11:46:59
>>28
#include <stdio.h>

double power(double a,int n)
{
return n ? a*power(a,n-1):1;
}

int main(void)
{
double a;
int n;

printf("実数a入力>"); scanf("%lf",&a);
do{
printf("非負整数n入力>"); scanf("%d",&n);
}while(n<0);

printf("%.2lf\n",power(a,n));

return 0;
}
34デフォルトの名無しさん:2008/01/15(火) 12:15:19
>>32
木構造かこれ?
両方向リストじゃない?
35デフォルトの名無しさん:2008/01/15(火) 12:19:47
3つのポインタを持つということか……
36デフォルトの名無しさん:2008/01/15(火) 12:29:27
>>32
何時くらいまでならいいんじゃろ?
37デフォルトの名無しさん:2008/01/15(火) 12:30:56
>>34
二分ではなく、それぞれのノードについて任意の数(0〜n個)のポインタを持つ木を作るとの事です

頭の中ではなんとなく分かっているのですが、いざプログラムに直そうとするとチンプンカンプンで……
38デフォルトの名無しさん:2008/01/15(火) 12:32:57
>>36
締め切りを考えると明日の午前中がデッドラインかと
連レスで申し訳ないです
39デフォルトの名無しさん:2008/01/15(火) 12:40:20
>>32
親、子、隣の3つのポインタを持つわけではないの?
普通配列で持ったりはしない気がするけど。
あと、削除が出来るようなことが書いてあるけれど、コマンドの一覧にはないよね?
どうなってるのん?
40デフォルトの名無しさん:2008/01/15(火) 12:46:17
[1] 授業単元: コンピュータグラフィックス
[2] 問題文:
  GPSから取得された位置座標をカメラ位置,ジャイロから得られた角度(俯角)をカメラの傾きとし
  OpenGLで3D空間内にカメラ視点を設定し,空間中のオブジェクト(任意の座標上)を眺めることの
  出来るプログラムを作成せよ.
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: どちらでも可
[4] 期限: ([2008年1月16日12:00まで]
[5] その他の制限: OpenGLを使用

OpenGLスレもありましたが,今期限ギリギリで切羽詰っているのでこちらに書かせて頂きました.
プログラムも2ちゃんねるもまだまだ初心者なので何か失礼がありましたら,すみません.

自分は視点の設定が良くわかっていません.
gluLookAt()や透視投影の仕組みの理解不足で,位置座標やカメラ角度をどの引数に代入してやるか
などが頭の中でごちゃごちゃになります.
GPSはWGS84で緯度+35.658632,経度+139.745411のようなデータで得られます.
どのようにxyz空間座標に変換すればよいかなどもご指導頂ければ助かります.

OpenGLに精通された方がいらっしゃれば,どうぞよろしくお願いいたします.
スレ違いならすみません.
41デフォルトの名無しさん:2008/01/15(火) 13:08:57
>>39
ノードの持つポインタは
ルート:子を指すポインタのみ
ノード:親を指すポインタ、子を指すポインタ で進めます。兄弟姉妹に移動する場合、一度親を経由して移動します
要素の削除は「追加出来れば良い」(加点する)課題らしいので、追加して頂かなくて結構です
わかりにくくてすいませんでした
42デフォルトの名無しさん:2008/01/15(火) 13:14:25
>>25
いまさらだけど50*10の乱数つくって
50*6以上を0にすればよかっただけの気がする
43デフォルトの名無しさん:2008/01/15(火) 13:24:24
>>32
とりあえずぱっとみた感じだけど
・子を追加する関数add_child
・親に戻る関数back_parent
・子を検索して表示する関数search_print_node
をそれぞれ作って、コマンド入力するごとに現在注目しているノードを指すポインタのcurを表示すれば良いのかな?
子を消すなら、関数del_childも必要だけど
44デフォルトの名無しさん:2008/01/15(火) 13:42:12
>>32
加点ということなんで、削除込みでつくってみるわい。
45デフォルトの名無しさん:2008/01/15(火) 14:20:29
46デフォルトの名無しさん:2008/01/15(火) 14:33:16
[1] 授業単元:プログラミング2
[2] 問題文(含コード&リンク):指定ファイルの内容のうち,指定文字列を含む行を表示するプログラムを作りなさい。(UNIXコマンドのgrepに当たる)

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:本日中
[5] その他の制限:急ではありますが、どなたかお願いできますでしょうか
参考:http://www.rsch.tuis.ac.jp/~mizutani/online/grep/grep.html
4744:2008/01/15(火) 15:13:32
>>32
なんかすでにあるっぽいけど、作っちゃったからおいとくよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5777.txt
(実行例と上の仕様に矛盾がある気がする…)
48デフォルトの名無しさん:2008/01/15(火) 15:50:19
キーボードから入力された文字列に指定した文字が何個
含まれているか表示するプログラムを作りなさい。

動作例:


 キーから文字を数文字入力してください= alpha-dog

 調べる文字を入力してください= a

 入力された文字列の中に a は、2 個ありました。

誰か教えてくださいぃぃ

49デフォルトの名無しさん:2008/01/15(火) 16:16:17
>>48
>1
50デフォルトの名無しさん:2008/01/15(火) 16:25:45
// >>48
#include <cstdio>
int main()
{
std::puts(
"キーから文字を数文字入力してください= alpha-dog\n\n"
"調べる文字を入力してください= a\n\n"
"入力された文字列の中に a は、2 個ありました。\n"
);
return 0;
}
51>>48:2008/01/15(火) 16:29:28
>>50のとおりに動作するようにしてくださいぃぃ
52デフォルトの名無しさん:2008/01/15(火) 16:32:27
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
キーボードから1行ずつ入力を受け取り、アルファベットである場合は13字ずつずらす暗号文の作成。
(A→N、B→O、(中略)、M→Z、N→A、(中略)、Y→L、Z→M)
アルファベット以外はそのまま表示するので「abc500」と入力された場合「nop500」と表示される。
通常の文を打てば暗号の文になり暗号文を打てば通常文に戻る、ということ。
また10行分入力を受けたらプログラムを終了し、一行は80字でよい。
なお、プログラム中に最低1つのmain()関数以外の関数を定義すること。
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio.NET2003(これでいいのか不安だけど)
 [3.3] 言語: C
[4] 期限: 今週中(2008年1月19日)まで
[5] その他の制限:
文字列・文字コードは習得。main以外の関数は授業内ではdouble distanceとmyislowerとintmax、intmin、dumb程度です。これが関数でいいのかどうかは正直よくわかりませんが…orz

どうかご教授よろしくお願いいたします
53デフォルトの名無しさん:2008/01/15(火) 16:33:46
printfとかつかいますよね?
54デフォルトの名無しさん:2008/01/15(火) 16:46:21
>>51
50はどう見ても、50の通り動作するだろ。
55デフォルトの名無しさん:2008/01/15(火) 16:56:37
//>>52
#include <stdio.h>
#include <ctype.h>
#include <string.h>

void crypt(char * foo)
{
static char const inputLetters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
static char const outputLetters[] = "NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm";
for (int ic = 0; foo[ic] != '\0'; ++ic) {
int ch = foo[ic];
char * pos = strchr(inputLetters, ch);
if (pos != NULL) {
foo[ic] = outputLetters[pos - inputLetters];
}
}
}

int main()
{
char buf[81];
for (int ic = 0; ic < 10 && fgets(buf, sizeof(buf), stdin) != NULL; ++ic) {
crypt(buf);
fputs(buf, stdout);
}
return 0;
}
56デフォルトの名無しさん:2008/01/15(火) 17:10:45
そのまま貼り付ければ動作しますか?
57デフォルトの名無しさん:2008/01/15(火) 17:12:25
>>56
しません

帰れ!
5852:2008/01/15(火) 17:14:38
早速の返答ありがとうございます
>>56の行動をしてしまった…orz
エラーが出る部分はどう対処すればいいでしょうか?
質問ばかりで申し訳ありません。。
59デフォルトの名無しさん:2008/01/15(火) 17:29:48
1-1/2+1/3-1/4+1/5-1/6...
の値を有効数字6桁で求めるプログラムを作れ。

よろしくおねがいします
60デフォルトの名無しさん:2008/01/15(火) 17:55:06
>>58
二箇所のfor (int ic... を、int ic; for (ic... に書き換えればOK。
61デフォルトの名無しさん:2008/01/15(火) 18:10:13
>>59
>1
62デフォルトの名無しさん:2008/01/15(火) 18:25:01
>>59


int main(int argc, char* argv[])
{
printf("%f\n", log(2.0));
return 0;
}
63デフォルトの名無しさん:2008/01/15(火) 18:27:24
>>62
さっそくありがとうございます。
でも、任意の項でやめるときはどうしたらいいのでしょうか?
64デフォルトの名無しさん:2008/01/15(火) 19:04:38
前スレの
>>938
>>925
本当に色々とありがとうございました。
65デフォルトの名無しさん:2008/01/15(火) 19:12:35
>>63
テンプレ守ってないのがすごく気に入らないけど暇だったので。

#include <stdio.h>

int main(void)
{
    double answer = 0;
    int n;
    int i;

    printf("input N >>"); scanf("%d", &n);
    for (i = 1; i <= n; ++i)
        answer += (i & 1)? 1.0 / i: -1.0 / i;

    printf("answer: %lf\n", answer);

    return 0;
}
66デフォルトの名無しさん:2008/01/15(火) 19:18:38
>>65
たびたびすみません、
三項演算子を使わない方法はありますか?
67デフォルトの名無しさん:2008/01/15(火) 19:19:29
>>66
if使えよ
68デフォルトの名無しさん:2008/01/15(火) 19:20:32
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5778.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C
[4] 期限:1月15日
[5] その他の制限:
69デフォルトの名無しさん:2008/01/15(火) 19:23:52
>>67
といいますと?

>>68
またジャンケンwwww
70デフォルトの名無しさん:2008/01/15(火) 19:25:22
じゃんけん自重しろ
71デフォルトの名無しさん:2008/01/15(火) 19:27:58
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ      >>69
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
72デフォルトの名無しさん:2008/01/15(火) 19:31:35
>>69
ホントにあんたって人は一人じゃ何にもできないんだから!

#include <stdio.h>

int main(void)
{
    double answer = 0;
    int n;
    int i;

    printf("input N >>"); scanf("%d", &n);
    for (i = 1; i <= n; ++i) {
    /*  answer += (i & 1)? 1.0 / i: -1.0 / i; */
        if (i % 2 != 0) /* 奇数項は足し算 */
            answer = answer + 1.0 / i;
        else            /* 偶数項は引き算 */
            answer = answer - 1.0 / i;
    }
    printf("answer: %lf\n", answer);

    return 0;
}
73デフォルトの名無しさん:2008/01/15(火) 19:34:33
>>72
ありがとうございます
でもif分を使わなくてもできました!!

for(i=1;i<=n;i+=2)answer+=1.0/i;
for(i=2;i<=n;i+=2)answer-=1.0/i;

でいいんですかね?
74デフォルトの名無しさん:2008/01/15(火) 20:10:22
ツンデレVSヤンデレ
75デフォルトの名無しさん:2008/01/15(火) 20:18:23
前スレ988
http://pc11.2ch.net/test/read.cgi/tech/1199515728/988

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

P10,11にSW、P50,51,52,53にLED、SW押すと別のLEDを点灯するだけ
タイマV (ベクタ22) の割り込み使ってるからベクタテーブル書き換え忘れないようにな
ルネサス謹製のヘッダファイル使ってるけど、大丈夫か?
76デフォルトの名無しさん:2008/01/15(火) 20:21:52
>>75
ごめんクロック周波数20MHzで作ってる
周波数違うと一部違うから、わかんなきゃ言ってくれ
あとヘッダが3694になってるけどI2C使ってなきゃ3664でも動く
77デフォルトの名無しさん:2008/01/15(火) 20:44:08
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 下のリンク先のプログラムは年月日の差を求めるプログラムなのですが、

・2つの入力年月日を実行時にキーボードから入力させるか
・2つの入力年月日をファイルから与えるか
・2つの入力年月日をコマンドライン引数として与える

この3つ条件のどれか1つを追加したプログラムに書き直したい。

プログラム:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5780.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2008年1月16日12:00まで
[5] その他の制限:できれば3つの条件のプログラムをそれぞれ教えて頂けたら助かります。
1つでもかまいません。宜しくお願いいたします。
7852:2008/01/15(火) 22:00:42
>>60
親切にありがとうございます。助かりました。
79デフォルトの名無しさん:2008/01/15(火) 22:05:18
[1] 授業単元:プログラミング
[2] 問題文:物理プログラミングをせよ
       ウィンドウズアプリケーションで作成せよ

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

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

お願いいたします
80デフォルトの名無しさん:2008/01/15(火) 22:10:52
>>79
期日しかいので無理。
81デフォルトの名無しさん:2008/01/15(火) 22:16:26
>>79
DxLib + gcc がしかいだよなぁ
82デフォルトの名無しさん:2008/01/15(火) 22:18:07
>>69
えー((+_+))
お願いします(-_-メ)
8379:2008/01/15(火) 22:45:21
>>80すみません修正いたします
期日は無期ですよろしくお願いいたします
84デフォルトの名無しさん:2008/01/15(火) 22:47:20
>>83
じゃあ、半万年後にまた会いましょう
85デフォルトの名無しさん:2008/01/15(火) 23:07:05
>>79
gccでDxLib使うってからには、ライブラリのビルドは出来てるんだよな?
86デフォルトの名無しさん:2008/01/15(火) 23:09:28
[1] 授業単元:プログラミング技術
[2] 問題文(含コード&リンク):
ファイルに一行にひとつずつ整数が書いてあるとする。このファイルを
コマンドラインで指定して、リストに入力するプログラムを書け。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:1月22日
[5] その他の制限:


よろしくおねがいします
87デフォルトの名無しさん:2008/01/15(火) 23:14:25
>>85
俺も気になったんでググってみると、DxLibは一応Cygwin or MinGWで使えるらしい
但し、関数ポインタを一々DLLから取ってきて使う必要があるらしく煩雑

もともとVC++/BCC用なんだからgcc前提でDxLibを強要する出題内容はセンスを疑うわな
宿題出されたヤツのやる気を削ぐようなこと言って申し訳ないが
88デフォルトの名無しさん:2008/01/15(火) 23:37:31
>>40
これ表示するオブジェクトとかどうすんの?
球体に世界地図のテクスチャでも貼って、地球儀作って表示させんのかな
そんならカメラより地球儀動かした方が簡単な気がするけど
89デフォルトの名無しさん:2008/01/15(火) 23:52:48
>>46
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <regex.h>

int main(int argc, char *argv[])
{
    regex_t pat;
    int i, err;
    char buf[1024];

    if(argc < 3)
        return fprintf(stderr, "usage : %s pattern filename\n", argv[0]), 1;
    if((err = regcomp(&pat, argv[1], REG_EXTENDED | REG_NOSUB | REG_NEWLINE)) != 0){
        regerror(err, &pat, buf, sizeof(buf));
        return fputs(buf, stderr), 1;
    }
    for(i = 2; i < argc; i++){
        FILE *fp;
        if((fp = fopen(argv[i], "r")) == NULL)
            return perror(argv[i]), 1;
        while(fgets(buf, sizeof(buf), fp))
            if(!regexec(&pat, buf, 0, NULL, 0))
                fputs(buf, stderr);
        fclose(fp);
    }
    regfree(&pat);

    return 0;
}
90 ◆5MBke502AE :2008/01/15(火) 23:54:54
>>88

オブジェクトは,建造物を3Dに起こしたもので,
x-z平面を地面としてy軸方向に高さを伸ばしたような物体を想定しています!
GPSから得られた位置をもとに, その建物オブジェクトを眺めた画像を保存し,
更に, GPS位置からある直線上(撮影方向に対する法線)にカメラ視点をズラして,
再び, オブジェクトを眺めた画像を得て…と繰り返して,
複数の画像を得ることが目的です!

言葉足らずですみません!
91デフォルトの名無しさん:2008/01/15(火) 23:59:17
【時間切れ】 (1/15)
[前スレ] >934 >514 >881 >957 >952

【未解決問題】
http://pc11.2ch.net/test/read.cgi/tech/1199515728/986 期限切れだが早めに (pass:c)
>>40 1/16 12:00
>>77 1/16 12:00

>>86 1/22
http://pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>79 無期限
92デフォルトの名無しさん:2008/01/16(水) 00:21:54
>>45
>>47
お二方とも、本当にありがとうございます
いつかは自分も宿題を手伝う側になりたいと思いつつ、精進して参ります
93デフォルトの名無しさん:2008/01/16(水) 00:26:37
>>77
> ・2つの入力年月日を実行時にキーボードから入力させるか

もう実装されてね?
94デフォルトの名無しさん:2008/01/16(水) 00:32:39
>>48

#include <stdio.h>

int kensaku(char *data , char target)
{
int count;

for(count=0;*data!='\0';*data++){ *data==target ? count++:1; }

return count;
}

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

printf("キーから文字を数文字入力してください="); scanf("%s",input);
printf("調べる文字を入力してください="); scanf("%s",target);

for(i=0;target[i]!='\0';i++){
printf("入力された文字列の中に %c は、%d 個ありました。\n",target[i],kensaku(input,target[i]));
}

printf("\n何か入力をしてください\n"); scanf("%s",input);

return 0;
}
9577:2008/01/16(水) 00:35:24
>>93さん
すいませんそうですね!誤りです。
残りの条件の方でできればお願いいたします。
96デフォルトの名無しさん:2008/01/16(水) 01:02:47
>>77
int m22 = 1, d22 = 1;の下からy_count = year_prev(&y1, &y2);上までを以下に書き換えでいかがでしょう
char buf[100];
FILE *fp;

if (argc == 7) {
/* 引数の時
./hoge.exe y1 m1 d1 y2 m2 d2 */
y1 = atoi(argv[1]);
m1 = atoi(argv[2]);
d1 = atoi(argv[3]);
y2 = atoi(argv[4]);
m2 = atoi(argv[5]);
d2 = atoi(argv[6]);
show_date(y1, m1, d1);
show_date(y2, m2, d2);
} else if (argc == 2) {
/* ファイルのとき
ファイルの中身はテキストでy1 m1 d1 y2 m2 d2 */
fp = fopen(argv[1], "r");
fgets(buf, sizeof(buf), fp);
sscanf(buf, "%d %d %d %d %d %d", &y1, &m1, &d1, &y2, &m2, &d2);
show_date(y1, m1, d1);
show_date(y2, m2, d2);
fclose(fp);
}else {
input_date(&y1, &m1, &d1);
show_date(y1, m1, d1);

input_date(&y2, &m2, &d2);
show_date(y2, m2, d2);
}
97 ◆gDKJL3vNys :2008/01/16(水) 01:14:56
http://pc11.2ch.net/test/read.cgi/tech/1199515728/988
前スレ988です
>>75
遅くなりすみませんレスありがとうございます
情報の後だしかつ、わざわざ作っていただき申し訳ないのですが
学習範囲外技術を含んだ非常に高度なプログラムなのでバレてしまうかもしれません
またルネサスのヘッドファイルだと問題あるのかどうかもよく分かりません
クロックも20MHzだと問題あるのでしょうか?
本日(昨日?)学校より今までに学習しそれを利用して製作した
今までのプログラムをアップしておきました
ろだ、の5781.zipです
後出しかつせかっく作っていただいたのに文句ばかりつけて
本当に申し訳ありませんがアップしたプログラムの組み合わせや応用で
何かオリジナルの課題は作成可能でしょうか?
アップしたプログラムと同じや似た内容だとはねられる可能性があるので
自分なりにも考えていますが現状ではお手上げです
時間も少なく申し訳ないですが、どうかよろしくお願いします。
9877:2008/01/16(水) 02:11:06
>>96さん
引数でもファイルからでもプログラムの実行が行えました!
教えていただいたプログラムは他の課題でも参考に使えそうです。
本当にありがとうございました!
9975:2008/01/16(水) 12:00:27
>>97
課題サンプル見たよ
3664.hのヘッダは多分ルネサスから持ってきたもんだと思うから大丈夫
アップしたプログラムと課題には特に差はなかったです
課題のものが作れるならアップしたものも十分作れる…はず
日中時間ないんで夜になるけど、課題に合わせて修正してみるよ

アップしたプログラムの動作はLEDが以下のように並んでるとして、
常に一つだけ点灯するもの

○○○● SW2押す→ ○○●○ SW2押す→ ○●○○ SW1押す→ ○○●○

上のようにSWが押されると点灯しているLEDをずらしていくだけ
SWは一回押されたら一つLEDをずらす、SWを一回離してもう一回押さないと
動かないようにしてます、内容的にはこんなんでいいのかな

ちなみにクロック違うとタイマのカウント速度が違ってくるので
TV.TCORA = 156 とかやってる部分をクロックに合わせて変更する必要があります
3664だと多分16MHzだと思いますが、どうなってるでしょう
100デフォルトの名無しさん:2008/01/16(水) 12:09:17
[1] 授業単元:プログラミング言語II
[2] 問題文(含コード&リンク):
ポインタ配列を用いて月の名前を英語名で静的変数に格納しなさい。
ポインタ配列を用いて各文字列を走査し、「r」が入っている月を求めなさい。
見つかった月の名前を表示しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008/01/16 24:00まで
[5] その他の制限: 特になし

期限が今日まで申し訳ないですが、よろしくお願いします。
101デフォルトの名無しさん:2008/01/16(水) 12:29:39
月って英語でlunaだっけ?と思った俺は負け組 orz
102デフォルトの名無しさん:2008/01/16(水) 12:41:14
>>99の優しさを独り占めにしたい。

>>100
#include <stdio.h>

int main(void)
{
    char *month[] = {"January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"};
    int i;
    char *p;

    for(i = 0; i < sizeof(month)/sizeof(month[0]); i++){
        for(p = month[i]; *p != '\0'; p++)
            if(*p == 'r')
                break;
        if(*p != '\0')
            puts(month[i]);
    }

    return 0;
}

sizeof(month)/sizeof(month[0])はたまたま動くのかな?(そんなら12にしないと駄目だけど)
103デフォルトの名無しさん:2008/01/16(水) 12:57:36
動くのはたまたまじゃないが、要素数が分かってるからやる必要はないかもな。
104デフォルトの名無しさん:2008/01/16(水) 13:00:24
配列の要素数を指定してないんだからsizeofの方が自然じゃね?
*month[12]とかしてるなら12でもいいけど。
105デフォルトの名無しさん:2008/01/16(水) 13:02:44
それだと文字数が12の予感
106デフォルトの名無しさん:2008/01/16(水) 13:03:58
一度他の変数に限界値保存して比較したほうがいいな。
forループ抜けるまで変動はしないのだから、毎回sizeof2つ使って除算までしてたら無駄過ぎる。
あとbreakする前にputsすればいいところを、わざわざif文外に持ってくる理由も分からん。
107デフォルトの名無しさん:2008/01/16(水) 13:08:55
static忘れてね?
108デフォルトの名無しさん:2008/01/16(水) 13:11:11
忘れてた。
109デフォルトの名無しさん:2008/01/16(水) 13:22:35
sizeof(array) / sizeof(* array)は(コンパイル時に確定するから)定数だよ。
110デフォルトの名無しさん:2008/01/16(水) 13:24:20
>>105
アホがいるw
111デフォルトの名無しさん:2008/01/16(水) 13:37:35
>>110
すんませんでした。
112 ◆gDKJL3vNys :2008/01/16(水) 14:30:34
>>99
レスありがとうございます
それで全然かまわないのでよろしくお願いします
お手数おかけし申し訳ありません
113デフォルトの名無しさん:2008/01/16(水) 17:58:06
[1] 授業単元: C言語
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5782.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 今日中です。。。
[5] その他:よろしくお願い致します。
114デフォルトの名無しさん:2008/01/16(水) 19:01:05
>>113
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5783.txt

Switchを再入力させる条件が読み取れなかったので、
その辺は自身で修正して。
115デフォルトの名無しさん:2008/01/16(水) 19:06:48
>>113
おいらもできた。マルチバイト文字セットをつかってくれ
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void) {
#define BUFSIZE 256
char buffer[BUFSIZE]; unsigned char val = 0; int bitpos, bitnum, i;
while (1) {
printf("\nBit number : 7 6 5 4 3 2 1 0\n" "Bit :");
for (i=7; i >=0 ; --i) printf( ((val >> i) & 1) ? " 1" : " 0");
while (1) {
printf("\n\ninput change bit : ");
fgets(buffer, BUFSIZE, stdin);
bitpos = atoi(buffer);
if (buffer[0] == '.') { return 0; }
else if (isdigit(buffer[0]) && (bitpos >= 0 && bitpos <= 7)) { break; }
puts("\nSorry. Input 0-7 number.\n" "(. is end)");
}
while(1) {
printf("\nSwitch on(1) or off(0) ? : ");
fgets(buffer, BUFSIZE, stdin);
bitnum = atoi(buffer);
if (isdigit(buffer[0]) && (bitnum == 0 || bitnum == 1)) {
val = (bitnum == 1) ? (val | (1 << bitpos)) : (val & ~(unsigned char)(1 << bitpos));
break;
}
puts("\nSorry. Input 0 or 1.");
} }
return 0;
}
116114:2008/01/16(水) 19:16:28
あ、バイトじゃなくてビットだから間違ってるorz
117デフォルトの名無しさん:2008/01/16(水) 19:21:30
118 ◆gDKJL3vNys :2008/01/16(水) 19:36:27
>>99
自分なりに調べてみましたが
仰られる通り
3664ではシステムクロック信号はΦ16MHzで
周波数16MHzでは1ステートは1/16MHz=0.0625μsになるようです
遅くなり申し訳ありませんがよろしければご参考ください
119114:2008/01/16(水) 19:37:29
120デフォルトの名無しさん:2008/01/16(水) 20:00:39
>>114
>>115
>>117
本当にありがとうございます。
121デフォルトの名無しさん:2008/01/16(水) 20:35:15
[1] 授業単元:コンパイラ
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5786.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:どちらでも可
[4] 期限: 1月17日10:00まで
[5] その他の制限:特に無し
よろしくお願いしますm(__)m
122デフォルトの名無しさん:2008/01/16(水) 21:33:08
#include <stdio.h>

int main(void)
{
char buf[100], delim[] = "=)(+*-/.";
char *p, *q;

printf("入力 : ");
fgets(buf, sizeof(buf), stdin);

for (p = buf; *p != '\0'; p++) {
for (q = delim; *q != *p && *q != '\0'; q++);
if (*q)
printf("\n%c\n", *p);
else
putchar(*p);
}
return 0;
}
123デフォルトの名無しさん:2008/01/16(水) 22:38:26
124デフォルトの名無しさん:2008/01/16(水) 22:51:02
[1] 授業単元:プログラミング
[2] 問題文:
番号(整数4桁)と氏名(文字型30バイト)から構成される構造体を定義し、データを入力してその内容を表示するプログラムを作成しなさい。
なお、プログラムの終了条件は、ゼロ以下の番号が入力された時点とする。
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C
[4] 期限:1月23日
[5] その他の制限:

よろしくお願いします。
125デフォルトの名無しさん:2008/01/16(水) 23:07:56
#include <stdio.h>

struct _data{
int number;
char name[30];
};

int main()
{
int i, j, n;
char buf[100];
struct _data data[100];
for (i = 0; i < 100; i++) {
printf("number : ");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &n);
if (n < 0)
break;
data[i].number = n;
printf("name : ");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%s", data[i].name);
}
for (j = 0; j < i; j++)
printf("%d %s\n", data[j].number, data[j].name);
return 0;
}
配列でよかったのだろうか?
126デフォルトの名無しさん:2008/01/16(水) 23:08:55
>>118
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5788.txt

一応修正版、割り込みとかなしにしました
ビットシフト "<<" とかがわからんとかの話じゃないことを祈る
127デフォルトの名無しさん:2008/01/16(水) 23:17:40
>>118
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5789.txt

連投すまん、ビットシフトも抜いた
128デフォルトの名無しさん:2008/01/16(水) 23:24:37
>>102
ありがとうございます!
おかげで助かりました。
129デフォルトの名無しさん:2008/01/16(水) 23:38:43
>>121
#include<stdio.h>
int main(void){
char buf[100+1];
for(;;){
if(fscanf(stdin, "%100[A-Za-z0-9]", buf)!=1)
if(fscanf(stdin, "%1[(+*/.),-]", buf)!=1){
if(fscanf(stdin, "%1[\n]", buf)!=1) fprintf(stderr, "\nError: unexpected character.\n");
break;
}
puts(buf);
}
return 0;
}
130デフォルトの名無しさん:2008/01/16(水) 23:55:12
ITEM *insert(ITEM **root, char*str)
{
ITEM *pos;
ITEM *tmp;
tmp = (ITEM *) *malloc(sizeof (ITEM));//領域取得
if(tmp == NULL){//取得領域失敗
return NULL;
}
//取得した領域の初期化
memset((void *)tmp, '\0', sizeof(ITEM));
strcpy(tmp -> str , str); //入力された文字列を領域に設定
//*rootに保存
if(*root == NULL){ //リストが空か?
*root = tmp ;
}
else{//リストの末尾を探して追加
pos = *root;
while(pos -> next != NULL){ //次はあるか?
pos = pos -> next;
}
pos -> next = tmp;
}
return tmp;
}
入力された文字列をリストに格納するプログラムの一部です。
しかしこれだと最後に入力した文字列が表示されなくて困っています。
おそらくこの部分に問題があると思うのですが、おかしい部分はあるでしょうか?
131デフォルトの名無しさん:2008/01/17(木) 00:04:49
>>130
スレ違い
宿題だというなら>>1を読んでもう一度よく考えてみよう。
132デフォルトの名無しさん:2008/01/17(木) 01:03:39
こういうのって再帰使って処理するほうが楽だと思うんだけど。

tmp->nextがNULLじゃ無いんじゃない?
133デフォルトの名無しさん:2008/01/17(木) 01:05:50
NULLが0な処理系ならmemsetでNULLになってね?

それより、俺は返り値の意味があるのかとかmallocの前の*は何なのかとか気になるけど。
134デフォルトの名無しさん:2008/01/17(木) 01:11:41
>>132
指摘ありがとうございます。
tmp->nextがNULLじゃ無いんじゃない? ってのは
while(pos -> next != NULLのことでしょうか?

>>133
mallocの前の*は、単なる消し忘れでした。
135 ◆gDKJL3vNys :2008/01/17(木) 01:18:59
>>127
ありがとうございます!
これからコンパイルして動作確認してみます
色々本当にありがとうございました
136デフォルトの名無しさん:2008/01/17(木) 01:22:32
LEDを赤く光らせたり青く光らせたりすると面白そう
137134:2008/01/17(木) 01:41:51
すいません。
自己解決しました。
なんかホントに的外しな質問をしてしまいましたw
138デフォルトの名無しさん:2008/01/17(木) 01:54:44
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):正数nとbを10進数としてキーボードから入力すると、
 nをb進数で表示するプログラムを作成せよ。
 実行例
 24[enter]
 8[enter]
 24(10) = 30(8)
[3] 環境
 [3.1] OS:window
 [3.2] コンパイラ名とバージョン:BCC
 [3.3] 言語:C
[4] 期限:1/17
[5] その他の制限:特にありません
139デフォルトの名無しさん:2008/01/17(木) 01:55:52
b進数の範囲は?
140デフォルトの名無しさん:2008/01/17(木) 01:57:06
>>139
すみません、2~36でお願いします
141デフォルトの名無しさん:2008/01/17(木) 02:14:42
>>138
#include<stdio.h>
const char *s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void conv(int n,int b){
if(n>0){
conv(n/b,b);
putchar(*(s+n%b));
}
}
int main(void){
int n,b;
scanf("%d",&n);
scanf("%d",&b);
printf("%d(10)=",n);
conv(n,b);
printf("(%d)\n",b);
return 0;
}
てきとー。おやすみなさい。
142デフォルトの名無しさん:2008/01/17(木) 04:45:59
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):文字列として入力した式(一行)を計算し、その値を表示するプログラム。
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:Visual Studio 8
 [3.3] 言語:C
[4] 期限:1/18
[5] その他の制限:少なくとも2つの2桁の整数に対する計算(四則演算)ができること。

どうかよろしくお願いしますm( _ _ )m
143デフォルトの名無しさん:2008/01/17(木) 08:46:29
【時間切れ】 (1/16)
>40

【未解決問題】
http://pc11.2ch.net/test/read.cgi/tech/1199515728/986 期限切れだが早めに (pass:c)

>>142 1/18
http://pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18
>>86 1/22
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>79 無期限
144デフォルトの名無しさん:2008/01/17(木) 08:51:33
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):円周上の点の複数の座標から円の中心(a,b)や半径rを求める
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C++
[4] 期限: 無期限
[5] その他の制限: 特になし
145デフォルトの名無しさん:2008/01/17(木) 08:57:26
>>144
点は3つでいいのかな?
146デフォルトの名無しさん:2008/01/17(木) 09:07:47
>>145
100個ぐらいからです・・・。
まったくわからないんです。よろしくお願いします。。。
147デフォルトの名無しさん:2008/01/17(木) 09:17:34
円を特定するには、一直線上にない異なる3点で必要十分じゃね?
148144:2008/01/17(木) 09:21:01
すいません。問題間違いました。

正しくは、100個の座標からそれが円であるかどうか(完璧にきれいな円でなくてもよい)を判定するプログラムの作成でした。

よろしくお願いします。。。
149デフォルトの名無しさん:2008/01/17(木) 09:25:05
判定方法は提示してもらわんとねぇ。
150デフォルトの名無しさん:2008/01/17(木) 09:28:13
>>149
すいません!ハフ変換を使って判定します。
色々と足りないところだらけで申し訳ありません。。。
151デフォルトの名無しさん:2008/01/17(木) 12:52:31
[1] 授業単元: プログラミング入門
[2] 問題文
(1)走行距離10kmまでは基本料金の6000円。10kmを超えた場合は、超えた距離に対して1kmあたり50円が加算される。
(2)深夜料金10時以降5時までは最終的な料金を2割増しする20キロを超えると1割引とする。
(3)迎車を使用した場合は400円として(1)〜(3)を入力して料金を出力するプログラムを作れ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C
[4] 期限: 1月17日
[5] その他の制限:関数まで(初期の簡単なプログラムです)
152デフォルトの名無しさん:2008/01/17(木) 12:53:06
151続き
(1)までのプログラム
#include<stdio.h>
main()
{
int run,price;
printf("走行距離(km)を入力せよ:");
scanf("%d",&run);
if(run<=10)
{
printf("料金は6000円です\n");
}
else
{
price=(run-10)*50+6000;
printf("料金は%d円です\n",price);
}
}

(2)と(3)お願いします。
153デフォルトの名無しさん:2008/01/17(木) 13:09:10
「2割増しする20キロ」とか、「(1)〜(3)を入力」とか、随分ややこしいな。
154デフォルトの名無しさん:2008/01/17(木) 13:19:22
最初に乗ったキロと深夜かどうかなどの入力をさせてやろうとしたんですが・・・。できなくてとりあえず(1)までやってみました。ややこしくてすいません。
155デフォルトの名無しさん:2008/01/17(木) 13:32:41
落ち着け、>153は皮肉だ。
以下、問題を列挙
・深夜料金の適用条件
例えば乗車時刻が21:59だったら? 或いは4:59だったら?
・迎車との関係
例えば呼んだのが21:59だったら? また、迎車時刻を指定されることはある?
・消費税の考慮
・タクシー料金にしては論外に高い初乗り料金
156デフォルトの名無しさん:2008/01/17(木) 13:39:10
>155
指摘ありがとうございます。

判定条件が指定されてないので、今回は乗車時刻が22時〜5時に一秒でもかかっていたら深夜料金として計算します。
迎車は有無のみで課金します。もし迎車を使用して深夜であれば最終的な料金は乗った距離の値段×深夜割増+迎車料金で出します。

消費税は考慮しません。確かに問題文法外な値段ですね^^;教授が意地悪なので・・・。

以上の点宜しくお願いします。
157デフォルトの名無しさん:2008/01/17(木) 15:41:20
#include <stdio.h>
#include <malloc.h>
#define buffer_size 10
int main(int argc ,char *argv[])
{
FILE *fp;
fpos_t *start_fpos,*end_fpos;
char *buffer;
int n,option;
option=getopt(argc,argv,"rw");
switch(option){
case 'w':
fp=fopen(argv[1],"w");
buffer=(char *)malloc(buffer_size);
printf("文字列を書き込んでください\n");
scanf("%s",buffer);
fprintf(fp,buffer);
free(buffer);
break;
}
fclose(fp);
return 0;
}
指定したバッファサイズが入力文字数よりも小さい場合、
セグメンテーションエラーがでます。
#defineを変えないでmallocを使い書き加えるには何の関数を使えばいいですか?
ヒントをくださいませんか?よろしくお願いします。
158デフォルトの名無しさん:2008/01/17(木) 15:47:11
>>157
buffer=(char *)malloc(buffer_size*100);
159デフォルトの名無しさん:2008/01/17(木) 15:57:02
[1] 授業単元: C言語入門
[2] 問題文
キーボードから入力された文字列に指定した文字が何個
含まれているか表示するプログラムを作りなさい。

動作例:


 キーから文字を数文字入力してください= alpha-dog

 調べる文字を入力してください= a

 入力された文字列の中に a は、2 個ありました。


[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C
[4] 期限: 1月17日
[5] その他の制限:
160デフォルトの名無しさん:2008/01/17(木) 16:20:20
>>159
#include <stdio.h>
int main(void)
{
int i,num=0;
char str[100],ch;
printf("文字列を入力してください:");
gets(str);
printf("探す文字を入力してください:");
scanf("%c",&ch);
for(i = 0;str[i];i++)if(str[i]==ch)num++;
printf("%c は %d 個見つかりました",ch,num);
return 0;
}
161157:2008/01/17(木) 16:42:11
正確な文字数でメモリ確保する方法ないですか?
ヒントください。
162デフォルトの名無しさん:2008/01/17(木) 16:47:01
文字列が入力されるまで長さがわからないなら、事前にその文字数分確保する方法はないだろ。
多目に確保するのがどうしてもイヤならリストにでもしろよw
163デフォルトの名無しさん:2008/01/17(木) 17:09:18
>>161
scanfを使わない
164デフォルトの名無しさん:2008/01/17(木) 18:10:39
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):整数をm個入力してソートし、その後(2分)検索をn回行うプログラムを作りなさい(mとnは入力して決める)。ただし、できるだけポインタを利用した関数を作成して用いなさい。
[3] 環境
 [3.1] OS: (Windows Vista)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C)
[4] 期限: [2008年1月18日12:00まで]
[5] その他の制限:

お願いします。
165デフォルトの名無しさん:2008/01/17(木) 18:18:26
>>161
多めに確保して、改めてmallocで宣言するくらいだな。
166 ◆cPUZU5OGFs :2008/01/17(木) 18:56:26
前スレ986の2分木の者です。
何とか解決出来たので>>143のリストから削除お願いします。
もし取り掛かってる方いましたらありがとうございました。
167デフォルトの名無しさん:2008/01/17(木) 19:53:12
コンパイルは通るのですが、「メモリが"written"になることはできませんでした」というエラーが出てばっかりで、やりきれない気持ちでいっぱいになりました。
forループと複雑な計算を大量にしていると起こりやすい気がするのですが、その場合に考えられる特定の原因ってありますか?
168デフォルトの名無しさん:2008/01/17(木) 19:56:50
ポインタじゃねえの?
169デフォルトの名無しさん:2008/01/17(木) 19:59:44
[1] 授業単元: プログラミング1
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5790.txt
[3] 環境
 [3.1] OS: Windows、Unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2008年1月17日21:00まで
[5] その他の制限: 図があるためリンクを押すとzipを開くようになっています。
            問題と図は無題.bmpです。ウイルスではありません。

お願いします。
170デフォルトの名無しさん:2008/01/17(木) 19:59:52
>>168
試しにforループ内のiを逐一表示してみたのですが、i++なのに何故か途中でとんでもない数字に飛んだりします。
ポインタの扱いを間違っているって事ですか?
171デフォルトの名無しさん:2008/01/17(木) 20:00:11
>>167
文章は読めたのですが、「こいつは一体何がいいたいんだ?」という疑問が出てばっかりで、
やりきれない気持ちでいっぱいになりました。
ソースを晒せばすぐに原因が分かる気がするのですが、それをしない特定の理由ってありますか?
172デフォルトの名無しさん:2008/01/17(木) 20:00:19
>>169
すみません、URLをまちがえました
173デフォルトの名無しさん:2008/01/17(木) 20:01:11
174デフォルトの名無しさん:2008/01/17(木) 20:09:58
175デフォルトの名無しさん:2008/01/17(木) 20:17:50
>>169
#include <stdio.h>
#include <stdlib.h>
int route(int m, int n)
{
if (m == 1 || n == 1) return 1;
else return route(m - 1, n) + route(m, n - 1);
}

int main(int argc, char *argv[])
{
if (argc != 3)
return 1;
int m = atoi(argv[1]), n = atoi(argv[2]);
printf("%d", route(m, n));
return 0;
}
176デフォルトの名無しさん:2008/01/17(木) 20:23:58
>>175
実行してみたのですがなにも起こりませんでした・・・
177167:2008/01/17(木) 20:26:46
>>171
やりきれない気持ちにさせてしまい申し訳ありません。私が分からないだけでよくある話かと思い、気軽に質問してしまいました。反省します。
プログラムが変な挙動をして強制終了する部分は下リンク先の大きなforループ内です。iが100を超えた瞬間にpointnの数値がオーバーフローします。プログラム自体は3ファイルに分かれていて長いので、ここに原因がなければ諦めます。

[1] 授業単元: 応用プログラミング
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5792.txt
[3] 環境
 [3.1] OS: windowsXP
 [3.2] gcc32
 [3.3] cpp
178デフォルトの名無しさん:2008/01/17(木) 20:31:59
>>177
症状が再現する最小のソースを示すのが礼儀だぞ。
widthやheightがどんな値を取るかもわからないでどうして答えられると思う?
179デフォルトの名無しさん:2008/01/17(木) 20:34:28
なんでiが100超えるん?
180デフォルトの名無しさん:2008/01/17(木) 20:36:16
>>179
ばっふぁおーばーふろー があれば簡単さw
181デフォルトの名無しさん:2008/01/17(木) 20:36:50
>>176
引数に1以上与えればなんか出るはずなんだがな
182デフォルトの名無しさん:2008/01/17(木) 20:40:12
>>181
すみません、こちらのミスでした。
ちゃんと実行できました。
ありがとうございました
183デフォルトの名無しさん:2008/01/17(木) 20:42:47
>>179
バッファオーバーフローのテスト
コンパイラが自動変数をどこに配置するかによっても結果が変わるので
必ずしも何かが起こるとは限らない

/* 最適化をオフにしてコンパイルしてね */
#include <stdio.h>

int main(void){
int x=123;
int y[1]={456};
int z=789;

printf("x=%d z=%d\n", x, z);
y[1]=0;
printf("x=%d z=%d\n", x, z);

return 0;
}
184デフォルトの名無しさん:2008/01/17(木) 20:47:55
point[100]なんだからiが100になっちゃいかんだろ。
185183:2008/01/17(木) 20:50:44
>>177
i が pointn の数値以上になるということは
//後略
の部分に問題がある可能性が高いよ


>>179
ごめん勘違いしてた
186167:2008/01/17(木) 20:52:22
>>178
最小に纏め上げるのが困難なもので…。
>>184
それでした。直した結果完璧に動きます。恥ずかしすぎる…。

みなさんご迷惑おかけしました。すれ汚しすみません。ありがとうございました。
187デフォルトの名無しさん:2008/01/17(木) 20:59:58
別にまとめる必要すらないだろ。
まあ大方、全体を見せたくないとか言うんだろうが
188デフォルトの名無しさん:2008/01/17(木) 21:13:50
>>167
pointn = (int)((rand()/(double)(RAND_MAX+1.0f))*100);//コア数
これだろ、、おかしいの。
189デフォルトの名無しさん:2008/01/17(木) 21:19:01
>>174
文字列の式は固定ではなく、手動での入力なのです・・・。
自分の説明が不足していました、すみません。
あげていただいたプログラムを参考に、自分でももう少し頑張ってみます。
190デフォルトの名無しさん:2008/01/17(木) 21:23:10
>>188
それ自体は0-99の乱数を発生させるだけで、おかしくなくね?
キャストはなくてもいいけど、あってまずいもんでもないし。
191デフォルトの名無しさん:2008/01/17(木) 21:33:53
>>190
ぉぉぅ、たしかに普通に見間違えた。
>>167 なんでもないから>>188は普通にスルーしてくれ。
かき乱してすまん。
192デフォルトの名無しさん:2008/01/17(木) 21:34:26
これだから情報を小出しにする奴は嫌いだ。。
どうせ原因は他にあるのに。
193デフォルトの名無しさん:2008/01/17(木) 21:39:10
自分でここに原因があるって思って見つけられないときは
大方別のところに原因がある。
長かろうが短かろうが、主題さえはっきりしてれば別段読み解くのは難しくない。

てことで>>167ソースplz
194デフォルトの名無しさん:2008/01/17(木) 21:41:21
もう終わってるんだけどw
195デフォルトの名無しさん:2008/01/17(木) 23:56:16
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5794.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C
[4] 期限:1月22日
[5] その他の制限: 特にないです
196デフォルトの名無しさん:2008/01/18(金) 00:07:14
【時間切れ】 (1/17)
>>151

【未解決問題】
>>164 1/18 12:00
>>142 1/18 >>172(手動入力)
http://pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18

>>86 1/22
>>195 1/22
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>79 無期限
>>144 無期限 問題文>>148
197デフォルトの名無しさん:2008/01/18(金) 00:07:39
>インターネット上でファイルの転送に利用されるプロトコルは?(20点)
>[1] FTP, [2] POP, [3] PPP, [4] SMTP << 1
>正解です。

これってPOP&SMTPもファイル転送で使わね?添付ファイルてきな意味で。
198デフォルトの名無しさん:2008/01/18(金) 00:13:10
>>144は最小二乗法の式作ってとくところからだな
199デフォルトの名無しさん:2008/01/18(金) 00:24:39
200デフォルトの名無しさん:2008/01/18(金) 07:26:58
201デフォルトの名無しさん:2008/01/18(金) 08:06:12
>>164
#include <stdio.h>
#include <stdlib.h>
int cmp( const void * l, const void * r ) { return *((int*)l)-*((int*)r); }
int main( int argc, char ** args ) {
int m, n, i, * data;
printf( "input m :" ); scanf( "%d", &m );
printf( "input n :" ); scanf( "%d", &n );
data = ( int * )calloc( m, sizeof( int ) );
if ( ! data ) { puts( "no memory."); exit(1) ; }
for ( i = 0; i < m; ++i ) scanf( "%d", &data[ i ] );
qsort( data, m, sizeof( int ), cmp );
for ( i = 0; i < n; ++i ) {
int * p, q;
printf( "search for >" ); scanf( "%d", &q );
p = bsearch( &q, data, m, sizeof( int ), cmp );
if ( p ) printf( "%d found at %d, %d\n", q, 1 + ( p - data ), data[ ( p - data ) ] );
else printf( "not found.\n" );
}
free( data );
return 0;
}
202デフォルトの名無しさん:2008/01/18(金) 10:28:31
[1] 授業単元:プログラミング
[2] 問題文:問題@
      商品番号・商品名・個数・単価を対象とする構造体の配列を利用し、
      データを入力して、一覧表を表示するプログラムを作りなさい。ただし、
      各データごとに金額を、最後に合計金額を出しなさい。

      問題A
      上の問題の構造体の配列を利用し、データを入力した後、商品番号を
      並び替えを行い、その結果を一覧表として表示するプログラムを
      作りなさい。

[3] 環境
 [3.1] OS: (WindowsVISTA)
 [3.2] コンパイラ名とバージョン: (borland)
 [3.3] 言語: (C)
[4] 期限: ■■緊急■■本日1月18日正午まででお願いします。
[5] その他の制限: 特にありません。
203デフォルトの名無しさん:2008/01/18(金) 12:42:14
[1] 授業単元:プログラミング
[2] 問題文:文字列を逆順にコピーする関数xcopyをポインタを用いて作り、確認のためのプログラムを作りなさい。ただし、xcopy(char*to,char*from)とします。なお、対象とするデータは通常の英数字とします。
[3] 環境
 [3.1] OS: (Windows VISTA)
 [3.2] コンパイラ名とバージョン: (borland)
 [3.3] 言語: (C)
[4] 期限: 1月18日
[5] その他の制限:

前102代目に書き込んだんですが見れなくなってしまったのでもう一度お願いします。
204デフォルトの名無しさん:2008/01/18(金) 12:50:39
>>203
昔のスレからの拾い物

700 名前:デフォルトの名無しさん[sage] 投稿日:2007/12/06(木) 20:47:06
[1] 授業単元:C言語
[2] 問題文

要素数がnoであるint型の配列v2の並びを逆順にしたものを配列v1に格納する関数、
void intary_rcpy(int v1[],const int v2[],int no) {/…/}
を作成せよ

[3] 環境
[3.1] OS:Windows XP
[3.2] VS2005
[3.3] 言語:C++
[4] 期限: 12月7日(金)の午前中まで
よろしくお願いします

702 名前:デフォルトの名無しさん[sage] 投稿日:2007/12/06(木) 21:00:46
>>700
#include <algorithm>
void intary_rcpy(int v1[],const int v2[],int no){std::reverse_copy(v2, v2+no, v1);}
205 ◆vLIz8KOkPM :2008/01/18(金) 12:54:05
[1] プログラミンぐ演習
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5798.txt
[3.1] Linux
[3.2] gcc
[3.3] C言語
[4] 今日15時まで

エラーの内容がわかりません…どなたか修正してください…
206デフォルトの名無しさん:2008/01/18(金) 12:56:36
>>203
void xcopy(char *to, char *from)
{
char *p = from;
while(*p) p++;
while(p--!=from) *to++ = *p;
*to = '\0';
}
207デフォルトの名無しさん:2008/01/18(金) 13:54:06
>>205
とりあえず その30行目を穴が開くまで読み返せ



new[ length ] = ’\0’;
single quotationが全角だ
208デフォルトの名無しさん:2008/01/18(金) 14:32:38
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5799.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: [2008年01月18日23:59まで](本日中)
[5] その他の制限:

B_1は自力でいけましたが2に手が出ません;
209デフォルトの名無しさん:2008/01/18(金) 16:20:22
>>208 B_2
#include <stdio.h>
#define N 20

void place_queen(int *x, int n, int k)
{
    int i, j;
    if(k == n){
        for(i = 0; i < n; i++)
            printf("%d ", x[i]);
        putchar('\n');
        return;
    }
    for(i = 0; i < n; i++){
        for(j = 0; j < k; j++)
            if(i == x[j] || k - j == i - x[j] || k - j == x[j] - i)
                break;
        if(j == k){
            x[k] = i;
            place_queen(x, n, k + 1);
        }
    }
}

int main(void)
{
    int n, x[N];
    printf("Input n : ");
    scanf("%d", &n);
    place_queen(x, n, 0);
    return 0;
}
210デフォルトの名無しさん:2008/01/18(金) 16:43:55
211デフォルトの名無しさん:2008/01/18(金) 18:13:00
212211:2008/01/18(金) 18:20:51
213208:2008/01/18(金) 21:00:56
みなさんありがとうございます><;
参考にさせていただきました。非常に助かります

申し訳ないのですが、
もしよろしかったらこちらの方もお願いできませんか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5803.txt
214デフォルトの名無しさん:2008/01/18(金) 22:01:12
[1] 授業単元: プログラミング中級
[2] 問題文(含コード&リンク):random1.txt、random2.txtという名前の2つのファイルを
作成し、それぞれに0〜100の範囲の乱数(整数)を20個ずつ書き込みなさい。
これら2つのファイルの内容を1行ずつ比較し、大きいほうの数をmax.txtに
書き込みなさい。
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: わかりません。
 [3.3] 言語: C++
[4] 期限:無期限ですが、なるべく早く知りたいです。
215214:2008/01/18(金) 22:02:59
途中まではやってみました・・

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

int main(void)
{
FILE *fout, *fout2, *fout3, *fin, *fin2;

int buf,buf2;
char filename2[]="random1.txt";
char filename3[]="random2.txt";
char filename4[]="max.txt";
int i;

printf("ファイルrandom1.txtを作成しました。\n");
printf("ファイルrandom2.txtを作成しました。\n");
printf("ファイルmax.txtを作成しました。\n");
216デフォルトの名無しさん:2008/01/18(金) 22:03:22
>>213
良さそうな教授だなーとちょっと羨ましく思った。そんな俺は非情報学部。
217214:2008/01/18(金) 22:03:42
続きです

fout=fopen(filename2,"w");
srand(time(NULL));
for(i=0;i<20;i++){
buf=rand()%101;
fprintf(fout,"%d\n",buf);
}

fout2=fopen(filename3,"w");
for(i=0;i<20;i++){
buf2=rand()%101;
fprintf(fout2,"%d\n",buf2);
}

fin = fopen(filename2, "r");
if(fin == NULL){
printf("%dをオープンできません\n", filename2);
exit(1);
}
218デフォルトの名無しさん:2008/01/18(金) 22:07:50
[1] 授業単元:CプログラミングT
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5805.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:分かりません
 [3.3] 言語:C++
[4] 期限:2008年1月19日 09:00
[5] その他の制限:特にありません
よろしくお願いします!
219214:2008/01/18(金) 22:08:01
fin2 = fopen(filename3, "r");
if(fin2 == NULL){
printf("%dをオープンできません\n", filename3);
exit(1);
}

fout3=fopen(filename4,"w");
while(1){
if (fscanf(fin,"%d",buf)==EOF) break;
if (fscanf(fin2,"%d",buf2)==EOF) break;

if(buf>buf2){
fprintf(fout3,"%d\n",buf);
}
else fprintf(fout3,"%d\n",buf2);
}

fclose(fout);
fclose(fout2);
fclose(fin);
fclose(fin2);
fclose(fout3);

return 0;
}
220デフォルトの名無しさん:2008/01/18(金) 22:16:02
>>214 すこしせこいがこれじゃだめかね
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
FILE *fran1, *fran2, *fmax;
char filename1[] = "random1.txt";
char filename2[] = "random2.txt";
char filename3[] = "max.txt";
int i, buf1, buf2;
if ((fran1 = fopen(filename1, "w")) == NULL ||
(fran2 = fopen(filename2, "w")) == NULL ||
(fmax = fopen(filename3, "w")) ==NULL) {
printf("ファイルが作れません\n");
return -1;
}
printf("ファイルrandom1.txtを作成しました。\n");
printf("ファイルrandom2.txtを作成しました。\n");
printf("ファイルmax.txtを作成しました。\n");
srand(time(NULL));
for (i = 0; i < 20; ++i) {
buf1 = rand()%101;
buf2 = rand()%101;
fprintf(fran1, "%d\n", buf1);
fprintf(fran2, "%d\n", buf2);
fprintf(fmax, "%d\n", (buf1 >= buf2) ? buf1 : buf2);
}
fclose(fran1);
fclose(fran2);
fclose(fmax);
return 0;
}
221デフォルトの名無しさん:2008/01/18(金) 22:30:26
れいぷれいぷ
222デフォルトの名無しさん:2008/01/18(金) 22:35:46
長くなるんならアップロードしろ
223デフォルトの名無しさん:2008/01/18(金) 22:36:53
すいません
丸投げじゃないんですが、
どこで聞いてもわからないのでわかるかたいたらおねがいします・・

”数値を文字列として入力して、一桁ずつを配列にいれて和・差・積を出す”
って問題で、ここでプログラム作ってもらったんですがわかんないとこがあって、、

↓これ、積の計算らしいんですけどどういう意味ですか(∵)?

int i, j, carry;

// 最大100桁になるので2N桁を0に初期化
for( i = 0 ; i < 2 * Max_Length ; i++ ) a[i] = 0;

for( i = 0 ; i < Max_Length ; i++ ) {
carry = 0;
for( j = 0 ; j < Max_Length ; j++ ) {
a[i+j] += b[i] * c[j] + carry;
carry = a[i+j] / 10;
a[i+j] -= carry * 10;

詳しく説明できるかたいたらお願いします、、
224デフォルトの名無しさん:2008/01/18(金) 22:37:47
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5806.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C 言語
[4] 期限:1月22日
[5] その他の制限: 

225214:2008/01/18(金) 22:43:53
>>220さん
ありがとうございます。
ただ、
fprintf(fmax, "%d\n", (buf1 >= buf2) ? buf1 : buf2);
がよくわかりません。。
?や:の使い方習っていなんです。
bufとbuf2を比較して表示するところがどうしてもできません。
226220:2008/01/18(金) 22:47:35
if (buf1 >= buf2) {
fprintf(fmax, "%d\n", buf1);
} else {
fprintf(fmax, "%d\n", buf2);
}
こういうこと。使い方は三項演算子でぐぐれ。
227デフォルトの名無しさん:2008/01/18(金) 22:47:48
>>225
if (buf1 >= buf2)
fprintf(fmax, "%d\n", buf1);
else
fprintf(fmax, "%d\n", buf2);
228デフォルトの名無しさん:2008/01/18(金) 23:05:12
>>223
情報を小出しにしない方がいい(・3・)YO
筆算と同じ手順と考えたらいい
229デフォルトの名無しさん:2008/01/18(金) 23:43:09
[1] C言語入門
[2] 文字列の入れ替え
[3] 環境
 [3.1] Windows XP
 [3.2] bcc55
 [3.3] C言語
[4] 1週間後
[5] 最初と最後の文字を入れ替える

動作例
文字を入力しる:12345
52341

お願いします。
230デフォルトの名無しさん:2008/01/19(土) 00:04:48
【時間切れ】 (1/18)
>142 >202 >213 ? 

【未解決問題】
>>218 1/19 9:00

>>86 1/22
>>195 1/22
>>224 1/22
>>229 1/25
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>79 無期限
>>144 無期限 問題文>>148
231デフォルトの名無しさん:2008/01/19(土) 00:05:09
[1] 授業単元:プログラミング
[2] 問題文:
グレゴリウス暦の定義を利用して入力された日は何曜日か計算しなさい
西暦1年1月1日は月曜日とする
1年は通常365日ですが閏年は366日
4で割り切れる年は閏年
100で割り切れる年は閏年ではない
400で割り切れる年は閏年
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C
[4] 期限:1月21日
[5] その他の制限:
変数名、関数名の命名規約を作成
goto文は使用しない
開発途中でのreturn  プログラム途中でのexitはしない事
よろしくお願いします。
232デフォルトの名無しさん:2008/01/19(土) 00:05:10
142ですが、課題のほうは一応どうにかなったので報告。
取り組んでいただいた方、ありがとうございました。
233デフォルトの名無しさん:2008/01/19(土) 00:09:09
>>218
/* 適切なプリプロセッサ */
#define NAMEMAX 10
#define BIRTHMAX 8
#define N 10
/* Record型構造体の定義 */
typedef struct recoord {
char personal[NAMEMAX], birth[BIRTHMAX];
double height, weight;
}Record;
/* outputData関数の定義 */
void outputData(int n, Record *r)
{
printf("%d人目の出力\n", n);
printf("名前は\t\t%s\n", r[n].personal);
printf("生年月日は\t%*s\n", BIRTHMAX, r[n].birth);
printf("身長は\t\t%4.1lf\n", r[n].height);
printf("体重は\t\t%3.1lf\n", r[n].weight);
}

/* calcBMI関数の定義 */
void calcBMI(int n, Record *r)
{
printf("%d人目のBMIは\t%4.2lf\n", n+1, r[n].weight/pow(r[n].height/100, 2.0));
}
234デフォルトの名無しさん:2008/01/19(土) 00:13:14
>>231
#include<stdio.h>
int weekday(int y,int m,int d){
if(m<3)y--,m+=12;
return (y+y/4-y/100+y/400+(m*13+8)/5+d)%7;
}
int main(void){
int y,m,d;
printf("年 = ");scanf("%d",&y);
printf("月 = ");scanf("%d",&m);
printf("日 = ");scanf("%d",&d);
printf("日 月 火 水 木 金 土\n%*s↑\n",weekday(y,m,d)*3,"");
return 0 ;
}
235デフォルトの名無しさん:2008/01/19(土) 00:17:22
>>234
問題文見る限りツェラーの公式は使えん希ガス
236デフォルトの名無しさん:2008/01/19(土) 00:23:22
>>235
>変数名、関数名の命名規約を作成
って書いてあるくらいだからいいんじゃない?
237デフォルトの名無しさん:2008/01/19(土) 00:25:28
[1] 授業単元:C入門
[2] 問題文 英文の文字列を入力した場合,文字数・単語数・文章数を求めるプログラムを作成せよ。
英文中の特殊文字は(,(カンマ).(ピリオド)!(イクスクラメーション)?(クエスチョンマーク))のみとする。単語の間には1つ以上(2つ以上でも可)のスペースが入れるものとする。
文章の最後には必ず .(ピリオド)!?のどれかが単独で使われる。,(カンマ)や.(ピリオド)!?の後にスペースが入る可能性があるが前にはスペースは入らないものとする。
省略につかう .(カンマ)は今回はないものとする。

 入力に関して
   キーボードから,文字列を一行で入力
 出力に関して
   文字数・単語数・文章数をそれぞれスペース1つあけて1行で出力(+改行)[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Study C
 [3.3] 言語:C
[4] 期限:1月22日14:00
[5] その他の制限:一年なのでそこまで難しいのはつかわずにお願いします。
238デフォルトの名無しさん:2008/01/19(土) 00:28:32
[1] C言語
[2] 500パターン(test000〜test499)のファイルを用いてそれらのハッシュ値を求めるプログラム。
(ファイルを読み込む際、手動で500パターン打ち込むのは大変なので
そこもプログラムで自動的に次々とファイルを読み込むようにしていただけたら嬉しいです)

[3]
 [3.1]Mac OS X
 [3.2]よくわかりません
 [3.3]C
[4]1/19(土)
[5]特になし


よろしくお願いします。
239デフォルトの名無しさん:2008/01/19(土) 00:29:35
>>236
>西暦1年1月1日は月曜日とする
ってのが生きてこなくなるんじゃね?
まあどうでもいいかもしれんが
240デフォルトの名無しさん:2008/01/19(土) 00:31:45
>>229
#include<stdio.h>
int main(void){
char buf[0x100];
int i;
printf("文字を入力しる:");
fgets(buf,sizeof(buf),stdin);
for(i=0; buf[i]; ++i)if(buf[i]=='\n')break;
putchar(buf[i-1]);
buf[i-1] = '\0';
printf("%s",buf+1);
putchar(buf[0]);
return 0;
}
表示上では入れ替えてると思う
241デフォルトの名無しさん:2008/01/19(土) 00:38:23
>>195
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5807.cpp

データはこんな感じで
静止画の圧縮技術と最も関係深いものはどれ?
[1] ITU-T H.261,[2] JPEG,[3] MIDI,[4] MPEG
2
10
131-45=53が成り立つのは何進法のときか?
[1] 3, [2] 7, [3] 11, [4] 13
2
10
242デフォルトの名無しさん:2008/01/19(土) 00:46:55
>>239
それを生かすソース頼む
243デフォルトの名無しさん:2008/01/19(土) 00:47:20
>>240
ありがとうございます。
ただ、課題の紙にヒントみたいのがあって
char a ='X' ;
char b ='Y' ;
char c ;

c = a
a = b
b = c
って代入していく方法があるよって書かれてました。
今見つけたので前のレスで書けなくてすいませんでした。
でも教えてくれたものも正しく動くので、これでいこうと思います。
もし、お暇でしたら代入するヒントを活用したものも考えてもらえると嬉しいです。
244デフォルトの名無しさん:2008/01/19(土) 00:53:38
>>243
#include <stdio.h>
int main () {

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

for (i = 0; i < sizeof(in) && in[i] != '\0'; ++i);

c = in[0];
in[0] = in[i-1];
in[i-1] = c;

printf("%s\n", in);
return 0;
}
245デフォルトの名無しさん:2008/01/19(土) 00:53:51
>>237
こんなんで良いか?
#include <stdio.h>

#define MAX 1024

int main()
{
int c,i=0,j;
char ary[MAX] = {'\0'};
while((c = getchar())!='\n' && i < MAX){
if(c != '.' && c != ','&& c != '!'&& c != '?')
ary[i] = c;
i++;
}
for(j = 0; j < i;j++){
if(ary[j] != ' ')
putchar(ary[j]);
else if(ary[j] == ' ')
putchar('\n');
}
return 0;
}
246デフォルトの名無しさん:2008/01/19(土) 00:59:26
>>242
ソースじゃないけど、俺が考えたのは入力した年月日と1年1月1日
との日数の差を出してから7で割って割り切れたら月曜、1余ったら火曜、、、
ってやるのかなー?と
247デフォルトの名無しさん:2008/01/19(土) 01:01:16
>>243
putchar(buf[i-1]);
buf[i-1] = '\0';
printf("%s",buf+1);
putchar(buf[0]);
を削除して、char c;を追加
c = buf[i-1];
buf[i-1] = buf[0];
buf[0] = c;
printf("%s",buf);
248231:2008/01/19(土) 01:11:54
>>234
ありがとうございます
結構早くできてて驚きました
>>235
そうなんですか?3日前から勉強しだしたんでよくわかりません
ツェラーの公式以外だとどんな感じになるんでしょうか?
249デフォルトの名無しさん:2008/01/19(土) 01:22:04
>>245 つくっていただいてありがとうございます。
英文の文字列を入力した場合,文字数・単語数・文章数を表示する部分お願いします
250デフォルトの名無しさん:2008/01/19(土) 01:34:38
>>248
ゴリ押しでやるとこんな感じ。

#include <stdio.h>

int main () {

int y, m, d, sum = 0;
int m_array[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
char *week[7] = {"日", "月", "火", "水", "木", "金", "土"};
printf("input (e.g. ****/**/**)\n>>");
scanf("%d/%d/%d", &y, &m, &d);

if (m > 2 && y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)) {
++sum;
}

for (m -= 2; m >= 0; --m) {
sum += m_array[m];
}

--y;

sum = sum + y * 365 + y / 4 - y / 100 + y / 400 + d;
printf("%s曜日", week[sum%7]);
return 0;
}
251231:2008/01/19(土) 01:58:56
>>250
あ、多分それだと思います
こんな時間につくってもらってホントありがとうございます
252デフォルトの名無しさん:2008/01/19(土) 02:04:54
>>237
なんか作っててめんどくさくなった
#include <stdio.h>

#define MAX 1024

int main()
{
int c,i=0,j,k,word=0,letter=0,wnum=0;
char ary[MAX] = {'\0'};
while((c = getchar())!='\n' && i < MAX){
if(c == '.' || c == '!'|| c == '?')
letter++;
if(c != '.' && c != ','&& c != '!'&& c != '?')
ary[i] = c;
if(c ==' ' && i>0 ){
k = i -1;
if(c ==' ' || ary[k] == '!'|| ary[k] == '?')
word++;
} i++; }
for(j = 0; j < i;j++){
if(ary[j] != ' '){
putchar(ary[j]);
wnum++;
}
else if(ary[j] == ' ')
putchar('\n');
}
printf("\n文字数=%d 単語数=%d 文章数=%d \n",wnum,++word,letter);
return 0;
}
253デフォルトの名無しさん:2008/01/19(土) 04:17:00
>>161
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5808.txt
fgets(), realloc(), strcat() を使いました。
254211:2008/01/19(土) 08:02:26
>>213
出勤前のお遊び。
追加するのはいいけど、ちゃんとテンプレで。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5812.txt
255デフォルトの名無しさん:2008/01/19(土) 08:08:43
>>233
解決しました,ありがとうございます!
256デフォルトの名無しさん:2008/01/19(土) 09:32:16
>>224
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5813.txt

データの形式が解らなかったので一行に1つとしてある。
ファイル名はコマンドラインから与える形にした。
あと、stdlib.hをインクルードし忘れてたので追加して。
257デフォルトの名無しさん:2008/01/19(土) 11:11:17
【質問テンプレ】
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):
入力された値nに対して、f(1)=f(2)=1、f(n)=f(n-1)+f(n-2)となるフィボナッチ数f(n)を表示するプログラミングを再帰を用いて作成せよ。
そのとき、関数fが呼ばれた回数をカウントして表示せよ。n=3,4,…,10のときにそれぞれ関数fが何回呼ばれたか調べよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語:C
[4] 期限: できれば1月20日まで
[5] その他の制限:特にないと思われるけど。とりあえず再帰関数・構造体のところなので。

よろしくお願いします。
258デフォルトの名無しさん:2008/01/19(土) 11:34:03
>>256
ありがとうございます。
ファイルはこれです。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5814.txt
259デフォルトの名無しさん:2008/01/19(土) 11:43:10
画像のピクセル間ごとの輝度を取得して、配列に格納するようなプログラム教えていただけませんか?
例えば100*100の画像なら、x[0][0]に座標0,0の輝度が格納されていくようなものです。
260デフォルトの名無しさん:2008/01/19(土) 11:44:34
>>259
マルチ。
261デフォルトの名無しさん:2008/01/19(土) 11:52:57
>>257
#include <stdio.h>
int call_count = 0;
int f(int n)
{
call_count++;
if(n == 1 || n == 2)
return 1;
else
return f(n - 1) + f(n - 2);
}
int main()
{
int n;
for(n = 3 ; n <= 10 ; ++n){
call_count = 0;
printf("f(%d) = %d\t(call count: %d)\n", n, f(n), call_count);
}
return 0;
}
262デフォルトの名無しさん:2008/01/19(土) 12:22:02
【質問テンプレ】
[1] 授業単元: 置き換え方ステガノグラフィ
[2] 問題文(含コード&リンク):
100*100のbmp画像を4つの50*50のブロックにわけ
各ブロックの輝度を計算し、左上からABCDとする。
(a)A>Bのとき0 B>Aのとき1とし
(b)C>Dのときは0 D>Cのときは1とする

仮に(a)=1,(b)=0という出力が得たとし
ここで入力値(a')=0,(b')=1とするとき
ブロック毎の輝度を調節し、画像を出力しなさい。
また再度計算させ出力が(a)=0,(b)=1として得られること

ここでの輝度計算は、(r*0.299)+(b*0.587)+(g*0.114)を使いなさい

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2005
 [3.3] 言語: C++
[4] 期限:1月21日
[5] その他の制限:無制限
263デフォルトの名無しさん:2008/01/19(土) 13:10:33
>>262
bmpの読み込みってMFCのCImageとか使って書くの?
264デフォルトの名無しさん:2008/01/19(土) 13:27:59
>>263
使っても平気です。
265デフォルトの名無しさん:2008/01/19(土) 13:50:23
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5803.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 今日中
266デフォルトの名無しさん:2008/01/19(土) 14:16:14
267265:2008/01/19(土) 14:17:59
>>266
見落としてました;
ありがとうございます
268デフォルトの名無しさん:2008/01/19(土) 16:22:21
[1] 授業単元:プログラミング初級
[2] 問題文(含コード&リンク):名前(char)、身長(double)、体重(double)、視力(視力構造体)これらのデータをメンバとする構造体を定義し、入力された表示を行うプログラムを作成してください。
入力件数は、最大5件で、名前は19文字までの入力とし、範囲外だったならばエラーメッセージ(Sorry. Input less than 20 characters.)を表示し再入力して下さい。名前に"END"が入力されたときは入力終了とします表示は身長で昇順にソートして出力して下さい
また身長、体重は、小数点第以下一位までの表示とします。視力は、小数点以下第三位までの表示とします
出力の幅は、名前が19文字文、その他は5文字分で指定してください
視力は右(double)、左(double)をメンバとする構造体で扱って下さい
1件分の入力はibput_data()で、表示はdisplay_data()で、ソートはsort_data()でと処理を関数に分けて行ってくださ
名前入力の最初に"END"が入力された場合は、その旨のメッセージ(Input data is nothing!)
を出力してください
[3] 環境
 [3.1] OS : windows
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C言語
[4] 期限:1月21日
269デフォルトの名無しさん:2008/01/19(土) 20:29:14
宿題じゃないと駄目?
270デフォルトの名無しさん:2008/01/19(土) 20:44:36
271デフォルトの名無しさん:2008/01/19(土) 20:46:49
>>269
速攻で答えてやんよ
 ∧_∧
 ( ・ω・)=つ≡つ
 (っ ≡つ=つ
 /   ) ババババ
 ( / ̄∪
272 ◆8QYSceiIsU :2008/01/19(土) 21:04:42
1] 授業単元:プログラミング
[2] 問題文(含コード&リンク)

適当な数字を与えてその数だけ「<」を使いそれに対応する「>」の例を全て表示するプログラムを作れ


2を与えた場合
<<>>
<><>

3を与えた場合
<<<>>>
<<>><>
<<><>>
<><><>

と表示する

[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語:C
[4] 期限:2008/01/20(日)

お手数ですが、よろしくおねがいします
273shogo:2008/01/19(土) 21:11:56
【質問テンプレ】
1 西暦1868年から2007年までの年号を入力して和暦に変更して出力するプログ
 ラムを作りなさい。(10点)
 例 入力 1868  出力 明治元年
      2007     平成19年
2 整数配列が–32768から32767の範囲の数しか扱えないとしたとき、10桁の整数同士
 の足し算を行うプログラムを作りなさい。(10点)
3 3桁の整数の値を入力していき、−9999が入力されたところで、それまでに入力
 された数の個数と合計を整数で、平均を浮動小数点数で出力するプログラムを作りなさ
 い。(10点)
4 3つの文字列”Happy”と“New”と“Year”をつないで1つの文字列として出力する
 プログラムを作りなさい。(10点)
5 学籍番号、氏名、出席からなる10人分のデータがある。出席の悪いものから並び替
 えて表示するプログラムを作りなさい。(10点)
 例
 BA180002 山田太郎 70
 BA170001 石田次郎 60
 データは、適当なものを各自用意して入力すること。
 
274デフォルトの名無しさん:2008/01/19(土) 21:19:39
>>272
3を与えた時、<><<>>は含まないの?
275 ◆8QYSceiIsU :2008/01/19(土) 21:23:05
>>274
<><<>>は含みません!
276デフォルトの名無しさん:2008/01/19(土) 21:25:58
>>275
理由は? 272の条件文からじゃ含むように思うんだけど。
277デフォルトの名無しさん:2008/01/19(土) 21:31:10
反転すりゃ同じになるものは省きたいんじゃないかな?
278269:2008/01/19(土) 21:34:12
>>271
よろしくお願いしまーす。
[1] 授業単元:なし
[2] 問題文(含コード&リンク):
(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5816.txt)
[3] 環境
 [3.1] OS: (WindowsXPsp2)
 [3.2] コンパイラ名とバージョン: (BCC55-BCC Developer1.2.21)
 [3.3] 言語: (どちらでも可)
[4] 期限: ([無期限]だけど早ければうれしい )
279 ◆8QYSceiIsU :2008/01/19(土) 21:34:51
>>276
すみません、<<>><>と<><<>>は括弧の計算としては同じだからだと思っていましたが、そのような指定はありませんでしたorz

とりあえず
<>><<>や><<>><とかはダメだそうです
280 ◆8QYSceiIsU :2008/01/19(土) 21:37:22
>>276さん
たびたびすいません、今確認したところ>>277さんの言うとおりでしたorz
281269:2008/01/19(土) 21:37:22
282デフォルトの名無しさん:2008/01/19(土) 21:38:01
>>279
それがダメなのは言われなくても分かるってw
283257:2008/01/19(土) 21:48:13
>>261
ありがとうございます
284デフォルトの名無しさん:2008/01/20(日) 00:07:49
【時間切れ】 (1/19)
>238

【未解決問題】
>>272 1/20

>>268 1/21
>>86 1/22
>>195 1/22
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>>148
>278 無期限

>273 ??
285デフォルトの名無しさん:2008/01/20(日) 00:34:34
>>272
再帰で簡単に書けるかと思ったらすごいことになってしまったorz
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5818.txt
もっと簡単に書けるもんかね?
286デフォルトの名無しさん:2008/01/20(日) 00:40:31
>>285
ワラタ
287デフォルトの名無しさん:2008/01/20(日) 01:17:06
>>285
対象排除してなくないか?
288デフォルトの名無しさん:2008/01/20(日) 01:30:36
>>238どなたかできませんか?
よろしくお願いします。
289デフォルトの名無しさん:2008/01/20(日) 01:32:47
ファイルの書式も書かずに催促とな
290285:2008/01/20(日) 01:32:51
うは、結局対称だめってことだったのね。。。
もう力尽きたお。てか、意外と難しくない?
291デフォルトの名無しさん:2008/01/20(日) 01:33:08
>>288
もう期限過ぎてるからいいじゃん別に
292デフォルトの名無しさん:2008/01/20(日) 01:35:25
>>290
入れ子がややこしいな
俺がアホなだけかも試練が
293デフォルトの名無しさん:2008/01/20(日) 01:41:20
<<><<>>><>
<<<>><>><>
例えばこういうのも別の要素として扱われるのかね。
そうだとしたら面倒くさいな。
294デフォルトの名無しさん:2008/01/20(日) 01:49:46
295デフォルトの名無しさん:2008/01/20(日) 01:56:46
>>272
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5820.txt
< がn個、> がn個の文字列を求めるだけなら、再帰に加え
コールバックを使うと短く書ける。最初から条件に合う
文字列を効率よく出すやり方は分からない。

# あまり確認してないのでプログラムは間違ってるかもしれん。
296 ◆8QYSceiIsU :2008/01/20(日) 02:06:31
>>285
ありがとうございます!感激です!

>>293
俺の考えですが、多分同一とみなすと思います

>>295
ありがとうございます!こんなプログラム…俺には難しくて作れませんorz
297デフォルトの名無しさん:2008/01/20(日) 08:07:10
298デフォルトの名無しさん:2008/01/20(日) 09:18:24
>>272 対象もでてしまうけど
#include<stdio.h>
#include<stdlib.h>
void disp(char *p){
for(;*--p;);
puts(p+1);
}
void brace(char *work, int brace_num, int depth){
if(depth==0 && brace_num==0){
*work='\0';
disp(work);
}
if(depth>0){
*work='>';
brace(work+1, brace_num, depth-1);
}
if(brace_num>0){
*work='<';
brace(work+1, brace_num-1, depth+1);
}
}
int main(int argc, char *argv[]){
int brace_num=3;
char *work;
if(argc==2) brace_num=atoi(argv[1]);
work=malloc(brace_num*2+2);
*work='\0';
brace(work+1, brace_num, 0);
free(work);

return 0;
}
299デフォルトの名無しさん:2008/01/20(日) 10:01:56
1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5822.txt
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語:C
[4] 期限:2008/01/21

お願いします
300デフォルトの名無しさん:2008/01/20(日) 11:01:01
>>299
mainの
student std[]={
301デフォルトの名無しさん:2008/01/20(日) 11:03:42
途中送信してしまった

>>299
mainの
student std[]={};

student std[NUMB];
にするだけで動く。平均はsougouを5で割ればいいだけ。
てかちゃんと内容を書け。
302デフォルトの名無しさん:2008/01/20(日) 12:31:20
303デフォルトの名無しさん:2008/01/20(日) 14:10:15
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5825.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:本日11:30まで
[5]その他の制限:単位がかかっているので、どなたか回答の方をお願いしますorz
304デフォルトの名無しさん:2008/01/20(日) 14:20:12
まじめにやらなかったから単位を落とすんだろ?自然なことじゃないか
305デフォルトの名無しさん:2008/01/20(日) 14:39:12
>>303
[4] 期限:本日11:30まで
DATE:2008/01/20(日) 14:10:15

最初から期限切れてるじゃん
306デフォルトの名無しさん:2008/01/20(日) 14:40:53
午後なら、11:30PMか23:30と書くべきだな。
307デフォルトの名無しさん:2008/01/20(日) 14:43:53
>>304
スイマセン……頑張っても頑張っても理解を超えた内容でした
>>305 >>306
ややこしくてすいません。23:30です
308デフォルトの名無しさん:2008/01/20(日) 14:59:47
>>307
下手に頑張っても頑張っても…とか書かれると、どう頑張って何を身につけたのか訊きたくなるじゃないか。
頑張ったからには途中まで出来ているだろうから、そこまでのソースを見せろ、とかね。
309デフォルトの名無しさん:2008/01/20(日) 15:10:17
単位がかかっていると言われると期限過ぎてから回答したくなる
310デフォルトの名無しさん:2008/01/20(日) 15:16:37
>>309
サディスト吹いたわw
311デフォルトの名無しさん:2008/01/20(日) 15:21:45
ここに丸投げして課題をクリアしようとした自分が間違っていました。すいません
今から苦Cでもう一度基礎から勉強して何とかやってみます
見苦しいレスばかりしてしまい、申し訳ありませんでした
312デフォルトの名無しさん:2008/01/20(日) 15:29:22
別に間違ってないんじゃない?
ただ「〜がかかっている」とか理由をつけて解答を迫ってるのが
人によっては癪に障るだけで。
313デフォルトの名無しさん:2008/01/20(日) 15:41:42
ちょっと待て、「苦C」って「苦しんで覚える……」か?
あんなサイトで基礎から勉強するから見につかないんだと思うぞ。
314 ◆8QYSceiIsU :2008/01/20(日) 15:49:45
>>298
3しか出ないのですが、どこを書き換えればいいですか?
315デフォルトの名無しさん:2008/01/20(日) 15:51:32
>>314
>>298のレスを3で検索かけてみればいいだろ
316 ◆8QYSceiIsU :2008/01/20(日) 15:55:00
>>315
int brace_num=3;のところだと思うのですが、そこをどう書き換えればいいのかわからないのですorz

scanfだと思っていろいろいじったのですがエラーになってしまって…
317デフォルトの名無しさん:2008/01/20(日) 16:15:10
scanfもわからないのに再帰を提出するのはまずいと思うぞw
318 ◆8QYSceiIsU :2008/01/20(日) 16:17:01
>>317
今は提出だけが目的なんで…すみませんorz
319 ◆1FgF6ehpzk :2008/01/20(日) 16:17:50
>>238だが、>>288お前なりすましか?
注意書き通り名前のところにトリップ入れておけばよかった。


スレ汚しすまん。
もう消える。
320デフォルトの名無しさん:2008/01/20(日) 16:24:17
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5826.txt
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C
[4] 期限:1月21日


321デフォルトの名無しさん:2008/01/20(日) 16:50:13
>>301
ありがとうございます!なんでエラーがおこるのかわからなくて相当困ってました。
322デフォルトの名無しさん:2008/01/20(日) 16:59:35
>>272
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5827.c
<<><>><<>><>
<<><>><><<>>
<<>><<><>><>
みたいに入れ子関係を変えない並び替えで同じになるものは同一とみなした.
これってグラフ理論とかの講義?
323 ◆8QYSceiIsU :2008/01/20(日) 17:07:17
>>322
ありがとうございます!
これはゼミの問題でしたσ(^_^;)アセアセ...
324デフォルトの名無しさん:2008/01/20(日) 17:41:22
[1] 授業単元:文字列
[2] 問題文:
最大50文字で文字列を読み取り、
その文字数を出力するプログラム
(例:aiueo=5文字)

[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:?
 [3.3] 言語:C++
[4] 期限: 2008年1月20日22:00まで
[5] その他の制限:


お願いします(ノ_・。)
325デフォルトの名無しさん:2008/01/20(日) 17:46:55
>>324
#include<iostream>
#include<string>
int main()
{
std::string str;
std::cin>>str;
std::cout<<str.size()<<"文字"<<std::endl;
return 0;
}
326デフォルトの名無しさん:2008/01/20(日) 17:47:24
>>324 は削除でお願いします!!
ごめんなさい..

[1] 授業単元:
[2] 問題文:
数値を文字列として2つ入力し、
大小を求めるプログラムを作成せよ
(例:52846>48426)
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++
[4] 期限:2008年1月20日22:00まで
[5] その他の制限:

お願いします(ノ_・。)
327デフォルトの名無しさん:2008/01/20(日) 17:48:16
>>325
ありがとうございます!!
328デフォルトの名無しさん:2008/01/20(日) 17:50:40
>>326
int main(void)
{
using namespace std;
int a, b;
cin >> a;
cin >> b;
cout << max(a,b) << ">" << min(a,b) << endl;
return 0;
}
329デフォルトの名無しさん:2008/01/20(日) 18:03:55
330269:2008/01/20(日) 18:09:26
プリーズ、プリーズ
331デフォルトの名無しさん:2008/01/20(日) 18:16:18
>>326

#include <iostream>

int main (int argc, char **argv) {
using namespace std;
int a, b;
cout << "数字を二つ入力してよ" << endl;
cin >> a >> b;
cout << a << (a == b ? "=" : (a < b ? "<" : ">")) << b << endl;
}      
332デフォルトの名無しさん:2008/01/20(日) 18:20:46
>>330
問題文が理解不能だった
333デフォルトの名無しさん:2008/01/20(日) 18:56:02
>>330 >>278
とりあえずA.txtとB.txtとC.txtの見本みたいのがないとよくわからんな
あと樹形図化ってあるけど、どういう規則の木構造なのかもわかるとうれしい
334デフォルトの名無しさん:2008/01/20(日) 19:11:11
まじで何回も聞いてますができません↓
わかるかたお願いします↓


[1] 授業単元:
[2] 問題文:

最大50文字の数値を文字列として2つ入力して、
その差を求めるプログラムを作成せよ。
なお、最初に入力したものから後に入力したものを引くこととする

[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++
[4] 期限:2008年1月20日23:00まで
[5] その他の制限:
答えがマイナスになる場合もお願いします、、
あとできれば説明もお願いします
335デフォルトの名無しさん:2008/01/20(日) 19:51:31
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):添付されたファイル"city.txt"に、
日本の政令指定都市に関するデータが収められている。
このファイルを読んで、構造体の配列に格納し、
ソートを実行するプログラムを作成する。

構造体のメンバは、
都市名・登録年月日・面積・人口とし、
ソートはレコードの内容について、
まず、都市名の昇順(アルファベット順)にソートし、
次に、登録年月日の昇順にソートするものとする。

単純交換法でソートを実行した場合と、
単純選択法でソートを実行した場合の結果を示し、
違いがあれば、その違いの特徴を説明し、理由も書きなさい。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語: C
[4] 期限: 1/22日まで
[5] その他の制限:city.txtなどは次に書きます。よろしくお願いします。
336デフォルトの名無しさん:2008/01/20(日) 19:52:30
>>335
city.txtの中身


都市名 登録年月日 面積[km^2] 人口[人] (2007年12月1日現在)
Sapporo 1972/04/01 1,121.12 1881218
Sendai 1989/04/01 735.16 1029595
Saitama 2003/04/01 217.49 1192005
Chiba 1992/04/01 272.08 938293
Yokohama 1956/09/01 437.38 3,630830
Kawasaki 1972/04/01 142.70 1,372762
Niigata 2007/04/01 726.10 813170
Shizuoka 2005/04/01 1,388.78 710902
Hamamatsu 2007/04/01 1,511.17 811446
Nagoya 1956/09/01 326.45 2238223
Kyoto 1956/09/01 827.90 1469242
Osaka 1956/09/01 222.27 2645790
Sakai 2006/04/01 149.99 835257
Kobe 1956/09/01 552.15 1530912
Hiroshima 1980/04/01 905.13 1163051
Kitakyushu 1963/04/01 487.71 987337
Fukuoka 1972/04/01 340.60 1429828
337デフォルトの名無しさん:2008/01/20(日) 19:53:26
>>336
すいません見にくかったです。

都市名 登録年月日 面積[km^2] 人口[人] (2007年12月1日現在)
Sapporo 1972/04/01 1,121.12 1881218
Sendai 1989/04/01 735.16 1029595
Saitama 2003/04/01 217.49 1192005
Chiba 1992/04/01 272.08 938293
Yokohama 1956/09/01 437.38 3,630830
Kawasaki 1972/04/01 142.70 1,372762
Niigata 2007/04/01 726.10 813170
Shizuoka 2005/04/01 1,388.78 710902
Hamamatsu 2007/04/01 1,511.17 811446
Nagoya 1956/09/01 326.45 2238223
Kyoto 1956/09/01 827.90 1469242
Osaka 1956/09/01 222.27 2645790
Sakai 2006/04/01 149.99 835257
Kobe 1956/09/01 552.15 1530912
Hiroshima 1980/04/01 905.13 1163051
Kitakyushu 1963/04/01 487.71 987337
Fukuoka 1972/04/01 340.60 1429828
338デフォルトの名無しさん:2008/01/20(日) 19:58:11
>>335>>336>>337
337はミスりました、すいません。

#include<stdio.h>
#define N 17 //*keyの個数
#define SIZE 20 //*nameの大きさ

struct city{
char name[SIZE];
int year, month, day;
double area;
int population;
};
struct city key[N];
int main(void){
FILE *fp;
int i;
char naka[100];
fp = fopen("city.txt","r");
if(fp!=NULL){
printf("ファイルを開きました\n");
}
fgets(naka,100,fp);
for(i = 0; i < N; i++){
fscanf(fp,"%s %d/%d/%d %lf %d",key[i].name, &key[i].year, &key[i].month, &key[i].day, &key[i].area, &key[i].population);
printf("%s %d/%d/%d %lf %d\n",key[i].name, key[i].year, key[i].month, key[i].day,key[i].area, key[i].population);
}
return 0;
}
これを元に作ってほしいです。よろしくお願いします
339デフォルトの名無しさん:2008/01/20(日) 20:09:55
>>334
#include <iostream>
using namespace std;
int main()
{
double n1, n2;
// 一つ目入力
cout << "n1 : ";
cin >> n1;
// 二つ目入力
cout << "n2 : ";
cin >> n2;
// 結果出力
cout << "n1 - n2 : " << n1 - n2 << endl;
return 0;
}
340デフォルトの名無しさん:2008/01/20(日) 20:32:40
>>339
ありがとうございます!
でもまだ
using namespace std;
をならってません(ノ_・。)
341デフォルトの名無しさん:2008/01/20(日) 20:34:03
ほんとにC++かよw
342デフォルトの名無しさん:2008/01/20(日) 20:38:37
つうか、doubleで大丈夫なのか?
stringなりchar配列でやれって意味だと思うんだけど
343デフォルトの名無しさん:2008/01/20(日) 20:42:32
>>340
文字列から数値への変換は自分でやるの?
入力とかは、scanfとかでやれとか?
使っていいものの条件をかいてくれ。
344デフォルトの名無しさん:2008/01/20(日) 20:57:51
>>340
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5829.txt
冗長だが。

数値に区切って算出した方がいいんだよな。
345デフォルトの名無しさん:2008/01/20(日) 21:04:56
>>335
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5830.txt
city.txtの","って取り除かないと読めなくない?
346344:2008/01/20(日) 21:05:41
すまん、こっちで
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5831.txt

ますますクソだわ、吊ってくる...
347デフォルトの名無しさん:2008/01/20(日) 21:09:54
char配列だと思います。。
あとscanfもまだ習っていません、、
文字列の入力は cin.getline しか習ってないんですが。。。
まさかこれでこの問題乗り切るのむりですか?(´△`)


よくわかんないので、以前に和を出す方法を教えてもらったのでそれの一部のせます!
前後はしょってるので意味わかんなかったらごめんなさい、、

// 足し算
// a = b + c
int add(char a[], char b[], char c[])
{
int i ,carry = 0;
for( i = 0 ; i < Max_Length ; i++ ) {
a[i] = b[i] + c[i] + carry;
carry = a[i] / 10;
a[i] = a[i] - carry * 10;

}
return carry;
}
348デフォルトの名無しさん:2008/01/20(日) 21:43:20
250ってそのまま書いても大丈夫なんですかね?
今ソフトがないもんで・・・
349デフォルトの名無しさん:2008/01/20(日) 21:53:38
お願いします

[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
問題1;nの階乗の表を表示するプログラム(intで表示できる範囲のみ)

問題2: 二次元配列を使い、以下の点数表から各人の3科目の平均点と各科目ごとの5人の平均点を求めるプログラム

    国語 数学 英語
安藤  56  45   67
加藤  64  34   55
田中  53  76   46
山田  75  78   78
山本  60  67   62

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:コマンドプロンプト
 [3.3] 言語: C
[4] 期限: 2008年1月21日00:00まで
[5] その他の制限: なし
350デフォルトの名無しさん:2008/01/20(日) 21:55:48
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5832.txt
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C言語
[4] 期限:1月22日
[5]制限 : お願いします。
351デフォルトの名無しさん:2008/01/20(日) 22:24:16
>>350
#include <stdio.h>
#define LMAX 100
int char_counter(char c, char * str)
{
int cnt=0;
while(*str!='\0'){
if(*str==c)
cnt++;
str++;
}
return cnt;
}
main()
{
char c,str[LMAX];
int cnt=0;
printf("文章:");
fgets(str,LMAX-1,stdin);
for(c=33;c<127;c++){
cnt=char_counter(c,str);
if(cnt>0)
printf("[%c]->%d個\n",c,cnt);
}
}
352デフォルトの名無しさん:2008/01/20(日) 22:33:36
[1] 授業単元:C言語
[2] 問題文
1つ以上の空白文字で区切られた英文を半角文字列として入力し、空白文字
を区切りとし分解して表示する。以上の動作をNULLが入力されるまで繰り返
すプログラムを作成しなさい。
@文字列の入力にはgets関数を使用すること。また、最大で80文字
 までしか入力されないものとする。
A空白文字かどうかは文字検査関数(is・・・)を使用して調べること。
B半角文字しか入力されないもとする
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C
[4] 期限:なし
[5] その他の制限:
353shogo:2008/01/20(日) 23:15:54
>>>273
ディフォルトの名無しさんご回答ありがとうございました!
大変参考になりました!!
354デフォルトの名無しさん:2008/01/20(日) 23:27:08
ディフォルトの名無しさんって宿題全部やっちゃってすごいよね
355デフォルトの名無しさん:2008/01/20(日) 23:30:25
356デフォルトの名無しさん:2008/01/20(日) 23:32:25
>>352
空白を複数個入れると表示が見苦しくなるが気にするな。
そうしちゃいけないとは書いていないから。


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

int main()
{
char buf[81];
int i;

while(gets(buf)){
if(!strcmp(buf,"NULL"))
break;
for(i=0;buf[i];i++)
putchar(isspace(buf[i])?'\n':buf[i]);
printf("\n\n\n");
}

return 0;
}
357デフォルトの名無しさん:2008/01/20(日) 23:56:04
>>352 では表示が見苦しくならないようにしたものを。先頭に空白が入ってても大丈夫にしてある。
#include <stdio.h>
#include <ctype.h>
#define LMAX 80
main()
{
int i=0;
char str[LMAX+1];
while(gets(str)){;//本当はfgets(str,LMAX,stdin)を使いたい
while(str[i]!='\0'){
if(isspace(str[i])){
if(i>0&&!isspace(str[i-1]))
putchar('\n');
}else
putchar(str[i]);
i++;
}
putchar('\n');
}
}
358デフォルトの名無しさん:2008/01/21(月) 00:09:07
359269:2008/01/21(月) 00:33:14
>>333
混乱させていたらごめんなさい、樹形図化とはただの総書き出しのことです。
以下は私のイメージによる、辞書式に総書き出しをした場合の最初と最後の100件ずつ計200行です。

1行は常に25bytesです(Numberの右揃え7桁で7bytes+半角スペース1個で1byte+Combinationの2桁表記数字が6個分と半角カンマ5個分で17bytes)。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5837.txt

これはn2c処理の材料の一例、B.txt(右揃え無し)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5833.txt
これはB.txtにn2c処理をした後=C.txt(Number部分は右揃え7桁になっている)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5834.txt

n2c処理出来るものさえ頂戴出来れば僥倖ですが、c2n処理の材料であるA.txtは以下。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5835.txt
あと、自分でヒントを探した際に理解できなかったのですが(C#だし)考え方のノリとしてはこれです。
http://www.microsoft.com/japan/msdn/vs/vcsharp/mth_lexicograp.aspx
360デフォルトの名無しさん:2008/01/21(月) 00:36:34
【時間切れ】 (1/20)
>303

【未解決問題】
>>86 1/22
>>335 1/22
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>>148
>278 無期限
361デフォルトの名無しさん:2008/01/21(月) 00:41:37
Cプログラマ必須テキスト!

http://mori.eco.to/
362デフォルトの名無しさん:2008/01/21(月) 00:44:15
宣伝するなクソが
363デフォルトの名無しさん:2008/01/21(月) 01:06:33
>>355>>358
Thanks!!
364デフォルトの名無しさん:2008/01/21(月) 01:43:30
ここって仕様書のせたらプログラム作ってくれますか?(゚゚)
もしだめなら仕様書のせてプログラム作ってくれるスレ教えてくだされ(ノ_・。)
365デフォルトの名無しさん:2008/01/21(月) 01:46:29
>>364
無償では誰もやらないと思うYO!
366デフォルトの名無しさん:2008/01/21(月) 01:50:05
スレ立てればいいじゃん
367デフォルトの名無しさん:2008/01/21(月) 02:53:00
仕事代行スレ?面白そうだね。
作るならJAVAやC#その他言語もOKなスレにして欲しいな。
【無料】仕事代行ギコ猫商会【無保証】
猫の手を借りたいほど忙しい人が、プログラム好きの猫たちに仕事を依頼するスレです。
猫たちは気紛れなので、依頼を受け無い時もあります。途中で投げ出すかも知れませんし
出来たとしても猫たちの能力はまちまちなので品質は保証できません。
また、倫理や契約に違反する可能性がありますので十分注意してください。

まあ利用できるのは、個人ぐらいだろうな。企業とかでこんな所に仕事を投げたのが
ばれたら大変な事になりそう。
368デフォルトの名無しさん:2008/01/21(月) 03:06:34
>>359
ロト6のできたよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5842.txt
何に使うのか気になるなw
369348:2008/01/21(月) 03:21:22
スイマセン勘違いしてました
ところで250の
printf("input (e.g. ****/**/**)\n>>");
の意味がわからないのですが・・・
370デフォルトの名無しさん:2008/01/21(月) 03:27:15
>>369
いや、"input (e.g. ****/**/**)\n>>"って表示するだけのことだろ。
****/**/**は年/月/日で入力しろってことでしょ
371348:2008/01/21(月) 03:38:29
>>370
ありがとうございます!
助かりました!
372デフォルトの名無しさん:2008/01/21(月) 04:03:55
>>272
面白そうなので、ちょっとやってみた。
期限過ぎてるし、手元に開発環境がなくてrubyだしで
スレ違いすまん

--
def create(n)
 if n < 2
  return "<>"
 else
  strs= create(n-1)
  result = []
  strs.each do |str|
   result.push "<"+ str +">"
   result.push str +"<>"
  end
  return result
 end
end

create(ARGV.shift.to_i).each { |str| print str, "\n"}
--
373269:2008/01/21(月) 04:10:06
>>368
おお…おお!ありがとうございます!!
たった10文字だけど、他に表現できる言葉を知らないので、もう一度「ありがとうございます」
374デフォルトの名無しさん:2008/01/21(月) 04:13:44
>>372
スクリプト系だと結構楽にかけそうなんだよね。
Cだと、リストと文字列処理が貧弱すぎて泣ける
375デフォルトの名無しさん:2008/01/21(月) 09:39:31
1] 授業単元: プロ基礎
[2] 問題文(含コード&リンク):ある金額を入力し、その金額のお金の種類と数(1万円札〜1円玉)を求めるwhile文を作れ。
[3] c言語
[4] 期限:今
[5] その他の制限:ど基礎。for,while程度


よろしくお願いします。
376デフォルトの名無しさん:2008/01/21(月) 09:43:34
>[4] 期限:今
377デフォルトの名無しさん:2008/01/21(月) 09:44:10
じゃあもう期限切れだな残念
378375:2008/01/21(月) 09:47:12
自動販売機のおつりみたいなものです
379デフォルトの名無しさん:2008/01/21(月) 09:57:51
なぜループさせる必要があるのか、おじさんに分かるように教えてくれ
380デフォルトの名無しさん:2008/01/21(月) 10:03:26
>>364
そんなスレあったら俺が依頼したいww
381デフォルトの名無しさん:2008/01/21(月) 10:17:45
#include <stdio.h>
int main(void) {
int N=147568,a=10000;
while(N) {
printf("%d円:%d枚\n",a,N/a);
N%=a;
a/=2;
if(N) {
printf("%d円:%d枚\n",a,N/a);
N%=a;
a/=5;
}
}
return 0;
}
382デフォルトの名無しさん:2008/01/21(月) 10:22:53
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5843.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 今日の24時まで
[5] その他の制限:
長いプログラムになっても構わないので、
if文やfor文などの初歩的な関数を使いまくる感じでお願いします
383382:2008/01/21(月) 10:24:37
すみません、最後の構造体のは氏名はローマ字表記でも大丈夫です
384デフォルトの名無しさん:2008/01/21(月) 10:27:15
>>381
なるほど、そういう風にwhileを使うのか・・・全然思いつかなかった・・・・・orz
385デフォルトの名無しさん:2008/01/21(月) 12:05:48
>>382
#include <stdio.h>

struct student {
char name[32];
int ID;
int score;
};

int main(void) {
int i,j,x;
char buf[32];
struct student s[5];

for(i=0;i<5;i++) {
printf("氏名:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%s",&s[i].name);
printf("ID:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&s[i].ID);
printf("点数:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&s[i].score);
}
printf("何点以上?:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&x);
for(i=0;i<5;i++) if(s[i].score>=x) printf("%s ID:%d %d点\n",s[i].name,s[i].ID,s[i].score);
return 0;
}
386デフォルトの名無しさん:2008/01/21(月) 12:28:44
387デフォルトの名無しさん:2008/01/21(月) 12:57:00
388デフォルトの名無しさん:2008/01/21(月) 13:13:09
>>387の修正版
#include<stdio.h>
long get_power(long base, int expt);
int main(int argc, char *argv[]){
int base, expt;
long power_out;
if(argc != 3){
fprintf(stderr, "input error\n");
return 1;
}
base = atoi(argv[1]);
expt = atoi(argv[2]);
if(expt < 0){
fprintf(stderr, "input error\n");
return 1;
}
power_out = get_power(base, expt);
printf("%d^%d = %ld\n", base, expt, power_out);
return 0;
}
long get_power(long base, int expt){
if(expt == 0) return 1;
if(expt % 2 == 0){
expt /= 2;
base *= base;
return get_power(base, expt);
}else{
expt -= 1;
return base * get_power(base, expt);
}
}
389デフォルトの名無しさん:2008/01/21(月) 13:27:02
>>382の2
#include<stdio.h>
int get_gcd(int num1, int num2);
int main(int argc, char *argv[]){
int num1, num2;
int gcd_out;
if(argc != 3){
fprintf(stderr, "input error\n");
return 1;
}
num1 = atoi(argv[1]);
num2 = atoi(argv[2]);
if(num2 < 0){
fprintf(stderr, "input error\n");
return 1;
}
gcd_out = get_gcd(num1, num2);
printf("GCD(%d,%d) = %d\n", num1, num2, gcd_out);
return 0;
}
int get_gcd(int num1, int num2){
if(num1 == num2) return num1;
if(num1 > num2){
return get_gcd(num1-num2, num2);
}else{
return get_gcd(num1, num2-num1);
}
}
390デフォルトの名無しさん:2008/01/21(月) 15:27:31
【質問テンプレ】
[1] 授業単元:プログラミングC++
[2] 問題文(含コード&リンク):
以下のデータを空白を区切りとしてキーボードから入力して
配列に読み込み、英語のアルファベット順に並び替えよ。
ただし、文字列の大きさの比較にはstrcmp関数を
文字列の入れ替えにはstrcpy関数を利用しなさい。

日本語   英語   味わい月
鯖    mackerel 10
新巻鮭  salmon 12
岩魚 charr 7
牡蛎   oyster 2
帆立貝 scallop   1

正答動作画像
http://www-2ch.net:8080/up/download/1200896566698764.Kngz6w


[3] 環境
 [3.1] OS: WindowsXP 
[3.2] Microsoft Visual C++
 [3.3] C++
[4] 期限: 2008年1月23日18:00まで
[5] その他の制限:strcmpとstrcpyを利用したソートをさせるのが問題の主眼かなと思います。

よろしくお願いします。
391デフォルトの名無しさん:2008/01/21(月) 17:06:20
[2] 問題文:最長文字列の検出
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] gcc 3.4
 [3.3] 言語:C

カンマで区切った単語を入力してその中で一番長い文字列を表示させる。

単語を入力してください:1,10,10,1000
最長文字列は1000です。

strtokでカンマごとに切断することは出来たのですがそこからどうすればいいか分かりません。
よろしくお願いします。
392デフォルトの名無しさん:2008/01/21(月) 17:10:23
strtok()で区切った文字列を配列に突っ込んでstrlen()で長さを数えればいい
393デフォルトの名無しさん:2008/01/21(月) 17:53:14
すいません、よく分からないです・・・無知ですいません。
394デフォルトの名無しさん:2008/01/21(月) 18:36:29
>>391
#include <stdio.h>
#include <string.h>
int main()
{
int i = 0, max = -1, max_i = -1;
char buf[200], *p, *tmp[100];

printf("単語を入力してください:");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%s", buf);
for (p = strtok(buf, ","); p != NULL; i++)
{
int len = strlen(p);
if (max < len)
{
max = len;
max_i = i;
}
tmp[i] = p;
p = strtok(NULL, ",");
}
printf("最長文字列は%s", tmp[max_i]);

return 0;
}
395デフォルトの名無しさん:2008/01/21(月) 19:24:02
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5847.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008/01/27 23:59
[5] できれば配列とforメインでおねがいします
396デフォルトの名無しさん:2008/01/21(月) 19:45:45
#include <stdio.h>

int main () {

int y, m, d, sum = 0;
int m_array[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
char *week[7] = {"日", "月", "火", "水", "木", "金", "土"};
printf("input (e.g. ****/**/**)\n>>");

スイマセン、このinputとe.gの意味がわかりません
397デフォルトの名無しさん:2008/01/21(月) 19:49:15
おめーはぷりんとfもわかんねーのかよ
398デフォルトの名無しさん:2008/01/21(月) 19:59:56
inputは、えいごでにゅうりょくっていみだよ
e.gは、らてんごでたとえばっていみだよ
399デフォルトの名無しさん:2008/01/21(月) 21:14:09
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク):オンラインゲームを作成せよ。
ラグナロクオンラインやリネージュのようなオンラインゲームを
作成してみよう。データを送信するのに必要なライブラリ等は各自
調べておくこと。またDirectXを使用すること。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VisualStudio2005
 [3.3] 言語: C++
[4] 期限: 2008/2/1 23:59
[5] できれば3DのデータをMAXやMAYA、Shade等で作成する。
400デフォルトの名無しさん:2008/01/21(月) 21:16:06
>[1] 授業単元:基礎プログラミング
401デフォルトの名無しさん:2008/01/21(月) 21:30:47
>>399 なんとか完成したぞよ

#include <stdio.h>

int main(void)
{
char input[100];

printf("******ログイン画面******\n");
printf("UserID:");
scanf("%s",input);
printf("Password:");
scanf("%s",input);
printf("@@@@ログイン完了@@@@\n\n");

//roop for ever
while(1){
printf("チャット発言:");
scanf("%s",input);
printf("\n ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n");
printf("( ´∀`)< %s\n",input);
printf("(   ) \______________\n");
printf(" | | |\n");
printf("(__)_)\n\n");
}

return 0;
}
402デフォルトの名無しさん:2008/01/21(月) 21:39:40
>>399 ごめ、C++だったか!
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string input;

cout<<"******ログイン画面******"<<endl;
cout<<"UserID:";
cin>>input;
cout<<"Password:";
cin>>input;
cout<<"@@@@ログイン完了@@@@\n"<<endl;

//roop for ever
while(1){
cout<<"チャット発言:";
cin>>input;
cout<<endl;
cout<<" ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄"<<endl;
cout<<"( ´∀`)< "<<input<<endl;
cout<<"(   ) \______________"<<endl;
cout<<" | | |"<<endl;
cout<<"(__)_)\n"<<endl;
}

return 0;
}
403デフォルトの名無しさん:2008/01/21(月) 21:43:02
俺が見る限り >>400 と >>401 は間違ってるな
これが正解だw

#include <iostream>
#include <string>

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

while(true){
std::cout<<"******ログイン画面******"<<std::endl;
std::cout<<"UserID:";
std::cin>>input;
std::cout<<"Password:";
std::cin>>input;
std::cout<<"IDまたはパスワードが違います\n"<<std::endl;
}

return 0;
}
404デフォルトの名無しさん:2008/01/21(月) 22:26:06
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):()
自動販売機のオブジェクトを作成し実現しなさい(ジュース,たばこ,カップラーメンなど何でも良い(何の自販機は出力すること))。
ただし,下記の条件を満たすこと。
<条件>
自動販売機で購入できる「商品」,「お金」,「自動販売機」は最低限クラス化すること。
「カプセル化」,「継承」,「多様性」を全て利用すること。
例外処理をすること(プログラムが頓挫した時点でNGとします)。
入出力は,下記のとおり行うこと。

【入力】
・お金(10円〜1000円)の個数(枚数)   
・購入商品選択(複数可)    
【出力】
・つり銭(10円〜100円)の個数(枚数)と総購入代金
・購入商品名(複数)


実現は,main()関数で「自動販売機」クラスのインスタンスを1つ作成し,そのクラスのbuy( )メンバ関数を呼び出したら全てが動作するようにする。

※条件以外に動的メモリ,ファイル入出力などを用いて自動販売機の機能が拡張されるほど良い。ただし,明らかに無駄なコードを追加して機能を増やしている場合はその限りではありません。

[3] 環境
 [3.1] OS: Windows XP
 [3.2] visual studio 2005
 [3.3] 言語: C++
[4] 期限: 2008/1/25まで
[5] その他の制限: 特に無し。
よろしくお願いします。
405デフォルトの名無しさん:2008/01/21(月) 22:28:22
【時間切れ】 (1/21)
なし

【未解決問題】
>>335 1/22

>>390 1/23 18:00
>>404 1/25
>>395 1/27 23:59
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>399 2/1 23:59
>79 無期限
>144 無期限 問題文>>148
406デフォルトの名無しさん:2008/01/21(月) 22:30:21
#include<stdio.h>
#define N 1;

typedef struct{


}Record;

void inputData(int n, Record r[]);
void outputData(int n, Record r[]);
void calcBMI(int n; Recordr[]);


int main(void)
{
Record rrr[N];

int i;

printf("%d人まで処理します",N);
for(i=0;i<N;i++){
inputData(i,rrr);
outputData(i,rrr);
calcBMI(i,rrr);
printf("\n");
}

return 0;
}
407デフォルトの名無しさん:2008/01/21(月) 22:30:45
/*inputData関数の定義*/
void inputData(int n, Record r[]){
printf("%d人目の入力\n",n+1);
printf("名前は? →");scanf("%s", r[n].personal);
printf("生年月日は?(8桁)→");scanf("%s", r[n].birth);
printf("身長は?(cm) →");scanf("%lf", &r[n].height);
printf("体重は?(cm) →");scanf("%lf", &r[n].weight);
}
/*outputData関数の定義*/

/*calcBMIの定義*/


実行結果は
1人まで処理します
1人目の入力
名前は?     →hoge
生年月日は?   →19700917
身長は(cm)?   →174.5
体重は(kg)?  →69.5
1人目の出力
名前は      hoge
生年月日は 1970年09月17日
身長は  174.50cm
体重は  69.50kg
1人目のBMIは  22.82


Record型構造体の定義とoutputData関数の定義とcalcBMIの定義がよくわからないのですがどなたかわかりませんか?
BMIの計算内にはpower関数を利用しなくてはいけないんですが
408デフォルトの名無しさん:2008/01/21(月) 22:45:51
すいませんテンプレもつかわずに・・
[1] 授業単元:C実習
[2] 問題文(含コード&リンク):()
キーボードから氏名、生年月日、身長、体重をそれぞれよみこんでRecord構造体変数に格納し
そのデータからBMIを計算し同じ構造体メンバに格納し、画面に表示するプログラム
氏名、生年月日、身長、体重、BMIをメンバとする構造体Recordを定義する
なおBMIは次の計算で求められる
BMI=体重(kg)/身長^2(m)
BMIの計算には、power関数も利用し、また、身長の入力単位がcmであることに注意する

[3] 環境
 [3.1] OS: Windows vista
 [3.2] visual studio 2005
 [3.3] 言語: C
[4] 期限: 2008/1/22まで
[5] その他の制限: 特に無いです

よろしくおねがいします
409デフォルトの名無しさん:2008/01/21(月) 23:16:08
2つの整数を入力して、最大公約数と最小公倍数を
求めなさい。

このプログラムをお願いします。
410デフォルトの名無しさん:2008/01/21(月) 23:18:28
前見たな
>>408
>>233
411デフォルトの名無しさん:2008/01/21(月) 23:28:58
>>409
まあ落ち着いて>>1でも読めよ
412デフォルトの名無しさん:2008/01/21(月) 23:40:13
>>410
ありがとうございます。
>>233さんの方法を試してみたのですがじっこうけっかがうまくいかなくて・・
413デフォルトの名無しさん:2008/01/21(月) 23:44:04
>>409
今年のセンター試験2Bでそのプログラムが出たよ
BASICだけど
414デフォルトの名無しさん:2008/01/21(月) 23:45:19
>>412
何が駄目なのかくらい書けよ。
415デフォルトの名無しさん:2008/01/21(月) 23:50:43
関数powが定義されていないのとinputDataの定義を確認してくださいとでます
あと出力のところで〜年〜月〜日とださなければいけないのですがその部分もわからないです
416デフォルトの名無しさん:2008/01/21(月) 23:51:45
includeくらいしろよ。大体printfも書けないなら勉強し直せ
417デフォルトの名無しさん:2008/01/21(月) 23:53:38
includeはしてます・・
418デフォルトの名無しさん:2008/01/21(月) 23:55:07
printfは書けるんですが19700917と打ち込んだのを
1970年09月17日と分けるにはどうすればいいかわからないです
419デフォルトの名無しさん:2008/01/21(月) 23:56:25
char buf[100];
fgets(buf, sizeof(buf), stdin);
printf("%.4s年%.2s月%.2s日\n", buf, buf + 4, buf + 4 + 2);
420デフォルトの名無しさん:2008/01/22(火) 00:11:02
powが定義されてないって出るなら,includeしてないだろ…常考
421デフォルトの名無しさん:2008/01/22(火) 00:22:22
というかどこにも定義してなくないですか?一応powを別に定義したらうまくうごいたんですが
double pow(double a)
{
return a*a;
}
こんなかんじじゃだめですかね?
422デフォルトの名無しさん:2008/01/22(火) 00:24:36
>power関数も利用し
なんだからダメだろ
423デフォルトの名無しさん:2008/01/22(火) 00:27:54
そうですかすいません・・includeはしてあるんで何が原因かわからなくて・・
424デフォルトの名無しさん:2008/01/22(火) 00:30:29
<math.h>をインクルードだろ・・・常識的に考えて・・・
425デフォルトの名無しさん:2008/01/22(火) 00:30:32
#include <math.h>だ。
それとpowerは2乗じゃなく累乗の意。
426デフォルトの名無しさん:2008/01/22(火) 00:30:45
いろいろ動かしたら定義しなくてもふつうに動くようになりましたありがとうございました
知識不足の自分に教えてくださってありがとうございます
427デフォルトの名無しさん:2008/01/22(火) 00:38:02
e.gを使いこなす奴は、論文とかを読みなれてしまった汚い大人。
42886:2008/01/22(火) 01:05:39
>>386
ありがとうございました!!
まさか丁度300レス後とはwwww
429デフォルトの名無しさん:2008/01/22(火) 01:07:43
wwwwwwwwww
43086:2008/01/22(火) 01:07:57
>>386
な、内容みたら文字化けがwwwwwwwwwwwwwwwwwww

orz
431デフォルトの名無しさん:2008/01/22(火) 01:09:17
>>430
エンコードをEUCにしなさい。
432デフォルトの名無しさん:2008/01/22(火) 01:09:43
for(int i=0; i<50; i++)
  cout << "w";
433デフォルトの名無しさん:2008/01/22(火) 01:09:49
JISコードでおk
434デフォルトの名無しさん:2008/01/22(火) 02:06:13
【質問テンプレ】
[1] 授業単元:情報処理概論
[2] 問題文(含コード&リンク):()
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 22日10時まで

問題文

(ファイルからのデータ入力、ファイルへの出力)
"in_file"という名前のファイルの中に多数の整数データが空白や改行コードで区切られて並んでいると仮定した上で
この入力ファイルのなかのデータを1行に5個ずつ綺麗に並べて"out_file"という名前のファイルに出力するCプログラムを作成せよ。

入力ファイル”in_file"の内容が

_-1111111111______2222222__33333 4444 55 6 7 8 9 0 1 2 3 4
5 6 7890123
のときには次のような内容を出力ファイル”out_file"に書き出す

_-11111111_____22222______333333________4444__________55
_____________6___________7______________8____________9____________0
_____________1___________2______________3____________4____________5
_____________6__7890123



です、よろしくお願いします。
435434:2008/01/22(火) 02:08:11
書き込んだらずれてしまいました・・・

「 _ 」はスペースで右揃えに並ぶ感じです。

よろしくお願いします
436デフォルトの名無しさん:2008/01/22(火) 02:10:43
>>394
ありがとうございます。プログラムで見てみるとどういうことだったのかよく分かりました。
もっと勉強していこうと思います!!
437デフォルトの名無しさん:2008/01/22(火) 03:34:15
>>390
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5851.txt

C++の単元で"ソートにstrcmp()とstrcpy()を使え"ってホント?
あまりに稚拙なコードで組んでて泣けてきた。
438デフォルトの名無しさん:2008/01/22(火) 04:40:37
>>434
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5852.c

strtokをあえて使わない 俺ってそんな男
439デフォルトの名無しさん:2008/01/22(火) 05:41:11
strpbrkって知らなかった。
でも符号の分いれて、%11dの予感。
440デフォルトの名無しさん:2008/01/22(火) 07:12:54
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5853.txt
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン:gcc3.4
 [3.3] 言語:C言語
[4] 期限:2008年1月23日10時まで
[5] その他の制限:特にないです


どうかよろしくお願いします。
441デフォルトの名無しさん:2008/01/22(火) 07:49:05
>>440
うぷろだの5854.txt
規制で携帯からなんでアドレス貼れなくてスマソ
442デフォルトの名無しさん:2008/01/22(火) 07:51:01
ぼるじょあがC/C++の宿題を片づけますYO! 68代目
このスレと違いはあるのですか?
443デフォルトの名無しさん:2008/01/22(火) 07:57:27
答える人が違う
444デフォルトの名無しさん:2008/01/22(火) 10:36:40
>>395
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5855.c

たぶん大丈夫と思う。テストデータの答えがわからないからなんとも言えないけど
445デフォルトの名無しさん:2008/01/22(火) 10:51:32
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5856.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
 [3.3] 言語: C
[4] 期限: 2008/1/24
[5] その他の制限:
446デフォルトの名無しさん:2008/01/22(火) 15:14:04
fp=fopen(argv[1],"w");
buffer=(char *)malloc(buffer_size);
while(fgets(buffer,sizeof(buffer),stdin)){
fputs(buffer,fp);
if(sizeof(buffer)==buffer_size){
buffer=(char *)malloc(sizeof(buffer)*2);
buffer_size=buffer_size*2;
fputs(buffer,fp);
free(buffer);

ファイル入出力プログラムの一部ですが、
sizeof(buffer)では4バイトしか確保できないということに気がつきました。
できるだけプログラムをいじらず入力したサイズを取得する方法はありますか?
ヒントをください。buffer_sizeの初期設定は1000byteです。
strlenでもできませんでした。
447デフォルトの名無しさん:2008/01/22(火) 15:29:44
>>446
スレ違い。
初心者スレにでもどうぞ。
その際は何故バッファが必要なのか、その理由を書くことをお推めします。
448デフォルトの名無しさん:2008/01/22(火) 16:30:04
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5859.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語:C
[4] 期限:2008年1月23日
[5] その他の制限:特になし

よろしくお願いします。
449デフォルトの名無しさん:2008/01/22(火) 16:30:31
>>441さん
ありがとうございました

450デフォルトの名無しさん:2008/01/22(火) 16:33:23
451デフォルトの名無しさん:2008/01/22(火) 18:07:10
>>294
有難う御座いますm(_ _)m
452デフォルトの名無しさん:2008/01/22(火) 18:40:18
453デフォルトの名無しさん:2008/01/22(火) 19:40:07
[1] 授業単元:プログラミングU
[2] 問題文:任意の数(最大10個)の整数を入力した後、
それらの最小公倍数と最大公約数を関数内で求め、mainの中で表示プログラムを作成すること。
[
3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio
 [3.3] 言語: C
[4] 期限: 2008/1/25
[5] その他の制限:
454デフォルトの名無しさん:2008/01/22(火) 20:40:54
>>452
ありがとうございました。
助かります!
455デフォルトの名無しさん:2008/01/22(火) 21:03:49
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):霰の計算
問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5862.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: (2008年1月23日12:00まで
[5] その他の制限: 入出力と計算部分は関数化します。

よろしくお願いいたします。
456455:2008/01/22(火) 21:08:18
すみません問題文が一部文字化けしていました。

誤 1?n?10000の範囲
       ↓
正 1≦n≦10000の範囲

です。宜しくお願いいたします。
457デフォルトの名無しさん:2008/01/22(火) 21:29:23
250を見ながら入力していったら
c:\documents and settings\sano takumi\my documents\visual studio 2005\projects\san\san.cpp(26) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
と出たのですがこれはどういうことでしょうか?
458デフォルトの名無しさん:2008/01/22(火) 21:30:05
>'#include "stdafx.h"' をソースに追加しましたか?
してないならしろ。
459デフォルトの名無しさん:2008/01/22(火) 21:30:53
佐野拓海か?せめてあげる内容は少し確認してからにしろ。どんまい。
460デフォルトの名無しさん:2008/01/22(火) 22:04:23
特定しました
461デフォルトの名無しさん:2008/01/22(火) 22:14:05
>>455
>ちなみに1<=n<=10000の範囲で一番大きなf(n)の値を返すnは871であり、
>f(871)=178である。

n = 6171, f(6171) = 261 じゃないの?
462デフォルトの名無しさん:2008/01/22(火) 22:24:47
1:情報処理
[2]穴埋めです
[3]わかんないです。
 [3.1] (Windows)
 [3.2] lc-86? C-pad?:
 [3.3] C言語:
[4] 期限: 2008/1/24

463デフォルトの名無しさん:2008/01/22(火) 22:25:56
問2
4個の変数
  a 整数
  b 実数
  c 精度の高い実数
  d 文字
を宣言し、それぞれに
適当なデータを代入する。
そして次のように画面表示
するプログラム

 a の値は ... です
 b の値は ... です
 c の値は ... です
 d の値は ... です
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>

void main(){



getch();
}
464デフォルトの名無しさん:2008/01/22(火) 22:27:09
37から229までの整数を加算し
その結果を表示するプログラム
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>

void main(){


for( )
{


}

printf( );

getch();
}
465デフォルトの名無しさん:2008/01/22(火) 22:30:03
山下さんおつかれさまです
466デフォルトの名無しさん:2008/01/22(火) 22:33:08
x = 0 から出発し、x の値を
0.001 づつ増加させることを
繰り返し、x^2 + 7x - 1 の値
が初めて正となった時点で
繰り返しを終了し、そのときの
x の値を表示するプログラム
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>

void main(){



while( )
{

}

printf( );

getch();
}
467デフォルトの名無しさん:2008/01/22(火) 22:33:51
キーボードから整数を入力させ
その数を x に代入する。
x が 100 より大きいとき、

「入力した数は 100 より大きい」

と表示し、x が 100 以下のとき、

「入力した数は 100 以下です」

と表示するプログラム
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>

void main(){



getch();
}
468デフォルトの名無しさん:2008/01/22(火) 22:38:11
キーボードからアルファベットを1文字入力させ、それが「a」のとき、「a です」「b」のとき、「b です」
「c」のとき、「c です」「d」のとき、「d です」「e」のとき、「e です」
と表示し、それ以外のとき「a,b,c,d,e 以外の文字」と表示するプログラム
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>

void main(){



switch( )
{


}

getch();
}


469デフォルトの名無しさん:2008/01/22(火) 22:40:01
死ねカス
470デフォルトの名無しさん:2008/01/22(火) 22:40:12
問10
縦 100m、横 120mのグランド
がある。
縦横それぞれ同じ長さ x だけ
長くして面積が 13000u と
なるようにしたい。
x を少数点以下1桁までの精度
で求めるプログラム。
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>

void main(){

float x=0;

while( )
{
x = x + 0.01;
}

printf("縦横 %5.1f b広げればよい\n",x);

getch();
}
471デフォルトの名無しさん:2008/01/22(火) 22:42:01
>>462-470

問7
キーボードから実数を一つ入力させ、それを x に代入する。
x ≦ 100 のとき「A」、
100 < x ≦ 350 のとき「B」、
350 < x ≦ 600 のとき「C」、
600 < x     のとき「D」と表示するプログラム

問8
1 + 4 + 9 + 16 + ・・・と加えて行き、
和が初めて 10000を超えたとき、
その和の値、および最後に加えた数を求めて表示するプログラム

問9
次に書かれた数の総和を求め、結果を表示するプログラム:
1
1+2
1+2+3
1+2+3+4
 ・
 ・
 ・
1+2+3+4+5+・・・+ 10

472デフォルトの名無しさん:2008/01/22(火) 22:48:04
>>463,464,466,477
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5863.txt

丸投げスレだから問題丸投げはいい。でも>>1に長いならうpろだ使えってかいてあるよね?
473455:2008/01/22(火) 22:52:54
>>461さん
問題文をそのまま記述したのですが、そうなりますかね?
でも私には判断できないです....。
474デフォルトの名無しさん:2008/01/22(火) 22:54:16
>>473
おそらく1〜1000の書き間違いだろ
気にするな
475デフォルトの名無しさん:2008/01/22(火) 22:56:31
>>473
1から1000までの範囲にしといた


#include <stdio.h>
#define N 300

int f(int);
int k=0,array[N]={0};

int main(void) {
int n,a,b=0,c;
for(n=1;n<=1000;n++) {
a=f(n);k=0;
if(a>b) {
b=a;
c=n;
}
}
printf("%d %d\n\n",c,f(c));
for(n=0;n<=b;n++) printf("%d ",array[n]);
return 0;
}

int f(int n) {
array[k++]=n;
if(n==1) return k-1;
if(n%2==0) f(n/2);
else f(3*n+1);
}
476472:2008/01/22(火) 23:01:36
>>472の安価>>477>>467の間違い

>>468,470,471
>>471の問9に関して題意が不明確なのでこっちで勝手に解釈した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5864.txt

>>472含めすべてのプログラムの動作未確認、コンパイルもしていない。
間違ってたらごめんちゃい。
477デフォルトの名無しさん:2008/01/22(火) 23:06:23
兄です。KRDで弟がお世話になっています。特定しましたんでヨロシク!
478461:2008/01/22(火) 23:08:43
>>473
>>474が言ってるように、1〜1000なら正しい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5865.txt
479デフォルトの名無しさん:2008/01/22(火) 23:11:57
Lets to the best today! マジで?
480デフォルトの名無しさん:2008/01/22(火) 23:17:31
>>470

#include <stdio.h>
#include <conio.h>

#include <math.h>

void main(){

float x=0;

while(0)
{
x = x + 0.01;
}
x=floor((-110+10*sqrt(131.0))*10+0.5)/10;
printf("縦横 %5.1f b広げればよい\n",x);

getch();
}
481デフォルトの名無しさん:2008/01/22(火) 23:20:33
明日もビジネスマナー研修頑張ってください by兄
482455:2008/01/22(火) 23:28:36
すみませんでした!私の書き間違いでした。
1≦n≦10000の範囲で大きな関数を求めることは正しいのですが、
ちなみに〜の下りの問題文の方では皆さんのおっしゃる通り
「1≦n≦1000の範囲」においてはnは871でした。

>>474さん
よく確認してから記述するよう以後気を付けます。すみませんでした。

>>475さん>>478さん
ありがとうございます!今自分でもプログラムを組んでいたのですが、
教えて頂いたプログラムを参考にして正しく実行できました。
本当に助かりました。


483デフォルトの名無しさん:2008/01/22(火) 23:45:52
>>480
x = -110 + sqrt(13100);
484デフォルトの名無しさん:2008/01/22(火) 23:55:24
>>483
>>480さんの、顔に、泥を、塗るな!!!!。
485デフォルトの名無しさん:2008/01/22(火) 23:56:56
>>484
なんで、そんな、しゃべり方、なの?
486デフォルトの名無しさん:2008/01/23(水) 00:22:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5868.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1/25
[5] その他の制限:なし

よろしくお願いします
487デフォルトの名無しさん:2008/01/23(水) 00:28:45
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5869.txt
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語:C
[4] 期限:1月25日
[5] その他の制限:

どなたかよろしくお願いします
488デフォルトの名無しさん:2008/01/23(水) 00:36:44
[1] 授業単元: プログラミング入門
[2] 問題文(含コード&リンク):
コマンドラインから入力された文字列に小文字のアルファベット
が含まれていた場合は全て大文字に変換し、文字列を昇順にソー
トして表示するプログラムを作成して下さい
パラメータ文字列が2つ以上入力されなかった場合には、エラー
メッセージうぃ表示して終了させて下さい
sample One
usage : sample STRING1 STRING2 [STRING3 ... ]
sample matsui ichiro
** String data **
matsui
ichiro
** Changed string **
ICHIRO
MATSUI
sample sample1 sample2 sample3
** String data **
sample3
sample2
sample1
** Changed string **
SAMPLE1
SAMPLE2
SAMPLE3
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2005
 [3.3] 言語: C
[4] 期限:1月24日
お願いしますm(_ _)m
489デフォルトの名無しさん:2008/01/23(水) 00:53:53
>>487
#include<stdio.h>
#define MAX 5
int main(){
int a[MAX]={1},i,j;
for(i=1;i<=30;i++){
for(j=0;j<MAX;j++)
a[j]*=i;
for(j=0;j<MAX-1;j++)
a[j+1]+=a[j]/10000000,
a[j]%=10000000;
}
for(i=0;i<MAX;i++)
printf("%08d",a[MAX-i-1]);
printf("\n");
return 0;
}
490デフォルトの名無しさん:2008/01/23(水) 01:10:09
【時間切れ】 (1/22)
>335

【未解決問題】
>>488 1/24
>>404 1/25
>>453 1/25
>>486 1/25
>>395 1/27 23:59
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>148
491デフォルトの名無しさん:2008/01/23(水) 01:11:10
>>490
まとめおつん
492デフォルトの名無しさん:2008/01/23(水) 01:16:21
493デフォルトの名無しさん:2008/01/23(水) 04:03:32
>>488
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
int cmp( const void * l, const void * r ) { return strcmp( *((char **)l), *(( char **)r) ); }
int main( int argc, char **args )
{
int i;
if ( argc < 3 ) {
fprintf( stderr, "usage: sample STRING1 STRING2 [STRING3 ... ]\n" );
exit( 1 ) ;
}
argc --; args ++;
puts( "** String data **" );
for ( i = 0; i < argc; ++i )
puts( args[ i ] );
puts( "** Changed string **" );
qsort( args, argc, sizeof( char * ), cmp );
for ( i = 0; i < argc; ++i ) {
char *p;
for ( p = args[ i ]; *p != '\0'; ++p )
putchar( toupper( *p ) );
puts("");
}
return 0;
}
494デフォルトの名無しさん:2008/01/23(水) 04:48:22
>>453
#include <stdio.h>
#define N 10
int get_gcd( int m, int n ) { return ( m < n ) ? get_gcd( n, m ) : ( n == 0 ) ? m : ( m % n == 0 ) ? n : get_gcd( n, m % n ); }
int get_lcm( int m, int n ) { return ( m == 0 || n == 0) ? 0 : m * n / get_gcd( m, n ); }
int main( int argc, char ** args ) {
int nums[ N ] = {0}, i, l, gcd, lcm;
puts( "input numbers. " );
for ( i = 0; i < N; ++i ) {
scanf( "%d", &nums[ i ] );
if ( nums[ i ] < 1 ) { break ; }
}
l = i;
gcd = lcm = nums[ 0 ];
for ( i = 1; i < l; ++i ) {
gcd = get_gcd( gcd, nums[ i ] );
lcm = get_lcm( lcm, nums[ i ] );
}
for ( i = 0; i < l; ++i ) {
printf( "%d ", nums[ i ] );
}
printf( "\nLCM:%d, GCD:%d\n", lcm, gcd );
return 0;
}
10個入れるか,0以下の数を入れるかで入力をやめるようにしてみた
495デフォルトの名無しさん:2008/01/23(水) 07:36:23
496デフォルトの名無しさん:2008/01/23(水) 10:23:18
[1] 授業単元:プログラミング
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5873.txt
 このプログラムを実行すると1つのxにつき100個の誤差付きのyが出てくるので
 それぞれのxにおけるyの平均値(=(狽凵j/100)を求めたい
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語: C
[4] 期限: 2008/1/24
[5] その他の制限:

よろしくお願いします
497デフォルトの名無しさん:2008/01/23(水) 11:29:13
#include <stdio.h>
#include <stdlib.h>

void fileread(int,char *);
void filewrite(int,char *);

int main(int argc ,char *argv)
{
if(argc!=3){
printf("次回から引数を入力してください\n");
return 0;
}
fileread(argc,argv);
filewrite(argc,argv);
return 0;
}

void fileread(int argc,char *argv){
FILE *fp;
char *buffer;
fpos_t start_fpos;
int filesize;
if(!strcmp(argv[2],"r")){
fp=fopen(argv[1],"r");
fgetpos(fp,&start_fpos);
498デフォルトの名無しさん:2008/01/23(水) 11:29:44
fseek(fp,0,SEEK_END);
filesize=ftell(fp);
fsetpos(fp,&start_fpos);
buffer=(char *)malloc(sizeof(char)*filesize);
while(fgets(buffer,filesize,fp))printf("%s",buffer);
free(buffer);
}
}


void filewrite(int argc,char *argv){
FILE *fp;
char *buffer,*stock;
int buffer_size=1000,count=0;
if(!strcmp(argv[2],"w")){
fp=fopen(argv[1],"w");
buffer=(char *)malloc(sizeof(char)*buffer_size);
while(fgets(buffer,buffer_size,stdin)){
count++;
stock=realloc(buffer,sizeof(char)*count);
sscanf(buffer,&stock[count-1]);
}
fputs(stock,fp);
free(buffer);
}
fclose(fp);
}
499497:2008/01/23(水) 11:33:24
>497-498
コンパイルエラーが出ます。
passing argument 1 of ‘fopen’ makes pointer from integer without a cast
fopenの箇所が整数値を吐き出してるのだとは分かるのですが、
どう修正していいのか理解できません。ご教授ください。
500390:2008/01/23(水) 11:53:55
>>437

大変参考になりました、ありがとう御座います。
strcmp()とstrcpy()については授業でそれを教えたから
とにかくそれを使わせて習得させるという方針っぽいです。

構造体structも次回の講義で始めて習うという初歩っぷりですので
基礎的な部分から稚拙さが漂ってくるのかもしれませんが…
structの勉強もできて非常にためになりました、多謝です
501デフォルトの名無しさん:2008/01/23(水) 12:04:02
>>497
スレ違い.

main( int argc, char * argv ) ;じゃなくて
main( int argc, char * argv[] ) ;

void fileread(int argc,char *argv) じゃなくて
void fileread(int argc,char *argv[]) にしないと
502デフォルトの名無しさん:2008/01/23(水) 12:38:41
>>496
#include <stdio.h>
int main(int argc, char *argv[])
{
int i, j;
double x, y, sum;
char buf[100];
FILE *fp;
if (argc != 2)
return 1;
fp = fopen(argv[1], "r");
if (fp == NULL)
return 1;
for (i = 0, sum = 0.0; i <= 10; i++) {
for (j = 0; j < 100; j++) {
fgets(buf, sizeof(buf), fp);
sscanf(buf, "%lf %lf\n", &x, &y);
sum += y;
}
printf("%lf\t%lf\n", x, sum/100);
}
return 0;
}
503デフォルトの名無しさん:2008/01/23(水) 12:55:40
>>501
馬鹿発見。スレ違いと言う点には同意するので、どこら辺が馬鹿なのかは割愛。
504デフォルトの名無しさん:2008/01/23(水) 13:13:10
>>503
501じゃないけど解説求む
505デフォルトの名無しさん:2008/01/23(水) 13:15:49
そこだけ変えても意味がないってことだろ。根本的に作りがおかしいんだから。
506デフォルトの名無しさん:2008/01/23(水) 13:40:59
>>494
ありがとうございます。
因みにLCMが最大公約数でGCMが最小公倍数なんですかね?
507デフォルトの名無しさん:2008/01/23(水) 13:42:12
>>506
いいえ。
508デフォルトの名無しさん:2008/01/23(水) 13:42:41
>>506
lcm と gcd でググれば何の略か分かる
509デフォルトの名無しさん:2008/01/23(水) 16:17:14
>>503
fopenの引数が間違ってる、という説明に留めろという理解でよろしい?
確かに、
>main( int argc, char * argv ) ;じゃなくて
>main( int argc, char * argv[] ) ;
というのは先走り感が否めないが。
510395:2008/01/23(水) 16:29:49
>>444
argument error
と出てしまいます
511デフォルトの名無しさん:2008/01/23(水) 16:33:20
プログラム実行時に data.txt を後に加えて実行すればおk
512デフォルトの名無しさん:2008/01/23(水) 17:55:25
[1] 授業単元:プログラム入門
[2] 問題文:2つあるので下に書いていきます
[3] 環境
 [3.1] OS:Windows
 [3.2] gcc 3.4
 [3.3] 言語:C
[4] 期限: 明後日

1.0から1000までの数を1行に10個ずつカンマ区切りで表示する。
  末尾にはカンマを加えない。

実行例
  0,1,2,3,4,5,6,7,8,9
10,11〜〜〜〜
  〜〜〜〜〜〜998,999
1000

2.文字列を入力して、その文字列の中にアルファベットと数字をそれぞれカウントして結果を表示する。
実行例
  入力して:nurupo ga!!!!1111
  アルファベットは8文字
  数字は4文字
  それ以外は4文字

2つも出してしまい、申し訳ないですがかなり切羽詰ってます。
プログラムに関しては先月始めたばかりで初心者中の初心者です、なのでそこまで難しいことは習ってないと思います。
ですが分からないのでお力を貸してください。
513デフォルトの名無しさん:2008/01/23(水) 18:01:12
>>512
スペースは普通その他だろ
514デフォルトの名無しさん:2008/01/23(水) 18:04:17
>>513
すいません、見落としてました。スペースもそれ以外に追加します。
515デフォルトの名無しさん:2008/01/23(水) 18:34:24
>>512
#include<stdio.h>
int main(void){
int i;
for(i=0;i<=1000;i++){
if(i%10==0) printf("%d", i);
else printf(",%d", i);
if((i+1)%10==0) printf("\n");
}
return 0;
}

#include<stdio.h>
#include<ctype.h>
int main(void){
char buf[256];
int i, alphanum=0, digitnum=0, othernum=0;
printf("入力して:");
fgets(buf, sizeof(buf), stdin);
for(i=0;buf[i]!='\0';i++){
if(isalpha(buf[i])) alphanum++;
else if(isdigit(buf[i])) digitnum++;
else othernum++;
}
printf("アルファベットは%d文字\n", alphanum);
printf("数字は%d文字\n", digitnum);
printf("それ以外は%d文字\n", othernum);
return 0;
}
516デフォルトの名無しさん:2008/01/23(水) 18:41:40
>>515
>for(i=0;buf[i]!='\n';i++){

の方がいいかもNE!
517デフォルトの名無しさん:2008/01/23(水) 18:48:57
>>515、516
ありがとうございます。
今、外なんで家に帰ってから実行してみようと思います。
518デフォルトの名無しさん:2008/01/23(水) 19:01:42
[1] 授業単元: C言語
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5874.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 今日中です。。。
[5] その他:長くてめんどくさいかもしれませんが、どうかよろしくお願い致します。
519デフォルトの名無しさん:2008/01/23(水) 19:22:42
1] C言語
[2] 台形公式を用いて∫0^2 √4-x^2 の近似値を求めるプログラミングを作成しなさい
[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: (C言語
[4] 期限:明日
[5] その他の制限: お願いします
520デフォルトの名無しさん:2008/01/23(水) 19:32:49
>>519

#include <iostream.h>

void main(){cout << "どう見ても0です << endl;}
521デフォルトの名無しさん:2008/01/23(水) 20:47:29
>>519
#include <stdio.h>
#include <math.h>
#define E 0.00001

double TrapMethod(double (*f)(double), double a, double b, double e)
{
    if (fabs(b - a) < e) return 0.5 * (f(a) + f(b)) * fabs(b - a); 
    else {
        double t = 0.5 * fabs(b - a);
        return TrapMethod(f, a, a + t, e) + TrapMethod(f, a + t, b, e);
    }
}

double func(double x) { return sqrt(4 - x * x); }

int main(void)
{
    printf("%.10f\n", TrapMethod(func, 0.0, 2.0, E));
    return 0;
}
522デフォルトの名無しさん:2008/01/23(水) 20:54:30
>>487
つ265252859812191058636308480000000
523デフォルトの名無しさん:2008/01/23(水) 23:41:10
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5879.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1/26
[5] その他の制限:特になし

よろしくおねがいします
524デフォルトの名無しさん:2008/01/23(水) 23:44:04
[1] 授業単元:C言語
[2] 問題文:ファイル中の文字数,単語数,行数をカウントするプログラムを作成せよ。
単語の切れ目はアルファベット以外の文字、行の終わりは改行文字またはファイルの終端とします。
この課題のソースファイルで動作確認しなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1/25
[5] その他の制限:特になし

お願いします
525デフォルトの名無しさん:2008/01/23(水) 23:53:51
>>523
#include <stdio.h>

int main(void)
{
int i, j, n, num[] = {1000, 500, 100, 50, 10, 5, 1};
char roman[] = "MDCLXVI";

while(1) {
printf("Input integer (0 quit) ====>");
scanf("%d", &n);
if(n==0) break;
printf("%d ====> ", n);
for(i=0; n; i++) {
int c = n / num[i];
for(j=0; j<c; j++) putchar(roman[i]);
n %= num[i];
}
putchar('\n');
}
return 0;
}
526デフォルトの名無しさん:2008/01/24(木) 00:10:52
527デフォルトの名無しさん:2008/01/24(木) 00:12:42
去年と同じ問題だw
528デフォルトの名無しさん:2008/01/24(木) 00:18:31
529デフォルトの名無しさん:2008/01/24(木) 00:27:37
530デフォルトの名無しさん:2008/01/24(木) 00:31:13
531デフォルトの名無しさん:2008/01/24(木) 00:45:02
[1] 授業単元:cprograming2
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5885.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限:2008/1/25 am 0:00
[5] その他の制限: 特に無し
よろしくお願いします
532デフォルトの名無しさん:2008/01/24(木) 01:31:43
【時間切れ】 (1/23)
>518

【未解決問題】
>>531 1/25 0:00
>>404 1/25
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>148
533デフォルトの名無しさん:2008/01/24(木) 01:38:17
>>529
なんで、そんなに括弧で囲む必要があるんだい?
534デフォルトの名無しさん:2008/01/24(木) 01:39:28
>>518
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5887.c

すでに時間切れ 且つ なぜかリスト構造を使ってしまったけど、一応動いたのでうp
535デフォルトの名無しさん:2008/01/24(木) 01:39:57
[1] 授業単元:アルゴリズム2
[2] 問題文
 最小全域木問題

で以下のコメント文の
 e[i] を、e[t[0]], ..., e[t[k - 1]]に加えても閉路ができない
をどうやって書くのか分かりません。トレースの問題で躓いてしまいます。
プログラムが分かればトレース出来そうなのでよろしくお願いします。

void mst(int i, int k, int weight) {
if (k == n - 1) {
if (weight < best_weight) {
best_weight = weight;
配列 best_tree に t をコピー;
}
}
else if (i <= m) {
if (e[i] を、e[t[0]], ..., e[t[k - 1]]に加えても閉路ができない){
t[k] = i;
mst(i + 1, k + 1, weight + w[i]);
}
mst(i + 1, k, weight);
}
}
[4] 期限:1/24 9am test..!
536デフォルトの名無しさん:2008/01/24(木) 01:46:51
一応情報はランダムにこんな感じで与えられます。
これをどう利用して記述して求めているのかが分かりません。

辺の番号 1 2 3 4 5 6 7 8 9 10 11 12
端点1 4 3 1 2 4 6 1 8 5 6 7 5
端点2 6 7 5 3 5 1 2 4 4 2 8 2
重み 9 16 13 8 7 12 10 5 11 15 4 2
537デフォルトの名無しさん:2008/01/24(木) 01:56:17
>>533
 データ(変数)を尊重し、できるだけそのデータが使われるときに、宣言し使う。
こうすることで、必要のないデータを他のブロックで誤って書き換えられることを防いでいる。
 いわゆる、データ指向プログラミング。

 >>529 fclose忘れてるな。別にいいけど。
538デフォルトの名無しさん:2008/01/24(木) 02:05:12
>>534
ありがとうございます!!!
539デフォルトの名無しさん:2008/01/24(木) 02:42:42
>>529 >>537
{NULL};が気になる。普通{0}じゃね?残りは0で埋められるわけだし。
NULLだとアドレスかと思ってしまうな

まぁ実用上はまったく問題ないと思うけど
540デフォルトの名無しさん:2008/01/24(木) 02:43:52
>>535
配列eのメンバがわからないことには何とも言えない。
つーか、ソースうp。
541デフォルトの名無しさん:2008/01/24(木) 02:54:33
スイマセン
再うp。

まず、バックトラックによって、グラフGの最小全域木を求める
次のようなアルゴリズムを考えます。ここで、n はGの 頂点数、m は辺の数で、e[i] (i = 1, ..., m) はGのi番目の 辺を表し、w[i] はその重み(正整数)を表すものとします。
また、int 型の配列 t と best_tree は大域変数であるとします。

void mst(int i, int k, int weight) {
if (k == n - 1) {
if (weight < best_weight) {
best_weight = weight;
配列 best_tree に t をコピー;
}
}
else if (i <= m) {
if (e[i] を、e[t[0]], ..., e[t[k - 1]]に加えても閉路ができない){
t[k] = i;
mst(i + 1, k + 1, weight + w[i]);
}
mst(i + 1, k, weight);
}
}


関数mstへの呼び出しと戻りを「イベント」と呼ぶことにします。 n = 8, m = 12 であり、Gの頂点が 1, 2, ..., n であって、 Gの m 本の辺の各端点と重みが次のように与えられるとします。
辺の番号 1 2 3 4 5 6 7 8 9 10 11 12
端点1 6 7 5 4 3 1 6 7 8 4 5 2
端点2 7 5 4 3 1 2 4 3 6 8 3 8
重み 14 11 15 12 4 9 6 16 8 7 10 2
542デフォルトの名無しさん:2008/01/24(木) 03:36:47
>>537
そこまでするならサブルーチン化した方がいいような気もするが。読みづらいしな。
543デフォルトの名無しさん:2008/01/24(木) 04:12:22
>>531
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5888.txt
ヘロンの公式は使ってないけど。眠い。
544デフォルトの名無しさん:2008/01/24(木) 04:17:09
>>531
純粋な興味として聞きたいんだが、どうして座標が整数値で与えられているのにヘロンの公式を使うんだろう。
545デフォルトの名無しさん:2008/01/24(木) 04:36:59
 >>543
 ちょ、間違ってる。
546デフォルトの名無しさん:2008/01/24(木) 08:21:22
[1] 授業単元:C入門
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5876.txt
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:study C
 [3.3] 言語:C
[4] 期限:今日の15時
[5] その他の制限:入門科目なので簡単なコードでお願いします。
547デフォルトの名無しさん:2008/01/24(木) 10:54:30
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):0<N <100,000,000の整数を入力したとき、Nの素因数分解結果を出力するプログラムを作成せよ。

 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C++
[4] 期限:1/25 15時
[5] その他の制限:
2から √Nまでの素数について、小さい順にNを割ってみて割り切れたらその素数aはNの素因数である。
割り算の結果N1についてa から √N1 までの素数について小さい順にN1を割り切れたらその素数b も
Nの素数である。以上を割り算の結果Nxが素数になるまで繰り返す。Nx もNの素因数である。
ということを使ってやれと言われました。

簡単なコードでお願いします。
548デフォルトの名無しさん:2008/01/24(木) 10:56:22
549デフォルトの名無しさん:2008/01/24(木) 11:24:20
550546:2008/01/24(木) 12:25:04
>>548
助かりした
無事単位を取得できそうです
ありがとうございました!
551デフォルトの名無しさん:2008/01/24(木) 12:35:11
単位wwwどんだけしょぼい大学だよ
552デフォルトの名無しさん:2008/01/24(木) 13:04:35
大学行ってないから基準が分からないんだね。
553デフォルトの名無しさん:2008/01/24(木) 13:06:27
本来なら大学は自分で勉強するべきとか考えないとすれば
90分×14回 = 21時間 だから、無理もない
たったの二日で何が習得出来るって話だ
554548:2008/01/24(木) 13:14:10
>>550
これで単位か・・・羨ましいような羨ましくないような。

>>547
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5891.txt
555デフォルトの名無しさん:2008/01/24(木) 14:09:37
>>502
ちょっと解説してもらえませんか?
556デフォルトの名無しさん:2008/01/24(木) 14:43:55
>>555
回答した本人じゃないが、
for (i = 0, sum = 0.0; i <= 10; i++) {
for (i = 0, sum = 0.0; i <= 10; i++, sum=0.0) {
にすれば問題ないのでは?
557デフォルトの名無しさん:2008/01/24(木) 15:30:11
>>550
ちょっWwおまWw
どこの大学だよ
それで単位認定って
笑った
558デフォルトの名無しさん:2008/01/24(木) 15:33:44
文系が理系をちょっとかじるようなゼミだとそんなもんじゃね?
559デフォルトの名無しさん:2008/01/24(木) 15:40:41
【質問テンプレ】
[1] 授業単元:CG
[2] 問題文(含コード&リンク):対戦型シューティングゲームを作ったんですけど、
もう1つのポットから、玉が出ないんです。どうしたら、出るようになるんでしょうか?
教えてください。あと、当たり判定も作ったんですが、これよりもっといいプログラムは
ありますか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5893.c
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cで書いてあります
[4] 期限: 今日の18時まで
[5] その他の制限:なし
560デフォルトの名無しさん:2008/01/24(木) 15:42:32
>>559
よくあるのはベクトルのノルムで判定する方法
561デフォルトの名無しさん:2008/01/24(木) 15:43:21
[1] 授業単元: プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5892.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:BCC
 [3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:特にないです。。。

お願いします。
562デフォルトの名無しさん:2008/01/24(木) 16:51:24
>>561
ファイルに書き出すときのテキストのフォーマットは?
563デフォルトの名無しさん:2008/01/24(木) 18:13:49
>>562
txt形式でお願いします。
564デフォルトの名無しさん:2008/01/24(木) 18:46:30
>>563
CSVとかそういうのを聞きたいんだと思うよ。

>>561
CSVにした。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5895.zip
565548:2008/01/24(木) 18:47:07
566548:2008/01/24(木) 18:51:31
567デフォルトの名無しさん:2008/01/24(木) 19:03:53
>>564
>>565

ありがとうございます!
568デフォルトの名無しさん:2008/01/24(木) 19:12:25
569デフォルトの名無しさん:2008/01/24(木) 19:23:16
>>568
ありがとうございます!本当に助かります。
570548:2008/01/24(木) 19:40:44
>>566にもミスがあったorz

ex11_2.c内の24行目
誤)p = &pmemb[count];
正)p = &pmemb[count++];

度々申し訳ない。
571デフォルトの名無しさん :2008/01/25(金) 00:22:36
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5899.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年1月28日まで
[5] その他の制限:配列まで習いました。

よろしくお願いします。
572デフォルトの名無しさん:2008/01/25(金) 00:27:56
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):
ソートに関する問題です。詳細は↓
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5900.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6
 [3.3] 言語:C
[4] 期限:1/31まで
[5] その他の制限:なし
よろしくお願いします。
573デフォルトの名無しさん:2008/01/25(金) 02:08:46
>>571
入力されうる最大の値はないのかい?
> (* ここに解答を書き加える *)
って、他の場所に全く手を加えてはいけないのか分からないよ。
sqrt()のためにmath.hを入れたが、それ以外他の場所には記述を加えずに書いてみた。

割り切れるかのループを回すところで素数以外でも計算してるのが無駄だが、1000000以下の素数を列挙するのに10秒程度。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5901.txt

574573:2008/01/25(金) 02:18:08
575デフォルトの名無しさん:2008/01/25(金) 02:35:02
【時間切れ】 (1/24)
>404 >535 >559

【未解決問題】
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>572 1/31
>79 無期限
>144 無期限 問題文>148
576デフォルトの名無しさん:2008/01/25(金) 04:29:08
577ラッセン沖縄:2008/01/25(金) 05:16:32
[1]授業単元 プログラミングB
[2]問題文 次の仕様を満たし、入力例の通りにして実行でき、更に、出力例の通りに出力されるようなCプログラムを作成せよ。(出力の空白や桁数にも留意せよ。)


 仕様 三角形の底辺と高さ入力し、その面積を求める。

 入力例    Z:\>(kadai)
 (カッコ内を 底辺=(3.0)
   入力する)高さ=(4.5)


出力例* ----+----|----+----|----+----|----+----|----+----|
底辺=3.000, 高さ=4.500
面積=6.7500

(*目盛りは桁を示すためのもの。プログラムで出力するのではない。)

[3]期限1/25 14時まで
             急いでいます!
                    よろしくお願いします。
578デフォルトの名無しさん:2008/01/25(金) 07:18:51
[1] 授業単元: C言語
[2] 問題文:
今年のカレンダーを表示させる
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 明日まで
[5] 意味のある定数はマクロ define文
 途中でreturn exit 外部変数は使わない。
ヨロシクお願いします
579デフォルトの名無しさん:2008/01/25(金) 11:55:44
[1] 問題文: ボンバーマンが格子状(1ブロック1辺20m、マップは縦横それぞれ100ブロック)のマップを爆弾を避けてゴールまでたどり着き、その時間を計算し表示するプログラムを作りなさい。
爆弾の位置座標は既知であり、ボンバーマンの速度は4m/sとする。
[2] 環境
[2.1] OS: Windows
[2.2] コンパイラ名とバージョン: Visual Studio
[2.3] 言語: C++
[3] 期限: 2008年1月28日まで
[4] その他の制限:無し


自分では全く手が出ませんでした…orz
先輩方のお力添えを頂ければ幸いです!
宜しくお願い致します( ´・ω・`)
580デフォルトの名無しさん:2008/01/25(金) 12:03:46
再度申し訳ありません。
スタート時にルートを決定するのではなく、ブロック毎に曲がれるか判断するみたいです。あとなるべく早くゴールにたどり着かないとダメみたいです(>_<)
581デフォルトの名無しさん:2008/01/25(金) 12:16:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):短いのでここに書きます。
(1) wavファイルを解析し、音声データを読むためのプログラムを作成せよ。
(2) 音声データを半分に縮め、変換させるプログラムを書け。
(3) 音声データを反転させるプログラムをかけ。
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 2008年1月28日午前9時まで
[5] その他の制限: 特にありません。
C初心者なので、どう手をつけたらいいのか全くイメージできません。
皆様方のご協力をお願いいたしますm(_ _)m
なにとぞよろしくお願いいたします。
582デフォルトの名無しさん:2008/01/25(金) 12:22:47
>>404
期限が切れてしまってますが、どなたかよろしくお願いします。
583デフォルトの名無しさん:2008/01/25(金) 13:21:55
>>>>578
#include<stdio.h>
int main(void){
    int year, month, day, week, tmpm, tmpy, i;
    int daymax[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    year = tmpy = 2008;
    month = tmpm = 1;
    day = 1;
    if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) daymax[1] = 29;
    if (tmpm < 3) {
        tmpy--;
        tmpm += 12;
    }
    week = (tmpy + tmpy/4 - tmpy/100 + tmpy/400 + (13*tmpm+8)/5 + day) % 7;
    for(; month <= 12; day++, week++){
        if(week == 7) week = 0;
        if(day == 1){
            printf("\n***** %04d / %2d *****\n", year, month);
            for(i=0; i < week; i++) printf(" ");
        }
        printf(" %2d", day);
        if(day == daymax[month-1]){
            putchar('\n');
            day = 0;
            month += 1;
            continue;
        }
        if(week == 6) putchar('\n');
    }
    return 0;
}
584デフォルトの名無しさん:2008/01/25(金) 14:56:31
>>582
その書き込みの50分後、
mixiの宿題スレに全く同じ問題を貼った奴が居る。

開発環境と期限は違うが、もしかしてお前さんか?
585デフォルトの名無しさん:2008/01/25(金) 15:26:40
>>579
C++っての見逃して、思いっきりCで書いてしまった
ほかにもっとうまいやり方あったと思うけど、一応できたので参考程度に見てください
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5904.c
586デフォルトの名無しさん:2008/01/25(金) 15:32:33
>>585
printf("\ntime = %d\n", (weight_map[BLOCKNUM-1][BLOCKNUM-1]+1) * 5)

printf("\ntime = %d\n", (weight_map[BLOCKNUM-1][BLOCKNUM-1]) * 5)
に修正してください
587デフォルトの名無しさん:2008/01/25(金) 16:06:30
[1] 授業単元:C++プログラミング
[2] 問題文:
(処理の中身ではなく、ファイルの読み込みに関してなのですが)
1. フォルダ内に複数存在する "***.dat"(***は数字ではない)を読み込んでそれぞれについて同じ処理を行なう。
2. 処理の中でそれぞれのファイル名(***)とその処理結果(これは2つの数値です)をまとめて別の1つのファイルに出力する。
3. フォルダ内の全ての "***.dat" について処理し終わったらプログラムを終了する。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:1/28 AM10:00

上のようなことがしたいのですが、いい方法が思いつきません…
どなたかよろしくお願いします。
588デフォルトの名無しさん:2008/01/25(金) 16:22:49
コマンドラインからhoge *.datとでも入力して、
好きなように繰り返しをすればいい
ここは丸投げスレなんだからもっと具体的に書け
589デフォルトの名無しさん:2008/01/25(金) 17:38:07
>>588
ファイルは"(生徒の名前).dat"となっていて各教科のテストの点が書かれているのでそれを合計し
1つのファイルに全員の分を"生徒の名前:合計点 \n"みたいな感じで出力したいのですが、
おっしゃっている「コマンドラインから〜」というやり方がわからないんです。
すいません
590デフォルトの名無しさん:2008/01/25(金) 18:29:04
>>589
#include <iostream>
#include <fstream>
void main(int argc, char *argv[])
{
std::ofstream output( "output.dat" );
for(int i=1; i<argc; i++){
//argv[i]を読み込んで名前と合計点をoutputに書き出す。格納形式が分からんから書けん
}
cout << "オワタ" << endl;
}

実行ファイルをhoge.exeとするとコマンドラインから
hoge.exe *.dat
と入力すればよい
591587,589:2008/01/25(金) 19:04:28
>>590
>>588をみて同じようなことをしたのですが、
Output.dat には "* : 0" としか出力されないんです…
コマンドラインでワイルドカード使うために何か特別な作業が必要だったりしますか?
592デフォルトの名無しさん:2008/01/25(金) 19:12:38
ファイルの書式も書かずに・・・
593デフォルトの名無しさん:2008/01/25(金) 19:25:42
inputファイルには、"国語: 74"みたいに
"(教科名):(半角スペース)(数値)"というのが7行ならんでいます。

すいません。
594デフォルトの名無しさん:2008/01/25(金) 19:38:38
>>591
#include <stdio.h>
int main(int argc, char *argv[])
{
    int i;
    for(i = 1; i < argc; i++)
        printf("%s\n", argv[i]);
    return 0;
}

これでも
a.exe *.dat
*.dat
とかになる?
595デフォルトの名無しさん:2008/01/25(金) 20:45:43
そもそもwinで実行引数にワイルドカードで一括指定ってできたっけ?
596デフォルトの名無しさん:2008/01/25(金) 20:52:30
標準ではできる。シェルによって対応がまちまちだからなあ
597デフォルトの名無しさん:2008/01/25(金) 20:54:23
あと、>>587は引数の形でなしにプログラム内でディレクトリを掘って探すのが題意かもね。指定されてないけど
598デフォルトの名無しさん:2008/01/25(金) 20:59:39
>>596
そうだったか、それならワイルドカードで指定する際に
カレントディレクトリに該当ファイル置いてないとかかね。
599デフォルトの名無しさん:2008/01/25(金) 21:54:47
@アルゴリズムとデータ構造
Aパズルの世界では、1 から 9 までの数字を 1 個ずつすべて使った数字(たとえば、123456789 とか 321654987)を 小町数 と呼ぶ。1 から 9 までの数字を順番に並べ、 数字の間に演算記号をつけて計算結果が 100 になるような計算式を求めることを 小町算 という。
加算と減算のみからなる小町算の解は、下記のようになる。
12-3-4+5-6+7+89 = 100
123-4-5-6-7+8-9 = 100
123-45-67+89 = 100
123+4-5+67-89 = 100
123+45-67+8-9 = 100
12+3-4+5+67+8+9 = 100
12+3+4+5-6-7+89 = 100
1+23-4+56+7+8+9 = 100
1+23-4+5+6+78-9 = 100
1+2+3-4+5+6+78+9 = 100
1+2+34-5+67-8+9 = 100
9から1までの数を降順に並べ、加算と減算のみで計算式を構成し、計算結果が 0 になるものを全て求めよ。
9 □ 8 □ 7 □ 6 □ 5 □ 4 □ 3 □ 2 □ 1 = 0

上の問題を解くプログラムを作成しなさい。

3、
3,1 windows
2 gcc
3 C
4、明日の午後8時まで
5、特にないです。


よろしくお願いします^
600デフォルトの名無しさん:2008/01/25(金) 22:20:15
>>262です
遅れてすいませんやっと発言ができました(プロバがアク禁食らってました)
本当に感謝ですー
ありがとうございました!
601デフォルトの名無しさん:2008/01/25(金) 22:47:19
602デフォルトの名無しさん:2008/01/25(金) 22:54:45
>>599
int main(void)
{
puts("98+7-65-43+2+1");
puts("98-76+5+4-32+1");
puts("98-7-6-54-32+1");
puts("9+8+7+6+5-4-32+1");
puts("9+8+7+6-54+3+21");
puts("9+8-76-5+43+21");
puts("9-87+6+54-3+21");

return 0;
}
603デフォルトの名無しさん:2008/01/25(金) 23:11:16
[1] 授業単元: C言語
[2] 問題:関数 f は f=√x * √(1 - 2.5 * 10^-5 * x^2)で表される。
xの初期値4.0から0.5刻みで20.0まで変化させたときの
    xとfの値をExcelに出力せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 2008年1月27日
[1] 授業単元: C言語
[5] その他の制限:出力はcsvファイル可。
604591:2008/01/25(金) 23:30:58
>>594
そのプログラムでやってみても *.dat となりますね・・・
>>598のせいだ!と思ったので、.exeのあるディレクトリに .datを全部移してみたのですが、
それでも結果は変わらなかったです。

これはもう手書きで1個1個ファイル指定していくしかないんでしょうか・・・
605デフォルトの名無しさん:2008/01/25(金) 23:32:43
カレントディレクトリの意味分かってるか?
一度exeのあるパスまでcdコマンドで移動してから実行しないとダメだぞ。
606591:2008/01/25(金) 23:42:57
あ、それはさすがに・・・。
すいません
607デフォルトの名無しさん:2008/01/25(金) 23:44:26
>>599
#include<stdio.h>
int calc(char *str){
int ret=0, value, idx;
while(sscanf(str, "%d%n", &value, &idx)>0){
ret+=value;
str+=idx;
}
return ret;
}
char *top(char *str){
while(*--str);
return str+1;
}
void check(char *work, int depth){
if(depth<=0){
*work='\0';
if(calc(top(work))==0) puts(top(work));
return;
}
*work++='0'+depth;
if(depth>1){
*work='+';check(work+1, depth-1);
*work='-';check(work+1, depth-1);
}
check(work, depth-1);
}
int main(void){
char str[20]="";
check(str+1, 9);
return 0;
}
608デフォルトの名無しさん:2008/01/25(金) 23:54:23
>>584
mixiはやっていないので、私ではないです。
609デフォルトの名無しさん:2008/01/25(金) 23:58:54
>>591
Windows のコマンドプロンプトはワイルドカードを展開しないようだ

解決案
1.コマンドプロンプトで動作するシェル(bash とか)を一段かませる
2.実行ファイルのスタートアップルーチンでワイルドカードを展開するコンパイラ(ライブラリ)を使う
3.dir /b の結果を実行ファイルに渡す
4.自力でファイル検索ルーチンを作る
5.手作業でやる
610591:2008/01/26(土) 00:13:33
>>609
そうですか。 わかりました。
1,2,4は今の自分には荷が重そうなので
とりあえず "dir /b > temp.dat" で temp.dat を読ませる感じにしようかと思います。
ありがとうございます。

他の方もありがとうございました。
611デフォルトの名無しさん:2008/01/26(土) 00:46:38
【時間切れ】 (1/25)
>577

【未解決問題】
>>603 1/27
>>581 1/28 9:00
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>148
>404 期限切れだがやって欲しい
612599:2008/01/26(土) 01:18:08
>>601
本当ですね。参考にします。
>>607
非常に助かりました。ありがとうございます^^
613デフォルトの名無しさん:2008/01/26(土) 01:18:46
614デフォルトの名無しさん:2008/01/26(土) 02:15:02
[1] 授業単元:プログラミング
[2] 問題文 3問あります
       http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5908.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 1月28日 午前8時まで
[5] その他の制限:特にないですが
            考察も書かないといけないので何をやっているか軽い注訳をつけてくれるとありがたいです(これはなくても構いません)
615デフォルトの名無しさん:2008/01/26(土) 02:22:27
>>614
課題1と課題2は現行スレで見た気がするぞ。
616デフォルトの名無しさん:2008/01/26(土) 02:37:23
>>615
本当ですか?
ちょっと探してみます
レス番のあてつけとか出来ませんか
617デフォルトの名無しさん:2008/01/26(土) 03:07:10
>>404
つくりかけで忘れていた。もう見れたもんじゃない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5909.zip
618478:2008/01/26(土) 03:18:22
>>616
それぐらい自分で探してくれ・・・と言いたい所だが、
自分がうpした課題1だけ。
619デフォルトの名無しさん:2008/01/26(土) 03:20:41
>>618
本当にありがとうございます(´;ω;`)
620デフォルトの名無しさん:2008/01/26(土) 08:00:09
前スレの231と同じ+αなのですが、落ちちゃって見れません、再度お願いできませんでしょうか?お願いしますorz
問題下[1]プログラミングU
[2]

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

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




621デフォルトの名無しさん:2008/01/26(土) 08:02:59
(3)
(1)で作成したプログラムを元に,科目別の最高得点を表示するプログラムを作成せよ。
(出力結果)
数学の最高得点は70点です。

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

国語の最高得点は82点です

(4)
(1)で作成したプログラムを元に,70点以上を得点した学生の人数を科目別に表示するプログラムを作成せよ。
(出力結果)
数学:1人
英語:2人
国語:1人

(5)
(1)で作製したプログラムを元に、出力結果をユーザ関数を使って表示するプログラムを作成せよ。
(ユーザ関数の概要)
main()関数から成績データを渡し、そのデータを(1)の(出力結果)どおりに表示する。
また、ユーザ関数はhyouji()とする。

(6)
(1)で作製したプログラムを元に、次の構造体をつかって(出力結果)を表示するプログラムを作成せよ。
(構造体)
typedef struct{
int no;
int suugaku;
int eigo;
int kokugo;
}seiseki;
622デフォルトの名無しさん:2008/01/26(土) 08:05:18
[3]環境
[3.1]XP
[3.2]visual studio 2005
[3.3]C++
[4]今日中
[5]なし


sageソコね、長文申し訳ないです、期間も短いので、困難かもしれませんが出来る限りでいいのでお願いできませんか?
623デフォルトの名無しさん:2008/01/26(土) 08:06:33
最後までsage損ねてる俺ばっかす・・・すいませんでしたorz
624デフォルトの名無しさん:2008/01/26(土) 09:07:17
>>614 B
#include <stdio.h>
#include <math.h>
main(int argc,char *argv[])
{
int point,i=0;
double x,y,old_x,old_y,distance=0.0;
char line[1000];
FILE *fp;
if(argc!=2){
printf("Usage: %s <filename>\n",argv[0]);
exit(1);
}
if((fp=fopen(argv[1],"r"))==NULL){
printf("file can't open.\n");
exit(1);
}
while(fgets(line,999,fp)!=NULL){
if(sscanf(line,"%lf %lf",&x,&y)==1){
point=x;//データが1つしかない=点の数なのでpointに代入
continue;
}
if(i==0){ old_x=x; old_y=y; }//初回は以前の点がないので同じにする
distance+=sqrt(((x-old_x)*(x-old_x))+((y-old_y)*(y-old_y)));//2点間の距離の公式
old_x=x; old_y=y;//前回座標の保存
i++;
}
printf("point = %d distance = %lf\n",point,distance);
}
前回の点から今回の点まで移動した距離の合算でいいんだよね?
625デフォルトの名無しさん:2008/01/26(土) 12:05:11
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5910.zip
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5911.zip
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1/26
[5] その他の制限:なし

分かりません、よろしくお願いします。
626デフォルトの名無しさん:2008/01/26(土) 12:40:18
zipの場合は簡単に説明を書いてくれ
落として解凍するのダルいし
627デフォルトの名無しさん:2008/01/26(土) 12:55:02
なぜzipなんだ・・・やる気うせる
ウィルス恐いよ〜・゚・(つД`)・゚・。
628デフォルトの名無しさん:2008/01/26(土) 13:17:54
ウィルス恐いよ〜(笑)
629625:2008/01/26(土) 13:37:03
内容は点電荷の電位を計算して、電荷の分布と電位の関係を求めるとありました。
もしかしたらこんな課題やらせるようなスレじゃなかったりして(汗)

ZIPは安心して、ウィルスなんかないから(´∀`)
630デフォルトの名無しさん:2008/01/26(土) 13:38:13
俺は電磁気学は興味ないからやってないしな。
力学なら余裕なんだがすまんね
631デフォルトの名無しさん:2008/01/26(土) 13:40:10
>>624
そうです、ありがとうございました
632デフォルトの名無しさん:2008/01/26(土) 13:55:33
電磁気しらんで方程式くそくらえ、電磁気のラウンド微分はどうし様
633デフォルトの名無しさん:2008/01/26(土) 13:57:47
へん微分と数論は違うんだからね、ふん
634デフォルトの名無しさん:2008/01/26(土) 14:31:59
(´∀`)
635デフォルトの名無しさん:2008/01/26(土) 14:47:17
X+とX++の違いをわかる奴は天才だろ
636デフォルトの名無しさん:2008/01/26(土) 14:49:25
バグを作らないグループとバグをツクリヤスイグループってあるわ、人のいうこと聞かない
637デフォルトの名無しさん:2008/01/26(土) 15:31:15
[1] 授業単元:離散数学
[2] 問題文(含コード&リンク):
  格子点上に置かれた任意の4点を結ぶ最小の直線スタイナーツリーを見つけるプログラムを作成せよ。
  候補が複数ある場合は、それらを全て表示させるようにさせよ。

 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:2/7
[5] その他の制限:
直線スタイナー木とは、碁盤上の縦横の線の交点に点を置き、
置いた全ての点を、碁盤の直線に沿って作る線分によって結ぶネットワークの事です。
例 http://www.dotup.org/uploda/www.dotup.org2826.jpg.html
閉路(ある点を出て、またその点に帰ってくる道がある状態)を作ってはいけません。
その直線スタイナー木の中で、最も距離の短いものを探せというものです。
もちろん、答えは複数候補ある場合が圧倒的に多いです。

とりあえず、自分で4点の座標を適当に置いてやれ、という事です。

どんなに泥臭い方法でも構わないので、ご協力お願いします。
638579:2008/01/26(土) 16:00:26
>>585さん

本当にありがとうございます!
639デフォルトの名無しさん:2008/01/26(土) 16:06:02
[1] 授業単元:プログラミング論
[2] 問題文(含コード&リンク):
<問題1>
1からnまで加算して、その和が1000を超えるのはnがいくつのときか。
また、そのときの合計はいくつになるか。
<問題2>
1から30までの整数の中から奇数だけを取り出して配列に格納し、
その合計を求めるプログラムを作れ。
<問題3>
10個のデータをキーボードから入力し、合計を求めるプログラム
を作れ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:LCC-Win32
 [3.3] 言語:C
[4] 期限:2/5
[5] その他の制限:なし

お願いします。
640デフォルトの名無しさん:2008/01/26(土) 16:26:34
おまいら、マジデ、ノードが増えたら手におえなくなるという答えを期待している先生を
裏切るんだな
641デフォルトの名無しさん:2008/01/26(土) 16:41:54
>>639
問題1
#include <stdio.h>
int main(void)
{
int i, sum;
for(i=sum=0;sum<=1000;sum+=++i);
printf("%d, %d\n", i, sum);
return 0;
}
642デフォルトの名無しさん:2008/01/26(土) 16:43:18
まあ動的計画法でも使うんだろうな。
643デフォルトの名無しさん:2008/01/26(土) 16:56:39
>>639
2
#include <stdio.h>
int main(void) {
int odd[30/2+30%2] = {0}, n, i;
for(i=n=0;n<=30;++n) {
if(1 == n%2) {
odd[i++] = n;
}
}
for(i=n=0;i<sizeof(odd)/sizeof(int); ++i) {
n+=odd[i];
}
printf("%d¥n", n);
return 0;
}
644デフォルトの名無しさん:2008/01/26(土) 16:58:50
ちなみにodd eyeなのは狙ってやった。
645デフォルトの名無しさん:2008/01/26(土) 17:08:39
そこでORアルゴリズム
646デフォルトの名無しさん:2008/01/26(土) 19:07:34
>>620
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5913.txt
組んだ後にC++だと気づいたorz
なんでCだけど・・・一応うpしておきます。
647デフォルトの名無しさん:2008/01/26(土) 19:58:08
>>639
<問題3>
整数限定で。
#include <stdio.h>
#include <limits.h>

int main(void) {
int sum=0, i;
char sz[LINE_MAX];
const char * psz;
for(i=1; i<=10;) {
while(1) {
printf("input %d:", i);
if(fgets(sz, sizeof(sz), stdin)) {
int nTmp = strtol(sz, &psz, 10);
if('¥n' == *psz && sz != psz) {
sum += atol(sz);
++i;
break;
}
}
printf("error¥n");
}
}
printf("sum = %d¥n", sum);
return 0;
}
648デフォルトの名無しさん:2008/01/26(土) 19:59:40
すまん、パッチ。
- sum += atol(sz);
+ sum += nTmp;
649デフォルトの名無しさん:2008/01/26(土) 23:26:00
>>637
出力フォーマットが分からないと何とも。
あと入力されうる点の上下限値は示されてないのか。

4点からの最短共有点を列挙するプログラムを書いたので好きに変えてくれ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5914.txt
入力フォーマットは雰囲気で把握してくれ。
650デフォルトの名無しさん:2008/01/27(日) 00:11:26
[1] デジタル画像処理
[2] 直線補間法を用いて、[256x256]画素の画像を、[512x512]画素の画像になるよう
拡大するプログラムの作成
[3.1] Linux
[3.2] gcc
[3.3] C言語
[4] 明後日までです
制限はないです!

お願いします。
651デフォルトの名無しさん:2008/01/27(日) 00:12:38
[1] デジタル画像処理
[2] 直線補間法を用いて、[256x256]画素の画像を、[512x512]画素の画像になるよう
拡大するプログラムの作成
[3.1] Linux
[3.2] gcc
[3.3] C言語
[4] 明後日までです
制限はないです!

お願いします。
652デフォルトの名無しさん:2008/01/27(日) 00:32:44
【時間切れ】 (1/26)
>625

【未解決問題】
>>603 1/27

>>614 1/28 8:00 残:課題2
>>581 1/28 9:00
>>650 1/29
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>148
653デフォルトの名無しさん:2008/01/27(日) 01:28:32
>>603
#include <stdio.h>
#include <math.h>
double f(double x)
{
return sqrt(x)*sqrt(1.0-2.5e-5*x*x);
}
main()
{
double x;
FILE *fp;
if((fp=fopen("dat.csv","w"))==NULL){
printf("file can't open\n");
exit(1);
}
fprintf(fp,"x,f\n");
for(x=4.0;x<=20.0;x=x+0.5){
fprintf(fp,"%lf,%lf\n",x,f(x));
}
fclose(fp);
}
654デフォルトの名無しさん:2008/01/27(日) 15:11:07
>>583
スイマセン、ポインタも使わないという条件を書くのを
忘れていました。
もう一度お願いしてもいいでしょうか?
655デフォルトの名無しさん:2008/01/27(日) 15:15:38
>>654
条件後付けして再度やってくれって・・・。
つか、”ちゃんとソース見た"のか?
656デフォルトの名無しさん:2008/01/27(日) 15:16:43
>>654
#include<stdio.h>
int main(void){
    int year, month, day, week, tmpm, tmpy, i;
    int daymax[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    year = tmpy = 2008;
    month = tmpm = 1;
    day = 1;
    if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) daymax[1] = 29;
    if (tmpm < 3) {
        tmpy--;
        tmpm += 12;
    }
    week = (tmpy + tmpy/4 - tmpy/100 + tmpy/400 + (13*tmpm+8)/5 + day) % 7;
    for(; month <= 12; day++, week++){
        if(week == 7) week = 0;
        if(day == 1){
            printf("\n***** %04d / %2d *****\n", year, month);
            for(i=0; i < week; i++) printf(" ");
        }
        printf(" %2d", day);
        if(day == daymax[month-1]){
            putchar('\n');
            day = 0;
            month += 1;
            continue;
        }
        if(week == 6) putchar('\n');
    }
    return 0;
}
657デフォルトの名無しさん:2008/01/27(日) 15:27:44
ワロタ
658デフォルトの名無しさん:2008/01/27(日) 17:23:15
659デフォルトの名無しさん:2008/01/27(日) 17:56:42
OS Mac言語C言語



課題 13.3 キーボードから 5 個の英単語を入力し、辞書順に並べ替えて表示するプログラムを作成せ
但し、
? main関数内で単語を入力し、並び替える作業を関数 Sort 内で行なう
? 関数 Sortは戻り値がなく、入力した配列 wordを引数に持つ
? 結果の表示は main関数内で行なう
? 完全に辞書順にするのは難しいため、1 文字目のみを見て並び変えれば良いものとする
? 入力する単語は apple、peach、banana、grape、melonとせよ



自分で製作したのですが、無理でした。
基本これに、似た形を作ってもらって。
間違えも指摘してください。


#include<stdio.h>

#define N 5

void Sort(char input[][]);

main() {
int i;
char array[N[6];


660デフォルトの名無しさん:2008/01/27(日) 17:58:01
printf("Input %d numbers\n", N);
for(i=0; i<N; i++) {
printf("array[%d] = ", i);
scanf("%s", (array+i));
}

Sort(array);
printf("Sort result.\n");
for(i=0; i<N; i++) {
printf("array[%d] = %s\n", i, array[i]);
}
}

void Sort(char input[][]) {
int i, j;
char temp;

for(i=1; i<N; i++) {
for(j=N-1; j>=i; j--) {
if(input[j-1][0] > input[j][0]) {
temp = input[j-1];
input[j-1] = input[j];
input[j] = temp;
}
}
}
}
661デフォルトの名無しさん:2008/01/27(日) 18:32:35
>>583ってポインタ使ってないよね?
662デフォルトの名無しさん:2008/01/27(日) 18:55:05
>>656
printf()って、引き数にポインタをとるんですよね?
ポインタを使わないでくださいって書いているんですけど読めないんですか?
663デフォルトの名無しさん:2008/01/27(日) 18:55:54
>>659
>間違えも指摘してください。
「間違え」ではなくて、「間違い」ですね。
664デフォルトの名無しさん:2008/01/27(日) 19:08:53
一次配列の中身をランダムに置換して更に、それを
逆置換するプログラムを教えてください。
ある係数を渡すことで毎回同じ並びになるようにして
暗号のように使えるようにしないといけないみたいです。

 
例えば「1」という係数を渡すと
[3 2 4 1]を[2 4 1 3]にシャッフルして
それをもう一度[3 2 4 1]に戻したいです
665デフォルトの名無しさん:2008/01/27(日) 19:25:04
>>664
> 一次配列の中身をランダムに置換して更に、それを逆置換する
・一次配列って一次元配列ってこと?
・ランダムに置換の,「ランダムに」ってどの程度のことを言っているの?
666664:2008/01/27(日) 19:36:22
>>665
すみません「元」が抜けてましたね。
ランダムがどの程度か…そこまで指定されてないんですが
簡単な規則性が無ければ良いと思います。
667デフォルトの名無しさん:2008/01/27(日) 19:38:22
>>664
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARRAY_SIZE 32
void shift(int *p, int v) {
int *buf = (int*)malloc(sizeof(int)*v+1);
memcpy(buf, p, sizeof(int)*v);
memmove(p, p+v, sizeof(int)*ARRAY_SIZE);
memcpy(p+(ARRAY_SIZE-v), buf, sizeof(int)*v);
}
void print(int *p) {
int i = 0;
printf("array[%d] = {", ARRAY_SIZE);
do {
printf("%d", p[i]);
} while (++i < ARRAY_SIZE && putchar(','));
printf("}\n");
}
int main () {
int i, in, array[ARRAY_SIZE];

for (i = 0; i < ARRAY_SIZE; ++i) array[i] = i;

print(array);
scanf("%d", &in);
shift(array, in%=ARRAY_SIZE);
print(array);
shift(array, ARRAY_SIZE-in);
print(array);
return 0;
}
668デフォルトの名無しさん:2008/01/27(日) 19:39:11
例の
> [3 2 4 1]を[2 4 1 3]にシャッフルして
これがモロ規則性あるからその通りに作った。
669デフォルトの名無しさん:2008/01/27(日) 19:54:07
>>659
Sort関数内に
printf("%d,%d\n",i,j);
を追加して、ちゃんとソートが行われているかどうか確認するといい


670デフォルトの名無しさん:2008/01/27(日) 20:03:38
>>664
#include<stdio.h>
#include<stdlib.h>
typedef struct tag_dataset{int index, data;}dataset_t;
void swap_int(int *a, int *b){int c;c=*a;*a=*b;*b=c;}
void swap_dataset(dataset_t *a, dataset_t *b){dataset_t c;c=*a;*a=*b;*b=c;}
void encode(int data[], int datanum, int seed){
int i;
srand(seed);
for(i=0;i<datanum;i++) swap_int(&data[i], &data[rand()%(i+1)]);
}
void decode(int data[], int datanum, int seed){
int i; dataset_t *tmp;
srand(seed);
tmp=malloc(sizeof(*tmp)*datanum);
for(i=0;i<datanum;i++) tmp[i].index=i;
for(i=0;i<datanum;i++) swap_dataset(&tmp[i], &tmp[rand()%(i+1)]);
for(i=0;i<datanum;i++) tmp[i].data=data[i];
for(i=0;i<datanum;i++) data[tmp[i].index]=tmp[i].data;
free(tmp);
}
void prt(int data[], int datanum){
int i;
for(i=0;i<datanum;i++) printf(" %d", data[i]);
printf("\n");
}
int main(void){
int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10}, datanum=sizeof(data)/sizeof(data[0]);
encode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */
decode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */
return 0;
}
671581:2008/01/27(日) 20:12:35
>>658さん

解析サンプルまで付けてくださってありがとうございます(T_T)
本当に困っていたので助かりました!!

これを元に(2)と(3)にも挑戦します・・・
でも期限には絶対間に合う予感がしない・・・orz
672670:2008/01/27(日) 20:13:10
>>664
>>670 を書き直した
#include<stdio.h>
#include<stdlib.h>
void swap(int *a, int *b){int c;c=*a;*a=*b;*b=c;}
void encode(int data[], int datanum, int seed){
int i;
srand(seed);
for(i=0;i<datanum;i++) swap(&data[i], &data[rand()%(i+1)]);
}
void decode(int data[], int datanum, int seed){
int i, *tmp;
srand(seed);
tmp=malloc(sizeof(int)*datanum);
for(i=0;i<datanum;i++) tmp[i]=rand()%(i+1);
for(i=datanum-1;i>=0;i--) swap(&data[i], &data[tmp[i]]);
free(tmp);
}
void prt(int data[], int datanum){
int i;
for(i=0;i<datanum;i++) printf(" %d", data[i]);
printf("\n");
}
int main(void){
int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10};
int datanum=sizeof(data)/sizeof(data[0]);
encode(data, datanum, 0); /* 0 の部分が乱数seed */
prt(data, datanum);
decode(data, datanum, 0); /* 0 の部分が乱数seed */
prt(data, datanum);
return 0;
}
673デフォルトの名無しさん:2008/01/27(日) 20:13:23
[1] 授業単元: cプログラミング入門」
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5918.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c言語
[4] 期限:1/31まで
[5] その他の制限;特になし
どうかよろしくお願い致します。
674659 :2008/01/27(日) 20:14:55
自分でもう一度やってみたけど。分けわからなくなってきた。
もう本当に無理っぽい。

誰か、答えを教えてください。
675デフォルトの名無しさん:2008/01/27(日) 20:38:56
死ねカス
676デフォルトの名無しさん:2008/01/27(日) 20:53:40
[1] 授業単元:C言語演習
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5919.txt
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C言語
[4] 期限:1月28日中
[5] その他の制限:特にありません。
よろしくお願いします!
677 ◆LnG.2EAY0A :2008/01/27(日) 21:01:19
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を
ファイル操作を使って一括設定できるようにする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5920.txt
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:VC 6
 [3.3] 言語:C
[4] 期限:2008年01月28日午前まで
[5] その他の制限:ファイル操作を習う所まで授業で進みました。
自分でも試行錯誤してみたのですが中々うまく行かず・・・
皆さんの知恵をお借りしたいと思います、よろしくおねがいします。
678デフォルトの名無しさん:2008/01/27(日) 21:08:28
>>659
ここは宿題スレだ。
組んで欲しいならテンプレ使って正式に頼め。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5921.txt
ギャーギャー騒がれると目障りだし、これ持って去りな。
679デフォルトの名無しさん:2008/01/27(日) 21:36:04
>>678
なんというツンデレw
680デフォルトの名無しさん:2008/01/27(日) 21:55:48
>>676
showpidがおかしくないか?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

int main() {
pid_t pid;
int i, status, flg = 0;
for (i = 0; i < 10; ++i) {
if ((pid = fork()) < 0) {
fprintf(stderr, "error\n");
exit(1);
}

if (pid == 0) {
execv("showpid", NULL);
exit(1);
} else {
if (flg == 0) {
flg = 1;
printf("I am a parent with pid = %d.My child is %d.\n",getpid(),pid);
}
waitpid(pid, &status, 0);
}
}

return 0;
}
681デフォルトの名無しさん:2008/01/27(日) 21:57:02
## showpid ##
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
printf("I am a child with pid = %d,My parent pid is %d.\n",getpid(),getppid());
exit(EXIT_SUCCESS);
}
682664:2008/01/27(日) 22:07:09
>>870
助かりました☆
ありがとうございます!
683デフォルトの名無しさん:2008/01/27(日) 22:08:13
>>870
やるじゃん
684637:2008/01/27(日) 22:08:40
>>649

ありがとうございます!
あとはなんとかしてみようと思います。
685デフォルトの名無しさん:2008/01/27(日) 22:16:07
簡単なゲームを作れといわれたのですがわかりません
誰か助けてください
686デフォルトの名無しさん:2008/01/27(日) 22:16:43
687デフォルトの名無しさん:2008/01/27(日) 22:50:20
>>686
むつかしくてわかりません、もっと簡単なのお願いします
ポーカーとかでいいです
688デフォルトの名無しさん:2008/01/27(日) 22:52:28
>>687
頭は大丈夫か?
689デフォルトの名無しさん:2008/01/27(日) 22:57:01
ポーカーの方がよっぽど難しい罠
690デフォルトの名無しさん:2008/01/27(日) 23:00:12
>>687
まあ何も考えずに>>677の問題文にあるソースをコピってコンパイルして動かしてみろ
そして中身を理解しろ

ポーカーはそれからだ
691デフォルトの名無しさん:2008/01/27(日) 23:05:29
オセロ作るスレってのがあったな
692デフォルトの名無しさん:2008/01/27(日) 23:06:59
>>676
当方で確認した環境は Vine Linux 4.2 (kernel 2.6.16.36), 処理系は gcc 3.3.6 です。
showpid; http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5922.txt
tentimes: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5923.txt

関係ないが、
http://espio.air-nifty.com/espio/
によると、鳥インフルエンザがインドではやっているらしい。1400 人超えたとか超えないとか。
それにしても日本ではなぜ報道されないのか?
693デフォルトの名無しさん:2008/01/27(日) 23:07:04
釣りだろ
694デフォルトの名無しさん:2008/01/27(日) 23:14:30
695692:2008/01/27(日) 23:21:19
>>680
確かに提示されたshowpidはおかしいですね。私もひっかかってしまった。
696デフォルトの名無しさん:2008/01/28(月) 00:00:31
【時間切れ】 (1/27)
なし

【未解決問題】
>>614 1/28 8:00 残:課題2
>>581 1/28 9:00 残:課題2、3
>>677 1/28 午前まで
>>650 1/29
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>79 無期限
>144 無期限 問題文>148
697デフォルトの名無しさん:2008/01/28(月) 01:05:26
オレも早くせっくるしたい、by20歳
698デフォルトの名無しさん:2008/01/28(月) 02:54:34
699デフォルトの名無しさん:2008/01/28(月) 03:04:20
[1] 授業単元:C演習
[2] 問題文(含コード&リンク):
/*ガウスの消去法プログラム*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#define A(x,y) a[(x)*(L+1)+y]
void output(double *a, int, int);
int gauss(double*a,double*x,int L,int n,double eps,int isw)
main(){
double amax,awap;
int i,j,k,l,m,ii,irow;
if(isw==1) output(a, L, n){
for(m=0;m<n-1;m++){
amax=fabs(A(m,m));
irow=m;
for(i=m+1;i<n;i++){
if(amax<fabs(A(i,m))){
amax=fabs(A(i,m));
irow=i;}
if(amax<=eps){
return(0);}
if(m!=irow){
for(l=m;l<n+1;l++){
続く
[3] 環境
 [3.1] OS: Windows 
 [3.2] コンパイラ名とバージョン: cresent
 [3.3] 言語: C++
[4] 期限: 1月28日11:00まで
700デフォルトの名無しさん:2008/01/28(月) 03:18:16
>>699
見難い。
出直して来い。
701673:2008/01/28(月) 07:23:48
<<694ありがとうございます!参考にします。
702デフォルトの名無しさん:2008/01/28(月) 10:56:13
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):
配列に整数を100個蓄える。
(1)蓄える整数は関数randによって与えられるものとし、
この配列をバブルソートによってソートした結果を出力するプログラムを作成せよ。

(2)また、上の問題を選択ソートを使用したプログラムに変更せよ。

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

よろしくお願いします
703デフォルトの名無しさん:2008/01/28(月) 11:26:39
>>702 ありきたりで申し訳ないが
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
#define SWAP(type, x, y) do{type tmp = x; x = y; y = tmp;}while(0)
// バブルソート
void bsort(int *a, int n){
    int i, j;
    for(i = 0; i < n - 1; i++)
        for(j = i + 1; j < n; j++)
            if(a[i] > a[j])
                SWAP(int, a[i], a[j]);
}
// 選択ソート
void ssort(int *a, int n){
    int i, j, min;
    for(i = 0; i < n - 1; i++){
        min = i;
        for(j = i + 1; j < n; j++) if(a[min] > a[j]) min = j;
        SWAP(int, a[i], a[min]);
    }
}
int main(void){
    int i, a[N];
    srand((unsigned)time(NULL));
    for(i = 0; i < N; i++) a[i] = rand()%100;
    for(i = 0; i < N; i++) printf("%4d", a[i]);
    printf("\n");
    bsort(a, N); // ssort(a, N);
    for(i = 0; i < N; i++) printf("%4d", a[i]);
}
704デフォルトの名無しさん:2008/01/28(月) 11:42:15
>>702
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//バブルソート
int main(void){
int i,j,num[100],temp;
srand(time(NULL));
for(i=0;i<100;i++)num[i]=rand();
for(i=99;i>0;i--){
for(j=0;j<i;j++)
if(num[j]>num[j+1]){
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;}}}
for(i=0;i<100;i++)printf("%d\n",num[i]);
return 0;
}
//選択ソート
int main(void){
int i,j,num[100],min,temp;
srand(time(NULL));
for(i=0;i<100;i++)num[i]=rand();
for(i=99;i>0;i--){
min=i;
for(j=0;j<i;j++)if(num[min]>num[j])min=j;
temp=num[min];
num[min]=num[i];
num[i]=temp;}
for(i=0;i<100;i++)printf("%d\n",num[i]);
return 0;
}
705 ◆HXgzCCSIaM :2008/01/28(月) 13:00:19
1] 授業単元:プログラミング演習T
[2] 問題文(含コード&リンク):
構造体を用いて加減算を行う。
以下の空白(oooo)を埋めよ。
#include <stdio.h>
struct { /* 構造体の宣言 */
struct{
int a;
int b;
}keisan;

int main( void )
{
  int wa, sa; /* 変数の宣言 */
  scanf( "%d, %d", &keisan.a, &keisan.b             ); /* 入力 */
  wa= oooo    ; /* 加算 */
  sa= oooo    ; /* 減算 */
  printf( "和は%d 差は%d\n", wa, sa ); /* 出力 */
return 0;

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] VC 5.5
 [3.3] 言語: (C)
[4] 期限: 無期限
[5] その他の制限: 特になし

途中まで自分で埋めたのですが、oooo部分が違うと指摘されました。
よろしくお願いします。
706デフォルトの名無しさん:2008/01/28(月) 13:20:35
>>705
wa = keisan.a + keisan.b
sa = keisan.a - keisan.b
707デフォルトの名無しさん:2008/01/28(月) 13:27:12
>>705
scanfの中も違う
scanf( "%d %d", &keisan.a, &keisan.b); /* 入力 */
708デフォルトの名無しさん:2008/01/28(月) 13:39:04
合ってるんじゃね?
709デフォルトの名無しさん:2008/01/28(月) 13:44:44
問題は、出題の意図がどうであったか、だな。
710 ◆HXgzCCSIaM :2008/01/28(月) 13:58:31
>706-709
ありがとうございます。問題部分はこれで解決しました。
甘えてもう1題

[2] 問題文(含コード&リンク):
 2つの正の整数値a,bの最大公約数を出力するプログラムをユークリッドの互除法というアルゴリズムを用いて作成したい。
 以下のプログラムの****部分に適切な処理をいれて,プログラムを完成させなさい。

#include <stdio.h>
int main( void )
{
 int a, b;    /* 変数の宣言 */
 int m, n;
 scanf( "%d,%d", &a, &b );/* 2つの正の整数値を入力する */
 m=  a ;
 n=  b ;
 while(m **** n){   /* ユークリッドの互除法を適用 */
  if( m > n )
   m =  *****    ;
  else
   n =  ****     ;

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] VC 5.5
 [3.3] 言語: C言語
[4] 期限:無期限
[5] その他の制限: 特になし

同じく後半部分が解りませんでした。
よろしくお願いします。
711デフォルトの名無しさん:2008/01/28(月) 14:12:14
>>710
while(m != n){
    if(m > n)
        m = m - n;
    else
        n = n - m;
}
712デフォルトの名無しさん:2008/01/28(月) 14:13:21
#include <stdio.h>
int main(void)
{
int a,b,m,n;
scanf("%d %d",&a,&b);
m=a;
n=b;
while(m*n)
{
if(m>n)
m%=n;
else
n%=m;
}
printf("%dと%dの最大公約数は%dです",a,b,m+n);
return 0;
}
713デフォルトの名無しさん:2008/01/28(月) 14:17:37
lcmやgcdの問題が多すぎ。
714デフォルトの名無しさん:2008/01/28(月) 15:16:02
柴田望洋の本を使ってる授業多いNE。
715 ◆HXgzCCSIaM :2008/01/28(月) 15:17:33
>711
ありがとうございます!助かりました。

>712
別の表記方法なんですね。
勉強になります。

716デフォルトの名無しさん:2008/01/28(月) 15:30:22
[1]プログラミング入門
[2]問題文
 キーボードから月(1~12)を入力して、その月の日数を表示するプログラムを
 完成させなさい
[3]環境
 [3.1] OS:WindowsXP
 [3.2] VC 5.5
 [3.3] 言語: C言語
[4]期限:1月29日
[5]その他の制限特になし

初心者ですがよろしくおねがいします
717デフォルトの名無しさん:2008/01/28(月) 15:35:48
>>716
#include <stdio.h>

int main(void)
{
int month, Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
scanf("%d", &month);
printf("%d", Days[month - 1]);
return 0;
}
718デフォルトの名無しさん:2008/01/28(月) 17:27:31
[1]プログラミング演習U
[2]問題文
sample.txt 
0 1 2,
2 4 5,
3 4 2,
1 2 5,
2 2 2,
3 1 4,
1 1 2,
2 1 3,
3 5 4,
4 2 2,

 上の外部テキストファイル(sample.txt)に書かれている座標データを読み込み、
 1行ずつ順にx,y,zの配列に格納し、ちゃんと格納されたか出力してください。
[3]環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名:gcc
 [3.3] 言語: C言語
[4]期限:1月28日 17:00
[5]その他の制限特になし
719デフォルトの名無しさん:2008/01/28(月) 17:32:35
期限切れ
720 ◆LnG.2EAY0A :2008/01/28(月) 18:21:22
以前質問させてもらった>>677です。
期限を01月28日と書きましたが、宿題の期限が伸びたので
図々しい様ですが、改めてお願いさせて頂いても良いでしょうか?
内容は変わりありません。

[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を
ファイル操作を使って一括設定できるようにする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5920.txt
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:VC 6
 [3.3] 言語:C
[4] 期限:2008年02月05日まで
[5] その他の制限:ファイル操作を習う所まで授業で進みました。
自分でも試行錯誤してみたのですが中々うまく行かず・・・
皆さんの知恵をお借りしたいと思います、よろしくおねがいします。
721デフォルトの名無しさん:2008/01/28(月) 18:35:20
>>720
問題文の意図が明瞭でない。それだと答えようがない
722 ◆LnG.2EAY0A :2008/01/28(月) 19:19:25
>>721
説明不足ですみませんでした。
問題文の元は、石取りゲームといって最初に全体の石の数・そこから一度に取れる数を設定しなければいけません、それが以下の部分です↓
printf("石を交互に取り、最後の1個を取った人が負けです\n");
while (1) {
nOrder = 1;
printf("石の数は(5以上100以下)==");
gets(answer);
nStone = atoi(answer);
if (nStone < 5 || nStone > 100) {
printf("石の数が不正です\n");
continue;
}
while (1) {
printf("一度に取れる石の数は(2以上)==");
gets(answer);
nGet = atoi(answer);
if (nGet >= nStone) {
printf("一度に取れる石の数が多すぎます\n");
continue;
}
if (nGet < 2) {
printf("一度に取れる石の数が少なすぎます\n");
continue;
}
break;
}
この部分で設定するのですが、最初の石の数・一度に取れる数を一度に設定できるようにしたいのです。例えば、
「一括設定を使いますか?→ y/n」→「難易度を選択して下さい→ 1:優しい 2:普通 3:難しい」
ここで1を入力すると、石の数と取れる数をファイルから読み込み、その設定でプレイする。といった感じです。
説明下手ですみません、追記させていただきました。
723デフォルトの名無しさん:2008/01/28(月) 20:10:38
#include<stdio.h>
#include<string.h>
int main(void){
FILE *fp;
char line[128], *p;
int nStone, nGet, level, cnt;
〜省略〜
for(cnt=1; fgets(line, 128, fp) != NULL && cnt <= 3; cnt++){
 if(level != cnt) continue;
 p=strchr(line, '\n');
 if(p!=NULL) *p='\0';
 sscanf(line, "%d %d", &nStone, &nGet);
 break;
}
〜省略〜
724デフォルトの名無しさん:2008/01/28(月) 21:08:06
[1]通信工学II
[2]問題文(含コード&リンク):
  次の文字送受信プログラム(IPv4専用)を、IPv4/v6デュアルスタックのプログラムに改良せよ。
  クライアント:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5929.zip
  サーバー:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5930.zip
[3]環境
 [3.1] OS:Windows XP/Vista
 [3.2] コンパイラ名:Visual C++ 2005 SP1
 [3.3] 言語:C++
[4]期限:1月31日 16:00
[5]その他の制限:特になし

丸投げですがよろしくお願いいたします。
725デフォルトの名無しさん:2008/01/28(月) 21:15:27
なんかデカいのがきたな。
726デフォルトの名無しさん:2008/01/28(月) 22:22:04
コメントそれなりについてるけど、このスレにしては確かにでかいな・・・
変更が必要な箇所を明記してくれてるけど、専門外でさっぱりわかんねw
727デフォルトの名無しさん:2008/01/28(月) 22:32:12
素人でホントに困っています。よろしくお願いします

【質問テンプレ】
[1] 授業単元: 情報科学実習
[2] 問題文(含コード&リンク):()
問題>
次のような書式のファイルからデータを読み出して、標準体重の人の名前と
血液型一覧を別のファイルに出力せよ。ただし、classを用いること。また、
人のデータは必要によってメモリ割り当てすること

*標準体重・・・まず。指数k=平均体重/(平均身長-100)を出す。
各人の理想体重は(身長-100)×kであり、標準体重は、理想体重の97〜103%。

・データファイルの書式
一行目:人数
二行目以降:名前 血液型 身長 体重

・データファイルの例
2
Mizumoto O 172 67
Otake A 170 62
[3] 環境
 [3.1] OS: I Mac
 [3.2] コンパイラ名とバージョン: E macs
 [3.3] 言語:C++
[4] 期限: 2008年2月6日まで
[5] その他の制限:繰り返し、条件式、配列、アドレス、ポインタ、スコープ、
クラスを習いました。
728デフォルトの名無しさん:2008/01/28(月) 23:27:23
コンパイラ?
729デフォルトの名無しさん:2008/01/29(火) 00:16:19
【時間切れ】 (1/28)
>581 >718

【未解決問題】
>>650 1/29

http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>724 1/31 16:00
>>720 2/5 詳細>>722
>>727 2/6
>79 無期限
>144 無期限 問題文>148
730デフォルトの名無しさん:2008/01/29(火) 00:33:26
>>727
この計算式通り計算すると理想体重が170付近になってしまいますが
理想体重でなくて理想身長の間違いではないでしょうか?
電卓で計算してみて下さい。
731730:2008/01/29(火) 00:35:05
あ、ごめんなさい。私の間違いでした。
732デフォルトの名無しさん:2008/01/29(火) 00:53:45
>>727
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5933.txt

data2.datというファイルに結果を出力しています。
733デフォルトの名無しさん:2008/01/29(火) 01:33:25
[1] 授業単元:C言語
[2] 問題文(含コード&リンク)
入力された整数を配列に順次格納する(昇順になるように入力すること)。
0が入力された時に整数の入力を終了し、次に入力された数字を、二分探索によって
配列から探索し、その配列の添え字番号を出力するプログラムを作成せよ

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

お願いします
734702:2008/01/29(火) 01:44:08
>>703-704
ありがとうございました
735デフォルトの名無しさん:2008/01/29(火) 02:21:02
>>733
#include <stdio.h>
#include <stdlib.h>
#define BUFFSIZE 32
#define ARRAYSIZE 256

int binary_search(int array[], int b, int e, int key)
{
    int t = (e - b) / 2 + b;
    if (array[t] == key) return t;        
    if (array[t] < key) return binary_search(array, t, e, key);
    if (array[t] > key) return binary_search(array, b, t, key);
}

int main(void)
{
    int array[ARRAYSIZE];
    char buff[BUFFSIZE];
    int i;

    puts("Input Number(s).");
    for (i = 0; i < ARRAYSIZE; ++i) { fgets(buff, BUFFSIZE, stdin); if (atoi(buff) == 0) break; array[i] = atoi(buff); }
    printf("Input Number. :");
    fgets(buff, BUFFSIZE, stdin);
    printf("index: %d\n", binary_search(array, 0, i, atoi(buff)));

    return 0;
}
736デフォルトの名無しさん:2008/01/29(火) 02:59:26
gccは不思議だな。
停止性がなくとも止まってくれるのは何故だろう?
printfとかを入れると止まらんけど。
737デフォルトの名無しさん:2008/01/29(火) 06:45:43
[1] 授業単元:データ構造とアルゴリズム設計
[2] 問題文(含コード&リンク)
名前と年齢を入力し、年齢をキーとして、ハッシュ(チェイン法)に登録する
'-'を入力すると登録を終了し、次に入力された年齢を、ハッシュ法で検索し
あればその名前を出力するプログラムを作成せよ。ハッシュ表の大きさは9とする
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2月1日まで
よろしくお願いします。
738デフォルトの名無しさん:2008/01/29(火) 08:03:26
>>732
ありがとうございます!!助かりました
739733:2008/01/29(火) 08:55:01
>>735
ありがとうございました!
740デフォルトの名無しさん:2008/01/29(火) 10:54:03
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5934.txt
[3] 環境
 [3.1] OS: Windows Xp
 [3.2] コンパイラ名とバージョン: Microsoft Visual Studio .NET 2003
 [3.3] 言語: C
[4] 期限: 1/29まで
コンパイルするとエラーが出るのですが
どこが間違っているのかわからなくなってしまいました。
よろしくお願いします。
741740:2008/01/29(火) 10:59:25
連投すいません
問題つけるの忘れてました
申し訳ありません
これです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5935.txt
742デフォルトの名無しさん:2008/01/29(火) 11:31:24
「エラーメッセージはコピペしてください。」 って>>1に書いてある
コンパイルを通したいだけなら、問題文よりコンパイラのメッセージをコピペしてくれよ
743デフォルトの名無しさん:2008/01/29(火) 11:59:24
回答者たちよ、実務では解決できるのかすら分からない難題に埋もれる中、
回答が出るよう作られた宿題回答で回帰逃避したい気持ちはよく分かるぞ。
744デフォルトの名無しさん:2008/01/29(火) 12:36:05
娯楽ってのはそういうもんだ
745デフォルトの名無しさん:2008/01/29(火) 12:37:29
>>743
先生、回帰逃避がよく判らないです。
746デフォルトの名無しさん:2008/01/29(火) 12:53:27
747デフォルトの名無しさん:2008/01/29(火) 13:26:55
前に回答して頂いた>>581です。
期限が切れてしまいましたが、二月頭まで締切を伸ばしてもらったので、引き続き(2)と(3)の解答をお願いできませんか??
どうかよろしくお願いします…m(_ _)m
748デフォルトの名無しさん:2008/01/29(火) 14:01:25
>>747
音声データを縮める、音声データを反転させる、の定義をしてくれたまえ。
749デフォルトの名無しさん:2008/01/29(火) 14:28:52
718の者です。期限1/28の17:00までって書いたんですけど
これは間違いで1/30の17:00までなのでよろしくお願いしますm(__)m
750デフォルトの名無しさん:2008/01/29(火) 16:22:53
>>749
#include <stdio.h>

#define DATAFILE "sample.txt"
#define LINES 10

int main(void)
{
FILE *fp;
char line[10];
int i = 0, x[LINES], y[LINES], z[LINES];

if (fp = fopen(DATAFILE, "r")) {
while (fgets(line, sizeof(line), fp)) {
sscanf(line, "%d%d%d", &x[i], &y[i], &z[i]);
i++;
}
fclose(fp);
for (i = 0; i < LINES; i++)
printf("x[%d] = %d, y[%d] = %d, z[%d] = %d\n", i, x[i], i, y[i], i, z[i]);
}
return 0;
}
751デフォルトの名無しさん:2008/01/29(火) 21:17:12
[1] 授業単元:C言語I

[2] 問題文(含コード&リンク):(元データ:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5937.txt

入.力画.像ファイ.ル名、出.力画.像ファイル名、縦、横の
縮.小率を実行時に与えることが出来るようにすること

以下の場合、エラーメッセージを標準エラーに出力し
て、プログラムを終了させること

・正しくない縮.小率が入力された場合

・入力ファイル名に存在しないファイルが指定された場合

・すでに存在するファイル名が出.力画.像ファイル名に指定さ
れた場合

[3] 環境
 [3.1] OS:Linux OpenSuse
 [3.2] コンパイラ名とバージョン: すみません確認が分かりませんでした。cc でコンパイルしています。
 [3.3] 言語: C

[4] 期限: [2008年01月31日17:00まで]

[5] その他の制限: 簡単な例について,プログラミングの基礎知識,変数と式,制御の流れ,関数,配列,文字列,ポインタ,構造体とユーザ定義型,ファイルです。

  基本的に初心者からの講座ですので使えることは多くありません。元プログラムを見ていただければ程度が分かると思います。

  問題文で不自然に'.'が入っているのは,万が一検索されたときの対策です。
気を悪く思ったかもしれません。すみません。
もしスレを監視していたら意味もないですが;
752デフォルトの名無しさん:2008/01/29(火) 21:22:20
丸投げしといて見つかりたくないか。そうか。
753デフォルトの名無しさん:2008/01/29(火) 21:25:30
姿勢が気に食わないな。
754デフォルトの名無しさん:2008/01/29(火) 21:44:19
完全に駄目元で言ってるな。
755デフォルトの名無しさん:2008/01/29(火) 21:48:30
問題文のコメントも文字化けしてワロタ。
756デフォルトの名無しさん:2008/01/29(火) 21:50:57
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):除算計算のプロセス改良 詳細→(ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5938.zip)
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:visual C++
 [3.3] 言語: C++
[4] 期限:2/4
[5] その他の制限: 演算子/使用不可。
ヒントが詳しくあり、その通りにするだけだと思うのですができず。
問題と試しに作ったのを同梱したので添削してもらえると助かります。
757デフォルトの名無しさん:2008/01/29(火) 22:15:24
>>756
fdivrsub()内の1行目、if()の条件式
(powb <= a << (powb+powb)) を if ( a < ( powb+powb )) にしたらいいんじゃない?
758デフォルトの名無しさん:2008/01/29(火) 22:25:32
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ある海賊団(総員10名)が100枚の金貨を手に入れた。
そこでみんなで分けようとしたが、この海賊団には以下の分配ルールがある。
一番年長の海賊(ボス)が誰に何枚割り振るかを決める。
ボスも含めたみんながその割り振りに賛成か反対か投票をする。
半数以上の賛成で可決される。ただし、賛成が半数未満ならボスは処刑され、
新たなボスがまた分配方法を決める。(10人は年が違うので新ボスを誰にするかでもめることはない)
と、決まるまでこれが繰り返される。
そしてこの海賊団員の特徴として、
みんな限りなく賢く、それぞれみんなが賢いことも知っている。
みんな自分の命は一番大事。次に大事なのは金貨。だが処刑は大好きで、
今のボスを処刑しても次のボスからもらえる金貨の枚数が同じだろうと思ったら、反対に票を投じる。
それぞれあまり仲はよくないので談合はしない。及び金貨の共有もしない。
さて、今のボスは自分がなるべくたくさん金貨がほしい場合、
何枚手に入れることができるだろうか?
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限: なし
759758:2008/01/29(火) 22:36:55
スレ違いなので取り下げます
760デフォルトの名無しさん:2008/01/29(火) 22:59:20
[1]プログラミング入門
[2]問題文
座標(X_1
Y_1)にある自転車1が角度A_1(度)の方向にV_1(m/s)で進み、座標(X_2
Y_2)にある自転車2が角度A_2(度)の方向にV_2(m/s)で進んでいる。
二つの自転車が出会う点の座標(X_3
Y_3)と、経過時間Tを求めなさい。
X軸の正方向を0(度)とする。
座標1目盛り1(m)とする。
[3]環境
[3.1] OS:WindowsXP
[3.2] Visual studio 2003
[3.3] 言語: C++
[4]期限:1月30日
[5]その他の制限特になし

丸投げで本当に申し訳ありません!
何卒宜しくお願い致します!(>_<)
761デフォルトの名無しさん:2008/01/29(火) 23:16:13
>>750
ありがとうございました!!
ほんと助かりました。
762デフォルトの名無しさん:2008/01/29(火) 23:46:06
>>760
向かい合って一直線に進んでるならまだしも、
ちょうどぶち当たるなんてこと、限りなく無いに等しいがそれでもいいの?
763デフォルトの名無しさん:2008/01/29(火) 23:48:00
>>762
自転車の長さが100mくらいあるのかも知れないwww
764デフォルトの名無しさん:2008/01/30(水) 00:05:32
【時間切れ】 (1/29)
>650 >740

【未解決問題】
>>760 1/30

http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>724 1/31 16:00
>>751 1/31 17:00
>>581 2月頭 残:課題2、3
>>720 2/5 詳細>>722
>79 無期限
>144 無期限 問題文>148
765デフォルトの名無しさん:2008/01/30(水) 00:08:06
まぁそのA1とA2が違う値ならぶつかるはずだけどなw
766デフォルトの名無しさん:2008/01/30(水) 00:09:54
うはwと思ったらスピードが違うかったら一生交わらないww
767デフォルトの名無しさん:2008/01/30(水) 00:13:37
>>765
点と点とが衝突するというのは、限りなく難しいと思う
自転車とやらの長さに依存する問題

長さが無限大の自転車だとほぼ確実に衝突するし、
長さが無限小の自転車だとほぼ確実に衝突しない
768760:2008/01/30(水) 00:57:47
申し訳ありません!直線の交点を求めて、それぞれがその交点にたどり着く時間T_1(秒)およびT_2(秒)を求める問題でした(>_<)
769デフォルトの名無しさん:2008/01/30(水) 05:07:25
>>768
眠くてかなりやっつけだが、一応書いた。
交わらない位置関係の判定がいまいちかも分からん。
#include <iostream>
#include <math.h>
#define PI 3.1415926535897932384626433832795
#define RATE 1000
using namespace std;
typedef struct DATA {
double x, y, a, v, l;
};
int main () {
DATA a, b;
cout << "X_1:"; cin >> a.x; cout << "Y_1:"; cin >> a.y;
cout << "A_1:"; cin >> a.a; cout << "V_1:"; cin >> a.v;
cout << "X_2:"; cin >> b.x; cout << "Y_2:"; cin >> b.y;
cout << "A_2:"; cin >> b.a; cout << "V_1:"; cin >> b.v;
a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180);
b.l = (a.y - b.y) / sin((b.a - a.a) * PI / 180);
if ((int)(a.a - b.a) % 180 == 0 ||
(int)(a.l*RATE) < 0 || (int)(b.l*RATE) < 0) {
cout << "まじわらない";
return -1;
}
cout << "T_1 = ";
if ((int)(a.l*RATE) == 0) cout << "0" << endl;
else cout << a.l / a.v << endl;
cout << "T_2 = ";
if ((int)(b.l*RATE) == 0) cout << "0" << endl;
else cout << b.l / b.v << endl;
return 0;
}
770デフォルトの名無しさん:2008/01/30(水) 05:19:39
すまん、何か忘れてると思ったらx使ってなかったわwww

× a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180);
○ a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180) + (b.x - a.x);
771デフォルトの名無しさん:2008/01/30(水) 11:11:15
>>757
お礼が遅れて申し訳ありません
ありがとうございました
772デフォルトの名無しさん:2008/01/30(水) 12:28:43
773デフォルトの名無しさん:2008/01/30(水) 14:45:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 ファイル中に自然数が10列記されている。
 この数列中には0が1〜9個含まれている。
 従って、0を区切りと考えれば。この数列中には数が最低1つは連続している(連続回数とよぶ)。
 連続回数の最大を求め,その時の和を求めよ。
 ただし、連続回数の最大が2つ以上ある時は和の大きい方を最大とする。
 また、連続回数も和も同じであるときは考慮しなくてもよい。
 例1)3,1,0,3,6,2,3,7,4,0であれば、最大連続数は6でその和は25である。
 例2)3,1,0,2,2,0,03,0,0であれば、最大連続数は2でその和は4である。
[3] 環境
 [3.1] OS:Vine Linux 4.2
 [3.2] コンパイラ名とバージョン:gcc3.4
 [3.3] 言語:C
[4] 期限:[無期限]
[5] その他の制限:なし

むりやりならばできましたが、スマートなやり方があれば教えていただきたいです。
774デフォルトの名無しさん:2008/01/30(水) 16:29:15
>>773 その無理やりのソースを貼り付けよう!
775デフォルトの名無しさん:2008/01/30(水) 16:41:46
>>773 自分も無理やりやってみた。
#include <stdio.h>
#define N 10
int continuous(int *a, int from, int n){
    int to;
    for(to = from; to < n && a[to] != 0; to++);
    return to;
}
int culsum(int *a, int from, int to){
    int i, sum = 0;
    for(i = from; i < to; i++) sum += a[i];
    return sum;
}
int main(void){
    FILE *fp = fopen("data.txt", "r");
    int i, next, cnt = 1, sum = 0, tmp, a[N];
    if(!fp) return 1;
    for(i = 0; i < N; i++) fscanf(fp, "%d,", &a[i]);
    fclose(fp);
    for(i = 0; i < N; i++){
        next = continuous(a, i, N);
        if(next - i >= cnt){
            cnt = next - i;
            tmp = culsum(a, i, next);
            if(tmp > sum) sum = tmp;
        }
        i = next;
    }
    printf("cnt: %d\nsum: %d\n", cnt, sum);
    return 0;
}
776デフォルトの名無しさん:2008/01/30(水) 16:45:28
部分だけ。
a[10]に数値読み込んでこんな感じかな?

int i,j=0,max=0,temp=0,renzoku=0;
for(i=0;i<10;i++)
{
while(a[i]&&i<10)
{
temp+=a[i];
i++;
j++;
}
renzoku=(j>renzoku?j:renzoku);
if(renzoku==j)max=(temp>max?temp:max);
j=0;
}
777デフォルトの名無しさん:2008/01/30(水) 16:47:38
なにをもってスマートなんだろう
778デフォルトの名無しさん:2008/01/30(水) 16:49:18
tempも0に戻そうぜ
779デフォルトの名無しさん:2008/01/30(水) 17:00:22
ごめwww手抜きするといいことないねwwwww

#include <stdio.h>

int main(void)
{
int a[10],i,j=0,max=0,temp=0,renzoku=0;
FILE *fp=fopen("data.txt","r");
if(!fp) return 1;
for(i=0;i<10;i++)fscanf(fp,"%d,",&a[i]);
fclose(fp);

for(i=0;i<10;i++)
{
while(a[i]&&i<10)
{
temp+=a[i];
i++;
j++;
}
renzoku=(j>renzoku?j:renzoku);
if(renzoku==j)max=(temp>max?temp:max);
j=temp=0;
}
printf("最大連続数:%d\n合計:%d",renzoku,max);
return 0;
}
780デフォルトの名無しさん:2008/01/30(水) 17:21:21
781デフォルトの名無しさん:2008/01/30(水) 17:33:36
782デフォルトの名無しさん:2008/01/30(水) 17:40:24
・0〜99の100個の数字から異なる30個を選び、配列COM[30]に
格納せよ。
・次に異なる6個の数字を入力し、順番に配列MAN[6]に格納せよ。
・ソート方法Aを用いて配列COM、MANの要素をそれぞれ小さい順に並べよ。
・配列COMに含まれる配列MANの数字の個数countを求めよ。
・最後に、配列COM、MANの全要素、変数countを
 result.outに書き込め。
・出力形式は自由とするが、main関数内は10行以内にすること。

[ソート方法A]
・作業用の配列として、要素が100個のint型の配列Workを用意する。
・配列Workの各要素は、0に初期化する。
・ソートしたい配列xの要素を順番に読んで、Work[その値]を+1する。
・作業3をすべてのxの要素について行った後、Workの要素を小さい方から順番に
 よんで、Workの値が0でなければ、xに書き戻します。

この課題が全然できません。助けて下さい。
783デフォルトの名無しさん:2008/01/30(水) 17:51:36
784デフォルトの名無しさん:2008/01/30(水) 17:53:32
>>782
それ、【ヒント1】〜【ヒント3】も問題文にあるだろ?
785デフォルトの名無しさん:2008/01/30(水) 18:22:57
>>782
作ったけど,PC移行中でコンパイラ入れて無くて試せない^p^
786デフォルトの名無しさん:2008/01/30(水) 20:10:32
>>769
本当に有難う御座います!!
787デフォルトの名無しさん:2008/01/30(水) 20:37:58
[1] 授業単元:
[2] 問題文(含コード&リンク):シェルソートは単純挿入法を改良し、ソートの効率を上げたものである。
全ての要素を1度にソートするのではなく、
間隔dをあけて要素を比較して大まかなソートを繰り返したのち、
最後にd = 1でソートを実行する。

データ数をnとしたときの、効率の良い間隔d[i]の計算法として、
Knuthによる次の式が知られている。

t = log2n - 1 (整数に切り捨て)
d[t-1] = 1
d[i-1] = 2d[i] + 1

この式を使って、与えられた要素数nに対し
t、配列dの値を計算する関数を作成しなさい。
n = 100としたときの、tおよびdの要素の値を画面に出力しなさい。
logの計算を行うには、math.hをインクルードする

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語: C
[4] 期間:2/1まで
[5] その他の制限: なし
お願いします。
788デフォルトの名無しさん:2008/01/30(水) 21:23:01
789788:2008/01/30(水) 21:25:57
ありゃ、main()関数が10行以下の制限忘れてた。
全部他の関数に移せってか。ちょっとまって。
790デフォルトの名無しさん:2008/01/30(水) 21:26:06
791デフォルトの名無しさん:2008/01/30(水) 21:35:02
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 直径1長さ1の円柱がある。体積をモンテカルロ法で計算せよ。
一辺が1の立方体を考え、3個の乱数で立方体内の点のxyz座標を発生させ,その点が物体の内部に落ちるかどうかを判定する。
内部に落ちる確率が体積に比例することから体積が見積もれる。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2/1
[5] その他の制限:
792788:2008/01/30(水) 21:38:18
793デフォルトの名無しさん:2008/01/30(水) 21:43:34
>>782の問題は、内容から おそらく COMとMANに値を収める
部分を、共通関数化すれば得点高いと思う。
それを構成できるかも問うてる様に見える。

具体的には、配列代入関数として、入れたかどうかと、
配列が溢れた事を戻り値で返す。
794デフォルトの名無しさん:2008/01/30(水) 22:05:45
795デフォルトの名無しさん:2008/01/30(水) 23:52:16
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void)
{
 double x, y, z;
 int iter[] = {10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 0}, i, j, k = 0, count;
 for (i = iter[k]; i; i = iter[++k]) {
  count = 0;
  for (j = 0; j < i; j++) {
   x = (double)rand() / RAND_MAX - 0.5;
   y = (double)rand() / RAND_MAX - 0.5;
   z = (double)rand() / RAND_MAX;
   if (sqrt(x * x + y * y) <= 0.5 && 0. <= z && z <= 1.)
    count++;
  }
  printf("ITER = %d, V = %f\n", iter[k], (double)count / iter[k]);
 }
 printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5);

 return 0;
}
796デフォルトの名無しさん:2008/01/30(水) 23:52:43
あ、>>795>>791さんへです。
797 ◆LnG.2EAY0A :2008/01/31(木) 02:04:32
>>772
>>723
お返事が送れて申し訳ありません、回答ありがとうございました!
これでなんとか理解できそうです。
798デフォルトの名無しさん:2008/01/31(木) 14:03:52
[1] プログラミング序論
[2] @./a.out arg1 arg2 ...の時、
    argをアルファベット順にソーティングするquicksortのプログラムを作る。
  A問題@をライブラリ関数qsort()を用いて作る。
   qsort( void* base, int n_elem, int size, int (*compare)(void*, void*) )
   base: 配列のアドレス
   n_elem: 要素数
   size: 一要素のサイズ
   compare: 比較に使う関数。
  Bライブラリ関数と同じ動きをする関数
   msort( ...qsortと同じ引数... )
   を作る。(アルゴリズムはクイックソート)
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] C
[4] 2008年2/5(火)
[5] 制限は特にないです

よろしくお願いしますm(__)m
799デフォルトの名無しさん:2008/01/31(木) 16:57:21
>>798

とりあえず最後の問題だけやってみた。
これで満点とれなかったら教官の頭が悪い。

( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5950.c
800ハム:2008/01/31(木) 18:54:12
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文:(数独の問題作成の途中です。)
       最初全てに0が入った2次元配列を、数字が全て埋まった状態にするプログラムを考えています。
       どなたかお力をお貸し下さい。
[3] 環境 Visual Studio 2005
 [3.1] OS: Windows/ XP
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語: C言語
[4] 期限: ([2008年2月2日21:00まで]
[5] その他の制限:初心者なので、簡単なコードでお願いします。
801デフォルトの名無しさん:2008/01/31(木) 18:55:16
[1] プログラミング演習
[2]リンクリストを用いたスタックプログラムの作成
typdef struct box{
int cont;
struct box next;}box1;
typedef box1 *stack;
スタックの仕様は↑とする。
ポップアップとプッシュダウンを行う関数
int pupup(stack S);
void pushdown(stack S; int x);
を作成せよ。
[3] 環境
 [3.1] winXP
 [3.2] bcc
 [3.3] C
[4] 2008年2/5(火)
[5] 制限:問題文の仕様を使うこと。
アンダーフロー対策はしなくてよい

よろしくおねがいします。


802デフォルトの名無しさん:2008/01/31(木) 18:56:05
>>800
お前は日本語を書いている自信があるのか?
803デフォルトの名無しさん:2008/01/31(木) 19:14:15
>>800
数独は、プログラムで解くのは簡単だけど作るのは難しいと思われ。
途中まで作ったのならそれを提示したまえ。
# つーか、初心者向けの内容じゃねぇぞ。
804デフォルトの名無しさん:2008/01/31(木) 20:18:36
>>724の者ですが、締め切りが2/2の12:00に伸びたのでどうかよろしくお願いします。
全然わからないので…
805デフォルトの名無しさん:2008/01/31(木) 21:03:12
>>804
やだ。
806名無し募集中。。。:2008/01/31(木) 21:08:17
>>805
お前に言ってねーよ。カス。
どうか分かる方お願いします。
807デフォルトの名無しさん:2008/01/31(木) 21:09:57
>>806
やだってばー。
808名無し募集中。。。:2008/01/31(木) 21:10:43
>>807
だからお前のような頭のヘボい奴には頼んでないから。
どうか頭の良い方お願いします。
809デフォルトの名無しさん:2008/01/31(木) 21:15:17
>>808
馬鹿はスルーしろ
810デフォルトの名無しさん:2008/01/31(木) 21:17:14
>>808
いちいち反応するな馬鹿
811デフォルトの名無しさん:2008/01/31(木) 21:36:03
>>808
答えようかと思ったが、君のように裏表がある人間のために
エディタ起動するのマンドクセ('A`)
812名無し募集中。。。:2008/01/31(木) 21:37:32
>>811
お前に言ってねーよ。カス。
どうか分かる方お願いします
813デフォルトの名無しさん:2008/01/31(木) 21:54:17
誰もわかんねーのかよ。
単位やべーからお願い。
814デフォルトの名無しさん:2008/01/31(木) 21:55:03
いさぎよく諦めろ
815名無し募集中。。。:2008/01/31(木) 21:56:28
>>814
お前がやれ。命令だ。
816デフォルトの名無しさん:2008/01/31(木) 22:00:14
俺今他のやってる
817デフォルトの名無しさん:2008/01/31(木) 22:41:07
>>801
問題がタコだな。
まず、その仕様じゃコンパイルすら通らない。

>pupup
popupの間違いでは。

>アンダーフロー対策はしなくてよい
オーバーフロー対策はどうなのよ。
818デフォルトの名無しさん:2008/01/31(木) 22:43:33
最近の人工無能は頭いいな
819デフォルトの名無しさん:2008/01/31(木) 22:45:05
>>800
>数字が全て埋まった状態にするプログラム

ほらよ

memset(table, 1, sizeof(table));
820デフォルトの名無しさん:2008/01/31(木) 22:57:33
>>817
オーバーフロウもアンダーフロウも対策しなくて大丈夫です。
ペーパーで提出する課題なのでかなり適当みたいです。
popupは自分も気になりましたが問題がpupupなのでそのままにしましたw
821デフォルトの名無しさん:2008/01/31(木) 23:02:20
>>820
それだけじゃなくて、

typdef struct box{
int cont;
struct box next;}box1;

↑じゃコンパイル通らないよ。

typdef struct box{
int cont;
struct box *next;}box1;

↑こうしないと。

いいかげんそうな教官みたいだし、もう提出しなくてよいんじゃね?
822デフォルトの名無しさん:2008/01/31(木) 23:06:48
タイポもあるな。
823デフォルトの名無しさん:2008/01/31(木) 23:12:43
つーか、prevへのポインタ無しで、どうやってpopupするわけ?
一方通行じゃん。pushしか出来ねーーー
824デフォルトの名無しさん:2008/01/31(木) 23:14:41
というか、nextがprevなのか。
825デフォルトの名無しさん:2008/01/31(木) 23:29:21
>>795
ありがとうございます!
826デフォルトの名無しさん:2008/01/31(木) 23:34:58
まぁ文句ばっかり言うのもあれなので。

typedef struct box{
int cont;
struct box *next;}box1;
typedef box1 *stack;

int pupup(stack S)
{
box1 tmp = *S->next;
free(S->next);
S->next = tmp.next;
return tmp.cont;
}

void pushdown(stack S, int x)
{
box1 *new_box = (box1 *)malloc(sizeof(box1));
new_box->cont = x;
new_box->next = S->next;
S->next = new_box;
return;
}
827デフォルトの名無しさん:2008/01/31(木) 23:48:51
828デフォルトの名無しさん:2008/02/01(金) 00:37:31
昨日は規制の巻き添えを食らって、書きこめなかつた

【時間切れ】 (1/31)
http://pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>751 1/31 17:00

【未解決問題】
>>787 2/1

>>724 2/2 12:00
>>800 2/2 21:00
>>581 2月頭 残:課題2、3
>79 無期限
>144 無期限 問題文>148
829デフォルトの名無しさん:2008/02/01(金) 00:39:09
ミス、>>798は課題@が終わってません
830デフォルトの名無しさん:2008/02/01(金) 00:42:04
>800
「数独(すうどく・SUDOKU)とは、3×3のブロックに区切られた9×9の正方形の枠内に1〜9までの数字を入れるペンシルパズルの一つである。」

123 456 789
456 789 123
789 123 456

234 567 891
567 891 234
891 234 567

345 678 912
678 912 345
912 345 678

でいいんじゃね?
831デフォルトの名無しさん:2008/02/01(金) 00:43:22
832581:2008/02/01(金) 12:47:48
>>581です。
(2)なのですが、音声データを半分に圧縮して再生できれば良いそうです。
実際の音声データとなる部分のbyte?を、一個飛ばしで読み込んでみて、と言われたのですが、さっぱりです…orz
(3)は、音声データを読み込んで、逆再生できればOKだそうです。

よろしくお願いしますm(_ _)m
833デフォルトの名無しさん:2008/02/01(金) 13:26:02
834デフォルトの名無しさん:2008/02/01(金) 13:32:09
>>832
半分削ったら復元無理じゃん
あとまずは>>658さんのテキストファイルをWavにするプログラム作れば
既にないぞうしてるかもしれないけど
835デフォルトの名無しさん:2008/02/01(金) 13:38:12
復元は要求されてなくね
836デフォルトの名無しさん:2008/02/01(金) 13:56:05
再生するにはwavが作れないと駄目
837デフォルトの名無しさん:2008/02/01(金) 14:19:02
おもったんだがどんな楽器の音もテキストの数字の羅列のみで鳴らせるのか ちょっとおどろき
838デフォルトの名無しさん:2008/02/01(金) 14:22:37
そらまあどんなデータだってバイナリじゃ0と1の集合なんだし、
音だろうと映像だろうと数字の羅列に対応させるのは簡単だぞ。
839デフォルトの名無しさん:2008/02/01(金) 14:25:39
でも人間がテンキーで打ち込みしてもオーケストラの音楽とかむりのはず
840デフォルトの名無しさん:2008/02/01(金) 14:26:40
最終的に鼓膜を震わせればいいんだから
841デフォルトの名無しさん:2008/02/01(金) 14:29:07
複雑な音楽は0と1だけじゃなくその間の音色がいくらでもある。
引き篭ってパソコン麦価かまってるとそんな当たり前のことも分からなくなるんだな。
842デフォルトの名無しさん:2008/02/01(金) 14:30:59
この中で一番頭悪いのは>>841でFA?
843デフォルトの名無しさん:2008/02/01(金) 14:37:43
>>839も加えておいてくれ。どっちもどっち
844デフォルトの名無しさん:2008/02/01(金) 14:39:05
ドとド#の間にだって音があるんだよ。
カラオケの採点だと正確にドを出すのを高得点としているが、
人間の耳に入った場合は必ずしも正確なドが心地よいとは限らない。
ちょっとはずしてる加減がかわいいとかあるだろ?
音だけじゃなくリズムとか強弱とかもな。
845デフォルトの名無しさん:2008/02/01(金) 14:41:34
>>841
でも人間の耳の分解能には限界があるだろ
1/3を0.0101010101010101で近似しても違いなんて分からない
846デフォルトの名無しさん:2008/02/01(金) 14:50:16
>>845
そっちの問題より量子化の時の誤差の方が大きいだろ。
847デフォルトの名無しさん:2008/02/01(金) 15:02:09
>>846
>>841が「離散量では原理的に複雑な音楽を忠実に表現できない」という主張をした(と俺は理解した)から、
目盛を十分細かく取れば良い、という説明をしただけで、実際に音声をデジタルで扱う場合にどこが困難かは別の話だろ
848デフォルトの名無しさん:2008/02/01(金) 15:15:18
>>841
よくわからんが、MIDIのことか? なつかしいな。
849デフォルトの名無しさん:2008/02/01(金) 15:15:52
[1] プログラミング演習
[2]試験課題
優先順位付き四則演算

式を入れてください
(123.4*(5.1+0.2)+(6+0.3)/(3.0−1.0)/5=?
答えは?です。

[3.1]WindowsXP
[3.2]VS8.0
[3.3]C++
[4]2月5日
[5]構造体
調べてみましたがよくわかりませんでした。
よろしくお願いいたします。
850デフォルトの名無しさん:2008/02/01(金) 15:18:41
>>849
メンバ関数とか使っていい?
851798:2008/02/01(金) 16:36:21
>>799さん
>>827さん
お早い回答、見やすいプログラムありがとうございました^^

・・・もし来週も行き詰ったら・・・よろしくお願いしますm(__)m



852デフォルトの名無しさん:2008/02/01(金) 16:41:11
850
はい、習っているので大丈夫です。
853デフォルトの名無しさん:2008/02/01(金) 17:37:34
>>849
けっして俺がつくったソースコードではないけど
頭のいい人はすごいねって思う。
fparserでググれば出てくるかもしれんが
圧縮してあげとく。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5958.lzh
854デフォルトの名無しさん:2008/02/01(金) 17:40:56
>>800
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5957.txt
とりあえず書いてみたが、あまり簡単でもスマートでもない。
出力だけはたぶん合ってそうだけども。
855デフォルトの名無しさん:2008/02/01(金) 18:23:00
>>853
ありがとうございます、動きました。
856デフォルトの名無しさん:2008/02/01(金) 19:43:00
>>724
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5959.zip
VCないから、Cygwin/g++用に変更した。一応動いたのでうp
参考程度にどうぞ
(運がよければVCでもそのままコンパイルできる。一応気にしてソース修正したつもり)

IPv6環境ないからIPv6での動作確認はできなかった
857 ◆sUfWYz9MSA :2008/02/01(金) 21:53:06
[1] 授業単元: 画像処理研究
[2] 問題文(含コード&リンク):
以下のようなcsvファイルをfopen()で読み込み,
フーリエ変換したものをグラフで表示する.

400,97.98
400.5,98.13
401,98.31
401.5,98.49
・・・
という","の左が700まである波形データです。
読み込んだデータを","区切りでプロンプトに書き出す
ことはできているのですが,フーリエ変換がどうしてもできませんorz
お手数ですが教えてもらえないでしょうか。

sample: http://yomiko-01.hp.infoseek.co.jp/cgi-bin/src/up0222.txt

csvでupできなかったので.txtになってますスイマセン・・・

[3] 環境
 [3.1] OS: Windows2000
 [3.2] コンパイラ名とバージョン:Visual C++ 6.0
 [3.3] 言語: どちらでも可
[4] 期限: できるだけ早くお願いします。
[5] その他の制限:学校から家に帰るのでコメント返信遅くなります・・・
         どうかよろしくお願いします。
858デフォルトの名無しさん:2008/02/01(金) 22:24:48
[1] 授業単元:コンピュータ理論
[2] 問題文(含コード&リンク):n,kを入力したとき、0〜n-1の整数からk個選ぶ選び方をすべて出力する
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語:C言語
[4] 期限: 2月4日中
[5] 再帰的アルゴリズムを使うと簡単と言われました。
どうかよろしくおねがいします。
859デフォルトの名無しさん:2008/02/01(金) 22:34:05
順列を区別するかを書け。
860デフォルトの名無しさん:2008/02/01(金) 22:37:07
組み合わせです
861デフォルトの名無しさん:2008/02/01(金) 22:42:47
>>859
重複なしの組み合わせです。

n=5,k=3のときは
012 013 014 023 024 034 123 124 134 234
となるはずです。
862デフォルトの名無しさん:2008/02/01(金) 22:46:58
>>857
C言語によるアルゴリズム事典からそのままぱくったので
あってるかどうかわからへんで〜
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5960.txt
863デフォルトの名無しさん:2008/02/01(金) 23:01:55
>>858
unsigned long combination(int n, int k)
{
int i, j;
unsigned long a[17];

if (n - k < k) k = n - k;
if (k == 0) return 1;
if (k == 1) return n;
if (k > 17) return 0; /* error */
for (i = 1; i < k; i++) a[i] = i + 2;
for (i = 3; i <= n - k + 1; i++) {
a[0] = i;
for (j = 1; j < k; j++) a[j] += a[j - 1];
}
return a[k - 1];
}
864デフォルトの名無しさん:2008/02/01(金) 23:07:33
>>863
ワロタ
865デフォルトの名無しさん:2008/02/01(金) 23:40:39
>>858
#include<stdio.h>
#include<stdlib.h>
void get_combination(int num, int chosenCnt);
int *numary;
int n, c;
int main(int argc, char *argv[]){
 if(argc != 3) return 1;
 n = atoi(argv[1])-1;
 c = atoi(argv[2]);
 if((numary = (int*)calloc(sizeof(int), c)) == NULL) return 1;
 get_combination(0, 1);
 free(numary);
 return 0;
}
void get_combination(int num, int chosenCnt){
 int i;
 if(chosenCnt > c){
  for(i=0; i < c; i++) printf(" %d", numary[i]);
  putchar('\n');
  return;
 }
 for(i=num; i <= n; i++){
  numary[chosenCnt-1] = i;
  get_combination(i+1, chosenCnt+1);
 }
}
866858:2008/02/01(金) 23:54:04
>>863
返答ありがとうございます。
コンパイル通るのですが、どうやったら表示できるかが分からず、
いろいろ試してみましたが出来ませんでした。orz...

>>865
返答ありがとうございます。
ばっちり動きました。ありがとうございます。
助かりました。
後でプログラムをじっくり解読してみます。

本当にありがとうございました。
867デフォルトの名無しさん:2008/02/01(金) 23:54:10
>>856さま
IPv4でもIPv6でも動きました!
本当にありがとうございました!
868デフォルトの名無しさん:2008/02/01(金) 23:55:44
>>866
本気で何も分かってないな。まあ丸投げスレだからいいんだけど
869デフォルトの名無しさん:2008/02/02(土) 00:01:53
>>862
>>857です。返事ありがとうございます!
今帰ってきたので、後で参考にさせてもらいます(o´・ω・)´-ω-)ペコリ
870デフォルトの名無しさん:2008/02/02(土) 00:14:39
>>849
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
>> 853 さんにならって、私がこの方面にのめりこむきっかけとなったソースを、そのままあげておきます。
なお、宿題の題意にあうように手直しはしていますが、小数点の処理は手抜きです。オリジナルを損ねたくなかったわけで、すみません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5961.txt

>>853
まったく頭のいい人はすごいですね。
871デフォルトの名無しさん:2008/02/02(土) 00:27:55
【時間切れ】 (2/1)
>787

【未解決問題】
>>581 2月頭 残:課題2、3
>>798 2/5 残:課題1
>79 無期限
>144 無期限 問題文>148
872ハム:2008/02/02(土) 00:52:07
>>854さん
ありがとうございます!
熟読して、勉強させていただきます!
本当にありがとうございます!!
873デフォルトの名無しさん:2008/02/02(土) 02:04:47
>>870
小数に対応できるようにfactor()の中身を>>870が書き換えたんだよね?
'('が来た後の exp0() を int で受けてるままだから
このままだと丸まっちゃうよ
874870:2008/02/02(土) 02:23:48
>>873
感謝です。訂正したものをあげておきます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5963.txt
875853:2008/02/02(土) 02:50:50
http://karetta.jp/book-node/cpuzzle-recursion/002797
こーいうページもあるけどね
これをdoubleでやりとりするように変えた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5964.txt
をあげとこう
876デフォルトの名無しさん:2008/02/02(土) 02:54:00
>>874
早いねw
もっというと現状のソースはちょっと精神分裂気味に見えるから
double number(void) 作って↓みたいにしたほうが元のBNF通りかねえ?
他人の宿題だからどうでもいいかもだけど。

double factor(void){

if(isdigit(nextc){ /* F -> Num */
return number();
} else if(match('(')) { /* F -> (E) */
double v = exp0();
if(match(')')) return v;
else error();
} else {
error();
}

}
877デフォルトの名無しさん:2008/02/02(土) 10:06:19
>>876
そうすると、1桁しかあつかえないのでは?
いや、現状が精神分裂気味なのはまったく同意です。オリジナルの美しい構造を残したいものです。
878デフォルトの名無しさん:2008/02/02(土) 10:31:53
>>875
なるほど,ブランク読み飛ばし、単項のマイナスにも対応してますね。
ただし、このBNF はLL(1)文法であり、たかだか**1文字**先読みすればdeterministicにtop-downに解析できるわけで、その精神をソースにもりこみたいな、という意志がありまして...。
879デフォルトの名無しさん:2008/02/02(土) 11:22:33
83代目の575は評価されるべき
880デフォルトの名無しさん:2008/02/02(土) 17:33:37
>>751が叩かれてて質問者でもないし聞きづらかったんだけど、期限も切れているようだし>>751を聞いていいかな?
881デフォルトの名無しさん:2008/02/02(土) 17:41:13
いいとも!
882デフォルトの名無しさん:2008/02/02(土) 19:12:13
[1] 授業単元:プログラミング初級
[2] 問題文(含コード&リンク):
1〜24まで穴埋め問題です
http://ip.tosp.co.jp/i.asp?I=cgenger

[3] 環境
 [3.1] OS : windows
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C言語
[4] 期限:2月4日
883デフォルトの名無しさん:2008/02/02(土) 20:18:58
>>882
とりあえず22まで。間違ってても謝罪や賠償はしない。
1. int *
2. char *
3. char *
4. int **
5. char **
6. char **
7. &cnt
8. &ch
9. &ch
10. pc
11. *pc
12. &ch
13. pch
14. *pch
15. argv[1]
16. pa
17. *(argv[2])
18. *pa
19. &pc
20. &pch
21. **ppc
22. **pch
884デフォルトの名無しさん:2008/02/02(土) 20:36:22
23と24も。
最近C言語でプログラム書いていないんで、argvの仕様を調べなおしてた。
あと、実行時の引数の順序がわからんから、適当に書き換えてくれ。
23. *(pp+3)
24. **(pp+4)
885デフォルトの名無しさん:2008/02/02(土) 21:22:32
>>883
ありがとう御座います
886デフォルトの名無しさん:2008/02/02(土) 21:28:44
887デフォルトの名無しさん:2008/02/02(土) 21:48:01
>>879
再掲載お願いできますでしょうか?
888デフォルトの名無しさん:2008/02/03(日) 00:06:55
結局751の画像は何を対象にしてたんだぜ?
889デフォルトの名無しさん:2008/02/03(日) 00:38:36
890デフォルトの名無しさん:2008/02/03(日) 01:29:14
【時間切れ】 (2/2)
なし

【未解決問題】
>>798 2/5 残:課題1
>>79 無期限
>>144 無期限 問題文>>148
891デフォルトの名無しさん:2008/02/03(日) 02:44:30
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
input8500.txtには4桁の整数が8500個書かれている。
これら8500個の整数のうち、相異なる整数は何種類あるか求めなさい。

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

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年2月4日12:00まで
[5] その他の制限: 制限は特にありません。宜しくお願いいたします。
892デフォルトの名無しさん:2008/02/03(日) 03:30:01
>>891
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void){
  int *table=(int*)calloc(sizeof(int), 10000, 0), i, x;
  FILE *in=fopen("input8500.txt","r");
  for(i=0; i<8500; i++){
    fscanf(in, "%d", &x);
    table[x]++;
  }
  for(i=x=0; i<10000; x+=table[i]?1:0, i++);
  printf("%d種類\n", x);
}

コンパイラ無いので,試してないけど動くんじゃね?
893デフォルトの名無しさん:2008/02/03(日) 08:25:55
>>887

575 デフォルトの名無しさん sage 2007/02/22(木) 19:31:21
>>574
ほい。
#include<stdio.h>
#include<stdlib.h>
char buf[100],*src=buf;
double atm(void);
double mul(double r){return*src=='*'?++src,mul(r*atm()):*src=='/'?++src,mul(r/atm()):r;}
double add(double r){return*src=='+'?++src,add(r+mul(atm())):*src=='-'?++src,add(r-mul(atm())):r;}
double atm(void){
    double r;
    while(isspace(*src))++src;
    if(*src == '(')++src,r = add(mul(atm())),++src;
    else r = strtod(src,&src);
    while(isspace(*src))++src;
    return r;
}
int main(){gets(src);printf("%f\n",add(mul(atm())));}
894デフォルトの名無しさん:2008/02/03(日) 17:42:29
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5973.txt
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:2月12日(火)16時20分まで
[5] その他の制限:特になし。

よろしくお願いします。

895891:2008/02/03(日) 18:08:31
>>892
ありがとうございます。コンパイルしてみたところ
5行目に、too many arguments to function `calloc'
とエラーが出ました。calloc関数は使用したことがないため、
どこを直せばいいのか分かりません。
教えていただけないでしょうか。
896デフォルトの名無しさん:2008/02/03(日) 18:11:24
それくらい仕様を見れば分かるだろ。
897デフォルトの名無しさん:2008/02/03(日) 18:12:20
>>895
calloc(10000, sizeof(int))
898デフォルトの名無しさん:2008/02/03(日) 18:45:29
899デフォルトの名無しさん:2008/02/03(日) 20:53:57
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5975.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語: C
[4] 期限:2月5日
[5] その他の制限:特になし

お願いします。
900デフォルトの名無しさん:2008/02/03(日) 21:35:45
[1] 授業単元:課題3
[2] 問題文(含コード&リンク):月日を入力するとその日の星座を表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C
[4] 期限: 2008/2/6
[5] その他の制限: 特にありまさん
901891:2008/02/03(日) 22:02:09
>>896 >>897
コンパイル通りました。ありがとうございました!
仕様良く読みます。
902デフォルトの名無しさん:2008/02/03(日) 22:09:06
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 直径1長さ1の円柱がある。体積をモンテカルロ法で計算せよ。
一辺が1の立方体を考え、3個の乱数で立方体内の点のxyz座標を発生させ,その点が物体の内部
に落ちるかどうかを判定する。内部に落ちる確率が体積に比例することから体積が見積もれる。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2/4
[5] その他の制限:

以前このスレで質問した問題なんですがコンパイルできなかったのでもう一度
おしえてもらえないでしょうか。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5976.txt
 printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5); のM_PIでエラーがでて
しまいます。
903デフォルトの名無しさん:2008/02/03(日) 22:22:43
>>900
#include <stdio.h>
#include <stdlib.h>

int main() {
static const struct {int n; const char *s;} c[] = {
{120, "みずがめ"}, {219, "うお"}, {321, "おひつじ"}, {420, "おうし"},
{521, "ふたご"}, {622, "かに"}, {723, "しし"}, {823, "おとめ"},
{923, "てんびん"}, {1024, "さそり"}, {1122, "いて"}, {1222, "やぎ"},
};
int i, m, d;
char buf[256];

do {
printf("月/日: ");
if (fgets(buf, sizeof buf, stdin) == 0)
return EXIT_FAILURE;
} while (sscanf(buf, "%d / %d", &m, &d) != 2);
for (i = 0; i < 12 && m * 100 + d >= c[i].n; i++)
;
if (--i < 0)
i = 11;
printf("%s座\n", c[i].s);
return EXIT_SUCCESS;
}
904デフォルトの名無しさん:2008/02/03(日) 22:27:41
>>902
上の方に
#define M_PI 3.141592653589793238
とか書いときゃいいんじゃね?
905デフォルトの名無しさん:2008/02/03(日) 22:30:10
>>902
 printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5);のまえにでも
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
とでもしとけ
てか、CygwinでもMinGWでもコンパイルは通るんだが
906デフォルトの名無しさん:2008/02/03(日) 22:35:19
>>902
私の方でもコンパイル・実行しましたが、問題はありませんでした。
環境は WindowsXP/cygwin(gcc 3.4.4) です。
#include <math.h>
の記述がありますから、M_PI には円周率が定義されているはずなのですが...。
gcc のインストールはどうやってしましたか?
907906:2008/02/03(日) 22:40:29
>>902
そうそう、アップローダのソースは空白が全角になってました。これを半角に直してみてください。
908デフォルトの名無しさん:2008/02/03(日) 22:41:48
VCとかでは定義されてなかったような気がする。関係ないけど
バージョンによってはgccでも載ってなかったりするのか?
909デフォルトの名無しさん:2008/02/03(日) 22:54:59
910デフォルトの名無しさん:2008/02/03(日) 22:58:44
>>908
M_PI は、手元の gcc 2.6.3 for GO32/PC9801 の math.h には定義されていましたね。
bcc 5.5 でも OK, VC 6.0 の math.h にはありませんでした。
911デフォルトの名無しさん:2008/02/03(日) 23:09:50
VC(7以上)なら
#define _USE_MATH_DEFINES
で使えたはずだが
912デフォルトの名無しさん:2008/02/03(日) 23:10:52
>>900
#include<stdio.h>
int main(void){
char *a[]={"いて","やぎ","みずがめ","うお","おひつじ","おうし","ふたご","かに","しし","おとめ","てんびん","さそり"};
unsigned int m,d;
printf("月,日=");
scanf("%d,%d",&m,&d);
printf("%s座\n",a[(m+d*2/",*&*(,*0...,"[m%12])%12]);
return 0;
}
913デフォルトの名無しさん:2008/02/04(月) 00:16:06
3.141592653592
914デフォルトの名無しさん:2008/02/04(月) 02:21:34
915581:2008/02/04(月) 03:47:38
>>889さん
ありがとうございますm(_ _)m
さっきgccでコンパイル通そうとおもったら通らなかったのですが、どうすれば良いでしょうか??orz
916デフォルトの名無しさん:2008/02/04(月) 08:45:59
[1] 授業単元: プログラミング入門
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5980.txt
[3] 環境
 [3.1] OS:UNIX
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限:2月6日
[5] その他の制限:
よろしくお願いします。
917デフォルトの名無しさん:2008/02/04(月) 09:10:09
>>915
どんなエラーメッセージが出ていますか。
918デフォルトの名無しさん:2008/02/04(月) 09:34:59
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5982.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: どちらでも可
[4] 期限: 2008年02月04日12:00まで
[5] その他の制限:
919デフォルトの名無しさん:2008/02/04(月) 10:44:49
920デフォルトの名無しさん:2008/02/04(月) 10:47:51
>>918

( ´∀`) yamaguchi.txt が落とせないんです。
921デフォルトの名無しさん:2008/02/04(月) 10:54:17
>>916

ごめん。行頭に空白があったり、空行があったらバグっちゃう。
パッチ書きました。

( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5984.txt
922デフォルトの名無しさん:2008/02/04(月) 11:03:33
>>916

ごめん。add_word() の処理が冗長だった。
もう一回パッチあててくり。

( ´∀`)つ ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5985.txt
923899:2008/02/04(月) 11:06:04
>>909
ありがとうございました。
924デフォルトの名無しさん:2008/02/04(月) 11:07:56
925915:2008/02/04(月) 11:26:36
>>917さん
コンパイル失敗時に出てきたエラーメッセージを直接コピペします。長いかも・・・。
2ch.c:6: parse error before `&'
2ch.c:17: parse error before `}'
2ch.c: In function `read_wave_file':
2ch.c:47: storage size of `chunk' isn't known
2ch.c:54: stray '\' in program
2ch.c:54: parse error before `)'
2ch.c:56: stray '\' in program
2ch.c:56: parse error before `)'
2ch.c:62: stray '\' in program
2ch.c:62: parse error before `!'
2ch.c:68: parse error before `else'
2ch.c:68: stray '\' in program
2ch.c: At top level:
2ch.c:76: parse error before `if'
2ch.c:78: parse error before `+'
2ch.c:78: warning: data definition has no type or storage class
2ch.c:81: warning: parameter names (without types) in function declaration
2ch.c:81: warning: data definition has no type or storage class
2ch.c:83: parse error before `if'
2ch.c: In function `write_wave_file':
2ch.c:92: storage size of `chunk' isn't known
2ch.c:98: stray '\' in program
2ch.c:98: parse error before `;'
2ch.c:102: stray '\' in program
2ch.c:102: parse error before `;'
2ch.c:105: stray '\' in program
2ch.c:105: parse error before `;'
2ch.c:110: stray '\' in program
2ch.c:110: parse error before `;'
926デフォルトの名無しさん:2008/02/04(月) 11:39:00
>>925
5行目の最後(改行の直前)の'\'が消えてないか?
927デフォルトの名無しさん:2008/02/04(月) 12:35:58
>>922
ありがとうございました。
928デフォルトの名無しさん:2008/02/04(月) 13:55:09
>>925
まさかとは思うが、改行コードが\r\nのままLinuxでコンパイルしていないか?
5行目末のバックスラッシュが\rをエスケープしてしまい、その後の\nをエスケープできなくなるぞ。
929デフォルトの名無しさん:2008/02/04(月) 14:43:27
[1] 授業単元: プログラミング入門
[2] 問題文(含コード&リンク):@0〜99の数字から異なる30個を選び、配列COM1[30]に格納せよ
               (時間で初期化,乱数を使用)
              A次に6個の異なる数を入力し配列COM2[6]に格納せよ
              B次にCOM1、COM2の数を小さい順に並び変えよ
              C次にCOM1とCOM2の両方に含まれる数の個数を求めよ
              D最後にCOM1とCOM2の全数字とCの個数を出力させよ
[3] 環境
 [3.1] OS:UNIX
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限:2月7日
[5] その他の制限:

宜しくお願いします。
930デフォルトの名無しさん:2008/02/04(月) 14:59:57
931デフォルトの名無しさん:2008/02/04(月) 15:24:53
932デフォルトの名無しさん:2008/02/04(月) 15:33:49
>>931
make_com1()は>>929の@の『0〜99の数字から異なる30個を選び』を
満たしてないような・・・(重複するんじゃないの?)

通りがかりで失礼
933デフォルトの名無しさん:2008/02/04(月) 16:57:58
>>929
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5992.txt

初心者だけどやってみた、一応ちゃんと動いた。
変数の名前とかだいぶ適当だけど勘弁。
934デフォルトの名無しさん:2008/02/04(月) 17:17:44
[1] 授業単元:C言語入門
[2] 問題文:キーボードから学籍番号を入力すると、
その学生の eメールアドレスを出力するプログラムを作成しなさい。
ただし、学籍番号は7桁の自然数とし、これ以外の文字列が打ち込まれた時には
「学籍番号は7桁の数字で入力して下さい」と出力して、終了するプログラムとすること。

学籍番号を入力して下さい:0032113
0032113@yahoo....など。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: visual studio
 [3.3] 言語: C++
[4] 期限: 2月4日
[5] その他の制限:

期限ギリギリで申し訳ないですが、お願いします。
935デフォルトの名無しさん:2008/02/04(月) 19:00:43
936デフォルトの名無しさん:2008/02/04(月) 20:45:00
100回入れ替えなくても30回で十分なやり方あるだろ……と思ってよく見たらその交換の仕方はダメだ
937935:2008/02/04(月) 20:46:34
あぁ・・・VCで作ったから_tmainのままになってら・・・
938デフォルトの名無しさん:2008/02/04(月) 20:49:52
>>936
後学の為にダメな理由を詳しく教えてくれると嬉しい。
939デフォルトの名無しさん:2008/02/04(月) 20:57:16
for( i = 0 ; i < sizeof(hoge)/sizeof(*hoge) ; i++ )
{ // i番目の要素と乱数(0~99)番目の要素を交換
int rnd = rand() % 100 ;
int tmp = 0 ;

tmp = hoge[i] ;
hoge[i] = hoge[rnd] ;
hoge[rnd] = tmp ;
}

これだと数値が偏るから
940デフォルトの名無しさん:2008/02/04(月) 20:58:56
[1] 授業単元:プログラミング
[2] 問題文
input.txtの各行には100点満点の数学の試験の点数が書かれている。
これを0点台,10点台…,90点台,100点の11の階級に分け、どの階級に何人
が属するかを人数分の"*"で表すプログラムを書きなさい。出力の細かな形式は問わない。

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

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C
 [3.3] 言語:C
[4] 期限:2月6日
[5] その他の制限:

よろしくお願いします。
941デフォルトの名無しさん:2008/02/04(月) 20:59:28
>>934
学籍番号とメールアドレスの関連はどうなってるんだ?
それだけじゃ、苗字を入力して、下の名前を出力するプログラムって言うぐらい、意味不明だぞ。
どうやって作ったらいいのかサッパリ分からん。

学籍番号@yahoo.co.jpでいいのか?
942デフォルトの名無しさん:2008/02/04(月) 21:03:06
>>939
どう偏るの?
943934:2008/02/04(月) 21:06:39
>>941
入力された学籍番号@yahoo.co.jp
と、出力されるプログラムです。

ただし、学籍番号は7桁の自然数とし、これ以外の文字列が打ち込まれた時には
「学籍番号は7桁の数字で入力して下さい」と出力して、終了するプログラムとすること。

↑ここがどのようにプログラムしたらいいのか分からないのです。
944デフォルトの名無しさん:2008/02/04(月) 21:10:33
>>940
#include <stdio.h>

int main(void)
{
FILE *fp;
int i, j, a[11] = {0}, n;

if((fp=fopen("input.txt", "r"))==NULL) return 1;

while(fscanf(fp, "%d", &n)!=EOF) a[n/10]++;

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

return 0;
}
945デフォルトの名無しさん:2008/02/04(月) 21:11:47
946デフォルトの名無しさん:2008/02/04(月) 21:18:28
947デフォルトの名無しさん:2008/02/04(月) 21:26:44
>>942
単純化してhogeが3要素の場合を考えてみろ
この場合、rand()%3が三回計算されるから、これが完全な乱数だと近似すれば、27通りが均等な確率で出る
一方、3要素を並べ換える方法の数は3!=6通りで、27は6の倍数じゃないから、6通りが公平に出ることはありえない
948デフォルトの名無しさん:2008/02/04(月) 21:41:46
>>945,>>947
ご丁寧な引用&説明ありがとう。
949デフォルトの名無しさん:2008/02/04(月) 22:26:19
>>944
>>946
こんなに早くありがとうございました。
950デフォルトの名無しさん:2008/02/04(月) 22:34:51
>>943
#include<iostream>
using namespace std;
int main(void){
string s;
cout << "学生番号 : ";
cin >> s;
if(s.length() != 7){
cout << "7文字いれろぼけ" << endl;
return 1;
}
for(string::iterator si = s.begin(); si != s.end(); si++){
if(!isdigit(*si)){
cout << "数字以外いれんなぼけ" << endl;
return 1;
}
}
cout << s.c_str() << "@yahoo.co.jp" << endl;
return 0;
}
951934:2008/02/04(月) 22:56:17
>>950
ありがとうございます!
952デフォルトの名無しさん:2008/02/04(月) 23:32:47
ちょっと早いけど次スレ立てました
C/C++の宿題を片付けます 104代目
http://pc11.2ch.net/test/read.cgi/tech/1202135539/
953798:2008/02/05(火) 01:09:34
>>914さん
解説もつけていただき、ありがとうございました(^-^)/
954デフォルトの名無しさん:2008/02/05(火) 12:22:57
文字列がランダムに入ったchar moji[i][255]があります
moji[0〜i]で何種類の文字列があるか数える方法教えてください
例えばi=5だとして
moji[0]="abc"
moji[1]="bbb"
moji[2]="abcdbbb"
moji[3]="bbb"
moji[4]="abc"
なら答えは3種類です
955デフォルトの名無しさん:2008/02/05(火) 12:39:17
>>954
ここは宿題スレ。よって、スレ違い。
956売国まるはん:2008/02/05(火) 13:11:47
パチンコスレで遠隔、ホルコン、サクラ、マネーロンダリングなどについて書き込むと渋谷マルハン社員やマルハンに依頼された
ネット工作会社がスレ荒らしをしてスレが機能停止します。
↓↓工作員の荒らしのやり方↓↓
2008/01/10(木)ID:iA54nBU50
■■■■マルハン総合スレッド 9■■■■http://money6.2ch.net/test/read.cgi/pachij/1187021165/783-784
【宮崎県都城市】パチ事情そのAhttp://money6.2ch.net/test/read.cgi/pachij/1187189246/658-659
【山と川】宮崎県児湯付近PART1【自然イパーイ】http://money6.2ch.net/test/read.cgi/pachij/1188235164/471-472
【基地外が大暴れ4】エスパス日拓総合スレ【18発目】http://money6.2ch.net/test/read.cgi/pachij/1188885488/401-410
2008/01/13(日)ID:1HLcWzUK0
【基地外が大暴れ4】エスパス日拓総合スレ【18発目】http://money6.2ch.net/test/read.cgi/pachij/1188885488/461-462
■■■■マルハン総合スレッド 9■■■■http://money6.2ch.net/test/read.cgi/pachij/1187021165/809-810
【香川】パーラーグランドのスレ2【徳島】http://money6.2ch.net/test/read.cgi/pachij/1188315438/324
【延岡】宮崎県北情報PART3【日向】http://money6.2ch.net/test/read.cgi/pachij/1196865970/186

工作員に荒らされ機能停止したスレ
■■■■マルハン総合スレッド 9■■■■http://money6.2ch.net/test/read.cgi/pachij/1187021165/
【山崎】MPT渋谷パート9【シャネル】http://money6.2ch.net/test/read.cgi/pachij/1197771701
【基地外が大暴れ4】エスパス日拓総合スレ【18発目】http://money6.2ch.net/test/read.cgi/pachij/1188885488
MPT渋谷はマルハン・パチンコ・タワー渋谷の略です。

パチンコ産業は荒らすことでレスとレスの間を空けて読む気をなくさせたり
マネーロンダリング、さくら、ホルコン、遠隔、などの風評被害を最小限に抑えようとしてる。

新スレ→○○○マルハンパチンコタワー渋谷パート10○○○
★★★★★このスレの解説★★★★★を読んでみるとよく判る。
http://money6.2ch.net/test/read.cgi/pachij/1201304777/52-54

957デフォルトの名無しさん:2008/02/05(火) 15:11:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):与えられたデータに対して季節調整を行うプログラムを作成しなさい。
<調整法>
i年目、j月のデータを aij とする。
月平均 Mj
月平均の平均 M
調整のための指数 Sj = Mj / M
調整結果 aij / Sj
<input.text>
40.0 37.7 51.8 45.9 45.2 45.4 62.0 40.8 42.1 49.1 51.5 93.4
42.6 39.5 53.4 47.6 47.0 47.5 63.5 42.2 42.9 51.1 51.8 94.7
43.3 39.8 53.6 48.5 48.3 47.5 65.9 42.8 43.7 53.2 52.9 97.0
44.9 42.3 55.0 50.7 48.6 48.9 68.8 43.3 46.2 54.2 54.6 100.5
47.5 42.8 57.7 52.6 51.0 50.9 71.4 45.0 47.3 56.8 56.7 102.7
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:2月7日
[5] その他の制限: 結果は、画面に表示してください。

よろしくお願いします!
958デフォルトの名無しさん:2008/02/05(火) 15:17:10
959デフォルトの名無しさん:2008/02/05(火) 15:22:47
[1]授業単元 C言語
[2]問題文 整数yを入力すると、y×yの正方形を描くプログラム

ex)y=4のとき
・・・・
・  ・
・  ・
・・・・

y=1のときは


y=2のときは
・・
・・
でOK

[3]環境 Windows、C
[4]期限 2/6 9:30まで。なるべく早めにお願いします。
960デフォルトの名無しさん:2008/02/05(火) 15:32:04
// >>959 2バイト文字にするのは自分でやってくれ。
#include <stdio.h>
int main()
{
int y;
scanf("%d", & y);
if (y >= 1) {
for (int xc = 0; xc < y; ++xc) {
printf(".");
}
printf("\n");
}
for (int yc = 0; yc < y - 2; ++yc) {
printf(".");
for (int xc = 0; xc < y - 2; ++xc) {
printf(" ");
}
printf(".\n");
}
if (y >= 2) {
for (int xc = 0; xc < y; ++xc) {
printf(".");
}
printf("\n");
}
return 0;
}
961デフォルトの名無しさん:2008/02/05(火) 15:42:01
/* こんでいいじゃんw */
#include <stdio.h>
int main()
{
int y, xc, yc;
scanf("%d", & y);
for (yc = 0; yc < y; ++yc) {
for (xc = 0; xc < y; ++xc) {
printf("%s", yc == 0 || yc == y - 1 || xc == 0 || xc == y - 1 ? "・" : " ");
}
putchar('\n');
}
return 0;
}
962デフォルトの名無しさん:2008/02/05(火) 17:56:42
>>960-961
ありがとうございました。
963デフォルトの名無しさん:2008/02/05(火) 18:21:06
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
・時計の長針と短針がなす角を求めるプログラム

 時刻 h時 m分 (24時間制、mは整数)において、時計の長針と短針がなす角θ(0°≦θ≦180°)
を計算するプログラムを書きなさい。
 ただし、h、mを入力する部分、及びなす角θを計算する部分をそれぞれ関数化しなさい。
結果の出力はh、m、θが表示されていれば細かい様式は問わない。

ヒント:時計の長針は1時間で一周するということは、1分間あたり何度動くか。
同様に、時計の短針は12時間で一周するということは1時間当たり何度動くか。
また1分間あたり何度動くか。時計の長針は短針に比べて1分間にどれだけ多く動くか。

実行例
>clock.exe
input h:22
input m:0

22:00 (60.0°)

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年2月6日12:00まで
[5] その他の制限: 制限は特にありません。よろしくお願い致します
964デフォルトの名無しさん:2008/02/05(火) 19:04:08
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):http://ip.tosp.co.jp/i.asp?I=cgenger
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:2月9日
[5] その他の制限: 宜しくお願いします
965デフォルトの名無しさん:2008/02/05(火) 20:04:22
>>963
#include<stdio.h>
#include<math.h>
double calc_theta(int hour, int minute){
double degree_hour, degree_minute, theta;
degree_hour=(hour+minute/60.0)*30.0;
degree_minute=minute*6.0;
theta=fmod(degree_hour-degree_minute, 360.0);
if(theta<0.0) theta+=360.0;
if(theta>180.0) theta=360.0-theta;
return theta;
}
void get_value(int *pvalue, const char *message){
printf("%s", message);
scanf("%d", pvalue);
}
void get_hour(int *phour){
get_value(phour, "input h:");
}
void get_minute(int *pminute){
get_value(pminute, "input m:");
}
int main(void){
int hour, minute;
get_hour(&hour);
get_minute(&minute);
printf("\n%02d:%02d (%.1f°)\n", hour, minute, calc_theta(hour, minute));
return 0;
}
966963:2008/02/05(火) 20:50:26
>>965さん
宿題でこれだけがどうしても分からなかったので、
本当に助かりました。
コードを見て理解することができました。
ありがとうございました!
967デフォルトの名無しさん:2008/02/05(火) 21:51:10
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6002.txt
このプログラムにより1つのxに対して100個の誤差を含んだyが求められるので
それぞれのxについて分散S=(1/100)*((yの平均値)-(yの値))を求めて
fprintf(fp2,"%lf\t%lf\n",x,S);を使ってtxtファイルに書き出す
[3] 環境
 [3.1] Windows
 [3.2] Visual Studio 2005
 [3.3] 言語:C
[4] 期限:2月6日正午
問題文のプログラムに付け加える形でやってもらえるとありがたいです
時間短いですがどうかよろしくお願いします
968デフォルトの名無しさん:2008/02/05(火) 22:54:27
2乗が足りないな
969967:2008/02/05(火) 23:10:36
あ、ほんとだ
S=(1/100)*((yの平均値)-(yの値))^2 ですね
970デフォルトの名無しさん:2008/02/05(火) 23:31:18
>>967
void main()
{
double X[2];
int flag=0;
srand( (unsigned)time( NULL ) );

int i;
long double x,y, sum_y, sum_y2, s;
x=0;

FILE *fp1, *fp2;
fp1=fopen("file1.txt","w");
fp2 = fopen("file2.txt", "w");
for(x=0;x<=10;x++)
{
i=0;
sum_y = sum_y2 = 0;
while(i<100){
i=i+1;
y=x*x+AddError(&flag,X)*0.05;
sum_y+=y;
sum_y2 += pow(y, (long double)2.0);
fprintf(fp1,"%lf\t%lf\n",x,y);
}
s = -pow(sum_y, (long double)2.0)/10000 + sum_y2/100;
fprintf(fp2, "%lf\t%lf\n", x, s);
}
fclose(fp1);
fclose(fp2);
}
971デフォルトの名無しさん:2008/02/05(火) 23:37:07
>>954
std::set<std::string>(moji,moji+sizeof(moji)/sizeof(*moji)).size()
972デフォルトの名無しさん:2008/02/06(水) 00:14:18
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6003.txt
[3] 環境 
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio
 [3.3] 言語: C
[4] 期限: 2月7日
[5] その他の制限: おねがいします。
973デフォルトの名無しさん:2008/02/06(水) 06:51:28
>>972
またその問題かいな。
974デフォルトの名無しさん:2008/02/06(水) 07:31:03
>>973
!!
もう誰かが質問してたってことですか! ぐへえ
975デフォルトの名無しさん:2008/02/06(水) 09:25:24
【質問テンプレ】
[1] 授業単元:C++
[2] 問題文
テトラナッチ数列の問題で。
初項と第2項は0、第3項は1の値となるが第n項(n>3)び値Tnは以下の式で
あらわせられる。
Tn=Tn-1+Tn-2+Tn-3
再起を利用した関数int tetra(int n)を作成しn=1から n=30までに各値を表示
させたい。以下の質問に答えよ
@関数tetraを以下に記述せよ
Amain関数を以下に記述せよ
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (borand5.5)
 [3.3] 言語: (/C++/)
[4] 期限: 今日中
976975
追記で。
上記プログラムを何回実行したかを確認したいときどこをどのように変更したらよいか答えなさい。