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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けない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
2デフォルトの名無しさん:2006/11/21(火) 12:29:12
ありがd
3デフォルトの名無しさん: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()ライブラリ関数を使ったのですが、ライブラリ関数は使わず&簡単なプログラムでお願いします。
4デフォルトの名無しさん:2006/11/21(火) 13:58:25
>>3
エラ姫の櫛は使った方がいいの?
5デフォルトの名無しさん:2006/11/21(火) 13:59:52
>>3
・1は素数じゃない。
・自分で作ったプログラムを晒せ。sqrt()を使わないようにするだけならごく簡単な修正で済むはずだ。
6デフォルトの名無しさん:2006/11/21(火) 14:00:23
>>3
1って素数なの?
7デフォルトの名無しさん:2006/11/21(火) 14:01:00
できるだけ早くっていつまでだよ
8デフォルトの名無しさん:2006/11/21(火) 14:03:22
>>3
出力はインラインアセンブラか・・・欝だ・・・
93:2006/11/21(火) 14:11:25
あ、すみません。1は素数ではないですね>_<”
期限はだいたいなんですけど、きょう辺りにできれば・・・と思います。
10デフォルトの名無しさん: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のコピペだ
11デフォルトの名無しさん: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を完成させたものですが、セグメンテーション違反になります。
どうすればいいでしょうか?
12デフォルトの名無しさん:2006/11/21(火) 14:52:30 BE:46584083-2BP(200)
13デフォルトの名無しさん:2006/11/21(火) 14:59:20
>>11
スレ違い。
・scanf()の引き数間違い
・2番目のmalloc()の引き数間違い
14デフォルトの名無しさん:2006/11/21(火) 15:02:08
>>11
scanf("%d\n",a); <- ここがあやしい
15デフォルトの名無しさん: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;
}
16デフォルトの名無しさん:2006/11/21(火) 15:41:47 BE:52408139-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;}
17デフォルトの名無しさん: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] 期限: 本日中にできればありがたいです。。。

よろしくお願いします。
18デフォルトの名無しさん:2006/11/21(火) 15:54:47
19デフォルトの名無しさん: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);}}
20デフォルトの名無しさん:2006/11/21(火) 16:31:50
nの近似値求めるんだから
printf("12");でいいじゃん
21デフォルトの名無しさん:2006/11/21(火) 17:45:04
>>11
nを入力するのに、なんでnじゃなくてaに入れるんだ。
22デフォルトの名無しさん:2006/11/21(火) 18:05:23
>>11
0で埋めてるつもりなんだろうがループカウンタをiにしてるせいで
未初期化のjを配列の添字にしてしまってる予感
23デフォルトの名無しさん: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;
}
24デフォルトの名無しさん:2006/11/21(火) 19:42:55
>>16やっぱりそうきたよねぜったいそうくるとおもった
25前スレ590:2006/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');}}
26デフォルトの名無しさん:2006/11/21(火) 19:45:03
スルーしておいてやれ。
27デフォルトの名無しさん:2006/11/21(火) 19:46:03
おっと>>26>>24にな。
28デフォルトの名無しさん: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] その他の制限: とくになし
29デフォルトの名無しさん: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つあります。

30デフォルトの名無しさん:2006/11/21(火) 19:51:59
[3] 環境
 [3.1] OS:unix
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 2006年11月22日15時まで
[5] その他の制限: 関数を習い始めたばかりなのでできるだけ簡単なもの
にしていただけると嬉しいです。
31デフォルトの名無しさん: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;
}
32デフォルトの名無しさん:2006/11/21(火) 21:25:25
>>31
ありがとう御座います。
まさか、こんなに早く答えていただけるとは思いませんでした。
33デフォルトの名無しさん: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] 期限:明日
34 ◆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回くらいに分けて書き込みます。
35 ◆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;
36デフォルトの名無しさん: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++使ってるから許してくれ
37 ◆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();
}
38デフォルトの名無しさん:2006/11/21(火) 21:50:32
>>34
>>1のアップローダー使ってくれると見やすくていいんだけど
39 ◆pajhDGf5eg :2006/11/21(火) 21:55:45
>>38
わかりました。
今やってみます。
40デフォルトの名無しさん: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] その他の制限:
41デフォルトの名無しさん:2006/11/21(火) 22:11:49
>>34
>個性あふれるものをお願いします。

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

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi
46デフォルトの名無しさん:2006/11/21(火) 22:27:08
>>45
Circle()が途中で切れてるぜ?というかファイルがあるならそれうpれってことだと思うんだ
47デフォルトの名無しさん:2006/11/21(火) 22:27:38
>>45
それはひょっとしてギャグでやっているのか
48デフォルトの名無しさん:2006/11/21(火) 22:27:56
>>36
すみませんC++でやってもらえるとありがたいです
49デフォルトの名無しさん: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++に直しただけだけど。
50 ◆pajhDGf5eg :2006/11/21(火) 22:43:54
>>46
ファイルは学校のPCに保管してあるので、今は手元にないんです。
先生が配布したプログラムはCircle()は途中で終わっているので、
何とも・・・OTL

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


>>47
ここの板初心者なもんで、色々とわからない点がありまして・・・
51デフォルトの名無しさん:2006/11/21(火) 22:45:56
最近のエスパー能力は失われたプログラムを復元するものが要求されるのか
52デフォルトの名無しさん:2006/11/21(火) 22:55:41
>>49
ありがとうございました。
53 ◆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」です。
迷惑かけてしまいスミマセン・・・

54デフォルトの名無しさん: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] 多重ループまでやりました。

55デフォルトの名無しさん:2006/11/21(火) 23:54:23
>迷惑かけてしまいスミマセン・・・
そう思うのなら最初から自力でやれよ。
56デフォルトの名無しさん:2006/11/21(火) 23:58:36
いちいち文句を付ける奴は何なんだ?
ここに依頼してくる奴に教育でも施してる積もりか?
57デフォルトの名無しさん: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時
58デフォルトの名無しさん:2006/11/22(水) 00:02:51
>>56
最近依頼の量>>解答の量になってるからなあ
基本的な宿題をここに解かせた奴はその後の宿題全部ここに解かせて
ますます依頼の量を増やすだけだろ
59デフォルトの名無しさん: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;
}
6059:2006/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){
61デフォルトの名無しさん:2006/11/22(水) 00:29:02
>>58
なんでそれが依頼者に文句をいうことの理由になるのか分からない。
それに、そもそも回答が追い付かなかったところで、困るのは依頼者であって
回答者じゃないだろ。回答者は好きなときに好きなだけ答えれば良いんだから。


本当のところをいうと、確かに俺も今のこのスレは余裕がなさすぎて、
事務的過ぎて、つまらないと思うが、それに対して何かできるわけでもない。
6259:2006/11/22(水) 00:30:54
よく考えたらループは2重でいいじゃないか。
それは自分でなんとかしてくれ。
63デフォルトの名無しさん:2006/11/22(水) 00:35:04
まぁ自力でやるやらないはおいといて、
お願いします ありがとうございましたくらいは欲しいよな
回答が本当にそれでよかったのか気になるし。
64デフォルトの名無しさん:2006/11/22(水) 00:38:53
>>63
ここに来るな
65デフォルトの名無しさん:2006/11/22(水) 00:39:00
だから過去の宿題検索(ry
66デフォルトの名無しさん: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;
}
67デフォルトの名無しさん:2006/11/22(水) 01:16:15
>>65
作ってもいいが依頼者は絶対使わないし無意味だと思う
68デフォルトの名無しさん:2006/11/22(水) 01:23:22
>67
是非作ってくれ。期待してる。
69デフォルトの名無しさん:2006/11/22(水) 01:23:38
>>67
ウィキでキーワード検索できたら重宝するけどなー
77スレも消費してたら似たような宿題が頻出してるだろうに・・
それとも質問者にも回答者にも丸投げの美学みたいなものがあるのかな
7059:2006/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
なんのためにこのスレにいるの?
71デフォルトの名無しさん:2006/11/22(水) 01:24:38
>>61
どうせ助けるんなら丸投げするような奴よりは
自分なりに考えたけど分からなかったという奴を助けたい
72デフォルトの名無しさん:2006/11/22(水) 01:32:02
丸投げとか過去スレとか返事/礼なんて、それこそ過去に何度も論議されてんだよ
スレの無駄だから過去ログ探せ糞ども
7359:2006/11/22(水) 01:33:27
バカなこと書いてたら修正し忘れた。
k → x/(i*i*j)
74デフォルトの名無しさん:2006/11/22(水) 01:36:43
>>72-73
何でそんなに必死なの?
75デフォルトの名無しさん:2006/11/22(水) 01:37:51
>>70
面白い問題を見つけて、解いて、コードを自慢するため。

>>71
もちろんそれはお前の勝手だが、やはり依頼者に文句をいう理由にはなっていないような。
76デフォルトの名無しさん:2006/11/22(水) 01:38:11
>>74
何でそんなに必死なの?
7757:2006/11/22(水) 02:07:03
>>66
解答ありがとうございました。
78デフォルトの名無しさん: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)は別々なので。プログラムを始めて半年超くらいなので,よろしくお願いします。(^^;
79デフォルトの名無しさん:2006/11/22(水) 10:18:23 BE:58230465-2BP(200)
>>71
そもそも宿題代行しても依頼者は助からない。
必要な能力が身に付かない上に、能力に応じた評価を得られないんだから。
ここで宿題に回答するのは丸投げ厨に対する最高の嫌がらせだ。
80デフォルトの名無しさん:2006/11/22(水) 10:37:00
>>79
ここで質問するような奴はプログラミング能力を必要としていないだろうし
課題さえ提出すれば評価は得られる
だいたい2chだから質問者回答者共に変に煽ったりする奴がいても不思議ではないし
そんなの気にしても意味ないと思う

一番言いたいことは
性帝が何を偉そうに!
ってことだ
81デフォルトの名無しさん: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] その他の制限:ポインタはここでは使用してはいけないそうです。
82デフォルトの名無しさん:2006/11/22(水) 11:12:21
>81
for(i=10;i>=0;i--) → for(;i>=0;i--)
-1が表示されてもいいならこれで
8381:2006/11/22(水) 11:16:59
そういうことでよかったんですか!
できれば-1だけを表示させたくないんですが。。。
それは可能でしょうか?
84デフォルトの名無しさん:2006/11/22(水) 11:18:14
81のだと最後まで入れるた時にarray[10]を呼んじゃうからダメだ。
for(i-=1;i>=0;i--)
に修正すれば-1も表示されなくなる
85デフォルトの名無しさん:2006/11/22(水) 11:19:01
81じゃなくて82ね
8681:2006/11/22(水) 11:21:08
本当ですね!
ありがとうございます♪
87デフォルトの名無しさん:2006/11/22(水) 11:24:38 BE:11646623-2BP(200)
>>80
能力に見合わない評価は何の役にも立たないどころか有害でしかない。
まあ学生さんには分からないかも知れんがね。
88デフォルトの名無しさん:2006/11/22(水) 11:45:19
> そう かんけいないね
 殺(ry
 ゆず(ry
89デフォルトの名無しさん: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)の値を求めよ。
90デフォルトの名無しさん: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桁
・自分の葉書番号は何度でも入力可にする
・上位の等が当たったら下位の等は当たらないようにする

以上です、宜しくお願いします
91デフォルトの名無しさん:2006/11/22(水) 12:48:09
同じ問題を見たような・・・ 何回貼ってもやってもらえるとは限らないぞ
92デフォルトの名無しさん:2006/11/22(水) 12:56:30
>>90
画像処理とお年玉年賀宝くじを組み合わせた課題か.....
93デフォルトの名無しさん: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] その他の制限: いままで講義で習ったのは、基礎、配列程度。

よろしくお願いします。
94デフォルトの名無しさん:2006/11/22(水) 19:06:35
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3018.txt
こーやってtxtへリンクを貼ると(見る側が)便利だよ
95デフォルトの名無しさん:2006/11/22(水) 20:02:32
4次方程式の数値解、そして解析解との比較。
96デフォルトの名無しさん:2006/11/22(水) 20:31:45
せんせー。数値解と解析解の意味がわかりませんー。
97デフォルトの名無しさん:2006/11/22(水) 20:40:53
あれ?俺言葉の使い方間違ってるかも??
9878:2006/11/23(木) 00:43:38
>>90は私の質問ではないので。
つか、90さん、ファイルの中身がどうあれ、私に断りもなくファイルのリンクを
貼るのは、いかがなもんでしょうか?
99デフォルトの名無しさん:2006/11/23(木) 00:45:19
>>98
ワロタ
10078:2006/11/23(木) 00:55:37
分かったらさっさと答えんかいボケナスども
101デフォルトの名無しさん:2006/11/23(木) 02:15:02
>>100
先生に断りもなくファイルをアップして公開のは、いかがなもんでしょうか?
分かったらさっさと削除せんかいボケナス!
102デフォルトの名無しさん: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] その他の制限:
103デフォルトの名無しさん: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;
}
}
104デフォルトの名無しさん:2006/11/23(木) 02:47:39
メモリの異常を検知って、何気に無茶なことを書いてるな。
105デフォルトの名無しさん:2006/11/23(木) 02:52:35
メモリが足りなくなったら、程度に読み替えておけばいいんじゃね?
vectorやstringは勝手に例外投げるし、敢えてtryブロックにする
必要もないかと。
106デフォルトの名無しさん:2006/11/23(木) 03:06:55
:-)
107デフォルトの名無しさん:2006/11/23(木) 03:24:20
>・メモリに異常が発生した場合は、検知し、確実に異常終了させる事。

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

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

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

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

