[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/05 09:03 / Filesize : 337 KB / Number-of Response : 864
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2008/10/30(木) 07:49:39 BE:113605834-PLT(24065)]
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

前スレ
C/C++の宿題を片付けます 116代目
pc11.2ch.net/test/read.cgi/tech/1222813731/

610 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:18:17 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8006.txt
@2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい.
以下のプログラムを基にして完成せよ.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,原点からの距離を求める関数 length_vector_pを作成する.
ただし,「構造体ポインタ変数」を利用すること.
構造体 Point型を使用して,平面の点を表示する関数 print_v_pを作成する.
ただし,「構造体ポインタ変数」を利用すること.
A2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい.
以下のプログラムを基にして完成せよ.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,平面の点を表示する関数 print_v_p2を作成する.
ただし,「構造体ポインタ変数」を利用すること.
構造体 Point型を使用して,平面の点を代入する関数 input_point_pを作成する.
ただし,「構造体ポインタ変数」を利用すること.
構造体ポインタ変数に対して,動的にメモリ領域を確保する. malloc を利用する.
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: visual stadio2008
 [3.3] 言語: C
[4] 期限: 2008年11月13日


611 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:21:25 ]
>>607
前者でお願いします

612 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:25:52 ]
>>600
とりあえず(1)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8007.txt

613 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:52:31 ]
>>608
n 個の正数は a[] に入力されているとして。
#include <stdio.h>

int gcd(int x, int y)
{
int r;
if (x < y) {
int t = x; x = y; y = t;
}
do {
r = x % y; x = y; y = r;
} while (r != 0);
return x;
}

int main(int argc, char *argv[])
{
int a[] = { 121, 11, 14641, 1331};
int n = 4;
int i, g;

g = a[0];
printf("gcd(%d", a[0]);
for (i = 1; i < n; i++) {
printf(", %d", a[i]);
g = gcd(g, a[i]);
}
printf(") = %d\n", g);
return 0;
}

614 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:57:28 ]
[1] 授業単元: 自作関数
[2] 問題文(含コード&リンク):

5つの数値を入力し(繰り返し入力)し、最大値を表示する。

[3] 環境
 [3.1] OS: Windowsvista
 [3.2] VC 6.0等
 [3.3] 言語: C

[4] 期限: 今日までなのでよろしくお願いします

[5] その他の制限:繰り返し文しかならってないです。

615 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:59:13 ]
>>614

>>614

#include<stdio.h>
int sori(int x, int y)
{
if( x>=y ) return(x);
return(y);
}
int main(void)
{ int a,b,c,d,e,max;
while ( scanf("%d%d%d%d%d",&a,&b,&c,&d,&e)==5) {
max=a;
max=sori(max,b);
max=b;
max=sori(max,c);
max=c;
max=sori(max,d);
max=d;
max=sori(max,e);
printf("%d %d %d %d %d",a,b,c,d,e);
printf("max=%d\n",max);
}
return (0);
}


616 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:00:00 ]
>>614
>>615
エラーメッセージ

エラー E2209 kadai6-1.cpp 1: インクルードファイル 'stdio.h' をオープンできない
エラー E2268 kadai6-1.cpp 9: 未定義の関数 'scanf' を呼び出した(関数 main() )
エラー E2268 kadai6-1.cpp 18: 未定義の関数 'printf' を呼び出した(関数 main()


上記のようなプログラムを自分で作ったのですが、
上に記したようなエラーメッセージが表示されてしまいました。
これ以上わかりません。どうかよろしくお願いします。




617 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:09:48 ]
>>616
Linux  だとちゃんとコンパイルできるから、ワークスペース作ってないとかの問題じゃないの?

以下の行を削除すれば、一応目的は達成できるぞ
max=b;
max=c;
max=d;

618 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:17:17 ]
>>617
試してみます。どうもありがとうございました。



619 名前:デフォルトの名無しさん [2008/11/11(火) 22:23:31 ]
コンパイルしたら
「配列または、ポインタでない変数に添字が使われました」って怒られたんですが
どう直せばいいでしょうか?


620 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:24:07 ]
あきらめてください


621 名前:デフォルトの名無しさん [2008/11/11(火) 22:25:41 ]
配列またはポインタでない変数に、添え字を使わないようにすればいい

622 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:28:28 ]
まずcppじゃなくてcにするとか


623 名前:619 [2008/11/11(火) 22:29:25 ]
>>621
ありがとう!

624 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:30:24 ]
てかsoriって関数名なんて意味?ソリ?サンタが乗ってるヤツ?

625 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:33:02 ]
飲み過ぎ食べ過ぎに、ソリマックス。

