1 :
デフォルトの名無しさん :
2006/06/24(土) 23:19:19
乙であります。
アルゴリズムの問題でお聞きしたいです。
↓の16ページ目 第6問です(pdf)
ttp://www.i.u-tokyo.ac.jp/edu/course/ipc/pdf/2004system-j.pdf (1)は
C(A,1) = 1;
C(B,1) = 0;
C(A,n) = C(A,n-1) + C(B,n-1);
C(B,n) = C(B,n-2) + C(A,n-2);
(2) は
空欄1 ; r = 1;
空欄2 ; r = 0;
空欄3 ;
if( p == 'A'){ r = path('A',n-1) + path('B' , n-1);}
if( p == 'B'){ r = path('A',n-2) + path('B' , n-2);}
と自分で答えを出しましたが (3)がわかりません。
漸化式を解いてそれを表現するだけだと思ったのですが うまくいきません。
よろしくお願いいたします。
>>4 漸化式から一般項が求められないということ?
なら、C(A,n)とC(B,n)はそれぞれフィボナッチ数列になると思われ。
>>4 試してないけど
a = a1 + b1;
b = a0 + b0;
a0 = a1; b0 = b1;
a1 = a; b1 = b;
で大丈夫かな。漸化式をそのまま入れてみたけど。
>>5 一般項一応求められるのですが なにか与えられたプログラムで表現できませんでした。
a bも初期化してないし どうやるんだろうと思っていました。
フィボナッチ数列は初耳です。
>>6 ありがとうございます。おみそれしました。
おそらくそれで正しいと思います。
漸化式って配列でも使わなきゃ駄目かと思っていました。力不足です。
アルゴリズムの授業は受けていたのですが・・
この分野勉強するのにお勧めの本ってありますか?
適当にデータ構造とアルゴリズムとかそんな感じの本見ればいいんですかね
講義ノートしか無いんで駄目駄目です
8 :
デフォルトの名無しさん :2006/06/25(日) 06:15:19
[1] 授業単元:プログラミング・同演習 [2] 問題文(含コード&リンク):キーボードから入力したファイル名のファイルを開き、 そのファイルにアルファベットの小文字aがいくつ含まれているかをカウントして表示するプログラムを作成せよ。 【実行例】 (適当なファイル名を入力してエンターキーを押す) 文字aは○個ありました。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual C [3.3] 言語:C [4] 期限:明日の夜12時までが提出期限なのでなるべく今日中にはお願いします。 [5] その他の制限:繰り返し処理はfor文のみ使ってwhile文等は使わないで下さい。 getc関数を使うと思うのですが、イマイチ上手くいかないので教えて下さい。
>>8 #include <stdio.h>
#include <string.h>
#include <assert.h>
int main(){
int c, cnt = 0;
char filename[256], *p;
FILE *fp;
fgets(filename, sizeof(filename), stdin);
if(p = strchr(filename, '\n')) *p = '\0';
assert(fp = fopen(filename, "r"));
for(; EOF != c; c = fgetc(fp))
if(c == 'a') cnt++;
printf("文字aは%d個ありました。\n", cnt);
return 0;
}
10 :
デフォルトの名無しさん :2006/06/25(日) 09:22:40
[1] 授業単元: プログラミング基礎 [3] 環境 [3.1] OS: (WindowsXP [3.2] コンパイラ名とバージョン:Cpad [3.3] 言語: どちらでも可 [4] 期限: 今日中 #include <stdio.h> int main(void) { int i; printf("i="); scanf("%d", &i); if(i==1) {printf("*\n");} if(i==2) {printf("**\n");printf("**\n");} if(i==3) {printf("***\n");printf("***\n");printf("***\n");} if(i==4) {printf("****\n");printf("****\n");printf("****\n");printf("****\n");} if(i==5) {printf("*****\n");printf("*****\n");printf("*****\n");printf("*****\n");printf("*****\n");} if(i==6) {printf("******\n");printf("******\n");printf("******\n");printf("******\n");printf("******\n");printf("******\n");} if(i<=0||i>=7) {printf("error\n");} return 0; } このプログラムを作ったのですがこのプログラミングをwhile do-whileのどちらかを使いすっきりさせたいのです。 しかし、何度やってもうまくいきません。 力を貸してください。
11 :
デフォルトの名無しさん :2006/06/25(日) 09:27:59
>>10 補足です。
このプログラムは打った数分だけ縦と横に*が表示されるというものです。
12 :
デフォルトの名無しさん :2006/06/25(日) 09:33:37
>10 #include <stdio.h> #defineINPUT_MAX6 int main(void) { int i,j; char str_ast[INPUT_MAX]; printf("i="); scanf("%d", &i); for( j=0; j < INPUT_MAX ; j++){ str_ast[j]='*' } if( i <= 0 || i>INPUT_MAX ){ printf("error\n"); return 0; } for( j=0; j<i ; i++){ printf("%*s\n", j,str_ast); } return 0; }
13 :
デフォルトの名無しさん :2006/06/25(日) 09:41:23
>>12 実行しましたが、エラーが出ました。
また、for文ではなくwhileが do while で作りたいのです
#include <stdio.h> int main(void) { int i, k, m = 0; printf("i="); scanf("%d", &i); if(i <= 0 || i >= 7){ printf("error\n"); } else { while (m != i){ k = 0; while(k != i){ putchar('*'); k++; } putchar('\n'); m++; } } return 0; }
15 :
デフォルトの名無しさん :2006/06/25(日) 10:36:28
お願いします 虚数演算を行う関数 要素数2の1次元配列を使って複素数一個を表す。例えば a[]={-1,1}; であれば、これは-1+jを表す(jは虚数単位)ものとする。a,b,cをそれぞれ要素数2の 1次元配列(つまり複素数)として、複素数の四則演算のうち和積商を行う関数群 void add(a,b,c);/*c=a+b*/ void multiply(a,b,c);/*c=a*b*/ void divide(a,b,c);/*c=a/b*/ を作成し、この関数を利用して以下の数式の値fを求めよ。(各関数においてcは答えの容器である) f=(2+3j)*(-1+2j)/(1+j)+5j 3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 6.0 [3.3] 言語:C++ [4] 期限:6/27 [5] 制限:教科書はサイエンス社のザ・Cです。基礎的なことしか習っていません。標準ライブラリ、 という内容も分かりません。
16 :
10 :2006/06/25(日) 10:52:28
>>14 プログラムありがとうございます。無事実行できましたが
制限をつけるのを忘れていました。
まだc言語を習い始めて間もないため
putcharなどは使うことができません。
また、教科書はオーム社 C言語によるプログラミング基礎編です。
if,while,○○++等基本的なものだけでお願いできないでしょうか?
条件小出し厨はカエレ
switchもだめか
19 :
10 :2006/06/25(日) 11:03:30
>>16 ヒント:putchar を printf に変える
21 :
笹井奈琴 :2006/06/25(日) 11:04:21
>>15 #include <stdio.h>
#include <math.h>
void add( const double* a, const double* b, double* c ) {
c[0] = a[0] + b[0];
c[1] = a[1] + b[1];
}
void multiply( const double* a, const double* b, double* c ) {
c[0] = a[0]*b[0] - a[1]*b[1];
c[1] = a[1]*b[0] + a[0]*b[1];
}
void divide( const double* a, const double* b, double* c ) {
double m = a[1]*a[1] + b[1]*b[1];
c[0] = ( a[0]*b[0] + a[1]*b[1] ) / m;
c[1] = ( a[0]*b[1] + a[1]*b[0] ) / m;
}
int main (int argc, char * const argv[]) {
double e1[2] = { 2, 3 }, e2[2] = { -1, 2 }, e3[2] = { 1, 1 }, e4[2] = { 0, 5 };
double c1[2], c2[2], c3[2];
multiply( e1, e2, c1 );
divide( c1, e3, c2 );
add( c2, e4, c3 );
printf( "result:%lf%cj%lf", c3[0], c3[1]<0?'-':'+', fabs(c3[1]) );
return 0;
}
22 :
10 :2006/06/25(日) 11:09:29
>>14 さんのやつ参考に必死にやったらできました。
お騒がせしました。
[1] 授業単元:プログラミングIII [2]真っ黒な画面(この場合は使いやすいかと思って768*768サイズを自主的に使いました) に、グラデーション(色が若干ずつずれていく)させた線を引く [3] Microsoft Visual C++ [3.1] OS: WindowsXP [3.2] Microsoft Visual C++ 2003 [3.3]C++ [4]2006年7月いっぱいまで [5]制限 画像の色を0〜360の値を入れる事により、色相をずらすプログラムを改造して作り上げようとしていました。 ヘンテコなプログラムになっていると思いますが、ここから改良して、完成して欲しいです。 No.2184にファイルがおいてあります。bmp_in.txtは完成系です。
>>24 つーかdivideの式がおかしいような。
b==0の時に0除算になるのは当然だからこんな感じじゃない?
void divide(const double* a,const double* b,double* c) {
double mi=1/(b[0]*b[0]+b[1]*b[1]);
c[0]=(a[0]*b[0]-a[1]*b[1])*mi;
c[1]=(a[1]*b[0]-a[0]*b[1])*mi;
}
26 :
笹井奈琴 :2006/06/25(日) 11:47:07
>>24 ほんとだ。
複素数O( 0+j0 )で割り算したときはどういう結果にするのが適切?
27 :
笹井奈琴 :2006/06/25(日) 11:48:20
って自分も間違ってりゃしょうがないな。 void divide(const double* a,const double* b,double* c) { double mi=1/(b[0]*b[0]+b[1]*b[1]); c[0]=(a[0]*b[0]+a[1]*b[1])*mi; c[1]=(a[1]*b[0]-a[0]*b[1])*mi; }
void divide(const double *a, const double *b, double *c){ if(b[1] == 0){ c[0] = a[0] / b[0]; c[1] = a[1] / b[0]; }else{ double x = b[0] * b[0] - b[0] * -b[0]; if(x != 0){ double y[2]; y[0] = b[0] / x; y[1] = -b[1] / x; multiply(a, y, c); }else{ printf("error\n"); } } }
30 :
29 :2006/06/25(日) 12:03:41
ちがった。無視してください。
31 :
10 :2006/06/25(日) 12:06:22
#include <stdio.h> int main(void) { int i, j; int m; printf("m="); scanf("%d", &m); i=1; while(i<=m) { i++; j=1; while(j<=m) { j++; printf("*"); } printf("\n"); } return 0; } 数値を入力し、入力した数値の数だけの横と縦を持つ正方形を出力するプログラムですが、 1〜6までは通常処理、0以下7以上はerrorと表示したいのですが、 うまくできません。知恵を貸してください
>>31 #include <stdio.h>
int main(){
int m, i;
printf("m=");scanf("%d", &m);
for(i = 0; i < m * m; i++){
putchar('*');
if(i % m == m -1) putchar('\n');
}
return 0;
}
エラー処理忘れてた #include <stdio.h> int main(){ int m, i; printf("m=");scanf("%d", &m); if(m <= 0 || m >= 7){ puts("error"); }else{ for(i = 0; i < m * m; i++){ putchar('*'); if(i % m == m -1) putchar('\n'); } } return 0; }
#include <stdio.h> int main(void) { int i,m; printf("m="); scanf("%d",&m); if (i<=0 || i>=7) { printf("error\n"); } else { i=0; while (i<m) { printf("%s\n","*******"+(7-m)); } } return 0; }
寝ぼけているな。 #include <stdio.h> int main(void) { int i,m; printf("m="); scanf("%d",&m); if (m<=0 || m>=7) { printf("error\n"); } else { i=0; while (i++<m) { printf("%s\n","*******"+(7-m)); } } return 0; }
>>31 この書き方に統一すると
#include <stdio.h>
int main(void)
{
int i, j;
int m;
printf("m=");
scanf("%d", &m);
i=1;
if(m==0||m>=7)
printf("error\n");
else{
while(i<=m)
{
i++;
j=1;
while(j<=m)
{
j++;
printf("*");
}
printf("\n");
}
}
return 0;
}
こんな感じじゃないか?
C初めて2ヶ月の俺が言うのもなんだけどもう少し読みやすい書き方をすることをお勧めする
37 :
10 :2006/06/25(日) 12:43:59
ありがとうございます。できました。
int main(void) { int m; printf("m="); scanf("%d", &m); if(m<=0||7<=m){ printf("error\n"); return 0; } {int i=1; while(i<=m) {int j=1; while(j<=m) { printf("*"); j++; } printf("\n"); i++; } } return 0; } こんな感じじゃないか?
39 :
デフォルトの名無しさん :2006/06/25(日) 16:46:43
システムコールのみを使ってファイルの内容を改行ごとに配列に代入するには どうしたらいいのでしょうか よろしくお願いします
40 :
デフォルトの名無しさん :2006/06/25(日) 16:52:58
[1] 授業単元:言語論 [2] 問題文(含コード&リンク): 最初に一つの自然数を入力する.この自然数をnとする.このあとに続けて,空白で区切ったn個の自然数を入力する. これらのデータをd1,d2,...,dnとよぶ.これらのn個の自然数の最大値と最小値の差を表示するプログラムを作成しなさい. プログラム中では,連続する整数へのポインタ,整数の数 nの二つのパラメータを与えると,与えたn個の数の中で「最大のものを最小のもの」 で引いた値を返す関数 int range(int *p, int n) を定義し,それを利用するものとする. 1 nとして与える値は1以上32以下とし,それ以外の数を入力したときは"error"を出力してプログラムを停止すること. 2 出力した数字の後ろに,スペースを出力してはいけない. 3 関数rangeでは,データはポインタ変数を用いて扱い,配列としての扱いは一切行わないこと. 4 端末の入出力はmain関数中で直接行い,関数range中では端末への表示は行わないこと. 5 プログラム名は「range」 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 6/26午後7時 問題文が長くなりすみませんが、よろしくお願いします。
int range(int *p, int n) {int i,max=*p,min=*p; for(i=1; i<n; ++i){ if(max<*(p+i)) max=*(p+i); if(min>*(p+i)) min=*(p+i); } return max-min; } int main(void) {int n; printf("n?>"); scanf("%d",&n); if(n<1 || 32<n){ printf("error\n"); return 0; } {int i,d[32]; printf("d?>"); scanf("%d", &d[0]); for(i=1; i<n; ++i) scanf("%d", &d[i]); printf("range=%d\n",range(d,n)); } return 0; }
43 :
40 :2006/06/25(日) 17:21:07
>42 ありがとうございます。助かりました。
44 :
デフォルトの名無しさん :2006/06/25(日) 18:44:38
>>15 をやって頂いた方、ありがとうございます!!
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 任意の数nとrを入力して、 nCrを求めてその結果を表示するプログラムを作成せよ [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:Borland [3.3] 言語: C [4] 期限: 6/26午前5時
>>45 gcc で確認。
#include <stdio.h>
int fact(int) ;
int choose(int,int) ;
int main(void) {
int n,r ;
printf("N?") ;
scanf("%d",&n) ;
printf("R?") ;
scanf("%d",&r) ;
printf("Choose!%d\n",choose(n,r)) ;
return(0) ;
}
int fact(int n) {
return((n==0)? 1:n*fact(n-1)) ;
}
int choose(int n,int r) {
int res ;
if(r==1) res=n ;
else if(r==n || r==0)res=1 ;
else res = (fact(n)/(fact(r)*(fact(n-r)))) ;
return(res) ;
}
範囲のチェックとかしてないから、大きな数になると落ちる(^^;
そこら辺は対応ヨロシコ。
47 :
デフォルトの名無しさん :2006/06/25(日) 21:31:44
48 :
デフォルトの名無し :2006/06/25(日) 21:47:53
[1]授業単元: C 言語 「2」問題文 ハノイの塔を解くボトムアップ方式のプログラムを作り上げよ。 分割統治法アルゴリズムの動作解析 それに基づくボトムアップ方式の設計 「3」 「3.1」 OS :windowsXP 「3.2」 コンパイラ名:gcc3.3.2 「3.3」 言語 C 「4」期限 月曜日の23:59までです。どうかおねがいします。 「5」その他の制限:ありません。
【授業単元】C言語 プログラミング 【環境】Visual Stdio.NET2003 【OS】Windows XP 【提出期限】6月26日 【課題内容】ある年の月間平均気温、月間降水量が以下の通りであった 標柱のデータを構造体の配列に格納したあと、年間平均気温、年間平均気温 年間平均降水量を求めるプログラムを作成せよ 月 1 2 3 4 5 6 7 8 9 10 11 12 平均気温 3.6 4.3 7.5 13.5 18.0 21.7 25.6 26.8 22.8 16.9 11.4 6.2 降水量 50 61 98 153 162 210 218 170 209 121 74 48 例答)年間平均気温14.9 年間平均降水量131.17
>>49 なんか変な問題だな。
年間平均気温はΣ((月間平均気温)*(月の日数))/(年の日数)で出せばいいのかな。
降水量は明らかに出ている数値が年間平均降水量じゃ無いところが。
年間平均降水量なら月ごとの平均降水量の和のはずだろ。
ヤバイ。これは消防の頃の記憶がががが…。 コロ助懐かしい…。
>>51 は書き込むスレ間違えました、申し訳ありません。
[1] 授業単元: [2] 問題文(含コード&リンク):main関数内で0〜10までの5個のランダムなint型整数値を1元配列data1に格納するものとする。 又、0〜10までの10個のランダムなdouble型実数値を1元配列data2に格納するものとする。 この時、int型のデータnとint型の1元配列dataを引数として、データのdouble型平均値を返す関数averageを作成し、 この関数を多重定義することによりdouble型1元配列の平均値も算出できるようにせよ。 最後に、main関数でdata1とdata2の平均値を出力するようなプログラムをトップダウン方式で作成せよ。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Borland [3.3] 言語:C++ [4] 期限:明日の午後六時まで [5] その他の制限: 特にありません。 夜分遅くに申し訳ありませんが、もし解いて下さる方がいたら宜しくお願いします。
>>49 構造体使う意味が分からんのだが、こういうこと?
#include <stdio.h>
#define MONTH 12
typedef struct {
double temperature ;
int precipitation ;
}Weather ;
double temperature[] = {3.6,4.3,7.5,13.5,18.0,21.7,25.6,26.8,22.8,16.9,11.4,6.2} ;
int precipitation[] = {50,61,98,153,162,210,218,170,209,121,74,48} ;
int main(void) {
Weather data[MONTH] ;
int i ;
double tmp,pre ;
tmp=pre=0 ;
for(i=0;i<MONTH;i++) {
data[i].temperature = temperature[i] ;
data[i].precipitation = precipitation[i] ;
}
for(i=0;i<MONTH;i++) {
tmp += data[i].temperature ;
pre += data[i].precipitation ;
}
printf("temperature avg:%lf,precipitation avg:%lf\n",tmp/MONTH,pre/MONTH) ;
return(0) ;
}
それとも問題文の理解ミス?
年間平均降水量って複数年のデータの年平均じゃないの? ということで、「月間平均降水量」の間違いかと思ってググったら、 そのような言葉はどうも無いようです。
56 :
デフォルトの名無しさん :2006/06/26(月) 00:06:49
58 :
デフォルトの名無しさん :2006/06/26(月) 00:30:00
8進数を表現するときは0をつけ 16進数を表現するときは0xをつけますが 2進数ってどうやって表現するんでしたっけ?
ないよ
60 :
デフォルトの名無しさん :2006/06/26(月) 00:36:30
分かりました 0xが16進数で 0oが8進数で 0bが2進数のようですね
>>60 「わかって」よかったね。
つか、6分で「わかる」ような質問すなヴォケ。
しかもスレ違いじゃ
62 :
デフォルトの名無しさん :2006/06/26(月) 01:06:48
>>61 おいおい、何キレてんだよ?これだから 低レベル 低俗 な 低学歴 は困るぜ・・・ヤレヤレ
サオ師乙。
>>56 double CtoF(double temperature) {
return(temperature*9/5+32) ;
}
あとは該当個所で呼び出せばおk。
すみません、前スレの556と同じ内容なんですが、次のような形でお願いできませんか 基本構造 while(TRUE){ type_prompt(); read_command(command); if((pid=fork())==0){ //Act as a child process //commandからパイプの切り出し、コマンド名とパラメータの切り出し //exec*によるコマンド実行 }else if(pid != -1){ //error }else{ //Act as a parent process waitpid(&status); } } キーワード .pathの読み取り-open,close,resd… プロセス生成(fork)-終了待ち(wait,waitpid),ゾンビプロセス、シグナル処理(sigaction) プロセスイメージの置き換え(exec*)-環境変数の新規設定(getenv,setenv) パイプによるプロセス間通信(pipe,due/due2)-標準入出力の切り替え
66 :
65 :2006/06/26(月) 01:24:26
【質問テンプレ】 [1] 授業単元: オペレーティングシステム [2] 問題文(含コード&リンク): fork,exec*システムコールを用いて簡単なコマンドインタープリタ (mysh)を作成せよ。但し、作成するコマンドインタープリタは以下の 昨日をサポートすること。 ・設定ファイル(.path)にコマンドサーチパスを指定することが出来る。 なお、ファイル内のパスの指定方法は、各自が考え定義すること。 (パスにないコマンドを入力した場合には、見つからない旨のエラー メッセージを出力すること。) ・パイプを利用して複数(可変個)のコマンドの入出力を結合する ことができる。 ・コマンド実行中にCtrl-Cを入力すると、現在のコマンドの実行を 中断する ・exitを入力すると、myshを終了する。 [3] 環境 [3.1] OS: windowsXP,cygwin [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語:C言語 [4] 期限: ([2006年06月26日23:59まで] [5] その他の制限: ファイル入出力、プロセス制御、パイプ生成に 関してはシステムコールを用いること。
67 :
65 :2006/06/26(月) 01:26:26
実行イメージ $./mysh myprompt> myprompt> ←エンターキーのみの入力なら単なる改行 myprompt>ls -l ←単一コマンドの実行 …………… myprompt>hoge myprompt>hoge:Command Not Found ←コマンドパスにないコマンドを実行しようとした myprompt>ls -l|grep aaa ←パイプによる入出力結合 ……….. myprompt>exit ←exitを入力するとmysh終了 期限ぎりぎりまで考えましたがわかりませんでした。 できればプログラムの説明も簡単に入れてくれると理解しやすくて助かります。 よろしくお願いします。
68 :
デフォルトの名無しさん :2006/06/26(月) 01:36:24
>>64 double CtoF(double temperature) {
return(temperature*9/5+32) ;
}
これは、どこにつけたらいいのでしょうか?
該当個所で呼び出すとはどういう意味でしょうか?理解力がなくてすみません・・。
[1] 授業単元:C++基礎演習 [2] 問題文(含コード&リンク): 第1引数、第2引数ともにchar型の1元配列であり、 これら2つの配列(文字列)を連続して表示する関数catstringがあるものとする。 但し、第2引数にはデフォールトの文字列、”お疲れさん”が設定されているものとする。 main関数からキーボード入力により、2つの文字列を取得し、 catstringの第1引数のみに文字列が渡される場合と第1、及び第2引数に文字列が与えられる場合の 動作確認を行うプログラムを作成しなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Visual Studio2005 [3.3] 言語:C++ [4] 期限:明後日まで [5] その他の制限: 特にありません。 こんな時間に申し訳ありませんがお願いします。
>>69 #include <iostream>
#include <string>
using namespace std;
void catstring(char const* s1,char const* s2="お疲れさん"){
cout << s1 << s2 << endl;
}
int main(void) {
string s1,s2;
cout << "Input string1";
cin >> s1;
cout << "Input string2";
cin >> s2;
catstring(s1.c_str());
catstring(s1.c_str(),s2.c_str());
}
もし
>>53 の問題解ける方がいらっしゃったらお願いします。
>>70 ありがとうございます。それを元に自分で少しいじってみようと思います。
本当に助かりました!
73 :
超初心者 :2006/06/26(月) 03:00:11
os:winxp コンパイラ:gcc 言語:C 下記の課題をやっているのですが、うまく動きません、、どこがおかしいのでしょうか? どなたか助言をお願いします。 アメリカへの船便小包の郵便料金は、1000g まで1800 円、1000g を越え10000g までは1000g ごとに550 円 ずつの割増し、10000g を越え20000g まではさらに1000g ごとに350 円ずつの割増しになる。小包の重さ を読み込み、その郵便料金を計算するプログラムを作りなさい。ただし、船便小包の重量制限は20kg であ る。 (例: 3000g → 2900 円、3001g → 3450 円、20000g → 10250 円) #include <stdio.h> main() { int n, m, o; printf("重さあたりの郵便料金を計算します\n重さ="); scanf("%d", &n); m = 1800+((n-1)/1000*550); o = 6750+((n-10001) / 1000*350); if(1000>=n>0){ printf("1800円\n"); } if(10000>=n>1000){ printf("%d円\n",m); } if(20000>=n>10000){ printf("%d円\n",o); } if(n>20000){ printf("重量オーバーです\n"); } }
if (1000 >= n && n > 0) 以下同様
>>46 あんなに速答してくださってありがとうございます。
おかげさまで出来ました。ありがとうございました。
問題は問題文をそのまま入力しました 一切改変してません 年間降水量は全部の月間をたして12でわるのかな
>>54 ありがとうございました
本当に助かりましたm(_ _)m
#include <stdio.h> #include <string.h> typedef struct Item_{ char Name[10]; unsigned int Day; char Client; int Order; }Item; Item InputItem(){ Item I={"\0",0,"\0",0}; char buf[256]; puts("発注内容を入力します。"); puts("品物の名前は?"); scanf("%s",buf); strncpy(I.Name,buf,10); puts("いくつ発注しますか?"); scanf("%d",&I.Order); puts("クライアント"); scanf("%s",buf); I.Client = buf[0]; puts("日にち"); scanf("%d",&I.Day); return I; }
void OutputItem(Item I){ printf("品物の名前は[%s]\n発注数は[%d]\n発注日[%d]\n依頼主 [%c]",I.Name,I.Order,I.Day,I.Client); } int main(){ Item I; I = InputItem(); OutputItem(I); return 0; } InputItemのながおかしいのですが どうすれば直るでしょうか?やってみたけどわかりませんでした
82 :
81 :2006/06/26(月) 11:04:10
すいません 解決しました
83 :
VC++初心者 :2006/06/26(月) 11:09:56
[1] 授業単元:ファイル読み書き [2] 問題文(含コード&リンク): "abc.txt"ファイルを読込み、読込み数値 + 1を "abc.txt"ファイルにセット(書込み)する。 [3] 環境 [3.1] OS:WindowsXP [3.2] VC++5.0 [3.3] 言語:C++ [4] 期限:6月26日 夕方 [5] その他の制限:VC++の初心者です。 基本的な事ですみません。 よろしくお願いします。
>>83 #include<iostream>
#include<fstream>
using namespace std;
int main(){
int n = 0;
{
ifstream fin("abc.txt");
fin >> n;
}{
ofstream fout("abc.txt");
fout << n+1;
cout << n+1 << endl;
}
}
初心者の私がやってみた、間違っていたら賢い人直してください。 #include <iostream> #include <fstream> using namespace std; int main(void){ char s[30]; int num; ifstream fin("abc.txt"); if (fin.fail()){ cout << "file open error\n"; } else { fin >> s; ofstream fout("abc.txt"); if (!fout){ cout << "file open error\n"; } else { sscanf(s, "%d", &num); sprintf(s, "%d", num+1); fout << s << "\n"; fout.close(); } fin.close(); } return 0; }
>>83 #include <iostream>
#include <fstream>
main()
{
int n;
std::ifstream ifs("abc.txt");
if(!ifs){
std::cerr << "file open error" << std::endl;
}
ifs >> n;
ifs.close();
std::ofstream ofs("abc.txt");
ofs << (n + 1) << std::ends;
}
>>85 間違っちゃ無いが気になるとこが結構あった。
一応指摘しておくけど、もしすでに分かっていたら適当に聞き流しておいてください。
わざわざcloseを自分で呼ぶのが冗長。
closeはstreamのデストラクタで自動的に呼ばれる。
ただ、ofstreamを開く前にifstreamのcloseを呼び出す場合なら意味はある。
しかし、今回のコードだと、そうでないので、まったくもって無意味。
入力を文字列で受け取って変換するのは冗長。
operator>>(ifstream&,int)があるから変換する必要はない。
さらに言えば、入力長のチェックもしていないのでバッファオーバーフローの脆弱性がそれには存在する。
同様に、出力を文字列に変換するのも冗長。
同じようにoperator<<(ofstream&,int)があるから自分で変換する必要は無い。
88 :
86 :2006/06/26(月) 11:49:09
エラー時のreturn入れ忘れた。
【授業単元】C言語 プログラミング 【環境】Visual Stdio.NET2003 【OS】Windows XP 【提出期限】6月29日 【課題内容】2つの実数を文字として取り込み、数値に変換後、 それらの和・積・差・商を求めるプログラムを作成せよ
>>87 ありがとうございます
非常に勉強になりました
91 :
デフォルトの名無しさん :2006/06/26(月) 12:01:42
[1] 授業単元:プログラミング言語基礎 [2] 問題文(含コード&リンク):税込みの値段(消費税5%)を入力した時、税別の値段と消費税率を表示せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Borland Cpad [3.3] 言語:C++ [4] 期限:2006年6月27日12:00まで [5] その他の制限:まだ基本部分しかできてません。お願いします。
92 :
83 :2006/06/26(月) 12:05:46
ファイルの読み書きですが
>>84 、
>>85 、
>>86 、
>>87 、
>>88 回答ありがとう御座います。
ひとつ教えて下さい。
"abc.txt"をオープンや書込みする際、
場所の指定がないですが、
指定する方法などはありますか?
プログラムの実行時にコマンドパラメータとしてファイル名渡せば?
94 :
デフォルトの名無しさん :2006/06/26(月) 13:33:33
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):実行してabcdezと入力したらbcdefa、01239と入力したら12340と出力されるようなプログラム。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:Visual Studio2005 [3.3] 言語: C言語 [4] 期限: 6/27 [5] if文とwhile文を用いよとのことです。
95 :
デフォルトの名無しさん :2006/06/26(月) 13:41:36
[1] 授業単元:プログラミング1 [2] 問題文(含コード&リンク): 三角形の3辺a,b,cで三角形が形成できる場合にはヘロンの公式(下記)で計算した三角形の面積Sを戻り値とし,三角形が形成できないなら エラーを示す値を戻り値とする関数を作成せよ. ヘロンの公式は,三角形の面積をSとすると, S2 = x(x-a)(x-b)(x-c) ただし,x = (a+b+c)/2 三角形の3辺の長さa,b,c(いずれも整数)をキーボードから入力し,この作成したユーザー定義関数を用いて三角形の面積Sを表示するプログラムを作成せよ. ただし,三角形が形成できない場合には再度a,b,cの入力を促すようにし,三角形の面積Sが計算できるまで繰り返すようにすること. [実行結果] 三角形の3辺 <a, b, c> : 3 4 10 *** 三角形にならないよ!もう一度入れなおして. 三角形の3辺 <a, b, c> : 3 4 7 *** 三角形にならないよ!もう一度入れなおして. 三角形の3辺 <a, b, c> : 3 4 5 *** 三角形の面積 = 6.000000 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VisualStudio2003 [3.3] 言語: C [4] 期限: 6月29日 [5] その他の制限: お願いします!!
>>94 #include <stdio.h>
#include <string.h>
const char *alphabet = "abcdefghijklmnopqrstuvwxyza";
const char *number = "01234567890";
int main()
{
char buf[128];
int i = 0;
printf("Input phrase : ");
gets(buf);
while (buf[i] != '\0') {
if ('a' <= buf[i] && buf[i] <= 'z') {
putchar(alphabet[buf[i] - 'a' + 1]);
} else if ('0' <= buf[i] && buf[i] <= '9') {
putchar(number[buf[i] - '0' + 1]);
}
i++;
}
return 0;
}
>>89 #include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
double x,y;
char buf[1024];
do
{
printf("実数1を入力してください: ");
fgets(buf,1024,stdin);
}while((sscanf(buf,"%lf",&x))!=1);
do
{
printf("実数2を入力してください: ");
fgets(buf,1024,stdin);
}while((sscanf(buf,"%lf",&y))!=1);
printf("和: %lf\n",x+y);
printf("差: %lf\n",x-y);
printf("積: %lf\n",x*y);
printf("商: %lf\n",x/y);
system("PAUSE");
return 0;
}
>>95 #include <stdio.h>
#include <math.h>
#include <stdlib.h>
double helon(int a, int b, int c)
{
double x,s;
x = (a + b + c) / 2.0;
s = x * (x - a) * (x - b) * (x - c);
if(s > 0)
return sqrt(s);
else
return -1;
}
int main(int argc, char *argv[])
{
int a,b,c;
char buf[1024];
double s;
while(1){
do{
printf("三角形の3辺 <a, b, c> : ");
fgets(buf,1024,stdin);
}while((sscanf(buf,"%d %d %d",&a,&b,&c))!=3);
if((s = helon(a,b,c)) > 0)
break;
printf("\n*** 三角形にならないよ!もう一度入れなおして.\n\n");
}
printf("\n*** 三角形の面積 = %lf\n",s);
return 0;
}
99 :
96 :2006/06/26(月) 14:22:08
>>96 の
#include <string.h>
は不要なので削ってください。
>>73 #include <stdio.h>
int main(int argc, char** argv)
{
int n, m, o;
printf("重さあたりの郵便料金を計算します\n重さ=");
scanf("%d", &n);
m = 1800+((n-1)/1000*550);
o = 6750+((n-10001) / 1000*350);
if(n <= 1000)
printf("1800円\n");
else if(n > 1000 && n <= 10000)
printf("%d円\n",m);
else if(n > 10000 && n <= 20000)
printf("%d円\n",o);
else
printf("重量オーバーです\n");
return 0;
}
101 :
デフォルトの名無しさん :2006/06/26(月) 14:37:00
[1] 授業単元:c言語 [2] 問題文:引数が素数なら1を、素数でなければ0を返す関数を作り、2から20までの結果を表示するプログラムを作ってください [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c言語 [4] 期限:今日15:30まで [5] その他の制限:お願いです(;_;)できるだけ早くお願いします・・・forを使うんですが
#include <stdio.h> int func(int num) { int i, flag = 0; for(i = 2; i <= (num - 1); i++){ if(num % i == 0){ flag=1; break; } } return flag; } int main(void){ int flag, i; for (i = 2; i <= 20; i++){ flag = func(i); if (flag != 1) printf("%d ", i); } return 0; }
訂正、関数が返す値を逆にしてしまった #include <stdio.h> int func(int num) { int i, flag = 1; for(i = 2; i <= (num - 1); i++){ if(num % i == 0){ flag=0; break; } } return flag; } int main(void){ int flag, i; for (i = 2; i <= 100; i++){ flag = func(i); if (flag != 0) printf("%d ", i); } return 0; }
>>103 さらに訂正
for (i = 2; i <= 100; i++){
↓
for (i = 2; i <= 20; i++){
105 :
47 :2006/06/26(月) 15:11:21
106 :
デフォルトの名無しさん :2006/06/26(月) 16:31:35
長さが3文字以上の文字列を入力として受け付けて,先頭と最後の文字を除いた文字列を出力せよ。ただ し,入力される文字列が3文字以上であることは仮定して良い。をお願いします。。
107 :
デフォルトの名無しさん :2006/06/26(月) 16:44:36
106> [1] 授業単元:c言語 [2] 問題文(含コード&リンク): 長さが3文字以上の文字列を入力として受け付けて,先頭と最後の文字を除いた文字列を出力せよ。ただ し,入力される文字列が3文字以上であることは仮定して良い [3] 環境 [3.1] OS: (Windows [3.2] コンパイラ名とバージョン: (gcc ) [3.3] 言語: (C/C++/どちらでも可) [4] 期限: ([2006年2月27日 [5] その他の制限: 特にないと思います。。 おねがいします。
>>107 #include <stdio.h>
main() {
int i;
char* st;
printf("Input Charactors > ");
scanf("%s",st);
for(i=1; st[i+1] != '\0'; i++)
printf("%c",st[i]);
}
うひょっ、すまそ。
>>108 はエラー起こすんで却下。
文字列を扱い慣れてない未熟なソースですまそ。
>>107 ちうわけで配列要素を指定して再チャレンジ (^^;
#include <stdio.h>
main() {
int i;
char st[256];
printf("Input Charactors > ");
scanf("%s",st);
for(i=1; st[i+1] != '\0'; i++)
printf("%c",st[i]);
}
112 :
デフォルトの名無しさん :2006/06/26(月) 16:55:02
ありがとうございます!!! ここがよくわからないのですが。。。 for(i=1; st[i+1] != '\0'; i++)
>>112 移動元に回答があるよ。つーか、なんつう期限だよ。
>>112 配列の2番目から文字を表示して行き
文字列の最後 \0 を検出する1つ前まで表示ってことだが
まぁ、まだ文字列の最初のところだろうし、どこまで習ったか分からんので
初歩的だと思えるやり方でやってみたが・・・
>>114 はちと違うか。
文字列の最後 \0 を検出する2つ前まで表示 ってなるかな。
116 :
デフォルトの名無しさん :2006/06/26(月) 17:17:30
移動元???期限はあしたですが?? st[i+1] != '\0' がわからないです。 すいません。。。。。
>>107 [4] 期限: ([2006年2月27日
どう考えてもとっくに期限は過ぎてます、ありがとうございました
>>116 だから文字列を入れた配列の終わりを検出するまでfor文をiをインクリメントしながら続けて
文字列の終わりの2つ前まで文字の表示を繰り返すってことなんだが
分からないもなにも、授業で何を習ったかこっちも分からんのじゃ、可能な手段を選んで
ソースを書くくらいしかしてやれんよ。もっと良く教科書を読んだら?
119 :
デフォルトの名無しさん :2006/06/26(月) 17:28:57
もう過ぎてたわ。。。。。 もう受け取ってもらえないかな?? できました。。。。。。。。。。。。。 いろいろありがとうございます
>>119 っつか、2月だったら明らかに年度が違うと思うんで
最近出された課題なら6月27日でしょ・・・w
121 :
デフォルトの名無しさん :2006/06/26(月) 17:43:04
ありがとうございます。 6月27です。そのとうりです。わたしがわるかったです・
>>116 あんたが先に書き込んでいたスレにも回答があるよってこと。
移動したときには移動元にもレスがあることがあるからきちんとフォローしなさいよ。
123 :
デフォルトの名無しさん :2006/06/26(月) 18:34:28
[1] 授業単元:演習 [2] 問題文(含コード&リンク): 以下の処理を行うプログラムを作成しなさい. (1) 80 字以内の英文をgets()を用いて入力し,putchar()を用いて出力する.また,文 字の並びを逆向きにputchar()で出力する. (2) 80 字以内の英文をgetchar()を用いて入力し,puts()を用いて出力する. ただし,関数(strcpy(), strcat(), strlen()等)は使用しないこと.ま た,(1),(2)に対しては,それぞれ文字列へのポインタを仮引数とする関数(例 えば,process1(char *p),process2(char *p))を各自定義し,それら内部で処理させる こと.処理の流れは以下に示す仕様に従って下さい. <仕様> 1.メニューを表示し,上記処理(1)か処理(2)のどちらを実行させるか選ば せる.これは「1」または「2」の入力によって選択させる. 2.上記ステップにおいて,「1」,「2」以外の不適切な入力がなされたときは,再 度メニューを表示し,正しい選択を求める. 3.「1」または「2」の適切な入力がなされたときは,それによって指示される 関数が文字列を処理する.[3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 6月28日 [5] その他の制限: よろしくおねがいします
124 :
47 :2006/06/26(月) 19:01:05
>>47 をやって下さっている方はいらっしゃいますでしょうか・・・?
なんとか今日の24:00までにどなたかお願いいたします・・・。
>>124 #include<stdio.h>
main()
{
printf("キタ━━━━━━(゚∀゚)━━━━━━ !!\n");
}
126 :
デフォルトの名無しさん :2006/06/26(月) 20:59:00
【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク): 2つの整数n,kを引数として,組み合わせの数nCkを返すユーザー定義関数を用いて,キーボードから非負整数nを入力して(a+b)nを展開するプログラムを作成せよ. ただし, (a+b)n = Σi=0n nCi an-ibi [実行結果1] 何乗?:3 (a+b)^3 = 1 a^3 b^0 + 3 a^2 b^1 + 3 a^1 b^2 + 1 a^0 b^3 [実行結果1] 何乗?:0 (a+b)^0 = 1 a^0 b^0 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual Stdio.NET2003 [3.3] 言語: C [4] 期限: 6月30日 [5] その他の制限: ヨロシクお願いします
>>126 #include<stdio.h>
int C(int n,int r){
int a = 1,i;
for(i=1;i<=r;++i)a = a*n/r;
return a;
}
int main(){
int n,i;
printf("何乗?:");scanf("%d",&n);
printf("(a+b)^%d = ",n);
for(i=0;i<=n;++i)
printf("%d a^%d b^%d%s",C(n,i),n-i,i,i==n?"\n":" + ");
return 0;
}
>>127 あ、テスト用のコードを張ってしまった。
a = a*n/rをa = a*n--/iと置き換えてくれ
129 :
デフォルトの名無しさん :2006/06/26(月) 21:39:05
130 :
デフォルトの名無しさん :2006/06/26(月) 21:51:51
[1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク): 1)任意の貨幣体系(ただし自然数で、価値1の貨幣をふくむ)に対して、与えられたおつりの金額に対して貨幣の総数ができるだけ少なくなるようにそれぞれの貨幣の枚数を計算するプログラムを作成せよ。 2)任意の貨幣体系(ただし自然数で、価値1の貨幣をふくむ)に対して、与えられたおつりの金額に対して貨幣の総数が最小になるようにそれぞれの貨幣の枚数を計算するプログラムを作成せよ。 【実行例】 最初に貨幣を定義する。つまり、86円玉でも952円玉でも、好きなように入力。 その後、価格を入力して、実行結果を出す。 [3] 環境 [3.1] OS:Mac OSX [3.2] コンパイラ名とバージョン:x code [3.3] 言語:C [4] 期限:今週中 [5] その他の制限:できるだけシンプルにする。 if分でできるようなのですが、いまいちわかりません。よろしくお願いします。
>>130 1)と2)の違いって何?
俺頭悪いのかな。何度読み直してもよくわからなかった。
>>130 2) で重複はどうするの?
1 円玉から99円玉まであって、 100円を表すのに 1+99 から50+50 まで 50 通り
の最小解があるけど、どうやって表示するの?
133 :
47 :2006/06/26(月) 22:37:05
やっぱり
>>47 は駄目ですか・・・
ありがとうございました。
>>133 ちゃんと噛んで含めるように説明しないとここの連中には荷が重いって。
#漏れも含めてね。
135 :
デフォルトの名無しさん :2006/06/26(月) 22:45:41
[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)構造体やファイルのことなどがよく分からないので誰かお願いします\(。´□`・。\)
136 :
47 :2006/06/26(月) 22:49:06
>>134 prim法は授業でやっていないので、あまりくわしくはわかりませんでした。
なので、問題文まるまる載せたつもりでしたが、確かにわかりにくいですね。
prim法の隣接リスト版なら本に載ってるが、隣接行列版で、しかも 優先キューを使ってはいけないとなると、なかなか見つからないな。 ずっとぐぐって探してるんだが。
前スレ971-972氏へ 教えて頂いたプログラム、動作確認し、なんとか期間までに提出できました。 提出を怠ると、問答無用で単位落ちなので、本当に助かりました。 本当にありがとうございました。
139 :
130 :2006/06/27(火) 00:50:48
>>131 ありがとうございます。(1)は最小ではなくてもよくて、とにかく、できるだけ少なくするようなプログラムで(2)は最少になるプログラムということです。わかりにくい文章で申し訳ございません。
>>132 ありがとうございます。基本的に全検索でしか解けない問題といわれているそうです。貴方がおっしゃっている場合は、どちらでも可です。∵どの通りでも最少になっているため。
すみませんが、よろしくお願いいたします。
「貨幣を定義」ってのが分からんなぁ。 実行例を、詳しく書いてみて。
(1) #include <stdio.h> #include <stdlib.h> int cmp(const void *a1, const void *a2){ return (*(int*)a2 - *(int*)a1); } int main(){ int i, j, kahe[50], m; printf("貨幣定義(負値で終了) : \n"); for(i = 0; i < sizeof(kahe) / sizeof(kahe[0]); i++){ scanf("%d", &kahe[i]); if(kahe[i] < 0)break; } qsort(kahe, i, sizeof(int), cmp);//降順に一応ソート printf("価格 : \n"); scanf("%d", &m); for(j = 0; j < i; m %= kahe[j], j++) if(m / kahe[j])printf("%d円%d枚\n", kahe[j], m / kahe[j]); return 0; }
「最小」と「できるだけ少なく」って何が違うんだろう・・・
143 :
デフォルトの名無しさん :2006/06/27(火) 02:06:51
まあ、かわらんか #include <stdio.h> #define NUM 20 int main(){ int value[NUM],cnt=0,i,a,b,w,money,kazu[NUM]; for(i=0 ; i<NUM ; i++)kazu[i]=0; printf("貨幣(0で終了)?"); scanf("%d",&a); while(a!=0 && cnt<NUM){ value[cnt] = a;cnt++;printf("貨幣(0で終了)?"); scanf("%d",&a); } /* ソート */ for(a=0 ; a<=cnt-2 ; a++){for(b=a+1 ; b<=cnt-1 ; b++){ if(value[a]<value[b]){ w = value[a];value[a] = value[b];value[b] = w; }}} printf("金?");scanf("%d",&money); for(i=0 ; i<cnt ; i++){if(money >=value[i]){ kazu[i]=money/value[i];money-=value[i]*kazu[i]; }} for(i=0 ; i<cnt ; i++){if(value[i]>0) printf("%dを%d枚\n",value[i],kazu[i]); }return 0;}
144 :
デフォルトの名無しさん :2006/06/27(火) 02:08:13
>>142 ソートしたら最小になる。が、できるだけ少なくはほんとわからんな。
IQ140超を誇る俺様だが、問題文の意味がわからんのはほんと久しぶりだ orz
っつか、本屋で色々と見てきたけど、ここで出る課題って 市販の本をしっかり読んでりゃできるものばかりだよね? 中にはモロに本の中に書かれているソースを書いて提出してもいける課題もあったぞな
147 :
デフォルトの名無しさん :2006/06/27(火) 02:13:44
つ【学力低下】
>>146 えーと、その話はどこに持って行きたいの?
>>148 分からないお前に答える必要もなかろう。もっと幅広い文献に目を向けりゃ
程度の低い課題だけでなく、ちょっと厄介なものも解決策が見つかるってことよ。
150 :
デフォルトの名無しさん :2006/06/27(火) 02:16:41
任意の整数Aについて*、^演算子を使わずに符号を反転させるプログラムを作れ。
>>148 ふんふん、それでどう話を展開したいのかな?
できるだけって、最小でなくてもよいので、多分脊髄プログラミングで 全部 1 円玉で出しても採点側は文句が言えないんじゃないかな?
>>149 探し出せるということも、スキルの一つだからな。
探し出せない奴がいたって何の不思議も無い。
>>153 まぁ、それもそうだな。けど、ここでおバカな課題を出す奴は、今後も頼り続けるだろうね。
それで他人が書いたソースを提出して単位取得・・・妙な世の中になったな。
実力のない奴が世に出てくる、まぁ、そいつはいつまでも下っ端だから良いけどなw
「できるだけ少なく==可能な限り少なく==最小」 じゃないのか? 出題ミスか、問題の写し間違えじゃないか?
158 :
デフォルトの名無しさん :2006/06/27(火) 02:25:05
159 :
デフォルトの名無しさん :2006/06/27(火) 02:26:28
>>155 下っ端でよかったぢゃないか。どうせのさばれんから問題なし。
プログラミングできないなんて問題じゃないし。 まぁどうでもいいけど。
どうでも良いけど、もちっと本屋に言ってC言語の本に目を向けようなw
脳内大卒者乙。
低学歴必死だな に対して 高学歴余裕だな という煽り文句を考えてみました
あんまり墓穴を掘るような発言するんじゃないぞ。 つい、つっこみたくなるから。
妙ちくりんな小難しい数学の公式を使ったもんでなきゃ載ってる内容は多いよ ファイルのダンプでさえあったしな。っつーわけで、もちっと幅広い観点から 物事を見る目と、情報を得る姿勢を持とうね >怠け者&何かと他人の意見に自分の意見を押し付けようと口を挟んで否定するキチガイ
>>165 うーん、貨幣を大きい順に並べて、おつりを超えないもっとも大きな貨幣を
まず選ぶ、っつーのがそもそも納得いかないんだけど、そういわれれば
そういう気もしますな。
168 :
タロウ :2006/06/27(火) 04:17:06
[1] 授業単元:プログラミング言語T
[2] 問題文(含コード&リンク):
・ネピアの定数(e)を少数以下20000桁まで求めるプログラムを作成し、
19991桁から20000桁の10個の数字を表示しなさい。
・以下の公式を使用せよ。
http://img142.imageshack.us/img142/6717/3d669b70f520df87086101fd8490ae.png ・実効時間を低減するための工夫を行い、実効時間がどれだけ低減したか示しなさい。プログラムの解説もつけること。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++Compiler5.5 または Visual Stdio.NET2003
[3.3] 言語: C++
[4] 期限: 6月29日
67代目609でものってました。全然わからないのでやってもらえませんか?
169 :
デフォルトの名無しさん :2006/06/27(火) 04:26:14 BE:104814869-#
>>150 #include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[100];int A;fgets(tmp,sizeof(tmp),stdin);A=atoi(tmp);
printf("%d\n",0-A);return 0;}
172 :
デフォルトの名無しさん :2006/06/27(火) 07:48:06
[1] 授業単元:計算機リテラシ
[2] 問題文(含コード&リンク):
名簿管理システム。データの格納にはリスト構造を用いること。 名簿管理システムは以下の機能を持つこと。
1. メンバの追加
2. メンバの削除
3. メンバリストを名前順(アルファベット昇順)で表示
4. メンバリストのファイル出力
5. 引数としてファイルパスを指定することによるメンバ初期データの読込
メンバ情報としては、最低限、名前と学生番号を持つこと。システムの拡張は自由に行ってよい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C
[4] 期限: 6月27日まで。
[5] その他の制限: 特になし
リスト構造のサンプルはあるのですが、リスト構造の中にどうやって名前を含めたらいいのかわかりません。
どうかよろしくお願いします。
ttp://www.katsakuri.sakura.ne.jp/src/up14054.txt.html こちらがサンプルです。
[1]プログラム2 C言語コース [2]構造体を用い、簡単な複素数の計算をするプログラムを作りなさい。 複素数 x=a + ib y=c + id とし、 それぞれxyを構造体変数として宣言し、数値を入力し、 x+yの値を表示するようにせよ [3]OS:Linux コンパイラ:gcc 言語:C [4]期限: 明日です よろしくお願いします
>>175 #include <stdio.h>
typedef struct tagComplex{
double real;
double image;
}Complex;
Complex add(Complex x , Complex y){
Complex z;
z.real = x.real + y.real;
z.image = x.image + y.image;
return z;
}
int main(int argc, char** argv)
{
Complex x,y,z;
x.real = 3.24;x.image = -1.8;
y.real = 1.92;y.image = 0.4;
z = add(x,y);
printf("x + y = %g + %gi\n",z.real, z.image);
return 0;
}
つくづくこういうのはC++のほうがいいなー、と思う
構造体にもメンバ関数定義できるとはいえ
>>177 どもです、
いまいち不明瞭なところもなんとなく理解できました。
ありがとうございます。
179 :
タロウ :2006/06/27(火) 13:55:17
168ですが、67代目の609とは別の人間です。たぶん同じ学科の人が先に頼まれたのだと思います。 どうもありがとうございました。すごく助かります。答えがわかったので、過程は自分でがんばって見ます。
【質問テンプレ】 [1] 授業単元: 情報プログラミングT [2] 問題文(含コード&リンク): HTTPプロトコルによりウェブサーバと接続し、ウェブコンテンツをキャラクタ端末 (ktermなど)に表示するクライアントプログラムを作成せよ。 ただし、コマンドラインでURLを与えることにより、結果を標準出力に表示するようにする。 もっとも簡易的には、HTMLのタグを削除して<body>〜</body>の間の地のテキストのみを出力するものでよい。 ヘッダ部の<title>タグ、<h1>, <h2>, <h3>, <p>, <br>などのタグ程度は適切に処理できることを期待する。 余力のある場合には、日本語のコード変換などを実装して、複数の日本語サイトでの検証を行うこと。 [3] 環境 [3.1] OS: Vine Linux 2.6 [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2006年07月頭ごろ [5] その他の制限: 特になし。 キャラクタ端末をブラウザにしちゃう系の問題です。 よろしくお願いします。
[1] 授業単元:プログラミング演習 単元は配列とポインタです。 [2] 問題文(含コード&リンク): 10個の数字を入力し,それらを小さいものから順に表示するバブルソートのプログラムを作成せよ. 但し,2つの数字の比較・入れ替えを行う関数 void swap( int flag, int *x, int *y )を作成し, 比較・入れ替えはこの関数を用いて行うこと. void swap( int flag, int *x, int *y ) 引数1: int flag = 1 : x > y なら入れ替える. = 2 : x < y なら入れ替える 引数2: int *x 1つ目の値xへのポインタ 引数3: int *y 2つ目の値yへのポインタ [3] 環境 [3.1] Windows XP [3.2] borland C + cpad [3.3] 言語: C [4] 期限: 本日中 [5] その他の制限: 特にありません よろしくお願いします。
>>180 > ブラウザにしちゃう系
この言葉遣いでやる気0
184 :
デフォルトの名無しさん :2006/06/27(火) 16:32:34
123をよろしくおねがいします><
[1] 授業単元:計算機科学 [2] 問題文(含コード&リンク): 0と1が300~400ほど並んだ乱数列をLempel-Ziv符号化せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: borland C [3.3] 言語: C [4] 期限: 3日以内 [5] その他の制限: 特にないです
187 :
181 :2006/06/27(火) 16:47:49
>>186 その手法の説明を書くか説明のあるページへリンクを。
あと締め切りが曖昧。解くのには関係ないけど。
>>180 HTTP1.1 の実装って結構へこたれるんだけど、
永続的な接続とか、Transfer-Encoding の chanked とか対応しないと
まずいんだよね?
[1] 授業単元:アルゴリズム [2] 問題文(含コード&リンク): 文字列を反転させるプログラムを作成せよ。半角英数字のみに対応したものでよい。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: borland C [3.3] 言語: C [4] 期限: 29日まで [5] その他の制限: 配列は一つまで。逆から出力させるのではなく、ちゃんと交換してから出力すること 初めてのご依頼です。条件がきつくて作れませんでした。ポインタは習ってません
192 :
デフォルトの名無しさん :2006/06/27(火) 18:01:57
>>191 #include <stdio.h>
#include <string.h>
int main()
{
char buf[128];
int i, len;
char c;
printf("Input string: ");
gets(buf);
len = strlen(buf);
for (i = 0; i < len / 2; i++) {
c = buf[i];
buf[i] = buf[len - i - 1];
buf[len - i - 1] = c;
}
printf("%s\n", buf);
return 0;
}
>>189 prot 80でコネクション張って、GETコマンド発行すればいいだけじゃね?
別にブラウザ作れっていってるわけじゃなさそうだし。
195 :
デフォルトの名無しさん :2006/06/27(火) 18:22:18
#include <stdio.h> #include <string.h> int main(){ int i,len; char w; char a[128]; printf("文字?"); gets(a); len = strlen(a); for(i=0; i<len/2 ; i++){ w = a[i]; a[i] = a[len-i-1]; a[len-i-1] = w; } printf("%s",a); return 0; }
196 :
デフォルトの名無しさん :2006/06/27(火) 18:35:54
#include <stdio.h> void swap( int flag, int *x, int *y ){ int w; if((flag==1 && *x > *y ) || (flag==2 && *x < *y)){ w = *x ; *x = *y ; *y = w ; } return; } int main(){ int i,j,t[10]; for(i=0 ; i<10; i++){ printf("Number[%d]?",i); scanf("%d",&t[i]); } for(j=9 ; j>=0 ; j--){ for(i=0; i<j ; i++){ swap(1,&t[i],&t[i+1]); } } for(i=0 ; i<10 ; i++) printf("%d\n",t[i]); return 0; }
197 :
デフォルトの名無しさん :2006/06/27(火) 18:36:26
198 :
デフォルトの名無しさん :2006/06/27(火) 19:26:43
>>191 C初心者の俺が書いたらもの凄くめちゃくちゃなソースになりました。
#include<stdio.h>
#include<string.h>
int main(void)
{
char buf[128],buf2[128],temp;
int i,j=0;
printf("Input strings:");
gets(buf);
for(i=(int)strlen(buf);i>=0;i--){
temp=buf[i];
buf2[j]=temp;
j++;
}
for(i=1;i<(int)strlen(buf)+1;i++){
printf("%c",buf2[i]);
}
printf("\n");
return 0;
}
199 :
デフォルトの名無しさん :2006/06/27(火) 19:27:36
tempに入れる必要なかった。まあいいや
200 :
デフォルトの名無しさん :2006/06/27(火) 19:28:35
>>198 それならtempにおかんでいいだろうに。
201 :
デフォルトの名無しさん :2006/06/27(火) 19:30:12
修正した。 #include<stdio.h> #include<string.h> int main(void) { char buf[128],buf2[128]; int len,i,j=0; printf("Input strings:"); gets(buf); len=(int)strlen(buf); for(i=len;i>=0;i--){ buf2[j]=buf[i]; j++; } for(i=1;i<len+1;i++){ printf("%c",buf2[i]); } printf("\n"); return 0; }
203 :
デフォルトの名無しさん :2006/06/27(火) 19:31:03
>配列はひとつまで->0点
204 :
デフォルトの名無しさん :2006/06/27(火) 19:31:35
1] 授業単元:プログラム [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: (Windowsxp) [3.2] コンパイラ名とバージョン: [3.3] 言語: C++) [4] 期限: 今夜中 課題1 配列a[5]={1,5,6,-1,-3}が入っているとき、最小値と最大値を求めて出力するプログラムを作成すること。ポインタを使 った場合と使わない場合の両方でプログラムをつくること!
206 :
デフォルトの名無しさん :2006/06/27(火) 19:41:27
>>205 ポインタ(演算)を全く使わないで作れるのなら漏れも教えて欲しい。
それにしても「配列...が入っている」って、斬新な表現だな。
#配列aに初期値何がしが入っていると言う意味なんだろうけど。
#include <stdio.h> int main(){ int a[5]={1,5,6,-1,-3}, max, min, i; max = min = a[0]; for(i=1; i < 5; i++){ if (min > a[i]) min = a[i]; if (max < a[i]) max = a[i]; } printf("最小値%d 最大値%d\n", min, max); return 0; } #include <stdio.h> int main(){ int a[5]={1,5,6,-1,-3}, max, min, i; int *p = a; max = min = *p++; for(i = 1; i < 5; i++, p++){ if (min > *p) min = *p; if (max < *p) max = *p; } printf("最小値%d 最大値%d\n", min, max); return 0; }
209 :
デフォルトの名無しさん :2006/06/27(火) 20:03:26
#include <iostream> class A{ private: int a[5],MAX,MIN; public: A(){ a[0]=1; a[1]=5; a[2]=6; a[3]=-1; a[4]=-3; } int MAX_OUT(void); int MIN_OUT(void); }; int A::MAX_OUT(){ MAX=a[0]; for(int i=1; i<5;i++) if(a[i]>MAX)MAX=a[i]; return MAX; } int A::MIN_OUT(){ MIN=a[0]; for(int i=1; i<5;i++) if(a[i]<MIN)MIN=a[i]; return MIN; } int main(){ A a; std::cout << "最大値" << a.MAX_OUT() << std::endl; std::cout << "最小値" << a.MIN_OUT() << std::endl; }
//
>>207 概念的には使ってないよw
#include <algorithm>
#include <iostream>
int main()
{
int a[] = {1, 5, 6, -1, -3};
std::cout << "最小値" << * std::min_element(a, a + sizeof(a) / sizeof(*a)) << std::endl;
std::cout << "最大値" << * std::max_element(a, a + sizeof(a) / sizeof(*a)) << std::endl;
return 0;
}
211 :
191 :2006/06/27(火) 20:21:07
みんなありがとう けど見たこと無い関数ばっかりだ。なんも習ってないことがわかった。 ちょっとずつ解明していきます。
なんかコードも書かずにうだうだ言う奴が増えたな。 解答する気ないなら来なくていいよ。
>>205 #include<iostream>
#include<algorithm>
#include<numeric>
#include<limits>
#include<utility>
using namespace std;
pair<int,int> f(const pair<int,int>&v,int n){
return make_pair(min(v.first,n),max(v.second,n) );
}
int main(){
int a[5]={1,5,6,-1,-3};
pair<int,int> v = accumulate(a,a+5,
make_pair(numeric_limits<int>::max(),numeric_limits<int>::min()),f
);
cout << "min = " << v.first << endl;
cout << "max = " << v.second << endl;
}
>>213 なるほど。
accumulateをそういう風に使えるとは考えもしなかった。
215 :
超初心者 :2006/06/27(火) 20:51:01
[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文を習った。
216 :
デフォルトの名無しさん :2006/06/27(火) 22:49:53
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2193.txt のプログラムを改良して、文字列を読み込んで以下すべて出力するプログラムを作成せよ
読み込んだ文字列の長さ
読み込んだ文字列中のスペースの数
大文字と小文字を区別しないときの各アルファベットの数
上記の数の比率
大文字と小文字を区別しないときの27種類の文字(スペースとアルファベット)各2文字組みの出現回数。
例
abAb c13cB
[a or A][b or B]の2文字組は2個、
[b or B][a or A]の2文字組は1個、
↑この2つは区別
[b or B][スペース]の2文字組は1個
[スペース][c or C]の2文字組は1個
[c or C][c or C]の2文字組は0個 間に他の文字が入ってるときは、並びとみなさない
[c or C][b or B]の2文字組は1個
[3] 環境
[3.1] OS:Xp
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 金曜日
[5] その他の制限:なし
よろしくお願いします!
217 :
デフォルトの名無しさん :2006/06/27(火) 22:53:03
>>216 #include <stdio.h>
int main (void)
{
float n,m,flg1=0,flg2=0;
int a,b,c=1,d=1,i=0,e;
while((flg1!=1)||(flg2!=1))
{
if(flg1!=1)
{
printf("nの値を入力-->");
scanf("%f",&n);a=n;
if((n<1)||(n-a!=0))
{
printf("1以上の整数を入力して下さい。\n");
continue;
}
flg1=1;
}
printf("mの値を入力-->");
scanf("%f",&m);b=m;
if((m<1)||(m-b!=0))
218 :
デフォルトの名無しさん :2006/06/27(火) 22:53:47
続き { printf("1以上の整数を入力して下さい。\n"); continue; } flg2=1; for(b=1;b<=m;b++) { c*=(n-i); i++; } i=1; for(e=1;e<=m;e++) { d*=i; i++; } printf("n個の中からm個取り出すときの順列と組合せは%d通り\n",c/d); } return 0; }
219 :
前スレ609 :2006/06/28(水) 00:10:52
[1] 授業単元:プログラミング言語T
[2] 問題文(含コード&リンク):
・ネピアの定数(e)を少数以下20000桁まで求めるプログラムを作成し、
19991桁から20000桁の10個の数字を表示しなさい。
・以下の公式を使用せよ。
ttp://img142.imageshack.us/img142/6717/3d669b70f520df87086101fd8490ae.png ・実効時間を低減するための工夫を行い、実効時間がどれだけ低減したか示しなさい。プログラムの解説もつけること。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++Compiler5.5 または Visual Stdio.NET2003
[3.3] 言語: C++
[4] 期限: 6月29日
調べた結果結局良くわからない始末で、、どうかよろしくお願いいたしますm(_ _)m
プログラム:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2194.txt のプログラムの実効時間を計ろうとしたら以下のようなエラーが出てしまいました。。
どこがいけないのか分かりません。よろしくお願いします。
警告 W8004 q1.cpp 50: 'millisec' に代入した値は使われていない(関数 main(int,char * *) )
警告 W8004 q1.cpp 50: 'sec' に代入した値は使われていない(関数 main(int,char * *) )
警告 W8057 q1.cpp 50: パラメータ 'argc' は一度も使用されない(関数 main(int,char * *) )
警告 W8057 q1.cpp 50: パラメータ 'argv' は一度も使用されない(関数 main(int,char * *) )
エラー E2451 q1.cpp 201: 未定義のシンボル timebuffer(関数 to_decimal(unsigned int *,unsigned int *) )
エラー E2451 q1.cpp 202: 未定義のシンボル sec(関数 to_decimal(unsigned int *,unsigned int *) )
エラー E2451 q1.cpp 203: 未定義のシンボル millisec(関数 to_decimal(unsigned int *,unsigned int *) )
エラー E2451 q1.cpp 205: 未定義のシンボル elapsed_time(関数 to_decimal(unsigned int *,unsigned int *) )
*** 4 errors in Compile ***
[1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク): ・適当な標準ライブラリ関数を見つけて キーボードから文字列を順次読み込んで、それが文字列quitと一致するまで その入力を繰り返す簡単なプログラムを作れ ・関数は呼び出しで使用されるが、ソースコード上で呼び出される箇所より 前の箇所に関数定義もしくはプロトタイプ宣言が無ければ コンパイルエラーとなる。しかし、標準ライブラリ関数はユーザが関数定義も プロトタイプ宣言も明示的に記述していないのも関わらず呼び出して 使用することができる、この理由を、ライブラリ関数定義もしくは プロトタイプ宣言の実体がどこにあるかを踏まえて説明せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: 7月4日 [5] その他の制限:関数定義、関数呼び出し、プロトタイプ宣言、 標準ライブラリ関数をちょっと習い始めました。 私用している参考書は高橋麻奈著やさしいC++です。 よろしくお願いします。
>>219 errorの変数群は関数内で宣言されてるわけでも、グローバルな
わけでも、引数として渡されているわけでもない。
>>220 #include <iostream>
using namespace std;
main() {
char* str;
do {
cout << "Input > ";
gets(str);
}while(str=="quit");
}
224 :
デフォルトの名無しさん :2006/06/28(水) 01:38:29
>>215 #include<stdio.h>
int kaijou(int x){ //階乗を求める関数
int i;
int sum=1;
for(i=x;i>0;i--) sum = sum*i;
return sum;
}
int main(void){
int n, m, i;
int junretu;
int kumi;
do{
printf("nを入力->");
scanf("%d", &n);
}while(n == 0); //0以外が入力されるまでnの入力を求める
do{
printf("mを入力->");
scanf("%d", &m);
}while(n < m); //n>m となるmが入力されるまでmの入力を求める
junretu = kaijou(n)/kaijou(n-m);
kumi = kaijou(n)/(kaijou(n-m)*kaijou(m));
printf("%dP%d=%d\n", n, m, junretu);
printf("%dC%d=%d\n", n, m, kumi);
return 0;
}
>>220 #include<iostream>
#include<string>
using namespace std;
int main(){
std::string str1,str2 = "quit";
do{
std::cin >>str1;
}
while(str1 != str2);
}
>>220 今度こそ
#include <iostream>
using namespace std;
main() {
char* str;
do {
cout << "Input > ";
cin >> str;
}while(strcmp(str,"quit"));
}
>>226 >>220 には
>私用している参考書は高橋麻奈著やさしいC++です。
って書いてあるガーナが負けてもうた・・・
>>227 悪い事は言わないから、std::string str;にしとけ。
比較部分は if (str == "quit") で。
>>230 おっしゃ、がんばってみた(パクって書き換えただけだが)
#include<iostream>
using namespace std;
main(){
string str1;
do{
cout << "Input > ";
cin >>str1;
}while(str1 != "quit");
}
#include <iostream> #include<string> using namespace std; int main() { std::string str1,str2 = "quit"; do{ std::getline(cin,str1,'\n'); } while(str1 != str2); } 標準関数使ってましぇーん
while(str != "quit") でいいじゃん
なんつーか、超低レベル向けコードレビュースレになってきたな
236 :
デフォルトの名無しさん :2006/06/28(水) 02:49:28
>>236 Use fread and fwrite, Luke.
>>236 ちらっとしかコード見てないけど、そのコード、コンパイル通ってないでしょ。
少なくともコンパイルできるコードをアップするか、いちから解答を求めて
ください(そのほうが楽)。
まぁひとついえることは、fputsに渡すバッファはヌルターミネートしてないと駄目。
あとスペルミスは恥ずかしいので修正するように。cordじゃなくてcodeね。
>>236 所属コードのバイト数はそれでいいのかな?
課題の内容に沿わないオナニーコードはちらしの裏にお願いします。
>>220 に対する回答とか。
#include<stdio.h> #include<string.h> int main(void) { char str[256]; do{ printf("Input:"); gets(str); }while(strcmp(str,"quit")); return 0; }
>>243 自分のソース内でusing namespace std;した上で省略するのは構わないと思うよ。
246 :
242 :2006/06/28(水) 05:25:02
>>243 それは俺に対するコメントかな?
>>220 に対する回答のほかにも、
>>198 とかもそう。
稚拙なコードを示して、レビューしてもらうスレではない。
同じような内容の回答が既に複数出ているのに、なぜ新たに稚拙なコードを貼るのか?
それにコメントする奴も出てきて、スレが無駄に伸びるだけ。
>>246 いや、stdに関してはお前へのレスじゃないよ。
稚拙なコードとかは明らかに「お前の判断基準」になるんで
何が稚拙とかは議論せず。ぐだぐだ言うくらいならお前がソースを提出しろ!
ってのが、過去の言い争いでの結論だからw
出さないなら「黙ってろ」ってことで、俺もこれ以上無駄レスせんから。
>それにコメントする奴も出てきて、スレが無駄に伸びるだけ。
わかってんならお前も無駄レスしないこと、そしてオレモナー
251 :
242 :2006/06/28(水) 05:36:19
>>248 (特に)君とはやりあう気は全くないが、
>>198 などは特に見苦しい。
書いた本人がそういってるじゃない。初心者が書いたらめちゃくちゃになったコードだと。
まあ、自重してくれとお願いするしかないわけだけど。
252 :
242 :2006/06/28(水) 05:39:40
>>250 その前の奴は俺じゃないがな。
このスレで特にひどくなった気がしたので書いた。
>>191 などは、もう
同じような回答がいくつもいくつも。
俺からは、この件ではもう何も書かない。
また回答生活に戻る。
>>248 お前がレスしないことが、スレが無駄に間延びしない一番の方法なんだがなw
他人の稚拙なコードが気になるのは自分のコードに自信がない所為だろ。 自分のコードに自信があるなら他人のコードに興味なんてないだろうからな。 #尤も、漏れみたいに他人のコードに突込みどころを探すためにここにいるのもいるけどな。
>>254-255 見苦しい。無駄レスするなって言われたばかりだろ・・・
お前らもソースだせYO!
出してるけど何か?
>>256 自分のコードには自信あるよ。プロだし。
他人の稚拙なコードが気になるのは、俺がプロだから。
他人のコードに突っ込んだことは、宿題スレでは過去に一度しかない。
ゴミコードにアドバイスしたって無駄だし。
それに、プロでも仕事じゃないから解答するとしてもゆるいコード書くだろうし。俺がそうだ。
>>260 たとえそうだとしても、そのレス自体が無駄だって気づいてね。
そしてお前はプロだと思っているのは、自分が書いたものではなく
プロが書いたものを真似ただけのものだと気づくであろう
>>261 まあお前のレスも無駄レスだからお互い様だな。
後半2行は意味不明。
>>260 あるぇ〜〜、プロがこんなところに何の用だ?自称プロか。
お前の書いたソースで出来上がったプログラムはバグだらけだろうね・・・
所詮、他人のソースを真似て勉強した口だろ?だからプロの真似をしただけで
お前がプロじゃないんだよw
こんなところで油を売ってないで早く新聞配達に戻るんだ
>>263 まあ何とでもほざけ。
プロになれなかったのが悔しいのかな?
268 :
デフォルトの名無しさん :2006/06/28(水) 09:47:13
[1] 授業単元: プログラミング [2] 問題:文字を引数として、その文字がアルファベットの何番目の文字であるか返し、英文字ではない場合-1を返す整数型の関数abc(ch)を使ったプログラムを作成してください [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 今日中 [5] その他の制限:なるべく早くお願いします
270 :
デフォルトの名無しさん :2006/06/28(水) 10:18:25
区別します。
#include<stdio.h> int abc(char ch); int main(void) { char ch=getchar(); printf("%d",abc(ch)); return 0; } int abc(char ch) { int i=ch,j; for(j=65;j<=90;j++){ if(j==i) return i-64; } for(j=97;j<=122;j++){ if(j==i) return i-96; } return -1; }
[1] 授業単元: プログラミング [2] 問題 名前と点数を格納するデータ部を持つ自己参照型構造体を定義し、 線形リストを実装しなさい。 構造体の名前は struct grade とし、新たに glist 型として定義する。 構造体のメンバは、char name[40]、int score、及びポインタnext。 ノードは3つ作成し、それぞれキーボードからデータを入力する。 ポインタに値を代入し、ヘッダhdと3つのノードの間を繋ぐ。 読み出し用のポインタpを使って、リストのデータを順に画面に出力する。 【ヒント】 実習時間中にスライドの指示に沿って作成したコードを提出しても良い。 余力のある人は、ノードを作成する際に動的にメモリを確保するコードを作成すること (より効率的なコーディングが可能となる)。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:visual studio.2003 [3.3] 言語: C [4] 期限: 今日中 [5] その他の制限:なるべく早くお願いします
274 :
デフォルトの名無しさん :2006/06/28(水) 10:29:38
[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]期限 午後13時までです。(今日)
275 :
216 :2006/06/28(水) 10:51:07
金曜日までにはお願いします!
276 :
デフォルトの名無しさん :2006/06/28(水) 14:19:15
[1] 授業単元: プログラミング [2] 問題文: 階乗を計算するdouble型の関数を使い、1から10までの階乗を表示するプログラムを作成してください。引数を使わないで、外部変数を使って、main関数からユーザー関数に、1から10までの値を送ってください。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 今日 [5] その他の制限:お願いします。なるべく早く・・・
>>265 どこをどう読んだら
>>263 がプロになれなかったという憶測ができるのやら
お前がプロかどうかなんて、こんなスレに来ているようじゃ明らかに
ありえねぇーってのはバレバレだから、痛々しい自慢にもならねー
クソソース貼り付けてプロ気取ってんじゃねーよw
ほぉほぉ
>>271 これがプロのソースか、そかそか。平凡じゃん。
まだトーマス氏の方が難しそうな数学の公式を使ったプログラムでは
プロっぽいと思えるけどw
いや、中学生や高校生でも知ってるような公式は「難しい」とは言わないから。
>>276 しかしまぁ、なんで整数を扱う階乗の計算ってわかりきっているのに
double型に指定して宣言するのやら・・・引数もなくその型すらdoubleでなくても良いし。
double型の値を返す関数でもなさそうだし・・・
#include <stdio.h>
int i,x=1;
double kaijo() {
printf("%2d! = %d\n",i,x*=i);
return 0;}
main() {
for(i=1; i<=10; i++)
kaijo();}
っていうか、
>>263 =
>>277 でしょ。
君何度もバーチャル人格を捨ててるつもりなんだろうけど、
全く変わってないからバレバレなんだけど。
>>279 まぁ、自分が知っているのは一例しかないけど
フィボナッチのは効率の良さがはっきりしてたかと。
課題の趣旨は満たしていなかったが、それは課題を無視して
効率の良いプログラムとしては十分な結果をだせていたし。
しかし、妙な課題が多いスレだね・・・
そんなスレに来て自分はプロって、プロならこんなところで油売ってねーよなw
自分は趣味程度でやっているけど、まだまだだし、プロを目指す気はないがw
ってか
>>281 =
>>282 でしょ?
君何度もバーチャルパーソナルを捨ててるつもりなんだろうけど、
短時間で複数を装う自作自演がバレバレなんだけど。
260 名前:デフォルトの名無しさん 投稿日:2006/06/28(水) 06:19:46
>>256 自分のコードには自信あるよ。プロだし。
他人の稚拙なコードが気になるのは、俺がプロだから。
260 名前:デフォルトの名無しさん 投稿日:2006/06/28(水) 06:19:46
>>256 自分のコードには自信あるよ。プロだし。
他人の稚拙なコードが気になるのは、俺がプロだから。
とても恥ずかしくてこんなスレでプロなんて言えないね・・・
こんなレベルの低いスレで、自分より下だと思う奴を前の前にしか
でけぇ面ができない小心者だろ?プロ?クソなプログラムを作って
ユーザのコンピュータを困らせるなよ
>>284 ああ、そういう返ししかもう出来ないんだね。
いつもそうだ。困ったらそういう返しする。
>>281 =
>>282 ってあたりまえじゃん。なんかおかしい?日本語大丈夫?
ああ〜なんだ、専門学校を卒業した自称プロが働き場所に困って ここで「プロフェッショナル」として「無償」でソースを書いてやってんのか? 職業としてやってないのに「プロ」ってありえねぇ〜からw プロフェッショナルの意味も理解していない低学(ry乙
>>285 低学歴ニートだから、そうやって社会人をこきおろすことでしか、
アイデンティティを保てないんだよね。
かわいそうに。
>>287 君いつも昼間からいるよね?
何してる人?
>>287 君さー、以前大学に関してありえない妄想書いて大恥かいたの忘れちゃったの?
プロがここにいてもおかしくないじゃん。ああ嫉妬心というやつか。
--------------------以下レベル関係なしに争いはご遠慮ください--------------------
>>280 doubleの方が扱える値の範囲が広いので、戻り値をdoubleにするのはアリ。
戻り値が32bit整数だと、せいぜい21!くらいまでしか計算できない。
>>283 効率つーか、一般項を求める漸化式があるなら使うのは常識つーか。
級数の計算をプログラムで書くときにはまず数学的に一般化しないかな?
>>293 あれは再帰の項目でフィボナッチを使ってみよー!って課題だったみたいだし
別にそれについてはどうこう言わないけどね
ヒント:頭のおかしい人の相手はしないようにしましょう
>>294 つーか、無限級数を再帰で実装するという課題の意味が分からん…
そういう用途には再帰は向いてないことを確認する課題なんだろか。
>>291 なんかしらんがお前が「プロ」に噛み付いてるんだろ。
まぁ、俺もプロなんだがw
来ちゃいけないか?プロが。
>>296 >そういう用途には再帰は向いてない
そうかもね。ソートでもバブルソートから習って、まずは効率の悪いプログラムを知って
それじゃ、どうしたら効率が良くなるか?って流れもあるかもね。
そこで、高校、大学で習った数学を適用しようかと。
マクローリンは大学の講義で聞いた覚えがあるけど、自分はもう忘れとった・・・
>>298 そういや、自己参照構造体でスタックを実装するなんて課題もあったな。
実装実験つーか、SMプレイみたいな趣だ。
ここはね、現実世界で満たされない人たちが、何か人の役に立って 自己を慰めるスレなんだよ。
丸投げに回答しても誰の役にも立たないわけですが。
異常にプロという言葉に反応している奴がいるな。 この板は少なくとも半数以上はプロだと思っていたが、俺の認識違いだったか。
プロの意味を理解していない奴がいるな。 このスレは少なくともプロなんていないと思っていたが、一人くらいはいそうだ。
俺は純粋に質問者の利益になると思って解答してるよ。 質問者の為になるのかどうかは知ったこっちゃないが。 引きこもりニートなんで、時間はたっぷりあるんだ orz
>>304 2,3人はいると思うよ。たまにプロの匂いがするコードがある。
自称プロの態度が大きくてうざい。スレの流れを見ても分かるが お世辞にもプロとは言えない回答ばっかりじゃん。 プロだったらサクッとまともなソースを出すだろ。そんな奴はほとんどいない。 要するにこのスレにはプロは来ない。他のまともなスレで議論しているだろ。 数学の話が出たとたん、自称プロが黙ってしまったのにはワラタ。 専門 学校に通っていることをプロ(専門)と勘違いしたようだw
>>305 丸投げに回答しても、質問者の能力が向上するわけではない。
丸写しで単位がもらえるなら能力に不相応な評価を得るだけなので利益にはならない。
したがって、純粋に質問者の利益を考えるなら回答するべきではない。
309 :
180 :2006/06/28(水) 17:31:46
>>189 >>194 遅くなりました。
.htmlを取得して、<body></body>内をタグを消したテキストにし、
キャラクタ端末に表示する仕様です。
なので一時的な接続による取得だと思われます。
いまさら遅いかもしれませんが・・・。
>>307 >>165 ,241はプロっぽい。あくまで「ぽい」だけどな。
別にプロが解答しててもいいだろ?何が気に入らないの?
>数学の話が出たとたん、自称プロが黙ってしまったのにはワラタ。
これ前にも書いた気がするけど、高校や専門学校、大学を出て何年も
たてば忘れるんだって。それに教科書に載ってたり、webに載ってることを
知ってる知らないなんて水掛け論しても面白くないし。
ちなみにプロ(w)である俺のコードは
>>96 ,193。暇つぶしに書いてるだけ。
>>308 質問者の消費するであろう時間を肩代わりするという意味で「利益がある」ってことだよ。
その後、結果的に質問者が不利益をこうむろうがどうしようが知ったこっちゃない。
66代目のスレが立っているが、どういうことだろう?
>>313 わかってないなぁ。怠惰、傲慢、短気こそがプログラマの美徳だよ。
著作権的に問題ないコードがあるなら、それをパクっても、そりゃ普通のことだ。
わざわざWebから元ネタ検索して、書き換えてここにアップするような面倒くさい
ことやるプロがいるかどうかは知らんがな。
んで、なんでそんなにプロに敵対心を燃やしてるの?
暇潰しに来たんだけど未解答の課題はないみたいだね。 今の時期って課題少ないの?
>>272 #include<stdio.h>
#include<stdlib.h>
#define N 3
typedef struct grade{char name[40];int score;struct grade* next;} glist;
typedef glist* pglist;pglist hd=NULL;
pglist addnode(const char* name,int score){pglist hp=hd,
newitem=(glist*)malloc(sizeof(glist));strncpy(newitem->name,name,40);
newitem->score=score;newitem->next=NULL;if(hp){while(hp&&hp->next)
hp=hp->next;hp->next=newitem;}else hd=newitem;return newitem;}
int main(void){char name[40],tmp[40];int i,score;pglist hp;
for(i=0;i<N;i++){printf("名前(%d):",i);fgets(tmp,sizeof(tmp),stdin);sscanf(tmp,"%s",name);
printf("点数(%d):",i);fgets(tmp,sizeof(tmp),stdin);score=atoi(tmp);
addnode(name,score);}hp=hd;while(hp){printf("名前:%s\n点数:%d\n",hp->name,hp->score);
hp=hp->next;}return 0;}
>>315 ネイピアの定数の19991〜20000桁の値を求めるやつとか
>>313 おいおい、上のURLチラ見したけど、それプロのコードじゃないだろ。
プロなら絶対にmainで「return;」などとはしない。譬えmainが10行でも。
ただそれだけで、そのサイトは信用ならん。
>>311 質問者も回答が来るまで待ってるわけだから時間は変わらないかと。
HTTPクライアントの奴は、Webからコードパクって、<body>〜</body>の間だけ を標準出力に表示するということなら10分で書けるが、非難されそうなのでしないw
>ネピアの定数 多倍長数とか複素数はクラス化されてないとやる気にならねえw >HTTPクライアント system("GET")じゃダメ? >レンペルジブ LHAのソース見れ
324 :
271 :2006/06/28(水) 18:24:25
帰宅したら、知らないうちに 自分のコードが罵りあいにまきこまれているわけですが。 完全な第三者です
>>321 おやおや、君がそんなこと言うとは意外だな。君は即効で解答してあげてるじゃない。
俺は、直近の解答していない問題で、なおかつ10分くらいで書けるものを解答してる。
君もそんな感じかと思ってたけど。
328 :
デフォルトの名無しさん :2006/06/28(水) 18:26:55
[1] 授業単元: コンピューター実習 [2] 問題文(含コード&リンク): 10行10列の行列を考える。 各要素に0〜99の範囲で乱数を入力する。 各行の要素の値について、合計値を表示する。 各列の要素の値について、合計値を表示する。 例) 0 5 3 2 10 3 8 6 0 17 2 3 6 4 15 1 4 7 9 21 6 20 22 15 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 7月4日 [5] その他の制限: 乱数はrand()をつかって発生させる。 forを使用する。 よろしくお願いしますm(_ _)m
>>325 俺もそんな感じだけど。
2ch開いてスレ探してテンプレ書いて回答待ってる時間あれば書けるような回答しか
書いてないから。
>>323 それで全部解決してたらこのスレの存在意義なんて(ry
>>314 > んで、なんでそんなにプロに敵対心を燃やしてるの?
彼はこのスレのお山の大将でいたいんだよ。
過去の発言見てない?相手があきらめるまで絶対に叩くの止めないから。
>>320 >>314 お前らのプロの定義、意義がおかしいから話にならね
ここで書いているくらいでプロなら金稼ぎのソースを書けば?
プロって金を稼ぐ意味も入ってるよ
>>331 >過去の発言見てない?相手があきらめるまで絶対に叩くの止めないから。
それは
>>314 。未だに自分がプロだ!っつってんだろ。
こっちはプロに対して敵対した覚えはなし。こんなところにいてプロってのが
片腹痛いだけ。しかも、書いたと思われるソース(過去ログ)を見た?
どう考えてもプロとは言えないユーザーインターフェースの悪いプログラムだったよ・・・
>>328 #include<stdio.h>
#include<stdlib.h>
#define N 10
int main(void){int i,j,r,cs[N],rs;
for(j=0;j<N;j++)cs[j]=0;for(i=0;i<N;i++){rs=0;
for(j=0;j<N;j++){r=(100.0*rand()/(RAND_MAX+1.0));
rs+=r;cs[j]+=r;printf("%4d ",r);}printf("|%d\n",rs);}
rs=0;for(j=0;j<N;j++){printf("%4d ",cs[j]);rs+=cs[j];}
printf("|%d\n",rs);return 0;}
「低学歴」「専門学校」で検索すれば完璧だよw
>>310 >
>>165 ,241はプロっぽい。あくまで「ぽい」だけどな。
プロ ぽい って書いてあるら?だからこいつの勝手な判断基準なんだって気づけよw
>ちなみにプロ(w)である俺のコード
>>96 >>193 どう見ても幼稚なソースです、昼間っから自分はプロプロって言いに
レベルの低い奴が集まるスレでお山の大将になりたくていきがっているだけだな
>>330 このスレで解決すべき問題はただ一つ。
「 丸 投 げ 厨 を 余 所 の ス レ に 漏 ら さ な い 」
だけなので、それ以外のことは割とどうでも良かったり。
>>333 なんで、このスレにはプロがいないと思いたいの?
>>96 >>193 は別に普通な気がするけど
参考にしたいから、不毛な争いだけでなく
具体的に技術的な点を指摘して欲しい。
>>337 >だけなので、それ以外のことは割とどうでも良かったり。
激しく同意。自分はやれるという変な自身を持ってここに来たへんな厨房が増えたな。
昼間っから学校からここを見て罵倒している暇があるガキが騒いでいるみたいだ。
コンプレックス丸出しw
#include <stdio.h> #include <stdlib.h> int main(void){ int i,j,r,rsum; int m[10][10]; int csum[10]; for (i=0;i<10;i++) { for (j=0;j<10;j++) { for (r=rand();r>99;r=rand()) ; m[i][j]=r; } csum[i]=0; } for (i=0;i<10;i++) { rsum=0; for (j=0;j<10;j++) { printf("%3.3d ",m[i][j]); csum[j]+=m[i][j]; rsum+=m[i][j]; } printf("%3.3d\n",rsum); } for (j=0;j<10;j++) { printf("%3.3d%1.1s",csum[j]," \n"+(j==9)); } return 0; }
>>339 >このスレにはプロがいない
こんなスレで出される課題に答えたくらいで プロ ってのが片腹痛いし
プロって言えるソースはほとんど出ていないって
過去ログとソースを見れば分かるよ・・・お前2ch初心者だな?
半年ROMってろよ
>>341 お前がこのスレには、プロなんかいないとかいうから反応してるだけなんだけど。
なんでそう思いたいの?
>>344 論理がめちゃくちゃだなあ。
どんな問題に答えるかなんてことはどうでもよくて、プロが書けばそれは
プロのコードなんだけど。
>プロって言えるソースはほとんど出ていないって
多分君はプロじゃないから、プロの匂いがわからないだけなんだよ。
ヒント:頭の悪い議論していると、本当に頭が悪くなっちゃいますよ(^^)v
>>346 >論理がめちゃくちゃだなあ。
それはお前。
>プロが書けばそれは プロのコードなんだけど。
このスレで調子ぶっこいているだけのプロになりきれなかったクズだろ
そんな誰にでもなれる奴は世の中にごまんといるんだよ
うんこが漏れそうなのですが、どこか近くてきれいなトイレはありませんか>< できれば洋式でウォシュレット付が好ましいのですが!
誰か、毎回同じ結果が出る
>>343 を訂正してやれ
srand()に適当な種を入れてやらんと毎回同じ乱数で計算することになるぞ
\ ヽ 才 _ . -┼- -┼- -┼- -┼- -┼- -┼- -┼- -┼- / \  ̄ ̄`i /|/ ヽ ,-┼/-、 ,-┼/-、 ,-┼/-、 ,-┼/-、 ,-┼/-、 ,-┼/-、 ,-┼/-、 ,-┼/-、 / \ _/ | ノ ヽ__レ ノ ヽ__レ ノ ヽ__レ ノ ヽ__レ ノ ヽ__レ ノ ヽ__レ ノ ヽ__レ ノ ヽ__レ ノ/ .,ノ';`′,, |.゙ュ r'゚'= ,,,,..ぃ―-、,,,_ ,/ .. .|`ヽ ,l゙.l゙ .ム / ̄`''''"'x、 r'く.l゜| ,,.、 ゙ヽ ../ 、`.ヽv-イ/ /.,! ,-=''"`i, ,x'''''''v'" ̄`x,__,,,_ | ゙l.゙l | .l゙.゙l .‐ .ヽ .,/ .゙li、 .!、゛.,テ'" _,,/ i! i, ̄\ ` 、 ..゙l,レヘ-,i´ 、.シ \ .,i´ ,,,i´ l゙ . ゙̄"⌒ - " | /ヽ /・l, l, \ `゙_'{ .',,,/ .__,ィ" ゙‐ ヽ .,ノ 、,「.゙ . .| /( 1 i・ ノ く、ノ | i i゙ .`゙゙゛ :| . .゙l, ./ ,l゙ .l゙ | i {, ニ , .| { { .| .'i、 ゙l、 l゙ ,l゙ .,ノ l, i, } 人 ノヽ | . } | | :゙'ii、 ゙l ,l゙ .゙l .,iン‐'"゙゙゙゙゙''i、 }, | Tヽ.|lF-―-ヵl|\__,/ } i .| ゙l .゙l ,i´ ′ .ヾ″ ヽ. ヽ.} , |.  ̄`/} {.ト、_ノ} i /―i、、.,-.| ,}゙゙'-、 ゙l _゙ .| l゙ .、 . .''、,. . | ,i_,iJヘヽ `x, ヾ┴┴'ソ x=‐'''~ .゙-| ,} 、 ‘\.` `." ゙l .l゙ ‥‐r- "゙.!゙゙'^ '. ./ ヽヽ ` ニ ´ ノ l.゜ iiJi_,ノ.'(二 . ヽ . .、゙l
毎回違う乱数と言う指定じゃないんだから如何でもいいだろ。
>>347 話をそらしてんのはお前。何がプロか定義を述べよ。
自分勝手な判断基準や価値観でプロって言っているならそれで良いよ。
別にお前がプロじゃないとは言ってないなから。
こんな答えの分かりきった課題が出されるスレで
あたかも自分が書いた!みたいな喜びを感じたいならどうぞご自由に。
本当のプロの世界を知りな。そんなのができても雇ってくれる企業はほとんどないよ。
未知なるものの開発に携わることもあるんだし。視野が狭すぎ。
>>349 だから俺はプロなんだって。俺がいちゃいけないのか?
まぁ君から見たら
>>96 >>193 は幼稚なコードなんだろうけど、
はっきり言ってこのコードには自信があるよ。仕事では絶対に
書かないやりかただけどね。
>>353 そうだな、それがプロの意見か、片腹痛いわっw
痛いなぁ。痛すぎるよ小沢さん。
もう雑談スレでやれよ
>>354 「2.0は変数じゃない。お前の変数の定義を述べよ」式の論理のすりかえだな。
要するに、このスレでプロと言ってるのは「自称プロの低学歴」であって欲しいし、 他人は「視野が狭い」と言いたいだけなんだろ。 こいつと議論しても無駄だよん。 なんだかわけわかんなくなって、奴が勝利宣言出して終わりってのがいつものパターン。
プロなら未解決の課題のやつ全部やってもらえばいいんじゃない? 過去のコードどうのこうの言うよりも、これから書くコードみてやろうぜ
/**********終了************/
コーディング能力とプロかどうかはあまり関係ない。 コーディング能力と学歴もあまり関係ない。 コーディング能力と職業も実は関係ない。 コーディング能力と年齢は全く関係ない。
またかw
今回の原因は・・・
>>242 のようだな。
毎度ながらくだらんことで言い合いするのが好きだよな、お前ら。
気に入らないレスはスルーしろよ。
スルーできる人はネ申?
>>363 まぁそうだが、プロは毎年1000〜2000時間ずつ経験を蓄積させていくからな。
20〜30行程度じゃ変わらないだろうけど、200〜300行程度書かせれば、まともな
プロなら一味違ったコードを書くと思うよ。
素人同然(もしくはそれよりひどい)プロがゴロゴロしてるのが、この業界の実態
だから、プロだから良いコードを書くとは言えないけどね。
なんか文句あんならカレンダーを表示するソースを書いてみろや>自称プロ
お里が知れたね。
>>359 意味不明。そんな議論持ち出した覚えなし。
そもそも2.0は定数だよ?変数でもなし。どこのスレの話だ?
お前、あちこち回って荒らしている奴だな?暇人め・・・
>>368 #include <stdlib.h>
int main()
{
system("cal");
return 0;
}
盛 り 下 が っ て マ イ リ マ シ タ
プロだのどうでもいいじゃん 書きたい人が書けば 初心者でもプロでも つーか本当にプロならこんなところこないだろ とか学生が言ってみるテスト
>>370 あらら、C/C++関連スレで読んでないスレあったんだ。
お前と似た奴が暴れてたぞ。
327 名前:デフォルトの名無しさん[] 投稿日:2006/06/18(日) 21:14:06
>>303 >2.0がdoubleじゃない
お前バカ?定数と型の指定のある変数の意味もわかってないのが露呈されただけ
専 門 学 校 は こ の 程 度 ( プ
ある数式(関数)にて、値が変わることにより計算結果が変わるからこそ 変数を用いる数式があるし、よく y=x^2+2とかあるじゃん。 x,yは変数にしても2は定数。まさか、yも変数ならその数式にある2も変数とか言うなよ。 値が定まっているからだが・・・なんでオレがここでプロについておかしな理論を押し付ける奴に 変数や定数の議論のすり替えをつきつけられなきゃならねーんだよ? 何が言いたいんだ?バカじゃねーの、しばらくここを離れるわ。マジでもうこねーよ、カス共。
>>375 >お前と似た奴が暴れてたぞ。
それはお前だろ、なに責任転嫁してんだよ。お前、被害妄想をする癖があるんだな
よっぽどお前の学歴が良いのか悪いのか知らんが、学歴って言葉に敏感なんだなw
333 名前:デフォルトの名無しさん[] 投稿日:2006/06/18(日) 21:33:49 専門学校生乙。恥ずかしいからもう黙ってな。 筋の通った理論に基づいて話してなく、自分がバカだと思う奴がバカって 言っているだけだな。ご愁傷様。 2.0は 変数 ではなく 定数 なので、変数に使う型は関係ない。 問題は変数同士と、代入する変数の型だよ。 あの数式を見れば一目瞭然。さすがに初心者だからといって 理解力のないバカまで指導するスレじゃないんで、俺はこれで失礼するよ。 低俗な人間の問題煮まで相手にしてたら、こっちがバカになるw
自分の目でそういう部分を判断できなきゃ、自分が適切なプログラムを作れなくて困るだけ 一生2.0が何型か?について議論してなさい。 とりあえず答えたけど?自分(質問者)はバカですが何か?って質問に対して あ〜そうですね?って俺に答えさせただけだな。恥ずかしいね 本当に頭の弱い人って。お願いだから浅はかな考えで社会に出て 犯罪を犯さないでくれ。いつまでもあんたらみたいな「低俗な人間」に 入れ知恵をするつもりはないし、お前らもその程度じゃ賢くはなれんよ。 何でもかんでも答えてもらえる、自分の思った通りに答えない人は嫌いになる みたいな感情まで持ち込んでどうすんだよ?プログラムは感情なんて当てにしてくれないぞw
>>377 君さー、いつも昼間っから常駐してるけど、何してる人?
人口無能なんだよ、きっと。
回答する人にお願い。 回答するときに、元発言へのリンクを必ず付けてね。 回答済みかどうかわかりづらいから。
383 :
377 :2006/06/28(水) 19:44:55
>>382 それはお前だろ、なに責任転嫁してんだよ。お前、被害妄想をする癖があるんだな
よっぽどお前の学歴が良いのか悪いのか知らんが、学歴って言葉に敏感なんだなw
384 :
382 :2006/06/28(水) 19:48:18
煽るのを止めることはできないけどさ、せめて落ち着こうぜw
このスレも定期的に荒れるね。 まぁ、今回もそろそろ鎮火する頃だろう、多分。
387 :
◆qvf.IClkDc :2006/06/28(水) 19:58:16
急ぎ気味ですがよろしくお願いします。
[1] 授業単元:コンピュータグラフィックスT
[2] 問題文(含コード&リンク):
ttp://blog.youty.jp/blog_user_top.php/7802/ このブログに書き込んでおきました。
[3] 環境
[3.1] OS:WindowsXP Pro
[3.2] Borland C++ 5.5.1
[3.3] 言語:C
[4] 期限:2006年06月30日12:00まで
[5] その他の制限:特になし
>>385 荒れてるかどうかというなら、今は平和そのもの。
丸投げ厨が余所のスレに漏れるようになったら「荒れている」ということで。
389 :
デフォルトの名無しさん :2006/06/28(水) 21:08:33
[1] 授業単元:情報科学U [2] 問題文:関数 sasho は第1引数と第2引数の数値(実数)の差と商を計算し, 差を第3引数で与えられる場所に,商を第4引数で与える場所に格納し, 第2引数が 0 の場合は 0,その他の場合は 1 を返す関数である (第2引数が 0 の場合は,商の計算はしない).関数 sasho を定義し, main 関数では,2つの実数を入力して,sasho を利用して,2数の差と商を表示する (sasho の帰り値が 0 の場合は差のみを表示)プログラムを作成せよ. [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2006年6月30日(金)8:40まで [5] その他の制限:ポインタの単元をやっているところです。 よろしくおねがいします
>>389 #include <stdio.h>
int sasho(double a,double b,double *c,double *d){
*c=a-b;
if (b) {
*d=a/b;
return 1;
} else return 0;
}
int main() {
double a,b,c,d;
int f;
printf("input a>");
scanf("%lf",&a);
printf("input b>");
scanf("%lf",&b);
f=sasho(a,b,&c,&d));
printf("a-b=%lf\n",c);
if (f) printf("a/b=%lf\n",d);
return 0;
}
訂正 f=sasho(a,b,&c,&d)); -> f=sasho(a,b,&c,&d);
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 文字列を読み込んでその中の文字をASCIIコード順に並び替えて出力するプログラムをつくれ [3] 環境 [3.1] OS: Windows2000 [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 明日 [5] その他の制限: 特になし お願いします!
>>392 #include <stdio.h>
#include <string.h>
int c[256];
char buf[1024];
int main() {
int i;
printf("input string>");
fgets(buf,1024,stdin);
i=strlen(buf);
if (buf[i-1]=='\n') buf[i-1]='\0';
for (i=0;buf[i];i++) c[buf[i]]++;
for (i=0;i<256;i++)
while (c[i]--) {
putchar(i);
}
putchar('\n');
return 0;
}
394 :
389 :2006/06/28(水) 21:46:24
[1]情報科学実験T 【2】練習課題6 n個の文字列を読み込み, 読み込んだ文字列を縦に読むプログラムを作成しなさい。 実行例は以下のようにしなさい 文字列の個数を入力しなさい 4 1:takeda 2:ootsuka 3:murakami 4:ogi 1 tomo 2 aoug 3 ktri 4 esa 5 duk 6 aka 7 am 8 i [3]OS:LINUX コンパイラ:GCC 言語:C [4]「ポインタのポインタ」を必ず使用すること
あ、[4]は期限でしたね・・・。 [4]期限:次の]金曜日 [5]制限:「ポインタのポインタ」を必ず使用する事。 習っている部分はポインタまでで、来週から構造体といった感じです。 よろしくお願いします。
399 :
216 :2006/06/28(水) 23:01:33
216をお願いします!
401 :
216 :2006/06/28(水) 23:42:56
>>400 なんかレス番号間違いですよね?俺に対する解答じゃない気がします
>>396 様
次のお客が列に並ぶまでの間隔の平均時間みたいです。
404 :
403 :2006/06/28(水) 23:59:36
とある事情でやるき失せた。なんのことだかわからなかったら、 誰かのとばっちりだからごめんね。 俺がやんなくても誰かやってくれるかもしれないし。
>>404 あっちのスレですよね。なんか荒れてしまったみたいでもうしわけないっす
406 :
403 :2006/06/29(木) 00:02:44
あ、君じゃなかったんだ。 じゃ6/29 23:59までにやっとくから待ってて。
408 :
497 :2006/06/29(木) 00:38:38
str = malloc(sizeof(str) * num); は明らかに変だな。 str = malloc(sizeof(char *) * num); とかすればいいのか?意味的に。 (ポインタのサイズはどうせ同じだろうけど・・・) いろいろ、突っ込んでいただけると助かります。
画像抜き出してみたけど、 エヴァンジェリンの見えない部分の手とか適当でワロタ。
誤爆した
>>409 ここはアニヲタも紛れ込む場所だったのか(ニヤニヤ
(1)単元:情報処理演習
(2)演習問題6−a
3つの自然数x y zの値とx × y行列Aとy × z行列B の行列の要素を読み込む。
そして行列の積C = A Bを計算し、その行列要素を出力するプログラムを作成しなさい。
但し、行列A、Bの要素は配列要素として読み込み、
行列A, B, Cの要素は動的メモリ領域に割り当てる。
また、指定の3つ関数を作成し、main関数ではこれらの関数を呼び出すようにしなさい。
A: 行列要素を読み込むための関数
B: 行列の積を計算するための関数
C: 結果を表示するための関数
以下に簡単な実行例を記す。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2207.txt [3]環境:Vine Linux gcc C言語
[4]期限:本日中
よろしくお願いします
413 :
デフォルトの名無しさん :2006/06/29(木) 02:12:34
414 :
デフォルトの名無しさん :2006/06/29(木) 02:13:47
↑ ×言語: C+ ○言語: C
>>411 9割がアニオタエロゲオタだよ
今さら何言ってんの
すいません、別のスレに書き込んだのですが こっちが本スレでしたので書き込ませてもらいます。 [1] ポインタと配列 [2]試験の点数データ配列を用いて、10点間隔ごと及び満点(100点)にいくつのデータがあるか 書き出すプログラムhistgram.cを 書きなさい。 点数データ:int grade〔12〕={100、95、47、88、86、92、75、89、81、70、55、80}; 出力 0−9:0 10−19:0 20−29:0 30−39:0 40−49:1 50−59:1 60−69:0 70−79:2 80−89:5 90−99:2 100 :1 [3] 環境 [3.1] OS windowsXP: (Windows/Linux/等々) [3.2] Borland c++ compiler 5.5 [3.3] 言語:C [4] 期限: 今週の金曜日 [5] 今のところfor文とかポインタ配列程度の知識で 構造体とかそっちのほうは習っていません お願いします
#include <stdio.h> void h( int* sum, int* grade, int n ) { int i; for( i=0; i<n; i++ ) sum[ grade[i] / 10 ]++; } int main( int argc, char** argv ) { int grade[12] = { 100, 95, 47, 88, 86, 92, 75, 89, 81, 70, 55, 80 }; int sum[11] = {0}; int i; h( sum, grade, 12 ); for( i=0; i<10; i++ ) printf( "%d-%d:%d\n", i*10,i*10+9,sum[i] ); printf( "100:%d\n", sum[10] ); }
>>417 すいません
コンパイルしたらパラメータargc とargvはどちらも使用されない関数とかってエラー
がでたんですけど。
エラーじゃなくて警告だろ。 無視すればよい。
分かりましたありがとうございます。
最近グラフや表計算の問題が多いね
統計計算なんてCの最も不得意とするところだろうに…
>>416 #include <stdio.h>
#include <stdlib.h>
int grade[12]= {100,97,47,88,86,92,75,89,81,70,55,80};
int main(int argc, char *argv[])
{
int histgram[11]={0};
int i;
for(i=0; i<12; i++)
histgram[grade[i]/10]++;
for(i=0; i<10; i++)
printf("%2d-%2d:%d\n",i*10,(i+1)*10-1,histgram[i]);
printf("%3d:%d\n",i*10,histgram[i]);
return 0;
}
なんで全角なんだよボケが
>>408 > いろいろ、突っ込んでいただけると助かります。
もう解答するな。
428 :
1/3 :2006/06/29(木) 14:52:16
[1] 授業単元:計算物理学 [2] fortranで書かれたプログラムをC言語でお願いします。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcpad [3.3] 言語: C [4] 期限:7月3日 C*** report2 C*** gakusekibangou DIMENSION YA(30),VA(30),YS(30),VS(30),YR(30),VR(30) OPEN(UNIT=16,FILE="dy.d") OPEN(UNIT=17,FILE="dv.d") G=9.8 R=0.3 CANALYTIC SOL. DO 10 K=1,30 T=K EP=EXP(-R*T) VA(K)=G/R*(1.0-EP) YA(K)=G/R*T-G/R/R*(1.0-EP)
429 :
2/3 :2006/06/29(木) 14:52:56
10CONTINUE YS0=0.0 YS1=0.0 YS0=0.0 YS0=0.0 YR0=0.0 VR0=0.0 H=0.01 DO 20 K=1,3000 CSABUN T=0.01*K YS2=2.0*YS1-YS0+G*H*H-R*(YS1-YS0)*H VS2=(YS2-YS1)/H CRUNGE-KUTTA BK1=VR0 BM1=G-R*VR0 BK2=VR0+H*BM1/2.0 BM2=G-R*(VR0+H*BM1/2.0) BK3=VR0+H*BM2/2.0 BM3=G-R*(VR0+H*BM2/2.0) BK4=VR0+H*BM3 BM4=G-R*(VR0+H*BM3) YR1=YR0+H*(BK1+2.0*BK2+2.0*BK3+BK4)/6.0 YR1=YR0+H*(BM1+2.0*BM2+2.0*BM3+BM4)/6.0 IF(MOD(K,100).NE.0) GO TO 30
430 :
3/3 :2006/06/29(木) 14:53:56
KK=K/100 YS(KK)=YS2 VS(KK)=VS2 YR(KK)=YR1 VR(KK)=VR1 30 YS0=YS1 YS1=YS0 VS0=VS0 VS1=VS2 YR0=YR1 VR0=VR1 20 CONTINUE WRITE(17,100) DO 40 K=1,30 WRITE(17,150) K,VA(K),YS(K),VR(K) 40 CONTINUE WRITE(16,200) DO 50 K=1,30 WRITE(16,150) K,YA(K),YS(K),YR(K) 50 CONTINUE 100 FORMAT(5X,"T",5X,"VA",11X,"VS",11X,"VR") 150 FORMAT(2X,T3,3X,F10.5,3X,F10.5,3X,F10.5) 200 FORMAT(5X,"T",5X,"YA",11X,"YS",11X,"YR") STOP END
432 :
デフォルトの名無しさん :2006/06/29(木) 15:14:08
[1] 授業単元: 演習 [2] 問題文(含コード&リンク): ・整数の配列 data[10] に正整数が書かれているときm=maxx(data,10); でmに最大値を戻す関数を作成する。 ・data[10]に20〜60の乱数を書き込んだとき関数maxx()を用いて最大値を表示する。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:できればすぐ! [5] その他の制限:特にありません。宜しくお願い致します。
#include <stdio.h> #include <stdlib.h> int maxx(int a[],int n){int max=a[0],i;for(i=1;i<n;i++)if(max<a[i])max=a[i];return max;} int main(void){int a[10],i;for(i=0;i<10;i++)a[i]=rand()%41+20;printf("%d\n",maxx(a,10));return 0;}
434 :
デフォルトの名無しさん :2006/06/29(木) 15:22:39
東海大生がいるぞ
436 :
デフォルトの名無しさん :2006/06/29(木) 15:28:40
さ、コピペして出そうかな
>>431 typedef struct node *Tree;
というのに思いっきり違和感を感じました。
えと、ただそれだけの感想です・・・
よく使う手じゃないか?
>>438 capitalizeしているところに違和感を感じたということです・・・
440 :
デフォルトの名無しさん :2006/06/29(木) 15:41:44
[1] 授業単元:情報処理演習 [2] 問題文(含コード&リンク): 以下のプログラムを完成させよ 文字列を読み込む。 その中の文字をASCIIコード順にクイックソートで並び替えて、出力する [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Borland [3.3] 言語: C [4] 期限:明日 [5] その他の制限: 特にないです よろしくですm(_ _)m
443 :
デフォルトの名無しさん :2006/06/29(木) 15:52:00
444 :
436 :2006/06/29(木) 15:54:24
( ^ω^)
>>435 がネタかなって思って乗ってみただけだお
>>441 #include<stdio.h>
#include<stdlib.h>
int charcmp(const void* a,const void* b){return *(const char*)a-*(const char*)b;}
int main(void){char tmp[100];int len;fgets(tmp,sizeof(tmp),stdin);len=strlen(tmp);
tmp[--len]='\0';qsort(tmp,len,sizeof(char),charcmp);
printf("%s\n",tmp);return 0;}
447 :
428 :2006/06/29(木) 16:05:05
>>442 Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
report2.c:
警告 W8070 report2.c 71: 関数は値を返すべき(関数 main )
警告 W8004 report2.c 71: 't' に代入した値は使われていない(関数 main )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
ありがとうございます。
実行したらこういうエラーが出たんですけど、どうしたらいけますかね?
どこにエラーが出ているのかと。
>>437 俺が書いたとこの批判は多々あるだろうが
原文ママのところに違和感を感じられてもな
[1] 応用プログラム演習 [2] 問題文:人対人の簡単な対戦型オセロを作れ。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ: ビジュアルスタジオ2003 [3.3] 言語: Cのみ! [4] 期限: 2006年7月2日まで [5] その他の制限:ポインタくらい、できれば標準ライブラリのみ
>>449 正直すまんかった。
left_subtree, right_subtreeって何だよ!とかも思った(汗
452 :
グルド :2006/06/29(木) 17:09:42
>>452 ・・・・ごめんなさい、こういうときどんな顔すればいいのか、わからないの
>>446 ありがとうございます。アルゴリズムを説明していただけるとうれしいです
>>456 qsort(tmp,len,sizeof(char),charcmp);
のqsortがどこから出てくるか不明なんです・・・・
>>454 そういうときはね、このスレ以外の場所で質問するといいお ⊂( ^ω^)⊃
さぁ丸投げしてまったく分からない初心者よ、他のスレに飛び出て じゃんじゃん細かい内容の質問をしてきたまえ 恐れていたほかのスレへの流出を自ら招くとは・・・さすがだ
理解しようとして余所のスレに行くのは別に何の問題もないと思うんだが。 余所のスレで丸投げするのが問題なわけで。
内容理解しようとするのはえらいじゃん
>>457 #include <stdlib.h>
>>462 入力された文字列の改行コードをchopする必要があるよ。
>>464 省略部分上から順に。
void array_comp(int* peven,int* pminus,int* array,size_t size);
array_comp(&even,&minus,x);
void array_comp(int* peven,int* pminus,int* array,size_t size){int t;size_t i;
for(i=0;i<size;i++){if(array[i]<0)*pminus++;if(!(array[i]&1))*peven++;if(i<(size/2)){
t=array[size-i-1];array[size-i-1]=array[i];array[i]=t;}}}
>>462 ありがとうございます。こちらも参考にします
>>466 chopってなんでしょうか?入力データの改行コードはCRのみを用います
必死だな
>>467 error C2660: 'array_comp' : 関数に 3 個の引数を指定でき
ません
ってなってしまいます。
>>471 これか。
array_comp(&even,&minus,x,sizeof(x));
質問者は自分が求めた結果を出していない回答者がいても、不必要なレスはしないこと だそうです。っつか、さすがにトーマス氏もこれまでか・・・ 少しはできる人だと思ったが、他人をけなす態度からして、ただの厨房か
476 :
グルド :2006/06/29(木) 21:28:58
>>475 ありがとうございます><
本当に助かりました!!
477 :
462 :2006/06/29(木) 22:48:14
>>466 うほほ、普段getsと書いているところを、なんとなくfgets使ってみようかと
思ったのが間違いだった。
>>462 の
fgets(buf, sizeof buf, stdin);
を
gets(buf);
に修正してくれ。>質問者
478 :
デフォルトの名無しさん :2006/06/29(木) 22:52:18
1] ポインタと配列 [2]要素数nScores=13の配列scores〔〕={65,0,95,0,0,79,82,0,84,94,86,90,0}から0を 除去して要素数nScores=8の配列〔〕={65,95,79,82,84,94,86,90)を求める関数 RemoveZeroElements(array,n)を書きなさい main()では実行文により、0を除去した配列の要素数を求めて、ファイルにnScores,scores〔〕 を書き出すこと。 nScores=RemoveZeroElements(scores,nScores); [3] 環境 [3.1] OS windowsXP: (Windows/Linux/等々) [3.2] Borland c++ compiler 5.5 [3.3] 言語:C [4] 期限: 明日の朝 [5] 6月からC始めてちょうどポインタやったとこであまり深い知識 などはぜんぜんありません。よろしくお願いします。
わかりにくい文章だべな
[1] 授業単元:c入門 [2] 問題文(含コード&リンク):N個(マクロを使って特定の値に設定)の任意の整数の列を入力し、 最大値と最小値を求めるプログラムを作成すること。 ただし、配列を入力し、最大値と最小値を求める関数を作ること。 main()関数の中ですべて行ってはいけない。 [3] 環境 [3.1] OS:Linux/ [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 土曜日の12時 [5] void func() { } int main(void) という形かつポインタ、swapを使うようなのですがよくわからないです。 よろしくお願いします
>>478 元の配列を書き替えるのか新しく配列を作って写すのか
>>480 ポインタとswapをどう有効に使えばいいのか分からん
void minmax(int* array)
{
int i,min,max;
min = max = array[0];
for(i=1;i<N;i++)
{
min = (min > array[i])?array[i]:min;
max = (max < array[i])?array[i]:max;
}
printf("MIN = %d\n",min);
printf("MAX = %d\n",max);
}
void minmax(int* array) { int i,*min,*max; min = max = array; for(i=1;i<N;i++) { min = (*min > *(array+i))?array+i:min; max = (*max < *(array+i))?array+i:max; } printf("MIN = %d\n",*min); printf("MAX = %d\n",*max); } 無理矢理ポインタを使うとこうかな ソートしないならswapなんて不要じゃ?
配列の中身をソートしろってことじゃないの
じゃあこうかいな void swap(int* i, int* j) { int temp = *i; *i = *j; *j = temp; } int* minmax(int* array) { int i,j; for(i=0;i<N;i++) { for(j=i+1;j<N;j++) { if(array[i] > array[j]) swap(array+i, array+j); } } printf("MIN = %d\n",array[0]); printf("MAX = %d\n",array[N-1]); return array; }
487 :
デフォルトの名無しさん :2006/06/30(金) 00:54:11
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): graph.txtにて表現されるグラフに対し、任意の2点間の道を 深さ優先探索により求めるプログラムを作成せよ ・始点はs、木の状態を保存するためにはfather[]配列を用いる ・辺の情報は、隣接行列adjacent[][]として記憶すること。また2次元ポインタとして定義すること [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 土曜日の12:00までです [5] その他の制限: なし graph.txtは↓です
488 :
487 :2006/06/30(金) 00:57:09
graph.txt 8 4 3 4 1 3 2 1 0 1 2 2 5 0 5 0 6 6 7 7 5 0 7 6 5 5 1 2 0 3 0 4 5 //1行目は点の数 //2行目以降は両端の点番号 どなたかよろしくお願い致します。
>>432 #include<stdio.h>
#include<stdlib.h>
#include<time.h>
int maxx(int data[],int num)
{
int i,j=0;
for(i=1;i<num;i++){
if(j<data[i]) j=data[i];
}
return j;
}
int main(void)
{
int data[10],i,m,min=20,max=60;
srand((unsigned)time(NULL));
for(i=0;i<10;i++) data[i]=min+(int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
m=maxx(data,10);
printf("%d",m);
return 0;
}
int i,j=0; for(i=1;i<num;i++){ if(j<data[i]) j=data[i]; } data[0]が最大の場合、正しくない
パクって適当に改造しときやした #include<stdio.h> #include<stdlib.h> #include<time.h> int maxx(int data[],int num) { int i,j=data[0]; for(i=1;i<num;i++){ if(j<data[i]) j=data[i]; } return j; } int main(void) { int data[10],i,m; srand((unsigned)time(NULL)); for(i=0;i<10;i++) { data[i]=rand()%41+20; printf("%d ",data[i]); // 配列を表示(不要ならこの行を消すこと) } printf("\n"); m=maxx(data,10); printf("%d",m); return 0; }
>>441 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
int asort(const void *i,const void *j)
{
return *(char*)i-*(char*)j;
}
int main(void)
{
char str[256];
int len;
gets(str);
len=(int)strlen(str);
qsort(str,len,sizeof(char),asort);
printf("%s\n",str);
return 0;
}
495 :
デフォルトの名無しさん :2006/06/30(金) 12:05:41
宿題もないし、暇だからフリーソフトでも作るか
497 :
ジャック :2006/06/30(金) 13:59:19
みなさんいろいろ忙しいとは思いますが、本当によろしくお願いします。 私にはまったくりかいできませんでした。 課題:自分で定義した立体図形の透視投影像を描き、これを印刷する。 課題説明 ・立体図形は頂点および稜線を定義し、線図形として描く (ワイヤーフレームモデル)。 ―頂点の定義 1,(x1,Y1,Z1) 2,(x2,Y2,Z2) ―稜線の定義 稜線1,(1,2) 稜線2,(2,3) ・立体図形は世界座標系の原点の近傍で定義する。 ・支店を適当な世界座標(x,Y,Z)に置き、ここから世界座標の原点を見る。 ・投影面の始点からの距離Dおよび投影面のサイズSは適当に決める。 ・世界座標系による立体のデータを視点座標系に変換し、これを透視投影し投影図を求める。 ・隠線処理、ビューボリューム、3次元クリッピングの処理は行わなくてよい。ただし、 データが画像からはみださないように注意する。ビューポートのサイズを位置は任意に決める。 ・プログラムはC言語で作成し、実行する。 課題補足 ・対象3次元図形の定義データ(頂点表、稜千表)をプログラム中に埋め込まず、別のファイルからデータとして読み込むようにすること。 ・必ず、斉次座標系、行列による座標変換・幾何変換の考え方を使うこと。(ビューイング変換と透視投影変換を行列を使って表現しプログラムすること。 そうしないと一般的なプログラムにならない。) ・座標変換・幾何変換の処理は「関数」としてプログラムする。変換の合成は、それぞれの「変換行列の積」としてプログラムする。 ・プログラムは理解しやすいように書く。 (コメントを入れる。変数の定義をわかりやすくするなど)
つ【質問テンプレ】
499 :
ななつさん :2006/06/30(金) 14:54:25
日本語の音韻の特徴のひとつである「拍(モーラ)」について、 他言語の音節構造との違いを示しながら説明してほしいんですけど・・ あと、拍(モーラ)という音節構造の成立に大きな影響を及ぼした現象についても おしえてくださーーい!!! 切羽詰まってます。 誰かお願いします。
500 :
デフォルトの名無しさん :2006/06/30(金) 15:31:39
[1] 授業単元:演習 [2] 問題文(含コード&リンク):2 次方程式ax2+bx+c=0 の解を求めるプログラムを作成しなさい.ただし,プログラムは,main()に加えて次の4関数で構成されるものとします. ・判別式を計算する関数(戻り値なしの型で,参照渡しによって引数を与えること). ・判別式が0 の場合の解を計算する関数(戻り値ありの型で,解はmain()で出力させる.参照渡しによって引数を与えること). ・判別式が正の場合の解を計算する関数(戻り値なしの型で,解はmain()で出力させる.参照渡しによって引数を与えること). ・判別式が負の場合,「解無し」と表示する関数. <入出力例> Please input coefficients! a=2 b=-10 c=12 Solutions of (2.000000)*x^2+(-10.000000)*x+(12.000000) are calculated. Double solutions First solution: x=3.0000 Second solution: x=2.0000 Please input coefficients! a=3 b=18 c=27 Solutions of (3.000000)*x^2+(18.000000)*x+(27.000000) are calculated. Single solution: x=-3.0000 Please input coefficients! a=1 b=1 c=9 Solutions of (1.000000)*x^2+(1.000000)*x+(9.000000) are calculated. No solutions due to negative discriminant value! [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン:gcc[3.3] 言語: C [4] 期限: 7/4 [5] その他の制限:特にありませんよろしくおねがいします
>>499 ひょっとして C 言語と比較すればおっけ?
>>494 君いつも昼間からいるよね?何してる人?
503 :
デフォルトの名無しさん :2006/06/30(金) 17:09:48
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): 簡易データベース
http://briefcase.yahoo.co.jp/gavagava12のa.htmlです 。
[3] 環境
[3.1] OS: UNIX
[3.2] gcc バージョンは分かりません。m(_ _)m
[3.3] 言語: C
[4] 期限: 2006/7/14 17:00
[5] その他の制限: ないです。。
構造体のメンバー数を可変にするとこと、コマンドを読み込むところで
手詰まってます。
よろしくお願いします。
504 :
デフォルトの名無しさん :2006/06/30(金) 17:38:11
[1] 授業単元:プログラム演習 [2] 問題文(含コード&リンク): コマンドライン引数にオプションを指定して、-を除いた文字を返す関数を作れという問題です。 例えば、 % ./work.exe -h と入力するとhと表示したいです。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc(バージョンはわかりません) [3.3] 言語: C [4] 期限: 無期限 [5] その他の制限: ポインタを使った文字列操作の課題です。 main関数:int main(int argc, char **argv); -を除いた引数を戻す関数:char get_option(char *) と指定されています。 自分でやってみてもセグメントエラーが出まくって、もうワケわかめです。 どうかお願いします。
>>504 #include<stdio.h>
#include<string.h>
char get_option(char* opt){size_t i;
for(i=0;i<strlen(opt);i++)if(opt[i]!='-')return opt[i];return 0;}
int main(int argc,char* argv[]){size_t i;
for(i=1;i<argc;i++)printf("%c\n",get_option(argv[i]));return 0;}
[1] 授業単元: プログラミング言語論 [2] 問題文(含コード&リンク): 次のプログラムはfloat型の二点の座標をx座標、y座標を表すメンバーとしてもつ構造体を前提としたものである。 二点を与えてその2点間の距離を求めるプログラムを関数distance()を定義することにより完成させなさい。 # include <stdio.h> # include <math.h> typedef struct point { float x; float y; } point_t; float distance(point_t point1, point_t point2) { /* この部分を作成する */ } int main(void) { point_t p1, p2; p1.x = 10; p1.y = 20; p2.x = 10; p2.y = 30; printf("%f\n", distance(p1, p2)); } HINT: sqrt(x) は xの平方根を値として返す関数である。 また、コンパイル時には gcc xx.c –lm –o xx のようにする [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:コンパイラって何?いつもemacsでソースコードを書いて、「gcc o- プログラム名 プログラム名.c」ってやってコンパイルしています。 [3.3] 言語: C言語 [4] 期限: もう過ぎてます(出てるの知らなかった)。減点になりますが出さないと単位もらえません。少しでも早いほうが良いです [5] その他の制限:特になし。 よろしくお願いします。
507 :
デフォルトの名無しさん :2006/06/30(金) 18:03:48
>>505 ありがとうございます!
1つ質問いいですか?
int main(int argc, char *argv[]);
と
int main(int argc, char **argv);
って同じものですか。
char **argvというのは初めて見る形で、教科書にも載ってないのです・・
>>506 return sqrt((point1.x-point2.x)*(point1.x-point2.x)+(point1.y-point2.y)*(point1.y-point2.y));
510 :
506 :2006/06/30(金) 18:12:11
>>508 ありがとうございますm(_ _)m。早いですね。助かりました。
513 :
デフォルトの名無しさん :2006/06/30(金) 19:19:33
[1] 授業単元: 計算物理 [2] 問題文:速度に比例する抵抗がある場合の落下の式 d^2y/dt^2=g-rdy/dt を(i)解析的に(A)2階の差分近似で(B)ルンゲ・クッタ公式 で解け。ただし、g=9.8 r=0.2〜0.3とおき、初期条件はt=0のとき y=0、dy/dt=0とする。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Borland [3.3] 言語: C/C++ [4] 期限:7/8 難しいとは思うのですがお願いしますm(_ _)m
>>512 ほぉ、ご丁寧に半角スペースをHTMLでも使われるnbspに変換してくれるスクリプトを
ご用意して下さったわけね。ご苦労さま。
ちとテスト
>>512 お、こりゃいいね
プログラムにおいて見やすさって重要だからね
これでちゃんと変換して貼れば無駄なミスが減るだろう
俺はよくTABキー使ってプログラム組んでるんだが
ここに貼った時に文字がくっついちゃって
プログラム自体を手直ししないと使えない、という事態に陥ったからなあ
復元はできないの?
518 :
487 :2006/06/30(金) 20:16:21
:%s/ /\ /g :%s/ / /g
520 :
519 :2006/06/30(金) 21:52:11
orz
>>517 サーバは、複数のクライアントの要求を同時に受け付けなきゃいけないの?
それとも、1対1でOK?
522 :
517 :2006/06/30(金) 22:06:21
K-1見てたら、1対1でKOです。っと読んでしまった俺ガイル
>>517 CPUのアーキテクチャが異なるため、直接添付のLMを実行できないんだけど、
このサーバは終了しても各ユーザの正解数を保持してる?
それとも起動するごとにリセットされる?
>>515 使ってる2chブラウザによっては、そのコメントをコピペするとスペースがスペースじゃ
なくなる場合があるから、やらないほうがまし。
526 :
517 :2006/06/30(金) 22:52:27
>>524 サーバは起動する毎にリセットされるようです。
よろしくお願いします。
誰かのソースをコンパイルする時にnbspとかついてると 取るのに苦労するんだが・・・
IEとかでスレを開きなおしてコピペするしかないね クソ面倒くさいけど
あ
あ
自分にレス付けてこうすりゃいいんじゃね?
>>529
[1] 授業単元:プログラミング言語C
[2] 問題文(含コード&リンク):
ttp://www.uploda.org/uporg430792.pdf [3] 環境
[3.1] WindowsXP
[3.2] gcc
[3.3] C
[4] 期限:7月3日の早朝まで
[5] その他の制限:特にありませんが、
問題文に明記されている関数を使わなければいけないらしいです。
2問と多いですが、どうか宜しくお願いしますm(_ _)m
別の人か?
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):以下にうpしました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2221.txt [3] 環境
[3.1] UNIX
[3.2] gcc
[3.3] C
[4] 期限:7月3日昼12時まで
[5] その他の制限:(どこまで習っているか、標準ライブラリは使ってはいけない等々)
今年の5月からスタートしたばかりなので今まで習っているところは
基本の四則計算、変数宣言とかの基礎の基礎、floatとかキャスト、if文、
while文、switch文、for文、配列と二次元配列です。
で、今習っているのが関数の最初の部分で関数の初歩の部分が課題になっています。
2問あるのですが自分ではどうしても出来ませんでした。
どなたかご教授頂けると幸いです。
>>536 (1)
#include <stdio.h>
void d2b(int n)
{
int i;
for(i=7; i>=0; i--)
printf("%d ",(n>>i)%2);
putchar('\n');
}
int main(int argc, char** argv)
{
int c;
char buf[128];
while(1)
{
printf("2進数に直したい10進数の正の整数を入れてください\n"
"負の数の場合は終了です\n");
scanf("%d",&c);
if(c < 0)
break;
d2b(c);
}
return 0;
}
シフトは駄目かな?
>>536 (2)
#include <stdio.h>
#include <math.h>
int isprime(int n)
{
int i=2;
if(n%i == 0)
return 0;
for(i=3; i<=sqrt(n); i+=2)
if(n%i == 0)
return 0;
return 1;
}
int main(int argc, char** argv)
{
int i=2,n=1;
printf("%4d ",i);
for(i=3; i<1000; i+=2)
{
if(isprime(i))
{
printf("%4d ",i);
if(((++n)%10)==0)
putchar('\n');
}
}
return 0;
}
激遅アルゴリズム
>>537 ありがとうございます。
えっとシフトというか習っていないものがちらほら…
charとか見たことないんですがどういう意味なのかちょっとぐぐってきます
>>542 自己レス
よくよく考えたら、isprimeの戻り値はflagに0か1を入れんでも
素数でなきゃreturn 1、素数だったらreturn 0でいけたね。
つーかよー
>>536 が知らない内容を使っても特に問題ないだろ
教えてるほうは知ってるんだから
ぼくがりかいできるはんいでとうあんをつくってください
だと?ふざけろ
>>544 レスするのも任意だから、お前みたいなのは来なくて良いよ
それから、質問者もそうだが、自分の意見の押し付けも無意味だから
素数か… 思い出すな、あの頃を…
そーっすね(遠い目)
昔はよく篩ったもんだ
>>548 を良く見たら、d2bにしてなかったね・・・だめぽ orz
まぁ、ヒントが出ているだけマシか
553 :
デフォルトの名無しさん :2006/07/01(土) 06:11:28
早稲田でそれか・・・ちょっとびっくり。見なかったことにしよう。
これはショボイなあ
まぁ、単位数の少ない授業の課題だから、問題はない。 説明の仕方もやり方もそれぞれやし。詰まらんところで楽をしていると その生徒が危ないのではないか?という要らん心配をしてもわしゃ困らんから良いのだが。
[1] 授業単元: 情報処理U(C言語プログラミング) [2] 問題文(含コード&リンク) ・三次元座標空間内で、(x,y,z)=(0,0,0),(1,0,0),(0,1,0),(0,0,1)の 四点を頂点とする角錐の体積を計算してください。 角錐の内部と外部の境界は、x+y+zです。角錐の内部であるための条件はx+y+z≦1 ・モンテカルロシミュレーションによって値を予測します。x,y,zをそれぞれ 0から1までの乱数とすると、3次元空間内の点(x,y,z)は(0,0,0),(0,1,0),(1,1,0),(1,0,0) (0,0,1),(0,1,1),(1,1,1),(1,0,1)を頂点とする立方体の内部を「均等に」分布します。 角錐内の点の数/点の全数=角錐の体積/立方体の体積 ・体積は1/6になるはずですが、どれだけ近づきますか。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:2006年7月1日23:59まで [5] その他の制限: 以前授業で作った円周率を求めるモンテカルロシミュレーションの プログラム↓を修正して作成してください
558 :
デフォルトの名無しさん :2006/07/01(土) 11:18:57
/* program: mcpi.c, モンテカルロ法による円周率の評価 */ #include <stdio.h> #define LAMBDA 843314861L #define RANCONST 453816693L #define RANDOM_INIT_VALUE 198313L #define RAN2_32 4294967296.0 #define LOOPCOUNT 10000 #define LOOPSTEP 1000 main() { int i, CircleCount=0; float x, y, random(void); for (i=1; i<=LOOPCOUNT; i++) { x = random(); y = random(); if (x*x + y*y <= 1.0) CircleCount++; if (i % LOOPSTEP == 0) printf("%7d times pi=%f\n",i, 4.0*CircleCount/(float)i); } } float random(void) { static unsigned long x = RANDOM_INIT_VALUE; x = LAMBDA*x + RANCONST; return (float)x / RAN2_32; } 経済学部の選択必修の課題なんですが数学苦手なんで意味わかりません。 ボスケテ(;´д⊂)
経済学部なのにプログラミングやるの?
>>557 #include <stdio.h>
#define LAMBDA 843314861L
#define RANCONST 453816693L
#define RANDOM_INIT_VALUE 198313L
#define RAN2_32 4294967296.0
#define LOOPCOUNT 100000
#define LOOPSTEP 10000
int main(){
int i, CircleCount=0;
float x, y, z, random(void);
for (i = 1; i <= LOOPCOUNT; i++) {
x = random(); y = random(); z = random();
if (x + y + z <= 1.0)CircleCount++;
if (i % LOOPSTEP == 0)printf("%7d times V=%f\n", i, CircleCount / (float)i);
}
return 0;
}
float random(){
static unsigned long x = RANDOM_INIT_VALUE;
x = LAMBDA * x + RANCONST;
return (float)x / RAN2_32;
}
プログラムなんて今どき小学生でもやってるべ
562 :
487 :2006/07/01(土) 12:07:33
土曜日の12:00までならもう無理じゃん
564 :
536 :2006/07/01(土) 12:42:30
皆さんどうもありがとうございました。
ヒント: 554 -> 555:5分 566 -> 567:3分
ヒント:学歴コンプレックス
ヒント:swapの説明
次からテンプレ入れたほうがいいんじゃね? 「高偏差値な学校の方は、学校名を隠して質問してください。 回答者の反感を買うおそれがあります」
毎年変わるもんでもない内容だから、一度ネタが出ると 次の年からは同じものを出せばバレバレだよ
573 :
487 :2006/07/01(土) 14:04:18
>>563 >>487 には12:00までとありますが、今日中であればセーフなので、
どうかどなたかお願いいたします・・・
>>535 同人です。って言ったらヲタクみたいになっちまったじゃねーかよこの野郎!
577 :
487 :2006/07/01(土) 14:59:09
>>576 adjacent[][]は
int **adjacent
と定義するらしいです。
578 :
578 :2006/07/01(土) 15:25:04
説明になってないだろと思いつつ487を見てきた。 487が2次元ポインタをわかってないじゃないかw
579 :
578 :2006/07/01(土) 15:26:31
スマソ。スルーしてくれ
581 :
580 :2006/07/01(土) 17:00:50
おおっと。 sscanfで"n = "が抜けてるところがあるから補ってくれ。
582 :
デフォルトの名無しさん :2006/07/01(土) 17:06:39
なんか面白いものがないもんですかね
自主学習って何だよ?
>>583 んじゃ指定した年月のカレンダーを表示するプログラムを作って。
デフォで固定されている祝日も表示されるとなお良い。
つまらん お前の話はつまらん
おもしろい お前の話はおもしろい
>>583 は自分が解ける問題=面白い、解けない問題=つまらない
ってことだから、レベルの低いこいつにとってはその問題ですらつまらない
チャレンジして解ける見込みのある奴は面白いかもしれんが
ありきたりのプログラムを作っても飽きてくるでしょう
>>589 こいつ同じようなことばっか繰り返してるよな
うーん、答えがわかっちゃうと後は作業なんだよなぁ。
593 :
デフォルトの名無しさん :2006/07/01(土) 17:47:58
de ja vu?
>>591 こいつ同じようなことばっか繰り返してるよな
596 :
デフォルトの名無しさん :2006/07/01(土) 17:52:46
粘着
自分が気に入らない奴にとことん噛み付く厨房うぜぇ くだらねぇボヤキしているくらいならソース書いて出せやボケ
>>592 決まりきったアルゴリズム系とか数学的知識が絡むやつとか、
標準ライブラリ関数の再発明系とかな。
で、
>>517 のようなのをやってはみるのだが、途中で飽きちゃったりw
適度に面白みがあって、一時間以内で終わるものが俺の理想。
>>598 ええ、そういうことです。まったくもって。
>>601 そうやっていちいち自分が気に食わない奴に噛み付いてくる
お前が一番の粘着なんだが?
いい加減うざい、能力が低い奴が自分より下の奴を見て取る態度だな。
お前はろくな学校に通ってなかった20代前半のガキだな
>>603 そうやって何かとレスしないと気が済まないんだよなw
いつまでもやってろ、カス
605 :
デフォルトの名無しさん :2006/07/01(土) 18:17:13
ほっとけないスッドレ
自分を含めて、誰もが一番最後にレスをしないと気が済まない方々なのでした。
また、いつもの彼ですか
よっぽど自分が低学歴でバカだと気づかされたのが悔しかったようですね そういう余裕のない奴って、態度ですぐにバレるから笑えるw
>>611 低学歴が釣れましたwwwwwwwww
いつまでもやってろ、粘着はお前。オレは誰にも噛みついてないしwww
垂らした釣り針が厨房に噛みつかれて困ってるよぉ〜〜〜wwww
ここは釣りスレなの?
お気に入りの宿題がでない間は釣り・煽りスレです
そっか
また、いつもの彼ですか
彼はよくこんなことをするの?
cのみでワイヤーフレームってできるの
可能か不可能かで言えば可能じゃない?
622 :
517 :2006/07/01(土) 20:59:23
>>580 こんなに早くありがとうございます!!
ただ、すぐには動作確認できませんので、月曜に改めて報告させていただきます。
本当にありがとうございました!
623 :
デフォルトの名無しさん :2006/07/01(土) 21:30:37
λ,,,,,,λ ガオー! ∩`iWi´∩ λ,,,,λ グオー! ヽ |m| .ノ∩`iWi´∩ |  ̄| ヽ |m| .ノ | | | | U⌒U U⌒U
(((( ;゚Д゚)))ガクガクブルブル
626 :
557 :2006/07/01(土) 23:46:53
>>560 遅レスですが、ありがとうございました!
マジ助かりました( ´∀`)
628 :
627 :2006/07/01(土) 23:49:26
なんかSTEPとか書いてる部分があるのでSIZEに変更してくれ。 #コンパイルしてないのがバレバレ
630 :
487 :2006/07/02(日) 01:12:57
月曜日まででかまいませんので
どなたか
>>487 を・・・
パワポじゃなくてPDFだった
>>631 えっと、OSはLinuxなんですが・・・
>>630 このスレの中の人は
出題者がテンプレに従ってないとやらない人が9割
数百行を超えそうな(GUIとか)ものはめんどくさいのでやらない人が8割
知的欲求を刺激されるものだけを解く人が7割
数学的な知識を要するものは解けない人が6割
解けないけどやれるだけやって貼る人が1割
貼られた解答に難癖をつけるだけの奴が数名
なのでこんだけ長い期間放置されてるなら今後も放置されるよ
>>634 そういう解説をしたがる奴が1名
ってのが抜けてるぞ、おいw
636 :
487 :2006/07/02(日) 02:12:33
>>634 そうですか・・・
グラフの知識?とめんどくささが駄目なんですかね・・・
いやいや、ありがちなアルゴリズムだから興味がわかないんだよ、きっと。 知的欲求が満たされないってやつ。
日本語でアルゴリズムの説明をしてくれるなら、コードに落としてもいいよ。
>>487 ダイクストラ法使った幅優先探索だったら最短経路が求まるのにな。
深さ優先探索だったら
グラフの頂点数をn としたら、最長 n までの経路を求めればいいんだから
・スタート地点からとりあえず n 歩進んでみる。
・途中に目的地がなかったらバックトラックする。
でいいんじゃないの?
一歩進む関数を作って再帰にして上の手続きができるようにすればいいと思うけど。
>>640 そのページじゃ何も知らない人には無理ですよ・・・。
本屋に行って、Cのサンプル付のアルゴリズム本買ってきて、そのまま
丸写ししたほうが早いんじゃ・・・。
>>644 それ、
>この仕様は、LZ77 アルゴリズムとハフマン符号化を組み合わせた圧縮データの可逆圧縮データフォーマットを定義するもので、
だよ?
グダグダ言ってるくらいならソースを出せ、この週末厨めが
648 :
デフォルトの名無しさん :2006/07/02(日) 08:54:56
http://fhgi.2-d.jp/2-3.c.txt 【質問テンプレ】
[1] 授業単元:本による独学
[2] 問題文(含コード&リンク):
http://fhgi.2-d.jp/2-3.c.txt [4] 期限: 無期限
計算機科学の基礎的な質問かもしれませんがこのプログラム実行させると
『0-01111110-10000000000000000000000』といった出力を得られます
何故こうなるのかが分からないです
if (l%2 == 1) の1行に全てが詰まっているはずなのですが、
l(小文字のL)はを2で割っていくと余りは全て0になる気がするのですが
あとmemcpy()関数でなぜ型の違う値を代入しているのですか?
unsigned longの符号無し整数型にfloatの符号有り浮動小数点型を代入してるのが意味不明です
649 :
デフォルトの名無しさん :2006/07/02(日) 09:37:28
650 :
その1 ◆f0jFPqgkWg :2006/07/02(日) 09:37:54
[1] 授業単元: プログラミング演習 [2] 問題文:SQLもどきのコマンドを介して、データの追加・読込・削除等を行うことが出来る簡易データベースシステムをCプログラムにより作成する。 通常のデータベースでは、データはファイルに格納され、適宜メモリ上にロードして読み書き等が成されるが、 本課題では、メモリ上で構造体及びポインタによってテーブルを作成し、これに対してデータの追加・読込・削除等を行う。 [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン: cc か gcc [3.3] 言語: C [4] 期限: 2006年7月7日19:00まで [5] その他の制限: ・各テーブルは、1つの テーブル定義レコード と0個以上の テーブル値レコード により、構成される。 ・テーブル定義レコードは、テーブル名(文字列)、複数のフィールド名(文字列)、先頭のテーブル値レコードへのポインタから成る構造体であり、表の形式を規定するタイトル行に相当する。先頭のテーブル値レコードが存在しない場合は、ポインタはNULLとなる。 ・テーブル値レコードは、各フィールドに対する値(文字列)と、次のテーブル値レコードへのポインタから成る構造体であり、表の各データ行に相当する。 ・テーブル定義レコードも、テーブル値レコードも、必要に応じて動的にメモリ領域を確保し、不要になったら解放するものとする。 [必須基本機能] ・プログラム起動後はプロンプトが表示され、下記に示す必須コマンドを実行できること。 ・フィールド名やフィールド値で扱う文字列は英数字に限定してよい。
651 :
その2 ◆f0jFPqgkWg :2006/07/02(日) 09:39:04
[必須コマンド] 「create」…新たなテーブルを作成する。 % create table テーブル名 (フィールド名1,フィールド名2,‥,フィールド名n) また、既存の2つのテーブル(tab1,tab2)から新たなテーブル(tab3)を作成することも出来るものとする。 % create table テーブル名3 (tab1.フィールド名A = tab2.フィールド名B,tab●.フィールド名C,tab●.フィールド名D,‥) ここで、tab●.フィールド名○は、テーブル「tab●」のフィールド名「○」を示す。 tab1.フィールド名A と tab2.フィールド名Bは両テーブルを関連付ける共通のフィールド名とし、tab3における主キーとなる。 「drop」…テーブルを削除する。 %drop table テーブル名 「insert」…既存のテーブルに対して、テーブル値レコードを追加する。 追加する場所は任意で構わない。 なお、フィールド値1は主キーなので、重複追加はできない。 % insert テーブル名 values (フィールド値1,フィールド値2,‥,フィールド値n) 「update」…テーブル値レコードを更新する。 where以下の条件を満たすレコードについて、フィールド名A、フィールド名B、‥の値を更新する。 % update テーブル名 set フィールド名A = フィールド値A,フィールド名B = フィールド値B, ‥ where フィールド名X = フィールド値X 「delete」…既存のテーブルから、テーブル値レコードを削除する。 % delete from テーブル名 where フィールド名 = フィールド値 この場合、「テーブル名」において「フィールド名」が「フィールド値」であるレコードが削除される。where以下を省略した場合には、全レコードを削除する。
652 :
その3 ◆f0jFPqgkWg :2006/07/02(日) 09:39:41
「select」…テーブルデータを表示する。 % select フィールド名A,フィールド名B,‥ from テーブル名 where フィールド名X = フィールド値X この場合、「テーブル名」において「フィールド名X」が「フィールド値」である全レコードのフィールド名A、フィールド名B、‥の一覧が表示される。 where以下を省略した場合には、「テーブル名」における全てのレコードが表示対象となる。 また、最終レコードの後に、表示レコード総数を表示するものとする。 また、フィールド名Xを「*」とした場合には、全フィールドが全て表示されるものとする。 % select * from テーブル名 where フィールド名X = フィールド値X 「sort」…指定したフィールド名について、レコードの並び替えを行う。並び替えは辞書順とし、ASCの場合は昇順、DSCの場合は降順とする。 % sort テーブル名 by フィールド名 ASC 「d」…存在する全てのテーブル情報を表示する。 「h」…実装したコマンド、関数、諸機能の使い方が簡潔に表示される。 「q」…プログラムを終了する。 期間がが短くて、すぐ出来るようなプログラムではないですが、出来たところだけでも早めにUPして貰えると大変助かります。
>>648 丸投げ以外は他所へどうぞ。
memcpy()は代入ではなく、ビットパターンのコピーを行なっている。
654 :
デフォルトの名無しさん :2006/07/02(日) 10:16:57
[1] 授業単元: 理論演習 [2] 問題文:以下のプログラムについて、各自気になる点を指摘せよ #include <stdio.h> void process1(char *p);void process2(char *p); int main(void){ char str[80];int i; do {printf("MENU:\n1.Input characters by means of gets(), output themby means of putchar()."); printf("\n2.Input characters by means of getchar(), output themby means of puts()."); printf("\nPlease choose 1 or 2:"); scanf("%d%*c", &i); switch (i) { case 1:process1(str);break; case 2: process2(str);break; default:printf("Try again!\n");} } while (i!=1 && i!=2); return 0;} void process1(char *p) {int i=0;printf("Please input characters:"); gets(p);printf("You inputted the following:"); while (*p) { putchar(*p++);i++;} printf("\nThe reversed characters is as follows:"); for ( ; i>=0; i--) putchar(*p--); printf("\n");} void process2(char *p){int i=0; printf("Please input characters:"); do { *p++=getchar();i++;} while (*(p-1)!='\n'); *(p-1)='\0'; printf("You inputted the following:"); puts(p-i); } [3.1] OS: linux[3.2] コンパイラ名とバージョン: cc か gcc [3.3] 言語: C [4] 期限: 2006年7/5[5] その他の制限:自分では気になる点がわかりません、指摘お願いします
>>654 ざっと見た感じ。
・getsはオーバーフローの危険性から、使うな。
・ポインタの演算のしかたが気持ち悪い。PBase[pos]の形の方が個人的には好きだな。
・関数名をもうちょっとひねってくれ。
・個人的な趣味だが、whileではなくforで何とかなるところがそれなりにある。
656 :
487 :2006/07/02(日) 11:24:18
>>487 の深さ優先探索(スタック)は
(1)グラフから点を1つ選択し、始点とする
「探索済」ラベルをつける。連結成分数を1とする
(2)最も新しく「探索済」になった点を端点とする辺を選ぶ
(同様の辺がある場合は番号の小さい順)
(2-1)未探索の辺が存在する場合
その中から1つ辺を選択⇒「探索済」とする
もう一方の端点にラベルがついていなければ点に「探索済」ラベルをつける
(2-2)未探索の辺がない場合
(2-2-1)ラベルの付いていない点が存在⇒その中から1つ選択
⇒「探索済」ラベルを付ける⇒連結成分数を「+1」
(2-2-2)ラベルの付いていない点が無い⇒終了
(3)(2)を繰り返す
とのことらしいです。
657 :
654 :2006/07/02(日) 12:56:02
655さんありがとうございます もしよかったら具体的にプログラム化してもらえませんか・・・?
>>650 宿題だから、おもいっきり仕様を簡略化して、
・テーブル名は最大15文字
・フィールド名は最大15文字
・ひとつのテーブルの最大フィールド数は16個
・ひとつのフィールドの最大データ長は31文字
とかの制限を勝手に付けてもいいの?
# ちなみに、これ、作ります宣言じゃないから。
660 :
658 :2006/07/02(日) 15:07:35
661 :
デフォルトの名無しさん :2006/07/02(日) 16:03:04
>653?
662 :
デフォルトの名無しさん :2006/07/02(日) 16:13:40
[1] 授業単元:情報処理講義 [2] 問題文:微少区間の面積は dS = ( f(x(i)) + f(x(i+1)) ) dx / 2 であるので、積分区間[a,b]での積分値は、この区間を n 等分し、x(0) = a, x(n) = b として、微少区間毎に区分積分を行うことにすれば、 S = ( (f(a)+f(b))/2 + f(x(1)) + f(x(2)) + ... + f(x(n-1)) ) dx となる。 ex.3 f(x) = 1.0/(1.0+x*x) について、区間[0,1]の積分値を求めよ。 プログラム名:daikei.c 次回までに作成し、解が求まることを確認すること。 正解は 0.785398163 (pi/4) [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:cc [3.3] 言語:C [4] 期限:2006年7月4日まで [5] その他の制限:とくになし よろしくおねがいします
daikei.cはプログラム名じゃなくてソースコードのファイル名なんじゃないかと思うが
664 :
662 :2006/07/02(日) 16:38:37
>>663 そうです。僕らがプログラムを保存するときのファイル名ですから、プログラムの中身には関係ありません
>>662 #include <stdio.h>
#define STEP (0.000000001)
int main(){
double x;
double result=0.0;
for(x=0.0; x<1.0; x+=STEP){
result+=1.0/(1.0+x*x);
}
result/=1.0/STEP;
printf("%.9f", result);
return 0;
}
精度の問題で実行結果は 0.785398167 になる。
正解に9桁の精度を要求してるのがちょっときついな。
668 :
・∀・)っ-○◎● ◆toBASh.... :2006/07/02(日) 16:55:42
ループに小数を使うのはかなり違和感が
669 :
666 :2006/07/02(日) 16:57:29
俺もかなり違和感。だけど数学の定義にそってやるのがなるべく題意にそった答なんじゃないかと。 ってか俺悪魔の数字じゃね!?
【質問テンプレ】 [1] 授業単元: オペレーティングシステム [2] 問題文(含コード&リンク): httpプロキシ(http_proxy)を作成せよ ・forkにより子プロセスを生成することでリクエストの並行処理をサポートすること [3] 環境 [3.1] OS: windowsXP,cygwin [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語:C言語 [4] 期限: ([2006年07月16日23:59まで] [5] その他の制限: ファイル入出力、プロセス制御、パイプ生成に 関してはシステムコールを用いること。
>>666 (f(a)+f(b))/2 を引かないとだめだよ。
forの条件も x<=1.0 でないと。
673 :
662 :2006/07/02(日) 18:10:20
>>666 コンパイルはできたようですが実行しても何も表示されません。
+xやresult+やresult/や%.9fという表記は自分の授業ではやらないので、そこをどう変えたらいいのですか。
%.9fを%lfにするのはわかりますが・・・
[1] 授業単元: プログラミング言語 [2] 問題文:迷路の経路探索 1 迷路の形状を示すデータファイル名を引数とします. 2 迷路のサイズは10×10の固定とし,壁を1,通路を0,スタートを8,ゴールを9で与えます. 3 迷路の形状と経路が視覚的に分かるような出力をしなさい. 実行例 $ ./a.out maze.txt ********** *G+++* * * ****+* * * *++*** * * *+** * * ++* *** **+** * * * ++* * ** * *+++++S* ********** データ ファイル: maze.txt 1 1 1 1 1 1 1 1 1 1 1 9 0 0 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 8 1 1 1 1 1 1 1 1 1 1 1
675 :
674 :2006/07/02(日) 18:23:44
ヒント 迷路は2次元配列にすると簡単. 経路の情報を双方向リンクで記述すると探索しやすくなります. struct r_tag { int x ; /* x座標 */ int y ; /* y座標 */ /* 方向とか... */ struct r_tag preg ; /* 一歩前 */ struct r_tag next ; /* 一歩先 */ } route ; 3] 環境 [3.1] OS: Mac OS X [3.2] コンパイラ名とバージョン: gcc 3.3 [3.3] 言語: C [4] 期限: 7月4日 [5] その他の制限:ありません。 よろしくお願いします。
676 :
ぴょん♂ :2006/07/02(日) 18:26:24 BE:350310555-
どしたら いいびょん!? エラ〜内容: mapfile.hpp: In constructor `MapFile::MapFile()': mapfile.hpp:28: error: expected identifier before '{' token mapfile.hpp:28: error: expected `(' before '{' token ソ〜ス: class MapFile { public: MapFile(void) : data(NULL), #ifdef HAVE_MMAP mmap_fd(-1) #elif defined(_WIN32) hFile(0), hFileMap(0) #endif { } ~MapFile(); bool open(const char *file_name, unsigned long file_size); inline gchar *begin(void) { return data; } private: char *data; unsigned long size; #ifdef HAVE_MMAP int mmap_fd; #elif defined(_WIN32) HANDLE hFile; HANDLE hFileMap; #endif };
>>674 ゴールまでの道順も表示しろってことかな?
680 :
674 :2006/07/02(日) 21:04:37
>>677 はい。
スタートからゴールまでの道順を表示です。
681 :
650 ◆f0jFPqgkWg :2006/07/02(日) 21:24:36
>>658 さん、さっそく取り組んで貰えてありがとうございます。
>・テーブル名は最大15文字
>・フィールド名は最大15文字
>・ひとつのテーブルの最大フィールド数は16個
>・ひとつのフィールドの最大データ長は31文字
このくらいの制限であれば何の問題もないです。
682 :
670 :2006/07/02(日) 22:09:14
>>679 特に指定がないので最小限でよいと思います。
685 :
デフォルトの名無しさん :2006/07/02(日) 22:52:10
>>681 結構見てる人いたりするから、プログラムかぶって
落とされるっていうのは気をつけた方が良いと思うよ^^
むしろ問題作ってるセンセがこのスレまで出張してきてお勉強教えてるなんてこともあるみたいだからねw
687 :
662 :2006/07/02(日) 22:59:19
>>686 俺はTAやってるけど、俺が受け持ってる講義の問題なんて一つも見たことない。
689 :
デフォルトの名無しさん :2006/07/02(日) 23:02:43
[1] 授業単元:言語論 [2] 問題文(含コード&リンク): 整数の数字の合計を計算するプログラムを書きなさい。 例えば2155の数字の合計は2+1+5+5で13です。 つまり2155とタイプしたとき13と出てくるプログラムであればよろしい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 火曜日 よろしくお願いします。
全角はメンドイなぁ〜
2155はめんどうだな。2155なら楽なのに
693 :
689 :2006/07/02(日) 23:10:08
半角です、すみません。
Linuxってことは文字コードはEUCか
695 :
・∀・)っ-○◎● ◆toBASh.... :2006/07/02(日) 23:11:45
それはアプリによるんじゃね?
696 :
デフォルトの名無しさん :2006/07/02(日) 23:14:22
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 浮動小数の計算ができる、ある種の電卓をつくる.電卓に与える指示は常に2つのパラメータからなり, 数 命令 という形式で与える.命令の種類は以下の通りである. * S: 値を電卓にセットする * E: 計算を終わる * +: 電卓にある値と,与えた数を足し算して、その値をセット * -: 上と同様に引き算をする * *: 上と同様に掛け算をする * /: 上と同様に割り算をする 0による割り算,未定義の命令を使用したときにはerrorを表示すること. (error表示のあと,プログラムは終了せず次の入力を待つ.) 終了時には「End of Calculations.」と表示すること. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 7月3日午後10時まで お願いします。
697 :
670 :2006/07/02(日) 23:16:09
>>682 自分で最小限の機能といいましたが、指定がないのでプログラムを組んで下さる方の判断に任せます。
>>689 #include<stdio.h>
#include<stdlib.h>
int main(){
char tmp[80];
gets(tmp);
printf("%d\n",strtol(tmp,NULL,47)%46);
return 0;
}
699 :
689 :2006/07/02(日) 23:28:03
>>698 実行結果で、整数の合計が0になってしまうのですがどうしたらいいのでしょうか?
>>699 んーなんでだろ。
原因わからんから真面目に実装してお茶を濁してみる。
#include<stdio.h>
#include<stdlib.h>
int main(){
unsigned x=0,y;
scanf("%u",&y);
do x+=y%10;while(y/=10);
printf("%u\n",x);
return 0;
}
701 :
689 :2006/07/02(日) 23:40:10
>>700 実行できました!ありがとうございました。
>>689 #include <stdio.h>
#include <string.h>
main() {
char str[100];
int i,n,tmp=0;
gets(str);
n=strlen(str);
for(i=0; i<n; i++)
tmp += str[i]-48;
printf("%d",tmp);
}
703 :
689 :2006/07/02(日) 23:41:50
>>700 man見たら、strtolのbaseは36までしか使えないみたい。
strtol(tmp,NULL,36)%35
にすれば良さそう。
9999が計算できなくなるけどw
>>705 あー基数に制限があるのかー。残念。
ま、最低なコードだから書けなくても良いかw
707 :
662 :2006/07/03(月) 00:20:06
708 :
674 :2006/07/03(月) 00:39:45
>>707 #include <stdio.h>
#define N 10000
#define XS 0.0
#define XE 1.0
double f(double x) {return 1.0 / (1.0 + x*x);}
int main()
{
double x1, x2, s, dx = (XE - XS) / N;
int i;
s = 0.0;
for (i=0; i<N; i++) {
x1 = XS + i*dx;
x2 = x1 + dx;
s += f(x1) + f(x2);
}
s = s * dx / 2.0;
printf("ans = %12.9f\n", s);
return 0;
}
710 :
658 :2006/07/03(月) 00:52:16
>>681 ちょっとデータ構造間違っちゃてたけど、最後まで見えたから、火曜日の夜くらい
までには出来ると思うよ。多分最後まで飽きないと思う。
711 :
デフォルトの名無しさん :2006/07/03(月) 01:00:38
[1] 授業単元:プログラミング1 [2] 問題文(含コード&リンク): 任意のファイルからテキストを読み出し,左から0で詰めた4桁の行番号を先頭に付加して表示するプログラムを作成しなさい. 一行の長さは最大255文字として仮定してよいものとする。ファイル名はプログラム実行後, 最初にユーザによって与えられるものとする.オープンが成功しない場合には, errorと表示し プログラムの実行を中止すること. 実行例 [xxxxxx@C*LPC* ~/pp11]% ./lnum hello.txt 0001: Hello world. 0002: This is test data. [xxxxxx@C*LPC* ~/pp11]% ./lnum * error [xxxxxx@C*LPC* ~/pp11]% [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 今日中 よろしくお願いします
>>711 #include<stdio.h>
int main(){
int i=0;
FILE*fp;
char tmp[257];
gets(tmp);
fp = fopen(tmp,"r");
if(!fp){printf("error\n");return 8;}
while(fgets(tmp,sizeof tmp,fp))
printf("%04d: %s",++i,tmp);
return 0;
}
713 :
696 :2006/07/03(月) 01:11:02
どなたか696わかる方がいらっしゃればお願いします。
return 8 ってなんやねんな気持ち悪い
715 :
デフォルトの名無しさん :2006/07/03(月) 01:11:45
>712さん 711です。ありがとうございました。
716 :
デフォルトの名無しさん :2006/07/03(月) 01:18:21
【質問テンプレ】 [1] 授業単元: 数値解析 [2] 問題文(含コード&リンク):ガウス法で連立方程式を解く際に ピボット選択する意味を考察せよ。 [3] 環境 [3.1] OS: Windows) [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語:どちらでも可 [4] 期限:2006/07/3 2:00まで [5] その他の制限: なし
718 :
674 :2006/07/03(月) 01:38:55
>>674 誰かお願いします。
ほんとにわからなくて困ってます。
>>718 こういうのは確かint xxx(int x,int y)な関数を作って、上下左右に自分を呼び出して探索する。
これから書いてみます。
720 :
662 :2006/07/03(月) 02:04:40
>>658 さん、本当にありがとうございます。
こんなにも早く完成できるとは思ってもいませんでした。
お陰で〆切まで時間がちょっと出来たので、自分で理解できるように最善の努力をするつもりです。
あと一つお願いがあるのですが、
>>685 付近のレスが身内か教授の可能性がしてきたので、ちょっと怖いのです。
なので、アップローダーにUPせずに、mailでソースコードを添付して送って貰えると助かります。
大変なお手数をお掛けしますが、出来ればで良いのでお願いします。
自分勝手すぎるぞ 身内の心配するなら最初から来るな
>>724 はあ?今までにかなりのソース出してきた俺にむかってなにいってんだ?
726 :
・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 :2006/07/03(月) 03:59:22
実績あるかないかなんて名無しで証明しようと思うほうが莫迦です
>>725 バカじゃね?お前が出した証拠もなければ出したとしても
こんなところでは認められないし威厳もないよ?
ガキがいきがっているとしか思われないってことw
証明は自分がわかってりゃそれでいいんだよ 雑魚は消えろ
>>728 そうだよ?何当たり前、わかりきったこと言っていきがってんの?
わかってんならソースを出せよ、出さなきゃその証明すらできないしw
なんなら、コテハンでも名乗れば?
>>730 必死だなw
お前は初心者や質問する場所で自分はできると思い込んでいるだけ
くだらねぇレスするくらいなら消えろ、クズ
732 :
このスレの趣旨を分かってないバカ :2006/07/03(月) 04:13:38
725 名前:デフォルトの名無しさん 投稿日:2006/07/03(月) 03:48:50
>>724 はあ?今までにかなりのソース出してきた俺にむかってなにいってんだ?
728 名前:デフォルトの名無しさん 投稿日:2006/07/03(月) 04:08:15
証明は自分がわかってりゃそれでいいんだよ
雑魚は消えろ
730 名前:デフォルトの名無しさん 投稿日:2006/07/03(月) 04:11:25
>>729 文盲?あんた黙ってた方がいいよ
>>731 あまり笑わせるなよ
こんな時間に腹かかえてわらったよ
はあ?今までにかなりのソース出してきた俺にむかってなにいってんだ? はあ?今までにかなりのソース出してきた俺にむかってなにいってんだ? はあ?今までにかなりのソース出してきた俺にむかってなにいってんだ? はあ?今までにかなりのソース出してきた俺にむかってなにいってんだ? ↑こいつ最高にアホ
このスレの趣旨とやらをきかせてもらおうかwwww
自演はそこまでだ
>>737 で?このスレの趣旨とやらをきかせてもらおうかwwwwwwwwwwww
>C/C++の宿題を片付けます
>気に入らない質問やその他や発言はスルーの方向で。
スレタイにも
>>1 にも書かれているのに理解できないとは
日本語が理解できない在日か・・・?
何しにこのスレに来てんだろうね、このバカは・・・
しかも、自分が誰かも分からない状況で、どんなソースを出したか示せず
権威を主張し始めているよ。そういう奴は井の中の蛙で終わるちっぽけな存在に過ぎん
>>740 お前、劣ってるからといって、あまり妬くなよ
おまえのような下等な人間はそれなりに世の中で必要なんだよ
また彼が来たのか?こんな時間から昼間にも書き込みか。 完全にニートだな。このスレに常駐して自分より劣っていると思う人間を見て安心したいのか?w
>>742 彼って誰だ
まあその彼とやらと同一として気が済むならそれでいいんじゃないかな
久々の連休だ、もっと楽しませてくれ
↑最後まで何か書かないと気が済まないキチガイ
↑最後まで何か書かないと気が済まないキチガイ
741 名前:デフォルトの名無しさん 投稿日:2006/07/03(月) 04:36:32
>>740 お前、劣ってるからといって、あまり妬くなよ
↑それはお前、そしておまえのような下等な人間はそれなりに世の中で必要なんだよ
最後まで何か自分の気に食わない意見を言う奴を叩かないと
気が済まない精神年齢の低いキチガイ↓↓↓↓
え?オレ?
>>746 あまり自分を責めるな
自殺するまえに精神科でも行けよ?
あれ?まだ連休とかボケかましたニートが必死こいて 過去にくだらねぇソースを出した程度で自分が誰よりも立場が上だと勘違いして 素性の分からない名無し相手に罵倒してんの?恥ずかしいねぇ・・・ オレもソースは出しているけど、こんな場所で出される問題を答えたくらいじゃ 他の回答者に対してお前よりオレの方が優秀だなんていわないけどなぁ。 ソースを出してもいないのに、ここでバカみたく自分に権威があるみたいに 俺に向かって何を言っているなんていっても無駄って気づけよ・・・
751 :
719 :2006/07/03(月) 05:21:40
752 :
751 :2006/07/03(月) 05:25:33
>>751 最後から五行目の所
... ((argc != 1) ? ... じゃなくて ... ((argc > 2) ? ... だった
753 :
719 :2006/07/03(月) 05:46:52
>>751 何度もすまない
・最後から五行目の所は ... ((argc < 2) ? ... です
・readmap中の(i++)はiに置き換える
・で whileの閉じるところにi++をつけなおさないと動かない
・switch以下二行はなくていい
おいおい、今日から月曜だぞ。なにやってんだw
>>674 どう見ても同じ大学です
>>751 おかげで助かりました674じゃありませんがお礼を・・・
ありがとうございましたー
TAとしては、ここにでてきたコードがそのまま提出されてきたら×に せざるを得ないです(採点もやっているので)。
またアイツか。 飽きもせずよくやるよ、全く。
アップローダにソースをアップした場合は、直リンしましょう。
759 :
674 :2006/07/03(月) 09:06:00
【授業単元】C言語 プログラミング 【環境】Visual Stdio.NET2003 【OS】Windows XP 【提出期限】7月4日 【課題内容】10バイトのメモリ容量を確保し、その領域に 文字列"Allocate"を代入せよ。 ただし確保した領域はプログラム終了前に開放すること
「動的に」と書いてないからchar str[10]="Alloc(略
【授業単元】C言語 プログラミング 【環境】Visual Stdio.NET2003 【OS】Windows XP 【提出期限】6月26日 【課題内容】10名の学生の視力が以下の表の通りだったとする。 このデータを構造体に格納し、 構造体単位で新規ファイル書き込むプログラムを作成せよ 学籍番号 1 2 3 4 5 6 7 8 9 10 右目視力 1.5 2.0 0.7 1.0 0.2 1.5 0.8 0.1 2.0 1.5 左目視力 1.5 1.0 0.5 0.7 0.5 1.0 0.7 0.2 1.5 2.0
一つの新規ファイル?10個の新規ファイル?
764 :
デフォルトの名無しさん :2006/07/03(月) 13:33:52
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):2つの配列a[i][j]とb[i][j]に数値を入力し,各要素の和を求めるプログラムを作ってください。 [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: c [4] 期限: 明日 [5] その他の制限:ナシ
[1] 授業単元:情報処理基礎演習 [2] 問題文:氏名処理プログラム キーボードから姓、名を空白1文字で区切ってローマ字で入力(例えば"Yamada Taro") し、これに対して次のような4つの処理を行うプログラムを作成してください。 1、姓と名を分けて表示(例えば、姓:Yamada 名:Taro) 2、姓と名の文字数を表示(例えば、姓:6文字 名:4文字) 3、姓と名を逆にして表示(例えば"Taro Yamada") 4、イニシャルを表示(例えば、"T.Y.") ヒント・注意 1、入力される文字数は不定なので、配列の要素数は十分余裕のある数 (例えば 100 個)で宣言してください。 2、姓と名の区切りをどのように見つけるかがポイントです。 3、姓名の入力用、姓用、名用にそれぞれ配列を用意すると 効率的に処理できます。 4、姓と名に空白が複数入っても処理できるプログラムにしてください。 5、姓、名の先頭文字を大文字に自動修正するプログラムにしてください。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:7月5日17時まで
766 :
デフォルトの名無しさん :2006/07/03(月) 14:23:08
[1] 授業単元: プログラミング [2] 問題文:階乗を計算するdoubleがたの関数を使い、1から10までの階乗を表示するプログラムを作成して ください。因数を使わないで、外部変数を使って、main関数からユーザー関数に、1から10までの値を送ってください [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 今日3時 [5] その他の制限:お願いします。私にはできません;;
なぜわざわざマルチポストするのかね
>>766 #include <stdio.h>
double kaijo(double*,int*);
int main() {
int i;
double sum=1;
for(i=1; i<=10; i++)
printf("%d! = %lf\n",i,kaijo(&sum,&i));
}
double kaijo(double* sum,int* i) {
return (*sum)*=(*i);
}
>>766 すまそ、外部変数使ってなかったからこうなるか?
#include <stdio.h>
double kaijo(int);
double sum=1;
int main() {
int i;
for(i=1; i<=10; i++)
printf("%d! = %lf\n",i,kaijo(i));}
double kaijo(int x) {
return sum*=x;
}
今日3時過ぎたーーーータイムアーーープ!
>>765 #include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char name1[20],name2[20];
scanf("%s%s",name1,name2);
printf("%s %s\n",name1,name2);
printf("姓 : %d文字\n名 : %d文字\n",strlen(name1),strlen(name2));
printf("%s %s\n",name2,name1);
printf("%c.%c\n",toupper(name1[0]),toupper(name2[0]));
return 0;
}
773 :
デフォルトの名無しさん :2006/07/03(月) 15:43:02
775 :
487 :2006/07/03(月) 15:55:15
1] 授業単元: コンピュータ基礎 [2] 問題文(含コード&リンク): 1. プログラムの冒頭に float 型の配列 data が宣言されている。初期値が 設定されるが、最後の値は負になっている。 2. プログラムは配列 data の内容が始めて負になるまで順に出力し、その後に 平均値を出力して停止する。 3. data の内容が無い時、つまり data[0]<0 の時は何も出力せずに停止 する。 4. 異なるデータ列を処理したい場合、配列 data の初期化の文以外は変更せ ずにプログラムが動作すること。 例 data が次の宣言の時、出力は以下のようになる。 宣言 float data[]={0.5, 1.5, 2.5, -1}; 出力 0.50000 1.50000 2.50000 平均 1.50000 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 明日(4日) [5] その他の制限:
777 :
696 :2006/07/03(月) 16:26:44
何度もすみません。696に書き込んだものです。 どなたかわかる方いらっしゃいますか? 特に昨日「ちょっと待ってて」と言って下さった方、今日の夜中まで待っていますので お願いします。
>>776 #include <stdio.h>
int main(){
int i;
float data[] = {0.5, 1.5, 2.5, -1}, sum = 0.0;
printf("出力\n");
for(i = 0; data[i] >= 0; i++){
printf("%.5f\n", data[i]);
sum += data[i];
}
if (i != 0) printf("平均 %.5f\n", sum / (float)i);
return 0;
}
最近催促する奴が増えたな。逆効果なのに。
>>775 やってみる
$ path graph.txt 1 4
0->4: 0->1->4
出力はこんな感じでいいの?それとも片っ端から列挙?
783 :
487 :2006/07/03(月) 17:18:23
>>782 そんな感じ(前者)でお願いいたします。
このままフェードアウトするのもなんなので、見通しだけ書いとく。 update: find_record_set()して、そのデータを直接書き換えれば、updateしたことになる。 create table select: find_record_set()をごにょごにょすれば、なんとかなると思う。 sort: リスト構造のソートだからなんとかなるでしょう。
786 :
696 :2006/07/03(月) 18:32:14
>>781 ありがとうございます!
実行したとき始めに0.000000と出てしまうのと、
0 /
error
の後にまた前で計算した数字まで出てしまうのを消したいのですが、どうすればいいのですか?
788 :
670 :2006/07/03(月) 19:07:35
670に書き込んだものですが、この課題って簡単にできるものなのですか?
>>786 printf("reg (ry の行をforループの最後へ
>>788 ただ単にブラウザから受け取ったデータを、相手方にそのまま渡して、
相手から受け取ったデータを、そのままブラウザに戻すだけでいいなら
簡単(単なる中継機能のみ)。が、その方法でうまくいくかどうかは不明。
それがうまくいくなら、コンテンツキャッシュくらいなら、まぁまぁ簡単に
実装できる。
791 :
デフォルトの名無しさん :2006/07/03(月) 19:53:01
792 :
670 :2006/07/03(月) 19:55:12
>>790 その機能だけでかまわないのでお願いできないでしょうか
793 :
790 :2006/07/03(月) 20:09:16
>>792 断る。squidの劣化版の再発明なんかしたくない。
っつか、誰よ、学校に通報したの?ここで宿題を聞いて丸々書いた奴の単位が 危うくなってるしwwwww
ぶははははははははは!!
変数名と関数名、空白や空行のあけ具合くらいいじっとこうな。
まぁ100行超えるようなレベルの奴は、採点する奴がここ見てれば、ちょっとした 改変くらいはすぐ見破られるだろうな。 構造を変えとく必要がある。ただ、それが出来るくらいな奴なら、ここに丸投げはせんだろうがな。
ウェブマネー払いで宿題代行という小遣い稼ぎを思いついた。
>>650 や
>>670 レベルで1000円くらいで。
>>798 既に出たネタをまた講義で使うだろうから、稼ぎにはなるかもしれんが
効率が悪いかな。俺は別のやり方で稼ぐつもりさ
メールアドレス晒しとけば 親切な人がメールで送ってくれるかもな
Vipperがすごい勢いで遊びに来て終了な気もす
802 :
517 :2006/07/03(月) 22:07:08
>>580 かなり遅くなってすみません。
今日、いただいたプログラムを動かしてみましたが、
何の問題もなく動作しました。
本当にありがとうございました。
>>784 さんを始め、このスレを見ている皆様、
>>722 のような自分勝手な行動をとってしまってすみませんでした。
期間が迫っているのと、似たようなプログラムだと落とされてしまうことから、自分の中で勝手に焦ってしまいました。
元はといえば、自分の勉強不足、努力不足が原因で、人に頼んでいるにも関わらず、立場を考えない不適切な発言をしてしまったことを、深く反省しています。
その結果、親切な回答者の親切心、やる気等を奪ってしまい、このスレの雰囲気まで悪い流れにしてしまったことを、後悔しております。
当分は、自分に対する質問以外は発言せず、ROMに徹することにします。
mailアドレスは、〆切までは念のため残しておいて、毎日確認するつもりですが、
このスレの為に作っただけのものなので、期間後は消去します。
最後になりますが、
>>784 さんを始めとするこのスレの住人の皆様、本当に申し訳ございませんでした。
くだらない心配してる暇があったら最初から自力で作ればいいじゃん。
んだんだ 無責任に丸投げすればいいよ こっちも無責任に回答するから、単位落としても知らないよ・・・と。
各辺が全て500以下であるようなピタゴラスの三整数を全て求めよ。 ただし、三重にネストしたforループを使う事。 #include<studio.h> main() { int x,y,z; for( z = 1, z <= 500 , z++ ){ for( x = 1, x <= 500 , x++ ){ for( y = 1, y <= 500 , y++){ if( pow(z,2) == pow(x,2) + pow(y,2 )) printf("%dの二乗は%dと%dの二乗の和に等しい\n",z,x,y);}}} return0; } 上記で合ってますか?
>>806 あってるけど、三角形の条件を満たさなくなった場合に、すぐさまループをbreakするように
すれば、結果が出るのが速くなるかもしれない。
>>806 powやsqrtを使うならmath.hも終われすれなく
810 :
デフォルトの名無しさん :2006/07/03(月) 23:53:17
>>806 を書き換えてやってみたけど、すさまじく時間が掛かるね・・・
813 :
806 :2006/07/03(月) 23:56:05
ご指摘サンクス〜
814 :
デフォルトの名無しさん :2006/07/04(火) 00:26:02
>>806 よしよし、わしが高速化してやろう
#include <stdio.h>
#include <math.h>
main() {
int x,y,z;
int x2,z2;
for( z = 1; z <= 500 ; z++ ){
z2 = pow(z,2);
for( x = 1; x <= 500; x++ ){
x2 = pow(x,2);
if(x2 >= z2) break;
for( y = 1; y <= 500; y++){
if(z2 == x2 + pow(y,2))
printf("%dの二乗は%dと%dの二乗の和に等しい\n",z,x,y);}}}
return 0;
}
警告内容は必ず貼ってね☆
>>818 って、さらに切り詰めれば500の半分250までの結果で
残りはxとyが逆になっただけだから、さらに計算量を減らせる罠
まぁ、これ以上は良いかw
>>818 二乗くらいなら普通に掛け算すればずっと速くなる。
>>821 ???、yのループのif文の中の比較をするたびに、毎回3つの値を
計算してたんでは効率が悪いから、yのループの前に一度だけ計算して、
あとは数値を比較した方が明らかに処理速度は速くなるかと。
実際にやってみりゃ分かる。
>>823 =
>>821 821 名前:デフォルトの名無しさん 投稿日:2006/07/04(火) 01:02:00
>>818 二乗くらいなら普通に掛け算すればずっと速くなる。
二乗くらいなら普通に掛け算すればずっと速くなる。
二乗くらいなら普通に掛け算すればずっと速くなる。
二乗くらいなら普通に掛け算すればずっと速くなる。
二乗くらいなら普通に掛け算すればずっと速くなる。
二乗くらいなら普通に掛け算すればずっと速くなる。
二乗くらいなら普通に掛け算すればずっと速くなる。
さすがに、500回乗算するのと1回だけpow関数を呼ぶのでは後者の方が速いと思うなぁ。
ポウ!!! double pow(double x,double y);
>>823 お前が黙ってろよ?w お前の理論じゃ効率の良さの追及は無理だから。
自称プロ?ソースを書いている俺に向かってでけぇ面するなっつった奴か?
if文の中で毎回無駄な計算が行われているところまで目がいかなかったか。
実際にソースを書いて実行結果を見て、処理時間を比較すりゃ明らかなのにな・・・
まぁ、お前が何を言いたかったか理解させたいなら、まずソースを書いて立証しろよ?
ちなみに、こっちで確認したみたけど
pow(x,2)をx*xと書き換えても速度は上がりませんでしたよ?
>>825 分からせたかったらソースを書いて出せ、な?因数の意味を理解していなかった
日本語と数学がダメなトーマスさん?
pow(x,2)をx*xに書き換えたら早くなったうちの環境はおかしいのかな
Borland C++ 5.5.1なんだけど
ちなみに
>>821 じゃないしよくわかってないで書き換えて試しただけ。
おれもGCCで計ったけどX*Xのほうが早いよん x*x : time1432 pow(x,2) : time5002 ちなみに全部double型に直しといた
powは基数も指数も実数値をとれるようになってるからな 当然だ
[1] 授業単元: 情報処理 [2] 問題文: 最初にデータ数Nを決め、N個数字を入れ、それを大きい順に並び替えるプログラム [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン: [3.3] 言語: C [4] 期限:朝8時くらいまでで [5] その他の制限: 特に無いです
>>829-831 やれやれ、やっとこちらの誘導で釣れたかw
当然、結果なんて分かっているわ。やれば済む話だが。
>>823 が偉そうだったんで気に食わないから一杯盛ってやったんだよw
言葉だけでどうにかしようだの、お前わかってないだのって態度は
俺はとことん叩くね。今後も覚悟しておいてちょうだいな、
初心者や質問者にわかってねーなお前としか言わずに罵倒しにくる誰かさんも含めて、ね。
>>834 えーとやってみて結果が分かったから釣りですた・・・と。
837 :
デフォルトの名無しさん :2006/07/04(火) 01:39:36
[1] 授業単元: プログラミング [2] 問題文:テスト結果を保存したファイルをwebページからダウンロードします。 ファイルにはテスト結果の点数を表す数値が140個格納されています。テスト結果のうちを 秀、優、良、可、不可それぞれの個数を集計して、以下のように棒グラフにより 表示するプログラムshukei.cを作成しなさい。 ただし、秀、優、良、可、不可は次のように判定すること。 ・秀:90〜100点 ・優:80〜89点 ・良:70〜79点 ・可:60〜69点 ・不可:0〜59点 また棒グラフは記号「*」の数が該当する生徒の人数を表すものとする。 実行例:(ただし、test.datの集計結果が正確に下の棒グラフのようになるとは限らない。) ./shukei<test.dat 集計結果は次のとうりです。 秀:********* 優:************ 良:************************ 可:******************************* 不可:**************** [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [2006年7月4日まで] [5] その他の制限: 他スレでも聞いて、 score,const,cher,label,for,returnを使ったものだったのですがまだ習っていないので、 while,printf,scanf,if,elseを使った式でやってもらえないでしょうか? よろしくお願いします。
>>833 #include<stdio.h>
#include<stdlib.h>
#define N 10
int cmp(const void* a, const void* b){return *(const char)b-*(const char)a;}
int main(void){char tmp[N+2];fgets(tmp,sizeof(tmp),stdin);qsort(tmp,N,sizeof(char)cmp);
puts(tmp);return 0;}
>>837 ファイルのフォーマットがわからんと手の出しようがない。
このスレ相手をとことんバカにしようとする奴が釣れてオモスレー いつまでも自分より下を見て安心していて下さいね♠ こっちは上を見てどんどん精進すっから♣
>>833 #include <stdio.h>
#include <time.h>
#include <stdlib.h>
void bsort(int* a, int n){
int i,j,max,tmp;
for(i=0; i<n-1; i++){
max = i;
for(j=i+1; j<n; j++)
if(a[max] < a[j])max = j;
if(i != max){
tmp = a[i];
a[i] = a[max];
a[max] = tmp;
}}}
intmain() {
srand((unsigned)time(NULL));
int n = 10;
int i;
int* a = (int*)malloc(sizeof(int)*n);
for(i=0; i<n; i++){
a[i] = rand();
printf("%d\n",a[i]);}
bsort(a,n);
putchar('\n');
for(i=0; i<n; i++)
printf("%d\n",a[i]);
free(a);
return 0;
}
>>835 結果は既にお前のもとにも出ていると思うが?
わざわざpow使わんでもx*xにした方が速かったですけど何か?
まぁ、無駄な議論なんてもう黙ってろ。
>>843 お前が無駄な議論始めようとしたんじゃないのか?
くっだらねー話はお互いメアドでも交換して他所ではなしあってくれませんか? つかいい加減ここID制にしてほしいな
>>842 それは「N個の数字」ではなくて「N個の数値」だと思うのココロ。
逃げやがった
>>837 まで逃げられると困るんだけど・・・ ファイルの形式がわからないと解きようが・・・
849 :
837 :2006/07/04(火) 02:07:38
>>839 すいません!フォーマットというのをいまいち理解してません。
>>840 ファイルは大学のサイトからダウンロードするだけなので
形式はちょっとわからないです…
あと大学内でしかそのサイトを開けないので今はわからないんです。
すいません。
>>849 エスパーを探しに来たのなら他をあたれ。
852 :
837 :2006/07/04(火) 02:14:01
無理な質問でしたね…。 迷惑かけてすみませんでした。
明日も早い 寝るか
854 :
487 :2006/07/04(火) 02:41:31
>>782 進行の方はいかがでしょうか?
遅くなってもかまいませんのでよろしくお願いいたします。
>>678 アウトプットが・ばっかり並ぶのはなぜですかorz
自力でできないなら素直に単位おとせばいいのに。
>>837 #include <stdio.h>
int main()
{
FILE* fp;
char buf[128];
int score, i, j;
int grade[5] = {0};
char *title[5] = {"秀:", "優:", "良:", "可:", "不可:"};
fp = stdin;
while (fgets(buf, sizeof buf, fp) != NULL) {
score = atoi(buf);
if (score >= 90) grade[0]++;
else if (score >= 80) grade[1]++;
else if (score >= 70) grade[2]++;
else if (score >= 60) grade[3]++;
else grade[4]++;
}
i = 0;
while (i < 5) {
printf("%s", title[i]);
j = 0;
while (j < grade[i]) {
printf("*");
j++;
}
printf("\n");
i++;
}
return 0;
}
fpは冗長だった orz
>>814 void mainをint mainに変える。
[1]情報科学演習 [2]次の問題を解け 問16 コマンドライン引数を逆から全て表示するプログラムの作成 以下の実行例になるようにしなさい % ./a.out hello world x number of arguments = 4 argument 3 = "x" argument 2 = "world" argument 1 = "hello" argument 0 = "./a.out" % [3]Linux /gcc3.4 /C言語 [4]7月7日
>>860 #include<stdio.h>
int main(int argc, char* argv[]){printf("number of arguments = %d\n", argc);
while((--argc)>=0)printf("argument %d = \"%s\"\n",argc,argv[argc]);return 0;}
862 :
デフォルトの名無しさん :2006/07/04(火) 11:58:45
助けて。。。 迷路の経路を探索するプログラムを作成しなさい.以下の要件を示します. 迷路の形状を示すデータファイル名を引数とします. 迷路のサイズは10×10の固定とし,壁を1,通路を0,スタートを8,ゴールを9で与えます. 迷路の形状と経路が視覚的に分かるような出力をしなさい.分かりやすい出力になるよう工夫すること. . struct r_tag { int x ; /* x座標 */ int y ; /* y座標 */ /* 方向とか... */ struct r_tag preg ; /* 一歩前 */ struct r_tag next ; /* 一歩先 */ } route ; データ ファイル: maze.txt 1 1 1 1 1 1 1 1 1 1 1 9 0 0 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 8 1 1 1 1 1 1 1 1 1 1 1
>>862 C言語の切り札 っていう参考書にそれの答えが載ってる
何年か前の情報処理技術者試験の問題だった。
865 :
デフォルトの名無しさん :2006/07/04(火) 12:20:57
お願いします_| ̄|○ [1]授業単元:プログラミング実習 [2]問題文:scanfにより10個の整数をキー入力する。 一つ前に入力した値より大きい値の数の個数を求めるプログラムを作れ。 但し、scanfは2回以下しか使うことができない。 ヒント、直前に入力した値を保持する手段が必要。 実行例 整数を入力⇒256 整数を入力⇒189 整数を入力⇒667 整数を入力⇒328 整数を入力⇒467 整数を入力⇒980 整数を入力⇒533 整数を入力⇒315 整数を入力⇒889 整数を入力⇒662 前より小さな数が入力されたのは5回です。 [3]環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Visual Studio2003 [3.3] 言語:C++ [4]期限:7月10日まで
866 :
862 :2006/07/04(火) 12:23:40
[1] 授業単元: プログラミング言語2
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:MacOS10.3
[3.2] コンパイラ名とバージョン: ターミナル使ってます
[3.3] 言語: C言語
[4] 期限: 今日。。。
[5] その他の制限:ポインタまでやってあります。
>>864 今から買ってくるわ
>>865 #include<stdio.h>
int main(){int i,b,n=-1,count=0;for(i=0;i<10;i++){b=n;
printf("整数を入力⇒");scanf("%d",&n);if(b<0)continue;if(b>n)count++;}
printf("前より小さな数が入力されたのは%d回です。\n",count);return 0;}
適当に作ってみた 反省はしてない。
orz 適当にやりすぎた 無意味な命令文が・・・
迷路探索といえば、袋小路を再帰的に埋めていくってやり方もあったな
もう左手壁につけて進めばいいじゃない 循環だけ検出してさ
>>865 >>866 これらの問題って、モロに過去に同じものが出たよね・・・
同じ学校なのか?それとも時期が違うところを見て、同じネタを使っている
別の学校があるのか?どちらにせよ、来年もこの時期にこの問題を
ここで質問する奴が必ずいるだろうね。そろそろ出題内容と回答例をテンプレにまとめるべきか?
あるいは、同じ問題はつまらん、学校の指導者よ、もっとヒネりなさいヒネりなさいと催促するか?w
あるいは、それをネタにここで稼ぎをする奴が出るか?選択は自由だーーーー!
C言語 is freedom!C言語 is freedom!
けど、ここに書かれたソースを丸々提出すると、丸写ししたのがバレて単位が危うくなるで。
夏だな
まだ夏休みじゃないから、安心汁!前期終了の前にじゃんじゃん レポート課題も出してちょ〜〜♪ オラっ、なんだかワクテカしてきたぞ!
875 :
デフォルトの名無しさん :2006/07/04(火) 16:50:49
パソコン甲子園2005予選問題 問1 #include <stdio.h> #include <math.h> int main(void) { float S,x,h; scanf("%f",&x); scanf("%f",&h); S=sqrt((x*x/4)+(h*h)); S=(x*S*2)+(x*x); printf("%f\n",S); return 0; }
876 :
デフォルトの名無しさん :2006/07/04(火) 16:52:10
パソコン甲子園2005予選問題 問2 #include <stdio.h> int main(void) { int hh,mm,ss,sec; scanf("%d",&hh); scanf("%d",&mm); scanf("%d",&ss); sec = 7200 - (hh*3600) - (mm*60) - ss; hh = sec / 3600; mm = sec % 3600 / 60; ss = sec % 3600 % 60; printf ("%02d:%02d:%02d\n",hh,mm,ss); sec = sec * 3; hh = sec / 3600; mm = sec % 3600 / 60; ss = sec % 3600 % 60; printf ("%02d:%02d:%02d\n",hh,mm,ss); return 0; }
877 :
デフォルトの名無しさん :2006/07/04(火) 16:58:28
[1] 授業単元: ソフトウェア [2] 問題文: すべての4桁の数のうち、下2桁の数の積が2の倍数であるものの合計を求めるプログラム [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン: [3.3] 言語: C++ [4] 期限:明日の昼ごろまで [5] その他の制限: 特に無いです
>>877 これって下二桁の数の積を取る対象が不明なんだけど、
全ての4桁の数全部の積をとるの?
すると必ず2の倍数になるから答えは
9999*10000/2-999*1000/2 とかでいいのかな?
読解力無いのもたいがいにせい
すべての4桁の数のうち、下2桁の数の積が2の倍数であるものの合計 = 1000〜9999のうち、十の位が2の倍数か、一の位が2の倍数である数の合計
>>877 上2桁には00も許容するのか?
つーか上2桁のある意味が分からん。
「0も含む」な
>>881 それちょっと違う。
けど、どうでもいい糞問題。
っつか、whileでさらに無駄な計算が省けるか・・・まぁ良いやw
887 :
デフォルトの名無しさん :2006/07/04(火) 19:31:46
to【質問テンプレ】 [1] 授業単元: プログラミング言語 [2] [3] 環境 [3.1] OS: Windows(Cygwin) [3.2] gcc 3.4 [3.3] 言語: C [4] 期限: ([2006年07月06日) [5] その他の制限:特になし あるプログラムをコンパイルしたら以下のようになったのですがどういう意味なのか分かりません。 $ make gcc -Wall -g -I../lib/include -o httpproxy main.o proxy.o http.o -L../lib/lib -lsock -ltoken -ldaemon /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/../../../../i686-pc-cygwin/bin/ ld: cannot find -lsock collect2: ld returned 1 exit status make: ***[httpproxy] Error 1 どういうエラーなのでしょうか?
[1] 授業単元:C++ [2] 問題文(含コード&リンク) 整数値aを入れると1+2+3+…+aを計算して返す関数(たとえば関数名sum)を作成し,これを呼び出しながら任意のaに対してその結果を画面に表示するプログラム(たとえばプログラム名funcdemo1.cpp)を作成、実行すること。以下の二つのタイプを作成すること! 1)sum()を値呼び出し型関数とした場合 2)sum()を参照呼び出し型関数とした場合 : [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン: [3.3] 言語: C/C++/どちらでも可 [4] 期限: 明日まで
>>889 問題文に“!”を使うのも間抜けだが、適切な用語を使えないというのがもっと間抜け。
>>889 1)sum()を値呼び出し型関数とした場合
#include<stdio.h>
#include<stdlib.h>
int sum(int n){return n*(n+1)/2;}
int main(void){char tmp[100];while(1){printf("任意のa:");fgets(tmp,sizeof(tmp),stdin);
if(tmp[0]=='\n')break;printf("結果:%d\n",sum(atoi(tmp));}return 0;}
2)sum()を参照呼び出し型関数とした場合
#include<stdio.h>
#include<stdlib.h>
int sum(int& n){return n*(n+1)/2;}
int main(void){char tmp[100];while(1){printf("任意のa:");fgets(tmp,sizeof(tmp),stdin);
if(tmp[0]=='\n')break;printf("結果:%d\n",sum(atoi(tmp));}return 0;}
>>885 を絞ってみた
#include <iostream>
using namespace std;
main() {
int i,x,sum=0;
for(i=1011; i<=9998; i+=10) {
x = (i%100); // 下二桁を取得
if((x/10) % 2 == 0) // 10の位が偶数
sum+=(i-1)*9+45;
else // 10の位が奇数で1の位が偶数
sum+=(i-1)*4+20;}
cout << "\nsum : " << sum;
}
ほんと間抜けだよな。 お前らの世界じゃ0が2の倍数らしいな。
>>894 ああ、ほんと、100単位で0が混じってたw
[1] 授業単元:プログラム設計
[2] 問題文(含コード&リンク):人間とコンピュータが対戦できる三目並べを製作せよ
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 7/6 正午まで
[5] その他の制限:特になし
以下のようなソースコードを書いたのですが(チェック用に無駄なfprintf文が入ってます)、
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2244.txt コンパイルすると何故か1手目からコンピュータの手が入っていたり、
-Oオプションで最適化してコンパイルすると最初は正常であるものの手数がおかしくなって連続で手が打てたりするような状態になります。
皆目原因の見当がつかないのでここを頼ってみた次第です。
よろしくお願いします。
>>894 整数 a によって整数 b が割り切れるとき、b は a の倍数であるという。
という定義から考えるに0は2の倍数と思うのだが。
>>894 お前の世界じゃ0が2の倍数じゃないらしいな。
っつか、0もおkなら単純に偶数のみの足し算をしろ といった出題でええやん・・・やっぱ下二桁の積で0は抜かせってことじゃね?
って、10の位が2だったら1の位が奇数でもええんやね・・・俺もうだめぽ サッカーの試合まで寝るっすw
903 :
837 :2006/07/04(火) 21:55:40
>>857 ありがとうございます!
やっぱりあきらめきれなくてまたきちゃいました…
すみませんが、
while,printf,scanf,if,elseを使った式だけでできないものでしょうか?
FILE* fp;
char buf[128];
fp = stdin;
while (fgets(buf, sizeof buf, fp) != NULL) {
atoi(buf);
return 0;
↑このようなものを使ったことがないのでわからないんです…
注文がおおくてすみません!
長くなってもかまわないのでよろしくお願いします。
const,cher,label,for,return,
int grade[5] = {0};
>>897 どうでもいいけど気になったこと。
char input[20];
…
scanf("%s",&input); ←'&'イラネ
for文を使った初期化処理
→ memset(v,0,sizeof(v));で一発。
if(max == 4){ return 2; } else{ return 0; } みたいな処理
→ 条件演算子を使うと見やすい。 return (max == 4)? 2:0;
>>903 #include <stdio.h>
int main()
{
int score;
int grade[5] = {0};
char *title[5] = {"秀:", "優:", "良:", "可:", "不可:"};
int i, j;
while (scanf("%d", &score) != EOF) {
if (score >= 90) grade[0]++;
else if (score >= 80) grade[1]++;
else if (score >= 70) grade[2]++;
else if (score >= 60) grade[3]++;
else grade[4]++;
}
i = 0;
while (i < 5) {
printf("%s", title[i]);
j = 0;
while (j < grade[i]) {
printf("*");
j++;
}
printf("\n");
i++;
}
}
908 :
903 :2006/07/04(火) 22:20:51
>>907 何度もすみません!ありがとうございます!
質問があります!
char *title[5] と grade[1]++; はどういう意味でしょうか?
909 :
903 :2006/07/04(火) 22:23:51
すみません。あと、 EOFとif文の後にgrade[0]++; をつけるのがよくわかりません…。
char *title = "aaa" → titleはキャラのポインタ char *title[5] = ... → titleはキャラのポインタの配列(要素数5) grade[1]++ → grade[1] = grade[1] + 1と同じ。
>>903 黙ってそのまま提出するか、それが嫌ならCの勉強をしてください。
912 :
912 :2006/07/04(火) 22:29:37
どうしてもわからないので質問させてください。 VC2005で以下のコードを入力して、実行すると結果がおかしいような気がする。 もし理由があれば教えてほしいのですが・・・ #include <stdio.h> #include <time.h> void main() { int i=1; time_t t1,t2; time(&t1);//表示前の秒数を格納 while(i<=5000){ printf("%d,",i++); } time(&t2); printf("\ntime1=%ld\n",t1);//time_tはlong型なので%ld printf("\ntime2=%ld\n",t2);//time_tはlong型なので%ld printf_s(" %ld %ld ", t1 , t2 );//time_tはlong型なので%ld printf("かかった時間は、%d秒です。\n",t2-t1); } ・実行結果の最後 time1=1152019127 time2=1152019127 1152019127 0 かかった時間は、0秒です。 ↑ここがなんで0なのかがわからないtime2の値が入ると思っていたのだけど。
913 :
デフォルトの名無しさん :2006/07/04(火) 22:32:57
1152019127-1152019127=0
915 :
912 :2006/07/04(火) 22:34:55
0秒の左側の0のことです。 説明がおかしくてすみません。
>>912 //time_tはlong型なので%ld
この前提がおかしい。VC2005ではtime_tは__int64型。
なので、
printf_s(" %lld %lld ", t1 , t2 );//time_tは__int64型なので%lld
こうしなければならない。
もっとも、環境依存を減らすための time_t なんだから、
printf(" %ld %ld ", (long)t1 , (long)t2 );
このように明示的にキャストするのがベター。
918 :
917 :2006/07/04(火) 22:51:35
もし「time_tはlong型」をお題目のように教えている教科書だったら糞なので窓から投げ捨てろ。 教授だったらテキトーに合わせた上で見限れ。
919 :
912 :2006/07/04(火) 22:53:15
>>917 ありがとうございます。
C言語初心者なもので・・・
助かりました!
>>912 スレ違いだけど・・・
確かにやってみたら、0になるね。printfでも0が表示された。
VC6で試してみたら(printfで)、正しく表示された。
なんだろね?Visual Studio 2005スレか、C/C++室スレで聞いてみたら?
921 :
903 :2006/07/04(火) 22:55:21
>>910 ありがとうございます!
>>911 何度も付き合ってくださってありがとうございました!
もっと勉強したいと思います!
助かりました!本当にありがとうございました!
922 :
920 :2006/07/04(火) 22:55:44
書き込んでいる間に解答が orz
923 :
デフォルトの名無しさん :2006/07/04(火) 22:58:24
>>916 もうちょっとしたら習うのかもしれないけど、その元プログラム、根本的に
おかしいから気をつけてね。
exit(0)とexit(1)ってどう違うの? ど素人な質問で申し訳ない
>>926 元がこんなソースだったので多分教授が間違えたのかも…
できれば
>>916 の問題よろしくお願いします。
>>927 いや、そういう話じゃない。
どのようなカリキュラムで、どの時点で
>>916 が出てきたのかわからないけど、
正しいお作法としては、親プロセスは勝手に終了してはいけないってこと。
この先waitの話が出てこなかったら、この話を思い出してくれ。
ん?あってんじゃないの?exit(0)してるのは子プロセスだよ。
なんか最近、問題にケチつけたり、余計な講釈垂れる奴多いな。 そういうのいらないから。答えないんだったら、黙ってて。
好きにさせておけばいいじゃん なんとかは放置に限るんじゃなかったっけ
荒らしを完全無視できる俺は神?
936 :
924 :2006/07/04(火) 23:54:28
えっと、そういう話じゃなくて・・・。 step1を子プロセス1で、step2を子プロセス2で計算させて、 その結果を親プロセスでさらに計算するってことでしょ。(これが違うのか?) だとしたら、子プロセスはなんらかの方法で親プロセスに結果を返さないと いけないんだけど、子プロセス1はなにもせずにexit(0)で終了してるでしょ。 それがおかしいってこと。 exitで計算結果を返すという手もあるけど、exit(0)してるから、それも出来ない。 というわけで、俺には解答不能です。
937 :
デフォルトの名無しさん :2006/07/05(水) 00:00:53
[1] 授業:プログラミング演習 [2] 問題文: ・100個のノードを生成する ・ノードに重みを適当に点ける(1〜100) ・任意のノードペアを選び、重みの和を取り、重みの和が100以上のノードペアにリンクを張る ・それぞれのノードの持つリンクの数を計算する ・リンクの数の分布 (リンクが1つ・・・○○、リンクが2つ・・・○○、・・・みたいな) [3] 環境:[Windows XP Borland C++ Compiler 5.5(BCC Developer) C言語 [4] 期限:早目がうれしいです [5] その他の制限:講義自体が酷いので独学で進めていますがさっぱりです
>>936 多分、件の教授は、スレッドと間違えたんだよw
939 :
デフォルトの名無しさん :2006/07/05(水) 00:08:37
[1]プログラミングA [2]問題文(含コード&リンク):次のアルファベットのキーワードを入力して計算する関数電卓プログラムを作成しなさい。 sin, cos, tan, arcsin, arccos, arctan, ln, log, exp, squr, rad, deg, end [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語:C++ [4]期限 7月6日 [5]特になし どうぞよろしくお願いします。
940 :
920 :2006/07/05(水) 00:12:04
942 :
デフォルトの名無しさん :2006/07/05(水) 00:15:35
>>941 6月の中旬くらいです。
945 :
デフォルトの名無しさん :2006/07/05(水) 00:19:58
お願いします 【質問テンプレ】 [1] 授業単元:基本プログラミング [2] 問題文(含コード&リンク): 角度(0度以上180度以下)と計算すべき項数を引数として、正弦値の値を近似する関数を宣言し、入力した角度に対し、指定した項数に対する近似値を出力するプログラムを作成せよ。 角度に0未満もしくは180より大きい数が入力されたときに終了する。 角度は、近似の関数内でラジアンに変換すること。出力はmain関数で行うこと。 (実行例) Input degree(0<=degree<=180):30 Input n:5 sin30=0.5 Input degree(0<=degree<=180):30 Input n:1 sin30=0.523598 Input degree(0<=degree<=180):30 Input n:2 sin30=0.499674 Input degree(0<=degree<=180):45 Input n:10 sin30=0.707106 Input degree(0<=degree<=180):-1 [3] 環境 [3.1] OS:UNIX [3.3] 言語:C++ [4] 期限:明後日 [5] その他の制限:if,for,whileなどまでやりました