やっぱり、>>78世代は>>118の "自分に都合の良いダブルスタンダード"を持つ世代
なのかも
124デフォルトの名無しさん:2006/11/23(木) 13:51:45
>>78
ができない、俺が言うことではないと思うが、
自由に発言することは結構だが、他人に迷惑かけんのはやめなよ。
125デフォルトの名無しさん:2006/11/23(木) 13:57:53
>>123
んな事言ったら、ココに質問に来るやつら、
全員、都合の良いやつらだぉ(^ω^)
126デフォルトの名無しさん:2006/11/23(木) 14:22:37
>>125
言葉遣いがどうあろうと、人の善意をタダで利用するという意味で募金詐欺と大差ない。
ただ、善意を利用するということが暗黙の了解であるだけマシというだけ。
質問者を貶しても心を痛める必要は全くない。
127デフォルトの名無しさん:2006/11/23(木) 14:26:15
>>125
でも丸投げするだけならダブルスタンダードではない。
社会で通用する考え方かどうかはともかく、自己矛盾はしてない。
128デフォルトの名無しさん:2006/11/23(木) 14:45:42
>>78が自分の写真を使ってるなら問題にならないけど、
そうじゃないなら勝手にアップロードしてバラまくのは問題じゃないかな?
それともフリーな写真素材かなんかを使ってるんだろうか
129デフォルトの名無しさん:2006/11/23(木) 14:47:18
>>126
不正は質問者と回答者の間で起きてるんじゃない、出題者と質問者の間で起きてるんだ!
130デフォルトの名無しさん:2006/11/23(木) 14:48:16
ぉぃおぃ、ダブルスタンダードとか、
他で、やってんくんない??君ら。
131デフォルトの名無しさん:2006/11/23(木) 14:50:12
ダブルスタンダードってこういうこと?
#include<stdio.h>
#include<stdlib.h>
132デフォルトの名無しさん:2006/11/23(木) 14:56:05
むしろこんな感じ?
#include <sys/socket.h>
#include <winsock2.h>
133デフォルトの名無しさん:2006/11/23(木) 15:06:59
>>78
bmpの若い娘はだれ? 78自身?
134デフォルトの名無しさん:2006/11/23(木) 15:17:23
>>130
78自演乙
135デフォルトの名無しさん: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;
}
136デフォルトの名無しさん:2006/11/23(木) 18:07:53
>>135
それじゃ文字単位で逆になるだけだろ。
各行を逆に表示しなきゃならない。今の所まともに動くのは>>103だけ
137デフォルトの名無しさん:2006/11/23(木) 18:40:13
> 各行を逆に表示
これが曖昧

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

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

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

とりあえず、先頭の54バイトをコピーした後、
(1)3バイトごとに処理。
(2)YUV変換をかます。
151デフォルトの名無しさん: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] その他の制限:
ヒントみても全然わからないです。よろしくお願いします!
152デフォルトの名無しさん:2006/11/23(木) 22:55:14
>>151
てめー期限が土曜なんてありえねー課題出してんじゃねー
ぶっ殺すぞ
絶対解いてやんねー
153デフォルトの名無しさん:2006/11/23(木) 23:13:23
>>78
クロマキーピクセルの(r,g,b)分布が(64,64,128)より青側にあるから
if ( R < 64 && G < 64 && B >= 128 ) {
で背景と人物のピクセルを切り替えればよい。
154151:2006/11/23(木) 23:16:24
>>152
本当に土曜なんだよ。
お前みたいな異端児には頼まないから他の方よろしくお願いします。
155デフォルトの名無しさん:2006/11/23(木) 23:27:55
2006年はいらないとしても11月25日って書けばいいだろうに・・・
出来れば時間も書いて欲しい。00:00でもいいけど。
156151:2006/11/23(木) 23:33:00
出来れば時間に余裕を持っておきたいので、なるべく今夜中に
お願いします。さっさとやらんかいボケどもめ
157デフォルトの名無しさん:2006/11/23(木) 23:35:27
>>154
ピーーーッ
>・・なんだよ とか お前みたいな異端児には頼まないから
他人の善意に期待してるんだから、こんなこと書くよる回答する気なくなるよ
 本当に土曜なんです、よろしくお願いします と書く!
世渡りうまくなれよ
158157:2006/11/23(木) 23:38:26
他人の善意に期待してるんだから、こんなこと書くよる回答する気なくなるよ
**訂正**
他人の善意に期待してるんだから、こんなこと書くと回答する気なくなるよ
159151:2006/11/23(木) 23:49:08
>>158
しがない俺にアドバイスをありがとうございます。
ねくらでひねくれてて友達もいなくて課題を誰にも相談することができなくて困ってるんです。
160デフォルトの名無しさん:2006/11/23(木) 23:49:15
ageで依頼する奴が、人を煽る際にsageで書くなんて現実性がない。
たぶん、質問者成りすまし。
まぁ俺は答える気が最初からないからどうでもいいけど
161デフォルトの名無しさん:2006/11/23(木) 23:50:18
だよな。俺が151って名前にすりゃ、それでわかんなくなっちゃうんだから大抵の暴言等は成りすまし。
162デフォルトの名無しさん:2006/11/23(木) 23:53:33
全部自演にしか見えないよ
163デフォルトの名無しさん:2006/11/23(木) 23:55:08
>>162は俺の自演ッス
すいませんッス
164デフォルトの名無しさん:2006/11/23(木) 23:57:32
まぁトリップをつけてない質問者が悪いんだけどな
165デフォルトの名無しさん:2006/11/24(金) 00:04:09
77代目スレは荒れてるな
166デフォルトの名無しさん:2006/11/24(金) 00:06:16
まさに荒らしの思う壺って所か
167デフォルトの名無しさん :2006/11/24(金) 00:12:16
荒れてるね
お願いしますの言葉より、解答ソースを書き込んだ後の
ありがとうございましたって言葉の方が俺は欲しいな。
168デフォルトの名無しさん:2006/11/24(金) 00:20:57
いい加減ループはやめようか
169デフォルトの名無しさん:2006/11/24(金) 00:22:16
ループなしで課題をやれとな!?
170デフォルトの名無しさん:2006/11/24(金) 00:23:05
全部アンロールとかそれはそれで地獄
171デフォルトの名無しさん:2006/11/24(金) 00:29:15
ループがなければ再帰をつかえばいいじゃない。
                                    マリーアントワネット
172デフォルトの名無しさん:2006/11/24(金) 00:31:49
何でそんなややこしいことせなあかんのや!
おんどりゃぶっとばすぞ!
173 ◆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が死んでて、直で載せると改行が多すぎになるので困ってます。。。
174デフォルトの名無しさん:2006/11/24(金) 00:49:26
>>173
>>1は死んでねえよバカ
175デフォルトの名無しさん:2006/11/24(金) 01:05:56
>>174
荒し君、頑張ってるね、乙!
176デフォルトの名無しさん :2006/11/24(金) 01:15:21
>>173
アップローダを使え
なにをどうゆう風にしたいのかいまいちわかんね
177デフォルトの名無しさん:2006/11/24(金) 01:18:35
>>171 ここの解答者はマリーアントワネットか。

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

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

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

まあエスパーにとっては序の口なんだろうが…
180デフォルトの名無しさん :2006/11/24(金) 02:07:31
>>718
問題がないので省略って部分もちゃんと書いて
こっちでコンパイルしようと思ってもできないからね
181デフォルトの名無しさん:2006/11/24(金) 02:08:37
>>178
添付ファイルにして欲しいな
182デフォルトの名無しさん:2006/11/24(金) 02:14:22
荒れてるなあ
183デフォルトの名無しさん: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の場合はループから抜ける */→?
184デフォルトの名無しさん:2006/11/24(金) 02:26:14
>>179
最大桁数256桁の数値20個ど思ふ
256桁には漏れも驚いたよ、long long intでも遠く及ばないし
尋常じゃない桁数なので、入力された文字列を数値変換しないで
文字列比較でソートしたほうが良いような気がするが

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

nNum の型と対応が取れているかどうかも確認したいので、全部晒せとしかいえない
186デフォルトの名無しさん:2006/11/24(金) 03:14:39
>>180
256桁なんかはよくある
例えばRSAなんか1024ビットだから10進数で300桁超だからな
187 ◆/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] 期限: 今週中
取りあえず作ってみたのですが、どうしても上手くいきません。
よろしくお願いします。
188デフォルトの名無しさん:2006/11/24(金) 04:20:32
stdafx.hって言われてもよう
189デフォルトの名無しさん:2006/11/24(金) 04:23:48
血液型がRHだと珍しい人扱いってのも分からん話だな
教官はアホなのだろうか
190デフォルトの名無しさん:2006/11/24(金) 04:26:49
そもそも血液型で括るのがおかしい
191デフォルトの名無しさん:2006/11/24(金) 04:35:29
>if(a||A)

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

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

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

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

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

それとprintf文の中で、a++を使っていますが
aには元から0ではないので、初期化するということです。
203デフォルトの名無しさん: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からスタート以降の意味がよくわかりません。
どなたか解説お願いします。
204デフォルトの名無しさん:2006/11/24(金) 12:18:34
いやそこを自分で考えないでどこで頭使うんだ?
205デフォルトの名無しさん: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;
}
206デフォルトの名無しさん:2006/11/24(金) 12:34:32
>203
kが0からスタートしてることと、k++の意味を考えて実際に実行してみれば判らないか?
207デフォルトの名無しさん: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)
わかりませんどなたかお願いします。
208デフォルトの名無しさん: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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
209203:2006/11/24(金) 12:48:09
動作自体はわかるんですけど、各行のfor文がどう動いてその結果になったかがわからないんです。
210デフォルトの名無しさん: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;
}
211デフォルトの名無しさん:2006/11/24(金) 12:59:30
>209
それは動作がわかるとは言わない。
動作がわかるならforがどう動いてるかもわかるはず。

iは外側から数えていくつめの四角かを意味する。
jはその四角の各辺を移動するのに用いられてる。
forはそれぞれ上辺、右辺、下辺、左辺に順番にkを1ずつ増やしながら入れている。
212デフォルトの名無しさん: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;
}
213203:2006/11/24(金) 13:02:54
>>211
ありがとですw
まだ始めたばかりなのでよく分からなくてスイマセン;
214212:2006/11/24(金) 13:05:54
先に答え出てたか… orz
215宿題丸投げ厨房一同:2006/11/24(金) 16:12:47
回答を提供してくれる偉大な香具師に感謝age

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

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

よろしくお願いします。
231デフォルトの名無しさん: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
232151:2006/11/24(金) 21:37:07
荒らしっぽい書き込みは自分じゃないです。
あと期限が水曜日に延びました。
もしよろしければお願いします
233224:2006/11/24(金) 21:39:15
234デフォルトの名無しさん:2006/11/24(金) 21:52:00
>>233
これ本当にC++?
235230:2006/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)もダメでした。
236デフォルトの名無しさん:2006/11/24(金) 22:00:30
while fgets でぐぐれ
237224:2006/11/24(金) 22:01:36
>>234
すいません、C++じゃなくてobject-Cっていうやつです
238デフォルトの名無しさん:2006/11/24(金) 22:09:12
>>235
返り値を誤解してるのでは。例えば、

p = fgets(buffer, COLSIZE, fp);

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

(ちなみに、p の型が何かはマニュアルの書式欄から読み取れるはず。)
239デフォルトの名無しさん:2006/11/24(金) 22:17:38
>>233
Objective-Cじゃねぇか。
240デフォルトの名無しさん:2006/11/24(金) 22:17:38
objective-Cで教えてるとこなんてあるんだ、びっくりなんだぜ
でもスレ違いな
241235:2006/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に置換する処理とか、よく解りません。
242デフォルトの名無しさん: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] 期限: 出来れば明日中にお願いします
243デフォルトの名無しさん:2006/11/24(金) 22:27:22
>>241
改行は文字列の最後についている。
文字列の長さが分かれば、最後の文字の位置が分かる。
最後の文字の位置を '\0' で上書き(代入)すると改行が消える。
244デフォルトの名無しさん:2006/11/24(金) 22:33:15
>>241
標準入力はstdin
245デフォルトの名無しさん:2006/11/24(金) 22:35:54
>>242
普通に動くけど。
246デフォルトの名無しさん:2006/11/24(金) 22:36:17
>>242
8760 * 99 * 99 * 8Byte = 655MB
655 * 7 = 4585MB

結論
そのOSとコンパイラじゃ無理
247デフォルトの名無しさん: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);
}
}
248デフォルトの名無しさん:2006/11/24(金) 22:45:16
246の計算通りだとすると245はAMD64か何かを使ってるんだろうか?
249デフォルトの名無しさん:2006/11/24(金) 22:48:43
にしても4G以上メモリを積んだマシンなのか?
250デフォルトの名無しさん:2006/11/24(金) 22:51:23
>>249
物理メモリがそんだけある必要はないだろう。
251デフォルトの名無しさん:2006/11/24(金) 22:52:08
仮想メモリも合わせて4G越えという線もあるだろうし、FreeBSDのように実際に
使用されるまでメモリの確保さえしないOSもある。
252デフォルトの名無しさん:2006/11/24(金) 22:56:15
やっぱり無理ですかね・・・?
色々調べてみてcallocではなくfarcalloc使う?とかあったんですけど、根本的に無理な雰囲気ですねorz
253デフォルトの名無しさん:2006/11/24(金) 23:01:52
>>252
>ALL=8760,NN=99です。この数値は変更不可で、この配列確保を7回繰り返さなければなりません。

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

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

