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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG?2BP(12)
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 76代目
http://pc8.2ch.net/test/read.cgi/tech/1162771475/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0002デフォルトの名無しさん2006/11/21(火) 12:29:12
ありが�d
0003デフォルトの名無しさん2006/11/21(火) 13:51:13
[1] 授業単元:プログラミング
[2] 問題文:1から1000までの数値のうち、素数だけを抜き出して表示するプログラムを作成せよ。
ここでは、素数であるか否かを判定する関数を作成して使用すること。


《実行例》
1 2 3 5 7 11 13 17 19 23
29 31 37 41 43 47 53 59 61 67
71 73 79 83 89 97 101 103 107 109
113 127 131 137 139 149 151 157 163 167
173 179 181 191 193 197 199 211 223 227
229 233 239 241 251 257 263 269 271 277
281 283 293 307 311 313 317 331 337 347
349 353 359 367 373 379 383 389 397 401
409 419 421 431 433 439 443 449 457 461
463 467 479 487 491 499 503 509 521 523
541 547 557 563 569 571 577 587 593 599
601 607 613 617 619 631 641 643 647 653
659 661 673 677 683 691 701 709 719 727
733 739 743 751 757 761 769 773 787 797
809 811 821 823 827 829 839 853 857 859
863 877 881 883 887 907 911 919 929 937
941 947 953 967 971 977 983 991 997
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:できるだけ早くお願いします。
[5] その他の制限:自分で作ったものでsqrt()ライブラリ関数を使ったのですが、ライブラリ関数は使わず&簡単なプログラムでお願いします。
0004デフォルトの名無しさん2006/11/21(火) 13:58:25
>>3
エラ姫の櫛は使った方がいいの?
0005デフォルトの名無しさん2006/11/21(火) 13:59:52
>>3
・1は素数じゃない。
・自分で作ったプログラムを晒せ。sqrt()を使わないようにするだけならごく簡単な修正で済むはずだ。
0006デフォルトの名無しさん2006/11/21(火) 14:00:23
>>3
1って素数なの?
0007デフォルトの名無しさん2006/11/21(火) 14:01:00
できるだけ早くっていつまでだよ
0008デフォルトの名無しさん2006/11/21(火) 14:03:22
>>3
出力はインラインアセンブラか・・・欝だ・・・
000932006/11/21(火) 14:11:25
あ、すみません。1は素数ではないですね>_<”
期限はだいたいなんですけど、きょう辺りにできれば・・・と思います。
0010デフォルトの名無しさん2006/11/21(火) 14:13:56
#include<stdio.h>
int IsPrime(int n){
int i;
if(n<2)
return 0;
else if(n==2)
return 1;
if(n%2==0)
return 0;
for(i=3;i*i<=n;i+=2)
if(n%i==0)
return 0;
return 1;}
int main(){int i,j=1;for(i=1;i<=1000;i++)
if(IsPrime(i)){printf("%3d ",i);if(j%10==0)printf("\n");j++;}return 0;}
空気読まずに貼ってみる。素数判定はWikipediaのコピペだ
0011デフォルトの名無しさん2006/11/21(火) 14:51:49
#include<stdio.h>
int main(void){
int i, j, k, n, a;
int **p;

printf("please input! n = ");
scanf("%d\n",a);
p = (int **) malloc(sizeof(int *)*a);
for(i=0; i<=a; i++){
p[i]=(int*) malloc(sizeof(int *)*a);
for(i=0; i<=a; i++)
p[i][j]=0;
}
k = n*n-1;
for(i=0; i<n/2+n%2; i++) {
for(j=i; j<=n-i-1; j++) p[i][j] = k--;
for(j=i+1; j<n-i-1; j++) p[j][n-i-1] = k--;
for(j=n-i-1; j>i; j--) p[n-i-1][j] = k--;
for(j=n-i-1; j>i; j--) p[j][i] = k--;
}
for(i=0; i<a; i++)
printf("\n");
for(j=0; j<a; j++)
printf("%5d",p[i][j]);

return 0;
}

上記のプログラムは前スレ>>507を完成させたものですが、セグメンテーション違反になります。
どうすればいいでしょうか?
0012デフォルトの名無しさんNGNG?2BP(200)
>>3
http://c-kadai.sakura.ne.jp/index.php?itemid=17
0013デフォルトの名無しさん2006/11/21(火) 14:59:20
>>11
スレ違い。
・scanf()の引き数間違い
・2番目のmalloc()の引き数間違い
0014デフォルトの名無しさん2006/11/21(火) 15:02:08
>>11
scanf("%d\n",a); <- ここがあやしい
0015デフォルトの名無しさん2006/11/21(火) 15:10:05
>>??? 螺旋状に数値を表示
#include<stdio.h>
#include<stdlib.h>
int is_minus_one(int value[], int n, int x, int y){
if(x<0 || x>=n || y<0 || y>=n) return 0;
return (value[n*y+x]==-1);
}
int main(void){
int dx_list[]={ 1, 0,-1, 0};
int dy_list[]={ 0, 1, 0,-1};
int x=0, y=0, dx, dy, i, j, n=5, direction=0;
int *value;
value=malloc(sizeof(int)*n*n);
for(i=0;i<n*n;i++) value[i]=-1;

dx=dx_list[direction];dy=dy_list[direction];
for(i=0;i<n*n;i++){
value[n*y+x]=i;
if(!is_minus_one(value, n, x+dx, y+dy)){
direction=(direction+1)%4;
dx=dx_list[direction];dy=dy_list[direction];
}
x+=dx;y+=dy;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf(" %3d", value[n*i+j]);
printf("\n");
}
free(value);
return 0;
}
0016デフォルトの名無しさんNGNG?2BP(200)
>>3
別解。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int prime[]={2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89,
97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223,
227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359,
367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433,
439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593,
599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659,
661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743,
751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827,
829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, };
int isPrime(int n){if(n<=1000){int i;for(i=0;prime[i]<=n;i++)if (n==prime[i]) return 1;}return 0;}
int main(){int i,j=1;for(i=1;i<=1000;i++) if(isPrime(i)){
printf("%3d ",i);if(j%10==0)printf("\n");j++;}return 0;}
0017デフォルトの名無しさん2006/11/21(火) 15:43:18
1] 授業単元: 基礎プログラミング

[2] 問題文(含コード&リンク): nの値を12とし、nの近似値を求めるプログラムを作成せよ。詳しくは、リンク先の画像をご覧ください。
                   http://up.kabubu.net/cgi/img2/16802.jpg