626 名前:604 mailto:sage [2008/11/11(火) 22:36:08 ]
>>604,605
素早い対応ありがとうございます。
すいません、問題文のとおりプログラムは1つだけなんです。
つまり、freqency.cを拡張して、横に伸びるグラフと縦に伸びるグラフを
同時に表示したいのです・・・。
605の方を別に作って試してみましたが、縦のグラフは表示できました。
(上の方で1つずつ空白分がずれるのは仕様でしょうか?)

604は、元のプログラムの出力部の変更のみで表示できました。
が、605と一緒にしなければならないので、どうにか605の大文字と小文字の処理を604と
同じくしてできないかと困っています。
よろしければ検討をお願いしたいです。

627 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:38:57 ]
>>626
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8008.txt
違う人だけど。

628 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:42:40 ]
>>626
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8009.txt



629 名前:デフォルトの名無しさん [2008/11/11(火) 22:51:20 ]
soriなんて名前付けてsorry・・・。

630 名前:お願いします [2008/11/11(火) 23:23:42 ]
[1] 授業単元: アルゴリズムデータ構造U
[2] 問題文(含コード&リンク):
複素数a,bを標準入力から入力し、それぞれの絶対値を求め、2つの複素数の和、差、積、商を求め
標準出力に出力するプログラムを作りたい。これらを求める関数として、複素数の絶対値を求める関数
および和、差、積、商を求める関数が
double cabs(struct mycomplex)
struct mycomplex wa(struct mycomplex,struct mycomplex)
struct mycomplex sa(struct mycomplex,struct mycomplex)
struct mycomplex seki(struct mycomplex,struct mycomplex)
struct mycomplex shou(struct mycomplex,struct mycomplex)
として作ることにした。これらの絶対値、和、差、積と商を求める関数を解答せよ
なおこの構造体は予めCの処理系には用意されているが、それを利用せず独立に考えよ。
[3] 環境
 [3.1] OS: Windows
 [3.2]
 [3.3] 言語: C

[4] 期限: 11月16日まで

[5] その他の制限:構造体の問題です 問題文に沿ってお願いします。

631 名前:604,626 mailto:sage [2008/11/11(火) 23:23:58 ]
>>627
一部重複箇所(横グラフが2つ出ました)がありましたので、それを修正した上で
実行したところ、結果が得られました。
>>628
こちらも正しい結果が得られました。

627さんのプログラムは使われた文字のみの出力、
628さんのプログラムは全てのアルファベットについての出力が確認できました。
もう一度しっかり目を通した上で使わせていただきたいと思います。

レスからわずか10分足らずでの迅速な対応、本当にありがとうございます。

632 名前:お願いします [2008/11/11(火) 23:25:43 ]
>>630
#include<stdio.h>
#include<math.h>
struct mycomplex {double re;
double im;};
int main()
{struct mycomplex a,b;
struct mycomplex wa(struct mycomplex,struct mycomplex);
struct mycomplex sa(struct mycomplex,struct mycomplex);
struct mycomplex seki(struct mycomplex,struct mycomplex);
struct mycomplex shou(struct mycomplex,struct mycomplex);
double cabs(struct mycomplex);
struct mycomplex cinput(void);
void cprint(struct mycomplex);
a=cinput(); b=cinput();
cprint(wa(a,b)); cprint(sa(a,b)); cprint(seki(a,b)); cprint(shou(a,b));
printf("絶対値 cabs(a)=%f\n",carbs(a)); printf("絶対値 cabs(b)=%f\n",cabs(b));}
struct mycomplex cinput(void)
{struct mycomplex z;
scanf("%f %f",&z.re,&z.im);
return z;}
void cprint(struct mycomplex z)
{ printf("複素数 = %f + i*%f\n",z.re,z.im);}

633 名前:大輔 [2008/11/12(水) 00:18:51 ]
[1] 授業単元:繰り返し処理(for文・while文)
[2] 問題文(含コード&リンク):下に示すような九九の表を表示するプログラムを作成しなさい
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C++
[4] 期限:2008年11月14日15:00まで
[5] その他の制限:printf,scanf,if,switch,程度の関数しか習っていません。for文の入れ子(二重のforループ)を使う。フォーマットをそろえるには、書式指定文字列(変換仕様)を利用。

   1 2 3 4 5 6 7 8 9
 1 1 2 3 4 5 6 7 8 9
 2 2 4 6 8 10 12 14 16 18
 3 3 6 9 12 15 18 21 24 27
 4 4 8 12 16 20 24 28 32 36
 5 5 10 15 20 25 30 35 40 45
 6 6 12 18 24 30 36 42 48 54
 7 7 14 21 28 35 42 49 56 63
 8 8 16 24 32 40 48 56 64 72
 9 9 18 27 36 45 54 63 72 81