# ちなみにかつての 16bit Windows は同じような仕組みで少ない実メモリをやりくりしてた。
271デフォルトの名無しさん:2006/11/25(土) 02:21:15
何か質問したやつコッチ行ったみたいだからそのスレも見てやったら?
コピペも張られてるみたいだし
【初心者歓迎】C/C++室 Ver.33【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1164376287/
272デフォルトの名無しさん: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日
273デフォルトの名無しさん: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;
}
274デフォルトの名無しさん:2006/11/25(土) 10:48:07
[1] 授業単元: コンピューター実習 
[2] 問題文:入力した文字を元に、それを拡大したアスキーアートを描くプログラムの作成 
 [3.1] OS:Linux 
 [3.2] コンパイラ名とバージョン:gcc 
 [3.3] 言語:C 
[4] 期限:11月29日 
275デフォルトの名無しさん:2006/11/25(土) 10:54:01
>>274
AAは自前で用意すんの?
276デフォルトの名無しさん: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
授業でやった↑のサンプルを改造して作るらしいです。
277デフォルトの名無しさん: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になってるしサンプルバグってね?
278277:2006/11/25(土) 13:04:25
それから、無向グラフにした場合は隣接リスト表示するだけでOK?
279277:2006/11/25(土) 13:24:07
>>276
#include <fcntl.h>
このファイルも自前だろ。晒せ。
280デフォルトの名無しさん:2006/11/25(土) 13:28:34
>>279はミス。無かった事にして。
281241:2006/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;
}

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

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

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

fopen() 直後のfgetは余計
286デフォルトの名無しさん:2006/11/25(土) 14:56:08
>>285
あんた馬鹿?
287デフォルトの名無しさん: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] その他の制限:構造体、ポインタを軽くならったところです。
    入力は文字列で行い、それを型変換し計算するという流れになるかと思いますが、
  文字列の扱いに困っております。
288デフォルトの名無しさん:2006/11/25(土) 15:37:05
>>287
以前 fj に似たようなのが流れてたなぁと思って検索したら出てきた。
ttp://katsu.watanabe.name/ancientfj/article.php?mid=%3C784lk3%245t%241%40news1.dti.ne.jp%3E
289デフォルトの名無しさん: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;
}
290デフォルトの名無しさん:2006/11/25(土) 15:46:24
>>286 はぁ?具体的に示してみろよ。
291デフォルトの名無しさん:2006/11/25(土) 16:10:21
>new[strlen(new)] = '\0'; もしくは
少なくともこれは全く無意味だな。
292デフォルトの名無しさん:2006/11/25(土) 16:12:14
もしくはの意味わかるか?
293デフォルトの名無しさん:2006/11/25(土) 16:18:22
>>292
もしかして、真偽値を確かめてから偽なら後を実行するというアレか!?
294デフォルトの名無しさん:2006/11/25(土) 16:18:59
実験まで強要するとは憎いやつじゃ
295デフォルトの名無しさん:2006/11/25(土) 16:39:42
>>292
その文脈でもしくはと書く以上、

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

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

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

回答 彼は頼もしくはない
297デフォルトの名無しさん:2006/11/25(土) 18:10:21
>>286
 オナニーはひとりで汁
298デフォルトの名無しさん:2006/11/25(土) 18:14:00
>>297
まぁ、みせっこもたまにはいいよね
299デフォルトの名無しさん: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] その他の制限: 問題で与えられたソースを元にせよという指示がありました。
よくわからない部分は全力で調べるのでよろしくお願いします
300デフォルトの名無しさん:2006/11/25(土) 18:27:52
[1] 授業単元: プログラミングT
[2] 問題文:
文字列と数字を与え、文字列の長さが数字より大きいかどうかを判定し、
その後に文字列の長さがどれだけ数字より大きいかを求めて表示するようなプログラムを作成せよ。
文字列の長さの方が小さい場合は何もせず終了せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名: gcc
 [3.3] 言語: C
[4] 期限: 11/29まで
[5] その他の制限: まだ始めたばっかなんで全然わかりません。
301デフォルトの名無しさん:2006/11/25(土) 18:32:14
ポインタがわからないんだが、どうすればいい?
スレ住人おすすめの本かサイトを教えてくれ。
302デフォルトの名無しさん:2006/11/25(土) 18:33:48
>>301
brainf*ckがいいんじゃないか?
ぐぐってみろ
303デフォルトの名無しさん: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まで

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

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

ただ、>>285氏の
>fopen() 直後のfgetは余計
というので、なぜfopen() 直後のfgetが必要ないのかは、
いまいち解りませんが。
305151:2006/11/25(土) 19:19:11
>>277
点数が4で
辺数が3のグラフって閉路がなくないですか?
306デフォルトの名無しさん:2006/11/25(土) 19:21:44
もう151は来るな
死んでくれ
307151:2006/11/25(土) 19:23:17
暴言吐いていたのは自分じゃないですよ。それは信じて下さい
308デフォルトの名無しさん:2006/11/25(土) 19:24:06
>>307
わかっているさ
309デフォルトの名無しさん:2006/11/25(土) 19:24:11
どこ大?
俺より下だったら答えてあげる
310151:2006/11/25(土) 19:29:11
慶應です。
311デフォルトの名無しさん:2006/11/25(土) 19:30:13
俺ポン大なんだよね
死ねよKO
312151:2006/11/25(土) 19:31:58
310は自分じゃないです。あーなんでこんなに偽物が・・・
慶應ではないです
特定されると嫌なので書きたくないですが、慶應よりは下です
313デフォルトの名無しさん:2006/11/25(土) 19:32:29
俺は苦労してポン大しか入れなかったというのに
ボンボンというだけで慶應に入って
おまけに卒業に必要な単位は他人任せか
腐れ外道が
314151:2006/11/25(土) 19:36:09
日大って猿でも受かるんじゃないんですか?
幼稚舎にいた頃、アルバイトで来ていた日大の学生さんを見て、日大はお猿さん養成所も同然だと母が言ってましたが。
315デフォルトの名無しさん:2006/11/25(土) 19:37:44
どれかひとつぐらいは
こっそり本人が書いたんじゃないかと思えてきたよw
316デフォルトの名無しさん:2006/11/25(土) 19:40:38
NG推奨名前:151
317デフォルトの名無しさん:2006/11/25(土) 19:42:29
>>312
信じてるよ
318デフォルトの名無しさん:2006/11/25(土) 19:43:37
>>317
俺も信じてるよ
319デフォルトの名無しさん: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 をそのまま使えばいいんですけど、クラスだとうまくいきません。
どうしたらいいでしょうか??
320デフォルトの名無しさん:2006/11/25(土) 19:44:26
どうでもいいがとりあえず今未解決の課題はどれだけあるんだ
前スレのは知らんがこのスレのを消化していこうぜ
下らん流れはさっさと断ち切るに限る
321151 ◆nEYxVzEafI :2006/11/25(土) 19:46:59
今更遅いかもしんないっすけど、トリップつけます
322デフォルトの名無しさん:2006/11/25(土) 19:50:26
323デフォルトの名無しさん :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;

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

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

まあまったり待てや
329デフォルトの名無しさん:2006/11/25(土) 20:03:38
>>90はファイルがもうないから消していいと思われ
330デフォルトの名無しさん :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;
}
331デフォルトの名無しさん:2006/11/25(土) 20:09:00
>>276 (今日の23時まで)
>>299 (明日の20時まで)
>>319 (明日まで)
>>151 >>274 (29日まで)
332323,300:2006/11/25(土) 20:10:57
すぐ出来るやつだけやった。
333名無しさん: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;
}
}
334デフォルトの名無しさん:2006/11/25(土) 20:14:23
お疲れ。
俺は274でもやるか
本人降臨してほしいが
335デフォルトの名無しさん:2006/11/25(土) 20:17:01
C++ってインスタンスじゃなくクラスを確保するんだ
336デフォルトの名無しさん:2006/11/25(土) 20:18:32
>>326
しかし宿題出された瞬間にここに出されても萎えるという
337デフォルトの名無しさん:2006/11/25(土) 20:33:21
338デフォルトの名無しさん:2006/11/25(土) 21:03:07
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): あるテキストファイルに含まれるA〜Zの個数をカウントするプログラムをつくれ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: lcc
 [3.3] 言語: C
[4] 期限: 11月28日まで
お願いします。どう検索すればいいかも分からないので教えていただきたいです。
答えがほしいですが、ヒントをいただければ自分でも努力はします。


339デフォルトの名無しさん:2006/11/25(土) 21:05:42
>>338
fgetc()を使ってEOFになるまで一文字ずつ読み込み、isalpha() && isupper()が
真になる時に配列count[26]のうち対応する文字のカウントを+1する。
340デフォルトの名無しさん: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;
}
341デフォルトの名無しさん:2006/11/25(土) 21:16:38
あ、最後にfclose(fp); してから return 0; しといてね
342デフォルトの名無しさん: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まで
プログラミング初心者です。申し訳ありませんがどなたかお願いします。
343デフォルトの名無しさん: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;}
344デフォルトの名無しさん:2006/11/25(土) 21:26:55
>>342
ていうか、K&Rもんばっかだな
345287:2006/11/25(土) 21:30:50
>>288
ありがとうございます。が、なんか文字化けしちゃって私の環境では見れませんね・・・
わざわざ張ってくださったのに申し訳ないです

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

未解消
351287:2006/11/25(土) 21:58:09
>>346
すみません知りませんでした
一応ググって復元してみたら無事プログラムソースを見ることができました
お手数かけまして申し訳ありません
352デフォルトの名無しさん: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でそのファイルを読み込み
グラフを表示させる、といことです。
よろしくお願いします。
353デフォルトの名無しさん:2006/11/25(土) 22:05:28
ところでいつか丸投げされてた遺伝的アルゴリズムの問題解こうと思うんだが
俺遺伝的アルゴリズムやったことないんだ

計算結果はdoubleで返すことを期待されてると思うんだが
double型にビット演算ってできないよな?
何か良いアイデア知ってる火といないかな
354デフォルトの名無しさん: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();
}
355デフォルトの名無しさん:2006/11/26(日) 00:15:05
>>352
gnuplotに読み込ますデータの仕様くらい用意してから書き込めよ。
356デフォルトの名無しさん:2006/11/26(日) 00:16:38
>>353
つ union
357デフォルトの名無しさん:2006/11/26(日) 00:40:25
>>356
お こんな要素があったのか バッチリだな
ありがとう
358352:2006/11/26(日) 00:55:37
>>355
すいません、
>gnuplotに読み込ますデータの仕様くらい用意してから書き込めよ。
というのは、出力データをどんな感じでファイルに書き込むか、という
ことですか?
xiとyiとしたら
0.0000 0.14356
0.0100 0.16344
. .
. .
. .
という感じです。
359デフォルトの名無しさん: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;
}
360デフォルトの名無しさん: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
361353:2006/11/26(日) 04:03:12
うん 出来たっぽい

さすがに人に見せられるレベルじゃないのでもう少し手を入れるが
もし締め切りが近かったらアレなので89はまだいたら締め切り示せ
362228:2006/11/26(日) 06:42:23
>>228 訂正
コンパイラ名とバージョン:VC 6.0
で未解決なのでお願いします
363その1:2006/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);
364その2:2006/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]));
}
365その3:2006/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;
}
366その4:2006/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;
}
}
367その5:2006/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関数を物凄い適当に作ってあるんでここらをいじっても良くなるはず。
やる気があったら改良するかも。
368デフォルトの名無しさん:2006/11/26(日) 09:37:26
ああ、バグ直したら大分性能良くなった
まあこれくらいは自力でやって
369デフォルトの名無しさん: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まで
370デフォルトの名無しさん:2006/11/26(日) 10:21:44
342どなたかお願いします。時間がありません…
371デフォルトの名無しさん:2006/11/26(日) 10:40:21
Cかぁ、面倒くさいな
372デフォルトの名無しさん:2006/11/26(日) 10:45:33
お願いします(><)
373デフォルトの名無しさん:2006/11/26(日) 10:53:04
>>370
まだ13時間あるよ
374デフォルトの名無しさん: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まで
どう考えてもわかりません。どうかお願いします。
375デフォルトの名無しさん:2006/11/26(日) 12:36:38
>>370
英文テキスト名は指定されている?
376デフォルトの名無しさん:2006/11/26(日) 12:57:11
>>370
というか英文の仕様が無いと作りづらいかも。
・英文中に出てくる記号は",(カンマ)" ".(ピリオド)"" (空白)"のみ?
 ":(コロン)"とかは出てこない?
・改行は分離子と見なしていい?例えば
 I am progr
 ammer
 という文ならprogrammerを単語とみなすのか?
 progrとammerをそれぞれ単語とみなすのか?

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

