1 :
950じゃないけど :
2006/05/18(木) 06:43:42
2 :
デフォルトの名無しさん :2006/05/18(木) 06:44:12
[
>>1 からついでに色々。]
・同じ講義を受けている人が既に同じ宿題を依頼してるかもしれなせん。
まずはスレを少しさかのぼって探してみてください。
それさえ出来ないシメジ野郎はバター焼きにして食っちまうぞ
・解答者は答える義務もないし、答えてもそれが正しいかどうかは保証しません。
もちろん、出題者先生の意図なんぞ知ったことではありません。
At your own riskで。
・態度が余りに悪いとすーぱーはかーがあなたの先生にチクるかもしれません。
報告用テンプレ(任意)
[1] 先生の評価:
[2] 提出結果:
[3] 単位取得の有無:
[4] 回答者にコメント(愚痴等は禁止):
>>1 乙!
質問者へ
前スレが埋まってから使うように
なんでスレタイがセンス無いものにかわってんだよボケ
出題したままレスがない人が多くて気になる。
礼を言って欲しいって事?
ネタの宿題だったらショック
答える側にとってはネタかどうかなんて無関係なような。
あんたの無能さについて の結果が凄く気になる。
10 :
デフォルトの名無しさん :2006/05/19(金) 00:54:30
[1] プログラミング実習 [2] 長さが32の0と1の列 se7e6e5…e1e0d1d2…d22d23 を入力してこのビット列の表す実数値(実数表現の仕方はIEEE規格754に従うものと仮定する) (-1)^s*(1+M)*2^E if-127<E<128 (-1)^s*M*2^(E+1) ifE=-127 Inf ifE=128,M=0 NaN ifE=128,M≠0 を出力するCプログラムを作成せよ。またこのプログラムの場合、使用した計算機の実数表現方式がIEEE規格754に従っているのなら、 計算結果として得られた実数値はコンピュータ内部では入力したビット列で表されているはずであるが、これをGDBのxコマンドを用いて調べてみよ。 [3] 環境 [3.1] unix [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] C [4] 5/26 [5] その他の制限:数学関数は使わない。
前スレ埋め立て乙。
スレタイがウンコ過ぎ
なんでわざわざスレタイ変えるのかね 自己主張のつもり?氏ねよ
別にいいでしょ。
どっちでもいいよ
同感だ。
無意味に事を荒立てる糞
>>1 に付き合う義理は無いよね。
それじゃあ、ここは前の内藤ホライゾンと同じように避難スレということで。
前スレの 971 です。よろしくお願いします
雑談スレでいいじゃん スープカレーってうまいの?
>>1 このタイトルでは過去スレ一覧(29ch検索)にかからないのでは?
それじゃあ、ここは無かったということで。
>>20 カレースープを作ってみろ。それを美味しいと思えるならきっと美味しいだろう。
うちの母親が作るカレーはいつもカレースープだった つーか、カレー風味のお湯?
END このスレッドは1000スレを超えました。
END条件は1000レスだろう?
つ512kb
しかし500Kb越えると終わる罠
29 :
灰色の幽霊 :2006/05/20(土) 17:42:46
[1]情報処理 [2] (1) 標準入力から入力された文字が小文字ならば大文字に、大文字ならば小文字に 変換し、それ以外ならばそのまま標準出力に出力するプログラムを作成せよ。 ただし、マクロ置換を用いて一文字ずつ文字の変換を行うプログラムとして 実現せよ。 (2) 標準入力から数行にわたるテキストファイル(1バイト文字のみからなる もの)を読み込み、同一内容の行(空行を含む)が続いた場合には、それ を一行にまとめて標準出力に出力するプログラムを作成せよ。 例えば、 main() { printf("a\n"); printf("a\n"); printf("b\n"); printf("c\n"); printf("c\n"); printf("c\n"); } の場合、下記のように出力するプログラムを作成せよ。 main() { printf("a\n"); printf("b\n"); printf("c\n"); } [3]unix,gcc,C [4]5/24 [5]特に制限はありません プログラムに精通した皆さん、よろしくお願いします。
30 :
灰色の幽霊 :2006/05/20(土) 17:46:05
[1]情報処理 [2](3) char型配列として定義された任意の文字列に対し、下記の例のように 先頭から1文字ずつ文字数を増やしながら行を変えて表示し、 最終行で文字列全体を表示するような関数 incremental_string_print(char *x) を作成せよ。関数内部ではchar型ポインタをインクリメントしながら 1文字ずつ putchar() を用いて出力せよ。 (表示例) O Os Osa Osak Osaka Osaka この関数は、例えば、以下のような利用の仕方を想定している。 (キーボードから入力された文字列(例えば Osaka University)を 上記の表示例のように表示する) main() { char s[100]; fgets(s, sizeof(s), stdin); incremental_string_print(s); } [3]unix,gcc ,C [4]5/24 [5]制限はありません よろしくお願いします。
32 :
billy :2006/05/20(土) 18:53:36
問題文(含コード&リンク): 第1引数のファイルに含まれる文字列をカンマを区切りとして 単語に分けた上で、第2引数と第3引数のフィールドを入れ替えて出力するプログラムを作成する。 ただし、入れ替えるように指定されたフィールドの一方もしくは両方が存在しなかった場合は 入れ替えを行わないようにする。 実行例: %cat source This,is,source. file,end. %gcc -o fieldswap kadai.c %./fieldswap source 2 3 -- Line 1 -- Field 1: This Field 2: source. Field 3: is -- Line 2 -- Field 1: file Field 2: end. 環境 OS:Linux コンパイラ名とバージョン:gcc 言語:C 期限: 5/25
こっちに投稿しても処理されませんよん
34 :
デフォルトの名無しさん :2006/05/21(日) 01:28:16
[1] 授業単元: プログラム演習 [2] 問題文: 質量m [kg]の物体が,時間t = 0 [s]で初期速度v0 [m/s]の状態から加速度a [m/s2]で直線運動するとき, t [s]後の物体の速度v [m/s],移動距離x [m]および運動エネルギー[J]を求めるプログラムを作りなさい. ただし,速度,移動距離および運動エネルギーは,それぞれget_vel(),get_dis(), get_e()なる関数を各自定義し, それらにより計算させること.また,変数m,v0,aをローカル変数で宣言した場合とグローバル変数で宣言した場合の2通りで作成すること. [3] 環境 [3.1] OS: linux [3.2] コンパイラ:gcc [3.3] 言語: C [4] 期限: 5月24日 [5] その他の制限:特にございません、職人様よろしくおねがいします
36 :
デフォルトの名無しさん :2006/05/21(日) 12:56:41
[1]情報処理 [2] double型の2数a,bを入力してaをbで割った商の 小数点以下だけを表示させるプログラムを作りなさい。 ただし、while構文を使ってa,bを入力させ続けるものとします。 [3]C [4]5/22 [5]制限はありません 。 よろしくお願いいたします。
きけやぼけが。
人の話が聞けないから、こんな簡単な問題もわからんのだろう。
嫌なら削除依頼出せよ
44 :
デフォルトの名無しさん :2006/05/21(日) 19:50:54
下がりすぎ
>>44 ageんなよ
質問者は中なぞ読まずに目の付くほうに書き込むんだから
46 :
デフォルトの名無しさん :2006/05/21(日) 20:33:15
なんでなんで?
保守
48 :
1001 :2006/05/22(月) 13:20:25
1000を越えました。。。 新しいスレッドを立ててくださいです。。。
49 :
デフォルトの名無しさん :2006/05/22(月) 13:34:56
超えてないですよ
50 :
50 :2006/05/22(月) 15:13:47
49を越えました。。。 新しいスレッドを立ててくださいです。。。
51 :
デフォルトの名無しさん :2006/05/22(月) 15:37:50
1〜10までの整数を加算して表示するプログラムを、for文で作成せよ。
#include <stdio.h> int main() {int i; for(i=1; i<10; i++) printf("%d", i);}
53 :
デフォルトの名無しさん :2006/05/22(月) 15:57:23
1〜10までの整数までの整数のうち、偶数のみを加算して表示する プログラムを、while文で作成せよ。
54 :
デフォルトの名無しさん :2006/05/22(月) 16:09:16
X=(2+4+6+8+10) X=30 ハウ( ̄д ̄;)!!
>>53 int main(){ int a=2; int d=2; int n=5; int s= n*(2*a+(n-1)*d)/2; while(1){printf("%i\n", s);} return 0; }
#include <stdlib.h> int main(void) { system("perl -e '$sum=0;$i=1;while($i<=10){$sum+=$i if($i%2==0);$i++;} print \"$sum\\n\";'"); return 0; }
57 :
デフォルトの名無しさん :2006/05/22(月) 23:48:05
1〜10までの整数を加算して表示するプログラムを、goto文で作成せよ。
58 :
デフォルトの名無しさん :2006/05/23(火) 00:13:44
>>57 10 A=A+1
20 LOCATE 0,A:PRINT A
30 GOTO10
それBASICじゃない?
int i; i=1; HELL: printf("%d\n", i); i++; if(i<=10) goto HELL;
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):再帰関数を利用して、フィボナッチ数列を生成するプログラムを作成せよ。 ただし、生成するフィボナッチ数列の要素数をキーボードから入力する。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: [3.3] 言語:どちらでも可 [4] 期限:明日まで [5] その他の制限: 初心者で 全く分からないので、お願いします!
63 :
デフォルトの名無しさん :2006/05/23(火) 18:35:06
整数を入力として受け付けて,その各桁の総和を求めよ。 例: 入力が1234 の場合,答えは10 になる 入力が9999 の場合,答えは36 になる 教えて
int sumEachOrder(int foo) { char buf[20]; sprintf(buf, "%d", foo); int sum = 0; for (int ic = 0; buf[ic] != '\0'; ++ic) { sum += buf[ic] - '0'; } return sum; }
65 :
デフォルトの名無しさん :2006/05/23(火) 19:01:05
[1] 授業単元: オペレーティングシステム [2] 問題文: 1.引数にファイル名を指定すると、そのファイルのサイズと ファイルの種類(一般ファイル、ディレクトリ、パイプ等)、 最終変更時刻を表示する(fview)を作成せよ。但し、引数には複数 のファイルを指定できるようにすること。また、fstatシステムコール を用いること。 2.引数に指定した複数のテキストファイルの内容を結合して一つの ファイルにまとめるコマンド(cat2)を作成せよ。但し、まとめた内容を 格納するファイル名は"concat.txt"とすること。但し、catコマンドを system関数内部で呼ばないこと。 [3] 環境 [3.1] OS:windows cygwin [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C言語 [4] 期限: ([2006年5月28日23:59まで] [5] その他の制限: 高水準ライブラリ関数は使用せずに システムコールのみを使用する。 難しすぎて、分かりません。システムコールのみだとなおさらです。 よろしくお願いします。
67 :
デフォルトの名無しさん :2006/05/23(火) 20:25:50
>>59 ごめん。間違えた。
終了条件がなかった。
10 A=A+1
20 LOCATE0,A:PRINT A
30 IFA<>10THEN10
40 END
68 :
デフォルトの名無しさん :2006/05/25(木) 07:47:12
つまらん
[1] 授業単元:コンピュータ基礎 [2] 問題文:円周率を小数点以下100桁を計算するプログラム [3] 環境 [3.1] OS:WinXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:5月28日 [5] その他の制限:マーチンの公式 π=16arctan1/5-4arctan1/239 を使って求める 初心者なのでサーパリわかりません、職人様よろしくお願いします。
>>69 #define abs(a) ((a)<0?-(a):(a))
typedef struct {char r[128];} IH;
void IHsI(IH *pd,int s)
{int i;pd->r[0]=+1;if(s<0)pd->r[0]=-1;for(i=10;i>0;i--){pd->r[i]=abs(s%10);s/=10;}for(i=11;i<128;i++)pd->r[i]=0;}
void IHsIH(IH *pd,IH *ps)
{int i;for(i=0;i<128;i++)pd->r[i]=ps->r[i];}
void IHaIH(IH *pd,IH *ps)
{int i,c=0;if(pd->r[0]==ps->r[0]){for(i=127;i>0;i--){c+=pd->r[i]+ps->r[i];pd->r[i]=c%10;c/=10;}}
else{for(i=127;i>0;i--){c+=pd->r[i]-ps->r[i];if(c<0){pd->r[i]=(c+10)%10;c=-1;}else{pd->r[i]=c%10;c=0;}}
if(c<0){pd->r[0]*=-1;for(i=1;i<127;i++)pd->r[i]=9-pd->r[i];pd->r[i]=10-pd->r[i];}}}
void IHbIH(IH *pd,IH *ps)
{int i,c=0;if(pd->r[0]!=ps->r[0]){for(i=127;i>0;i--){c+=pd->r[i]+ps->r[i];pd->r[i]=c%10;c/=10;}}
else{for(i=127;i>0;i--){c+=pd->r[i]-ps->r[i];if(c<0){pd->r[i]=(c+10)%10;c=-1;}else{pd->r[i]=c%10;c=0;}}
if(c<0){pd->r[0]*=-1;for(i=1;i<127;i++)pd->r[i]=9-pd->r[i];pd->r[i]=10-pd->r[i];}}}
void IHmI(IH *pd,int s)
{int i,c=0;if(s<0){pd->r[0]*=-1;s*=-1;}for(i=127;i>0;i--){c+=pd->r[i]*s;pd->r[i]=c%10;c/=10;}}
void IHmIH(IH *pd,IH *ps)
{IH t;int i,c=0,m;t.r[0]=pd->r[0]*ps->r[0];for(i= 254;i>1;i--){for(m=i-127;m<128;m++){if(i-m>0&&m>0){c+=pd->r[i-m]*ps->r[m];}}
if(1<=i-10&&i-10<=127){t.r[i-10]=c%10;}c/=10;}IHsIH(pd,&t);}
void IHdIH(IH *pd,int s)
{int i,r;if(s<0){pd->r[0]*=-1;s*=-1;}for(r=0,i=1;i<128;i++){r=r*10+pd->r[i];pd->r[i]=r/s;r%=s;}}
int IHs(IH *ps)
{int i,s=0;for(i=1;i<128;i++)s+=ps->r[i];return(ps->r[0]*(s?1:0));}
void IHat(IH *ps)
{IH at,t;int n=0,i;IHsI(&at,0);IHsIH(&t,ps);while(IHs(&t)){IHsI(&t,1);for(i=0;i<n;i++)IHmI(&t,-1);for(i=0;i<2*n+1;i++)IHmIH(&t,ps);
IHdIH(&t,2*n+1);IHaIH(&at,&t);n++;}IHsIH(ps,&at);}
void IHp(IH *ps) {int i=0;if(ps->r[i]<0)printf("-");i++;for(;i<10;i++)if(ps->r[i]>0)break;for(;i<11;i++)printf("%d",ps->r[i]);printf("."); for(;i<111;i++)printf("%d",ps->r[i]);printf("\n");} void main() {IH a,b;IHsI(&a,1);IHdIH(&a,5);IHat(&a);IHmI(&a,16);IHsI(&b,1);IHdIH(&b,239);IHat(&b);IHmI(&b,4);IHbIH(&a,&b);IHp(&a);}
72 :
デフォルトの名無しさん :2006/05/26(金) 00:45:21
[1] 多項式計算 [2] f = C(i)*x^i 狽フ次数nおよび多項式の係数C(i)[ただし0≦i≦n]を入力し、fの値を求めなさい。 ズブのシロウトです。int や floatでプログラム内に用いる数を先に宣言しておくのはわかりましたが、 多項式においては、nが決まらない限りはC(i)の個数もわからないので、不確定な個数の数の宣言の仕方がわかりません。 どうかよろしくお願いします。
73 :
お願いします… :2006/05/26(金) 03:01:47
制御文のところで下の問題が出たんですけどさっぱりわからなくて… 助けてください。。 1、m種類の商品の単価aと数量nをキーボードから入力し 単価×数量=金額 を計算し、m種類の合計金額を求めて表示させるプログラムを作成しなさい 2、正の整数nをキーボードから入力し 1+2+・・・・・・+n 1*2*・・・・・・*n の値を表示させるプログラムを作成しなさい。 も二問です。どうかおねがいします
>>73 2.だけ。
#include <stdio.h>
int sum(int n){ return n * (n + 1) / 2; }
int prod(int n){ int i, res; for( i = res = 1 ; i <= n ; i++ ) res *= i; return res; }
int main(void){ int n; scanf("%d", &n); printf("1+2+..+%d=%d\n1*2*..*%d=%d\n", n, sum(n), n, prod); return 0;}
エラー処理とかは自分でやりなさい。
#include<stdio.h> #include<stdlib.h> void getn( char* o, unsigned len ){ int ch; do { ch = getc(); *(o++) = ch; } while( ch != '\n' && --len ); (--o) = '\0'; if( ch != '\n' ){ while(getc() != \n'); } } int geti(){ char in[32]; getn(in,32); return atoi(in); } void que1(void){ int a,b,c=0,s=0; while(1){ printf("単価(a): "); if( ! ( a = geti() ) ){ break; } printf("\n数量(n): "); n = geti(); printf("\n種類%d: 単価(%d)×数量(%d)=金額(%d)\n",++c,a,b,a*b); s += a*b; } } void que2(void){ int n,s=0,m=0,i=0; printf("限度(n): "); n = geti(); for( i = 0; i < n; i++ ){ s += a; m+=b } printf("\n1+2+3…n: %d\n",s); printf("1*2*3…n: %d",b); } int main(){ que1(); que2(); return 0; }
>>72 xは入力しない?
多項式を表示しろってこと?
77 :
デフォルトの名無しさん :2006/05/28(日) 16:53:49
あ?
アッ・・・・!
79 :
デフォルトの名無しさん :2006/05/29(月) 11:53:52
ア?
tets
81 :
デフォルトの名無しさん :2006/05/29(月) 15:28:52
#include<stdio.h> int main(void) { float taiju,sum=0.0; int i; for(i=0;i<3;i++){ printf(
プログラム数ヶ月の初心者だけど、Cって単純な計算を組み合わせて、 あとは在り物のライブラリを使うだけなのかな、と思うようになった。
83 :
デフォルトの名無しさん :2006/05/29(月) 16:02:29
60点以上の点数が入力されるまで 再入力を繰り返すプログラムを作成せよ。 (ヒント:無限ループとbreak文を使用する) 実行例 1回目点数入力:30□ 不合格です。再試を受験してください。 2回目点数入力:70□ 合格です。 □はエンターキーを示す
#include<iostream> using namespace std; int main(void) { int score; while(1){ cout << "点数を入れろ: "; cin >> score; if(score >= 60){ cout << "合格おめ" << endl; break; } else{ cout << "不合格プギャー" << endl; } } return0; }
#include <stdio.h> int main(void) { int a; while (1){ printf("input > "); scanf("%d",&a); if (a>=60){ break; } puts("不合格,おまいには10000万年早いわ!!"); } puts("合格,はいはい,ワロスワロス"); return 0; }
>>53 #include<iostream>
using namespace std;
int main(void)
{
static int a;
int count = 0;
while(count <= 10){
count++;
if(count % 2 == 0){
a += count;
cout << count << "が加算されました" << endl;
}
}
cout << a;
return0;
}
87 :
デフォルトの名無しさん :2006/05/29(月) 17:48:24
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):英語の小文字の文字列をキーボードから入力した時、 その文字列の大文字を出力するプログラムを作ってください。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: [2006年5月29日20時まで [5] その他の制限: scanfを使用
>>87 #include<stdio.h>
const char u[]={
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
0x60,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x7B,0x7C,0x7D,0x7E,0x7F,
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
void main(){char s[256];int i;scanf(
"%s",s);for(i=0;s[i]&&i<256;i++)printf("%c",u[s[i]]);}
void mainって今でも使うの?
91 :
こんな感じの奴をおながいします。?のとこがわかりません。 :2006/05/29(月) 18:29:40
>>88 #include <stdio.h>
int main(void){
char s[10]
printf("????"");
scanf("%s",s);
printf("????",???);
return 0;
}
組み合わせかたで雲泥の差になるわけだがな。
まあ最近はC系でも使う人と作る人に分かれてる、ってことね。 組み合わせるのはまた別の才能だろうし。
>>82 ライブラリもCプログラムなんですけどね…
COBOLでも書けるようなCプログラムなら、計算だけだろうけど…
『プログラム=データ構造+アルゴリズム』とか『インターフェイスとインプリメントの分離』とかの言葉があるけど…知ってる?
97 :
こんな感じの奴をおながいします。?のとこがわかりません。 :2006/05/29(月) 19:48:35
そこにお前と同じ質問があるんだよ
99 :
◆Sra2PNCv7Q :2006/05/29(月) 20:05:18
急でスミマセン… [1] 授業単元:プログラムT [2] 問題文(含コード&リンク): 1.1.二次方程式ax2+bx+c=0のa、b、cを入力すると、解の公式を用いて答えを出すプログラムを作って、動作を確認せよ。 ただし、aが0の場合を考慮せよ。また、解が重根の場合や複素数の場合にも対応せよ。(判別式を用いて条件分岐させるとよい。 複素数解の場合は、x = 3 + 5i のように表示させる。) [3] 環境 [3.1] OS:Windows [3.2] HC Editor [3.3] 言語: C [4] 期限: (2006年5月30日8:40まで] ) [5] その他の制限: (else ifを使って。) よろしくお願いします。
#include <stdio.h> main(){puts(
あう
#include<stdio.h> int main(void){ puts("2chで聞いたけどわかんねぇ"); return 0; }
104 :
◆Sra2PNCv7Q :2006/05/29(月) 21:39:23
>>103 読みました。すみません。違うみたいですね。
>>99 こんなんで網羅してるか?
#include <stdio.h>
#include <math.h>
int main(void)
{
double a, b, c, d;
printf("a, b, c =?"); scanf("%lf , %lf , %lf", &a, &b, &c);
d = b * b - 4.0 * a * c;
if(a == 0.0){
if(b == 0.0){
if(c == 0.0){printf("解は任意\n");}
else{printf("解は無い\n");}
}else{printf("%f\n", -c/b);}
} else {
if(d < 0.0){printf("%f±%fi\n", -b/(2.0*a), sqrt(-d));}
else if(d == 0.0){printf("%f(重婚)\n", -b/(2.0*a));}
else{ printf("%f,%f\n", (-b-sqrt(d))/(2.0*a), (-b+sqrt(d))/(2.0*a)); }
}
return 0;
}
106 :
◆Sra2PNCv7Q :2006/05/29(月) 22:06:54
>>105 ありがとうございます!
複素数もちゃんと出ました。本当にありがとうございました!
もっと勉強して自分で作れるように頑張ります。
107 :
七氏 :2006/05/29(月) 22:13:09
グレー画像→カラー画像は無理。 貴様は白黒写真見て元の色が全部分かるというのか。
109 :
七氏 :2006/05/29(月) 22:34:01
>>108 そうなんですかぁ
ということはG3→G4は不可能と言う事ですかね?
無題 名無しさん - 2006/05/30(Tue) 00:08 No.1956
1956.txt [1] 授業単元: C++プログラミング
[2] 問題文(含コード&リンク):
(添付ファイル参照)
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: [2006年05月30日07:00まで]
[5] その他の制限: なし
時間かければなんとか書ける宿題だけど、もう睡魔に勝てない・・・3日寝てないから、
明日の(5・30)朝提出しなければならないので、どうか、助けてください;;;
問題文長すぎたのでここで書いた↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm?
断る。
112 :
デフォルトの名無しさん :2006/05/30(火) 00:40:58
[1] 授業単元:プログラミングC [2] 問題:【例】12+3=と入力し、出力は12+3=4となるようにせよ。 条件1.演算子は+-*/それぞれに対応させる。 条件2.数値は、1ケタ、2ケタとは限らない。 [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名: (gcc) [3.3] 言語: (C) [4] 期限: ([2006年6月2日17:00まで] [5] その他の制限: メイン関数は入力と出力のみとし、他の処理はサブルーチン(関数)を用いること。 一括入力した数値と演算子を、どう処理して関数に送ったら良いのか分かりません…get文を用いるところまでは分かったのですが、お願いします。
114 :
七氏 :2006/05/30(火) 01:00:22
115 :
112 :2006/05/30(火) 01:05:39
申し訳ございません。 ”12+3=”と一括入力し、その計算問題と結果つまり、”12+3=15”を出力するプログラムです。 数値と演算子をどう分けたらいいのかが分かりません。
116 :
デフォルトの名無しさん :2006/05/30(火) 01:17:45 BE:124224588-#
>>112 また「予期しない入力があったときの動作が未定義」な課題かよ。
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
double calc(double a,double b,char op){switch(op){
case'+':return a+b;case'-':return a-b;case'*':return a*b;case'/':return a/b;}return 0.0;}
int anal(double* d,char* str,int len){char tmp[100];int i=0,n=0;
while(n<len&&isspace(str[n]))n++;while((n+i)<len&&i<100&&(isdigit(str[i+n])||str[i+n]=='.')){
tmp[i]=str[i+j];i++;}tmp[i]='\0';*d=atof(tmp);return i+n;}
int main(void){char tmp[100];double a,b;int len,n;char op;
fgets(tmp,100,stdin);len=strlen(tmp);n=anal(&a,tmp,len);op=tmp[n++];
anal(&b,&tmp[n],len-n);if(tmp[n]=='=')printf("%s%f\n",tmp,calc(a,b,op));return 0;}
117 :
デフォルトの名無しさん :2006/05/30(火) 01:19:55 BE:46584364-#
>>116 最後の行間違い。
n+=anal(&b,&tmp[n],len-n);if(len>n&&tmp[n]=='=')printf("%s%f\n",tmp,calc(a,b,op));return 0;}
118 :
112 :2006/05/30(火) 01:43:45
116さんアリガトウございます!! 分からなくてイライラしてましたが、変数名を見て和みました。 このまま課題提出します。
119 :
デフォルトの名無しさん :2006/05/30(火) 12:12:29
[1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク):以下の表が与えられているもの(入力データ)とし,C言語で作成したシンプレックス法で最適解を求めよ. また,以下の表より入力データも各自作成せよ. 基底変数 基底値 z x1 x2 x3 x4 z 0 1 8 21 0 0 x3 1 0 2 3 1 0 x4 2 0 1 7 0 1 プログラムは下記のように分割せよ. 1.メインプログラム 2.データ入力 3.基底に入る変数を選択する 4.基底から出る変数を選択する 5.ピボット演算 6.出力 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:BCC [3.3] 言語: C言語 [4] 期限: 2006年5月31日9:00まで [5] その他の制限:ごく初歩的なことしか習っていません。for,if,while文,ファイル処理(読み込み・書き込み程度)程度の簡単なものを使用した単純なプログラム をお願いします.できればなんの処理をしているのか説明が書いていただければ幸いです. 2段階シンプレックス法で解くのですが,さっぱりわかりません;;
120 :
デフォルトの名無しさん :2006/05/30(火) 12:20:43
すいません,間違えました.2段階シンプレックス法で解くではなく,2段階にも対応しているプログラムを作成するでした。
書き込むスレも間違えているね
>>112 の入力の解釈はsscanf()でできるね。
sscanf(line, "%d%c%d=", &n1, &op, &n2) とか。
123 :
デフォルトの名無しさん :2006/05/30(火) 14:10:30
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):C言語のソースファイルのコメント文削除し、ディスプレイに表示 [3] 環境 [3.1] OS:UNIX [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:2006年5月30日16:00まで [5] その他の制限:構造体、ファイル操作、基本的な文法は習いました
こっちは重複スレなので本スレのほうで依頼してね
125 :
デフォルトの名無しさん :2006/05/30(火) 15:04:11
うるせえよ
じゃあしらね
127 :
デフォルトの名無しさん :2006/05/31(水) 15:24:53
128 :
デフォルトの名無しさん :2006/05/31(水) 16:42:51
身近な生活に関するプログラミング何か教えてくださいませんか!!??
>>128 #include<stdio.h>
int main(void){ printf("もう来るな\n");return 0;}
>>128 精神虚弱者更生プログラミングをお勧めしよう
131 :
デフォルトの名無しさん :2006/05/31(水) 17:34:58
なんですかそれは!!??
132 :
デフォルトの名無しさん :2006/05/31(水) 19:58:42
[1] 授業単元:課題 [2] 問題文(含コード&リンク): 表示方法は工夫して、1,3,5,7,11,13・・・・という素数を指定した数までの中から 抽出するプログラムを作成する。(1〜50まで、など) [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: VC# [3.3] 言語: C# [4] 期限: ([2006年6月1日7:00まで] [5] その他の制限: 標準ライブラリ使用可
133 :
デフォルトの名無しさん :2006/05/31(水) 20:04:22
[1] 授業単元:課題 [2] 問題文(含コード&リンク): ある文字列に対して、指定した文字列を検索し指定した置換文字列に置換する。 ※例「私はプログラマ初心者です」という文章を入力したとしたら、 初心者をキーに上級者へと置換し 「私はプログラマ上級者です」と出力する。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: VC# [3.3] 言語: C# [4] 期限: ([2006年6月1日7:00まで] [5] その他の制限: 標準ライブラリ使用可
test
>>132 コンソールアプリでいいんかな?
----------------------------------
using System;
namespace kadai1
{
class Prime
{
static void Main()
{
// (C) 2ch syukudai sure
//
http://pc8.2ch.net/test/read.cgi/tech/1147902222/l50 Console.Write("範囲>");
string line = Console.ReadLine();
int max = Convert.ToInt32(line);
byte[] table = new byte[max + 1];
Array.Clear(table, 0, max);
----------------------------------
つづく
>>135 つづき
------------------------------------
for (int i = 2; i <= max; i++)
{
if (table[i] != 0)
continue;
for (int j = i * 2; j <= max; j += i)
table[j] = 1;
}
for (int i = 2; i <= max; i++)
{
if (table[i] == 0)
{
Console.Write(i);
Console.Write(",");
}
}
}
}
}
>>138 全角以外でもインデントできないかなーって思って。
141 :
デフォルトの名無しさん :2006/05/31(水) 22:28:53
TEST
#include <stdio.h> #include <stdlib.h> #include <time.h> void main(void){ int i,j,rand(void); float x,y; srand((unsigned)time(NULL)); for(i=0;i<1000;i++) { x = 1/(rand()+1); y = 1/(rand()+1); if( x*x + y*y <= 1) j=0; j++; } printf("%d",j); } [0,1]の擬似乱数の組の(x,y)を1000個発生させて x^2 + y^2 <=1 ってなる組の数を求めたいです 教えてくらださい・・・・
>>142 「[0,1]の擬似乱数」って、0〜1の乱数ってこと?
だったら、forのあたりはこうで。
j = 0;
for(i=0;i<1000;i++)
{
x = (float)rand() / RAND_MAX;
y = (float)rand() / RAND_MAX;
if( x*x + y*y <= 1)
j++;
}
>>143 すごい!数値出ました!
ムケサンクス!
[1] 授業単元:アルゴリズム論 [2] 問題文: コマンドライン上の括弧文字列を読み込んで、 左括弧と右括弧が釣り合っているか(整合しているか)どうかを判定し、 釣り合っている場合には対応する括弧対に番号をつけて出力するようなプログラムを 作成せよ。 ヒント:文字入力にはgetchar()関数を呼び出す。 例:入力[ [ ] [ [ ] ] ] [ ] ⇒ 出力 [1 [2 ]2 [3 [4 ]4 ]3 ]1 [5 ]5 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:6/7まで [5] その他の制限:無し どなたかご教授お願いします。
>>145 #include<stdio.h>
int main(void){int l,m,s,c,len=0;l=m=s=0;char tmp[1000];
while((c=getch())!=EOF&&len<1000){
tmp[len++]=c;switch(c){
case'[':++l;len+=sprintf(&tmp[len],"%i",l);break;case']':--l;len+=sprintf(&tmp[len],"%i",l);break;
case'(':++s;len+=sprintf(&tmp[len],"%i",s);break;case')':--s;len+=sprintf(&tmp[len],"%i",s);break;
case'<':++m;len+=sprintf(&tmp[len],"%i",m);break;case'>':--m;len+=sprintf(&tmp[len],"%i",m);break;}
if (!(l && m && s))printf("%s\n",tmp);else printf("数が合ってないみたい\n");return 0;}
147 :
145 :2006/06/01(木) 14:09:31
>>146 ありがとうございます。
答えてくださったのに申し訳ないのですが、
こっちは本スレではないみたいなので、本スレの方で改めて質問したいと思います。
148 :
デフォルトの名無しさん :2006/06/01(木) 15:24:00
お願いします!!教えてください。 100円ショップで1個100円の商品をまとめ買いすると値引きがある。 値引き率は、 @10個未満の場合は、値引きなし、 A10個以上100個未満の場合はすべて10%引き、 B100個以上1000個未満の場合はすべて20%引き、 C1000個以上の場合はすべて30%引き となっている。 (問題1)購入個数nを与えると購入金額を計算するプログラムを作成せよ。 (問題2)購入個数653個の場合の購入金額を求めなさい。
>>148 #include<stdio.h>
#include<stdlib.h>
int main(void){int n;char tmp[100];fgets(tmp,100,stdin);n=atoi(tmp);
printf("\\%i\n",(1000<=n)?70:(100<=n&&n<1000)?80:(10<=n&&n<100)?90:100*n);return 0;}
>>149 優先順位やばい
printf("\\%i\n",((1000<=n)?70:(100<=n&&n<1000)?80:(10<=n&&n<100)?90:100)*n);return 0;}
>>148 #include <stdio.h>
#include <stdlib.h>
#define UNIT_PRICE 100
main(void)
{
/* (C) 2ch prog syukudai sure */
char line[100];
int n;
double rate;
printf("個数>");
fgets(line, sizeof line, stdin);
n = atoi(line);
if (n < 10)
rate = 1.0;
else if (n < 100)
rate = 0.9;
else if (n < 1000)
rate = 0.8;
else
rate = 0.7;
printf("価格:\\%d\n", (int)(n * UNIT_PRICE * rate));
}
152 :
デフォルトの名無しさん :2006/06/01(木) 16:51:31
ありがとうございます。
153 :
デフォルトの名無しさん :2006/06/01(木) 16:55:09
上のプログラムの仕様書とフローチャートを教えてください。お願いします
上のって何番?
155 :
デフォルトの名無しさん :2006/06/01(木) 17:03:47
148番です
157 :
デフォルトの名無しさん :2006/06/02(金) 13:59:32
正方形の1辺の長さを入力し縦横が'*' の正方形の図形を描け ただし3以上20以下とする -------------------------------------*/ #include<iostream.h> #include<conio.h> //------------------------ //メインプログラム //------------------------ intmain(void) { intm; cout<<"1辺の長さは "; cin>>m; return 0; } これが元です。お願いします;
159 :
デフォルトの名無しさん :2006/06/02(金) 14:02:50
文字列の名前と苗字を入れ替えて 表示せよ(名前と苗字はスペースで区切る) もし、"takenouchi ken"に変えてもプログラムは 変更無しで入れ替わるようにする -------------------------------------*/ #include<iostream.h> #include<conio.h> //------------------------ //メインプログラム //------------------------ intmain(void) { charname[]={"Suzuki Ichiro"};//名前の定義 cout<<endl<<"入れ替前は "<<name<<endl; //ここに入れ替えプログラムを作る--------------- cout<<"入れ替後は "<<name<<endl; return 0; } 次も・・・C++です
160 :
157 :2006/06/02(金) 14:07:55
[1] 授業単元: 課題(テスト問題) [2] 問題文 [3] 環境 [3.1] Windows [3.2] borland2.10 [3.3] 言語:C++ [4] 期限: 6/5 [5] その他の制限: if for rand while 配列 2次配列 実引数 switch case等しか習ってませんが おそらく範囲外からも出題されます・・
#include<iostream> using namespace std; int main(void){ int m; cout << "1辺の長さは "; cin >> m;m = 3 <= m && 20 >= m ? m : -1; for(int i = 0; i < m; i++){for(int j = 0; j < m; j++)cout << '*';cout << endl;} return 0; }
162 :
157 :2006/06/02(金) 14:31:54
#include<iostream.h> #include<conio.h> の形で出来ないでしょうか・・ 後すいません、縦横というのは *** * * ***のように中が開いてるみたいです
#include <iostream> #include <string> using namespace std; int main(void) { string name = "Suzuki Ichiro";//名前の定義 cout << "入れ替前は " << name << endl; name = name.substr(name.find(" ") + 1, name.size()) + " " + name.substr(0, name.find(" ")); cout << "入れ替後は " << name << endl; return 0; }
>>162 for(int i = 0; i < m; i++){for(int j = 0; j < m; j++)cout << (i == 0 || i == m - 1 || j == 0 || j == m - 1 ? '*' : ' ');cout << endl;}
>#include<iostream.h>
>#include<conio.h> の形で出来ないでしょうか・・
それぐらい自分で(ry
165 :
157 :2006/06/02(金) 15:42:32
//2次元配列をアルファベット順に並び替えを行うken_sort()を完成せよ。他のプログラムは変更しない事 #include<iostream.h> #include<conio.h> //-----グローバル変数--------------------- charken[][20]={ {"nigata_ken 4"}, {"tokushima_ken 5"}, {"hyougo_ken 2"}, {"akita_ken 1"}, {"kagoshima_ken 3"}, }; intken_disp(void);//プロトタイプ宣言------ intken_sort(void); intmain(void) { ken_disp();//表示 ken_sort();//並び替え ken_disp();//表示 return 0; } intken_sort(void) { return 0; } intken_disp(void){ intcnt; cout<<endl; for(cnt=0;cnt<5;cnt++){ cout<<ken[cnt]<<endl;} return 0; }
166 :
157 :2006/06/02(金) 17:01:22
157の問題なんですけどそれ以外の数値を入れた場合のプログラムを組み込むのに これでは実行結果がうまくいきません・・ cout<<"1辺の長さは "; cin>>m; if(m=2<m && 20>=m )} ){ for(int i=0; i<m; i++){ for(int j=0; j<m; j++) cout<<(i==0 || i==m-1 || j==0 || j==m-1 ? '*' : ' '); cout<<endl; } }else {cout<<"2~20までです!!"<<endl;}
>if(m=2<m && 20>=m )}
つーか、
>>163 のままでも、mが動作範囲外の値でも動くようになってるじゃん
170 :
157 :2006/06/03(土) 07:27:01
俺ですか?それとも作った先生かな… あ、どっちもか(´;ω;`)
ひでぇ。 コードレビューしたら行数よりたくさんの問題が発見つかりそうな。 ネタじゃなくてマジで、こんな出題者に教わってるの?
172 :
デフォルトの名無しさん :2006/06/03(土) 08:20:56
突然申しわけありません ファイルポインタについて教えて頂きたく思います。 現状プログラムでexternでファイルポインタを定義している箇所が あるのですが、fopen、fcloseを252回繰り返すと別のファイルがopen異常 となってしまうのですがexternしているファイルポインタは実は closeできていないということはおこりえるのでしょうか?
>>170 できることなら>165のようなコードを書く人間に教わらないことをお勧めする。
コーディングに変な癖はつきそうだし間違ったマニュピレータの使い方は覚えそうだし
そもそもプログラミングセンスが根本から歪められかねない。
>>165 #include <conio.h> の次の行に
#include <string.h> を追加
int ken_sort()
{
int i, j;
cnst int table_size = 5;
for (i = 0; i < table_size - 1; i++) {
for (j = i + 1; j < table_size; j++) {
if (strcmp(ken[i], ken[j]) < 0) {
char tmp[20];
strcpy(tmp, ken[i]);
strcpy(ken[i], ken[j]);
strcpy(ken[j], tmp);
}
}
}
}
>>175 ×cnst int table_size = 5;
○const int table_size = 5;
177 :
157 :2006/06/03(土) 14:09:55
ありがとうございます。他にもあるのですがとりあえず試行錯誤してみます
[1] 授業単元: 数値計算法 [2] 問題文(含コード&リンク): @f (x) = cos (x) - x2 = 0 の根のうち、0 < x < 1 を満たすものを2分法で求める 初期値 a, b が入力でき、 6桁推定された解と関数 f (x) を呼びだした回数を出力するようにしなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C [4] 期限: (2006年06月08日まで よろしくお願いします
#include <stdio.h> #include <math.h> #define EPS .0000001//相対誤差 double func_y(double x){ return (cos(x) - x * x); } double nibun(double a, double b){ int i = 0;double x;//xをnextと読みかえて do{ x = (a + b) / 2.0; if((func_y(x) * func_y(a)) < 0)b = x; else a = x; printf("%d回 x = %6.6f f(x) = %6.6f\n", i, x, func_y(x)); i++; }while(fabs(a - b) > EPS); return (x); } int main(void){ double a, b, x;//a,bをx0,x1と読みかえて printf("範囲の左の値を入力してください.\n"); scanf("%lg", &a); printf("範囲の右の値を入力してください.\n"); scanf("%lg", &b); printf("f(x) = cos(x) - x * x = 0の二分法による数値計算\n"); printf("初期値a = %6.6f\n", a); printf("初期値b = %6.6f\n", b); x = nibun(a, b); printf("近似解x=%6.6f\n", x); return 0; } 二分法ってよく宿題ででるんだな…
[1] 授業単元:プログラミング応用 [2] 問題:あらかじめ作成してあるテキストファイル(member.txt)を読み込み、No項目順に昇順にソートして表示させよ。 テキストファイルの例:1111 山田太郎 東京都杉並区〜〜〜 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名: VC6.0 [3.3] 言語: C言語 [4] 期限: ([2006年6月6日17:00まで] [5] その他の制限:Noは4文字以内、名前は5文字以内とする。 コマンドライン関数を使い、他の任意のテキストファイルも読み込めるようにすること。
そういう学校って先生が生徒が作ったプログラム全部目を通すの それとも動かしてみて正常動作するかどうかだけで採点するの
俺が通っていた大学じゃ、UNIXを使っていて、授業ごとに作られた レポートシステムってのがあって、そこに与えられたアカウントからメールで送信。 チェックは大学院生から雇っているバイトがやっていたなぁ。
>>181 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct _Mem{
int _no;
char _name[11];
char _adr[100];
};
int mycomp(const void *a, const void *b){
const struct _Mem aa = *((struct _Mem*)a);
const struct _Mem bb = *((struct _Mem*)b);
return (aa._no > bb._no ? 1 : -1);
}
int main(int argv, int argc[]){
int no, i = 0;char name[11], adr[100];
FILE *fp = fopen("member.txt", "r");
struct _Mem mem[100];
if(fp == NULL)return 1;
while(fgets(adr, sizeof(adr), fp) != NULL){
sscanf(adr, "%d%s%s", &no, name, adr);
mem[i]._no = no;
strcpy(mem[i]._name, name);
strcpy(mem[i]._adr, adr);
i++;
}
qsort(mem, i, sizeof(struct _Mem), mycomp);
for(int j = 0; j < i; j++)printf("%04d %s %s\n", mem[j]._no, mem[j]._name, mem[j]._adr);
fclose(fp);
return 0;
}
コマンドラインは自分でどうぞ
動かしてチェックするのはいいがとんでもない実行ファイル作られたら
187 :
デフォルトの名無しさん :2006/06/05(月) 13:35:45
[1] 授業単元: Introduction to C/C++ Programming 3.Which of the following is the best definition or example of the "principle of least privilege?" a. Always separate classes into .h definition files and .cpp implementation files. b. Use global variables to avoid access problems. c. Grant access to only those clients who have a legitimate need for access. d. Whenever possible, prefer composition over inheritance. 4.A StatusLabel a. inherits from class StatusStrip b. is a control with a StatusStrip control. c. is a type of flair. d. none of the above 5.When the code in a try block does not throw an exception, which of the following is false? a. all the catch handlers immediately following the try block are skipped b. execution resumes with the first line of code after the catch handlers c. a default exception is thrown d. none of the function calls within the try block threw an exception 誰かお願いします。
自分で鉛筆ころがせ
学校でLinuxをつかってプログラムならっているんだが これってwindowsのメモ帳で書いてフラシュメモリーにいれてemacs上にペーストとかできるのか? なんかペーストしてもでてこないんだが・・。 ちなみに学校で習い始めて2ヶ月でつ。 なんか言い方がまちがってたりなにいってるかわからなかったらスマソ
スレ違い
>>190 そうか〜スマソ
宿題が家でもやれたらときいたんだけどすれ違いか・・。
>>189 鼬害。
GUI(Gnome)の操作方法を知りたいのか、
emacsの操作方法を知りたいのか、
そもそもフラッシュメモリはマウントできているのか、
メモ帳で書くのはいいがファイル名はどうなっているのか、
さっぱり判らん。
>>187 いい加減しつこいな。答えやるからもう来るな。
3.c. 4.文脈が不明なので答えようがない 5.b.
194 :
デフォルトの名無しさん :2006/06/05(月) 14:35:41
[1] プログラミング入門 [2]バブルソートのプログラムを作成し、実行結果とともに提出せよ(配列を使う) [3] 環境 [3.1] windowsXP [3.2] Microsoft Visual C++ 6.0 [3.3] C言語 [4] 期限: 2006年6月5日17:30までです。 [5] よろしくお願いします。。
x=y^2のグラフを−2<y<2でyを変化させ、 適当な座標軸上にプロットするプログラムを書け、 といった課題が出されました。 while文を用いて、値を出すプログラムまでは作れるのですが、 座標軸をつくり、そこへプロットする仕方がわかりません。 どなたかご教授お願いします。
初期値と公差を標準入力から入力し、その等差級数の最初の要素の総和を 出力するプログラムをおねがいいたします。
簡単ジャン #include <stdio.h> main(){ int a,b; printf("初期値 : "); scanf("%d", &a); printf("公差 : "); scanf("%d", &b); printf("最初の要素の総和:%d\n", a); }
201 :
◆QLo5PXiHuI :2006/06/05(月) 17:36:31
[1] 授業単元:プログラミング演習 [2] 問題文:各自で関数を適当に探し、数値積分を試みよ(円の面積など)。 [3] 環境 OS:Unix 言語:C [4] 期限:2006年6月5日17:00まで ひとまず、円の面積でやろうと思います。 よろしくお願いします
202 :
デフォルトの名無しさん :2006/06/05(月) 17:43:22
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):0から5までを順に入力したとき、5か0の順で表示するプログラムを作れ。char a[]を使用。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 明日 [5] その他の制限: char,(scanf),printfだけで作成」してください。
1] 授業単元: プログラミング [2] 問題文: x=y^2のグラフを−2<y<2で0.2きざみでyを変化させ、 適当な座標軸上に*をプロットするプログラムを書く while文を用いて、プログラムを作成 [3] 環境 [3.1] win2K [3.2] gcc3.4 [3.3] どちらでも可 [4] 期限: 明日まで>< [5] その他の制限: 自分で結構やったのですがわかりませんでした><どなたかお願いします
プロットする形式は・・・まさかUNIXのコマンドプロンプトのところに | や - で x y 軸を表示させるとか・・・?w
>>204 #include<stdio.h>
#include<math.h>
int main(void){double x[20];int y;int n,a;
for(y=0;y<20;y++)x[y]=pow((y-10)/5.0,2);
n=20;while(--n>0){a=x[n]*10.0;while(--a>0)putchar(' ');putchar('*');putchar('\n');}
return 0;}
208 :
◆QLo5PXiHuI :2006/06/05(月) 18:09:14
>>203 前スレにあったとは…
すみませんありがとうございます
209 :
デフォルトの名無しさん :2006/06/05(月) 18:14:03
>>202 #include <stdio.h>
int main(void){
char a[6];
char b[6];
printf("a=");
scanf("%s ,a");
b[0]=a[5];
b[1]=a[4];
b[2]=a[3];
b[3]=a[2];
b[4]=a[1];
b[5]=a[0];
printf("%s\n",b);
return 0;
}
211 :
デフォルトの名無しさん :2006/06/05(月) 18:27:31
>>210 やばい。俺も分からなくなった。どこが違うん?
なんか違うもへったくれも、まともなコードでさえない。
#include <stdio.h> int main(void){ int i; char a[6]; char b[6]; for(i=0;i<6;i++) { printf("a[%d] = ",i); scanf("%s" ,&a[i]); } for(i=0;i<6;i++) { b[i] = a[5-i]; } printf("%s\n",b); return 0; } んじゃこんな感じで?
いや、bなんて使わずに、普通にaの最後から順に表示させりゃ良いだけか・・・
>>210 xの倍率をコンソールに応じて変えればよかろ。つか、yが「0.2きざみ」と指定されてるのに
これ以上xの精度が必要とは思えない。
whileで回すよりも、*つかって幅指定すればよくね?
import java.io.*; class Sample10 { public static void main(String args[]) throws IOException { System.out.println("5人のテストの点数を入力してください。"); BufferedReader br =
221 :
デフォルトの名無しさん :2006/06/05(月) 19:32:37
>>202 #include <stdio.h>
int main(void){
char a[6];
printf("����");
scanf("%s" ,a;
printf("%c%c%c%c%c%c\n",a[5],a[4],a[3],a[2],a[1],a[0]);
return 0;
}
これだろ?
>>221 閉じ括弧なくてコンパイルできねーし、修正しても妙なプログラムだし
ユーザインターフェース悪っ
つーか、0から5まで入力できねぇだろうがよ。
くだらない問題の方が盛り上がるんだな。
そりゃ、何やってるか分かるからな
確かに、ネタ回答でもない限り他人のコードなんか読む気にならんな。
227 :
& ◆yZhi4TN6HY :2006/06/06(火) 01:17:30
[1] 授業単元:プログラミング演習1 [2] 問題文(含コード&リンク): 長さ127以下の英数字、空白の並びからなる文字列を2つ入力し、それぞれT1,T2とする。 T1が"ABC",T2が"AB"の場合のように、T2の先頭部分がT1の先頭部分に含まれるときは1を、そうでないときは0を値として返す関数 int chkmatch(char *t1,char*t2)を作成しなさい。配列宣言以外はポインタを用いる。文字列の長さのエラー処理は必要ない。 計算の手順として、文字列の先頭から1文字ずつ一致するかどうか比べる。 T2にあたる文字列中の比較対象となった文字が’\0'であればT2はT1に包含されたものとして扱う。 これ以外で比較時に1文字でも一致しない場合があれば包含されていないとして扱う。 この関数を用いて2つの文字列を与えたとき、1つ目の文字列の中に2つ目の文字列が含まれている場合には "yes"をさもなければ"no"を出力するプログラムを作りなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 今日の午前4時まで 文章長いですが、よろしくお願いします。
>>227 #include <stdio.h>
int chkmatch(char* t1,char* t2) ;
int main(void) {
char t1[128],t2[128] ;
printf("一つめの文字列を入力してください:") ;
fgets(t1,sizeof(t1),stdin) ;
printf("ふたつめの文字列を入力してください:") ;
fgets(t2,sizeof(t2),stdin) ;
if(chkmatch(t1,t2)) {
printf("yes\n") ;
} else {
printf("no\n") ;
}
return(0) ;
}
int chkmatch(char* t1,char* t2) {
while(*t1 == *t2) {
t1++ ;
t2++ ;
}
if(*t2 == '\n' || *t2 == '\0') return(1) ;
return(0) ;
}
>>227 >[4] 期限: 今日の午前4時まで
すげえ。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int chkmatch(char* t1, char* t2) {
return strstr(t1, t2)==t1;
}
int main() {
char T1[128];
char T2[128];
int i;
gets(T1);
gets(T2);
for(i = 0 ; ; i++) {
if(chkmatch(T1+i, T2)) {printf("yes\n"); break;}
if(T1[i]=='\0') {printf("no\n"); break;}
}
return 0;
}
230 :
227 :2006/06/06(火) 02:10:06
>>228 >>229 ありがとうございます!
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):「アッー」の音声を合成音で作れ [3] 環境 [3.1] OS:UNIX [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:2006年6月10日 [5] その他の制限:
232 :
227 :2006/06/06(火) 02:22:22
すみません、もう1つ続きをお願いします。 [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 長さ31以下の英数字、空白の並びからなる文字列を2つ入力し、それぞれT1,T2とする。 T1の中にT2が出現する場合に、その一番左に表れる文字列の先頭アドレスを値として返す 関数char*findstr(char*t1,char*t2);を作成しなさい。ただしT1の中にT2が現れない時はNULLを 値として返すものとする。 findstr()の中で比較対象となるT1のなかの先頭文字を先頭から1文字ずつずらして先程用いた chkmatch()を呼び出すことにより要求を満たす関数を作成することができる。 この関数を用いて1)最初にT1を表示し、2)その次にT1の中でT2の文字列が最初に出現する までの文字がアンダースコア('_')として端末に出力し、そのあと残りの文字列を出力する プログラムを作りなさい。3)T2がT1に出現しない場合はT1の文字数だけのアンダースコアが 表示されるようにすること。 配列宣言以外はポインタを用い、文字列の長さのエラー処理は必要ない [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 今日午前4時
>>232 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int chkmatch(char* t1, char* t2) {
return strstr(t1, t2)==t1;
}
char* findstr(char*t1,char*t2) {
int i;
for(i = 0 ; t1[i]!='\0' ; i++)
if(chkmatch(t1+i, t2)) return t1+i;
return NULL;
}
int main() {
char T1[128];
char T2[128];
int i;
char *p;
gets(T1);
gets(T2);
puts(T1);
p = findstr(T1, T2);
i = p==NULL ? strlen(T1) : p-T1;
for( ; 0 < i ; i--) putc('_', stdout);
if(p!=NULL) puts(T2);
else printf("\n");
return 0;
}
234 :
227 :2006/06/06(火) 02:46:54
>>233 ありがとうございます!!本当に助かりました。
#define MAX_SIZE 128 int chkmatch(char* t1,char* t2); void ScanStr(char * data,int max_size) { int i; char c; for(i = 0; i < max_size ; i++){ scanf("%c", &c); if ( c == '\n'){ data[i] = '\0'; break;} else data[i] = c; } } int main(){ char T1[MAX_SIZE], T2[MAX_SIZE]; printf("Input 1st string:"); ScanStr(T1,MAX_SIZE); printf("Input 2nd string:"); ScanStr(T2,MAX_SIZE); if(chkmatch(T1,T2)==1) printf("Yes\n"); else printf("No\n"); return 0; } int chkmatch(char* t1,char* t2) { int i=0,ret=0; while(1){ if(t2[i] == '\0' ){ret = 1; break;} }else{ if(t1[i] == t2[i]) i++;else break; } } return ret; }
>>228 の場合 集合の「包含」の定義に
完全一致を含んでいない方式だな。(完全一致でnoが返るので)
[1] 授業単元:計算機プログラミング [2] 問題文(含コード&リンク): A, B, N : 整数の定数 (N >= 0) とするとき、 \sum_{i=0}^{N} A^{N-i}*B^i を効率よく計算するプログラムを書きなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 今日の正午まで [5] その他の制限: 関数 pow(a, b) などは使ってはいけない。 計算量は、線形時間より小さいものが望ましい。 よろしくお願いします。
238 :
227 :2006/06/06(火) 03:26:12
>>235 ありがとうございます! みなさんのプログラミングを見てちゃんと理解できるよう、今からがんばります。
>>237 (N=5)
i=0 A*A*A*A*A * 1
i=1 A*A*A*A * B
i=2 A*A*A * B*B
i=3 A*A * B*B*B
i=4 A * B*B*B*B
i=5 1 * B*B*B*B*B
山になってる累乗を計算する時に前の値を配列に保持して
乗算回数を減らすぐらいしか思いつかん。
数列の式変形があるんだろうけど。
>>237 (A^(N+1)-B^(N+1))/(A-B)か?
241 :
227 :2006/06/06(火) 04:42:19
少し前に書き込んだのですが、こちらの問題文ではどう書けばいいのでしょうか? [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 長さ256文字以下の英数字,空白の並びからなる文字列を二つ入力し,それぞれをT1, T2とする. T1の中にT2が出現する場合に,その一番左に現れる文字列の先頭アドレス を値として返す関数 char *findstr(char *t1, char *t2);を作成しなさい.ただし,T1の中にT2が出現しないときはNULLを値として返すものとする. findstr()の中で,比較対象となるT1のなかの先頭文字を先頭から一文字ずつずらして前問のchkmatch()を呼び出すことにより要求を満たす関数を作成することができる. この関数を用いて, 1)最初にT1を表示し,2)その次にT1の中でT2の文字列が出現するまでの文字をスペース(' ')として端末に出力し,そのあとT2の文字列文だけ(’^’)を出力し、 再度T2の文字列が出現するまでスペース(’ ’)を出力し..というプロセスを文末まで続けるプログラムを作成しなさい。3a)このプロセスは、findstrを実行して文字列の先頭を検索し、 そこまでスペースを出力する。3b)文字列の先頭が検出されたら、T2の文字列分だけ(’^’)を出力する。3c)T2の文字列分だけポインタを進め、そこからfindstrを再実行する(3aにもどる) というプロセスを繰り返すことで完成する。4)T2がT1に出現しない場合はT1の文字数だけのスペースが表示されるようにすること. 配列宣言を除き,すべてポインタを用いて処理すること.文字列は31文字以下が入力されるものとし,文字列の長さに関するエラー処理をする必要はない. 特に、検索文字列が重複している場合も正確に検出できるようにせよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 今日の午前6時過ぎ すみません、お願いします。
っつか、もうすぐ午前6時だなーーーwktk
ちうか、今日が提出期限かなーーー?せめて一日でも余裕を持たせれば良かったものを
244 :
227 :2006/06/06(火) 06:26:37
>>243 そうですね。。。学校行くぎりぎりまで待ってみますが
このスレを横着で使うのも、ねぇ・・・答えを導く手段は何種類、何通りもあったりする。 自分でそれを一つでも理解できなかった時点で、評価されるべきじゃないしね。 しかも、これが出来ないってことはその先の内容も危ういわけだ。 自力でやって出来ないなら、授業についていけないって結論にも至る。
246 :
237 :2006/06/06(火) 06:57:32
>239 ありがとうございます。 友人は、全体を4等分すれば、 点対称な位置同士では同じ計算になると言っていましたが、意味が分かりませんでした。 日本語変ですいません。 >240 ありがとうございます。 なるほど! そうやって式変形すれば、あとは A^{N+1} と B^{N+1} の計算だけなので、 それぞれ O(logN) でできるというワケですね。
249 :
241 :2006/06/06(火) 07:27:37
>>247 ありがとうございます!!本当にうれしいです
250 :
204 :2006/06/06(火) 08:57:57
>>206 そうなんですよ・・・・><
>>207 printfを使って縦軸に「|」横軸は「-」と「+」をつかってもう一度グラフを作ってもらえますか?
いちいち罵倒するなよ。うざい。
っつか、マジでコマンドプロンプト画面にプロットするの? せめてグラフを描画するウィンドウに別にってわけにはいかんのかね・・・
>>253 学生の課題ならコンソールに記号でグラフ描画とかありがちだと思うけど。
よくあるやつ。 10 ************* 20 **** 30 *********** 40 *************** 50 **
マジかよ・・・俺が習ってたのは98年のことだが、UNIXを使ってでも 図形描画にゃ別窓開いてたぞ・・・
1]プログラム第一演習(C言語クラス) 2]配列A[x] B[X} 及び配列の大きさXを渡す。 すると配列の要素を入れ換えるプログラムを作成せよ。 尚、ポインタを用いる事。 要素の入れ換えとは、例えば A[5]={1,2,3,4,5} B[5]={1001,1002,1003,1004,1005} といった配列が与えられているとき、 A[5]={1001,1002,1003,1004,1005} B[5]={1,2,3,4,5} といった結果になるものである。 3]OS:Linux コンパイラ:gcc3.4 言語:C 4]期限:明日
>>258 #include<stdio.h>
void exchangeA(int *a, int *b, int n){
for(int i = 0;i < n; i++, a++, b++){
int t = *b;
*b = *a;
*a = t;
}
}
int main(){
int a[] = {1, 2, 3, 4, 5}, b[] = {1001, 1002, 1003, 1004, 1005};
int n = sizeof(a) / sizeof(a[0]);
exchangeA(a, b, n);
return 0;
}
>>258 void swaparray(int** a, int** b, int x){int* t=*b;*b=*a;*a=t;}
int main(void){int i,A[5]={1,2,3,4,5},B[5]={1001,1002,1003,1004,1005};
for(i=0;i<5;i++)printf("A[%i]=%i,B[%i]=%i\n",i,A[i],i,B[i]);swaparray(&A,&B,5);
for(i=0;i<5;i++)printf("A[%i]=%i,B[%i]=%i\n",i,A[i],i,B[i]);return 0;}
>260 A,Bはポインタじゃ無いからメモリに存在しないと思うぞ。 int data1[5]={1,2,3,4,5},data2[5]={1001,1002,1003,1004,1005},*A=data1,*B=data2;
>>261 >A,Bはポインタじゃ無いからメモリに存在しないと思うぞ。
意味が分からん。が、
>>260 のままだと確かに配列の先頭の要素が入れ替わるだけだな。
>が、
>>260 のままだと確かに配列の先頭の要素が入れ替わるだけだな。
intとint *のサイズが同じ場合は、な。
264 :
不明瞭なところがあれば聞いてください :2006/06/06(火) 16:21:48
[1] 授業単元: ゼミ
[2] 問題文(含コード&リンク): 入力した数値を昇順・降順に並び替えて出力する。詳しくは下記へ
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Borland c++
[3.3] 言語: C++
[4] 期限:2・3日後
[5] その他の制限:
いくつかの(5個程度)入力した数値を、昇順or降順でどちらかに選べてソートする(選択可、1で昇順2で降順みたいに)
入出力はcin,coutを使う(c++だから),for else,switch caseなど初歩しかやっていない。
選択法をサブルーチンを使う。
学校では↓をやったので、これに沿ってお願いします。(↓はCなのでC++に変換もお願いします)
http://uploaderlink.hp.infoseek.co.jp/cgi-bin/512kb/src/up10373.jpg
ソートの手法(アルゴリズム)は、初歩的なバブルソートでもええんかね?
266 :
不明瞭なところがあれば聞いてください :2006/06/06(火) 16:45:36
>>265 ええと、バブルソート(交換法)ではなく選択法でよろしくお願いします!!
>>264 #include <iostream>
using namespace std;
void selection_sort(int* a, int len){
if (len) {int tmp,min_pos=-1;for(int i=0;i<len;i++)if(min_pos<0||a[i]<a[min_pos])min_pos=i;
if (min_pos > 0){tmp=a[0];a[0]=a[min_pos];a[min_pos]=tmp;}}selection_sort(&a[1],len-1);}}
int main(void){int i,n;cout << "要素数:";cin>>n;int* a = new int[n];
for(i=0;i<n;i++){cout << "要素" << i << ":";cin >> a[i];}selection_sort(a,n);
for(i=0;i<n;i++){cout << a[i] << endl;}delete[] a;return 0;}
>262 ちょっとわかりにくいかも知れんが。 配列でint A[5]={1,2,3,4,5}とした時、メモリに配置されるのは{1,2,3,4,5}で、Aは配列の先頭を指すシンボルになる。 メモリ上にAの値を保存しておく領域は作られ無い。 だから実行時にAの値を変更する事はできない。 ポインタでint *Aとした時、メモリ上にAの値を保存しておく領域が作られる。 だから実行時にAの値を変更する事ができる。
>>269 >ちょっとわかりにくいかも知れんが。
わかりにくいのはお前の日本語な。
271 :
不明瞭なところがあれば聞いてください :2006/06/06(火) 17:33:53
<<267 ありがとうございます。デバックするとエラーが出ました。
[2] 問題文(含コード&リンク): 入力した数値を昇順・降順に並び替えて出力する。詳しくは下記へ
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Borland c++
[3.3] 言語: C++
[4] 期限:2・3日後
[5] その他の制限: 入出力はcin,coutを使う
@cinで5個の数値入力A昇順か降順かを入力(switch caseで1は昇順2は降順みたいに)
A選択法でサブルーチン使い、下記のURLを参考
http://uploaderlink.hp.infoseek.co.jp/cgi-bin/512kb/src/up10373.jpg (←はCなのでC++に変換もお願いします)
上記のようなサブルーチンを学びました。for else,switch caseなど初歩しかやっていない。
選択法をサブルーチンを使う
B昇順or降順した数値をcoutで出力
最後に初歩のプログラムでお願いします
>270 具体的にどの辺りがどうわかりにくかった? わかりにくかっただけで内容は理解したのか?それとも何言ってるか全然わからなかった?
>>271 帰れ。
if (min_pos>0){tmp=a[0];a[0]=a[min_pos];a[min_pos]=tmp;}selection_sort(&a[1],len-1);}}
>>272 >内容は理解したのか
誰に向かって口きいてるんだ。
275 :
271 :2006/06/06(火) 17:52:21
>>273 どうもすみません。おそらくマルチなので怒っていらっしゃるのでしょうか?
こちらとしては怒らせるつもりはありませんでした。大変失礼しました。
>デバックするとエラーが出ました。 とだけ書いてエラーの内容も書かずに同じ問題文をコピペするのが嫌がらせでなくて何なんだ。
279 :
271 :2006/06/06(火) 18:32:42
>>277 申し訳ありません。VC++で"NG.obj - エラー 5、警告 0"と出ていましたが、どこがエラーなのかが分からないので
問題を見やすく(したつもりです)して、レスさせてもらいました。以降気をつけるように命じておきます。
すみませんでした
281 :
デフォルトの名無しさん :2006/06/06(火) 20:47:25
>>273 お前が帰れよ、ここはC++のスレだしC#じゃねっw
>>274 >誰に向かって口きいてるんだ。
なに偉そうにしてんの?専門学校程度の低学歴めがw
282 :
デフォルトの名無しさん :2006/06/06(火) 20:58:13
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 一行からなる二つの文字列を入力し,それぞれを一旦char型の配列に記録する. 二つの文字列が等しければ"yes"をさもなければ"no"を表示するプログラムを作成しなさい. このとき,二つの文字列に対応する2つの文字列(文字配列)の先頭番地を与えたとき, 二つの文字列が一致していれば1を,一致していなければ0を返す関数int mycmp(char *, char *);を定義し,これを有効に使うこと. 文字列は256文字以下が入力されるものとし,文字列の長さに関するエラー処理をする必要はない. [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 無期限 [5] その他の制限: 配列宣言を除き,すべてポインタを用いて処理すること よろしくお願いします。
>>282 #include <stdio.h>
int mycmp(char *s1, char *s2){
int i = 0, j = 0;
while(*(s1 + i) != NULL)i++;
while(*(s2 + j) != NULL)j++;
if(i != j)return 0;
while(*s1 != NULL){
if(*s1 != *s2)return 0;
s1++, s2++;
}
return 1;
}
int main(){
char tmp[256];
char s1[256], s2[256];
gets(tmp);
sscanf(tmp, "%s%s", s1, s2);
if(mycmp(s1, s2) == 1)puts("yes");
else puts("no");
return 0;
}
と作ってみたが、mycmp内でstrcmp呼べばいいんじゃないかとオモタ
#include<stdio.h> #include<math.h> int main(void) { double a, b, c, D, x1, x2, x3, x4, A0; printf("二次方程式 ax^2 + bx + c = 0 が与えられている。\n"); printf("a,b,cにそれぞれ数値を入力する。\n"); printf("a="); scanf("%f", &a); printf("b="); scanf("%f", &b); printf("c="); scanf("%f", &c); printf("とすると、"); D = pow(b, 2) - 4 * a * c; x1 = (-b + sqrt(pow(b, 2) -4 * a * c))/(2 * a); x2 = (-b - sqrt(pow(b, 2) -4 * a * c))/(2 * a); x3 = -b /(2 * a); x4 = (sqrt(D))/(2 * a); A0 = -c/b; if (a == 0) {printf("この場合、二次方程式は解 x=%f を持つ。\n", A0);} else if (D > 0) printf( "この場合は異なる2つの実数解 x=%f,%f を持つ。\n", x1, x2); else if (D == 0) printf( "この場合は重解 x=%f を持つ。\n", x1, x2); else printf( "この場合は異なる2つの虚数解 x=%f±%fiを持つ。\n", x3, x4); return 0; } 二次方程式ax^2+bx+c=0でa,b,cの値を入力して、解が D<0,D=0,D>0のいずれに該当するのかを表示させ、その値も表示させるプログラムを作成したいのですが、 実行すると答えがx=0.000000±naniと出てしまいます。 どこがいけないのでしょうか???
>>283 ありがとうございます。
出力を以下のようにしたくて、scanf関数内をいじってみたのですが、どうもうまくいきません。
どのようにすれば良いでしょうか?
./same
ABC
ABC
yes
./same
ABC
ABC
no
./same
ABC
abc
no
./same
ABC
ABD
no
./same
ABC
BC
no
>>284 scanf("%f", &a); → scanf("%lf", &a);
scanf("%f", &b); → scanf("%lf", &b);
scanf("%f", &c); → scanf("%lf", &c);
x4 = (sqrt(D))/(2 * a); → x4 = (sqrt(-D))/(2 * a);
>>286 で、できましたっ!
ありがとうございます☆
あと%lfと%fは何が違うのでしょうか?
>>287 scanfにおいては%fがfloatで、%lfがdouble。
printfでは、%fがdouble用だが、floatにもdoubleにも使える。
なぜならprintfを呼ぶ時点でfloatの引数はdoubleに格上げされるので、
printfの中の人にはfloatとdoubleの区別が付けられないから。
そうなんですか。 ありがとうございますっ!!
290 :
271 :2006/06/06(火) 22:36:19
どなたか
>>271 をもう一度お願いできないでしょうか?
using namespace std;void selection_sort、tmp=a[0];a[0]=a[min_pos];a[min_pos]=tmp;}}selection_sort(&a[1],len-1
など、習っていないみたいで私には解りません。よろしくお願いします。
>>290 ここはお前に何かを理解させるスレではない。
理解するのが目的ならこんなスレに来るな。
>>281 >お前が帰れよ、ここはC++のスレだしC#じゃねっw
どっからC#が出てきたんだ?
>なに偉そうにしてんの?専門学校程度の低学歴めがw
あらあら…モノを知らないってのは幸せだねえ。
294 :
デフォルトの名無しさん :2006/06/07(水) 07:35:47
>>292 ぷぷっ、低学歴が釣れたw
レスした時点でお前が必死こいているのが分かるw
#ってのはあんたがいちいち書き込みのタイムスタンプの後ろにつけているから
ここは#のスレじゃねっ!って突っ込んでやったわけだよ。
それから、お前の指摘はコンパイルエラー程度。
何も分かっちゃいない、他人のソース丸写し or 真似ごと
程度しか出来ないお前が偉そうにしているのがうざいだけ。
分かったらとっとと失せろ。ソフトウェア開発でも習ってから出直せ。
って、うまくいかんのねw
まぁ良いや、
>>291 のアレをクリックしてくれりゃ。
他で「性帝トーマス◇13ThomasYo」を探してきまつw
298 :
デフォルトの名無しさん :2006/06/07(水) 09:11:36
>>267 の昇順、降順が選択できるソースマダー?(チンチン)
>>294 >#ってのはあんたがいちいち書き込みのタイムスタンプの後ろにつけているから
半年ROMっててよ。
300 :
デフォルトの名無しさん :2006/06/07(水) 09:17:29
>>299 やだよ、そんな分かりきったことw 良いからコテハン+トリップつけてろよw
検索エンジンで探したら、恥ずかしいレスがいっぱい出てきたぞw
性帝トーマス◆13ThomasYoさま、性帝トーマス◆13ThomasYoさま ブ○だけどお金持ちの女性が嫁ぎたいと申し出ております どうなされますか?
[1] 授業単元: プログラミング [2] 正の整数を読み込み、その整数が素数であるか調べるプログラムを作成 [3] 環境 [3.1] OS:xp [3.2] gcc 3.4 [3.3] 言語:どちらでも可 [4] 期限:明日の15時まで よろしくお願いいたします
>>302 っつか、それありきたりのアルゴリズムだから。エラトステネスのふるいを使って
入力した数値が素数か判別すりゃええがな。これくらい自力で出来ないとまずいぜ。
ちうか、まだ初心者っぽいし、switch case は良いとして ポインタ使ったり if 文の条件の中に or とか関数の返り値(0か1)で 真偽を判別するのはまだ早いんじゃね?本人が理解できるかどうか・・・
>>305 ものすごい嫌がらせな気がしてならない・・・計算機の利便性を無視してんなw
>>300 何が悔しくてトーマスに噛みついてるのか知らないが、いいかげん痛々しい。
マジで半年ROMった方がいい。
>>308 悔しいとかじゃなくて目立ちたがりやで名無しを罵倒する厨房がうざいだけ
ろくに知識も能力もないのに、目だっただけで他人より優勢だと勘違いしてんだよw
そういう奴は井の中の蛙、大海に出れば波に飲まれていちころよw
>>306 本人の理解なんかどうでもいいというのがこのスレの趣旨です。
理解したいと思ってる人は丸投げなんかしませんので。
>>307 いやいや、「大量のメモリ」というのも利便性の一つなわけで。
>>305 を見れば一目瞭然だろ。ただ罵倒や茶化しにくるだけのこいつは以後放置な。
タイムスタンプの後ろをよーーく見るように、注意すべし。
>>309 いやもう恥ずかしいから…
それ以上恥かかないうちに黙った方が…
>>310 >大量のメモリ
はい、バーーーーカ。効率の良いアルゴリズムが重要なのに
計算処理能力が高くなった汎用電子計算機の特性をうまく利用できない奴は失せろ。
お前みたいなバカは、路上で前が詰まっているのに、信号機が赤なのに
無駄に加速して、無駄にブレーキで速度を殺してエネルギーを無駄にするタイプだろw
スマートな考えが出来ない奴は助言なんてするな、うざいだけ。
所詮、その程度のやり方しか出来ないなんて、専門学校程度だろ?
>>310 >本人の理解なんかどうでもいい
とか言って、コンパイルエラーしか指摘しないうざさ。まぁ、お前が書いたソースなんだが
自分でも要求している問題文が理解出来てないみたいじゃんw
理解させる前にお前が理解してないんだよタコ
>305を見れば一目瞭然だろ ノートン先生が反応して見れない。
>>313 おいおい。
>>305 に貼ったのは充分効率的なアルゴリズムだよ。
素数テーブルの最大値をよく見てみな。
>とか言って、コンパイルエラーしか指摘しないうざさ。
わざわざコンパイルエラーなんか指摘しねえよ。そんなのはコンパイラの仕事。
人間様の仕事じゃない。
他人の解答に噛みつくな。他人の質問に噛みつくな。 >気に入らない質問やその他や発言はスルーの方向で。 頼むよ。
>>313 あいたたたたたた…
言わんこっちゃない。
煽られていらいらしてむかついて、噛みつくのはわかる。 大人でも子供でも関係ない。馬鹿にされたり卑下されりゃむかつく。 ただ、それを我慢しよう。 スルーしたくても、むかついてレスを返したいのはわかる。 でもスルーしよう。
[1] 授業単元:アルゴリズム論 [2] 問題文: 1方向線状リストを使って、スタックを実現せよ。 ただし、各記憶要素xは整数値をとるものとする。 関数として、push(x)、pop()、empty()、ならびに現在のスタック内容を表示するためのshow()を用意する。 ヒント:1方向線状リストの先頭(左端)がスタックのトップを表すようにすると、リスト末尾へのポインタが不要になる。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:今日 [5] その他の制限:無し 以前のスレで質問させていただきましたが、 エラーが大量に出てしまい、それから色々と試しましたがどうすればいいのかわかりませんでした。
>>319 む。コンパイルエラーか。
struct stack{int x; struct stack* next;};
struct stack* STACK=NULL;
void push(int x){struct stack* sp=STACK;while(!sp)sp=sp->next;
sp=(struct stack*)malloc(sizeof(struct stack));sp->x=x;sp->next=NULL;}
int pop(){int ret;struct stack* sp=STACK;struct stack* prev=NULL;
while(sp){prev=sp;sp=sp->next;}if(sp){ret=sp->x;prev->next=NULL;free(sp);return ret;}
return 0;}
void empty(){struct stack* sp=STACK;struct stack* next=NULL;
while(sp){next=sp->next;free(sp);sp=next;}}
void show(){struct stack* sp=STACK;while(sp){printf("%i\n",sp->x);sp=sp->next;}}
そこまでは修正できたんですがそこから完成までがわからないんです・・。すいません。
>>322 問題文にはこれ以上のことをしろとは書いてないように見えるが。
すいません。 適当な数列をスタックに入れてそれが処理される過程と処理後の結果も出力しないといけないんです。
>>324 だったらそうすりゃいいじゃねえか。
int main(void){empty();show();
push(1);show();push(2);show();push(3);show();
pop();show();pop();show();pop();show();
return 0;}
信州大生無様だぞ
>>324 pushが甘かったか。
void push(int x){struct stack* sp=STACK;struct stack* prev=NULL;
while(sp){prev=sp;sp=sp->next;}sp=(struct stack*)malloc(sizeof(struct stack));
sp->x=x;sp->next=NULL;if(!STACK)STACK=sp;if(prev)prev->next=sp;}
328 :
271 :2006/06/07(水) 12:13:09
>>328 とりあえず
>>304 で。それでもダメなら、後は自分で細かい仕様を変えたら?
結局その課題、指定した条件(サブルーチン)を使うことも含めているけど
重要なのは選択法による並び替えのアルゴリズムでしょ?
基本選択法そのものがわかっていないなら、まずはその概要から知るべきだよ。
そうすれば自ずとアルゴリズムも出来上がるでしょ。
そんな時間はねぇんだよ!!! ごちゃごちゃ言わずに俺に従え!!!
親切も何も、ここは宿題を丸投げするクズを隔離する厨房ホイホイだからなぁ。
まあいいじゃん。それはそれで。
さ、次の丸投げドンと来い。 おじさんが完璧に解いてやる。
>>319 >>324 の完成版をお願いします。さっきからずっといじってるのにまだうまく処理できてません。
ちょっと待ってろ
>>271 を先にお願いします。なんとしてもお願いします。
\ U / \ U / / ̄ ̄ ヽ, / ', / _/\/\/\/|_ \ ノ//, {0} /¨`ヽ {0} ,ミヽ / \ / \ / く l ヽ._.ノ ', ゝ \ < バーカ! > / /⌒ リ `ー'′ ' ⌒\ \ / \ (  ̄ ̄⌒ ⌒ ̄ _)  ̄|/\/\/\/ ̄ ` ̄ ̄`ヽ /´ ̄ | | −−− ‐ ノ | / ノ −−−− / ∠_ −− | f\ ノ  ̄`丶. | | ヽ__ノー─-- 、_ ) − _ . | | / / | | ,' / / / ノ | ,' \ / / | / \ /_ノ / ,ノ 〈 \ ( 〈 ヽ.__ \ \ ヽ._> \__)
\ U / \ U / / ̄ ̄ ヽ, / ', / _/\/\/\/|_ \ ノ//, {0} /¨`ヽ {0} ,ミヽ / \ / \ / く l ヽ._.ノ ', ゝ \ < バーカ! > / /⌒ リ `ー'′ ' ⌒\ \ / \ (  ̄ ̄⌒ ⌒ ̄ _)  ̄|/\/\/\/ ̄ ` ̄ ̄`ヽ /´ ̄ | | −−− ‐ ノ | / ノ −−−− / ∠_ −− | f\ ノ  ̄`丶. | | ヽ__ノー─-- 、_ ) − _ . | | / / | | ,' / / / ノ | ,' \ / / | / \ /_ノ / ,ノ 〈 \ ( 〈 ヽ.__ \ \ ヽ._> \__)
こらっ、スレ立てして下さっている
>>1 さんに失礼だぞ!
>>335 #include<stdio.h>
struct stack{int x; struct stack* next;};
struct stack* STACK=NULL;
void push(int x){struct stack* sp=STACK;struct stack* prev=NULL;
while(sp){prev=sp;sp=sp->next;}sp=(struct stack*)malloc(sizeof(struct stack));
sp->x=x;sp->next=NULL;if(!STACK)STACK=sp;if(prev)prev->next=sp;}
int pop(){int ret=0;struct stack* sp=STACK;struct stack* prev=NULL;struct stack* prev2=NULL;
while(sp){prev2=prev;prev=sp;sp=sp->next;}if(prev){ret=prev->x;free(prev);}
if(prev2)prev2->next=NULL;else STACK=NULL;return ret;}
void empty(){struct stack* sp=STACK;struct stack* next=NULL;
while(sp){next=sp->next;free(sp);sp=next;}}
void show(){struct stack* sp=STACK;int n=0;while(sp){printf("[%i]:%i\n",n++,sp->x);sp=sp->next;}}
int main(void){empty();show();
push(1);show();push(2);show();push(3);show();
pop();show();pop();show();pop();show();
return 0;}
343 :
271 :2006/06/07(水) 13:58:01
>>329-333 ご迷惑をおかけして申し訳ありませんでした。
>>329 様のサイトを精査してみます。b = a[i]など[]は習っていないので調べてみます。
当該サイトのプログラマー様すみませんでした。
ちなみにわたしは
>>337 ではありません。
プロトタイプ宣言が無いというエラーが頻発してしまうのですが・・。
347 :
271 :2006/06/07(水) 14:16:40
俺の性欲処理頼んでいい?>とーますたん
>>348 半年ROMってろ、恥をかく前に煽るのヤメレって言われますよ?
流れがおかしい。 以下淡々と質問及び解答で。
351 :
271 :2006/06/07(水) 14:35:35
>>304 様も提示してくれたのですね!気づきませんでした。本当にありがとうございます
>>352 >for(i=2;i<=x;i++)
ループ回数大杉。
今時、強豪相手に点をとりたきゃ、ループシュートだお
他人の解答にけちを付けるのは止めろ。
というかそんなことをいちいち指摘しなくても
>>305 のコードで十分だろ。
ケチ付けられたくなかったら書かなきゃいいのに。
>>355 ケチって言うけど、実際問題として効率の悪い部分は直していった方が
今後のためだお。そうやって推敲していって、人類は効率の良い技術を培い
次の世代に教科書などで伝授していっているんだから。
文明や文化、科学技術の発展はそういったところから重要。
代替案を提示しないのが悪い
>>356 俺は
>>352 じゃないけど、俺でも
>>352 のように書いたと思うから弁護させてもらうが、
高速化のために実装を複雑にするのはトレードオフで、
どっちが優れているという話でもないだろ。
特に宿題の解答では「単純であること」を相当に優先する趣味があっても良いはず。
というわけで
>>353 は酷い蛇足だと思う。
>>358 書いた当人がそれを望んでいるならそれもいいがな。
やれやれ、ジョークのわからんやっちゃのぉ・・・
>>360 っつか、蛇足の意味わかってないっしょ?
>>363 「無用な付けたし」の意味で使ったがおかしいか?
>>364 まぁ、批判などは良い、ご自分の素数を求めるソースを提示してくれ。
素数を求めるアルゴリズムには、エラトステネスのふるいが有名だが
今回は何が素数か?ではなく、入力された数値が素数に該当するか?だぜ。
>>360 あのな、
>for(i=2;i<=x;i++)
これを
>int r=sqrt(x);for(i=2;i<=r;i+=(i>2)?2:1)
こうする程度のことが複雑か?
この程度で理解できないほど複雑になったと感じるなら、それはプログラム以前の問題。
【蛇足】 蛇の絵を描く競争で早く書き上げた者が足まで書いて負けになったという故事から。 ・あっても益のない余分な物事。 ・あっても無駄になるもの。
>>365 なんで俺?俺なら
>>352 で十分だと思う。
>>366 可読性や分かり易さの話じゃなくて、単純な解答にはそれ自身で
それなりに価値がある、という話。
もちろんこのスレの解答で単純さにどの程度重きを置くかは回答者の勝手だが。
>>366 自分では素直じゃないコード書いておいて、
他人が素直じゃないコード書いた時に指摘して答えを書いちゃうのはどうかと思う。
>>357 もうちょっとだな。iの最大値は√xで良い。
>>370 まっ、質問者のレベルに応じてやったまでさ。このスレの趣旨からして
答えた人のレベルで答えりゃ良いだろうし、○投げだけど答えが導ければそれで良しw
っつか、偶数は2で割りゃ・・・2を抜いた時点でアホなことしてたw
まぁ良いや、さぁ次の課題、どーんとこい↓
この世のイケメンを全員ゾンビみたいな面にするPGお願い。 後、この世の女の子が俺無しじゃ生きていけないPGも。
PGは無理だけど、ホラーなRPGならイケメンがゾンビに噛まれて ゾンビになるものならあるかもよ?
なんだかんだ言っても、まずパッと見て人間が理解できるソースが重要やな 他人に見せるならなおさらだな。 大掛かりなプロジェクトに参加するようになれば そういった人間同士のやりとりも重要になるし。
バカでも理解できるようにする必要はないけどな。
バカが理解できないのは、もはやその言語の仕組み、書き方、使い方を知らず なおかつ計算手順まで理解していないから。 俺が言っているのは細かい説明じゃなくて、見やすいソース。
じゃあ、七行プログラミングのソースとかはダメなソースなのか…
それは単に見やすくすりゃ良いだけじゃね?w
そういう世界の中ではいいソース。 人が読む為のソースとしては駄目なソース。 俺が好きなのはタルタルソース。
レベル低い質問でごめんなさい 100 | 0x21 == 100 & 0144 処理の優先順位を考えると 100 になると思うのですが 答えは真(1)と言われました。 なぜ真になるのでしょうか? どなたかお願いします。
ふつうに100になるが。 ただし100は真なので、結果が真というのは正しい。
>>383 ありがとうございます
1か0で答えなければならないのに答えが100となり
分からなくなってしまいました。
100は「真」なので答えは100ではなく1になるということですね
根本的な知識が足りないことがわかりました。
本当にありがとうございました。
[1] 授業単元: [2] 問題文 文字列検索の宿題なんですが、 半角と全角が(漢字など)入り混じった文字列を検索して、 検索した文字列の先頭文字の位置を出力するという問題です。 C++で用意されている検索関数は不可です。 [3] 環境 [3.1] WindowsXP [3.2] VC++ 6.0 [3.3] C++ [4] 明日の18時まで よろしくお願いします☆
>>388 すみません。コードページについての指定はありません。
日本語や英語入り混じった文字列なので、それに対応したコードでお願いします。
>>389 ソースのコードページの事じゃなくて、文字列のコードページの事だと思われ
>>385 次スレの184だが、似たような問題だったので改変して作った。
日本語の場合は2文字分スキップしてしまうんだけどいい?
だから表示結果は○文字目ではなくて○バイト目とした。
#include <stdio.h>
int chkmatch(char *t1, char *t2){
int find = -1, count = 0;
char *save1,*save2;
while( *t1 ){
if( *t1 == *t2 ){
save1 = t1;save2 = t2;find = count;
while( *t2 ){
if( *t1 != *t2 ){ find = -1;break; }
t1++; t2++;
}
t1 = save1;t2 = save2;
if( find != -1 ) break;
}
t1++; count++;
}
return find;
}
int main( void ){
char buf1[256],buf2[256]; int find;
printf("元の文章-->");gets(buf1);printf("検索する文章-->");gets(buf2);
find = chkmatch(buf1,buf2);
if(find>=0){ printf("見つかった。%dバイト目。\n",find+1 ); }
else{ printf("見つからなかった。\n"); }
return 0;
}
392 :
デフォルトの名無しさん :2006/06/08(木) 15:20:00
>>391 えっと、文字の位置指定なのでバイトではなく、何番目って事でお願いしたいです。
すみません。お願いします。
>>389 んじゃUNICODE限定。
#define _UNICODE
#include<iostream>
#include<wchar.h>
using namespace std;
long wstrsearch(wchar_t* src, wchar_t* key){
long i=0, k=0;while (src[i]!=_T('\0')) {
while(src[i+k]==key[k] && key[k]!=_T('\0'))k++;
if (key[k]==_T('\0'))return i;else{k=0;i++;}}
return -1;}
int main(int argc, _TCHAR* argv[]){
if (argc>1) {wchar_t tmp[100];FILE* fp;
if ((fp=fopen(argv[1],"rt"))!=NULL) {wchar_t* buf;
fseek(fp,0,SEEK_END);long length=ftell(fp);
fread((void*)buf,1,length,fp);fclose(fp);
fgetws(tmp,100,stdin);long pos=wstrsearch(buf,tmp);
if (pos>=0)
cout << "find " << tmp << " at " << pos << " in " << argv[1] << endl;
else
cout << "not found" << endl;
}}return 0;}
>>392 数字を入力するときはコマンドラインで「./minswp 5 87 54 23 45 61」というようにやってちょ。
#include <stdio.h>
#include <stdlib.h>
int array[10];
void swapsmall(int *data, int num){
int min = *data, *p, *head, temp;
head = data;
while(num--){
if( *data <= min ){
min = *data;
p = data;
}
data++;
}
temp = *head; *head = *p; *p = temp;
}
int main( int argc, char **argv ){
int i,num;
if( argc < 3 ){ printf("引数足りない\n"); return 1; }
num = atoi(argv[1]);
for(i=0;i<num;i++){
array[i] = atoi(argv[i+2]);
}
swapsmall( array, num );
for(i=0;i<num;i++){printf("%d",array[i]); if(i!=num-1)printf(" ");}
return 0;
}
397 :
395 :2006/06/08(木) 16:02:09
しかし違う質問でも「配列宣言を除きポインタで処理せよ」とあったが、どうしてこだわるんだ? 配列のほうが分かり易いのに。 ポインタの場合はアドレス進めてしまうのが嫌。 まぁ、hoge[10]を*(hoge+10)に変えてもOKならそれが早いんだけど。
>>394 :\documents and settings\owner\デスクトップ\cpp1.cpp(6) : error C2065: '_T' : 定義されていない識別子です。
c:\documents and settings\owner\デスクトップ\cpp1.cpp(10) : error C2061: 構文エラー : 識別子 '_TCHAR' がシンタックスエラーを起こしました。
c:\documents and settings\owner\デスクトップ\cpp1.cpp(12) : error C2065: 'argv' : 定義されていない識別子です。
c:\documents and settings\owner\デスクトップ\cpp1.cpp(12) : error C2109: 配列または、ポインタでない変数に添字が使われました。
c:\documents and settings\owner\デスクトップ\cpp1.cpp(12) : error C2664: 'fopen' : 1 番目の引数を 'int' から 'const char *' に変換できません。 (新しい機能 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
c:\documents and settings\owner\デスクトップ\cpp1.cpp(17) : error C2109: 配列または、ポインタでない変数に添字が使われました。
cl.exe の実行エラー
というエラーが出てきました。
>>398 プロジェクトの新規作成→Win32コンソールアプリケーション
で
400 :
391 :2006/06/08(木) 16:22:00
>>393 #include <stdio.h>
#include <ctype.h>
int chkmatch(char *t1, char *t2){
int find = -1, count = 0, ascii=0;
char *save1,*save2;
while( *t1 ){
if( *t1 == *t2 ){
save1 = t1;save2 = t2;find = count;
while( *t2 ){
if( *t1 != *t2 ){ find = -1;break; }
t1++; t2++;
}
t1 = save1;t2 = save2;
if( find != -1 ) break;
}
/*アスキーの場合以外*/
if( !__isascii(*t1) ) { t1+=2; count++; }
else{t1++;count++;}
}
return find;
}
int main( void ){
char buf1[256],buf2[256]; int find;
printf("元の文章-->");gets(buf1);printf("検索する文章-->");gets(buf2);
find = chkmatch(buf1,buf2);
if(find>=0){ printf("見つかった。%d文字目。\n",find+1 ); }
else{ printf("見つからなかった。\n"); }
return 0;
}
>>394 wstrsearchの中では_T使わないで直接L'\0'にすべきだろ。
あと、本当に必要なヘッダは<tchar.h>、<cstdio>などで、
そのプログラムには<iostream>も<wchar.h>も不要。(<wchar.h>は全く不要とも言えないが)
>>400 さん
ありごとうござました!!!
これで単位が取れます☆
感謝です!!
>>401 cstdioとtchar.hはstdafxに書いてあった。
[1] 授業単元:プログラミング演習1 [2] 問題文(含コード&リンク): 予想値と正解の差が10以下なら「もうちょっと(上・下)!」,5以下なら「おしい!もうちょっと(上・下)!」それ以外のときは「もっと(上・下)!」というようにせよ。 また,予想値を入れる回数を5回までとせよ.5回の入力で正解できないときはゲームオーバーとしてプログラムは終了する.また,最後にスコアを以下のように計算して表示するようにせよ. 1回目で正解:100点 ,2回目で正解:80点, 3回目で正解:60点, 4回目で正解:40点, 5回目で正解:20点 ,正解できず:0点 [実行結果] <<<<数当てゲーム>>>> 予想値を入れてください:34 もっと上! 予想値を入れてください:87 もっと下! 予想値を入れてください:49 もうちょっと上! 予想値を入れてください:60 おしい!もうちょっと下! 予想値を入れてください:55 !!!!大あたりです!!!! SCORE: 20点 3] 環境 [3.1] OS: (Windows [3.2] コンパイラ名とバージョン: Visual Studio.NET2003 [3.3] 言語: C++ [4] 期限: 6月9日まで [5] その他の制限: まだ初期で、if,for,whileまで習いました。 よろしくお願いします。
405 :
デフォルトの名無しさん :2006/06/08(木) 17:39:16
>>404 正解の値はどうやって決めるん・・・・?
>>404 正解の値は自分で決めるんですよ。
この問題の例だと55になってます。
>399 >401 トーマスがおとなしい……。芸風が変わったのか?単に今忙しくて相手にできないのか? ちょっと寂しい。
411 :
デフォルトの名無しさん :2006/06/08(木) 18:40:58
お願いします [1] 授業単元: 基本プログラミング [2] 問題文(含コード&リンク):入力された複数の0以上の整数値の平均値、最大値、最小値を求めるプログラムを2種類作成せよ。(1をwhile文、2をdoーwhile文を使う) 1、入力する数値の個数がわかってない場合(入力が終わると負の値を入れて対応) 実行例 Input date:5 Input date:6 Input date:7 Input date:5 Input date:-1 ave=5.75 max=7 min=5 2、入力する数値の個数がわかっている場合(初めに、その個数をnに入力してから、その後にその個数分だけ数値を入力) 実行例 n=5 Input date:4 Input date:6 Input date:9 Input date:3 Input date:8 ave=6 max=9 min=3 [3] 環境 [3.1] OS:UNIX [3.3] 言語:C++ [4] 期限:明日 [5] while,do-whileまで習いました 最初が#includ<iostream>のやつでお願いします 注文多くてすみません‥
「最初が〜」以外見覚えがあるな。
>>410 ありがとうございます。
少し参考にさせてもらって自分なりのプログラム作れました。
>>411 『1』
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <numeric>
main(){
std::vector<int> v;
while(1){
std::cout << "Input date:";
int n; std::cin >> n; if( n < 0 ) break; v.push_back(n);
}
std::cout << "ave=" << std::accumulate(v.begin(), v.end(), 0)/(double)v.size()
<< " max=" << *std::max_element(v.begin(), v.end())
<< " min=" <<*std::min_element(v.begin(), v.end()) << std::endl;
}
『2』
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <numeric>
main(){
std::cout << "n="; int n; std::cin >> n; if(n<1) return 0;
std::vector<int> v;
do{
std::cout << "Input date:"; int m; std::cin >> m; v.push_back(m);
}while(--n);
std::cout << "ave=" << std::accumulate(v.begin(), v.end(), 0)/(double)v.size()
<< " max=" << *std::max_element(v.begin(), v.end())
<< " min=" <<*std::min_element(v.begin(), v.end()) << std::endl;
}
#include <string> はいらなかった。
よろしくお願いします。
[1] 授業単元:プログラミング
[2] 問題文:
ttp://pc8.2ch.net/test/read.cgi/tech/1147908265/152 の貯金プログラムを拡張して、額の表示の際に3桁ごとにコンマを入れる形式をとるようにせよ.下記例のようにどのような桁数でも桁数に応じてきちんと表示できるようにすること.
12円⇒12円
789012円⇒789,012円
1000001円⇒1,000,001円
1234567890円⇒1,234,567,890円
[3] 環境
[3.1] OS: (Windows
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: if,for,whileまで習いました。
test
#include <stdio.h>
void hoge(int n){
int x = 1, i = 0, j = 1;
while(n / 1000 >= x ){x *= 1000; j++;}
while(i < j){
if(i == 0)printf("%d", n / x);
else printf(",%03d", n / x);
n %= x;
x /= 1000;
i++;
}
printf("円\n");
}
int main(void){
int m[] = {12, 789012, 1000001, 1234567890};
for(int i = 0; i < sizeof(m) / sizeof(m[0]); i++){
printf("%d円 ", m[i]);
hoge(m[i]);
}
}
三桁区切り
>>416 あとは自分で組み込んで
>>414 へぇ。C++の標準ライブラリにはこんな便利な関数群があるのか。
こんだけスマートに書けたら卒業レベルやんね。
スマートというか関数型っぽい表記しただけじゃね?
関数型だろうがなんだろうがスマートなことは確かだと思うが。
バグがあるけどな。『1』のほう。
423 :
デフォルトの名無しさん :2006/06/09(金) 02:31:18
>>423 最初っからまとめて問題文ごと出しておけば良いのに
単発で目的に応じないレスを求めるから・・・
>>423 もうすぐ12時だなぁ〜〜〜wktk
さて、今夜はワールドカップ!さすがに試合は夜中だから録画して
次の日に見るけど。ワールドカップを楽しみながら過ごす今年の夏。
俺は初めて彼女ができ、ロストチェリーボーイになった・・・とか期待してみたり
ヒント:匿名掲示板にリンク張られたzipファイルなんて、怖くて誰も開けない。 自分の無知を呪ってね。
428 :
423 :2006/06/09(金) 11:13:10
>>416 うぁ、たぶんクラスメイトだw
その1のxoの問題お願いします。これだけはできないとまずいんで(汗
>>427 ウィルス検知、駆除ソフトも持ってねーのかよ、だっせーーwwww
今じゃネットやるなら常識だろw
>>423 その1
#include <stdio.h>
main()
{
int n;
int i, j;
printf("一辺の長さを入力してください(1から10まで):");
scanf("%d", &n");
for (i = 0; i < n; i++) {
for (j = 0; j < i; j++)
putchar('x');
for (j = i; j < n; j++)
putchar('o');
}
return 0;
}
っつか、他にも同じ内容の質問って、どこの学校だよ?w 怠っている奴がいるって通報しちゃうぞw
・その1 既出だと思うので割愛 ・その2 4-3.cをどう拡張しても使えそうにないので割愛 ・その3 3-5.cをユーザインターフェースの仕様変更をせずに例のような表示を得ることができないので割愛 ・その4 *誤り main()に戻り値がない。 leepという変数名が不適切。 西暦年とあるのでグレゴリウス暦を仮定していいと思うが、制定年を考えると値域を限定すべき。 10行の右辺はyear != 0 && year % 400 == 0と同等になっている。 14行とも16行とも常に表示されるので閏年の判別ができない。 *修正その他 長くなったので割愛。
>>430 ちょっwwwwwwおまっwwwwwwちゃんと改行コード入れてYO!
scanfの最後のダブルクォートが余計だYO!
main()にreturnがないのは、間違いではない。
厳密に言うと、int main() ならint型の返り血があるとのことだが、返り値がないなら void main にしちゃって
int main()でも、return は省略できるよ。
可能、不可能とかじゃない。そういうところはコンパイラがしっかり対応しているだけで 定義や仕様からして、不適切だってこと。それを理解していないと 環境が変わったり、突き進んだ先でコンパイルエラーが分からなくなる人が出てくるんだよ。
たとえば、ある自分で定義した関数がdouble型の値を返すとしよう。 そういうときは double f(x) といった形で定義するだろ?そういうこと。 main だとそういうところに気づかないだけ。
C++、C99ではmainからのreturnの省略が明示的に認められています。念のため。
あるコンパイラじゃ、int mainとしたとき、return 値を書かないとエラーを表示するものもある。 いくつか試してみれば、そういう細かいところに気づくよ。 だから最初のその部分でつまらん論争が起こる。値を返さないなら void main にしとけばおk。
C89でも、returnを省略してエラーにはならない。 エラーになるのはよほどへぼい処理系。
void main() なんて書いてるやつより、int main()でreturnを省略してるやつの ほうが、Cを知ってそう。
444 :
423 :2006/06/09(金) 13:03:08
その1以外できんかったorz ほかのやつ、習ってない語が多すぎてどうにも・・・ 気持ちだけ受け取っときます(((´ー`)つ[黄餅] ちなみにどうでもいい個人(?)情報流すと 名城大学2年Aクラスですが何か?ww
まあうちには応募してこないとは思うが念のため名城大学をブラックリストに入れておこう。
446 :
デフォルトの名無しさん :2006/06/09(金) 13:16:17
>>441 あのね、どのコンパイラがどうとかはこの際どうでも良い。
コンパイルエラーが起こるものがあるとかよりも
返り値についての事情を知っていれば、それに関する取り扱いも適切になってくるってこと。
にしてもint mainと書いて return 0(正常終了)を記述しないやつは完全に無知、
それは不要だと言い切った奴は知ったかだと思われるよ。
これはもはやプログラマの間でどうとかじゃない、言語の仕様の問題。
>>445 ちょいお待ち、名城に来ている人すべてがそうとは限らないでしょ。
〜〜だからではなく、本人の本質を見抜く面接ができないところは
結局まともな人材を雇えず、まともな業務成績も出せないのさ。
449 :
432 :2006/06/09(金) 13:24:22
狙ったところと違うところで盛り上がっている……
午後か・・・もう課題が出された講義が始まったかな wktk
>>442 サイズ変えちゃだめとか言ってるし、画像うp
>>448 「こんなところに来るクズ学生に単位をやっている」という時点でアウト。
int main()って書いたのに、returnを書かない奴がいるんですよ なぁ〜〜〜〜にぃ〜〜〜〜!? 男は黙って、return 1 男は黙って、return 1 異常終了だよ
>>447 だから、言語仕様上は省略できだろよ。
return;を省略したら、C89はなにを返すか未定義、C99は0を返す。
それだけのこと。
mainをvoidにしろとか、returnを省略したらエラーになるとか、
間違いだとか言ってるやつが知ったかぶり。
よろしくお願いします。 [1] 授業単元: 画像処理のための線形代数 [2] 問題文(含コード&リンク): ベクトル v を任意のベクトル a を軸として左回りに t ラジアンだけ回転させたベクトルを求める関数を作成せよ。 v, a は Vector3、t は double 型とする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: BCC32 [3.3] 言語: どちらでも可 [4] 期限: 2006年06月12日17:00まで [5] その他の制限: Vector3はx,y,zのメンバを持った構造体です。
>>454 >できだろよ。
日本語でおk。
>return;を省略したら
するしないによるコンパイラがどうとか関係ない。
int main など、関数の前についている変数の定義にも使われる型が
なんで書かれているか?それに関しては返り値に関係してくる。
返り値がないなら普通に void って関数の前につけるクセはあった方が良いよ。
それをちゃんと理解してね。わけもわからずつけるんだよーってのはただのアホ。
>>456 =
>>454 自分が理解してないなら屁理屈ごねてくんなよ、専門学校生w
>mainをvoidにしろとか、returnを省略したらエラーになるとか、
>間違いだとか言ってるやつが知ったかぶり。
何これ?間違いだとは言ってないじゃん。”不適切”とは書かれているがw
省略すると「返り値がない」としてエラーを表示するものもあるって話だが?
まだわかってないなこいつ・・・良い悪いの問題よりも
それが「何なのか?」が重要。要するにどっちでも良いって言っている奴は
何なのかが分かってない証拠。だったら適当に、値を返す関数の前に
返り値に対してのデータ型をきちっと書いてから出直せ。
441 名前:デフォルトの名無しさん 投稿日:2006/06/09(金) 12:29:16
C89でも、returnを省略してエラーにはならない。
エラーになるのはよほどへぼい処理系。
↑誰もこんなことは論点にしていないw
関数の前に書かれている int や void が何を示しているのかってことなんだがw
それによって敢えて int って書くなら return をつけるつけないというよりも
値を返さないってわかってんなら void にするよ、分かっている人ならね。
>>434 が言いたいのは単に「間違いではない」ってことだけであって
適切さを欠く知識しかないのが露呈されたわけだな。
まぁ、ごちゃごちゃ言っても始まらないし、どうせなら double main() でも char main() でも short、long でも好きなのを付けて return 無しでどぞw マジで、main の前にそれらをつけてもコンパイルできるものはできるから。 けど、敢えて int ならおkってなら、やっぱりわかってない無知決定だろw
intは規格上mainの返り値として明示的に許されている唯一の型。 int main()を使う理由としてはこれで十分だろ。
>>459 > ↑誰もこんなことは論点にしていないw
いや、すぐ上に話題にしてるやつがいるじゃん。
見えないふりするなよ。
>>458 >>mainをvoidにしろとか、returnを省略したらエラーになるとか、
>>間違いだとか言ってるやつが知ったかぶり。
>何これ?間違いだとは言ってないじゃん。”不適切”とは書かれているがw
いや、voidにしろとか、returnを省略したらエラーになるって
言ってるやつがいるだろ。
それを間違いだって言ってるだけ。
見えないふりしたり、論点をずらそうとしても無駄。
だいたい自分からコンパイラのエラーがどうとかmainのリターン値をvoidに しろとか言い出して、間違いを指摘されたら「そんなことは論点じゃない」って、 アホか。
い い か げ ん に し ろ
>>461 勝手にintを規格上とかmainの返り値とか明示的に許されているとかウソこくでねぇよ、田舎もんがw
returnがないならvoidしとけっつーのっw
はぁ?いいから氏ねよ糞が
>>464 >mainのリターン値をvoidに
誰も言ってないよ?しかもreturnがないならvoid・・・いやもう良いや。
この一言で分かったw
mainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidに
mainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidに
mainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidにmainのリターン値をvoidに
↑とても恥ずかしい勘違いをしていることが判明したますたw
こいつはreturnばかりにしか頭がいってないようです。
本質的なことはintやvoidといった関数の前についている変数の型についてなんだがw
467 名前:デフォルトの名無しさん 投稿日:2006/06/09(金) 15:41:09 はぁ?いいから氏ねよ糞が 467 名前:デフォルトの名無しさん 投稿日:2006/06/09(金) 15:41:09 はぁ?いいから氏ねよ糞が 467 名前:デフォルトの名無しさん 投稿日:2006/06/09(金) 15:41:09 はぁ?いいから氏ねよ糞が 467 名前:デフォルトの名無しさん 投稿日:2006/06/09(金) 15:41:09 はぁ?いいから氏ねよ糞が ↑これ、どこの専門学校生?教えてよ、うちでは雇わないから ブラックリストに入れたいんですけど?まぁ、専門学校は除外しとこうかw
良いからreturnがなくてもコンパイルエラーしないなら intでもcharでもdoubleでもfloatでもshortでもlongでもお好きなのを書いて 最後にreturnなしでソースを書いてなさいってw なんでintだけおkなの?w
intがデフォだから。
>>468 > 誰も言ってないよ?
すげーこいつ、本気で見えないふりしてる。
>>440 で言ってるだろよ。
ANSI Cでは main 関数の型は int と決められています。 void とするのは間違いです。 だそうだ
誰だ荒らしてんのは?
お前だろwww
>>473 ANSI CだけがC言語じゃありません、そんな一部だけ持ち出して
勝手なことを言うんじゃねーよw
>mainのリターン値をvoidにしろとか
だから本当に言ってねーってw
returnで返り値がないならvoidにしなきゃ
コンパイルエラーになるものもあるって話だろ。
まだこいつ変数の型について理解してないなw
とくにこれ
>>441 。エラーが起きない例を持ち出しているに過ぎない。
エラーが起こるコンパイラを知らないだけ。
逆に、そのエラーが起きないコンパイラでreturnを書かずに
voidと書いたらエラーが起こるならまだしも、話がわかってないアホ必死すぎw
あんまりぐちぐち言っても始まらない、C/C++を解説しているサイトとか見てみ。 たいがいintと書かれているところはreturn 0を書くか returnを書かない場合はvoid mainにしているから。 どのコンパイラでも通用するようにとの配慮だな。 分かってない奴は、エラーが起きるコンパイラを使っている人から 指摘されるか、こういった掲示板でこのサイトアホって晒されるかもねw
>>476 そうは言ってもANSI(或いはISO)はもっとも知られたCであるはずだから、
473がANSIを持ち出すのも無理はなかろう。
>>442 ・繰り返し回数(N_REPEAT)を100から1にする。
#これだけで手元のLinuxPCだと100分の1とは言わないが60分の1ほどの0.12秒程度になる。
・コンパイラをgccからiccに換える。
#同じく1-2割所要時間が短縮する。
尚、この程度のソースだと人力で姑息な最適化しても(iccだと)殆ど効果はない。
処で、突っ込みどころ満載なんだけど。
・グレーはRGBの平均で求めてはいけない。
・処理する画像サイズが固定されている。
#まぁいいか。
「省略が許されているから」という理由で、intを返す関数プロトタイプの先頭に 須く何も書かないような奴がいたら即刻クビ。 「省略が許されているから」という理由で、returnを書かないような奴がいてもクビ。
ttp://diary.csh.sh/d200208b.html いくつか検索してみると、void mainが一般的でなく
int mainにするといった内容は良く見かけるし、ANSI Cについても出てくるが
int mainにしたらexit(0)だのreturn 0だのって話は出てくるね。
よって、intって書いてreturnは要らないって言っている奴が一番バカ。
それ以外は問題なし。
だぁ〜〜〜らおめーらうるせーーーー! intで良いからreturn 0くらい書いておけYO! <HTML>って書いたら</HTML>の閉じるを書くがごとく。 いや、それは単に括弧の話だからどーでも良いかw
問題はmainの返り値が何型かじゃない、int mainって書いておいて returnなしかよ?って話。returnなしならvoidか?ってことについては・・・議論せず int main returnはセットで使え!以上。
>>455 aは正規化されていて、左手系を使うとする。
Vector3 vrot(Vector3 v, Vector3 a, double t) {
Vector3 r = { ((1.0-cos(t))*a.x*a.x+cos(t) )*v.x+((1.0-cos(t))*a.x*a.y-sin(t)*a.z)*v.y+((1.0-cos(t))*a.x*a.z+sin(t)*a.y)*v.z
, ((1.0-cos(t))*a.y*a.x+sin(t)*a.z)*v.x+((1.0-cos(t))*a.y*a.y+cos(t) )*v.y+((1.0-cos(t))*a.y*a.z-sin(t)*a.x)*v.z
, ((1.0-cos(t))*a.z*a.x-sin(t)*a.y)*v.x+((1.0-cos(t))*a.z*a.y+sin(t)*a.x)*v.y+((1.0-cos(t))*a.z*a.z+cos(t) )*v.z };
return r;
}
だから認められているとかこの際どーでも良い。「一部」でしか通用しないのは却下の方向で。 一応こういう場所では使用のコンパイラも書かせているけど どの道 int main() {return 0;}でエラーを起こしたり、不適切だと指摘するコンパイラは たぶんないだろうってことで。
ここは宿題を勝手に解くスレなんだから、規格で認められていることは何をやっても良いと思うが。 個人的には、認められていないことをやっても良いと思うけど。
489 :
488 :2006/06/09(金) 21:28:06
ごめん、解答のことじゃなかったな。 でも、なんだろうと他人のコードに難癖を付けるのはこのスレの趣旨にかなわないと思う。
> 問題はmainの返り値が何型かじゃない まぁ、こんなこと書ける程度の無知蒙昧が出てきたことがこのスレの不幸だなぁw
どうやら先生がこのスレッドを見ている件について. ここの解答と先生の模範解答が酷似している。。。
>>491 んなわけねぇだろwww
大学の課題なんて去年の問題とほとんど変わっていない
つまり、ここで答えてくれてる人が問題の意図を非常に汲み取ってるだけ
>>491 センセイがこのスレでも解答している、という説はどうだw
あるあ・・・ね〜よ?www
495 :
491 :2006/06/09(金) 22:31:28
いや。かなり確証の高い話。 授業中に、レポートを写している人がいますが、そういったことは止めましょうねという話があったんだ。 んで、その話の中でインターネットの掲示板で解答を聞いている人が居ますが、その解答と全く同じモノを提出している人が多数いるので その人たちの成績を下げておきます と言ったんだよ。マジデ。 んで、その先生の模範解答が、ここの掲示板の解答と酷似してるんだよ。 つまり、この掲示板で先生が解答してい(ry |彡 サッ
先生もこのスレで聞いているんだッ!
宿題スレ見てると、結構無能教官多いなあと思うよ。 特にC++。
いや寧ろ、>423みたいな屁の足しにもならないような問題作る教官にこそ この板で勉強してほしいと思うぞ。
このあいだの中学生日記でもやっていたね。 ネットを使って宿題を済ませると。
>>499 読書感想文の話か?
賞を貰った後に発覚したとかなんとか。
うちの先生もたぶん見てる。 ここに問題乗せられると、問題変更されてるし
>>500 そうそれ。
小2と小4の子供が見ているから、毎週見ている。
(´・ω・`)家族がいるのか。。。 (´・ω・`)おれは一人寂しいプログラマー。。。
たまに、解答者をうまく誘導しようと苦心しているのが にじみ出てるようなすてきな問題もあって、 そーいうのみてると、「みんなこれだけはスルーしてよ」って思うよ。
いつのまにかC/C++の宿題に関わる者の愚痴スレに
まあ愚痴半分、宿題代行半分でいいんちゃう?
涙ぐましい先生もいたもんだ
>>495 そんな学校・・・将来パクリしかできない人材しか育ちそうにないなぁw
まぁ、所詮学校で習うC言語なんざ、初歩的で既に分かりきっているものばかりだけどね。
それすら自力でできないんじゃ終わってるけど・・・
精神面で言えば、人に教えてもらってばっかだとプログラムが 自分が思ったとおりに動いたときの喜びって全くないよね。 そこが醍醐味だと思うんだけど。
>>495 ネタ回答に釣られてそれを模範解答にしてしまう神教官キボンw
>>497 禿道。こないだのvolumeクラスは凄い破壊力だった。
先生、C言語がしたいです・・・ ポインタの使い方が分からないです・・・ 性帝トーマス殿、手ほどきプリーズ
>>511 お前が繁殖可能な女なら実技指導してやるがそうでないなら他を当たれ。
えぇ〜〜い、ならば解説しているサイトで勉強してくるから良いYO!
[1] 授業単元:計算機プログラミング [2] 問題文(含コード&リンク): x,y,z,w を、要素数 n の int 配列とする。 x[i] + y[j] + z[k] + w[l] = 0 をみたす添え字 i,j,k,l の組み合わせの個数を求める 効率的なプログラムを書け。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 6/13 23:59 [5] その他の制限: O(n^4) より効率的な解法をお願いします。 末尾再帰を利用せよ(?) よろしくお願いします。
#define _n 10 int _23_main(void) { // 配列にデータを入れるのは自分でやってくれ int x[ _n ]; int y[ _n ]; int z[ _n ]; int w[ _n ]; int i, j, k, l; int a = 0, s; for ( i = 0; i < _n - 1; i++ ) for ( j = _n - 1; j > i; j-- ) if ( w[ i ] > w[ j ] ) w[ i ] ^= w[ j ] ^= w[ i ] ^= w[ j ]; for ( i = 0; i < _n; i++ ) { for ( j = 0; j < _n; j++ ) { for ( k = 0; k < _n; k++ ) { s = x[ i ] + y[ j ] + z[ k ]; for ( l = 0; l < _n && s + w[ l ] <= 0; l++ ) { if ( s + w[ l ] == 0 ) a++; } } } } printf( "組み合わせ個数 = %d\n", a ); return 0; }
>>516 それだとO(n^4)だろ。
最後で二分探索すればO(n^3 log n)になるけど。
二分探索www
[1] 授業単元: プログラミング基礎講義及び演習 [2] 問題文(含コード&リンク): 一つの入力値に対して階乗計算を行い、結果を出力するプログラムを作成せよ。 ただし、次の仕様に基づいた関数を作成するものとし、main関数とfct関数は一つのファイル上に作成するものとする。 プロトタイプ宣言: int fct(int n); (2)二つの入力値に対して順列計算を行い結果を出力するプログラムを作成せよ。 ただし、次の仕様に基づいた関数を作成するものとし、main関数とprm関数は一つのファイル上に作成するものとする。 プロトタイプ宣言: int prm(int n, int r); (3) (1)(2)で作成したプログラムを関数ごとにファイル分割する。ヘッダファイルも作成し、実際に分散コンパイルができることを確認せよ。 (4) (3)で作成したプログラムに対するMakefileを作成し makeコマンドを使って分散コンパイルが自動化できることを確認せよ。 このとき、(3)で分割したファイルのそれぞれを編集、 コンパイルしたときのmakeコマンドの動作をタイムスタンプの観点から考察せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名: gcc [3.3] 言語: C [4] 期限: 2006年6月19日23:59 [5] その他の制限:特にないです。なるべく簡単に仕上げてくだされば…
↑すいません 階乗が(1)です よろしくお願いします
[1] 授業単元: 数値解析 [2] 問題文 y=3x^n+4x+5 のx=1.0における微分値を、 n=2、6、10の場合について求めるプログラムを作成せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gccです。バージョンは分かりません。 [3.3] 言語:C言語 [4] 期限: 14日までです。 [5] その他の制限:特に無いです。 宜しくお願いします。
>>522 本スレのやつと同じ臭いな。
解答出てるだろ?
>>522 f(x,n)=y=3x^n+4x+5
xで微分して
f'(x,n)=3nx^(n-1)+4
x=1.0を代入して
f'(1.0,n)=3n(1.0)^(n-1)+1
んで
n=2,6,10を代入すればいいんちゃう?
これ以外だと、x=1.0まわりでのテイラー展開を項別微分するとか?←意味不明
525 :
デフォルトの名無しさん :2006/06/14(水) 15:45:00
[1] 環境 [1.1] OS: linux[1.2] コンパイラ名とバージョン: gcc[1.3] 言語: C #include<stdio.h> int main(void){ char a[0xff], b[0xff], *p, *q; printf("Please input first words:");gets_s(a, sizeof(a)); printf("Please input second words:");gets_s(b, sizeof(b)); for(q = b; *q != NULL; q++); for(p = a; *p != NULL; *q = *p, p++, q++);*q = NULL; printf("Connected words:");puts(b); for(p = a, q--; q >= b; *p = *q, p++, q--);*p = NULL; printf("Backwared arranged words:"); puts(a); return 0; } というプログラムに対して出力 srck6-8.c: 関数 `main' 内: srck6-8.c:11: 警告: ポインタと整数との比較を行なっています srck6-8.c:12: 警告: ポインタと整数との比較を行なっています srck6-8.c:13: 警告: 代入により、キャストなしでポインタから整数を作りました srck6-8.c:16: 警告: 代入により、キャストなしでポインタから整数を作りました /tmp/ccuNzOR5.o(.text+0x31): In function `main': : undefined reference to `gets_s' /tmp/ccuNzOR5.o(.text+0x53): In function `main': : undefined reference to `gets_s' collect2: ld はステータス 1 で終了しました となってしまい、わけがわかりません(ノД`)どこに不具合があるのでしょうか?教えてくださいお願いします
不具合はいっぱいありそうだけど、実行形式ファイルが出来ないのは、 >> undefined reference to `gets_s' ここに問題があります。
>>525 gets_sはVisual C++ 2005独自。そのほかには(少なくとも今のところ)無い。
ヒント:微分を微小区間の傾きと考える つまり、 double func_y(double x, int n){return (3 * pow(x, n) + 4 * x + 5);} これを main内で double x = 1.0; h = 0.001; (func_y(x + h, 2) - func_y(x - h, 2)) / (2 * h) と呼び出せば 高校数学だっけ?
[1]C言語プログラミング演習2
[2]
ポインタ 6−22
先々週の課題で作成した単元の取得単位と点数を元に、
総合成績を計算するプログラムを元に、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2063.txt これを読み込んだ数値を入れる配列を指すポインタを使用した形に書き換えなさい。
尚、配列は1次元配列を使用する事。
また、関数は特に必要は無い。
※総合成績の計算式はGPA方式を用いる事
GPA={(科目1の単位*成績)+(科目2の単位*成績)…(科目nの単位*成績)}/総単位数
科目の成績はS(90〜100点)=4、A(80〜89点)=3、B(70〜79点)=2、C(60〜69点)=1
それ以下(評価D)は0とする。
[3]OS:Vine Linux コンパイラ:gcc 言語:C言語
[4]6月15日
よろしくお願いします
>>529 せめてソースを人に見せるなら
コメントいれとこーよ
531 :
デフォルトの名無しさん :2006/06/14(水) 18:09:52
以下のように円周率の近似値を求めるプログラムを作りました。 #include <stdio.h> #include <math.h> int main(void) { int n; double x,h,l,pi; pi=3.14159265358979323846264338; printf("何角形?"); scanf("%lf",&n); x = (pi*(n-2.0))/(2.0*n); h = cos(x); l = h*n; printf("l = %17.16e",l); return 0; } それで、コンパイルはできるのですが値が出てこないのです。 C++でscanfをcinにprintfをcoutにしたところちゃんと値が出てきたので scanfとprintfの使い方が間違っていると思うのですが、 どこが間違っているのか1時間以上考えてもわからないんです… もしわかる方がおられましたら教えてください。
534 :
デフォルトの名無しさん :2006/06/14(水) 18:20:49
>>532 すみません。超初歩的なことみたいだったですね。
lfとdの意味を勉強します。ありがとうございました!!
>>533 クソ問題の予感。
int zero_one(int n,int m){ return n & (1 << m); }
0オーダーか。 int zero_one(int n,int m){ return n & (1 << (m-1)); }
537 :
デフォルトの名無しさん :2006/06/14(水) 18:52:24
>>533 int zero_one(int n,int m)
{
return n&(1<<m);
}
538 :
537 :2006/06/14(水) 18:53:47
なんだよ、だぶりまっくてんじゃねーかよ 書くんじゃなかった
539 :
1 :2006/06/14(水) 18:56:07
[1] 授業単元: 情報処理演習 [2] 問題文(含コード&リンク):二分探索でデータを見つけるプログラムを作 成し,実行せよ.ただし,以下の仕様を満たすものとする. <仕様> 1.対象とするデータ構造は, struct SportsClub kaiin[] = { 555, "Yuki TERADA", 222, "Kaho KANO", 789, "Yuko FUKUDOME", 444, "Seiko ANDO", 456, "Mai YUKAWA", 666, "Kyoko KAMIDOHZONO", 123, "Yuasa OKADA", 777, "Aya SAKATA", 111, "Yua SAITOU", 333, "Noriko KIJIMA", 569, "Shihori YOKOHARI", 689, "Chieko NOGUCHI", 345, "Ikuko OURA", 994, "Airi TAKASAKI", 103, "Mizuna INOUE", 888, "Yuna SATONAKA" }; と初期化すること.また,この構造体は, struct SportsClub { int id_num; char name[80]; };と定義すること.
541 :
2 :2006/06/14(水) 18:56:39
2.最初に,1のデータ構造をファイルoriginal_kaiin.dat(ASCII 型式)に保存 する.次に,クイックソートで上記データ構造を会員番号(id_num)にしたがっ て昇順に並べ替えるとともに,その結果をsorted_kaiin.dat(ASCII 型式)に保 存する.ただし,クイックソートは,標準ライブラリ関数を用いず,各自作成 すること. 3.sorted_kaiin.dat を構造体配列kaiin2[KAIIN_NUM]に読み込み,これを二分 探索に用いる.ただし,本課題の場合,KAIIN_NUM は16 である. 4.二分探索は,会員番号を打ち込めば,該当する氏名を表示させるものとす る.また,会員一名分の情報を表示させた後,終了・続行の希望を使用者に質 問させ,回答を基にその後動作を決定させること. <入出力例> Please input ID#: 123 ID#:123 Name:Yuasa OKADA Continue? y/n: y←続けるとき,y を打ち込む Please input ID#: 0 Not found! Continue? y/n: y Please input ID#: 345 ID#:345 Name:Ikuko OURA Continue? y/n: n←これで終了 [3] 環境 [3.1] OS: linux red hat [3.2] コンパイラ名:gcc [3.3] 言語: C+ [4] 期限:6/20 [5] その他の制限:ながながと問題文を書いてすみませんどうかおねがいしますorz
1がない
>>539 構造体の定義と初期化は自分で埋め込んでくれ。
#include<stdio.h>
#include<stdlib.h>
int sccmp(const void* a,const void* b){return ((struct SportsClub*)a)->id_num-
((struct SportsClub*)b)->id_num;}
int bsearch(int n,int left, int right){int c=(right-left)/2;if(c==0)return -1;
return (kaiin[left+c].id_num>n)?bsearch(n,left+c,right):bsearch(n,left,left+c);}
int main(void){char tmp[100];int n,i;qsort(kaiin, sizeof(kaiin)/sizeof(struct SportsClub),
sizeof(struct SportsClub),sccmp);printf("会員番号:");fgets(tmp,sizeof(tmp),stdin);
n=atoi(tmp);i=bsearch(n,0,sizeof(kaiin)/sizeof(struct SportsClub)-1);
if(i>=0)printf("名前:%s\n",kaiin[i].name);else printf("そんな人いません\n");
return 0;}
>>541 ってクイックソートも作るのか。最近どこかで見たような気がするので省略。
546 :
デフォルトの名無しさん :2006/06/14(水) 19:51:37
本当に初心者の質問で申し訳ないんですが f(1)+f(2)+f(3)+…+f(n) の計算がどうやっても思い浮かびませんノД`) どなたか教えていただけませんか?
for(i=0;i<n;i++)x+=f(i);
>>533 もひとつあったか。
int zero_one(int n,int m){ return n & (1 << (m-1)); }
void disp(int n){int i;for(i=0;i<8;i++)putchar(zero_one(n,8-i)?'*':' ');putchar('\n');}
うpロダの使い方を覚えましょうね、性帝トーマスさん
>>533 完全版。
#include<stdio.h>
int zero_one(int n,int m){ return ((n & (1 << (m-1)))!=0); }
void disp(int n){int i;for(i=0;i<8;i++)putchar(zero_one(n,8-i)?'*':' ');putchar('\n');}
int main(){int i,n[8];char tmp[100];for(i=0;i<8;i++){printf("%i番目の整数:",i);
fgets(tmp,sizeof(tmp),stdin);n[i]=atoi(tmp);}for(i=0;i<8;i++)disp(n[i]);return 0;}
>>549 ファイル化するの自体マンドクセ。ほとんどのコードはフォームに直書き。
>>550 相変わらずコンパイルエラーを出すわけだがw
そか、それはご丁寧に。是非とも高学歴な人の就職先にお勧めの会社として 貴社をホワイトリストに入れたいんだが、なんて会社ですか?wktk
>>556 すみません。書き忘れてました。構造体です。
typedef sturct{
Node *head;
}Queue;
です。
559 :
544 :2006/06/15(木) 00:21:58
>>559 まずは、問1
void push(Stack *st, ElementType n){
insert(st->top, n);
}
ElementType pop(stack *st){
ElementType e = st->top->element;
del(st->top);
return e;
}
int is_empty_stack(Stack *st){
return (st->top->next == NULL ? 1 : 0);
}
本当にありがとうございます。
あと
>>544 [3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
でした。すみません。でも上のはgccでOKっぽいです
問ニ void put(Queue *q,ElementType n){ insert(q->head, n); } ElementType get(Queue *q){ node *p = q->head; ElementType e; while(p->next->next != NULL) p = p->next; e = p->next->element; del(p); return e; } int is_empty_queue(Queue *q){ return (q->head->next == NULL ? 1 : 0); }
>typedef enum{VAL,ADD,SUB,MUL,DIV,LPAR,NONE}Kind; >/*ADD+,SUB-,MUL*,DIV/,LPAR(,RPAR),にそれぞれ対応*/ RPARが定義されてなひ
typedef enum{VAL,ADD,SUB,MUL,DIV,LPAR,RPAR,NONE}Kind; でした。ご指摘ありがとうございますm(_ _)m
565 :
デフォルトの名無しさん :2006/06/15(木) 12:21:02
[1] 授業単元: 演習 [2] 問題文(含コード&リンク): 以下の手順にしたがって文字列を処理するプログラムを作成し,実行せよ.ただし,配列内各要素へのアクセスにはポインタを使用し, 関数(strcpy(), strcat(), strlen()等)は使用しないこと. (1)2つの文字配列A, Bを用意する. (2)文字配列A, Bに,対象文字列を格納する. (3) B に格納された文字列の末尾に, A に格納された文字列を連結させ,それらを表 示させる. (4)(3)の処理後, Bの文字列を逆順にAにコピーし,それらを表示させる. 入出力例) Please input first words:abcd efgh (注:末尾にスペース有) Please input second words:ijkl mnop (注:末尾にスペース有) Connected words:ijkl mnop abcd efgh (注:末尾にスペース有) Backwared arranged words: hgfe dcba ponm lkji(注:先頭にスペース有) [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:6/15 16:59まで おねがいしますおねがいします
age
>>565 もう遅いよな?
人あんまいないから早めに乗せないと…
>>567 過去にも期限を延ばしてもらってた事があったようだし、回答してもいいと思うぞ。
525の人なんだろうな… gets_sをgetsにするだけなんだけどね…
[1] 授業単元:演習U [2] 問題文(含コード&リンク): 構造体配列xに5名分の氏名、年齢、身長を初期値代入し、最も身長が 高い人の氏名、年齢、身長を構造体aに代入し、aのデータを出力せよ。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Visual C++ 6.0 [3.3] 言語: C++ [4] 期限:6/16 [5] その他の制限: 特になし よろしくお願いします。
入力はキーボードから? ファイルから? それとも初期値をハードコードしていいの?
(ごめん読めてなかった。初期値ね…)
>>570 #include <stdio.h>
#define NUMBER 5
typedef struct {
char name[20];
int old;
int height;
} a;
void swap(a *x, a *y)
{
a temp = *x;
*x = *y;
*y = temp;
}
void sort(a *data, int n)
{
int k = n - 1;
while (k >= 0) {
int i, j;
for (i = 1, j = -1; i <= k; i++)
if (data[i - 1].height > data[i].height) {
j = i - 1;
swap(&data[i], &data[j]);
}
k = j;
}
}
int main(void) { int i; a std[] = { {"test1", 18, 195}, {"teston", 22, 123}, {"testet", 57, 175}, {"testst", 75, 142}, {"testetes", 12, 125}, }; sort(std, NUMBER); for (i = 0; i < NUMBER; i++) printf("%s %d %d\n", std[i].name, std[i].old, std[i].height); return (0); }
C++なのに構造体typedefとかprintfとかC的な技法を使ってるのは何で?
ちょwwwせっかくやってくれてるのにww
>>575 ていうか完全なCだな
オサーンかなんかじゃないの?
というか並べ替えて全員分出力する必要は無いんじゃ…
[1] 授業単元:基礎 [2] 問題文(含コード&リンク) キーボードから整数を入力し、キャストを用いてdoubleとして扱って、その数を2倍することを繰り返して 演算結果が1.0e+25を超えるのに、必要な2倍する回数とそのときの数を示すwhile文のプログラムを作れ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 明日の朝まで お願いします。
>>559 問題文なげぇし、つか後置記法良く分からんからパス
まぁ、がんばりな
>>570 C++版
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
struct Prof {
std::string shimei;
int nenrei;
int shincho;
void set(std::string _shimei, int _nenrei, int _shincho){
shimei=_shimei; nenrei=_nenrei; shincho=_shincho;
}
};
class CompProf {
public:
bool operator()(const Prof& x, const Prof& y){
return x.shincho < y.shincho;
}
};
std::ostream& operator<<(std::ostream& os, const Prof& p){ os << p.shimei << ' ' << p.nenrei << "歳 " << p.shincho << "cm"; return os; } int main(){ std::vector<Prof> x(5); CompProf c; x[0].set("abc",3,160); x[1].set("def",10,165); x[2].set("ghij",35,190); x[3].set("klmn",21,150); x[4].set("opqrst",40,170); Prof a = *(std::max_element(x.begin(),x.end(),c)); std::cout << a << std::endl; }
ごめん return 0; を適当に追加しておいて。
585 :
デフォルトの名無しさん :2006/06/15(木) 23:44:00
[1] 授業単元:プログラミング入門 [2] 問題文(含コード&リンク): キーボードから2つの数a,bを入力し縦がa文字、横がb文字の#でできた四角形を表示するプログラムを作成 [3] 環境 [3.1] OS:unix [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 明日の朝まで [5] その他の制限:while文で作れということです(´・ω・`) お願いします。
>>584 大丈夫。C++ならmainでreturnを省略してもよい。
(intなどを返すよう宣言されていればreturn 0;になる)
>>585 ちょっと強引だが...
#include <stdio.h>
int main(void) {
int a,b,i,j ;
i=j=0 ;
printf("a?") ;
scanf("%d",&a) ;
printf("b?") ;
scanf("%d",&b) ;
while(1) {
if(i <= b) {printf("#") ; i++ ;}
else{printf("\n"); i=0 ; j++ ;}
if(j >= a) break ;
}
}
>>587 問題的にそういう意味でwhileを使えって事じゃないと思う…
589 :
585 :2006/06/16(金) 00:03:45
>>587 すいません。。。
まだvoidとか習ってないんです・・・
voidなくても動くから消せば
591 :
587 :2006/06/16(金) 00:07:22
>>585 そのソースでOKなの?
>>588 が指摘してくれた通り、完全に俺の問題文理解ミスだと思うのだが…。
592 :
585 :2006/06/16(金) 00:09:09
いやちょっと違うっぽいです。。
>>585 ユーザが止めることを指示するまで、whileでループするプログラムってことでおk?
#include<stdio.h> int main(){ int a,b,i,k; printf("a:"); scanf("%d",&a); printf("b:"); scanf("%d",&b); i = 0; k = 0; while(i < a){ putchar('#'); i++; } putchar('\n'); while(k < b -2){ i = 0; putchar('#'); while(i < a-2){ putchar(' '); i++; } puts("#"); k++; } i = 0; while(i < a){ putchar('#'); i++; } return 0; }
横は#が一個多くね
単純に for 文のような while 文を書くってことなんじゃ?
597 :
585 :2006/06/16(金) 00:14:58
while(a--){while(b--){putchar('#');}putchar('\n');} whileの条件部でカウンタをデクリメントする技法に思い至って欲しい、 という出題意図と思われ。
あ、ごめんスコープの概念ぶっとばしてたわw
601 :
585 :2006/06/16(金) 00:20:06
putcharとかputsもまだ習ってないんです!! ごめんなさい;
あらかじめint temp が宣言されているとして temp=b; while(a--){while(b--){putchar('#');}putchar('\n');b=temp}
temp=b; while(a--){while(b--){printf("#");}printf("\n");b=temp;}
604 :
585 :2006/06/16(金) 00:26:44
tempってのも習ってないです。。
ただの変数名だよ
っていうか
>>603 を見て前後のコード(変数を宣言するとかscanfするとかreturnするとか)
を補えないようじゃまずいと思うんだが……
>>581 問題文見にくくてすみませんでした。それに後置記法についても自分も良く分からないので
説明できません。本当にゴメンナサイ。
でも問1、問2ありがとうございました。
あ、もしかして今までの授業、変数名はみんな n とか x とか意味の無い1,2文字の名前だったりしてた?
後置記法 =逆ポーランド記法
610 :
585 :2006/06/16(金) 00:33:10
611 :
デフォルトの名無しさん :2006/06/16(金) 00:34:28
後置記法の名前変わっても、意味の分からない607はポカーンしてると思うがな
ぐぐりやすくはなっただろ
wごめんなさい、そのとうりです。 でも情報ありがd。ってことでググってきます
おかげさまで、後置記法は少し理解できました。でもプログラミングは無理みたいですorz
615 :
585 :2006/06/16(金) 01:09:56
自分で考えてみましたけどやっぱりわかりません(´;ェ;`)
#include <stdio.h> int main(){ int a, b, temp; printf("tate = ");scanf("%d", &a); printf("yoko = ");scanf("%d", &b); temp = b; while(a--){while(b--){printf("#");}printf("\n");b=temp;} return 0; } 補っただけだけど
>>616 が出しちゃったけどせっかくだから出してみた
#include <stdio.h>
int main(void)
{
int a,b,i=0,j=0;
scanf("%d%d",&a,&b);
while (i<a){
while (j<b){
printf("#");
j++;
}
printf("\n");
j=0;
i++;
}
return 0;
}
正直スマンカッタ
619 :
デフォルトの名無しさん :2006/06/16(金) 01:59:37
aのb乗をzに格納したい場合ってどうすればいいんでしょうか? 言語はCです。
>>619 次からはテンプレ嫁
上(数学関数)でも下でも好きな方使え
#include <stdio.h>
#include <math.h>
int main(){
int b = 5;
double a = 1.3, z;
z = pow(a, b);
printf("%g\n", z);
z = 1.0;
while(b--)z *= a;
printf("%g\n", z);
}
糞コンパイラでもなければFPUの命令を直に読んでくれるから迷わずpow使え。 実装汁って課題ならしょうがないが…
622 :
デフォルトの名無しさん :2006/06/16(金) 02:42:47
こんな事書くと 自治厨とか言われるかもしれないですが よく「まだ・・・は習っていません」 ってのを質問者が回答者にレスしてるのをみるんですが (ま、実際、自分もそんなレスを返されたことあります) 自分はCもC++も独学で勉強した身で、「まだ・・・は習っていません」 ていう書き込みを見ると、内心「学生なんだろうから、参考書とかも安く 手に入るだろうし、まだ習ってない事柄を先に学べば後から講義で 出された宿題に対して、応用きくし単位の修得等も講義すっぽかして 友達に代返してもらって、宿題だけ友達から聞いて 先に習得した事柄をつかって、コメント書いて、って感じで宿題終わらせれば 評価もあがるだろうし、そんで空いた時間等を 遊ぶなりバイトするなりなんかに割り当てて(もちろん独学も進めて) たまに講義出て「ああ、いまこの段階の事をやってるのかって」って知って、 独学した部分に追いついてなかったら、すっぽかした分を補完し独学進めて」 ってな感じでやれば、楽だろうと思うし、知識も広がると思う。 だから「まだ・・・は習っていません」って言いたい場合は、「まだ習ってない事柄ですが その・・・について勉強してみます」って言った方が回答者も納得すると思う。 俺が大学当時のインターネットと言えばテレホーダイをNTTに申請して 20時からインターネット始めて、かつ(自分は電気電子工学科卒)電気電子関連 の資料なんて、ろくになかった。けど、今の時代プログラミング言語習得するのに ネットからでも結構資料はあると思う。 ま、結局言いたいのは「まだ・・・は習っていません」==「習うまで使いません」 ==「自ら知識の探求をする事はいたしません」って言ってるのと同じだと思うので 独学していきましょう。 (情報工学科って代返利くのかな?ログインすることで、出席取るのかな ま、しらねーや)
こんな事書くと 自治厨とか言われるかもしれないですが よく「まだ・・・は習っていません」 ってのを質問者が回答者にレスしてるのをみるんですが (ま、実際、自分もそんなレスを返されたことあります) 自分はCもC++も独学で勉強した身で、「まだ・・・は習っていません」 ていう書き込みを見ると、内心「学生なんだろうから、参考書とかも安く 手に入るだろうし、まだ習ってない事柄を先に学べば後から講義で 出された宿題に対して、応用きくし単位の修得等も講義すっぽかして 友達に代返してもらって、宿題だけ友達から聞いて 先に習得した事柄をつかって、コメント書いて、って感じで宿題終わらせれば 評価もあがるだろうし、そんで空いた時間等を 遊ぶなりバイトするなりなんかに割り当てて(もちろん独学も進めて) たまに講義出て「ああ、いまこの段階の事をやってるのかって」って知って、 独学した部分に追いついてなかったら、すっぽかした分を補完し独学進めて」 ってな感じでやれば、楽だろうと思うし、知識も広がると思う。 だから「まだ・・・は習っていません」って言いたい場合は、「まだ習ってない事柄ですが その・・・について勉強してみます」って言った方が回答者も納得すると思う。 俺が大学当時のインターネットと言えばテレホーダイをNTTに申請して 20時からインターネット始めて、かつ(自分は電気電子工学科卒)電気電子関連 の資料なんて、ろくになかった。けど、今の時代プログラミング言語習得するのに ネットからでも結構資料はあると思う。 ま、結局言いたいのは「まだ・・・は習っていません」==「習うまで使いません」 ==「自ら知識の探求をする事はいたしません」って言ってるのと同じだと思うので 独学していきましょう。 (情報工学科って代返利くのかな?ログインすることで、出席取るのかな ま、しらねーや)
宿題丸投げするくらいなんだから目立たないほうがいいだろ。 みんなと同じような無難な回答したいだけだよ。 そんなに勉強熱心なら、そもそもこんなとこに質問しないだろ。
それと、情報工学科って、なんかサイバーSFみたいな想像してる?w いたって普通ですから。教科書で勉強がデフォ。
626 :
619 :2006/06/16(金) 04:07:08
>>620 をコンパイルしようとするとなんかエラーが。。。。。。
とりあえずwhileでやりたいので、自分なりに下のように書いてみましたが、
論理エラーが出てしまいます。whileループ内が可笑しいのでしょうか。。。。
#include <stdio.h>
main(){
int a,b,c,y,z;
a=b=c=0;
z=y=1;
printf("数字を入力して下さい");
scanf("%d",&a);
printf("%dの何乗にしますか?",a);
scanf("%d",&b);
c=b;
while(--c){
y=a*a;
z=z*y;
}
printf("%dの%d乗=%d\n",a,b,z);
return 0;
}
[1] 授業単元:?
[2] 問題文(含コード&リンク):aのb乗をzへ格納するプログラムの作成
[3] 環境
[3.1] OS: FedoraCore4
[3.2] コンパイラ名とバージョン:gcc 4.0.2-8
[3.3] 言語:C
[4] 期限:なし
[5] その他の制限:出来ればループを使って
解答宣しくお願いします。
>>626 原因は最後の return 0; 。これをつけるなら int main() にするか
消すなら main() あるいは void main() でどぞ
>>626 っつか、さらに計算結果も不適切になるものもある。
不要かもしれんが0乗の対策も不十分。
もっと単純に書けばいいのに。
>>626 for文のほうがいいと思うんだけど(´・ω・`)
まあ置いときます
main(){
int a=0,b=0,c=0,z=0,t=0;
printf("数字を入力して下さい\n");
scanf("%d",&a);
printf("%dの何乗にしますか?\n",a);
scanf("%d",&b);
if(b==0) {printf("%dの%d乗=1\n",a,b); exit(-1);}
c=b;
t=a;
while(b-->0){ z=a; a=z*t;}
printf("%dの%d乗=%d\n",t,c,z);
}
z=1;でwhile内 z*=aのほうがよかった。tとか(゚听)イラネ、訂正
632 :
デフォルトの名無しさん :2006/06/16(金) 11:56:55
[1] 授業単元:プログラミング通論 [2] 問題文(含コード&リンク): 両方向リストを使って抽象データ型としてのリストを作ることにする。insert関数を書け。 ただし、位置pはちょうどその場所にある節点を指すこと(1つ後でも前でもない) listのデータ構造とinsert関数の頭書きは以下の通りである。 typedef struct node* link; typedef link list; typedef link position; struct node { elementtype element; struct node *next, *previous; }; void insert(list L, position p, elementype x) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C
633 :
632 :2006/06/16(金) 12:23:35
あと、typedef char elementtype; です
634 :
632 :2006/06/16(金) 12:58:24
まだまだ至らないところがありますが、これを改良する感じにしていただければ・・・ (おそらくLは用いないかと思われます) void insert(list L, position p, elementype x) { link n; n = (link)malloc(sizeof(*n)); n->element = x; p->previous->next = n; n->next = p; }
635 :
634 :2006/06/16(金) 13:26:42
解決しました。
636 :
デフォルトの名無しさん :2006/06/16(金) 15:27:01
[1] 授業単元:情報処理 [2] 問題文(含コード&リンク): フィボナッチ(Fibonacci)数列f(n)は, f(n)=f(n−1)+f(n−2),ただし,f(1)=f(0)=1 と定義される.この数列の第1 項から第l 項までの各値とそれらの和を計算するプログラムを作成せよ。 ただし,for ループ,while ループ,do-while ループは使用不可とする. また,各自が定義し,使用する関数については,それらのプロトタイプを必ず宣言すること. <入出力例> Please input number of terms:5 (l=5 の場合) fibonacci(0)= 1 (第1項) fibonacci(1)= 1 (第2項) fibonacci(2)= 2 (第3項) fibonacci(3)= 3 (第4項) fibonacci(4)= 5 (第5項) Sum of 5 terms:12 (第1項から第5項の和 [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:6/19 [5] その他の制限:よろしくおねがいします
>>636 #include <stdio.h>
int fibonacci(int n){
int r;
if(n == 0 || n == 1 )r = 1;
else r = fibonacci(n - 1) + fibonacci(n - 2);
return r;
}
int main(){
int i, n, tmp, sum = 0;
printf("Please input number of terms:");
scanf("%d", &n);
for(i = 0; i < n; i++){
printf("fibonacci(%d) = %d\n", i, tmp = fibonacci(i));
sum += tmp;
}
printf("Sum of %d terms:%d", n, sum);
return 0;
}
プロトタイプ宣言しなかったw #include <stdio.h> int fibonacci(int n); int main(){ int i, n, tmp, sum = 0; printf("Please input number of terms:"); scanf("%d", &n); for(i = 0; i < n; i++){printf("fibonacci(%d) = %d\n", i, tmp = fibonacci(i)); sum += tmp;} printf("Sum of %d terms:%d", n, sum); return 0; } int fibonacci(int n){ int r; if(n == 0 || n == 1 )r = 1; else r = fibonacci(n - 1) + fibonacci(n - 2); return r; }
forを使ってはいけません。
計算過程じゃ使ってないが… 出力もダメってか
じゃ再帰で #include<stdio.h> int fibonacci(int n); void putfibonacci(int i,int n,int *sum); int main(){ int l,sum=0; printf("Please input number of terms:"); scanf("%d",&l); putfibonacci(0,l,&sum); printf("Sum of %d terms:%d\n",l,sum); return 0; } int fibonacci(int n){ switch(n){ case 0: case 1: return 1; default: return fibonacci(n-1)+fibonacci(n-2); } } void putfibonacci(int i,int n,int *sum){ int f=fibonacci(i); *sum += f; printf("fibonacci(%d)= %d\n",i,f); if(i<n-1) putfibonacci(i+1,n,sum); else return; }
>>636 #include <stdio.h>
unsigned int fibonacci( unsigned int n );
unsigned int fibonacci_out( unsigned int n );
unsigned int fibonacci( unsigned int n )
{
if ( n <= 1 ) return 1; return fibonacci( n - 2 ) + fibonacci( n - 1 );
}
unsigned int fibonacci_out( unsigned int n )
{
unsigned int s = 0, r;
if ( n == 0 ) return 0;
s = fibonacci_out( n - 1 );
s += r = fibonacci( n - 1 );
printf( "fibonacci(%u)= %u\n", n - 1, r );
return s;
}
int main( void )
{
unsigned int l;
printf( "Please input number of terms:" );
scanf( "%u", &l );
printf( "Sum of %u terms:%u\n", l, fibonacci_out( l ) );
return 0;
}
上記のもので10を入れて結果を見ると・・・ どうしても最後は 143 になるね。1〜10までの和は55というのは分かっているとは思うが
って、第n項の和か、すまそ
645 :
デフォルトの名無しさん :2006/06/16(金) 16:51:14
>>642 あるぇ〜、トーマスだってバレバレなソースを貼っているのに
どうして自分のブログへのリンクを貼らないのぉ〜?
>>646 =トーマス
いい加減、必死になってきたな。お前のソースは分かりやすいから
ここに書き込む以上、どれがトーマスか、常に指摘してやるよw
トーマスって何?
そして釣りに反応してしゃしゃり出てきたバカが現れたとさw 2ch暦も浅いようだな、トーマスw
>>647 お前頭おかしーんじゃねーの?
自覚症状無いのか?病院いけよ。
>>651 反応して煽った時点でお前の方が重症だな。放置を知らないとはw
まぁ、コンパイルエラーを出さず、横長じゃない時点でトーマスじゃないって分かっているが コンパイルエラーについてどうこう言うと、まだお前はって言ってくるんだろう。 トーマスがバカだって証明されればそれで良い。トーマスに噛み付く粘着? そんなものどうでも良い。トーマスを擁護している香具師、お前痛すぎw どこの専門学校だよ?トーマスに可愛がられたければ、ブラックリスト入りしないように せいぜいがんばれよw
>>653 誰としゃべってんだ?
妄想もたいがいにしろ
専門学校在学中、あるいは卒業したものの仕事が無いニートでした
>>636 昔作ったフィボナッチ数列を求めるコードを持ってきてみた。
int fibonacci(int n){double r5=sqrt(5);return (n<3)?1:
(int)((pow((1.0+r5)/2.0,n)-pow((1.0-r5)/2.0,n))/r5+0.5);}
ここに置いてある「なっちありがとう」のコア部分。
http://newsplus.jp/~thomas/
>>656 反応するお前が低学歴に焦っているのが滲み出てますね・・・要するに
トーマスもトーマスに噛み付く奴も放置すれば良いのに、何度言ったらお前らは(ry
>>661 =
>>656 分かりやすい反応だなぁ、をいっ。もはやトーマスは関係ない。
こんなところで質問する奴はトーマスのエサ。食いつぶされても「何も問題ないっすよ?」
663 :
559 :2006/06/16(金) 17:51:29
皆様のおかげで自己解決することが出来ました。 ありがとうございましたm(_ _)m
>>662 病院いけ。俺に出来るアドバイスはただそれだけだ。
666 :
デフォルトの名無しさん :2006/06/16(金) 20:11:28
>>665 無駄レス乙。このスレに来るな。俺”が”お前”に”できるアドバイスはただそれだけだ。
日本語しっかり使えよ、在日。
「俺に出来るアドバイス」は正しい日本語だろ。 意味が曖昧だから良い言い方じゃないとは思うが。
>>667-668 すげー、ここって煽りたがり屋が簡単に釣れるんですねw
要するに人を馬鹿にしたい人が集まっているってことか
低俗なクズ共めがw
バカをバカにするのは正しい行為ですよ。
争わないでぇぇえ
高校の宿題で、パソコン甲子園の2005年度の予選問題を宿題にされた…。 俺には理解できない。 誰か学のある方教えて下さい。
673 :
デフォルトの名無しさん :2006/06/16(金) 20:52:44
予選問題 答えでググればでるんじゃないの? わからんけど
675 :
デフォルトの名無しさん :2006/06/16(金) 21:04:50
>>672 つか、テンプレ嫁
問題も書かずに教えろとか、聞く気あるのか?
>>673 プログラミング部門の2005年度の予選問題です。
>>674 ググったんだけど出て来なかったんだよなぁ〜。
サイト知ってたら教えて下さい。
678 :
677 :2006/06/16(金) 21:09:55
ミスった。 プログラミング部門の例題→2005年予想問題だった。orz
679 :
デフォルトの名無しさん :2006/06/16(金) 21:17:43
だった。orz
って知らんがな。問題文or問題文のあるサイトくらい教えてくれないと
>>676 >>673 の質問にも答えてないしな
680 :
679 :2006/06/16(金) 21:21:32
673の問題に相違ない
>>672 #include<stdio.h>
#include<stdlib.h>
#include<limits.h>
void dsc(int* a,size_t l){int t,max=INT_MIN;size_t i,p;if(l){for(i=0;i<l;i++)
if(a[i]>max){max=a[i];p=i;}t=a[0];a[0]=a[p];a[p]=t;dsc(&a[1],l-1);}}
int main(void){char tmp[100];int a[5];size_t i;for(i=0;i<5;i++){fgets(tmp,sizeof(tmp),stdin);
a[i]=atoi(tmp);}dsc(a,5);for(i=0;i<5;i++)printf("%d\n",a[i]);return 0;}
自慢する暇があれば、教えてあげればいいのに( ゚Д゚)y─┛~~
どうせなので前から順番にやってみてたら、16番の途中で2時間たった。
あっ、でもfor文つこてるけど・・・いや、何も問題ないっす(^^;
[1] 授業単元: 数値計算 [2] 問題文(含コード&リンク):sin(x~2)を0〜√(12π)まで台形則で数値積分 ただし、分点の数を8点から始め、倍々に増やしていくこと 言語:C 皆さんよろしくおねがいします。
#include <stdio.h> #include <stdlib.h> #include <math.h> #ifndef M_PI #define M_PI 3.14159265358979323846 #endif double func_y(double x){ return sin(pow(x,2)); } int main(void){ int i, j, n = 8; double *y, xa = 0.0, xb = sqrt(12 * M_PI), z = 0.0, h = 0.0, x, s, sold; while(1){ y = (double*)malloc(sizeof(double) * (n + 1));//配列確保 if(y == NULL){puts("Error"); return 1;} h = (xb - xa) / (double)n;//刻み計算 for(i = 0; i <= n; i++){ x = xa + h * (double)i;//関数値計算 y[i] = func_y(x); } for(i = 1; i < n; i++)z += 2.0 * y[i];//数値積分 if(n > 8)sold = s; s = h / 2.0 * (y[0] + z + y[n]); printf("Point = %d, Ans = %8.4lf\n", n, s);//表示 if(n > 8 && fabs(s - sold) < 1.0e-3)break; n *= 2; free(y); } return 0; } つ台形
void func(int* a); void func(int *a); これって、何か違うの?
694 :
692 :2006/06/17(土) 21:52:14
>>693 つまり、意味的には同義なのか。
C99では、どちらで定義されてるの?
規格でどちらの書き方が使われているかは興味ないが、 692の前者の書き方はC++使い、後者はC使いに多いと俺は思う。 (俺自身も初めは後者だったがC++を使っていくうちに前者になった)
os;windows xp コンパイラ; gcc 言語;c アメリカへの船便小包の郵便料金は、1000g まで1800 円、1000g を越え10000g までは1000g ごとに550 円 ずつの割増し、10000g を越え20000g まではさらに1000g ごとに350 円ずつの割増しになる。小包の重さ を読み込み、その郵便料金を計算するプログラムを作りなさい。ただし、船便小包の重量制限は20kg であ る。 (例: 3000g → 2900 円、3001g → 3450 円、20000g → 10250 ) お願いします 留年したくないです
>>696 #include<stdio.h>
#include<stdlib.h>
int main(){
int i, x, y;
char tmp[100];
fgets(tmp, sizeof(tmp), stdin);
for(i = 0; tmp[i] != NULL && tmp[i] != 'g'; i++);
tmp[i] = NULL;
x = atoi(tmp);
if(x > 20000){ puts("重すぎ"); return 1; }
printf("%d円\n", x <= 1000 ? 1800 :
x <= 10000 ? 1800 + ( y = (x - 1000) / 1000) * 550 + (x - 1000) % y * 550 :
6750 + (x - 10000) / 1000 * 350);
return 0;
}
> 20000g → 10250 本当? > さらに1000g ごとに350 円ずつの割増し じゃねの?
699 :
デフォルトの名無しさん :2006/06/19(月) 14:37:16
1] 授業単元:プログラミング [2] 問題文:初期値と交差を標準入力から入力し、その等差級数の1から10までの 要素の総和を出力するプログラムを書くただし、for文を用いて書く [3] 環境 [3.1] XP [3.2] gcc 3.4 [3.3] 言語:C [4] 今日中にお願いします [5] その他の制限:類題を見たことあるんですが forを用いて書く方法がわかりません><;
>>699 #include <stdio.h>
main() {
int i,b,c,a[10];
printf("書記値 > ");
scanf("%d",&b);
printf("黄 砂 > ");
scanf("%d",&c);
for(i=0; i<10; i++) {
a[i] = b+(c*i);
printf("%d ",a[i]);
}
}
>>699 >>700 は総和を書いてへんかった
#include <stdio.h>
main() {
int i,b,c,a[10],sum=0;
printf("書記値 > ");
scanf("%d",&b);
printf("黄 砂 > ");
scanf("%d",&c);
for(i=0; i<10; i++) {
a[i] = b+(c*i);
sum += a[i];
printf("%d ",a[i]);
}
printf("数列の総和 : %d \n",sum);
}
702 :
デフォルトの名無しさん :2006/06/19(月) 17:57:18
[1] 授業単元: プログラミングA [2] 問題文(含コード&リンク): 次のアルファベットのキーワードを入力して計算する関数電卓プログラムを作成しなさい sin cos tan arcsin arccos arctan ln log exp sqr rad deg end [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語:C [4] 期限: 6月21日 どなたか助けてください・・・・
南下前見た
>>699 #include <stdio.h>
int main(void)
{
double a,d;
printf("初項>");
scanf("%lf",&a);
printf("項差>");
scanf("%lf",&d);
printf("合計%lf\n",5*(2*a+9*d));
for(;0;)
return 0;
}
705 :
デフォルトの名無しさん :2006/06/19(月) 18:10:39
まじっすか!? このスレですか?
>>702 とりあえず、もともとあるものを使っちまえ。自分で定義して中身を作らんとあかんの?
math.hを忘れずに!検討を祈る!
707 :
702 :2006/06/19(月) 18:18:02
すいません言語はC++でした・・・
709 :
702 :2006/06/19(月) 18:53:42
ありがとうございます。 申し訳ありませんが入出力を変えるってどこをどのようにすればよろしいのでしょうか?
>>709 stdio.hをiostereamに変えて、printfやgetsなど使わず
cinやcoutを使え、ってことやがな。
puts("式をどーぞ : "); を、
cout << "式をどーぞ : " << endl; に直す、とかね。
711 :
702 :2006/06/20(火) 00:28:32
ありがとうございます!!やってみます
713 :
デフォルトの名無しさん :2006/06/20(火) 00:41:57
[1] 授業単元: 基本プログラム [2] 問題文(含コード&リンク): 1、3人で4種類のゲームを行ったときの得点をゲームごとにそれぞれ入力し、各人の得点を合計得点と次のような 表として表示するプログラムを作成しなさい ゲーム1 ゲーム2 ゲーム3 ゲーム4 合計 A君 10 40 7 28 85 B君 20 30 13 27 90 C君 5 40 11 29 85 ただし、表を表示する時に罫線は表示しなくてよい 【アルゴリズム】 1、ゲーム1の3人の得点を入力し、それぞれの値を記憶しておく 2、ゲーム2の3人の得点を入力し、それぞれの値を記憶しておく 3、ゲーム3の3人の得点を入力し、それぞれの値を記憶しておく 4、ゲーム4の3人の得点を入力し、それぞれの値を記憶しておく 5、3人それぞれの合計得点を計算 6、得点、合計を表にして表示する
714 :
デフォルトの名無しさん :2006/06/20(火) 00:42:41
ずれた…
>>692 ってJavaでも型とポインタのところで話が出るけど
int* aってのが一般的らしいよ
int *aでもいけるんだけど、定義したポインタそのものには違いはないから
キニスンナ
716 :
デフォルトの名無しさん :2006/06/20(火) 00:53:06
2、配列を用いてスタックを実現せよ 次のプログラムは、文字を入力してそれを順次スタックに積み、入力終了後、スタックから1文づつ取り出して 表示するプログラムである。下線を引いた空欄部分を埋め、プログラムをかんせいせよ。 #include<stdio.h> int stack(int,int); void main(){ int c; //スタックにEOF文字をいれる。取り出す時の終了マークとなる。 stack(1,EOF); //EODマークが入力されるまで、スタックに入力文字を積む。 while((c=getchar())!=EOF)__________; //スタックから文字を取り出す。EOFが取り出されたら終了。 while((c=stack(2,c))!=EOF)__________; //改行して画面を見やすくする。 putchar('\n'); } int stack(int a,int b){ //この変数と配列は、制御がmain関数に戻っても //値を保たなければならないので静的変数にする。 _________ int n=0, tab[1000]; switch(____){ //push動作 case 1: tab[n]=b;n++;return a; //pop動作 case 2: n--; return tab[n]; } //動作指定が間違っている場合EOFを返す。 return EOF; } 明日の正午までですよろしくおねがいします。
>>713 #include <stdio.h>
int main(void){
int game1[3],game2[3],game3[3],game4[3]={0,0,0},i;
double point[3];
char *name[]={"A","B","C"};
for (i=0;i<3;i++){
printf("game1[%s] > ",name[i]);
scanf("%d",&game1[i]);
point[i]+=game1[i];
}
for (i=0;i<3;i++){
printf("game2[%s] > ",name[i]);
scanf("%d",&game2[i]);
point[i]+=game2[i];
}
for (i=0;i<3;i++){
printf("game3[%s] > ",name[i]);
scanf("%d",&game3[i]);
point[i]+=game3[i];
}
for (i=0;i<3;i++){
printf("game4[%s] > ",name[i]);
scanf("%d",&game4[i]);
point[i]+=game4[i];
}
printf("\tgame1\tgame2\tgame3\tgame4\tsum\n");
for (i=0;i<3;i++){
printf("%s\t%5d\t%5d\t%5d\t%5d\t%5.0f\n",name[i],game1[i],game2[i],game3[i],game4[i],point[i]);
}return 0;}
719 :
c++ :2006/06/20(火) 01:43:23
#include<iostream> #include<string> using namespace std; int main(){ const int x_size = 5;//ゲーム数+1 const int y_size = 3;//人数 string alpha ="ABC";//ゲーム参加人 int temp; double** array = new double*[x_size]; for(int i=0;i <= x_size-1; i++ ) array[i] = new double[y_size]; for(int q=0;q<=3;q++){ cout << "ゲーム"<< q+1 << "の得点入力" << endl; for(int i=0;i<=2;i++)cin >> array[q][i];} for(int i=0;i<=y_size-1;i++){ temp = 0; for(int q=0;q<=x_size-2;q++)temp += array[q][i]; array[x_size-1][i] = temp;} for(int i=0;i<=x_size-1;i++){ if( i == x_size-1 ) cout << "合計"; else cout << "ゲーム" << i+1;} cout << endl; for(int i=0;i<=y_size-1;i++){ cout << alpha[i] << "君" << ""; for(int q=0;q<=x_size-1;q++)cout << array[q][i] << " "; cout << endl;} for(int i=0; i< x_size; ++i) delete[] array[i]; delete[] array; //領域の解放 return 0; }
720 :
719 :2006/06/20(火) 01:50:23
>>713 cout<<""みたいになっているのはタブ文字(\t)が本来入ってましたが
消えてしまいましたからです。ごめんなさい。
>>716 下線部だけ
while((c=getchar())!=EOF)stack(1,c);
while((c=stack(2,c))!=EOF)putchar(c);
static int n=0, tab[1000];
switch(a){
722 :
◆BWxurmpBU6 :2006/06/20(火) 16:07:45
[1] 授業単元: プログラミング技術3 [2] 問題文(含コード&リンク): 三角形の3頂点の座標、(x1,y1),(x2,y2),(x3,y3)を読み込んで3つの内角の角度θ1、θ2、θ3をdeg単位(°)で計算し、印字するプログラムを作成せよ。 但し、double型変数θ1、θ2、θ3へのポインタ変数とdouble型変数x1,y1,x2,y2,x3,y3を引数とする関数を作成し、main関数では同関数を呼び出すようにせよ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ gcc [3.3] 言語:C [4] 期限: 2006年6月21日の午後まで すみません、何度もやってみたんですができませんでした。 よろしくお願いします。
>>722 ウチの環境 VC6++ なんで違うかも知れないけど atan2() 関数って使える?
724 :
◆BWxurmpBU6 :2006/06/20(火) 16:48:58
>>723 すみません、atan()は使えるんですがatan2()というのは使えません。
>>724 #include <math.h>
#define pi() 3.1415926535897932
int deltadeg( double *r1, double *r2, double *r3, double x1, double y1, double x2, double y2, double x3, double y3 )
{
double a1, a2, a3;
if ( x1 == x2 && y1 == y2 ) return ( 0 );
if ( x2 == x3 && y2 == y3 ) return ( 0 );
if ( x3 == x1 && y3 == y1 ) return ( 0 );
a1 = ( x1 == x2 ? ( y2 < y1 ? -pi() : +pi() ) / 2.0 : atan( ( y2 - y1 ) / ( x2 - x1 ) ) ) * 360.0 / 2.0 / pi();
a2 = ( x2 == x3 ? ( y3 < y2 ? -pi() : +pi() ) / 2.0 : atan( ( y3 - y2 ) / ( x3 - x2 ) ) ) * 360.0 / 2.0 / pi();
a3 = ( x3 == x1 ? ( y1 < y3 ? -pi() : +pi() ) / 2.0 : atan( ( y1 - y3 ) / ( x1 - x3 ) ) ) * 360.0 / 2.0 / pi();
*r1 = a1 - a3; if ( *r1 < 0.0 ) *r1 = 360.0 + *r1; if ( *r1 > 180.0 ) *r1 = 360.0 - *r1;
*r2 = a2 - a1; if ( *r2 < 0.0 ) *r2 = 360.0 + *r2; if ( *r2 > 180.0 ) *r2 = 360.0 - *r2;
*r3 = a3 - a2; if ( *r3 < 0.0 ) *r3 = 360.0 + *r3; if ( *r3 > 180.0 ) *r3 = 360.0 - *r3;
return ( 1 );
}
int main( void )
{
double r1, r2, r3;
if ( deltadeg( &r1, &r2, &r3, 0.0, 0.0, 1.0, 0.0, 0.0, sqrt( 3.0 ) ) ) {
printf( "θ1 = %3.5f°\nθ2 = %3.5f°\nθ3 = %3.5f°\n", r1, r2, r3 );
} else {
printf( "三角形として正しくありません。\n" );
}
return ( 0 );
}
726 :
◆BWxurmpBU6 :2006/06/20(火) 21:38:46
>>725 x1〜x3、y1〜y3までコマンドラインでしていできるようにmain関数だけ以下のように変更しました。
int main( void )
{
double r1, r2, r3;
double x1,y1,x2,y2,x3,y3;
printf("x1=");scanf("%lf",&x1);printf("\n");
printf("y1=");scanf("%lf",&y1);printf("\n");
printf("x2=");scanf("%lf",&x2);printf("\n");
printf("y2=");scanf("%lf",&y2);printf("\n");
printf("x3=");scanf("%lf",&x3);printf("\n");
printf("y3=");scanf("%lf",&y3);printf("\n");
if ( deltadeg( &r1, &r2, &r3, x1, y1, x2, y2, x3, y3) ) {
printf( "θ1 = %3.5f°\nθ2 = %3.5f°\nθ3 = %3.5f°\n", r1, r2, r3 );
} else {
printf( "三角形として正しくありません。\n" );
}
return ( 0 );
}
しかし実行結果がおかしくなってしまいました。
実行結果
x1=0
y1=1
x2=5
y2=1
x3=2
y3=0
θ1 = 26.56505°
θ2 = 18.43495°
θ3 = 45.00000°
どうすればいいのでしょうか?
[1] 授業単元:C言語プログラム [2] 問題文 次の表は最近5試合における阪神タイガースの得点結果である。 日付 1 2 3 4 5 6 7 8 9 6/1 0 0 0 0 0 2 0 0 0 6/2 1 0 0 1 0 1 0 1 0 6/3 0 1 0 5 0 0 0 1 1 6/4 0 0 0 0 0 2 0 0 0 6/6 0 0 0 0 0 0 0 0 0 この表を score[5][9] の2次元配列に初期値として格納し、 以下の内容を答えるプログラムを作成せよ。 1試合ごとに合計得点を計算し、画面に出力せよ。 またこの5試合の平均得点を計算し、画面に出力せよ。 各イニング(1〜9回)別の平均得点を計算し、画面に出力せよ。 また計算した平均得点が最大のイニング(回)を画面に出力せよ。 【ヒント】2次元配列の要素を参照する‥多重ループを使う [3] 環境 [3.1] OS: (Windows xp [3.2] visual studio2003 [3.3] C 4]期限: ([2006年6月21日12:00まで] [5] 配列、ループ
728 :
どなたかお願いします。 :2006/06/20(火) 22:37:11
[1] 授業単元: コンピュータ・プログラミング3 [2] 問題文(含コード&リンク): ニュートン法によりx軸と関数fの交点を求め、間に囲まれた面積を 数値積分により求めよ。 交点のx座標から数値積分を行う部分は作れました。 そのため、交点が複数個あるときに下のプログラムを活用して解を求め、 解(重解は1つの解とする)だけ別の配列に入れる形を考えていますが、 自力では上手くいきませんでした。 [3] 環境 [3.1] OS: mac [3.2] コンパイラ名とバージョン: x code [3.3] 言語: C [4] 期限: 2006年06月22日17:00まで [5] その他の制限: 特になし よろしければお願いします。
730 :
729 :2006/06/20(火) 22:41:09
入れ忘れました。このようなニュートン法を活用したいと思います。 #define KMAX 30 void eval(float x,float *f,float *df){ *f=x*x-5*x+4; *df=2*x-5; return; } main(){ int k; float f,df,d; float x=0.0,eps=1.0e-6; for(k=0;k<KMAX;k++){ eval(x,&f,&df); d=-f/df; x+=d; if(fabs(f)<eps) break; } }
//最後のところ修正よろしく. else { cout << "残り"; if( ticketS > 0 ) cout << "S:" << ticketS << "枚"; if( ticketA > 0 ){ if( ticketS > 0 )cout << "、"; cout << "A:" << ticketA << "枚"; } if( ticketB > 0 ){ if( ticketS > 0 || ticketA > 0 )cout << "、"; cout << "B:" << ticketB << "枚" ; } cout<< endl; }
[1] 授業単元:C言語プログラム [2] 問題文 次の処理を行うプログラムを作成せよ。 キーボードから文字列を入力し、char型の配列strに格納する。 格納された文字列の長さを数え、変数nに格納し、nの値を画面に出力する。 格納された文字列の真ん中に、空白(' ')を1つ挿入し、strを画面に出力する。 格納された文字列の最初の1文字を削除し、strを画面に出力する。 ただし、標準関数 string.h は利用しないものとする。 [3] 環境 [3.1] OS: (Windows xp [3.2] visual studio2003 [3.3] C 4]期限: ([2006年6月21日12:00まで] [5] 配列、ループ
737 :
デフォルトの名無しさん :2006/06/20(火) 23:45:46
[1]授業単元:C言語プログラミング [2]問題文:○×ゲームを作成しなさい。3回試合をし、先に2勝した方を 勝ちとしなさい。 [3.1]Windows [3.2]visual C++ [3.3]C [4]2006年6月23日 うまく数字を○に変えることができなくて苦戦してます。 ご協力お願いします
>>727 俺もやってみた
#include <stdio.h>
int main(void)
{
int score[5][9]={{0,0,0,0,0,2,0,0,0},{1,0,0,1,0,1,0,1,0}
,{0,1,0,5,0,0,0,1,1},{0,0,0,0,0,2,0,0,0},{0,0,0,0,0,0,0,0,0}},i,j,sum,max_average=0;
double average,average2[9]={0,0,0,0,0,0,0,0,0};
for (i=0,average=0.0;i<5;i++){
for (j=0,sum=0;j<9;j++){
sum+=score[i][j];
average+=score[i][j];
average2[j]+=score[i][j];
}
printf("第%d試合[%d]点\n",i+1,sum);
}
puts("------------------------------");
printf("平均---%.0f\n",average/5);
puts("------------------------------");
for (i=0;i<9;i++){
if (average2[i]/5 > average2[max_average]/5){
max_average=i;
}
printf("%dイニング平均---%.0f\n",i+1,average2[i]/5);
}
puts("------------------------------");
printf("最大イニング---%d回\n",max_average+1);
return 0;}
>>736 スペースを入れる「真ん中」って、文字数が奇数だとどっちに
いれたらいいのかわかんない。
とりあえず作ったよ。
#include<stdio.h>
int mylen(const char *s);
void insertspace(char *s);
void topdelete(char *s);
int main(void) {
char str[256];
int n;
scanf("%s", str);
n = mylen(str);
printf("%d\n", n);
insertspace(str);
printf("%s\n", str);
topdelete(str);
printf("%s\n", str);
return 0;
}
//続く
int mylen(const char *s) { int i; for (i = 0; s[i] != '\0'; i++); return i; } void insertspace(char *s) { int i, n; n = mylen(s); for(i = n; i > 0; i--) { s[i + 1] = s[i]; if (i < n / 2) { s[i + 1] = ' '; break; } } } void topdelete(char *s) { int i; for (i = 0; s[i] != '\0'; i++) { s[i] = s[i + 1]; } }
>格納された文字列の最初の1文字を削除し、strを画面に出力する。 これをどうしたらいいのか分からんかった キーボードから入力したのを加工するのか、スペースを入れた奴を加工するのか・・・
743 :
デフォルトの名無しさん :2006/06/21(水) 00:22:25
>>735 ありがとうございます。自分でチェックしてみたところ、63,64,67行が間違ってるとでます・・・自分じゃ何がおかしいのかわからないのでよかったら訂正お願いします。
744 :
デフォルトの名無しさん :2006/06/21(水) 00:38:14
745 :
デフォルトの名無しさん :2006/06/21(水) 00:42:29
二次元配列だったら、以下のプログラム片みたいなのをを縦、横、斜めをそれぞれ作って、 これをそれぞれのプレイヤーの置いた後に動かせばいいと思うけど……。 駄目ですかね? int stone = 0; int myID; //自分の置く石 int enemyID; //敵の置く石 for(int i=0; i<=x-1;i++){ for(int q=0;q<=y-1;q++){ if(array[i][q] == myID) stone++; else if( array[i][q] == enemyID ) stone--; } if(stone >= 3){ //勝ちの処理 } else if( stone <= -3 ){ //負けの処理 } stone = 0;
>>745 何を解けばよいのかさっぱりわかりません。
初心者でもわかるように問題を書いてください。
748 :
>>746 :2006/06/21(水) 01:13:25
ここに出てくるxとyは何を表してるんですか? 理解できなくてごめんなさい…
>>748 ○×ゲームの、縦(x)と横(y)のサイズのことだろう。
もっとも、それならi<=x-1 じゃなくて、
i < x とかいたほうがいいと思うけど。
>>746 はできたところまでソースを晒してみては?
方向性は間違っていないと思うんですが。
750 :
745 他に何かあれば聞いてください :2006/06/21(水) 01:21:52
>>747 大変申し訳ありませんでした。
下のURLをstatic struct personal data[4]
={{"国語の成績",29点},{"英語の成績",41点},{"数学の成績",22点},{"社会の成績",31点}};
みたいにして表示するプログラムです。
データは最初からプログラム内にあってscanfする必要はありません。
751 :
>>749 :2006/06/21(水) 01:28:15
ごめんなさい…うまくいきませんでした…僕の作ったソースが下のなんですけど どこを改善すべきでしょうか… #include<stdio.h> #define o 1; #define x 2; int main(void){ int i,j; char a[3][3]={{'A','B','C'},{'D','E','F'},{'G','H','I'}}; int m,n; printf("\n\n"); /*3*3表*/ printf("|%c|%c|%c|\n",a[0][0],a[0][1],a[0][2]); printf("--------\n"); printf("|%c|%c|%c|\n",a[1][0],a[1][1],a[1][2]); printf("--------\n"); printf("|%c|%c|%c|\n",a[2][0],a[2][1],a[2][2]); i=0; do{ printf("先手○の番です\n"); scanf("%d",&m);
752 :
>>748続き :2006/06/21(水) 01:30:05
switch(m){ case 1: a[2][0]='o'; printf("o",a[2][0]); break; case 2: a[2][1]='o'; break; case 3: a[2][2]='o'; break; case 4: a[1][0]='o'; break; case 5: a[1][1]='o'; break; case 6: a[1][2]='o'; break; case 7: a[0][0]='o'; break; case 8: a[0][1]='o'; break; case 9: a[0][2]='o'; break; }
753 :
>>748続き :2006/06/21(水) 01:31:05
printf("\n"); /*3*3表*/ printf("|%c|%c|%c|\n",a[0][0],a[0][1],a[0][2]); printf(" ------------\n"); printf("|%c|%c|%c|\n",a[1][0],a[1][1],a[1][2]); printf(" ------------\n"); printf("|%c|%c|%c|\n",a[2][0],a[2][1],a[2][2]);
754 :
>>748続き :2006/06/21(水) 01:32:59
printf("後手×の番です。\n"); printf("\n\n"); scanf("%d",&n); switch(n){ case 1: a[2][0]="x"; break; case 2: a[2][1]='x'; break; case 3: a[2][2]='x'; break; case 4: a[1][0]='x'; break; case 5: a[1][1]='x'; break; case 6: a[1][2]='x'; break;
755 :
>>748続き :2006/06/21(水) 01:33:35
case 7: a[0][0]='x'; break; case 8: a[0][1]='x'; break; case 9: a[0][2]='x'; break; } printf("%d\n",q); /*3*3表*/ printf("|%c|%c|%c|\n",a[0][0],a[0][1],a[0][2]); printf(" --------\n"); printf("|%c|%c|%c|\n",a[1][0],a[1][1],a[1][2]); printf(" --------\n"); printf("|%c|%c|%c|\n",a[2][0],a[2][1],a[2][2]); i++; }while(i<9);
短くしてみた。重複をはじく関数と勝利判定はあとで。 #include<stdio.h> int main(void){ char a[3][3]={{'A','B','C'},{'D','E','F'},{'G','H','I'}}; int m,n; char man = 'o'; while(1) { printf("|%c|%c|%c|\n",a[0][0],a[0][1],a[0][2]); printf("--------\n"); printf("|%c|%c|%c|\n",a[1][0],a[1][1],a[1][2]); printf("--------\n"); printf("|%c|%c|%c|\n",a[2][0],a[2][1],a[2][2]); printf("%cの番です\n", man); scanf("%d %d",&m, &n); a[m][n] = man; putchar('\n'); if(man == 'o') { man = 'x'; } else { man = 'o'; } } return 0; }
758 :
>>756 :2006/06/21(水) 02:01:29
アップしました!! おねがいします!!!
[1] 授業単元: プログラミング1 [2] 問題文(含コード&リンク): あらかじめ作成してある二つテキストファイルを読み込み一つのテキストファイルにまとめるプログラム [3] 環境 [3.1] OS:Linux [3.2] コンパイラ gcc [3.3] 言語:C [4] 期限: 6/23 一つにまとめることはできたのですが、txt内の文字が()内のものだとしたとき in1.txt( aa bb) in2.txt( xx yy) out.txt( aa bbxx← yy) こんな感じでつながってしまうのですが、何を使えばいいでしょうか?
改行
762 :
>>759 :2006/06/21(水) 02:26:00
>>760 テキストファイルって普通最後に改行が入るから、何もしなくていいよ。
まぁ完璧を期すなら最後のバイトが改行コードかどうか調べて、
改行コードを付加する必要があるが。
[1] 授業単元:C言語プログラム [2] 問題文 次の処理を行うプログラムを作成せよ。 キーボードから文字列を入力し、char型の配列strに格納する。 格納された文字列の長さを数え、変数nに格納し、nの値を画面に出力する。 格納された文字列の真ん中に、空白(' ')を1つ挿入し、strを画面に出力する。 格納された文字列の最初の1文字を削除し、strを画面に出力する。 ただし、標準関数 string.h は利用しないものとする。 [3] 環境 [3.1] OS: (Windows xp [3.2] visual studio2003 [3.3] C 4]期限: ([2006年6月21日12:00まで] [5] 配列、ループ お願いします
768 :
>>763 :2006/06/21(水) 08:26:12
どうもありがとうございました。 ほんと助かりました!!
769 :
デフォルトの名無しさん :2006/06/21(水) 08:57:31
>>767 揚げ足取るようですまんが、strlenはstring.hの関数なんだが・・・。
>ただし、標準関数 string.h は利用しないものとする。
と書いてある。
strlenを使用しないとすれば
while(1)
{
if(str[count] == '\0' )
break;
count++;
}
みたいなルーチンにしてCountとcoutやprintfですればいいと思う。
770 :
>>763 :2006/06/21(水) 09:11:53
[1] 授業単元:C言語プログラム [2] 問題文 次の表は、京都市の区ごとの人口と面積である。 区名 人口(人) 面積(平方キロメートル) 北区 123,874 94.92 上京区 83,285 7.11 左京区 169,365 246.88 中京区 102,085 7.38 東山区 42,137 7.46 山科区 136,292 28.78 下京区 75,907 6.82 南区 98,186 15.78 右京区 202,484 291.95 西京区 154,648 59.20 伏見区 285,392 61.62 以下の記述を参考に、コードを作成しなさい。 これらの情報を格納する構造体 struct division を宣言する。 struct division { char name[20]; int count; double area; } struct division型の配列 kyoto[11]を用意し、 初期値として表のデータを格納する。 入力した構造体の配列を使って、以下の情報を出力する。 人口が最大の区と最小の区の、名前と人口。 面積が最大の区と最小の区の、名前と面積。 人口密度が最大の区と最小の区の、名前と人口密度。 [3] 環境 [3.1] OS: (Windows xp [3.2] visual studio2003 [3.3] C 4]期限: ([2006年6月28日12:00まで] [5] 配列、ループ,ポインタ
772 :
デフォルトの名無しさん :2006/06/21(水) 09:50:31
[1] 授業単元: C言語入門 [2] 1/nΣΣ(内積)の二乗 を計算せよ。 まずベクトルを読み込むのにsscanfを使用せよ [3] [3.1] Linuxfedora core4 [3.2] gcc [3.3] 言語: (C [4] 期限: 2006-6-23
773 :
デフォルトの名無しさん :2006/06/21(水) 10:06:35
[1] 授業単元:プログラム技法 [2] 問題文 1、各データ型(char,int,float,double)の変数とポインタ変数をそれぞれ宣言し、各データ型変数のアドレスを同じデータ型の ポインタ変数に代入した上で、各データ型変数とポインタ変数の内容と各変数アドレスを表示せよ。ただし、同じ値と思われる ものを一行で表示する。 2、char a[9]={65,66,69,70,71,72,73,0},*p;と宣言し、p=&a[4];とすると、文字配列aの各要素のアドレスとポインタ変数pの内容 を表示し、また、++*p,(*p)++,--*p,(*p)--の値も表示せよ。この時、括弧をつけない場合の*p++,*p--の結果も表示して確認する。 3、int a[9]={10,15,20,25,30,35,40,45,50},*p;を宣言し、p=&a[4];文の後に、p++,++p,--p,p--の各実行文を実行した場合、*p の結果を出力せよ。また、p=&a[0];文の後に、*(p+1),*(p+2),*(a+1),*(a+2)の値を出力せよ。 4、文字列の長さを求める標準ライブラリ関数strlen()の自作版関数int mystrlen(char *)を作成せよ。 [3] 環境 [3.1] OS: windowsXP [3.2] cygwin [3.3] C言語 [4]期限 今日の午後12時までです。よろしくお願いします。
>>726 ゴメン、ゴメン
関数を修正
int deltadeg( double *r1, double *r2, double *r3, double x1, double y1, double x2, double y2, double x3, double y3 )
{
double a1, a2, a3;
if ( x1 == x2 && y1 == y2 ) return ( 0 );
if ( x2 == x3 && y2 == y3 ) return ( 0 );
if ( x3 == x1 && y3 == y1 ) return ( 0 );
a1 = ( x1 == x2 ? ( y2 < y1 ? -90.0 : +90.0 ) : atan( ( y2 - y1 ) / ( x2 - x1 ) ) * 360.0 / 2.0 / pi() ); if ( x2 < x1 ) a1 = a1 + 180.0;
a2 = ( x2 == x3 ? ( y3 < y2 ? -90.0 : +90.0 ) : atan( ( y3 - y2 ) / ( x3 - x2 ) ) * 360.0 / 2.0 / pi() ); if ( x3 < x2 ) a2 = a2 + 180.0;
a3 = ( x3 == x1 ? ( y1 < y3 ? -90.0 : +90.0 ) : atan( ( y1 - y3 ) / ( x1 - x3 ) ) * 360.0 / 2.0 / pi() ); if ( x1 < x3 ) a3 = a3 + 180.0;
*r1 = a3 - a1 - 180.0;
while ( *r1 < 0.0 ) *r1 = 360.0 + *r1;
if ( *r1 > 180.0 ) *r1 = 360.0 - *r1;
*r2 = a1 - a2 - 180.0;
while ( *r2 < 0.0 ) *r2 = 360.0 + *r2;
if ( *r2 > 180.0 ) *r2 = 360.0 - *r2;
*r3 = a2 - a3 - 180.0;
while ( *r3 < 0.0 ) *r3 = 360.0 + *r3;
if ( *r3 > 180.0 ) *r3 = 360.0 - *r3;
return ( 1 );
}
>>771 int main( void )
{
struct division {
char name[ 20 ];
int count;
double area;
};
struct division kyoto[ 11 ] = { { "北区", 123874, 94.92 }, { "上京区", 83285, 7.11 }, { "左京区", 169365, 246.88 },
{ "中京区", 102085, 7.38 }, { "東山区", 42137, 7.46 }, { "山科区", 136292, 28.78 }, { "下京区", 75907, 6.82 },
{ "南区", 98186, 15.78 }, { "右京区", 202484, 291.95 }, { "西京区", 154648, 59.20 }, { "伏見区", 285392, 61.62 } };
struct division *max, *min; int i;
for ( max = min = kyoto, i = 1; i < 11; i++ ) {
if ( max->count < kyoto[ i ].count ) max = &kyoto[ i ];
if ( min->count > kyoto[ i ].count ) min = &kyoto[ i ];
}
printf( "count max: %s %d\n", max->name, max->count );
printf( "count min: %s %d\n", min->name, min->count );
for ( max = min = kyoto, i = 1; i < 11; i++ ) {
if ( max->area < kyoto[ i ].area ) max = &kyoto[ i ];
if ( min->area > kyoto[ i ].area ) min = &kyoto[ i ];
}
printf( "count max: %s %f\n", max->name, max->area );
printf( "count min: %s %f\n", min->name, min->area );
for ( max = min = kyoto, i = 1; i < 11; i++ ) {
if ( ( double )max->count / max->area < ( double )kyoto[ i ].count / kyoto[ i ].area ) max = &kyoto[ i ];
if ( ( double )min->count / min->area > ( double )kyoto[ i ].count / kyoto[ i ].area ) min = &kyoto[ i ];
}
printf( "count max: %s %f\n", max->name, ( double )max->count / max->area );
printf( "count min: %s %f\n", min->name, ( double )min->count / min->area );
return ( 0 ); }
[1] 授業単元:C言語プログラム [2] 問題文 次の処理を行うプログラムを作成しなさい。 char型の配列strを用意し、キーボードから英数字の文字列を入力する。 格納された文字列に、アルファベットの大文字がある場合、すべて小文字に変換する。 文字列strを画面に出力する。 [3] 環境 [3.1] OS: (Windows xp [3.2] visual studio2003 [3.3] C 4]期限: ([2006年6月28日12:00まで] [5] 配列、ループ,ポインタ
>>776 #include<stdio.h>
#include<stdlib.h>
int main(void){int i=0;char str[100];fgets(str,sizeof(str),stdin);
while(str[i]!='\0')str[i]=tolower(str[i]);printf("%s",str);return 0;}
こんな人助けをしてくれる掲示板があるとは知りませんでした。 早速ですがお願いします。 10進の整数を入力し、これをn進(1<n<10)の整数に変換するプログラム。 例えば94を7進数に変換する場合、94,7 と入力すると163が出るようなやつです。 環境は C++ です。 どうやら94/7=13…3,13/7=1…6,・・・・・ と商が0になるまで続け、出てきたあまりを配列をつかって、逆順に表示できでば 良いらしいのですが、初心者にはつらいところです。よろしくお願いします。
[1] 授業単元:C言語プログラム [2] 問題文 円周率を求めるプログラムをwhile文、又はdo〜while文を用いて作成しなさい。 円周率の計算方法は次の式に基づきます。 tanπ/4=1 π=4arctan1 arctan1=1-1/3+1/5-1/7+・・=倍1/(2i-1)}(-1)のi+1乗 計算は無限に続くが、1/(2i+1)の値は次第に小さくなるので、この値が プログラム中で指定した未満になったら計算を終了する。精度は#defineで 定数として定義してください。 [3.1] OS: windowsxp [4]期限: 今日の午後6時まで。
>>780 #include<stdio.h>
#define EP 0.000000001
int main(void){double a,p=0.0;int i=0;
while((a=(1.0/(2.0*(double)i+1.0)))>EP){p+=a*((i&1)?-1.0:1.0);i++;}
printf("%f\n", p*4.0);return 0;}
>>778 #include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[100],str[100];int n,b;fgets(tmp,sizeof(tmp),stdin);
sscanf(tmp,"%d,%d",&n,&b);itoa(n,str,b);printf("%s\n",str);return 0;}
トーマス氏が使っているコンパイラってなんすか?
VC.NET2003
ども。これといって変なクセのあるコンパイラではないようですな・・・
788 :
デフォルトの名無しさん :2006/06/21(水) 18:50:08
キーボードから文字列(英数)を入力し、 アルファベットであれば一文字アルファベット順を先にずらす。但し、zについては、aにする。 数字であれば、1つ先の数字にする。但し、9については0にする。 whileとifを使ったC言語のものを教えてください
>>788 # include <stdio.h>
# include <string.h>
int main(void)
{
int c;
const char *lower = "abcdefghijklmnopqrstuvwxyza";
const char *upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZA";
const char *digit = "01234567890";
while((c = getchar()) != EOF)
{
char *p;
if((p = strchr(lower, c)) || (p = strchr(upper, c)) || (p = strchr(digit, c)))
putchar(p[1]);
else
putchar(c);
}
return 0;
}
>>790 どんなソースにそのヘッダを引用したの?
792 :
763 :2006/06/21(水) 23:51:39
>>770 昼間2ちゃんやってる暇ないからご指名されても困るがね・・・
今からでもいいならやってみるかな。int型のgame1、game2、
ていうのが意味不明だけどこれは関数かな?
793 :
763 :2006/06/22(木) 00:40:02
794 :
>>763 :2006/06/22(木) 01:22:45
返信遅れてすません あと迷惑かけてごめんなさい… このソース完璧です!!僕の理想そのままです!!! ありがとうございましたヽ(´▽`)/ ほんと助かりました!!!!!! ホントありがとうございました!!!!!!!!
795 :
772 :2006/06/22(木) 03:06:53
誰かできる方おられないでしょうか? sscanf,for ,ポインターの知識を使って作るようなのですが。
>>772 =795
あからさまに情報が足りてない、ってことは自分で分からない?
nは何なのか、2つのΣは何を動かして何を足すのか、内積を取るベクトルの次元はいくつか。
最低限これくらいは情報を出さないと。
797 :
よろしくお願いします :2006/06/22(木) 14:27:21
[2] 問題文(含コード&リンク): 変数x,y,zを使いscanfで各教科の点数を入力→ {{"数学",x}, {"国語",y}, {"英語",z}}; うえのx,y,zに値が入力され { printf("\n%s %d %d",matsu[i].name,matsu[i].kokugo,matsu[i].eigo); } で表示されるプログラムです [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン: Borland c [3.3] 言語: C [4] 期限: 今週中 [5] その他の制限: 基本中の基本です 以下は、こんな感じでしてほしいと思い作りました。文法がだめだめですけど… #include<stdio.h> #include<conio.h> int i; struct seiseki { char *name; int kokugo; int eigo; }; printf("%d人目のαの成績を入力\n",i+1);scanf("%f",&man[i].x); printf("%d人目のβの成績を入力\n",i+1);scanf("%f",&man[i].y); printf("%d人目のγの成績を入力\n",i+1);scanf("%f",&man[i].z); void main(void) { static struct seiseki matsu[5]= {{"数学",x},{"国語",y},{"英語",z}}; for(i=0;i<3;i++) { printf("\n%s %d %d",matsu[i].name,matsu[i].kokugo,matsu[i].eigo); } getchar(); getchar(); }
>>797 #include<stdio.h>
struct seiseki{
char name[20];
int sugaku;
int kokugo;
int eigo;
};
int main(void)
{
int i;
struct seiseki matsu[3];
for(i = 0; i < sizeof(matsu) / sizeof(matsu[0]); i++){
printf("%d人目の名前を入力\n", i + 1);scanf("%s", matsu[i].name);
printf("%d人目のαの成績を入力\n", i + 1);scanf("%d", &matsu[i].sugaku);
printf("%d人目のβの成績を入力\n", i + 1);scanf("%d", &matsu[i].kokugo);
printf("%d人目のγの成績を入力\n", i + 1);scanf("%d", &matsu[i].eigo);
}
for(i = 0; i < sizeof(matsu) / sizeof(matsu[0]); i++)
printf("%s %d %d %d\n", matsu[i].name, matsu[i].sugaku, matsu[i].kokugo, matsu[i].eigo);
}
想像で書いてみた
800 :
778 :2006/06/22(木) 15:05:31
多くの解答ありがとうございました。 テンプレも読まずに書き込んでしまい申し訳ありませんでした。 次回は気をつけます。
801 :
デフォルトの名無しさん :2006/06/22(木) 15:16:21
[1] 授業単元:演習 [2] 問題文(含コード&リンク): char alph[20]; で定義した配列に乱数を用いて作成した20個のでたらめなアルファベットを記入したとき、 alph[ ] の文字列と alph[ ] の各文字をアルファベット順に並べ替えた結果を表示せよ。文字は全て小文字とする。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:できればすぐ! [5] その他の制限:特にありません。 宜しくお願いします。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int cmp(const void *a, const void *b){
return (*(const char*)a - *(const char*)b);
}
int main(){
char alph[20];
int i;
srand((unsigned) time(NULL));
for(i = 0; i < 20; i++)
alph[i] = 'a' + rand() % 25;
for(i = 0; i < 20; i++)putchar(alph[i]);
puts("");
qsort(alph, 20, sizeof(char), cmp);
for(i = 0; i < 20; i++)putchar(alph[i]);
return 0;
}
>>801
803 :
デフォルトの名無しさん :2006/06/22(木) 15:44:48
はえええええええええええええ
>>802 さんありがとうございます!
804 :
797 :2006/06/22(木) 15:52:13
>>799 コンパイルできました!!ありがとうございます!
想像でエラー0とは凄いですね!尊敬します!!
そーゆー意味じゃないけど、まあいいか
今日も元気に引きこもりニート君が昼間っから解答に精を出してるみたいだね。 いや、ごくろうごくろう
>>806 そういうお前は専門学校から帰ってきた、回答者のソースも解析、理解できないクズだろ
>>807 君
>>802 ?精進しようね。
802.c: (in function cmp)
802.c:6:8: Return value type char does not match declared type int:
(*(const char *)a - *(const char *)b)
To make char and int types equivalent, use +charint.
802.c: (in function main)
802.c:14:11: Incompatible types for + (char, int): 'a' + rand() % 25
A character constant is used as an int. Use +charintliteral to allow
character constants to be used as ints. (This is safe since the actual type
of a char constant is int.)
802.c:15:24: Return value (type int) ignored: putchar(alph[i])
Result returned by function call is not used. If this is intended, can cast
result to (void) to eliminate message. (Use -retvalint to inhibit warning)
802.c:16:1: Return value (type int) ignored: puts("")
802.c:18:24: Return value (type int) ignored: putchar(alph[i])
802.c:5:5: Function exported but not used outside 802: cmp
A declaration is exported, but not used outside this module. Declaration can
use static qualifier. (Use -exportlocal to inhibit warning)
802.c:7:1: Definition of cmp
Finished checking --- 6 code warnings
>>808 あとここ、まともなレスがもらえるスレじゃないからw
丸投げに対して即席で考えた生ぬるいソースを出す奴もいるよ?
少なくとも俺はそんなことしないし、俺はうpロダを使っているよ
うははは、やっぱリロードしてた。俺もしてたけど。
まぁ
>>808 の真意はわからないだろうなぁ。永遠に。
じゃ、頑張って解答してあげて。
>>802 はBCCでコンパイルできたけど、いちいち他人のソースにケチつけるスレでもないから
俺は指摘はしないよ。ただ、指摘した
>>808 だって修正したのを出してないんじゃ
コンパイラが出したエラーメッセージを分かってないんじゃ・・・
コンパイラって・・・
まぁ俺は「解析、理解できないクズ」って言われちゃったから、
>>802 を題材に、その奥底に潜む
問題点を指摘してやっただけなんだけどw
ぐちぐち他人の批判をするくらいなら、訂正するか もっと上を行ったソースを出せば?誰かさんみたく、口先だけで 相手を煽るだけ、結局「自分も」分かってないのがオチなんじゃね?
誰かさんって、君のことでしょ?
>>815 少なくとも
>>808 の内容はわかるよな。まぁ、俺が言いたかったのはその先のことなんだが。
答えは教えないよ。自分で考えてね。じゃ。
解析はしてないだろとオモタ
819 :
デフォルトの名無しさん :2006/06/22(木) 17:19:33
ねぇねぇ、お父さん、他人のソースをコンパイルして
エラーメッセージが出たのを理由に、自分はよくわかっていなくても
エラーメッセージを突き出しただけで自分の方が優位だと勘違いしている
痛い低学歴
>>806 =
>>808 がいるよ
可愛いねぇ〜 (可愛いねぇ〜)
あっ、自分が指摘したエラーメッセージが何なのか理解しているか
修正したソースを出さないから、結局お前もわかってないじゃんと言われて
焦ってるね
可愛いねぇ〜 (可愛いねぇ〜)
820 :
デフォルトの名無しさん :2006/06/22(木) 17:21:05
>>817 >答えは教えないよ。自分で考えてね。じゃ
いや、分かってるからこっちは教えてもらわなくても結構だよ?
少なくとも俺が書いたソースじゃないし。
何が言いたいの?結局、お前が何をしたら良いかわかってないんじゃん。
他人のソースをどうこう言うなら、目的を果たせるだけでも良いから
自分なりのできたソースを出してみろよ、専門学校生w
またおきまりのやり取りだな。
このスレに限らず宿題スレの住人は、自分のコードの指摘を受けるのを怖がりすぎてる。
タダで指摘してくれる人なんてめったにいないぞ?
上のやり取りでも
>>817 が指摘しようとした内容は結局わからずじまい。成長するチャンスを一つ失ったわけだ。
俺にも
>>817 がいいたかったことがおぼろげながら分かるが、正解かどうかわからないので発表はしない・・・
822 :
821 :2006/06/22(木) 17:24:32
>>819 いやあれコンパイラの出力じゃなくて、どうみてもlint系ツールの出力だから
論より証拠じゃねとオモタ
824 :
デフォルトの名無しさん :2006/06/22(木) 17:35:11
>>808 は得意気に自分が使っているコンパイラが出したエラーメッセージを出しただけで
精進しようねと言うが、自分が指摘できない、あるいは理解して修正できないなら
他人に言われるまでもなくお前こそ精進すべき
そして今日も元気に低学歴でも学校に通ってりゃ
自分より格下だと思っているニートを叩きに精を出してるみたいだね。
いや、ごくろうごくろう
ニートって呼ばれる人の中には、知識、経験が豊富な人もいるから気をつけとけ
下手すりゃ能力も経済力もない奴が、社会的な地位だけででけぇ面して
相手を罵倒すると、しっぺ返しを食らうかもよ
現代の社会は労働の義務はあれど、しなくても生きられる経済的に余裕のある人もいるし
キモイよ
>>821 >成長するチャンス
少なくともそれはソースを書いた奴であって
第三者にはどうでも良い。というか、こっちは不適切な箇所はわかっているんだけどね。
口ばっかりで訂正したソースを出さない
>>808 は機械が指摘した箇所を提示しただけ。だからどのように書き直すか?
については答えられる能力があるとは限らない。
827 :
808 :2006/06/22(木) 17:38:44
lint cleanがお好みなあなた向けのコード: #include <stdio.h> #include <stdlib.h> #include <time.h> static int cmp(const void *a, const void *b){ return (int)(*(char*)a - *(char*)b); } int main(){ char alph[20]; int i; srand((unsigned)time(NULL)); for(i = 0; i < 20; i++) alph[i] = 'a' + (char)(rand() % 25); for(i = 0; i < 20; i++)(void)putchar(alph[i]); (void)puts(""); qsort(alph, 20, sizeof(char), cmp); for(i = 0; i < 20; i++)(int)putchar(alph[i]); return 0; }
828 :
808 :2006/06/22(木) 17:39:26
普通の人向けのコード: #include <stdio.h> #include <stdlib.h> #include <time.h> int cmp(const void *a, const void *b){ return *(char*)a - *(char*)b; } int main(){ char alph[20]; int i; srand(time(NULL)); for(i = 0; i < 20; i++) alph[i] = 'a' + rand() % 25; for(i = 0; i < 20; i++)putchar(alph[i]); puts(""); qsort(alph, 20, sizeof(char), cmp); for(i = 0; i < 20; i++)putchar(alph[i]); return 0; } 以上。
>(void)puts(""); 少なくともこういうキモイソースは俺は書かないw 指摘する前に、よりマシなソースを書けよw
>for(i = 0; i < 20; i++)putchar(alph[i]); for文の閉じ括弧から離したら?気持ち悪い。どうでも良いんだけどさw
また学歴厨が暴れてるのか。もう来ないとか言ってたくせに。
くだらねー。
833 :
808 :2006/06/22(木) 17:42:41
種明かし: $ splint --version Splint 3.1.1 --- 02 May 2003 Command Line: Unrecognized option: --version A flag is not recognized or used in an incorrect way (Use -badflag to inhibit warning) Finished checking --- no code processed
で、奥底に奥底に潜む問題点とやらは
835 :
808 :2006/06/22(木) 17:44:51
わからないなら、それでいいから。 懇切丁寧に教える気0だから。
日下部って知ってる?
>>830 tabじゃないの?まぁ俺も2chに書くとき以外では一行で書くようなキモイことやらんけど。
大卒と学歴詐称したやつがまだいるのか。
問題点 スルーできないってことじゃね
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | 次でボケて!!! | |________| ∧∧ || ( ゚д゚) || / づΦ
ニート叩きの低学歴もまだいるのか。まぁ、ここではそんな ソースを書く奴の素性なんてどうでも良いんだよw
またまた盛り下がってまいりました
┏┳┳┓ ┏┳┳┓ ┏┫┃┃┃ スレ違い雑談は┃┃┃┣┓ ┃┃┃┃┣┓ ここまで.┏┫┃┃┃┃ ┃ ┃┃┏━━━┓┃┃ ┃ ┃スレ違い ┣┫ ・∀・ ┣┫ END ┃ ┗━━━━┛┗┳━┳┛┗━━━━┛ ┏┻┓┃ ┏━┛ ┣┻┓ ┗━━━┫ ┗━┓ ┗━━━┛
っつか、性帝トーマスも昼間っから書いていることあるよ 今日はたまたま昼間に書かなかっただけだがw ニート叩きに反応せずとも、学歴に反応したところを見ると トーマスはやはり専門(ry
____ __,,/ _, ----`ヽ :. :. / _ ___ 、\ / / i \ \\ :. :. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ ,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :. :. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ} |i .i l :N_, -弋 \弌弋ナ:}:.:} :. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な… .| :メヽ.', `ozZ} izN。ハ::{ なんなんですか? :. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :. ここ、どこですか? | :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんであなたたち :. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. 学歴に拘るんですか? / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\ :. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:. / / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ', ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ', { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.} V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧| ヽ! )人 : : :人 : : : / \! :. " ヽ : : : : :/イ{ :.ノ: : : :.\ :. :. \__///: :\______/: : : : : : : ヽ / //: : :|;|: : : : : : i: : : __: : : : ', :. / 、 {;{ |;| . : i/. : : : : : :| / `Y;{. . . .|;|. : : : /i: : : : : : : : :l
>>846 ソースを書いていない第三者に絡んできた奴はお前だろ?
第一、
>>826 は正論を言ってるだけで、相手を煽るような絡みはしていない
何必死こいてんだ、お前?まぁ、そういうレスは本当に余裕のない
能力も経済力もない奴だという素性がバレるね
>>847 お前いちいちレスしている以上はウザから、頼むから消えてくれよ
っつかお前が消えろ、その方が解決するだろ?
ここは他人のソースにケチをつけるスレじゃないって
既に結論は出てるのに、未だにケチをつけて
偉そうなことを言うわりには、まともなソースを出さないじゃん
一方、誰かさんは答えの分かりきった問題で
できた人間が技術力があるから偉いとか言い出すしw
このスレの趣旨をわかってなさすぎ
ここに来る前に、相手の素性が分からない場所で
無意味ないい合いをするくらいなら、2chに来ない方が良いよ?
>>849 >>847 お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
お前らもウザから、頼むから消えてくれよ
っつか、ほんっとうにここって低学歴と低所得で生活だけでなく
精神面でも余裕のねぇ〜〜〜クズが多いんだなwwwwww
>>850 お前いつもファビョるよなw
マジウザいよw
またかよ。 ↓何事も無かったように、宿題と解答をどうぞ。
855 :
デフォルトの名無しさん :2006/06/22(木) 18:12:03
>>852 >>853 そういうレスしかできず、ソースも書かないお前らって
ほんっと知能が低いっつーか生活にも余裕がないんだな・・・
とりあえず
>>808 は精神面で精進しようね。こいつに味方している奴は
確実に低学歴だけどニートになれずにバイトしているプロファイリングができますw
856 :
デフォルトの名無しさん :2006/06/22(木) 18:13:50
質問した者ですが話についていけません
俺はソース書いてるが。ま、そんなことどうでもいいけどな
>>855 いつまで第三者が書いたソースにケチ付けられたことに粘着するのやら。
プロなら「ソース書く」なんて言わないんだけど、そんなこともどうでもいい話ではある。
こっちは厨隔離スレであってこっちで質問したことが間違い
>>860 なるほど。最近のやりとりの中では、一番勉強になった。ありがとう。
862 :
デフォルトの名無しさん :2006/06/22(木) 18:20:03
どうしていつも喧嘩になっちゃうんですか?;;
悪いのは、上を見て習う姿勢がなく、下を見てバカにする目的がある奴が 質問スレに来るから。これは他の板でもありがちなパターンだよ。 そして、煽り、罵倒をした奴が自分が至らない部分を指摘されて 指摘してきた相手の粗を必死に探そうとする・・・
>>863 甘い。ただ一人の為に荒れるんだよ。こいつ他のスレも荒らしてるし。
学歴、ニートをNGワードに登録すれば無問題。俺はヲチしたいので登録してないけどw
今来産業
まぁ奴はコードさえ書ければ満足しているみたいだから、煽りもほどほどにな。
>>864 甘い。何がただ一人だよ?複数が書き込んでいるのはバレバレだろ?
一人だけってのは言い訳にもならない。自分が精進しろよ?
>>869 過去ログ読めば分かる、結局、一人に責任を擦り付けて
自分はさも悪くないって言い逃れしたいタイプだろ?
お前とも言い合いはしない、少なくともお前は黙ってろ
>>870 いや読んでますけど?
なんか俺が暴れてる奴みたいな書き方だけど、俺は暴れてないし。
ジサークジエーン、ジサークジエーン
873 :
772 :2006/06/22(木) 20:20:44
情報が少なかったようなのでもう少し詳しく書きます。 [1] 授業単元: C言語入門 [2] (v,w)=1/n ΣΣ(vi,wj)の二乗 を計算せよ。 Σの左側がi=1からnまで Σの右側がj=1からmまで m orthonormal vectors w1,w2, 、、、wm(mまで) n orthonormal vectors v1v2,,,,,,,,,vn(nまで) まずベクトルを読み込むのにsscanfを使用せよ [3] [3.1] Linux [3.2] gcc [3.3] 言語: (C [4] 期限: 2006-6-23
>>873 「の二乗」はどこからどこにかかるのか。
v,wがベクトルなのか、vi,wjがベクトルなのか。特に後者の場合、ベクトルの次元はいくつなのか。
sscanfで読み込むというベクトルの表記方法や順番はどうなっているのか
m,nの入力方法はどうするのか。
数式はどこからどこまでが分母なのか。
…ということでまだ足りてない。
875 :
772 :2006/06/22(木) 21:25:20
v,wがベクトルです。 ΣΣ(Vi×Wj)の二乗 Σの左側がi=1からnまで Σの右側がj=1からmまで n次元です。 なかなか文でうまく説明できないのですが 読み込む課題はとりあえずおいておいて ΣΣ()の計算をどういうふうに書くか教えてもらえないでしょうか
数学的にどういう計算式になるのかがわからないのか? それは分かるけど、Cのプログラムにできないのかを書くと印象が良くなるんだが。 まぁ、外積の総和だな。
877 :
772 :2006/06/22(木) 22:06:29
Σひとつだけならわかるんですが ΣΣふたつをどう数学的に計算していいかわからないし そしてCのプログラムにもできそうにないです。 Σひとつの場合は for(i=1;i<n;i++) などとすればよさそうですが。。
あちゃー・・・
879 :
772 :2006/06/22(木) 22:09:08
ΣΣ(´д` )
881 :
772 :2006/06/22(木) 22:14:55
ΣΣで検索すると 顔文字がでてきてばかりで困りました。
Σふたつの場合は for (i = 1; i < n; i++) for (j = 1; j < m; j++) などとすればよい。
883 :
772 :2006/06/22(木) 23:17:27
A used measure is the subspace overlap of the first few eigenvectors of covariance matrices. The overlap of the subspace spanned by m orthonormal vectors w1, . . . ,wm with a reference subspace spanned by n orthonormal vectors v1, . . . , vn can be quantified as follows: Σ(i=1からn)Σ(j=1からm)(Vi×Wi)2乗 以下のようなベクトルファイル一番上の左がx座標でその横y z そしてまたxyzxyzxyzと 続いていくベクトルをこのファイルからうまく抽出して 0.07949 0.05776 -0.09131 0.03649 0.00516 -0.05521 0.00819 -0.01256 0.00312 0.01077 -0.00219 0.00505 0.00577 -0.00316 0.00581 -0.00237 0.00261 0.00789 -0.00416 0.00103 0.01031 -0.00525 0.00048 0.01112 -0.00522 0.00078 0.00729 -0.00244 0.00014 0.00547 -0.00054 0.00690 -0.00341 0.00075 0.00087 -0.00409 0.00414 -0.00461 -0.00101 0.00778 -0.00664 -0.00494 0.00699 -0.00562 -0.00840 0.00451 -0.00236 -0.01554 0.00230 -0.00121 -0.01362 -0.00056 0.00043 -0.00850 -0.00117 0.00103 -0.00699 -0.00508 0.00398 -0.00615 -0.01055 0.00686 -0.00413 -0.01220 0.00796 -0.00478 -0.01340 0.00493 -0.00165 -0.01246 0.00076 0.00468 -0.01352 -0.00473 0.00792 -0.02160 -0.00644 0.01331 -0.02674 -0.00531 0.00965 -0.02702 -0.00121 0.00474 -0.02249 -0.00052 0.00117 -0.02183 0.00460 -0.00339 -0.02206 0.00733 -0.00734 -0.01673 0.00556 -0.00889 -0.01302 0.00619
884 :
772 :2006/06/22(木) 23:18:54
計算するプログラムなのですが このわかりにくい文ですが それをみて 大まかなプログラム作れませんか? だいたいこんなのかなというプログラムを見て参考にしたいです。
[1] 授業単元: 情報処理入門 [2] 問題文(含コード&リンク): 1 整数型変数としてiを定義 2 iを1から10まで1ずつ増やしながら以下の事項を実行して終了 (a)変数iを10進法表示でi= の形で1行ずつ出力(表示) (b)もしiが9だったらi=9に続けてCub!と表示して改行 (c)もしiが9だったらi=10に続けてFinished.と表示して改行 [3] 環境 [3.1] OS:/Linux [3.2] コンパイラ名とバージョン: 分かりません [3.3] 言語:どちらでも可 かなwW [4] 期限: ([19年6月27日正午) [5] その他の制限: なし なんとかよろしくお願いします
>>885 [3.2] コンパイラ名とバージョン: 分かりません
[3.3] 言語:どちらでも可 かなwW
[4] 期限: ([19年6月27日正午)
釣られてやるけど、かなりふざけてんな。
その程度の問題もできないのに学習してんの?
無駄な努力というよりも無駄に時間と労力を費やしてんな・・・
2chではこれくらいの無能はザラ
>>772 英語でもいいから問題文は丸々写して。変に解釈してくれると逆に分からなくなるから。
>>772 よく分からんけど、とりあえず計算式だけ見るなら
double sum = 0.0;
for( i = 0 ; i < n ; i++ ) {
for( j = 0 ; j < m ; j++ ) {
sum += v[i] * v[i] * w[j] * w[j];
}
}
sum /= m;
で、sumに結果が残ってるはず。
共分散行列の固有ベクトル(の一部)で貼られる小空間?何のことやらさっぱり。
>>885 なんでそんな授業取ったんだ?いますぐ進路変更した方がいいぞ。
891 :
772 :2006/06/23(金) 00:36:19
>889 ありがとうございます。 まず計算式から考えてみます。
>>885 #include<stdio.h>
main(){
int i;
i = 1; printf("i=%d\n",i);
i = 2; printf("i=%d\n",i);
i = 3; printf("i=%d\n",i);
i = 4; printf("i=%d\n",i);
i = 5; printf("i=%d\n",i);
i = 6; printf("i=%d\n",i);
i = 7; printf("i=%d\n",i);
i = 8; printf("i=%d\n",i);
i = 9; printf("i=%d\n",i);
if(i == 9) printf("Cub!\n");
if(i == 9){
i = 10; printf("i=%d\n",i);
printf("Finished.\n");
}
}
こーゆーことか?
>>893 腹いてぇ〜〜〜、っつか、君もようやるわw
しまった 続けてって改行せずにってことだったのか orz
#include <stdio.h> int main() { for (int i = 1; i <= 10; ++i) { printf("i=%d\n", i); if (i == 9) printf("i=9に続けてCub!\n"); if (i == 9) printf("i=10に続けてFinished.\n"); return 0; }
897 :
896 :2006/06/23(金) 01:02:39
しまった、閉じ括弧が足りねぇ。
tugisurehadoko?
>>900 そこの資料、自分のコピーライトでCG紹介しているけど、他人の作ったものの引用なら拙くないかい?
#ってここに書いてもしょうがないか。
>>901 う〜〜ん、それは大学側に問い合わせてみるとか?
まぁ、どーでも良いことだろうけど
903 :
デフォルトの名無しさん :2006/06/23(金) 04:13:04
[1] 授業単元:プログラミング演習T [2] 問題文(含コード&リンク): 課題内容:家族4人の貯金を管理するプログラムを作成せよ.入力は誰の貯金かを数字で指定し,その後金額を入れる.人の指定時に-1を入力するまで入力を受け付け,それまでの総計を出力する.入力の単位は円,金額の表示法はこれまで自分が作ったものを使え. [実行結果] だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):2 いくら?1280 だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):1 いくら?11800 (省略) だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):4 いくら?55000 だれ?(婆さん:1、父さん:2、母さん:3、通信:4、入力終:-1):-1 現在の貯金額 婆さん:21,000円 父さん:2,350円 母さん:3,410円 通信:67,253円 合計:93,995円 [3] 環境 [3.1] OS:WindowsXP SP2 [3.3] 言語:C++ [4] 期限:(6月23日12:00) [5] その他の制限:配列とポインタ変数、コンピュータのメモリの配置、配列、配列のデータを参照する、多次元の配列を主に使用して欲しい 入門C言語って教科書使ってて106ページまで習いました。
くぃたぁ〜〜〜〜〜〜!
>>885 です
まだC言語にはいってすぐなんです(泣
PCとか今までいじらなかったんで訳分かりません(泣
相当簡単だったみたいですね
ありがとうございました
>>903 に似たの、見たことあるね・・・っつか期限切れか
908 :
デフォルトの名無しさん :2006/06/23(金) 22:44:24
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク): コマンドライン引数で指定した入力ファイル中に含まれる文字数を表示するプログラムを作成しなさい。オプションの追加により別の数え方を追加表示できるようにすること。コマンドライン引数がない場合とオプション "-h" が指定された場合は使用法を表示する。 対応オプションは以下のとおり。複数オプションの同時指定にも対応すること。また、ファイルがない場合や未対応オプション指定時には警告を表示すること。 "-c" : 大文字のみを数えた結果を表示 "-s" : 小文字のみを数えた結果を表示 "-n" : 数字のみを数えた結果を表示 "-h" : 使用法を表示し、終了 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2006年06月28日まで [5] その他の制限:標準ライブラリは入出力関数のみ使用可でお願いします よろしくお願いします
910 :
909 :2006/06/24(土) 06:00:40
最初の一行 #include "stdafx.h" は間違って書いたので無視してくれるとうれしい。
911 :
デフォルトの名無しさん :2006/06/24(土) 11:33:52
コマンドラインオプションなんてgetopt使うんじゃだめなの?
getoptを使わないのなら、
>>909 より短くて複数オプションに
対応した方法がK&Rに載ってるよ。
913 :
908 :2006/06/24(土) 12:24:20
>>909 ありがとうございました
参考にさせていただきます
>>911 getoptは存在すら知らなかったので、使用できないと思います
K&Rの方も参考にして同時指定可のプログラムに挑戦してみます
>>912 梃子摺ると言うからには多少はやってみたのかな?
テンプレ書かない罰として自分の書いたソースを晒して味噌。
>>914 仕切るなアフォが。
お前はただ粛々と問題といてりゃいいんだよ
917 :
772 :2006/06/24(土) 17:51:19
先日のΣの計算に取り込むベクトルの問題に悩んでます。以下のような座標ファイルが規則正しく xyzxyzxyzxyzxyzと延々と左から右へとずっと並んでるんですが、その規則性のあるファイルのxyz座標を読み込み、先日の内積計算へと もちこみたいのですがどうすればいいでしょうか? 以下のファイルがベクトル1であとひとつのベクトルファイル2を用意して 内積計算へと持ち込みます。 (少しヒントらしきものをもらったのでのせます)
918 :
772 追加 :2006/06/24(土) 17:53:51
i=0; /*ベクトル1のデータを蓄える*/ while(fgets(buf,BUFSIZ,VEC1)!=NULL){ if(buf[1]!='*'){ sscanf(buf, "%lf", vec1+(i++)); if((i)%(atomのnumber*3)!=0) sscanf(buf+11, "%lf", vec1+(i++)); if((i)%(atomのnumber*3)!=0) sscanf(buf+22, "%lf", vec1+(i++)); if((i)%(atomのnumber*3)!=0) sscanf(buf+33, "%lf", vec1+(i++));(ヒントはここまでしかありません) 11.13642 46.57651 11.78757 10.85565 45.16160 13.56510 11.79662 44.96445 16.16222 15.03647 44.10112 17.64687 16.04173 40.77797 19.16648 17.24299 41.12352 22.77835 20.46682 39.37864 23.90952 23.15746 39.53033 26.67550 26.97254 39.27797 26.68635 28.90853 38.78521 29.96662 32.66750 38.79458 30.63201 34.91243 38.83600 33.73716 38.01074 41.06615 33.87775 40.80431 41.36232 36.46101 43.97936 43.57868 36.53159 46.16385 41.03266 34.68410 43.62163 38.69248 32.97922 40.24719 38.26314 31.19010 37.85413 35.25521 31.12784 36.48342 34.33027 27.66556 34.41254 31.41009 26.35950 34.44107 29.30857 23.17541 30.79630 29.79289 22.21776 28.49281 27.29159 20.46028 25.04667 28.78014 21.05261 23.46330 31.92716 19.71563 25.28298 35.06292 18.68012 29.08018 34.96435 18.53454 29.22944 31.19537 18.04975 32.16905 29.29601 16.52669 34.86163 31.55792 18.08194 36.10186 33.02285 21.39182 33.41676 35.34860 22.79776 31.59634 35.91553 26.11925 28.89758 34.12246 28.08728 25.14300 34.90411 28.04732 21.98410 34.64353 25.95630 18.24288 ここに文字でうまく説明できないですがこんなのかなぁと思ったプログラムを 見せていただくとありがたいです。
919 :
772 追加 :2006/06/24(土) 17:57:22
おそらく(x座標)11.13642の数値(左上)から11マス進んだところが(y座標)46.57651 で以下そのようにx,y,zと続くベクトルファイルを読み込んで 内積計算に持ち込むんだと解釈はしたのですが ヒントのプログラムの意味もわかりません。
えーと、(11.13642, 46.57651, 11.78757)が最初の座標と言うことでいいのかな? つーか、そのファイルをアップロードするのが一番話が早そうだ。
>>918 #include <stdio.h>
#include <string.h>
int main(){
char buf[1024];
double v[256][3] = {0};
int i = 0, j = 0;
FILE *fp = fopen("VEC1.txt", "r");
if(!fp){return 1;}
while(fgets(buf, sizeof(buf), fp)){
char *p = strtok(buf," \t\n");
if(!p) break;
do{
sscanf(p, "%lf", &v[i][j++]);
if(j > 2){j = 0; i++;}
}while(p = strtok(NULL, " \t\n"));
}
fclose(fp);
/* データ読み込み終わり */
return 0;
}
訂正 #include <stdio.h> #include <string.h> int main(){ char buf[1024]; double v[256][3] = {0}; int i = 0, j = 0; FILE *fp = fopen("VEC1.txt", "r"); if(!fp){return 1;} while(fgets(buf, sizeof(buf), fp)){ char *p = strtok(buf," \t\n"); while(p){ sscanf(p, "%lf", &v[i][j++]); if(j > 2){j = 0; i++;} p = strtok(NULL, " \t\n"); } } fclose(fp); /* データ読み込み終わり */ return 0; }
923 :
デフォルトの名無しさん :2006/06/24(土) 18:14:16
>920 そうです。 (11.13642, 46.57651, 11.78757)(10.85565 45.16160 13.56510)その横の数値がまた x座標で2行目の最初がy座標となってます。 このようにxyzxyzxyzと並んでいるのでそれをうまくxだけとりだし yだけとりだしzだけとりだして内積計算するようです。 ポインタというのを使いメモリを確保?するみたいですが わかりません。
924 :
772 :2006/06/24(土) 18:24:18
前のΣΣ計算ですが keisan2=0; for(k=0;k<n次元ベクトル;k++){ for(j=0;j<n次元ベクトル;j++){ keisan1=0; for(i=0;i<atomnoNumber*3;i++) keisan1 += (*(vec1+i+atomNonumber*3*j))*(*(vec2+i+Atomnonumber*3*k)); keisan2 += keisan1 * keisan1; } } printf("%f\n", keisan2/n次元ベクトル); となるようですが、 *(vec1+i+atomNonumber*3*j)ここの部分がよくわかっていません。 さきほどのベクトルを読み込んで×3というのが。。。 いろいろ質問してすいません。 >922さん ありがとうございます。
>>772 何度も聞いてることも含めて。
・nとmはどう与えられるの?
・xyzxyzと続くのはどうでもいいけど、どれがViを表すデータで、どれがWjを表すの?
・atomnoNumberとatomNonumberとAtomnonumberってバラバラ?全部どういう意味?
とりあえず上2つの答えが分かれば無理矢理でも作るから。
926 :
772 :2006/06/24(土) 20:58:03
atomnoNumberとatomNonumberとAtomnonumberって全部同じ意味です。 さきほど書いたデータの一部がベクトル1で このような内容のファイル2つ用意したときに v w にそれぞれ代入し 計算したいのです。
927 :
772 :2006/06/24(土) 21:24:26
929 :
772 :2006/06/24(土) 22:35:28
>928 すいませんでした。 ご丁寧に作っていただきありがとうございました。 これを使って解析するため作りたかったのですが 自分にはまだ基礎知識が乏しく悩んでいた状況でした。
930 :
デフォルトの名無しさん :2006/06/25(日) 14:45:36
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 二つのテキストファイル(名前は任意。英単語のみからなる)を読み込み strcmp関数を使い順番を判定しながら一つのテキストファイルにまとめよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 6/28まで [5] その他の制限:strcmpを使うこと whileを二重に使ってみたのですが ファイル位置表示子をうまく戻すことができません。 よろしくお願いします
曖昧だな
> 順番 とりあえず 2つのテキストファイルA,Bがあるとして、 1行ずつ読み込みました、 テキストファイルA の後ろに テキストファイルB をくっつければいいのか? テキストファイルB の後ろに テキストファイルA をくっつければいいのか? その判定するルールはなんだ? strcmp(Aの行,Bの行)等として0,正負でどうかするのか?
934 :
デフォルトの名無しさん :2006/06/25(日) 16:25:00
[1] 授業単元:プログラミング演習1 [2] 問題文(含コード&リンク): 成績を管理するプログラムを作成する.一人一人の学生には,学籍番号(整数)がつけられているので,学籍番号と成績(実数)の組みで管理することとする. 本問題で作成するプログラムは,4人の学生について,英語と数学の成績を入力すると,英語と数学の合計点で最高点を取った学生を出力するものとする. 成績を管理する構造体の名前をstudent_t(この名前はtypedefで定義した名前を指す)とし,構造体のメンバを, 1. 学籍番号はint型とし,名前をidとする 2. 英語の成績はdouble型とし,名前をengとする 3. 数学の成績はdouble型とし,名前をmathとする とする.また,以下の関数を作成し,それを利用すること. 1. n人のデータを入力する関数:void InputData(student_t s[], int n) * 第一引数は学生の配列 * 第二引数は学生の人数 * 関数自体は,何人でも扱えるように作成すること 課題実行においては以下の点に注意すること. * 結果の表示は小数点以下3桁で表示すること. * 各教科の得点は,正の数に限定してよい. * 最高点が複数人いた場合は,最高点を取った中で最初に入力された人を表示すること. [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 6月26日まで よろしくお願いします。
生徒は先生の数字ゲームの道具じゃない!!(><)
質問 InputData()は確保された配列のサイズをどうやって知ればいいですか? 例えば、配列が4つしかないのにn=100とかで呼ばれた場合。
#include <stdio.h> #include <stdlib.h> typedef struct { int _id; double _eng, _math; }student_t; int cmp(const void *s1, const void *s2){ double t1 = ((const student_t*)s1)->_eng + ((const student_t*)s1)->_math, t2 = ((const student_t*)s2)->_eng + ((const student_t*)s2)->_math; return int(t1 - t2); } void InputData(student_t *s, int n){ int i; for(i = 0; i < n; i++, s++){ printf("学籍番号 : "); scanf("%d", &s->_id); printf("英語の成績 : "); scanf("%lf", &s->_eng); printf("数学の成績 : "); scanf("%lf", &s->_math); } } int main(){ student_t s[4]; int n = sizeof(s) / sizeof(s[0]); InputData(s, n); qsort(s, n, sizeof(student_t), cmp); printf("学籍番号 : %d\n英語の成績 : %.3f\n数学の成績 : %.3f", s[n - 1]._id, s[n - 1]._eng, s[n - 1]._math); return 0; }
938 :
930 :2006/06/25(日) 17:17:35
strcmp(Aの行、Bの行)を使い、その返り値(正負)によって順番を判定し、一つにまとめていく。 同じ物は無いと仮定してよい。 だそうです。写し忘れてました。すいません
>937 なぜわざわざソートする? InputData()で最高点を取った香具師のインデックスを返すことにすればええやん
>>939 他人のソースにけちをつけるくらいになら自分もソースを出すべし。
っつか、そのくらいのこと、 そ〜っと しておいてやってw
inputdata()は入力するための関数じゃん
>938 だから 正負と A,B の出力順の関係を示せ、ってw
どうせなら逆順ソートにして最初の要素を取り出すようにすれば綺麗なのに。
944 :
939 :2006/06/25(日) 17:35:45
あぁ問題に void InputData(student_t s[], int n) って指定されてたのね... んじゃしょうがない int maxPos=0; /* 0は仮 */ void InputData(student_t s[], int n) { int i; for(i = 0; i < n; i++, s++){ printf("学籍番号 : "); scanf("%d", &s->id); printf("英語の成績 : "); scanf("%lf", &s->eng); printf("数学の成績 : "); scanf("%lf", &s->math); if(s[maxPos].eng+s[maxPos].math<s[i].eng+s[i].math) maxPos=i; } printf("学籍番号 : %d\n英語の成績 : %.3f\n数学の成績 : %.3f", s[maxPos].id, s[maxPos].eng, s[maxPos].math); こんな感じで。
さっ、これじゃ荒れるだけなんで、うpロダ使おうねぇ
でも、入力処理で評価するのは美しくない。 入力、評価、出力、各フェーズは混ぜるべきではない。 #まぁ、宿題だからどうでもいいと言えばいいけど、>944のアプローチは仕事ならやり直しだ。
するってーと >946 のところでは 入力、評価、出力、を1つのクラスにまとめることはNGで別々のクラスにするのかい? #まぁどうでもいいと言えばいいけど、そんなアプローチは仕事ならやり直しだ。
>>946 んなこと言い出したら変数名からしてもうアウトだ。
>>947 読解力の無い馬鹿
君のせいでいつもスレが余計に伸びてるのだが
950 :
934 :2006/06/25(日) 17:54:19
>937 >944 ありがとうございます。今から自分で実行してみます。 助かりました!
>946 SeparateQueryfromModifier
>>947 一つのクラスに纏めることと、処理を混ぜることは等価ではない。
#仕事で>944のようなコードを書いているとしたら、とんだシンドラーシンドロームだ。
...なんか俺の所為? 荒れちゃってる? スマソ int FindMaxPos(student_t s[], int n) { #define SCORE(s,i) (s[i].eng+s[i].math) int i,maxPos=0; for(i = 1; i < n; i++) if(SCORE(s,maxPos)<SCORE(s,i)) maxPos=i; return maxPos; } これで勘弁してくれぃ
時々でいいからundefのことも思い出してください
>>954 構造体のメンバがアンダーバーで始まっているのはちょっと問題かも。
でも、qsort()を使うこと自体は悪くはないんでない?
943 :デフォルトの名無しさん :2006/06/25(日) 17:25:54 どうせなら逆順ソートにして最初の要素を取り出すようにすれば綺麗なのに。
>>957 粘着低学歴乙。これだから専門(ryは・・・
>>957 O(N)で済む作業をわざわざO(NlogN)にせんでもええやろ。
>959 は >956,954 宛
961 :
930 :2006/06/25(日) 20:59:20
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): 二つのテキストファイル(名前は任意。英単語のみからなる)を読み込み strcmp関数を使い順番を判定しながら一つのテキストファイルにまとめよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 6/28まで [5] その他の制限:strcmpを使うこと 【参】strcmp(Aの行、Bの行)を使い、その返り値(正負)によって順番を判定し、一つにまとめていく。 よってstrcmp(A, B)の関数値が負ならばAの文字列を先に出力し、 正ならばBの文字列を先に出力すればよい。 先にどちらかのテキストファイルがなくなるので、残ったファイルの処理を忘れないこと。 度々無駄にレスしてしまってすいませんorz 原文丸写しですのでこれで間違いないと思います。
962 :
デフォルトの名無しさん :2006/06/25(日) 21:24:33
[1] 授業単元:構造体 [2] 問題文:・構造体を用いて次のような文字列を入力し(300*90+6-50/10=)結果表示できる最大4桁入力の計算機を作成しなさい。 ・演算子は優先順位を考慮し、ゼロで割った場合はエラーになること。 ・数字の間に空白が入力されるとエラーになること。 ・数字、演算子、=、空白のみで、その他が入力されるとエラーになること。 ・最初に*,/が入力されるとエラーのなること。 [3] 環境 [3.1] OS:WINDOWS [3.2] コンパイラ名とバージョン:よくわかりません [3.3] 言語:C [4] 期限:2006年6月30日まで [5] その他の制限:特になし
963 :
デフォルトの名無しさん :2006/06/26(月) 10:03:57
最初からそれを出しておけば話が早かったかもね。
こんな感じか。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2180.c ベクトルの要素数をD、vの次元nをN、wの次元mをMとして#defineしている。
データは標準入力から読み込み、D*N個の数値に続いて
D*M個の数値が来ることを想定している。
始めのD*N個がv、続くD*M個がwを表す。
>
すいません。↑を参考に考えたのですが
D要素というのがよくわかりません。
3要素があるものを3次元ベクトル
N要素があるものがN次元ベクトルというものと思っていますが
要素がDというのはどういうことなのでしょうか?
N*Dというのが理解できていません。
少し解説していただくとありがたいです。
>>962 #include<stdio.h>
#include<stdlib.h>
#include<setjmp.h>
#include<ctype.h>
jmp_buf buf;/* <- 構造体を用いた */
int parseAtom(char**s);
void skip(char**p){while(isspace(**p))++*p;}
int parseMul(char**s){int v = parseAtom(s);
for(;;)if(**s == '*')++*s,v*=parseAtom(s);
else if(**s=='/'){int v2;++*s;v2=parseAtom(s);
if(v2==0)longjmp(buf,1);v/=v2;}else return v;}
int parseAdd(char**s){int v = parseMul(s);
for(;;)if(**s == '+')++*s,v+=parseMul(s);
else if(**s=='-')++*s,v-=parseMul(s);else return v;}
int parseAtom(char**s){
int v;skip(s);if(**s=='('){*s+=1;v = parseMul(s);if(**s!=')')longjmp(buf,4);++*s;}
else{char*p=*s;v=strtol(p,s,0);if(p==*s)longjmp(buf,3);}skip(s);return v;}
int parse(char*s){int v = parseAdd(&s);if(*s != '=')longjmp(buf,2);return v;}
int main(){
char src[80],*errmsg[]={"ゼロ除算","=で式が終端していない","文法エラー",")の数が足りない"};
int err=setjmp(buf);if(err)printf("Error: %s\n",errmsg[err-1]);
else printf("%d\n",parse(gets(src)));return 0;}
>>963 (1,2,3) → 3次元
(1,2,3) … 1要素
(2,3,4) … 2要素
(3,1,2) … 3要素
:
(5,6,2) … N要素
(2,3,5) … 1要素
(2,8,4) … 2要素
(3,4,6) … 3要素
:
(3,5,2) … M要素
OK?
966 :
デフォルトの名無しさん :2006/06/26(月) 12:46:37
>965 なんとなくわかったような・・・ これだと963に書いている N次元がN要素で Dが次元ですか??
頭悪すぎ。
968 :
デフォルトの名無しさん :2006/06/26(月) 14:34:10
>967 頭悪いのでもう少し教えてください。
969 :
デフォルトの名無しさん :2006/06/26(月) 14:39:34
[1] 授業単元:プログラミング [2] 問題文 引数の階乗を計算するdouble型の関数を作り、1から10までの階乗を表示するプログラムを作ってください [3] 環境 [3.1] OS:XPです。。 [3.2] コンパイラ名とバージョン:よくわからないんですけどgccだと思います。 [3.3] 言語:Cです [4] 期限:できれば今日中で(>_<) [5]最近プログラミングを始めた初心者なのですが 授業中居眠りをしたらまったく分からなくなってしまいましたo(;△;)o。。。 友達と一緒にがんばってたのですが解決できずにここに質問してしまいました(>へ<)、 どなたかお願いします(*^_^*)
#include<stdio.h> void kansuu(double hikisuu); int main(void) {kansuu(10.0);return 0;} void kansuu(double hikisuu) {int i;double kekka,temp,t;kekka=1; for(i=1;i<=hikisuu;i++) {kekka *= i;}printf("%f",kekka);} なんでdouble型?
>>969 #include <stdio.h>
double kaijo(double n) {
if(n<=1) return 1;
return n*kaijo(n-1);
}
main() {
int i;
for(i=10; i>0; i--) printf("%2d! = %lf \n",i,kaijo(i));
}
>>969 #include <stdio.h>
double kaijo(double n) {
static double t=1;
return t*=(n++);}
main() {
int i;
for(i=1; i<=10; i++) printf("%2d! = %lf \n",i,kaijo(i));}
>>969 #include<stdio.h>
#include<math.h>
double fact(double n){
return tgamma(n+1);
}
int main(){
int i;
for(i=1;i<=10;++i)
printf("%d! = %.0f\n",i,fact(i));
return 0;
}
974 :
デフォルトの名無しさん :2006/06/26(月) 22:06:12
>964 ありがとうございました。 でも、ちょっとむずかしい・・・
>>963 要素数というのはC言語的な配列の要素数という意味で書いた。
次元は線型空間的な意味で、R^Dの部分空間の次元を意味している。
つまり、部分空間vを張る基底があったとき、その基底をなすベクトルの数がN。
Mについても同じ。
なので
>>965 の説明とは逆になってしまってる。
また、D,N,Mの関係はD>=NかつD>=Mになると思われる。
3次元がどこから出てきたのかわからないけど、D=3だと少ないような。
976 :
デフォルトの名無しさん :2006/06/26(月) 22:41:28
[1]授業単元:データ構造、アルゴリズム [2]問題文:与えられたmain関数の中で呼び出される関数を完成させプログラムを実行させる。(別のファイルに適当な番号と名前、点数を3つで1つのセットをいくつか用意し、それをソートや二分探索して結果を表示する。) struct student{ int num; char name[10]; int score; }; main(){ if((Num=read_file("ファイル名"))==0) exit(0); quick_sort(Student,0,Num-1); while(1){ printf("番号を入力してください。"); if(scanf("%d",&key)==EOF) break; if((i=bi_search(key))!=-1) prinf("番号=%d,名前=%s,点数=%d\n",Student[i].num,Student[i].name,Student[i].score); else printf("データがありません。\n"); } } [3]環境: [3.1]OS:Linux [3.2]コンパイラ名とバージョン:バージョンは分からないのですが、gccでお願いします。 [3.3]言語:Cでお願いします。 [4]期限:2006年7月4日でお願いします。 [5]その他の制限:Cはだいたい習ったのですが、今いち理解できてなくて(TωT)構造体やファイルのことなどがよく分からないので誰かお願いします\(。´□`・。\)
>>976 ・以下の関数を作成すると言うことか?
read_file()
quick_sort()
bi_search()
・これらの関数仕様は変更してはいけないのか?
・struct studentにはscoreしかないが、「点数を3つ」ということはこの構造体を変更すると言うことか?
・その「別のファイル」は用意できないのか? それくらいならできるだろ。
ヒント:3つで1つのセット
>>977 本人じゃないけど「与えられたmain関数の中で呼び出される関数を完成させ」って
言ってるんだから、その仕様の関数を作る課題じゃないか?
>>977 確かに、
int read_file(const char file_name, struct student **pstudent, int *num);
とかにしたいところではあるな。
981 :
980 :2006/06/26(月) 23:24:16
重大な間違いを見つけたが訂正はせん。
982 :
デフォルトの名無しさん :2006/06/27(火) 02:31:45
>975 ありがとうございました。 もう少し考えて頭を整理してみます。
983 :
超初心者 :2006/06/27(火) 10:57:44
[1] 授業単元:情報処理基礎演習 [2] 問題文:順列・組合せ キーボードから2つの整数値nとmを入力し、n個の中から m個取り出すときの順列と組合せを求める組合せを作成して ください。ただし、nとmの入力処理は、処理可能な範囲の 範囲が入力されるまで繰り返すようなアルゴリズムにしてく ださい。 [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン:よくわかりません。 [3.3] 言語:C [4] 期限:28日水曜日午後5時 [5] その他の制限:最近defineやdo〜while文を習った。
[1] 授業単元:C言語プログラム [2] 問題文 次の処理を行うプログラムを作成しなさい。 char型の配列strを用意し、キーボードから英数字の文字列を入力する。 格納された文字列に、アルファベットの大文字がある場合、すべて小文字に変換する。 文字列strを画面に出力する。 [3] 環境 [3.1] OS: (Windows xp [3.2] visual studio2003 [3.3] C 4]期限: ([2006年6月28日12:00まで] [5] 配列、ループ,ポインタ
#include <stdio.h> int main(void){ char str[256], *p = str; scanf("%s", str); while(*p){ if (*p >= 'A' && *p <= 'Z'){ *p += 'a' - 'A'; } p++; } printf("%s\n", str); return 0; }
986 :
980 :2006/06/27(火) 15:03:36
>>983 > 順列と組合せを求める組合せを作成
っていったいどういう意味だ?
うお、名前欄が残ってた orz
989 :
988 :2006/06/27(火) 16:21:34
*** 85,91 **** pos = (pos + num) / 2; } else { if (pos == 0) { ! return 0; } pos = pos / 2; } --- 85,91 ---- pos = (pos + num) / 2; } else { if (pos == 0) { ! return -1; } pos = pos / 2; }
990 :
超初心者 :2006/06/27(火) 18:08:19
ごめんなさい。 『順列と組合せを求めるプログラムを作成』です。
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。