C/C++の宿題を片付けます 103代目at TECH
C/C++の宿題を片付けます 103代目 - 暇つぶし2ch449:デフォルトの名無しさん
08/01/22 16:30:31
>>441さん
ありがとうございました



450:デフォルトの名無しさん
08/01/22 16:33:23
>>445
URLリンク(kansai2channeler.hp.infoseek.co.jp)

451:デフォルトの名無しさん
08/01/22 18:07:10
>>294
有難う御座いますm(_ _)m

452:デフォルトの名無しさん
08/01/22 18:40:18
>>448
URLリンク(kansai2channeler.hp.infoseek.co.jp)

453:デフォルトの名無しさん
08/01/22 19:40:07
[1] 授業単元:プログラミングⅡ
[2] 問題文:任意の数(最大10個)の整数を入力した後、
それらの最小公倍数と最大公約数を関数内で求め、mainの中で表示プログラムを作成すること。
[
3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio
 [3.3] 言語: C
[4] 期限: 2008/1/25
[5] その他の制限:


454:デフォルトの名無しさん
08/01/22 20:40:54
>>452
ありがとうございました。
助かります!

455:デフォルトの名無しさん
08/01/22 21:03:49
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):霰の計算
問題文 URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: (2008年1月23日12:00まで
[5] その他の制限: 入出力と計算部分は関数化します。

よろしくお願いいたします。

456:455
08/01/22 21:08:18
すみません問題文が一部文字化けしていました。

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

です。宜しくお願いいたします。

457:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/22 21:30:05
>'#include "stdafx.h"' をソースに追加しましたか?
してないならしろ。

459:デフォルトの名無しさん
08/01/22 21:30:53
佐野拓海か?せめてあげる内容は少し確認してからにしろ。どんまい。

460:デフォルトの名無しさん
08/01/22 22:04:23
特定しました

461:デフォルトの名無しさん
08/01/22 22:14:05
>>455
>ちなみに1<=n<=10000の範囲で一番大きなf(n)の値を返すnは871であり、
>f(871)=178である。

n = 6171, f(6171) = 261 じゃないの?

462:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/22 22:27:09
37から229までの整数を加算し
その結果を表示するプログラム
@$---------------------
[解答]
#include <stdio.h>
#include <conio.h>

void main(){


for( )
{


}

printf( );

getch();
}


465:デフォルトの名無しさん
08/01/22 22:30:03
山下さんおつかれさまです

466:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/22 22:33:51
キーボードから整数を入力させ
その数を x に代入する。
x が 100 より大きいとき、

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

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

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

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

void main(){



getch();
}


468:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/22 22:40:01
死ねカス

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

void main(){

float x=0;

while( )
{
x = x + 0.01;
}

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

getch();
}

471:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/22 22:48:04
>>463,464,466,477
URLリンク(kansai2channeler.hp.infoseek.co.jp)

丸投げスレだから問題丸投げはいい。でも>>1に長いならうpろだ使えってかいてあるよね?

473:455
08/01/22 22:52:54
>>461さん
問題文をそのまま記述したのですが、そうなりますかね?
でも私には判断できないです....。


474:デフォルトの名無しさん
08/01/22 22:54:16
>>473
おそらく1~1000の書き間違いだろ
気にするな

475:デフォルトの名無しさん
08/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);
}

476:472
08/01/22 23:01:36
>>472の安価>>477>>467の間違い

>>468,470,471
>>471の問9に関して題意が不明確なのでこっちで勝手に解釈した。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

>>472含めすべてのプログラムの動作未確認、コンパイルもしていない。
間違ってたらごめんちゃい。

477:デフォルトの名無しさん
08/01/22 23:06:23
兄です。KRDで弟がお世話になっています。特定しましたんでヨロシク!


478:461
08/01/22 23:08:43
>>473
>>474が言ってるように、1~1000なら正しい。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

479:デフォルトの名無しさん
08/01/22 23:11:57
Lets to the best today! マジで?

480:デフォルトの名無しさん
08/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 ㍍広げればよい\n",x);

getch();
}

481:デフォルトの名無しさん
08/01/22 23:20:33
明日もビジネスマナー研修頑張ってください by兄

482:455
08/01/22 23:28:36
すみませんでした!私の書き間違いでした。
1≦n≦10000の範囲で大きな関数を求めることは正しいのですが、
ちなみに~の下りの問題文の方では皆さんのおっしゃる通り
「1≦n≦1000の範囲」においてはnは871でした。

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

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




483:デフォルトの名無しさん
08/01/22 23:45:52
>>480
x = -110 + sqrt(13100);