本当にそう書いてある? 刻み「幅」を小さくすれば、なら納得いくのだけど。
381デフォルトの名無しさん: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
382デフォルトの名無しさん:2006/11/26(日) 15:20:25
>>376
英文はなんでもよいそうです。
英文にでてくる文字の中で単語のみを抜き出すプログラムです。
英文中に出てくる記号は",(カンマ)" ".(ピリオド)"" (空白)"":(コロン)"";(セミコロン)"です。  
・改行は分離子と見なしてよいそうです。
383379:2006/11/26(日) 15:50:27
>>380
はい、課題の前の説明には「刻み幅」と書いてあります。
「課題には刻み数は1000とする。」と書いてあります。
刻み数=刻み幅と思っているのですが違うのですか?
違うなら刻み数と刻み幅はどう違うのでしょうか?
384デフォルトの名無しさん:2006/11/26(日) 15:55:04

どこのアホだよ、わからないことを紙に書いて
整理してから書き込めばわかることだろ。
馬鹿は馬鹿なりのプログラムの書き方ってのがある、
それすらしない奴はもしかして自分の頭だけで
物事全て考えられると思ってるのか?
そういうのって思い上がりだよ。
385デフォルトの名無しさん:2006/11/26(日) 15:56:42
>>381
それ1行に1単語とか制約つきじゃまいか?
386デフォルトの名無しさん:2006/11/26(日) 16:00:56
>>383
日本語でおk
387デフォルトの名無しさん:2006/11/26(日) 16:02:52
世の中には助かった人たちだけでなく、助からなかった人たちもいるのだ。
388デフォルトの名無しさん:2006/11/26(日) 16:07:08
>>385
main関数のwhile文をこう書き換えればよし。
while(scanf("%*[^a-zA-Z]"),scanf("%79[a-zA-Z]",buf)==1){
まぁ単語長に制限ついてるけど実用上は問題ないでしょ。
389デフォルトの名無しさん:2006/11/26(日) 16:12:11
>>383
まず一つ言っておく
煽りでもなんでもなく小学生でも分かることだから今後自分の勉強への態度を変えたほうが良いぞ

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


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

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

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

未解消
398デフォルトの名無しさん: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

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

>>399

>>381はダメなん?

401デフォルトの名無しさん: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] 元のやつを書き換える問題なんですけど、途中までやってます。
それの問題のあるところを教えてくれたら助かります。
402デフォルトの名無しさん:2006/11/26(日) 17:07:40
403デフォルトの名無しさん:2006/11/26(日) 17:08:16
404デフォルトの名無しさん: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] 元のやつを書き換える問題なんですけど、途中までやってます。
それの問題のあるところを教えてくれたら助かります。
405401=404:2006/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;
}
406デフォルトの名無しさん:2006/11/26(日) 17:22:08
>>405
色々とおかしい
とりあえず元々の書き換え前のを出したほうがはやいぜ?
407デフォルトの名無しさん:2006/11/26(日) 17:23:21
>>400
381は求められてる出力と違うみたいです。
・単語を全部取り出し重複する単語は1つにまとめる。
・それぞれの単語の出現した数を数えて表示する。
・単語をアルファベット順に並べる
ということが求められています。
面倒かと思いますが本当に申し訳ないのですがどなたかお願いします。
408デフォルトの名無しさん:2006/11/26(日) 17:26:03
>>407
>>388の変更を加えても期待するのと動作が違うのか?
409401=404:2006/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時間ほど自力で考えましたが力不足ですね。
410デフォルトの名無しさん:2006/11/26(日) 17:30:48
たった2時間で諦めるなとまず言いたい
411デフォルトの名無しさん:2006/11/26(日) 17:31:10
>>401
まず長さを取得して、それを使って書き換え前の関数を呼べば良い。
412デフォルトの名無しさん:2006/11/26(日) 17:31:44
>>410
2時間本気で悩むのはなかなかできることじゃないと思うが。
413デフォルトの名無しさん:2006/11/26(日) 17:33:39
悩んでどうする
考えんだぉ(^ωー)
414デフォルトの名無しさん:2006/11/26(日) 17:33:44
>>412
実践の時間として2時間は長いが
努力の時間としては2時間は短い
415デフォルトの名無しさん:2006/11/26(日) 17:39:52
高ければ高い壁の方が、登ったとき気持ち良いもんな
416デフォルトの名無しさん:2006/11/26(日) 17:50:22
レシピないっすよ
417383:2006/11/26(日) 18:07:22
>>389さんと>>392さんの説明で解りました。
刻んだ時の数と刻んだ時の幅ってことだったのですね。よく考えたら、
そのままですね。
ありがとうございました。
418デフォルトの名無しさん:2006/11/26(日) 18:10:54
>>408
初歩的な話で申し訳ないのですが実行できなくて・・・
コンパイルは成功するのですがそれからどうすれば良いか・・・
基礎的なことがわからなくて申し訳ありません。
cpadを使っているのですがどうやったら実行結果を見れるのでしょうか??
419デフォルトの名無しさん: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;}
420デフォルトの名無しさん: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回使うやつ)を使う
421デフォルトの名無しさん:2006/11/26(日) 18:50:43
test
422デフォルトの名無しさん: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' : 左側がクラス、構造体、共用体へのポインタではありません。

というのが出ました。
どうしたらいいでしょうか?
423デフォルトの名無しさん: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");
}
}
424420:2006/11/26(日) 19:10:03
>>423
ありがとうございます。
助かりました〜。
425デフォルトの名無しさん:2006/11/26(日) 20:16:46
>>418
コマンドプロンプト、リダイレクト・・・後はわかれ
426デフォルトの名無しさん: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] 期限: 火曜日

問題は?のところを書き換えるようになっています。
よろしくお願いします。
427319:2006/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を使って格納したクラスの関数を使いたいです。

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

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

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

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

for (int j = 0; j < 10; j++) {
に変更したらどうなる?

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

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

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

そんなコンパイラ、窓から投げ捨てろ!
436432:2006/11/27(月) 00:02:25
なるほど。そういう事です。
わかりました!
ありがとうございました!
437デフォルトの名無しさん:2006/11/27(月) 00:02:41
[1]システム標準関数
[2]http://mobiledatabank.jp/s/src/MDBS0997.pdfの最後から二番目に書いてあります
[3]windows xp
[4]11月28日
438401=404:2006/11/27(月) 00:10:33
>>419
すみません、そのプログラムは動くのですが
問題はd番目の要素 と最初から入力させるのではなくて
0を入力させた時点で終わるようなものを作りたいです。
439デフォルトの名無しさん:2006/11/27(月) 00:18:11
>>438
とりあえず、いちゃいちゃ乙
440デフォルトの名無しさん: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;
}
}
441デフォルトの名無しさん:2006/11/27(月) 00:39:10
442デフォルトの名無しさん: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まで]
よろしくお願いします。
443デフォルトの名無しさん:2006/11/27(月) 00:51:16
>>441
ありがとうございます。しかし実行するとエラーが発生してしまいますた_| ̄|○ il||li
444デフォルトの名無しさん:2006/11/27(月) 00:57:09
>>443
どういうエラー?
それから、fopenの第二引数で"wb"とすべきところを"w"と書いたので
直しておいてくれ。
445デフォルトの名無しさん: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: 直前のエラーを修復できません。コンパイルを中止します。
と出ます。
本当に苦手ですいません。
446デフォルトの名無しさん:2006/11/27(月) 01:12:38
>>445
なんて酷いメッセージだ。何が悪いのか分からん。

当て推量だが、2箇所あるmaxをmax_of_twoで置換してみたら直るかも知れん。
447デフォルトの名無しさん: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;
}
448デフォルトの名無しさん:2006/11/27(月) 03:34:13
すいません、関数の戻り値を数値配列にすることは可能ですか?
可能であれば方法を教えていただきたいのですが
449デフォルトの名無しさん:2006/11/27(月) 03:36:49
>>448
> 数値配列
初耳の言葉だ
もっと説明モトム
450デフォルトの名無しさん: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関数で使える値を出すには
どうすればいいんでしょうか?
かなり日本語喋れってかんじだと思いますが、どうかよろしくお願いします・・・
451デフォルトの名無しさん:2006/11/27(月) 09:02:47
>>450
渡された配列の中身を書き換えるだけなら、わざわざ double *matrixPtr[10][10]
ってポインタ配列にする意味がわからん。mallocで確保でもするのか?
452デフォルトの名無しさん:2006/11/27(月) 10:43:21
値を変更するためにポインタにしなきゃいけないと思ってるんじゃない?
配列を引数にするってことがどういうことかわかってないんだろ。
453442:2006/11/27(月) 10:44:03
<<447
早速の返答ありがとうございます。
でもこれって#include <stdio.h>だけで作れないですか?
最初の[5]で書いとくべきだったんですけどすみません。
多分、単語を切り取って文字数を出力し、文字数mを添字とする配列要素を
インクリメントしていく、という流れになると思うんですが・・・
本当に申し訳ないですが、よろしかったらお願いします。
454デフォルトの名無しさん:2006/11/27(月) 10:59:19
>>453
C++って書いておいてそれはねーだろw
455デフォルトの名無しさん:2006/11/27(月) 13:54:15
これはひどいwwwwww
456デフォルトの名無しさん:2006/11/27(月) 14:09:22
ワロタ
457デフォルトの名無しさん: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を用いて作成しなければいけないようです

よろしくお願いします
458デフォルトの名無しさん:2006/11/27(月) 15:49:58 BE:46584746-2BP(200)
>>457
使用する暦の種類と適用期間が分からないとやりようがない。
459デフォルトの名無しさん:2006/11/27(月) 16:01:07
宇宙世紀でお願いします。
460デフォルトの名無しさん:2006/11/27(月) 16:12:38 BE:31057128-2BP(200)
宇宙世紀に曜日の概念なんかあるんか?
461457:2006/11/27(月) 16:41:01
西暦で、適用期間は特に指定されてないので適当に決めていいと思います・・・
462デフォルトの名無しさん:2006/11/27(月) 16:52:56
せめて日付から曜日を決定する計算式くらい出せよ
463デフォルトの名無しさん:2006/11/27(月) 16:52:57
コズミックイラで
464デフォルトの名無しさん: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;
}
465デフォルトの名無しさん:2006/11/27(月) 17:01:11
>>460
宇宙世紀1年には地球の人口が90億に達するそうだ
現在の傾向のまま人口が推移するとあと30年後ぐらい
466デフォルトの名無しさん: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;
}
467デフォルトの名無しさん: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
468デフォルトの名無しさん:2006/11/27(月) 17:24:54
>>467
まずコンパイルエラーもうpしなさい
469467:2006/11/27(月) 17:33:44
>>468
すみませんでした。main関数内の
encode_caesar(*str);
decode_caesar(*str);
について「ポインタの型が合わない」だったかのエラーが出ていました。
変に引数なんかをいじると関数内でさらに複数行に渡ってエラーが出たりします。
エラーがあいまいなのは家に帰ってしまってCを動かせる環境にないためですorz
470デフォルトの名無しさん:2006/11/27(月) 17:58:03 BE:48525555-2BP(200)
>>461
ユリウス暦かグレゴリオ暦かくらい書け。
471401=404:2006/11/27(月) 18:13:10
>>439
するあいてがいません
>>440
ありがとうございます。
472デフォルトの名無しさん: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;
}
473デフォルトの名無しさん: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);
}
474デフォルトの名無しさん: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);
}
475デフォルトの名無しさん: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);
}
476デフォルトの名無しさん:2006/11/27(月) 20:48:51
>>467
バグだらけだったので勝手に色々いじった。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3047.c
477467:2006/11/27(月) 21:00:34
>>476
バグだらけ…orz
いやしかし大変助かりました。そういえば数字や記号が来た場合の処理に全く思考が及んでいませんでしたが、
isalphaという関数は初めて知りました。勉強になりました。
ありがとうございました。
478デフォルトの名無しさん: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を使うみたいです。
なるべく簡単におねがいします。
よろしくお願いします。
479デフォルトの名無しさん: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]まったくわからないのでお願いします
480デフォルトの名無しさん:2006/11/27(月) 23:50:56
>>479
君の行っている大学はわかったが問題がどこにあるのかサッパリわからないのだが
481479:2006/11/27(月) 23:52:54
すいませんアドレス間違ってました
http://www.wakayama-u.ac.jp/~miw/ApIp/06/9/9.html
これです
482デフォルトの名無しさん:2006/11/27(月) 23:54:24
>>479
問題が何なのかさっぱり分かりません
まったくわからないのでお願いします
483478:2006/11/27(月) 23:54:49
付けたしはまずいですよね?
484デフォルトの名無しさん:2006/11/28(火) 00:11:32
>>481
この問題はBCB専用じゃないかね?
485デフォルトの名無しさん:2006/11/28(火) 00:30:18
とりあえず学校に通報するという事でOK?
486デフォルトの名無しさん:2006/11/28(火) 00:32:18
勝手にやってろ
487デフォルトの名無しさん:2006/11/28(火) 00:40:48
通報しても意味無い。ここで教えてもらっても
リアルで人にやってもらっても同じなんだし

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

一応ヒント

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

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

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

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

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

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

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

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