[3] 環境
 [3.1] OS: Win XP HOME
 [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C++
[4] 期限: 本日中にできればありがたいです。。。

よろしくお願いします。
0018デフォルトの名無しさん2006/11/21(火) 15:54:47
>>17
これを参考に。
http://pc8.2ch.net/test/read.cgi/tech/1153542424/210
0019デフォルトの名無しさん2006/11/21(火) 16:13:22
>>17
#include<stdio.h>
int kaijo(int n){
if(n<2)return 1;
return n*kaijo(n-1);}
int main(){
int n,k;double e=1;
printf(" n n! 1/n! e 誤差\n");
for(n=1;n<=12;n++){
k=kaijo(n);e+=1./k;
printf("%2d %9d %.10f %.10f %.10f\n",n,k,1./k,e,2.7182818285-e);}}
0020デフォルトの名無しさん2006/11/21(火) 16:31:50
nの近似値求めるんだから
printf("12");でいいじゃん
0021デフォルトの名無しさん2006/11/21(火) 17:45:04
>>11
nを入力するのに、なんでnじゃなくてaに入れるんだ。
0022デフォルトの名無しさん2006/11/21(火) 18:05:23
>>11
0で埋めてるつもりなんだろうがループカウンタをiにしてるせいで
未初期化のjを配列の添字にしてしまってる予感
0023デフォルトの名無しさん2006/11/21(火) 18:09:25
>>11
前スレ515は中心から外に大きくなってくと思ってたのでそこを修正
#include<stdio.h>
int main(void){
int i, j, k, n;
int **p;

printf("please input! n = ");
scanf("%d",&n);
p = (int **) malloc(sizeof(int *)*n);
for(i=0; i<n; i++) p[i]=(int*) malloc(sizeof(int)*n);
k = 0;
for(i=0; i<n/2+n%2; i++) {
for(j=i; j<=n-i-1; j++) p[i][j] = k++;
for(j=i+1; j<n-i-1; j++) p[j][n-i-1] = k++;
for(j=n-i-1; j>i; j--) p[n-i-1][j] = k++;
for(j=n-i-1; j>i; j--) p[j][i] = k++;
}
for(i=0; i<n; i++) {
for(j=0; j<n; j++) printf("%3d", p[i][j]);
putchar('\n');
}
return 0;
}
0024デフォルトの名無しさん2006/11/21(火) 19:42:55
>>16やっぱりそうきたよねぜったいそうくるとおもった
0025前スレ5902006/11/21(火) 19:43:12
>>11
俺のも見ろよ〜
再帰はいやか〜
#include <stdio.h> #define N 9 //サイズ
void print(int ary[N][N]);int right(int ary[N][N],int x,int y, int n, int past);int up(int ary[N][N],int x,int y, int n, int past);
int down(int ary[N][N],int x,int y, int n, int past);int left(int ary[N][N],int x,int y, int n, int past);void answer(int ary[N][N], int n);
int main(){ int ary[N][N] = {0}; int n = 0; answer(ary, n); print(ary); return 0;}void answer(int ary[N][N], int n){ int i,j;
for(j =0,i = 1; i <= (N/2 + 1) ; i++,j++){ n = right(ary,j,j,n, i); n = down(ary,i ,N-i,n, i); n = left(ary,N-i,N - i - 1,n, j); n = up(ary,N - i - 1,j, n,j);
}} int right(int ary[N][N],int y,int x, int n, int past){ if(x > N - past || y > N || x < 0 || y < 0)return n; ary[y][x] = n ; right(ary, y, x+1, n +1 , past );
} int down(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N - past || x < 0 || y < 0)return n; ary[y][x] = n; down(ary, y+1,x , n+1 , past );
} int left(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N || x < past || y < 0)return n; ary[y][x] = n; left(ary, y, x-1, n+1 , past );
} int up(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N || x < 0 || y <= past)return n; ary[y][x] = n; up(ary, y-1, x, n+1 , past );
} void print(int ary[N][N]){ int *p = &ary[0][0],i; for(i = 1,p = &ary[0][0]; p <= &ary[N-1][N-1]; p++,i++){ printf("%3d ", *p);
if(!(i % N))putchar('\n');}}
0026デフォルトの名無しさん2006/11/21(火) 19:45:03
スルーしておいてやれ。
0027デフォルトの名無しさん2006/11/21(火) 19:46:03
おっと>>26は>>24にな。
0028デフォルトの名無しさん2006/11/21(火) 19:47:50
[1] 授業単元:
[2] 問題文(含コード&リンク):中置記法で入力された数式を前置記法 及び後置記法で出力するプログラムを作る
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: ([2006年12月4日まで
[5] その他の制限: とくになし
0029デフォルトの名無しさん2006/11/21(火) 19:50:28
[1] 授業単元:プログラミング�T
[2] 問題文
[要求仕様]
キーボードより2以上の整数を入力し、その入力した整数が2つの素数の和
として表せるかどうかを調べてその全ての組み合わせを出力し、
最後に組み合わせの数を出力するプログラムを作成せよ。また入力値が2より
小さい時には、警告として「入力ミスです。」と表示してプログラムを終了
するようにせよ。
[強制条件]
関数mainとは別に素数判定に関る関数を用いること。なお入出力は関数main
で行うこと。
[ヒント]
関数isprimeを利用するとよい。

int isprime(int n){
int i;
if(n<=1)
return0;
for(i-2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
[表示結果]
input
30
30は素数7と素数23の和です。
30は素数11と素数19の和です。
30は素数13と素数17の和です。
和が30になる2つの素数の組み合わせは3つあります。

0030デフォルトの名無しさん2006/11/21(火) 19:51:59
[3] 環境
 [3.1] OS:unix
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 2006年11月22日15時まで
[5] その他の制限: 関数を習い始めたばかりなのでできるだけ簡単なもの
にしていただけると嬉しいです。
0031デフォルトの名無しさん2006/11/21(火) 20:10:11
>>29
#include <stdio.h>

int isprime(int n){
int i;
if(n<=1)
return 0;
for(i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}

int main()
{
int c=0,i,n;
printf("input\n");
scanf("%d",&n);
if(n<2){
printf("入力ミスです。\n");
return 1;
}
for(i=2; i<=n/2; i++)
if((isprime(i)==1)&&(isprime(n-i)==1)){
printf("%dは素数%dと素数%dの和です。\n",n,i,n-i);
c++;
}
printf("和が%dになる2つの素数の組み合わせは%dつあります。",n,c);
return 0;
}
0032デフォルトの名無しさん2006/11/21(火) 21:25:25
>>31
ありがとう御座います。
まさか、こんなに早く答えていただけるとは思いませんでした。
0033デフォルトの名無しさん2006/11/21(火) 21:26:17
お願いします
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):鶴と亀の足の総数(亀は4本、鶴は2本と考える)が与えられると、考えうるそれぞれの頭数の全てのケースを列挙、出力し、
最後にケースの総数を出力するプログラムを作成せよ。入力された総数に対して解がない場合は”解なし”と表示すること。
実行例
亀と鶴の足の総数を入力せよ:24
鶴=0 亀=6
鶴=2 亀=5
鶴=4 亀=4
鶴=6 亀=3
鶴=8 亀=2
鶴=10亀=1
鶴=12亀=0
7通りあります
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限:明日
0034 ◆pajhDGf5eg 2006/11/21(火) 21:37:11
[1] 授業単元:情報処理工学
[2] 問題文 ファイル名:kadai01.c
      ◆『家』と『雪だるま』の絵を描くプログラムを作成しなさい。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:viエディタ
 [3.3] 言語:C言語
[4] 期限:2006年 12月4日(月)
[5] その他の制限:これより示す「kadai01.c」のプログラムを修正してお願いします。
         一般的な家と雪だるまの絵であれば、どのようなものでも構いません。
         クリスマスが近いということもあるので、個性あふれるものをお願いします。
尚、プログラムが長いため3回くらいに分けて書き込みます。
0035 ◆pajhDGf5eg 2006/11/21(火) 21:38:55
"kadai01.c"に挿入されているプログラム「Canvas.c」
#include <stdio.h>
#include <math.h>
char pixel[XSIZE][YSIZE];

Canvaslnit(char moji){
int x,y;
for(y=0;y<YSIZE;y++)for(x=0;x<XSIZE;x++) pixel[x][y]=moji;
}

CanvasPrint(){
int x,y;
for(y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++) printf("%c",pixel[x][y]);
printf("\n");
}
}

Circle(char moji, int x0, int y0, int r){
int x,y;
float t;
for(t=0; t<6.28; t+=0.01){
y=r*cos(t)/2+y0;
x=r*sin(t)+x0;
0036デフォルトの名無しさん2006/11/21(火) 21:41:51
>>33
#include<stdio.h>
int main(){int c=0,i,n;printf("亀と鶴の足の総数を入力せよ:");
scanf("%d",&n);if(n%2)printf("解なし\n");else{for(i=0;i<=n;i+=2)
if((n-i)%4==0){printf("鶴=%d 亀=%d\n",i/2,(n-i)/4);c++;}
printf("%d通りあります\n",c);}return 0;}

そして今C++じゃないことに気がついた orz
プログラム中にc++使ってるから許してくれ
0037 ◆pajhDGf5eg 2006/11/21(火) 21:43:03
『kadai01.c』

#define XSIZE 80
#define YSIZE 25
#include <stdio.h>
#include <math.h>
#include "Canvas.c"
main() {
 Canvaslnit('.');
 Circle('*', XSIZE/2, YSIZE/2,12);
 boxf('a',20,20,24,24);
 line('&',24,24,60,10);
 CanvasPrint();
}
0038デフォルトの名無しさん2006/11/21(火) 21:50:32
>>34
>>1のアップローダー使ってくれると見やすくていいんだけど
0039 ◆pajhDGf5eg 2006/11/21(火) 21:55:45
>>38
わかりました。
今やってみます。
0040デフォルトの名無しさん2006/11/21(火) 22:00:04
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):ファイルを読み込み、各行が逆順に出るようなプログラムを書きなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:mingw-jp
 [3.3] 言語:C、C++
[4] 期限:2006年11月24日
[5] その他の制限:
0041デフォルトの名無しさん2006/11/21(火) 22:11:49
>>34
>個性あふれるものをお願いします。

お前の個性を出せよwww
0042 ◆pajhDGf5eg 2006/11/21(火) 22:13:02
>>38
アップローダーに投稿し終えました。
0043デフォルトの名無しさん2006/11/21(火) 22:13:38
>>41
個性あふれ過ぎて家にも雪ダルマにも見えないの作ればいいんじゃね?
0044デフォルトの名無しさん2006/11/21(火) 22:14:09
>>42
そうしたらアップしたファイルへのリンクを貼ってくれるともっと分かりやすいんだ
0045 ◆pajhDGf5eg 2006/11/21(火) 22:21:39
>>44
何回もスミマセン
こちらです。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi
0046デフォルトの名無しさん2006/11/21(火) 22:27:08
>>45
Circle()が途中で切れてるぜ?というかファイルがあるならそれうpれってことだと思うんだ
0047デフォルトの名無しさん2006/11/21(火) 22:27:38
>>45
それはひょっとしてギャグでやっているのか
0048デフォルトの名無しさん2006/11/21(火) 22:27:56
>>36
すみませんC++でやってもらえるとありがたいです
0049デフォルトの名無しさん2006/11/21(火) 22:33:00
>>48
#include<iostream>
using namespace std;
int main(){int c=0,i,n;
cout<<"亀と鶴の足の総数を入力せよ:";
cin>>n;if(n%2)cout<<"解なし"<<endl;
else{for(i=0;i<=n;i+=2)if((n-i)%4==0){
cout<<"鶴="<<i/2<<"亀="<<(n-i)/4<<endl;
c++;}cout<<c<<"通りあります"<<endl;}return 0;}
C++に直しただけだけど。
0050 ◆pajhDGf5eg 2006/11/21(火) 22:43:54
>>46
ファイルは学校のPCに保管してあるので、今は手元にないんです。
先生が配布したプログラムはCircle()は途中で終わっているので、
何とも・・・OTL

ちなみにこの状態で実行すると、「kadai01.c」は描きかけの状態で出てきます。
これを修正して「家」と雪だるまを描くプログラムを作れってのが今回の課題です。


>>47
ここの板初心者なもんで、色々とわからない点がありまして・・・
0051デフォルトの名無しさん2006/11/21(火) 22:45:56
最近のエスパー能力は失われたプログラムを復元するものが要求されるのか
0052デフォルトの名無しさん2006/11/21(火) 22:55:41
>>49
ありがとうございました。
0053 ◆pajhDGf5eg 2006/11/21(火) 23:15:39
>>46
Circle()の続きがわかりました。こうですね。
"kadai01.c"に挿入されているプログラム「Canvas.c」

#include <stdio.h>
#include <math.h>
 char pixel[XSIZE][YSIZE];

・・・・途中略・・・・

  y=r*cos(t)/2+y0;
  x=r*sin(t)+x0;
  if((x<XSIZE)&&(y<YSIZE))pixel[x][y]=moji;
}
}

これが「Canvas.c」です。
迷惑かけてしまいスミマセン・・・

0054デフォルトの名無しさん2006/11/21(火) 23:53:14
[1] 授業単元:基本プログラミング
[2] 問題文(含コード&リンク):X=a*a*b*cのように定義されたXがある。ただしa,b,cは2以上の正の整数とする。
Xに値が読み込まれると上式を満たすa,b,cの組み合わせを全て列挙、出力し、さらにその組み合わせの総数を出力するプログラムを作成せよ。
解の範囲を要領よく限定すること。ただし、解が存在しない場合は「0通り」と出力し、プログラムはXに0が読み込まれるまで繰り返し返すものとする。
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++/
[4] 期限:明日
[5] 多重ループまでやりました。

0055デフォルトの名無しさん2006/11/21(火) 23:54:23
>迷惑かけてしまいスミマセン・・・
そう思うのなら最初から自力でやれよ。
0056デフォルトの名無しさん2006/11/21(火) 23:58:36
いちいち文句を付ける奴は何なんだ?
ここに依頼してくる奴に教育でも施してる積もりか?
0057デフォルトの名無しさん2006/11/21(火) 23:59:00
[2] 問題文(含コード&リンク):
下のプログラムに付け足して以下のプログラムを作成せよ。
繰り返し構文を用いて、リストの先頭から順番に学籍番号と数学の点数を
表示する。
・リストを先頭からたどっていくポインタst_pを宣言して使用し、まず
st_p = st_firstとする。
・リストの最後ではnext == NULLとし、これを利用する。
#include<stdio.h>

struct student{
char g[8];  /*学籍番号*/
int x; /*数学の点数*/
struct student *next
};

int main(void){
struct student *st_a, st_b;
struct student *st_first;

st_a = (struct student *)malloc(sizeof(struct student));
st_b = (struct student *)malloc(sizeof(struct student));
/*値の代入部は省略*/

st_first = st_a;
st_a->next = st_b;
st_b->next = NULL;
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日の朝10時
0058デフォルトの名無しさん2006/11/22(水) 00:02:51
>>56
最近依頼の量>>解答の量になってるからなあ
基本的な宿題をここに解かせた奴はその後の宿題全部ここに解かせて
ますます依頼の量を増やすだけだろ
0059デフォルトの名無しさん2006/11/22(水) 00:11:30
>>54
#include <iostream>
using namespace std;

int main()
{
int i, j, k, x, c;
while(1){
cout << "Xを入力してください(0で終了します):";
cin >> x;
if(x==0) break;
c = 0;
for(i=2; i<x; i++) {
for(j=2; j<x/i; j++) {
for(k=2; k<x/(j*i); k++) {
if(x==i*i*j*k) {
cout << "a = " << i << " b = "<< j << " c = " << k << endl;
c++;
}
}
}
}
if(!c) cout << "0通り" << endl;
else cout << c << "通り" << endl;
}

return 0;
}
0060592006/11/22(水) 00:20:59
forの中がおかしいな。
for(i=2; i*i<=x/4; i++){
for(j=2; j<=x/(i*i)){
for(k=2; j<=x/(i*i*j){
0061デフォルトの名無しさん2006/11/22(水) 00:29:02
>>58
なんでそれが依頼者に文句をいうことの理由になるのか分からない。
それに、そもそも回答が追い付かなかったところで、困るのは依頼者であって
回答者じゃないだろ。回答者は好きなときに好きなだけ答えれば良いんだから。


本当のところをいうと、確かに俺も今のこのスレは余裕がなさすぎて、
事務的過ぎて、つまらないと思うが、それに対して何かできるわけでもない。
0062592006/11/22(水) 00:30:54
よく考えたらループは2重でいいじゃないか。
それは自分でなんとかしてくれ。
0063デフォルトの名無しさん2006/11/22(水) 00:35:04
まぁ自力でやるやらないはおいといて、
お願いします ありがとうございましたくらいは欲しいよな
回答が本当にそれでよかったのか気になるし。
0064デフォルトの名無しさん2006/11/22(水) 00:38:53
>>63
ここに来るな
0065デフォルトの名無しさん2006/11/22(水) 00:39:00
だから過去の宿題検索(ry
0066デフォルトの名無しさん2006/11/22(水) 00:57:47
>>57
st_p = st_first;
while(st_p) {
puts(st_p->g);
printf(" %d ", st_p->x);
st_p = st_p->next;
}
0067デフォルトの名無しさん2006/11/22(水) 01:16:15
>>65
作ってもいいが依頼者は絶対使わないし無意味だと思う
0068デフォルトの名無しさん2006/11/22(水) 01:23:22
>67
是非作ってくれ。期待してる。
0069デフォルトの名無しさん2006/11/22(水) 01:23:38
>>67
ウィキでキーワード検索できたら重宝するけどなー
77スレも消費してたら似たような宿題が頻出してるだろうに・・
それとも質問者にも回答者にも丸投げの美学みたいなものがあるのかな
0070592006/11/22(水) 01:24:06
2重ループ版
for(i=2; i*i<=x/4; i++) {
for(j=2; j<=x/(i*i*2) {
if(x/(i*i*j)>=2 && x%(i*i*j)==0){
cout << "a = " << i << " b = "<< j << " c = " << k << endl;
c++;
}
}
}

>55,>56,>58,>61.>63,>64,>65,>67,>68
なんのためにこのスレにいるの?
0071デフォルトの名無しさん2006/11/22(水) 01:24:38
>>61
どうせ助けるんなら丸投げするような奴よりは
自分なりに考えたけど分からなかったという奴を助けたい
0072デフォルトの名無しさん2006/11/22(水) 01:32:02
丸投げとか過去スレとか返事/礼なんて、それこそ過去に何度も論議されてんだよ
スレの無駄だから過去ログ探せ糞ども
0073592006/11/22(水) 01:33:27
バカなこと書いてたら修正し忘れた。
k → x/(i*i*j)
0074デフォルトの名無しさん2006/11/22(水) 01:36:43
>>72-73
何でそんなに必死なの?
0075デフォルトの名無しさん2006/11/22(水) 01:37:51
>>70
面白い問題を見つけて、解いて、コードを自慢するため。

>>71
もちろんそれはお前の勝手だが、やはり依頼者に文句をいう理由にはなっていないような。
0076デフォルトの名無しさん2006/11/22(水) 01:38:11
>>74
何でそんなに必死なの?
0077572006/11/22(水) 02:07:03
>>66
解答ありがとうございました。
0078デフォルトの名無しさん2006/11/22(水) 04:37:53
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):
以下の2つのファイルを2つの方法でクロマキー合成せよ。
:ファイルはこれです。→ttp://uploda.en.tc/index.cgi?md=fl&file=1164137430%2e%2erar
(1)RGBで変換
(2)HSVで変換
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Vsual C++ 2005
 [3.3] 言語: C++
[4] 期限: 明日まで。
[5] その他の制限: (1),(2)は別々なので。プログラムを始めて半年超くらいなので,よろしくお願いします。(^^;
0079デフォルトの名無しさんNGNG?2BP(200)
>>71
そもそも宿題代行しても依頼者は助からない。
必要な能力が身に付かない上に、能力に応じた評価を得られないんだから。
ここで宿題に回答するのは丸投げ厨に対する最高の嫌がらせだ。
0080デフォルトの名無しさん2006/11/22(水) 10:37:00
>>79
ここで質問するような奴はプログラミング能力を必要としていないだろうし
課題さえ提出すれば評価は得られる
だいたい2chだから質問者回答者共に変に煽ったりする奴がいても不思議ではないし
そんなの気にしても意味ないと思う

一番言いたいことは
性帝が何を偉そうに!
ってことだ
0081デフォルトの名無しさん2006/11/22(水) 10:57:34
[1] 授業単元: プログラミング
[2] 問題文:最大10件の整数を格納する配列を宣言する。
-1が入力されるまで、もしくは、最大件数(10件)までループで入力を行い、
それを逆順に表示するプログラムを作成せよ。

#include<stdio.h>
#define max 10
int main(){
int array[max];
int i;
printf("*****Enter Number*****\n");
for(i=0;i<10;i++){
printf("Num(%.2d):",i+1);
scanf("%d",&array[i]);
if(array[i]==-1)
break;
}
printf("\n*****Display Number*****\n");
for(i=10;i>=0;i--){
printf("Num(%.2d):%6d\n",i+1,array[i]);
}
return 0;
}
自分でこんなカンジに作ってみたのですが、だめでした。
修正をお願いします。。。
もし根本的に間違っていたらよろしくお願い致します。
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 今日中
[5] その他の制限:ポインタはここでは使用してはいけないそうです。
0082デフォルトの名無しさん2006/11/22(水) 11:12:21
>81
for(i=10;i>=0;i--) → for(;i>=0;i--)
-1が表示されてもいいならこれで
0083812006/11/22(水) 11:16:59
そういうことでよかったんですか!
できれば-1だけを表示させたくないんですが。。。
それは可能でしょうか?
0084デフォルトの名無しさん2006/11/22(水) 11:18:14
81のだと最後まで入れるた時にarray[10]を呼んじゃうからダメだ。
for(i-=1;i>=0;i--)
に修正すれば-1も表示されなくなる
0085デフォルトの名無しさん2006/11/22(水) 11:19:01
81じゃなくて82ね
0086812006/11/22(水) 11:21:08
本当ですね!
ありがとうございます♪
0087デフォルトの名無しさんNGNG?2BP(200)
>>80
能力に見合わない評価は何の役にも立たないどころか有害でしかない。
まあ学生さんには分からないかも知れんがね。
0088デフォルトの名無しさん2006/11/22(水) 11:45:19
> そう かんけいないね
 殺(ry
 ゆず(ry
0089デフォルトの名無しさん2006/11/22(水) 12:02:19
遺伝的アルゴリズムを用いて次の問題を解きなさい
f(x)=x{sin(10πx)+2cos(10πx)+1.0 (-1≦x≦2)

f(x)の値を最大にするxの値とf(x)の値を求めよ。
0090デフォルトの名無しさん2006/11/22(水) 12:04:51
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):
以下の2つのファイルを2つの方法でクロマキー合成せよ。
:ファイルはこれです。→ttp://uploda.en.tc/index.cgi?md=fl&file=1164137430%2e%2erar
(1)RGBで変換
(2)HSVで変換
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Vsual C++ 6.0
 [3.3] 言語: C
[4] 期限: 今週中
[5] その他の制限: ・数字以外は入力を受付けない
・一等6桁、二等下5桁、三等下4桁、四等下2桁
・自分の葉書番号は何度でも入力可にする
・上位の等が当たったら下位の等は当たらないようにする

以上です、宜しくお願いします
0091デフォルトの名無しさん2006/11/22(水) 12:48:09
同じ問題を見たような・・・ 何回貼ってもやってもらえるとは限らないぞ
0092デフォルトの名無しさん2006/11/22(水) 12:56:30
>>90
画像処理とお年玉年賀宝くじを組み合わせた課題か.....
0093デフォルトの名無しさん2006/11/22(水) 18:29:14
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi
No.3018
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2006年11月23日17時まで
[5] その他の制限: いままで講義で習ったのは、基礎、配列程度。

よろしくお願いします。
0094デフォルトの名無しさん2006/11/22(水) 19:06:35
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3018.txt
こーやってtxtへリンクを貼ると(見る側が)便利だよ
0095デフォルトの名無しさん2006/11/22(水) 20:02:32
4次方程式の数値解、そして解析解との比較。
0096デフォルトの名無しさん2006/11/22(水) 20:31:45
せんせー。数値解と解析解の意味がわかりませんー。
0097デフォルトの名無しさん2006/11/22(水) 20:40:53
あれ?俺言葉の使い方間違ってるかも??
0098782006/11/23(木) 00:43:38
>>90は私の質問ではないので。
つか、90さん、ファイルの中身がどうあれ、私に断りもなくファイルのリンクを
貼るのは、いかがなもんでしょうか?
0099デフォルトの名無しさん2006/11/23(木) 00:45:19
>>98
ワロタ
0100782006/11/23(木) 00:55:37
分かったらさっさと答えんかいボケナスども
0101デフォルトの名無しさん2006/11/23(木) 02:15:02
>>100
先生に断りもなくファイルをアップして公開のは、いかがなもんでしょうか?
分かったらさっさと削除せんかいボケナス!
0102デフォルトの名無しさん2006/11/23(木) 02:15:03
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):ファイルを読み込み、各行が逆順に出るようなプログラムを作る。
条件・一行の文字数や、行数の制限を行わない事。
   ・同じファイルを二回以上オープンしない事。
   ・メモリに異常が発生した場合は、検知し、確実に異常終了させる事。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:mingw-jp
 [3.3] 言語:C++
[4] 期限:2006年11月24日
[5] その他の制限:
0103デフォルトの名無しさん2006/11/23(木) 02:33:25
>>102
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

int main()
{
std::ifstream ifs("ファイル名");
std::string str;
std::vector<std::ios::pos_type> vpos;
std::ios::pos_type tmp;

while (tmp = ifs.tellg(), std::getline(ifs, str))
vpos.push_back(tmp);

ifs.clear();
std::vector<std::ios::pos_type>::reverse_iterator ipos = vpos.rbegin();

while (ipos != vpos.rend()) {
ifs.seekg(*ipos);
std::getline(ifs, str);
std::cout << str << std::endl;
++ipos;
}
}
0104デフォルトの名無しさん2006/11/23(木) 02:47:39
メモリの異常を検知って、何気に無茶なことを書いてるな。
0105デフォルトの名無しさん2006/11/23(木) 02:52:35
メモリが足りなくなったら、程度に読み替えておけばいいんじゃね?
vectorやstringは勝手に例外投げるし、敢えてtryブロックにする
必要もないかと。
0106デフォルトの名無しさん2006/11/23(木) 03:06:55
:-)
0107デフォルトの名無しさん2006/11/23(木) 03:24:20
>・メモリに異常が発生した場合は、検知し、確実に異常終了させる事。

確実に『異常終了』かよwwwww
0108デフォルトの名無しさん2006/11/23(木) 03:28:22
確実にOSでもクラッシュさせるかw
0109デフォルトの名無しさん2006/11/23(木) 03:35:59
abort()使えって意味だろ?
0110デフォルトの名無しさん2006/11/23(木) 03:38:43
マンドクサ('A`)誰かやってくれ
0111デフォルトの名無しさん2006/11/23(木) 03:45:31
SIGなんちゃら受け取って死なせりゃええやん
0112デフォルトの名無しさん2006/11/23(木) 04:02:52
つ 電源ボタン
0113デフォルトの名無しさん2006/11/23(木) 04:08:13
HDDのパーティションでも破壊する?
0114デフォルトの名無しさんNGNG?2BP(200)
>一行の文字数や、行数の制限を行わない事。

何気にマンドクサイな。
つか1行が2GB以上あったらむりぽ。
0115デフォルトの名無しさん2006/11/23(木) 08:22:01
>>105
メモリが足りなくなることはメモリに異常が発生したとは言わない。
メモリセルが突然死したりすることをメモリに異常が発生したと言うのだ。
011678 ◆h340fzU7jQ 2006/11/23(木) 12:17:04
>>101
お前、ホント迷惑。
質問がスルーされるからやめてくんない??
まぁ、それが目当てなんだろうけどさ。
011778 ◆xx0MKhQsgU 2006/11/23(木) 12:28:00
>>116
鳥付ければいいってものじゃないです><
0118デフォルトの名無しさん2006/11/23(木) 12:32:23
>>116
100 も 116 も本当の 78 であるかは甚だ疑問だが、101 は、

リンク自体は自由に属し制限することができないのにそれを制限しようとしたり、
問題文のコピーは著作権法で制限されているのにそれを無視するといった、
自分に都合の良いダブルスタンダードをからかっているのでは。
0119デフォルトの名無しさん2006/11/23(木) 12:34:14
>>78
rar が解凍できね。
圧縮形式を zip か lzh にしてくれないかな?
もしくは rar を解凍するコードを貼ってくれてもおkだけどな。
012078 ◆h340fzU7jQ 2006/11/23(木) 12:54:09
>>119
ttp://strawberry.web-sv.com:900/Sn/5/vdf/bh5175.zip.html
どーぞ。
0121デフォルトの名無しさん2006/11/23(木) 12:58:21
>>118
それがゆとり教育世代

なのかも。
0122デフォルトの名無しさん2006/11/23(木) 13:02:14
肖像権とかは問題ないのか?あれ
0123デフォルトの名無しさん2006/11/23(木) 13:24:19
>>122
ひょっとして、肖像権に問題ありそうなのか
同じような課題2つに、更に78トリ付二人もいるしね

やっぱり、>>78世代は>>118の "自分に都合の良いダブルスタンダード"を持つ世代
なのかも
0124デフォルトの名無しさん2006/11/23(木) 13:51:45
>>78
ができない、俺が言うことではないと思うが、
自由に発言することは結構だが、他人に迷惑かけんのはやめなよ。
0125デフォルトの名無しさん2006/11/23(木) 13:57:53
>>123
んな事言ったら、ココに質問に来るやつら、
全員、都合の良いやつらだぉ(^ω^)
0126デフォルトの名無しさん2006/11/23(木) 14:22:37
>>125
言葉遣いがどうあろうと、人の善意をタダで利用するという意味で募金詐欺と大差ない。
ただ、善意を利用するということが暗黙の了解であるだけマシというだけ。
質問者を貶しても心を痛める必要は全くない。
0127デフォルトの名無しさん2006/11/23(木) 14:26:15
>>125
でも丸投げするだけならダブルスタンダードではない。
社会で通用する考え方かどうかはともかく、自己矛盾はしてない。
0128デフォルトの名無しさん2006/11/23(木) 14:45:42
>>78が自分の写真を使ってるなら問題にならないけど、
そうじゃないなら勝手にアップロードしてバラまくのは問題じゃないかな?
それともフリーな写真素材かなんかを使ってるんだろうか
0129デフォルトの名無しさん2006/11/23(木) 14:47:18
>>126
不正は質問者と回答者の間で起きてるんじゃない、出題者と質問者の間で起きてるんだ!
0130デフォルトの名無しさん2006/11/23(木) 14:48:16
ぉぃおぃ、ダブルスタンダードとか、
他で、やってんくんない??君ら。
0131デフォルトの名無しさん2006/11/23(木) 14:50:12
ダブルスタンダードってこういうこと?
#include<stdio.h>
#include<stdlib.h>
0132デフォルトの名無しさん2006/11/23(木) 14:56:05
むしろこんな感じ?
#include <sys/socket.h>
#include <winsock2.h>
0133デフォルトの名無しさん2006/11/23(木) 15:06:59
>>78
bmpの若い娘はだれ? 78自身?
0134デフォルトの名無しさん2006/11/23(木) 15:17:23
>>130
78自演乙
0135デフォルトの名無しさん2006/11/23(木) 16:25:08
>>102
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
int main(int argc, char* argv[])
{
    if (argc != 2) return 1;
    std::ifstream ifs(argv[1]);
    std::string line;
    while (std::getline(ifs, line)) {
        std::copy(line.rbegin(), line.rend(), std::ostream_iterator<char>(std::cout));
        std::cout << std::endl;
    }
    return 0;
}
0136デフォルトの名無しさん2006/11/23(木) 18:07:53
>>135
それじゃ文字単位で逆になるだけだろ。
各行を逆に表示しなきゃならない。今の所まともに動くのは>>103だけ
0137デフォルトの名無しさん2006/11/23(木) 18:40:13
> 各行を逆に表示
これが曖昧

俺は>>103じゃなく>>135の意味だと思った
0138デフォルトの名無しさん2006/11/23(木) 18:43:19
漢字はどうすんの?
0139デフォルトの名無しさん2006/11/23(木) 18:46:34
漢字は逆の意味にすればいいんじゃね?
0140デフォルトの名無しさん2006/11/23(木) 18:47:18
かなり大変そうだな
0141デフォルトの名無しさん2006/11/23(木) 18:49:17
wifstreamを使えば十分だろ。
0142デフォルトの名無しさん2006/11/23(木) 18:50:08
行の入れ替えなら漢字は問題にならない。
0143デフォルトの名無しさん2006/11/23(木) 19:00:44
>>142
行の入れ替えはいいが、今行毎に文字を逆にするんではないかという
話になっている
0144デフォルトの名無しさん2006/11/23(木) 19:37:20
>>102の "各行が逆順に出る"をどのように解釈するか

A. ファイルの行を後ろから表示(ファイルの最初の行を最後に表示、そして、最後の行を最初に表示、stack)
B.1行の文字列を逆順に表示 (12345 -> 54321) 

漏れは、Bと解釈したが、喪前らどうよ
0145デフォルトの名無しさん2006/11/23(木) 19:53:19
>>144
AともBとも解釈できるがBなら他に適切な表現があると思う
だからA派
0146デフォルトの名無しさん2006/11/23(木) 20:09:08
おれもA派、文字を逆にじゃなくて行を逆になんで
0147デフォルトの名無しさん2006/11/23(木) 20:12:49
B
0148デフォルトの名無しさん2006/11/23(木) 20:27:28
Aっぽいな
行数の制限を行わないとか書いてあるし
0149デフォルトの名無しさん2006/11/23(木) 21:22:56
各行(それぞれひとつずつ)を逆にすると俺は解釈したからB派
というかAでもBでも課題としてはありそうだから解釈に困るなw
0150デフォルトの名無しさん2006/11/23(木) 21:45:52
>> クロマキー系

とりあえず、先頭の54バイトをコピーした後、
(1)3バイトごとに処理。
(2)YUV変換をかます。
0151デフォルトの名無しさん2006/11/23(木) 21:59:15
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3019.txt
このプログラムは有向グラフの閉オイラーパス(一筆書き)を求めるものであるが、無向グラフにも対応させよ。
ヒント
if(current[v]!=0){
push(current[v]);
while(top!=0){
while(current[v]!=0 && searched[(current[v]+1/2]!=0)
current[v]=adjlist[current[v]];
if(current[v]!=0){
a=current[v];
current[v]=adlist[a];
push(a);
}
else a=pop;
}

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: borland
 [3.3] 言語: C
[4] 期限: 土曜
[5] その他の制限:
ヒントみても全然わからないです。よろしくお願いします!
0152デフォルトの名無しさん2006/11/23(木) 22:55:14
>>151
てめー期限が土曜なんてありえねー課題出してんじゃねー
ぶっ殺すぞ
絶対解いてやんねー
0153デフォルトの名無しさん2006/11/23(木) 23:13:23
>>78
クロマキーピクセルの(r,g,b)分布が(64,64,128)より青側にあるから
if ( R < 64 && G < 64 && B >= 128 ) {
で背景と人物のピクセルを切り替えればよい。
01541512006/11/23(木) 23:16:24
>>152
本当に土曜なんだよ。
お前みたいな異端児には頼まないから他の方よろしくお願いします。
0155デフォルトの名無しさん2006/11/23(木) 23:27:55
2006年はいらないとしても11月25日って書けばいいだろうに・・・
出来れば時間も書いて欲しい。00:00でもいいけど。
01561512006/11/23(木) 23:33:00
出来れば時間に余裕を持っておきたいので、なるべく今夜中に
お願いします。さっさとやらんかいボケどもめ
0157デフォルトの名無しさん2006/11/23(木) 23:35:27
>>154
ピーーーッ
>・・なんだよ とか お前みたいな異端児には頼まないから
他人の善意に期待してるんだから、こんなこと書くよる回答する気なくなるよ
 本当に土曜なんです、よろしくお願いします と書く!
世渡りうまくなれよ
01581572006/11/23(木) 23:38:26
他人の善意に期待してるんだから、こんなこと書くよる回答する気なくなるよ
**訂正**
他人の善意に期待してるんだから、こんなこと書くと回答する気なくなるよ
01591512006/11/23(木) 23:49:08
>>158
しがない俺にアドバイスをありがとうございます。
ねくらでひねくれてて友達もいなくて課題を誰にも相談することができなくて困ってるんです。
0160デフォルトの名無しさん2006/11/23(木) 23:49:15
ageで依頼する奴が、人を煽る際にsageで書くなんて現実性がない。
たぶん、質問者成りすまし。
まぁ俺は答える気が最初からないからどうでもいいけど
0161デフォルトの名無しさん2006/11/23(木) 23:50:18
だよな。俺が151って名前にすりゃ、それでわかんなくなっちゃうんだから大抵の暴言等は成りすまし。
0162デフォルトの名無しさん2006/11/23(木) 23:53:33
全部自演にしか見えないよ
0163デフォルトの名無しさん2006/11/23(木) 23:55:08
>>162は俺の自演ッス
すいませんッス
0164デフォルトの名無しさん2006/11/23(木) 23:57:32
まぁトリップをつけてない質問者が悪いんだけどな
0165デフォルトの名無しさん2006/11/24(金) 00:04:09
77代目スレは荒れてるな
0166デフォルトの名無しさん2006/11/24(金) 00:06:16
まさに荒らしの思う壺って所か
0167デフォルトの名無しさん 2006/11/24(金) 00:12:16
荒れてるね
お願いしますの言葉より、解答ソースを書き込んだ後の
ありがとうございましたって言葉の方が俺は欲しいな。
0168デフォルトの名無しさん2006/11/24(金) 00:20:57
いい加減ループはやめようか
0169デフォルトの名無しさん2006/11/24(金) 00:22:16
ループなしで課題をやれとな!?
0170デフォルトの名無しさん2006/11/24(金) 00:23:05
全部アンロールとかそれはそれで地獄
0171デフォルトの名無しさん2006/11/24(金) 00:29:15
ループがなければ再帰をつかえばいいじゃない。
                                    マリーアントワネット
0172デフォルトの名無しさん2006/11/24(金) 00:31:49
何でそんなややこしいことせなあかんのや!
おんどりゃぶっとばすぞ!
0173 ◆D2Ir/QRV8E 2006/11/24(金) 00:42:55
[1] 授業単元: C言語 
[2] 問題文(含コード&リンク):標準入力で入力された20個の数字をバブルソート
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0 
[3.3] 言語: C
[4] 期限: 日曜くらいまでにはお願いします。。。
[5] ちょっと端折りますが・・・ 

お願いします。
256桁までという仕様なんですがとりあえずint型の範囲で作ってます。
main、input、bubblesortの3つの関数を作ってます。
void bubbleSort(int **sortNumber, int length); char *input(void); int main()てな感じです。
マイナスの値のソートと文字列の判定が上手くいきません。
input関数でcharポインタを返して、バブルソート関数でmainでatoiでint型にしたポインタ配列を渡すのは途中経過を見せた時に変えちゃダメと言われたのでその辺を考慮してお願いします。。。
ソースを見せたいのですが>>1が死んでて、直で載せると改行が多すぎになるので困ってます。。。
0174デフォルトの名無しさん2006/11/24(金) 00:49:26
>>173
>>1は死んでねえよバカ
0175デフォルトの名無しさん2006/11/24(金) 01:05:56
>>174
荒し君、頑張ってるね、乙!
0176デフォルトの名無しさん 2006/11/24(金) 01:15:21
>>173
アップローダを使え
なにをどうゆう風にしたいのかいまいちわかんね
0177デフォルトの名無しさん2006/11/24(金) 01:18:35
>>171 ここの解答者はマリーアントワネットか。

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

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

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

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


void bubbleSort(int *sortNumber, int length);

void bubbleSort(int *sortNumber, int length)
{

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

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

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

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

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

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

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

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

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

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

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

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

return 0;
}

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

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

n=1000としてこの公式を使って
 1  4
∫ ―――― dx   の近似値の作成Cプログラムが
 0  1+(x*x)
わかりませんどなたかお願いします。
0208デフォルトの名無しさん2006/11/24(金) 12:38:45
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
02092032006/11/24(金) 12:48:09
動作自体はわかるんですけど、各行のfor文がどう動いてその結果になったかがわからないんです。
0210デフォルトの名無しさん2006/11/24(金) 12:56:27
>>207
#include <stdio.h>
double f(double x) {
    return 4 / (1 + x * x);
}
int main(void) {
    int n = 1000, i;
    double a = 0., b = 1., h = (b - a) / n, s = 0.;
    for (i = 1; i < n; ++i) s += f(a + i * h);
    s *= 2;
    s += f(0) + f(n);
    s *= h / 2;
    printf("%f", s);
    return 0;
}
0211デフォルトの名無しさん2006/11/24(金) 12:59:30
>209
それは動作がわかるとは言わない。
動作がわかるならforがどう動いてるかもわかるはず。

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

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

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

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

return ret;
}

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

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

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

#include <stdio.h>
#define COLSIZE 80

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

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

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

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

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

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

#include <stdio.h>
#define COLSIZE 80

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

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

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

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

p = fgets(buffer, COLSIZE, fp);

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

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

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

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

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

return 0;
}
ですよね?

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

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

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

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

double ***P;
int i, j;

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

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

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

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

@ ls | more
. . .
@

のようにコマンドを'|'でつなげると、前のコマンドの
標準出力を後ろのコマンドの標準出力とします。
簡単のため、コマンドは2つだけとします。
パイプの実現にはpipeシステムコールを
使います。

int fds[2];

pipe(fds);

write(fds[1], . . . .);

read(fds[0], . . .);

[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:2006年11月25日23:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ポインタ、構造体、システムコールなどは習いました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3033.txt
授業でやった↑のサンプルを改造して作るらしいです。
0277デフォルトの名無しさん2006/11/25(土) 12:53:34
>>151
まず、サンプルの実行結果だけど、
-----
input the number of vertices n and the number of edges m
4 3
input tail and head of an edge m times
1 2
1 3
2 3

adjacency list
1: 1 2
2: 3
3:
4:

path: a tail head
1: 10 0 0
2: 1 1 2
3: 3 2 3
-----
隣接リスト(adjacency list)で1に対して1、2って正しいのか?
2、3が正しいと思うんだが、
それと最期のpath: と a って何? a[1]=10になってるしサンプルバグってね?
02782772006/11/25(土) 13:04:25
それから、無向グラフにした場合は隣接リスト表示するだけでOK?
02792772006/11/25(土) 13:24:07
>>276
#include <fcntl.h>
このファイルも自前だろ。晒せ。
0280デフォルトの名無しさん2006/11/25(土) 13:28:34
>>279はミス。無かった事にして。
02812412006/11/25(土) 14:21:31
>>243-244
レスありがとうございました。

#include <stdio.h>
#include <string.h>

#define COLSIZE 80

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

fgets(new, COLSIZE + 1, stdin);
a[strlen(new)] = '\0';

fp = fopen("new", "r");

fgets(buffer, COLSIZE + 1, fp);

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

return 0;
}

考えた結果こうなったのですが違ってますよね?
どこが違うのでしょうか?
0282デフォルトの名無しさん2006/11/25(土) 14:25:45
>>281
ところどころに出てくる
> COLSIZE + 1
には何か特別な意味があるのか?
0283デフォルトの名無しさん2006/11/25(土) 14:32:13
>>281
1.
>fp = fopen("new", "r");
"new" では、「newという内容の文字列」になってしまう。
指定したいのは new という「変数」。

2.
一番目の文字を指す時 new[ ? ] の ? に入る数字は?また長さ一の文字列の最後の文字はどこにある?
二番目の文字を指す時 new[ ? ] の ? に入る数字は?また長さ二の文字列の最後の文字はどこにある?
   ・
n 番目の文字を指す時 new[ ? ] の ? に入る数字は?また長さ n の文字列の最後の文字はどこにある?

02842822006/11/25(土) 14:42:56
ああ、COLSIZE+1は終端文字も含めてか
0285デフォルトの名無しさん2006/11/25(土) 14:44:25
>>281
>a[strlen(new)] = '\0';
new[strlen(new)] = '\0'; もしくは
new[strlen(new)-1] = '\0';

fopen() 直後のfgetは余計
0286デフォルトの名無しさん2006/11/25(土) 14:56:08
>>285
あんた馬鹿?
0287デフォルトの名無しさん2006/11/25(土) 15:13:23
[1] 授業単元:プログラミング
[2] 問題文:2つの最大40桁の自然数を読み込み、その和を返すプログラムを作れ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名: gcc
 [3.3] 言語: C
[4] 期限:来週の木曜日(11月30日)まで
[5] その他の制限:構造体、ポインタを軽くならったところです。
    入力は文字列で行い、それを型変換し計算するという流れになるかと思いますが、
  文字列の扱いに困っております。
0288デフォルトの名無しさん2006/11/25(土) 15:37:05
>>287
以前 fj に似たようなのが流れてたなぁと思って検索したら出てきた。
ttp://katsu.watanabe.name/ancientfj/article.php?mid=%3C784lk3%245t%241%40news1.dti.ne.jp%3E
0289デフォルトの名無しさん2006/11/25(土) 15:42:25
>>287
適当に書いてみた。
#include<stdio.h>
#include<string.h>
void std_reverse(char*begin,char*end){
    char c;while(begin != end && begin != --end)c=*begin,*begin++=*end,*end=c;
}
char*my_strrev(char*p){std_reverse(p,p+strlen(p));return p;}
int main(void){
    char a[41]={0},b[41],c,*p=a,*q=b;
    scanf("%s%s",a,b);
    my_strrev(a);my_strrev(b);
    for(c=0;*p||*q||c;c=*p > '9',*p++ -= c * 10)
        *p = (*p?*p:'0') + (*q?*q++-'0':0) + c;
    puts(my_strrev(a));
    return 0;
}
0290デフォルトの名無しさん2006/11/25(土) 15:46:24
>>286 はぁ?具体的に示してみろよ。
0291デフォルトの名無しさん2006/11/25(土) 16:10:21
>new[strlen(new)] = '\0'; もしくは
少なくともこれは全く無意味だな。
0292デフォルトの名無しさん2006/11/25(土) 16:12:14
もしくはの意味わかるか?
0293デフォルトの名無しさん2006/11/25(土) 16:18:22
>>292
もしかして、真偽値を確かめてから偽なら後を実行するというアレか!?
0294デフォルトの名無しさん2006/11/25(土) 16:18:59
実験まで強要するとは憎いやつじゃ
0295デフォルトの名無しさん2006/11/25(土) 16:39:42
>>292
その文脈でもしくはと書く以上、

:私にはどちらを依頼人が望んでいるかは分からないが、
:依頼人の望む動作は A と B のどちらかであるように私には思える。

と解釈するのが常識的であって、つまり本人は A にも B にも意味があると
思っていると判断されて当然では。

逆に、私はわざとやったとは考えてないが、もし本人が、一方は全くのハズレで
意味がないと重々承知した上でわざとこのように書いたのなら、その軽重は
別として、相手を混乱させてやろうといった意思があったことになるのでは。
0296デフォルトの名無しさん2006/11/25(土) 16:49:59
問題 「もしくは」を使って文章を作りなさい

回答 彼は頼もしくはない
0297デフォルトの名無しさん2006/11/25(土) 18:10:21
>>286
 オナニーはひとりで汁
0298デフォルトの名無しさん2006/11/25(土) 18:14:00
>>297
まぁ、みせっこもたまにはいいよね
0299デフォルトの名無しさん2006/11/25(土) 18:23:13
[1] 授業単元: 応用プログラミング
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3036.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2006年11月26日20時00分まで
[5] その他の制限: 問題で与えられたソースを元にせよという指示がありました。
よくわからない部分は全力で調べるのでよろしくお願いします
0300デフォルトの名無しさん2006/11/25(土) 18:27:52
[1] 授業単元: プログラミング�T
[2] 問題文:
文字列と数字を与え、文字列の長さが数字より大きいかどうかを判定し、
その後に文字列の長さがどれだけ数字より大きいかを求めて表示するようなプログラムを作成せよ。
文字列の長さの方が小さい場合は何もせず終了せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名: gcc
 [3.3] 言語: C
[4] 期限: 11/29まで
[5] その他の制限: まだ始めたばっかなんで全然わかりません。
0301デフォルトの名無しさん2006/11/25(土) 18:32:14
ポインタがわからないんだが、どうすればいい?
スレ住人おすすめの本かサイトを教えてくれ。
0302デフォルトの名無しさん2006/11/25(土) 18:33:48
>>301
brainf*ckがいいんじゃないか?
ぐぐってみろ
0303デフォルトの名無しさん2006/11/25(土) 18:42:40
[2] 問題文:
受け取った引数xの全桁の合計値を返す関数
int sum_dgt(int x) {/* */} を作り実行しなさい。
例えばx=234のときは9となる。(正の整数とする)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名: gcc
 [3.3] 言語: C
[4] 期限: 11/28まで

おねがいします
03042812006/11/25(土) 18:43:33
>>284
はい、そういうことです。

>>283氏と>>285氏のレスで解りました。
ありがとうございます。

ただ、>>285氏の
>fopen() 直後のfgetは余計
というので、なぜfopen() 直後のfgetが必要ないのかは、
いまいち解りませんが。
03051512006/11/25(土) 19:19:11
>>277
点数が4で
辺数が3のグラフって閉路がなくないですか?
0306デフォルトの名無しさん2006/11/25(土) 19:21:44
もう151は来るな
死んでくれ
03071512006/11/25(土) 19:23:17
暴言吐いていたのは自分じゃないですよ。それは信じて下さい
0308デフォルトの名無しさん2006/11/25(土) 19:24:06
>>307
わかっているさ
0309デフォルトの名無しさん2006/11/25(土) 19:24:11
どこ大?
俺より下だったら答えてあげる
03101512006/11/25(土) 19:29:11
慶應です。
0311デフォルトの名無しさん2006/11/25(土) 19:30:13
俺ポン大なんだよね
死ねよKO
03121512006/11/25(土) 19:31:58
310は自分じゃないです。あーなんでこんなに偽物が・・・
慶應ではないです
特定されると嫌なので書きたくないですが、慶應よりは下です
0313デフォルトの名無しさん2006/11/25(土) 19:32:29
俺は苦労してポン大しか入れなかったというのに
ボンボンというだけで慶應に入って
おまけに卒業に必要な単位は他人任せか
腐れ外道が
03141512006/11/25(土) 19:36:09
日大って猿でも受かるんじゃないんですか?
幼稚舎にいた頃、アルバイトで来ていた日大の学生さんを見て、日大はお猿さん養成所も同然だと母が言ってましたが。
0315デフォルトの名無しさん2006/11/25(土) 19:37:44
どれかひとつぐらいは
こっそり本人が書いたんじゃないかと思えてきたよw
0316デフォルトの名無しさん2006/11/25(土) 19:40:38
NG推奨名前:151
0317デフォルトの名無しさん2006/11/25(土) 19:42:29
>>312
信じてるよ
0318デフォルトの名無しさん2006/11/25(土) 19:43:37
>>317
俺も信じてるよ
0319デフォルトの名無しさん2006/11/25(土) 19:44:17
内容:
[1] 授業単元:情報処理工学1
[2] 問題文(含コード&リンク): 下記
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:VC++
 [3.3] 言語: C++
[4] 期限: 明日まで
[5] その他の制限:

class Vector{
public:
void f(){cout << "f()" << endl;}
};

int main(){
vector<Vector*> vec;
Vector *v;
for(int i = 0; i < 10; i++) { v = new Vector; vec.push_back(v); }
for(vector<Vector*>::Iterator i = vec.begin(); i < vec.end(); i++)
i.***->f();
}

というプログラムを作ってるんですが、動的にクラスを確保して、それを次々にvectorに格納して、最後に表示をするっていうふうにしたんです。
ですが、***の部分をどうやったらいいのか、わかりません。クラスではなく、整数であれば、i をそのまま使えばいいんですけど、クラスだとうまくいきません。
どうしたらいいでしょうか??
0320デフォルトの名無しさん2006/11/25(土) 19:44:26
どうでもいいがとりあえず今未解決の課題はどれだけあるんだ
前スレのは知らんがこのスレのを消化していこうぜ
下らん流れはさっさと断ち切るに限る
0321151 ◆nEYxVzEafI 2006/11/25(土) 19:46:59
今更遅いかもしんないっすけど、トリップつけます
0322デフォルトの名無しさん2006/11/25(土) 19:50:26
>>90
>>93
>>151
>>274
>>276
>>299
>>300
>>303
>>319

未解決課題
0323デフォルトの名無しさん 2006/11/25(土) 19:50:57
>>303
//受け取った引数xの全桁の合計値を返す関数
int sum_dgt(int x)
{
int digit = 1;
int sum = 0;
int i ;
int xx ;
int xxx = x;

for(i = 1; x > 1 ;i++){
x /=10;
digit *= 10;
}
for(;digit > 0; digit/=10){
xx = xxx;
xx /= digit;
sum += xx;
xxx-=xx*digit;
}
return sum;

}
0324151 ◆nEYxVzEafI 2006/11/25(土) 19:51:59
>>322
自分のも含めて頂いてありがとうございます。てっきりスルーされると思いました。
0325デフォルトの名無しさん2006/11/25(土) 19:53:32
>>90 (今日中)
>>151 (今日中)
>>274 (29日まで)
>>276 (今日の23時まで)
>>299 (明日の20時まで)
>>300 (29日まで)
>>319 (明日まで)

期限切れを消しといた
0326デフォルトの名無しさん2006/11/25(土) 19:54:32
みんな期限迫りすぎだろw
もっとゆとりを持って依頼に来てくれよw
0327151 ◆nEYxVzEafI 2006/11/25(土) 20:00:24
>>325
来週の水曜日までOKになりました
0328デフォルトの名無しさん2006/11/25(土) 20:02:12
↑>>276 (今日の23時まで)
│>>90 (今日中)
│>>299 (明日の20時まで)
│>>319 (明日まで)
↓>>151 >>274 >>300 (29日まで)

まあまったり待てや
0329デフォルトの名無しさん2006/11/25(土) 20:03:38
>>90はファイルがもうないから消していいと思われ
0330デフォルトの名無しさん 2006/11/25(土) 20:06:56
>>300
#include <stdio.h>
#include <string.h>
//'\0'は数えないものとする
void Compar(int x, char s[])
{
unsigned int len;

len = strlen(s);
if(x <= len)
printf("文字の長さと数値の差は%d \n",len - x);
else
return;
}
0331デフォルトの名無しさん2006/11/25(土) 20:09:00
↑>>276 (今日の23時まで)
│>>299 (明日の20時まで)
│>>319 (明日まで)
↓>>151 >>274 (29日まで)
0332323,3002006/11/25(土) 20:10:57
すぐ出来るやつだけやった。
0333名無しさん2006/11/25(土) 20:13:47
現在、WindowsXP Pro+ VS2005 Proを使って開発中です。

1を入力されるとIMEがONになって、'あ' と表示するプログラムの作成中です。
以下のコードではIMEがONになってくれなくて、'a' と表示されます。
ご指摘お願いします。

void fnConvert(MSG *pMsg)
{
static int iCnt= 1;

if( (pMsg->wParam == 0x31) && (pMsg->message == WM_KEYDOWN) )
{
pMsg->wParam= 0x41;
break;
}
}
0334デフォルトの名無しさん2006/11/25(土) 20:14:23
お疲れ。
俺は274でもやるか
本人降臨してほしいが
0335デフォルトの名無しさん2006/11/25(土) 20:17:01
C++ってインスタンスじゃなくクラスを確保するんだ
0336デフォルトの名無しさん2006/11/25(土) 20:18:32
>>326
しかし宿題出された瞬間にここに出されても萎えるという
0337デフォルトの名無しさん2006/11/25(土) 20:33:21
>>299
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3037.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3038.c
0338デフォルトの名無しさん2006/11/25(土) 21:03:07
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): あるテキストファイルに含まれるA〜Zの個数をカウントするプログラムをつくれ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: lcc
 [3.3] 言語: C
[4] 期限: 11月28日まで
お願いします。どう検索すればいいかも分からないので教えていただきたいです。
答えがほしいですが、ヒントをいただければ自分でも努力はします。


0339デフォルトの名無しさん2006/11/25(土) 21:05:42
>>338
fgetc()を使ってEOFになるまで一文字ずつ読み込み、isalpha() && isupper()が
真になる時に配列count[26]のうち対応する文字のカウントを+1する。
0340デフォルトの名無しさん2006/11/25(土) 21:15:57
>>338
質問されても面倒なので答えを書いておく

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(void)
{
int chr[26] = {0}, c, i;
FILE *fp;

if ((fp =fopen("count1.c", "r")) == NULL) /* ファイル名は適宜変更 */
exit(1);

while ((c = fgetc(fp)) != EOF)
if (isalpha(c) && isupper(c))
chr[c - 'A']++; /* Windows上で動かす事を前提とする */

for (i = 0; i < 26; i++)
printf("%c : %dcount(s)\n", i + 'A', chr[i]);

return 0;
}
0341デフォルトの名無しさん2006/11/25(土) 21:16:38
あ、最後にfclose(fp); してから return 0; しといてね
0342デフォルトの名無しさん2006/11/25(土) 21:23:57
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): テキスト(英文)を読み込んで単語を全て取り出し、重複する単語は1つにまとめ、その単語がいくつあったかabc順に並べて表示するプログラムを書きなさい。(.,"などは含まない)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] lcc
 [3.3] 言語:C
[4] 期限:2006年11月26日24:00まで
プログラミング初心者です。申し訳ありませんがどなたかお願いします。
0343デフォルトの名無しさん2006/11/25(土) 21:26:08
>>340に補足
#include <stdio.h>
#include <ctype.h>
#define NUMBER 26
main(int argc, char **argv){FILE *fp; int i, c, chr[NUMBER]={0};
if((fp=fopen(argv[1],"r")) == NULL) puts("need 1 parameter");
else {
while ((c=fgetc(fp))!=EOF) if (isalpha(c)) chr[toupper(c)-'A']++;
fclose(fp);}

for (i=0; i<NUMBER; i++) printf("%c: %3d time%s\n",i+'A',chr[i], chr[i]>1?"s":"");
getchar();return 0;}
0344デフォルトの名無しさん2006/11/25(土) 21:26:55
>>342
ていうか、K&Rもんばっかだな
03452872006/11/25(土) 21:30:50
>>288
ありがとうございます。が、なんか文字化けしちゃって私の環境では見れませんね・・・
わざわざ張ってくださったのに申し訳ないです

>>289
これはこれは、わざわざ作ってくださってありがとうございます
しかし私のポインタの知識が未熟なせいか、今現在はまだ読み解けない部分がありますね
けれども、これはとても参考になります。ほんとにありがとうございました
0346デフォルトの名無しさん2006/11/25(土) 21:32:33
>>345
base64知らないのか
0347デフォルトの名無しさん2006/11/25(土) 21:41:19
ランディ・バースは44番
0348デフォルトの名無しさん2006/11/25(土) 21:50:50
聞いてねぇーよ
0349デフォルトの名無しさん2006/11/25(土) 21:54:34
ごめん俺が聞いたんだ。
ホント悪かった。
0350デフォルトの名無しさん2006/11/25(土) 21:55:31
↑>>276 (今日の23時まで)
│>>319 >>342 (明日まで)
↓>>151 >>274 (29日まで)

未解消
03512872006/11/25(土) 21:58:09
>>346
すみません知りませんでした
一応ググって復元してみたら無事プログラムソースを見ることができました
お手数かけまして申し訳ありません
0352デフォルトの名無しさん2006/11/25(土) 22:00:19
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
y=sin2x*cosx(0≦x≦π/4)をgnuplotで図示せよ。
gnuplotの関数表示機能は使わず、C言語でプログラムを組んで、その出力
データをgnuplotで読み込んで図示させること。刻み数は1000とする。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 来週の火曜日の20時までです。
[5] その他の制限:特になし。
出力データをファイルに書き込み、gnuplotでそのファイルを読み込み
グラフを表示させる、といことです。
よろしくお願いします。
0353デフォルトの名無しさん2006/11/25(土) 22:05:28
ところでいつか丸投げされてた遺伝的アルゴリズムの問題解こうと思うんだが
俺遺伝的アルゴリズムやったことないんだ

計算結果はdoubleで返すことを期待されてると思うんだが
double型にビット演算ってできないよな?
何か良いアイデア知ってる火といないかな
0354デフォルトの名無しさん2006/11/25(土) 22:07:25
>>319
class Vector {
public:
void f(){ std::cout << "f()" << std::endl; }
};

int main()
{
std::vector<Vector*> vec;
Vector *v;
for (int i = 0; i < 10; i++) {
v = new Vector;
vec.push_back(v);
}
for (std::vector<Vector*>::iterator i = vec.begin(); i < vec.end(); ++i)
(*i)->f();
}
0355デフォルトの名無しさん2006/11/26(日) 00:15:05
>>352
gnuplotに読み込ますデータの仕様くらい用意してから書き込めよ。
0356デフォルトの名無しさん2006/11/26(日) 00:16:38
>>353
つ union
0357デフォルトの名無しさん2006/11/26(日) 00:40:25
>>356
お こんな要素があったのか バッチリだな
ありがとう
03583522006/11/26(日) 00:55:37
>>355
すいません、
>gnuplotに読み込ますデータの仕様くらい用意してから書き込めよ。
というのは、出力データをどんな感じでファイルに書き込むか、という
ことですか?
xiとyiとしたら
0.0000 0.14356
0.0100 0.16344
. .
. .
. .
という感じです。
0359デフォルトの名無しさん2006/11/26(日) 01:05:49
>>352
#include<stdio.h>
#include<math.h>

#define N 1000

double f(double x){
return sin(2*x)*cos(x);
}

int main(void){
double x, dx=(M_PI/4)/N;
int i;

for(i=0;i<=N;i++){
x=i*dx;
printf("%f %f\n", x, f(x));
}

return 0;
}
0360デフォルトの名無しさん2006/11/26(日) 02:23:49
greeting all:

excuse me for writing in English, i haven't installed japanese IME
so i can't type in japanese

i'm working on my project in my computer science class and
found a very interesting result. that is recursive merge-sort
function is faster than non-recursive version.

i posted the same question on cprogramming.com so that
the details and my source code is provided at
http://cboard.cprogramming.com/showthread.php?p=612918#post612918
03613532006/11/26(日) 04:03:12
うん 出来たっぽい

さすがに人に見せられるレベルじゃないのでもう少し手を入れるが
もし締め切りが近かったらアレなので89はまだいたら締め切り示せ
03622282006/11/26(日) 06:42:23
>>228 訂正
コンパイラ名とバージョン:VC 6.0
で未解決なのでお願いします
0363その12006/11/26(日) 09:13:28
>>89
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <float.h>
#include <math.h>
#define N 500//世代内の個体数
#define G 1000//最大世代数
#define Kousa 0.5//交差率。0〜1
#define Totuzen 0.1//突然変異率。0〜1だが小さめに設定すること
#define Pi 3.14159265358979


union uGENE
{
int i[2];
double d;
};

double hyouka (double x);
void kousa(int *a,int *b);
void mutation(int *a,int *b);
int mycomp(const void *_a, const void *_b);
int choice(int i);
0364その22006/11/26(日) 09:14:14
void main(void){
int g,i;
union uGENE future[N+1];
double r,present[N];
srand((unsigned) time(NULL));
for(i=0;i<N;i++) present[i]=3.0*((double)rand()/RAND_MAX)-1.0;
for(g=0;g<G;g++){
printf("%d世代目計算中・・・\n",g);
qsort(present, N, sizeof(double), mycomp);

for(i=0;i<N;i++) {
r = (double)rand()/RAND_MAX;
future[i].d=present[choice(i)];
if(r<Kousa){
//交叉
future[i+1].d=present[choice(i+1)];
kousa(future[i].i,future[i+1].i);
kousa(future[i].i+1,future[i+1].i+1);
i++;
}
else if(r<Kousa+Totuzen){
//突然変異
mutation(future[i].i,future[i].i+1);
}
//何もしなければコピーになる
}
//世代交代
for(i=0;i<N;i++) present[i]=future[i].d;
}
qsort(present, N, sizeof(double), mycomp);
printf("x=%fの時f(x)は%f",present[0],hyouka(present[0]));
}
0365その32006/11/26(日) 09:15:20
//評価関数。xが定義域に無い時はマシンエプシロンを返す。
//評価関数はx{sin(10πx)}+2cos(10πx)+1.0をそのまま用いるが
//0以下の場合はマシンエプシロンの10倍を返す。

double hyouka (double x){
if(x<-1||x>2) return DBL_EPSILON;
double y,tmp;
tmp=10.0*Pi*x;
y=x*sin(tmp)+2*cos(tmp)+1.0;
if (y<=0) return DBL_EPSILON*10;
else return y;
}

//交叉関数。一様交叉を行う
void kousa(int *a,int *b){
//交叉するビットを示すマスクを作る
unsigned int mask=0;
//マスクの各ビットにランダムに0/1を入れる
for(int i=0;i<32;i++){
mask+=rand()%2;
mask<<=1;
}
//aとbで内容が同じビットは交叉する必要がない
mask=mask&(*a^*b);
*a^=mask;
*b^=mask;
}
0366その42006/11/26(日) 09:16:00
//突然変異関数。どこか1ビットをランダムに反転させる。
void mutation(int *a,int *b){
unsigned int mask=1;
int r=rand()%64;
if(r>=32){
r-=32;
mask<<=r;
*a^=mask;
}
else{
mask<<=r;
*b^=mask;
}
}

int mycomp(const void *_a, const void *_b)
{
double a = *(double *)_a;
double b = *(double *)_b;
double tmp=hyouka(b)-hyouka(a);

if (tmp<0) {
return -1;
} else if (tmp > 0) {
return 1;
} else {
return 0;
}
}
0367その52006/11/26(日) 09:20:36
int choice(int n){
//エリート選択
if(n==0||n==1) return n;
//投げやりなランキング選択
for(int i=0;i<N-1;i++){
if(rand()%2==0) return i;
}
return N-1;
}


これで終了。
作っておいてなんだがそんなに性能良くない。

とりあえず交叉の元になる個体に同じ物が二つ選ばれるというバグ(笑)があるので
取り除いたらもう少し性能が良くなると思います。(直すつもりだったのに忘れてた)

あとchoice関数を物凄い適当に作ってあるんでここらをいじっても良くなるはず。
やる気があったら改良するかも。
0368デフォルトの名無しさん2006/11/26(日) 09:37:26
ああ、バグ直したら大分性能良くなった
まあこれくらいは自力でやって
0369デフォルトの名無しさん2006/11/26(日) 09:50:29
[1] 授業単元:計算科学
[2] 問題文
連続な値をとる確率変数Yp_ _ _ _,Ynが独立同分布(iid)
p(x)=1( 0≦x <1)
p(x)=0(それ以外)
に従うとしよう. double get_uniform_random() そのままですね.
連続な値をとる確率変数Xnを Xn=(1/N)×(Y1+…+Yn) で定める.
N?
1000
サンプル数?
100
シード?
128478
と入力すると, X1000のサンプルを100個生成して,
# N X_Nのサンプル平均 X_Nのサンプル分散
1000 0.502346 0.000868
と出力するプログラムを作ってください。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio.NET2003
 [3.3] 言語: C
[4] 期限: 2006年11月28日09:00まで
0370デフォルトの名無しさん2006/11/26(日) 10:21:44
342どなたかお願いします。時間がありません…
0371デフォルトの名無しさん2006/11/26(日) 10:40:21
Cかぁ、面倒くさいな
0372デフォルトの名無しさん2006/11/26(日) 10:45:33
お願いします(><)
0373デフォルトの名無しさん2006/11/26(日) 10:53:04
>>370
まだ13時間あるよ
0374デフォルトの名無しさん2006/11/26(日) 11:56:05
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
3つの整数を各辺の長さとして、その3つの辺の組が
(1)正三角形を出力できるなら「equilateral triangle」と出力し、
(2)(一般的な)三角形が形成できるなら「triangle」と出力し、
(3)三角形が形成できなければ「not triangle」と出力する
 プログラムを作成せよ。
 もし可能ならば、上の条件に加えて
(4)直角三角形を形成できるなら「right-angled triangle」と出力し、
(5)二等辺三角形を形成できるなら「isosceles triangle」と出力し、
(6)三角形を形成できるならばその面積Sを出力するプログラムを作成せよ。
例:
4,4,4・・・equilateral triangle (S=6.928)
6,5,7・・・triangle (S=14.697)
6,2,2・・・not triange
ヒント:
3つの整数をa,b,cとすると、三角形を形成する条件は、|b-c|<a<b+c
面積Sはへロンの公式より、s=(a+b+c)/2とするとS=(s(s-a)(s-b)(s-c))^1/2
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2006年11月28日16:00まで
どう考えてもわかりません。どうかお願いします。
0375デフォルトの名無しさん2006/11/26(日) 12:36:38
>>370
英文テキスト名は指定されている?
0376デフォルトの名無しさん2006/11/26(日) 12:57:11
>>370
というか英文の仕様が無いと作りづらいかも。
・英文中に出てくる記号は",(カンマ)" ".(ピリオド)"" (空白)"のみ?
 ":(コロン)"とかは出てこない?
・改行は分離子と見なしていい?例えば
 I am progr
 ammer
 という文ならprogrammerを単語とみなすのか?
 progrとammerをそれぞれ単語とみなすのか?

0377デフォルトの名無しさん2006/11/26(日) 14:28:18
>>337
ありがとうございます。
コンパイルする際にエラーが出ましたが、なんとか頑張って修正してみます。
0378デフォルトの名無しさん2006/11/26(日) 14:30:37
>>370
つーか全く同じ問題が前スレか前前スレで解答されてた気がするんだわ
03793522006/11/26(日) 14:34:20
>>359
解答ありがとうございます。
359さんが作って下さったプログラムについて、少し疑問があるのですが…。
課題の前の説明に「刻み数を小さくすれば実際の曲線に近いデータになる。」
と書いてあるのですが、352さんが作って下さったプログラムの場合だと、
刻み数を大きくすればする程、出力する数も増えて、実際の曲線に近い
データになるような気がするのですが…。
自分自身が刻み数というものを何か解ってなく、現在、学校じゃないので
gnuplotを使用できないというのもあって、実際は、どうなの解りませんが
疑問に思ったので。
0380デフォルトの名無しさん2006/11/26(日) 14:45:14
>>379
>課題の前の説明に「刻み数を小さくすれば実際の曲線に近いデータになる。」

本当にそう書いてある? 刻み「幅」を小さくすれば、なら納得いくのだけど。
0381デフォルトの名無しさん2006/11/26(日) 15:02:30
>>370 これでおk?
75代目
730 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/03(金) 21:14:44
>>727
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2871.c
0382デフォルトの名無しさん2006/11/26(日) 15:20:25
>>376
英文はなんでもよいそうです。
英文にでてくる文字の中で単語のみを抜き出すプログラムです。
英文中に出てくる記号は",(カンマ)" ".(ピリオド)"" (空白)"":(コロン)"";(セミコロン)"です。  
・改行は分離子と見なしてよいそうです。
03833792006/11/26(日) 15:50:27
>>380
はい、課題の前の説明には「刻み幅」と書いてあります。
「課題には刻み数は1000とする。」と書いてあります。
刻み数=刻み幅と思っているのですが違うのですか?
違うなら刻み数と刻み幅はどう違うのでしょうか?
0384デフォルトの名無しさん2006/11/26(日) 15:55:04
↑
どこのアホだよ、わからないことを紙に書いて
整理してから書き込めばわかることだろ。
馬鹿は馬鹿なりのプログラムの書き方ってのがある、
それすらしない奴はもしかして自分の頭だけで
物事全て考えられると思ってるのか?
そういうのって思い上がりだよ。
0385デフォルトの名無しさん2006/11/26(日) 15:56:42
>>381
それ1行に1単語とか制約つきじゃまいか?
0386デフォルトの名無しさん2006/11/26(日) 16:00:56
>>383
日本語でおk
0387デフォルトの名無しさん2006/11/26(日) 16:02:52
世の中には助かった人たちだけでなく、助からなかった人たちもいるのだ。
0388デフォルトの名無しさん2006/11/26(日) 16:07:08
>>385
main関数のwhile文をこう書き換えればよし。
while(scanf("%*[^a-zA-Z]"),scanf("%79[a-zA-Z]",buf)==1){
まぁ単語長に制限ついてるけど実用上は問題ないでしょ。
0389デフォルトの名無しさん2006/11/26(日) 16:12:11
>>383
まず一つ言っておく
煽りでもなんでもなく小学生でも分かることだから今後自分の勉強への態度を変えたほうが良いぞ

━━━━━━━━━━━━━━━━━━━━
↑これを刻み数10で分割すると(10個に分割する)


━━━━━━━━━━━━━━━━━━━━
└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘

こうなる。
一方刻み数5で分割すると(5個に分割する)
━━━━━━━━━━━━━━━━━━━━
└──┘└──┘└──┘└──┘└──┘

こうなる。
分割する数が減れば、1個1個の幅(刻み幅)は増える。
当たり前だな
0390デフォルトの名無しさん2006/11/26(日) 16:20:32
要するにキャベツの千切りは相当細かいってこった
0391デフォルトの名無しさん2006/11/26(日) 16:23:56
>>377
後学のために、どういうエラーが出たか教えてくれないか?
0392デフォルトの名無しさん2006/11/26(日) 16:24:59
>>383
喪前が100mを歩かなければならないとする。
で、100m歩くときの歩数(刻み数)と歩幅(刻み幅)の関係を考えでみろ
歩数x歩幅=100m
歩数が多い、歩幅が小さいになるだろ >>389見ろ
0393デフォルトの名無しさん2006/11/26(日) 16:25:42
>>391
ちょうど今修正してる段階で気づきましたが、
こちらの手違いでした、申し訳アリマセンOTL
0394デフォルトの名無しさん2006/11/26(日) 16:30:01
ここでやって貰った回答見ると、先生やTAの方が答えてるんじゃないかってちょっと怖くなる・・・・。
提出したら不可がきたりとか・・・・。
0395デフォルトの名無しさん2006/11/26(日) 16:30:35
>>388
そりゃまた随分乱暴だな・・・( ^ω^)
いいけどよ、俺の宿題じゃねーしw
0396デフォルトの名無しさん2006/11/26(日) 16:35:19
>>393
見返してて気づいたけど、一筆書きをする方の58行目のコメント
「全ての節点の次数が偶数だった」
は嘘なので削除しておいてくれ。
0397デフォルトの名無しさん2006/11/26(日) 16:44:15
↑>>319 (今日中)
│>>369 (28日の09時まで)
│>>374 (28日の16時まで)
↓>>151 >>274 (29日まで)

未解消
0398デフォルトの名無しさん2006/11/26(日) 16:54:06
[1] 授業単元: 確立統計学
[2] 問題文(含コード&リンク):
以下のプログラムは三目並べ(Tic-Tac-Toe)のゲームプログラムである。
メインプログラムの内容を設計実装せよ。また、ミニマックスプログラム関数の
再起呼び出し数を出力させよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3040.txt

[3] 環境
 [3.1] OS:UNIX
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 11/27 PM5:00

よろしくお願いいたします。
0399デフォルトの名無しさん2006/11/26(日) 16:56:09
342お願いします
0400デフォルトの名無しさん2006/11/26(日) 16:57:43
↑>>319 >>342 (今日中)
│>>398 (明日の17時まで)
│>>369 (28日の09時まで)
│>>374 (28日の16時まで)
↓>>151 >>274 (29日まで)

>>399

>>381はダメなん?

0401デフォルトの名無しさん2006/11/26(日) 17:06:36
本当は自力でやりたかったんですけどどうしても分からないので。
[1] プログラミング
[2] , 次のようにデータ 0 をターミネータとするものに書き換えよ.

* 例えば, 配列 a に 4 個のデータ 10, 11, 12, 13 を記憶する場合には, a[0]=10, a[1]=11, a[2]=12, a[3]=13, a[4]=0 のように記憶する (0 がデータの終わりを表す). データ数を別途他の変数で記憶することはしない.
* void array_input(int *a) … データ数は入力しない. 最初から0番目のデータ, 1番目のデータ, …, を順に入力し, 0 を入力した時点で終了するようにする. 引数は配列 (の先頭アドレス) a だけで, データ数は特にセットしない.
* void array_print(int *a), void array_reverse(int *a) … 配列 (の先頭アドレス) a のみ渡し, データ数は渡さない.
* main は次のようになる.
[3]
 [3.1] winXP sp2
 [3.2] cygwin
 [3.3] C
[4] 11月30日
[5] 元のやつを書き換える問題なんですけど、途中までやってます。
それの問題のあるところを教えてくれたら助かります。
0402デフォルトの名無しさん2006/11/26(日) 17:07:40
>>398
>>392
0403デフォルトの名無しさん2006/11/26(日) 17:08:16
間違えた
>>398
http://pc8.2ch.net/test/read.cgi/tech/1162771475/392
0404デフォルトの名無しさん2006/11/26(日) 17:09:03
本当は自力でやりたかったんですけどどうしても分からないので。
[1] プログラミング
[2] , 次のようにデータ 0 をターミネータとするものに書き換えよ.

* 例えば, 配列 a に 4 個のデータ 10, 11, 12, 13 を記憶する場合には, a[0]=10, a[1]=11, a[2]=12, a[3]=13, a[4]=0 のように記憶する (0 がデータの終わりを表す). データ数を別途他の変数で記憶することはしない.
* void array_input(int *a) … データ数は入力しない. 最初から0番目のデータ, 1番目のデータ, …, を順に入力し, 0 を入力した時点で終了するようにする. 引数は配列 (の先頭アドレス) a だけで, データ数は特にセットしない.
* void array_print(int *a), void array_reverse(int *a) … 配列 (の先頭アドレス) a のみ渡し, データ数は渡さない.
* main は次のようになる.
[3]
 [3.1] winXP sp2
 [3.2] cygwin
 [3.3] C
[4] 11月30日
[5] 元のやつを書き換える問題なんですけど、途中までやってます。
それの問題のあるところを教えてくれたら助かります。
0405401=4042006/11/26(日) 17:13:24
ごめんなさい。なんか2chブラウザがおかしいことになって
自分の書き込み表示されないで402 403が出てきたので
投稿されていないと思いました。これのおかしい所お願いします。
i=0;とかが変だと思うのですが。

#include <stdio.h>#define ARRAY_MAX 32
void array_input(int *a){
int i;int *p;
i=0;
while (*a){
printf("%d 番目の要素 = ", i);
scanf("%d", &a[i]);}
}
void array_print(int *a){
int i;
printf("{");
while (*a){
if (0<i){
printf(",");}
printf("%d", a[i]);}
printf("}\n");}
array_reverse(int *a) {
int i=0;
int temp=0;
while (*a){
a[i] = a[i];}
}
int main(void){
int a[ARRAY_MAX];
array_input(a); array_print(a); array_reverse(a); array_print(a);
return 0;
}
0406デフォルトの名無しさん2006/11/26(日) 17:22:08
>>405
色々とおかしい
とりあえず元々の書き換え前のを出したほうがはやいぜ?
0407デフォルトの名無しさん2006/11/26(日) 17:23:21
>>400
381は求められてる出力と違うみたいです。
・単語を全部取り出し重複する単語は1つにまとめる。
・それぞれの単語の出現した数を数えて表示する。
・単語をアルファベット順に並べる
ということが求められています。
面倒かと思いますが本当に申し訳ないのですがどなたかお願いします。
0408デフォルトの名無しさん2006/11/26(日) 17:26:03
>>407
>>388の変更を加えても期待するのと動作が違うのか?
0409401=4042006/11/26(日) 17:26:58
#include <stdio.h>#define ARRAY_MAX 32
void array_input(int *a, int *n){
int i, size;
printf("配列のサイズ = ");
scanf("%d", &size);
for (i=0; i<size; i++){
printf("%d 番目の要素 = ", i);
scanf("%d", &a[i]);}
*n = size;}
void array_print(int *a, int n){
int i;
printf("{");
for (i=0; i<n; i++){
if (0<i){
printf(",");}
printf("%d", a[i]);}
printf("}\n");}
array_reverse(int *a, int n) {
int i=0;
int temp=0;
for(i=0;i<n/2;i++){
temp = a[i];a[i] = a[n-i-1];a[n-i-1] = temp;}}
int main(void){
int a[ARRAY_MAX]; int n;
array_input(a, &n);array_print(a, n);array_reverse(a, n);array_print(a, n);
return 0;}

書き換え前。ターミネートされてないやつです。これは正常に動きます。
行数の都合で無理に改行して見難くてごめんなさい。2時間ほど自力で考えましたが力不足ですね。
0410デフォルトの名無しさん2006/11/26(日) 17:30:48
たった2時間で諦めるなとまず言いたい
0411デフォルトの名無しさん2006/11/26(日) 17:31:10
>>401
まず長さを取得して、それを使って書き換え前の関数を呼べば良い。
0412デフォルトの名無しさん2006/11/26(日) 17:31:44
>>410
2時間本気で悩むのはなかなかできることじゃないと思うが。
0413デフォルトの名無しさん2006/11/26(日) 17:33:39
悩んでどうする
考えんだぉ(^ωー)
0414デフォルトの名無しさん2006/11/26(日) 17:33:44
>>412
実践の時間として2時間は長いが
努力の時間としては2時間は短い
0415デフォルトの名無しさん2006/11/26(日) 17:39:52
高ければ高い壁の方が、登ったとき気持ち良いもんな
0416デフォルトの名無しさん2006/11/26(日) 17:50:22
レシピないっすよ
04173832006/11/26(日) 18:07:22
>>389さんと>>392さんの説明で解りました。
刻んだ時の数と刻んだ時の幅ってことだったのですね。よく考えたら、
そのままですね。
ありがとうございました。
0418デフォルトの名無しさん2006/11/26(日) 18:10:54
>>408
初歩的な話で申し訳ないのですが実行できなくて・・・
コンパイルは成功するのですがそれからどうすれば良いか・・・
基礎的なことがわからなくて申し訳ありません。
cpadを使っているのですがどうやったら実行結果を見れるのでしょうか??
0419デフォルトの名無しさん2006/11/26(日) 18:12:24
>>415
この時代遅れの努力家めが。
世の中全てはコストパフォーマンスだ。
限られた時間を最大限自分の楽しみに使い面倒なことは全て他人任せにするのが今のトレンドなんだよ。
>>401だって今頃異性といちゃいちゃしながらアホども早く答えてくんねーかなーと笑っていたりするんだよ。
そんなわけでタダで利用されるだけの可哀想な負け組みの自分は
コピペすればすぐ動くことをモットーにして今日も初心者スレでひつまぶし。
#include <stdio.h>
#define ARRAY_MAX 32
void array_input(int*a)
{int i,size;printf("配列のサイズ = ");scanf("%d",&size);
for(i=0;i<size;i++){printf("%d 番目の要素 = ",i);scanf("%d",&a[i]);}a[size]=0;}
void array_print(int*a)
{int i;printf("{");for(i=0;a[i]!=0;i++){if(0<i){printf(",");}printf("%d",a[i]);}printf("}\n");}
void array_reverse(int*a){int i,n=0;int temp;while(a[n]!=0)n++;for(i=0;i<n/2;i++){temp=a[i];a[i]=a[n-i-1];a[n-i-1]=temp;}}
int main(void){int a[ARRAY_MAX];array_input(a);array_print(a);array_reverse(a);array_print(a);return 0;}
0420デフォルトの名無しさん2006/11/26(日) 18:43:25
[1] 授業単元:C言語講座
[2] 問題文(含コード&リンク): 九九の表を作成せよ。ただし形は、下の様
な形にすること。

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

.はスペースは思ってください。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日の朝の11時
[5] その他の制限: 2重ループ?(forを2回使うやつ)を使う
0421デフォルトの名無しさん2006/11/26(日) 18:50:43
test
0422デフォルトの名無しさん2006/11/26(日) 18:51:40
>>354
すみません。あの、エラーになりした。

error C2040: 'i' : 'class Vector ** ' は 'int' と間接操作のレベルが異なります。
error C2446: '<' : 'class Vector ** ' 型から 'int' 型への変換ができません。
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。
error C2040: '<' : 'int' は 'class Vector ** ' と間接操作のレベルが異なります。
error C2100: 間接指定演算子 (*) の使い方が不正です。
error C2227: '->f' : 左側がクラス、構造体、共用体へのポインタではありません。

というのが出ました。
どうしたらいいでしょうか?
0423デフォルトの名無しさん2006/11/26(日) 18:51:51
#include <stdio.h>
int main(void){
int i,j;
printf(" "); for(j=1;j<10;j++)printf("%3d",j); printf("\n");
for(i=1;i<10;i++){
  printf("%d",i);
  for(j=1;j<10;j++)
    printf("%3d",i*j);
  printf("\n");
}
}
04244202006/11/26(日) 19:10:03
>>423
ありがとうございます。
助かりました〜。
0425デフォルトの名無しさん2006/11/26(日) 20:16:46
>>418
コマンドプロンプト、リダイレクト・・・後はわかれ
0426デフォルトの名無しさん2006/11/26(日) 21:55:06
[1] 授業単元: プログラミングC
[2] 問題文(含コード&リンク):

ファイルから行列を読み込み,ガウスの消去法を行いなさい.ただし,データは matrixを使用すること
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3041.txt

matrix
1.0 2.0 -12.0 8.0 3.0 30.0
5.0 4.0 7.0 -2.0 6.0 10.0
-3.0 7.0 9.0 5.0 9.0 20.0
6.0 -12.0 -9.0 3.0 1.0 50.0
9.0 1.0 -5.0 14.0 -11.0 80.0

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: borland C++ Compioler
 [3.3] 言語:C言語
[4] 期限: 火曜日

問題は?のところを書き換えるようになっています。
よろしくお願いします。
04273192006/11/26(日) 23:30:28
すみません。どうやったらいいのか教えていただけないでしょうか?
>>354さんが書いていただいたプログラムですと、

error C2040: 'i' : 'class Vector ** ' は 'int' と間接操作のレベルが異なります。
error C2446: '<' : 'class Vector ** ' 型から 'int' 型への変換ができません。
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。
error C2040: '<' : 'int' は 'class Vector ** ' と間接操作のレベルが異なります。
error C2100: 間接指定演算子 (*) の使い方が不正です。
error C2227: '->f' : 左側がクラス、構造体、共用体へのポインタではありません。

というエラーが出ました。ここの部分が解決できたら宿題が完成します。
教えて欲しい所は、クラスを動的確保して、vectorに格納。で、vectorを使って格納したクラスの関数を使いたいです。

宿題をやっていただくというのに、申し訳ないのですが、
よろしくお願いします。
0428デフォルトの名無しさん2006/11/26(日) 23:43:24
>>427
コンパイラは何使ってるの?ソースは本当に>>354のままか?
gcc3.4.2(MinGW)で普通にコンパイルできて実行できるのだが。
0429デフォルトの名無しさん2006/11/26(日) 23:44:28
まさか

#include <iostream>
#include <vector>
using namespace std;

が抜けてるとか、そういうオチはやめてくれよ。
0430デフォルトの名無しさん2006/11/26(日) 23:51:31
>>428
VC++6.0を使ってます。
今、自分の書いたところを確認したですが、VC++だけしか書いていませんでした。
すみませんでした。

>>429
残念ながらオチませんでしたw
0431デフォルトの名無しさん2006/11/26(日) 23:54:27
>>427
for (int i = 0; i < 10; i++) {
を
for (int j = 0; j < 10; j++) {
に変更したらどうなる?

# これで通るようなら、コンパイラを窓から投げ捨てろ状態な訳だが。
0432デフォルトの名無しさん2006/11/26(日) 23:58:58
>>431
変更したら通りしました!!!!
みなさん、ありがとうございます!!

ですが、なぜ変更したら通ったでしょうか?
0433デフォルトの名無しさん2006/11/27(月) 00:00:08
>>431
あー何かVC6はスコープが他のC++コンパイラと違うとかあったな。
そこまで面倒みきれんわ。
0434デフォルトの名無しさん2006/11/27(月) 00:00:51
>>432
VC6.0はfor文のスコープ規則が古い仕様なのでforを突き抜けるから
よくある回避策としては
#define for if(0){}else for
ってのをファイルの先頭に突っ込むとかいう手がある。
0435デフォルトの名無しさん2006/11/27(月) 00:01:08
>>432

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
                        |
       ____.____    |
     |        |        |   |
     |        | ∧_∧ |   |
     |        |( ´∀`)つ ミ |
     |        |/ ⊃  ノ |   |  VC++6.0
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    |   
                        |

そんなコンパイラ、窓から投げ捨てろ!
04364322006/11/27(月) 00:02:25
なるほど。そういう事です。
わかりました!
ありがとうございました!
0437デフォルトの名無しさん2006/11/27(月) 00:02:41
[1]システム標準関数
[2]http://mobiledatabank.jp/s/src/MDBS0997.pdfの最後から二番目に書いてあります。
[3]windows xp
[4]11月28日
0438401=4042006/11/27(月) 00:10:33
>>419
すみません、そのプログラムは動くのですが
問題はd番目の要素 と最初から入力させるのではなくて
0を入力させた時点で終わるようなものを作りたいです。
0439デフォルトの名無しさん2006/11/27(月) 00:18:11
>>438
とりあえず、いちゃいちゃ乙
0440デフォルトの名無しさん2006/11/27(月) 00:25:17
>>438
void array_input(int *a)
{
int i;
for(i=0;;i++) {
printf("%d 番目の要素 = ", i);
scanf("%d", &a[i]);
if(a[i] == 0) break;
}
}
void array_print(int *a)
{
int i;
printf("{%d",a[0]);
for(i=1; a[i]!=0; i++) printf(",%d", a[i]);
printf("}\n");
}
void array_reverse(int *a)
{
int i, j, temp;
for(i=0; a[i]!=0; i++);
for(j=0; j<i/2; j++) {
temp = a[j];
a[j] = a[i-j-1];
a[i-1-j] = temp;
}
}
0441デフォルトの名無しさん2006/11/27(月) 00:39:10
>>437
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3044.c
0442デフォルトの名無しさん2006/11/27(月) 00:47:33
[1] プログラミング言語
[2] テキストファイルに書いた英文を読み込み、単語の長さを調べてその頻度を調べるプログラム
  を作る。ただし空白、タブ、改行は文字列に含まず、ピリオド、コンマは0文字とする。
  (20文字以上は1まとめとする)
  [例] 0文字 1文字 2文字 … 20文字以上
      3 4 6 0
[3] 環境:Windows XP
  言語:C++
[4] 期限: ([2006年11月29日13:00まで]
よろしくお願いします。
0443デフォルトの名無しさん2006/11/27(月) 00:51:16
>>441
ありがとうございます。しかし実行するとエラーが発生してしまいますた_| ̄|○ il||li
0444デフォルトの名無しさん2006/11/27(月) 00:57:09
>>443
どういうエラー?
それから、fopenの第二引数で"wb"とすべきところを"w"と書いたので
直しておいてくれ。
0445デフォルトの名無しさん2006/11/27(月) 01:07:37
>>444
wbは直しました!
d:\cprog\08rect\08rect.c(4): error C2059: 構文エラー : '型'
d:\cprog\08rect\08rect.c(7): fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
と出ます。
本当に苦手ですいません。
0446デフォルトの名無しさん2006/11/27(月) 01:12:38
>>445
なんて酷いメッセージだ。何が悪いのか分からん。

当て推量だが、2箇所あるmaxをmax_of_twoで置換してみたら直るかも知れん。
0447デフォルトの名無しさん2006/11/27(月) 02:34:09
>>442
#include <algorithm>
#include <iostream>
#include <fstream>
#include <map>
#include <string>
int main(int argc, char* argv[]) {
    if (argc != 2) return 1;
    std::ifstream input(argv[1]);
    if (!input) return 1;
    const char delimiters[] = " \t,.";
    std::map<int, int> dic;
    std::string line;
    while (std::getline(input, line)) {
        dic[0] += std::count(line.begin(), line.end(), ',') + std::count(line.begin(), line.end(), '.');
        std::string::size_type start_index = line.find_first_not_of(delimiters);
        while (start_index != std::string::npos) {
            std::string::size_type end_index = line.find_first_of(delimiters, start_index);
            if (end_index == std::string::npos) end_index = line.length();
            if (end_index - start_index != 0) ++dic[end_index - start_index < 20 ? end_index - start_index : 20];
            start_index = line.find_first_not_of(delimiters, end_index);
        }
    }
    for (int i = 0; i < 20; ++i) std::cout << i << "文字: " << dic[i] << std::endl;
    std::cout << "20文字以上: " << dic[20] << std::endl;
    return 0;
}
0448デフォルトの名無しさん2006/11/27(月) 03:34:13
すいません、関数の戻り値を数値配列にすることは可能ですか?
可能であれば方法を教えていただきたいのですが
0449デフォルトの名無しさん2006/11/27(月) 03:36:49
>>448
> 数値配列
初耳の言葉だ
もっと説明モトム
0450デフォルトの名無しさん2006/11/27(月) 03:53:51
>>449
例えば、void test(double matrix[10][10], double *matrixPtr[10][10])
ってイメージで、matrix[10][10]を関数に入力して、
計算した結果をmatrixPtr[10][10]に出力するって感じです。

多分根本的なところが間違ってると思われますが、
void型の関数で不特定多数の、main関数で使える値を出すには
どうすればいいんでしょうか?
かなり日本語喋れってかんじだと思いますが、どうかよろしくお願いします・・・
0451デフォルトの名無しさん2006/11/27(月) 09:02:47
>>450
渡された配列の中身を書き換えるだけなら、わざわざ double *matrixPtr[10][10]
ってポインタ配列にする意味がわからん。mallocで確保でもするのか?
0452デフォルトの名無しさん2006/11/27(月) 10:43:21
値を変更するためにポインタにしなきゃいけないと思ってるんじゃない?
配列を引数にするってことがどういうことかわかってないんだろ。
04534422006/11/27(月) 10:44:03
<<447
早速の返答ありがとうございます。
でもこれって#include <stdio.h>だけで作れないですか?
最初の[5]で書いとくべきだったんですけどすみません。
多分、単語を切り取って文字数を出力し、文字数mを添字とする配列要素を
インクリメントしていく、という流れになると思うんですが・・・
本当に申し訳ないですが、よろしかったらお願いします。
0454デフォルトの名無しさん2006/11/27(月) 10:59:19
>>453
C++って書いておいてそれはねーだろw
0455デフォルトの名無しさん2006/11/27(月) 13:54:15
これはひどいwwwwww
0456デフォルトの名無しさん2006/11/27(月) 14:09:22
ワロタ
0457デフォルトの名無しさん2006/11/27(月) 15:43:38
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
20061109のように日付を入力すると、曜日を出力するプログラムを作成せよ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:わかりませんがCygwinというものを使っています
 [3.3] 言語:C
[4] 期限:11月中
[5] 習っている内容からすると、putchar,getcharを用いて作成しなければいけないようです

よろしくお願いします
0458デフォルトの名無しさんNGNG?2BP(200)
>>457
使用する暦の種類と適用期間が分からないとやりようがない。
0459デフォルトの名無しさん2006/11/27(月) 16:01:07
宇宙世紀でお願いします。
0460デフォルトの名無しさんNGNG?2BP(200)
宇宙世紀に曜日の概念なんかあるんか?
04614572006/11/27(月) 16:41:01
西暦で、適用期間は特に指定されてないので適当に決めていいと思います・・・
0462デフォルトの名無しさん2006/11/27(月) 16:52:56
せめて日付から曜日を決定する計算式くらい出せよ
0463デフォルトの名無しさん2006/11/27(月) 16:52:57
コズミックイラで
0464デフォルトの名無しさん2006/11/27(月) 16:54:17
>>461
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
char buf[100];
fgets(buf, sizeof(buf), stdin);
char cmd[100];
sprintf(cmd, "/bin/date -d '%s' +%%A", buf);
return system(cmd) >> 8;
}
0465デフォルトの名無しさん2006/11/27(月) 17:01:11
>>460
宇宙世紀1年には地球の人口が90億に達するそうだ
現在の傾向のまま人口が推移するとあと30年後ぐらい
0466デフォルトの名無しさん2006/11/27(月) 17:07:57
// 非環境依存版
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
char buf[100];
fgets(buf, sizeof(buf), stdin);
struct tm tmp;
sscanf(buf, "%4d%2d%2d", & tmp.tm_year, & tmp.tm_mon, & tmp.tm_mday);
tmp.tm_year -= 1900;
tmp.tm_mon -= 1;
tmp.tm_hour = tmp.tm_min = tmp.tm_sec = 0;
mktime(& tmp);
strftime(buf, sizeof(buf), "%A", & tmp);
fputs(buf, stdout);
return 0;
}
0467デフォルトの名無しさん2006/11/27(月) 17:18:31
[1] 授業単元: 中級プログラミング
[2] 問題文(含コード&リンク):

どこに書いていいか迷いました。
実はもうコンパイルするだけのはずなのですが、コンパイラが通らずに詰まっています。
関数呼び出しとその引数の書き方の問題だと思うのですが、どうにもエラーがなくなりません。
よろしくお願いします。

ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28784

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
0468デフォルトの名無しさん2006/11/27(月) 17:24:54
>>467
まずコンパイルエラーもうpしなさい
04694672006/11/27(月) 17:33:44
>>468
すみませんでした。main関数内の
encode_caesar(*str);
decode_caesar(*str);
について「ポインタの型が合わない」だったかのエラーが出ていました。
変に引数なんかをいじると関数内でさらに複数行に渡ってエラーが出たりします。
エラーがあいまいなのは家に帰ってしまってCを動かせる環境にないためですorz
0470デフォルトの名無しさんNGNG?2BP(200)
>>461
ユリウス暦かグレゴリオ暦かくらい書け。
0471401=4042006/11/27(月) 18:13:10
>>439
するあいてがいません
>>440
ありがとうございます。
0472デフォルトの名無しさん2006/11/27(月) 18:15:18
>>457
cygwinでコンパイルしてるときなんてコマンド打ってんだよ
コマンド名からコンパイラ名くらい分かるだろ?

#include <stdio.h>

int youbikeisan(int date);

void main(){
int date;
scanf("%d",&date);
char youbi[][3]={"土","日","月","火","水","木","金"};
printf("その日は%s曜日です\n",youbi[youbikeisan(date)]);
}

int youbikeisan(int date){
int h,y;
h=date/1000000;
y=(date%1000000)/10000;
return (y+(y/4)+(h/4)-h*2+(13*((date%10000)/100+1)/5)+date%100)%7;
}
0473デフォルトの名無しさん2006/11/27(月) 19:23:21
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文 この状態から以下の関数を参考にしてリストの追加と削除ができるようにプログラムを追加する。出力のたびにリストの追加と挿入を「追加しますか?削除しますか?」と確認されるようにする。
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:2006年11月28日午後2時
[参考プログラム]
int InsertMigi(node *current,int data){
/*currentで示されるノードの直後にデータを挿入する*/
node *p = CreateNode();//要素を入れる箱を用意
if(current == end){
q = end->next;
}
q->number = data;
q->next = current->next;
current->next = q;
return(EXIT_SUCCESS);
}
int Remove (node *current){
node *q;
q = current->next;
if(q == end){end = current;}
current->next=q->next;
free(q);
return(EXIT_SUCCESS);
}
0474デフォルトの名無しさん2006/11/27(月) 19:23:51
[問題文]
#include<stdio.h>
#include<stdlib.h>
typedef struct Node_template{
int number;
struct Node_template *next;
}node;
node *start = NULL;
int push(int data){
node *ptr = start;
start = (node *)malloc(sizeof(node));
if(start == NULL){
fprintf8stderr,"Nomore memory");
exit(1);
}
start->number = data;
start->next =ptr;[
return(EXIT_SUCCESS);
}
0475デフォルトの名無しさん2006/11/27(月) 19:25:36
[問題文続き]
int main(void){
int input_data;
int i;
node *p;
while(fprintf(stdout,"\n Enter an integar")
,scanf("%d",&input_data) == 1
){
push(input_data);
}
fprintf(stdout,"\nMemory Image\n");
i = 0;
for(p = start;p != NULL;p = p->next){
fprintf(stdout,"[%3d] = %5d\n",i,p->number);
i=i+1;
}
return(EXIT_SUCCESS);
}
0476デフォルトの名無しさん2006/11/27(月) 20:48:51
>>467
バグだらけだったので勝手に色々いじった。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3047.c
04774672006/11/27(月) 21:00:34
>>476
バグだらけ…orz
いやしかし大変助かりました。そういえば数字や記号が来た場合の処理に全く思考が及んでいませんでしたが、
isalphaという関数は初めて知りました。勉強になりました。
ありがとうございました。
0478デフォルトの名無しさん2006/11/27(月) 23:17:47
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
nを100000にして、 納i=0,n](-1)^i/i! を計算し、その逆数を
表示しなさい。
つまり 1/x=納i=0,n](-1)^i/i! のxを求めるということです。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:なるべく早めにお願いします。
[5] まだ習い始めたばかりでよくわからないのですが、
whileを使うみたいです。
なるべく簡単におねがいします。
よろしくお願いします。
0479デフォルトの名無しさん2006/11/27(月) 23:48:30
[1]情報処理応用
[2]http://www.sys.wakayama-u.ac.jp/om/
これの課題
[3][3.1]WindowsXP
[3.3]C++言語
[4]28日
[5]まったくわからないのでお願いします
0480デフォルトの名無しさん2006/11/27(月) 23:50:56
>>479
君の行っている大学はわかったが問題がどこにあるのかサッパリわからないのだが
04814792006/11/27(月) 23:52:54
すいませんアドレス間違ってました
http://www.wakayama-u.ac.jp/~miw/ApIp/06/9/9.html
これです
0482デフォルトの名無しさん2006/11/27(月) 23:54:24
>>479
問題が何なのかさっぱり分かりません
まったくわからないのでお願いします
04834782006/11/27(月) 23:54:49
付けたしはまずいですよね?
0484デフォルトの名無しさん2006/11/28(火) 00:11:32
>>481
この問題はBCB専用じゃないかね?
0485デフォルトの名無しさん2006/11/28(火) 00:30:18
とりあえず学校に通報するという事でOK?
0486デフォルトの名無しさん2006/11/28(火) 00:32:18
勝手にやってろ
0487デフォルトの名無しさん2006/11/28(火) 00:40:48
通報しても意味無い。ここで教えてもらっても
リアルで人にやってもらっても同じなんだし

建前はここも匿名板なんだから殺人とかじゃないとチャラ
0488デフォルトの名無しさん2006/11/28(火) 00:44:24
>>487
何を勘違いしているんだ?
ここは教えるところなんかじゃないぜ
0489デフォルトの名無しさん2006/11/28(火) 00:46:47
自分でやった方が自分のためになると思うけど

一応ヒント

アドレス士官
0490デフォルトの名無しさん2006/11/28(火) 00:46:58
ここは宿題がやりたくてやりたくてたまらない人が集うスレであって
宿題を持ってきたやつがどうなろうと知ったこっちゃない
0491デフォルトの名無しさんNGNG?2BP(200)
とりあえず和歌山大学の学生は無条件で落とすことに決定。
0492デフォルトの名無しさん2006/11/28(火) 00:49:56
新卒落とされたね
0493デフォルトの名無しさん2006/11/28(火) 00:52:11
そして本人は公務員にしか眼中が無いという展開
0494デフォルトの名無しさん2006/11/28(火) 00:52:12
別に中小企業に落とされたとしても
痛くも痒くもないですよw
0495デフォルトの名無しさん2006/11/28(火) 01:08:20
1]win
2]gcc  Cのみ
3]2006'11'30

映像を取り込み、
その映像を基にして
長さを調べて表示する
プログラムを作成しろ

よれしくおねがいします
0496473〜4752006/11/28(火) 01:10:27
少し前に書き込みしたのですがどなたかお願いします。
もし問題に不手際があったらそれだけでも教えてもらえるととても助かります
0497デフォルトの名無しさん2006/11/28(火) 01:10:55
>>478
一応出来たけど答はいくらになればいいの?
0498デフォルトの名無しさん2006/11/28(火) 01:14:47
>>495
映像って具体的になんだ?
0499デフォルトの名無しさん2006/11/28(火) 01:14:50
>>495
写真に載っている物質の長さを求めるらしいです。

対象物とレンズの距離が毎度違うと思うので
分かりません

どうやってはかるの?
0500デフォルトの名無しさん2006/11/28(火) 01:16:24
2次元の映像に奥行きを求める?

0501デフォルトの名無しさん2006/11/28(火) 01:19:09
言い忘れてました。

ヒシャタイ
の実寸らしい
0502デフォルトの名無しさん2006/11/28(火) 01:22:38
市販されている3Dソフトの応用らしいのですが
意味がサッパリなので悩んでます
0503デフォルトの名無しさん2006/11/28(火) 01:26:37
>>495
はっきり言う
それは億単位の案件になるので
たった2日では無理です。
申し訳無い

0504デフォルトの名無しさん2006/11/28(火) 01:31:09
>>503
学校の宿題ですよw

大学内のみの流通のみで
物理学部に提供するらしい。
0505デフォルトの名無しさん2006/11/28(火) 01:32:13
>>503
あの条件から見積もりだすお前がすごい
0506デフォルトの名無しさん2006/11/28(火) 01:33:44
今日のSE大賞をあげよう
>>503
0507デフォルトの名無しさん2006/11/28(火) 01:40:33
とりあえず>>495は
>>1を声に出してよく読んで、テンプレを元にして書き直し
0508デフォルトの名無しさん2006/11/28(火) 01:52:52
大学のみの流通とは言え他者に提供するのなら
それは既に宿題ではないんではないだろうか
0509デフォルトの名無しさん2006/11/28(火) 01:53:42
>>497 exp(1.0)だろ、常識的に考えて。
0510デフォルトの名無しさん2006/11/28(火) 01:57:47
>>497
小さい方から足してるだろうな?積み残しが出るぞ。
0511デフォルトの名無しさん2006/11/28(火) 01:59:27
>>509
e^1は1/0!+1/1!+1/2!+1/3!・・・だろ?
478の課題は
1/0!-1/1!+1/2!-1/3!・・・の逆数を求めろって言ってるぜ
0512デフォルトの名無しさん2006/11/28(火) 02:02:17
>>510
ちゃんと100000から計算していってるよ
0513デフォルトの名無しさん2006/11/28(火) 02:03:55
おまえら糞か
ハヤクシロや
0514デフォルトの名無しさん2006/11/28(火) 02:08:44
>>511
おいおい。寝ぼけてるのか?

exp(x) = 1 + x + x^2/2 + x^3/3 + ...
exp(-1) = 1 - 1 + 1/2! - 1/3! + ...
1/exp(-1) = exp(1)
0515デフォルトの名無しさん2006/11/28(火) 02:10:52
>>514
あ、なるほどな

ののしるがいいさ さげすむがいいさ
0516デフォルトの名無しさん2006/11/28(火) 02:24:33
という訳でバグ取れたから貼るか
>>478

#include <stdio.h>
#define N 100000

main(){
double i=N,y=1;
while(i>=1) y=1-y/i--;
printf("%f\n",1/y);
}
0517デフォルトの名無しさん2006/11/28(火) 02:31:52
デフゥルトゥイラネだろ
0518デフォルトの名無しさん2006/11/28(火) 02:42:10
>>517
レベルの低い素人は口を挟むな
0519デフォルトの名無しさん2006/11/28(火) 02:45:48
[1] 授業単元:コンピュータプログラミング
[2] 問題文(含コード&リンク):正整数nと実数xを入力して、多項式
               1+x+xの二乗+xの三乗+…+xのn乗
               を計算するプログラムつくりなさい。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2006年11月29日
[5] その他の制限:関数定義使う
0520デフォルトの名無しさん2006/11/28(火) 03:00:30
ループだけじゃん
0521デフォルトの名無しさん2006/11/28(火) 03:29:18
>>519
#include <stdio.h>

double keisan(double x,int n);

main(){
double x;
int n;
printf("xを入力してください\n");
scanf("%lf",&x);
printf("nを入力してください\n");
scanf("%d",&n);
printf("f(%f,%d)の答えは%fです。",x,n,keisan(x,n));
}

double keisan(double x,int n){
double y=1;
for(int i=0;i<n;i++) y=1+x*y;
return y;
}
0522デフォルトの名無しさん2006/11/28(火) 03:46:25
ブブー
0523デフォルトの名無しさん2006/11/28(火) 03:48:25
計算式おかしい。
ループかけるまえに
1を宣言して
ループしたのを足していけばいいんだお
0524デフォルトの名無しさん2006/11/28(火) 03:50:17
y=1+x;
0525デフォルトの名無しさん2006/11/28(火) 04:00:31
>>523
n=1の時
y=1+x
n=2の時
y=1+x*(1+x)
n=3の時
y=1+x*(1+x*(1+x))
 ・
 ・
 ・
05265162006/11/28(火) 04:31:48
この方が良いな
>>478
#include <stdio.h>
#define N 100000

main(){
double i=N+1,y=1;
while(--i) y=1-y/i;
printf("%f\n",1/y);
}
05275162006/11/28(火) 05:28:09
最終版。
>>478に俺に感謝する心が1バイトでもあるなら是非これを提出して欲しい

#include <stdio.h>
#include <float.h>
#define Nmax 100000

double tenkai(double n){
double i=n+1,y=1;
while(--i) y=1-y/i;
return y;
}

double kousuu(void){
double y=1;
int i=1;
while(i<N&&y>DBL_EPSILON) y/=++i;
return i;
}

void main(){
double n=Nmax;
double n2=kousuu();
if (n2<N) printf("n=%.0fまで計算した結果%.16f\n愚かにも",n2,1/tenkai(n2));
printf("n=%.0fまで計算した結果%.16f\n",n,1/tenkai(n));
}
05285162006/11/28(火) 05:48:15
あ しまったNの名前変えたの忘れてた

while(i<N&&y>DBL_EPSILON) y/=++i;
↓
while(i<NMAX&&y>DBL_EPSILON) y/=++i;
0529473〜4752006/11/28(火) 08:05:16
すみません、周りの人もわからないっていっててもうお手上げなんです。
どなたか解いてもらえないでしょうか。
0530デフォルトの名無しさん2006/11/28(火) 08:50:15
>>529
前の日の晩に質問するなんて無謀な
今から知り合い増やそう
0531デフォルトの名無しさん2006/11/28(火) 08:57:52
>>473-475ってほとんど答えそのものだろ

node root;

// idx番目の要素を操作対象に設定
node *target = &root;
for(i=0;i<idx;i++)
target = target->next;

// 追加
InsertMigi(target, n);

// 削除
Remove(target);

printfやscanfくらい自分で書け
05324782006/11/28(火) 09:13:53
皆さんいろいろとありがとうございます!

ですが…わからないものばかりで…
defineやらreturnやらvoidというのは習ってないんです。
すみません。

100000はscanfから読み込んでやるはずだったんですが、
説明不足ですみません。

答えは 2.71828に近づきます。
もしよろしければ、もう一度おねがいしたいのですが…
0533デフォルトの名無しさん2006/11/28(火) 09:17:54
defineはともかく、returnとvoidを習ってないってのはありえなくない?
0534デフォルトの名無しさん2006/11/28(火) 09:25:25
>>532
習ってないからといって使っていけないというわけでもないし、ぐぐれば理解できるだろ
scanfで読み込むように書き直すくらい自分でできるだろうし
05354782006/11/28(火) 09:36:21
>>533
えっ!?そうなんですか…でも本当に習ってないんです。

>>534
わかりました。なんとかやってみます。
0536デフォルトの名無しさんNGNG?2BP(200)
「習ってない」をNGワードに。
0537デフォルトの名無しさん2006/11/28(火) 11:29:56
>>531
// idx番目の要素を操作対象に設定をどこにいれていいのかわからないです
何度もすみません
0538デフォルトの名無しさん2006/11/28(火) 12:47:36
[1] 授業単元:計算機演習2
[2] 問題文(含コード&リンク):4個の1桁の数字からなる順列を乱数で生成
キーボードから4個の数字の順列を入力
生成した順列と入力の順列を比較
位置が合っている場合はhit,位置が間違っている場合はblowとし、
ヒット数とブロー数を表示させる
順列があたるまで入力を繰り返すプログラムを作りなさい
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12月5日 12時まで
[5] その他の制限: long random(void)まではヒントが与えられています。
宜しくお願いします。
0539デフォルトの名無しさん2006/11/28(火) 13:24:40
random() なんてあったっけ
0540デフォルトの名無しさん2006/11/28(火) 13:32:03
関数つくれって事だろ
0541デフォルトの名無しさん2006/11/28(火) 13:41:15
>>539-540
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/random.3.html
M系乱数のはず。
0542デフォルトの名無しさん2006/11/28(火) 14:09:12
[1] 授業単元: Cによるプログラミング実習II
[2] 問題文(含コード&リンク):
キーボードから入力された文章を単語単位で切り出し
総単語数と各単語の文字数を表示する
Cプログラムを書きなさい。単語の区切りは半角スペースのみとする。

但し、単語数の上限は30、1単語数の最大の文字数は20と仮定する。

【実行例】
文を入力してください: This is an apple
合計4単語です。 各文字数は
This:4文字
is:2文字
  an:2文字
apple:5文字

[3] 環境
 [3.1] OS:Windows XP SP2 Pro
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2006年12月01日19:00
[5] その他の制限:
文字の入力には gets 関数を使うこと
関数の中身はブラケット演算子なしでポインターだけで書く

よろしくお願いいたします。
0543a2006/11/28(火) 14:23:34
整数値を要素にもつk 行m 列行列A とm 行n 列行列B を定義し,それらの要素をキーボー
ドから入力させ,C = A×B を計算して画面表示するプログラムを作成しなさい.ただし,k,m,
n については,k≠m,m≠n,k≠n,k≧2,m≧2,n≧2 を満たす任意の値を設定してよい
0544デフォルトの名無しさん 2006/11/28(火) 15:25:10
[1] 授業単元:Cプログラミング演習
[2] 問題文:疑点法を用いてf(x)=x-cosx=0の近似解を小数点以下15桁まで求めるCプログラム
擬点法とは f(a1)f(b1)<0 となるような近似解の組
x=a1 x=b1 から出発して、漸化式
   bk*f(ak)− ak*f(bk)
xk=――――――――――   (k=1,2,3,・・・)
     f(ak) − f(bk)

         (ak,xk) if f(ak)*f(xk)<0
(ak+1,bk+1)=
         (xk,bk) otherwise 

により、次々とより良い近似解x=xk(k=1,2,3・・)
をもとめていこうとするものです。このプログラムは
f(xk)=0 or x1,x2,x3・・が十分に収束したと判断できる
時点で終了する今回の出発点は
a1=0,b1=1とします
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみ
[4] 期限: 2006年12月08日12:00まで
[5] その他の制限:
int型、double型、数学的関数を使う。constは使わない。
for,do-while構文習得。増分・減分演算子習得。
最初に#define f(x) ((x)-cos(x))
    #define EPSILON (1e-15)   を使う
Simpsonの公式は習った。
05455442006/11/28(火) 15:27:46
皆さん宜しくお願いします。
0546デフォルトの名無しさん2006/11/28(火) 16:39:32
>>544
VCC++だと#define EPSILON (1e-15)が解決できなかったので
代わりにfloat.hのDBL_EPSILON使ってある
気に入らなかったら自分で直して

#include <stdio.h>
#include <math.h>
#include <float.h>
#define f(x) ((x)-cos(x))
void main(){
double x=1,xBefore=0,a=0,b=1,fa=f(a),fb=f(b);
while(f(x)!=0&&fabs(x-xBefore)>DBL_EPSILON){
xBefore=x;
x=(b*fa-a*fb)/(fa-fb);
if(fa*f(x)<0) {
b=x;
fb=f(b);
}
else {
a=x;
fa=f(a);
}
}
printf("x=%.15fの時f(x)=%.15f\n",x,f(x));
}
05475462006/11/28(火) 16:50:06
改良版
#include <stdio.h>
#include <math.h>
#include <float.h>
#define f(x) ((x)-cos(x))

void main(){
double x=1,xBefore=0,a=0,b=1,fa=f(a),fb=f(b),fx=f(x);
while(fx!=0&&fabs(x-xBefore)>DBL_EPSILON){
xBefore=x;
x=(b*fa-a*fb)/(fa-fb);
fx=f(x);
if(fa*fx<0) {
b=x;
fb=fx;
}
else {
a=x;
fa=fx;
}
}
printf("x=%.15fの時f(x)=%.15f\n",x,f(x));
}
0548デフォルトの名無しさん2006/11/28(火) 19:20:49
[1] 授業単元: データ構造とアルゴリズム
[2] 問題文(含コード&リンク): ファイルを読み込み、各行が逆順に出るようなプログラムを書きなさい。作成したプログラムに対して、空の入力と、作成したプログラム本体のソースコードを入力し、出力結果を報告しなさい。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: mingw-jp
 [3.3] 言語: C++
[4] 期限: 明日の午後8時(2006年11月29日(水))
[5] その他の制限: 一行の文字数や、行数の制限を行わない。
         同じファイルを二回以上オープンしない。但し、メモリに異常が発生した場合は、検知し、確実に異常終了させる。

分かる方、いたらお願いします!!
0549デフォルトの名無しさん2006/11/28(火) 19:43:41
>>548
このスレを検索
0550デフォルトの名無しさん2006/11/28(火) 19:45:55
>メモリに異常が発生した場合は、検知し、確実に異常終了させる
そりゃ不可能だ。
仮にメモリ異常が単にmalloc()/new失敗と言う意味に解釈したとしても、
その状況で確実に異常終了できるかどうかは実はOS次第だからな。
0551デフォルトの名無しさん2006/11/28(火) 19:49:29
[1] 授業単元: コンピュータプログラミング
[2] 問題文:

点数をいれるとSABCDを出力するプログラムを作りなさい。ただし
100〜90点  S
89〜80 A
79〜70 B
69〜60 C
59点以下 D
とする。以下の実行結果を参考にして考えよ。
./kadai 70 80 85
1教科目はBです。
2教科目はAです。
3教科目はAです。

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラとバージョン: gcc
 [3.3] 言語:C言語
[4] 期限:11月29日20時まで

当方プログラミング歴2ヶ月で今回の課題がさっぱりわからないので
誰か分かる方がいらっしゃいましたら助力お願いします。
0552デフォルトの名無しさん2006/11/28(火) 20:12:53
>>542
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3048.c
05535372006/11/28(火) 20:17:27
あの後もう一度必死に頭使ってみたら、なんとか理解できて課題を完成させることができました。
ありがとうございました
0554デフォルトの名無しさん2006/11/28(火) 20:19:53
>>551
#include<stdio.h>

const char *hyouka(int value){
  if(value>100)  return "unknown";
  if(value>=90)  return "S";
  if(value>=80)  return "A";
  if(value>=70)  return "B";
  if(value>=60)  return "C";
  return "D";
}

int main(int argc, char *argv[]){
  int i, value;

  for(i=1;i<argc;i++){
    sscanf(argv[i], "%d", &value);
    printf("%d教科目は%sです。\n", i, hyouka(value));
  }
  return 0;
}
0555デフォルトの名無しさん2006/11/28(火) 20:42:18
unknownカッコヨス
0556デフォルトの名無しさん2006/11/28(火) 21:11:11
>>426お願いできないでしょうか。行列に2次元配列が使われておらず、全く理解できないのです。
期限には間に合いませんがよろしくお願いします。
0557デフォルトの名無しさん2006/11/28(火) 21:50:49
>>538
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3049.txt
0558デフォルトの名無しさん2006/11/28(火) 22:10:28
>>548 ってさ。>>103と同じっぽくない?
0559デフォルトの名無しさん2006/11/28(火) 22:11:46
>>548
new()が使われてない場合はこれじゃだめかも。
#include <string>
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
void putReverse(ifstream& infile)
{
string s;
try{
while(!infile.eof()){ getline(infile, s); cout << string(s.rbegin(), s.rend()) << endl;}
}
catch(bad_alloc){
cerr << "メモリ確保失敗";
infile.close();
abort(); //エラーコード返すとかじゃなく、お望み通り異常終了。
}
}
int main(int argc, char* argv[])
{
if(argc != 2){ cerr << "読み込むファイルを一つ指定してください"; return -1;}
ifstream inFile(argv[1]);
if(inFile.fail()){ cerr << "ファイルを開けません"; return -2;}
putReverse(inFile);
return 0;
}
0560デフォルトの名無しさん2006/11/28(火) 22:14:00
1.教授が問題を作る。
2.模範解答をTAに作るように命令。
3.TAがここで問題を丸投げ。
4.生徒が問題を受け取る。
5.生徒がここで問題を丸投げ。 ← いまここ
0561デフォルトの名無しさん2006/11/28(火) 22:18:47
>>560
全米が震撼した
0562デフォルトの名無しさん2006/11/28(火) 22:26:02
(((( ;゚Д゚)))ガクガクブルブル
0563デフォルトの名無しさん2006/11/28(火) 22:29:41
[1] 授業単元: 計算機
[2] 問題文(含コード&リンク):∫ e^x/x dx(x:1→3)の値を台形およびシンプソンの公式により求めよ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11/30
[5] その他の制限: 等分数は2から倍々と増やしていき、積分値が変化しなくなるまで行うこと。

等分数を最初に設定して計算することは出来たのですが、
制限の>>等分数は2から倍々と増やしていき、積分値が変化しなくなるまで行うこと。
これのやり方が分かりません。
誰か分かる方がいらっしゃいましたらよろしくお願いします。
0564デフォルトの名無しさん2006/11/28(火) 22:33:59
>>563
なんでだよwww
>等分数を最初に設定して計算することは出来た
ここが一番の山じゃねーか
もう終わったようなもんだろwwwwwwwww

あとはforループで、2^iで分割して、
今の値-前の値の絶対値が十分小さかったら終了でいいじゃん
0565デフォルトの名無しさん2006/11/28(火) 22:34:38
>>558
そのふたつだけじゃなくて
>>42
も同じ課題だと思う
0566デフォルトの名無しさん2006/11/28(火) 22:53:25
>>554
質問者じゃないけど、こういうのもアリですかね?

const char* hyouka(int value)
{
switch (value / 10) {
case 10:
case 9:return "S";
case 8:return "A";
case 7:return "B";
case 6:return "C";
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:return "D";
default:return "unknown";

}

}
0567デフォルトの名無しさん2006/11/28(火) 22:59:02
>>565
>>42じゃなくて>>40じゃね?
0568デフォルトの名無しさん2006/11/28(火) 23:01:09
>>567
あ、
>>40だった。スマソ
0569デフォルトの名無しさん2006/11/28(火) 23:12:07
[1] 授業単元: プログラミングII
[2] 問題文(含コード&リンク):

出版社M社で自社のライトノベル・DVD購入者に対し懸賞を行うことになった。
応募券を切り取り、ハガキに貼ってを送ってきた人に対し

10人にオリジナル図書カードを
50人にオリジナルストラップを
100人にオリジナルステッカーをプレゼントすることになった。

公平を期すためにC言語で乱数を用い当選者を決定させたい。
ここで応募してくる人は過去の傾向からみて1000人以下であると考えられる。

※なおライトノベル、DVD両方の応募券がついている客は
DVDのみの応募券、ライトノベルのみの応募券がついているユーザーの2倍の当選確率である。

※なお、同一人物(同じ名前)での2重当選はありえない。(当選は1人1回である)

※またA君、B君、C君は前回の懸賞で特賞が当たっているため、今回応募があっても当選しない。

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Boland
 [3.3] 言語: C
[4] 期限: 2006.12.01
[5] その他の制限: なし

よろしくお願いいたします。
0570デフォルトの名無しさん2006/11/28(火) 23:14:05
>>569
問題文それだけ?
0571デフォルトの名無しさん2006/11/28(火) 23:15:17
>>570
提示された物は全てです
0572デフォルトの名無しさん2006/11/28(火) 23:15:52
>>569
入力するデータが欲しい
0573デフォルトの名無しさん2006/11/28(火) 23:15:59
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
y=sin(2x)×cos(x)について区間0≦x≦π/4での積分値を計算するプログラム
を作成せよ。
計算結果として、積分範囲・刻み数・積分結果を出力させること。
刻み数は
#define n 20
とする。
πはM_PIとする。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日の朝10時00分までです。
[5] その他の制限: 特にないです。

よろしくお願い致します。
0574デフォルトの名無しさん2006/11/28(火) 23:16:32
>>569
問題文そのまま?
なんか色々省略してない?
0575デフォルトの名無しさん2006/11/28(火) 23:23:35
>>572
A君B君C君をはじけばいいらしいです。
D君以降は適当にDVDのみ、ノベルのみ、両方適当でいいっていってました

>>574
とくに省略はしていません
0576デフォルトの名無しさん2006/11/28(火) 23:24:02
>>571
じゃぁ先生にこんな問題文じゃ解けないって突き返せ
0577デフォルトの名無しさん2006/11/28(火) 23:24:43
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
以下は入力された整数値の大小に基づいて2分木を生成するものである。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3050.txt
すべてのノードの左の子と右の子を交換する関数void ReverseTree(struct BTREE *ptr)
を再帰呼び出しによって実現せよ。この手続き後にTraverseTreeを実行すると数値は降順に表示されるはずである。
また、指定データと同じ値のデータを持つノードの個数を出力するint CountData(struct BTREE *ptr,int searchdata)を
再帰呼び出しによって完成させよ。
Reverse Tree

[3] 環境
 [3.1] OS: Windows Xp
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日夜
[5] その他の制限:


お願いします!
0578デフォルトの名無しさん2006/11/28(火) 23:29:32
>>573
台形公式でよければ >>212 を少し変更すればおk
return 4/(1+x*x);
↓
return sin(2*x)*cos(x);

printf("%f\n", f_integral(0, 1, 1000));
↓
printf("%f<x<%f %d %f\n", 0., M_PI/4, n, f_integral(0., M_PI/4, n));
0579デフォルトの名無しさん2006/11/28(火) 23:48:39
>>577
void ReverseTree(struct BTREE *ptr) {
    struct BTREE *temp;
    if (ptr == NULL) return;
    ReverseTree(ptr->left);
    ReverseTree(ptr->right);
    temp = ptr->left;
    ptr->left = ptr->right;
    ptr->right = temp;
    return;
}
int CountData(struct BTREE *ptr, int searchdata) {
    if (ptr == NULL) return 0;
    return CountData(ptr->left, searchdata) + CountData(ptr->right, searchdata) + (ptr->data == searchdata);
}
0580デフォルトの名無しさん2006/11/28(火) 23:51:31
>>564
ありがとうございます。
for文の中を前の値==今の値とかやって悩んでましたw
0581デフォルトの名無しさん2006/11/29(水) 00:00:30
>>573
#include <math.h>
#include <stdio.h>
#define n 20
double f(double x) {
    return sin(2 * x) * cos(x);
}
int main(void) {
    int i;
    double a = 0., b = M_PI / 4, h = (b - a) / n, s = 0.;
    for (i = 1; i < n; ++i) s += f(a + i * h);
    s *= 2;
    s += f(0) + f(n);
    s *= h / 2;
    printf("%f", s);
    return 0;
}
0582デフォルトの名無しさん2006/11/29(水) 00:05:04
>>569
応募者が賞品の数より少ない場合、
1.A君、B君、C君でも当選する?
2.賞品の当選の優先順位は決まってる?

ちなみに全員ハズレにするのもアリ?
0583デフォルトの名無しさん2006/11/29(水) 00:09:14
>>582
お前、ふだんからいい仕事してるんだろうな
0584デフォルトの名無しさん2006/11/29(水) 00:11:56
>>548
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
int main(int argc, char* argv[]) {
    if (argc != 2) return 1;
    std::ifstream ifs(argv[1]);
    std::string line;
    while (std::getline(ifs, line)) {
        std::copy(line.rbegin(), line.rend(), std::ostream_iterator<char>(std::cout));
        std::cout << std::endl;
    }
    return 0;
}
↑と↓を実行して、求める結果が得られた方を提出せよ。
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <list>
#include <string>
int main(int argc, char* argv[]) {
    if (argc != 2) return 1;
    std::ifstream ifs(argv[1]);
    std::string line;
    std::list<std::string> list;
    while (std::getline(ifs, line)) list.push_back(line);
    std::copy(list.rbegin(), list.rend(), std::ostream_iterator<std::string>(std::cout, "\n"));
    return 0;
}
05855732006/11/29(水) 00:22:07
>>578
ありがとうございます。
講義で台形公式の話をしていたので、台形が公式で十分というか台形公式の
方が良いです。
ただ、エラーが出てコンパイルできません。

>>581
ありがとうございます。
しかし、値が1つしか表示されません。
0586デフォルトの名無しさん2006/11/29(水) 00:25:04
>>585
>>1も読めないのか?わざとなのか?
0587デフォルトの名無しさん2006/11/29(水) 00:27:10
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): int型で有効長lenの配列arrに対し、要素を巡回的に後にずらす関数 arr_cycle(arr, len) を作成する。
例えば、 arr[] = {0, 1, 2, 3} のとき、この関数によって arr[] = {3, 0, 1, 2} と更新される。最後の要素を先頭に挿入すればよい。
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語: C言語
[4] 期限: 明日昼12時
[5] その他の制限: 授業で配列に入ったばかり。
05885872006/11/29(水) 00:28:40
日付変わってるのに気がつきませんでした。
11月29日昼12時まででお願い致します。
05895852006/11/29(水) 00:31:22
申し訳ないです。

double f_integral(double a, double b, long n)
の部分に構文エラーが4つあります。
')' が '定数' の前にありません。
'{' が '定数' の前にありません。
'<不明>'
')'
です。
#define n 20
を追加したからでしょうか?

>>578さんが教えて下さった
return 4/(1+x*x);
↓
return sin(2*x)*cos(x);
と
printf("%f\n", f_integral(0, 1, 1000));
↓
printf("%f<x<%f %d %f\n", 0., M_PI/4, n, f_integral(0., M_PI/4, n));
以外に何を変更して良いか解らなくて。
0590デフォルトの名無しさん2006/11/29(水) 00:42:41
>>589
課題
・nが変数として使われてるのに#define n 20なんかしたらどうなるか考えてみる
0591デフォルトの名無しさん2006/11/29(水) 00:46:59
>>582

>>応募者が賞品の数より少ない場合、
>>1.A君、B君、C君でも当選する?
当選しません

>>2.賞品の当選の優先順位は決まってる?
決まっていません

>>ちなみに全員ハズレにするのもアリ?
アリです

よろしくお願いいたします。
0592デフォルトの名無しさん2006/11/29(水) 00:51:36
>>591
#include<stdio.h>
int main(void){
printf("当選者ナシ\n");
return 0;
}
05935892006/11/29(水) 00:51:52
>>590
あ、確かに変数として使われてますね。
そのエラーは納得できたのですが、講義では数値積分法には台形公式による
方法があります、と言っていただけで、具体的にどのようなものなのか
教わってないので、>>578さんが教えて下さったプログラム(>>212のプロ
グラム)の意味が全く解らなくて…。
0594デフォルトの名無しさん2006/11/29(水) 00:55:39
時々日本の一部の地域はインターネットの使用が管理されていて
そこでは検索エンジンへの接続は禁止されているのではないか
などと思うことがある
>>593
ttp://72.14.253.104/search?q=cache:5TcXrS4nz80J:www5d.biglobe.ne.jp/~tomoya03/shtml/algorithm/Daikei.htm+%E5%8F%B0%E5%BD%A2%E5%85%AC%E5%BC%8F&hl=ja&gl=jp&ct=clnk&cd=3
0595デフォルトの名無しさん2006/11/29(水) 00:56:07
>>581 も台形公式ですよ
あと >>212 がレスつけてる先を見てみれば?
0596デフォルトの名無しさん2006/11/29(水) 00:56:44
>>593
そのエラー直して解けたんならイインジャマイカと言ってみるt。
05975812006/11/29(水) 00:57:25
>>585
すまん、色々間違ってた。
05985932006/11/29(水) 01:11:41
>>594
あ、詳しく説明されてますね。課題が完成しても、これからも使いそうなの
で、そこで少し勉強しようと思います。ありがとうございます。
>>595
>>581さんのも台形公式だったのですか。
>>596
まだ、完成してないです。
>>597
いえいえ。ありがとうございます。
#include<stdio.h>
#include <math.h>
#define M_PI 3.14
double f(double x) {
return sin(2*x)*cos(x); }
double f_integral(double a, double b, long n) {
double h, ai;
double ret=0.0;
long i=20; h=(b-a)/n;
for(i=0;i<=n;i++) {
ai=a+i*h; ret+=f(ai); }
ret-=(f(a)+f(b))/2; ret*=h;
return ret; }
int main(void) {
printf("%f<x<%f %d %f\n", 0., M_PI/4, n, f_integral(0., M_PI/4, n));
return 0; }
修正してみて、コンパイルしたらメイン関数の中でnが定義されてません、
と表示されたので、メイン関数で
int n;
を追加したら、コンパイルは通ったのですが一つしか表示されません。
これは、for文で20回表示するようにしたら完成、ということなのでしょうか?
05995812006/11/29(水) 01:22:36
>>573
やり直し。台形公式。
#include <math.h>
#include <stdio.h>
#define n 20
double f(double x) {return sin(2 * x) * cos(x);}
double trapezoidal(double a, double b, int d) {
    double s = 0., h = (b - a) / d; int i;
    for (i = 1; i < d; ++i) s += f(a + i * h);
    s *= 2; s += f(a) + f(b); s *= h / 2;
    return s;
}
int main(void) {
    printf("積分範囲:%f...%f, 刻み数:%d, 積分結果:%f\n", 0., M_PI / 4, n, trapezoidal(0, M_PI / 4, n));
    return 0;
}
0600デフォルトの名無しさん2006/11/29(水) 01:36:45
>>587
#include <stdio.h>
typedef int T;
void swap(T* x, T* y) {T temp = *x; *x = *y; *y = temp;}
void arr_cycle(T* arr, unsigned int len) {
    unsigned int n = 1;
    T *first, *last;
    n = len - n % len;
    for(first = arr, last = arr + n; ; ) if (first == last || first == --last) break; else swap(first++, last);
    for(first = arr + n, last = arr + len; ; ) if (first == last || first == --last) break; else swap(first++, last);
    for(first = arr, last = arr + len; ; ) if (first == last || first == --last) break; else swap(first++, last);
}
void print_array(int* t, unsigned int n) {
    unsigned int i;
    for(i = 0; i < n; i++) printf("%d", t[i]);
    printf("\n");
}
int main(void) {
    int arr[] = {0,1,2,3};
    arr_cycle(arr, sizeof(arr) / sizeof(arr[0]));
    print_array(arr, sizeof(arr) / sizeof(arr[0]));
    return 0;
}
06015982006/11/29(水) 01:37:08
>>599
ありがとうございました。
06025872006/11/29(水) 01:50:03
>>600
ありがとうございます。
0603デフォルトの名無しさん2006/11/29(水) 01:59:19
>>594
Sleipnir利用者なんかは本当に一部機能を制限されてるからな
知らずにGoogleフル機能だと思ってたら泣ける
0604デフォルトの名無しさん2006/11/29(水) 02:54:15
>>587
void arr_cycle(int *arr, int len)
{
int i, temp;
temp = a[len-1];
for(i=len-1;i>0;i--) arr[i] = arr[i-1];
a[0] = temp:
}
0605デフォルトの名無しさん2006/11/29(水) 03:54:26
[1] 授業単元:プログラミング
[2] 問題文:0から9999までの整数をキーボードから入力し、それが何桁であるかを
      表示するプログラムを書く。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] lcc
 [3.3] 言語:C
[4] 期限:2006年11月29日18:00まで

どうかよろしくお願いします。
0606デフォルトの名無しさん2006/11/29(水) 04:22:16
>>605
#include<stdio.h>
#include<math.h>
void main(){
int x;
scanf("%d",&x);
printf("%d桁\n",(int)log10(x)+1);
}
0607デフォルトの名無しさん2006/11/29(水) 04:38:10
>605
#include <stdio.h>
int main(void)
{
int i, n;
scanf("%d", &n);
for(i=0; n; i++, n/=10);
printf("%d桁", i);
return 0;
}
0608デフォルトの名無しさん2006/11/29(水) 08:27:55
>>607
printf("%d桁\n", n); の間違い?
あとn/=10だと一桁少なく出るのでは。
06095442006/11/29(水) 08:48:54
>>546
ありがとうございます。今日、改良したものを試して
みます。
06106072006/11/29(水) 08:56:11
>>608
理解できないなら、せめて実行してから文句つけてくれ。
0611デフォルトの名無しさん2006/11/29(水) 09:41:34
>>579
ありがとうございます
0612デフォルトの名無しさん2006/11/29(水) 10:21:34
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3051.txt
この整数値の昇順リストを作成するプログラムを、指定データ(下記deletedata)と同じデータを持つセルをすべて
消去する関数void DeleteAlist(struct LIST **ptr, int deletedata)を作成せよ。
指定データを持つセルの先頭のものを消去する関数を参考にせよ
void Deletelist(struct LIST **ptr, int deletedata){

if((*ptr)==NULL){
printf("no such data \n");
}else if((*ptr)->data == deletedata){
struct LIST *tmp;
printf("data found\n");
tmp=(*ptr)->nextptr;
free(*ptr);
*ptr=tmp;
}else DeleteList(&((*ptr)->nextptr),deletedata);
}
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 今日夜
[5] その他の制限:
お願いします。。
0613デフォルトの名無しさん2006/11/29(水) 10:47:31
これ実際にやったら、詐欺っぽいよなぁ。
>>>応募者が賞品の数より少ない場合、
>>>1.A君、B君、C君でも当選する?
>当選しません
0614605 2006/11/29(水) 11:08:49
>>606,607
助かりました、本当にありがとうございます。
0615デフォルトの名無しさん2006/11/29(水) 11:14:22
>>612 コンパイルも通してねぇけど

void DeleteAlist( struct LIST** ppList, int iDelKey )
{
LIST** ppCur;
LIST* pTmp;

ppCur = ppList;
while( *ppCur ) {
if( (*ppCur)->data == iDelKey ) {
pTmp = (*ppCur)->nextptr;
free( (void*)*ppCur );
*ppCur = pTmp;
}
else {
ppCur = &((*ppCur)->nextptr);
}
}
}
06166152006/11/29(水) 11:17:12
ごめん。やっぱこっち。

void DeleteAlist( struct LIST** ppList, int iDelKey )
{
LIST* pTmp;

while( *ppList ) {
if( (*ppList)->data == iDelKey ) {
pTmp = (*ppList)->nextptr;
free( (void*)*ppList );
*ppList = pTmp;
}
else {
ppList = &((*ppList)->nextptr);
}
}
}
06175982006/11/29(水) 13:10:53
>>599
もう提出したので良いのですが疑問に思ったので質問です。
刻み数を10とか少し変えただけで積分結果が結構変わりますが
こんなもんなんでしょうか?
0618デフォルトの名無しさん2006/11/29(水) 13:12:33
気になるならシンプソン法とかもっと精度の良い方法に変えれ
0619デフォルトの名無しさん2006/11/29(水) 13:14:08
積分なんだから刻み数を減らせば精度がさがるに決まってる。
06206172006/11/29(水) 14:30:04
でも刻み数を100000ぐらいにすると積分結果が0.00000001ぐらいになるんです。
これっておかしくないですか?
0621デフォルトの名無しさん2006/11/29(水) 14:53:08
整数値を要素にもつk 行m 列行列A とm 行n 列行列B を定義し,それらの要素をキーボー
ドから入力させ,C = A×B を計算して画面表示するプログラムを作成しなさい.ただし,k,m,
n については,k≠m,m≠n,k≠n,k≧2,m≧2,n≧2 を満たす任意の値を設定してよい

分かる方、よろしくお願いします。


0622デフォルトの名無しさん2006/11/29(水) 15:11:25
>>569
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3052.c
0623デフォルトの名無しさん2006/11/29(水) 16:02:20
>>523といい>>608といいズレた指摘する奴がいるな

同一人物かのう
0624デフォルトの名無しさん2006/11/29(水) 16:05:53
>>523はズレてないだろ
間違ってるのは>521だから
0625デフォルトの名無しさん2006/11/29(水) 16:12:41
>>624
>>610
0626デフォルトの名無しさん2006/11/29(水) 16:20:16
キーボードから1行の文章とキーワードを入力し、キーワードが文章中に含まれているかどうかを
調べるプログラムを作成せよ。1行の文章中にキーワードが含まれているときには、その位置を表示します。
例えば、キーワードが"calculus"のとき、次のように表示します。
The development of calculus is a good example.
          ^
また、キーワードが含まれていない場合には、"not found"を表示します。





これをC言語でプログラミングってどうやるんですか?
三日かけてもわかりませんでした   
0627デフォルトの名無しさん2006/11/29(水) 16:21:57
>>626
>>1
0628デフォルトの名無しさん2006/11/29(水) 16:54:50
>>626
関数の使い方の授業なら
strstr() (#include <string.h>)
を使う。
アルゴリズムの授業ならBM法でも実装しろ
0629デフォルトの名無しさん2006/11/29(水) 17:09:06
[2]キーボードから1行の文章とキーワードを入力し、キーワードが文章中に含まれているかどうかを
調べるプログラムを作成せよ。1行の文章中にキーワードが含まれているときには、その位置を表示します。
例えば、キーワードが"calculus"のとき、次のように表示します。
The development of calculus is a good example.
              ^
また、キーワードが含まれていない場合には、"not found"を表示します。

[3]C言語(emacs)
[4]2006年11月30日
[5]ポインターまで習ってます

0630デフォルトの名無しさん2006/11/29(水) 17:13:15
>>629
http://pc8.2ch.net/test/read.cgi/tech/1164079451/628
0631デフォルトの名無しさん2006/11/29(水) 17:22:42
[1]プログラミング応用 C言語クラス
[2]問題が長かったのでこちらに
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3053.txt
[3]言語はCでWinとLinux両方です
[4]11月30日午前11時
[5]配列やポインタや構造体といった基礎部分は一応一通りやってます

よろしくお願いします
06326292006/11/29(水) 17:23:45
まだif for while文 1、2次配列、文字列、ポインターしかならってないんですけどそれだけでできませんか?
0633デフォルトの名無しさん2006/11/29(水) 17:29:19
>>629
#include <stdio.h>

int __________(char *buf,char *w)
{
int i,c;
for (c=0;*buf != '\0';buf++,c++){
for (i=0;*(buf + i) == *(w + i);i++){
if (*(w + i + 1) == '\0'){
return c;
}
}
}
return -1;
}

int main(void)
{
char buf[256],word[64];
int i,j;
gets(buf);
gets(word);
if ((i = __________(buf,word)) > -1){
for (j=0;j < i;j++){
putchar(' ');
}
printf("^\n");
}else{
printf("not found.\n");
}
return 0;
}
0634デフォルトの名無しさん2006/11/29(水) 17:46:19
[1] プログラミング言語C
[2] テキストファイルに書いた英文を読み込み、単語の長さを調べてその頻度を調べるプログラム
  を作る。ただし空白、タブ、改行は文字列に含まず、ピリオド、コンマは0文字とする。
  (20文字以上は1まとめとする)
  [例] 0文字 1文字 2文字 … 20文字以上
      3   4    6      0
[3] 環境:Windows XP
  言語:C
[4] 期限: ([2006年11月30日9:00まで]
[5] if for while文 1、2次配列位しか習ってないです。それ以外も使っていいことに
  なってますがまだ初心者なのでできるだけ簡単なものにしていただけると助かります。
06356292006/11/29(水) 17:58:45
>>633
ありがとうございます
0636デフォルトの名無しさんNGNG?2BP(202)
>>634
#include<stdio.h>
#include<ctype.h>
int main(void){int c,i,j=0;int res[21];
for(i=0;i<21;i++){res[i]=0;}
while((c=getchar())!=EOF){if(c=='.'||c==','){res[0]++;j=0;}
else{if(j==0){if(isalpha(c)){j=1;}else;}else{if(isalpha(c)){j++;}
else {if (j<20){res[j]++;} else {res[20]++;}j=0;}}}}
for(i=0;i<21;i++){printf("%-2d文字:%-4d回\n",i,res[i]);}
return 0;}
0637デフォルトの名無しさん2006/11/29(水) 18:21:53
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):jinkou.txtのデータを用いる。キーボードで範囲を入力し、その範囲内の人口の都道府県名を出力するプログラムをかけ。
jinkou.txtは
北海道 5659
青森  1462
岩手  1402
:
沖縄  1349

となっています。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: lcc
 [3.3] 言語: C
0638デフォルトの名無しさん2006/11/29(水) 18:26:36
>>637
県名と数字を区切っているものは何?
とかこういうやりとりをするのがめんどくさいからjinkou.txtどこかにうぷれカス
0639デフォルトの名無しさん2006/11/29(水) 18:52:42
[1] 授業単元: プログラミング
[2] 問題文: 一次配列(要素はint型、要素数は30)に格納されている要素を値の小さい順に並べ替える。
配列の初期値は以下のものを使う。
{636, 80, 246, 766, 881, 383, 244, 671, 503, 331,
444, 723, 916, 287, 492, 719, 476, 187, 704, 115,
774, 334, 618, 625, 582, 938, 427, 831, 899, 909}
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:(gcc 3.4 VC 6.0等)
 [3.3] 言語:C++
[4] 期限:12/1 Fri
[5] その他の制限:一応アルゴリズムは指定されていて以下の通りです。
データ構造
ソート対象の配列(要素のデータ型は整数型。要素数は定数N)
ソート済み位置(整数型)
現在位置(整数型)
最小値(整数型)
最小値の位置(整数型)

アルゴリズム
1. ソート済み位置を、配列先頭の要素番号-1から1ずつ増やしながら、 配列末尾の要素番号-1になるまで以下の処理を繰り返す。
1-1. ソート済み位置+1の位置に格納されている要素を最小値とし、その 値と位置を保存する。
1-2. 現在位置をソート済み位置+2から配列の末尾まで変えながら以下の 処理を繰り返す。
1-2-1. 現在位置の要素が最小値よりも小さいならば、その値と位置 を最小値と最小値の位置に代入する。
1-3. 最小値の要素とソート済み位置+1の要素を交換する。
2. 配列の各要素を表示する。

よろしくお願いします
0640デフォルトの名無しさん2006/11/29(水) 19:22:24
>>639
つれづれなるままに

#include <stdio.h>
#define N 30
void ssorti(int *buf,int n){int i,j,k,tmp;for(i=0;i<n-1;i++)
{k=i;for(j=i+1;j<n;j++)if(buf[k]>buf[j])k=j;if(k!=i){tmp=buf[i];buf[i]=buf[k];buf[k]=tmp;}}}
int main(){int i;int array[N]=
{636, 80, 246, 766, 881, 383, 244, 671, 503, 331,
444, 723, 916, 287, 492, 719, 476, 187, 704, 115,
774, 334, 618, 625, 582, 938, 427, 831, 899, 909};
ssorti(array,N);for(i=0;i<N;i++)printf("%d ",array[i]);return 0;}
06415992006/11/29(水) 19:59:43
>>620
おかしくはなりませんでしたよ?
積分範囲:0.000000...0.785398, 刻み数:10, 積分結果:0.429572
積分範囲:0.000000...0.785398, 刻み数:20, 積分結果:0.430616
積分範囲:0.000000...0.785398, 刻み数:100000, 積分結果:0.430964
Maximaによる結果:integrate(sin(2*x)*cos(x), x, 0, %pi/4);→2/3-sqrt(2)/6==0.43096440627115
06425462006/11/29(水) 20:00:44
改良版
#include <stdio.h>
#include <math.h>
#include <float.h>
#define f(x) ((x)-cos(x))

void main(){
double x=1,xBefore=0,a=0,b=1,fa=f(a),fb=f(b),fx=f(x);
while(fx!=0&&fabs(x-xBefore)>DBL_EPSILON){
xBefore=x;
x=b+(b-a)*fb/(fa-fb); //変更箇所
fx=f(x);
if(fa*fx<0) {
b=x;
fb=fx;
}
else {
a=x;
fa=fx;
}
}
printf("x=%.15fの時f(x)=%.15f\n",x,f(x));
}
0643デフォルトの名無しさん2006/11/29(水) 20:01:24
>>616
ありがとうございます。
動作について解説して頂けると今後のために役に立ちます。お願いできませんか?
0644デフォルトの名無しさん2006/11/29(水) 20:32:13
[1] 授業単元: プログラミング
[2] 問題文: 数字を2つ入力し、総積を計算しなさい。
  例) 2と6の場合 2*3*・・・*6
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC++2005
 [3.3] 言語: C
[4] 期限: 出来れば今日中に・・・
宜しくお願いします。
06456342006/11/29(水) 20:35:33
>>636さん
ありがとうございます。このプログラムなら何をやっているかがなんとか分かるので助かります。
でもこれだと読み込むテキストファイルの指定がないので動かないのですが…
0646デフォルトの名無しさん2006/11/29(水) 20:46:19
>>645
多分リダイレクトしろって事じゃない?
後、いろいろアレなコードだから(英単語に続いて.や,があると英単語がカウントされない、とか)提出するには気を付けて。
0647デフォルトの名無しさん2006/11/29(水) 20:48:08
>>644
#include <stdio.h>
void main(){
int a,b,di=1,c=1;
printf("ちんこ\n");
scanf("%d",&a);
printf("まんこ\n");
scanf("%d",&b);
if(a>b) di=-1;
for(int i=a;i*di<=b*di;i+=di) c*=i;
printf("うんこ%d\n",c);
}
06486452006/11/29(水) 20:55:42
<<646
アドバイスありがとうございます。,や.の問題も自分でも直せるようもう少し頑張ってみます。
0649デフォルトの名無しさん2006/11/29(水) 21:27:30
>>569
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3054.txt
まあ、悪い例ということで。
0650デフォルトの名無しさん2006/11/29(水) 21:29:29
>>644
#include<stdio.h>
int keisan(int a,int b);

main(){
int num1,num2;

printf("初めの数字を入力してください");
scanf("%d",&num1);
printf("終わりの数字を入力してください");
scanf("%d",&num2);

printf("総積:%d",keisan(num1,num2));
}

int keisan(int a,int b){
int i, ans=a;
for(i=a+1; i<=b; i++){
ans *= i;
}
return ans;
}
0651デフォルトの名無しさん2006/11/29(水) 21:30:50
すいません >>640 の回答はC++ではないですよね。
C++でお願いできませんか?
06521512006/11/29(水) 21:30:59
151をお願いします・・・
0653デフォルトの名無しさん2006/11/29(水) 21:39:44
三つのIPネットワーク
N0:192.168.0.0/24
N0:192.168.1.0/24
N0:192.168.3.0/24
があり、二つのルータR1、R2で接続されている。
R1はN0,N3に接続しており、それぞれネットワークインターフェースne0に
IPアドレス192.168.0.130、同gifに同192.168.3.1が与えられている。
この時、R2の経路表は例えば以下のように表示できる。
ただし、メトリック(Metric)が1である経路には、
データリンク層を用いて通信可能であることを示すものとする。

Network Destination Netmask Gateway Interface Metric
192.168.0.0 255.255.255.0 192.168.3.1 gif2  2
192.168.1.0 255.255.255.0 192.168.1.66 ep0  1
192.168.3.0 255.255.255.0 192.168.3.2 gif2  1


問1
R1とR2に距離ベクトル型経路制御を導入して動作させることを考える。
R1の経路表を示せ。
0654デフォルトの名無しさん2006/11/29(水) 21:43:02
>>653
>N0:192.168.0.0/24
>N0:192.168.1.0/24
>N0:192.168.3.0/24

三つともN0なんですか?

>R1はN0,N3に接続しており

N3が未定義です。

あとスレ違いです。
0655デフォルトの名無しさん2006/11/29(水) 21:49:26
>>651
コンパイルしてみれば分かると思うが、>>640はそのままで正しいC++プログラムだ。
俺の趣味でC++風に書き直すとこんな感じ。

#include <algorithm>
#include <iostream>
const int N = 30;
void ssorti(int *buf, int n)
{
  for(int i = 0; i < n - 1; i++)
  {
    int k = i;
    for(int j = i + 1; j < n; j++)
      if(buf[k] > buf[j])
        k = j;
    std::swap(buf[i], buf[k]);
  }
}
int main()
{
  int array[N] = { 636, 80, 246, 766, 881, 383, 244, 671, 503, 331,
    444, 723, 916, 287, 492, 719, 476, 187, 704, 115,
    774, 334, 618, 625, 582, 938, 427, 831, 899, 909
  };
  ssorti(array, N);
  for(int i = 0; i < N; i++)
    std::cout << array[i] << " ";
  std::cout << "\n";
}
06566202006/11/29(水) 21:52:31
>>641
実際は
for (i = 1; i < d; ++i) {
s += f(a + i * h);
}
s *= 2;
s += f(a) + f(b);
s *= h / 2;
ですよね?
でも、自分は
for (i = 1; i < d; ++i) {
s += f(a + i * h);
s *= 2;
s += f(a) + f(b);
s *= h / 2;
}
としてました。
これが原因だったようです。
自分のミスなのに、おかしい等と文句言って申し訳ありませんでした。
06576552006/11/29(水) 21:58:00
あ、ostream_iteratorを使うのを忘れた。
まあ、ループもたまには良いでしょう。
0658デフォルトの名無しさん2006/11/29(水) 22:01:11
<<634
自分も似たような宿題があるのでやってみましたがうまく動きません。一応プログラム貼りつけとくので
もし634さんがプログラムが完成してたら、どこが間違ってるか教えて下さい。
他の方でも分かる方がいらっしゃったらご指導お願いします。

#include <stdio.h>
#include <stdlib.h>
void main(void){
FILE *fp;
int c=0;
int d=0;
int freg[20];
(fp = fopen("infile.txt", "r")) == NULL;
while ((c = getc(fp)) != EOF) {
switch (c) {
case ' ': freg[d]++; d=0;
break;
case '\n':
break;
case '\t': freg[d]++; d=0;
break;
case ',' : freg[d]++; freg[0]++; d=0;
break;
case '.' : freg[d]++; freg[0]++; d=0;
break;
default: d++; }}
printf("ファイル名: infile.txt\n");
printf("%d ",freg[20]);
fclose(fp);
}
0659デフォルトの名無しさん2006/11/29(水) 22:04:18
少なくともfregは21いるのではないだろうか
0660デフォルトの名無しさん2006/11/29(水) 22:14:13
>>647
>>650
有難うございました!
06616582006/11/29(水) 22:26:42
>>659 言われてみればそうですねort
早速fregは21にして、dが20以上の時はfreg[20]が+1なるように改良してみたんですが
やはり実行すると1245112という意味不明な数字がでるだけです…
もっと根本的なところ間違ってませんかね?
0662デフォルトの名無しさん2006/11/29(水) 22:30:58
fregの内容が不定のまま操作している。
数を数えたいなら0で初期化するべし。
06635992006/11/29(水) 23:23:09
>>656
いや、分かってもらえてよかった。中身を研究して、精進してください。
06646562006/11/29(水) 23:25:57
>>663
はい、色々とありがとうございました。
06656582006/11/29(水) 23:45:30
>>662
アドバイスありがとうございます。おかげで無事できました。
何か初歩的なこと忘れまくりでしたねort
でも659さんや662さんのおかげで凄く勉強になったと思います。
ほんとにありがとうございました。
06666162006/11/29(水) 23:46:08
>>643
ちゃんと動いたかな?

解説しろって言われてもなぁ...当たり前のコードだからなぁ...
お前さんが疑問と思う点を書いてくれれば説明してやれるかも知れん。
0667デフォルトの名無しさん2006/11/30(木) 00:11:53
そうなんだよな。
回答してる側にとっては当たり前すぎてどうわからんのかわからん場合はよくある。
質問してる側もどこが分からんのか分からんくらいに全体的にわからんのかもしれんが、
今後の役に立てようという気概があるくらいならもうちょっとつっこんだ質問をしてくれないと困ると思う。
0668デフォルトの名無しさんNGNG?2BP(202)
>>646
>>610
0669デフォルトの名無しさん2006/11/30(木) 00:42:46
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3055.txt
[3] 環境
 [3.2] Visual Stdio 2003
 [3.3] C++
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3056.txt
提出期限過ぎてて現在執行猶予期間。やばいって!ほんとやばいって!!
0670デフォルトの名無しさん2006/11/30(木) 00:44:22
800+100=1600
0671デフォルトの名無しさん2006/11/30(木) 00:56:26
イチヂク
0672デフォルトの名無しさん2006/11/30(木) 00:56:28
この問題何度目だよ…
0673デフォルトの名無しさん2006/11/30(木) 01:02:50
前スレで3回ぐらい出てたっけ?
ここまで来ると釣りにしか思えないな。
0674デフォルトの名無しさん2006/11/30(木) 01:03:25
>>669
俺の記憶が正しければ君でその問題を丸投げするのは
4人目なんだ
3人目なんかちゃんともう解答済みだと教えてやったのに
「教えてくれるのか教えてくれないのかハッキリしてください」
と逆切れしていたぞ
ひでえ学校だなwww
0675デフォルトの名無しさん2006/11/30(木) 01:05:46
みんな丸投げしてたら評価さがるだろ
俺のところはクローンがあったら
点数をクローンの数で割るとか言ってたけど
偶然同じになったらどうするのかね
ここで見たことある問題あったし
0676デフォルトの名無しさん2006/11/30(木) 01:08:46
>>668
>636のコードで This is a pen. を入力した時の実行結果
0 文字:1 回
1 文字:1 回
2 文字:1 回
3 文字:0 回
4 文字:1 回

pen(3文字)がカウントされていない。
if(c=='.'||c==','){の後にif(j)res[j<21?j:20]++;が必要。
0677デフォルトの名無しさん2006/11/30(木) 01:09:23
>>669
void initialize(int account[]) {
    int i;
    for (i = 0; i < 5; i++) {
        account[i] = 0;
    }
}
void daily_input(int account[]) {
    char* hinmoku[] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
    int i;
    for(i = 0; i < 5; i++) {
        printf("%s :", hinmoku[i]);
        scanf("%d", account + i);
    }
}
void daily_output(int account[]) {
    char* hinmoku[]={"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
    int i;
    for(i = 0; i < 5; i++) {
        printf("%s :%d\n", hinmoku[i], account[i]);
    }
}
0678デフォルトの名無しさん2006/11/30(木) 01:26:13
>>677
それだとinputがおかしくね?
という訳で前書いたのを手を入れてコピペ
rand()使ってるから適当に初期化してね


void initialize(int account[]){
for(int i=0;i<=4;i++) account[i]=0;
}

void daily_input(int account[]){
char* hinmoku[]={"りんご","みかん","イチゴ","ナシ","イチジク"};
int tmp;
for(int i=0;i<=4;i++){
printf("%s :",hinmoku[i]);
scanf("%d",&tmp);
account[i]+=tmp;
if(rand()%100==1) account[i]+=700
}
}

void daily_output(int account[]){
char* hinmoku[]={"りんご","みかん","イチゴ","ナシ","イチジク"};
for(int i=0;i<=4;i++){
printf("%s :%d\n",hinmoku[i],account[i]);
}
}
06796762006/11/30(木) 01:42:39
>>668
30分待ってみたけど反応が無いな。もう寝ちゃったかな。

他にも指摘すると、if(j==0){の分岐(不要)とか、そもそもリダイレクトの指定じゃ無いだろ、とか。

まだ回答するには早いんじゃないかな。挑戦も大事だけどじっくり基礎を固めて力をつけてからでも遅くないと思うよ。
0680デフォルトの名無しさん2006/11/30(木) 01:46:01
どなたか>>631もお願いします・・・
0681デフォルトの名無しさん2006/11/30(木) 02:01:07
ガウスの消去法とか、誰がやってもてきとーなの拾ってきても変わらんぜ?
0682デフォルトの名無しさん2006/11/30(木) 04:18:42
>>637です。
県名と数字はひとつの空白スペースで区切られています。
お願いします。
0683デフォルトの名無しさん2006/11/30(木) 04:21:28
>>637>>682
jinkou.txtも作ってくれって事?
君は用意しないの?
06846382006/11/30(木) 04:42:29
          .,Å、
        .r-‐i'''''''''''i''''‐-、
       o| o! .o  i o !o
      .|\__|`‐´`‐/|__/|
       |_, ─''''''''''''─ ,、 / _
     /              \
    /  ノ(  \  ____  /   i
    |   ⌒  ●  {+++}  ●   | キングブチキレス
    !           ̄        ノ
    丶_              ノ 
0685デフォルトの名無しさん2006/11/30(木) 04:50:41
一つのスペースと言いながら637の例には複数スペース使ってたり
ケンカ売ってるとしか思えない
06866292006/11/30(木) 07:45:48
[1]プログラム演習
[2]n×nの正方形状に並んだ点からなる地図があり、各店は陸か水(海、湖、川)
のどちらかを表してるとします。地図の周囲を海とみなし、海から縦方向または
横方向に水を現す点を結合してる点を海に表す点に置き換えるプログラムを作成しなさい。
例えば、陸をa、水をb、海をcで表すと左の地図は右の地図に書き換えられます。
bbaaabaaab   ccaaacaaac
aaaaabaaba   aaaaacaaba
aaaaaaabaa   aaaaaaabaa
aaabbbbaaa   aaabbbbaaa
aaababaaaa   aaababaaaa
aaabbbaaaa   aaabbbaaaa
aaaaaabbaa   aaaaaaccaa
abbbbaabba   accccaacca
abaabaaabb   acaacaaacc
aaaabaaaaa   aaaacaaaaa


[3]C言語(emacs)
[4]今日中
[5]for,while,if文 ポインター 文字列 1,2次配列
0687デフォルトの名無しさん2006/11/30(木) 08:23:41
[1] C言語演習(中級)
[2] 双方向リストを昇順で出力するため、
Sort関数の???の部分を埋めてプログラムを完成させなさい。
なお、関数以外の部分は変えない事。関数内では新たに変数をいくつ追加しても
構わない。
プログラム↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3057.txt
[3.1] SunOS(Solaris10)
[3.2] GCC 3.4
[3.3] C言語
[4] 期限: 2006年12月1日AM8:30
[5] Break,Continue,Goto命令の禁止
  2重ポインタの仕組みが全く分からず苦労しています。どうか宜しくお願いします。
0688デフォルトの名無しさん2006/11/30(木) 08:26:08
>>686
for(i=0;i<N;i++) {
if(map[0][i] == 'b')
map[0][i] = 'c';
if(map[N-1][i] == 'b')
map[N-1][i] = 'c';
if(map[i][0] == 'b')
map[i][0] = 'c';
if(map[i][N-1] == 'b')
map[i][N-1] = 'c';
}

while(1) {
int f = 1;
for(i=1;i<N-1;i++) {
for(j=1;j<N-1;j++) {
if(map[i][j] == 'b') {
int k;
int di[4] = {-1, 0, 0, 1};
int dj[4] = {0, -1, 1, 0};
for(k=0;k<4;k++) {
if(map[i+di[k]][j+dj[k]] == 'c') {
map[i][j] = 'c';
f = 0;
}
}
}
}
}
if(f)
break;
}
0689デフォルトの名無しさん2006/11/30(木) 08:33:33
>>687
二重ポインタさえわかればできるの?
二重ポインタ講座でも始めるか
0690デフォルトの名無しさん2006/11/30(木) 08:56:01
>>688
本当にありがとうございます
0691デフォルトの名無しさん2006/11/30(木) 08:57:34
>>686
つ 長いぜ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3058.txt
0692デフォルトの名無しさん2006/11/30(木) 10:37:11
>>687
ひでえな。循環リストじゃないしダミーリストもないので面倒なんだよなー
0693デフォルトの名無しさん2006/11/30(木) 10:39:08
STL勉強中なんで>>686をなんとなく作ってみたけど
配列とかはvectorがやっぱり楽だなぁ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3059.txt
0694デフォルトの名無しさん2006/11/30(木) 12:05:16
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):整数値を要素にもつ k行m列行列A とm行n列行列B を定義し,それらの要素をキーボー
ドから入力させ,C = A×Bを計算して画面表示するプログラムを作成しなさい.ただし,k,m,
n については,k≠m,m≠n,k≠n,k≧2,m≧2,n≧2を満たす任意の値を設定してよい.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月1日まで
[5] その他の制限: なし

授業で触れなかったのでわからなくて・・・よろしくお願いします。
0695デフォルトの名無しさん2006/11/30(木) 12:24:37
>>640の方、>>655の方、ありがとうございました。
0696デフォルトの名無しさん2006/11/30(木) 12:40:14
>>694
授業で何を触れなかったの?
どこまで習ってるの?
0697デフォルトの名無しさん2006/11/30(木) 12:46:07
>>696 二次元配列について触れませんでした。
0698デフォルトの名無しさん2006/11/30(木) 13:17:37
>>697
一次元配列はわかってるんだな
それなら簡単だ

k行m列の配列は
int a[k][m];
と宣言して、i行j列へ5を代入したければ
a[i][j] = 5;
一次元配列と扱い方に大きな違いはない

k, m, nは
#define k 2
などと書いておくといい
0699デフォルトの名無しさん2006/11/30(木) 14:34:32
698>>
#define k 2 と書いておくとどんなメリットがあるんですか?
0700デフォルトの名無しさん2006/11/30(木) 14:47:47
そういや昔「k2」ってお笑いコンビが居たな。勝俣ともう一人。
あのカタワレは何処行ったのかね?
0701デフォルトの名無しさん 2006/11/30(木) 14:48:08
[1] 授業単元:Cプログラミング演習
[2] 問題文:多項式f(x)=Cn×�Iのn乗+Cn-1×�Iの(n-1)乗+...+C1×�I
+C0×�Iの0乗 の次数nと多項式の係数Cn,Cn-1,..,C1,C0を順に読み込み、
変数�I=0.0、0.1、0.2,・・、0.9、1.0に対する多項式f(x)の値を計算して見やすい形に
出力するCプログラム
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:Cです
[4] 期限:12月3日まで
[5] その他の制限:配列の問題です。 for構文を必ず使い、
f(x)=((...((Cn�I+Cn-1)�I+Cn-2)...)�I+C1)�I+C0
と単純な効率の良いプログラム計算するようなもの。つまり
 fx←Cn
 fx←fx*�I+Cn-1  というような代入を参考にして考えてみる。
07027012006/11/30(木) 14:49:23
すいませんがよろしくお願いします。
0703デフォルトの名無しさん2006/11/30(木) 14:56:50
>>699
#define k 2
とすると、コンパイル前に自動的にkを2に置き換えてくれる。

int k = 2;
int m = 3;
int a[k][m];
上のように配列の要素数に変数の値を使用すると、コンパイルが通らない可能性があるから、
#defineを使う。
0704デフォルトの名無しさん2006/11/30(木) 14:58:33
ワロタ
0705デフォルトの名無しさん2006/11/30(木) 14:59:41
わかってない子の説明は意味がない法則
0706デフォルトの名無しさん2006/11/30(木) 15:01:50
マジックナンバーの説明かと思ったら斜め上飛んでいった
0707デフォルトの名無しさん2006/11/30(木) 16:08:53
>>701
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
double func( int iN, double* pCn, double dX )
{
double dRet = 0.0;
int i;

for( i = iN; i >= 0; i-- ) {
if( i )
dRet += ( (*pCn) * pow( dX, (double)i ) );
else
dRet += *pCn;
pCn++;
}
return dRet;
}
// Tobe continue
0708デフォルトの名無しさん2006/11/30(木) 16:10:17
int main( void )
{
int iN, i;
double *pCn;
double *pTmp;
double dX;

printf( "N: " );
scanf( "%d", &iN );
if( iN < 1 ) return 0;
pCn = (double*)malloc( sizeof( double) * iN );
if( ! pCn ) return 1;
pTmp = pCn;
for( i = iN; i >= 0; i-- ) {
printf( "C%d: ", i ); scanf( "%lf", pTmp ); pTmp++;
}
printf( "x: f(x)\n" );
for( i = 0; i <= 10; i++ ) {
dX = (double)i * 0.1;
printf( "%lf: %lf\n", dX, func( iN, pCn, dX ) );
}
free( (void*)pCn );
return 0;
}
0709sage2006/11/30(木) 16:21:27
[1] 授業単元:プログラミング論
[2] 問題文(含コード&リンク):自身の氏名の漢字の内部コードを16進数、及び2進数で出力せよ
[3] 環境
 [3.1] OS:WINDOWS
 [3.2] コンパイラ名とバージョン:Vsual C++ 2005
 [3.3] 言語:C++
[4] 期限:2006/12/1(明日),A.M.8:00頃←細かくてすみません
[5] その他の制限:整数を2進数に出力すること、文字コードを16進数に出力することはできます。

「氏名の漢字」は漢字であれば何でも構いません。
制限でも触れたように整数を2進数に出力すること、文字コードを16進数に出力することは出来るのですが、同時に行うことが出来ません。
明日のお昼に提出の課題で、家にはギリギリ8時ごろまでいられます。
よろしくお願いいたします。
0710デフォルトの名無しさん2006/11/30(木) 16:27:15
>>709
続けて処理すれば、「同時」にしなくてもいいんジャマイカ?
0711デフォルトの名無しさん2006/11/30(木) 16:27:31
>同時に行うことが出来ません。

分けてやればいいだろ
常識的に考えて・・・
0712デフォルトの名無しさん2006/11/30(木) 16:39:34
>709です。ごめんなさい。あがってました↓

出力結果に
「○」の16進表現は〜、2進表現は〜。
「×」の16進表現は〜、2進表現は〜。
という風に表示出来たらなって思ってたのですが、諦めて16進と2進、それぞれ別々に表示したほうが作るのも簡単ですよね。
本当に初心者でごめんなさい><
0713デフォルトの名無しさん2006/11/30(木) 16:40:21
いやだから



もういいや
0714デフォルトの名無しさん2006/11/30(木) 17:15:40
[1] 授業単元: プログラム理論
[2] 問題文:使用される文字列が英大文字26文字のみの場合の文字列探索法(BM法)
のプログラム。ただし、英大文字以外の文字がテキストまたはパターンに入力された
ときは、再入力を求めること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C

よろしくおねがいします。
0715デフォルトの名無しさん2006/11/30(木) 17:42:22
[1] 授業単元: コンピュータプログラミング
[2] 問題文:キーボードから読み込んだ整数n以下の素数をすべて求め、1行に12個数値を表示せよ。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 2006年12月3日まで
[5] その他の制限: 制限は特に無いです。

すみません、よろしくお願いします。
0716デフォルトの名無しさん2006/11/30(木) 17:43:29
>>715
>1行に12個数値を表示せよ。
1行に12個ずつ って意味だよな?
0717デフォルトの名無しさん2006/11/30(木) 17:45:19
>>716
はい、そういうことです。よろしくお願いします。
0718デフォルトの名無しさん2006/11/30(木) 18:12:03
>>715
#include <stdio.h>

int    isprime(int value){
  int    i;

  if(value%2==0)  return (value==2);
  for(i=3;value/i>=i;i+=2)
    if(value%i==0)
      return 0;
  return 1;
}

int    main(void){
  int    i, n;
  int    prime_count=0;

  printf("Input positive number :");
  scanf("%d", &n);
  for(i=2;i<n;i++){
    if(isprime(i)){
      printf(" %d", i);
      prime_count++;
      if(prime_count%12==0)
        printf("\n");
    }
  }
  return 0;
}
0719デフォルトの名無しさん2006/11/30(木) 19:33:42
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3051.txt
この整数値の昇順リストを作成するプログラムを、指定データ(下記deletedata)と同じデータを持つセルをすべて
消去し、消去するデータがあったときはdata foundと1回表示し、ないときにはno such data
と1回表示するvoid DeleteAlist(struct LIST **ptr, int deletedata)を再帰を用いることによって作成せよ。

指定データを持つセルの先頭のものを消去する関数を参考にせよ。

void Deletelist(struct LIST **ptr, int deletedata){

if((*ptr)==NULL){
printf("no such data \n");
}else if((*ptr)->data == deletedata){
struct LIST *tmp;
printf("data found\n");
tmp=(*ptr)->nextptr;
free(*ptr);
*ptr=tmp;
}else DeleteList(&((*ptr)->nextptr),deletedata);
}
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:
昨日も聞いたんですが、
条件が追加され、出題されました。お願いします。。
0720デフォルトの名無しさん2006/11/30(木) 20:16:25
>>719
以下と差し替えて DeleteAlist() の戻り値が0なら no such data, 1以上なら data found と表示すればよろし

int DeleteAlist( struct LIST** ppList, int iDelKey )
{
LIST* pTmp;
int iDelNum = 0;

while( *ppList ) {
if( (*ppList)->data == iDelKey ) {
pTmp = (*ppList)->nextptr;
free( (void*)*ppList );
*ppList = pTmp;
iDelNum++;
}
else {
ppList = &((*ppList)->nextptr);
}
}
return iDelNum;
}


0721デフォルトの名無しさん2006/11/30(木) 21:28:03
>>720
再帰で書くことはできないんですか?
0722デフォルトの名無しさん2006/11/30(木) 21:35:55
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):
整数 ID の二分木を表示する関数(簡単なものがスライドにあるのでそのまま打ち込んでも良いが、もっと見やすく拡張したほうが良い)と
二分探査木を作る関数(スライドにもあるが改変しても良い)を作り、二分探査木に以下のようなデータを入力した結果を表示せよ。
データは並んでいる順に入力すること。
(ア)1,2,3,4,5,6,7
(イ)1,7,2,6,3,5,4
(ウ)4,2,1,6,3,5,7

ソース ttp://www.geocities.jp/c_prog2011/tree_1.txt
[3] 環境
 [3.1] OS: Windows XP Home Edition SP2
 [3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2005 Academic Edition
 [3.3] 言語: C
[4] 期限: 2006年12月6日23:59まで
[5] その他の制限: 線形リストの基本は学んだが二分木は初めてです。

よろしくお願いします。
0723デフォルトの名無しさん2006/11/30(木) 21:36:25
>>721
int DeleteAlist( struct LIST** ppList, int iDelKey )
{
LIST* pTmp;
int iDelNum = 0;

if( ppList == NULL )
return 0;
while( *ppList ) {
if( (*ppList)->data == iDelKey ) {
pTmp = (*ppList)->nextptr;
free( (void*)*ppList );
*ppList = pTmp;
iDelNum++;
}
else {
ppList = &((*ppList)->nextptr);
}
}
DeleteAlist(NULL, int iDelKey);
return iDelNum;
}
0724デフォルトの名無しさん2006/11/30(木) 21:44:53
>>723
どうもありがとうございました!
0725デフォルトの名無しさん2006/11/30(木) 21:57:36
>>723
コンパイル通らなかったです・・・・
0726デフォルトの名無しさん2006/11/30(木) 22:02:45
>>725
あ、ごめん
下から三行目のintいらない

コンパイルできないならエラーメッセージくらい書いた方がいいよ
0727デフォルトの名無しさん2006/11/30(木) 22:13:18
>>726
int 消しました。まだエラーでます
エラー E2451 F:\borland\bcc55\list\list.c 11: 未定義のシンボル LIST(関数 DeleteAlist )
エラー E2451 F:\borland\bcc55\list\list.c 11: 未定義のシンボル pTmp(関数 DeleteAlist )
エラー E2140 F:\borland\bcc55\list\list.c 12: ここでは宣言はできない(関数 DeleteAlist )
だそうです

11行目と12行目はこうなってます
LIST* pTmp;
int iDelNum = 0;
0728デフォルトの名無しさん2006/11/30(木) 22:18:35
struct
0729デフォルトの名無しさん2006/11/30(木) 22:19:46
>>727
struct LIST* pTmp;

自分でコンパイルしてないから何とも言えんけど
0730デフォルトの名無しさん2006/11/30(木) 22:23:00
>>728
>>729
通りました〜どうも
07317202006/11/30(木) 22:40:45
すまん。再帰の部分見落としてたわ。
まぁ、回答してくれた人がいるみたいなので良かったな。

だけど、これを再帰で書いた奴が居たら書き直させるわ。
再帰にして解り易くなる訳でもねぇしデメリットしかねぇじゃん。

ちゅことで俺なら、『こんなん再帰で書かせるなボケ』と講師に言うかな。
0732デフォルトの名無しさん2006/11/30(木) 22:44:59
再帰の方がわかりやすいという気持ちも理解できる。
結局は慣れの問題じゃないだろうか。
0733デフォルトの名無しさん2006/11/30(木) 23:01:11
[1] 授業単元:データとアルゴリズム
[2] 問題文(含コード&リンク): ビットベクトルによる集合表現を用いて、2つ
の集合に対する要素の追加・削除・和集合、積集合、差集合を求めるプログラム
を作れ。

[3] 環境
 [3.1] OS: Windows Xp
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: なし

よろしくお願いします。
07347012006/11/30(木) 23:46:07
>>707
すいません
func、#include <stdlib.h>、pow
は習っていないので、これを使わないC言語
をお願いします。
0735デフォルトの名無しさん2006/11/30(木) 23:48:37
>>734
習ってないなら調べれば。
0736デフォルトの名無しさん2006/11/30(木) 23:57:48
>>735
空気嫁
習ってないのを使ったら怪しまれるじゃねーか

と>>701の心境をエスパー
0737デフォルトの名無しさん2006/12/01(金) 00:02:08
わからない→教科書調べる→習っていなくても使えそうなのがあったら使う

なんら問題ないじゃないか
0738デフォルトの名無しさん2006/12/01(金) 00:10:26
問題ないどころか評価があがるかもしれないぞ!
0739デフォルトの名無しさん2006/12/01(金) 00:23:54
習ってないのを使えば講師の心情を悪くする
「てめぇーなにおれのおしえてねーもんつかってんだよぉぅああん?」

と>>701の心境をエスパー
0740デフォルトの名無しさん2006/12/01(金) 00:42:34
-lmつけないでコンパイルしたら実行時エラーが出るんです><;
と見たがどうか?
0741デフォルトの名無しさん2006/12/01(金) 00:55:54
>>733
阪大の授業より抜粋
コンピュータ基礎&基礎演習
ttp://www3.sys.es.osaka-u.ac.jp/iwai/cs/
/* 和集合 */
int Union(int A, int B) {
    return A | B;
}
/* 積集合 */
int Intersection(int A, int B) {
    return A & B;
}
/* 差集合 */
int Difference(int A, int B) {
    return A & ~B;
}
/* 追加 */
int insert(int set, int atom) {
    set |= (1L << (atom - 1));
    return set;
}
/* 削除 */
int erase(int set, int atom) {
    set &= ~(1L << (atom - 1));
    return set;
}
07427072006/12/01(金) 01:11:52
>>734
func は単なる関数の名前だ。この先も習う事は無いだろう。
ちゅかお前は文法も習ってないのかと小一時間....
pow が使えないなら

double poorPow( double x, int y )
{
double dRet = 1.0;
int i;

for( i = 0; i < y; i++ )
dRet *= x;
return dRet;
}

を func() の前に入れて
pow( dX, (double)i ) を poorPow( dX, i ) に直せ。
#include <math.h> は不要になる。

続く
07437072006/12/01(金) 01:15:42
続き
<stdlib.h> を使いたくないなら >>708 を以下の様に修正。

double *pCn; を

double aCn[256];
double *pCn = aCn;

に直す。

pCn = (double*)malloc(... と次の行を削除。
free(... の行を削除。
これで #include <stdlib.h> も不要となる。
0744デフォルトの名無しさん2006/12/01(金) 01:18:28
>>707は問題を読み直すべき

>>701
#include <stdio.h>

int main(void)
{
  int i,j,n;
  double x,fx;
  double c[11];
  
  printf("次数 : "); scanf("%d",&n);
  if(n<0 || n>10){
    printf("入力できる次数は0から10まで\n");
    return 0;
  }
  for(i=n; i>=0; i--){
    printf("C%d : ",i); scanf("%lf",&c[i]);
  }
  for(j=1; j<=10; j++){
    x = j/10.0;
    fx = c[n];
    for(i=n-1; i>=0; i--){
      fx = fx*x+c[i];
    }
    printf("f(%.1f) = %f\n",x,fx);
  }
  return 0;
}
0745デフォルトの名無しさん2006/12/01(金) 01:25:40
>>722
そのスライドは?
0746デフォルトの名無しさん2006/12/01(金) 01:43:03
>>741
それだけじゃダメだろ。

0747デフォルトの名無しさん2006/12/01(金) 02:22:41
再帰するとすぐオーバーフローを起こすMSXを使ってた俺は
再帰恐怖症
07487072006/12/01(金) 02:30:56
>>744
確かにそっちの方が模範解答だわな。
問題ちゃんと読んで無いのも事実だし。

でもプログラムなんて同じ答えが出りゃいいじゃん...
0749デフォルトの名無しさん2006/12/01(金) 03:24:46
>>748
幼稚ですね
0750デフォルトの名無しさん2006/12/01(金) 03:40:47
>>748
フッ
懸命になってようやく解いた解答を一言の元に否定されて
傷ついてやがんの
0751デフォルトの名無しさん2006/12/01(金) 03:47:39
下手糞なコードを書くのは、まぁ初心者だろうから仕方ないが、
同じ答えが出ればいいだろと言って技術を向上させる意思が皆無なのは救いようがないな
0752デフォルトの名無しさん2006/12/01(金) 03:53:21
何が上手なコードで何が下手なコードなのか最近わからなくなってきたよ

ホーナー法なんて常識だろと思ってたんだがこのスレでは知らない人が二人ほどいたようだった。
ただコードの実行速度を速くしたいって、もう数値解析とかCGとか暗号の分野だけの気がするんだよな

普通にanx^n+a(n-i)x^(n-1)+…+a0 で計算した方が読みやすくていいコードなんじゃないかって
気がしてきた
0753デフォルトの名無しさん2006/12/01(金) 04:44:00
宿題丸投げするスレでコードの実行速度がどうこう言っても仕方ないんじゃない?
0754デフォルトの名無しさん2006/12/01(金) 04:56:40
問いから外れてないかぎりは作る側の勝手だろ
0755デフォルトの名無しさん2006/12/01(金) 04:56:48
>>753
受け取る側はどんなもの受け取っても自分で作ったものより良ければそれでいいだろうけど
解答する側はそれなりにテーマ決めて臨んでるんじゃないかねえ
07567072006/12/01(金) 06:55:13
なんか叩かれてるなぁ...別に良いけど。
>>750
懸命になってとか決め付けるなよ。
3分も掛かってないしコンパイルもしてないんだから。
>>751
下手と言われる筋合いは無いよ。
何らかの式を提示された場合、式の演算内容を f() としてまぁバカ正直に書くのは職業上の習慣だから。
まぁ問題をちゃんと読んで無いのは認めるけどね。
>>753
暇潰しだからなぁ...テーマとか言われても...
0757デフォルトの名無しさん2006/12/01(金) 07:03:34
>>756
たいした事言われてないのに一々レスするから必死に見える
ほっとけばいいのに
07587072006/12/01(金) 07:07:37
付け足し。
>>752
ホーナー法って言うんだ。常識なの?知らんかったよ。
けど、これってただの漸化式処理の事だよね。
応用範囲が狭そうだから名前付ける様なもんかなぁ..

コード速度の話はホーナー法?の方が早いでしょ。
上で書いたけど3分で書いたコードだからあんまり責めないでね。
速度を早くする作業は結構あるよ。画像解析とかだとちょっとした工夫で数10倍早くなるから。.

0759デフォルトの名無しさん2006/12/01(金) 07:26:29
ううむ・・・(^ω^;)
0760デフォルトの名無しさん2006/12/01(金) 07:32:14
[1] 授業単元: プログラミング入門
[2] 問題文(含コード&リンク): 整数配列dataにnum個のデータが「小さい順に整列
済みで」格納されている。(data[0]〜data[num-1])。目的とする整数(target)を入力したときに、
整数配列内の何番目にあるか出力せよ。(二分探索)
[3] 環境
 [3.1] OS: (Windows xp)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)
[4] 期限: (12/4/2006 までです。)
[5] その他の制限: (二分探索で求め、変数としてlow,high,midをつかっていただけると幸いです)
0761デフォルトの名無しさん2006/12/01(金) 07:41:40
変数名まで指定するのかよw
0762デフォルトの名無しさん2006/12/01(金) 07:48:16
言い訳する時間を勉強に費やして技術力上げればいいのにw
だからこういう奴は救いようがないんだよ。
0763デフォルトの名無しさん2006/12/01(金) 07:55:31
>>758
ホーナー法はアルゴリズム論では常識。これを知らないと、
ちゃんとした勉強してきてないんだなあと一発で分かる。


応用範囲が狭そうというのは視野が狭い。
ホーナー法は、+ と * を一般の二項演算としたとき、これらが分配的
すなわち a * (b + c) = (a * b) + (a * c) を満たすなら適用可能。
たとえば + と min、max と min、などでも使える。

これを意識して、プログラムの自動変換の分野では、ホーナー法が
適用できるように、演算子を分配的にする手法などが研究されている。
0764デフォルトの名無しさん2006/12/01(金) 07:56:00
見つからなかった時の処理について書いていないので
絶対見つかるものとする(unkunk
a[num]に数列は格納済み
nに探す数字を入れる

int low=0,high=num-1,mid=(low+high)/2;
while(a[mid]!=n){
if(a[mid]<n) low=mid;
else high=mid;
mid=(low+high)/2;
}
printf("%d",mid);
0765デフォルトの名無しさん2006/12/01(金) 07:59:21
配列のdata[0]って何番目っていうのかな。
0766デフォルトの名無しさん2006/12/01(金) 08:02:47
0番目
0767デフォルトの名無しさん2006/12/01(金) 08:05:59
>>765
ああそうか

printf("%d",mid+1);
0768デフォルトの名無しさん2006/12/01(金) 08:32:01
isalhaと
isgraph
それぞれを使ったらどうなりますか?
0769デフォルトの名無しさん2006/12/01(金) 08:33:54
0かそれ以外が返ってくる
0770デフォルトの名無しさん2006/12/01(金) 09:02:11
我ながらひどいなww書き直すか
>>760
mainは検証用だから適当に書き直す


#include <stdio.h>

int nibuntansaku(int n,int data[],int low, int high){
int mid=(low+high)/2;
if(data[mid]==n) return mid;
else if(high-low==1){
if(data[high]==n) return high;
else return -1;
}
else if(data[mid]<n) return nibuntansaku(n,data,mid+1,high);
else return nibuntansaku(n,data,low,high-1);

}

void main(){
int data[]={1,2,3,5,6,7,8,9};
int low=0,high=8,n;
scanf("%d",&n);
int tmp=nibuntansaku(n,data,low,high);
if(tmp!=-1) printf("%d番目\",tmp+1);
else printf("notfound\n");
}
0771デフォルトの名無しさん2006/12/01(金) 09:04:09
>>745
すいません。これです。

ttp://www.geocities.jp/c_prog2011/struct3.ppt
0772デフォルトの名無しさん2006/12/01(金) 09:15:10
やっぱこうしといて
×else if(high-low==1){
○else if(high-low<=1){
0773デフォルトの名無しさん2006/12/01(金) 09:26:18
寝ぼけてる時に書くもんじゃないな
失礼した

×else return nibuntansaku(n,data,low,high-1);
○else return nibuntansaku(n,data,low,mid-1);
0774デフォルトの名無しさん2006/12/01(金) 09:30:52
>>760 適当に作ったから動作保証は無しで。
#include<stdio.h>
int bs(int *data,int target,int low,int high){
int mid=(high+low)/2;
if(high<low)return -1;
if(data[mid]==target)return mid;
else if(target<data[mid])return bs(data,target,low,mid-1);
else return bs(data,target,mid+1,high);}
int main(){
int data[] = {1,2,3,4,6,7,8,9,10,11};
int num = 10,target,ans;
scanf("%d",&target);
ans = bs(data,target,0,num-1);
if(ans!=-1)printf("%d番目\n",ans+1);
else printf("見つかりませんでした\n");return 0;}
0775デフォルトの名無しさん2006/12/01(金) 10:34:28
[1] 授業単元: プログラミング
[2] 問題文: 別に用意したファイルdata.txt
       (5人分の名前、身長、年齢が入力されたファイル。こちらを参照http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3061.txt)から
       データを読み取り、年齢順に並べ替えて表示する。また表示した内容をファイルに書き直す。
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 12/2/2006 7:00 までです。
[5] その他の制限: 特になし
自分でここまでできました。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3062.txt
しかし、実行するとエラーメッセージが出て強制終了っぽくなります。
どうしてでしょうか?
また、29行目のs[0]=a;を実行するとx[4]=12となってしまうみたいなのですが、
これも理由がわかりません。

お願いします。
0776デフォルトの名無しさん2006/12/01(金) 10:37:27
>>775
struct person s[4];
int x[4];
↓
struct person s[5];
int x[5];
0777デフォルトの名無しさん2006/12/01(金) 10:40:14
>>775
このソースは冗談だろ?
冗談だと言ってくれ!
0778デフォルトの名無しさん2006/12/01(金) 10:58:39
>>775
鼻からコーヒーふきだしちゃったじゃないか!!!1111111
どうしてくれるんだ!!!!!!!11
0779デフォルトの名無しさん2006/12/01(金) 11:03:50
なんだか小学生がプログラミングしたみたいだなぁ。
でも何も分からなかったらこんなもんなのかもね…
0780デフォルトの名無しさん2006/12/01(金) 11:05:41
配列を信用してないことだけは分かった
0781デフォルトの名無しさん2006/12/01(金) 11:09:20

               -― ̄ ̄ ` ―--  _          だめぽ・・・・・
          , ´  ......... . .   ,    ~  ̄" ー  _
        _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、
       , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
    ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
   と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
  (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
       ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: : ●::::::::::::::::::::::: : : :_>
          ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
        (__  ̄~" __ , --‐一~ ̄ ̄ ̄
           ̄ ̄ ̄
0782デフォルトの名無しさん2006/12/01(金) 11:19:24
人数が増えて(ry
0783デフォルトの名無しさん2006/12/01(金) 11:50:52
これ以上何も言うまい。
駄作ではあるがこれでも持って帰って今まで悪い夢でも見ていたんだろうとみんなで思おうじゃないか。
そう、全て悪い夢だったのさ。

#include <stdio.h>
#include <stdlib.h>
#define FILENAME_READ "data.txt"
#define FILENAME_WRITE "data_new.txt"
#define NAMESIZE 40
#define REALLOC_UNIT 10
struct person{int age;float height;char name[NAMESIZE];};
int main(){int i,j,k,n;FILE *fp;struct person *s,tmp;
if((fp=fopen(FILENAME_READ,"r"))==NULL){fprintf(stderr,"Fileopen failed (read:"FILENAME_READ").\n");return 1;}
n=0;s=(struct person*)malloc(sizeof(struct person)*REALLOC_UNIT);
while(fscanf(fp,"%d %f %s",&(s[n].age),&(s[n].height),s[n].name)!=EOF)
{n++;if(n%REALLOC_UNIT==0)s=(struct person*)realloc(s,sizeof(struct person)*(n+REALLOC_UNIT));}fclose(fp);
for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(s[k].age>s[j].age)k=j;if(k!=i){tmp=s[i];s[i]=s[k];s[k]=tmp;}}
for(i=0;i<n;i++)printf("%d %f %s\n",s[i].age,s[i].height,s[i].name);
if((fp=fopen(FILENAME_WRITE,"w"))==NULL){fprintf(stderr,"Fileopen failed (write:"FILENAME_WRITE").\n");return 1;}
for(i=0;i<n;i++)fprintf(fp,"%d %f %s\n",s[i].age,s[i].height,s[i].name);fclose(fp);return 0;}
0784デフォルトの名無しさん2006/12/01(金) 11:54:12
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):10個の倍精度実数型データをキーボードから入力し、
それらのデータを小さい順に並べ替えて画面表示するプログラムを作成しなさい。ただし、
次に示すステップを満たす事とし、入力するデータの中に必ず1種類以上の同じ数値を含むこと
(1)入力されたデータを1次配列double data[10]に格納する
(2)すべての入力が終了した後で、配列を操作してデータの並べ替えを行う
(3)データの並べ替えが終了した後で、画面表示を行う
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月3日まで
[5] その他の制限: なし

よろしくお願いします
0785デフォルトの名無しさん2006/12/01(金) 12:56:17
>>784
#include <stdio.h>
#include <stdlib.h>
#define N 10
int div(double *pa, int l, int r){
int pv = r--;
double tmp;
while(1){
while(pa[l] < pa[pv]){ l++; }
while(pa[r] > pa[pv] && l < r){ r--; }
if(l >= r){ break; }
tmp = pa[l]; pa[l] = pa[r]; pa[r] = tmp;
}
tmp = pa[l]; pa[l] = pa[pv]; pa[pv] = tmp;
return l;
}
int sort(double *pa, int min, int max){
int pv;
if(min >= max){ return 0; }
pv = div(pa, min, max);
sort(pa, min, pv - 1); sort(pa, pv + 1, max);
return 1;
}
int main(void){
double data[N];
int i;
for(i = 0; i < N; ++i){ printf("num%d... ", i + 1); scanf("%lf", &data[i]); }
sort(data, 0, N - 1);
for(i = 0; i < N; ++i){ printf("%lf ", data[i]); }
return 0;
}
07867832006/12/01(金) 13:07:03
>>783
free(s);を忘れた。
0787デフォルトの名無しさんNGNG?2BP(202)
>>784
http://c-kadai.sakura.ne.jp/index.php?itemid=5&catid=6
07887142006/12/01(金) 14:00:52
あの〜〜

完全にスルーされているのですが・・・・・・




よろしくおねがいします。
0789デフォルトの名無しさん2006/12/01(金) 14:09:44
>>739
それは無いだろ。
実際には屑揃いの中に割とマシな奴が居ると見て貰える。
0790デフォルトの名無しさん2006/12/01(金) 14:16:54
>>789
だから、教わるほうが屑なら教えるほうも屑という設定を勝手に作って
>>701の心境をエスパーするという冗談なのさ。
0791デフォルトの名無しさん2006/12/01(金) 14:58:47
>>788
そりゃ締め切り書かなきゃスルーされる確率も上がるだろ
常識的に考えて…

また解答側は全ての問題に答える義務があるわけではない
つまらなそうと思えば当然スルーされる

BM法 cでググれば答えがいくらでも出てくるものをわざわざ
やるのはめんどくさいんだよ
0792デフォルトの名無しさん2006/12/01(金) 15:36:21
>>789
割とマシだと思われてたのに、次の授業では宿題でやったことと同じ事が出来なかったら
悲惨じゃん
0793デフォルトの名無しさん2006/12/01(金) 15:47:43
やらないのならイチイチ文句言うな
07947522006/12/01(金) 16:14:35
>>754,758
別にホーナー法使ってないプログラムにケチをつけたわけじゃないよ
俺自身も752に書いてるようにホーナー法とか最適化手法なんて
もうバッドノウハウなのかなあと思いかけてるくらいだし

ホーナー法使ったプログラムを書いたらホーナー法知らない人にケチをつけられたってだけ

>>763
なるほど 勉強になったわ
トンクス
0795デフォルトの名無しさん2006/12/01(金) 18:17:36
つまりアレか
片方が必死なのかと思ったらもう一方も必死なんだな
0796デフォルトの名無しさん2006/12/01(金) 18:53:51
1] 授業単元:Cプログラミング演習
[2] 問題文:
以下の要求(1)〜(6)を満たすクイックソートのプログラムを実現しなさい.
(1)軸要素の選び方については,以下の3方法が利用できるようにすること.
  (a) ランダムに一つを選ぶ. (b) データの先頭,最後,真中の位置の3要素の中央値を選ぶ.
  (c) データの先頭から見て最初に得られた2つの異なる値の大きいほうをとる.
(2)軸要素で分割した部分配列のサイズ(要素数)が小さくなった場合には, 基本的なソート方法を用いて並び替えること.
(3)プログラム終了時にデータ総数と比較回数を表示すること. また,分割の回数および基本的ソート方法が用いられた回数も表示すること.
   いずれも「分かりやすく」表示するように工夫すること.
(5)プログラム実行は,次のような引数付きで行えること.
  (ここでは,プログラムファイル名をquick81.cとし,
  これをコンパイルしてquick81という実行形式ファイルを作成したとする.)
  % quick81 inputfile outputfile pivot_selection basic_sort small_number debug_mode
  inputfile : ソートするデータが入ったファイルの名前. outputfile : ソート後のデータを出力するファイルの名前
  pivot_selection : a,b,c のいずれかの文字で上の軸要素の選び方に対応する.
  basic_sort : b,s,i のいずれかの文字.それぞれ,バブル,選択,挿入ソートに
      相当する.分割した部分配列のサイズが小さくなった場合に用いるソート方法を設定する.
small_number : 正の整数.この数字より部分配列のサイズが小さくなったら,上で指定した基本的なソート方法を用いる.
  debug_mode : vあるいはnの文字。vの場合は,データの分割の仕方が分かりやすいように、軸要素とそれにより分割された部分配列のサイズを
逐次出力させるようにすること. n の場合は上の出力はしない.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月3日
0797デフォルトの名無しさん2006/12/01(金) 19:05:02
[1] 授業単元:プログラミング基礎
[2]  2 3
 1 2

 1 1
 2 2 のような正方行列のデータを読み込んで上の行列をA、下の行列をBとしてA*BとA+Bを求めよ。

[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] C
[4] 期限: 12/2
[5] mallocを用いる事。今回のデータは2行2列ですが、行列のサイズはどの数字でも対応できるものでお願いします。
0798デフォルトの名無しさん2006/12/01(金) 19:09:38
>>796
inputfileの仕様
0799デフォルトの名無しさん2006/12/01(金) 19:19:20
inputfile : ソートするデータが入ったファイルの名前.
      ファイル中のデータの並べ方は問わない.データ数は1000個です
  outputfile : ソート後のデータを出力するファイルの名前
      ファイル中のデータの並べ方は,inputfileと同じにすること.
  pivot_selection : a,b,c のいずれかの文字
  上の軸要素の選び方に対応する.
  basic_sort : b,s,i のいずれかの文字.それぞれ,バブル,選択,挿入ソートに
      相当する.分割した部分配列のサイズが小さくなった場合に用いるソート方法を
      設定する.
small_number : 正の整数.この数字より部分配列のサイズが小さくなったら,
          上で指定した基本的なソート方法を用いる.
  debug_mode : v あるいは n の文字
      vの場合は,データの分割の仕方が分かりやすいように,
軸要素とそれにより分割された部分配列のサイズを
逐次出力させるようにすること.
n の場合は上の出力はしない.
0800デフォルトの名無しさん2006/12/01(金) 19:59:48
>797
//mallocでの正方行列の確保
int i;
int **p;
p = (int **)malloc(n*sizeof(int *));
for(i=0; i<n; i++) p[i] = (int *)malloc(n*sizeof(int));
//和
int i, j;
int **a, **b, **c;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) c[i][j] = a[i][j] + b[i][j];
}
//積
int i, j, k;
int **a, **b, **c;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
c[i][j] = 0;
for(k=0; k<n; k++) c[i][j] += a[i][k] * b[k][j];
}
}

後は適当になんとかして。
0801デフォルトの名無しさん2006/12/01(金) 20:25:07
>>799
言い方が悪かった

inputfileの区切り文字は何?
0802デフォルトの名無しさん2006/12/01(金) 20:55:51
区切り文字は空白だと思います
0803デフォルトの名無しさん2006/12/01(金) 21:38:20
 大学の講義の[C言語」という時間の課題として
{1〜10までの乱数を10個発生させて表示させる。ただし、1度出た数字は除外する。} という課題を出されたのですが、教科書を見ながら解いても 同じ数字が重複して表示されてしまうプログラムになってしまいどうしていいかわかりません。
 どなたか手ほどきをおねがいします
0804デフォルトの名無しさん2006/12/01(金) 21:42:38
>>803
教科書を見ながら解いた結果を貼るか、>>1を読んで書き直して丸投げするか
好きな方を選べ
0805デフォルトの名無しさん2006/12/01(金) 21:58:45
>>803 こんなんじゃねぇ?
int data[10];
int i, cnt = 0;

while( cnt < 10 ) {
data[cnt] = rand() % 10 + 1;
for( i = 0; i < cnt; i++ )
if( data[i] == data[cnt] )
break;
if( cnt == i ) cnt++;
}
0806デフォルトの名無しさん2006/12/01(金) 22:13:14
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3051.txt
この整数値の昇順リストを作成するプログラムを、指定データ(下記deletedata)と同じデータを持つセルをすべて
消去し、消去するデータがあったときはdata foundと1回表示し、ないときにはno such data
と1回表示するvoid DeleteAlist(struct LIST **ptr, int deletedata)を再帰を用いることによって作成せよ。

指定データを持つセルの先頭のものを消去する関数を参考にせよ。

void Deletelist(struct LIST **ptr, int deletedata){

if((*ptr)==NULL){
printf("no such data \n");
}else if((*ptr)->data == deletedata){
struct LIST *tmp;
printf("data found\n");
tmp=(*ptr)->nextptr;
free(*ptr);
*ptr=tmp;
}else DeleteList(&((*ptr)->nextptr),deletedata);
}
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:
昨日も聞いたんですが、
また条件を言われました。void型は変えずに、関数のなかで、deletedataとnosuchdataを表示しないといけないと言われました。
何度もすいませんが、お願いします
0807デフォルトの名無しさん2006/12/01(金) 22:21:47
>void型は変えずに
?
0808デフォルトの名無しさん2006/12/01(金) 22:27:27
ソートとリストで腹の中がパンパンだぜ
0809デフォルトの名無しさん2006/12/01(金) 22:38:32
>>806
return の変わりに条件判定とprintf文を書けば良いだけでないの?
0810デフォルトの名無しさん2006/12/02(土) 00:23:33
[1] 授業単元:Cプログラミング演習
[2] 問題文:50個の整数データを読み込み、それらを小さい順に出力する
      cプログラムを作成せよ。バブル整列法は使ってはいけない。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみ
[4] 期限: 2006年12月23日12:00まで

よろしくお願いします。
0811デフォルトの名無しさん2006/12/02(土) 00:41:03
>>803
#include<stdio.h>
#include<stdlib.h>

int main(void){
int i,j;
int a[10];
srand(time(NULL));
printf("0-10:\n");
for(i=0;i<10;i++){
a[i] = 0;
}
j=1;
while(j<=10){
i = rand() % 10;
if(a[i]==0){
a[i] = j;
j++;
}
}
for(i=0;i<10;i++){
printf("%d\n",a[i]);
}
}
08127152006/12/02(土) 00:49:31
>>718
レス遅くなってスミマセン。ありがとうございました!
0813デフォルトの名無しさん2006/12/02(土) 01:22:03
>>803
int i,k=0,shaffle;
int rar[10];
for(i = 0; i< 9; i++)
rar[i] = i+1;
scanf("%d",&shaffle);
srand((unsigned)time(NULL));
while(k <= shaffle){
i = rand() % 10;
if(i>=0){
temp = Value[i];
Value[i] = Value[i-1];
Value[i-1] = temp;
}
k++;
}
適当にこんな感じでも良いでしょ
0814デフォルトの名無しさん2006/12/02(土) 01:23:52
うわ!なんか似たソースのっかってるし!!
びっくりだ
0815デフォルトの名無しさん2006/12/02(土) 03:34:13
shuffle
0816デフォルトの名無しさん2006/12/02(土) 05:25:56
>>803
int d[10];
int r,w;
int i;

srand((unsigned)time(NULL));


for( i=0; i < 10; i++)
d[i] = i + 1;

for( i = 0 ; i < 10; i++){
r = i + rand() % (10 - i);
w = d[i];
d[i] = d[r];
d[r] = w;
}

0817デフォルトの名無しさん2006/12/02(土) 06:17:56
>813
なんか色々とおかしくない?
08188132006/12/02(土) 06:26:50
おかしいね
何も見ずに書き込んだらやっぱだめだね
0819デフォルトの名無しさん2006/12/02(土) 07:34:43
>>810
コンパイルはしてないけどな。あと、データ読むところは書いてない。

#include <stdlib.h>

int compare(const int *a, const int *b);

int main(void)
{
int data[50];
int i;

/* ここいらでデータを読む */

/* ソート */
qsort(data, 50, sizeof(int), (int (*)(const void*, const void*))compare);

/* 表示 */
for (i = 0; i < 50; i++) {
printf("%d\n", data[i]);
}
}

int compare(const int *a, const int *b)
{
return *a - *b;
}
0820デフォルトの名無しさん2006/12/02(土) 10:39:00
パスカルの法則で
1
11
121
1331
14641
のように出力されるようにするにはどのように作ればいいですか。
0821デフォルトの名無しさん2006/12/02(土) 11:33:54
>>820
どのようにって

・n段目の左からm番目の数字が(n-1)段目の(m-1)番目とm番目の数字和 (n>=3, 2<=m<=n-1)
・n段目の左端(m=1)と右端(m=n)の数字が1

になるように作ればいいと思うよ
08227012006/12/02(土) 12:06:39
>>707
>>744
ありがとうございます。なにしろC言語を習い始めて
まだ二ヶ月もたってない初心者なもので・・

0823デフォルトの名無しさん2006/12/02(土) 12:08:30
1年なら普通だろ
0824デフォルトの名無しさん2006/12/02(土) 12:12:51
二ヶ月やって>>701ができないなら、これからの課題も全部ここに丸投げだな
0825デフォルトの名無しさん2006/12/02(土) 12:22:34
へへん。
プログラミングだけが人生じゃないさ。
難問奇問な宿題はさっさと丸投げして人生を楽しもう。
0826デフォルトの名無しさん2006/12/02(土) 13:56:03
プログラマを顎で使って今までごめんなさい orz
自分で勉強してみて難しさが分かりました orz
これからは期限守らなくても大目に見ますね。
0827デフォルトの名無しさん2006/12/02(土) 14:01:12
>>826
当たり前だカス
0828デフォルトの名無しさん2006/12/02(土) 14:15:57
>>827
ニートは黙ってろ
0829デフォルトの名無しさん2006/12/02(土) 14:34:35
>810
多分題意に反すると思うけど
#include <stdio.h>
#define N 5
int main(void)
{
int i, j, k, n,, a[N];
for(i=0; i<N; i++) {
scanf("%d", &n);
for(j=0; j<i; j++) {
if(a[j]>n) {
for(k=i; k>j; k--) a[k] = a[k-1];
break;
}
}
a[j] = n;
}
for(i=0; i<N; i++) printf("%d ", a[i]);
return 0;
}
0830デフォルトの名無しさん2006/12/02(土) 14:35:52
#define N 5 →#define N 50
0831デフォルトの名無しさん2006/12/02(土) 15:26:00
796の問題難しくないですか?
0832デフォルトの名無しさん2006/12/02(土) 15:27:09
796の問題難しくないですよ!
0833デフォルトの名無しさん2006/12/02(土) 15:33:04
難しくは無いがめんどくさい
inputfile : ソートするデータが入ったファイルの名前.
      ファイル中のデータの並べ方は問わない.データ数は1000個です
outputfile : ソート後のデータを出力するファイルの名前
      ファイル中のデータの並べ方は,inputfileと同じにすること.

これを見る限り区切り文字がスペースだろうとコンマだろうと改行記号だろうと
対応しなくてはならないようだ
どうも質問者は分かってなかったみたいだが

とりあえず関数は全部書いたけどmain作るのがめんどくさくて絶賛放置中
0834デフォルトの名無しさん2006/12/02(土) 15:47:12
区切り文字はスペースで統一するらしいです。さきほど先生にうかがいました
08358322006/12/02(土) 15:49:09
833さん、頭いいですね!
0836デフォルトの名無しさん2006/12/02(土) 15:49:58
>>834
>ファイル中のデータの並べ方は,inputfileと同じにすること.
じゃあこれは何を意味するの?
あとファイル内のデータは数値?文字列?
0837デフォルトの名無しさん2006/12/02(土) 15:54:19
あと比較回数を表示することってあるけど軸選びに使う比較も回数に含めるの?
0838デフォルトの名無しさん2006/12/02(土) 16:01:26
それは含めないらしいです。あとファイル中のデータの並べ方は,inputfileと同じにすること.
ていうのは、inputfileに入っているデータと同じ数字が入っているならいいらしいです。あとファイル内のデータは数字です
0839デフォルトの名無しさん2006/12/02(土) 16:15:32
あと何を伝えて無いんだ?
0840デフォルトの名無しさん2006/12/02(土) 16:19:08
これで全部伝えました。遅くなってすみませんでした
0841デフォルトの名無しさん2006/12/02(土) 16:19:50
そうか。では先生をここに呼んで来い。
0842デフォルトの名無しさん2006/12/02(土) 16:27:22
すみません。先生はもういないです
0843デフォルトの名無しさん2006/12/02(土) 16:32:17
泣いた
0844デフォルトの名無しさん2006/12/02(土) 16:34:27
自分はC言語が苦手で796の問題がぜんぜんわからないのでぜひお願いします
0845デフォルトの名無しさん2006/12/02(土) 16:38:25
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3063.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: 12月7日
[5] その他の制限: よろしくお願いします。
0846デフォルトの名無しさん2006/12/02(土) 16:58:53
>>845
またお前か
0847デフォルトの名無しさん2006/12/02(土) 17:26:51
>>796
今からやるから期待しないで待ってろ
21時までに書き込み無かったら俺からの回答は諦めろ
08488312006/12/02(土) 17:38:22
833さん、僕も今さっき関数ができたんですけどmainがどうしてもできません。
できそうですか?
0849デフォルトの名無しさん2006/12/02(土) 17:38:58
847さん、ぜひお願いします
0850デフォルトの名無しさん2006/12/02(土) 17:43:49
>>848
その関数を晒してもらおうか
08518482006/12/02(土) 17:49:03
void bubblesort(int h, int k, int *A)
{
int i, j;
int test; /* test==1; すでに整列済み */

for(i=h; i<k; i++) /* バブル操作の反復 */
{
test=1;
for(j=k; j>=i+1; j--)
if(A[j]<A[j-1]) {swap(j, j-1, A); test=0;}
if(test==1) return;
}

return;
}
まだバブルソートしかできてません
08528472006/12/02(土) 17:49:37
Main以外出来てるのならすぐだろうよ。そのデータ読んでmy_qsortみたいな関数を呼ぶだけで。
それを晒してくれよ。Mainなら書くよ
08538472006/12/02(土) 17:50:38
>>853
ちょwwwwwwwwwwwwww
0854デフォルトの名無しさん2006/12/02(土) 17:52:10
もう何がなんだか・・
08558482006/12/02(土) 17:53:50
バブルソートはできたんですけど796のほかの関数とかmainがまったくわかりません。
0856デフォルトの名無しさん2006/12/02(土) 17:57:44
人それを全くできてないと云う
0857デフォルトの名無しさん2006/12/02(土) 17:57:58
>>853
大変だwww無限ループにwww
0858デフォルトの名無しさん2006/12/02(土) 18:09:33
スタックオーバーフロー
0859デフォルトの名無しさん2006/12/02(土) 18:13:18
とりあえず796は暇ならinputfileでも作ってどこかにうpしておいてくれ
締め切り日曜みたいだし847からの解答が無ければ俺がのんびり解こう
08607962006/12/02(土) 19:05:04
inputfileの1000個のデータです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3064.txt
0861デフォルトの名無しさん2006/12/02(土) 19:06:53
正気か?
08628472006/12/02(土) 19:32:29
まずは謝ろう。問題を流し読みしてただのクイックソートじゃんとなめてた。すまない。
これは面倒くさいな。とりあえず前言撤回。俺はやってないことにしておいてくれ。

ということで、>>859にまかせた。
0863デフォルトの名無しさん2006/12/02(土) 19:56:54
と、ここまで期待させておいて>>796を絶望の底へ陥れる自作自演乙
08647962006/12/02(土) 20:04:44
マジでお願いします
0865デフォルトの名無しさん2006/12/02(土) 20:05:42
                   ( 嫌 生 人 こ )
                      ) だ .き .を れ(
                     ( お て .疑 以 )
                      ) ! い .い 上(
           ,, -──- 、._   (    く  .な   )
         -"´         \  .)   .の .が   (
        /              ヽ.(   .は .ら    .)
         /             ヽ〜、_       _(
       |      _ノ    ヽ、_  .|  `,〜〜〜´
        l     o゚⌒   ⌒゚o  l
       ` 、      (__人__)   /
         `ー 、_.   ` ⌒´   /
            /`''ー─‐┬''´
            /  丶. i  |
           ./ 丶、_)|_ノ|_
           .|  ̄ヽ._  ´  ヽ
           ヽ、 _/´`ヽ   /
             ̄     ̄ ̄

0866デフォルトの名無しさん2006/12/02(土) 20:07:07
失敗
0867デフォルトの名無しさん2006/12/02(土) 20:12:19
裏切りを経験するのも人生には必要なのかもしれないな。
他に方法がないからと言って判断を完全に預けてしまうのは
独立した個人としての人格の尊厳に関わるのではないだろうか。
0868デフォルトの名無しさん2006/12/02(土) 20:22:26
         /   /ヘ/  / /   /   /   //  /  / ヽ  \      \ \
        ./ _/ /  / /   /   /  / /  /  ∧_ヽ  \     ヽ.  ヽ
       // /! /  .l  l  /,.-‐'フフヽ.//  /  /´ヽヽ `>.、 .!      ',`ヽ 〉
       /   / |/   |  l// // /.: / ノ  /. :.:.ヽ \\ `ト、   |  | /
       {  ./ ||    l/  /ン-‐<、 ://:/  ./: :,ィ─ヽ-\ヽ. | |   |  |′
        \、.--|l-‐''"_,. -‐''",. =,=¬ミ、/: : :/  /: : : ノ゙,ニ==ミ、 | |   |  |
        /  ̄|| ̄   {: :く   ト-'  }  : : / ./: : : : : ト-'  } // /   j l !
        /   .!',     \:.` ゝ -‐'  .//      ー--  ./ /   /j | /
        /    ', ヽ   \ゝ、       ノ : : !          ノ/  .//ノ'
      ./    .∧ \   \                 -┐ ∠ -‐''" /
      /    /,ハ = ゝヘ、_  ゝ、             __ノ)     /〃/
     /    //  ヽ〃 ヾ ヽ ̄ ̄  、_,.. -−'' ´ ̄   /     /</  ケヒヒッ
   /    ,r'"´ ̄了ゝ、rー、 ヽ     ` ー──‐ '' ´     /liヾ/     人生は裏切りの連続ですぅ
  /    / ゝ, -‐'7`ーイ__.」、  \        ー         /   |
/   , f´ ̄/  /  ノ/ヽゝン‐.、V丶、            /|    |
   / 之/   /  /   ヽ ヽノ1ヽ-、.`丶、   _,. -‐'"´  /|ヾ 「l〃|
  / 「 /    / /     ', ��| ヽ \    ̄  /   / |= =l
/  .ゝ/    //      .i l , -イ  ヽ. ヽ     ,イヽ /  |〃il ヾl
   ,r/    /        || L.、|   l  `丶、 f |  `ヽ、 |    !
  /./    /        || ヽjヾ||〃l  ,. ‐-、ヽl   _  \|     ヽ
/ /    /         || ノj= =|/ , --ヘ}⌒}´_\  \ 、 ヾ r ヽ
0869デフォルトの名無しさん2006/12/02(土) 20:26:35
何の責任を負ってるわけでもないのに裏切りといわれても困るお^^;
0870デフォルトの名無しさん2006/12/02(土) 20:49:25
>>796
ちゃんと動作確かめてないけど、こんなんでいいのかな?

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3066.c
0871デフォルトの名無しさん2006/12/02(土) 21:02:57
>>869
信じていたのに


この言葉はお約束ですな
08727962006/12/02(土) 21:10:27
>>870
はい、ありがとうございました。おかげで助かりました。
0873デフォルトの名無しさん2006/12/02(土) 21:13:43

           /\        /\
           /  \      /  \
          /    ゙'----''"´    ヾ
          /               `:、
         /                `:
         |                  i
         |      ノ '           |
         |      .,___.,     .,___.,   i
          、    ''"´`:、        υ / キミ達のこと 信じてたのに........クスン
          `丶,:' 、.  . )___Д____,,.,_,,.;''"
           /    /       ο

0874デフォルトの名無しさん2006/12/02(土) 21:37:12
>>873
2ch閉鎖か
0875デフォルトの名無しさん2006/12/02(土) 22:24:45
[1] 授業単元:ソートの準備
[2] 問題文:
配列に格納されたデータをソートするプログラムを作成するにあたり、
以下の機能を持つ関数を作成しなさい。

乱数を生成し配列要素に格納する
 init_array(int *pa, int n)
配列要素を1行で画面に出力する
 output_array(int *pa, int n)
指定された2つアドレスのデータを交換する
 swap(int *x, int *y)
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio.NET2003
 [3.3] 言語: C
[4] 期限: 2006年12月4日09:00まで
0876デフォルトの名無しさん2006/12/02(土) 22:50:07
>>875
# include <stdio.h>
# include <stdlib.h>

void init_array(int *pa, int n)
{
  while(--n >= 0) pa[n] = rand();
}

void output_array(int *pa, int n)
{
  int i;
  for(i = 0; i < n; i++)
    printf("%d ", pa[i]);
  printf("\n");
}

void swap(int *x, int *y)
{
  int t = *x;
  *x = *y;
  *y = t;
}
0877 ◆s2cIPM3PTs 2006/12/02(土) 23:05:15
[1] 授業単元:プログラミング初級
[2] 問題文
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3067.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C
[4] 期限: 明後日
[5] その他の制限: 配列を利用する
          関数を利用しない

つい最近習い始めたばかりの初心者です。
宜しくお願いします
0878デフォルトの名無しさん2006/12/02(土) 23:25:19
>>877
問題文の読み込むってファイルから?
ファイルから読むんなら関数使っちゃうよね?
0879デフォルトの名無しさん2006/12/02(土) 23:32:27
ユーザ定義関数を利用しない、って意味じゃないかと。
0880 ◆s2cIPM3PTs 2006/12/02(土) 23:38:13
>>878
>>879
すいません。879さんの言うとおりです。
0881デフォルトの名無しさん2006/12/03(日) 00:06:48
[1]授業単元:アルゴリズム論演習
[2]問題文:入力した年月日が、その年の1月1日から通算何日目かを表示するプログラムを
閏年を判別する関数、通算を求める関数、main関数に分けて作成せよ。
[3]環境
 [3-1]OS:Windows XP
[3-2]コンパイラ名とバージョン:Visual Studio.NET2003
 [3-3]言語:C++
[4]期限:12月7日
0882デフォルトの名無しさん2006/12/03(日) 00:14:00
[1]授業単元:アルゴリズム論演習
[2]問題文:44,44と-0,1111×(10の2乗)を足した値をscanf関数を用いずに
      表示するプログラムを作成せよ。ただし、数値は入力すること。
[3]環境
 [3-1]OS:Windows XP
 [3-2]コンパイラ名とバージョン:Visual Studio.NET2003
 [3-3]言語:C++
[4]期限:12月7日
0883デフォルトの名無しさん2006/12/03(日) 00:26:09
>>882
#include <stdio.h>
int main(void){
float a,b;
char buf[1024];
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%f %f",&a,&b);
printf("%.2f\n",a+b);
return 0;
}
0884デフォルトの名無しさん2006/12/03(日) 00:59:05
>>882
>44,44と-0,1111×(10の2乗)
俺の脳がコンパイルエラーを返した
0885デフォルトの名無しさん2006/12/03(日) 01:07:51
>>881
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3068.c
0886デフォルトの名無しさん2006/12/03(日) 01:08:47
ぐぼぉっ、よくみたらC++か。適当に書き換えてきまつw
0887デフォルトの名無しさん2006/12/03(日) 01:16:45
>>881
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3069.cpp
0888デフォルトの名無しさん2006/12/03(日) 01:20:30
>>881
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3070.cpp
すまそ、細かいが念のためにちょい修正
0889デフォルトの名無しさん2006/12/03(日) 03:06:06
>>870
これはひどい・・・
0890デフォルトの名無しさん2006/12/03(日) 03:17:45
やはりトラップか
0891デフォルトの名無しさん2006/12/03(日) 03:49:05
>>877
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3071.txt

最低限題意は満たしたつもり。
0892デフォルトの名無しさん2006/12/03(日) 04:09:36
>891
1.平均と等しい数値が平均より小さい数になる。
2.sa_maxが初期化されてない
0893デフォルトの名無しさん2006/12/03(日) 04:22:25
>>892
thx

訂正
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3072.txt
0894デフォルトの名無しさん2006/12/03(日) 05:59:27
うーん……??

Q1
while ((c = getc(fp)) != EOF) {
putchar(c);
}

これ↑だとEOFを検出したらすぐ終了するのに


while (feof(fp)==0) {
c = getc(fp);
putchar(c);
}

これ↑だとEOFを出力してしまうのはなぜ…?


Q2.ファイルの終わりに'\0'を書き込む必要はないのですか?

基本的な質問でごめん、誰か教えてくれないかな…。
0895デフォルトの名無しさん2006/12/03(日) 06:06:30
さすがにこの時間じゃ誰も見てないかな…。
0896デフォルトの名無しさん2006/12/03(日) 06:36:27
二次元配列で
int a[600][600];
とかって確保しようとしたら実行してもすぐ終了してしまう。
大きな領域の二次元配列を確保することは出来ないのでしょうか?
0897デフォルトの名無しさん2006/12/03(日) 06:43:48
>>896
600*600*4バイト以上だよね
スタック上じゃなくヒープ上に確保した方がいいのでは
0898デフォルトの名無しさん2006/12/03(日) 06:48:15
>>894
feofはファイルの終端を越えて読み出しを行った場合にゼロ以外を返す。
なので、最後の一文字を読んだ時点ではまだゼロ。
他の言語じゃ終端でEOFになるのが多いから間違えやすい。

ファイルシステムがファイルの長さの情報を持ってるから不要。
むかしCP/MというOSがファイルの長さの情報をブロック単位でしか持っていなかったので
テキストファイルの場合終端に ^Z(0x1a)を付けていたことがあるがこれは例外。
MS-DOSにもこの風習が残っていた。
0899デフォルトの名無しさん2006/12/03(日) 06:57:21
>>897
Windows上の場合は変数を保存出来る領域に制限があるんですか。
UNIXマシンだと問題なかったような…。

>>898
なるほど…。
よく分かりました。サンクス!
0900デフォルトの名無しさん2006/12/03(日) 07:42:51
全然関係ないけど、この本いいな、なんか…
「やさしいC 高橋 麻奈」
0901デフォルトの名無しさん2006/12/03(日) 08:06:43
>>899
コンパイルオプションにスタックサイズを与えればいいけど
そこまで考えているようじゃないのでヒープって言っちゃった
0902デフォルトの名無しさん2006/12/03(日) 08:14:54
>>900
麻奈って名前がいいだけだろw
0903デフォルトの名無しさん2006/12/03(日) 08:40:05
狙って付けたなこのタイトルは。
0904デフォルトの名無しさん2006/12/03(日) 08:45:56
「はじめてのC 椋田實」よりはいいかな。
0905デフォルトの名無しさん2006/12/03(日) 08:54:08
Cは習いましたがAすら実行できません(´・ω・`)
0906デフォルトの名無しさん2006/12/03(日) 08:55:36
まずアセンブラからはじめよ という中国の諺がある
0907 ◆s2cIPM3PTs 2006/12/03(日) 12:23:40
>>893
>>892
夜中なのにどうもありがとうございました。
助かります(^^)!
0908 ◆s2cIPM3PTs 2006/12/03(日) 12:57:08
[1] 授業単元:プログラミング初級
[2] 問題文
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3076.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C
[4] 期限: 明日 17:00
[5] その他の制限: 特にありません
         
連続ですいません。
宜しくお願いします。
0909デフォルトの名無しさん2006/12/03(日) 13:19:20
>>908
オーバーフローとか気にしてないけど、
初級レベルならこの程度書いとけば充分だろう。
脳内コンパイルしかしてないから不備があっても勘弁な。

int countbetween(int data[],int n,int a,int b) {
 int count=0;
  for(int* p=&data[n-1]; p>=data; p--)
   if(a<=*p && b>=*p) count++;
 return count;
}

double avragearray(double data[],int n) {
 double total=0;
 for(int i=0; i<n; i++) total+=data[n];
 return total/n;
}

int uruu(int year) {
 return
  year%400==0 ? 1 :
  year%100==0 ? 0 :
  year%4 ==0 ? 1 : 0;
}
0910デフォルトの名無しさん2006/12/03(日) 13:20:31
>>906
アセンブラ
ベーシック
C
か
0911デフォルトの名無しさん2006/12/03(日) 13:25:55
Assembler
BrainFuck
C
です
0912デフォルトの名無しさん2006/12/03(日) 13:29:14
>909
data[n]
09137222006/12/03(日) 14:30:24
二分(探査)木のわかりやすい参考サイトを教えてくだしあ><
0914デフォルトの名無しさん2006/12/03(日) 14:37:05
ここがおすすめ
ttp://www.google.co.jp/search?q=%93%F1%95%AA%92T%8D%F5%96%D8
0915デフォルトの名無しさん2006/12/03(日) 16:43:11
[1] 授業単元: C言語基礎
[2] 問題文(含コード&リンク):
fscanf
printf
exit
atoi
fopen
pow
の関数の(戻り値の)型・引数の型・有限であればその個数・必要な
ヘッダファイル・リンク時に必要なオプションを調べよ。


manコマンドを用いて
man 3 fscanfとしたのですが、英語が解らず無理でした。
テンプレの【C 関数検索 man on WWW】でも検索してみたのですが、
完全に載ってませんでした。
これらが完全に載っているサイトがあれば教えて頂けると助かります。
よろしくお願いします。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 火曜日の朝9時00分まで
[5] その他の制限:
0916 ◆s2cIPM3PTs 2006/12/03(日) 16:48:36
>>909
ありがとうございました(^^)。
参考にさせていただきます。


0917デフォルトの名無しさん2006/12/03(日) 16:52:44
>>915
http://www.linux.or.jp/JM/
0918デフォルトの名無しさん2006/12/03(日) 17:34:38
[1]授業単元:スタックの操作
[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3077.txt
[3]環境
 [3-1]OS:Windows XP
 [3-2]コンパイラ名とバージョン:Visual Studio.NET2003
 [3-3]言語:C
[4]期限:12月7日
0919デフォルトの名無しさん2006/12/03(日) 17:46:27
[1] 画像処理
[2] ブレゼンハムのアルゴリズムを用いて、ウインドウ内に線分を描画するプログラムを作成しなさい。
  仕様(マウスの左ボタンだけで操作する。候補線を表示する。)
  マウスの左ボタンクリック    線分の始点座標の指定、及び線分の描画開始
  マウスの移動     始点から線分を絶えず候補として描画。(古い線分は消す)
  マウスの左ボタンクリック   線分の終点座標の確定。線分を描画。

ただし、ライブラリの点を描画するAPI関数を使って線分を引くこと。直線を引くAPI関数を使ってはならない。
ウインドウのクリア機能や,線に色をつける機能などをつけると,高得点になる。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ: VC++ 6.0
 [3.3] 言語: C++
[4] 期限: 06年12月06日(水)提出
[5] その他の制限: 特になし

よろしくお願いします。
0920#2006/12/03(日) 17:49:09
[1] 授業単元:プログラミング入門
[2] 問題文
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3078.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C
[4] 期限: 12月5日
[5] その他の制限: 配列を利用しない
          関数を利用しない

問題がたまっています・・・(汗)。
助けてください。
0921デフォルトの名無しさん2006/12/03(日) 17:56:42
>>920
main関数とかprintf関数とか利用できないのは厳しすぎるなぁ。
0922#2006/12/03(日) 18:04:52
>>921
定義関数以外という意味です。
main関数、printf関数は使えます。
説明不足ですいません。
0923デフォルトの名無しさん2006/12/03(日) 18:19:38
>>922
めんどいんでとりあえず4だけ
#include<stdio.h>
int main(){
    int n,m;
    int odd=0,even=0,odd_n=0,even_n=0,i;
    printf("n = ");scanf("%d",&n);
    for(i=0;i<n;++i){
        scanf("%d",&m);
        if(m%2 != 0)
            odd += m,++odd_n;
        else
            even+= m,++even_n;
    }
    printf("総和 = %d\n平均 = %f\n",odd+even,1.*(odd+even) / n);
    printf("奇数\n");
    printf("\t個数 = %d\n",odd_n);
    if(odd_n == 0)printf("\t個数が0なので平均を求められません\n");
    else printf("\t平均 = %f\n",1.*odd / odd_n);
    printf("偶数\n");
    printf("\t個数 = %d\n",even_n);
    if(even_n == 0)printf("\t個数が0なので平均を求められません\n");
    else printf("\t平均 = %f\n",1.*even / even_n);
}
0924デフォルトの名無しさん2006/12/03(日) 18:23:24
>>920
/* 1 */
#include<stdio.h>

int    main(void){
  int    n;

  printf("Input positive number:");
  scanf("%d", &n);
  printf("Sum of even number(s): %d\n", (n/2)*(n/2+1));
  printf("Sum of odd number(s): %d\n", ((n+1)/2)*((n+1)/2));

  return 0;
}
/* 2 */
#include<stdio.h>
#include<stdlib.h>

int    main(void){
  int    m, n;

  printf("Input two positive numbers:");
  scanf("%d %d", &m, &n);
  if(m==n)  n++;
  printf("Sum of number(s): %d\n", (m+n)*(abs(m-n)-1)/2);

  return 0;
}
0925デフォルトの名無しさん2006/12/03(日) 18:29:01
いい加減C/C++にも"Hello World!"を出力する関数を標準装備させたほうがいいと思う
0926デフォルトの名無しさん2006/12/03(日) 18:30:17
>>925
必要なの?
0927デフォルトの名無しさん2006/12/03(日) 18:39:17
1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク):
以下の関数を実装するプログラムを作成せよ。
・標準入力から読み込んだ数字の最頻値を出力する関数
・読み込んだ数字に対する度数分布表を作成・出力する関数
<表>
階級 | 度数 | 度数を*の数で表示| 度数が出現する確率
0-10
10-20
20-30
30-40
40-50
50-60
60-70
70-80
80-90
90-100

[3] 環境
 [3.1] OS: Unix
 [3.2]gcc
 [3.3] 言語: C
[4] 期限: 12/4 18:00

0928デフォルトの名無しさん2006/12/03(日) 18:40:05
よろしくお願いいたします。
0929デフォルトの名無しさん2006/12/03(日) 18:42:21
>>927
10が入力されたら
0-10 と 10-20 の両方の度数が増えるのか?
0930#2006/12/03(日) 18:52:53
>>923
>>924
すぐに答えていただきありがとうございました。
とても助かります。
0931デフォルトの名無しさん2006/12/03(日) 19:00:34
>>927
#include<stdio.h>

int    main(void){
  int    count[101]={};
  int    part_total, total=0;
  int    value;
  int    i, j;

  while(fscanf(stdin, "%d", &value)==1){
    if(value>=0 && value<=100)
      count[value]++;
    total++;
  }
  for(i=0;i<=90;i+=10){
    part_total=0;
    for(j=0;j<=10;j++)
      part_total+=count[i+j];
    printf("%3d-%-3d %2d ", i, i+10, part_total);
    for(j=0;j<part_total;j++)
      printf("*");
    printf(" %f\n", (double)part_total/total);
  }
  return 0;
}
0932デフォルトの名無しさん2006/12/03(日) 19:18:51
>>718 vol1
#include <stdio.h>
#define STK_MAX (1024)
int stk[3][STK_MAX];
int sp[3] = { -1, -1, -1 };
int count = 0;
void push( int si, int val ) {
if( sp[si] >= STK_MAX ) return;
sp[si]++;
stk[si][sp[si]] = val;
}
int pop( int si ) {
if( sp[si] < 0 ) return -1;
sp[si]--;
return stk[si][sp[si]+1];
}
void show( void ) {
int i, j;
for( i = 0; i < 3; i++ ) {
printf( "%d: ", i + 1 );
for( j = sp[i]; j >= 0; j-- )
printf( "%d, ", stk[i][j] );
printf( "\n" );
}
printf( "\n" ); count++;
}
0933デフォルトの名無しさん2006/12/03(日) 19:20:18
>>718 じゃなくて >>918 だった Vol2
void move( int n, int src, int dst, int wrk ) {
int tmp;
if( n > 1 )
move( n - 1, src, wrk, dst );
tmp = pop( src );
push( dst, tmp );
show();
if( n > 1 )
move( n - 1, wrk, dst, src );
}
int main( void ) {
int i, max = 7;
for( i = max; i >= 1; i-- )
push( 0, i );
show();
move( max, 0, 1, 2 );
printf( "Total %d move\n", count - 1 );
return 0;
}
max は5だっけ?
09349312006/12/03(日) 19:57:10
>>927 問題よく読んでなかったスマソ
#include<stdio.h>
void  saihin(int count[], int count_num){
  int    i, maximum_count=0, maximum_index=0;
  for(i=0;i<count_num;i++){
    if(count[i]>maximum_count){
      maximum_count=count[i];
      maximum_index=i;
    }
  }
  printf("%d\n", maximum_index);
}
void  hyou(int count[], int total){
  int    i, j, part_total;
  for(i=0;i<=90;i+=10){
    part_total=0;
    for(j=0;j<=10;j++)  part_total+=count[i+j];
    printf("%3d-%-3d %2d ", i, i+10, part_total);
    for(j=0;j<part_total;j++)  printf("*");
    printf(" %f\n", (double)part_total/total);
  }
}
int    main(void){
  int    count[101]={}, value, total=0;
  while(fscanf(stdin, "%d", &value)==1){
    if(value>=0 && value<=100)  count[value]++;
    total++;
  }
  saihin(count, 101);
  hyou(count, total);
  return 0;
}
0935デフォルトの名無しさん2006/12/03(日) 20:12:30
>>925
そんなわけのわからない関数はHQ9+以外ではいらんだろ。
09369152006/12/03(日) 21:02:30
>>917
レスありがとうございます。
そこのman on WWWでも検索したのですが、
もちろん、それぞれの関数自体はあるんですけど、
宿題で必要な内容がほとんど載ってないんですよ。
0937デフォルトの名無しさん2006/12/03(日) 21:08:46
>>936
宿題で必要な内容は >>917 にすべて載ってるっしょ?
0938デフォルトの名無しさん2006/12/03(日) 21:36:48
>>936
> 宿題で必要な内容がほとんど載ってないんですよ。 
じゃあほとんど分かったてことだな
後はイモヅル式にググれカス
0939デフォルトの名無しさん2006/12/03(日) 22:08:22
a[500][600]程度の領域を確保したいのでデフォルトのスタックサイズを変更したいと思ったんですが
ttp://202.33.253.145/qanda/cbuilder/c0009366.html
このページ見つけたところまでで詰まってしまいました…。
具体的には何をどうすればいいのでしょうか…。
0940デフォルトの名無しさん2006/12/03(日) 22:10:03
>>939
変数宣言する個所の先頭に static と書いてみるといいんじゃないかな
0941デフォルトの名無しさん2006/12/03(日) 22:11:00
>>939
そのページのとうりにやればいいだろ…
0942デフォルトの名無しさん2006/12/03(日) 22:17:32
ヘボくてごめん、無償版を使っているのだけれど
>メニューの [ プロジェクト | プロジェクトオプション | リンカ | 予約スタックサイズ ]
といわれても、borland/bcc55/フォルダのどこをどう弄ればいいのか分からないんだ…。
0943デフォルトの名無しさん2006/12/03(日) 22:34:35
Borland C++Compiler 5.5使ってるのに、Borland C++Builderのページ見ても解決するわけがないだろう。

bcc32 -lS:スタックサイズ(16進数) hoge.c
0944デフォルトの名無しさん2006/12/03(日) 22:35:49
>>942
bcb5tool.hlp で ilink32 の /S オプションの項をみるといいよ
09456742006/12/03(日) 22:49:24
それ名城大学だ
うちの大学、2chやWikiで片付けてる奴かなり多いんよ
0946デフォルトの名無しさん2006/12/03(日) 22:51:09
げ、アンカー入れるつもりが名前欄に・・・674、スマン
0947デフォルトの名無しさん2006/12/03(日) 22:53:55
>>922
>>923で3もカバーしてるけど一応。
#include <stdio.h>
int main(void)
{
  int num, odd = 0, even = 0, sum = 0, limit, i;
  
  printf("入力する個数:");
  scanf("%d", &limit);

  for(i = 1; i <= limit; i++)
  {
    printf("%d個目:", i);
    scanf("%d", &num);
    sum += num;
    if(num % 2 == 0)
      even++;
    if(num % 2 != 0)
      odd++;
  }

  printf("総和:%d\n平均:%d\n", sum, sum / (even + odd));
  printf("偶数:%d\n奇数:%d\n", even, odd);

  return 0;
}
0948デフォルトの名無しさん2006/12/03(日) 23:09:16
>>943-944
なるほどー!
実行するときに
% bcc32 -lS:0x00200000 hoge.c
とかすると設定を弄ってコンパイル出来るのか!

あと使ってるエディタソフトに「コンパイルオプションの設定」とあって
テキストスペースがあったのが意味が分からなかったけれど、この
「-lS:0x00200000」の部分を指していた訳ですね。
助かりました。サンクスコ
0949デフォルトの名無しさん2006/12/03(日) 23:12:54
>>936
man の読み方が分ってないんじゃないか?

例えば pow を調べるとする。
man on WWW で引いたページの『書式』の項には
------------------------------
#include <math.h>
        (4)

double pow(double x, double y)
 (1)      (2)    (3)
(途中略)
-lm でリンクする。
(5)
----------------------------
とある。(括弧つき数字は説明のために私が書いた物で、マニュアル中にはない。)

(1)が関数の戻り値の型
(2)、(3)それぞれが引数の型を示し、2個書いてあるので個数=2になる
(4) が必要なヘッダファイル
(5)がリンク時に必要なオプション

と、あなたの要求した項目は全て載ってるわけだが。
0950デフォルトの名無しさん2006/12/03(日) 23:20:31
質問しようとしたら、全く同じ質問があってびびったw
しかし、そのまま提出したら、ほぼ確実にばれちまいそうですな。

参考にさせていただきます。
09519502006/12/03(日) 23:24:25
次スレ立てるのは950ですか?
もしそうなら、自分は立てられないので代わりにどなたかお願いします。
0952デフォルトの名無しさん2006/12/03(日) 23:26:18
>>950
質問する前にスレを読み返した君はエライ
09539362006/12/03(日) 23:26:41
>>949
あ、そういうことだったのですか…。完全に見方が解ってませんでした。
「関数の戻り値は○○です。」と書いてあるのかと思ってました。
どうもありがとうございました。
0954デフォルトの名無しさん2006/12/03(日) 23:26:53
んなもん適当で
0955デフォルトの名無しさん2006/12/03(日) 23:38:06
[1] 授業単元:プログラミング
[2] 問題文:四則演算を作成しなさい
[3] 環境
 [3.1] OS:WindowsXP
 [3.3] 言語:C++/
[4] 期限:明日
[5] 最近c++を習い始めました。1.2-1.1の答えが0.1ではなく0.09999になります。
このド素人にアドバイスお願いします。
0956デフォルトの名無しさん2006/12/03(日) 23:41:44
>>955
浮動少数点での計算は十中八九誤差が出ます
それだけ
0957デフォルトの名無しさん2006/12/03(日) 23:42:04
>>955
よくあること気にしない
0958デフォルトの名無しさん2006/12/03(日) 23:42:28
>>955
仕様です。
0959デフォルトの名無しさん2006/12/04(月) 00:00:19
>>955
printf("%.1f",hoge);
0960デフォルトの名無しさん2006/12/04(月) 00:07:44
[1] 授業単元:アーキテクチャー
[2] 問題文: C言語の配列とポインターを使って、文字列をひとつ入れて
それぞれの文字が入っているアドレスを出力しなさい。
また、整数データの列を定義してそれぞれの整数が入っている
アドレスを出力しなさい 。
[3] 環境
 [3.1] OS:WindowsXP
 [3.3] 言語: C
[4] 期限: 12月4日10時半
0961デフォルトの名無しさん2006/12/04(月) 00:15:02
次スレ立て人へ

現在過去スレ一覧で使ってるにくちゃんねるが、過負荷のため
12月31日で公開停止するそうです。

「にくちゃんねる」終了のお知らせ
ttp://makimo.to/close.html
0962デフォルトの名無しさん2006/12/04(月) 00:49:02
>>960 なんでポインタ使わんといかんのかいみわからん

#include <stdio.h>
#include <string.h>

int main()
{
  int i;
  int *phoge,hoge[] = {1,1,2,3,5,8,13,21};
  char *pfuga,fuga[] = "mojiretu";
  
  phoge = hoge;
  for(i = 0;i < strlen(fuga);i++){
    printf("&fuga[%d] = %p\n",i,(phoge+i));
  }
  
  printf("\n");
  
  pfuga = fuga;
  for(i = 0;i < sizeof(hoge)/sizeof(int);i++){
    printf("&hoge[%d] = %p\n",i,(pfuga+i));
  }
  
  return 0;
}
0963#2006/12/04(月) 01:38:04
[1] 授業単元:プログラミング入門
[2] 問題文
 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3080.txt
 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3081.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C
[4] 期限: 12月5日
[5] その他の制限:
・問題1,2 関数、配列は使わない
 (main関数、printf関数など、定義関数は使える)
・問題3,4 特になし

>>947
ありがとうございました(^^。

親切な方ばかりで本当に助かっています。
宜しくお願いします。
0964#2006/12/04(月) 01:42:01
問題の番号間違えました(−−;)。
関数の方が4,5になっています。
すいません(汗)。
0965デフォルトの名無しさん2006/12/04(月) 01:54:35
誰か「C/C++の宿題は流石兄弟におまかせ 27代目」のdatを持ってないか?
持ってたら欲しいんだが。にくちゃんねるにも見当たらない。
0966デフォルトの名無しさん2006/12/04(月) 02:07:10
にくちゃんねるにあるじゃん
0967デフォルトの名無しさん2006/12/04(月) 02:16:39
>>966
途中で切れてるっぽい
0968デフォルトの名無しさん2006/12/04(月) 02:20:05
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
キーボードから入力した文章を単語単位で切り出し
総単語数と各単語の文字数を表示せよ。単語の区切りは半角スペース。
単語数の上限は50、一単語の最大文字数は30と仮定
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語:C
[4] 期限:12月5日まで
[5] その他の制限:文字入力にはgets関数を使用。ポインタだけでかければ
更に可

お願いします。半角スペースがわかりません。。
0969デフォルトの名無しさん2006/12/04(月) 02:29:10
' ' ←半角!
0970デフォルトの名無しさん2006/12/04(月) 02:33:06
>>969
それでエラー出たんです。。。
ってか難しくて無理ぽ。。。
0971デフォルトの名無しさん2006/12/04(月) 02:36:51
半角スペースとは0x20のことだ
0972デフォルトの名無しさん2006/12/04(月) 02:56:43
>>919
候補表示中にポインタがウィンドウ外に行ったとき、
ウィンドウ外をクリックされたときの挙動はどうしたらいい?
0973デフォルトの名無しさん2006/12/04(月) 03:03:59
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3084.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Borland(bcc32)
 [3.3] 言語: C
[4] 期限:木曜日
[5] その他の制限:ありません、よろしくお願いします
0974デフォルトの名無しさん2006/12/04(月) 03:27:27
>>968
ttp://gamdev.org/up/img/8294.phps
0975デフォルトの名無しさん2006/12/04(月) 04:13:56
>>963
逆順ってなんだ?
ヒストグラムのやつはデータに制限無いのか?
0976デフォルトの名無しさん2006/12/04(月) 04:19:17
>963
逆順ってこれでいいか?
2.
#include <stdio.h>
int main(void)
{
int i, n, m;
scanf("%d", &m);
i = m;
n = 0;
while(i) {
n = n * 10 + i % 10;
i /= 10;
}
printf("%d\n", n);
if(m>n) printf("mがnより大きい\n");
else if(m<n) printf("nがmより大きい\n");
else printf("nとmは等しい\n");
return 0;
}
0977デフォルトの名無しさん2006/12/04(月) 04:22:09
>963
0の桁を指定してないからこれだと0にしてある。
3.
int keta(int n)
{
int i;

if(n>=0) {
for(i=0; n; i++, n/=10);
return i;
}
else {
n = -n;
for(i=0; n; i++, n/=10);
return i + 1;
}
}
0978デフォルトの名無しさん2006/12/04(月) 06:09:08
1 2 3 4 5 6 7 8 9
-------------------------------------------------
1 | 1 2 3 4 5 6 7 8 9
2 | 2 4 6 8 10 12 14 16 18
3 | 3 6 9 12 15 18 21 24 27
4 | 4 8 12 16 20 24 28 32 36
5 | 5 10 15 20 25 30 35 40 45
6 | 6 12 18 24 30 36 42 48 54
7 | 7 14 21 28 35 42 49 56 63
8 | 8 16 24 32 40 48 56 64 72
9 | 9 18 27 36 45 54 63 72 81

をつくるプログラムをCでお願いします
0979デフォルトの名無しさん2006/12/04(月) 06:31:53
>>978
こういう質問をすると、たいがい掛け算九九の計算手順をとらずに
数字をそのまま並べて表示するプログラムを書く人が出てくる、間違いないw
0980デフォルトの名無しさん2006/12/04(月) 06:55:04
”つくる”が難しいな
0981デフォルトの名無しさん2006/12/04(月) 07:05:05
”表示する”なら簡単だなんだけどね
0982デフォルトの名無しさん2006/12/04(月) 07:06:03
>>978
>>979
ではご期待に応えて

#include <stdio.h>

int main()
{
printf("1 2 3 4 5 6 7 8 9\n"
"-------------------------------------------------\n"
"1 | 1 2 3 4 5 6 7 8 9\n"
"2 | 2 4 6 8 10 12 14 16 18\n"
"3 | 3 6 9 12 15 18 21 24 27\n"
"4 | 4 8 12 16 20 24 28 32 36\n"
"5 | 5 10 15 20 25 30 35 40 45\n"
"6 | 6 12 18 24 30 36 42 48 54\n"
"7 | 7 14 21 28 35 42 49 56 63\n"
"8 | 8 16 24 32 40 48 56 64 72\n"
"9 | 9 18 27 36 45 54 63 72 81\n");
return 0;
}
0983デフォルトの名無しさん2006/12/04(月) 07:08:01
>>978
#include<stdio.h>
void main(){
for (int i=0;i<3;i++) printf(" ");
for (i=1;i<10;) printf(" %d",i++);
printf("\n");
for (i=0;i<30;i++) printf("-");
int j,y;
for(i=1;i<10;i++){
printf("\n%d | ",i);
y=0;
for(j=1;j<10;j++){
y+=i;
if(y<10) printf(" ");
printf("%d ",y);
}
}
printf("\n");
}
09849832006/12/04(月) 07:11:07
訂正
#include<stdio.h>
void main(){
for (int i=-2;i<1;i++) printf(" ");
while(i<10) printf(" %d",i++);
printf("\n");
for (i=0;i<30;i++) printf("-");
int j,y;
for(i=1;i<10;i++){
printf("\n%d | ",i);
y=0;
for(j=1;j<10;j++){
y+=i;
if(y<10) printf(" ");
printf("%d ",y);
}
}
printf("\n");
}
09859832006/12/04(月) 07:17:38
再訂正
#include<stdio.h>
void main(){
for (int i=-2;i<1;i++) printf(" ");
while(i<10) printf(" %d",i++);
printf("\n");
for (;i<40;i++) printf("-");
int j,y;
for(i=1;i<10;i++){
printf("\n%d | ",i);
y=0;
for(j=1;j<10;j++){
y+=i;
if(y<10) printf(" ");
printf("%d ",y);
}
}
printf("\n");
}
0986!9832006/12/04(月) 07:38:46
訂正
#include<stdio.h>
void main()
{
int i,j,y;
printf(" |");
for(i=1;i<=9;i++)
printf(" %2d",i);
printf("\n--+");
for (i=0;i<28;i++)
printf("-");
for(i=1;i<=9;i++){
printf("\n%d |",i);
y=0;
for(j=1;j<=9;j++){
y+=i;
printf(" %2d",y);
}
}
printf("\n");
}
0987デフォルトの名無しさん2006/12/04(月) 08:12:05
[1] 授業単元:プログラミング
[2] 問題文:次のようなプログラムを作れ。
1. 数値を順番に読み込んで二次元の配列に格納する。
2. その配列を画面に出力する。
3. 次に、2つの整数を読み込む。
4. 二次元配列のうち、読み込んだ整数に対応する二つの行の内容を交換する。
5. 配列を画面に出力する。
配列の読み込み、交換、出力はそれぞれ関数にすること。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:2006年12月5日17:00
[5] その他の制限:授業では配列までやりましたが、特に制限はないです。

自分では期限内にできそうにないのでよろしくお願いします。
0988デフォルトの名無しさん2006/12/04(月) 08:23:21
>987
二次元配列のサイズは?
0989デフォルトの名無しさん2006/12/04(月) 08:35:05
数値を順番に読み込むって
何から読み込むのか書いてないのは
なんだかなー

問題文に書いてあるとおりなんだろうからどうしようもないのかもしれんが
0990デフォルトの名無しさん2006/12/04(月) 08:53:03
誰か次スレ立てて。29chは2chにリンクするようにした

あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 77代目
http://pc8.2ch.net/test/read.cgi/tech/1164079451/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=0&H=&view=table&link2ch=on&shw=2000&D=tech
0991デフォルトの名無しさん2006/12/04(月) 08:59:29
>990
立てたよ
C/C++の宿題を片付けます 78代目
http://pc8.2ch.net/test/read.cgi/tech/1165190320/
09929872006/12/04(月) 09:01:13
二次元配列のサイズに規定はありません

あと、読み込む数値は全てキーボードからの入力です
0993デフォルトの名無しさん2006/12/04(月) 09:15:25
x + y = 1, x, y >= 0の条件の下で(2x + y)^2 + (x - y)^2 + (x + 2y)^2の最小値を求める
という問題の変数を増やした場合

x(1) + ・・・+ x(n) = 1, x(i) >= 0の条件の下でΣ{i=1,m} (Σ{j=1,n} a(i,j) * x(j))^2の最小値

はどのように解いたらいいのかわかりますか?いいサイトあったら教えてください
パソコン、プログラム使って解ける方法教えてください

0994デフォルトの名無しさん2006/12/04(月) 09:25:18
[1]プログラム演習
[2]
一定の文字からなる列sを読み込み、以下の条件を満たす同じ個数の文字からなる列tを出力するプログラムを作りなさい。
ただし、以下での単語とは空白以外の文字からなる列のこととする。
1,s中の単語は同じ順番で t に現われる
2,t中では単語は一つの空白に区切られる
3,t中に最初の単語の最初の文字から最後の単語の文字までは列全体のちゅうおうに位置し、前後は空白である
例えば文字の列
_This___is__a____good___program___
を入力すると
______This_is_a_good_program______
が出力される。ここで、_は空白を表すものとする。
[3]C言語
[4]12/7
[5]for,while,if文 ポインター 文字列 1,2次配列 関数の書き方


0995デフォルトの名無しさん2006/12/04(月) 09:38:35
>>993
二次計画問題。

数理計画とか凸計画とか線型計画とかの本で「二次計画」
という言葉を探すといいと思うよ。

アルゴリズムとしては、線型計画に帰着するのと、
凸計画として降下法系のを使うのの二つがあるが、後者のほうが実装は楽。
0996デフォルトの名無しさん2006/12/04(月) 09:46:13
>>995
ありがとうございます
変数が2次なんですけど出来ますか?
0よりは小さくならず、無限には大きくならないので最小値は必ず一つあるはずなんですが
0997デフォルトの名無しさん2006/12/04(月) 09:52:56
>>996
本を読んでみたら?
0998デフォルトの名無しさん2006/12/04(月) 09:57:14
>>997
しかも最小値を与えるx(i)を決定したいんですが...出来ますか?
本が手に入らないんですが...いいサイトないですか?検索してみますけど
0999デフォルトの名無しさん2006/12/04(月) 10:05:03
>>998
図書館池。スレ違い。
1000デフォルトの名無しさん2006/12/04(月) 10:07:41
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。