トップページ⇒tech
1001コメント424KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/01/05(土) 15:48:48
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

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

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

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

【前スレ】
C/C++の宿題を片付けます 101代目
http://pc11.2ch.net/test/read.cgi/tech/1197132472/
0153デフォルトの名無しさん2008/01/07(月) 11:36:01
まぁ期限まで日数があるのは待つべし
期限が早いものからガンガル
0154デフォルトの名無しさん2008/01/07(月) 11:36:37
ごめんなさい、どうしてもできなくて悩んでたんですが今できましたorz
一応張ってみます
#include <stdio.h>

int main()
{
int a, b;

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

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

int main() {

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

struct point{
double x;
double y;
};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

#include<stdio.h>
#define DEBUG

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

char a[100]={0};

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

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

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


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

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

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

scanf("%s", filename);

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

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

fclose(fp);

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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


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

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

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

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

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

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

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

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

return e;
}
int main()
{
printf("区切りの数は5で%lf \n",Simpson(5));
printf("区切りの数は10で%lf \n",Simpson(10));
printf("区切りの数は20で%lf \n",Simpson(20));
printf("区切りの数は40で%lf \n",Simpson(40));
printf("区切りの数は100で%lf \n",Simpson(100));
printf("区切りの数は1000で%lf \n",Simpson(1000));
printf("区切りの数は5000で%lf \n",Simpson(5000));
return 0;
}
0252デフォルトの名無しさん2008/01/07(月) 23:15:18
>・プログラムの説明をプログラム中に記載すること。
これは欲張りすぎだろう・・・
■ このスレッドは過去ログ倉庫に格納されています