大学内のみの流通のみで
物理学部に提供するらしい。
505デフォルトの名無しさん:2006/11/28(火) 01:32:13
>>503
あの条件から見積もりだすお前がすごい
506デフォルトの名無しさん:2006/11/28(火) 01:33:44
今日のSE大賞をあげよう
>>503
507デフォルトの名無しさん:2006/11/28(火) 01:40:33
とりあえず>>495
>>1を声に出してよく読んで、テンプレを元にして書き直し
508デフォルトの名無しさん:2006/11/28(火) 01:52:52
大学のみの流通とは言え他者に提供するのなら
それは既に宿題ではないんではないだろうか
509デフォルトの名無しさん:2006/11/28(火) 01:53:42
>>497 exp(1.0)だろ、常識的に考えて。
510デフォルトの名無しさん:2006/11/28(火) 01:57:47
>>497
小さい方から足してるだろうな?積み残しが出るぞ。
511デフォルトの名無しさん: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!・・・の逆数を求めろって言ってるぜ
512デフォルトの名無しさん:2006/11/28(火) 02:02:17
>>510
ちゃんと100000から計算していってるよ
513デフォルトの名無しさん:2006/11/28(火) 02:03:55
おまえら糞か
ハヤクシロや
514デフォルトの名無しさん: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)
515デフォルトの名無しさん:2006/11/28(火) 02:10:52
>>514
あ、なるほどな

ののしるがいいさ さげすむがいいさ
516デフォルトの名無しさん: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);
}
517デフォルトの名無しさん:2006/11/28(火) 02:31:52
デフゥルトゥイラネだろ
518デフォルトの名無しさん:2006/11/28(火) 02:42:10
>>517
レベルの低い素人は口を挟むな
519デフォルトの名無しさん: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] その他の制限:関数定義使う
520デフォルトの名無しさん:2006/11/28(火) 03:00:30
ループだけじゃん
521デフォルトの名無しさん: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;
}
522デフォルトの名無しさん:2006/11/28(火) 03:46:25
ブブー
523デフォルトの名無しさん:2006/11/28(火) 03:48:25
計算式おかしい。
ループかけるまえに
1を宣言して
ループしたのを足していけばいいんだお
524デフォルトの名無しさん:2006/11/28(火) 03:50:17
y=1+x;
525デフォルトの名無しさん: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))
 ・
 ・
 ・
526516:2006/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);
}
527516:2006/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));
}
528516:2006/11/28(火) 05:48:15
あ しまったNの名前変えたの忘れてた

while(i<N&&y>DBL_EPSILON) y/=++i;

while(i<NMAX&&y>DBL_EPSILON) y/=++i;
529473〜475:2006/11/28(火) 08:05:16
すみません、周りの人もわからないっていっててもうお手上げなんです。
どなたか解いてもらえないでしょうか。
530デフォルトの名無しさん:2006/11/28(火) 08:50:15
>>529
前の日の晩に質問するなんて無謀な
今から知り合い増やそう
531デフォルトの名無しさん: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くらい自分で書け
532478:2006/11/28(火) 09:13:53
皆さんいろいろとありがとうございます!

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

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

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

>>534
わかりました。なんとかやってみます。
536デフォルトの名無しさん:2006/11/28(火) 10:10:11 BE:46584746-2BP(200)
「習ってない」をNGワードに。
537デフォルトの名無しさん:2006/11/28(火) 11:29:56
>>531
// idx番目の要素を操作対象に設定をどこにいれていいのかわからないです
何度もすみません
538デフォルトの名無しさん: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)まではヒントが与えられています。
宜しくお願いします。
539デフォルトの名無しさん:2006/11/28(火) 13:24:40
random() なんてあったっけ
540デフォルトの名無しさん:2006/11/28(火) 13:32:03
関数つくれって事だろ
541デフォルトの名無しさん:2006/11/28(火) 13:41:15
542デフォルトの名無しさん: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 関数を使うこと
関数の中身はブラケット演算子なしでポインターだけで書く

よろしくお願いいたします。
543a:2006/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 を満たす任意の値を設定してよい
544デフォルトの名無しさん :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の公式は習った。
545544:2006/11/28(火) 15:27:46
皆さん宜しくお願いします。
546デフォルトの名無しさん: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));
}
547546:2006/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));
}
548デフォルトの名無しさん: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] その他の制限: 一行の文字数や、行数の制限を行わない。
         同じファイルを二回以上オープンしない。但し、メモリに異常が発生した場合は、検知し、確実に異常終了させる。

分かる方、いたらお願いします!!
549デフォルトの名無しさん:2006/11/28(火) 19:43:41
>>548
このスレを検索
550デフォルトの名無しさん:2006/11/28(火) 19:45:55
>メモリに異常が発生した場合は、検知し、確実に異常終了させる
そりゃ不可能だ。
仮にメモリ異常が単にmalloc()/new失敗と言う意味に解釈したとしても、
その状況で確実に異常終了できるかどうかは実はOS次第だからな。
551デフォルトの名無しさん: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ヶ月で今回の課題がさっぱりわからないので
誰か分かる方がいらっしゃいましたら助力お願いします。
552デフォルトの名無しさん:2006/11/28(火) 20:12:53
553537:2006/11/28(火) 20:17:27
あの後もう一度必死に頭使ってみたら、なんとか理解できて課題を完成させることができました。
ありがとうございました
554デフォルトの名無しさん: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;
}
555デフォルトの名無しさん:2006/11/28(火) 20:42:18
unknownカッコヨス
556デフォルトの名無しさん:2006/11/28(火) 21:11:11
>>426お願いできないでしょうか。行列に2次元配列が使われておらず、全く理解できないのです。
期限には間に合いませんがよろしくお願いします。
557デフォルトの名無しさん:2006/11/28(火) 21:50:49
558デフォルトの名無しさん:2006/11/28(火) 22:10:28
>>548 ってさ。>>103と同じっぽくない?
559デフォルトの名無しさん: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;
}
560デフォルトの名無しさん:2006/11/28(火) 22:14:00
1.教授が問題を作る。
2.模範解答をTAに作るように命令。
3.TAがここで問題を丸投げ。
4.生徒が問題を受け取る。
5.生徒がここで問題を丸投げ。 ← いまここ
561デフォルトの名無しさん:2006/11/28(火) 22:18:47
>>560
全米が震撼した
562デフォルトの名無しさん:2006/11/28(火) 22:26:02
(((( ;゚Д゚)))ガクガクブルブル
563デフォルトの名無しさん: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から倍々と増やしていき、積分値が変化しなくなるまで行うこと。
これのやり方が分かりません。
誰か分かる方がいらっしゃいましたらよろしくお願いします。
564デフォルトの名無しさん:2006/11/28(火) 22:33:59
>>563
なんでだよwww
>等分数を最初に設定して計算することは出来た
ここが一番の山じゃねーか
もう終わったようなもんだろwwwwwwwww

あとはforループで、2^iで分割して、
今の値-前の値の絶対値が十分小さかったら終了でいいじゃん
565デフォルトの名無しさん:2006/11/28(火) 22:34:38
>>558
そのふたつだけじゃなくて
>>42
も同じ課題だと思う
566デフォルトの名無しさん: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";

}

}
567デフォルトの名無しさん:2006/11/28(火) 22:59:02
>>565
>>42じゃなくて>>40じゃね?
568デフォルトの名無しさん:2006/11/28(火) 23:01:09
>>567
あ、
>>40だった。スマソ
569デフォルトの名無しさん: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] その他の制限: なし

よろしくお願いいたします。
570デフォルトの名無しさん:2006/11/28(火) 23:14:05
>>569
問題文それだけ?
571デフォルトの名無しさん:2006/11/28(火) 23:15:17
>>570
提示された物は全てです
572デフォルトの名無しさん:2006/11/28(火) 23:15:52
>>569
入力するデータが欲しい
573デフォルトの名無しさん: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] その他の制限: 特にないです。

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

>>574
とくに省略はしていません
576デフォルトの名無しさん:2006/11/28(火) 23:24:02
>>571
じゃぁ先生にこんな問題文じゃ解けないって突き返せ
577デフォルトの名無しさん: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] その他の制限:


お願いします!
578デフォルトの名無しさん: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));
579デフォルトの名無しさん: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);
}
580デフォルトの名無しさん:2006/11/28(火) 23:51:31
>>564
ありがとうございます。
for文の中を前の値==今の値とかやって悩んでましたw
581デフォルトの名無しさん: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;
}
582デフォルトの名無しさん:2006/11/29(水) 00:05:04
>>569
応募者が賞品の数より少ない場合、
1.A君、B君、C君でも当選する?
2.賞品の当選の優先順位は決まってる?

ちなみに全員ハズレにするのもアリ?
583デフォルトの名無しさん:2006/11/29(水) 00:09:14
>>582
お前、ふだんからいい仕事してるんだろうな
584デフォルトの名無しさん: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;
}
585573:2006/11/29(水) 00:22:07
>>578
ありがとうございます。
講義で台形公式の話をしていたので、台形が公式で十分というか台形公式の
方が良いです。
ただ、エラーが出てコンパイルできません。

>>581
ありがとうございます。
しかし、値が1つしか表示されません。
586デフォルトの名無しさん:2006/11/29(水) 00:25:04
>>585
>>1も読めないのか?わざとなのか?
587デフォルトの名無しさん: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] その他の制限: 授業で配列に入ったばかり。
588587:2006/11/29(水) 00:28:40
日付変わってるのに気がつきませんでした。
11月29日昼12時まででお願い致します。
589585:2006/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));
以外に何を変更して良いか解らなくて。
590デフォルトの名無しさん:2006/11/29(水) 00:42:41
>>589
課題
・nが変数として使われてるのに#define n 20なんかしたらどうなるか考えてみる
591デフォルトの名無しさん:2006/11/29(水) 00:46:59
>>582

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

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

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

よろしくお願いいたします。
592デフォルトの名無しさん:2006/11/29(水) 00:51:36
>>591
#include<stdio.h>
int main(void){
printf("当選者ナシ\n");
return 0;
}
593589:2006/11/29(水) 00:51:52
>>590
あ、確かに変数として使われてますね。
そのエラーは納得できたのですが、講義では数値積分法には台形公式による
方法があります、と言っていただけで、具体的にどのようなものなのか
教わってないので、>>578さんが教えて下さったプログラム(>>212のプロ
グラム)の意味が全く解らなくて…。
594デフォルトの名無しさん: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
595デフォルトの名無しさん:2006/11/29(水) 00:56:07
>>581 も台形公式ですよ
あと >>212 がレスつけてる先を見てみれば?
596デフォルトの名無しさん:2006/11/29(水) 00:56:44
>>593
そのエラー直して解けたんならイインジャマイカと言ってみるt。
597581:2006/11/29(水) 00:57:25
>>585
すまん、色々間違ってた。
598593:2006/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回表示するようにしたら完成、ということなのでしょうか?
599581:2006/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;
}
600デフォルトの名無しさん: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;
}
601598:2006/11/29(水) 01:37:08
>>599
ありがとうございました。
602587:2006/11/29(水) 01:50:03
>>600
ありがとうございます。
603デフォルトの名無しさん:2006/11/29(水) 01:59:19
>>594
Sleipnir利用者なんかは本当に一部機能を制限されてるからな
知らずにGoogleフル機能だと思ってたら泣ける
604デフォルトの名無しさん: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:
}
605デフォルトの名無しさん: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まで

どうかよろしくお願いします。
606デフォルトの名無しさん: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);
}
607デフォルトの名無しさん: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;
}
608デフォルトの名無しさん:2006/11/29(水) 08:27:55
>>607
printf("%d桁\n", n); の間違い?
あとn/=10だと一桁少なく出るのでは。
609544:2006/11/29(水) 08:48:54
>>546
ありがとうございます。今日、改良したものを試して
みます。
610607:2006/11/29(水) 08:56:11
>>608
理解できないなら、せめて実行してから文句つけてくれ。
611デフォルトの名無しさん:2006/11/29(水) 09:41:34
>>579
ありがとうございます
612デフォルトの名無しさん: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] その他の制限:
お願いします。。
613デフォルトの名無しさん:2006/11/29(水) 10:47:31
これ実際にやったら、詐欺っぽいよなぁ。
>>>応募者が賞品の数より少ない場合、
>>>1.A君、B君、C君でも当選する?
>当選しません
614605 :2006/11/29(水) 11:08:49
>>606,607
助かりました、本当にありがとうございます。
615デフォルトの名無しさん: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);
}
}
}
616615:2006/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);
}
}
}
617598:2006/11/29(水) 13:10:53
>>599
もう提出したので良いのですが疑問に思ったので質問です。
刻み数を10とか少し変えただけで積分結果が結構変わりますが
こんなもんなんでしょうか?
618デフォルトの名無しさん:2006/11/29(水) 13:12:33
気になるならシンプソン法とかもっと精度の良い方法に変えれ
619デフォルトの名無しさん:2006/11/29(水) 13:14:08
積分なんだから刻み数を減らせば精度がさがるに決まってる。
620617:2006/11/29(水) 14:30:04
でも刻み数を100000ぐらいにすると積分結果が0.00000001ぐらいになるんです。
これっておかしくないですか?
621デフォルトの名無しさん: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 を満たす任意の値を設定してよい

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


622デフォルトの名無しさん:2006/11/29(水) 15:11:25
623デフォルトの名無しさん:2006/11/29(水) 16:02:20
>>523といい>>608といいズレた指摘する奴がいるな

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