634 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:26:39 ]
>>633
#include <stdio.h>
main()
{
int i, j;
for(i = 0; i < 10; i++) {
for(j = 0; j < 10; j++)
if (i == 0)
if (j == 0)
printf(" ");
else
printf("%2d ", j);
else if (j == 0)
printf("%d ", i);
else
printf("%2d ", i * j);
printf("\n");
}
}


635 名前:デフォルトの名無しさん [2008/11/12(水) 00:35:49 ]
#include <stdio.h>

void main(){
 printf(" ");
 for(i=0; i<10; i++){
  printf(" %2d", i);
 }
 printf("\n");
 for(i=1; i<10; i++){
  printf("%d", i);
  for(j=0; j<10; j++){
   printf(" %2d", i*j)
  }
  printf("\n");
 }
}

636 名前:634 mailto:sage [2008/11/12(水) 00:37:47 ]
>>635
こっちのほうがすっきりしてるね

637 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:39:11 ]
↑jも1からだった

void main(){
 printf(" ");
 for(i=1; i<10; i++) printf(" %2d", i);
 printf("\n");
 for(i=1; i<10; i++){
  printf("%d", i);
  for(j=1; j<10; j++) printf(" %2d", i*j)
  printf("\n");
 }
}

638 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:41:40 ]
%2dじゃ空白が入らないんじゃないの?



639 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:47:29 ]
[1] 授業単元:プログラミング言語
[2] 改行を含む文字を受け取るにはどうすればいいんでしょうか?getを使えばスペースを含む文字を変数に書き込めるのは分かったんですが、改行を含む文字を書き込む方法が分かりません。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: ごめんよく分からない。でも使っているのはMicrosoftからダウンロードしたVisual C++
 [3.3] 言語: C++
[4] 期限2008/11/15
[5] その他の制限: 無し

640 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:48:35 ]
>>639
getsのこといってんだろうか・・・・・・・・
fgetsを使えばいんじゃね?

641 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 01:23:17 ]
[1] 授業単元:ハッシュ法
[2] 問題文(含コード&リンク):指定したファイルを読み込み開放番地法でのハッシュ表を生成し、
  (i) 線形探査法
  (ii) 二重分散法
に基づいた探索関数を作成せよ。
(i),(ii)の探索関数を用いて任意の値
  (a) 表中に存在するキー      100個
  (b) 表中に存在しないキー     100個
について連続で探索し、総探査回数、総実行時間を記録する。(一部略)

[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 11月12日21時迄


www1.axfc.net/uploader/He/so/157773 (pass: jik1)
↑中身は問題原文、指定されたファイル、自分で作成したプログラムソースです
対象ファイルの中身が文字列なので探索にstrcmpを用いようとしたのですが、実行時にエラーが出てしまってどうすればいいかわからない状態です
よろしくお願いします

642 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 01:29:27 ]
[1] 授業単元:アルゴリズム
[2] 問題文:5人の学生の3教科の点数(0~100点)をランダムに表示させる。
      それぞれの合計点を計算し、合計点の高い順に順位をつける。
[3] 環境
 [3.1] WindowsXP
 [3.2] gcc 3.4
 [3.3] C
[4] 期限:なし


どなたかおねがいします…orz

643 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 02:06:34 ]
>>642
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8011.c

644 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 02:08:18 ]
変数tmpはいらないから消してくれ

645 名前:デフォルトの名無しさん [2008/11/12(水) 02:29:43 ]
>>613
ありがとうございます
聞きたいんですが、a[]にn個の整数が入ってるとしてって所なんですけど、どうやって定義したんですか?

646 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 04:48:09 ]
>>645
int a[] = { 121, 11, 14641, 1331};

647 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 05:36:33 ]
1] 授業単元:プログラミング演習1 C言語の基礎
[2] 問題文(含コード&リンク):
 S=1+2+・・・n<100
を満たす最大の自然数nとSを出力するプログラムを作成してください。
for文とwhile文を用いたのをそれぞれ作成すること。
 考え方:ループを用いて1から順に自然数を足して行き、
和が100を段階で計算を打ち切るようにプログラムする

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc バージョンは最新
 [3.3] 言語: C
[4] 期限: 今日
[5] その他の制限:変数とハローワールドとscanf、条件文しかならってないはず

期限が近い・・・よろしくお願いします

648 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 06:06:08 ]
>>647
#include <stdio.h>

