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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG?2BP(12)
あなたが解けない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

【前スレ】
C/C++の宿題を片付けます 76代目
http://pc8.2ch.net/test/read.cgi/tech/1162771475/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0175デフォルトの名無しさん2006/11/24(金) 01:05:56
>>174
荒し君、頑張ってるね、乙!
0176デフォルトの名無しさん 2006/11/24(金) 01:15:21
>>173
アップローダを使え
なにをどうゆう風にしたいのかいまいちわかんね
0177デフォルトの名無しさん2006/11/24(金) 01:18:35
>>171 ここの解答者はマリーアントワネットか。

釣り師の人に注文。面白そうな問題にしてね。
あ、出来上がってるところまでのソースもつけてくれると嬉しいな。
0178 ◆D2Ir/QRV8E 2006/11/24(金) 01:30:17
>>174

今出来ました!!ありがとうございます!!
エラーページになったので死んでるのかと思いました、

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=3020
0179デフォルトの名無しさん2006/11/24(金) 01:40:22
>>173
20個の数字(つまり0〜9)?
256桁(つまり10の256乗)まで?

まあエスパーにとっては序の口なんだろうが…
0180デフォルトの名無しさん 2006/11/24(金) 02:07:31
>>718
問題がないので省略って部分もちゃんと書いて
こっちでコンパイルしようと思ってもできないからね
0181デフォルトの名無しさん2006/11/24(金) 02:08:37
>>178
添付ファイルにして欲しいな
0182デフォルトの名無しさん2006/11/24(金) 02:14:22
荒れてるなあ
0183デフォルトの名無しさん2006/11/24(金) 02:20:54
if (*(sortNumber + nSortCnt) < *(sortNumber + nSortCnt -1)) {
intのポインタの大小比較したってしかたあるめい。


void bubbleSort(int *sortNumber, int length);

void bubbleSort(int *sortNumber, int length)
{

char *input(void)
{
return pNum; →?int *
}

/* 文字列の1文字目が\0の場合はループから抜ける */→?
0184デフォルトの名無しさん2006/11/24(金) 02:26:14
>>179
最大桁数256桁の数値20個ど思ふ
256桁には漏れも驚いたよ、long long intでも遠く及ばないし
尋常じゃない桁数なので、入力された文字列を数値変換しないで
文字列比較でソートしたほうが良いような気がするが

数値変換しなければならなそうなんで、頭の良い香具師に期待上げだな
0185デフォルトの名無しさん2006/11/24(金) 03:02:31
>>178
/* ここは問題無いようなので省略 */
こういうときは↑の部分に問題あることが多いからなあ

nNum の型と対応が取れているかどうかも確認したいので、全部晒せとしかいえない
0186デフォルトの名無しさん2006/11/24(金) 03:14:39
>>180
256桁なんかはよくある
例えばRSAなんか1024ビットだから10進数で300桁超だからな
0187 ◆/FsopyQZxE 2006/11/24(金) 03:27:11
[1] 授業単元: プログラミング�T
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3022.txt
[3] 環境
 [3.1] OS: WindowsXP SP2
 [3.2] コンパイラ名とバージョン: VC++ 2005
 [3.3] 言語: C
[4] 期限: 今週中
取りあえず作ってみたのですが、どうしても上手くいきません。
よろしくお願いします。
0188デフォルトの名無しさん2006/11/24(金) 04:20:32
stdafx.hって言われてもよう
0189デフォルトの名無しさん2006/11/24(金) 04:23:48
血液型がRHだと珍しい人扱いってのも分からん話だな
教官はアホなのだろうか
0190デフォルトの名無しさん2006/11/24(金) 04:26:49
そもそも血液型で括るのがおかしい
0191デフォルトの名無しさん2006/11/24(金) 04:35:29
>if(a||A)

( ゚Д゚ )
0192デフォルトの名無しさん2006/11/24(金) 04:48:54
>>187
何とコメントしていいものやら・・・・・・
0193 ◆/FsopyQZxE 2006/11/24(金) 04:54:26
>>192
つまりダメダメってことですか・・・orz

>>188
#include<stdio.h>から上はVC++2005が勝手に付けたんで
そのままupしちゃいました、無視して下さい。

>>191
小文字と大文字のどちらでも動くようにって言われたもんですから・・・
取りあえず良くわかりません
0194デフォルトの名無しさん2006/11/24(金) 04:55:51
enumをcharにしてみよう
0195 ◆/FsopyQZxE 2006/11/24(金) 05:01:44
>>194
charにしました。何を入力して「貴重面な〜」が出ます・・・
あと、人数nに関しては、値を指定してないので変な数字が出るんですが、
そのやり方が分かりません。(a++とかを一体どこに・・・?)
0196デフォルトの名無しさん2006/11/24(金) 05:06:38
printf("几帳面な人。%d人目。\n",++anum);

とかでええんちゃうーん
0197デフォルトの名無しさん2006/11/24(金) 05:09:06
カウンタ初期化するのを忘れずに
0198 ◆/FsopyQZxE 2006/11/24(金) 05:17:31
>>196
なるほど、分かりました。
ただやっぱり何を入力しもて「几帳面〜」が出て、数字も変な
ままです・・・
すいませんが宜しくお願いします。

>>197
return 0;でいいんですよね・・・?
0199デフォルトの名無しさん2006/11/24(金) 05:21:27
>>198
>>191
0200デフォルトの名無しさん2006/11/24(金) 05:26:14
基礎からやりなおせ。
0201 ◆/FsopyQZxE 2006/11/24(金) 05:31:08
>>199
すいません、サッパリです・・・
0202デフォルトの名無しさん2006/11/24(金) 06:26:32
string.hを使っているということは、それ相応の理由があると思います。
strcmpでも使ってみたらいかがでしょうか?

それとprintf文の中で、a++を使っていますが
aには元から0ではないので、初期化するということです。
0203デフォルトの名無しさん2006/11/24(金) 12:13:14
#include<stdio.h>
int main(void){
int i, j, k, n, a;//変数宣言
int **p;//アドレス宣言

printf("please input! n = ");//入力を促すメッセージ出力
scanf("%d",&a);//aとして入力された数字を取り込む。

p = (int **) malloc(sizeof(int *)*a);//mallocで行のスペース作成
for(i=0; i<=a-1; i++){//行の列指定
p[i]=(int*) malloc(sizeof(int)*a);//mallocで列のスペース作成
for(j=0; j<=a-1; j++)//列の行指定
p[i][j]=0;
}
n=a;
k = 0;//kは0からスタート
for(i=0; i<n/2+n%2; i++) {
for(j=i; j<=n-i-1; j++) p[i][j] = k++;
for(j=i+1; j<n-i-1; j++) p[j][n-i-1] = k++;
for(j=n-i-1; j>i; j--) p[n-i-1][j] = k++;
for(j=n-i-1; j>i; j--) p[j][i] = k++;
}
for(i=0; i<a; i++,printf("\n"))
for(j=0; j<a; j++)
printf("%5d",p[i][j]);

return 0;
}

このプログラムのkは0からスタート以降の意味がよくわかりません。
どなたか解説お願いします。
0204デフォルトの名無しさん2006/11/24(金) 12:18:34
いやそこを自分で考えないでどこで頭使うんだ?
0205デフォルトの名無しさん2006/11/24(金) 12:33:25
>>201
#include <stdio.h>
#include <string.h>
void main(void) {   
    char blood[3];
    int n = 0;
    printf("血液型を入力して下さい。\n");
    while (scanf("%2s", &blood) != EOF) {
        if(!strcmp(blood, "a") || !strcmp(blood, "A")) printf("几帳面な人。%d人目。\n", ++n);
        else if(!strcmp(blood, "b") || !strcmp(blood, "B")) printf("マイペースな人。%d人目です。\n", ++n);
        else if(!strcmp(blood, "ab") || !strcmp(blood, "AB")) printf("不思議な人。%d人目です。\n", ++n);
        else if(!strcmp(blood, "o") || !strcmp(blood, "O")) printf("面倒見のいい人。%d人目です。\n", ++n);
        else if(!strcmp(blood, "rh") || !strcmp(blood, "RH")) printf("珍しい人。%d人目です。\n", ++n);
        else printf("嘘は良くないね。\n");
    }
    return 0;
}
0206デフォルトの名無しさん2006/11/24(金) 12:34:32
>203
kが0からスタートしてることと、k++の意味を考えて実際に実行してみれば判らないか?
0207デフォルトの名無しさん2006/11/24(金) 12:37:29
台形公式によると定積分値は
 b     h
∫ f(x)= ―[ f(a0)+f(an) + 2( f(a1)+f(a2)+..+f(an-1)] 
 a     2

       b−a
但し、h=―――― a�@=a+ih   と近似できる。
       n

n=1000としてこの公式を使って
 1  4
∫ ―――― dx   の近似値の作成Cプログラムが
 0  1+(x*x)
わかりませんどなたかお願いします。
0208デフォルトの名無しさん2006/11/24(金) 12:38:45
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
02092032006/11/24(金) 12:48:09
動作自体はわかるんですけど、各行のfor文がどう動いてその結果になったかがわからないんです。
0210デフォルトの名無しさん2006/11/24(金) 12:56:27
>>207
#include <stdio.h>
double f(double x) {
    return 4 / (1 + x * x);
}
int main(void) {
    int n = 1000, i;
    double a = 0., b = 1., h = (b - a) / n, s = 0.;
    for (i = 1; i < n; ++i) s += f(a + i * h);
    s *= 2;
    s += f(0) + f(n);
    s *= h / 2;
    printf("%f", s);
    return 0;
}
0211デフォルトの名無しさん2006/11/24(金) 12:59:30
>209
それは動作がわかるとは言わない。
動作がわかるならforがどう動いてるかもわかるはず。

iは外側から数えていくつめの四角かを意味する。
jはその四角の各辺を移動するのに用いられてる。
forはそれぞれ上辺、右辺、下辺、左辺に順番にkを1ずつ増やしながら入れている。
0212デフォルトの名無しさん2006/11/24(金) 13:02:45
>>207
#include<stdio.h>

double f(double x)
{
return 4/(1+x*x);
}

double f_integral(double a, double b, long n)
{
double h, ai;
double ret=0.0;
long i;

h=(b-a)/n;
for(i=0;i<=n;i++)
{
ai=a+i*h;
ret+=f(ai);
}
ret-=(f(a)+f(b))/2;
ret*=h;

return ret;
}

int main(void)
{
printf("%f\n", f_integral(0, 1, 1000));
return 0;
}
02132032006/11/24(金) 13:02:54
>>211
ありがとですw
まだ始めたばかりなのでよく分からなくてスイマセン;
02142122006/11/24(金) 13:05:54
先に答え出てたか… orz
0215宿題丸投げ厨房一同2006/11/24(金) 16:12:47
回答を提供してくれる偉大な香具師に感謝age

回答を御提供まことに有難うございます、これからもよろしくお願いいたします。
0216デフォルトの名無しさん2006/11/24(金) 17:26:57
振込先とかはないんですか?
これって無料なんですか?
0217デフォルトの名無しさん2006/11/24(金) 17:37:03
>>216
ギブ&テイクだよ
あなたが教えられるレベルに成長した時に後輩たちを育てればいい
0218デフォルトの名無しさん2006/11/24(金) 17:38:28
>>217は何気に名言。
俺も何年か前はここで質問してた側だったぜ。
0219デフォルトの名無しさんNGNG?2BP(200)
育てるつもりなら丸投げに回答なんかしねえよw
宿題丸投げしてて成長なんかするわけねえだろ。アホかwww
0220デフォルトの名無しさん2006/11/24(金) 17:58:17
>>219
それは否定できないな
PGになる人間の淘汰も兼ねてるとは思う
本人次第なんだよね
0221デフォルトの名無しさん2006/11/24(金) 18:34:11
評価は欲しいけど技術を向上させるつもりはない依頼者と、
とくに評価は関係なく、コーディングの練習のためにモチベーションの
得やすい例題を欲している回答者の間で、ギブ&テイクが成立している。
0222デフォルトの名無しさんNGNG?2BP(200)
評価は欲しいけど技術を向上させるつもりはない依頼者と、
そのようなクズを隔離したい利用者の間で、ギブ&テイクが成立している。
0223デフォルトの名無しさん2006/11/24(金) 18:49:34
アホか
0224デフォルトの名無しさん2006/11/24(金) 19:34:22
_____________________________________________________
。。。 。。。。。。  。。。。。 。 。。。。。。
。 。。。  。。。。。。 。。。。。  。。。
 。。。。。。。  。。。。。。。。  。。。。。。。
_____________________________________________________

上みたいに道に人(。)が左右に行き交うプログラムで
(↑ここまでは作成済み)
あとY軸毎(列毎)の人の速度Vx[i]の平均を求めて、
縦軸Vx[i]の平均、横軸yのグラフを描きたいです。
お願いします。
0225デフォルトの名無しさん2006/11/24(金) 19:38:07
>>224
テンプレ読め
02262242006/11/24(金) 19:50:44
[1] 授業単元: 情報処理演習
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:mac os X
 [3.2] コンパイラ名とバージョン: project builder(たぶんC++builderと同じようなもんです)
 [3.3] 言語: C++
0227デフォルトの名無しさん2006/11/24(金) 19:53:14
説明よーわからんし作成済みうp
0228デフォルトの名無しさん2006/11/24(金) 20:03:44
授業単元:C言語
問題文(含コード&リンク):7ならべ
環境
OS:Windows
コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
言語:C言語
期限:2006年12月1日まで
その他の制限:COM3人と対戦 パス3回 ジョーカーあり 勝敗判定をする
どうか宜しくお願いします
02292072006/11/24(金) 20:26:50
>>212
どうもありがとうございました
0230デフォルトの名無しさん2006/11/24(金) 21:09:27
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
fgetsの返り値を利用して、ファイルの最後まで読み込んで画面に出力する
ようにせよ。

#include <stdio.h>
#define COLSIZE 80

int main(int argc, char *argv[])
{
char buffer[COLSIZE + 1];
FILE *fp;

fp = fopen("files.c", "r");

while(){
printf("%s", buffer);
}
fclose(fp)

return 0;
}
files.cというのはファイル名です。
頑張って考えたのですが、while()の()に入るものが解りません。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 月曜までです。

よろしくお願いします。
0231デフォルトの名無しさん2006/11/24(金) 21:18:50
>>230
ヒント:
fgets() の返り値を利用して、とあるのにプログラムに fgets() が含まれてない。
つまり fgets() の返り値の比較が while() に入るだろうと当たりをつける。

あとは fgets() がファイルの終わりに達した時どんな値を返すか、
マニュアル↓を見て考えてみよう。
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/fgets.3.html
02321512006/11/24(金) 21:37:07
荒らしっぽい書き込みは自分じゃないです。
あと期限が水曜日に延びました。
もしよろしければお願いします
02332242006/11/24(金) 21:39:15
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3025.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3026.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3027.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3028.txt
0234デフォルトの名無しさん2006/11/24(金) 21:52:00
>>233
これ本当にC++?
02352302006/11/24(金) 21:55:14
>>231
レスありがとうございます。

#include <stdio.h>
#define COLSIZE 80

int main(int argc, char *argv[])
{
char buffer[COLSIZE + 1];
FILE *fp;

fp = fopen("files.c", "r");

while(fp == NULL){
fgets(buffer, COLSIZE + 1, fp);
printf("%s", buffer);
}
fclose(fp);

return 0;
}
こんな感じになるんじゃないかなーと思うのですが違いますよね?
実際、実行しても何も表示されませんし。
while(s == NULL)も(fp == EOF)もダメでした。
0236デフォルトの名無しさん2006/11/24(金) 22:00:30
while fgets でぐぐれ
02372242006/11/24(金) 22:01:36
>>234
すいません、C++じゃなくてobject-Cっていうやつです
0238デフォルトの名無しさん2006/11/24(金) 22:09:12
>>235
返り値を誤解してるのでは。例えば、

p = fgets(buffer, COLSIZE, fp);

上の例で言うと、『p に』『fgets() の返り値が』代入される。
buffer や fp は fgets() の返り値ではない。

(ちなみに、p の型が何かはマニュアルの書式欄から読み取れるはず。)
0239デフォルトの名無しさん2006/11/24(金) 22:17:38
>>233
Objective-Cじゃねぇか。
0240デフォルトの名無しさん2006/11/24(金) 22:17:38
objective-Cで教えてるとこなんてあるんだ、びっくりなんだぜ
でもスレ違いな
02412352006/11/24(金) 22:17:44
理解できました。
ありがとうございます。
#include <stdio.h>
#define COLSIZE 80

int main(int argc, char *argv[])
{
char buffer[COLSIZE + 1];
FILE *fp;

fp = fopen("files.c", "r");

while(fgets(buffer, COLSIZE + 1, fp) != NULL){
printf("%s", buffer);
}
fclose(fp);

return 0;
}
ですよね?

もう一つ、お聞きしたいのですが、

読み込むファイル名をfgets関数を使って標準入力から読み込むようにして、
files.c以外だけでなく任意のファイルを読み込めるようにプログラムを変更
せよ。fgets関数で取り込むと改行記号も保存されるため、そのままでは
ファイル名として使用できない。改行記号を\0に置換する処理を行う必要が
ある。(strlenを使用しなさい。)

という問題なのですが、さっきのと違って考えても解りません。
strlenの使い方は解るのですが、これをどう活用させたら良いのかとか、
改行記号を\0に置換する処理とか、よく解りません。
0242デフォルトの名無しさん2006/11/24(金) 22:18:08
[1] 授業単元:配列
[2] 問題文(含コード&リンク):3次元配列の確保せよ
この問題に対して以下のようにしました。
P =(double ***)calloc(ALL,sizeof(double **));
if(P ==NULL) exit(1);
for(i=0 ; i < ALL ; i++){
P[i] = (double **)calloc(NN,sizeof(double *));
if (P[i]==NULL) exit(1);
for (j=0 ; j < NN; j++){
P[i][j] = (double *)calloc(NN,sizeof(double));
if (P[i][j]==NULL) exit(1);
}
}
ALL=8760,NN=99です。この数値は変更不可で、この配列確保を7回繰り返さなければなりません。
4回目になると勝手に計算が終わってしまいます。
多分、ALL=8760が大きいためと思うのですが・・・。うまく配列を確保する方法よろしくお願いします。
[3] 環境
 [3.1] OS: Win XP HOME
 [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C
[4] 期限: 出来れば明日中にお願いします
0243デフォルトの名無しさん2006/11/24(金) 22:27:22
>>241
改行は文字列の最後についている。
文字列の長さが分かれば、最後の文字の位置が分かる。
最後の文字の位置を '\0' で上書き(代入)すると改行が消える。
0244デフォルトの名無しさん2006/11/24(金) 22:33:15
>>241
標準入力はstdin
0245デフォルトの名無しさん2006/11/24(金) 22:35:54
>>242
普通に動くけど。
0246デフォルトの名無しさん2006/11/24(金) 22:36:17
>>242
8760 * 99 * 99 * 8Byte = 655MB
655 * 7 = 4585MB

結論
そのOSとコンパイラじゃ無理
0247デフォルトの名無しさん2006/11/24(金) 22:41:49
>>242
こういう事がしたいんだろ?

double ***P;
int i, j;

P =(double ***)calloc(ALL, sizeof(double **));
if(P ==NULL) exit(1);
for(i=0 ; i < ALL ; i++) {
P[i] = (double **)calloc(NN, sizeof(double *));
if (P[i]==NULL) exit(1);
for (j=0 ; j < NN; j++){
P[i][j] = (double *)calloc(1, sizeof(double));
if (P[i][j]==NULL) exit(1);
}
}
0248デフォルトの名無しさん2006/11/24(金) 22:45:16
246の計算通りだとすると245はAMD64か何かを使ってるんだろうか?
0249デフォルトの名無しさん2006/11/24(金) 22:48:43
にしても4G以上メモリを積んだマシンなのか?
0250デフォルトの名無しさん2006/11/24(金) 22:51:23
>>249
物理メモリがそんだけある必要はないだろう。
0251デフォルトの名無しさん2006/11/24(金) 22:52:08
仮想メモリも合わせて4G越えという線もあるだろうし、FreeBSDのように実際に
使用されるまでメモリの確保さえしないOSもある。
0252デフォルトの名無しさん2006/11/24(金) 22:56:15
やっぱり無理ですかね・・・?
色々調べてみてcallocではなくfarcalloc使う?とかあったんですけど、根本的に無理な雰囲気ですねorz
0253デフォルトの名無しさん2006/11/24(金) 23:01:52
>>252
>ALL=8760,NN=99です。この数値は変更不可で、この配列確保を7回繰り返さなければなりません。

これは問題文そのままか?
原文そのままを書くこと。
0254 ◆bLCzllni4s 2006/11/24(金) 23:18:44
トリップ付けます。
説明がなくて申し訳ないです。
状況としては、プログラム上で3次元配列を7つ用いなければならなくて、今まで24時間を扱っていたのが
365日分*24時間=8760で計算してみる上で
「3次元配列の確保をせよ」という課題です。
0255デフォルトの名無しさん2006/11/24(金) 23:19:52
よし次はエスパーが来るのを待って99の謎を解いてもらおう
0256デフォルトの名無しさん2006/11/24(金) 23:30:02
うるう年も欲しいな
0257 ◆bLCzllni4s 2006/11/24(金) 23:37:29
99はそれ以降使うデータが99個あるだけで深い意味はありません・・・。
うるう年は勘弁してください・・・。
検索してたらこういうのが見つかったんですけど、関係ないですかね?
http://f4.aaa.livedoor.jp/~pointc/log493.html
0258デフォルトの名無しさん2006/11/24(金) 23:46:20
>>257
主記憶上に確保するのが無理なら、ファイルを配列の変わりに使えよ。
その都度アクセスしてもHDDならそんなに遅くないだろ。
0259デフォルトの名無しさん2006/11/24(金) 23:48:17
日本語能力の足りない人間は
問題文をそのままコピペするのが最低限の誠意だと思うんだ
お前の足りない頭でどう考えたかなんてどうでもいい
0260デフォルトの名無しさん2006/11/24(金) 23:50:56
実は宿題でもなんでもなく、単に自分が困った事を聞いてるだけちゃうんかと。
それで問題文が出せないんちゃうんかと。
0261デフォルトの名無しさん2006/11/24(金) 23:57:08
授業単元:配列ってのもなんか怪しいしなあ。
まあどちらにしろ、本当に8760 * 99 * 99のdouble型の3次配列を7個確保しなきゃ
いけないんだとしたら、メモリ足りないんだからあきらめろ。
0262デフォルトの名無しさん2006/11/25(土) 00:24:06
ていうかそれ宿題じゃないだろ。宿題じゃないならここはスレ違いだ。
おい、日本語分かるか?
↓で相談するべきなんだよwww
【初心者歓迎】C/C++室 Ver.33【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1164376287/
まあ今更そっちで質問してもマルチだからなwww
馬鹿はさっさと鬱になって市ねwww
0263デフォルトの名無しさん2006/11/25(土) 00:48:35
鬱にならないでください
もしなったらまた相談しにきてください。
0264デフォルトの名無しさん2006/11/25(土) 01:05:57
>>262
スレ違いでしたか・・・。どうもスイマセン。
誘導ありがとうございます。そちらで質問し直します。
0265 ◆bLCzllni4s 2006/11/25(土) 01:06:42
↑は自分です、失礼しました・・・
0266デフォルトの名無しさん2006/11/25(土) 01:18:41
>>242
漏れだったらこんな風にするが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3031.c
0267デフォルトの名無しさん2006/11/25(土) 01:20:02
って、もう去ってたのか。
0268デフォルトの名無しさん2006/11/25(土) 01:42:19
>>266コレって一体何やってんの?
0269 ◆/FsopyQZxE 2006/11/25(土) 01:58:21
>>205
有難うございました!まだまだ勉強不足のようなので、
初めから勉強し直したいと思います!
0270デフォルトの名無しさん2006/11/25(土) 02:03:46
>>268
ファイル上に領域を確保してる。
MapViewOfFile (unix 系では mmap) を使うと、ファイルをメモリ上に対応付ける事ができ、
該当するメモリへの読み書きが直接ファイルに対する読み書きになる。
技術的にはスワップファイルと同じ仕組み。

free() する場合と違い、対応付けを解除しても内容はファイル上に保持されるので、アクセス
する必要のある配列を必要のある期間だけ対応付け、必要がなくなったら即対応付けを解除
することで、アドレス空間を節約できる。(なので一度に7配列アクセスしたら当然破綻する)

# ちなみにかつての 16bit Windows は同じような仕組みで少ない実メモリをやりくりしてた。
0271デフォルトの名無しさん2006/11/25(土) 02:21:15
何か質問したやつコッチ行ったみたいだからそのスレも見てやったら?
コピペも張られてるみたいだし
【初心者歓迎】C/C++室 Ver.33【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1164376287/
0272デフォルトの名無しさん2006/11/25(土) 05:12:21
[1] 授業単元: コンピューター実習
[2] 問題文:以下のサンプルを参考に、文字で cos カーブ、sin カーブを描くプログラムの作成
#include <stdio.h>
#include <math.h>
// cc -lm
#define PI 3.1415926
int main( void )
{int deg;
for (deg=0 ; deg <= 360; deg += 20)
printf("%3d: %6.3lf %6.3lf\n",deg ,cos( (double)deg * PI / 180.0 )
,sin( (double)deg * PI / 180.0 ));
}
0 * +
15 * +
30 * +
45 +
60 + *
75 + *
90 + *
105 + *
120 + *
135 + *
150 + *
165 + *
180 + *
195 + *
210 + *
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月29日
0273デフォルトの名無しさん2006/11/25(土) 05:29:34
>>272
/* cc -lm */
#include <stdio.h>
#include <string.h>
#include <math.h>
#define PI 3.1415926
int main(void){
    int deg;
    for (deg=0 ; deg <= 210; deg += 15){
        const int x1=(int)(sin(deg*PI/180.0)*25);
        const int x2=(int)(cos(deg*PI/180.0)*25);
        int i;
        printf("%3d ",deg);
        for(i=-25;i<=25;++i)
            putchar(i==x1?'*':i==x2?'+':' ');
        puts("");
    }
    return 0;
}
0274デフォルトの名無しさん2006/11/25(土) 10:48:07
[1] 授業単元: コンピューター実習 
[2] 問題文:入力した文字を元に、それを拡大したアスキーアートを描くプログラムの作成 
 [3.1] OS:Linux 
 [3.2] コンパイラ名とバージョン:gcc 
 [3.3] 言語:C 
[4] 期限:11月29日 
■ このスレッドは過去ログ倉庫に格納されています