これをC言語でプログラミングってどうやるんですか?
三日かけてもわかりませんでした   
627デフォルトの名無しさん:2006/11/29(水) 16:21:57
628デフォルトの名無しさん:2006/11/29(水) 16:54:50
>>626
関数の使い方の授業なら
strstr() (#include <string.h>)
を使う。
アルゴリズムの授業ならBM法でも実装しろ
629デフォルトの名無しさん: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]ポインターまで習ってます

630デフォルトの名無しさん:2006/11/29(水) 17:13:15
631デフォルトの名無しさん: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]配列やポインタや構造体といった基礎部分は一応一通りやってます

よろしくお願いします
632629:2006/11/29(水) 17:23:45
まだif for while文 1、2次配列、文字列、ポインターしかならってないんですけどそれだけでできませんか?
633デフォルトの名無しさん: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;
}
634デフォルトの名無しさん: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次配列位しか習ってないです。それ以外も使っていいことに
  なってますがまだ初心者なのでできるだけ簡単なものにしていただけると助かります。
635629:2006/11/29(水) 17:58:45
>>633
ありがとうございます
636デフォルトの名無しさん:2006/11/29(水) 18:18:42 BE:58230465-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;}
637デフォルトの名無しさん: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
638デフォルトの名無しさん:2006/11/29(水) 18:26:36
>>637
県名と数字を区切っているものは何?
とかこういうやりとりをするのがめんどくさいからjinkou.txtどこかにうぷれカス
639デフォルトの名無しさん: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. 配列の各要素を表示する。

よろしくお願いします
640デフォルトの名無しさん: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;}
641599:2006/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
642546:2006/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));
}
643デフォルトの名無しさん:2006/11/29(水) 20:01:24
>>616
ありがとうございます。
動作について解説して頂けると今後のために役に立ちます。お願いできませんか?
644デフォルトの名無しさん: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] 期限: 出来れば今日中に・・・
宜しくお願いします。
645634:2006/11/29(水) 20:35:33
>>636さん
ありがとうございます。このプログラムなら何をやっているかがなんとか分かるので助かります。
でもこれだと読み込むテキストファイルの指定がないので動かないのですが…
646デフォルトの名無しさん:2006/11/29(水) 20:46:19
>>645
多分リダイレクトしろって事じゃない?
後、いろいろアレなコードだから(英単語に続いて.や,があると英単語がカウントされない、とか)提出するには気を付けて。
647デフォルトの名無しさん: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);
}
648645:2006/11/29(水) 20:55:42
<<646
アドバイスありがとうございます。,や.の問題も自分でも直せるようもう少し頑張ってみます。
649デフォルトの名無しさん:2006/11/29(水) 21:27:30
650デフォルトの名無しさん: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;
}
651デフォルトの名無しさん:2006/11/29(水) 21:30:50
すいません >>640 の回答はC++ではないですよね。
C++でお願いできませんか?
652151:2006/11/29(水) 21:30:59
151をお願いします・・・
653デフォルトの名無しさん: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の経路表を示せ。
654デフォルトの名無しさん: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が未定義です。

あとスレ違いです。
655デフォルトの名無しさん: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";
}
656620:2006/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;
}
としてました。
これが原因だったようです。
自分のミスなのに、おかしい等と文句言って申し訳ありませんでした。
657655:2006/11/29(水) 21:58:00
あ、ostream_iteratorを使うのを忘れた。
まあ、ループもたまには良いでしょう。
658デフォルトの名無しさん: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);
}
659デフォルトの名無しさん:2006/11/29(水) 22:04:18
少なくともfregは21いるのではないだろうか
660デフォルトの名無しさん:2006/11/29(水) 22:14:13
>>647
>>650
有難うございました!
661658:2006/11/29(水) 22:26:42
>>659 言われてみればそうですねort
早速fregは21にして、dが20以上の時はfreg[20]が+1なるように改良してみたんですが
やはり実行すると1245112という意味不明な数字がでるだけです…
もっと根本的なところ間違ってませんかね?
662デフォルトの名無しさん:2006/11/29(水) 22:30:58
fregの内容が不定のまま操作している。
数を数えたいなら0で初期化するべし。
663599:2006/11/29(水) 23:23:09
>>656
いや、分かってもらえてよかった。中身を研究して、精進してください。
664656:2006/11/29(水) 23:25:57
>>663
はい、色々とありがとうございました。
665658:2006/11/29(水) 23:45:30
>>662
アドバイスありがとうございます。おかげで無事できました。
何か初歩的なこと忘れまくりでしたねort
でも659さんや662さんのおかげで凄く勉強になったと思います。
ほんとにありがとうございました。
666616:2006/11/29(水) 23:46:08
>>643
ちゃんと動いたかな?

解説しろって言われてもなぁ...当たり前のコードだからなぁ...
お前さんが疑問と思う点を書いてくれれば説明してやれるかも知れん。
667デフォルトの名無しさん:2006/11/30(木) 00:11:53
そうなんだよな。
回答してる側にとっては当たり前すぎてどうわからんのかわからん場合はよくある。
質問してる側もどこが分からんのか分からんくらいに全体的にわからんのかもしれんが、
今後の役に立てようという気概があるくらいならもうちょっとつっこんだ質問をしてくれないと困ると思う。
668デフォルトの名無しさん:2006/11/30(木) 00:33:10 BE:67935757-2BP(202)
669デフォルトの名無しさん: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
提出期限過ぎてて現在執行猶予期間。やばいって!ほんとやばいって!!
670デフォルトの名無しさん:2006/11/30(木) 00:44:22
800+100=1600
671デフォルトの名無しさん:2006/11/30(木) 00:56:26
イチヂク
672デフォルトの名無しさん:2006/11/30(木) 00:56:28
この問題何度目だよ…
673デフォルトの名無しさん:2006/11/30(木) 01:02:50
前スレで3回ぐらい出てたっけ?
ここまで来ると釣りにしか思えないな。
674デフォルトの名無しさん:2006/11/30(木) 01:03:25
>>669
俺の記憶が正しければ君でその問題を丸投げするのは
4人目なんだ
3人目なんかちゃんともう解答済みだと教えてやったのに
「教えてくれるのか教えてくれないのかハッキリしてください」
と逆切れしていたぞ
ひでえ学校だなwww
675デフォルトの名無しさん:2006/11/30(木) 01:05:46
みんな丸投げしてたら評価さがるだろ
俺のところはクローンがあったら
点数をクローンの数で割るとか言ってたけど
偶然同じになったらどうするのかね
ここで見たことある問題あったし
676デフォルトの名無しさん: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]++;が必要。
677デフォルトの名無しさん: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]);
    }
}
678デフォルトの名無しさん: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]);
}
}
679676:2006/11/30(木) 01:42:39
>>668
30分待ってみたけど反応が無いな。もう寝ちゃったかな。

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

まだ回答するには早いんじゃないかな。挑戦も大事だけどじっくり基礎を固めて力をつけてからでも遅くないと思うよ。
680デフォルトの名無しさん:2006/11/30(木) 01:46:01
どなたか>>631もお願いします・・・
681デフォルトの名無しさん:2006/11/30(木) 02:01:07
ガウスの消去法とか、誰がやってもてきとーなの拾ってきても変わらんぜ?
682デフォルトの名無しさん:2006/11/30(木) 04:18:42
>>637です。
県名と数字はひとつの空白スペースで区切られています。
お願いします。
683デフォルトの名無しさん:2006/11/30(木) 04:21:28
>>637>>682
jinkou.txtも作ってくれって事?
君は用意しないの?
684638:2006/11/30(木) 04:42:29
          .,Å、
        .r-‐i'''''''''''i''''‐-、
       o| o! .o  i o !o
      .|\__|`‐´`‐/|__/|
       |_, ─''''''''''''─ ,、 / _
     /              \
    /  ノ(  \  ____  /   i
    |   ⌒  ●  {+++}  ●   | キングブチキレス
    !           ̄        ノ
    丶_              ノ 
685デフォルトの名無しさん:2006/11/30(木) 04:50:41
一つのスペースと言いながら637の例には複数スペース使ってたり
ケンカ売ってるとしか思えない
686629:2006/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次配列
687デフォルトの名無しさん: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重ポインタの仕組みが全く分からず苦労しています。どうか宜しくお願いします。
688デフォルトの名無しさん: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;
}
689デフォルトの名無しさん:2006/11/30(木) 08:33:33
>>687
二重ポインタさえわかればできるの?
二重ポインタ講座でも始めるか
690デフォルトの名無しさん:2006/11/30(木) 08:56:01
>>688
本当にありがとうございます
691デフォルトの名無しさん:2006/11/30(木) 08:57:34
692デフォルトの名無しさん:2006/11/30(木) 10:37:11
>>687
ひでえな。循環リストじゃないしダミーリストもないので面倒なんだよなー
693デフォルトの名無しさん:2006/11/30(木) 10:39:08
STL勉強中なんで>>686をなんとなく作ってみたけど
配列とかはvectorがやっぱり楽だなぁ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3059.txt
694デフォルトの名無しさん: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] その他の制限: なし

授業で触れなかったのでわからなくて・・・よろしくお願いします。
695デフォルトの名無しさん:2006/11/30(木) 12:24:37
>>640の方、>>655の方、ありがとうございました。
696デフォルトの名無しさん:2006/11/30(木) 12:40:14
>>694
授業で何を触れなかったの?
どこまで習ってるの?
697デフォルトの名無しさん:2006/11/30(木) 12:46:07
>>696 二次元配列について触れませんでした。
698デフォルトの名無しさん: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
などと書いておくといい
699デフォルトの名無しさん:2006/11/30(木) 14:34:32
698>>
#define k 2 と書いておくとどんなメリットがあるんですか?
700デフォルトの名無しさん:2006/11/30(木) 14:47:47
そういや昔「k2」ってお笑いコンビが居たな。勝俣ともう一人。
あのカタワレは何処行ったのかね?
701デフォルトの名無しさん :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)=((...((CnI+Cn-1)I+Cn-2)...)I+C1)I+C0
と単純な効率の良いプログラム計算するようなもの。つまり
 fx←Cn
 fx←fx*I+Cn-1  というような代入を参考にして考えてみる。
702701:2006/11/30(木) 14:49:23
すいませんがよろしくお願いします。
703デフォルトの名無しさん:2006/11/30(木) 14:56:50
>>699
#define k 2
とすると、コンパイル前に自動的にkを2に置き換えてくれる。

int k = 2;
int m = 3;
int a[k][m];
上のように配列の要素数に変数の値を使用すると、コンパイルが通らない可能性があるから、
#defineを使う。
704デフォルトの名無しさん:2006/11/30(木) 14:58:33
ワロタ
705デフォルトの名無しさん:2006/11/30(木) 14:59:41
わかってない子の説明は意味がない法則
706デフォルトの名無しさん:2006/11/30(木) 15:01:50
マジックナンバーの説明かと思ったら斜め上飛んでいった
707デフォルトの名無しさん: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
708デフォルトの名無しさん: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;
}
709sage:2006/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時ごろまでいられます。
よろしくお願いいたします。
710デフォルトの名無しさん:2006/11/30(木) 16:27:15
>>709
続けて処理すれば、「同時」にしなくてもいいんジャマイカ?
711デフォルトの名無しさん:2006/11/30(木) 16:27:31
>同時に行うことが出来ません。

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

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



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

よろしくおねがいします。
715デフォルトの名無しさん: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] その他の制限: 制限は特に無いです。

すみません、よろしくお願いします。
716デフォルトの名無しさん:2006/11/30(木) 17:43:29
>>715
>1行に12個数値を表示せよ。
1行に12個ずつ って意味だよな?
717デフォルトの名無しさん:2006/11/30(木) 17:45:19
>>716
はい、そういうことです。よろしくお願いします。
718デフォルトの名無しさん: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;
}
719デフォルトの名無しさん: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] その他の制限:
昨日も聞いたんですが、
条件が追加され、出題されました。お願いします。。
720デフォルトの名無しさん: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;
}


721デフォルトの名無しさん:2006/11/30(木) 21:28:03
>>720
再帰で書くことはできないんですか?
722デフォルトの名無しさん: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] その他の制限: 線形リストの基本は学んだが二分木は初めてです。

よろしくお願いします。
723デフォルトの名無しさん: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;
}
724デフォルトの名無しさん:2006/11/30(木) 21:44:53
>>723
どうもありがとうございました!
725デフォルトの名無しさん:2006/11/30(木) 21:57:36
>>723
コンパイル通らなかったです・・・・
726デフォルトの名無しさん:2006/11/30(木) 22:02:45
>>725
あ、ごめん
下から三行目のintいらない

コンパイルできないならエラーメッセージくらい書いた方がいいよ
727デフォルトの名無しさん: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;
728デフォルトの名無しさん:2006/11/30(木) 22:18:35
struct
729デフォルトの名無しさん:2006/11/30(木) 22:19:46
>>727
struct LIST* pTmp;

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

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

ちゅことで俺なら、『こんなん再帰で書かせるなボケ』と講師に言うかな。
732デフォルトの名無しさん:2006/11/30(木) 22:44:59
再帰の方がわかりやすいという気持ちも理解できる。
結局は慣れの問題じゃないだろうか。
733デフォルトの名無しさん: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] その他の制限: なし

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

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

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

>>701の心境をエスパー
740デフォルトの名無しさん:2006/12/01(金) 00:42:34
-lmつけないでコンパイルしたら実行時エラーが出るんです><;
と見たがどうか?
741デフォルトの名無しさん: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;
}
742707:2006/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> は不要になる。

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

double *pCn; を

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

に直す。

pCn = (double*)malloc(... と次の行を削除。
free(... の行を削除。
これで #include <stdlib.h> も不要となる。
744デフォルトの名無しさん: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;
}
745デフォルトの名無しさん:2006/12/01(金) 01:25:40
>>722
そのスライドは?
746デフォルトの名無しさん:2006/12/01(金) 01:43:03
>>741
それだけじゃダメだろ。

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

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

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

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

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

759デフォルトの名無しさん:2006/12/01(金) 07:26:29
ううむ・・・(^ω^;)
760デフォルトの名無しさん: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をつかっていただけると幸いです)
761デフォルトの名無しさん:2006/12/01(金) 07:41:40
変数名まで指定するのかよw
762デフォルトの名無しさん:2006/12/01(金) 07:48:16
言い訳する時間を勉強に費やして技術力上げればいいのにw
だからこういう奴は救いようがないんだよ。
763デフォルトの名無しさん:2006/12/01(金) 07:55:31
>>758
ホーナー法はアルゴリズム論では常識。これを知らないと、
ちゃんとした勉強してきてないんだなあと一発で分かる。


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

これを意識して、プログラムの自動変換の分野では、ホーナー法が
適用できるように、演算子を分配的にする手法などが研究されている。
764デフォルトの名無しさん: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);
765デフォルトの名無しさん:2006/12/01(金) 07:59:21
配列のdata[0]って何番目っていうのかな。
766デフォルトの名無しさん:2006/12/01(金) 08:02:47
0番目
767デフォルトの名無しさん:2006/12/01(金) 08:05:59
>>765
ああそうか

printf("%d",mid+1);
768デフォルトの名無しさん:2006/12/01(金) 08:32:01
isalhaと
isgraph
それぞれを使ったらどうなりますか?
769デフォルトの名無しさん:2006/12/01(金) 08:33:54
0かそれ以外が返ってくる
770デフォルトの名無しさん: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");
}
771デフォルトの名無しさん:2006/12/01(金) 09:04:09
>>745
すいません。これです。

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

×else return nibuntansaku(n,data,low,high-1);
○else return nibuntansaku(n,data,low,mid-1);
774デフォルトの名無しさん: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;}
775デフォルトの名無しさん: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となってしまうみたいなのですが、
これも理由がわかりません。

お願いします。
776デフォルトの名無しさん:2006/12/01(金) 10:37:27
>>775
struct person s[4];
int x[4];

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

               -― ̄ ̄ ` ―--  _          だめぽ・・・・・
          , ´  ......... . .   ,    ~  ̄" ー  _
        _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、
       , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
    ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
   と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
  (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
       ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: : ●::::::::::::::::::::::: : : :_>
          ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
        (__  ̄~" __ , --‐一~ ̄ ̄ ̄
           ̄ ̄ ̄
782デフォルトの名無しさん:2006/12/01(金) 11:19:24
人数が増えて(ry
783デフォルトの名無しさん: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;}
784デフォルトの名無しさん: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] その他の制限: なし

よろしくお願いします
785デフォルトの名無しさん: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;
}
786783:2006/12/01(金) 13:07:03
>>783
free(s);を忘れた。
787デフォルトの名無しさん:2006/12/01(金) 13:38:15 BE:62112184-2BP(202)
788714:2006/12/01(金) 14:00:52
あの〜〜

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




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

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

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

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

>>763
なるほど 勉強になったわ
トンクス
795デフォルトの名無しさん:2006/12/01(金) 18:17:36
つまりアレか
片方が必死なのかと思ったらもう一方も必死なんだな
796デフォルトの名無しさん: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日
797デフォルトの名無しさん: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列ですが、行列のサイズはどの数字でも対応できるものでお願いします。
798デフォルトの名無しさん:2006/12/01(金) 19:09:38
>>796
inputfileの仕様
799デフォルトの名無しさん: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 の場合は上の出力はしない.
800デフォルトの名無しさん: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];
}
}

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

inputfileの区切り文字は何?
802デフォルトの名無しさん:2006/12/01(金) 20:55:51
区切り文字は空白だと思います
803デフォルトの名無しさん:2006/12/01(金) 21:38:20
 大学の講義の[C言語」という時間の課題として
{1〜10までの乱数を10個発生させて表示させる。ただし、1度出た数字は除外する。} という課題を出されたのですが、教科書を見ながら解いても 同じ数字が重複して表示されてしまうプログラムになってしまいどうしていいかわかりません。
 どなたか手ほどきをおねがいします
804デフォルトの名無しさん:2006/12/01(金) 21:42:38
>>803
教科書を見ながら解いた結果を貼るか、>>1を読んで書き直して丸投げするか
好きな方を選べ
805デフォルトの名無しさん: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++;
}
806デフォルトの名無しさん: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を表示しないといけないと言われました。
何度もすいませんが、お願いします
807デフォルトの名無しさん:2006/12/01(金) 22:21:47
>void型は変えずに
808デフォルトの名無しさん:2006/12/01(金) 22:27:27
ソートとリストで腹の中がパンパンだぜ
809デフォルトの名無しさん:2006/12/01(金) 22:38:32
>>806
return の変わりに条件判定とprintf文を書けば良いだけでないの?
810デフォルトの名無しさん: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まで

よろしくお願いします。
811デフォルトの名無しさん: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]);
}
}
812715:2006/12/02(土) 00:49:31
>>718
レス遅くなってスミマセン。ありがとうございました!
813デフォルトの名無しさん: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++;
}
適当にこんな感じでも良いでしょ
814デフォルトの名無しさん:2006/12/02(土) 01:23:52
うわ!なんか似たソースのっかってるし!!
びっくりだ
815デフォルトの名無しさん:2006/12/02(土) 03:34:13
shuffle
816デフォルトの名無しさん: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;
}

817デフォルトの名無しさん:2006/12/02(土) 06:17:56
>813
なんか色々とおかしくない?
818813:2006/12/02(土) 06:26:50
おかしいね
何も見ずに書き込んだらやっぱだめだね
819デフォルトの名無しさん: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;
}
820デフォルトの名無しさん:2006/12/02(土) 10:39:00
パスカルの法則で

11
121
1331
14641
のように出力されるようにするにはどのように作ればいいですか。
821デフォルトの名無しさん: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

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

823デフォルトの名無しさん:2006/12/02(土) 12:08:30
1年なら普通だろ
824デフォルトの名無しさん:2006/12/02(土) 12:12:51
二ヶ月やって>>701ができないなら、これからの課題も全部ここに丸投げだな
825デフォルトの名無しさん:2006/12/02(土) 12:22:34
へへん。
プログラミングだけが人生じゃないさ。
難問奇問な宿題はさっさと丸投げして人生を楽しもう。
826デフォルトの名無しさん:2006/12/02(土) 13:56:03
プログラマを顎で使って今までごめんなさい orz
自分で勉強してみて難しさが分かりました orz
これからは期限守らなくても大目に見ますね。
827デフォルトの名無しさん:2006/12/02(土) 14:01:12
>>826
当たり前だカス
828デフォルトの名無しさん:2006/12/02(土) 14:15:57
>>827
ニートは黙ってろ
829デフォルトの名無しさん: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;
}
830デフォルトの名無しさん:2006/12/02(土) 14:35:52
#define N 5 →#define N 50
831デフォルトの名無しさん:2006/12/02(土) 15:26:00
796の問題難しくないですか?
832デフォルトの名無しさん:2006/12/02(土) 15:27:09
796の問題難しくないですよ!
833デフォルトの名無しさん:2006/12/02(土) 15:33:04
難しくは無いがめんどくさい
inputfile : ソートするデータが入ったファイルの名前.
      ファイル中のデータの並べ方は問わない.データ数は1000個です
outputfile : ソート後のデータを出力するファイルの名前
      ファイル中のデータの並べ方は,inputfileと同じにすること.

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

とりあえず関数は全部書いたけどmain作るのがめんどくさくて絶賛放置中
834デフォルトの名無しさん:2006/12/02(土) 15:47:12
区切り文字はスペースで統一するらしいです。さきほど先生にうかがいました
835832:2006/12/02(土) 15:49:09
833さん、頭いいですね!
836デフォルトの名無しさん:2006/12/02(土) 15:49:58
>>834
>ファイル中のデータの並べ方は,inputfileと同じにすること.
じゃあこれは何を意味するの?
あとファイル内のデータは数値?文字列?
837デフォルトの名無しさん:2006/12/02(土) 15:54:19
あと比較回数を表示することってあるけど軸選びに使う比較も回数に含めるの?
838デフォルトの名無しさん:2006/12/02(土) 16:01:26
それは含めないらしいです。あとファイル中のデータの並べ方は,inputfileと同じにすること.
ていうのは、inputfileに入っているデータと同じ数字が入っているならいいらしいです。あとファイル内のデータは数字です
839デフォルトの名無しさん:2006/12/02(土) 16:15:32
あと何を伝えて無いんだ?
840デフォルトの名無しさん:2006/12/02(土) 16:19:08
これで全部伝えました。遅くなってすみませんでした
841デフォルトの名無しさん:2006/12/02(土) 16:19:50
そうか。では先生をここに呼んで来い。
842デフォルトの名無しさん:2006/12/02(土) 16:27:22
すみません。先生はもういないです
843デフォルトの名無しさん:2006/12/02(土) 16:32:17
泣いた
844デフォルトの名無しさん:2006/12/02(土) 16:34:27
自分はC言語が苦手で796の問題がぜんぜんわからないのでぜひお願いします
845デフォルトの名無しさん: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] その他の制限: よろしくお願いします。
846デフォルトの名無しさん:2006/12/02(土) 16:58:53
>>845
またお前か
847デフォルトの名無しさん:2006/12/02(土) 17:26:51
>>796
今からやるから期待しないで待ってろ
21時までに書き込み無かったら俺からの回答は諦めろ
848831:2006/12/02(土) 17:38:22
833さん、僕も今さっき関数ができたんですけどmainがどうしてもできません。
できそうですか?
849デフォルトの名無しさん:2006/12/02(土) 17:38:58
847さん、ぜひお願いします
850デフォルトの名無しさん:2006/12/02(土) 17:43:49
>>848
その関数を晒してもらおうか
851848:2006/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;
}
まだバブルソートしかできてません
852847:2006/12/02(土) 17:49:37
Main以外出来てるのならすぐだろうよ。そのデータ読んでmy_qsortみたいな関数を呼ぶだけで。
それを晒してくれよ。Mainなら書くよ
853847:2006/12/02(土) 17:50:38
>>853
ちょwwwwwwwwwwwwww
854デフォルトの名無しさん:2006/12/02(土) 17:52:10
もう何がなんだか・・
855848:2006/12/02(土) 17:53:50
バブルソートはできたんですけど796のほかの関数とかmainがまったくわかりません。
856デフォルトの名無しさん:2006/12/02(土) 17:57:44
人それを全くできてないと云う
857デフォルトの名無しさん:2006/12/02(土) 17:57:58
>>853
大変だwww無限ループにwww
858デフォルトの名無しさん:2006/12/02(土) 18:09:33
スタックオーバーフロー
859デフォルトの名無しさん:2006/12/02(土) 18:13:18
とりあえず796は暇ならinputfileでも作ってどこかにうpしておいてくれ
締め切り日曜みたいだし847からの解答が無ければ俺がのんびり解こう
860796:2006/12/02(土) 19:05:04
inputfileの1000個のデータです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3064.txt
861デフォルトの名無しさん:2006/12/02(土) 19:06:53
正気か?
862847:2006/12/02(土) 19:32:29
まずは謝ろう。問題を流し読みしてただのクイックソートじゃんとなめてた。すまない。
これは面倒くさいな。とりあえず前言撤回。俺はやってないことにしておいてくれ。

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

866デフォルトの名無しさん:2006/12/02(土) 20:07:07
失敗
867デフォルトの名無しさん:2006/12/02(土) 20:12:19
裏切りを経験するのも人生には必要なのかもしれないな。
他に方法がないからと言って判断を完全に預けてしまうのは
独立した個人としての人格の尊厳に関わるのではないだろうか。
868デフォルトの名無しさん: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 ヽ
869デフォルトの名無しさん:2006/12/02(土) 20:26:35
何の責任を負ってるわけでもないのに裏切りといわれても困るお^^;
870デフォルトの名無しさん:2006/12/02(土) 20:49:25
>>796
ちゃんと動作確かめてないけど、こんなんでいいのかな?

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


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

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

874デフォルトの名無しさん:2006/12/02(土) 21:37:12
>>873
2ch閉鎖か
875デフォルトの名無しさん: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まで
876デフォルトの名無しさん: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;
}
877 ◆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] その他の制限: 配列を利用する
          関数を利用しない

つい最近習い始めたばかりの初心者です。
宜しくお願いします
878デフォルトの名無しさん:2006/12/02(土) 23:25:19
>>877
問題文の読み込むってファイルから?
ファイルから読むんなら関数使っちゃうよね?
879デフォルトの名無しさん:2006/12/02(土) 23:32:27
ユーザ定義関数を利用しない、って意味じゃないかと。
880 ◆s2cIPM3PTs :2006/12/02(土) 23:38:13
>>878
>>879
すいません。879さんの言うとおりです。
881デフォルトの名無しさん: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日
882デフォルトの名無しさん: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日
883デフォルトの名無しさん: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;
}
884デフォルトの名無しさん:2006/12/03(日) 00:59:05
>>882
>44,44と-0,1111×(10の2乗)
俺の脳がコンパイルエラーを返した
885デフォルトの名無しさん:2006/12/03(日) 01:07:51
886デフォルトの名無しさん:2006/12/03(日) 01:08:47
ぐぼぉっ、よくみたらC++か。適当に書き換えてきまつw
887デフォルトの名無しさん:2006/12/03(日) 01:16:45
888デフォルトの名無しさん:2006/12/03(日) 01:20:30
>>881
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3070.cpp
すまそ、細かいが念のためにちょい修正
889デフォルトの名無しさん:2006/12/03(日) 03:06:06
>>870
これはひどい・・・
890デフォルトの名無しさん:2006/12/03(日) 03:17:45
やはりトラップか
891デフォルトの名無しさん:2006/12/03(日) 03:49:05
892デフォルトの名無しさん:2006/12/03(日) 04:09:36
>891
1.平均と等しい数値が平均より小さい数になる。
2.sa_maxが初期化されてない
893デフォルトの名無しさん:2006/12/03(日) 04:22:25
894デフォルトの名無しさん: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'を書き込む必要はないのですか?

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

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

>>898
なるほど…。
よく分かりました。サンクス!
900デフォルトの名無しさん:2006/12/03(日) 07:42:51
全然関係ないけど、この本いいな、なんか…
「やさしいC 高橋 麻奈」
901デフォルトの名無しさん:2006/12/03(日) 08:06:43
>>899
コンパイルオプションにスタックサイズを与えればいいけど
そこまで考えているようじゃないのでヒープって言っちゃった
902デフォルトの名無しさん:2006/12/03(日) 08:14:54
>>900
麻奈って名前がいいだけだろw
903デフォルトの名無しさん:2006/12/03(日) 08:40:05
狙って付けたなこのタイトルは。
904デフォルトの名無しさん:2006/12/03(日) 08:45:56
「はじめてのC 椋田實」よりはいいかな。
905デフォルトの名無しさん:2006/12/03(日) 08:54:08
Cは習いましたがAすら実行できません(´・ω・`)
906デフォルトの名無しさん:2006/12/03(日) 08:55:36
まずアセンブラからはじめよ という中国の諺がある
907 ◆s2cIPM3PTs :2006/12/03(日) 12:23:40
>>893
>>892
夜中なのにどうもありがとうございました。
助かります(^^)!
908 ◆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] その他の制限: 特にありません
         
連続ですいません。
宜しくお願いします。
909デフォルトの名無しさん: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;
}
910デフォルトの名無しさん:2006/12/03(日) 13:20:31
>>906
アセンブラ
ベーシック
C
911デフォルトの名無しさん:2006/12/03(日) 13:25:55
Assembler
BrainFuck
C
です
912デフォルトの名無しさん:2006/12/03(日) 13:29:14
>909
data[n]
913722:2006/12/03(日) 14:30:24
二分(探査)木のわかりやすい参考サイトを教えてくだしあ><
914デフォルトの名無しさん:2006/12/03(日) 14:37:05
915デフォルトの名無しさん: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] その他の制限:
916 ◆s2cIPM3PTs :2006/12/03(日) 16:48:36
>>909
ありがとうございました(^^)。
参考にさせていただきます。


917デフォルトの名無しさん:2006/12/03(日) 16:52:44
918デフォルトの名無しさん: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日
919デフォルトの名無しさん: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] その他の制限: 特になし

よろしくお願いします。
920#: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] その他の制限: 配列を利用しない
          関数を利用しない

問題がたまっています・・・(汗)。
助けてください。
921デフォルトの名無しさん:2006/12/03(日) 17:56:42
>>920
main関数とかprintf関数とか利用できないのは厳しすぎるなぁ。
922#:2006/12/03(日) 18:04:52
>>921
定義関数以外という意味です。
main関数、printf関数は使えます。
説明不足ですいません。
923デフォルトの名無しさん: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);
}
924デフォルトの名無しさん: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;
}
925デフォルトの名無しさん:2006/12/03(日) 18:29:01
いい加減C/C++にも"Hello World!"を出力する関数を標準装備させたほうがいいと思う
926デフォルトの名無しさん:2006/12/03(日) 18:30:17
>>925
必要なの?
927デフォルトの名無しさん: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

928デフォルトの名無しさん:2006/12/03(日) 18:40:05
よろしくお願いいたします。
929デフォルトの名無しさん:2006/12/03(日) 18:42:21
>>927
10が入力されたら
0-10 と 10-20 の両方の度数が増えるのか?
930#:2006/12/03(日) 18:52:53
>>923
>>924
すぐに答えていただきありがとうございました。
とても助かります。
931デフォルトの名無しさん: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;
}
932デフォルトの名無しさん: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++;
}
933デフォルトの名無しさん: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だっけ?
934931:2006/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;
}
935デフォルトの名無しさん:2006/12/03(日) 20:12:30
>>925
そんなわけのわからない関数はHQ9+以外ではいらんだろ。
936915:2006/12/03(日) 21:02:30
>>917
レスありがとうございます。
そこのman on WWWでも検索したのですが、
もちろん、それぞれの関数自体はあるんですけど、
宿題で必要な内容がほとんど載ってないんですよ。
937デフォルトの名無しさん:2006/12/03(日) 21:08:46
>>936
宿題で必要な内容は >>917 にすべて載ってるっしょ?
938デフォルトの名無しさん:2006/12/03(日) 21:36:48
>>936
> 宿題で必要な内容がほとんど載ってないんですよ。 
じゃあほとんど分かったてことだな
後はイモヅル式にググれカス
939デフォルトの名無しさん:2006/12/03(日) 22:08:22
a[500][600]程度の領域を確保したいのでデフォルトのスタックサイズを変更したいと思ったんですが
ttp://202.33.253.145/qanda/cbuilder/c0009366.html
このページ見つけたところまでで詰まってしまいました…。
具体的には何をどうすればいいのでしょうか…。
940デフォルトの名無しさん:2006/12/03(日) 22:10:03
>>939
変数宣言する個所の先頭に static と書いてみるといいんじゃないかな
941デフォルトの名無しさん:2006/12/03(日) 22:11:00
>>939
そのページのとうりにやればいいだろ…
942デフォルトの名無しさん:2006/12/03(日) 22:17:32
ヘボくてごめん、無償版を使っているのだけれど
>メニューの [ プロジェクト | プロジェクトオプション | リンカ | 予約スタックサイズ ]
といわれても、borland/bcc55/フォルダのどこをどう弄ればいいのか分からないんだ…。
943デフォルトの名無しさん:2006/12/03(日) 22:34:35
Borland C++Compiler 5.5使ってるのに、Borland C++Builderのページ見ても解決するわけがないだろう。

bcc32 -lS:スタックサイズ(16進数) hoge.c
944デフォルトの名無しさん:2006/12/03(日) 22:35:49
>>942
bcb5tool.hlp で ilink32 の /S オプションの項をみるといいよ
945674:2006/12/03(日) 22:49:24
それ名城大学だ
うちの大学、2chやWikiで片付けてる奴かなり多いんよ
946デフォルトの名無しさん:2006/12/03(日) 22:51:09
げ、アンカー入れるつもりが名前欄に・・・674、スマン
947デフォルトの名無しさん: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;
}
948デフォルトの名無しさん:2006/12/03(日) 23:09:16
>>943-944
なるほどー!
実行するときに
% bcc32 -lS:0x00200000 hoge.c
とかすると設定を弄ってコンパイル出来るのか!

あと使ってるエディタソフトに「コンパイルオプションの設定」とあって
テキストスペースがあったのが意味が分からなかったけれど、この
「-lS:0x00200000」の部分を指していた訳ですね。
助かりました。サンクスコ
949デフォルトの名無しさん: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)がリンク時に必要なオプション

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

参考にさせていただきます。
951950:2006/12/03(日) 23:24:25
次スレ立てるのは950ですか?
もしそうなら、自分は立てられないので代わりにどなたかお願いします。
952デフォルトの名無しさん:2006/12/03(日) 23:26:18
>>950
質問する前にスレを読み返した君はエライ
953936:2006/12/03(日) 23:26:41
>>949
あ、そういうことだったのですか…。完全に見方が解ってませんでした。
「関数の戻り値は○○です。」と書いてあるのかと思ってました。
どうもありがとうございました。
954デフォルトの名無しさん:2006/12/03(日) 23:26:53
んなもん適当で
955デフォルトの名無しさん: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になります。
このド素人にアドバイスお願いします。
956デフォルトの名無しさん:2006/12/03(日) 23:41:44
>>955
浮動少数点での計算は十中八九誤差が出ます
それだけ
957デフォルトの名無しさん:2006/12/03(日) 23:42:04
>>955
よくあること気にしない
958デフォルトの名無しさん:2006/12/03(日) 23:42:28
>>955
仕様です。
959デフォルトの名無しさん:2006/12/04(月) 00:00:19
>>955
printf("%.1f",hoge);
960デフォルトの名無しさん:2006/12/04(月) 00:07:44
[1] 授業単元:アーキテクチャー
[2] 問題文: C言語の配列とポインターを使って、文字列をひとつ入れて
それぞれの文字が入っているアドレスを出力しなさい。
また、整数データの列を定義してそれぞれの整数が入っている
アドレスを出力しなさい 。
[3] 環境
 [3.1] OS:WindowsXP
 [3.3] 言語: C
[4] 期限: 12月4日10時半
961デフォルトの名無しさん:2006/12/04(月) 00:15:02
次スレ立て人へ

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

「にくちゃんねる」終了のお知らせ
ttp://makimo.to/close.html
962デフォルトの名無しさん: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;
}
963#: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
ありがとうございました(^^。

親切な方ばかりで本当に助かっています。
宜しくお願いします。
964#:2006/12/04(月) 01:42:01
問題の番号間違えました(−−;)。
関数の方が4,5になっています。
すいません(汗)。
965デフォルトの名無しさん:2006/12/04(月) 01:54:35
誰か「C/C++の宿題は流石兄弟におまかせ 27代目」のdatを持ってないか?
持ってたら欲しいんだが。にくちゃんねるにも見当たらない。
966デフォルトの名無しさん:2006/12/04(月) 02:07:10
にくちゃんねるにあるじゃん
967デフォルトの名無しさん:2006/12/04(月) 02:16:39
>>966
途中で切れてるっぽい
968デフォルトの名無しさん: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関数を使用。ポインタだけでかければ
更に可

お願いします。半角スペースがわかりません。。
969デフォルトの名無しさん:2006/12/04(月) 02:29:10
' ' ←半角!
970デフォルトの名無しさん:2006/12/04(月) 02:33:06
>>969
それでエラー出たんです。。。
ってか難しくて無理ぽ。。。
971デフォルトの名無しさん:2006/12/04(月) 02:36:51
半角スペースとは0x20のことだ
972デフォルトの名無しさん:2006/12/04(月) 02:56:43
>>919
候補表示中にポインタがウィンドウ外に行ったとき、
ウィンドウ外をクリックされたときの挙動はどうしたらいい?
973デフォルトの名無しさん: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] その他の制限:ありません、よろしくお願いします
974デフォルトの名無しさん:2006/12/04(月) 03:27:27
975デフォルトの名無しさん:2006/12/04(月) 04:13:56
>>963
逆順ってなんだ?
ヒストグラムのやつはデータに制限無いのか?
976デフォルトの名無しさん: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;
}
977デフォルトの名無しさん: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;
}
}
978デフォルトの名無しさん: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でお願いします
979デフォルトの名無しさん:2006/12/04(月) 06:31:53
>>978
こういう質問をすると、たいがい掛け算九九の計算手順をとらずに
数字をそのまま並べて表示するプログラムを書く人が出てくる、間違いないw
980デフォルトの名無しさん:2006/12/04(月) 06:55:04
”つくる”が難しいな
981デフォルトの名無しさん:2006/12/04(月) 07:05:05
”表示する”なら簡単だなんだけどね
982デフォルトの名無しさん: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;
}
983デフォルトの名無しさん: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");
}
984983:2006/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");
}
985983:2006/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");
}
986!983:2006/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");
}
987デフォルトの名無しさん: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] その他の制限:授業では配列までやりましたが、特に制限はないです。

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

問題文に書いてあるとおりなんだろうからどうしようもないのかもしれんが
990デフォルトの名無しさん: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
991デフォルトの名無しさん:2006/12/04(月) 08:59:29
>990
立てたよ
C/C++の宿題を片付けます 78代目
http://pc8.2ch.net/test/read.cgi/tech/1165190320/
992987:2006/12/04(月) 09:01:13
二次元配列のサイズに規定はありません

あと、読み込む数値は全てキーボードからの入力です
993デフォルトの名無しさん: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の最小値

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

994デフォルトの名無しさん: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次配列 関数の書き方


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

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

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