484:デフォルトの名無しさん
08/01/22 23:55:24
>>483
>>480さんの、顔に、泥を、塗るな!!!!。

485:デフォルトの名無しさん
08/01/22 23:56:56
>>484
なんで、そんな、しゃべり方、なの?

486:デフォルトの名無しさん
08/01/23 00:22:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1/25
[5] その他の制限:なし

よろしくお願いします

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

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

488:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
スレリンク(tech板:229番) 1/31
>79 無期限
>144 無期限 問題文>148

491:デフォルトの名無しさん
08/01/23 01:11:10
>>490
まとめおつん

492:デフォルトの名無しさん
08/01/23 01:16:21
>>487
URLリンク(kansai2channeler.hp.infoseek.co.jp)

493:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/23 07:36:23
>>486
URLリンク(kansai2channeler.hp.infoseek.co.jp)

496:デフォルトの名無しさん
08/01/23 10:23:18
[1] 授業単元:プログラミング
[2] URLリンク(kansai2channeler.hp.infoseek.co.jp)
 このプログラムを実行すると1つのxにつき100個の誤差付きのyが出てくるので
 それぞれのxにおけるyの平均値(=(∑y)/100)を求めたい
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語: C
[4] 期限: 2008/1/24
[5] その他の制限:

よろしくお願いします

497:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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);
}

499:497
08/01/23 11:33:24
>497-498
コンパイルエラーが出ます。
passing argument 1 of ‘fopen’ makes pointer from integer without a cast
fopenの箇所が整数値を吐き出してるのだとは分かるのですが、
どう修正していいのか理解できません。ご教授ください。

500:390
08/01/23 11:53:55
>>437

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

構造体structも次回の講義で始めて習うという初歩っぷりですので
基礎的な部分から稚拙さが漂ってくるのかもしれませんが…
structの勉強もできて非常にためになりました、多謝です

501:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/23 12:55:40
>>501
馬鹿発見。スレ違いと言う点には同意するので、どこら辺が馬鹿なのかは割愛。

504:デフォルトの名無しさん
08/01/23 13:13:10
>>503
501じゃないけど解説求む

505:デフォルトの名無しさん
08/01/23 13:15:49
そこだけ変えても意味がないってことだろ。根本的に作りがおかしいんだから。

506:デフォルトの名無しさん
08/01/23 13:40:59
>>494
ありがとうございます。
因みにLCMが最大公約数でGCMが最小公倍数なんですかね?

507:デフォルトの名無しさん
08/01/23 13:42:12
>>506
いいえ。

508:デフォルトの名無しさん
08/01/23 13:42:41
>>506
lcm と gcd でググれば何の略か分かる

509:デフォルトの名無しさん
08/01/23 16:17:14
>>503
fopenの引数が間違ってる、という説明に留めろという理解でよろしい?
確かに、
>main( int argc, char * argv ) ;じゃなくて
>main( int argc, char * argv[] ) ;
というのは先走り感が否めないが。

510:395
08/01/23 16:29:49
>>444
argument error
と出てしまいます

511:デフォルトの名無しさん
08/01/23 16:33:20
プログラム実行時に data.txt を後に加えて実行すればおk

512:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/23 18:01:12
>>512
スペースは普通その他だろ

514:デフォルトの名無しさん
08/01/23 18:04:17
>>513
すいません、見落としてました。スペースもそれ以外に追加します。

515:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/23 18:41:40
>>515
>for(i=0;buf[i]!='\n';i++){

の方がいいかもNE!

517:デフォルトの名無しさん
08/01/23 18:48:57
>>515、516
ありがとうございます。
今、外なんで家に帰ってから実行してみようと思います。

518:デフォルトの名無しさん
08/01/23 19:01:42
[1] 授業単元: C言語
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 今日中です。。。
[5] その他:長くてめんどくさいかもしれませんが、どうかよろしくお願い致します。

519:デフォルトの名無しさん
08/01/23 19:22:42
1] C言語
[2] 台形公式を用いて∫0^2 √4-x^2 の近似値を求めるプログラミングを作成しなさい
[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: (C言語
[4] 期限:明日
[5] その他の制限: お願いします

520:デフォルトの名無しさん
08/01/23 19:32:49
>>519

#include <iostream.h>

void main(){cout << "どう見ても0です << endl;}

521:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/23 20:54:30
>>487
つ265252859812191058636308480000000

523:デフォルトの名無しさん
08/01/23 23:41:10
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1/26
[5] その他の制限:特になし

よろしくおねがいします

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

お願いします

525:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/24 00:10:52
>>523
繰り返しでやってみた
URLリンク(kansai2channeler.hp.infoseek.co.jp)

527:デフォルトの名無しさん
08/01/24 00:12:42
去年と同じ問題だw

528:デフォルトの名無しさん
08/01/24 00:18:31
>>524
適当 URLリンク(kansai2channeler.hp.infoseek.co.jp)

529:デフォルトの名無しさん
08/01/24 00:27:37
>>524
ミスあった >>528 修正 URLリンク(kansai2channeler.hp.infoseek.co.jp)

530:デフォルトの名無しさん
08/01/24 00:31:13
>>526
勘違いしてたから修正
URLリンク(kansai2channeler.hp.infoseek.co.jp)

531:デフォルトの名無しさん
08/01/24 00:45:02
[1] 授業単元:cprograming2
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限:2008/1/25 am 0:00
[5] その他の制限: 特に無し
よろしくお願いします

532:デフォルトの名無しさん
08/01/24 01:31:43
【時間切れ】 (1/23)
>518

【未解決問題】
>>531 1/25 0:00
>>404 1/25
スレリンク(tech板:229番) 1/31
>79 無期限
>144 無期限 問題文>148

533:デフォルトの名無しさん
08/01/24 01:38:17
>>529
なんで、そんなに括弧で囲む必要があるんだい?

534:デフォルトの名無しさん
08/01/24 01:39:28
>>518
URLリンク(kansai2channeler.hp.infoseek.co.jp)

すでに時間切れ 且つ なぜかリスト構造を使ってしまったけど、一応動いたのでうp

535:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/24 01:56:17
>>533
 データ(変数)を尊重し、できるだけそのデータが使われるときに、宣言し使う。
こうすることで、必要のないデータを他のブロックで誤って書き換えられることを防いでいる。
 いわゆる、データ指向プログラミング。

 >>529 fclose忘れてるな。別にいいけど。

538:デフォルトの名無しさん
08/01/24 02:05:12
>>534
ありがとうございます!!!

539:デフォルトの名無しさん
08/01/24 02:42:42
>>529 >>537
{NULL};が気になる。普通{0}じゃね?残りは0で埋められるわけだし。
NULLだとアドレスかと思ってしまうな

まぁ実用上はまったく問題ないと思うけど

540:デフォルトの名無しさん
08/01/24 02:43:52
>>535
配列eのメンバがわからないことには何とも言えない。
つーか、ソースうp。

541:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/24 03:36:47
>>537
そこまでするならサブルーチン化した方がいいような気もするが。読みづらいしな。

543:デフォルトの名無しさん
08/01/24 04:12:22
>>531
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ヘロンの公式は使ってないけど。眠い。

544:デフォルトの名無しさん
08/01/24 04:17:09
>>531
純粋な興味として聞きたいんだが、どうして座標が整数値で与えられているのにヘロンの公式を使うんだろう。

545:デフォルトの名無しさん
08/01/24 04:36:59
 >>543
 ちょ、間違ってる。

546:デフォルトの名無しさん
08/01/24 08:21:22
[1] 授業単元:C入門
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:study C
 [3.3] 言語:C
[4] 期限:今日の15時
[5] その他の制限:入門科目なので簡単なコードでお願いします。

547:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/24 10:56:22
>>546
URLリンク(kansai2channeler.hp.infoseek.co.jp)
入力チェックはしてない。

549:デフォルトの名無しさん
08/01/24 11:24:20


550:546
08/01/24 12:25:04
>>548
助かりした
無事単位を取得できそうです
ありがとうございました!

551:デフォルトの名無しさん
08/01/24 12:35:11
単位wwwどんだけしょぼい大学だよ

552:デフォルトの名無しさん
08/01/24 13:04:35
大学行ってないから基準が分からないんだね。

553:デフォルトの名無しさん
08/01/24 13:06:27
本来なら大学は自分で勉強するべきとか考えないとすれば
90分×14回 = 21時間 だから、無理もない
たったの二日で何が習得出来るって話だ

554:548
08/01/24 13:14:10
>>550
これで単位か・・・羨ましいような羨ましくないような。

>>547
URLリンク(kansai2channeler.hp.infoseek.co.jp)

555:デフォルトの名無しさん
08/01/24 14:09:37
>>502
ちょっと解説してもらえませんか?

556:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/24 15:30:11
>>550
ちょっWwおまWw
どこの大学だよ
それで単位認定って
笑った

558:デフォルトの名無しさん
08/01/24 15:33:44
文系が理系をちょっとかじるようなゼミだとそんなもんじゃね?

559:デフォルトの名無しさん
08/01/24 15:40:41
【質問テンプレ】
[1] 授業単元:CG
[2] 問題文(含コード&リンク):対戦型シューティングゲームを作ったんですけど、
もう1つのポットから、玉が出ないんです。どうしたら、出るようになるんでしょうか?
教えてください。あと、当たり判定も作ったんですが、これよりもっといいプログラムは
ありますか?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cで書いてあります
[4] 期限: 今日の18時まで
[5] その他の制限:なし

560:デフォルトの名無しさん
08/01/24 15:42:32
>>559
よくあるのはベクトルのノルムで判定する方法

561:デフォルトの名無しさん
08/01/24 15:43:21
[1] 授業単元: プログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:BCC
 [3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:特にないです。。。

お願いします。

562:デフォルトの名無しさん
08/01/24 16:51:24
>>561
ファイルに書き出すときのテキストのフォーマットは?

563:デフォルトの名無しさん
08/01/24 18:13:49
>>562
txt形式でお願いします。

564:デフォルトの名無しさん
08/01/24 18:46:30
>>563
CSVとかそういうのを聞きたいんだと思うよ。

>>561
CSVにした。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

565:548
08/01/24 18:47:07
>>561
URLリンク(kansai2channeler.hp.infoseek.co.jp)


566:548
08/01/24 18:51:31
>>565をちょっと修正。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

567:デフォルトの名無しさん
08/01/24 19:03:53
>>564
>>565

ありがとうございます!

568:デフォルトの名無しさん
08/01/24 19:12:25
>>561
出遅れたけど載せておく
URLリンク(kansai2channeler.hp.infoseek.co.jp)

569:デフォルトの名無しさん
08/01/24 19:23:16
>>568
ありがとうございます!本当に助かります。

570:548
08/01/24 19:40:44
>>566にもミスがあったorz

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

度々申し訳ない。

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

よろしくお願いします。

572:デフォルトの名無しさん
08/01/25 00:27:56
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):
ソートに関する問題です。詳細は↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6
 [3.3] 言語:C
[4] 期限:1/31まで
[5] その他の制限:なし
よろしくお願いします。


573:デフォルトの名無しさん
08/01/25 02:08:46
>>571
入力されうる最大の値はないのかい?
> (* ここに解答を書き加える *)
って、他の場所に全く手を加えてはいけないのか分からないよ。
sqrt()のためにmath.hを入れたが、それ以外他の場所には記述を加えずに書いてみた。

割り切れるかのループを回すところで素数以外でも計算してるのが無駄だが、1000000以下の素数を列挙するのに10秒程度。
URLリンク(kansai2channeler.hp.infoseek.co.jp)



574:573
08/01/25 02:18:08
無駄な部分があった。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

【未解決問題】
スレリンク(tech板:229番) 1/31
>>572 1/31
>79 無期限
>144 無期限 問題文>148

576:デフォルトの名無しさん
08/01/25 04:29:08
>>572
URLリンク(kansai2channeler.hp.infoseek.co.jp)

577:ラッセン沖縄
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/25 12:03:46
再度申し訳ありません。
スタート時にルートを決定するのではなく、ブロック毎に曲がれるか判断するみたいです。あとなるべく早くゴールにたどり着かないとダメみたいです(>_<)

581:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/25 12:22:47
>>404
期限が切れてしまってますが、どなたかよろしくお願いします。

583:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/25 14:56:31
>>582
その書き込みの50分後、
mixiの宿題スレに全く同じ問題を貼った奴が居る。

開発環境と期限は違うが、もしかしてお前さんか?

585:デフォルトの名無しさん
08/01/25 15:26:40
>>579
C++っての見逃して、思いっきりCで書いてしまった
ほかにもっとうまいやり方あったと思うけど、一応できたので参考程度に見てください
URLリンク(kansai2channeler.hp.infoseek.co.jp)

586:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/25 16:22:49
コマンドラインからhoge *.datとでも入力して、
好きなように繰り返しをすればいい
ここは丸投げスレなんだからもっと具体的に書け

589:デフォルトの名無しさん
08/01/25 17:38:07
>>588
ファイルは"(生徒の名前).dat"となっていて各教科のテストの点が書かれているのでそれを合計し
1つのファイルに全員の分を"生徒の名前:合計点 \n"みたいな感じで出力したいのですが、
おっしゃっている「コマンドラインから~」というやり方がわからないんです。
すいません

590:デフォルトの名無しさん
08/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
と入力すればよい

591:587,589
08/01/25 19:04:28
>>590
>>588をみて同じようなことをしたのですが、
Output.dat には "* : 0" としか出力されないんです…
コマンドラインでワイルドカード使うために何か特別な作業が必要だったりしますか?

592:デフォルトの名無しさん
08/01/25 19:12:38
ファイルの書式も書かずに・・・

593:デフォルトの名無しさん
08/01/25 19:25:42
inputファイルには、"国語: 74"みたいに
"(教科名):(半角スペース)(数値)"というのが7行ならんでいます。

すいません。

594:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/25 20:45:43
そもそもwinで実行引数にワイルドカードで一括指定ってできたっけ?

596:デフォルトの名無しさん
08/01/25 20:52:30
標準ではできる。シェルによって対応がまちまちだからなあ

597:デフォルトの名無しさん
08/01/25 20:54:23
あと、>>587は引数の形でなしにプログラム内でディレクトリを掘って探すのが題意かもね。指定されてないけど

598:デフォルトの名無しさん
08/01/25 20:59:39
>>596
そうだったか、それならワイルドカードで指定する際に
カレントディレクトリに該当ファイル置いてないとかかね。

599:デフォルトの名無しさん
08/01/25 21:54:47
①アルゴリズムとデータ構造
②パズルの世界では、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:デフォルトの名無しさん
08/01/25 22:20:15
>>262です
遅れてすいませんやっと発言ができました(プロバがアク禁食らってました)
本当に感謝ですー
ありがとうございました!

601:デフォルトの名無しさん
08/01/25 22:47:19
>>599
ソフ開試験の午後1問5に同じ問題がある
URLリンク(www.jitec.jp)
URLリンク(www.jitec.jp)

602:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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ファイル可。

604:591
08/01/25 23:30:58
>>594
そのプログラムでやってみても *.dat となりますね・・・
>>598のせいだ!と思ったので、.exeのあるディレクトリに .datを全部移してみたのですが、
それでも結果は変わらなかったです。

これはもう手書きで1個1個ファイル指定していくしかないんでしょうか・・・

605:デフォルトの名無しさん
08/01/25 23:32:43
カレントディレクトリの意味分かってるか?
一度exeのあるパスまでcdコマンドで移動してから実行しないとダメだぞ。

606:591
08/01/25 23:42:57
あ、それはさすがに・・・。
すいません

607:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/25 23:54:23
>>584
mixiはやっていないので、私ではないです。

609:デフォルトの名無しさん
08/01/25 23:58:54
>>591
Windows のコマンドプロンプトはワイルドカードを展開しないようだ

解決案
1.コマンドプロンプトで動作するシェル(bash とか)を一段かませる
2.実行ファイルのスタートアップルーチンでワイルドカードを展開するコンパイラ(ライブラリ)を使う
3.dir /b の結果を実行ファイルに渡す
4.自力でファイル検索ルーチンを作る
5.手作業でやる

610:591
08/01/26 00:13:33
>>609
そうですか。 わかりました。
1,2,4は今の自分には荷が重そうなので
とりあえず "dir /b > temp.dat" で temp.dat を読ませる感じにしようかと思います。
ありがとうございます。

他の方もありがとうございました。

611:デフォルトの名無しさん
08/01/26 00:46:38
【時間切れ】 (1/25)
>577

【未解決問題】
>>603 1/27
>>581 1/28 9:00
スレリンク(tech板:229番) 1/31
>79 無期限
>144 無期限 問題文>148
>404 期限切れだがやって欲しい

612:599
08/01/26 01:18:08
>>601
本当ですね。参考にします。
>>607
非常に助かりました。ありがとうございます^^

613:デフォルトの名無しさん
08/01/26 01:18:46
>>599
URLリンク(kansai2channeler.hp.infoseek.co.jp)

614:デフォルトの名無しさん
08/01/26 02:15:02
[1] 授業単元:プログラミング
[2] 問題文 3問あります
       URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 1月28日 午前8時まで
[5] その他の制限:特にないですが
            考察も書かないといけないので何をやっているか軽い注訳をつけてくれるとありがたいです(これはなくても構いません)

615:デフォルトの名無しさん
08/01/26 02:22:27
>>614
課題1と課題2は現行スレで見た気がするぞ。

616:デフォルトの名無しさん
08/01/26 02:37:23
>>615
本当ですか?
ちょっと探してみます
レス番のあてつけとか出来ませんか

617:デフォルトの名無しさん
08/01/26 03:07:10
>>404
つくりかけで忘れていた。もう見れたもんじゃない。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

618:478
08/01/26 03:18:22
>>616
それぐらい自分で探してくれ・・・と言いたい所だが、
自分がうpした課題1だけ。

619:デフォルトの名無しさん
08/01/26 03:20:41
>>618
本当にありがとうございます(´;ω;`)

620:デフォルトの名無しさん
08/01/26 08:00:09
前スレの231と同じ+αなのですが、落ちちゃって見れません、再度お願いできませんでしょうか?お願いしますorz
問題下[1]プログラミングⅡ
[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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/26 08:05:18
[3]環境
[3.1]XP
[3.2]visual studio 2005
[3.3]C++
[4]今日中
[5]なし


sageソコね、長文申し訳ないです、期間も短いので、困難かもしれませんが出来る限りでいいのでお願いできませんか?

623:デフォルトの名無しさん
08/01/26 08:06:33
最後までsage損ねてる俺ばっかす・・・すいませんでしたorz

624:デフォルトの名無しさん
08/01/26 09:07:17
>>614
#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:デフォルトの名無しさん
08/01/26 12:05:11
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1/26
[5] その他の制限:なし

分かりません、よろしくお願いします。

626:デフォルトの名無しさん
08/01/26 12:40:18
zipの場合は簡単に説明を書いてくれ
落として解凍するのダルいし

627:デフォルトの名無しさん
08/01/26 12:55:02
なぜzipなんだ・・・やる気うせる
ウィルス恐いよ~・゚・(つД`)・゚・。

628:デフォルトの名無しさん
08/01/26 13:17:54
ウィルス恐いよ~(笑)

629:625
08/01/26 13:37:03
内容は点電荷の電位を計算して、電荷の分布と電位の関係を求めるとありました。
もしかしたらこんな課題やらせるようなスレじゃなかったりして(汗)

ZIPは安心して、ウィルスなんかないから(´∀`)

630:デフォルトの名無しさん
08/01/26 13:38:13
俺は電磁気学は興味ないからやってないしな。
力学なら余裕なんだがすまんね

631:デフォルトの名無しさん
08/01/26 13:40:10
>>624
そうです、ありがとうございました

632:デフォルトの名無しさん
08/01/26 13:55:33
電磁気しらんで方程式くそくらえ、電磁気のラウンド微分はどうし様

633:デフォルトの名無しさん
08/01/26 13:57:47
へん微分と数論は違うんだからね、ふん

634:デフォルトの名無しさん
08/01/26 14:31:59
(´∀`)

635:デフォルトの名無しさん
08/01/26 14:47:17
X+とX++の違いをわかる奴は天才だろ

636:デフォルトの名無しさん
08/01/26 14:49:25
バグを作らないグループとバグをツクリヤスイグループってあるわ、人のいうこと聞かない

637:デフォルトの名無しさん
08/01/26 15:31:15
[1] 授業単元:離散数学
[2] 問題文(含コード&リンク):
  格子点上に置かれた任意の4点を結ぶ最小の直線スタイナーツリーを見つけるプログラムを作成せよ。
  候補が複数ある場合は、それらを全て表示させるようにさせよ。

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

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

どんなに泥臭い方法でも構わないので、ご協力お願いします。

638:579
08/01/26 16:00:26
>>585さん

本当にありがとうございます!


639:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/26 16:26:34
おまいら、マジデ、ノードが増えたら手におえなくなるという答えを期待している先生を
裏切るんだな

641:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/26 16:43:18
まあ動的計画法でも使うんだろうな。

643:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/26 16:58:50
ちなみにodd eyeなのは狙ってやった。

645:デフォルトの名無しさん
08/01/26 17:08:39
そこでORアルゴリズム

646:デフォルトの名無しさん
08/01/26 19:07:34
>>620
URLリンク(kansai2channeler.hp.infoseek.co.jp)
組んだ後にC++だと気づいたorz
なんでCだけど・・・一応うpしておきます。

647:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/26 19:59:40
すまん、パッチ。
- sum += atol(sz);
+ sum += nTmp;

649:デフォルトの名無しさん
08/01/26 23:26:00
>>637
出力フォーマットが分からないと何とも。
あと入力されうる点の上下限値は示されてないのか。

4点からの最短共有点を列挙するプログラムを書いたので好きに変えてくれ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
入力フォーマットは雰囲気で把握してくれ。


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

お願いします。


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

お願いします。


652:デフォルトの名無しさん
08/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
スレリンク(tech板:229番) 1/31
>79 無期限
>144 無期限 問題文>148

653:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/27 15:11:07
>>583
スイマセン、ポインタも使わないという条件を書くのを
忘れていました。
もう一度お願いしてもいいでしょうか?

655:デフォルトの名無しさん
08/01/27 15:15:38
>>654
条件後付けして再度やってくれって・・・。
つか、”ちゃんとソース見た"のか?

656:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/27 15:27:44
ワロタ

658:デフォルトの名無しさん
08/01/27 17:23:15
>>581
(1)の問題のみ
URLリンク(www.aki7.com)

659:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/27 18:32:35
>>583ってポインタ使ってないよね?


662:デフォルトの名無しさん
08/01/27 18:55:05
>>656
printf()って、引き数にポインタをとるんですよね?
ポインタを使わないでくださいって書いているんですけど読めないんですか?

663:デフォルトの名無しさん
08/01/27 18:55:54
>>659
>間違えも指摘してください。
「間違え」ではなくて、「間違い」ですね。

664:デフォルトの名無しさん
08/01/27 19:08:53
一次配列の中身をランダムに置換して更に、それを
逆置換するプログラムを教えてください。
ある係数を渡すことで毎回同じ並びになるようにして
暗号のように使えるようにしないといけないみたいです。

 
例えば「1」という係数を渡すと
[3 2 4 1]を[2 4 1 3]にシャッフルして
それをもう一度[3 2 4 1]に戻したいです


665:デフォルトの名無しさん
08/01/27 19:25:04
>>664
> 一次配列の中身をランダムに置換して更に、それを逆置換する
・一次配列って一次元配列ってこと?
・ランダムに置換の,「ランダムに」ってどの程度のことを言っているの?

666:664
08/01/27 19:36:22
>>665
すみません「元」が抜けてましたね。
ランダムがどの程度か…そこまで指定されてないんですが
簡単な規則性が無ければ良いと思います。

667:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/27 19:39:11
例の
> [3 2 4 1]を[2 4 1 3]にシャッフルして
これがモロ規則性あるからその通りに作った。

669:デフォルトの名無しさん
08/01/27 19:54:07
>>659
Sort関数内に
printf("%d,%d\n",i,j);
を追加して、ちゃんとソートが行われているかどうか確認するといい




670:デフォルトの名無しさん
08/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;
}

671:581
08/01/27 20:12:35
>>658さん

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

これを元に(2)と(3)にも挑戦します・・・
でも期限には絶対間に合う予感がしない・・・orz

672:670
08/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:デフォルトの名無しさん
08/01/27 20:13:23
[1] 授業単元: cプログラミング入門」
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c言語
[4] 期限:1/31まで
[5] その他の制限;特になし
どうかよろしくお願い致します。

674:659
08/01/27 20:14:55
自分でもう一度やってみたけど。分けわからなくなってきた。
もう本当に無理っぽい。

誰か、答えを教えてください。

675:デフォルトの名無しさん
08/01/27 20:38:56
死ねカス

676:デフォルトの名無しさん
08/01/27 20:53:40
[1] 授業単元:C言語演習
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C言語
[4] 期限:1月28日中
[5] その他の制限:特にありません。
よろしくお願いします!


677: ◆LnG.2EAY0A
08/01/27 21:01:19
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を
ファイル操作を使って一括設定できるようにする。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:VC 6
 [3.3] 言語:C
[4] 期限:2008年01月28日午前まで
[5] その他の制限:ファイル操作を習う所まで授業で進みました。
自分でも試行錯誤してみたのですが中々うまく行かず・・・
皆さんの知恵をお借りしたいと思います、よろしくおねがいします。


678:デフォルトの名無しさん
08/01/27 21:08:28
>>659
ここは宿題スレだ。
組んで欲しいならテンプレ使って正式に頼め。

URLリンク(kansai2channeler.hp.infoseek.co.jp)
ギャーギャー騒がれると目障りだし、これ持って去りな。

679:デフォルトの名無しさん
08/01/27 21:36:04
>>678
なんというツンデレw

680:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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);
}