main()
{
int S = 0, n;
for(n = 1; S + n < 100; n++){
S += n;
}
n--; // 足しすぎたので 1 引く
printf("n:%d S:%d\n", n, S);
S = 0;
n = 1;
while(S + n < 100){
S += n;
n++;
}
n--;
printf("n:%d S:%d\n", n, S);
}




649 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 06:14:44 ]
>>648
なるほど・・・条件にS<100だから105しかでてこなかったのか俺・・・。
ありがとうございまいした、勉強になりました


650 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 08:00:09 ]
[1] 授業単元:画像情報工学
[2] 問題文(含コード&リンク):
ブレゼンハムのアルゴリズムを用いて、ウインドウ内に線分を描画するプログラムを作成しなさい。
仕様1(マウスの左ボタンと右ボタンを使用する。候補線の表示は無し。)
マウスの左ボタンクリック    線分の始点座標の指定
マウスの右ボタンクリック    線分の終点座標の指定及び線分の描画

[3] 環境
 [3.1] OS:vista
 [3.2] コンパイラ名とバージョン:VC++ 2008
 [3.3] 言語: C
[4] 期限: 2008年11月12日まで
[5] その他の制限: ライブラリの点を描画するAPI関数を使って線分を引くこと。直線を引くAPI関数を使ってはならない。

Cは簡単なものしかやったことなくて全く分かりません
誰か助けてくださいお願いします……

651 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 08:16:50 ]
誰か610お願いします

652 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 08:29:43 ]
>>610
@
/* (x,y)-平面の点を座標で表す構造体 */
struct Point {
double x;
double y;
};
/* 原点からの長さを求める関数 */
double length_vector_p(struct Point *p)
{
return sqrt(p->x*p->x + p->y*p->y);
}
/* 平面の点を表示する関数 */
void print_v_p(struct Point *p)
{
printf("%f %f\n", p->x, p->y);
}
int main(void)
{
struct Point p;
printf("Input Point X: ");
scanf("%lf", &p.x);
printf("Input Point Y: ");
scanf("%lf", &p.y);
print_v_p(&p); /* print_v_pを使用して,座標の表示 */
printf("The length of vector: %f\n", length_vector_p(&p) );
return 0;
}


653 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 08:32:46 ]
>>610 A
struct Point {
double x;
double y;
};
void input_point_p(struct Point *p){
printf("X:");
scanf("%lf", &p->x);
printf("Y:");
scanf("%lf", &p->y);
}
void print_v_p2(struct Point *p){
printf("%f %f\n", p->x, p->y);
}
int main(void){
struct Point *p; /* 構造体ポインタ変数 p */
int num, i;
printf("Input number of vector: ");
scanf("%d", &num);
for (i=0; i< num; i++) {
p = malloc(sizeof(struct Point)); /* malloc を使って領域確保 */
if( p == NULL ) {
printf( "memory cannot alloc!\n" );
exit( 1 );
}
input_point_p(p); /* 関数を使って要素を代入 */
print_v_p2(p); /* 関数を使って要素の表示 */
free(p); /* メモリの解放 */
}
return 0;
}

654 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 08:38:01 ]
>650
期限は12日じゃなくて19日まででした……

655 名前:デフォルトの名無しさん [2008/11/12(水) 10:13:51 ]
>>646
ありがとうございます!

656 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 11:27:53 ]
>>650
ライブラリって何の?
専用のをつかってるならそれもうp

657 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 13:21:11 ]
期限が1日伸びたので>>491をお願いできませんか?

658 名前:608 mailto:sage [2008/11/12(水) 13:21:57 ]
ちょっと聞きたいんですけど、学校から>>608に関係した問題が追加で出されたんだけど、それを解いてもらえることってできますか?



659 名前:デフォルトの名無しさん [2008/11/12(水) 13:24:12 ]
[1] 授業単元 プログラミング基礎
[2] 問題文(含コード&リンク)
  マイナスの値が入力されるまで繰り返し整数値を入力し最大、最小を求める。
  初期化で最大値には最小の値を、最小値には最大の値を設定しておく。
  繰り返しにはwhile文を使用する。
[3] 環境
[3.1] OS:Windows XP 
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年 11月14日 18時
[5] その他の制限: 特になし

  よろしくお願いします




660 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 13:40:57 ]
>>656
渡されたプリントに書いてあったまんまなんで、自分でも良くわかりません……
授業ではC言語はおろかPCにすら触ってません

661 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 13:59:59 ]
>>660
単に授業を聞いてなかったとかサボってたとかじゃなくて?
何の前説もなしにそのプリントをぽんと渡されただけなら行く学校を間違えたな
たぶん、説明はあったのに理解できなくてスルーしただけだろうけど

662 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 14:05:51 ]
>>659
#include <stdio.h>

int main (void)
{
int n, min=32767, max=0;

while(1){
scanf("%d", &n);
if(n<0)
break;
if(n > max)
max = n;
if(n < min)
min = n;
}

printf("min = %d, max = %d\n", min, max);

return 0;
}

663 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 14:11:44 ]
>>657
' ' とか '■' とか '○' マルチバイト文字を扱うのが面倒
' ' とか '*' とか 'o' でよかったらそんなにかからないけど

664 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 14:47:40 ]
>>659
>>662 + 初期値可変入力

#include <stdio.h>
int main( void )
{
int i, n;
int imin, imax;
int nmin, nmax;
printf( "最小値の最大を入力してください>" );
scanf( "%d" , &imin ); /* 数値の入力 */
printf( "最大値の最小を入力してください>" );
scanf( "%d" , &imax ); /* 数値の入力 */

nmin=imin;
nmax=imax;
while (1) {
printf( "数値を入力してください>" );
scanf( "%d" , &n ); /* 数値の入力 */

if ( n < 0 ) /* 終了 */
{ printf( "終了\n" );break;}
if ( n < imin ) /* 最小値 */
{ nmin= n;}
if ( imax < n ) /* 最大値 */
{ nmax= n;}
}
printf(" 最小:%d\n", nmin);
printf(" 最大:%d\n", nmax);
}

665 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 14:54:11 ]
>>661
授業が元々コンピュータでの画像の描画方法についてなんです
今までプログラムなんて一切なしでアルゴリズム?みたなのを学んでて
いきなりレポートの概要渡されました
授業は毎回出てますし、ノートも取ってます
それに居眠りとか出来る状況じゃないので
説明はあったんですが、それまでの知識じゃ全く理解できませんでした

666 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 15:03:29 ]
どなたか>>641お願いできないでしょうか?
ヒントだけとかでもいいので・・・orz

667 名前:デフォルトの名無しさん [2008/11/12(水) 15:39:48 ]
>>646
調べたい整数の数を
を選べるようにするにはどうすればいいの?

668 名前:639 mailto:sage [2008/11/12(水) 15:46:44 ]
>>640
あ、すいません。
getsの間違いでした。

fgets…使ってみたんですが、エラーが出ました。
今作っているソースは
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main(){
char filename[20], time[100], data[1000000];
FILE *fp;
cout<<"CPUtime?"<<endl;
gets(time);
cout<<"data?"<<endl;
gets(data);
fp = fopen("file.txt","w");
fprintf(fp,"%s\n",time);
fprintf(fp,"%s",data);
fclose(fp);
}
で、本当は「file.txt」ってなってるファイル名を、キーボードから受け取るようにして(filenameとは宣言したものの…)
dataに、
「 0 1.99400005840289e-007 -1.99400005840289e-007 9.89100023673223e-014 2.63400000595493e-012
1e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89000006022811e-014 2.63400000595493e-012
2e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89100023673223e-014 2.63400000595493e-012
4.000015229e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89299991211411e-014 2.63400000595493e-012
…」みたいな改行を含んだ文字をコピーして実行画面(コマンドプロンプト)に貼り付けてテキストファイルを作りたいんですがよく分かりません。



669 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 15:48:54 ]
>>667
調べたい整数をユーザに入力させたい、ってとこか?
それならこんなかんじ。

int main(int argc, char *argv[])
{
int *a;
int n, i, g;

printf("調べたい整数の数は?: ");
scanf("%d", &n);
a = malloc(n * sizeof(int));
for (i = 0; i < n; i++) {
printf("%d 個目の整数を入力してください: ", i+1);
scanf("%d", &a[i]);
}

g = a[0];
--- >>613 と同様 --
free(a);
return 0;
}

670 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:01:12 ]
>>612
解答あり

>>600の(2)できる方おねがいします

671 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:10:20 ]
>>663
それでお願いできますか?

672 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:14:23 ]
>>665
理解できなかったのならなぜ質問しなかったのだろう?
その感じだと実際に動作するコードを書くのではなく
アルゴリズムや疑似コードをレポートにして提出しろってことなのか?

673 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:19:45 ]
>>668
余計なお世話だけど、 time って関数があるから time という変数名は避けたほうがいいかも。

fp = fopen("file.txt", "w");
fprintf(fp, "%s\n", time);
while (fgets(data, sizeof(data), stdin) != NULL) {
fprintf(fp, "%s", data);
}
fclose(fp);

とすれば、Ctrl-D を入力するまで読み取り続けます

674 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:21:11 ]
>>671
よく考えたら、表示のときだけマルチバイト文字使って、内部データは
普通の int とか char とか好きなので行けるわ
もう一点確認だけど、どっちからどっちに球が飛んでいけばいいの?

675 名前:デフォルトの名無しさん [2008/11/12(水) 16:22:19 ]
生活安全課のボツボツキモデブ●創価●警官名言集www
「俺の脅迫のおかげで家から出れなくした。俺の手柄だ!」
「昼間は市役所のパトロール隊を使う。夜は消防団を使う。」
「●指導●じゃない、パトロールを●お願い●してるだけだ。人権侵害行為は俺の責任じゃない!」

熊本隆談www

676 名前:デフォルトの名無しさん [2008/11/12(水) 16:23:34 ]
>>669

: In function ‘main’:
:22: 警告: incompatible implicit declaration of built-in function ‘malloc’
:24:8: 警告: 不明なエスケープシーケンス '\$'


だそうです

677 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:29:14 ]
>>676
#include <stdlib.h> を追加。
それから
a = (int *)malloc(n * sizeof(int));
と、キャストしたほうがいいかも。
下のは知らん。日本語の文字列が正しく読まれてないのかもしれない。
適当に文字列を半角英数字のみにしてみて。

678 名前:デフォルトの名無しさん [2008/11/12(水) 16:36:38 ]
テスト中orz
1.から100までの整数で3の倍数の整数の合計を求めるプログラムをFor文を利用して作ってください。
2.1の問題をForの変わりにWhile文で頼みます。

余裕があれば、
3.タクシー料金:最初の2kmまで650円 以後400mごとに90円としたとき、乗車距離(km)を入力し、
料金求める。
おねがいします。



679 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:41:59 ]
>>678
テストぐらい自分でやれ!

680 名前:デフォルトの名無しさん [2008/11/12(水) 16:42:11 ]
>>816
/*1.*/
#include <stdio.h>
int main(void){
int i, sum = 0;
for(i = 1; i <= 100; i++){
if (i % 3 == 0) sum += i;
}
printf("合計は %d\n", sum);
}
/*2.*/
#include <stdio.h>
int main(void){
int i = 1, sum = 0;
while(i <= 100){
if (i % 3 == 0) sum += i;
i++;
}
printf("合計は %d\n", sum);
}
/*3.*/
#include <stdio.h>
int main(void){
double kyori;
int ryokin;
printf("乗車距離(km): ");
scanf("%lf", &kyori);
if (kyori < 2) ryokin = 650;
else ryokin = 650 + (kyori / 400) * 90;
printf("料金は %d円です。\n", ryokin);
}

681 名前:639 mailto:sage [2008/11/12(水) 16:43:13 ]
>>673
ありがとう!ありがとう!改行文字も出来ました。
でもCtrl-Dを入力せずに、貼り付けた文字の最後まで行ったら自動で終了するのは出来ないんでしょうか?
>>668に書いた数値データ、何百行もあるのですが、最後の行まで読み込んだら終了させたいです。

682 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:59:53 ]
>>667
出来ました!
マジでありがとうございます

683 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 17:02:22 ]
>>681
何をもって読み込みを終了するかが決められないからムリかな。
>>673 のコードでは、EOF (Ctrl-D) をもって終了としてるから、たとえば
echo "cputime\ndata1\ndata2" | ./a.out
などとすることは可能。

しかし一体何をしたいんだ?
その数値データはテキストファイルに保存されてるの?
それなら CPUtime だけを入力して、数値データはそのテキストファイルから読み取ればいいわけだけど。

684 名前:デフォルトの名無しさん [2008/11/12(水) 17:09:50 ]
>>680
ラスト10min
ありがとう。たすかりました。

685 名前:639 mailto:sage [2008/11/12(水) 17:14:19 ]
>>683
<<しかし一体何をしたいんだ?
これ、大学の数値実験で出た何百行もの値(SPICEっていう電気回路のCADツールを使って出た値)で、この数値をコピーして、gnuplotでグラフを書きたいんだ。
@SPICEからデータ(数値)をコピーして取り出す。
Aテキストファイルに貼り付ける。
B作成したテキストファイルからgnuplotでグラフを描く。
この一連の作業をプログラムで作りたかったんだ…。
一応数値データも要るので、gnuplotに直接書き込んで終了という訳にもいかず、テキストファイルも残したいんです。

686 名前:デフォルトの名無しさん [2008/11/12(水) 17:29:19 ]
すみませんがどなたか>>584をやって頂けないでしょうか頂けないでしょうか。
>>586さんのいうとおりisalphaとtoupperを使えばいいのはわかっているんですが、
どうやってそれをソースに書きかえればいいのかまったくわからないので困っています。
今日が締切なのでお願いします。

687 名前:デフォルトの名無しさん mailto:587 [2008/11/12(水) 17:44:51 ]
>>587です
亀ですが>>592の方ありがとうございました
嫌いと言いながらやってくれる優しさに惚れた
また明日結果報告させて頂きます

688 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 17:46:37 ]
宿題でお聞きしたいのですが…問題は以下のようなものです。

「直行座標系X-Yにより定められている平面上で、0 < X,Y < 1の正方領域をX,Y方向にそれぞれ(n1 - 1)個、(n2 - 1)個に等分割して、その座標を出力する。」

自分で、以下のようなプログラムを作ってみました。

#include<stdio.h>
#define n1 7
#define n2 7

int main(){
double X[n1], Y[n2];
int i, j;

for(i = 0; i < n1; i++){
*(X + i) = ((1 / (n1 - 1)) * (double)i);
}
for(i = 0; i < n2; i++){
*(Y + i) = ((1 / (n2 - 1)) * (double)j);
}

for(i = 0; i < n1; i++){
for(j = 0; j < n2; j++){
printf("(%lf, %lf) ", *(X + i), *(Y + j));
}
printf("\n");
}
}

すると、(0.0000000, 0.0000000)の座標で埋め尽くされてしまいました…
玄人の皆様、お助け下さい…



689 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 17:53:04 ]
>>688
double にキャストする位置がおかしい。

- *(X + i) = ((1 / (n1 - 1)) * (double)i);
+ *(X + i) = (1.0 / (n1 - 1)) * i;

Y も同様。

690 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 17:53:46 ]
>>688
1/(n1 -1) ← 分母分子ともに整数だと、整数の除算が行われるから
1.0/(n1 - 1) とか 1/(n1 - 1.0) とか、どっか double にしないと暗黙の型変換は起こらない

あと

*(Y + i) = ((1 / (n2 - 1)) * (double)j); ← i でループ回してるんだkら (double)j じゃなくて i だな

691 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 18:08:49 ]
>>689,>>690
どうもありがとうございます、そういうことなのですか(^^;
皆さんに教わらなければ、多分あと2日くらいは悩んでたと思います。

また質問させて頂く時もあるかと思いますので、その時はまたよろしくお願いします。

692 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 19:05:39 ]
[1] 授業単元 プログラミング演習
[2] 問題文: 10個のデータをキーボードから適当に入力し(ランダムなデータ),1次元配列に格納する.
        バブルソート法により,小さい順に並べ替えるプログラムを作成しなさい.
        結果をソートの経過を全てprintfで表示すること.
        
[3] 環境
[3.1] OS:Windows Vista 
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年 11月19日 13時
[5] その他の制限: 関数やポインタはまだ習ってないです。よろしくお願いします。


693 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:29:20 ]
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
0度から360度までのSin(x)の値を文字コード*を使ってグラフを表示するプログラムをC言語で作成せよ。
実行結果の例をアップローダーに貼り付けました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8012.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 2008年11月13日
[5] その他の制限: ファイルの入出力まで習いました。

よろしくお願いします。

694 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:30:58 ]
>>491
まだ間に合うのかな
風向きとか、スキルとかまだ実装してないけど、イメージとしてこんな感じでよいの?
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8013.txt

695 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:35:13 ]
>>674
特に指定はされていませんので作りやすいもので結構です

696 名前:694 mailto:sage [2008/11/12(水) 20:56:48 ]
>>695
ちょっと改造して、いちおう2個のパラメータとるようにしてみたけど、
やっつけのきたねーコードだw
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8014.txt


697 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 21:24:45 ]
>>696
はい、大丈夫です
ありがとうございます!

698 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 21:48:47 ]
[1] 応用プログラミング演習
[2] wavファイル(音楽ファイル)を読み込んでFFTを施し、バンドパスフィルタをかけてIFFTし、そのwavファイルを出力せよ。(バンドパスの領域は任意)
[3] 環境
 [3.1] OS: Windows
 [3.2] 開発環境:VC++ 6.0
 [3.3] 言語:C言語
[4]今月中
[5]制限なし

ただの授業なのですが、研究で使うレベルのプログラムなのでかなり難しいです↓
ただ原理としては簡単らしいのですが、wavを扱ったことがないのでチンプンカンプンです。
1週間ずっと考え続けても無理でした(ノД`)
どなたか手伝ってくれたら嬉しいです。



699 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 21:52:42 ]
>>698
>wavファイル(音楽ファイル)を読み込んでFFTを施し、バンドパスフィルタをかけてIFFTし、そのwavファイルを出力せよ。(バンドパスの領域は任意)

これだけで作れたらすごいわ

700 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 22:21:42 ]
まず、ウインドウ関数を決めないとね。

701 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:00:30 ]
>>600
(2)ですけどリスト構造に格納する際に、次数の大きい順にしておいて先頭から順に出力ということはなんとなく分かったのですがそこから進めない・・・

702 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:25:19 ]
>>698
どのあたりまでライブラリの使用を認められてるか書け
wavファイルの読み取りからやらされるのか?

703 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:38:30 ]
[1]情報処理 C
[2]組み合わせn Cm を計算する関数を作成しなさい.main関数にてキーボードから2つ?然数n,mを
読み込み後,作成した関数を呼び出しその動作を確認しなさい.
但し,以下の条件を満たすものを作成すること
@2つの?然数は1回のscanfで読み込むこと.(データ区切りはスペース)
Ascanfはmain関数側に実装すること.
B入力はn mの並びにすること.
C作成した関数側で「n>=mを満?しない時」,「n,mが?然数ではないとき」は n Cm =0とな
るようにしなさい.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年 11月中
[5] その他の制限:

Cのいい作り方を思いつきません…


704 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:45:05 ]
4だけ?
if (n < m || n < 0 || m < 0) return 0;
ってするだけじゃないのか?
(自然数に0を含む感じになってます)



705 名前:デフォルトの名無しさん [2008/11/13(木) 00:24:46 ]
                 ∴
         ∵  ∴  ∴∵∴    ∴
     ∴∵∴∵∴∵∴∵∴∵∴∵∴∴∵
       ∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
   ∴∵∴∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴
      ∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵/ ⌒ヽ∴∵∴∵∴
    ∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵| |   |∴∵∴∵
  ∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∪ / ノ∴∵∴∵∴∵
..  ∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵| ||∵∴∵∴∵
.∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∪∪∴∵∴∵∴∵
.∵∴∵∴∵∴∵∴∵:(・)∴∴.(・)∵∴∵∴∵∴∵∴∵∴∵∴∵∴
∵∴∵∴∵∴∵∴∵∴/ ○\∵∴∵∴∵∴∵∴∵∴∵∴
..∵∴∵∴∵∴∵∴∵/三 | 三ヽ∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
. ∴∵∴∵∴∵∴∵ | __|__ │∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵     tanasinn
.∵∴∵∴∵∴∵∴∵|  ===  │∵∴∵∴∵∴∵∴∵∴∵∴
.∵∴∵∴∵∴∵∴∵\___/∵∴∵∴∵∴∵∴∵∴∵∴
..∴∴∵/ ̄.. \∴∵∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴
∴∵∴/    ,. i ∵∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
∴∵∴|    /.| |.∵∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
  ∵∴|   | :| |.∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴
    ∴| |  |::| |.∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
    ∴| | |∵U∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴
      | | |∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
     / / / ∵∴∵∴∵∴∵∴∵∴∵ ∵
    / / /       ∴∵∴∵∴ ∴
   .しし’          ∵

706 名前:639 mailto:sage [2008/11/13(木) 01:23:09 ]
>>639
+ >>668 >>681 >>685
なんだけど、レスが無いので分からないorスルーになっているということだとは思いますが((´;ω;`))
最後に一つだけ質問お願いします。

>>673
の「Ctrl-Dを入力するまで読み取り続けます」なんですけど、「Ctrl+d(コントロールキー+d)」と入力しても「^d」と画面に出力されるだけで書き込みが終了しません。
「コントロール + D(大文字)」、「コントロール + マイナス + D」などなどあり得なさそうな入力も試しましたが、終了しませんでした。
僕は一体どうすれば?
アホな質問だったらごめんよぉ(´・ω・`)

707 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 01:24:48 ]
>>706
ctrl + z
にしてみろ

708 名前:さそり [2008/11/13(木) 01:30:20 ]
[1] 授業単元:ファイル読み込み
[2] ファイルを読み込んで.hファイルに書き込むのが狙いなんですが
  sample.txtテキストファイルの中身が
  kina="mikan"+"momo"
shika="hidemaru"*100+"keiko"
と50行ぐらい続いていて左辺の値とダブルクオートくくりの
  文字を抽出してsample.hに一文字取ったら改行して書き込んでいくのですが
  どうしたらいいでしょうか??困っておりまして皆様のお力をお借り
  したいと思っています。どうぞよろしくお願いします。
[3] 環境
 [3.1] OS:ソラリス
 [3.2
 [3.3] 言語:C
[4] 期限:今週中
[5]




709 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 01:46:00 ]
日本語が謎すぎる!

710 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 01:47:17 ]
今日はあむちゃんあるんですかね






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<337KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef