1 :
デフォルトの名無しさん :
05/02/06 02:38:42
2 :
デフォルトの名無しさん :05/02/06 02:39:20
つまらないが、ま、いっか。
(; ・3・)<アルェー
乙
7 :
デフォルトの名無しさん :05/02/06 12:03:25
それではさっそく 【質問テンプレ】 [1] 授業単元:ファイル操作 [2] 下記のプログラムにID番号を入力しその人のデータを表示させなさい [3] 言語:C [4] 期限:2月7日朝まで [5] その他の制限: 特になし #include <stdio.h> #include <string.h> struct tuika { char name[20],ID[100]; float sin; }; void main(void) { FILE *fs; char flag,ken; struct tuika data; int a,c=1,i=0; fs=fopen("sample5.txt","w"); fclose(fs); fs=fopen("sample5.txt","a"); printf("名前:");scanf("%s",data.name); printf("ID:");scanf("%s",data.ID); printf("身長:");scanf("%f",&data.sin); fprintf(fs,"%20s%10s%10.2f\n",data.name,data.ID,data.sin);
fclose(fs); LOOP: printf("ctrl+zで終了します\n"); printf("それ以外の場合は追加入力\n"); fflush(stdin); flag=getchar(); fflush(stdin); if(flag!=EOF){ fs=fopen("sample5.txt","a"); printf("名前:");scanf("%s",data.name); printf("ID:");scanf("%s",data.ID); printf("身長:");scanf("%f",&data.sin); fprintf(fs,"%20s%10s%10.2f\n",data.name,data.ID,data.sin); fclose(fs); c++; goto LOOP; } printf("表示させたい人物のIDを入力せよ"); fflush(stdin); ken=getchar(); fflush(stdin); fs=fopen("sample5.txt","r"); ※ここで検索&表示※ fclose(fs); }
IDって1桁?
10 :
7.8 :05/02/06 12:09:17
11 :
ぼるじょあ ◆yBEncckFOU :05/02/06 12:28:11
ぼるじょあは一個おきでいいね。 次はぼるじょあ
前 #include <stdio.h> #include <string.h> #include <stdlib.h> struct tuika { char name[20],ID[100]; float sin; }; void main(void) { FILE *fs; char flag; char ken[100]; char *pken=&ken[0]; struct tuika data; int a,c=1,i=0;//aってなんよ?
後 printf("表示させたい人物のIDを入力せよ\n"); fflush(stdin); scanf("%10s",&ken); fflush(stdin); fs=fopen("sample5.txt","r"); //※ここで検索&表示※ struct tuika t; while(fscanf(fs,"%20s",t.name)!=EOF) { fscanf(fs,"%10s",t.ID); char fsin[10]; fscanf(fs,"%10s",fsin); float f=(float)atof(&fsin[0]); t.sin=f; char *pt=&t.ID[0]; if(strncmp(pt,pken,10)==0) { printf("名前:%20s\nID:%10s\n身長:%10.2f\n",t.name,t.ID,t.sin); } } fclose(fs); } /*きもいこーどになったw*/
14 :
デフォルトの名無しさん :05/02/06 16:56:04
え?まじか?
>>7-8 のコードに
>>12-13 のコードを適切に上書きコピペしてくれ。
//は抜いてくれよ。
あとはなんだ。タブは大丈夫か?w
16 :
デフォルトの名無しさん :05/02/07 09:06:26
>>7 ※ここで検索&表示※
↓
while (scanf("%s%s%lf", data.name, data.ID, &data.sin)) {
if (data.ID[0] == ken) {
printf("%10s%10s%10.2f\n", data.name, data.ID, data.sin);
}
}
17 :
デフォルトの名無しさん :05/02/07 14:09:04
使いたいC++のDLL関数だけが本にのってたんですけど、DLL関数の使い方が 分からず使えません。どなたか教えてくださらないでしょうか?関数の最初の部分は、 _declspec (dllexport) void _stdcall dynamic(HDC hDC1,HDC hDC2, short sizeImage, short size,short tWidth,short flagBacdground) { こうゆう感じです。この関数の行う作業は画像を2値化するときしきい値を場所によって最適なもの にしてくれるものです。どうゆうふうにこの関数を使えばいいのでしょうか?
その通りですが私の持っている本は初級者向けじゃないらしくDLL関数に ついては一切ふれてないので…分かんないんです。
本の名前は ”Visual Basic&Visual C++による デジタル画像処理入門” という本です。
LoadLibrary GetProcAddress FreeLibrary うろ覚えなんでスペルミスってたらゴメン
>>17 その本は、VBから使うためのDLLの作成方法を書いているのだろ?
関数本体はそのままDLLとしてではなくそのまま使えると思うが。
常識的に考えれば、引き数はそのままで_declspec()と_stdcallを外せばいいと思う。
なんでやねん
ありがとうございます、大変ためになりました。今頑張ってますが、またわからない ところがあったらお聞きするかもしれません。その時はよろしくお願いします。
27 :
デフォルトの名無しさん :05/02/07 17:05:57
[1] 授業単元:c [2] 問題文(含コード&リンク):下記 [3] 環境 [3.1] OS: XP pro [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:なるべく明日の朝くらいまでにお願いします [5] その他の制限: まだ習いたてで自分には理解できないかもしれませんので なるべく単純にお願いします。 課題文 ○(-1)^(n-1)・X^(2n-1)/(2n-1)!を計算する関数をお願いします. 条件は、入力を整数nと実数xとすることです ○sinのテイラー展開はSin X=X-X^3/3! +X^5/5!+ …+ (-1)^(n-1)・X^(2n-1)/(2n-1)!+…でこと をふまえた上でsin Xを計算する関数を作ってください. です。よろしくお願いします
C言語のスレで^を見るとXORだと思ってしまう…
>>28 #include <stdio.h>
#include <math.h>
#define N_MAX 100
#define SIGN(__n) ((((__n) % 2) == 0) ? 1 : -1)
/*
* SIGN(x) = (-1)^x
* = 1 // if x is 0(mod 2)
* = -1 // if x is 1(mod 2)
* pow(x, y) = x^y
* f(n, x) = SIGN(n - 1) * pow(x, 2 * n - 1) / (2 * n - 1)!
*/
double f(int n, double x)
{
int i;
double val;
/* val: the demoninator of f(n, x) */
val = SIGN(n - 1) * pow(x, 2 * n - 1);
/* f(n, x) = val / (2 * n - 1)! */
for (i = 1 ; i <= (2 * n - 1); ++i) {
val /= i;
}
return val;
}
続き double my_sin(double x) { int n; double val = 0; for (n = 1 ; n < N_MAX ; ++n) { val += f(n, x); } return val; } 手元の sin() と比較したので、結果は合ってると思われ。 テイラー展開自体を忘れてて、ちょっと時間が掛かっちゃったよ。
[1]情報処理演習 [2]ガウスジョルダン法を用いてn元一次連立方程式を解け。 [3]環境 [3.1]Microsoft Windows XP Professional [3.2]Microsoft Visual Studio.NET Professional 2003 [3.3]C++ [4]2005年02月08日06:00まで ガウスジョルダン法の関数はできてます。 new演算子を用いてdouble型二次元配列を取得する方法を教えてください。 今はnewの代わりにmallocを使っています。 解放の仕方も教えてくださると助かります。
>>30 >>31 ありがとうございます!!
これを元に自分でも組めるように勉強します
>>32 int** a = new int*[4];
for (int i = 0; i < 4; ++i) *(a + i) = new int[3];
// a[0...3][0...2]でhogehoge
for (int i = 0; i < 4; ++i) delete[] (a + i);
delete[] a;
>>32 double **ppd = new double*[x];
*ppd = new double[x * y];
for (int i = 1; i < y; i++)
ppd[i] = *ppd + i;
delete[] *ppd;
delete[] ppd;
36 :
デフォルトの名無しさん :05/02/08 00:01:26
[1] 授業単元: データ構造アルゴリズム [2] シェルソートを行うプログラムを完成させよ。 ソート間隔dは3倍+1とすること。 入出力は次のとおりとする。 10個の整数を入力せよ。 x[0]:10 x[1]:15 x[2]:14 ・ ・ ・ x[9]:20 昇順にソートしました x[0]:3 x[1]:10 x[2]:14
37 :
デフォルトの名無しさん :05/02/08 00:02:53
(2)入力数と昇順、降順をユーザが決めるようにする 入力例:入力する整数の個数は(最大100まで):15 昇順(1)降順(2)どちらですか?:2 入力 x[0]:10 x[1]:15 ・ ・ ・ 降順にソートしました。 x[0]:20 x[1]:15 ・ ・ ・ x[9]:3 [3] 環境 C言語 [4] 期限:2月9日(水)まで [5] その他の制限: とくになし 長くなりましたがよろしくお願いいたします。
39 :
デフォルトの名無しさん :05/02/08 00:22:29
>>7-8 で聞いたものですが
下記のように自分なりにアレンジしたところ19行目で
「 パラメータ '__mode' は const signed char * 型として定義されているので int は渡せない(関数 main )」
とエラーがでます。なぜでしょうか?お願いします
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct tuika {
char name[20],ID[100],sin[20];
};
void main() {
FILE *fs;
char flag,flagmenu;
char ken[100],g[100];
int kn;
struct tuika data;
struct tuika t;
int a,k=0;
while(g!=EOF){
if(k==0){kn='w';}
if(k>0){kn='a';}
fs=fopen("data.txt",kn);
printf("名前:");scanf("%s",data.name);
printf("ID:");scanf("%s",data.ID);
printf("身長:");scanf("%s",&data.sin);
fprintf(fs,"%20s%10s%10s\n",data.name,data.ID,data.sin);
fclose(fs); printf("ctrl+zで終了します\n"); fflush(stdin); scanf("%s",g); fflush(stdin); } printf("%20s%10s%11s\n","名前","ID","身長"); fs=fopen("data.txt","r"); while((a=fgetc(fs))!=EOF){printf("%c",a);} printf("\n"); fclose(fs); printf("表示させたい人物のIDを入力せよ\n"); fflush(stdin); scanf("%s",ken); fflush(stdin); fs=fopen("data.txt","r"); while((a=fgetc(fs))!=EOF){ fscanf(fs,"%20s",t.name); fscanf(fs,"%10s",t.ID); fscanf(fs,"%10s",t.sin); if(strcmp(ken,t.ID)==0){ printf("名前:%s ID:%s 身長:%s\n\n",t.name,t.ID,t.sin); } } fclose(fs); }
>>39-40 このスレでお世話になったので参考に。
ファイルのオープンモード?はchar型じゃなくてchar *型。
つまり文字列なんですよ。
具体的じゃなくてごめんね。
char kn[2] = {'w', '\0'}; 略 while(g!=EOF){ if(k>0){kn[0]='a';} fs=fopen("data.txt",kn);
っつうか、なんで関係ないところを書き変えたんだ?
44 :
デフォルトの名無しさん :05/02/08 01:41:15
学校で自由課題の宿題が出たんだが、C言語で仮想アセンブラ環境つくる っていうのどうよ?あんま複雑にすると収集つかなくなるからwindowsの Debugでできる様な4byte環境で
いや、つまんね。コンパイラ、とか、CPUでも設計したらどうだい
単一命令のが簡単だろう。sbnオンリーで済むよ。
48 :
デフォルトの名無しさん :05/02/08 01:49:07
>>45 nasmしかシラネ
>>46 いいね、俺が128bitCPuを設計してやるよ
50 :
デフォルトの名無しさん :05/02/08 04:15:12
こんな宿題が出ました誰か教えてください。 imageee[Y_size][X_size][3] というカラー画像の入っているものがあるときこのカラー画像を f[i][j] という画像に置換えよ
問題文はそれだけじゃないはずだから
>>1 のテンプレみてうpしなおせ
>>50 カラーのモノクロ化?
それならばrgbの格納順がわからないと「グレイ = 0.299R + 0.587G + 0.114B」の式が使えない。
i, jがX_size, Y_sizeではない任意の値ということなら拡大になるか縮小になるかで適当にループを回せばいい。
いずれにしても、情報量が少なすぎ。
実はRGB構造体を定義しろって問題とか
情報が少なかったですね、すいません。imageee[Y_size][X_size][3]は FILE *fp; int i, j, k; /* ファイルオープン */ fread(&bfType, sizeof(bfType), 1, fp); fread(&bfSize, sizeof(bfSize), 1, fp); fread(&bfReserved1, sizeof(bfReserved1), 1, fp); fread(&bfReserved2, sizeof(bfReserved2), 1, fp); fread(&bfOffBits, sizeof(bfOffBits), 1, fp); fread(&biSize, sizeof(biSize), 1, fp); fread(&biWidth, sizeof(biWidth), 1, fp); fread(&biHeight, sizeof(biHeight), 1, fp); fread(&biPlanes, sizeof(biPlanes), 1, fp); fread(&biBitCount, sizeof(biBitCount), 1, fp); fread(&biCompression, sizeof(biCompression), 1, fp);fread(&biSizeImage, sizeof(biSizeImage), 1, fp); fread(&biXPelsPerMeter, sizeof(biXPelsPerMeter), 1, fp); fread(&biYPelsPerMeter, sizeof(biYPelsPerMeter), 1, fp); fread(&biClrUsed, sizeof(biClrUsed), 1, fp); fread(&biClrImportant, sizeof(biClrImportant), 1, fp); /* ビットマップデータ */ for (i=0; i<biHeight; i++) for (j=0; j<biWidth; j++) { for (k=0; k<3; k++) { fread(&image[i][j][2-k], 1, 1, fp); } } fclose(fp); こんな感じで読み込まれています。
後 /* 最大画像サイズ */ #define Y_size 512 #define X_size 512 /* BMPファイル用 */ typedef unsigned short WORD; typedef unsigned long DWORD; WORD bfType; DWORD bfSize; WORD bfReserved1, bfReserved2; DWORD bfOffBits; DWORD biSize, biWidth, biHeight; WORD biPlanes, biBitCount; DWORD biCompression, biSizeImage, biXPelsPerMeter, biYPelsPerMeter, biClrUsed, biClrImportant; と定義されていました。
相変わらず情報が少なすぎますが。
・質問は必ず【質問テンプレ】に従ってください。 ・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。 ・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
肝腎な質問に対する答がないからもうしらね。
素でアホなんだな、こいつ 痴呆みたいなものを感じる
61 :
デフォルトの名無しさん :05/02/08 11:28:21
[1] 授業単元: OS [2] 問題文(含コード&リンク): Cで、MAX10のコマンド履歴を作ります。 例: 5 cd /usr/include 6 dir 7 cp a b ... 古いものから自動で消えていって、STLのpushのように動いて欲しいです。 説明が下手ですみません。よろしくお願いします。 [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ(バージョン): GCC [3.3] 言語:C
最大要素数10のキューとして作れってことでいいのか? つか、コマンドってコンソールの奪ってくるのか?
>最大要素数10のキューとして作れってことでいいのか? はい、その通りです。 データはstructでintとcharを含むhistory(適当)です。 >つか、コマンドってコンソールの奪ってくるのか? いえ、新しく有効コマンド5個位のごく単純なコマンドコンソールを作る宿題です。 UNIX上でプログラムを起動すると作ったコンソールがでて、ユーザにコマンドを入力してもらう感じです。
で、何したいの? ヒストリはコマンド入力毎に全表示?
えっと、hlistというコマンドをユーザが入力すると、 過去の最新10コマンドを表示するようにしたいです。
66 :
デフォルトの名無しさん :05/02/08 12:04:24
すみません。c言語であるディレクトリの複数のファイルを 順に読み込むにはどうしたらいいんですか。 おしえてくださいおねがいします。
読み違えた スマン無かったことに
69 :
デフォルトの名無しさん :05/02/08 12:26:21
[1] 授業単元: C言語 提出期限は木曜日です、宜しくお願いします 1.以下の仕様に基づいて,任意の探索開始点から訪問できる全ての頂点を訪問する関数 void visit(int k) を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ. (必要に応じて,ヘッダー・ファイルをインクルードすること.) また,この関数のアルゴリズムを説明せよ. * 関数名:visit * 仮引数int k:探索を開始する頂点番号 * 戻り値なし(void型) * 機能:探索を開始する頂点番号kを受け取り,キュー(void enqueue(int dt)およびint dequeue())を使用した幅優先探索をおこなって, 訪問可能な全ての頂点を訪問し,訪問した頂点を表示する. 2.以下の仕様に基づいて,隣接リストから指定された接続関係(辺)を削除する関数 void delete_edge(int v1, int v2) を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ. (必要に応じて,ヘッダー・ファイルをインクルードすること.) * 関数名:delete_edge * 仮引数int v1, int v2:v1とv2との間の接続関係を削除する. * 戻り値なし(void型): * 機能:受け取ったv1とv2との接続関係を削除するために,隣接リストから, v1とv2との接続関係に対応するノードを削除する. 隣接リストへの追加と同様に,adj[v1]からv2のノードを削除し, adj[v2]からv1のノードを削除すること.
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 学年末の課題作成で、電卓ソフト(ボタンなどを表示して)を作りたいのですが、 ここをこうしたらよくなる、いい感じのソフトが出来るなどのアドバイスをいただけないでしょうか? [3] 環境 [3.1] OS: WindowsXP Home Edition [3.2] コンパイラ(バージョン): [3.3] 言語:Cのみです [4] 期限:2005年02月27日 まったくと言っていいほど詳しくないので、お手数かける場合があると思いますがよろしくお願いします。
コンパイラはボーランドです
>>71 まったくわからないなら、ここで教えられる量じゃない
入門サイト見たり入門書買え
TurboC1.01っていったら16bitアプリしか作れないじゃん XPで動かないじゃん
てか、未だに TurboC なんて使ってる奴いるのかよ。
71は使ってるんだろ お前がとやかく言う事じゃねえよ
1.0ならフリーコンパイラになってたよな。1.01Jって事は日本語版か?
84 :
ホルモン :05/02/08 15:29:24
[1]授業単元:C言語 [2]問題文:商品作りがうまくいった年は商品の数が倍になります。そうでなかった年は商品の数が13個減ります。商品1個からはじめて、1年目で2個、2年目で4個、3年目で8個になりました。ある年でちょうど100個になりました。それは最短で何年目のことでしょう。 [3]環境 [3.1]OS:UNIX [3.2]コンパイラ:gcc [3.3]言語:C言語 [4]期限:2005年2月9日17:00まで [5]その他の制限:リストを用いること。途中経過も表示すること。
85 :
ホルモン :05/02/08 15:30:40
続き 少し前にも書き込んだのですが、自分ではどうしてもできないのでまた書き込みました。 よろしくお願いします。
>>84 #include <stdio.h>
int main() {printf("1st year: 2 pcs.\n2nd year: 4 pcs.\n3rd year: 8 pcs.\n4th year:16 pcs.\n5th year: 32 pcs.\n6th year: 64 pcs.\n7th year: 128 pcs.\nThe answer is 7th year.\n"); return 0;}
>>71 Cのみで、ボタンはどうやって表示するの?
#API直叩きは面倒だからパス。
[1] 授業単元:初心者C++独習 [2] 問題文(含コード&リンク): 物理の公式を使って 公式は 最終速度 1.Final Velocity = Initial Velocity + Acceleration * Time 最終速度の二乗 2.pow(Final Velocity, 2) = pow(Initial Velocity, 2) +2*Acceleration * Distance 距離 3.Distance = Initial Velocity * Time + Acceleration * (pow(Time, 2))/2 距離 4.Distance = Average Velocity/Time 平均速度 5.Average Velocity = (Starting Velocity + Ending Velocity)/2 Header file(例:distance.h)を使って以上の公式を計算するプログラムを作らないといけません。 結果をテストするMainプログラムも必要です。 [3] 環境Codewarrior v9.2 [3.1] OS:Win XP [3.2] コンパイラ(バージョン):Codewarrior v9.2 [3.3] 言語:C++ [4] 期限:二月九日まで [5] その他の制限:関数の名前 Compute_Final_Velocity_Using_Time: 1.の公式 パラメータ−は初期速度、加速と時間 Compute_Final_Velocity_Using_Distance: 2.の公式 パラメーターは初期速度、加速と距離 Compute_Distance_Using_Initial_Velovity: 3.の公式 移動した距離を算出させる。 パラメーターは初期速度、時間と加速 Compute_Distance_Using_Average_Velocity: 4.の公式 パラメーターは平均速度と時間 Compute_Average_velocity: 5の公式で平均速度を算出する。 パラメーターは初期速度と最終速度 よろしくお願いします!
89 :
ホルモン :05/02/08 15:45:42
>>86 ちょうど100個なので絶対どこかで13個引かなければいけないので倍していけばいいというものではないんです。
あと線形リストが絶対条件です!!
>86 ここはそういう事をするのが趣旨の板なわけ?
>>88 そこまで情報があって、何がわからないの?
例えば1なら
double Compute_Final_Velocity_Using_Time(double initialVelocity, double acceleration, double time) {return initialVelocity + acceleration * time;}
とするだけなんだけど。
> [1]授業単元:C言語 > [2]問題文:商品作りがうまくいった年は商品の数が倍になります。そうでなかった年は商品の > 数が13個減ります。商品1個からはじめて、1年目で2個、2年目で4個、3年目で8個になり > ました。ある年でちょうど100個になりました。それは最短で何年目のことでしょう。 > ~~~~~~~~~~~~~~~ > [3]環境 > [3.1]OS:UNIX > [3.2]コンパイラ:gcc > [3.3]言語:C言語 > [4]期限:2005年2月9日17:00まで > [5]その他の制限:リストを用いること。途中経過も表示すること。 ~~~~~~~~~~~~~~~~~~~
>>93 > [5]その他の制限:リストを用いること。途中経過も表示すること。
漏れの目が悪いのかな、どこに線形リストって書いてあるんだろう。
つーか、プログラムで求めろとはどこにも書いてないわけで……
>>95-96 線形リストと書いてないのは事実だけど。
・提示されたのは、ちょうど100個じゃない
・提示されたのは、線形じゃないとしてもどのリストも使っていない
・プログラムで求めるのは常識的に考えれば分かる
は言えると思うけど。
こんなこと言ってたら、お前が作れって言われそうだな。
>95、96 私の目からは、 ・丁度100になる最短ステップ数とその経過 ・それを代入、表示する単方向リスト の二つを作成する課題だと。 どう実装するか、勉強になるな、と思って眺めていたわけですが、 私の日本語読解力不足でつかそうでつか小学校からやり直しですかそうでつか逝ってきまつ。
小物どもはつまらんことで言い合って大変だな
可哀想に・・・ とか言ったらお前が作れと言われそうだな。
>>101 お前は大物なのかと問いたい。
よろしければお問いつめ致したい。
>>104 大物らしくさくっと作ってくれるでしょうから御覧アレ
(・3・)アルェー
めんどくさくてリスト使いたくない。 リスト使わないなら簡単でコーディングする気おきるんだが。
>107 依頼者では無いのですが、 最短で10ステップ消費して100に辿り着くと思うのですが、 これ、どういったアルゴリズムで求めるのでしょうか? #全く持って個人的な興味なんですが(ーー;) 1;2;4;8;16;32;(19);38;(25);50;100の10ステップ これ、コードにするとすればどう表現するんでしょう?
最短の操作回数で解を求めるのではないので 再帰総当りでやれば良いと思っただけ。
どこでリストを使えばいいのかがまったく分からん
再帰的に求めるなら 100 50 25 奇数なので 38 19 奇数なので 32 16 8 4 2 1 と逆にすれば計算できたりする
>>84 typedefstructstruct_Cell*Cell;
typedefstructstruct_NumCell*NumCell;
#defineNULL((void*)0)
structstruct_Cell {
NumCellmGood;
NumCellmBad;
};
structstruct_NumCell {
intmNum;
CellmNext;
};
staticCell
NewCell( NumCell pGood, NumCell pBad ) {
Cell v = (Cell)malloc( sizeof( struct struct_Cell ) );
v->mGood = pGood;
v->mBad = pBad;
return v;
}
staticNumCell
NewNumCell( int pNum ) {
NumCell v = (NumCell)malloc( sizeof( structstruct_NumCell ) );
v->mNum = pNum;
v->mNext = NULL;
return v;
}
あ〜再帰的にする必要ないか…
typedefstructstruct_AnswerList*AnswerList; structstruct_AnswerList { intmNum; AnswerListmNext; }; staticAnswerList NewAnswerList( int pNum, AnswerList pNext ) { AnswerList v = (AnswerList)malloc( sizeof( struct struct_AnswerList ) ); v->mNum = pNum; v->mNext = pNext; return v; } staticvoid AdvanceYear( NumCell p ) { if ( p->mNext == NULL ) { p->mNext = NewCell( NewNumCell( p->mNum * 2 ), NewNumCell( p->mNum - 13 ) ); } else { AdvanceYear( p->mNext->mGood ); AdvanceYear( p->mNext->mBad ); } }
staticAnswerList Find100( NumCell p ) { if ( p->mNum == 100 ) return NewAnswerList( p->mNum, NULL ); if ( p->mNext == NULL ) return NULL; AnswerList w; w = Find100( p->mNext->mGood ); if ( w != NULL ) return NewAnswerList( p->mNum, w ); w = Find100( p->mNext->mBad ); if ( w != NULL ) return NewAnswerList( p->mNum, w ); return NULL; } int main( int argc, char* argp[] ) { NumCellw = NewNumCell( 8 ); intwYear = 3; while ( wYear++ ) { AdvanceYear( w ); AnswerList v = Find100( w ); if ( v != NULL ) { while ( v != NULL ) { printf( "%d\n", v->mNum ); v = v->mNext; } printf( "At year %d\n", wYear ); break; } } }
ってな感じでどう?リスト使いまくってみたよ。 C って久しぶりに書いたけど、めんどいね。
がーん、タブが消えてくっついちゃってるよ
>109 済みません、消防にも理解出来る様解説して戴けますと助かります<(_ _)> >110 当方も、手書きで最短解を求める際は {1,2,4,8,16,32,62,128,256}より、 [-13]{3,19,51,115,243}:{6,38,102,230}} [-13]{6,37,102,230}:{12,74,204} という風に3次元配列に展開、それより100を検索という手順で総当りしたのですが、 これ、数式的に式になりそう・・・と思いつつも見出せずにいました。
>>112 発想がすごいね!
最短であることを別建てで証明しなくちゃいけないのが難点だけど。
>>120 数値の大きい方から順々に値を減らしているんだから、最短なのは自明。
>112 おぉ!すごい・・・・ 成る程、こういう考え方もあるのか・・・頭堅くなってるなぁ
>121 重箱の隅つつきで相済みませぬ。 課題が「商品の数が13個増えます」だとその通りだと思うのですが、 「減ります」故にターゲットの100を1ステップオーバーした値も 吟味される必要があるのでは無いのでしょうか? #勘違いでしたら<(_ _)>です
>123 書いた直後に思いつきました。 [113]は素数なのでこの値は評価される価値の無い値でした。
>>84 #define NULL ((void*)0)
typedef struct struct_AnswerList* AnswerList;
struct struct_AnswerList {
int mNum;
AnswerList mNext;
};
static AnswerList
NewAnswerList( int pNum, AnswerList pNext ) {
AnswerList v = (AnswerList)malloc( sizeof( struct struct_AnswerList ) );
v->mNum = pNum;
v->mNext = pNext;
return v;
}
static AnswerList
Find100( int pSY, int pEY, int pNum ) {
if ( pSY == pEY ) return pNum == 100 ? NewAnswerList( pNum, NULL ) : NULL;
AnswerList w;
w = Find100( pSY + 1, pEY, pNum * 2 );
if ( w != NULL ) return NewAnswerList( pNum, w );
w = Find100( pSY + 1, pEY, pNum - 13 );
if ( w != NULL ) return NewAnswerList( pNum, w );
return NULL;
}
int main( int argc, char* argp[] ) { int wYear = 3; while ( wYear++ ) { AnswerList v = Find100( 3, wYear, 8 ); if ( v != NULL ) { while ( v != NULL ) { printf( "%d\n", v->mNum ); v = v->mNext; } printf( "At year %d\n", wYear ); break; } } } 以上タブでくっついたのを直すついでに探索手続きにリストを 使わないようにしてみた例
>>121 自明かなぁ、例えばもし設問が2倍と28引くだったら
8,16,32,64,128,100って経路が最短になる。
ってことは13の場合は100 から下がる方向で考える方が
最短であることを証明する必要があるような気がするけど。
おそらく、出題者は二分木で表す方法を理解させようとしているんだと
思う。でも、出題が悪い。
>>127 これには汎用の最短解法は発見されていないと思う。
なんか、プログラムの宿題と言うより、算数の宿題だな。 解いた過程と結果の文章を、printf()で表示した方がいいんじゃないか?(w
>127 このケースだと、100+13=113が100超えの最短経路となり得る可能性、ですよね。 多分、 再帰的に考えたとして、 113<2で割れないので 100 ・・・ となるのではないでしょうか? #と書いてて思ったが、2ステップマイナスで最短経路なんだから、 #オーバー側も126まで評価する必要が? ##それってスターの様なコストポインタが必要になってくるような・・・
自明じゃねーな(´Д`)ムフ- 数学板往ってくる_| ̄|○
>121 あいやまたれいっ! なんか久々に熱い議論で楽しいです(=´▽`=)
まったくもってスレ違いだけどなw 数学系の問題は数式問いておいて欲しいな……。
そこの部分も課題だと思って必死こいて考えてましたw 未だにわからんwww #コスト計算してスターってのはワイルドカードみたいなもんですよね
【質問テンプレ】
[1] 授業単元: 計算物理学演習
[2] 4次のルンゲクッタ法を用いてα粒子を金の原子核に
当てた時の粒子の軌道がどうなるか:
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:2005年02月10日10:00まで
[5] その他の制限:
dvx/dt= (2Z e^2 x)/(4 pi e0 m )r^3
dx/dt=vx
r=(x^2+y^2)^1/2
(yはx->yに入れ替え)
の連立微分方程式からx,vx,y.vyを順次もとめ軌道のグラフをexcelなどで作成
pi=3.14159265 Z=79 e=1.6022e-19 e0=8.8542e-12 m=6.0174e-10
時間間隔はdt=1.0e-21 初期値はx=-1.0e-12 y=-1.0e-14から1.0e-14間隔で10点ほど
vx=1.0e7 vy=0.0 繰り返し回数は150回程度
という条件でお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/191.txt と一応自分で作ったのですがどうしてもx[i],y[i]の値が先に進みません。何故でしょうか?
現在の状態から、次の成功、失敗に分岐する、それを記録していくだけ、 がんばれ
[1] 授業単元: C言語 提出期限は木曜日です、宜しくお願いします 1.以下の仕様に基づいて,任意の探索開始点から訪問できる全ての頂点を訪問する関数 void visit(int k) を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ. (必要に応じて,ヘッダー・ファイルをインクルードすること.) また,この関数のアルゴリズムを説明せよ. * 関数名:visit * 仮引数int k:探索を開始する頂点番号 * 戻り値なし(void型) * 機能:探索を開始する頂点番号kを受け取り,キュー(void enqueue(int dt)およびint dequeue())を使用した幅優先探索をおこなって, 訪問可能な全ての頂点を訪問し,訪問した頂点を表示する. 2.以下の仕様に基づいて,隣接リストから指定された接続関係(辺)を削除する関数 void delete_edge(int v1, int v2) を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ. (必要に応じて,ヘッダー・ファイルをインクルードすること.) * 関数名:delete_edge * 仮引数int v1, int v2:v1とv2との間の接続関係を削除する. * 戻り値なし(void型): * 機能:受け取ったv1とv2との接続関係を削除するために,隣接リストから, v1とv2との接続関係に対応するノードを削除する. 隣接リストへの追加と同様に,adj[v1]からv2のノードを削除し, adj[v2]からv1のノードを削除すること.
宿題とゆーか、既出だけど・・・どなたか書いてくださいな。 [1] 授業単元: なし [2] 問題文: 以下の置換をするプログラムを作成せよ。 ・&を&に ・<を<に ・>を>に ・タブや空白を適当な数の に 補足:標準入力から標準出力へ出力するだけでも良いが、 引数がある場合はそれを入力ファイルとする機能をつけるとなお良い。 オプションでタブ幅を決められるとなお良い。 [3] 環境 ANSI C (89年版) [4] 期限:無期限 [5] その他の制限: ・・・固定幅で標準入力→標準出力のやつは、昔作って書き込みしたはずなんだが、みつからん(^^;;
>>137 多分、接続関係(辺)のデータ定義と、それをを追加する関数が与えられてると思うんだが・・・開示してくれい。
>>140 俺もそう思うことがあった、でも、誰でも手が届くととこに、
すごいソースがあるからがんばれ。ヒントは慶応かな?
143 :
デフォルトの名無しさん :05/02/08 22:16:19
【質問テンプレ】 [1] 単元:二分木 [2] 文字列のアスキーコードを小さいものは左、大きいものは右に登録して二分木を作る。 また、登録した単語の種類を出力する。 [3] 言語:C [4] 期限:2月中 いろいろ参考にしながら↓まで書いたんですが、insertNodeのあたりでいつもコンパイルエラーが出て困ってます。 char x[]は実験用の適当な配列です。提出するときはint main(int argc, char argv[])で入力したものを使います。 単語の種類を出力する方法も考えあぐねてます。 あと他にも間違ってるかもしれないので見つけたら教えてください。 #include <stdlib.h> #include <stdio.h> struct tnode { char n; struct tnode *left, *right; }; struct tnode *createNode (char); struct tnode *insertNode (struct tnode *, char);
144 :
デフォルトの名無しさん :05/02/08 22:17:30
//143の続き// int main() { int i; char x[10] = {"rr", "aa", "re", "gr", "gg", "ge", "ag", "we", "wh", "qr"}; struct tnode *top; top = createNode(0); for (i = 0; i < 10; i++) top = insertNode(top, x[i]); exit(0); }
145 :
デフォルトの名無しさん :05/02/08 22:18:04
//144の続き// struct tnode *createNode (char num) { struct tnode *node; if ((node = malloc(sizeof(struct tnode))) == NULL) { fprintf(stderr, "malloc\n"); exit(1); } node -> n = num; node -> left = NULL; node -> right = NULL; return node; } struct tnode *insertNode (struct tnode *node, char num) { node -> n; if (!node) { node = createNode(num); return node; } if (strcmp(char *num, char *node) > 0) node -> left = insertNode(node -> left, num); if (strcmp(char *num, char *node) < 0) node -> right = insertNode(node -> right, num); return node; }
[1] 授業単元: 情報処理概論 [2] 問題文(含コード&リンク):ニュートン法を用いて以下の問いに対するプログラムを作成しなさい。 直径2mの半球状をした椀形の船に体重60kgの 人間が乗ったとする。船の質量を10kgとするとき、 この船の沈む深さを求めなさい。 [3] 環境 [3.1] OS:winxp [3.2] コンパイラ(バージョン): active basic [4] 期限:2/11までです。 [5] その他の制限:おとすと留年になってしまいます。 どうしてもわからないので教えてもらえませんか?
なになに法と言われても俺はいちいち覚えてる訳じゃないんでできれば数式あげて欲しいものです… ワザワザ他人のためにそこから調べだすのはかったるいし
わかる人おねがいします。。
>>147 タイタンでメタンが液化してる条件でよいか?
世の中には学校でActive basicを使ってる所があるのか 日本の未来はダメだな お前らもアメリカにこいよ
>>149 レスありがとうございます。
ニュートン法とは、紙と鉛筆で解けない、代数方程式の近似解を求める手法
らしいです。
ニュートン法でといてもらわなくてもよいので回答お願いします。。
問題文には数式とかかいてなくて・・・すみません。
>>152 冗談は俺の顔だけでお願いします。
>>153 真性バカですみません。。
ま、あれだ。スレタイ嫁。
ここはC/C++のスレなわけで、返ってくるコードはC || C++なわけで
CやC++のコード出してもらって、次はそのコードからABに変換する プログラムをねだればいい
それだ!
CでもABのコンパイラでも通るソースをねだるという新手もありで
もう、ひつまぶしを食いながら、見てるのは変態だな。
Cの前がABだから、共通点あるんじゃねえの?
いっそのことDにしたらどうか?
お騒がせしましたww
C言語で提出日は木曜日です。 o 頂点名と頂点番号の関係は以下の通りとする. + 頂点名:頂点番号 + A:0 + B:1 + C:2 + D:3 + E:4 + F:5 + G:6 + H:7 + I:8 + J:9 + K:10 + L:11 + M:12 1.#defineを使って,以下の仕様に基づいたマクロ定義をせよ. (文中の「」記号は強調のために記述したものである.) * 頂点の最大数を表わす識別子「MAX_V」を,置換リスト「13」に置き換える. * 未訪問を表わす識別子「UNSEEN」を,置換リスト「-999」に置き換える. * 接続関係データのファイル名を表わす識別子「FNAME」を,置換リスト「"Data3.dat"」に置き換える. 2.以下の仕様に基づいて自己参照構造体を宣言せよ. * 構造体タグ名:ELEMENT * メンバ: o 隣接頂点の頂点番号を表すint型の変数:変数名 Num o ELEMENT型へのポインタ型変数:変数名 Next * typedefによって再定義する型名:NODE
3. グローバル配列として以下の配列を定義せよ. NODE型へのポインタ配列: * 配列名:adj * 要素の数:MAX_V(問題1参照) 以下の仕様に基づいて,ファイル(ファイル名 FNAME(問題1参照))から接続関係を読み込んで,上記のポインタ配列で定義した隣接リスト(adj[])に追加する関数 void input_data_from_file() を定義せよ.そして,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ(必要に応じて,ヘッダー・ファイルをインクルードすること.).また,この関数の処理内容を説明せよ. * 関数名:input_data_from_file * 仮引数:なし * 戻り値:なし(void型) * 機能:接続関係を記したデータファイル(FNAME)を開いて,ファイルの先頭から読み込みながら,隣接リストadj[]にNODE型のノードとして追加する. ファイルには,接続関係が以下のように記述されている. AB(頂点Aと頂点Bとが隣接していることを表わす.) AF BC BD BE CE DE DF EF 隣接リストに追加するとき,頂点名を頂点番号に変換して追加する(データ処理に関する前提を参照). 隣接リストへの追加処理において,頂点Xと頂点Yとを結ぶ辺(XY)が読み込まれると, Yの隣接リストadj[Y]にXを,そして, Xの隣接リストadj[X]にYをそれぞれ追 加する. 例:ABを読み込んだ場合,隣接リストadj[0]の先頭ノード(NODE型)として,メンバNumが1のノードを追加する. さらに,隣接リストadj[1]の先頭ノード(NODE型)として,メンバNumが0のノードを追加する.
4.以下の仕様に基づいて,キューにデータ(頂点番号)を追加する関数 void enqueue(int dt) を定義せよ.(必要に応じて,ヘッダー・ファイルをインクルードすること.) * 関数名:enqueue * 仮引数int dt:キューに追加するデータとして,int型のデータ(頂点番号)を受け取る. * 戻り値:なし. * 機能:int型のデータ(頂点番号)を追加・取り出しできるキューに,頂点番号を追加する.仮引数として受け取ったint型のdtをメンバNumの値としてもつ NODE型のノードを,連結リストの先頭ノード として追加すること.また,キューの先頭ノードを指すポインタとして, 以下のグローバル変数を使用すること(必要であれば初期化すること). NODE *q_head; 5.以下の仕様に基づいて,キューからデータ(頂点番号)を取り出す関数 int dequeue() を定義せよ(必要に応じて,ヘッダー・ファイルをインクルードすること.). * 関数名: dequeue * 仮引数:なし. * 戻り値 (int型):キューのデータ構造に基づいて取り出されるint型のデータ(頂点番号) ※キューにデータがない場合,他の関数および機能の実行に影響のない戻り値を返すこと. * 機能:呼び出し側にキューから取り出したデータ(頂点番号(int型))を返す.上記のvoid enqueue(int dt)のデータ構造に基づいて,連結リストの操作をおこない,末 尾ノード(ノードがひとつの場合は先頭ノード)を取り出すこと.
6.以下の仕様に基づいて,任意の探索開始点から訪問できる全ての頂点を訪問する関数 void visit(int k) を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ.(必要に応じて,ヘッダー・ファイルをインクルードすること.) また,この関数のアルゴリズムを説明せよ. * 関数名:visit * 仮引数int k:探索を開始する頂点番号 * 戻り値なし(void型) * 機能:探索を開始する頂点番号kを受け取り,キュー(void enqueue(int dt)およびint dequeue())を使用した幅優先探索をおこなって,訪問可能な全ての頂点を訪問 し,訪問した頂点を表示する. 7.以下の仕様に基づいて,隣接リスト(問題3参照)から指定された接続関係(辺)を削除する関数 void delete_edge(int v1, int v2) を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ. (必要に応じて,ヘッダー・ファイルをインクルードすること.) * 関数名:delete_edge * 仮引数int v1, int v2:v1とv2との間の接続関係を削除する. * 戻り値なし(void型): * 機能:受け取ったv1とv2との接続関係を削除するために,隣接リストから,v1とv2との接続関係に対応するノードを削除する. 隣接リストへの追加(問題3参照)と同様に,adj[v1]からv2のノードを削除し, adj[v2]からv1のノードを削除すること.
>>165 >1を読めないか?読めないのか?読もうとしてないのか?読みたくないのか?
出題が進化してるなw 一見見たところ、不都合が無いが、バカじゃないのw もっと面白い具体的な、例題作れ。
おれとしては、リストとかじゃなくて、 画像認識ではリスト構造は必須だし、変だ。
自由課題お願いします。 テーマは各自で決めよ、との事です。
>>172 過去ログ漁って自分の好きなテーマのやつをコピーしろ
>>172 ふむ、それじゃ出来るだけ短いコードを書くというテーマで行きますか。
main(){}
>>170 先公も見てんだな、いい事だ。
でも課題出されたやつには厳しくお願い、糞プログラマー卒業させるな
>>172 添削する院生を困らせるために、IOCCCに出せるようなヤツにしようぜ。
178 :
37 :05/02/09 08:59:09
どなたかお願いします。
//
>>37 合ってるかどうかは分からん。ユーザによる入力間違いの処理はしていない。
#include <stdio.h>
void shell_sort(int data[],int n){
int i,j,t,d;
for(d=1; d<n/9; d=3*d+1);
for(; d>0; d/=3){
for(i=d; i<n; i++){
j = i;
while(j>=d && data[j-d]>data[j]){
t = data[j]; data[j] = data[j-d]; data[j-d] = t; j -= d;
}
}
}
}
int main(){
int x[100]; int i,len=1,type=1;
printf("input (max-100):"); scanf("%d",&len);
len = (len>100)?100:len;
printf("s?(1) k?(2):"); scanf("%d",&type);
printf("input please\n");
for(i=0; i<len; i++){
printf("x[%d]:",i); scanf("%d",&(x[i]));
}
shell_sort(x,len);
printf("sort type:%s\n",(type==1)?"s":"k");
for(i=0; i<len; i++)
printf("x[%d]:%d\n",i,(type==1)?x[i]:x[len-i-1]);
return 0;
}
180 :
36 :05/02/09 11:44:13
おぉ!ありがとうございます! よろしければ36のほうもやって欲しいのですが。両方ださないといけないので・・・
>>180 答えは目の前にあるってのに、ちょっとは読んでみようぜ。
入力項目が固定されているわけだから、
>>179 から入力処理を省くだけだろう。
main を以下に置き換え。ちゃんと内容確認してから提出してくれよ。間違ってても知らん。
int main(){
int x[10]; int i,len=10;
printf("input please\n");
for(i=0; i<len; i++){
printf("x[%d]:",i); scanf("%d",&(x[i]));
}
shell_sort(x,len);
printf("sort type:s\n");
for(i=0; i<len; i++)
printf("x[%d]:%d\n",i,x[i]);
return 0;
}
どらたか解いてもらえないでしょうか…
おーい、「どらたか」いるか〜
説明せよとかがめんどい
だねえ
[1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク): マインスイーパを作成せよ。サイズは9*9とする。 [3] 環境 [3.1] OS: XP pro [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:木曜の夜までに作っていただければ幸いです [5] その他の制限: なし です。どうかよろしくお願いします。。。
>>186 Windowsについてるアレをそのまま作れという事か?
すみません詳しいところを書き忘れました。 配列には ????A ???A ??A ?A A ?A ??A ???A ????A といった表記のプログラムを作成し、それを利用する クリックする位置はscanfで文字入力方式にし、縦を数字、横を アルファベットで表す。入力毎に状況表示すること。点数表示は マークに成功した個数とする。配列は一次元配列を使用すること です。よろしくお願いします。
>>188 せっかく作り始めてたのに!!
すげえムカついた!!!
――【注意点】――――――――――――――――――――――――― ・質問は必ず【質問テンプレ】に従ってください。 ・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。 ・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。 ・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。 ―――――――――――――――――――――――――――――――
つーか、ほんとに宿題かと小一時間(略
ただのヒッキーに反応するなよ
193 :
88 :05/02/09 15:17:49
すみません・・プログラムを作ってみたのですがFunction should return a value in functionとToo many types in declaration in function main()等のErrorが出て出力させることができません。 どなたかプログラムを見本に書いていただけないでしょうか?
ブルドッグソースみして
>>193 中学生の知識ありゃ読めるだろ?
コンパイラの言う通りにすれ。
>>193 関数は計算の結果をreturnして渡すべきだ
Main関数を宣言しすぎている
なんか意味違うような…
struct hoge {}; の後ろの ; 付け忘れてない?
>>193 たぶん前者はエラーではなく警告。
でも無視しないに越したことはない。
199 :
デフォルトの名無しさん :05/02/09 17:14:03
[1] 授業: Cプログラミング [2] 問題文 FILE1にある文章(英語-小文字)をFILE2にコピーし、その際 その文章を全て大文字に変換せよ。 [3] 言語:C [4] 期限: 早ければ早いほどいいです。 #include <stdio.h> main() { FILE *f1 = fopen("file1","r"); FILE *f2 = fopen("file2","w+"); char buff[128]; int br; while( (br = fread(buff, 1,1, f1)) > 0) fwrite(buff, 1, br, f2); fclose(f1) ; fcpose(f2); } 上記のプログラムを元に編集お願いします。
確認してねーけど、多分動くだろ。 #include <stdio.h> #include <ctype.h> int main(void) { FILE *f1 = fopen("file1","r"); FILE *f2 = fopen("file2","w+"); char buff[128]; int br; while( (br = fread(buff, 1,1, f1)) > 0) { int i; for (i = 0 ; i < br ; ++i) { buff[i] = toupper(buff[i]); } fwrite(buff, 1, br, f2); } fclose(f1) ; fcpose(f2); return 0; }
br って 0 か 1 しかないだろ
fgetchar()使うつもりだったんじゃね?
>>202 char buff[128];
それならなんでこんなことを・・・
>>189 余計なお手数おかけして大変申し訳ありませんでした。私用で席を離れておりまして
お詫びがこんな時間になってしまいました。
>>190 テンプレは読んでおりましたが自分の書き込みを確認していなかったために
付けたしをしてしまう結果となってしまいました。
>>191 本当です。課題です。
もし再度検討していただければ幸いです。
>>189 さんはじめ、本当にご迷惑おかけしました
>>201 read() と同じ仕様だと思ってた(;゚Д゚)
>>186-188 #include <stdio.h>
#define MAX_X 9
#define MAX_Y 9
int main(void)
{
char field[MAX_X][MAX_Y];
int i, j;
char buf[128];
for(j = 0; j < MAX_Y; j++)
for(i = 0; i < MAX_X; i++)
field[j][i] = 0;
do{
printf("--abcdefghi\n");
for(j = 0; j < MAX_Y; j++){
printf("%d:", j + 1);
for(i = 0; i < MAX_X; i++)
printf("%c", field[j][i] ? '0' : '?');
printf("\n");
}
do{
printf("input: ");
fgets(buf, sizeof(buf), stdin);
}while(buf[0] < 'a' || buf[0] > 'i'
|| buf[1] < '1' || buf[1] > '9');
field[buf[1] - '1'][buf[0] - 'a'] = 1;
}while(1);
return 0;
}
>>208 さん本当にありがとうございます。
見直して今度は自分でも組めるようにがんばります
188見てませんでした…
>>199 >fcpose(f2);
>上記のプログラムを元に編集お願いします。
#include <stdio.h>
#include <ctype.h>
int fcpose(FILE * f) {return fclose(f);}
int main(void)
{
FILE *f1 = fopen("file1","r");
FILE *f2 = fopen("file2","w+");
char buff[128];
int br;
if (f1 == NULL) return 1;
if (f2 == NULL) {fclose(f1); return 1;}
while((br = fread(buff, 1, 1, f1)) > 0) {
buff[0] = toupper(buff[0]);
fwrite(buff, 1, br, f2);
}
fclose(f1);
fcpose(f2);
return 0;
}
>>213 自分自身に喰わせたらCOBOLみたいに見えて吐き気がした ..orz
[1] 授業単元: 数値解析 [2] 問題文(含コード&リンク): 下に書きます。 [3] 環境 [3.1] OS: win xp [3.2] コンパイラ(バージョン): bcc [3.3] 言語:C [4] 期限:2005年2月11日 ガウス・ザイデル法を用いて連立一次方程式 6x+2y+3z=6 2x+3y+4z=9 3x+4y+7z=15 の解を求める。 [5] その他の制限: 係数は自分が入力できるようにしていただきたいです。 どうぞ、よろしくお願いします。
>>213 最近こんなバカが増えたよな。
同一人物か?
誰と同一人物だと言いたいのか分からないけど多分そう。 気分害したならごめんね
ぐぐれ無いのかしょうがない、2chがプロきしかよw デリゲートされないよん
>>215 ガウス・ザイデルって収束させるやつだっけ?
ガウス・ジョルダンなら手元にプログラムがあるんだけどなぁ
収束させるやつ。 列と行でピボットしてな。
ザイデル法もあった 実験用に作ったやつだから入出力とか少し変だけどいいかな?
初耳、ガウスジョルダンしか知らんかった。教えて〜
ついでに複素連立一次方程式のガウスジョルダンもあった 交流回路の解析に便利
あ、そかそか。
100うんぬんのネタ(
>>84 )、出題意図がわかった。
2分木を使って探索ってのは、あれだ。質問したひとが勝手に思ってただけ。
アルゴリズムは幅優先探索で、リスト使うのは、状態登録の場面だけでいいわ。
>>137 のenqueue(),dequeue()みて思ったよ(^^;;
メモリ効率わるいけれど、配列固定や配列の伸張でやるよりは楽かも。
あ、提出期限すぎてるね。
[1] Introduction of C language/Pointer Application
(C言語入門/ポインター)
[2]
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=158 [3] 環境
[3.1] OS: Windows XP
[3.2] Microsoft Visual C++ 6.0
[3.3] C
[4] 2月11日0:00pmまで
[5] その他の制限:
最初のコメントの部分が問題文ですが、全部英語です。
日本語の用語もよくわからないので間違ってたらごめんなさい。
問題を訳すと、
キーボードからintの配列(array)のサイズを読み込んで
(私のコードだとgetData)
そのメモリーをheapに動的に割り当て(dynamically allocate)、
キーボードから配列の中に整数を読み込みます。
(alloInteger)
で、同じサイズのポインター配列を動的に割り当て、
それぞれのポインターがそれぞれの配列の要素を指すようにします。
(alloPointer)
もとの整数配列をいじらないことが条件になっているので、
ポインター配列を挿入ソートして小さい順から並べます。
(interSort ← ここがどうもおかしい感じ)
そして最後に結果を、元の順、小さい順、大きい順に並べます。
(print)
よろしくおねがいします。
230 :
229 :05/02/10 15:29:19
学校でビルドした時はエラーなしでwarningが出たんですが いま自宅でやってみたら何も出ませんでした。 どっちにしろソートされてないんですが。 あと、コピペしたらコードのインデントが崩れてしまいました。 読みづらくてすいません。
C言語です。どうぞお願いしますm(_ _)m 以下のテキストファイルから日付、時間、ファイル名(jpg)をそれぞれ 取り出して別々のテキストファイルに保存して下さい。(ファイル名は任意) -----------------abc.txt-------------------------- 2005/02/01 11:02 5,785 10046a541.jpg 2005/02/02 11:04 22,143 17092705-3.jpg 2005/02/03 11:58 18,156 1994NBS_LG.jpg -------------------------------------------------
日付ファイル、時間ファイル、ファイル名ファイルを 作るということでいいの?
>>233 そうです。
なんなら日付ファイルだけでもいいですm(_ _)m
テンプレも見ない香具師はスルーでいいと思うよ
>>1 を見ていないだけでスルーはあんまりだ
せめて弄るだけ弄ってから放置にしよう
>>234 FILE *fin, *fdate, *ftime, *fname;
char date[100], time[100], length[100], name[100];
/* ファイルのオープンくらいは出来るとして。 */
while (fscanf(fin, "%99s%99s%99s%99s", date, time, length, name) == 4) {
fprintf(fdate, "%s\n", date);
fprintf(ftime, "%s\n", time);
fprintf(fname, "%s\n", name);
}
fname と lengthの名前が気に入らんが・・・こんなかんじ。
>>238 それだと100バイト超える場合大丈夫ですか?
そんなに長いファイル名なのかよ
>>238 ありがとうございます。ほんと嬉しいですm(_ _)m
>231 ありがとうございます! 参考にさせていただきます。
243 :
デフォルトの名無しさん :05/02/10 19:36:14
超初心者質問で申し訳ないのですが、 「ls」コマンドを入力しても No such file or directory って出るのですが( TДT) そのときのプログラムはこれです intmain() { printf( "Hello,World!" ); } 入門でいきまりつまずいて、泣きそうです。。。
245 :
デフォルトの名無しさん :05/02/10 19:54:59
int main() { printf( "Hello,World!" ); } これでいけるはず
246 :
デフォルトの名無しさん :05/02/10 19:58:12
#include <stdio.h> int main() { printf( "Hello,World!" ); }
>>245 intスペースmainですよね・・・
すみません・・・そうしてるのですが
なぜだかできません・・・。
>>246 #include <stdio.h>
でもだめです・・・。
これは神が自分には無理と言ってるのでしょうか・・・
>>244 ちょっとまて。lsでそのプログラムになんの関係が?
>>249 いまこのプログラムしか作ってないんですよ。
ls コマンドでディレクトリーの内容を見るためのものだろ 何をしたいんだ
ファイル名であるhello.cって出てくるはずですよね? それがなぜか出てこないんです・・・
なるほど。そういうことか。 lsっつーことはwindowsか?
あ、無茶苦茶書いてるorz windowsならばlsじゃなくてdirで見てみよ。
そうですwindowsです
dirでもやはり No such file or directory です。゚(゚´Д`゚)゜。
もうだめぽ・・・
何をしたいのか、何をしているのかがわからん
作ったはずのプログラムが作成されてない という事ですかね・・・? ちなみに今日はじめてCに触れました。
おしりが痒いんです
>>260 そうか、ボクがちょっと看てあげよう…
ん?これは酷い…
注射が必要だな。
こりゃあ、エディタの使い方やらコマンドプロンプトの使い方やらからやらんとダメだな。 Cコンパイラもインストールしてない可能性大だな… このスレで説明するには手が余る。
とりあえず、スレ違いということで これ以上のレスは控えますね。 ありがとうございました。゚・(ノД`)人(´Д`)人(Д` )・゚。
いまの釣り?
てんぷれつかってないからどっちでもいい
何か分かんなくなってきたorz VisualC++.NET(非2002) &MFC でバイナリデータ扱うPGやってるんだけど、 unsigned char a; a=0x80; ←これは出来る b=0x81; ←何故かbには0しか入らない 色々調べていると、どうやら漢字の1バイト目(0x81〜0x9f)だけは何を代入しても0になってしまうみたいで、 コンパイル警告も何も出ないしさっぱり分からん。 何か根本がおかしい気がするんだけど・・・何とかならんのこれ?
げ・・・誤爆・・・ スマソ 俺に聞けスレに描こうと思ってたのに何故・・・orz
たぶん、おまいが根本的におかしいです。 というか何をしたいのかさっぱりです。
>269 プログラム側でデータ加工してRS232Cに送りたいだけなんだが・・・ 送るデータが作れないので困っている
>>270 質問はテンプレに沿って書いてくれ
宿題ならな。
しね
うんこ
テンプレ厨うざすぎ。氏ね
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): I=√1/T(∫i^2dt) (積分範囲は0からTまで)を用いて、 振幅10Vの正弦波電圧の実効値を有効数字6桁で求めよ。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ(バージョン): BorlandC++ [3.3] 言語:C [4] 期限:2005年02月12日17:00まで [5] その他の制限: 特になし。 Iの式が見難いですがよろしくお願いします。
277 :
デフォルトの名無しさん :05/02/11 01:34:42
先生方、これをお願いいたします。 環境 WinXP .NET C++ 期限:明日の10時ぐらいまでには・・・ 1.double x, double yをメンバにもつクラスVECTOR2を作成せよ. 2.2つのdoubleを引数に取るVECTOR2クラスのコンストラクタを作成せよ. 3.点の座標を表示するメンバ関数printを作成せよ. 4.点の原点からの距離を計算するメンバ関数absを作成せよ. 5.2つの点の座標を足し合わせる演算子+を作成せよ.
Iの式がわかりましぇんw
>>277 #include <iostream>
#include <cmath>
class VECTOR2
{
double x, y;
public:
VECTOR2(double xs, double ys) : x(xs), y(ys) {}
void print() const{std::cout << '(' << x << ',' << y << ')';}
double abs() const{return std::sqrt(x * x + y * y);}
friend const VECTOR2 operator+(const VECTOR2& lhs, const VECTOR2& rhs)
{
return VECTOR2(lhs.x + rhs.x, lhs.y + rhs.y);
}
};
281 :
デフォルトの名無しさん :05/02/11 01:57:54
>>280 (TдT) アリガトウゴザイマス
ちょっと自分流にあわさせてもらいます。
#include <iostream>
#include <cmath>
using namespace std;
class VECTOR2
{
double x, y;
public:
VECTOR2(double xs, double ys) : x(xs), y(ys) {}
void print() const{cout << '(' << x << ',' << y << ')';}
double abs() const{return sqrt(x * x + y * y);}
friend const VECTOR2 operator+(const VECTOR2& lhs, const VECTOR2& rhs)
{
return VECTOR2(lhs.x + rhs.x, lhs.y + rhs.y);
}
};
これでもよかでしょうか?
あとこれ
VECTOR2(double xs, double ys) : x(xs), y(ys) {}
の∩( ´Α`)< 先生、意味がわかりません!
かまわんよ、作った側としてはあまりいい気はせんがね。 VECTOR2(double xs, double ys){x = xs; y = ys;}でも構わないけど、 こう書くとxとyは2度初期化されて無駄。 VECTOR2(double xs, double ys) : x(xs), y(ys) {}と書くと初めから xs,ysで初期化される。
283 :
デフォルトの名無しさん :05/02/11 02:03:09
>>282 なるほど。了解しました。
作って頂いたものにケチつけるようなマネをしてしまってすみませんでした。
精進いたしますペコペコ
[1] 授業単元: CSCI 142 HW#3 [2] 英語の文ですが、やることはプロントに次に車の最初のスピードを入力を最初に入力、 次に10文字までの車の種類(wheel-4,wheel-8など)を入力、そして最後のスピードを入力これのループです。 -99と入力するとループを終了させます。 車のスピードを0.00<x=<100.00でそれ以外(文字や0以下,100より上)は無視して計算を続けるようにします。 車の種類別の名前&最後の平均速度 と 総合の平均速度を出力 ※例えばユーザーが [3] 環境 [3.1] winXP [3.2] Visual C++ [3.3] C++ [4] 期限:2005年2月12日00:00まで [5] その他の制限: なし ループはできたのですが、範囲の指定が全くできませでした。 文字を入力するとえらいことに・・・ これに詰まって一睡もできず、やむ終えず投稿することにしました。 どなたか分かる先輩方お願いします。 直接メールかレスいただけるとありがたいです。
「やむ終えず」って書いていて違和感を覚えないんだろうか
日本人じゃないんだろう。多分。
>>288 時間が無くて「やむ終えず」じゃないの?
291 :
デフォルトの名無しさん :05/02/11 08:55:49
>>290 「やむ終えず」の「やむ」って何なんですか。
やむ終えず の検索結果のうち go.jp からの日本語のページ 7 件中 1 - 6 件目 (0.25 秒) やむ終えず の検索結果のうち ac.jp からの日本語のページ 36 件中 1 - 32 件目 (0.42 秒 これってどうなのかなぁ...
「やもうえず」の間違いだろ? 細かいとこにイチイチ突っ込むなよ。
>>292 >「やむ終えず」の「やむ」って何なんですか。
終わること
このスレは釣りがすごすぎる
病むを得ず
止むを得ずAtok15だと一発で変換できないな・・
>>297 勉強になりますなぁ。
というわけで、このスレは
ぼるじょあがC/C++で正しい日本語教えますYO!スレに変わりました。
どうでもいいから俺のちんぽこすってくれ
かしこまりました
|
|
|
|<
>>301 :あぁん・・・・。
|
|
PDF って時点で見る気もしない。
>>305 1) Trace the following code using blocks and pointers.
int x; /* 中に入っている値は不定 */
int y; /* 同上 */
int *ptr1; /* 指している場所は不定 */
int *ptr2; /* 同上 */
x = 2; /* xの値は2 */
y = 3; /* yの値は3 */
ptr1=&x; /* ptr1はxを指す */
y = *ptr1; /* yの値は3 */
ptr2 = ptr1; /* ptr2はxを指す */
ptr1 = &y; /* ptr1はyを指す */
*ptr1 = *ptr2 + *ptr1; /* yの値は6 */
y= x + y + *ptr1; /* yの値は14 */
で、最終的にxは2,yは14,ptr1は&y,ptr2は&x。
おう、なんか間違えたな(^^;;まーいーや。
直しとこう if(sscanf(str, "%lf%s%lf", &speed, vehic_name, &distance) != 3 || qualified(speed) == 0)
311 :
デフォルトの名無しさん :05/02/12 14:34:05
struct list{ char name[64]; long int telnum; long int time; long int money; }; int func(struct list *person){ int n,i=0; do{ printf("名前:");scanf("%s",person->name); printf("電話番号:");scanf("%d",&(person->telnum)); printf("勤務時間数:");scanf("%d",&(person->time)); printf("時給額:");scanf("%d",&(person->money)); i++;person++; printf("まだ入力しますか?Yes:1/No:0 :");scanf("%d",&n); }while(n); return (i); } int main(int argc, char *argv[]) { int n; struct list s[512]; n = func(s); printf("%s / %d / %d / %d \n",s[0].name,s[0].telnum,s[0].time,s[0].money); return 0; } 構造体の各メンバに適切な代入がなされないのはなぜでしょうか?
312 :
デフォルトの名無しさん :05/02/12 14:40:22
ぉぃぉぃ。
>>311 ちゃんと動くんだが
ただpersonインクリメントするのはちょっと…
最初何故動くんだろうと思ってしまった
まぁ、常套手段としては &(person->money) ではなく &person[i].money だろうね。
(person+i)->moneyでもいいけど person++しても、s++になるわけじゃないんだな 勉強になりましたわ
316 :
311 :05/02/13 00:37:12
>>316 使ってるコンパイラは何?
%dはint用、longには%ldを使わないといけない。sizeof(int) < sizeof(long)な処理系だと
これをちゃんとしないとうまくいかない。
うpろだの208です。 授業でもうついていけないまま提出期限に終われる日々です。 たすけてください
319 :
デフォルトの名無しさん :05/02/13 01:28:43
3) #include <stdio.h> #include <stdlib.h> #define SIZE 10 int main(void) { int data[SIZE]; int i; char str[BUFSIZ]; for(i=0; i<SIZE; i++) { if(fgets(str, sizeof(str), stdin) == NULL) exit(1); if(sscanf(str, "%d", &data[i]) != 1) exit(1); } for(i=0; i<SIZE; i++) if(data[i] >= 100) printf("%d ", data[i]); puts(""); for(i=0; i<SIZE; i++) if(data[i] < 100) printf("%d ", data[i]); puts(""); return 0; }
>>318 このぐらいタイプしてあげてくれ、読みにくすぎる。
【例】以下のようなプログラムを配列を使ってつくりなさい。
3) 配列data[0]〜data[9]に数値をキーボードより入力し、100以上の
数と、100未満の数をそれぞれ一行ずつで出力する。
4) キーボードより数字をgetchar()で順に入力し(終わりは^Z)、それ
ぞれの数字の頻度を求め、最後に出力する。EOFでぬけること
5) キーボードより金額を入力し、その金額におけるそれぞれの金種の
数を求め出力する。
例 入力金額が188977の場合。
.10000円. 18枚
5000円 1枚
1000円 3枚
. 500円 1枚
. 100円 4枚
50円 1枚
10円 2枚
. 5円 1枚
. 1円 2枚
5) #include <stdio.h> #include <stdlib.h> #define COIN_KIND 9 int main(void) { const int coin_money[COIN_KIND] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1}; int coin_suu[COIN_KIND] = {0}; int i, money; char str[BUFSIZ]; puts("金額を入力してください"); if(fgets(str, sizeof(str), stdin) == NULL)exit(1); if(sscanf(str, "%d", &money) != 1)exit(1); for(i=0; i<COIN_KIND; i++) { while(coin_money[i] <= money) { coin_suu[i]++; money -= coin_money[i]; } printf("%5d円 %d枚\n", coin_money[i], coin_suu[i]); } return 0; }
さっそく320、322さんが答えてくれて嬉しいのですが 習っていない命令文が入ってて… 教科書はやさしいC第二版をつかってるんですけど その本で言えばレッスン7まで習ってるんですよ。 文的なものではprintf,scanf,if,swich,for,while,等くらいなもので 超初心者的な文で教えてもらえると嬉しいのですが… わがまま言ってすみません。よろしくお願いします。
>>323 アホか。今勉強すればいいじゃん。
他を引き離すチャンスだべ。
>>323 3)
・coin_moneyの宣言の const を消す。
・SIZE を 10 に置き換える。
・if(fgets(str, sizeof(str), stdin) == NULL) exit(1);
if(sscanf(str, "%d", &data[i]) != 1) exit(1);
を scanf("%d", &data[i]); にする。
・puts(""); を printf("\n"); にする。
・#include <stdlib.h> と char str[BUFSIZ]; を消す。
5)
・COIN_KIND を 9 に置き換える。
・puts("金額を入力してください"); を
printf("金額を入力してください\n"); にする。
・if(fgets(str, sizeof(str), stdin) == NULL)exit(1);
if(sscanf(str, "%d", &money) != 1)exit(1);
を scanf("%d", &monde); にする。
・#include <stdlib.h> と char str[BUFSIZ]; は必要なくなるので消す。
>>325 修正。
>を scanf("%d", &monde); にする。
を scanf("%d", &money); にする。
>>325 もう1つ修正。
>coin_moneyの宣言の const を消す。
は 3) ではなく 5) の方。
>>319 scanfみたいな可変長引数の関数は、基本的に引数の型が判らない。
だから、scanfのformatに%dがあると、それに対応する引数がintへのポインタだと仮定して
動作する。
そのコンパイラはintが16bitだから、%dを指定した時点で32767より大きい数字には対応
できないし、上位16bitは何も代入されないから、もとからあったゴミが残る。(初期化したら
うまくいくのは、ゴミが0になるから。)
ということで、%dを%ldにしましょう。
329 :
デフォルトの名無しさん :05/02/13 02:35:05
>>328 解決しました^^v
あんたイイヤツだな、多分俺が2chで会った中でベスト3には入るね。
330 :
デフォルトの名無しさん :05/02/13 07:47:08
Cプログラムをする上で「構造化」ってどこまでやっていいと思いますか? たとえば、「関数細分化しすぎてかなりデカイプログラムなのにmain関数はほんとに数行しかない」 って状態はどうなんでしょうか?
C言語なら俺に聞け!スレへの誤爆と見た。
332 :
330 :05/02/13 09:17:43
>>333 そうなのか?じゃあこれからはなるべくmain関数少なくなるように
心がけるわ。
少なくとも、OSなどとのI/F以外の詳細はmain()に書くべきじゃないね。
小さいコードならmainに詰め込んでも構わないと思うけどね。
習ってないものは使ってはいけないっていう教育はいかにも日本的だな
教えてください
F(T)=6.72*10^(-4)*(1000-T)-5.67*10^(-8)*0.5*(T^4-600^4)の はさみうち法をC言語でのプログラムを教えていただけないでしょうか?? ホントよくわかんないので、よろしくお願いします(><)
マルチ?
(><)←これがむかつく
禿同
禿同←これがむかつく
(><)←回答禁止マスクのように見える
double f(double t) {return 6.72 * pow(10, -4) * (1000 - t) - 5.67 * pow(10, -8) * .5 * (pow(t, 4) - pow(600, 4);}
346 :
デフォルトの名無しさん :05/02/13 21:46:50
問題 ソートのプログラムで1000個ソートしたら約一秒かかった。 じゃあ10000個ではおよそ何秒? 誰か答えてくださいお願いします。
348 :
346 :05/02/13 21:50:44
単純選択ソートです
>>346 ,348
ネタじゃなかったのか・・・orz
約100秒
そうとはかぎらんよ
ひねくれた問題は出さないだろ…
何も考えずに10秒と答えなければいい、くらいの気持ちで出した問題だろう
データ数の二乗に比例するってことが分かってりゃいいんでない
そうとうなあほだ
質問です。 ActiveDeskTop Objectを使って現在の壁紙パスを取得するという プログラムなんですが、取得方法がうまくいきません。 //#include 省略・・・ unsigned short* Path; WCHAR wszWallpaper [MAX_PATH]; WCHAR* PathAA(void){ if (FAILED(CoInitialize(NULL))) return 0; HRESULT hr; IActiveDesktop *pActiveDesktop; hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**)&pActiveDesktop); hr= pActiveDesktop->GetWallpaper(wszWallpaper, 256, 0); pActiveDesktop->Release(); CoUninitialize(); return wszWallpaper; } int main(void) { Path=PathAA(); cout << (LPSTR)(Path) << endl; return 0; } これで実行すると壁紙パスの最初の一文字しか取得できません。 全ての文字(フルパスの文字)を取得するにはどこを直せばよいでしょうか。 ご教授宜しくお願いいたします。
WCHARとはなにか、よく考えてみましょう。
>>357 すんなり答えが書けないんですか?
思わせぶりなレスはかえって迷惑です。ヴォケ。
本当は答え知らないんでしょ?
基礎が出来てなさ過ぎですな
>>357 どもです。
型を変更したらできました。
358は偽りなんでシカトしてください。
シェルソートはO記法ではどのようなオーダーでしょうか?
>>362 O(N^(3/2))なんですね。ありがとうございました。
変なオーダーなんですね・・・・
シェルソートの場合、間隔hによって指数の部分が変わるし。
366 :
デフォルトの名無しさん :05/02/14 20:54:20
↑ あ げ
367 :
デフォルトの名無しさん :05/02/14 22:14:36
50個以内の任意の個数の整数データを入力したあと、入力順に表示するプログラムをCで作成せよ。 という課題がでたのですがどのようにすればよいのでしょうか? 制御変数が2個使うというところまでしかわかりません・・・・ よろしくお願いします。
>>367 漏れの出番だな
#include <stdio.h>
int main(void)
{
int data[50], n, i;
for (n = 0; n < 10 && scanf("%d", &data[n]); ++n) ;
for (i = 0; i < n; ++i) printf("data[%d] == %d\n", i, data[i]);
return 0;
}
370 :
デフォルトの名無しさん :05/02/14 22:56:27
>>369 様
本当にありがとうございました。
授業中苦戦してました(;´Д`)
そんな糞ソースで本当にいいのか
だいたい何らかのアクションをもって入力終了とするのか、 それとも入力個数を指定するのかさえ分からないあたり、課題が悪いな。
つーか
>>1 以下のテンプレ読んでねえだろどいつもこいつも
質問する人が読むわけねえだろ
>>371 あれで逆にいいのでは?
あんまり綺麗に書くと、他人が書いたって、すぐわかるだろうし。
ただ、癖が出るから、見慣れると、ばれるけど。
しかも、C/C++はフリーフォーマットだし。
>>374 んー、ログ少しでもよめばテンプレぐらい気づくよね。
別に掲示板とかネットに限らず現実の日常生活でもある程度
その場の雰囲気読んで行動するの当たり前でしょ。
まあ、隔離目的のこのスレにまともな奴が集まるとも思えないけどなー。
テンプレ嫁、過去ログ嫁、と言われて実際に読む2ちゃんねらは見たことない
お前らだって家電の説明書なんぞよまねえだろ ソフトの説明なんてよまねえだろ コンパイラのヘルプも全部よまねえだろ Cの仕様を全部読んだやつなんて割合すくねえだろ したがって、テンプレ読まねえ奴は市ね
380 :
デフォルトの名無しさん :05/02/15 01:10:27
#include <stdio.h> double func(double x){ double y; y=x*x*x-3*x*x+9*x-8; return(y); } int main(){ double EPS=0.00005; double a, b, c; char t; int i=0; do{ printf(" a = "); scanf("%lf%c", &a, &t); printf(" b = "); scanf("%lf%c", &b, &t); if(func(a)*func(b) >= 0){ printf(" f(a)*f(b)>0\n\n"); }
381 :
デフォルトの名無しさん :05/02/15 01:10:59
}while(func(a)*func(b) >= 0); if(b-a<0){ c=a; a=b; b=c; } while(b-a>EPS){ c=a-((b-a)/(func(b)-func(b)))*func(a); if(func(c)*func(a)<0){ b=c; }else{ a=c; } i++; printf(" %d\t%20.15f\n",i,c); } 0=x^3-3^2+9*x-8をはさみうちにより求めたいんですが、コンパイルするとa,bを入力する画面 までいくんですが、その後がまったくしゅつりょくされません。なにがいけないんでしょうか? もしくはなにが足りないんでしょうか?
scanf("%lf%c", &a, &t); scanf("%lf%c", &b, &t);
>>381 >なにがいけないんでしょうか?
あんたの頭
>もしくはなにが足りないんでしょうか?
あんたの頭
まぁ、>382よりはましだがな。
scanf禁止令
nの階乗をn!と表記する s=1/0!+1/1!+1/2!+......+1/20! を表示するプログラムを作成する f=1.0; s=0.0; for(i=0;i<20;i++){ s+=1.0*f; ☆; } printf("%f\n",s); 自分でソースを書いて、いろいろな式で実行してみたんですが うまくいきません。☆の部分にはどのような式が入れば問題の解答としてふさわしいでしょうか? よろしくお願いします
388 :
386 :05/02/15 01:40:23
[1] プログラム [2] nの階乗をn!と表記する。 s=1/0!+1/1!+1/2!+......+1/20!を表示するプログラム断片である ---------------- f=1.0; s=0.0; for(i=0;i<20;i++){ s+=1.0*f; ☆; } printf("%f\n",s); ---------------- ☆に当てはまる式を答えよ [3] 環境 [3.1] OS: VineLinux2.6 [3.2] コンパイラ:gcc(??) [3.3] 言語:C [4] 期限:2004年2月15日08:00まで
390 :
デフォルトの名無しさん :05/02/15 02:13:02
質問です! Intの値を、例えば16進法でStringに保存する方法はありますか? C++です。お願いいたします!
[1] 授業単元: C++ [2] 問題文(含コード&リンク): 以下の様に出力されるプログラムを使いたいのですが、初心者なのでStringの使い方がわかりません。参考の為にどうか解答していただけないでしょうか?どうぞよろしくお願いします。 What is the name of the racer? Armstrong, Lance What is the day of the race? 10 Feb 05 What is the elapsed time? 04:15:30 On Feb 15 05, Lance Armstrong raced for 15330 seconds. This is equivalent to 255.50 minutes, and 4.26 hours. [3] 環境:BCC Developer [3.1] OS: WindowsXP [3.2] コンパイラ(バージョン): BCC [3.3] 言語:C++ [4] 期限:2005年02月15日まで [5] その他の制限: 特になし。
393 :
デフォルトの名無しさん :05/02/15 07:08:08
すいません、 調べてみたのですが 見つからないので教えてください。 fstreamのifstreamを使ってファイルからデータを読み取る時、 途中もしくは最後まで読み取ってから、また最初から読み取りたい場合、 どのようにするのでしょうか?Seekgを使うのでしょうか?Seekgを使っても、うまくいかなかったのですが、 使い方がおかしいのでしょうか。。。
ファイルオープンしなおすとか。
>>393 seekg (0, ios::beg);
396 :
388 :05/02/15 08:55:19
どなたかわかりませんかね? だめですか。
>>396 f /= (float)(i + 1);
もうとっくに8時すぎてるし。
20時のつもりで書いたんじゃないかね 午前8時に締め切りってのは奇妙だ
400 :
393 :05/02/15 11:48:47
なぜか 教えていただいたseekgの使い方でも、最初に戻りません。 リセットする前にEOFを使って、ファイルの最後まで読むループがある のですが、そのループが終わった時点で、tellgで-1という値が返され、 リセットしても-1のままなのです。ファイルオープンしなおすには、 ファイルのディレクトリとかファイル名とか必要ですよね?だとすると、 この場合無理っぽいです。。 どうにかなりませんでしょうか?
>>400 最後まで読んでEOF出したら、clear()せんといかんよ。
コード出してみれ。それだけじゃわからん。
どうせstd::ios::failbitをクリアしてないってオチだろうな。C++初心者には よくある事だ。
実はファイルじゃなくデバイスだったって落ちだったりして。 #いやほら、「この場合無理っぽい」とか書いてるし。
405 :
393 :05/02/15 12:23:23
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/211.txt 本当に、お恥ずかしいコードなのですが、上記のURLにコードをあげてみました。
Clearしてみましたが、うまくいきません。
parserというクラスの中に、コンストラクターと、二つのファンクション(first_pass(), second_pass())があり、コンストラクターに、ifstreamを渡して、二つのファンクションで使うという仕組みに
したいのですが、first_passでifstreamを使って、次に second_passで同じifstreamを
最初から使いなおしたいのです。
お時間がありましたら、よろしくお願いします。
406 :
393 :05/02/15 12:27:50
うわあ、お恥ずかしい できました! 消すつもりなかった部分まできえsてしまっていました。 ありがとうございました! でバグの続き がんばってきます。。
>>393 つーか、関数長すぎ。時間が余ってても見る気無くなる。
それと、finはparserクラスを使う側で開いているということなのか?
それならなんでfirst_pass()でのエラーチェックでexit()してしまうんだ?
exit()するとデストラクタが走れないぞ。
後、std::endlはただの改行ではないから二つ並べるのはやめとけ。
408 :
388 :05/02/15 12:56:30
午前八時のつもりで書きましたけどありがとうございました
409 :
393 :05/02/15 13:19:02
ですよね。たしかに、みるきがうせるコードです。。 finは、mainで開いて、parserに渡します。endlの代わりに\nを使うようにします! 実は、second passの//ASSEMBLES TEXT RECORD.以下のループ内getlineで 何度getlineしても 同じ行を 返すばかりで、次の行にいかない症状にみまわれています。こんなこと、ありええるのでしょうか。。
同じファイルストリームをずっと使いたいなら、参照で返すのも面倒だから、 ポインタにnewしてかちこむか、クラス作るかした方が楽なような。
>>409 eof()だけでなく、fail()、bad()も調べてみたら?
いやもちろん、最終的には削るにしても、どんなエラーが発生しているのかは
把握しておいた方がいいから。
412 :
デフォルトの名無しさん :05/02/15 20:19:10
LINUXで動作するアドレス帳プログラムを作りたいのですが全く手も足も出なくて困っています。 条件は編集、検索、ソート、ファイル入出力、氏名、電話番号、住所、郵便番号の機能をもつプログラムです。 行数は200行以上で、リンク形式をとらないプログラムです。 言語はC言語です。 どなたかお願いします。
それはCUI、それとも、GUIで作るの?
CUIです
>>412 MySQLとかPostgreSQLとか使った方がいいよ。
417 :
デフォルトの名無しさん :05/02/15 21:29:27
宿題なら、全文をかき写せ
このスレはデジャブがよく起きます。 なんど同じ文句を見たことか。 だからさー テ ン プ レ 嫁 つ っ て ん だ ろ ー が !!!
質問する人が読むわけねえだろ
次スレからタイトルに【テンプレ嫁】って入れたら?
>421 コンパイルとかしてないけどイメージとしてはこうかな? - push(&stackPtr,(postfix[index1])-48); + { + char* next; + push(&stackPtr,(int)strtod(&postfix[index], &next)); + index += next - &postfix[index]; + continue; + }
>>424 push(&stackPtr,(postfix[index1])-48);
以下に+〜の文を追加すればよいということでしょうか?
追加ではないよ。 その行のかわりに+で示した行で置換えしてね。 strtod()…んーまぁいいや。
w
>>428 何がwなのかよくわからないんだが。
説明してくれない?
そういうの大事だからね。
>>429 あんたいったい何?
俺がwってしたことがそんなに気に入らないの?
あんたも小さい人間だねえ。そんなことでいちいちむくれるんだから。
説明もくそもない。マターリしたいからwってやったんだろ。
スルーできないお前も無駄にスレ浪費してるわけだが そしてオレモナー
あ、無駄に浪費っておかしいよな
あははーーーーーーーー
いつから糞スレになったんだ?
あはあはあはああぁぁあはあ
スレタイにインパクトがないな 次スレには顔文字AAを入れよう
【テンプレ嫁】C/C++の宿題を片付けます 41代目【ヽ(`Д´)ノ】
【テンプレを】C/C++の宿題を片付けます 41代目【読んでくれ】
【
>>1 -3を】C/C++の宿題を片付けます 41代目【読んでくれ】
>>430 ええと、どうして君はそんなにむきになっているのかな?
単にwの意味がわからないから聞いただけだったんだが・・・
まあ、回答をいただいたようなので、そこら辺はよしとしよう。
だが、“マターリしたいからwってやった”というのがいまいち飲み込めない。
どうして、そんな無意味にマターリしたくなったの?
wって書き込めばマターリするの?
そこら辺をもう少し、具体的に説明してもらいたいんだが。
宿題に欠乏すると、なぜかこういう流れになるね。
>>443 お前もほんとにしつこいやろうだな。ちょっと頭を疑うよ。
マターリするのに理由が必要だとでもいうの?
マターリは快楽の一種。人間が快楽を追求するのは当然のこと。
wの意味知らないってことはないよな。
マターリと微笑みは切ってもきれない関係だってことは
そこら辺の厨房でも知ってること。
夜中にマターリしたくなったが、コーヒーがなかった、
だからかわりにwって書き込んだ。それだけ。
自明だろそんなこと。
wwwwwwwwwwwwwwwwwwwwwwwwwwwww
>>445 なるほど、了解しました。
ただ、ここにwって書き込むのはスレ違いだと思いませんか?
スレタイとまったく関係ない内容ですから。
つまり、私のいいたいことはあなたは荒らしじゃないかということです。
そこら辺はどう考えますかね。
448 :
デフォルトの名無しさん :05/02/16 19:54:49
>>447 なるほど、了解しました。
ただ、ここに荒らしって書き込むのはスレ違いだと思いませんか?
スレタイとまったく関係ない内容ですから。
つまり、私のいいたいことはあなたも荒らしじゃないかということです。
そこら辺はどう考えますかね。
どうでも良いからてめえら黙ってろ
てめえらって言われても一人の自作自演なんだが
次スレ 「日本一上品で丁寧なC/C++の宿題スレでございます。」
>>447 お前は本気でそんなことを言ってるのか?
確かにここは宿題スレ。宿題についてのレス、宿題を回答するレス
それが主となるのは当然のことだし、何の異存もないよ。
だが、スレの住人同士、一息ついて雑談することにだって意義はあるはずだろうが。
宿題がなかなか出ないが、このスレが廃れてしまっては困るというスレ愛が
俺にwとここに書き込ませた。それが荒らしだというのか?
愛のない自治厨なんかよりも、愛のある荒らしのほうがよっぽど素敵じゃないか?
それが人間ってものじゃないか?
わかった、もういいよ。 君の底が知れたから。
455 :
デフォルトの名無しさん :05/02/16 20:28:14
[1] 授業単元: 基礎情報処理 [2] 問題文(含コード&リンク): ローマ字で書かれた文章ファイルを仮名変換して別のファイルに保存する。 ローマ字で書かれた文章ファイルの中身 bokuha2chnera- 仮名変換ファイルの中身 ぼくは2chねらー [3] 環境 [3.1] OS: winXP [3.2] コンパイラ(バージョン): bcc++5.5 [3.3] 言語:C [4] 期限:2005年02月17日20:00 [5] その他の制限: 文章ファイルを読み込む際はfgetsを利用してくれるとうれしいです
456 :
デフォルトの名無しさん :05/02/16 20:33:06
>>454 わかった、もういいよ。
君は底なしだから。
>>455 文字コードは?
複数行に及ぶ場合は存在するのか?
別のファイルってそのファイル名は生成するのか?取得するのか?
そもそもローマ字ってkstnhmyrwgzdb+aiueoだけで表現するやつか?
それともxやlも扱うのか?
またshiなども含むのか?
ttiなどの詰まらせるとかの処理も行うのか?
bokuha2chigaimimasen こういう場合の変換規則とかあるのん?
459 :
455 :05/02/16 21:23:07
テーブル作るのメドイ・・・
461 :
デフォルトの名無しさん :05/02/16 21:28:51
tsu tu の違いは?
464 :
む〜ん :05/02/16 23:23:17
プログラミング初心者です。 次のプログラムをつくってみようと思っているんですが、わかりません 問 名詞の単数形を入力すれば、複数形を出力するプログラムを書け。 1、語尾がs,sh,x,chの時には文句なくesをつける。 2、語尾がoのときにはesのときも、sのときもある。 potato->potatoes,piano->pianos,photo->photos 3、語尾が子音字+yのときはyをiに変えてesをつける。 4、語尾がf,feで終わるときにはf,feをvesとする。 knife->kinives ただし例外あり。roof->roofs マジ困ってます。お願いします
で?2は辞書を持つのか?radio,piano,photo…激しくめんどい。
>>464 例外ありすぎ。いっそ英和辞典のサイトからデータ奪ってきた方が楽。
467 :
む〜ん :05/02/16 23:31:59
1番だけでも出来れば十分です。
468 :
デフォルトの名無しさん :05/02/16 23:55:21
main.hで int a = 3; main1.cppで #include "main.h" main2.cppで #include "main.h" これをやるとaを2回定義しているのでコンパイルエラーになる。 ところがaにconstをつけるとコンパイルエラーにならない。 main.hで const int a = 3; これはなぜ? const型修飾子に値を変更できなくする以上の意味があるように思えるのだが 正確にはどう考えるのが正しいのだろうか?
469 :
デフォルトの名無しさん :05/02/17 00:07:35
リンカエラー?コンパイルエラー? const付けたら値を式中に展開してしまうっぽい。
>>469 間違えた。正しくはリンカーエラー。
> const付けたら値を式中に展開してしまうっぽい。
#define a (3)
const int a = 3;
確かにほぼ同じ使い方ができる。
だが何故constをつけると上記の2つが同じ様な意味になるのだろうか?
constを付けなければ外部リンケージを持つグローバル変数なaを2回定義する事になり
リンカーエラーが出るのは当たり前だ。
constの本来の動作は宣言子が変更不能である事を示すはず。
aはconstを付けても外部リンケージのままなのでリンカーエラーを出すのが
正しい動作のような気がするのだが誰か詳しい人はいませんか?
ふーん、アドレスも取れなくなるってことですかそうですか
472 :
469 :05/02/17 00:59:43
プログラミング言語C++第2版リファレンスマニュアルr.7.1.1 記憶クラス指定子 「constと宣言されたオブジェクトは、以前に外部リンケージが与えられていなければ内部リンケージを持つ。」 …ということなんだそうです。
473 :
デフォルトの名無しさん :05/02/17 02:03:08
>> 464 できたぞー 一応,全条件に対応したつもり. インデントはかんべんしてくれ. #include <stdio.h> #include <string.h> #define TRUE 1 #define FALSE 0 int nlastsame(char* s1, char* s2) { return (0 == strcmp (s1 + (strlen(s1) - strlen(s2)) , (s2) )); } int nlastsameEx(char* s1, char* s2 ) { char *s3[] = {"t", "ch"}; char s4[256]; int i; int num = sizeof(s3) / sizeof(char*); for (i = 0; i < num; i++) { strcpy(s4, s3[i]); strcat(s4, s2); if (nlastsame(s1, s4) ) { printf( "%s = %s\n", s1, s4); return TRUE; } } return FALSE; }
474 :
デフォルトの名無しさん :05/02/17 02:03:59
int is_xx_case(char* s1, char *xx[], int n) { int i; int num = n / sizeof(char*); for (i = 0; i < num; i++) { if (! strcmp(s1, xx[i]) ) { return TRUE; } } return FALSE; return 0; } int is_oes_case(char* s1) { char* s2[]={"potato","xxxo"}; is_xx_case(s1, s2, sizeof(s2)); } int is_fes_case(char* s1) { char* s2[]={"roofe","xxxfe"}; is_xx_case(s1, s2, sizeof(s2)); } int is_fs_case(char* s1) { char* s2[]={"roof","xxxf"}; is_xx_case(s1, s2, sizeof(s2)); }
475 :
デフォルトの名無しさん :05/02/17 02:05:30
int main() { char s[256]; scanf("%s", &s); printf("%s の複数形は", s); if( nlastsame(s,"s") || nlastsame(s,"sh") || nlastsame(s,"x") || nlastsame(s,"ch") ) {//語尾がs,sh,x,chの時には strcat(s,"es");//文句なくesをつける。 } else if (nlastsame(s,"o")) {//語尾がoのときには //potato->potatoes,piano->pianos,photo->photos if(is_oes_case(s)) {//esのときも strcat(s,"es"); } else {//sのときもある strcat(s,"s"); } } else if (nlastsameEx(s,"y")) {//語尾が子音字+yのときは s[strlen(s)-1] = '\0'; strcat(s , "ies");//yをiに変えてesをつける。
476 :
デフォルトの名無しさん :05/02/17 02:06:23
} else if (nlastsame(s,"f")) {//語尾がfで終わるときには if (is_fs_case(s)){ strcat(s, "s"); } else { s[strlen(s)-1] = '\0';//fをvesとする。 strcat(s,"ves");// } } else if (nlastsame(s,"fe")) {//語尾がf,feで終わるときには if (is_fes_case(s)){ strcat(s, "s"); } else { s[strlen(s)-2] = '\0';//feをvesとする。 strcat(s,"ves"); } } else { strcat(s,"s"); } printf (" %s です\n", s); return 0; }
477 :
474〜476 :05/02/17 02:09:33
ホントは,C++のSTLのstringってのとか boostライブラリの正規表現を使うともっと楽かもね. でも,初心者が宿題で使うと,確実にばれるから string.h 内の関数でがんばってみたよ.
あぼーん
>>478 先生! 入力された文字列にカンマがまじってたらどうすればいいんですか?
入力はカンマで区切って一度に入力するのか? それとも会員番号、名前、電話番号を別々に入力していくのか?
>>478 電話番号が引っかかったようだな(;・∀・)
クソワロタ
あ、しまった、確認する前に消しちまったよ。 >478は例に実在の電話番号でも載せてたのか?
実在の電話番号であろうがなかろうが電話番号形式の数字なら自動的にあぼ〜んされる そしてそれを投稿をした人のIPが2chのブラックリストに自動的に登録される
なるほど、迂闊にサンプル載せられない訳ね。
昨日見たときは、サンプルも含めて、きちんとテンプレに沿った丁寧な書きかたしてたけど、 それが仇になったわけね。 CSV形式のファイルで、会員番号、名前、電話番号を入力、表示するとか、そんな感じだったけど。
すいません・・お忙しいところどうかお答えいただけないでしょうか?
>>392 std::stringを使って文字列を加工しろってこと?
cstdio使っちゃいかんのかな?
とか書いて時間稼ぎしておくと誰かやってくれるだろうw
[1] 授業単元:情報技術 [2] 問題文(含コード&リンク): カレントディレクトリの "ls"の結果をls[]に入れよ ls[]は最大200迄とし、 ls[0]からls[199]までとする ls[]一つにたいして一つのファイル名を入れることとする [3] 環境 [3.1] OS: FreeBSD [3.2] コンパイラ(バージョン): gcc 3.3.3 [3.3] 言語:C言語 [4] 期限:本日中(できれば夕方までにおねがいします) [5] その他の制限: popenの実習なのでpopenを使わないといけないと思います できれば、私もちゃんとわかりたいので説明付でおねがいします
「説明付」って言うの一番嫌われる
>>490 宿題だったら普通はソース一つでOKというのはまずないと思うが。
popen()の実習って… 阿呆な実習やってるなぁ。 で、ls配列の型が書かれていないけどどうするの? 指定が無ければchar ls[200][200]とでもしてしまうのが楽なのだが。
すいません
説明はでは、もし書くのが面倒ならかまいません
もしわからなかったらすいませんが 質問させていただくかもしれません
>>492 どういうことでしょうか?
char *ls[200]
と言うのを考えたのですが これだと駄目なのでしょうか?
これだと、 printf("%s", ls[0]);等でいけると思ったのですが・・
すいませんが ls[200][200]の意味が・・
>>492 たぶん、200行ではなくて半角200文字だと思うぞ。
/* 200文字ならこんな感じ。 */ #include <stdio.h> int main() { char ls[200]; FILE * fp = popen("ls", "r"); ls[fread(ls, 1, sizeof(ls), fp)] = '\0'; fclose(fp); puts(ls); return 0; }
すいません、締め切りすぎてるんですが、それでもきちんとした答えを知っておきたいです。 板荒らしてすいません。
すいません もう一度言い直します 例えばカレントディレクトリに 1.c 2.c 3.c 4.c があるとすると ls[0]は1.cが ls[2]は2.cが と言う感じで入れなくてはならないのです ですので、私は *ls[200]で宣言しなくてはいけないものだと思いました 言葉足らずで申し訳ありませんでした
だまされ無い、まだ時間あるんだろう?
>>497 だったらそれでいいんでない。ls[2]には3.cが入る。細かくてスマソ
>>499 すいません
そこまでは考えたのですが
実際にpopenを使って"ls -1"等の結果を
*ls[]に入れるにはどうしたらいいのかわかりません
すいませんがおねがいします
/* 200行ならこんな感じ */ #include <stdio.h> int main() { int ic; char ls[200][200]; /* ポインタの配列にしたいなら勝手にしとくれ */ FILE * fp = popen("ls", "r"); if (fp == NULL) { return 0; } for (ic = 0; ic < sizeof(ls) / sizeof(*ls); ++ic) { if (fgets(ls[ic], sizeof(*ls), fp) == NULL) { break; } } fclose(fp); for (; ic < sizeof(ls) / sizeof(*ls); ++ic) { ls[ic][0] = '\0'; } for (ic = 0; ic < sizeof(ls) / sizeof(*ls); ++ic) { printf("%s", ls[ic]); } return 0; }
/* 200行、動的確保版(エラー処理は省略) */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int ic; char * ls[200]; FILE * fp = popen("ls", "r"); for (ic = 0; ic < sizeof(ls) / sizeof(*ls); ++ic) { char buf[200]; /* 1行文字数は200で制限 */ char * tmp; if (fgets(buf, sizeof(buf), fp) == NULL) { break; } ls[ic] = strcpy(malloc(strlen(buf)), buf); } fclose(fp); for (; ic < sizeof(ls) / sizeof(*ls); ++ic) { ls[ic] = NULL; } for (ic = 0; ic < sizeof(ls) / sizeof(*ls); ++ic) { if (ls[ic] != NULL) { printf("%s", ls[ic]); free(ls[ic]); ls[ic] = NULL; } } return 0; }
もうちょっと簡単にしてください sizeofとかの意味がわかりません
sizeof(type) == x の時、 type a[10]; sizeof(a) == x * 10 sizeof(a[0]) == sizeof(type) == x つまり、sizeof(a) / sizeof(a[0]) で配列のサイズが求まる。 固定配列にしか使えないけどな。
>>504 なぜ固定配列にしか使えないんですか?
そもそも、固定配列って何ですか?
char *ls[200]; int count=0; FILE *fpls; fpls = popen("ls -1", "r"); while(fgets(ls, 1024, fpls) != NULL){ printf("%s", ls[count]); count++; } pclose(fpls); こんなかんじのでできませんか? とりあえず ls の結果を1個づつ ls[]にいれたいだけです
すごいアホが来たな
こんなの相手にしてたらいくらスレがあっても足りません ここは皆さんスルッとスルーをしましょうね。
510 :
デフォルトの名無しさん :05/02/17 16:48:50
[1] 授業単元: 基礎情報処理
[2] 問題文:
入力された文字列をメモリ上に保存し、保存データが5件を越えたら、
古いものから順番に削除して、常に5件を維持せよ。
最終的にバイナリファイルで保存すること。
また、バイナリファイルにデータが保存されている場合、
データをメモリ上に読み出し、これも使用せよ。
なお、レコード長は10バイトとする
例 5件を超えた場合の処理
1→2
2→3
3→4
4→5
5→6
例 既存のデータがある場合
1→1
2→2
3→3
4
[3] 環境
[3.1] OS: winXP [3.2] コンパイラ(バージョン): bcc++6.0 [3.3] 言語:C
[4] 期限:2005年02月18日20:00
[5] その他の制限:
常に最新の情報を5件保存する処理です。
環状リスト処理のアルゴリズムで組もうとしてみたのですが、全然うまくいきません。
このHPを参考に組もうとしていました。
ttp://www5c.biglobe.ne.jp/~ecb/c/c00.html よろしくお願いします。
511 :
503 :05/02/17 17:13:49
誰かかけよ かけないのか? しょぼいなオタクども
環状にしなくても単方向リストでいいんじゃない
まぁポインタの扱いとか分かってないなら リスト構造自体難しいから 最悪2次元配列にして 追加のたびにずらして入れるんだな。
リングバッファでいいだろ。リスト使う意味ないし。
セマフォ使えw
誤爆?
517 :
489 :05/02/17 17:38:06
私は503ではないです 私もさっきからずっと考えているのですが #include<stdio.h> int main(void){ char *ls[200]; int count=0; FILE *fpls; fpls = popen("ls -1", "r"); while(fgets(ls[count], 100, fpls) != NULL){ printf("%s", ls[count]); count++; } pclose(fpls); } 見たいなものを考えましたが どうしてこれだとできないのかがわかりません 説明していただけないでしょうか?
518 :
510 :05/02/17 17:48:52
ヒントをくれた皆様方、ありがとうございます。 とりあえずヒントを頼りに、もうちょっと頑張ってみます。
|
∩___∩ |
| ノ _, ,_ ヽ (( | プラプラ
/ ● ● | (
>>517 )
| ( _●_) ミ _ (⌒) J ))
彡、 |∪| ノ
⊂⌒ヽ / ヽノ ヽ /⌒つ
\ ヽ / ヽ /
\_,,ノ |、_ノ
/
ぷちっ /
∩___∩ . 从 /
| ノ ヽ /
/ ● ● |(
>>517 )ヽし
| ( _●_) ミ/ ` ノ
彡、 |∪| ノ /
/ ヽノ / ノノ
/ /
/ /
ムシャ |
ムシャ |
∩___∩ | ぷらぷら
| ノ ヽ (( |
/ ● ● | J ))
. (( | ( _●_) ミ ・
彡、 |∪17) ,ノ ∴
/ ヽ/^ヽ ヽ 。
| ヽ \ |
| ヽ__ノ
>>517 ls[count]で指されているアドレスはどこ?
そのアドレスはfgetsするのに充分な長さでアロケートされてる?
あくまでchar*は文字列型ではなくcharのポインタ。
メモリの確保は自分でやらなきゃいけない。
#define QUEUE_SIZE 5 #define BUFF_SIZE 256 char queue[QUEUE_SIZE][BUFF_SIZE]; int front; int rear; void init() {front = rear = 0;} int next(int x) {return (x + 1) % QUEUE_SIZE;} void enqueue(char* str) { if ( next(rear) == front ) dequeue(); strcpy(queue[rear], str); rear = next(rear); } void dequeue() {if (front != rear) front = next(front);} main() { int i, j; char str[256]; for(i = 0; i < 10; ++i) { scanf("%s", str); enqueue(str); for(j = front; j != rear; j = next(j)){ printf("%s\n", queue[j]); } } }
524 :
デフォルトの名無しさん :05/02/17 18:24:15
横入りだけど for (ic = 0; ic < sizeof(ls) / sizeof(*ls); ++ic) { ってなに? sizeofって型のサイズかえすんじゃないの? sizeof(ls) / sizeof(*ls) ってのが何してるのかもわからん 説明プリーズ
>>524 T ls[200];
のとき、lsの型はT [200]で、sizeof(ls) = sizeof(T [200]) = sizeof(T) * 200
*lsの型はTで、sizeof(*ls) = sizeof(T)
>>524 C FAQくらい読んでくれ。
sizeof(配列) / sizeof(*配列)で配列要素数になる。
527 :
517 :05/02/17 18:38:12
ありがとうございました
>>502 さんのを読んで なんとなく理解はできたのですが
1点わからないところがあったので質問させていただきます
何度もすいません
ls[ic] = strcpy(malloc(strlen(buf)), buf);
というのは、
strlen(buf)のサイズ分 ls[ic]にメモリを確保して そこにbufをstrcpyするということでしょうか?
ls[ic] = malloc(strlen(buf));
strcpy(ls[ic], buf);
と、同等と考えていいのでしょうか?
>>527 >ls[ic]にメモリを確保して
いいえ
>同等と考えていいのでしょうか
はい
確保されたメモリ(へ)のポインタを、ls[ic]に代入していると解釈すべき。
[1] 授業単元: 符号理論 [2] 問題文(含コード&リンク):行列が入力されたとき左が単位行列になるようにガウス消去をするプログラムを書きなさい. [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ(バージョン): [3.3] 言語:C++ [4] 期限:2005/2/24 [5] その他の制限: 成分は2元(0と1)です ガウス消去していく過程の中で全0の行がでてきてしまい,うまくいきません. 全0の行がでてきてしまったらその行を削り,行数を減らした行列として 左に単位行列がくるようなプログラムを作っていただけないでしょうか.
じゃ、ユークリッドの互助法ではいかが?
532 :
デフォルトの名無しさん :05/02/17 19:33:02
478です。 [1] 授業単元: C [2] 問題文(含コード&リンク): 画面から( 会員番号, 名前, 電話番号 )を入力し、 以下のようなCSV形式のファイルを書き出すプログラムを作成してください <CSVファイル> カンマ区切り A001,tanaka daisuke,電話番号 B033,内藤 一,電話番号 B012,saito,電話番号 A004,鈴木 三郎,電話番号 会員番号 − 最大4byte 半角英数字のみ 名前 − 最大32byte 制御文字以外の文字全て 電話番号 − 最大13byte ハイフン,数字のみ ・入力項目は全て入力しなければならない ・入力項目が不足している場合、入力項目の文字種別が異なる場合、 最大byte数を超えて入力された場合は標準エラーストリーム(stderr)にエラー情報を出力する。 ただし、エラー表示後、入力状態に戻ること。 ・何度も繰り返して会員番号を入力できるようにする プログラムを終了させる条件を考えること ・構造体を使用すること ・登録件数の上限をなくすこと。(メモリが許す限り何件でも登録できること) ・会員情報を記述するファイル名はプログラムの引数で与える ファイルが存在しない場合は作成 すでに存在する場合は、すでにある行の後に追記 ・会員番号の昇順でファイルに出力すること。 ・会員番号は重複しても構わない [3.2] コンパイラ(バージョン):borland [3.3] 言語:C [4] 期限:2月18日15:00まで位でお願いします。 実際の電話番号の形式でのせたら駄目なのを知らずに消されてしまってました。(汗) これでお願いします。できればリスト構造でお願いします。
>>530 わろた、そこで先生教えろ矢、
うちは、英語を読まされた、ごらー
やっぱり部分ピボット選択だけじゃ完全にどんな行列にも対応するってことはムリですかね. 完全ピボット選択で少し考えて見ます・
こんなの収束速度だよ、CPU考えろボケw
>>472 ありがとう。そんな規則があったんだね……
プログラミング言語C++買わせていただきます。
Bjarne Stroustrupって変な名前の人が書いた本ですよね。
禿を知らない以上の無知はないな
>>537 お役に立てて幸いです。
Bjarne Stroustrupっていう変な名前の人が書いたプログラミング言語C++を買うなら第3版以降をどうぞ。
540 :
む〜ん :05/02/17 22:23:29
返事遅れてすいません。「単数形を複数形にしろ」という問題を依頼したものです。 とても助かりました、ありがとうございます!まさか、本当にしてくれるとは思ってなくて 感動しました〜。また、わからない問題があったらよろしくおねがいします。
高いけど買ったよ〜 プログラミング言語C++第3版 - Bjarne Stroustrup ¥ 7,350 - 数量: 1 - 通常24時間以内に発送 これ読んで一流プログラマー目指してがんばるっす。
俺は糞第1版を持ってるぞ
>>542 原著ですかぁ〜?
初版第1刷ですかぁ〜?
D&Eの方がいい希ガス
原著じゃなくて糞訳の方orz
546 :
(´・ω・`)ショボーン :05/02/18 03:46:41
僕の存在意義を教えてください・・・
>>547 知ったようなこと言わないで下さいよ。
何かいい言葉をいったようで、何も中身のない言葉。
何か、あんたと似てるね。(´・ω・`)
549 :
デフォルトの名無しさん :05/02/18 04:36:35
初心者です。↓のprogramを作りましたが、実行した時に入力まではエラーせずにいくのですが、入力した後、Floating exception Invalidとしか結果が出ません。 どうもポインタ・構造体苦手なもので。何かご指摘お願い致します。
550 :
デフォルトの名無しさん :05/02/18 04:37:08
>>549 #include<stdio.h>
#include<math.h>
#define pai 3.1415926535
struct fukusosu{
double x;
double y;
};
int main(void){
int i;
double r,m,n,ac,bd,cd,bc,ad;
struct fukusosu z[6];
struct fukusosu *p;
p=z;
printf("複素数平面上のベクトルのなす角(1番目の複素数を基準)\n");
for(i=0;i<3;i++){
printf("%d番目の複素数を入力して下さい。\n",i+1);
scanf("%f",&(p+i)->x);
printf("+\n");
それで終わりなの?
とりあえず%lfね。
>>529 氏
ありがとうございます! 自分で書いたプログラムではIf statementなど使っていなかったのでとても参考になりました!
今使っている教科書がC++: An Introduction to Computing Third Edition by Joel Adams and Larry Nyhoffというやつなんですが、きちんとした例文が載っていなく困っていました。 どうもありがとうございました。
554 :
デフォルトの名無しさん :05/02/18 13:36:07
>>554 double値の差しか取ってないから、intにcastした結果が0になってしまう。
int comp(const void * p1, const void * p2)
{
double d1 = * (double *) p1;
double d2 = * (double *) p2;
return p1 > p2 ? 1 : p1 < p2 ? -1 : 0;
}
とでもすればいい。
宿題でないとだめですか? お願いがあるんですが… daemon関数を使って5秒毎に標準出力にメッセージ出すPGを作ってもらいたいのですが… 使い方がわからず困っています。 よろしくお願いします。
557 :
デフォルトの名無しさん :05/02/18 14:08:58
>>555 さま
int comp(const void * p1, const void * p2)
{
double d1 = * (double *) p1;
double d2 = * (double *) p2;
return d1 > d2 ? 1 : d1 < d2 ? -1 : 0;
}
ですよね?ありがとうございました。
ドラえもん?
>>556 デーモンとバックグランドで動作させるのは意味が違う。
デーモンで、標準出力にメッセージを出すこと自体が矛盾してる。
じゃなくて、ファイルディスクリプター1に/dev/console を割り当てて出力せよ、
とかならわかるけど。
よく理解できなくてすみません。 完全にデーモンにすると標準出力できないと記事で見ています。 >じゃなくて、ファイルディスクリプター1に/dev/console を割り当てて出力せよ、 それでお願いしますと言ったら怒りますか? ほんと、よくわからなくてすみません。 daemonを使ってのコーディングが知りたいだけなので…
daemon(3) って、中身は、この程度しかしてないけど? switch( fork() ) { case -1: return -1; case 0: setsid(); chdir( "/"); close( 0 );close( 1 );close( 2 ); return 0; default: _exit(0); }
void timer(int time_sec){ time_t startTime,endTime; startTime=time(&startTime); while(1){ endTime=time(&endTime); if(difftime(endTime,startTime)>=time_sec){ break; } } } timer(5); ってかくだけで5秒間止めれるよ
どなたか今日宿題手伝ってくださいませんか? class Node,class List,class Employee,class EmpTable 項目は、File Process,Linked-list,node. 報酬します。 興味のある方は、上のメアドにメールください。
ちなみに、これから6時間以内に仕上げなきゃいけないので・・・。
566 :
デフォルトの名無しさん :05/02/18 15:23:47
そんなに速く仕上げたければ問題を書けばいいのに だいたい報酬ってのがあやしすぎる
>>564 あのさ、このスレで6時間後の事を考えてみろよ。
お前の宿題なんて誰も覚えてないぜ。
>>564 それに、宿題解いて欲しかったらテンプレに従え。
マルチするな。マルチしたら身方を失うぞ。
>>564 >報酬します。
報酬は「する」ものではない。
一瞬、「報復します」と勘違いしたぞ。
>>570 残念だが、このスレにエスパーはいないと思われ。
いつ出た宿題だよ
576 :
デフォルトの名無しさん :05/02/18 17:13:02
マジでお願いします。 メールください。
メールにこだわる理由がわからん
いや、別にメールじゃなくても良いんですけど、 マジで必要なんで、やってくれたら、お礼したいなって思ったので。
先ず問題を全部訳してくれ。話はそれからだ。 #やるとは限らんがな。
582 :
デフォルトの名無しさん :05/02/18 18:16:52
複素数の四則演算がわかりません‥‥ 卒業かかっているのでお願いします
やることを言うのは、簡単で、 まず、emp2.txtを読み込んで、それをlinked-listを使って、ラストネームのアルファベット順にソートする。 読み込むプログラムは、だいたいp1.cppにあります。 それから、main.cppにあるように、データーを付け加えたり、消したりするんだけど、 かならず、ラストネームのアルファベット順になるように、linked-listを使って付け加える。 アウトプットのサンプルもアップしておきました。
class EmpTableは一番土台のclassで、データーをclass Employeeに持っていって、 その順序を操作するのは、class list。 まず最初に、データーを読み込んで、並べるんだけど、最初のファイルから読み込むのは、 すでに、ラストネーム順になっていて、ただその順にlinked-listをすればいい。 で、そのあと、新しく付け加えられ場合は、linked-listから、アルファベット順になるように、 その場所を探して、add付け加えればよいです。 消去する場合には、消去する人のIDを聞くので、そのIDを使って、場所を探し、消去します。
588 :
582 :05/02/18 18:29:38
【質問テンプレ】 [1] 授業単元: [2] 問題文 複素型を構造体を使って作成する 複素演算用関数を作る o 加算 戻り値…複素型 引数…複素型、複素型 関数例…jadd(複素型 , 複素型) o 減算 戻り値…複素型 引数…複素型、複素型 関数例…jsub(複素型 , 複素型) o 乗算 戻り値…複素型 引数…複素型、複素型 関数例…jmul(複素型 , 複素型) o 除算 戻り値…複素型 引数…複素型、複素型 関数例…jdiv(複素型 , 複素型) o exp 戻り値…複素型 引数…複素型 関数例…jexp(複素型) [3] 環境 [3.1] OS:Windows XP pro [3.2] コンパイラ(バージョン): [3.3] 言語:C++ [4] 期限:2005年2月21日12:00まで [5] その他の制限:特になし 急ですいません‥‥
std::complex をそのままコピーすれば?
[1] 授業単元: デジタル信号処理 [2] 問題文(含コード&リンク): DSKボードによるメロディ作成 [3] 環境 C言語 [4] 期限:月曜日 [5] その他の制限: 関数とポインタ使って簡単に作れ #include <dsk.h> void main() { int yout,n; float yre,yre1,yre2; float kamp=8192.0; float bre1=1.94691841; init(); yre1=0.22886060; yre2=0.0; while(1) { n=0; while(++n<5000){ wait(); input(); yre=bre1*yre1-yre2; yre2=yre1; yre1=yre; yout=kamp*(yre); output(yout); } }} これで一応 レの音が出るんですがこれだとメモリーを無駄に使ってだめなんで どんな音でも対応できる関数とかポインタ使って作らなきゃならないんですがいい方法ありますか?
どなたかlist.cppだけでも出来るかたいらっしゃいませんか? linked-listがいまいちよくわからなくて、それが出来れば、employee.cppは 自分で出来るような気がするんです。 本当にお願いします。
すいません。このメールではログインできなくなってしまいました。
このスレの厨房があほなことを試みたようだな
>>588 #include <cmath>
struct complex
{
complex(double re, double im) r(re), i(im){}
double r, i;
};
const complex jadd(const complex& w, const complex& z){return complex(w.r + z.r, w.i + z.i);}
const complex jsub(const complex& w, const complex& z){return complex(w.r - z.r, w.i - z.i);}
const complex jmul(const complex& w, const complex& z){return complex(w.r * z.r - w.i * z.i, w.r * z.i + w.r * z.i);}
const complex jdiv(const complex& w, const complex& z){return complex((w.r * z.r + w.i * z.i) / (w.i * w.i + z.i * z.i), (w.i * z.r - w.r * z.i) / (w.i * w.i + z.i * z.i));}
const complex jexp(const complex& z){return complex(std::exp(z.r) * std::cos(z.i), std::exp(z.r) * std::sin(z.i));}
>>588 わり、コロンが1つ抜けてた。
#include <cmath>
struct complex
{
complex(double re, double im) : r(re), i(im){}
double r, i;
};
const complex jadd(const complex& w, const complex& z){return complex(w.r + z.r, w.i + z.i);}
const complex jsub(const complex& w, const complex& z){return complex(w.r - z.r, w.i - z.i);}
const complex jmul(const complex& w, const complex& z){return complex(w.r * z.r - w.i * z.i, w.r * z.i + w.r * z.i);}
const complex jdiv(const complex& w, const complex& z){return complex((w.r * z.r + w.i * z.i) / (w.i * w.i + z.i * z.i), (w.i * z.r - w.r * z.i) / (w.i * w.i + z.i * z.i));}
const complex jexp(const complex& z){return complex(std::exp(z.r) * std::cos(z.i), std::exp(z.r) * std::sin(z.i));}
>>590 char s[][7] = {"ド", "ド♯", "レ", "レ♯", "ミ", "ファ", "ファ♯", "ソ", "ソ♯", "ラ", "ラ♯", "シ"};
s[a]の周波数は440.*pow(2.,(a-9)/12.)Hz
599 :
デフォルトの名無しさん :05/02/18 19:42:08
>>593 ねぇねぇ 笑い って略さないのははやってんの?
いやこの前もどっか別のサイトで見たから聞いてみただけ。
600 :
599 :05/02/18 19:42:49
(微笑む) ってのもあるくらいだからねえ。
>>598 おお〜そうなるんですか
よくわかってないけど どうもっす
603 :
デフォルトの名無しさん :05/02/18 20:56:55
>>598 すいません よく考えたんですが
よくわからないっす!
これでどういう動きするんですか?
>>604 DSKとか知らないけど。
440.*pow(2.,(a-9)/12.)、数学っぽく書くなら440×2 ^ {(a - 9) / 12}
からある音の周波数を求めて(ラだったら440Hz)、正弦波を作って
配列に格納した方が速いんじゃないかね?と言うこと。
は長調のドは440Hz
607 :
デフォルトの名無しさん :05/02/18 22:13:16
ハ長調の「ラ」が 440Hz では?
608 :
564 :05/02/18 22:26:50
class Employee; typedef Employee* Data; class Node { public: Node() {next = NULL;} Node(Data d, Node* n = NULL) {data=d; next=n;} ~Node(); void setNext(Node* n) {next=n;} void setData(Data d) {data=d;} Data getData() {return data;} Node* getNext() {return next;} private: Node *next; Data data; };
609 :
564 :05/02/18 22:27:36
class List { public: List(){setHead(NULL);size=0;} ~List() {clear();} void setHead(Node *n) {head=n;} Node* getHead() {return head;} int getSize() {return size;} bool isEmpty() {return (size==0);} Data addNode(Data d) {return addNode(new Node(d));} Data addNode(Node* n); // ↓Node *prevの後にAdd Node *nを加える void addNode(Node *prev, Node* n); //↓Node *n をlistから消す void removeNode(Node *n); // ↓Data dを含んでいるNodeをlistから消す。 void removeNode(Data d); private: Node *head; int size; };
610 :
564 :05/02/18 22:28:49
Data addNode(Node* n); void addNode(Node *prev, Node* n); void removeNode(Node *n); void List::removeNode(Data d) をやっているんですけど、うまくいきません。。。
C++ でコレクションクラスを作る気が知れない。
車輪の再発明だしな
>>613 Collectionの作り方を覚えればいい。
>>615 わざわざ一回作ってみる必要はなかろう。
本当に勉強する気があるなら作って見るのも悪くは無い。 でもここに来る奴なら必要は無いね
>>564 Data addNode(Node *n) {
if(n == NULL) return NULL;
if(size == 0) { head=n; size++; return NULL; }
else if(size == 1) { if(*head == *n) return head->getData(); else { addNode(head, n); return NULL; } }
Node *nd = head; int ct=2;
if(*head == *n) return head->getData();
while(*(nd->getNext()) != *n) {
if(size == ct) break;
nd = nd->getNext();
}
if(*(nd->getNext()) == *n) return nd->getNext()->getData();
addNode(nd, n);
return NULL;
}
void addNode(Node *prev, Node *n) { prev->setNext(n); size++; }
... if(size == 0) { head=n; size++; return NULL; } Node *nd = head; int ct = 1; while(1) { if(*nd == *n) return nd->getData(); if(size == ct) break; nd = nd->getNext(); ct++; } addNode(nd, n); ... 素直にList使うか…
620 :
デフォルトの名無しさん :05/02/20 02:24:22
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 以下 [3] 環境 [3.1] OS: Windows XP pro [3.2] コンパイラ(バージョン):bcc [3.3] 言語:C [4] 期限:2月21日昼 [5] その他の制限: 必要な標準関数は適宜使用すること. ただし,関数を作る問題ではその関数を使ったmain関数も考えること. 4.3次元ベクトルを表す構造体(タグ名「Vector3D」)を定義し, この構造体を使ったベクトルの外積を計算する関数「Cross_Product」を作りなさい. ただし,引数は2つの3次元ベクトル,戻り値は外積ベクトルとする. なお,外積は以下の式で計算できる. c = a×b = ( ay bz – az by, az bx – ax bz, ax by – ay bz ) この関数を使って以下の2つのベクトルの外積を求めなさい. a = ( 0.1, -0.8, -1.3 ) b = ( 1.7, 2.2, -3.1 ) 2.標準関数の「strlen」は半角文字の字数を数える関数なので全角文字1字を2字と数えてしまう. 一般に「DOS/V」と呼ばれる機種のパソコンでは漢字コードとして「シフトJISコード」が使われている. シフトJISでは全角文字(2バイト)の第1バイトは 0x81(129)〜0x9f(159) および 0xe0(224)〜0xfc(252) の範囲の値をとる. そこで,文字列を先頭から1バイト毎にチェックし,この範囲であればその文字は全角文字の第1バイトであることになり, 範囲外であれば半角文字ということになる.このことを利用して, シフトJISコードの全角文字と半角文字が混在した文章の字数を正確に数えられる関数「strlen_sjis」を作りなさい. なお,この関数の引数は「文字列」,戻り値はその字数とする. 【注意】上にあげた第1バイトの値はすべて127より大きく先頭ビットが反転しているので, そのままでは負号をもちます. そこで,文字列は「unsigned char」として宣言する必要があります. 5つ問題があって、これ以外のものは解けたんですがこの2つが解けません。 よろしくお願いします!
>>620 問題を作った奴は誰だ?嘘ばかり並べやがって
個人的にはこれが気に入ったyo! > 一般に「DOS/V」と呼ばれる機種のパソコンでは漢字コードとして「シフトJISコード」が使われている. そーだったのか。。。
外積ってこれでよかった? #include <stdio.h> struct Vector3D { double x,y,z; }; void vec(const struct Vector3D *in1, const struct Vector3D *in2, struct Vector3D *out) { out->x = in1->y*in2->z - in1->z*in2->y; out->y = in1->z*in2->x - in1->x*in2->z; out->z = in1->x*in2->y - in1->y*in2->x; } #define ISLEAD(c) ((c)>=0x81 && (c)<=0x9f) #define ISTAIL(c) ((c)>=0xe0 && (c)<=0xfc) size_t strlen_sjis(const unsigned char *string) { size_t len = 0; const unsigned char *ptr = string; while(*ptr){ if (ISLEAD(*ptr) && ISTAIL(*(ptr+1))) ptr++; ptr++; len++; } return len; } int main() { const struct Vector3D a = { 0.1, -0.8, -1.3 }; const struct Vector3D b = { 1.7, 2.2, -3.1 }; struct Vector3D c; const char d[] = "..."; vec(&a, &b, &c); printf("c = ( %f, %f, %f )\n", c.x, c.y, c.z); printf("%s = %u\n", d, strlen_sjis((unsigned char *)d)); return 0; }
ああ、回答混ぜちゃった。 外積は関数名やら戻り値が要求を満たしてなかった。すまんね。
>>622 おれのDOS/Vと呼ばれる機種のパソコンにインストールしてあるOSだと、
漢字コードにいわゆるeuc-jpを使ってるけどなあ、というありがちな突っ込み。
昔作られた問題をそのまま使ってるんだろう
>>623 引数のstringを直接インクリメントしても平気だよ。
それ以前に"ほげ"を渡して4が返ってくるはどうかと。
>>620 の問題を作った奴
こうすればunsigned charにしなくてもうまくいく。
逆にunsigned charに固定するとちゃんと動かない。
size_t strlen_sjis(const char *s) {
size_t len = 0;
while (*s != '\0') {
len++;
if ((*s >= '\x81' && *s <= '\x9F') || (*s >= '\xE0' && *s <= '\xFC'))
s += 2;
else
s++;
}
return len;
}
>>620 宿題はやらなくていいから出題者をののしってきなさい。
>>629 マルチする暇あるんならlibiconvのソースでも読んでろよ
だから報酬はするもんじゃないと
634 :
デフォルトの名無しさん :05/02/20 17:31:36
[1] 授業単元: 継承 [2] 問題文(含コード&リンク): 最低1回は継承を用いてクラスを定義し、定義したクラスを用いた プログラムを作成せよ。(その際、適宜コメントして説明すること) [3] 環境 [3.1] OS: windows [3.2] コンパイラ(バージョン):visual C++ [3.3] 言語:C/C++/どちらでも可 のいずれか C++ [4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか 2月21日 [5] その他の制限: 初心者のプログラムらしくしてもらえると幸いです。 すいません。超初心者なんで、ぜんぜんわかりませんでした。。。 どうかよろしくお願いします。
class Parent { } class Child extends Parent { } class Test634 { static public void main(String argv[]){ Child child = new Child(); } }
すまん。めちゃくちゃかんちがいしてた。 無視してくれ。
>>635 >言語:C/C++/どちらでも可 のいずれか C++
ここを日本語に訳してくれ
>>638 それぐらい察しろよ。つかえねー奴だな。
テンプレの文章のあとにC++を書き足したってだけみたいですな
>>634 #include <iostream>
class BaseFunc{public:int m_vol;virtual int func(int rh)=0;BaseFunc():m_vol(0){;}BaseFunc(int vol):m_vol(vol){;}};
class Add:public BaseFunc{public:Add():BaseFunc(0){;}Add(int vol):BaseFunc(vol){;}int func(int rh){return m_vol+rh;}};
class Sub:public BaseFunc{public:Sub():BaseFunc(0){;}Sub(int vol):BaseFunc(vol){;}int func(int rh){return m_vol-rh;}};
class Mul:public BaseFunc{public:Mul():BaseFunc(0){;}Mul(int vol):BaseFunc(vol){;}int func(int rh){return m_vol*rh;}};
class Div:public BaseFunc{public:Div():BaseFunc(0){;}Div(int vol):BaseFunc(vol){;}int func(int rh){if(rh)return m_vol/rh;else return 0;}};
int main(){int x=21,y=7,z;BaseFunc *p;
{p=new Add(x);z=p->func(y);std::cout<<x<<" + "<<y<<" = "<<z<<std::endl;delete p;}
{p=new Sub(x);z=p->func(y);std::cout<<x<<" - "<<y<<" = "<<z<<std::endl;delete p;}
{p=new Mul(x);z=p->func(y);std::cout<<x<<" * "<<y<<" = "<<z<<std::endl;delete p;}
{p=new Div(x);z=p->func(y);std::cout<<x<<" / "<<y<<" = "<<z<<std::endl;delete p;}
return 0;}
642 :
デフォルトの名無しさん :05/02/20 20:43:37
次のプログラムは配列tenの内容をポインタpによって参照し、入出力するプログラムである。次の空欄を埋めよ。ってゆう問題なんですけど@〜Cまでの空欄解いてもらえないでしょうか? #include<studio.h> main() { int i,ten[10] int @p A for(i = 0;i < 10;i++){ printf("整数を入力>>"); scanf("%d",B); } for(i = 0;i < 10;i++){ printf("%d個目 = %d\n",i+1,C); } }
>>642 1 *
2 = ten;
3 p + i
4 i[p]
テンプレに従えとは言わんが、せめて問題をそのまま写せ セミコロンが全角だったり抜けてたりしてて見る気にならん
645 :
デフォルトの名無しさん :05/02/20 20:50:13
写したつもりやったんやけど、ぬけてたみたいで。。。すいませんでした
646 :
デフォルトの名無しさん :05/02/20 20:56:31
あと二つあるんですけど解いてもらえませんか?
>>645 あやまるだけじゃなく、きちんと訂正しないと>643みたいな回答のままになるぞ。
648 :
デフォルトの名無しさん :05/02/20 21:15:06
次のプログラムは配列tenの内容をポインタpによって参照し、入出力するプログラムである。次の空欄を埋めよ。ってゆう問題なんですけど@〜Cまでの空欄解いてもらえないでしょうか? #include<studio.h> main() { int i,ten[10]; int @p; A for(i = 0;i < 10;i++){ printf("整数を入力>>"); scanf("%d",B); } for(i = 0;i < 10;i++){ printf("%d個目 = %d\n",i+1,C); } } ちゃんと写せたと思うんですけど、あってますか??
1 * 2 p = ten; 3 p + i 4 i[p]
650 :
デフォルトの名無しさん :05/02/20 21:30:39
次のプログラムは入力すた値を2乗した値を表示するプログラムである。なお、整数を受け取り、受け取った値の2乗を戻す、jijyo関数を作成し、それを利用している。空欄を埋めよ。(仮引数名は自由に決めてよいものとする) #include<stdio.h> @ jijyo(A); main() { int suu,ans; printf("整数を入力してください>>"); scanf("%d",B); ans = C; printf("%dの2乗は%dです。\n",D,E); } F { G } この問題の@〜G解いていただけますか??
なにこの宿題ふざけてるの?
@int Aint num B&suu Cjijyo(suu) Dsuu Eans Fint jijyo(int num) Greturn num * num;
[1] 授業: Cプログラミング [2] 問題文 文字、数値取得と判定 [3] 言語:C [4] 期限: 早ければ早いほどいいです。 char ss[]="MPA T01 DELAY -24ms.wav"; char ss2[]="MPA T12 DELAY 234ms.wav"; char ss3[]="MPA T DELAY 21ms.wav"; char ss4[]="MP T01 DEBY -32ms.wav"; この文字列から XXmsの XXの数値を 得るにはどうすれば良いんでしょうか? それとss3,ss4はエラーで出力したんですけど 教えてください
解決しました すいません(^^@
>それとss3,ss4はエラーで出力したんですけど >教えてください だからこれの意味がわからんと
機種依存文字使うなよ
658 :
71 :05/02/21 13:52:04
【質問テンプレ】 [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 三角関数(Tan、Cos、Sin)を求めるプログラム作成 [3] 環境 [3.1] OS: Windows XP Pro [3.2] コンパイラ(バージョン): ボーランド [3.3] 言語:C/C++/どちらでも可 のいずれか Cのみ [4] 期限平成17年2月28日4:00まで [5] その他の制限: 宿題なのでよろしくお願いします。
C言語 三角関数でググったらいっぱいおっぱい出てくるよ
>>658 #include <stdio.h>
#include <math.h>
#define put(f, d) printf("%s(%lf) == %lf\n", #f, d, f(d));
int main(void) {
double d;
if (scanf("%lf", &d) != 1) return 1;
put(sin, d);
put(cos, d);
put(tan, d);
return 0;
}
>>659 おっぱいはドコだっ!! (゚Д゚≡゚Д゚)
イメージ検索じゃ、妄想を膨らまさなければそうは見えなかった。
チクショウ!
662 :
デフォルトの名無しさん :05/02/21 15:36:18
[1] 授業: Cプログラミング [2] 問題文 (下記のプログラムを参照して ) BMPファイルを開き、それを別のファイルにコピーせよ。その際 そのBMPファイルをグレイスケール(灰色がかった色合い)に変更せよ。 ヒント:最初の99バイトをコピーし、残りのバイトに関しては、3つを1度に読み込む(赤ー緑ー青の順)。 そして、それらの値の平均化し、新しい(別の)ファイルにコピーしなさい。 [3] 言語: C [4] 期限: 早ければ早いほどいいです。 [5] 補足: ヒントの部分は分かりづらくてすみません。要はコピーした写真が灰色がかっていればいいと思います。 include <stdio.h> main() { FILE *f1 = fopen("file1","r"); FILE *f2 = fopen("file2","w+"); char buff[128]; int br; while( (br = fread(buff, 1,1, f1)) > 0) fwrite(buff, 1, br, f2); fclose(f1) ; fclose(f2);
<stdio.h> main() { FILE *f1 = fopen("file1", "rb"); FILE *f2 = fopen("file2", "wb"); unsigned char rgb[3]; int i; for (i = 0; i < 99; i++) fputc(fgetc(f1), f2); while (!feof(f1)) { fread(rgb, 3, 1, f1); rgb[0] = rgb[1] = rgb[2] = (rgb[0] + rgb[1] + rgb[2]) / 3; fwrite(rgb, 3, 1, f2); } fclose(f1); fclose(f2); }
RGBをグレイスケールにするときは足して3で割ったらだめだよ
いいんだよそれで その程度の問題なんだから
BMPの画像情報とかパレットテーブルって常に100バイトだっけ?
いいんでない? ヒントにそう書いてあるんだから。
668 :
デフォルトの名無しさん :05/02/21 18:30:04
やり方わかんないです 教えてください 泣きそうです 1. freecommandlinetools.exe を実行します。無料の C++Builder 5 コマンドラインツール開発システムをインストールしたいドライブと フォルダを選択します。 2. インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 b. bcc32.cfg ファイルを作成します。このファイルは,Include および Lib パスのコンパイラオプション(コンパイラの -I および -L スイッチ)を設定するものです。ファイルには次の 行を含めてください。 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" c. ilink32.cfg ファイルを作成します。このファイルは,Lib パスのリンカオプションを設定するものです。ファイルには 次の行を含めてください。 -L"c:\Borland\Bcc55\lib"
スレ違い
670 :
デフォルトの名無しさん :05/02/21 18:32:18
どこでしょうか?
672 :
デフォルトの名無しさん :05/02/21 18:38:21
673 :
デフォルトの名無しさん :05/02/21 22:21:55
以下は2点の座標値を入力し、2点間の距離を求めるプログラムである。 この続きを書き、プログラムを完成させよ。 ただし、与えられた関数を必ず使うこと。変数は自由に定義して構わない。 #include<stdio.h> #include<math.h> void main() { float kyori(int x , int y); _________________________ 授業単元: プログラム演習 [3] 環境 [3.1] OS:WIN XP [3.3] 言語:C [4] 期限:今日中 どなたかよろしくお願い致します。
写し間違いじゃなければ、確かにこの問題はヤバい・・・
本気かこれ?
多分写し間違いだろうけど、もしそうじゃなかったら マジで今後の身の振り方考えた方がいいかもね。
>>674 厨一でマイナスを習うときの数直線ぢゃないの?
やめられないっしょ。
>>673 #include <stdio.h>
#include <math.h>
float kyori(int x, int y) { return (float)(y - x); }
/*void*/ int main(void)
{
float kyori(int x, int y);
int x, y;
if (scanf("%d%d", &x, &y) != 2) return 1;
printf("%d と %d の距離 = %.0f\n", x, y, kyori(x, y));
return 0;
}
[1] アクションゲーム製作 [2] LoadBMP(char* Filename, unsigned char** pGraph, int Width, int Height)関数の作成 [3] TurboC++ [3.1] WinXP [3.2]4.0 [3.3] Cのみ [4] 2月23日 AM 9:00 [5] [2]の関数名で書いて下さい /*************[LoadBMP]*********************/ int LoadBMP(char* Fn, unsigned char** ppGraph, int Width, int Height) { FILE* fp; int err; *ppGraph = (unsigned char*)malloc(Width*Height); if(*ppGraph==NULL) return MEMORY_ERROR1; fp=fopen(Fn,"rb"); if(fp==NULL) return FILE_ERROR1; //読み込み位置を決める ←をやって頂きたいです err = fread(*ppGraph, Width*Height, 1, fp); if(err!=1) { fclose(fp); return FILE_ERROR1; } fclose(fp); return 0; }
>>679 ついでに、
>厨一でマイナスを習うときの数直線ぢゃないの?
お前は一次元ユークリッド空間をマイナスを教えるときにしか使わないのか
だったら舐めらるようなレスつけないで下さいよ
つーか距離の計算できないって、リアルで消防か 80杉のおっさんくらいしか思い浮かばない
>>673 手遅れです(宿題が、ではなくあなたの人生が)
まじでやめたほうがいい、これは
そうですか
ええ
float kyori(int x, int y) { return (float)(y - x); }
数直線での整数値の距離なら、戻り値をfloatにする意味がわかりません。 x,y座標においての距離なら、一点だけを入力して距離が求まるはずありません。 そういうことですね?貴様らが言いたいのは、あ?
それよりも距離は符号つかねーよと言いたい
>>673 #include<stdio.h>
#include<math.h>
int
main() {
float kyori( int x, int y );
int x1, y1, x2, y2;
if ( scanf( "%d%d%d%d", &x1, &y1, &x2, &y2 ) != 4 ) return;
printf( "%f\n", kyori( x2 - x1, y2 - y1 ) );
}
float
kyori( int x, int y ) {
return sqrt( x * x + y * y );
}
たぶんこういう意図じゃないかなー、期限すぎてるけど
mainの戻り値がありませんが
700 :
デフォルトの名無しさん :05/02/22 12:21:10
[1] 授業単元: C [2] 問題文(含コード&リンク): 画面から( 会員番号, 名前, 電話番号 )を入力し、 以下のようなCSV形式のファイルを書き出すプログラムを作成してください <CSVファイル> カンマ区切り A001,tanaka daisuke,電話番号 B033,内藤 一,電話番号 A004,鈴木 三郎,電話番号 会員番号 − 最大4byte 半角英数字のみ 名前 − 最大32byte 制御文字以外の文字全て 電話番号 − 最大13byte ハイフン,数字のみ ・入力項目は全て入力しなければならない ・入力項目が不足している場合、入力項目の文字種別が異なる場合、 最大byte数を超えて入力された場合は標準エラーストリーム(stderr)にエラー情報を出力する。 ただし、エラー表示後、入力状態に戻ること。 ・何度も繰り返して会員番号を入力できるようにする プログラムを終了させる条件を考えること ・構造体を使用すること ・登録件数の上限をなくすこと。(メモリが許す限り何件でも登録できること) ・会員情報を記述するファイル名はプログラムの引数で与える ファイルが存在しない場合は作成 すでに存在する場合は、すでにある行の後に追記 ・会員番号の昇順でファイルに出力すること。 ・会員番号は重複しても構わない [3.2] コンパイラ(バージョン):borland C++ [3.3] 言語:C [4] 期限:2月24日15:00まで位でお願いします。 よろしくお願いします。
>701 696じゃないけど うちの大学でもこう書けって習った・・・
と、思ってよく見たら違ったorz
[1]授業単元:C言語 [2]問題文:オセロを作れ [3]環境 [3.1]OS:UNIX [3.2]コンパイラ:gcc [3.3]言語:C [4]期限:23日昼 [5]その他の制限:CPU対戦は不要
705 :
705 :05/02/22 16:29:45
エラトステネスのふるいってやつをプログラミングしてみたんだけど もっと改良したほうがイイ所あったら指摘してください
706 :
705 :05/02/22 16:31:41
#include <stdio.h> main(){ int data[100000],date[100000],i,j,k,n; printf("2からいくつまでの間の素数を求めますか?数字を入力してください。2〜"); scanf("%d",&n); data[2]=2; date[2]=0; j=3; for(i=3;i<=n;i++){ if(i%2!=0){ data[j]=i; date[j]=0; j++; }} for(i=3;i<=j-1;i++){ for(k=i+1;k<=j-1;k++){ if((data[k]%data[i]!=0)&&(date[k]==0)){ date[k]=0; } else{ date[k]=1; }}} for(i=2;i<=j-1;i++){ if(date[i]==0){ printf("%6d",data[i]); }}printf("\n");}
>>706 パッと見だけど、date(日付け?)の振る舞いがおかしくないかい?
data[n]は常にnな気がするし。
708 :
デフォルトの名無しさん :05/02/22 17:31:24
今アルゴリズムの勉強してるんですけど、 void alternate( int *a, int *b) { //ポインタaとbで指定された内容を交換する int w; (問1); *a = *b; (問2); } 答1、w = *a; 答2、*b = w; これで交換できますか?
>>708 なぜそれを実環境で動作させてみないんだ?
それって、勉強っていうのか?
>>708 できんじゃねーの?
アルゴリズムは激しく無関係だけどな。
>>709 動作させる環境がまだないので…。
すいません、お邪魔しました
>>708 実際に交換できるかどうかは自分で確認するべきだ
で、「希望通りの動きをしたが、やり方はこれでいいのか」ということを聞くべきだ
と思ったらここは宿題スレか
それでいいよ
すいません 答えて頂けないでしょうか
715 :
デフォルトの名無しさん :05/02/22 19:35:13
>>714 :680
すいません 読み込み位置をどこに決めたらいいのか答えて頂けないでしょうか
あ、しまった18バイトじゃないや。まぁ、調べれば分かるよな
答えてもらいますよ。
恐らく14+40。 つか、各ドットに対して1Byteな時点で(ry
BITMAPFILEHEADERのメンバに直接ビットマップビットを(ry
>>719 意地悪だなぁ、1バイトってことはパレ(ry
ファイルサイズ - (Width*Height*3) じゃダメ?
windows bitmap fileならダメ! ファイルのヘッダー部を読まないと(ry
OS/2 bitmap ならヘッダーサイズが違う
725 :
yasu :05/02/23 12:38:04
学校の課題なんですが、入院をしていて全く分かりません。単位がもらえない 可能性があるのでどうかお願いします。たくさんあって申し訳ないんですが・・・。 c++です 1. (合計と平均)10個の整数の合計、平均を求めるプログラムをfor文で作りなさい。 2. (実数の掛け算)10個の実数を読みとり、それらを掛け合わせた値を表示するプロ グラムをfor文でつくりなさい。 3. 整数nを読み込み、n行で三角形を描くプログラムをfor文を使って作りなさい。 例n=3のとき * ** *** 4. 0から100までの整数の二乗、平方根を求めるプログラムを作りなさい。 但し、整数は15間隔で変化させること 5. 0〜180度までの角度に対する三角関数(sin,cos)の値を表示するプログラム を作りなさい。ただし、角度は15度間隔で変化させ、値は全体7桁、小数部4桁で 表示させてください。なお、三角形に与える角度はラジアンです。 お願いします。卒業したいです。お願いします。
>>725 そのくらいもできないのであれば、卒業しなくていいよ
727 :
yasu :05/02/23 12:48:49
すいません。追加↑です [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 上に書いてあります [3] 環境 [3.1] OS:windows [3.2] コンパイラ(バージョン): よく分からないですが、ボーランドのコンソールアプリケーションっているので作りました [3.3] 言語:C++ [4] 期限:2005年4月25日 失礼かもしれませんが、できるだけ早くお願いします 本当にお願いします。これが最後の手段なんです。
728 :
yasu :05/02/23 12:50:37
またしても追加です 期限が、4月ではなく【2月】です。本当に余裕がなくて間違いだらけですいません
ところでBMPファイルは無圧縮前提なん?
730 :
yasu :05/02/23 12:55:31
よく分かりません bmpファイルって。高校ではこんなの出てきませんでした。
>>727 最後の手段つーことは、入院証明とって教授にかけあって補習とかそういうのを
してもらえないかどうか頼んだと考えていいのかな。
1. 10個の整数の入力をどうするのかが不明。予め10個入れちゃってもいいの?
2. 何から読み取ればいいのか。ファイル? 入力?
3. どこから読み(ry
4. 結局90まででいいのかな?
入院をしていて・・・ニヤニヤ
733 :
yasu :05/02/23 13:24:00
入力でいいと思います。お時間がなければ結構ですよ。素直にダブります。
Cでやっちゃった(テヘッ♥
時間はあるが お前の態度が 気に入らない
>>725 の5ってこんな感じで合ってますか?
数学自信ある方、添削よろしくお願いしますm(_ _)m
#include<stdio.h>
#include<math.h>
#define PAI 3.141592
int main(void)
{
double rad;
int i;
for( i = 0; i <= 180; i+=15){
rad = (2*PAI / 360) * i;
printf("sin(%3d) = %7.4f cos(%3d) = %7.4f\n", i, sin(rad), i, cos(rad));
}
return 0;
}
737 :
yasu :05/02/23 14:05:10
ありがとうございます。たすかりました。私の態度が悪かったです。 すいませんでした。5番の方ありがとうございました。
>>736 PIの精度がたらない。
math.hにM_PIがないなら3.14159265358979323846を使え。
>>725 /* 4 */
for (int ic = 0; ic < 100; ic += 15) {
printf("%d, %d, %g\n", ic, ic * ic, sqrt(ic));
}
>>738 アドバイスアリガトゴザイマス
740 :
yasu :05/02/23 14:21:44
いろいろとありがとうございます。
>>725 >入院をしていて全く分かりません
ハァ? 何甘えたこといってんだ。
C++ 歴一日の俺でも本身ながらで20分くらいでできたぞ。
C++ の教科書あんだろ?
// 1
#include <iostream>
#define N 10
int main() {
int sum = 0;
for (int i = 0; i < N; ++i) {
int data;
std::cin >> data;
sum += data;
}
std::cout << "合計:" << sum << '\n'
<< "平均:" << sum / N << '\n';
}
742 :
741 :05/02/23 14:50:02
// 2 #include <iostream> #define N 10 int main() { double multiplied = 1; for (int i = 0; i < N; ++i) { double d; std::cin >> d; multiplied *= d; } std::cout << multiplied << '\n'; } // 3 #include <iostream> int main() { int n; std::cin >> n; for (int i = 1; i <= n; ++i) { for (int j = 0; j < i; ++j) std::cout << '*'; std::cout << '\n'; } }
// 4 #include <iostream> #include <iomanip> #include <cmath> int main() { for (int i = 0; i < 100; i += 15) std::cout << std::setw(3) << i << '\t' << std::setw(4) << pow(i, 2) << '\t' << sqrt(i) << '\n'; }
745 :
yasu :05/02/23 14:55:50
自分に甘えていたと思います。教科書はあるんですが…。 本当にありがとうございました。
>>725 //Q1
#include<stdio.h>
#include<math.h>
int
main() {
int w[ 10 ];
int i;
for ( i = 0; i < 10; i++ ) {
printf( "%d=>:", i );
scanf( "%d", &w[ i ] );
}
int v = 0;
for ( i = 0; i < 10; i++ ) v += w[ i ];
printf( "Q1: Total:%d Mean:%lf\n", v, v / 10. );
}
>>725 //Q2
int
main() {
double w[ 10 ];
int i;
for ( i = 0; i < 10; i++ ) {
printf( "%d=>:", i );
scanf( "%lf", &w[ i ] );
}
double v = 1;
for ( i = 0; i < 10; i++ ) v *= w[ i ];
printf( "%lf\n", v );
}
>>725 //Q3
int
main() {
int w;
int i, j;
printf( "Q3=>:" );
scanf( "%d", &w );
for ( i = 0; i < w; i++ ) {
for ( j = 0; j <= i; j++ ) {
printf( "*" );
}
printf( "\n" );
}
}
Cかよ。
プププッ
printf( "*" ); printf( "\n" ); 冗長じゃね?
752 :
yasu :05/02/23 16:20:37
ご協力していただいたかたありがとうございました。
C++で文字の大きさを変更するってどうするんですか?
>>753 std::stringならresize()
>>754 ありがとうございます。引数は何にすればいいのでしょうか?
文字の大きさってそういう意味なのか…?
>>756 文字の大きさというからには、toupper()/tolower()じゃないのか?
平均を整数で計算するのは何処の流儀なんだ?
>>725 3番
#include <iostream>
#include <string>
#include <iomanip>
int main()
{
static const int n = 3;
for (int i = 1; i <= n; ++i)
std::cout << std::setw(n + i - 1) << std::string(std::string::size_type(2 * i - 1), '*') << std::endl;
}
Printfデバックの、やり方を教えて下さい。
>>761 関数の戻り値や変数の値などを知りたい所でprintfやfprintf(stderr, などで出力して確かめる。
どこで動作がおかしくなるのか、だいたいのあたりをつけたいときに 「このへんかな」ってとこにprintf入れて簡単に確認してた。
765 :
デフォルトの名無しさん :05/02/23 23:19:40
重点サンプリング法の質問はここで良いでしょうか? プログラムを組もうと思っているのですが、重点サンプリング報じたいがよく判らないので、 『解を得るまでのフロー』があっているチェックしてください。 『問題』 P[R<S]を求めるのが最終目的です。(RとSは互いに独立) fr,fsはS,Rの確率密度関数(それぞれWeibull,Frechet) I(R<S)はR≦Sなら1を、R>Sなら0を返す関数 重点サンプリング関数は互いに独立な2次元正規分布で平均、標準偏差は共に(18,4.5) 『解を得るまでのフロー』 1. 正規分布(18,4.5)に従う乱数を2つ生成し、(r,s)とする。 2. I(r<s)を計算する。 3.fr(r)*fs(s)を計算する。 4.φ((r-18)/4.5)*φ((s-18)/4.5)を計算する。(φ(●)は標準正規密度関数) 5.(2の結果)*(3の結果)/(4の結果)を計算する。 6.1−5を繰り返し、平均値を取る。 よろしくお願いします。
768 :
デフォルトの名無しさん :05/02/24 00:41:10
>>766 ありがとうございます。
そちらで聞いてみます。
include <stdio.h> unsigned int sjeuc(); unsigned int eucsj(); int main(void){ unsigned int a; unsigned int b; FILE *fp a = sjeuc(?); // 題意では引数がunsigned int型のみ? b = eucsj(?); return 0; } /* Shift-JIS⇒EUC */ unsigned int sjeuc(unsigned int x){ return (x); } /* EUC⇒Shift-JIS */ unsigned int sjeuc(unsigned int x){ return (x); } ここから進まないって・・・・酷いな ところでファイルからその2バイト読み込むんか?
誤爆?
どなたかナンバープレースのフローチャートを教えていただけませんか? 検索したら出てくるのは出てくるのですがExcelとか使ってて分からないんです。 できれば、すぐにでも。
知 っ て い る が お 前 の 態 度 に 気 に い ら な い
>>772 そうですよね。自分でもホントあつかましいと思ってます。
でも、時間が無いんです。お願いできませんか?
元 か ら お 前 に は 聞 い て な い
春休みで暇だから面白そうなら解きたい
>>771 なにをすればいいの?
問題を解くフロチャ?問題を作るフロチャ?ってかフローチャートじゃなきゃ駄目ン?
>>775 解くほうのフローですね。もしよければやっていただけますか?
すいません、書き忘れました。 今のところはフローじゃないとダメです。 でも後日プログラムも提出ということになってます。
778 :
765 :05/02/24 02:23:31
出来ましたら、私の問題のフローチャートも教えてもらえませんか。
>>769 関数を作れとだけあるので、何main関数内の仕様はないです
そもそも様々な場所で質問しても、この問題は意味不明 って問題自体を否定されます。(まぁ退院あがりで虚ろな教授の作成した問題ですけど)
どうしよう〆切は28日と時間が無いのに、こんな問題出されても
そもそもこの問題は引数の型を何にして欲しいのでしょうか (普通、文字コード変換はchar *が使われるのが当たり前なのに・・・)
関数だけ作って、コンパイルも動作確認もせずに提出つもりなのか?
euc(jis)コードとsjisコードのそれぞれ第1バイトを縦軸に、 第2バイトを横軸にして2次元であらわして見比べりゃ、 只の座標移動だろに・・・
[1]C言語 [2]キーボードから入力された整数を、線形リストとして追加していき、 リストの末尾をポインタpで指すプログラムを以下に示す。 なお、プログラムの終了条件は、0以下の整数が入力されたときとする。 [3]環境 [3.1]Microsoft Windows XP Professional [3.2]Microsoft Visual Studio.NET Professional 2003 [3.3]C++ [4]2005年02月24日中 ?の部分がわかりませんお願いします #include <stdio.h> #include < ? > struct list{ int number; struct list* before; }; struct list* add_list(struct list*,int}; void print_list(struct list*); void free_list(struct list*); void main(void) {
struct list* p; int n; p= ? ; printf("整数を入力してください!\n"); printf("(0以下の入力で終了)\n"); scanf("%d",&n); while(n > 0) { p=add_list(p,n); printf("整数を入力してください!\n"); printf("(0以下の入力で終了)\n"); scanf("%d",&n); } print_list(p); free_list(p); } struct list* add_list(struct list* p,int n) { struct list* q;
q = (struct list*)malloc(sizeof( ? )); q->number = ? ; q->before = ? ; return ? ; } void printf_list(struct list* p) { if(p != ? ) { print_list( ? ); printf("number = %d\tbefore = %p\n",p->number,p->before); } } void free_list(struct list* p) { if(p != ? ) { free_list( ? ); free(p); } }
>>782 上から
stdlib
NULL
struct list
p
q
NULL
p->before
NULL
p->before
2バイト以上文字コード(Unicode等)を数値から 文字に変換するにはどういった処理を書けばよろしいでしょうか? 数値を入力したら対応する文字を表示させる 41→A こういった感じの2バイト以上の文字(日本語)を表示させたいんです。 どうかよろしくお願いいたします。
さっそくありがとうございます 一個足りないみたいなんですがどこが抜けてるのでしょうか?;;
>>786 Unicode等って何だ?あらゆる文字コードにも対応しないといけないのか?
>>787 お、抜けてた。 struct list の次のやつは n で。
>>788 すいませんでした。Unicodeだけで大丈夫です。
eucsj と sjeuc さえ作ればいいんだろ。 なんで、main を作りたがる? 「unsigned int型のデータに、第1バイトを上位8ビット(8〜15ビット)、 第2バイトを下位8ビット(0〜7ビット)に格納することで2バイトデータを表すことにする。」 ここまで明確に書いてあるのに、何を迷う?
>>792 環境はC++です。
scanfで数値を入力して数値に対応した文字(Unicode)を
printfで表示させるといった感じです。
>>793 表示先はどこだよ
Unicodeが出せる環境なのか?自分で何がやりたいかわかってんのか?
>>792 すいません。テンプレ忘れてました。
[1] プログラミング言語(C)
[2] scanfで入力した数値を対応した文字で出力しなさい。
ただし、2バイト以上に対応していること。Unicodeで出力。
[3] C++
[3.1] OS: WindowsXP(Pro)
[3.2] BorlandC++
[3.3] 言語:C
[4] 期限:2005年02月28日まで
失礼いたしました。
>>796 unsigned int n;
do{
scanf("%x", n);
}whie(n > 0xFFFF);
printf("%s", (char *)n);
むしゃくしゃしてやった。反省はしてない。
[1] 授業単元:ファイル入力 [2] 以下のファイル (テキスト形式、名称は任意) から数値を読み込み、 各行の数値の和を出力しなさい。 なお、行内の数値の数は6個で固定としても構わないが、 任意の行数に対応出来るものとする事。 1,-2,3,4,5,6 7,8,9,10,11,-13 [3] 環境: C [3.1] OS:WindowsXP(Professional) [3.2] コンパイラ(バージョン):Microsoft Visual C++ 6.0 [3.3] 言語:C [4] 期限:2005年02月26日まで [5] その他の制限: 特になし。不足している情報があればご指摘願います。
[1]C言語 [2]二分探索に関するプログラムで?の部分に入る適切な物を書きなさい。 [3]環境 [3.1]Microsoft Windows XP Professional [3.2]Microsoft Visual Studio.NET Professional 2003 [3.3]C++ [4]今日中 #include<stdio.h> # ? ARRAY_SIZE void main(void) { int a[]={10,20,30,40,50,60}; int left,right,middle,value; printf("検索する数を入力して下さい!¥n”); scanf(" ? ”,&value); left = 0 right = ARRAY_SIZE - ?; middle = ?; while ( ? !=value && left <= ?)
{ if ( ? >value) right = middle - 1; else if ( ? < value) left = middle + 1; middle = ? ; } if( ? ==value) printf("find !\n"); else printf("not find !\n"); }
・・・
できたらこちらもお願いします [1]C言語 [2]単純選択法を用いた昇順のソートを行う次のプログラムで、 次の?に適切なものを書きなさい 。 1. i←0とする 2. a[i]からa[n]までで最小値をとる配列の添字kを求める 3. a[i]とa[k]の値を交換する 4. i ← i+1とする 5. i <= n-1であれば、2.へ行く。 i = n となったら終了する [3]環境 [3.1]Microsoft Windows XP Professional [3.2]Microsoft Visual Studio.NET Professional 2003 [3.3]C++ [4]今日中 #include <stdio.h> # ? ARRAY_SIZE 5 void main(void) { int a [] = {1,5,7,6,3} ; int i,j,k,temp; ・・・ /*プログラム省略部分*/ /***単純選択法によるソート処理開始***/
>>798 こんなときはどうするの?
1.5,-2.7,3.6,4.3,5.2,6.6
7+4,8*4,9-5,10/3,11^6,-13+4
802はやはりいいです 無視してください すいません
>>799 どの?がわからないんだ? 何もかもわかってないわけじゃないんだろ?
>>799 # ? ARRAY_SIZE
ここ写し間違いじゃないか?
>>805 right = ARRAY_SIZE - ?;
ここからわからないです・・・
>>806 # ? ARRAY_SIZE 6でしたすいません
>>803 すいません、
>>798 の書式が説明不足でした。
えーとですね、
> 1.5,-2.7,3.6,4.3,5.2,6.6
小数点を含む値についても考慮しなければならないみたいです。
具体的な範囲については特に指示が無かったですね。
> 7+4,8*4,9-5,10/3,11^6,-13+4
テキストファイル中での四則演算については考えなくていいそうです。
#include<stdio.h> #define ARRAY_SIZE (6) void main(void) { int a[]={10,20,30,40,50,60}; int left,right,middle,value; printf("検索する数を入力して下さい!\n"); scanf("%d",&value); left = 0 ; right = ARRAY_SIZE - 1; middle =left; while (a[left] !=value && left <= right){ if ( a[left]>value){ right = middle - 1; } else if (a[left]< value){ left = middle + 1; } middle =left; } if( a[left] ==value) {printf("find !\n"); } else { printf("not find !\n"); } } ifの後の{ }は消しておけ。
810 :
デフォルトの名無しさん :05/02/24 12:37:26
>>807 right = ARRAY_SIZE - ARRAY_SIZE + sizeof(a) / sizeof(int) - 1;
>>808 >> 1.5,-2.7,3.6,4.3,5.2,6.6
>小数点を含む値についても考慮しなければならないみたいです。
>具体的な範囲については特に指示が無かったですね。
「みたい」ってなんだよ
>> 7+4,8*4,9-5,10/3,11^6,-13+4
>テキストファイル中での四則演算については考えなくていいそうです。
上のような記述なら無視するの?それともエラーにするの?
無視するにしても 0,0,0,0,0,0 とみなすのか
74,84,95,103,116,-134
とみなすのかによっても処理は変わるんだから
仕様は厳密に定義してくれよな
こういう奴は大抵、条件に従ったコードを出した後にダメだししてくるんだよな
意地悪だなw
>>811 > 上のような記述なら無視するの?それともエラーにするの?
エラーにして頂いて結構です。
仕様の定義云々については、こちらの不勉強です。申し訳ない。
あと、人様が作ったものに文句を言うつもりは毛頭ありません。
多少のズレは自分で何とかします。
参考になるアイディアを頂きたかったので。
ありがとうございます 助かりました
ところで動くかどうかは確認したか? たまにここに書かれた回答は間違っていることがあるぞ 意図的になのか素で間違っているのかは知らないが
ここに来るやつにそんな質問は無駄だよ。 それができるやつならここに来ないと思う
#include <stdio.h> int ReadCalc(char *chrFileName); double DecimalBase(int intLv);//0.1のintLv乗を返します。0で1、1で0.1、2で0.01。 int main(int argc, char *argv[]){ if(argc <= 1){ printf("ERROR:読み込むテキストファイル名が指定されていませんよボケ。\n"); return (-1); } return (ReadCalc(argv[1])); } int ReadCalc(char *chrFileName){ char ch; FILE *fp; double dblCache = 0.0;//今の数を組み立てる際に使うdouble double dblSum = 0.0;//今の行の合計 int intPlus = 1;//今の数が正なら1,負なら-1。 int intDot = 0;//今の数の小数点以下の数。 int intLines = 1;//今の行数 fp = fopen(chrFileName, "r"); if (!fp){ printf("ERROR:File not Found.\n"); return (-2); } while((ch = fgetc(fp)) >= 0 ){ if(10==ch){//New Line dblSum = dblSum + intPlus * dblCache; printf("Line %d total : %f\n",intLines, dblSum); intLines++; dblSum=0.0; dblCache = 0.0; intPlus = 1; intDot = 0;
}else if(44==ch){//, dblSum = dblSum + intPlus * dblCache; dblCache = 0.0; intPlus = 1; intDot = 0; }else if(45==ch){//- if(dblCache == 0.0){ intPlus = -1; } }else if(46==ch){//. if(0 == intDot){ intDot = 1; } }else if((48 <= ch)&&(57 >= ch)){//0~9 if(0 == intDot){ dblCache = (dblCache * 10) + (ch - 48); }else{ dblCache = dblCache + DecimalBase(intDot) * (ch-48); intDot = intDot+1; } }else{//仕様に無い文字を無視したければこの辺りを削除すればよし。 printf("ERROR:仕様に無いテキストなので何かかっこいいエラーメッセージを考えろ:"); printf(" Line %d\n",intLines); return (-3); }//end if ch } if(dblSum != 0.0){//最後が改行で終わってない場合 dblSum = dblSum + intPlus * dblCache; printf("Line %d total : %f\n",intLines, dblSum); } fclose(fp); return(0);
} double DecimalBase(int intLv){//0.1のintLv乗を返します。0で1、1で0.1、2で0.01。 int cnt = 0.0; double dblReturn = 1.0; for(cnt=0;cnt<intLv;cnt++){ dblReturn = dblReturn * 0.1; } return dblReturn; } 読みこみ対象のテキストを実行時に引数で指定。 FILENAME.exe TARGET.txt あと、VC++は今持ってないので手元のBCC32でしか確かめてない。まあ宿題ごときで差異が出るとも思えんが。 できるだけわかりやすい書き方を心がけたつもり。 あと全角空白→タブへの置き換えを忘れずに。
>>818 ありがとうございました。
早速やってみます。
こちらの不勉強でご迷惑をかけてしまい、申し訳ありませんでした>各位
・main()からマイナス値を戻すな。 ・文字を数値で表すな。asciiじゃない環境でどうするんだ。
823 :
デフォルトの名無しさん :05/02/24 13:49:34
どこがわかりやすいんだボケ。
> int cnt = 0.0; プ
>822の方はバイト先の癖。(-1)mainは何かそうしろとか言われたのでそれが標準だと心の底から信じてました。 >825は純粋なミス。でも謝らない。 このぶんだと他にも色々失態が出そうだ。でも反省しない。
出来ればこれも通して欲しい +7,+8,+9,+10,+11,-13
>>822 return(-1);
とかいても戻るのは 255 で正数だから大丈夫♪
おまえら・・・
素直にsscanf()でばらせばいいんでないの?
そうでもないべ
>>831 個数限定ならsscanf()一発でできるし、個数可変でもこんなもん。
#include <math.h>
#define NaN nan(NULL)/* 数値が得られないことを示せればいい */
double sum1Line(char const * line)
{
int idx;
int cnt;
double value;
double sum = 0;
if (line == NULL) {
return NaN;
}
do {
cnt = sscanf(line, "%lg,%n", & value, & idx);
if (cnt > 0) {
sum += value;
}
line += idx;
} while (cnt > 0);
return sum;
}
%n 引数を必要としない。そのかわりに、入力からここまで消費された文字数が 次のポインタを通じて格納される。このポインタは int へのポインタで なければならない。 * フラグをもちいて抑制することができるにもかかわらず、 これは変換ではない。 C 言語の標準規格は「実行の完了時に返される代入の 回数を %n 命令の実行は増加させない」と言っているが、正誤表ではこれを 否定するようである。おそらく、返り値の %n 変換の効果についてはどのような 仮定もしないことが賢明であろう。
%nはオーバーフローに関して感知しないだろ?
>>833 >正誤表ではこれを
>否定するようである。おそらく、返り値の %n 変換の効果についてはどのような
>仮定もしないことが賢明であろう。
がーん、漏れは賢明じゃないらしい。
>>835 それが何か? いや、煽りじゃなくて何が言いたいのかな、と。
>>828 処理系依存だし、-1 を返した積もりが 255が返るのなら、最初から 255を返すべきでしょ。
838 :
デフォルトの名無しさん :05/02/24 19:49:52
840 :
デフォルトの名無しさん :05/02/24 19:58:52
841 :
デフォルトの名無しさん :05/02/25 06:47:29
>>841 あちこちにマルチしてんじゃねえほボケカス
>>842 まぁまぁ、そんなに噛み付かなくてもいいじゃねえほボケカス
844 :
デフォルトの名無しさん :05/02/25 13:45:50
1] 授業: C++プログラミング
[2] 問題文 下記のリンクを見てほしいです。(一応問題は---個々の生徒のID名、クイズ、
テストの点数をテキストファイルから読み、それを画面に表示する。という感じです。)
[3] 言語: C++
[4] 期限: 早ければ早いほどいいです。
[5] 補足: 下のリンク先は C言語で書かれたものなんですけど、
これをクラスを使ったC++言語で書ける方いませんでしょうか?
もしくは このプログラムをC++言語で書いてあるサイトがあればいいのですが・・・
http://e.strlen.net/~alex/lab3/lab3.c.txt
>>844 あんたの言う、CとC++との違いとは何だ?
単にC++で問題が無い、Cのプログラムでいいのか、
C++特有の文法を使わなければいけないのか(その場合その機能は何か)、
C++ならではのライブラリを使わなければいけないのか(その場合どのライブラリか)、
その辺りをはっきりしてくれ。
1] 授業単元: プログラムU [2] 問題文(含コード&リンク): f(x)=sinxをテイラー展開すると ∞ k-1 2k-1 f(x)=(-1) x /(2k-1)! k=1 となるこれを計算して出力するプログラムを書け。 [3] 環境 [3.1] OS:Windows XP sp1 [3.2] コンパイラ(バージョン): Microsoft Visual Studio.NET Professional 2003 [3.3] 言語:C [4] 期限:2005年3月1日 [5] その他の制限:なし もしよろしかったらヒントだけでもお願いします。
[1] 授業単元:文字列操作 [2] 問題文(含コード&リンク): 文字列変数に"abcde"とあったとき、"a"を消して"bcde"にしたいのです。 [3] 環境 [3.1] OS:WindowsXP Pro SP1 [3.2] コンパイラ(バージョン):LCC-Win32(Ver不明) [3.3] 言語:C [4] 期限:無期限 [5] その他の制限: なし
マルチすると、かえって答えてもらえる確率が減るとどうして気づかないんだろう
>>849 aを消すだけでいいのか?
それとも先頭の文字を消すのか?
それとも入力で指定された文字を消すのか?
問題の意図がわからない
>>851 先頭の文字を消したいです。
問題の意図がわかりずらくてすみませんorz
char a[] = "abcdef"; char *b = &a[1];
>>853 に追加、フルに書いても短い。
void main()
{
char a[] = "abcdef";
printf( &a[1] );
}
>>848 EUCの性質上、JISを経由する方法で充分。
どうしても二段階になるのがいやならSJIS⇔JISを改造すればいい。
>>855 そ、そうなのですか。
そもそも他の様々なサイトを見ていたらC言語の文字コード変換プログラムでは
そもそも引数がchar *型なうえに、直接に変換している気がしましたから。
>>857 本当にいいのか? (((( ;゚Д゚)))ガクガクブルブル
>>858 ふむ。void main(void)となっているからお前さんの心配は正しい。
printf("%s\n", a);
printf("%s\n", a+1);
>>858 853-854さんのをヒントに、↓を作ってました。
strcpy(path,GetCommandLine()); // ""でくくられたフルパスがとれる
strcpy(lpath, &path[1]); // pathの1文字目からをコピーして先頭の"を取り除く
lpath[strlen(lpath) - 2] = '\0'; // 後ろの"とスペースを消す
GetShortPathName(lpath, path, MAX_PATH); //変換
>>862 上2行はまとめて、こうできる。
strcpy(lpath, &GetCommandLine()[1]);
それどころかPathUnquoteSpacesなんていう関数もある。
IE4以上が必要になるが。(たぶんSHLWAPI.DLLだけあれば平気だろうが)
>>863 >strcpy(lpath, &GetCommandLine()[1]);
こんなことが出来るんですか!ありがとうございます。
PathUnquoteSpacesは知っていましたが、IE4以上が必要なので使いたくなかったのです。
(古い環境でも動かせるようにしたかったので)
865 :
デフォルトの名無しさん :05/02/26 09:01:26
[1] 授業単元: データ構造 [2] 問題文(含コード&リンク):レポート課題 問題 下図のように、0と1で構成された図がある。 この図の横軸をx(右方向が正)、縦軸をy(下方向が正)としたとき、 「0のみで構成される最大の正方形」の場所を探しなさい。 123456789→x 1:100001010 2:010000010 3:010000010 4:101000010 5:000000001 6:000000100 7:100010000 ↓y [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ(バージョン): gcc(var不明) [3.3] 言語:C [4] 期限:2005年3月2日 で例題のプログラムがあってこれはオーダがO(n^4)でこれのプログラムを改良してO(n^3)以上に したいんです。どなたかよろしくおねがいします。
866 :
デフォルトの名無しさん :05/02/26 09:03:22
例題#include <stdlib.h> #define MAX_SIZE 10002 #define BUF_SIZE 256 typedef enum {true=1, false=0} BOOLEAN; char map[MAX_SIZE][MAX_SIZE]; char buf[BUF_SIZE]; main(int argc, char **argv){ int max, max_x, max_y, x_coord, y_coord, x, y, i, size; BOOLEAN flag; FILE *fp; if(argc != 2){ fprintf(stderr, "Usage: %s [filename]\n", argv[0]); exit(1); } if((fp=fopen(argv[1], "r"))==NULL) { fprintf(stderr, "Can't find file '%s'\n", argv[1]); exit(1); } fgets(buf, BUF_SIZE, fp); max_x = atoi(buf); fgets(buf, BUF_SIZE, fp); max_y = atoi(buf);
867 :
デフォルトの名無しさん :05/02/26 09:04:45
つづき for(y=0; y<max_y; y++){ fgets(map[y], MAX_SIZE, fp); } max=0; for(y=0; y<max_y; y++){ for(x=0; x<max_x; x++){ for(size=0, flag=false; !flag; size++){ for(i=0; i <= size; i++){ if((max_x <= x+i) || (max_y <= y+i)){ flag=true; break; } if(map[y+size][x+i] == '1'){ flag=true; break; } if(map[y+i][x+size] == '1'){ flag=true; break; } } }
868 :
デフォルトの名無しさん :05/02/26 09:06:18
if(size-1 > max) { x_coord = x+1; y_coord = y+1; max = size-1; } } } printf("size=%d, (x,y)=(%d, %d)\n", max, x_coord, y_coord); }
869 :
mi :05/02/26 13:07:16
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): キーボードから入力した正の整数を降順にソートして、数値分の*と数値で表示する。 入力は999が入力されるまたは要素の数が10をこえたら終わるり、数値と*の表示を行う。 要素数は10で11以上の入力はなく、数字以外の入力もないものとする。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ(バージョン):CPad for Borland C++Compiler [3.3] 言語:C [4] 期限:2005年3月5日12:00まで [5] その他の制限: なし よろしくお願いします m(;_;)m
#include <stdio.h> #include <stdlib.h> int sort_int(void const * a, void const * b) { return *((int *)a) - *((int *)b); } int main(void) { int i; int n; int data[10]; for (n = 0 ; n < 10 ; ++n) { scanf("%d", &data[n]); if (data[n] == 999) { break; } }
qsort(data, n + 1, sizeof(data[0]), &sort_int); for (i = 0 ; i < n ; ++i) { int j; printf("%2d ", data[i]); for (j = 0 ; j < data[i] ; ++j) { putchar('*'); } putchar('\n'); } return 0; }
872 :
デフォルトの名無しさん :05/02/26 15:46:52
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): オセロ(ネット上にあるやつ以外で [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ(バージョン): ボーランド [3.3] 言語:C [4] 期限:02月26日5:00まで/ [5] その他の制限:出来るだけ、初心者でも作れるようなプログラムでお願いしたいです。 このプログラムが出来ないと進級が危ういので、何卒お願いします。
>ネット上にあるやつ以外で ここに書いた時点で「ネット上にあるやつ」になってしまいますよ :-P
期限過ぎてるし、やっても無駄か
>>[3.2] コンパイラ(バージョン): ボーランド だめだこりゃ
>[5] その他の制限:出来るだけ、初心者でも作れるようなプログラムでお願いしたいです。 上級者向けオセロ(思考含む)じゃなくてじゃんけんゲームにしとけ。 それならリストも出て気安いぞ。w
すみません、私がズレてたみたいです。
2月27日PM5時で、検索して出てくるHP上のコピーなどではないやつです。
コンパイラはBorlandで、Vrは多少古いです。
>>874 オセロってわけでもないのですが、簡単なオセロや、○×ゲームです。
よろしくお願いします。
>>873 某スレのCPU対戦オセロ(改)だが、簡単には見つからないだろう。かなり厳しい
オプションでも通ると思う。
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;int k(){if(m[p]==0)for(i=m;*i;i
++){for(v=p+*i;m[v]==9-t;v+=*i){}if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v+=*
i;while(m[v]-t);}return 0;}int main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a
=d=0){for(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9
:s?s=0,puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}
return 0;}
俺はリバーシゲームを一行で書いたことがあるぜ。(C/C++じゃないけど)
>>880 レスありがとうございます。
CPU対戦は考えてなく、友達間で遊べるようなものを考えています。
また間違えてました。たびたび申し訳ないです。 28日の月曜日、PM5時締め切りです。
886 :
デフォルトの名無しさん :05/02/27 00:04:28
888 :
mi :05/02/27 01:58:09
>デフォルトの名無しさん ありがとうございました!!! もう一つ質問です。*を縦に表示する追加課題が出てしまったのですが、 どのように作ったらいいでしょうか? 例えば下記のように・・・ ****** *****1 ↓ コッチ向きに ****2 **** ***4 **5 *6 * 8
それぞれデクリメントして0でないなら*を出力しし、最後に\nを出力 てのを全てが0になるまで繰り返す どのように作ったらいいか?って聞いたから作りかただけ示したぞ
890 :
デフォルトの名無しさん :05/02/27 02:15:40
>>887 その縦グラフみにくいねw * ** *** 321 の形式だったらやってもいいけどね。
891 :
デフォルトの名無しさん :05/02/27 02:15:51
>>888 クラス対抗玉入れ合戦の数え上げのように作ったらいいでしょう。
892 :
890 :05/02/27 02:17:00
893 :
mi :05/02/27 02:18:30
>デフォルトの名無しさん 申し訳ないのですが、ソースにしていただくことは お願い出来ますでしょうか・・・? よろしくお願いします。
894 :
mi :05/02/27 02:21:14
>890 すみません間違えました!! 890さんの書かれてらっしゃる表示方法でした。
895 :
デフォルトの名無しさん :05/02/27 02:22:20
>>893 :mi 05/02/27 02:18:30
>デフォルトの名無しさん
より
>>レス番号
の方がよさげ
数によってはちょっと表示が汚いときがあるので修正してくれるとうれしいです。
898 :
mi :05/02/27 02:30:52
>>895 すみません教えていただいてありがとうございますm(。。)m
ネットのルールをあまり知らなくて・・・勉強になりました!!
899 :
デフォルトの名無しさん :05/02/27 02:31:06
最大値mから下げていって (m<=data[i])?'*':' ' を出したら?
900 :
899 :05/02/27 02:34:00
>>885 通信ではなくて学校の友人と学校で遊ぶ、みたいな風です。
902 :
mi :05/02/27 02:38:50
>>896 教えていただいたURLをアドレスの欄に入れたのですが、発見できない
というように表示されてしまいました。始めにhをつけたりいろいろ
やってみたのですが・・・
なにか表示の仕方があるのでしょうか?
903 :
デフォルトの名無しさん :05/02/27 02:46:25
問題なく見れますが。 URL要確認
904 :
mi :05/02/27 02:58:01
>>903 何度も申し訳ありません・・・
URL全部をアドレスに入れるとやはり、発見できませんとなるので、始めの/までで
やってみたら、ログイン出来ませんという表示がでてユーザ名とパスワードを
入力するFormが表示されました。
パスワードなどは何を入力したらいいのでしょうか?
907 :
896 :05/02/27 19:17:15
>906 ありがとうございます。 これを少し変えて使わせていただきます
909 :
デフォルトの名無しさん :05/02/27 22:11:26
[1] 授業単元:オペレーションシステム(プロセスとスレッド) [2] 問題文:A process can be put into a round-robin queue more than once to give it a higher priority. Running multiple instances of a program each working on a different part of a data pool can have the same effect. Write a program that tests a list of number for primality. [3] C言語 [4] 期限:2005年2月28日10:00まで [5] その他の制限: 問題文が英語で申し訳ありませんが教えてください。お願いします。
その講義受けてないとわからんようなcontext情報なしに こんなもん作れるかよ。primalityってわからんし。
リナックスくらいのプログラムならすぐ書けるけど、それをここに書き込むにはあまりに余白がせますぎる。
[1] 授業単元: 自主作成 [2] 問題文(含コード&リンク): 簡単な○×ゲームかじゃんけん。AIはなし、ネット対戦は考えてません。 猫でもわかる様に乗ってる方法ではないプログラムでお願いします。 [3] 環境 [3.1] OS: WindowXP Pro [3.2] コンパイラ(バージョン): Borland [3.3] 言語:Cのみ [4] 期限:02月28日16:30まで [5] その他の制限: オセロは自分にとって高度でした。宿題をしてくださった方申し訳ありません。 オセロを頼んでおいて我侭なのですが、よろしくお願いします。 じゃんけんでも、ここをこんな感じに変えたら面白くなるなどの意見ありましたらお願いします。
・・・馬鹿にされてるのかな?
/*
>>873 じゃんけん */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int a,i;
srand((unsigned int)time(NULL));
i = rand()%3;
while(i==0){
printf("1:Gu / 2:Chi / 3:Pa ");
scanf("%d",&a);
printf("Aiko\n");
i = rand()%3;
}
printf("1:Gu / 2:Chi / 3:Pa ");
scanf("%d",&a);
printf("You %s\n",(i==1)?"Win.":"Lose.");
return 0;
}
/*
>>873 AIなしだったな、すまん */
/* できるだけ初心者っぽくした。 */
#include <stdio.h>
int main(){
int a=0,b=0,i;
do {
printf("1:Gu / 2:Chi / 3:Pa\n");
printf("1P:");
scanf("%d",&a);
printf("2P:");
scanf("%d",&b);
i = ((b+3)-a)%3;
}while(i==0);
printf("%dP Win.\n",i);
return 0;
}
916 :
LogicFlex LCD in C language :05/02/28 03:58:55
2つの整数(NN)をLCDディスプレイのLine2&Position4(hexC3)とLine2&Position12(hexCB)に位置づけて、 ディスプレイにその整数を写しだした後、 キーボードの1を打ったらNNカウントが1ずつ増えていって(01、02・・・) キーボードの2を打ったらNNカウントが(00と29の範囲で)2づつ増えていき0に戻る キーボードのxを打ったらプログラムは終了してDOSに戻るというCコードを書けという問題をもらいました。 一応書いたんでけど、どなたかチェックお願いできますか?
917 :
LogicFlex LCD in C language :05/02/28 04:02:45
#include <stdio.h> #include <time.h> #include <conio.h> #define LCD_CMD 160 #define LCD_CMD1 40 #define LCD_CMD2 6 #define CLR_HOME 1 #define input
918 :
LogicFlex LCD in C language続き :05/02/28 04:04:29
void main(void) { FILE *lcd; /*stream for lcd data*/ unsigned char lcd_pos1=0xC3; unsigned char lcd_pos2=0xCB; unsigned int value=0; lcd=stdprn; /*borland 4.52用は STDPRM deviceを使用*/ setbuf(lcd,NULL); fprint(lcd,"%c%c",LCD_CMD,LCD_CMD1); fprint(lcd,"%c%c",LCD_CMD,40); fprintf(lcd,"%c%c",LCD_CMD,0xC); fprintf(lcd,"%c%c",LCD_CMD,LCD_CMD2); fprintf(lcd,"%c%c",LCD_CMD,CLR_HOME); fprintf(lcd,"%c%c",LCD_CMD,LCD_POS); input = getch(); if input == 1 value++; if input == 2 value++; value++; if input == x return; end if fprint(lcd,"%c%c",LCD_CMD,LCD_pos); while (!kbhit()){ } getch(); return; }
919 :
デフォルトの名無しさん :05/02/28 06:58:10
unsigned char array[8]; ←この書き方ってダメ? Error E2040 ..\lab3.c 18: Declaration terminated incorrectly ↑このエラーはどういうことでしょうか?
920 :
デフォルトの名無しさん :05/02/28 07:03:38
921 :
デフォルトの名無しさん :05/02/28 07:15:30
>>919 ダメなわけがない。
周りをよーく眺めて間違いないか探す。分かんなかったら、
一部コメントアウトしてエラーが消えるかどうか確認する。
>>906 馬鹿にしてるわけじゃなくて本当にわからないんです・・・。
申し訳ないです
>>923 わかりづらくてスマソ
で限定ジャンケンってどうよ
って通信対戦じゃないと無理か…
925 :
デフォルトの名無しさん :05/02/28 21:49:47
age
スーパーマターリプログラミングを待ちわびているんですが?
>>926 スーパーマターリプログラミングは不可能なことが
このまえDr.knuthによって証明されたよ。
(´・ω・`)ショボーン
knuthはどこまで調子に乗れば気が済むんだ
>>924 いえ、分かりにくいのではなくて自分が努力不足で・・・><
限定ジャンケンとはなんでしょうか?
カイジ 限定じゃんけん でぐぐれ
宿題でリストのソートが出たのですがリストをソートするのに配列を用意する以外になにか良い方法ってありますか? リストが小さいなら配列? 大きいならどうすればよいでしょうか?
日本語で説明してくれ
リストのままソートするのと 一回配列に全部いれてソートしてから繋ぎ変えるのとどちらが良いですか? リストが小さいならメモリ気にせず配列使った方のが良いのですか?基準とかってありますか?
少々大きくても、配列に入れてしまう方が結局お得じゃないかね? が、スレ違い。
根本的な勘違いをしているな。 配列よりリストのほうがメモリを食うぞ。
あ、漏れが勘違いしてた。 配列を使ってソートする話か。 ソートに関しては一般論というものは言いにくい。 配列の特性によって有効なソートアルゴリズムも違うから。 コーディングの手間を押しmなら、いったん配列に入れて、 標準ライブラリのqsort でソートして、先頭からノードをつなぎなおすというのは、 単純で分かりやすいかもしれないな。 でもメモリ的にも、速度的にも必ずしも効率がとはいえない。
ミスタイプ多いので訂正 ×コーディングの手間を押しmなら、いったん配列に入れて、 ○コーディングの手間を惜しむなら、いったん配列に入れて、 ×でもメモリ的にも、速度的にも必ずしも効率がとはいえない。 ○でもメモリ的にも、速度的にも必ずしも効率がいいとはいえない。
っつーかリストを配列に入れてソートしたらそれは もはやリストのソートじゃなくて配列のソートだろ 「宿題でリストのソートが出たのですが」という文脈なら 配列を持ち出した時点で評価は0点確定
ここで質問してもいいですか?
[1] 授業単元:自主作成 [2] 問題文(含コード&リンク):OSを作れ [3] 環境 [3.1] OS:制限なし [3.2] コンパイラ(バージョン):制限なし [3.3] 言語:C [4] 期限:2005年03月14日17:00まで [5] その他の制限:AT互換機で動作するもの
>>943 cd /usr/src/linux
make menuconfig
make
make install
OS を make しました。
あああああああ!!!!!!!!!!! なんか使いにくい!!!!1 ochushaもkitaも全然使いにくい!!!!!!!!!!!!!!!! 俺ブラウザでも作るか…どうせ公開しても叩かれるだろうがな…
>>947 すぐに作ってやるよ!!!
えと…3日…くらい…かなぁ…。
> どうせ公開しても叩かれるだろうがな… よくできていたら叩かないよ。
>>949 いいアイデアがピンと浮かんできたのよ。ゴキゲンなやつが出来ちまうぜ。
公開出来ないに一票
>>952 なんでそんなにネガティブなんだよ!!!
おまえってあれだろ、負け組だからひがんでるんだろ!!!!!!!!!!!
>>953 お前が作って公開すりゃいいだけの事だろ
クソ!!!2chに気をとられてなかなか進まねー!!!!!!!!! お前らのせいだ、おまえらが悪い!!!!!!!!!!!!
そんなこと気にしてどうする 人生は有意義に使え
お取り込み中大変恐縮ですが、 次スレの時間です。
埋め
梅
ume
なんかそれらしいものが出来ちまった。 完成度50%ってところか。
疲れたので寝よう… 明日には公開できるかも。
埋め
埋め
946の進歩報告スレなんだから埋めんじゃねえよチンカス
そういやあそうだなw 出来るまで待っておくか
うめ
釣りだろう、実際にやってるわけないだろうが
埋め
もちょっと信じてみろ 待つぐらい損はないだろ
みんな、信じて待とうよ!
といいながら埋めてるわけだろ
埋め
ついうとうとと5時間近くも眠ってしまった。再開だ!再開!!!
さて一時休憩と…
ume
あーまんどくさい、ヤメヤメ
埋め
982 :
デフォルトの名無しさん :05/03/02 19:29:38
うめ
梅揚
984 :
デフォルトの名無しさん :05/03/02 20:18:47
俺なんてブラウジャをクリック5回ぐらいで作れるぜ
梅
>>985 どうしてそこまでして邪魔したがるのかね
よし、完成したじょー どうだすごいだろう、今このスレ見るのに使ってるよ。
988 :
デフォルトの名無しさん :05/03/02 21:14:18
>984 凄いかもな(蕨
>987 見え見えの嘘乙
990 get
991get
埋め
dふぁs
初めての 994
うめー
う
ん
999 :
デフォルトの名無しさん :05/03/02 22:14:10
来世に期待
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。