682:664
08/01/27 22:07:09
>>870
助かりました☆
ありがとうございます!

683:デフォルトの名無しさん
08/01/27 22:08:13
>>870
やるじゃん

684:637
08/01/27 22:08:40
>>649

ありがとうございます!
あとはなんとかしてみようと思います。

685:デフォルトの名無しさん
08/01/27 22:16:07
簡単なゲームを作れといわれたのですがわかりません
誰か助けてください

686:デフォルトの名無しさん
08/01/27 22:16:43
>>685
>>677

687:デフォルトの名無しさん
08/01/27 22:50:20
>>686
むつかしくてわかりません、もっと簡単なのお願いします
ポーカーとかでいいです

688:デフォルトの名無しさん
08/01/27 22:52:28
>>687
頭は大丈夫か?


689:デフォルトの名無しさん
08/01/27 22:57:01
ポーカーの方がよっぽど難しい罠

690:デフォルトの名無しさん
08/01/27 23:00:12
>>687
まあ何も考えずに>>677の問題文にあるソースをコピってコンパイルして動かしてみろ
そして中身を理解しろ

ポーカーはそれからだ

691:デフォルトの名無しさん
08/01/27 23:05:29
オセロ作るスレってのがあったな

692:デフォルトの名無しさん
08/01/27 23:06:59
>>676
当方で確認した環境は Vine Linux 4.2 (kernel 2.6.16.36), 処理系は gcc 3.3.6 です。
showpid; URLリンク(kansai2channeler.hp.infoseek.co.jp)
tentimes: URLリンク(kansai2channeler.hp.infoseek.co.jp)

関係ないが、
URLリンク(espio.air-nifty.com)
によると、鳥インフルエンザがインドではやっているらしい。1400 人超えたとか超えないとか。
それにしても日本ではなぜ報道されないのか?

693:デフォルトの名無しさん
08/01/27 23:07:04
釣りだろ

694:デフォルトの名無しさん
08/01/27 23:14:30
>>673
URLリンク(kansai2channeler.hp.infoseek.co.jp)

695:692
08/01/27 23:21:19
>>680
確かに提示されたshowpidはおかしいですね。私もひっかかってしまった。

696:デフォルトの名無しさん
08/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
スレリンク(tech板:229番) 1/31
>79 無期限
>144 無期限 問題文>148

697:デフォルトの名無しさん
08/01/28 01:05:26
オレも早くせっくるしたい、by20歳

698:デフォルトの名無しさん
08/01/28 02:54:34
>>614 (>>696 1行目)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

699:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/28 03:18:16
>>699
見難い。
出直して来い。

701:673
08/01/28 07:23:48
<<694ありがとうございます!参考にします。

702:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
08/01/28 13:00:19
1] 授業単元:プログラミング演習Ⅰ
[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:デフォルトの名無しさん
08/01/28 13:20:35
>>705
wa = keisan.a + keisan.b
sa = keisan.a - keisan.b

707:デフォルトの名無しさん
08/01/28 13:27:12
>>705
scanfの中も違う
scanf( "%d %d", &keisan.a, &keisan.b); /* 入力 */

708:デフォルトの名無しさん
08/01/28 13:39:04
合ってるんじゃね?

709:デフォルトの名無しさん
08/01/28 13:44:44
問題は、出題の意図がどうであったか、だな。

710: ◆HXgzCCSIaM
08/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:デフォルトの名無しさん
08/01/28 14:12:14
>>710
while(m != n){
    if(m > n)
        m = m - n;
    else
        n = n - m;
}

712:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/28 14:17:37
lcmやgcdの問題が多すぎ。

714:デフォルトの名無しさん
08/01/28 15:16:02
柴田望洋の本を使ってる授業多いNE。

715: ◆HXgzCCSIaM
08/01/28 15:17:33
>711
ありがとうございます!助かりました。

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



716:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/28 17:27:31
[1]プログラミング演習Ⅱ
[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:デフォルトの名無しさん
08/01/28 17:32:35
期限切れ

720: ◆LnG.2EAY0A
08/01/28 18:21:22
以前質問させてもらった>>677です。
期限を01月28日と書きましたが、宿題の期限が伸びたので
図々しい様ですが、改めてお願いさせて頂いても良いでしょうか?
内容は変わりありません。

[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を
ファイル操作を使って一括設定できるようにする。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:VC 6
 [3.3] 言語:C
[4] 期限:2008年02月05日まで
[5] その他の制限:ファイル操作を習う所まで授業で進みました。
自分でも試行錯誤してみたのですが中々うまく行かず・・・
皆さんの知恵をお借りしたいと思います、よろしくおねがいします。


721:デフォルトの名無しさん
08/01/28 18:35:20
>>720
問題文の意図が明瞭でない。それだと答えようがない

722: ◆LnG.2EAY0A
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/28 21:08:06
[1]通信工学II
[2]問題文(含コード&リンク):
  次の文字送受信プログラム(IPv4専用)を、IPv4/v6デュアルスタックのプログラムに改良せよ。
  クライアント:URLリンク(kansai2channeler.hp.infoseek.co.jp)
  サーバー:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
 [3.1] OS:Windows XP/Vista
 [3.2] コンパイラ名:Visual C++ 2005 SP1
 [3.3] 言語:C++
[4]期限:1月31日 16:00
[5]その他の制限:特になし

丸投げですがよろしくお願いいたします。

725:デフォルトの名無しさん
08/01/28 21:15:27
なんかデカいのがきたな。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch