C/C++の宿題を片付けます 77代目
レス数が1000を超えています。これ以上書き込みはできません。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【前スレ】
C/C++の宿題を片付けます 76代目
http://pc8.2ch.net/test/read.cgi/tech/1162771475/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0002デフォルトの名無しさん
2006/11/21(火) 12:29:120003デフォルトの名無しさん
2006/11/21(火) 13:51:13[2] 問題文:1から1000までの数値のうち、素数だけを抜き出して表示するプログラムを作成せよ。
ここでは、素数であるか否かを判定する関数を作成して使用すること。
《実行例》
1 2 3 5 7 11 13 17 19 23
29 31 37 41 43 47 53 59 61 67
71 73 79 83 89 97 101 103 107 109
113 127 131 137 139 149 151 157 163 167
173 179 181 191 193 197 199 211 223 227
229 233 239 241 251 257 263 269 271 277
281 283 293 307 311 313 317 331 337 347
349 353 359 367 373 379 383 389 397 401
409 419 421 431 433 439 443 449 457 461
463 467 479 487 491 499 503 509 521 523
541 547 557 563 569 571 577 587 593 599
601 607 613 617 619 631 641 643 647 653
659 661 673 677 683 691 701 709 719 727
733 739 743 751 757 761 769 773 787 797
809 811 821 823 827 829 839 853 857 859
863 877 881 883 887 907 911 919 929 937
941 947 953 967 971 977 983 991 997
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:できるだけ早くお願いします。
[5] その他の制限:自分で作ったものでsqrt()ライブラリ関数を使ったのですが、ライブラリ関数は使わず&簡単なプログラムでお願いします。
0004デフォルトの名無しさん
2006/11/21(火) 13:58:25エラ姫の櫛は使った方がいいの?
0005デフォルトの名無しさん
2006/11/21(火) 13:59:52・1は素数じゃない。
・自分で作ったプログラムを晒せ。sqrt()を使わないようにするだけならごく簡単な修正で済むはずだ。
0006デフォルトの名無しさん
2006/11/21(火) 14:00:231って素数なの?
0007デフォルトの名無しさん
2006/11/21(火) 14:01:000008デフォルトの名無しさん
2006/11/21(火) 14:03:22出力はインラインアセンブラか・・・欝だ・・・
00093
2006/11/21(火) 14:11:25期限はだいたいなんですけど、きょう辺りにできれば・・・と思います。
0010デフォルトの名無しさん
2006/11/21(火) 14:13:56int IsPrime(int n){
int i;
if(n<2)
return 0;
else if(n==2)
return 1;
if(n%2==0)
return 0;
for(i=3;i*i<=n;i+=2)
if(n%i==0)
return 0;
return 1;}
int main(){int i,j=1;for(i=1;i<=1000;i++)
if(IsPrime(i)){printf("%3d ",i);if(j%10==0)printf("\n");j++;}return 0;}
空気読まずに貼ってみる。素数判定はWikipediaのコピペだ
0011デフォルトの名無しさん
2006/11/21(火) 14:51:49int 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を完成させたものですが、セグメンテーション違反になります。
どうすればいいでしょうか?
0013デフォルトの名無しさん
2006/11/21(火) 14:59:20スレ違い。
・scanf()の引き数間違い
・2番目のmalloc()の引き数間違い
0014デフォルトの名無しさん
2006/11/21(火) 15:02:08scanf("%d\n",a); <- ここがあやしい
0015デフォルトの名無しさん
2006/11/21(火) 15:10:05#include<stdio.h>
#include<stdlib.h>
int is_minus_one(int value[], int n, int x, int y){
if(x<0 || x>=n || y<0 || y>=n) return 0;
return (value[n*y+x]==-1);
}
int main(void){
int dx_list[]={ 1, 0,-1, 0};
int dy_list[]={ 0, 1, 0,-1};
int x=0, y=0, dx, dy, i, j, n=5, direction=0;
int *value;
value=malloc(sizeof(int)*n*n);
for(i=0;i<n*n;i++) value[i]=-1;
dx=dx_list[direction];dy=dy_list[direction];
for(i=0;i<n*n;i++){
value[n*y+x]=i;
if(!is_minus_one(value, n, x+dx, y+dy)){
direction=(direction+1)%4;
dx=dx_list[direction];dy=dy_list[direction];
}
x+=dx;y+=dy;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf(" %3d", value[n*i+j]);
printf("\n");
}
free(value);
return 0;
}
別解。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int prime[]={2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89,
97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223,
227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359,
367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433,
439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593,
599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659,
661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743,
751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827,
829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, };
int isPrime(int n){if(n<=1000){int i;for(i=0;prime[i]<=n;i++)if (n==prime[i]) return 1;}return 0;}
int main(){int i,j=1;for(i=1;i<=1000;i++) if(isPrime(i)){
printf("%3d ",i);if(j%10==0)printf("\n");j++;}return 0;}
0017デフォルトの名無しさん
2006/11/21(火) 15:43:18[2] 問題文(含コード&リンク): nの値を12とし、nの近似値を求めるプログラムを作成せよ。詳しくは、リンク先の画像をご覧ください。
http://up.kabubu.net/cgi/img2/16802.jpg
[3] 環境
[3.1] OS: Win XP HOME
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
[3.3] 言語: C++
[4] 期限: 本日中にできればありがたいです。。。
よろしくお願いします。
0018デフォルトの名無しさん
2006/11/21(火) 15:54:47これを参考に。
http://pc8.2ch.net/test/read.cgi/tech/1153542424/210
0019デフォルトの名無しさん
2006/11/21(火) 16:13:22#include<stdio.h>
int kaijo(int n){
if(n<2)return 1;
return n*kaijo(n-1);}
int main(){
int n,k;double e=1;
printf(" n n! 1/n! e 誤差\n");
for(n=1;n<=12;n++){
k=kaijo(n);e+=1./k;
printf("%2d %9d %.10f %.10f %.10f\n",n,k,1./k,e,2.7182818285-e);}}
0020デフォルトの名無しさん
2006/11/21(火) 16:31:50printf("12");でいいじゃん
0021デフォルトの名無しさん
2006/11/21(火) 17:45:04nを入力するのに、なんでnじゃなくてaに入れるんだ。
0022デフォルトの名無しさん
2006/11/21(火) 18:05:230で埋めてるつもりなんだろうがループカウンタをiにしてるせいで
未初期化のjを配列の添字にしてしまってる予感
0023デフォルトの名無しさん
2006/11/21(火) 18:09:25前スレ515は中心から外に大きくなってくと思ってたのでそこを修正
#include<stdio.h>
int main(void){
int i, j, k, n;
int **p;
printf("please input! n = ");
scanf("%d",&n);
p = (int **) malloc(sizeof(int *)*n);
for(i=0; i<n; i++) p[i]=(int*) malloc(sizeof(int)*n);
k = 0;
for(i=0; i<n/2+n%2; i++) {
for(j=i; j<=n-i-1; j++) p[i][j] = k++;
for(j=i+1; j<n-i-1; j++) p[j][n-i-1] = k++;
for(j=n-i-1; j>i; j--) p[n-i-1][j] = k++;
for(j=n-i-1; j>i; j--) p[j][i] = k++;
}
for(i=0; i<n; i++) {
for(j=0; j<n; j++) printf("%3d", p[i][j]);
putchar('\n');
}
return 0;
}
0024デフォルトの名無しさん
2006/11/21(火) 19:42:550025前スレ590
2006/11/21(火) 19:43:12俺のも見ろよ〜
再帰はいやか〜
#include <stdio.h> #define N 9 //サイズ
void print(int ary[N][N]);int right(int ary[N][N],int x,int y, int n, int past);int up(int ary[N][N],int x,int y, int n, int past);
int down(int ary[N][N],int x,int y, int n, int past);int left(int ary[N][N],int x,int y, int n, int past);void answer(int ary[N][N], int n);
int main(){ int ary[N][N] = {0}; int n = 0; answer(ary, n); print(ary); return 0;}void answer(int ary[N][N], int n){ int i,j;
for(j =0,i = 1; i <= (N/2 + 1) ; i++,j++){ n = right(ary,j,j,n, i); n = down(ary,i ,N-i,n, i); n = left(ary,N-i,N - i - 1,n, j); n = up(ary,N - i - 1,j, n,j);
}} int right(int ary[N][N],int y,int x, int n, int past){ if(x > N - past || y > N || x < 0 || y < 0)return n; ary[y][x] = n ; right(ary, y, x+1, n +1 , past );
} int down(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N - past || x < 0 || y < 0)return n; ary[y][x] = n; down(ary, y+1,x , n+1 , past );
} int left(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N || x < past || y < 0)return n; ary[y][x] = n; left(ary, y, x-1, n+1 , past );
} int up(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N || x < 0 || y <= past)return n; ary[y][x] = n; up(ary, y-1, x, n+1 , past );
} void print(int ary[N][N]){ int *p = &ary[0][0],i; for(i = 1,p = &ary[0][0]; p <= &ary[N-1][N-1]; p++,i++){ printf("%3d ", *p);
if(!(i % N))putchar('\n');}}
0026デフォルトの名無しさん
2006/11/21(火) 19:45:030027デフォルトの名無しさん
2006/11/21(火) 19:46:030028デフォルトの名無しさん
2006/11/21(火) 19:47:50[2] 問題文(含コード&リンク):中置記法で入力された数式を前置記法 及び後置記法で出力するプログラムを作る
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: ([2006年12月4日まで
[5] その他の制限: とくになし
0029デフォルトの名無しさん
2006/11/21(火) 19:50:28[2] 問題文
[要求仕様]
キーボードより2以上の整数を入力し、その入力した整数が2つの素数の和
として表せるかどうかを調べてその全ての組み合わせを出力し、
最後に組み合わせの数を出力するプログラムを作成せよ。また入力値が2より
小さい時には、警告として「入力ミスです。」と表示してプログラムを終了
するようにせよ。
[強制条件]
関数mainとは別に素数判定に関る関数を用いること。なお入出力は関数main
で行うこと。
[ヒント]
関数isprimeを利用するとよい。
int isprime(int n){
int i;
if(n<=1)
return0;
for(i-2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
[表示結果]
input
30
30は素数7と素数23の和です。
30は素数11と素数19の和です。
30は素数13と素数17の和です。
和が30になる2つの素数の組み合わせは3つあります。
0030デフォルトの名無しさん
2006/11/21(火) 19:51:59[3.1] OS:unix
[3.2] gcc
[3.3] 言語:C
[4] 期限: 2006年11月22日15時まで
[5] その他の制限: 関数を習い始めたばかりなのでできるだけ簡単なもの
にしていただけると嬉しいです。
0031デフォルトの名無しさん
2006/11/21(火) 20:10:11#include <stdio.h>
int isprime(int n){
int i;
if(n<=1)
return 0;
for(i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int c=0,i,n;
printf("input\n");
scanf("%d",&n);
if(n<2){
printf("入力ミスです。\n");
return 1;
}
for(i=2; i<=n/2; i++)
if((isprime(i)==1)&&(isprime(n-i)==1)){
printf("%dは素数%dと素数%dの和です。\n",n,i,n-i);
c++;
}
printf("和が%dになる2つの素数の組み合わせは%dつあります。",n,c);
return 0;
}
0032デフォルトの名無しさん
2006/11/21(火) 21:25:25ありがとう御座います。
まさか、こんなに早く答えていただけるとは思いませんでした。
0033デフォルトの名無しさん
2006/11/21(火) 21:26:17[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):鶴と亀の足の総数(亀は4本、鶴は2本と考える)が与えられると、考えうるそれぞれの頭数の全てのケースを列挙、出力し、
最後にケースの総数を出力するプログラムを作成せよ。入力された総数に対して解がない場合は”解なし”と表示すること。
実行例
亀と鶴の足の総数を入力せよ:24
鶴=0 亀=6
鶴=2 亀=5
鶴=4 亀=4
鶴=6 亀=3
鶴=8 亀=2
鶴=10亀=1
鶴=12亀=0
7通りあります
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限:明日
[2] 問題文 ファイル名:kadai01.c
◆『家』と『雪だるま』の絵を描くプログラムを作成しなさい。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:viエディタ
[3.3] 言語:C言語
[4] 期限:2006年 12月4日(月)
[5] その他の制限:これより示す「kadai01.c」のプログラムを修正してお願いします。
一般的な家と雪だるまの絵であれば、どのようなものでも構いません。
クリスマスが近いということもあるので、個性あふれるものをお願いします。
尚、プログラムが長いため3回くらいに分けて書き込みます。
#include <stdio.h>
#include <math.h>
char pixel[XSIZE][YSIZE];
Canvaslnit(char moji){
int x,y;
for(y=0;y<YSIZE;y++)for(x=0;x<XSIZE;x++) pixel[x][y]=moji;
}
CanvasPrint(){
int x,y;
for(y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++) printf("%c",pixel[x][y]);
printf("\n");
}
}
Circle(char moji, int x0, int y0, int r){
int x,y;
float t;
for(t=0; t<6.28; t+=0.01){
y=r*cos(t)/2+y0;
x=r*sin(t)+x0;
0036デフォルトの名無しさん
2006/11/21(火) 21:41:51#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++使ってるから許してくれ
#define XSIZE 80
#define YSIZE 25
#include <stdio.h>
#include <math.h>
#include "Canvas.c"
main() {
Canvaslnit('.');
Circle('*', XSIZE/2, YSIZE/2,12);
boxf('a',20,20,24,24);
line('&',24,24,60,10);
CanvasPrint();
}
0038デフォルトの名無しさん
2006/11/21(火) 21:50:32>>1のアップローダー使ってくれると見やすくていいんだけど
わかりました。
今やってみます。
0040デフォルトの名無しさん
2006/11/21(火) 22:00:04[2] 問題文(含コード&リンク):ファイルを読み込み、各行が逆順に出るようなプログラムを書きなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:mingw-jp
[3.3] 言語:C、C++
[4] 期限:2006年11月24日
[5] その他の制限:
0041デフォルトの名無しさん
2006/11/21(火) 22:11:49>個性あふれるものをお願いします。
お前の個性を出せよwww
アップローダーに投稿し終えました。
0043デフォルトの名無しさん
2006/11/21(火) 22:13:38個性あふれ過ぎて家にも雪ダルマにも見えないの作ればいいんじゃね?
0044デフォルトの名無しさん
2006/11/21(火) 22:14:09そうしたらアップしたファイルへのリンクを貼ってくれるともっと分かりやすいんだ
何回もスミマセン
こちらです。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi
0046デフォルトの名無しさん
2006/11/21(火) 22:27:08Circle()が途中で切れてるぜ?というかファイルがあるならそれうpれってことだと思うんだ
0047デフォルトの名無しさん
2006/11/21(火) 22:27:38それはひょっとしてギャグでやっているのか
0048デフォルトの名無しさん
2006/11/21(火) 22:27:56すみませんC++でやってもらえるとありがたいです
0049デフォルトの名無しさん
2006/11/21(火) 22:33:00#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++に直しただけだけど。
ファイルは学校のPCに保管してあるので、今は手元にないんです。
先生が配布したプログラムはCircle()は途中で終わっているので、
何とも・・・OTL
ちなみにこの状態で実行すると、「kadai01.c」は描きかけの状態で出てきます。
これを修正して「家」と雪だるまを描くプログラムを作れってのが今回の課題です。
>>47
ここの板初心者なもんで、色々とわからない点がありまして・・・
0051デフォルトの名無しさん
2006/11/21(火) 22:45:560052デフォルトの名無しさん
2006/11/21(火) 22:55:41ありがとうございました。
Circle()の続きがわかりました。こうですね。
"kadai01.c"に挿入されているプログラム「Canvas.c」
#include <stdio.h>
#include <math.h>
char pixel[XSIZE][YSIZE];
・・・・途中略・・・・
y=r*cos(t)/2+y0;
x=r*sin(t)+x0;
if((x<XSIZE)&&(y<YSIZE))pixel[x][y]=moji;
}
}
これが「Canvas.c」です。
迷惑かけてしまいスミマセン・・・
0054デフォルトの名無しさん
2006/11/21(火) 23:53:14[2] 問題文(含コード&リンク):X=a*a*b*cのように定義されたXがある。ただしa,b,cは2以上の正の整数とする。
Xに値が読み込まれると上式を満たすa,b,cの組み合わせを全て列挙、出力し、さらにその組み合わせの総数を出力するプログラムを作成せよ。
解の範囲を要領よく限定すること。ただし、解が存在しない場合は「0通り」と出力し、プログラムはXに0が読み込まれるまで繰り返し返すものとする。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++/
[4] 期限:明日
[5] 多重ループまでやりました。
0055デフォルトの名無しさん
2006/11/21(火) 23:54:23そう思うのなら最初から自力でやれよ。
0056デフォルトの名無しさん
2006/11/21(火) 23:58:36ここに依頼してくる奴に教育でも施してる積もりか?
0057デフォルトの名無しさん
2006/11/21(火) 23:59:00下のプログラムに付け足して以下のプログラムを作成せよ。
繰り返し構文を用いて、リストの先頭から順番に学籍番号と数学の点数を
表示する。
・リストを先頭からたどっていくポインタst_pを宣言して使用し、まず
st_p = st_firstとする。
・リストの最後ではnext == NULLとし、これを利用する。
#include<stdio.h>
struct student{
char g[8]; /*学籍番号*/
int x; /*数学の点数*/
struct student *next
};
int main(void){
struct student *st_a, st_b;
struct student *st_first;
st_a = (struct student *)malloc(sizeof(struct student));
st_b = (struct student *)malloc(sizeof(struct student));
/*値の代入部は省略*/
st_first = st_a;
st_a->next = st_b;
st_b->next = NULL;
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日の朝10時
0058デフォルトの名無しさん
2006/11/22(水) 00:02:51最近依頼の量>>解答の量になってるからなあ
基本的な宿題をここに解かせた奴はその後の宿題全部ここに解かせて
ますます依頼の量を増やすだけだろ
0059デフォルトの名無しさん
2006/11/22(水) 00:11:30#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;
}
006059
2006/11/22(水) 00:20:59for(i=2; i*i<=x/4; i++){
for(j=2; j<=x/(i*i)){
for(k=2; j<=x/(i*i*j){
0061デフォルトの名無しさん
2006/11/22(水) 00:29:02なんでそれが依頼者に文句をいうことの理由になるのか分からない。
それに、そもそも回答が追い付かなかったところで、困るのは依頼者であって
回答者じゃないだろ。回答者は好きなときに好きなだけ答えれば良いんだから。
本当のところをいうと、確かに俺も今のこのスレは余裕がなさすぎて、
事務的過ぎて、つまらないと思うが、それに対して何かできるわけでもない。
006259
2006/11/22(水) 00:30:54それは自分でなんとかしてくれ。
0063デフォルトの名無しさん
2006/11/22(水) 00:35:04お願いします ありがとうございましたくらいは欲しいよな
回答が本当にそれでよかったのか気になるし。
0064デフォルトの名無しさん
2006/11/22(水) 00:38:53ここに来るな
0065デフォルトの名無しさん
2006/11/22(水) 00:39:000066デフォルトの名無しさん
2006/11/22(水) 00:57:47st_p = st_first;
while(st_p) {
puts(st_p->g);
printf(" %d ", st_p->x);
st_p = st_p->next;
}
0067デフォルトの名無しさん
2006/11/22(水) 01:16:15作ってもいいが依頼者は絶対使わないし無意味だと思う
0068デフォルトの名無しさん
2006/11/22(水) 01:23:22是非作ってくれ。期待してる。
0069デフォルトの名無しさん
2006/11/22(水) 01:23:38ウィキでキーワード検索できたら重宝するけどなー
77スレも消費してたら似たような宿題が頻出してるだろうに・・
それとも質問者にも回答者にも丸投げの美学みたいなものがあるのかな
007059
2006/11/22(水) 01:24:06for(i=2; i*i<=x/4; i++) {
for(j=2; j<=x/(i*i*2) {
if(x/(i*i*j)>=2 && x%(i*i*j)==0){
cout << "a = " << i << " b = "<< j << " c = " << k << endl;
c++;
}
}
}
>55,>56,>58,>61.>63,>64,>65,>67,>68
なんのためにこのスレにいるの?
0071デフォルトの名無しさん
2006/11/22(水) 01:24:38どうせ助けるんなら丸投げするような奴よりは
自分なりに考えたけど分からなかったという奴を助けたい
0072デフォルトの名無しさん
2006/11/22(水) 01:32:02スレの無駄だから過去ログ探せ糞ども
007359
2006/11/22(水) 01:33:27k → x/(i*i*j)
0074デフォルトの名無しさん
2006/11/22(水) 01:36:43何でそんなに必死なの?
0075デフォルトの名無しさん
2006/11/22(水) 01:37:51面白い問題を見つけて、解いて、コードを自慢するため。
>>71
もちろんそれはお前の勝手だが、やはり依頼者に文句をいう理由にはなっていないような。
0076デフォルトの名無しさん
2006/11/22(水) 01:38:11何でそんなに必死なの?
0078デフォルトの名無しさん
2006/11/22(水) 04:37:53[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)は別々なので。プログラムを始めて半年超くらいなので,よろしくお願いします。(^^;
そもそも宿題代行しても依頼者は助からない。
必要な能力が身に付かない上に、能力に応じた評価を得られないんだから。
ここで宿題に回答するのは丸投げ厨に対する最高の嫌がらせだ。
0080デフォルトの名無しさん
2006/11/22(水) 10:37:00ここで質問するような奴はプログラミング能力を必要としていないだろうし
課題さえ提出すれば評価は得られる
だいたい2chだから質問者回答者共に変に煽ったりする奴がいても不思議ではないし
そんなの気にしても意味ないと思う
一番言いたいことは
性帝が何を偉そうに!
ってことだ
0081デフォルトの名無しさん
2006/11/22(水) 10:57:34[2] 問題文:最大10件の整数を格納する配列を宣言する。
-1が入力されるまで、もしくは、最大件数(10件)までループで入力を行い、
それを逆順に表示するプログラムを作成せよ。
#include<stdio.h>
#define max 10
int main(){
int array[max];
int i;
printf("*****Enter Number*****\n");
for(i=0;i<10;i++){
printf("Num(%.2d):",i+1);
scanf("%d",&array[i]);
if(array[i]==-1)
break;
}
printf("\n*****Display Number*****\n");
for(i=10;i>=0;i--){
printf("Num(%.2d):%6d\n",i+1,array[i]);
}
return 0;
}
自分でこんなカンジに作ってみたのですが、だめでした。
修正をお願いします。。。
もし根本的に間違っていたらよろしくお願い致します。
[3] 環境
[3.1] OS:windows xp
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今日中
[5] その他の制限:ポインタはここでは使用してはいけないそうです。
0082デフォルトの名無しさん
2006/11/22(水) 11:12:21for(i=10;i>=0;i--) → for(;i>=0;i--)
-1が表示されてもいいならこれで
008381
2006/11/22(水) 11:16:59できれば-1だけを表示させたくないんですが。。。
それは可能でしょうか?
0084デフォルトの名無しさん
2006/11/22(水) 11:18:14for(i-=1;i>=0;i--)
に修正すれば-1も表示されなくなる
0085デフォルトの名無しさん
2006/11/22(水) 11:19:01008681
2006/11/22(水) 11:21:08ありがとうございます♪
能力に見合わない評価は何の役にも立たないどころか有害でしかない。
まあ学生さんには分からないかも知れんがね。
0088デフォルトの名無しさん
2006/11/22(水) 11:45:19殺(ry
ゆず(ry
0089デフォルトの名無しさん
2006/11/22(水) 12:02:19f(x)=x{sin(10πx)+2cos(10πx)+1.0 (-1≦x≦2)
f(x)の値を最大にするxの値とf(x)の値を求めよ。
0090デフォルトの名無しさん
2006/11/22(水) 12:04:51[2] 問題文(含コード&リンク):
以下の2つのファイルを2つの方法でクロマキー合成せよ。
:ファイルはこれです。→ttp://uploda.en.tc/index.cgi?md=fl&file=1164137430%2e%2erar
(1)RGBで変換
(2)HSVで変換
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Vsual C++ 6.0
[3.3] 言語: C
[4] 期限: 今週中
[5] その他の制限: ・数字以外は入力を受付けない
・一等6桁、二等下5桁、三等下4桁、四等下2桁
・自分の葉書番号は何度でも入力可にする
・上位の等が当たったら下位の等は当たらないようにする
以上です、宜しくお願いします
0091デフォルトの名無しさん
2006/11/22(水) 12:48:090092デフォルトの名無しさん
2006/11/22(水) 12:56:30画像処理とお年玉年賀宝くじを組み合わせた課題か.....
0093デフォルトの名無しさん
2006/11/22(水) 18:29:14[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi
No.3018
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年11月23日17時まで
[5] その他の制限: いままで講義で習ったのは、基礎、配列程度。
よろしくお願いします。
0094デフォルトの名無しさん
2006/11/22(水) 19:06:35こーやってtxtへリンクを貼ると(見る側が)便利だよ
0095デフォルトの名無しさん
2006/11/22(水) 20:02:320096デフォルトの名無しさん
2006/11/22(水) 20:31:450097デフォルトの名無しさん
2006/11/22(水) 20:40:53009878
2006/11/23(木) 00:43:38つか、90さん、ファイルの中身がどうあれ、私に断りもなくファイルのリンクを
貼るのは、いかがなもんでしょうか?
0099デフォルトの名無しさん
2006/11/23(木) 00:45:19ワロタ
010078
2006/11/23(木) 00:55:370101デフォルトの名無しさん
2006/11/23(木) 02:15:02先生に断りもなくファイルをアップして公開のは、いかがなもんでしょうか?
分かったらさっさと削除せんかいボケナス!
0102デフォルトの名無しさん
2006/11/23(木) 02:15:03[2] 問題文(含コード&リンク):ファイルを読み込み、各行が逆順に出るようなプログラムを作る。
条件・一行の文字数や、行数の制限を行わない事。
・同じファイルを二回以上オープンしない事。
・メモリに異常が発生した場合は、検知し、確実に異常終了させる事。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:mingw-jp
[3.3] 言語:C++
[4] 期限:2006年11月24日
[5] その他の制限:
0103デフォルトの名無しさん
2006/11/23(木) 02:33:25#include <iostream>
#include <fstream>
#include <string>
#include <vector>
int main()
{
std::ifstream ifs("ファイル名");
std::string str;
std::vector<std::ios::pos_type> vpos;
std::ios::pos_type tmp;
while (tmp = ifs.tellg(), std::getline(ifs, str))
vpos.push_back(tmp);
ifs.clear();
std::vector<std::ios::pos_type>::reverse_iterator ipos = vpos.rbegin();
while (ipos != vpos.rend()) {
ifs.seekg(*ipos);
std::getline(ifs, str);
std::cout << str << std::endl;
++ipos;
}
}
0104デフォルトの名無しさん
2006/11/23(木) 02:47:390105デフォルトの名無しさん
2006/11/23(木) 02:52:35vectorやstringは勝手に例外投げるし、敢えてtryブロックにする
必要もないかと。
0106デフォルトの名無しさん
2006/11/23(木) 03:06:550107デフォルトの名無しさん
2006/11/23(木) 03:24:20確実に『異常終了』かよwwwww
0108デフォルトの名無しさん
2006/11/23(木) 03:28:220109デフォルトの名無しさん
2006/11/23(木) 03:35:590110デフォルトの名無しさん
2006/11/23(木) 03:38:430111デフォルトの名無しさん
2006/11/23(木) 03:45:310112デフォルトの名無しさん
2006/11/23(木) 04:02:520113デフォルトの名無しさん
2006/11/23(木) 04:08:13何気にマンドクサイな。
つか1行が2GB以上あったらむりぽ。
0115デフォルトの名無しさん
2006/11/23(木) 08:22:01メモリが足りなくなることはメモリに異常が発生したとは言わない。
メモリセルが突然死したりすることをメモリに異常が発生したと言うのだ。
0118デフォルトの名無しさん
2006/11/23(木) 12:32:23100 も 116 も本当の 78 であるかは甚だ疑問だが、101 は、
リンク自体は自由に属し制限することができないのにそれを制限しようとしたり、
問題文のコピーは著作権法で制限されているのにそれを無視するといった、
自分に都合の良いダブルスタンダードをからかっているのでは。
0119デフォルトの名無しさん
2006/11/23(木) 12:34:14rar が解凍できね。
圧縮形式を zip か lzh にしてくれないかな?
もしくは rar を解凍するコードを貼ってくれてもおkだけどな。
012078 ◆h340fzU7jQ
2006/11/23(木) 12:54:09ttp://strawberry.web-sv.com:900/Sn/5/vdf/bh5175.zip.html
どーぞ。
0121デフォルトの名無しさん
2006/11/23(木) 12:58:21それがゆとり教育世代
なのかも。
0122デフォルトの名無しさん
2006/11/23(木) 13:02:140123デフォルトの名無しさん
2006/11/23(木) 13:24:19ひょっとして、肖像権に問題ありそうなのか
同じような課題2つに、更に78トリ付二人もいるしね
やっぱり、>>78世代は>>118の "自分に都合の良いダブルスタンダード"を持つ世代
なのかも
0124デフォルトの名無しさん
2006/11/23(木) 13:51:45ができない、俺が言うことではないと思うが、
自由に発言することは結構だが、他人に迷惑かけんのはやめなよ。
0125デフォルトの名無しさん
2006/11/23(木) 13:57:53んな事言ったら、ココに質問に来るやつら、
全員、都合の良いやつらだぉ(^ω^)
0126デフォルトの名無しさん
2006/11/23(木) 14:22:37言葉遣いがどうあろうと、人の善意をタダで利用するという意味で募金詐欺と大差ない。
ただ、善意を利用するということが暗黙の了解であるだけマシというだけ。
質問者を貶しても心を痛める必要は全くない。
0127デフォルトの名無しさん
2006/11/23(木) 14:26:15でも丸投げするだけならダブルスタンダードではない。
社会で通用する考え方かどうかはともかく、自己矛盾はしてない。
0128デフォルトの名無しさん
2006/11/23(木) 14:45:42そうじゃないなら勝手にアップロードしてバラまくのは問題じゃないかな?
それともフリーな写真素材かなんかを使ってるんだろうか
0129デフォルトの名無しさん
2006/11/23(木) 14:47:18不正は質問者と回答者の間で起きてるんじゃない、出題者と質問者の間で起きてるんだ!
0130デフォルトの名無しさん
2006/11/23(木) 14:48:16他で、やってんくんない??君ら。
0131デフォルトの名無しさん
2006/11/23(木) 14:50:12#include<stdio.h>
#include<stdlib.h>
0132デフォルトの名無しさん
2006/11/23(木) 14:56:05#include <sys/socket.h>
#include <winsock2.h>
0133デフォルトの名無しさん
2006/11/23(木) 15:06:59bmpの若い娘はだれ? 78自身?
0134デフォルトの名無しさん
2006/11/23(木) 15:17:2378自演乙
0135デフォルトの名無しさん
2006/11/23(木) 16:25:08#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
int main(int argc, char* argv[])
{
if (argc != 2) return 1;
std::ifstream ifs(argv[1]);
std::string line;
while (std::getline(ifs, line)) {
std::copy(line.rbegin(), line.rend(), std::ostream_iterator<char>(std::cout));
std::cout << std::endl;
}
return 0;
}
0136デフォルトの名無しさん
2006/11/23(木) 18:07:53それじゃ文字単位で逆になるだけだろ。
各行を逆に表示しなきゃならない。今の所まともに動くのは>>103だけ
0137デフォルトの名無しさん
2006/11/23(木) 18:40:13これが曖昧
俺は>>103じゃなく>>135の意味だと思った
0138デフォルトの名無しさん
2006/11/23(木) 18:43:190139デフォルトの名無しさん
2006/11/23(木) 18:46:340140デフォルトの名無しさん
2006/11/23(木) 18:47:180141デフォルトの名無しさん
2006/11/23(木) 18:49:170142デフォルトの名無しさん
2006/11/23(木) 18:50:080143デフォルトの名無しさん
2006/11/23(木) 19:00:44行の入れ替えはいいが、今行毎に文字を逆にするんではないかという
話になっている
0144デフォルトの名無しさん
2006/11/23(木) 19:37:20A. ファイルの行を後ろから表示(ファイルの最初の行を最後に表示、そして、最後の行を最初に表示、stack)
B.1行の文字列を逆順に表示 (12345 -> 54321)
漏れは、Bと解釈したが、喪前らどうよ
0145デフォルトの名無しさん
2006/11/23(木) 19:53:19AともBとも解釈できるがBなら他に適切な表現があると思う
だからA派
0146デフォルトの名無しさん
2006/11/23(木) 20:09:080147デフォルトの名無しさん
2006/11/23(木) 20:12:490148デフォルトの名無しさん
2006/11/23(木) 20:27:28行数の制限を行わないとか書いてあるし
0149デフォルトの名無しさん
2006/11/23(木) 21:22:56というかAでもBでも課題としてはありそうだから解釈に困るなw
0150デフォルトの名無しさん
2006/11/23(木) 21:45:52とりあえず、先頭の54バイトをコピーした後、
(1)3バイトごとに処理。
(2)YUV変換をかます。
0151デフォルトの名無しさん
2006/11/23(木) 21:59:15[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3019.txt
このプログラムは有向グラフの閉オイラーパス(一筆書き)を求めるものであるが、無向グラフにも対応させよ。
ヒント
if(current[v]!=0){
push(current[v]);
while(top!=0){
while(current[v]!=0 && searched[(current[v]+1/2]!=0)
current[v]=adjlist[current[v]];
if(current[v]!=0){
a=current[v];
current[v]=adlist[a];
push(a);
}
else a=pop;
}
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: borland
[3.3] 言語: C
[4] 期限: 土曜
[5] その他の制限:
ヒントみても全然わからないです。よろしくお願いします!
0152デフォルトの名無しさん
2006/11/23(木) 22:55:14てめー期限が土曜なんてありえねー課題出してんじゃねー
ぶっ殺すぞ
絶対解いてやんねー
0153デフォルトの名無しさん
2006/11/23(木) 23:13:23クロマキーピクセルの(r,g,b)分布が(64,64,128)より青側にあるから
if ( R < 64 && G < 64 && B >= 128 ) {
で背景と人物のピクセルを切り替えればよい。
0155デフォルトの名無しさん
2006/11/23(木) 23:27:55出来れば時間も書いて欲しい。00:00でもいいけど。
0156151
2006/11/23(木) 23:33:00お願いします。さっさとやらんかいボケどもめ
0157デフォルトの名無しさん
2006/11/23(木) 23:35:27ピーーーッ
>・・なんだよ とか お前みたいな異端児には頼まないから
他人の善意に期待してるんだから、こんなこと書くよる回答する気なくなるよ
本当に土曜なんです、よろしくお願いします と書く!
世渡りうまくなれよ
0158157
2006/11/23(木) 23:38:26**訂正**
他人の善意に期待してるんだから、こんなこと書くと回答する気なくなるよ
0159151
2006/11/23(木) 23:49:08しがない俺にアドバイスをありがとうございます。
ねくらでひねくれてて友達もいなくて課題を誰にも相談することができなくて困ってるんです。
0160デフォルトの名無しさん
2006/11/23(木) 23:49:15たぶん、質問者成りすまし。
まぁ俺は答える気が最初からないからどうでもいいけど
0161デフォルトの名無しさん
2006/11/23(木) 23:50:180162デフォルトの名無しさん
2006/11/23(木) 23:53:330163デフォルトの名無しさん
2006/11/23(木) 23:55:08すいませんッス
0164デフォルトの名無しさん
2006/11/23(木) 23:57:320165デフォルトの名無しさん
2006/11/24(金) 00:04:090166デフォルトの名無しさん
2006/11/24(金) 00:06:160167デフォルトの名無しさん
2006/11/24(金) 00:12:16お願いしますの言葉より、解答ソースを書き込んだ後の
ありがとうございましたって言葉の方が俺は欲しいな。
0168デフォルトの名無しさん
2006/11/24(金) 00:20:570169デフォルトの名無しさん
2006/11/24(金) 00:22:160170デフォルトの名無しさん
2006/11/24(金) 00:23:050171デフォルトの名無しさん
2006/11/24(金) 00:29:15マリーアントワネット
0172デフォルトの名無しさん
2006/11/24(金) 00:31:49おんどりゃぶっとばすぞ!
0173 ◆D2Ir/QRV8E
2006/11/24(金) 00:42:55[2] 問題文(含コード&リンク):標準入力で入力された20個の数字をバブルソート
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 日曜くらいまでにはお願いします。。。
[5] ちょっと端折りますが・・・
お願いします。
256桁までという仕様なんですがとりあえずint型の範囲で作ってます。
main、input、bubblesortの3つの関数を作ってます。
void bubbleSort(int **sortNumber, int length); char *input(void); int main()てな感じです。
マイナスの値のソートと文字列の判定が上手くいきません。
input関数でcharポインタを返して、バブルソート関数でmainでatoiでint型にしたポインタ配列を渡すのは途中経過を見せた時に変えちゃダメと言われたのでその辺を考慮してお願いします。。。
ソースを見せたいのですが>>1が死んでて、直で載せると改行が多すぎになるので困ってます。。。
0174デフォルトの名無しさん
2006/11/24(金) 00:49:26>>1は死んでねえよバカ
0175デフォルトの名無しさん
2006/11/24(金) 01:05:56荒し君、頑張ってるね、乙!
0176デフォルトの名無しさん
2006/11/24(金) 01:15:21アップローダを使え
なにをどうゆう風にしたいのかいまいちわかんね
0177デフォルトの名無しさん
2006/11/24(金) 01:18:35釣り師の人に注文。面白そうな問題にしてね。
あ、出来上がってるところまでのソースもつけてくれると嬉しいな。
0178 ◆D2Ir/QRV8E
2006/11/24(金) 01:30:17今出来ました!!ありがとうございます!!
エラーページになったので死んでるのかと思いました、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=3020
0179デフォルトの名無しさん
2006/11/24(金) 01:40:2220個の数字(つまり0〜9)?
256桁(つまり10の256乗)まで?
まあエスパーにとっては序の口なんだろうが…
0180デフォルトの名無しさん
2006/11/24(金) 02:07:31問題がないので省略って部分もちゃんと書いて
こっちでコンパイルしようと思ってもできないからね
0181デフォルトの名無しさん
2006/11/24(金) 02:08:37添付ファイルにして欲しいな
0182デフォルトの名無しさん
2006/11/24(金) 02:14:220183デフォルトの名無しさん
2006/11/24(金) 02:20:54intのポインタの大小比較したってしかたあるめい。
void bubbleSort(int *sortNumber, int length);
void bubbleSort(int *sortNumber, int length)
{
char *input(void)
{
return pNum; →?int *
}
/* 文字列の1文字目が\0の場合はループから抜ける */→?
0184デフォルトの名無しさん
2006/11/24(金) 02:26:14最大桁数256桁の数値20個ど思ふ
256桁には漏れも驚いたよ、long long intでも遠く及ばないし
尋常じゃない桁数なので、入力された文字列を数値変換しないで
文字列比較でソートしたほうが良いような気がするが
数値変換しなければならなそうなんで、頭の良い香具師に期待上げだな
0185デフォルトの名無しさん
2006/11/24(金) 03:02:31/* ここは問題無いようなので省略 */
こういうときは↑の部分に問題あることが多いからなあ
nNum の型と対応が取れているかどうかも確認したいので、全部晒せとしかいえない
0186デフォルトの名無しさん
2006/11/24(金) 03:14:39256桁なんかはよくある
例えばRSAなんか1024ビットだから10進数で300桁超だからな
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3022.txt
[3] 環境
[3.1] OS: WindowsXP SP2
[3.2] コンパイラ名とバージョン: VC++ 2005
[3.3] 言語: C
[4] 期限: 今週中
取りあえず作ってみたのですが、どうしても上手くいきません。
よろしくお願いします。
0188デフォルトの名無しさん
2006/11/24(金) 04:20:320189デフォルトの名無しさん
2006/11/24(金) 04:23:48教官はアホなのだろうか
0190デフォルトの名無しさん
2006/11/24(金) 04:26:490191デフォルトの名無しさん
2006/11/24(金) 04:35:29( ゚Д゚ )
0192デフォルトの名無しさん
2006/11/24(金) 04:48:54何とコメントしていいものやら・・・・・・
つまりダメダメってことですか・・・orz
>>188
#include<stdio.h>から上はVC++2005が勝手に付けたんで
そのままupしちゃいました、無視して下さい。
>>191
小文字と大文字のどちらでも動くようにって言われたもんですから・・・
取りあえず良くわかりません
0194デフォルトの名無しさん
2006/11/24(金) 04:55:51charにしました。何を入力して「貴重面な〜」が出ます・・・
あと、人数nに関しては、値を指定してないので変な数字が出るんですが、
そのやり方が分かりません。(a++とかを一体どこに・・・?)
0196デフォルトの名無しさん
2006/11/24(金) 05:06:38とかでええんちゃうーん
0197デフォルトの名無しさん
2006/11/24(金) 05:09:06なるほど、分かりました。
ただやっぱり何を入力しもて「几帳面〜」が出て、数字も変な
ままです・・・
すいませんが宜しくお願いします。
>>197
return 0;でいいんですよね・・・?
0199デフォルトの名無しさん
2006/11/24(金) 05:21:27>>191
0200デフォルトの名無しさん
2006/11/24(金) 05:26:14すいません、サッパリです・・・
0202デフォルトの名無しさん
2006/11/24(金) 06:26:32strcmpでも使ってみたらいかがでしょうか?
それとprintf文の中で、a++を使っていますが
aには元から0ではないので、初期化するということです。
0203デフォルトの名無しさん
2006/11/24(金) 12:13:14int main(void){
int i, j, k, n, a;//変数宣言
int **p;//アドレス宣言
printf("please input! n = ");//入力を促すメッセージ出力
scanf("%d",&a);//aとして入力された数字を取り込む。
p = (int **) malloc(sizeof(int *)*a);//mallocで行のスペース作成
for(i=0; i<=a-1; i++){//行の列指定
p[i]=(int*) malloc(sizeof(int)*a);//mallocで列のスペース作成
for(j=0; j<=a-1; j++)//列の行指定
p[i][j]=0;
}
n=a;
k = 0;//kは0からスタート
for(i=0; i<n/2+n%2; i++) {
for(j=i; j<=n-i-1; j++) p[i][j] = k++;
for(j=i+1; j<n-i-1; j++) p[j][n-i-1] = k++;
for(j=n-i-1; j>i; j--) p[n-i-1][j] = k++;
for(j=n-i-1; j>i; j--) p[j][i] = k++;
}
for(i=0; i<a; i++,printf("\n"))
for(j=0; j<a; j++)
printf("%5d",p[i][j]);
return 0;
}
このプログラムのkは0からスタート以降の意味がよくわかりません。
どなたか解説お願いします。
0204デフォルトの名無しさん
2006/11/24(金) 12:18:340205デフォルトの名無しさん
2006/11/24(金) 12:33:25#include <stdio.h>
#include <string.h>
void main(void) {
char blood[3];
int n = 0;
printf("血液型を入力して下さい。\n");
while (scanf("%2s", &blood) != EOF) {
if(!strcmp(blood, "a") || !strcmp(blood, "A")) printf("几帳面な人。%d人目。\n", ++n);
else if(!strcmp(blood, "b") || !strcmp(blood, "B")) printf("マイペースな人。%d人目です。\n", ++n);
else if(!strcmp(blood, "ab") || !strcmp(blood, "AB")) printf("不思議な人。%d人目です。\n", ++n);
else if(!strcmp(blood, "o") || !strcmp(blood, "O")) printf("面倒見のいい人。%d人目です。\n", ++n);
else if(!strcmp(blood, "rh") || !strcmp(blood, "RH")) printf("珍しい人。%d人目です。\n", ++n);
else printf("嘘は良くないね。\n");
}
return 0;
}
0206デフォルトの名無しさん
2006/11/24(金) 12:34:32kが0からスタートしてることと、k++の意味を考えて実際に実行してみれば判らないか?
0207デフォルトの名無しさん
2006/11/24(金) 12:37:29b h
∫ f(x)= ―[ f(a0)+f(an) + 2( f(a1)+f(a2)+..+f(an-1)]
a 2
b−a
但し、h=―――― a�@=a+ih と近似できる。
n
n=1000としてこの公式を使って
1 4
∫ ―――― dx の近似値の作成Cプログラムが
0 1+(x*x)
わかりませんどなたかお願いします。
0208デフォルトの名無しさん
2006/11/24(金) 12:38:45[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0209203
2006/11/24(金) 12:48:090210デフォルトの名無しさん
2006/11/24(金) 12:56:27#include <stdio.h>
double f(double x) {
return 4 / (1 + x * x);
}
int main(void) {
int n = 1000, i;
double a = 0., b = 1., h = (b - a) / n, s = 0.;
for (i = 1; i < n; ++i) s += f(a + i * h);
s *= 2;
s += f(0) + f(n);
s *= h / 2;
printf("%f", s);
return 0;
}
0211デフォルトの名無しさん
2006/11/24(金) 12:59:30それは動作がわかるとは言わない。
動作がわかるならforがどう動いてるかもわかるはず。
iは外側から数えていくつめの四角かを意味する。
jはその四角の各辺を移動するのに用いられてる。
forはそれぞれ上辺、右辺、下辺、左辺に順番にkを1ずつ増やしながら入れている。
0212デフォルトの名無しさん
2006/11/24(金) 13:02:45#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;
}
0214212
2006/11/24(金) 13:05:540215宿題丸投げ厨房一同
2006/11/24(金) 16:12:47回答を御提供まことに有難うございます、これからもよろしくお願いいたします。
0216デフォルトの名無しさん
2006/11/24(金) 17:26:57これって無料なんですか?
0217デフォルトの名無しさん
2006/11/24(金) 17:37:03ギブ&テイクだよ
あなたが教えられるレベルに成長した時に後輩たちを育てればいい
0218デフォルトの名無しさん
2006/11/24(金) 17:38:28俺も何年か前はここで質問してた側だったぜ。
宿題丸投げしてて成長なんかするわけねえだろ。アホかwww
0220デフォルトの名無しさん
2006/11/24(金) 17:58:17それは否定できないな
PGになる人間の淘汰も兼ねてるとは思う
本人次第なんだよね
0221デフォルトの名無しさん
2006/11/24(金) 18:34:11とくに評価は関係なく、コーディングの練習のためにモチベーションの
得やすい例題を欲している回答者の間で、ギブ&テイクが成立している。
そのようなクズを隔離したい利用者の間で、ギブ&テイクが成立している。
0223デフォルトの名無しさん
2006/11/24(金) 18:49:340224デフォルトの名無しさん
2006/11/24(金) 19:34:22。。。 。。。。。。 。。。。。 。 。。。。。。
。 。。。 。。。。。。 。。。。。 。。。
。。。。。。。 。。。。。。。。 。。。。。。。
_____________________________________________________
上みたいに道に人(。)が左右に行き交うプログラムで
(↑ここまでは作成済み)
あとY軸毎(列毎)の人の速度Vx[i]の平均を求めて、
縦軸Vx[i]の平均、横軸yのグラフを描きたいです。
お願いします。
0225デフォルトの名無しさん
2006/11/24(金) 19:38:07テンプレ読め
0226224
2006/11/24(金) 19:50:44[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:mac os X
[3.2] コンパイラ名とバージョン: project builder(たぶんC++builderと同じようなもんです)
[3.3] 言語: C++
0227デフォルトの名無しさん
2006/11/24(金) 19:53:140228デフォルトの名無しさん
2006/11/24(金) 20:03:44問題文(含コード&リンク):7ならべ
環境
OS:Windows
コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
言語:C言語
期限:2006年12月1日まで
その他の制限:COM3人と対戦 パス3回 ジョーカーあり 勝敗判定をする
どうか宜しくお願いします
0230デフォルトの名無しさん
2006/11/24(金) 21:09:27[2] 問題文(含コード&リンク):
fgetsの返り値を利用して、ファイルの最後まで読み込んで画面に出力する
ようにせよ。
#include <stdio.h>
#define COLSIZE 80
int main(int argc, char *argv[])
{
char buffer[COLSIZE + 1];
FILE *fp;
fp = fopen("files.c", "r");
while(){
printf("%s", buffer);
}
fclose(fp)
return 0;
}
files.cというのはファイル名です。
頑張って考えたのですが、while()の()に入るものが解りません。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 月曜までです。
よろしくお願いします。
0231デフォルトの名無しさん
2006/11/24(金) 21:18:50ヒント:
fgets() の返り値を利用して、とあるのにプログラムに fgets() が含まれてない。
つまり fgets() の返り値の比較が while() に入るだろうと当たりをつける。
あとは fgets() がファイルの終わりに達した時どんな値を返すか、
マニュアル↓を見て考えてみよう。
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/fgets.3.html
0232151
2006/11/24(金) 21:37:07あと期限が水曜日に延びました。
もしよろしければお願いします
0233224
2006/11/24(金) 21:39:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3026.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3027.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3028.txt
0234デフォルトの名無しさん
2006/11/24(金) 21:52:00これ本当にC++?
0235230
2006/11/24(金) 21:55:14レスありがとうございます。
#include <stdio.h>
#define COLSIZE 80
int main(int argc, char *argv[])
{
char buffer[COLSIZE + 1];
FILE *fp;
fp = fopen("files.c", "r");
while(fp == NULL){
fgets(buffer, COLSIZE + 1, fp);
printf("%s", buffer);
}
fclose(fp);
return 0;
}
こんな感じになるんじゃないかなーと思うのですが違いますよね?
実際、実行しても何も表示されませんし。
while(s == NULL)も(fp == EOF)もダメでした。
0236デフォルトの名無しさん
2006/11/24(金) 22:00:300238デフォルトの名無しさん
2006/11/24(金) 22:09:12返り値を誤解してるのでは。例えば、
p = fgets(buffer, COLSIZE, fp);
上の例で言うと、『p に』『fgets() の返り値が』代入される。
buffer や fp は fgets() の返り値ではない。
(ちなみに、p の型が何かはマニュアルの書式欄から読み取れるはず。)
0239デフォルトの名無しさん
2006/11/24(金) 22:17:38Objective-Cじゃねぇか。
0240デフォルトの名無しさん
2006/11/24(金) 22:17:38でもスレ違いな
0241235
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に置換する処理とか、よく解りません。
0242デフォルトの名無しさん
2006/11/24(金) 22:18:08[2] 問題文(含コード&リンク):3次元配列の確保せよ
この問題に対して以下のようにしました。
P =(double ***)calloc(ALL,sizeof(double **));
if(P ==NULL) exit(1);
for(i=0 ; i < ALL ; i++){
P[i] = (double **)calloc(NN,sizeof(double *));
if (P[i]==NULL) exit(1);
for (j=0 ; j < NN; j++){
P[i][j] = (double *)calloc(NN,sizeof(double));
if (P[i][j]==NULL) exit(1);
}
}
ALL=8760,NN=99です。この数値は変更不可で、この配列確保を7回繰り返さなければなりません。
4回目になると勝手に計算が終わってしまいます。
多分、ALL=8760が大きいためと思うのですが・・・。うまく配列を確保する方法よろしくお願いします。
[3] 環境
[3.1] OS: Win XP HOME
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
[3.3] 言語: C
[4] 期限: 出来れば明日中にお願いします
0243デフォルトの名無しさん
2006/11/24(金) 22:27:22改行は文字列の最後についている。
文字列の長さが分かれば、最後の文字の位置が分かる。
最後の文字の位置を '\0' で上書き(代入)すると改行が消える。
0244デフォルトの名無しさん
2006/11/24(金) 22:33:15標準入力はstdin
0245デフォルトの名無しさん
2006/11/24(金) 22:35:54普通に動くけど。
0246デフォルトの名無しさん
2006/11/24(金) 22:36:178760 * 99 * 99 * 8Byte = 655MB
655 * 7 = 4585MB
結論
そのOSとコンパイラじゃ無理
0247デフォルトの名無しさん
2006/11/24(金) 22:41:49こういう事がしたいんだろ?
double ***P;
int i, j;
P =(double ***)calloc(ALL, sizeof(double **));
if(P ==NULL) exit(1);
for(i=0 ; i < ALL ; i++) {
P[i] = (double **)calloc(NN, sizeof(double *));
if (P[i]==NULL) exit(1);
for (j=0 ; j < NN; j++){
P[i][j] = (double *)calloc(1, sizeof(double));
if (P[i][j]==NULL) exit(1);
}
}
0248デフォルトの名無しさん
2006/11/24(金) 22:45:160249デフォルトの名無しさん
2006/11/24(金) 22:48:430250デフォルトの名無しさん
2006/11/24(金) 22:51:23物理メモリがそんだけある必要はないだろう。
0251デフォルトの名無しさん
2006/11/24(金) 22:52:08使用されるまでメモリの確保さえしないOSもある。
0252デフォルトの名無しさん
2006/11/24(金) 22:56:15色々調べてみてcallocではなくfarcalloc使う?とかあったんですけど、根本的に無理な雰囲気ですねorz
0253デフォルトの名無しさん
2006/11/24(金) 23:01:52>ALL=8760,NN=99です。この数値は変更不可で、この配列確保を7回繰り返さなければなりません。
これは問題文そのままか?
原文そのままを書くこと。
説明がなくて申し訳ないです。
状況としては、プログラム上で3次元配列を7つ用いなければならなくて、今まで24時間を扱っていたのが
365日分*24時間=8760で計算してみる上で
「3次元配列の確保をせよ」という課題です。
0255デフォルトの名無しさん
2006/11/24(金) 23:19:520256デフォルトの名無しさん
2006/11/24(金) 23:30:02うるう年は勘弁してください・・・。
検索してたらこういうのが見つかったんですけど、関係ないですかね?
http://f4.aaa.livedoor.jp/~pointc/log493.html
0258デフォルトの名無しさん
2006/11/24(金) 23:46:20主記憶上に確保するのが無理なら、ファイルを配列の変わりに使えよ。
その都度アクセスしてもHDDならそんなに遅くないだろ。
0259デフォルトの名無しさん
2006/11/24(金) 23:48:17問題文をそのままコピペするのが最低限の誠意だと思うんだ
お前の足りない頭でどう考えたかなんてどうでもいい
0260デフォルトの名無しさん
2006/11/24(金) 23:50:56それで問題文が出せないんちゃうんかと。
0261デフォルトの名無しさん
2006/11/24(金) 23:57:08まあどちらにしろ、本当に8760 * 99 * 99のdouble型の3次配列を7個確保しなきゃ
いけないんだとしたら、メモリ足りないんだからあきらめろ。
0262デフォルトの名無しさん
2006/11/25(土) 00:24:06おい、日本語分かるか?
↓で相談するべきなんだよwww
【初心者歓迎】C/C++室 Ver.33【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1164376287/
まあ今更そっちで質問してもマルチだからなwww
馬鹿はさっさと鬱になって市ねwww
0263デフォルトの名無しさん
2006/11/25(土) 00:48:35もしなったらまた相談しにきてください。
0264デフォルトの名無しさん
2006/11/25(土) 01:05:57スレ違いでしたか・・・。どうもスイマセン。
誘導ありがとうございます。そちらで質問し直します。
0266デフォルトの名無しさん
2006/11/25(土) 01:18:41漏れだったらこんな風にするが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3031.c
0267デフォルトの名無しさん
2006/11/25(土) 01:20:020268デフォルトの名無しさん
2006/11/25(土) 01:42:19有難うございました!まだまだ勉強不足のようなので、
初めから勉強し直したいと思います!
0270デフォルトの名無しさん
2006/11/25(土) 02:03:46ファイル上に領域を確保してる。
MapViewOfFile (unix 系では mmap) を使うと、ファイルをメモリ上に対応付ける事ができ、
該当するメモリへの読み書きが直接ファイルに対する読み書きになる。
技術的にはスワップファイルと同じ仕組み。
free() する場合と違い、対応付けを解除しても内容はファイル上に保持されるので、アクセス
する必要のある配列を必要のある期間だけ対応付け、必要がなくなったら即対応付けを解除
することで、アドレス空間を節約できる。(なので一度に7配列アクセスしたら当然破綻する)
# ちなみにかつての 16bit Windows は同じような仕組みで少ない実メモリをやりくりしてた。
0271デフォルトの名無しさん
2006/11/25(土) 02:21:15コピペも張られてるみたいだし
【初心者歓迎】C/C++室 Ver.33【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1164376287/
0272デフォルトの名無しさん
2006/11/25(土) 05:12:21[2] 問題文:以下のサンプルを参考に、文字で cos カーブ、sin カーブを描くプログラムの作成
#include <stdio.h>
#include <math.h>
// cc -lm
#define PI 3.1415926
int main( void )
{int deg;
for (deg=0 ; deg <= 360; deg += 20)
printf("%3d: %6.3lf %6.3lf\n",deg ,cos( (double)deg * PI / 180.0 )
,sin( (double)deg * PI / 180.0 ));
}
0 * +
15 * +
30 * +
45 +
60 + *
75 + *
90 + *
105 + *
120 + *
135 + *
150 + *
165 + *
180 + *
195 + *
210 + *
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:11月29日
0273デフォルトの名無しさん
2006/11/25(土) 05:29:34/* cc -lm */
#include <stdio.h>
#include <string.h>
#include <math.h>
#define PI 3.1415926
int main(void){
int deg;
for (deg=0 ; deg <= 210; deg += 15){
const int x1=(int)(sin(deg*PI/180.0)*25);
const int x2=(int)(cos(deg*PI/180.0)*25);
int i;
printf("%3d ",deg);
for(i=-25;i<=25;++i)
putchar(i==x1?'*':i==x2?'+':' ');
puts("");
}
return 0;
}
0274デフォルトの名無しさん
2006/11/25(土) 10:48:07[2] 問題文:入力した文字を元に、それを拡大したアスキーアートを描くプログラムの作成
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:11月29日
0275デフォルトの名無しさん
2006/11/25(土) 10:54:01AAは自前で用意すんの?
0276デフォルトの名無しさん
2006/11/25(土) 12:25:21[2] 問題文(含コード&リンク):
簡単なパイプを実現するシェルプログラムを作りなさい。
@ ls | more
. . .
@
のようにコマンドを'|'でつなげると、前のコマンドの
標準出力を後ろのコマンドの標準出力とします。
簡単のため、コマンドは2つだけとします。
パイプの実現にはpipeシステムコールを
使います。
int fds[2];
pipe(fds);
write(fds[1], . . . .);
read(fds[0], . . .);
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2006年11月25日23:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ポインタ、構造体、システムコールなどは習いました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3033.txt
授業でやった↑のサンプルを改造して作るらしいです。
0277デフォルトの名無しさん
2006/11/25(土) 12:53:34まず、サンプルの実行結果だけど、
-----
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になってるしサンプルバグってね?
0278277
2006/11/25(土) 13:04:250280デフォルトの名無しさん
2006/11/25(土) 13:28:340281241
2006/11/25(土) 14:21:31レスありがとうございました。
#include <stdio.h>
#include <string.h>
#define COLSIZE 80
int main(int argc, char *argv[])
{
char buffer[COLSIZE + 1], new[COLSIZE + 1];
FILE *fp;
fgets(new, COLSIZE + 1, stdin);
a[strlen(new)] = '\0';
fp = fopen("new", "r");
fgets(buffer, COLSIZE + 1, fp);
while(fgets(buffer, COLSIZE + 1, fp) != NULL){
printf("%s", buffer);
}
fclose(fp);
return 0;
}
考えた結果こうなったのですが違ってますよね?
どこが違うのでしょうか?
0282デフォルトの名無しさん
2006/11/25(土) 14:25:45ところどころに出てくる
> COLSIZE + 1
には何か特別な意味があるのか?
0283デフォルトの名無しさん
2006/11/25(土) 14:32:131.
>fp = fopen("new", "r");
"new" では、「newという内容の文字列」になってしまう。
指定したいのは new という「変数」。
2.
一番目の文字を指す時 new[ ? ] の ? に入る数字は?また長さ一の文字列の最後の文字はどこにある?
二番目の文字を指す時 new[ ? ] の ? に入る数字は?また長さ二の文字列の最後の文字はどこにある?
・
n 番目の文字を指す時 new[ ? ] の ? に入る数字は?また長さ n の文字列の最後の文字はどこにある?
0284282
2006/11/25(土) 14:42:560285デフォルトの名無しさん
2006/11/25(土) 14:44:25>a[strlen(new)] = '\0';
new[strlen(new)] = '\0'; もしくは
new[strlen(new)-1] = '\0';
fopen() 直後のfgetは余計
0286デフォルトの名無しさん
2006/11/25(土) 14:56:08あんた馬鹿?
0287デフォルトの名無しさん
2006/11/25(土) 15:13:23[2] 問題文:2つの最大40桁の自然数を読み込み、その和を返すプログラムを作れ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名: gcc
[3.3] 言語: C
[4] 期限:来週の木曜日(11月30日)まで
[5] その他の制限:構造体、ポインタを軽くならったところです。
入力は文字列で行い、それを型変換し計算するという流れになるかと思いますが、
文字列の扱いに困っております。
0288デフォルトの名無しさん
2006/11/25(土) 15:37:05以前 fj に似たようなのが流れてたなぁと思って検索したら出てきた。
ttp://katsu.watanabe.name/ancientfj/article.php?mid=%3C784lk3%245t%241%40news1.dti.ne.jp%3E
0289デフォルトの名無しさん
2006/11/25(土) 15:42:25適当に書いてみた。
#include<stdio.h>
#include<string.h>
void std_reverse(char*begin,char*end){
char c;while(begin != end && begin != --end)c=*begin,*begin++=*end,*end=c;
}
char*my_strrev(char*p){std_reverse(p,p+strlen(p));return p;}
int main(void){
char a[41]={0},b[41],c,*p=a,*q=b;
scanf("%s%s",a,b);
my_strrev(a);my_strrev(b);
for(c=0;*p||*q||c;c=*p > '9',*p++ -= c * 10)
*p = (*p?*p:'0') + (*q?*q++-'0':0) + c;
puts(my_strrev(a));
return 0;
}
0290デフォルトの名無しさん
2006/11/25(土) 15:46:240291デフォルトの名無しさん
2006/11/25(土) 16:10:21少なくともこれは全く無意味だな。
0292デフォルトの名無しさん
2006/11/25(土) 16:12:140293デフォルトの名無しさん
2006/11/25(土) 16:18:22もしかして、真偽値を確かめてから偽なら後を実行するというアレか!?
0294デフォルトの名無しさん
2006/11/25(土) 16:18:590295デフォルトの名無しさん
2006/11/25(土) 16:39:42その文脈でもしくはと書く以上、
:私にはどちらを依頼人が望んでいるかは分からないが、
:依頼人の望む動作は A と B のどちらかであるように私には思える。
と解釈するのが常識的であって、つまり本人は A にも B にも意味があると
思っていると判断されて当然では。
逆に、私はわざとやったとは考えてないが、もし本人が、一方は全くのハズレで
意味がないと重々承知した上でわざとこのように書いたのなら、その軽重は
別として、相手を混乱させてやろうといった意思があったことになるのでは。
0296デフォルトの名無しさん
2006/11/25(土) 16:49:59回答 彼は頼もしくはない
0297デフォルトの名無しさん
2006/11/25(土) 18:10:21オナニーはひとりで汁
0298デフォルトの名無しさん
2006/11/25(土) 18:14:00まぁ、みせっこもたまにはいいよね
0299デフォルトの名無しさん
2006/11/25(土) 18:23:13[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3036.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2006年11月26日20時00分まで
[5] その他の制限: 問題で与えられたソースを元にせよという指示がありました。
よくわからない部分は全力で調べるのでよろしくお願いします
0300デフォルトの名無しさん
2006/11/25(土) 18:27:52[2] 問題文:
文字列と数字を与え、文字列の長さが数字より大きいかどうかを判定し、
その後に文字列の長さがどれだけ数字より大きいかを求めて表示するようなプログラムを作成せよ。
文字列の長さの方が小さい場合は何もせず終了せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名: gcc
[3.3] 言語: C
[4] 期限: 11/29まで
[5] その他の制限: まだ始めたばっかなんで全然わかりません。
0301デフォルトの名無しさん
2006/11/25(土) 18:32:14スレ住人おすすめの本かサイトを教えてくれ。
0302デフォルトの名無しさん
2006/11/25(土) 18:33:48brainf*ckがいいんじゃないか?
ぐぐってみろ
0303デフォルトの名無しさん
2006/11/25(土) 18:42:40受け取った引数xの全桁の合計値を返す関数
int sum_dgt(int x) {/* */} を作り実行しなさい。
例えばx=234のときは9となる。(正の整数とする)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名: gcc
[3.3] 言語: C
[4] 期限: 11/28まで
おねがいします
0304281
2006/11/25(土) 18:43:33はい、そういうことです。
>>283氏と>>285氏のレスで解りました。
ありがとうございます。
ただ、>>285氏の
>fopen() 直後のfgetは余計
というので、なぜfopen() 直後のfgetが必要ないのかは、
いまいち解りませんが。
0306デフォルトの名無しさん
2006/11/25(土) 19:21:44死んでくれ
0307151
2006/11/25(土) 19:23:170308デフォルトの名無しさん
2006/11/25(土) 19:24:06わかっているさ
0309デフォルトの名無しさん
2006/11/25(土) 19:24:11俺より下だったら答えてあげる
0310151
2006/11/25(土) 19:29:110311デフォルトの名無しさん
2006/11/25(土) 19:30:13死ねよKO
0312151
2006/11/25(土) 19:31:58慶應ではないです
特定されると嫌なので書きたくないですが、慶應よりは下です
0313デフォルトの名無しさん
2006/11/25(土) 19:32:29ボンボンというだけで慶應に入って
おまけに卒業に必要な単位は他人任せか
腐れ外道が
0314151
2006/11/25(土) 19:36:09幼稚舎にいた頃、アルバイトで来ていた日大の学生さんを見て、日大はお猿さん養成所も同然だと母が言ってましたが。
0315デフォルトの名無しさん
2006/11/25(土) 19:37:44こっそり本人が書いたんじゃないかと思えてきたよw
0316デフォルトの名無しさん
2006/11/25(土) 19:40:380317デフォルトの名無しさん
2006/11/25(土) 19:42:29信じてるよ
0318デフォルトの名無しさん
2006/11/25(土) 19:43:37俺も信じてるよ
0319デフォルトの名無しさん
2006/11/25(土) 19:44:17[1] 授業単元:情報処理工学1
[2] 問題文(含コード&リンク): 下記
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:VC++
[3.3] 言語: C++
[4] 期限: 明日まで
[5] その他の制限:
class Vector{
public:
void f(){cout << "f()" << endl;}
};
int main(){
vector<Vector*> vec;
Vector *v;
for(int i = 0; i < 10; i++) { v = new Vector; vec.push_back(v); }
for(vector<Vector*>::Iterator i = vec.begin(); i < vec.end(); i++)
i.***->f();
}
というプログラムを作ってるんですが、動的にクラスを確保して、それを次々にvectorに格納して、最後に表示をするっていうふうにしたんです。
ですが、***の部分をどうやったらいいのか、わかりません。クラスではなく、整数であれば、i をそのまま使えばいいんですけど、クラスだとうまくいきません。
どうしたらいいでしょうか??
0320デフォルトの名無しさん
2006/11/25(土) 19:44:26前スレのは知らんがこのスレのを消化していこうぜ
下らん流れはさっさと断ち切るに限る
0321151 ◆nEYxVzEafI
2006/11/25(土) 19:46:590323デフォルトの名無しさん
2006/11/25(土) 19:50:57//受け取った引数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;
}
0325デフォルトの名無しさん
2006/11/25(土) 19:53:32>>151 (今日中)
>>274 (29日まで)
>>276 (今日の23時まで)
>>299 (明日の20時まで)
>>300 (29日まで)
>>319 (明日まで)
期限切れを消しといた
0326デフォルトの名無しさん
2006/11/25(土) 19:54:32もっとゆとりを持って依頼に来てくれよw
0328デフォルトの名無しさん
2006/11/25(土) 20:02:12│>>90 (今日中)
│>>299 (明日の20時まで)
│>>319 (明日まで)
↓>>151 >>274 >>300 (29日まで)
まあまったり待てや
0329デフォルトの名無しさん
2006/11/25(土) 20:03:380330デフォルトの名無しさん
2006/11/25(土) 20:06:56#include <stdio.h>
#include <string.h>
//'\0'は数えないものとする
void Compar(int x, char s[])
{
unsigned int len;
len = strlen(s);
if(x <= len)
printf("文字の長さと数値の差は%d \n",len - x);
else
return;
}
0331デフォルトの名無しさん
2006/11/25(土) 20:09:00│>>299 (明日の20時まで)
│>>319 (明日まで)
↓>>151 >>274 (29日まで)
0332323,300
2006/11/25(土) 20:10:570333名無しさん
2006/11/25(土) 20:13:471を入力されるとIMEがONになって、'あ' と表示するプログラムの作成中です。
以下のコードではIMEがONになってくれなくて、'a' と表示されます。
ご指摘お願いします。
void fnConvert(MSG *pMsg)
{
static int iCnt= 1;
if( (pMsg->wParam == 0x31) && (pMsg->message == WM_KEYDOWN) )
{
pMsg->wParam= 0x41;
break;
}
}
0334デフォルトの名無しさん
2006/11/25(土) 20:14:23俺は274でもやるか
本人降臨してほしいが
0335デフォルトの名無しさん
2006/11/25(土) 20:17:010336デフォルトの名無しさん
2006/11/25(土) 20:18:32しかし宿題出された瞬間にここに出されても萎えるという
0337デフォルトの名無しさん
2006/11/25(土) 20:33:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3037.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3038.c
0338デフォルトの名無しさん
2006/11/25(土) 21:03:07[2] 問題文(含コード&リンク): あるテキストファイルに含まれるA〜Zの個数をカウントするプログラムをつくれ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: lcc
[3.3] 言語: C
[4] 期限: 11月28日まで
お願いします。どう検索すればいいかも分からないので教えていただきたいです。
答えがほしいですが、ヒントをいただければ自分でも努力はします。
0339デフォルトの名無しさん
2006/11/25(土) 21:05:42fgetc()を使ってEOFになるまで一文字ずつ読み込み、isalpha() && isupper()が
真になる時に配列count[26]のうち対応する文字のカウントを+1する。
0340デフォルトの名無しさん
2006/11/25(土) 21:15:57質問されても面倒なので答えを書いておく
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
int chr[26] = {0}, c, i;
FILE *fp;
if ((fp =fopen("count1.c", "r")) == NULL) /* ファイル名は適宜変更 */
exit(1);
while ((c = fgetc(fp)) != EOF)
if (isalpha(c) && isupper(c))
chr[c - 'A']++; /* Windows上で動かす事を前提とする */
for (i = 0; i < 26; i++)
printf("%c : %dcount(s)\n", i + 'A', chr[i]);
return 0;
}
0341デフォルトの名無しさん
2006/11/25(土) 21:16:380342デフォルトの名無しさん
2006/11/25(土) 21:23:57[2] 問題文(含コード&リンク): テキスト(英文)を読み込んで単語を全て取り出し、重複する単語は1つにまとめ、その単語がいくつあったかabc順に並べて表示するプログラムを書きなさい。(.,"などは含まない)
[3] 環境
[3.1] OS:WindowsXP
[3.2] lcc
[3.3] 言語:C
[4] 期限:2006年11月26日24:00まで
プログラミング初心者です。申し訳ありませんがどなたかお願いします。
0343デフォルトの名無しさん
2006/11/25(土) 21:26:08#include <stdio.h>
#include <ctype.h>
#define NUMBER 26
main(int argc, char **argv){FILE *fp; int i, c, chr[NUMBER]={0};
if((fp=fopen(argv[1],"r")) == NULL) puts("need 1 parameter");
else {
while ((c=fgetc(fp))!=EOF) if (isalpha(c)) chr[toupper(c)-'A']++;
fclose(fp);}
for (i=0; i<NUMBER; i++) printf("%c: %3d time%s\n",i+'A',chr[i], chr[i]>1?"s":"");
getchar();return 0;}
0344デフォルトの名無しさん
2006/11/25(土) 21:26:55ていうか、K&Rもんばっかだな
0345287
2006/11/25(土) 21:30:50ありがとうございます。が、なんか文字化けしちゃって私の環境では見れませんね・・・
わざわざ張ってくださったのに申し訳ないです
>>289
これはこれは、わざわざ作ってくださってありがとうございます
しかし私のポインタの知識が未熟なせいか、今現在はまだ読み解けない部分がありますね
けれども、これはとても参考になります。ほんとにありがとうございました
0346デフォルトの名無しさん
2006/11/25(土) 21:32:33base64知らないのか
0347デフォルトの名無しさん
2006/11/25(土) 21:41:190348デフォルトの名無しさん
2006/11/25(土) 21:50:500349デフォルトの名無しさん
2006/11/25(土) 21:54:34ホント悪かった。
0350デフォルトの名無しさん
2006/11/25(土) 21:55:31│>>319 >>342 (明日まで)
↓>>151 >>274 (29日まで)
未解消
0351287
2006/11/25(土) 21:58:09すみません知りませんでした
一応ググって復元してみたら無事プログラムソースを見ることができました
お手数かけまして申し訳ありません
0352デフォルトの名無しさん
2006/11/25(土) 22:00:19[2] 問題文(含コード&リンク):
y=sin2x*cosx(0≦x≦π/4)をgnuplotで図示せよ。
gnuplotの関数表示機能は使わず、C言語でプログラムを組んで、その出力
データをgnuplotで読み込んで図示させること。刻み数は1000とする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 来週の火曜日の20時までです。
[5] その他の制限:特になし。
出力データをファイルに書き込み、gnuplotでそのファイルを読み込み
グラフを表示させる、といことです。
よろしくお願いします。
0353デフォルトの名無しさん
2006/11/25(土) 22:05:28俺遺伝的アルゴリズムやったことないんだ
計算結果はdoubleで返すことを期待されてると思うんだが
double型にビット演算ってできないよな?
何か良いアイデア知ってる火といないかな
0354デフォルトの名無しさん
2006/11/25(土) 22:07:25class Vector {
public:
void f(){ std::cout << "f()" << std::endl; }
};
int main()
{
std::vector<Vector*> vec;
Vector *v;
for (int i = 0; i < 10; i++) {
v = new Vector;
vec.push_back(v);
}
for (std::vector<Vector*>::iterator i = vec.begin(); i < vec.end(); ++i)
(*i)->f();
}
0355デフォルトの名無しさん
2006/11/26(日) 00:15:05gnuplotに読み込ますデータの仕様くらい用意してから書き込めよ。
0356デフォルトの名無しさん
2006/11/26(日) 00:16:38つ union
0357デフォルトの名無しさん
2006/11/26(日) 00:40:25お こんな要素があったのか バッチリだな
ありがとう
0358352
2006/11/26(日) 00:55:37すいません、
>gnuplotに読み込ますデータの仕様くらい用意してから書き込めよ。
というのは、出力データをどんな感じでファイルに書き込むか、という
ことですか?
xiとyiとしたら
0.0000 0.14356
0.0100 0.16344
. .
. .
. .
という感じです。
0359デフォルトの名無しさん
2006/11/26(日) 01:05:49#include<stdio.h>
#include<math.h>
#define N 1000
double f(double x){
return sin(2*x)*cos(x);
}
int main(void){
double x, dx=(M_PI/4)/N;
int i;
for(i=0;i<=N;i++){
x=i*dx;
printf("%f %f\n", x, f(x));
}
return 0;
}
0360デフォルトの名無しさん
2006/11/26(日) 02:23:49excuse 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
0361353
2006/11/26(日) 04:03:12さすがに人に見せられるレベルじゃないのでもう少し手を入れるが
もし締め切りが近かったらアレなので89はまだいたら締め切り示せ
0363その1
2006/11/26(日) 09:13:28#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <float.h>
#include <math.h>
#define N 500//世代内の個体数
#define G 1000//最大世代数
#define Kousa 0.5//交差率。0〜1
#define Totuzen 0.1//突然変異率。0〜1だが小さめに設定すること
#define Pi 3.14159265358979
union uGENE
{
int i[2];
double d;
};
double hyouka (double x);
void kousa(int *a,int *b);
void mutation(int *a,int *b);
int mycomp(const void *_a, const void *_b);
int choice(int i);
0364その2
2006/11/26(日) 09:14:14int g,i;
union uGENE future[N+1];
double r,present[N];
srand((unsigned) time(NULL));
for(i=0;i<N;i++) present[i]=3.0*((double)rand()/RAND_MAX)-1.0;
for(g=0;g<G;g++){
printf("%d世代目計算中・・・\n",g);
qsort(present, N, sizeof(double), mycomp);
for(i=0;i<N;i++) {
r = (double)rand()/RAND_MAX;
future[i].d=present[choice(i)];
if(r<Kousa){
//交叉
future[i+1].d=present[choice(i+1)];
kousa(future[i].i,future[i+1].i);
kousa(future[i].i+1,future[i+1].i+1);
i++;
}
else if(r<Kousa+Totuzen){
//突然変異
mutation(future[i].i,future[i].i+1);
}
//何もしなければコピーになる
}
//世代交代
for(i=0;i<N;i++) present[i]=future[i].d;
}
qsort(present, N, sizeof(double), mycomp);
printf("x=%fの時f(x)は%f",present[0],hyouka(present[0]));
}
0365その3
2006/11/26(日) 09:15:20//評価関数はx{sin(10πx)}+2cos(10πx)+1.0をそのまま用いるが
//0以下の場合はマシンエプシロンの10倍を返す。
double hyouka (double x){
if(x<-1||x>2) return DBL_EPSILON;
double y,tmp;
tmp=10.0*Pi*x;
y=x*sin(tmp)+2*cos(tmp)+1.0;
if (y<=0) return DBL_EPSILON*10;
else return y;
}
//交叉関数。一様交叉を行う
void kousa(int *a,int *b){
//交叉するビットを示すマスクを作る
unsigned int mask=0;
//マスクの各ビットにランダムに0/1を入れる
for(int i=0;i<32;i++){
mask+=rand()%2;
mask<<=1;
}
//aとbで内容が同じビットは交叉する必要がない
mask=mask&(*a^*b);
*a^=mask;
*b^=mask;
}
0366その4
2006/11/26(日) 09:16:00void mutation(int *a,int *b){
unsigned int mask=1;
int r=rand()%64;
if(r>=32){
r-=32;
mask<<=r;
*a^=mask;
}
else{
mask<<=r;
*b^=mask;
}
}
int mycomp(const void *_a, const void *_b)
{
double a = *(double *)_a;
double b = *(double *)_b;
double tmp=hyouka(b)-hyouka(a);
if (tmp<0) {
return -1;
} else if (tmp > 0) {
return 1;
} else {
return 0;
}
}
0367その5
2006/11/26(日) 09:20:36//エリート選択
if(n==0||n==1) return n;
//投げやりなランキング選択
for(int i=0;i<N-1;i++){
if(rand()%2==0) return i;
}
return N-1;
}
これで終了。
作っておいてなんだがそんなに性能良くない。
とりあえず交叉の元になる個体に同じ物が二つ選ばれるというバグ(笑)があるので
取り除いたらもう少し性能が良くなると思います。(直すつもりだったのに忘れてた)
あとchoice関数を物凄い適当に作ってあるんでここらをいじっても良くなるはず。
やる気があったら改良するかも。
0368デフォルトの名無しさん
2006/11/26(日) 09:37:26まあこれくらいは自力でやって
0369デフォルトの名無しさん
2006/11/26(日) 09:50:29[2] 問題文
連続な値をとる確率変数Yp_ _ _ _,Ynが独立同分布(iid)
p(x)=1( 0≦x <1)
p(x)=0(それ以外)
に従うとしよう. double get_uniform_random() そのままですね.
連続な値をとる確率変数Xnを Xn=(1/N)×(Y1+…+Yn) で定める.
N?
1000
サンプル数?
100
シード?
128478
と入力すると, X1000のサンプルを100個生成して,
# N X_Nのサンプル平均 X_Nのサンプル分散
1000 0.502346 0.000868
と出力するプログラムを作ってください。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C
[4] 期限: 2006年11月28日09:00まで
0370デフォルトの名無しさん
2006/11/26(日) 10:21:440371デフォルトの名無しさん
2006/11/26(日) 10:40:210372デフォルトの名無しさん
2006/11/26(日) 10:45:330373デフォルトの名無しさん
2006/11/26(日) 10:53:04まだ13時間あるよ
0374デフォルトの名無しさん
2006/11/26(日) 11:56:05[2] 問題文(含コード&リンク):
3つの整数を各辺の長さとして、その3つの辺の組が
(1)正三角形を出力できるなら「equilateral triangle」と出力し、
(2)(一般的な)三角形が形成できるなら「triangle」と出力し、
(3)三角形が形成できなければ「not triangle」と出力する
プログラムを作成せよ。
もし可能ならば、上の条件に加えて
(4)直角三角形を形成できるなら「right-angled triangle」と出力し、
(5)二等辺三角形を形成できるなら「isosceles triangle」と出力し、
(6)三角形を形成できるならばその面積Sを出力するプログラムを作成せよ。
例:
4,4,4・・・equilateral triangle (S=6.928)
6,5,7・・・triangle (S=14.697)
6,2,2・・・not triange
ヒント:
3つの整数をa,b,cとすると、三角形を形成する条件は、|b-c|<a<b+c
面積Sはへロンの公式より、s=(a+b+c)/2とするとS=(s(s-a)(s-b)(s-c))^1/2
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2006年11月28日16:00まで
どう考えてもわかりません。どうかお願いします。
0375デフォルトの名無しさん
2006/11/26(日) 12:36:38英文テキスト名は指定されている?
0376デフォルトの名無しさん
2006/11/26(日) 12:57:11というか英文の仕様が無いと作りづらいかも。
・英文中に出てくる記号は",(カンマ)" ".(ピリオド)"" (空白)"のみ?
":(コロン)"とかは出てこない?
・改行は分離子と見なしていい?例えば
I am progr
ammer
という文ならprogrammerを単語とみなすのか?
progrとammerをそれぞれ単語とみなすのか?
0377デフォルトの名無しさん
2006/11/26(日) 14:28:18ありがとうございます。
コンパイルする際にエラーが出ましたが、なんとか頑張って修正してみます。
0378デフォルトの名無しさん
2006/11/26(日) 14:30:37つーか全く同じ問題が前スレか前前スレで解答されてた気がするんだわ
0379352
2006/11/26(日) 14:34:20解答ありがとうございます。
359さんが作って下さったプログラムについて、少し疑問があるのですが…。
課題の前の説明に「刻み数を小さくすれば実際の曲線に近いデータになる。」
と書いてあるのですが、352さんが作って下さったプログラムの場合だと、
刻み数を大きくすればする程、出力する数も増えて、実際の曲線に近い
データになるような気がするのですが…。
自分自身が刻み数というものを何か解ってなく、現在、学校じゃないので
gnuplotを使用できないというのもあって、実際は、どうなの解りませんが
疑問に思ったので。
0380デフォルトの名無しさん
2006/11/26(日) 14:45:14>課題の前の説明に「刻み数を小さくすれば実際の曲線に近いデータになる。」
本当にそう書いてある? 刻み「幅」を小さくすれば、なら納得いくのだけど。
0381デフォルトの名無しさん
2006/11/26(日) 15:02:3075代目
730 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/03(金) 21:14:44
>>727
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2871.c
0382デフォルトの名無しさん
2006/11/26(日) 15:20:25英文はなんでもよいそうです。
英文にでてくる文字の中で単語のみを抜き出すプログラムです。
英文中に出てくる記号は",(カンマ)" ".(ピリオド)"" (空白)"":(コロン)"";(セミコロン)"です。
・改行は分離子と見なしてよいそうです。
0383379
2006/11/26(日) 15:50:27はい、課題の前の説明には「刻み幅」と書いてあります。
「課題には刻み数は1000とする。」と書いてあります。
刻み数=刻み幅と思っているのですが違うのですか?
違うなら刻み数と刻み幅はどう違うのでしょうか?
0384デフォルトの名無しさん
2006/11/26(日) 15:55:04どこのアホだよ、わからないことを紙に書いて
整理してから書き込めばわかることだろ。
馬鹿は馬鹿なりのプログラムの書き方ってのがある、
それすらしない奴はもしかして自分の頭だけで
物事全て考えられると思ってるのか?
そういうのって思い上がりだよ。
0385デフォルトの名無しさん
2006/11/26(日) 15:56:42それ1行に1単語とか制約つきじゃまいか?
0386デフォルトの名無しさん
2006/11/26(日) 16:00:56日本語でおk
0387デフォルトの名無しさん
2006/11/26(日) 16:02:520388デフォルトの名無しさん
2006/11/26(日) 16:07:08main関数のwhile文をこう書き換えればよし。
while(scanf("%*[^a-zA-Z]"),scanf("%79[a-zA-Z]",buf)==1){
まぁ単語長に制限ついてるけど実用上は問題ないでしょ。
0389デフォルトの名無しさん
2006/11/26(日) 16:12:11まず一つ言っておく
煽りでもなんでもなく小学生でも分かることだから今後自分の勉強への態度を変えたほうが良いぞ
━━━━━━━━━━━━━━━━━━━━
↑これを刻み数10で分割すると(10個に分割する)
━━━━━━━━━━━━━━━━━━━━
└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘
こうなる。
一方刻み数5で分割すると(5個に分割する)
━━━━━━━━━━━━━━━━━━━━
└──┘└──┘└──┘└──┘└──┘
こうなる。
分割する数が減れば、1個1個の幅(刻み幅)は増える。
当たり前だな
0390デフォルトの名無しさん
2006/11/26(日) 16:20:320391デフォルトの名無しさん
2006/11/26(日) 16:23:56後学のために、どういうエラーが出たか教えてくれないか?
0392デフォルトの名無しさん
2006/11/26(日) 16:24:59喪前が100mを歩かなければならないとする。
で、100m歩くときの歩数(刻み数)と歩幅(刻み幅)の関係を考えでみろ
歩数x歩幅=100m
歩数が多い、歩幅が小さいになるだろ >>389見ろ
0393デフォルトの名無しさん
2006/11/26(日) 16:25:42ちょうど今修正してる段階で気づきましたが、
こちらの手違いでした、申し訳アリマセンOTL
0394デフォルトの名無しさん
2006/11/26(日) 16:30:01提出したら不可がきたりとか・・・・。
0395デフォルトの名無しさん
2006/11/26(日) 16:30:35そりゃまた随分乱暴だな・・・( ^ω^)
いいけどよ、俺の宿題じゃねーしw
0396デフォルトの名無しさん
2006/11/26(日) 16:35:19見返してて気づいたけど、一筆書きをする方の58行目のコメント
「全ての節点の次数が偶数だった」
は嘘なので削除しておいてくれ。
0397デフォルトの名無しさん
2006/11/26(日) 16:44:15│>>369 (28日の09時まで)
│>>374 (28日の16時まで)
↓>>151 >>274 (29日まで)
未解消
0398デフォルトの名無しさん
2006/11/26(日) 16:54:06[2] 問題文(含コード&リンク):
以下のプログラムは三目並べ(Tic-Tac-Toe)のゲームプログラムである。
メインプログラムの内容を設計実装せよ。また、ミニマックスプログラム関数の
再起呼び出し数を出力させよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3040.txt
[3] 環境
[3.1] OS:UNIX
[3.2] gcc
[3.3] 言語: C
[4] 期限: 11/27 PM5:00
よろしくお願いいたします。
0399デフォルトの名無しさん
2006/11/26(日) 16:56:090400デフォルトの名無しさん
2006/11/26(日) 16:57:43│>>398 (明日の17時まで)
│>>369 (28日の09時まで)
│>>374 (28日の16時まで)
↓>>151 >>274 (29日まで)
>>399
>>381はダメなん?
0401デフォルトの名無しさん
2006/11/26(日) 17:06:36[1] プログラミング
[2] , 次のようにデータ 0 をターミネータとするものに書き換えよ.
* 例えば, 配列 a に 4 個のデータ 10, 11, 12, 13 を記憶する場合には, a[0]=10, a[1]=11, a[2]=12, a[3]=13, a[4]=0 のように記憶する (0 がデータの終わりを表す). データ数を別途他の変数で記憶することはしない.
* void array_input(int *a) … データ数は入力しない. 最初から0番目のデータ, 1番目のデータ, …, を順に入力し, 0 を入力した時点で終了するようにする. 引数は配列 (の先頭アドレス) a だけで, データ数は特にセットしない.
* void array_print(int *a), void array_reverse(int *a) … 配列 (の先頭アドレス) a のみ渡し, データ数は渡さない.
* main は次のようになる.
[3]
[3.1] winXP sp2
[3.2] cygwin
[3.3] C
[4] 11月30日
[5] 元のやつを書き換える問題なんですけど、途中までやってます。
それの問題のあるところを教えてくれたら助かります。
0402デフォルトの名無しさん
2006/11/26(日) 17:07:40>>392
0403デフォルトの名無しさん
2006/11/26(日) 17:08:16>>398
http://pc8.2ch.net/test/read.cgi/tech/1162771475/392
0404デフォルトの名無しさん
2006/11/26(日) 17:09:03[1] プログラミング
[2] , 次のようにデータ 0 をターミネータとするものに書き換えよ.
* 例えば, 配列 a に 4 個のデータ 10, 11, 12, 13 を記憶する場合には, a[0]=10, a[1]=11, a[2]=12, a[3]=13, a[4]=0 のように記憶する (0 がデータの終わりを表す). データ数を別途他の変数で記憶することはしない.
* void array_input(int *a) … データ数は入力しない. 最初から0番目のデータ, 1番目のデータ, …, を順に入力し, 0 を入力した時点で終了するようにする. 引数は配列 (の先頭アドレス) a だけで, データ数は特にセットしない.
* void array_print(int *a), void array_reverse(int *a) … 配列 (の先頭アドレス) a のみ渡し, データ数は渡さない.
* main は次のようになる.
[3]
[3.1] winXP sp2
[3.2] cygwin
[3.3] C
[4] 11月30日
[5] 元のやつを書き換える問題なんですけど、途中までやってます。
それの問題のあるところを教えてくれたら助かります。
0405401=404
2006/11/26(日) 17:13:24自分の書き込み表示されないで402 403が出てきたので
投稿されていないと思いました。これのおかしい所お願いします。
i=0;とかが変だと思うのですが。
#include <stdio.h>#define ARRAY_MAX 32
void array_input(int *a){
int i;int *p;
i=0;
while (*a){
printf("%d 番目の要素 = ", i);
scanf("%d", &a[i]);}
}
void array_print(int *a){
int i;
printf("{");
while (*a){
if (0<i){
printf(",");}
printf("%d", a[i]);}
printf("}\n");}
array_reverse(int *a) {
int i=0;
int temp=0;
while (*a){
a[i] = a[i];}
}
int main(void){
int a[ARRAY_MAX];
array_input(a); array_print(a); array_reverse(a); array_print(a);
return 0;
}
0406デフォルトの名無しさん
2006/11/26(日) 17:22:08色々とおかしい
とりあえず元々の書き換え前のを出したほうがはやいぜ?
0407デフォルトの名無しさん
2006/11/26(日) 17:23:21381は求められてる出力と違うみたいです。
・単語を全部取り出し重複する単語は1つにまとめる。
・それぞれの単語の出現した数を数えて表示する。
・単語をアルファベット順に並べる
ということが求められています。
面倒かと思いますが本当に申し訳ないのですがどなたかお願いします。
0408デフォルトの名無しさん
2006/11/26(日) 17:26:03>>388の変更を加えても期待するのと動作が違うのか?
0409401=404
2006/11/26(日) 17:26:58void array_input(int *a, int *n){
int i, size;
printf("配列のサイズ = ");
scanf("%d", &size);
for (i=0; i<size; i++){
printf("%d 番目の要素 = ", i);
scanf("%d", &a[i]);}
*n = size;}
void array_print(int *a, int n){
int i;
printf("{");
for (i=0; i<n; i++){
if (0<i){
printf(",");}
printf("%d", a[i]);}
printf("}\n");}
array_reverse(int *a, int n) {
int i=0;
int temp=0;
for(i=0;i<n/2;i++){
temp = a[i];a[i] = a[n-i-1];a[n-i-1] = temp;}}
int main(void){
int a[ARRAY_MAX]; int n;
array_input(a, &n);array_print(a, n);array_reverse(a, n);array_print(a, n);
return 0;}
書き換え前。ターミネートされてないやつです。これは正常に動きます。
行数の都合で無理に改行して見難くてごめんなさい。2時間ほど自力で考えましたが力不足ですね。
0410デフォルトの名無しさん
2006/11/26(日) 17:30:480411デフォルトの名無しさん
2006/11/26(日) 17:31:10まず長さを取得して、それを使って書き換え前の関数を呼べば良い。
0412デフォルトの名無しさん
2006/11/26(日) 17:31:442時間本気で悩むのはなかなかできることじゃないと思うが。
0413デフォルトの名無しさん
2006/11/26(日) 17:33:39考えんだぉ(^ωー)
0414デフォルトの名無しさん
2006/11/26(日) 17:33:44実践の時間として2時間は長いが
努力の時間としては2時間は短い
0415デフォルトの名無しさん
2006/11/26(日) 17:39:520416デフォルトの名無しさん
2006/11/26(日) 17:50:220417383
2006/11/26(日) 18:07:22刻んだ時の数と刻んだ時の幅ってことだったのですね。よく考えたら、
そのままですね。
ありがとうございました。
0418デフォルトの名無しさん
2006/11/26(日) 18:10:54初歩的な話で申し訳ないのですが実行できなくて・・・
コンパイルは成功するのですがそれからどうすれば良いか・・・
基礎的なことがわからなくて申し訳ありません。
cpadを使っているのですがどうやったら実行結果を見れるのでしょうか??
0419デフォルトの名無しさん
2006/11/26(日) 18:12:24この時代遅れの努力家めが。
世の中全てはコストパフォーマンスだ。
限られた時間を最大限自分の楽しみに使い面倒なことは全て他人任せにするのが今のトレンドなんだよ。
>>401だって今頃異性といちゃいちゃしながらアホども早く答えてくんねーかなーと笑っていたりするんだよ。
そんなわけでタダで利用されるだけの可哀想な負け組みの自分は
コピペすればすぐ動くことをモットーにして今日も初心者スレでひつまぶし。
#include <stdio.h>
#define ARRAY_MAX 32
void array_input(int*a)
{int i,size;printf("配列のサイズ = ");scanf("%d",&size);
for(i=0;i<size;i++){printf("%d 番目の要素 = ",i);scanf("%d",&a[i]);}a[size]=0;}
void array_print(int*a)
{int i;printf("{");for(i=0;a[i]!=0;i++){if(0<i){printf(",");}printf("%d",a[i]);}printf("}\n");}
void array_reverse(int*a){int i,n=0;int temp;while(a[n]!=0)n++;for(i=0;i<n/2;i++){temp=a[i];a[i]=a[n-i-1];a[n-i-1]=temp;}}
int main(void){int a[ARRAY_MAX];array_input(a);array_print(a);array_reverse(a);array_print(a);return 0;}
0420デフォルトの名無しさん
2006/11/26(日) 18:43:25[2] 問題文(含コード&リンク): 九九の表を作成せよ。ただし形は、下の様
な形にすること。
.....1....2.....3.....4.....5.....6.....7.....8.....9
1..1....2.....3.....4.....5.....6.....7.....8.....9
2..2....4.....6.....8..10..12..14...16..18
3..3....6.....9...12..15..18..21..24..27
4..4....8...12..16..20..24..28..32..36
5..5..10..15..20..25..30..35..40..45
6..6..12..18..24..30..36..42..48..54
7..7..14..21..28..35..42..49..56..63
8..8..16..24..32..40..48..56..64..72
9..9..18..27..36..45..54..63..72..81
.はスペースは思ってください。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日の朝の11時
[5] その他の制限: 2重ループ?(forを2回使うやつ)を使う
0421デフォルトの名無しさん
2006/11/26(日) 18:50:430422デフォルトの名無しさん
2006/11/26(日) 18:51:40すみません。あの、エラーになりした。
error C2040: 'i' : 'class Vector ** ' は 'int' と間接操作のレベルが異なります。
error C2446: '<' : 'class Vector ** ' 型から 'int' 型への変換ができません。
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。
error C2040: '<' : 'int' は 'class Vector ** ' と間接操作のレベルが異なります。
error C2100: 間接指定演算子 (*) の使い方が不正です。
error C2227: '->f' : 左側がクラス、構造体、共用体へのポインタではありません。
というのが出ました。
どうしたらいいでしょうか?
0423デフォルトの名無しさん
2006/11/26(日) 18:51:51int 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");
}
}
0425デフォルトの名無しさん
2006/11/26(日) 20:16:46コマンドプロンプト、リダイレクト・・・後はわかれ
0426デフォルトの名無しさん
2006/11/26(日) 21:55:06[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] 期限: 火曜日
問題は?のところを書き換えるようになっています。
よろしくお願いします。
0427319
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を使って格納したクラスの関数を使いたいです。
宿題をやっていただくというのに、申し訳ないのですが、
よろしくお願いします。
0428デフォルトの名無しさん
2006/11/26(日) 23:43:24コンパイラは何使ってるの?ソースは本当に>>354のままか?
gcc3.4.2(MinGW)で普通にコンパイルできて実行できるのだが。
0429デフォルトの名無しさん
2006/11/26(日) 23:44:28#include <iostream>
#include <vector>
using namespace std;
が抜けてるとか、そういうオチはやめてくれよ。
0430デフォルトの名無しさん
2006/11/26(日) 23:51:31VC++6.0を使ってます。
今、自分の書いたところを確認したですが、VC++だけしか書いていませんでした。
すみませんでした。
>>429
残念ながらオチませんでしたw
0431デフォルトの名無しさん
2006/11/26(日) 23:54:27for (int i = 0; i < 10; i++) {
を
for (int j = 0; j < 10; j++) {
に変更したらどうなる?
# これで通るようなら、コンパイラを窓から投げ捨てろ状態な訳だが。
0432デフォルトの名無しさん
2006/11/26(日) 23:58:58変更したら通りしました!!!!
みなさん、ありがとうございます!!
ですが、なぜ変更したら通ったでしょうか?
0433デフォルトの名無しさん
2006/11/27(月) 00:00:08あー何かVC6はスコープが他のC++コンパイラと違うとかあったな。
そこまで面倒みきれんわ。
0434デフォルトの名無しさん
2006/11/27(月) 00:00:51VC6.0はfor文のスコープ規則が古い仕様なのでforを突き抜けるから
よくある回避策としては
#define for if(0){}else for
ってのをファイルの先頭に突っ込むとかいう手がある。
0435デフォルトの名無しさん
2006/11/27(月) 00:01:08 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
|
____.____ |
| | | |
| | ∧_∧ | |
| |( ´∀`)つ ミ |
| |/ ⊃ ノ | | VC++6.0
 ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ |
|
そんなコンパイラ、窓から投げ捨てろ!
0436432
2006/11/27(月) 00:02:25わかりました!
ありがとうございました!
0437デフォルトの名無しさん
2006/11/27(月) 00:02:41[2]http://mobiledatabank.jp/s/src/MDBS0997.pdfの最後から二番目に書いてあります。
[3]windows xp
[4]11月28日
0438401=404
2006/11/27(月) 00:10:33すみません、そのプログラムは動くのですが
問題はd番目の要素 と最初から入力させるのではなくて
0を入力させた時点で終わるようなものを作りたいです。
0439デフォルトの名無しさん
2006/11/27(月) 00:18:11とりあえず、いちゃいちゃ乙
0440デフォルトの名無しさん
2006/11/27(月) 00:25:17void array_input(int *a)
{
int i;
for(i=0;;i++) {
printf("%d 番目の要素 = ", i);
scanf("%d", &a[i]);
if(a[i] == 0) break;
}
}
void array_print(int *a)
{
int i;
printf("{%d",a[0]);
for(i=1; a[i]!=0; i++) printf(",%d", a[i]);
printf("}\n");
}
void array_reverse(int *a)
{
int i, j, temp;
for(i=0; a[i]!=0; i++);
for(j=0; j<i/2; j++) {
temp = a[j];
a[j] = a[i-j-1];
a[i-1-j] = temp;
}
}
0441デフォルトの名無しさん
2006/11/27(月) 00:39:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3044.c
0442デフォルトの名無しさん
2006/11/27(月) 00:47:33[2] テキストファイルに書いた英文を読み込み、単語の長さを調べてその頻度を調べるプログラム
を作る。ただし空白、タブ、改行は文字列に含まず、ピリオド、コンマは0文字とする。
(20文字以上は1まとめとする)
[例] 0文字 1文字 2文字 … 20文字以上
3 4 6 0
[3] 環境:Windows XP
言語:C++
[4] 期限: ([2006年11月29日13:00まで]
よろしくお願いします。
0443デフォルトの名無しさん
2006/11/27(月) 00:51:16ありがとうございます。しかし実行するとエラーが発生してしまいますた_| ̄|○ il||li
0444デフォルトの名無しさん
2006/11/27(月) 00:57:09どういうエラー?
それから、fopenの第二引数で"wb"とすべきところを"w"と書いたので
直しておいてくれ。
0445デフォルトの名無しさん
2006/11/27(月) 01:07:37wbは直しました!
d:\cprog\08rect\08rect.c(4): error C2059: 構文エラー : '型'
d:\cprog\08rect\08rect.c(7): fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
と出ます。
本当に苦手ですいません。
0446デフォルトの名無しさん
2006/11/27(月) 01:12:38なんて酷いメッセージだ。何が悪いのか分からん。
当て推量だが、2箇所あるmaxをmax_of_twoで置換してみたら直るかも知れん。
0447デフォルトの名無しさん
2006/11/27(月) 02:34:09#include <algorithm>
#include <iostream>
#include <fstream>
#include <map>
#include <string>
int main(int argc, char* argv[]) {
if (argc != 2) return 1;
std::ifstream input(argv[1]);
if (!input) return 1;
const char delimiters[] = " \t,.";
std::map<int, int> dic;
std::string line;
while (std::getline(input, line)) {
dic[0] += std::count(line.begin(), line.end(), ',') + std::count(line.begin(), line.end(), '.');
std::string::size_type start_index = line.find_first_not_of(delimiters);
while (start_index != std::string::npos) {
std::string::size_type end_index = line.find_first_of(delimiters, start_index);
if (end_index == std::string::npos) end_index = line.length();
if (end_index - start_index != 0) ++dic[end_index - start_index < 20 ? end_index - start_index : 20];
start_index = line.find_first_not_of(delimiters, end_index);
}
}
for (int i = 0; i < 20; ++i) std::cout << i << "文字: " << dic[i] << std::endl;
std::cout << "20文字以上: " << dic[20] << std::endl;
return 0;
}
0448デフォルトの名無しさん
2006/11/27(月) 03:34:13可能であれば方法を教えていただきたいのですが
0449デフォルトの名無しさん
2006/11/27(月) 03:36:49> 数値配列
初耳の言葉だ
もっと説明モトム
0450デフォルトの名無しさん
2006/11/27(月) 03:53:51例えば、void test(double matrix[10][10], double *matrixPtr[10][10])
ってイメージで、matrix[10][10]を関数に入力して、
計算した結果をmatrixPtr[10][10]に出力するって感じです。
多分根本的なところが間違ってると思われますが、
void型の関数で不特定多数の、main関数で使える値を出すには
どうすればいいんでしょうか?
かなり日本語喋れってかんじだと思いますが、どうかよろしくお願いします・・・
0451デフォルトの名無しさん
2006/11/27(月) 09:02:47渡された配列の中身を書き換えるだけなら、わざわざ double *matrixPtr[10][10]
ってポインタ配列にする意味がわからん。mallocで確保でもするのか?
0452デフォルトの名無しさん
2006/11/27(月) 10:43:21配列を引数にするってことがどういうことかわかってないんだろ。
0453442
2006/11/27(月) 10:44:03早速の返答ありがとうございます。
でもこれって#include <stdio.h>だけで作れないですか?
最初の[5]で書いとくべきだったんですけどすみません。
多分、単語を切り取って文字数を出力し、文字数mを添字とする配列要素を
インクリメントしていく、という流れになると思うんですが・・・
本当に申し訳ないですが、よろしかったらお願いします。
0454デフォルトの名無しさん
2006/11/27(月) 10:59:19C++って書いておいてそれはねーだろw
0455デフォルトの名無しさん
2006/11/27(月) 13:54:150456デフォルトの名無しさん
2006/11/27(月) 14:09:220457デフォルトの名無しさん
2006/11/27(月) 15:43:38[2] 問題文(含コード&リンク):
20061109のように日付を入力すると、曜日を出力するプログラムを作成せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:わかりませんがCygwinというものを使っています
[3.3] 言語:C
[4] 期限:11月中
[5] 習っている内容からすると、putchar,getcharを用いて作成しなければいけないようです
よろしくお願いします
使用する暦の種類と適用期間が分からないとやりようがない。
0459デフォルトの名無しさん
2006/11/27(月) 16:01:070461457
2006/11/27(月) 16:41:010462デフォルトの名無しさん
2006/11/27(月) 16:52:560463デフォルトの名無しさん
2006/11/27(月) 16:52:570464デフォルトの名無しさん
2006/11/27(月) 16:54:17#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
char buf[100];
fgets(buf, sizeof(buf), stdin);
char cmd[100];
sprintf(cmd, "/bin/date -d '%s' +%%A", buf);
return system(cmd) >> 8;
}
0465デフォルトの名無しさん
2006/11/27(月) 17:01:11宇宙世紀1年には地球の人口が90億に達するそうだ
現在の傾向のまま人口が推移するとあと30年後ぐらい
0466デフォルトの名無しさん
2006/11/27(月) 17:07:57#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
char buf[100];
fgets(buf, sizeof(buf), stdin);
struct tm tmp;
sscanf(buf, "%4d%2d%2d", & tmp.tm_year, & tmp.tm_mon, & tmp.tm_mday);
tmp.tm_year -= 1900;
tmp.tm_mon -= 1;
tmp.tm_hour = tmp.tm_min = tmp.tm_sec = 0;
mktime(& tmp);
strftime(buf, sizeof(buf), "%A", & tmp);
fputs(buf, stdout);
return 0;
}
0467デフォルトの名無しさん
2006/11/27(月) 17:18:31[2] 問題文(含コード&リンク):
どこに書いていいか迷いました。
実はもうコンパイルするだけのはずなのですが、コンパイラが通らずに詰まっています。
関数呼び出しとその引数の書き方の問題だと思うのですが、どうにもエラーがなくなりません。
よろしくお願いします。
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28784
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c
0468デフォルトの名無しさん
2006/11/27(月) 17:24:54まずコンパイルエラーもうpしなさい
0469467
2006/11/27(月) 17:33:44すみませんでした。main関数内の
encode_caesar(*str);
decode_caesar(*str);
について「ポインタの型が合わない」だったかのエラーが出ていました。
変に引数なんかをいじると関数内でさらに複数行に渡ってエラーが出たりします。
エラーがあいまいなのは家に帰ってしまってCを動かせる環境にないためですorz
ユリウス暦かグレゴリオ暦かくらい書け。
0472デフォルトの名無しさん
2006/11/27(月) 18:15:18cygwinでコンパイルしてるときなんてコマンド打ってんだよ
コマンド名からコンパイラ名くらい分かるだろ?
#include <stdio.h>
int youbikeisan(int date);
void main(){
int date;
scanf("%d",&date);
char youbi[][3]={"土","日","月","火","水","木","金"};
printf("その日は%s曜日です\n",youbi[youbikeisan(date)]);
}
int youbikeisan(int date){
int h,y;
h=date/1000000;
y=(date%1000000)/10000;
return (y+(y/4)+(h/4)-h*2+(13*((date%10000)/100+1)/5)+date%100)%7;
}
0473デフォルトの名無しさん
2006/11/27(月) 19:23:21[2] 問題文 この状態から以下の関数を参考にしてリストの追加と削除ができるようにプログラムを追加する。出力のたびにリストの追加と挿入を「追加しますか?削除しますか?」と確認されるようにする。
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:2006年11月28日午後2時
[参考プログラム]
int InsertMigi(node *current,int data){
/*currentで示されるノードの直後にデータを挿入する*/
node *p = CreateNode();//要素を入れる箱を用意
if(current == end){
q = end->next;
}
q->number = data;
q->next = current->next;
current->next = q;
return(EXIT_SUCCESS);
}
int Remove (node *current){
node *q;
q = current->next;
if(q == end){end = current;}
current->next=q->next;
free(q);
return(EXIT_SUCCESS);
}
0474デフォルトの名無しさん
2006/11/27(月) 19:23:51#include<stdio.h>
#include<stdlib.h>
typedef struct Node_template{
int number;
struct Node_template *next;
}node;
node *start = NULL;
int push(int data){
node *ptr = start;
start = (node *)malloc(sizeof(node));
if(start == NULL){
fprintf8stderr,"Nomore memory");
exit(1);
}
start->number = data;
start->next =ptr;[
return(EXIT_SUCCESS);
}
0475デフォルトの名無しさん
2006/11/27(月) 19:25:36int main(void){
int input_data;
int i;
node *p;
while(fprintf(stdout,"\n Enter an integar")
,scanf("%d",&input_data) == 1
){
push(input_data);
}
fprintf(stdout,"\nMemory Image\n");
i = 0;
for(p = start;p != NULL;p = p->next){
fprintf(stdout,"[%3d] = %5d\n",i,p->number);
i=i+1;
}
return(EXIT_SUCCESS);
}
0476デフォルトの名無しさん
2006/11/27(月) 20:48:51バグだらけだったので勝手に色々いじった。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3047.c
0477467
2006/11/27(月) 21:00:34バグだらけ…orz
いやしかし大変助かりました。そういえば数字や記号が来た場合の処理に全く思考が及んでいませんでしたが、
isalphaという関数は初めて知りました。勉強になりました。
ありがとうございました。
0478デフォルトの名無しさん
2006/11/27(月) 23:17:47[2] 問題文(含コード&リンク):
nを100000にして、 納i=0,n](-1)^i/i! を計算し、その逆数を
表示しなさい。
つまり 1/x=納i=0,n](-1)^i/i! のxを求めるということです。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:なるべく早めにお願いします。
[5] まだ習い始めたばかりでよくわからないのですが、
whileを使うみたいです。
なるべく簡単におねがいします。
よろしくお願いします。
0479デフォルトの名無しさん
2006/11/27(月) 23:48:30[2]http://www.sys.wakayama-u.ac.jp/om/
これの課題
[3][3.1]WindowsXP
[3.3]C++言語
[4]28日
[5]まったくわからないのでお願いします
0480デフォルトの名無しさん
2006/11/27(月) 23:50:56君の行っている大学はわかったが問題がどこにあるのかサッパリわからないのだが
0481479
2006/11/27(月) 23:52:54http://www.wakayama-u.ac.jp/~miw/ApIp/06/9/9.html
これです
0482デフォルトの名無しさん
2006/11/27(月) 23:54:24問題が何なのかさっぱり分かりません
まったくわからないのでお願いします
0483478
2006/11/27(月) 23:54:490484デフォルトの名無しさん
2006/11/28(火) 00:11:32この問題はBCB専用じゃないかね?
0485デフォルトの名無しさん
2006/11/28(火) 00:30:180486デフォルトの名無しさん
2006/11/28(火) 00:32:180487デフォルトの名無しさん
2006/11/28(火) 00:40:48リアルで人にやってもらっても同じなんだし
建前はここも匿名板なんだから殺人とかじゃないとチャラ
0488デフォルトの名無しさん
2006/11/28(火) 00:44:24何を勘違いしているんだ?
ここは教えるところなんかじゃないぜ
0489デフォルトの名無しさん
2006/11/28(火) 00:46:47一応ヒント
アドレス士官
0490デフォルトの名無しさん
2006/11/28(火) 00:46:58宿題を持ってきたやつがどうなろうと知ったこっちゃない
0492デフォルトの名無しさん
2006/11/28(火) 00:49:560493デフォルトの名無しさん
2006/11/28(火) 00:52:110494デフォルトの名無しさん
2006/11/28(火) 00:52:12痛くも痒くもないですよw
0495デフォルトの名無しさん
2006/11/28(火) 01:08:202]gcc Cのみ
3]2006'11'30
映像を取り込み、
その映像を基にして
長さを調べて表示する
プログラムを作成しろ
よれしくおねがいします
0496473〜475
2006/11/28(火) 01:10:27もし問題に不手際があったらそれだけでも教えてもらえるととても助かります
0497デフォルトの名無しさん
2006/11/28(火) 01:10:55一応出来たけど答はいくらになればいいの?
0498デフォルトの名無しさん
2006/11/28(火) 01:14:47映像って具体的になんだ?
0499デフォルトの名無しさん
2006/11/28(火) 01:14:50写真に載っている物質の長さを求めるらしいです。
対象物とレンズの距離が毎度違うと思うので
分かりません
どうやってはかるの?
0500デフォルトの名無しさん
2006/11/28(火) 01:16:240501デフォルトの名無しさん
2006/11/28(火) 01:19:09ヒシャタイ
の実寸らしい
0502デフォルトの名無しさん
2006/11/28(火) 01:22:38意味がサッパリなので悩んでます
0503デフォルトの名無しさん
2006/11/28(火) 01:26:37はっきり言う
それは億単位の案件になるので
たった2日では無理です。
申し訳無い
0504デフォルトの名無しさん
2006/11/28(火) 01:31:09学校の宿題ですよw
大学内のみの流通のみで
物理学部に提供するらしい。
0505デフォルトの名無しさん
2006/11/28(火) 01:32:13あの条件から見積もりだすお前がすごい
0506デフォルトの名無しさん
2006/11/28(火) 01:33:44>>503
0507デフォルトの名無しさん
2006/11/28(火) 01:40:33>>1を声に出してよく読んで、テンプレを元にして書き直し
0508デフォルトの名無しさん
2006/11/28(火) 01:52:52それは既に宿題ではないんではないだろうか
0509デフォルトの名無しさん
2006/11/28(火) 01:53:420510デフォルトの名無しさん
2006/11/28(火) 01:57:47小さい方から足してるだろうな?積み残しが出るぞ。
0511デフォルトの名無しさん
2006/11/28(火) 01:59:27e^1は1/0!+1/1!+1/2!+1/3!・・・だろ?
478の課題は
1/0!-1/1!+1/2!-1/3!・・・の逆数を求めろって言ってるぜ
0512デフォルトの名無しさん
2006/11/28(火) 02:02:17ちゃんと100000から計算していってるよ
0513デフォルトの名無しさん
2006/11/28(火) 02:03:55ハヤクシロや
0514デフォルトの名無しさん
2006/11/28(火) 02:08:44おいおい。寝ぼけてるのか?
exp(x) = 1 + x + x^2/2 + x^3/3 + ...
exp(-1) = 1 - 1 + 1/2! - 1/3! + ...
1/exp(-1) = exp(1)
0515デフォルトの名無しさん
2006/11/28(火) 02:10:52あ、なるほどな
ののしるがいいさ さげすむがいいさ
0516デフォルトの名無しさん
2006/11/28(火) 02:24:33>>478
#include <stdio.h>
#define N 100000
main(){
double i=N,y=1;
while(i>=1) y=1-y/i--;
printf("%f\n",1/y);
}
0517デフォルトの名無しさん
2006/11/28(火) 02:31:520518デフォルトの名無しさん
2006/11/28(火) 02:42:10レベルの低い素人は口を挟むな
0519デフォルトの名無しさん
2006/11/28(火) 02:45:48[2] 問題文(含コード&リンク):正整数nと実数xを入力して、多項式
1+x+xの二乗+xの三乗+…+xのn乗
を計算するプログラムつくりなさい。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年11月29日
[5] その他の制限:関数定義使う
0520デフォルトの名無しさん
2006/11/28(火) 03:00:300521デフォルトの名無しさん
2006/11/28(火) 03:29:18#include <stdio.h>
double keisan(double x,int n);
main(){
double x;
int n;
printf("xを入力してください\n");
scanf("%lf",&x);
printf("nを入力してください\n");
scanf("%d",&n);
printf("f(%f,%d)の答えは%fです。",x,n,keisan(x,n));
}
double keisan(double x,int n){
double y=1;
for(int i=0;i<n;i++) y=1+x*y;
return y;
}
0522デフォルトの名無しさん
2006/11/28(火) 03:46:250523デフォルトの名無しさん
2006/11/28(火) 03:48:25ループかけるまえに
1を宣言して
ループしたのを足していけばいいんだお
0524デフォルトの名無しさん
2006/11/28(火) 03:50:170525デフォルトの名無しさん
2006/11/28(火) 04:00:31n=1の時
y=1+x
n=2の時
y=1+x*(1+x)
n=3の時
y=1+x*(1+x*(1+x))
・
・
・
0526516
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);
}
0527516
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));
}
0528516
2006/11/28(火) 05:48:15while(i<N&&y>DBL_EPSILON) y/=++i;
↓
while(i<NMAX&&y>DBL_EPSILON) y/=++i;
0529473〜475
2006/11/28(火) 08:05:16どなたか解いてもらえないでしょうか。
0530デフォルトの名無しさん
2006/11/28(火) 08:50:15前の日の晩に質問するなんて無謀な
今から知り合い増やそう
0531デフォルトの名無しさん
2006/11/28(火) 08:57:52node root;
// idx番目の要素を操作対象に設定
node *target = &root;
for(i=0;i<idx;i++)
target = target->next;
// 追加
InsertMigi(target, n);
// 削除
Remove(target);
printfやscanfくらい自分で書け
0532478
2006/11/28(火) 09:13:53ですが…わからないものばかりで…
defineやらreturnやらvoidというのは習ってないんです。
すみません。
100000はscanfから読み込んでやるはずだったんですが、
説明不足ですみません。
答えは 2.71828に近づきます。
もしよろしければ、もう一度おねがいしたいのですが…
0533デフォルトの名無しさん
2006/11/28(火) 09:17:540534デフォルトの名無しさん
2006/11/28(火) 09:25:25習ってないからといって使っていけないというわけでもないし、ぐぐれば理解できるだろ
scanfで読み込むように書き直すくらい自分でできるだろうし
0537デフォルトの名無しさん
2006/11/28(火) 11:29:56// idx番目の要素を操作対象に設定をどこにいれていいのかわからないです
何度もすみません
0538デフォルトの名無しさん
2006/11/28(火) 12:47:36[2] 問題文(含コード&リンク):4個の1桁の数字からなる順列を乱数で生成
キーボードから4個の数字の順列を入力
生成した順列と入力の順列を比較
位置が合っている場合はhit,位置が間違っている場合はblowとし、
ヒット数とブロー数を表示させる
順列があたるまで入力を繰り返すプログラムを作りなさい
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 12月5日 12時まで
[5] その他の制限: long random(void)まではヒントが与えられています。
宜しくお願いします。
0539デフォルトの名無しさん
2006/11/28(火) 13:24:400540デフォルトの名無しさん
2006/11/28(火) 13:32:030541デフォルトの名無しさん
2006/11/28(火) 13:41:15http://www.linux.or.jp/JM/html/LDP_man-pages/man3/random.3.html
M系乱数のはず。
0542デフォルトの名無しさん
2006/11/28(火) 14:09:12[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 関数を使うこと
関数の中身はブラケット演算子なしでポインターだけで書く
よろしくお願いいたします。
0543a
2006/11/28(火) 14:23:34ドから入力させ,C = A×B を計算して画面表示するプログラムを作成しなさい.ただし,k,m,
n については,k≠m,m≠n,k≠n,k≧2,m≧2,n≧2 を満たす任意の値を設定してよい
0544デフォルトの名無しさん
2006/11/28(火) 15:25:10[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の公式は習った。
0545544
2006/11/28(火) 15:27:460546デフォルトの名無しさん
2006/11/28(火) 16:39:32VCC++だと#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));
}
0547546
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));
}
0548デフォルトの名無しさん
2006/11/28(火) 19:20:49[2] 問題文(含コード&リンク): ファイルを読み込み、各行が逆順に出るようなプログラムを書きなさい。作成したプログラムに対して、空の入力と、作成したプログラム本体のソースコードを入力し、出力結果を報告しなさい。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: mingw-jp
[3.3] 言語: C++
[4] 期限: 明日の午後8時(2006年11月29日(水))
[5] その他の制限: 一行の文字数や、行数の制限を行わない。
同じファイルを二回以上オープンしない。但し、メモリに異常が発生した場合は、検知し、確実に異常終了させる。
分かる方、いたらお願いします!!
0549デフォルトの名無しさん
2006/11/28(火) 19:43:41このスレを検索
0550デフォルトの名無しさん
2006/11/28(火) 19:45:55そりゃ不可能だ。
仮にメモリ異常が単にmalloc()/new失敗と言う意味に解釈したとしても、
その状況で確実に異常終了できるかどうかは実はOS次第だからな。
0551デフォルトの名無しさん
2006/11/28(火) 19:49:29[2] 問題文:
点数をいれるとSABCDを出力するプログラムを作りなさい。ただし
100〜90点 S
89〜80 A
79〜70 B
69〜60 C
59点以下 D
とする。以下の実行結果を参考にして考えよ。
./kadai 70 80 85
1教科目はBです。
2教科目はAです。
3教科目はAです。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラとバージョン: gcc
[3.3] 言語:C言語
[4] 期限:11月29日20時まで
当方プログラミング歴2ヶ月で今回の課題がさっぱりわからないので
誰か分かる方がいらっしゃいましたら助力お願いします。
0552デフォルトの名無しさん
2006/11/28(火) 20:12:53http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3048.c
0553537
2006/11/28(火) 20:17:27ありがとうございました
0554デフォルトの名無しさん
2006/11/28(火) 20:19:53#include<stdio.h>
const char *hyouka(int value){
if(value>100) return "unknown";
if(value>=90) return "S";
if(value>=80) return "A";
if(value>=70) return "B";
if(value>=60) return "C";
return "D";
}
int main(int argc, char *argv[]){
int i, value;
for(i=1;i<argc;i++){
sscanf(argv[i], "%d", &value);
printf("%d教科目は%sです。\n", i, hyouka(value));
}
return 0;
}
0555デフォルトの名無しさん
2006/11/28(火) 20:42:180556デフォルトの名無しさん
2006/11/28(火) 21:11:11期限には間に合いませんがよろしくお願いします。
0557デフォルトの名無しさん
2006/11/28(火) 21:50:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3049.txt
0558デフォルトの名無しさん
2006/11/28(火) 22:10:280559デフォルトの名無しさん
2006/11/28(火) 22:11:46new()が使われてない場合はこれじゃだめかも。
#include <string>
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
void putReverse(ifstream& infile)
{
string s;
try{
while(!infile.eof()){ getline(infile, s); cout << string(s.rbegin(), s.rend()) << endl;}
}
catch(bad_alloc){
cerr << "メモリ確保失敗";
infile.close();
abort(); //エラーコード返すとかじゃなく、お望み通り異常終了。
}
}
int main(int argc, char* argv[])
{
if(argc != 2){ cerr << "読み込むファイルを一つ指定してください"; return -1;}
ifstream inFile(argv[1]);
if(inFile.fail()){ cerr << "ファイルを開けません"; return -2;}
putReverse(inFile);
return 0;
}
0560デフォルトの名無しさん
2006/11/28(火) 22:14:002.模範解答をTAに作るように命令。
3.TAがここで問題を丸投げ。
4.生徒が問題を受け取る。
5.生徒がここで問題を丸投げ。 ← いまここ
0561デフォルトの名無しさん
2006/11/28(火) 22:18:47全米が震撼した
0562デフォルトの名無しさん
2006/11/28(火) 22:26:020563デフォルトの名無しさん
2006/11/28(火) 22:29:41[2] 問題文(含コード&リンク):∫ e^x/x dx(x:1→3)の値を台形およびシンプソンの公式により求めよ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11/30
[5] その他の制限: 等分数は2から倍々と増やしていき、積分値が変化しなくなるまで行うこと。
等分数を最初に設定して計算することは出来たのですが、
制限の>>等分数は2から倍々と増やしていき、積分値が変化しなくなるまで行うこと。
これのやり方が分かりません。
誰か分かる方がいらっしゃいましたらよろしくお願いします。
0564デフォルトの名無しさん
2006/11/28(火) 22:33:59なんでだよwww
>等分数を最初に設定して計算することは出来た
ここが一番の山じゃねーか
もう終わったようなもんだろwwwwwwwww
あとはforループで、2^iで分割して、
今の値-前の値の絶対値が十分小さかったら終了でいいじゃん
0565デフォルトの名無しさん
2006/11/28(火) 22:34:38そのふたつだけじゃなくて
>>42
も同じ課題だと思う
0566デフォルトの名無しさん
2006/11/28(火) 22:53:25質問者じゃないけど、こういうのもアリですかね?
const char* hyouka(int value)
{
switch (value / 10) {
case 10:
case 9:return "S";
case 8:return "A";
case 7:return "B";
case 6:return "C";
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:return "D";
default:return "unknown";
}
}
0567デフォルトの名無しさん
2006/11/28(火) 22:59:02>>42じゃなくて>>40じゃね?
0568デフォルトの名無しさん
2006/11/28(火) 23:01:09あ、
>>40だった。スマソ
0569デフォルトの名無しさん
2006/11/28(火) 23:12:07[2] 問題文(含コード&リンク):
出版社M社で自社のライトノベル・DVD購入者に対し懸賞を行うことになった。
応募券を切り取り、ハガキに貼ってを送ってきた人に対し
10人にオリジナル図書カードを
50人にオリジナルストラップを
100人にオリジナルステッカーをプレゼントすることになった。
公平を期すためにC言語で乱数を用い当選者を決定させたい。
ここで応募してくる人は過去の傾向からみて1000人以下であると考えられる。
※なおライトノベル、DVD両方の応募券がついている客は
DVDのみの応募券、ライトノベルのみの応募券がついているユーザーの2倍の当選確率である。
※なお、同一人物(同じ名前)での2重当選はありえない。(当選は1人1回である)
※またA君、B君、C君は前回の懸賞で特賞が当たっているため、今回応募があっても当選しない。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Boland
[3.3] 言語: C
[4] 期限: 2006.12.01
[5] その他の制限: なし
よろしくお願いいたします。
0570デフォルトの名無しさん
2006/11/28(火) 23:14:05問題文それだけ?
0571デフォルトの名無しさん
2006/11/28(火) 23:15:17提示された物は全てです
0572デフォルトの名無しさん
2006/11/28(火) 23:15:52入力するデータが欲しい
0573デフォルトの名無しさん
2006/11/28(火) 23:15:59[2] 問題文(含コード&リンク):
y=sin(2x)×cos(x)について区間0≦x≦π/4での積分値を計算するプログラム
を作成せよ。
計算結果として、積分範囲・刻み数・積分結果を出力させること。
刻み数は
#define n 20
とする。
πはM_PIとする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日の朝10時00分までです。
[5] その他の制限: 特にないです。
よろしくお願い致します。
0574デフォルトの名無しさん
2006/11/28(火) 23:16:32問題文そのまま?
なんか色々省略してない?
0575デフォルトの名無しさん
2006/11/28(火) 23:23:35A君B君C君をはじけばいいらしいです。
D君以降は適当にDVDのみ、ノベルのみ、両方適当でいいっていってました
>>574
とくに省略はしていません
0576デフォルトの名無しさん
2006/11/28(火) 23:24:02じゃぁ先生にこんな問題文じゃ解けないって突き返せ
0577デフォルトの名無しさん
2006/11/28(火) 23:24:43[2] 問題文(含コード&リンク):
以下は入力された整数値の大小に基づいて2分木を生成するものである。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3050.txt
すべてのノードの左の子と右の子を交換する関数void ReverseTree(struct BTREE *ptr)
を再帰呼び出しによって実現せよ。この手続き後にTraverseTreeを実行すると数値は降順に表示されるはずである。
また、指定データと同じ値のデータを持つノードの個数を出力するint CountData(struct BTREE *ptr,int searchdata)を
再帰呼び出しによって完成させよ。
Reverse Tree
[3] 環境
[3.1] OS: Windows Xp
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日夜
[5] その他の制限:
お願いします!
0578デフォルトの名無しさん
2006/11/28(火) 23:29:32台形公式でよければ >>212 を少し変更すればおk
return 4/(1+x*x);
↓
return sin(2*x)*cos(x);
printf("%f\n", f_integral(0, 1, 1000));
↓
printf("%f<x<%f %d %f\n", 0., M_PI/4, n, f_integral(0., M_PI/4, n));
0579デフォルトの名無しさん
2006/11/28(火) 23:48:39void ReverseTree(struct BTREE *ptr) {
struct BTREE *temp;
if (ptr == NULL) return;
ReverseTree(ptr->left);
ReverseTree(ptr->right);
temp = ptr->left;
ptr->left = ptr->right;
ptr->right = temp;
return;
}
int CountData(struct BTREE *ptr, int searchdata) {
if (ptr == NULL) return 0;
return CountData(ptr->left, searchdata) + CountData(ptr->right, searchdata) + (ptr->data == searchdata);
}
0580デフォルトの名無しさん
2006/11/28(火) 23:51:31ありがとうございます。
for文の中を前の値==今の値とかやって悩んでましたw
0581デフォルトの名無しさん
2006/11/29(水) 00:00:30#include <math.h>
#include <stdio.h>
#define n 20
double f(double x) {
return sin(2 * x) * cos(x);
}
int main(void) {
int i;
double a = 0., b = M_PI / 4, h = (b - a) / n, s = 0.;
for (i = 1; i < n; ++i) s += f(a + i * h);
s *= 2;
s += f(0) + f(n);
s *= h / 2;
printf("%f", s);
return 0;
}
0582デフォルトの名無しさん
2006/11/29(水) 00:05:04応募者が賞品の数より少ない場合、
1.A君、B君、C君でも当選する?
2.賞品の当選の優先順位は決まってる?
ちなみに全員ハズレにするのもアリ?
0583デフォルトの名無しさん
2006/11/29(水) 00:09:14お前、ふだんからいい仕事してるんだろうな
0584デフォルトの名無しさん
2006/11/29(水) 00:11:56#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;
}
0585573
2006/11/29(水) 00:22:07ありがとうございます。
講義で台形公式の話をしていたので、台形が公式で十分というか台形公式の
方が良いです。
ただ、エラーが出てコンパイルできません。
>>581
ありがとうございます。
しかし、値が1つしか表示されません。
0586デフォルトの名無しさん
2006/11/29(水) 00:25:04>>1も読めないのか?わざとなのか?
0587デフォルトの名無しさん
2006/11/29(水) 00:27:10[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] その他の制限: 授業で配列に入ったばかり。
0588587
2006/11/29(水) 00:28:4011月29日昼12時まででお願い致します。
0589585
2006/11/29(水) 00:31:22double f_integral(double a, double b, long n)
の部分に構文エラーが4つあります。
')' が '定数' の前にありません。
'{' が '定数' の前にありません。
'<不明>'
')'
です。
#define n 20
を追加したからでしょうか?
>>578さんが教えて下さった
return 4/(1+x*x);
↓
return sin(2*x)*cos(x);
と
printf("%f\n", f_integral(0, 1, 1000));
↓
printf("%f<x<%f %d %f\n", 0., M_PI/4, n, f_integral(0., M_PI/4, n));
以外に何を変更して良いか解らなくて。
0590デフォルトの名無しさん
2006/11/29(水) 00:42:41課題
・nが変数として使われてるのに#define n 20なんかしたらどうなるか考えてみる
0591デフォルトの名無しさん
2006/11/29(水) 00:46:59>>応募者が賞品の数より少ない場合、
>>1.A君、B君、C君でも当選する?
当選しません
>>2.賞品の当選の優先順位は決まってる?
決まっていません
>>ちなみに全員ハズレにするのもアリ?
アリです
よろしくお願いいたします。
0592デフォルトの名無しさん
2006/11/29(水) 00:51:36#include<stdio.h>
int main(void){
printf("当選者ナシ\n");
return 0;
}
0593589
2006/11/29(水) 00:51:52あ、確かに変数として使われてますね。
そのエラーは納得できたのですが、講義では数値積分法には台形公式による
方法があります、と言っていただけで、具体的にどのようなものなのか
教わってないので、>>578さんが教えて下さったプログラム(>>212のプロ
グラム)の意味が全く解らなくて…。
0594デフォルトの名無しさん
2006/11/29(水) 00:55:39そこでは検索エンジンへの接続は禁止されているのではないか
などと思うことがある
>>593
ttp://72.14.253.104/search?q=cache:5TcXrS4nz80J:www5d.biglobe.ne.jp/~tomoya03/shtml/algorithm/Daikei.htm+%E5%8F%B0%E5%BD%A2%E5%85%AC%E5%BC%8F&hl=ja&gl=jp&ct=clnk&cd=3
0595デフォルトの名無しさん
2006/11/29(水) 00:56:07あと >>212 がレスつけてる先を見てみれば?
0596デフォルトの名無しさん
2006/11/29(水) 00:56:44そのエラー直して解けたんならイインジャマイカと言ってみるt。
0598593
2006/11/29(水) 01:11:41あ、詳しく説明されてますね。課題が完成しても、これからも使いそうなの
で、そこで少し勉強しようと思います。ありがとうございます。
>>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回表示するようにしたら完成、ということなのでしょうか?
0599581
2006/11/29(水) 01:22:36やり直し。台形公式。
#include <math.h>
#include <stdio.h>
#define n 20
double f(double x) {return sin(2 * x) * cos(x);}
double trapezoidal(double a, double b, int d) {
double s = 0., h = (b - a) / d; int i;
for (i = 1; i < d; ++i) s += f(a + i * h);
s *= 2; s += f(a) + f(b); s *= h / 2;
return s;
}
int main(void) {
printf("積分範囲:%f...%f, 刻み数:%d, 積分結果:%f\n", 0., M_PI / 4, n, trapezoidal(0, M_PI / 4, n));
return 0;
}
0600デフォルトの名無しさん
2006/11/29(水) 01:36:45#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;
}
0603デフォルトの名無しさん
2006/11/29(水) 01:59:19Sleipnir利用者なんかは本当に一部機能を制限されてるからな
知らずにGoogleフル機能だと思ってたら泣ける
0604デフォルトの名無しさん
2006/11/29(水) 02:54:15void arr_cycle(int *arr, int len)
{
int i, temp;
temp = a[len-1];
for(i=len-1;i>0;i--) arr[i] = arr[i-1];
a[0] = temp:
}
0605デフォルトの名無しさん
2006/11/29(水) 03:54:26[2] 問題文:0から9999までの整数をキーボードから入力し、それが何桁であるかを
表示するプログラムを書く。
[3] 環境
[3.1] OS:WindowsXP
[3.2] lcc
[3.3] 言語:C
[4] 期限:2006年11月29日18:00まで
どうかよろしくお願いします。
0606デフォルトの名無しさん
2006/11/29(水) 04:22:16#include<stdio.h>
#include<math.h>
void main(){
int x;
scanf("%d",&x);
printf("%d桁\n",(int)log10(x)+1);
}
0607デフォルトの名無しさん
2006/11/29(水) 04:38:10#include <stdio.h>
int main(void)
{
int i, n;
scanf("%d", &n);
for(i=0; n; i++, n/=10);
printf("%d桁", i);
return 0;
}
0608デフォルトの名無しさん
2006/11/29(水) 08:27:55printf("%d桁\n", n); の間違い?
あとn/=10だと一桁少なく出るのでは。
0611デフォルトの名無しさん
2006/11/29(水) 09:41:34ありがとうございます
0612デフォルトの名無しさん
2006/11/29(水) 10:21:34[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3051.txt
この整数値の昇順リストを作成するプログラムを、指定データ(下記deletedata)と同じデータを持つセルをすべて
消去する関数void DeleteAlist(struct LIST **ptr, int deletedata)を作成せよ。
指定データを持つセルの先頭のものを消去する関数を参考にせよ
void Deletelist(struct LIST **ptr, int deletedata){
if((*ptr)==NULL){
printf("no such data \n");
}else if((*ptr)->data == deletedata){
struct LIST *tmp;
printf("data found\n");
tmp=(*ptr)->nextptr;
free(*ptr);
*ptr=tmp;
}else DeleteList(&((*ptr)->nextptr),deletedata);
}
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 今日夜
[5] その他の制限:
お願いします。。
0613デフォルトの名無しさん
2006/11/29(水) 10:47:31>>>応募者が賞品の数より少ない場合、
>>>1.A君、B君、C君でも当選する?
>当選しません
0615デフォルトの名無しさん
2006/11/29(水) 11:14:22void 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);
}
}
}
0616615
2006/11/29(水) 11:17:12void 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);
}
}
}
0617598
2006/11/29(水) 13:10:53もう提出したので良いのですが疑問に思ったので質問です。
刻み数を10とか少し変えただけで積分結果が結構変わりますが
こんなもんなんでしょうか?
0618デフォルトの名無しさん
2006/11/29(水) 13:12:330619デフォルトの名無しさん
2006/11/29(水) 13:14:080620617
2006/11/29(水) 14:30:04これっておかしくないですか?
0621デフォルトの名無しさん
2006/11/29(水) 14:53:08ドから入力させ,C = A×B を計算して画面表示するプログラムを作成しなさい.ただし,k,m,
n については,k≠m,m≠n,k≠n,k≧2,m≧2,n≧2 を満たす任意の値を設定してよい
分かる方、よろしくお願いします。
0622デフォルトの名無しさん
2006/11/29(水) 15:11:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3052.c
0623デフォルトの名無しさん
2006/11/29(水) 16:02:20同一人物かのう
0624デフォルトの名無しさん
2006/11/29(水) 16:05:53間違ってるのは>521だから
0625デフォルトの名無しさん
2006/11/29(水) 16:12:41>>610
0626デフォルトの名無しさん
2006/11/29(水) 16:20:16調べるプログラムを作成せよ。1行の文章中にキーワードが含まれているときには、その位置を表示します。
例えば、キーワードが"calculus"のとき、次のように表示します。
The development of calculus is a good example.
^
また、キーワードが含まれていない場合には、"not found"を表示します。
これをC言語でプログラミングってどうやるんですか?
三日かけてもわかりませんでした
0627デフォルトの名無しさん
2006/11/29(水) 16:21:57>>1
0628デフォルトの名無しさん
2006/11/29(水) 16:54:50関数の使い方の授業なら
strstr() (#include <string.h>)
を使う。
アルゴリズムの授業ならBM法でも実装しろ
0629デフォルトの名無しさん
2006/11/29(水) 17:09:06調べるプログラムを作成せよ。1行の文章中にキーワードが含まれているときには、その位置を表示します。
例えば、キーワードが"calculus"のとき、次のように表示します。
The development of calculus is a good example.
^
また、キーワードが含まれていない場合には、"not found"を表示します。
[3]C言語(emacs)
[4]2006年11月30日
[5]ポインターまで習ってます
0630デフォルトの名無しさん
2006/11/29(水) 17:13:15http://pc8.2ch.net/test/read.cgi/tech/1164079451/628
0631デフォルトの名無しさん
2006/11/29(水) 17:22:42[2]問題が長かったのでこちらに
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3053.txt
[3]言語はCでWinとLinux両方です
[4]11月30日午前11時
[5]配列やポインタや構造体といった基礎部分は一応一通りやってます
よろしくお願いします
0632629
2006/11/29(水) 17:23:450633デフォルトの名無しさん
2006/11/29(水) 17:29:19#include <stdio.h>
int __________(char *buf,char *w)
{
int i,c;
for (c=0;*buf != '\0';buf++,c++){
for (i=0;*(buf + i) == *(w + i);i++){
if (*(w + i + 1) == '\0'){
return c;
}
}
}
return -1;
}
int main(void)
{
char buf[256],word[64];
int i,j;
gets(buf);
gets(word);
if ((i = __________(buf,word)) > -1){
for (j=0;j < i;j++){
putchar(' ');
}
printf("^\n");
}else{
printf("not found.\n");
}
return 0;
}
0634デフォルトの名無しさん
2006/11/29(水) 17:46:19[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次配列位しか習ってないです。それ以外も使っていいことに
なってますがまだ初心者なのでできるだけ簡単なものにしていただけると助かります。
#include<stdio.h>
#include<ctype.h>
int main(void){int c,i,j=0;int res[21];
for(i=0;i<21;i++){res[i]=0;}
while((c=getchar())!=EOF){if(c=='.'||c==','){res[0]++;j=0;}
else{if(j==0){if(isalpha(c)){j=1;}else;}else{if(isalpha(c)){j++;}
else {if (j<20){res[j]++;} else {res[20]++;}j=0;}}}}
for(i=0;i<21;i++){printf("%-2d文字:%-4d回\n",i,res[i]);}
return 0;}
0637デフォルトの名無しさん
2006/11/29(水) 18:21:53[2] 問題文(含コード&リンク):jinkou.txtのデータを用いる。キーボードで範囲を入力し、その範囲内の人口の都道府県名を出力するプログラムをかけ。
jinkou.txtは
北海道 5659
青森 1462
岩手 1402
:
沖縄 1349
となっています。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: lcc
[3.3] 言語: C
0638デフォルトの名無しさん
2006/11/29(水) 18:26:36県名と数字を区切っているものは何?
とかこういうやりとりをするのがめんどくさいからjinkou.txtどこかにうぷれカス
0639デフォルトの名無しさん
2006/11/29(水) 18:52:42[2] 問題文: 一次配列(要素はint型、要素数は30)に格納されている要素を値の小さい順に並べ替える。
配列の初期値は以下のものを使う。
{636, 80, 246, 766, 881, 383, 244, 671, 503, 331,
444, 723, 916, 287, 492, 719, 476, 187, 704, 115,
774, 334, 618, 625, 582, 938, 427, 831, 899, 909}
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:(gcc 3.4 VC 6.0等)
[3.3] 言語:C++
[4] 期限:12/1 Fri
[5] その他の制限:一応アルゴリズムは指定されていて以下の通りです。
データ構造
ソート対象の配列(要素のデータ型は整数型。要素数は定数N)
ソート済み位置(整数型)
現在位置(整数型)
最小値(整数型)
最小値の位置(整数型)
アルゴリズム
1. ソート済み位置を、配列先頭の要素番号-1から1ずつ増やしながら、 配列末尾の要素番号-1になるまで以下の処理を繰り返す。
1-1. ソート済み位置+1の位置に格納されている要素を最小値とし、その 値と位置を保存する。
1-2. 現在位置をソート済み位置+2から配列の末尾まで変えながら以下の 処理を繰り返す。
1-2-1. 現在位置の要素が最小値よりも小さいならば、その値と位置 を最小値と最小値の位置に代入する。
1-3. 最小値の要素とソート済み位置+1の要素を交換する。
2. 配列の各要素を表示する。
よろしくお願いします
0640デフォルトの名無しさん
2006/11/29(水) 19:22:24つれづれなるままに
#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;}
0641599
2006/11/29(水) 19:59:43おかしくはなりませんでしたよ?
積分範囲: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
0642546
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));
}
0643デフォルトの名無しさん
2006/11/29(水) 20:01:24ありがとうございます。
動作について解説して頂けると今後のために役に立ちます。お願いできませんか?
0644デフォルトの名無しさん
2006/11/29(水) 20:32:13[2] 問題文: 数字を2つ入力し、総積を計算しなさい。
例) 2と6の場合 2*3*・・・*6
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC++2005
[3.3] 言語: C
[4] 期限: 出来れば今日中に・・・
宜しくお願いします。
0645634
2006/11/29(水) 20:35:33ありがとうございます。このプログラムなら何をやっているかがなんとか分かるので助かります。
でもこれだと読み込むテキストファイルの指定がないので動かないのですが…
0646デフォルトの名無しさん
2006/11/29(水) 20:46:19多分リダイレクトしろって事じゃない?
後、いろいろアレなコードだから(英単語に続いて.や,があると英単語がカウントされない、とか)提出するには気を付けて。
0647デフォルトの名無しさん
2006/11/29(水) 20:48:08#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);
}
0648645
2006/11/29(水) 20:55:42アドバイスありがとうございます。,や.の問題も自分でも直せるようもう少し頑張ってみます。
0649デフォルトの名無しさん
2006/11/29(水) 21:27:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3054.txt
まあ、悪い例ということで。
0650デフォルトの名無しさん
2006/11/29(水) 21:29:29#include<stdio.h>
int keisan(int a,int b);
main(){
int num1,num2;
printf("初めの数字を入力してください");
scanf("%d",&num1);
printf("終わりの数字を入力してください");
scanf("%d",&num2);
printf("総積:%d",keisan(num1,num2));
}
int keisan(int a,int b){
int i, ans=a;
for(i=a+1; i<=b; i++){
ans *= i;
}
return ans;
}
0651デフォルトの名無しさん
2006/11/29(水) 21:30:50C++でお願いできませんか?
0652151
2006/11/29(水) 21:30:590653デフォルトの名無しさん
2006/11/29(水) 21:39:44N0:192.168.0.0/24
N0:192.168.1.0/24
N0:192.168.3.0/24
があり、二つのルータR1、R2で接続されている。
R1はN0,N3に接続しており、それぞれネットワークインターフェースne0に
IPアドレス192.168.0.130、同gifに同192.168.3.1が与えられている。
この時、R2の経路表は例えば以下のように表示できる。
ただし、メトリック(Metric)が1である経路には、
データリンク層を用いて通信可能であることを示すものとする。
Network Destination Netmask Gateway Interface Metric
192.168.0.0 255.255.255.0 192.168.3.1 gif2 2
192.168.1.0 255.255.255.0 192.168.1.66 ep0 1
192.168.3.0 255.255.255.0 192.168.3.2 gif2 1
問1
R1とR2に距離ベクトル型経路制御を導入して動作させることを考える。
R1の経路表を示せ。
0654デフォルトの名無しさん
2006/11/29(水) 21:43:02>N0:192.168.0.0/24
>N0:192.168.1.0/24
>N0:192.168.3.0/24
三つともN0なんですか?
>R1はN0,N3に接続しており
N3が未定義です。
あとスレ違いです。
0655デフォルトの名無しさん
2006/11/29(水) 21:49:26コンパイルしてみれば分かると思うが、>>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";
}
0656620
2006/11/29(水) 21:52:31実際は
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;
}
としてました。
これが原因だったようです。
自分のミスなのに、おかしい等と文句言って申し訳ありませんでした。
0657655
2006/11/29(水) 21:58:00まあ、ループもたまには良いでしょう。
0658デフォルトの名無しさん
2006/11/29(水) 22:01:11自分も似たような宿題があるのでやってみましたがうまく動きません。一応プログラム貼りつけとくので
もし634さんがプログラムが完成してたら、どこが間違ってるか教えて下さい。
他の方でも分かる方がいらっしゃったらご指導お願いします。
#include <stdio.h>
#include <stdlib.h>
void main(void){
FILE *fp;
int c=0;
int d=0;
int freg[20];
(fp = fopen("infile.txt", "r")) == NULL;
while ((c = getc(fp)) != EOF) {
switch (c) {
case ' ': freg[d]++; d=0;
break;
case '\n':
break;
case '\t': freg[d]++; d=0;
break;
case ',' : freg[d]++; freg[0]++; d=0;
break;
case '.' : freg[d]++; freg[0]++; d=0;
break;
default: d++; }}
printf("ファイル名: infile.txt\n");
printf("%d ",freg[20]);
fclose(fp);
}
0659デフォルトの名無しさん
2006/11/29(水) 22:04:180660デフォルトの名無しさん
2006/11/29(水) 22:14:13>>650
有難うございました!
0661658
2006/11/29(水) 22:26:42早速fregは21にして、dが20以上の時はfreg[20]が+1なるように改良してみたんですが
やはり実行すると1245112という意味不明な数字がでるだけです…
もっと根本的なところ間違ってませんかね?
0662デフォルトの名無しさん
2006/11/29(水) 22:30:58数を数えたいなら0で初期化するべし。
0665658
2006/11/29(水) 23:45:30アドバイスありがとうございます。おかげで無事できました。
何か初歩的なこと忘れまくりでしたねort
でも659さんや662さんのおかげで凄く勉強になったと思います。
ほんとにありがとうございました。
0666616
2006/11/29(水) 23:46:08ちゃんと動いたかな?
解説しろって言われてもなぁ...当たり前のコードだからなぁ...
お前さんが疑問と思う点を書いてくれれば説明してやれるかも知れん。
0667デフォルトの名無しさん
2006/11/30(木) 00:11:53回答してる側にとっては当たり前すぎてどうわからんのかわからん場合はよくある。
質問してる側もどこが分からんのか分からんくらいに全体的にわからんのかもしれんが、
今後の役に立てようという気概があるくらいならもうちょっとつっこんだ質問をしてくれないと困ると思う。
0669デフォルトの名無しさん
2006/11/30(木) 00:42:46[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3055.txt
[3] 環境
[3.2] Visual Stdio 2003
[3.3] C++
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3056.txt
提出期限過ぎてて現在執行猶予期間。やばいって!ほんとやばいって!!
0670デフォルトの名無しさん
2006/11/30(木) 00:44:220671デフォルトの名無しさん
2006/11/30(木) 00:56:260672デフォルトの名無しさん
2006/11/30(木) 00:56:280673デフォルトの名無しさん
2006/11/30(木) 01:02:50ここまで来ると釣りにしか思えないな。
0674デフォルトの名無しさん
2006/11/30(木) 01:03:25俺の記憶が正しければ君でその問題を丸投げするのは
4人目なんだ
3人目なんかちゃんともう解答済みだと教えてやったのに
「教えてくれるのか教えてくれないのかハッキリしてください」
と逆切れしていたぞ
ひでえ学校だなwww
0675デフォルトの名無しさん
2006/11/30(木) 01:05:46俺のところはクローンがあったら
点数をクローンの数で割るとか言ってたけど
偶然同じになったらどうするのかね
ここで見たことある問題あったし
0676デフォルトの名無しさん
2006/11/30(木) 01:08:46>636のコードで This is a pen. を入力した時の実行結果
0 文字:1 回
1 文字:1 回
2 文字:1 回
3 文字:0 回
4 文字:1 回
pen(3文字)がカウントされていない。
if(c=='.'||c==','){の後にif(j)res[j<21?j:20]++;が必要。
0677デフォルトの名無しさん
2006/11/30(木) 01:09:23void initialize(int account[]) {
int i;
for (i = 0; i < 5; i++) {
account[i] = 0;
}
}
void daily_input(int account[]) {
char* hinmoku[] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
int i;
for(i = 0; i < 5; i++) {
printf("%s :", hinmoku[i]);
scanf("%d", account + i);
}
}
void daily_output(int account[]) {
char* hinmoku[]={"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
int i;
for(i = 0; i < 5; i++) {
printf("%s :%d\n", hinmoku[i], account[i]);
}
}
0678デフォルトの名無しさん
2006/11/30(木) 01:26:13それだと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]);
}
}
0679676
2006/11/30(木) 01:42:3930分待ってみたけど反応が無いな。もう寝ちゃったかな。
他にも指摘すると、if(j==0){の分岐(不要)とか、そもそもリダイレクトの指定じゃ無いだろ、とか。
まだ回答するには早いんじゃないかな。挑戦も大事だけどじっくり基礎を固めて力をつけてからでも遅くないと思うよ。
0680デフォルトの名無しさん
2006/11/30(木) 01:46:010681デフォルトの名無しさん
2006/11/30(木) 02:01:070682デフォルトの名無しさん
2006/11/30(木) 04:18:42県名と数字はひとつの空白スペースで区切られています。
お願いします。
0683デフォルトの名無しさん
2006/11/30(木) 04:21:28jinkou.txtも作ってくれって事?
君は用意しないの?
0684638
2006/11/30(木) 04:42:29.r-‐i'''''''''''i''''‐-、
o| o! .o i o !o
.|\__|`‐´`‐/|__/|
|_, ─''''''''''''─ ,、 / _
/ \
/ ノ( \ ____ / i
| ⌒ ● {+++} ● | キングブチキレス
!  ̄ ノ
丶_ ノ
0685デフォルトの名無しさん
2006/11/30(木) 04:50:41ケンカ売ってるとしか思えない
0686629
2006/11/30(木) 07:45:48[2]n×nの正方形状に並んだ点からなる地図があり、各店は陸か水(海、湖、川)
のどちらかを表してるとします。地図の周囲を海とみなし、海から縦方向または
横方向に水を現す点を結合してる点を海に表す点に置き換えるプログラムを作成しなさい。
例えば、陸をa、水をb、海をcで表すと左の地図は右の地図に書き換えられます。
bbaaabaaab ccaaacaaac
aaaaabaaba aaaaacaaba
aaaaaaabaa aaaaaaabaa
aaabbbbaaa aaabbbbaaa
aaababaaaa aaababaaaa
aaabbbaaaa aaabbbaaaa
aaaaaabbaa aaaaaaccaa
abbbbaabba accccaacca
abaabaaabb acaacaaacc
aaaabaaaaa aaaacaaaaa
[3]C言語(emacs)
[4]今日中
[5]for,while,if文 ポインター 文字列 1,2次配列
0687デフォルトの名無しさん
2006/11/30(木) 08:23:41[2] 双方向リストを昇順で出力するため、
Sort関数の???の部分を埋めてプログラムを完成させなさい。
なお、関数以外の部分は変えない事。関数内では新たに変数をいくつ追加しても
構わない。
プログラム↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3057.txt
[3.1] SunOS(Solaris10)
[3.2] GCC 3.4
[3.3] C言語
[4] 期限: 2006年12月1日AM8:30
[5] Break,Continue,Goto命令の禁止
2重ポインタの仕組みが全く分からず苦労しています。どうか宜しくお願いします。
0688デフォルトの名無しさん
2006/11/30(木) 08:26:08for(i=0;i<N;i++) {
if(map[0][i] == 'b')
map[0][i] = 'c';
if(map[N-1][i] == 'b')
map[N-1][i] = 'c';
if(map[i][0] == 'b')
map[i][0] = 'c';
if(map[i][N-1] == 'b')
map[i][N-1] = 'c';
}
while(1) {
int f = 1;
for(i=1;i<N-1;i++) {
for(j=1;j<N-1;j++) {
if(map[i][j] == 'b') {
int k;
int di[4] = {-1, 0, 0, 1};
int dj[4] = {0, -1, 1, 0};
for(k=0;k<4;k++) {
if(map[i+di[k]][j+dj[k]] == 'c') {
map[i][j] = 'c';
f = 0;
}
}
}
}
}
if(f)
break;
}
0689デフォルトの名無しさん
2006/11/30(木) 08:33:33二重ポインタさえわかればできるの?
二重ポインタ講座でも始めるか
0690デフォルトの名無しさん
2006/11/30(木) 08:56:01本当にありがとうございます
0691デフォルトの名無しさん
2006/11/30(木) 08:57:34つ 長いぜ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3058.txt
0692デフォルトの名無しさん
2006/11/30(木) 10:37:11ひでえな。循環リストじゃないしダミーリストもないので面倒なんだよなー
0693デフォルトの名無しさん
2006/11/30(木) 10:39:08配列とかはvectorがやっぱり楽だなぁ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3059.txt
0694デフォルトの名無しさん
2006/11/30(木) 12:05:16[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] その他の制限: なし
授業で触れなかったのでわからなくて・・・よろしくお願いします。
0696デフォルトの名無しさん
2006/11/30(木) 12:40:14授業で何を触れなかったの?
どこまで習ってるの?
0697デフォルトの名無しさん
2006/11/30(木) 12:46:070698デフォルトの名無しさん
2006/11/30(木) 13:17:37一次元配列はわかってるんだな
それなら簡単だ
k行m列の配列は
int a[k][m];
と宣言して、i行j列へ5を代入したければ
a[i][j] = 5;
一次元配列と扱い方に大きな違いはない
k, m, nは
#define k 2
などと書いておくといい
0699デフォルトの名無しさん
2006/11/30(木) 14:34:32#define k 2 と書いておくとどんなメリットがあるんですか?
0700デフォルトの名無しさん
2006/11/30(木) 14:47:47あのカタワレは何処行ったのかね?
0701デフォルトの名無しさん
2006/11/30(木) 14:48:08[2] 問題文:多項式f(x)=Cn×�Iのn乗+Cn-1×�Iの(n-1)乗+...+C1×�I
+C0×�Iの0乗 の次数nと多項式の係数Cn,Cn-1,..,C1,C0を順に読み込み、
変数�I=0.0、0.1、0.2,・・、0.9、1.0に対する多項式f(x)の値を計算して見やすい形に
出力するCプログラム
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:Cです
[4] 期限:12月3日まで
[5] その他の制限:配列の問題です。 for構文を必ず使い、
f(x)=((...((Cn�I+Cn-1)�I+Cn-2)...)�I+C1)�I+C0
と単純な効率の良いプログラム計算するようなもの。つまり
fx←Cn
fx←fx*�I+Cn-1 というような代入を参考にして考えてみる。
0702701
2006/11/30(木) 14:49:230703デフォルトの名無しさん
2006/11/30(木) 14:56:50#define k 2
とすると、コンパイル前に自動的にkを2に置き換えてくれる。
int k = 2;
int m = 3;
int a[k][m];
上のように配列の要素数に変数の値を使用すると、コンパイルが通らない可能性があるから、
#defineを使う。
0704デフォルトの名無しさん
2006/11/30(木) 14:58:330705デフォルトの名無しさん
2006/11/30(木) 14:59:410706デフォルトの名無しさん
2006/11/30(木) 15:01:500707デフォルトの名無しさん
2006/11/30(木) 16:08:53#include <stdio.h>
#include <math.h>
#include <stdlib.h>
double func( int iN, double* pCn, double dX )
{
double dRet = 0.0;
int i;
for( i = iN; i >= 0; i-- ) {
if( i )
dRet += ( (*pCn) * pow( dX, (double)i ) );
else
dRet += *pCn;
pCn++;
}
return dRet;
}
// Tobe continue
0708デフォルトの名無しさん
2006/11/30(木) 16:10:17{
int 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;
}
0709sage
2006/11/30(木) 16:21:27[2] 問題文(含コード&リンク):自身の氏名の漢字の内部コードを16進数、及び2進数で出力せよ
[3] 環境
[3.1] OS:WINDOWS
[3.2] コンパイラ名とバージョン:Vsual C++ 2005
[3.3] 言語:C++
[4] 期限:2006/12/1(明日),A.M.8:00頃←細かくてすみません
[5] その他の制限:整数を2進数に出力すること、文字コードを16進数に出力することはできます。
「氏名の漢字」は漢字であれば何でも構いません。
制限でも触れたように整数を2進数に出力すること、文字コードを16進数に出力することは出来るのですが、同時に行うことが出来ません。
明日のお昼に提出の課題で、家にはギリギリ8時ごろまでいられます。
よろしくお願いいたします。
0710デフォルトの名無しさん
2006/11/30(木) 16:27:15続けて処理すれば、「同時」にしなくてもいいんジャマイカ?
0711デフォルトの名無しさん
2006/11/30(木) 16:27:31分けてやればいいだろ
常識的に考えて・・・
0712デフォルトの名無しさん
2006/11/30(木) 16:39:34出力結果に
「○」の16進表現は〜、2進表現は〜。
「×」の16進表現は〜、2進表現は〜。
という風に表示出来たらなって思ってたのですが、諦めて16進と2進、それぞれ別々に表示したほうが作るのも簡単ですよね。
本当に初心者でごめんなさい><
0713デフォルトの名無しさん
2006/11/30(木) 16:40:21もういいや
0714デフォルトの名無しさん
2006/11/30(木) 17:15:40[2] 問題文:使用される文字列が英大文字26文字のみの場合の文字列探索法(BM法)
のプログラム。ただし、英大文字以外の文字がテキストまたはパターンに入力された
ときは、再入力を求めること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
よろしくおねがいします。
0715デフォルトの名無しさん
2006/11/30(木) 17:42:22[2] 問題文:キーボードから読み込んだ整数n以下の素数をすべて求め、1行に12個数値を表示せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2006年12月3日まで
[5] その他の制限: 制限は特に無いです。
すみません、よろしくお願いします。
0716デフォルトの名無しさん
2006/11/30(木) 17:43:29>1行に12個数値を表示せよ。
1行に12個ずつ って意味だよな?
0717デフォルトの名無しさん
2006/11/30(木) 17:45:19はい、そういうことです。よろしくお願いします。
0718デフォルトの名無しさん
2006/11/30(木) 18:12:03#include <stdio.h>
int isprime(int value){
int i;
if(value%2==0) return (value==2);
for(i=3;value/i>=i;i+=2)
if(value%i==0)
return 0;
return 1;
}
int main(void){
int i, n;
int prime_count=0;
printf("Input positive number :");
scanf("%d", &n);
for(i=2;i<n;i++){
if(isprime(i)){
printf(" %d", i);
prime_count++;
if(prime_count%12==0)
printf("\n");
}
}
return 0;
}
0719デフォルトの名無しさん
2006/11/30(木) 19:33:42[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3051.txt
この整数値の昇順リストを作成するプログラムを、指定データ(下記deletedata)と同じデータを持つセルをすべて
消去し、消去するデータがあったときはdata foundと1回表示し、ないときにはno such data
と1回表示するvoid DeleteAlist(struct LIST **ptr, int deletedata)を再帰を用いることによって作成せよ。
指定データを持つセルの先頭のものを消去する関数を参考にせよ。
void Deletelist(struct LIST **ptr, int deletedata){
if((*ptr)==NULL){
printf("no such data \n");
}else if((*ptr)->data == deletedata){
struct LIST *tmp;
printf("data found\n");
tmp=(*ptr)->nextptr;
free(*ptr);
*ptr=tmp;
}else DeleteList(&((*ptr)->nextptr),deletedata);
}
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:
昨日も聞いたんですが、
条件が追加され、出題されました。お願いします。。
0720デフォルトの名無しさん
2006/11/30(木) 20:16:25以下と差し替えて DeleteAlist() の戻り値が0なら no such data, 1以上なら data found と表示すればよろし
int DeleteAlist( struct LIST** ppList, int iDelKey )
{
LIST* pTmp;
int iDelNum = 0;
while( *ppList ) {
if( (*ppList)->data == iDelKey ) {
pTmp = (*ppList)->nextptr;
free( (void*)*ppList );
*ppList = pTmp;
iDelNum++;
}
else {
ppList = &((*ppList)->nextptr);
}
}
return iDelNum;
}
0721デフォルトの名無しさん
2006/11/30(木) 21:28:03再帰で書くことはできないんですか?
0722デフォルトの名無しさん
2006/11/30(木) 21:35:55[2] 問題文(含コード&リンク):
整数 ID の二分木を表示する関数(簡単なものがスライドにあるのでそのまま打ち込んでも良いが、もっと見やすく拡張したほうが良い)と
二分探査木を作る関数(スライドにもあるが改変しても良い)を作り、二分探査木に以下のようなデータを入力した結果を表示せよ。
データは並んでいる順に入力すること。
(ア)1,2,3,4,5,6,7
(イ)1,7,2,6,3,5,4
(ウ)4,2,1,6,3,5,7
ソース ttp://www.geocities.jp/c_prog2011/tree_1.txt
[3] 環境
[3.1] OS: Windows XP Home Edition SP2
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2005 Academic Edition
[3.3] 言語: C
[4] 期限: 2006年12月6日23:59まで
[5] その他の制限: 線形リストの基本は学んだが二分木は初めてです。
よろしくお願いします。
0723デフォルトの名無しさん
2006/11/30(木) 21:36:25int DeleteAlist( struct LIST** ppList, int iDelKey )
{
LIST* pTmp;
int iDelNum = 0;
if( ppList == NULL )
return 0;
while( *ppList ) {
if( (*ppList)->data == iDelKey ) {
pTmp = (*ppList)->nextptr;
free( (void*)*ppList );
*ppList = pTmp;
iDelNum++;
}
else {
ppList = &((*ppList)->nextptr);
}
}
DeleteAlist(NULL, int iDelKey);
return iDelNum;
}
0724デフォルトの名無しさん
2006/11/30(木) 21:44:53どうもありがとうございました!
0725デフォルトの名無しさん
2006/11/30(木) 21:57:36コンパイル通らなかったです・・・・
0726デフォルトの名無しさん
2006/11/30(木) 22:02:45あ、ごめん
下から三行目のintいらない
コンパイルできないならエラーメッセージくらい書いた方がいいよ
0727デフォルトの名無しさん
2006/11/30(木) 22:13:18int 消しました。まだエラーでます
エラー E2451 F:\borland\bcc55\list\list.c 11: 未定義のシンボル LIST(関数 DeleteAlist )
エラー E2451 F:\borland\bcc55\list\list.c 11: 未定義のシンボル pTmp(関数 DeleteAlist )
エラー E2140 F:\borland\bcc55\list\list.c 12: ここでは宣言はできない(関数 DeleteAlist )
だそうです
11行目と12行目はこうなってます
LIST* pTmp;
int iDelNum = 0;
0728デフォルトの名無しさん
2006/11/30(木) 22:18:350729デフォルトの名無しさん
2006/11/30(木) 22:19:46struct LIST* pTmp;
自分でコンパイルしてないから何とも言えんけど
0730デフォルトの名無しさん
2006/11/30(木) 22:23:00>>729
通りました〜どうも
0731720
2006/11/30(木) 22:40:45まぁ、回答してくれた人がいるみたいなので良かったな。
だけど、これを再帰で書いた奴が居たら書き直させるわ。
再帰にして解り易くなる訳でもねぇしデメリットしかねぇじゃん。
ちゅことで俺なら、『こんなん再帰で書かせるなボケ』と講師に言うかな。
0732デフォルトの名無しさん
2006/11/30(木) 22:44:59結局は慣れの問題じゃないだろうか。
0733デフォルトの名無しさん
2006/11/30(木) 23:01:11[2] 問題文(含コード&リンク): ビットベクトルによる集合表現を用いて、2つ
の集合に対する要素の追加・削除・和集合、積集合、差集合を求めるプログラム
を作れ。
[3] 環境
[3.1] OS: Windows Xp
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: なし
よろしくお願いします。
0734701
2006/11/30(木) 23:46:07すいません
func、#include <stdlib.h>、pow
は習っていないので、これを使わないC言語
をお願いします。
0735デフォルトの名無しさん
2006/11/30(木) 23:48:37習ってないなら調べれば。
0736デフォルトの名無しさん
2006/11/30(木) 23:57:48空気嫁
習ってないのを使ったら怪しまれるじゃねーか
と>>701の心境をエスパー
0737デフォルトの名無しさん
2006/12/01(金) 00:02:08なんら問題ないじゃないか
0738デフォルトの名無しさん
2006/12/01(金) 00:10:260739デフォルトの名無しさん
2006/12/01(金) 00:23:54「てめぇーなにおれのおしえてねーもんつかってんだよぉぅああん?」
と>>701の心境をエスパー
0740デフォルトの名無しさん
2006/12/01(金) 00:42:34と見たがどうか?
0741デフォルトの名無しさん
2006/12/01(金) 00:55:54阪大の授業より抜粋
コンピュータ基礎&基礎演習
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;
}
0742707
2006/12/01(金) 01:11:52func は単なる関数の名前だ。この先も習う事は無いだろう。
ちゅかお前は文法も習ってないのかと小一時間....
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> は不要になる。
続く
0743707
2006/12/01(金) 01:15:42<stdlib.h> を使いたくないなら >>708 を以下の様に修正。
double *pCn; を
double aCn[256];
double *pCn = aCn;
に直す。
pCn = (double*)malloc(... と次の行を削除。
free(... の行を削除。
これで #include <stdlib.h> も不要となる。
0744デフォルトの名無しさん
2006/12/01(金) 01:18:28>>701
#include <stdio.h>
int main(void)
{
int i,j,n;
double x,fx;
double c[11];
printf("次数 : "); scanf("%d",&n);
if(n<0 || n>10){
printf("入力できる次数は0から10まで\n");
return 0;
}
for(i=n; i>=0; i--){
printf("C%d : ",i); scanf("%lf",&c[i]);
}
for(j=1; j<=10; j++){
x = j/10.0;
fx = c[n];
for(i=n-1; i>=0; i--){
fx = fx*x+c[i];
}
printf("f(%.1f) = %f\n",x,fx);
}
return 0;
}
0745デフォルトの名無しさん
2006/12/01(金) 01:25:40そのスライドは?
0746デフォルトの名無しさん
2006/12/01(金) 01:43:03それだけじゃダメだろ。
0747デフォルトの名無しさん
2006/12/01(金) 02:22:41再帰恐怖症
0749デフォルトの名無しさん
2006/12/01(金) 03:24:46幼稚ですね
0750デフォルトの名無しさん
2006/12/01(金) 03:40:47フッ
懸命になってようやく解いた解答を一言の元に否定されて
傷ついてやがんの
0751デフォルトの名無しさん
2006/12/01(金) 03:47:39同じ答えが出ればいいだろと言って技術を向上させる意思が皆無なのは救いようがないな
0752デフォルトの名無しさん
2006/12/01(金) 03:53:21ホーナー法なんて常識だろと思ってたんだがこのスレでは知らない人が二人ほどいたようだった。
ただコードの実行速度を速くしたいって、もう数値解析とかCGとか暗号の分野だけの気がするんだよな
普通にanx^n+a(n-i)x^(n-1)+…+a0 で計算した方が読みやすくていいコードなんじゃないかって
気がしてきた
0753デフォルトの名無しさん
2006/12/01(金) 04:44:000754デフォルトの名無しさん
2006/12/01(金) 04:56:400755デフォルトの名無しさん
2006/12/01(金) 04:56:48受け取る側はどんなもの受け取っても自分で作ったものより良ければそれでいいだろうけど
解答する側はそれなりにテーマ決めて臨んでるんじゃないかねえ
0756707
2006/12/01(金) 06:55:13>>750
懸命になってとか決め付けるなよ。
3分も掛かってないしコンパイルもしてないんだから。
>>751
下手と言われる筋合いは無いよ。
何らかの式を提示された場合、式の演算内容を f() としてまぁバカ正直に書くのは職業上の習慣だから。
まぁ問題をちゃんと読んで無いのは認めるけどね。
>>753
暇潰しだからなぁ...テーマとか言われても...
0757デフォルトの名無しさん
2006/12/01(金) 07:03:34たいした事言われてないのに一々レスするから必死に見える
ほっとけばいいのに
0758707
2006/12/01(金) 07:07:37>>752
ホーナー法って言うんだ。常識なの?知らんかったよ。
けど、これってただの漸化式処理の事だよね。
応用範囲が狭そうだから名前付ける様なもんかなぁ..
コード速度の話はホーナー法?の方が早いでしょ。
上で書いたけど3分で書いたコードだからあんまり責めないでね。
速度を早くする作業は結構あるよ。画像解析とかだとちょっとした工夫で数10倍早くなるから。.
0759デフォルトの名無しさん
2006/12/01(金) 07:26:290760デフォルトの名無しさん
2006/12/01(金) 07:32:14[2] 問題文(含コード&リンク): 整数配列dataにnum個のデータが「小さい順に整列
済みで」格納されている。(data[0]〜data[num-1])。目的とする整数(target)を入力したときに、
整数配列内の何番目にあるか出力せよ。(二分探索)
[3] 環境
[3.1] OS: (Windows xp)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C)
[4] 期限: (12/4/2006 までです。)
[5] その他の制限: (二分探索で求め、変数としてlow,high,midをつかっていただけると幸いです)
0761デフォルトの名無しさん
2006/12/01(金) 07:41:400762デフォルトの名無しさん
2006/12/01(金) 07:48:16だからこういう奴は救いようがないんだよ。
0763デフォルトの名無しさん
2006/12/01(金) 07:55:31ホーナー法はアルゴリズム論では常識。これを知らないと、
ちゃんとした勉強してきてないんだなあと一発で分かる。
応用範囲が狭そうというのは視野が狭い。
ホーナー法は、+ と * を一般の二項演算としたとき、これらが分配的
すなわち a * (b + c) = (a * b) + (a * c) を満たすなら適用可能。
たとえば + と min、max と min、などでも使える。
これを意識して、プログラムの自動変換の分野では、ホーナー法が
適用できるように、演算子を分配的にする手法などが研究されている。
0764デフォルトの名無しさん
2006/12/01(金) 07:56:00絶対見つかるものとする(unkunk
a[num]に数列は格納済み
nに探す数字を入れる
int low=0,high=num-1,mid=(low+high)/2;
while(a[mid]!=n){
if(a[mid]<n) low=mid;
else high=mid;
mid=(low+high)/2;
}
printf("%d",mid);
0765デフォルトの名無しさん
2006/12/01(金) 07:59:210766デフォルトの名無しさん
2006/12/01(金) 08:02:470767デフォルトの名無しさん
2006/12/01(金) 08:05:59ああそうか
printf("%d",mid+1);
0768デフォルトの名無しさん
2006/12/01(金) 08:32:01isgraph
それぞれを使ったらどうなりますか?
0769デフォルトの名無しさん
2006/12/01(金) 08:33:540770デフォルトの名無しさん
2006/12/01(金) 09:02:11>>760
mainは検証用だから適当に書き直す
#include <stdio.h>
int nibuntansaku(int n,int data[],int low, int high){
int mid=(low+high)/2;
if(data[mid]==n) return mid;
else if(high-low==1){
if(data[high]==n) return high;
else return -1;
}
else if(data[mid]<n) return nibuntansaku(n,data,mid+1,high);
else return nibuntansaku(n,data,low,high-1);
}
void main(){
int data[]={1,2,3,5,6,7,8,9};
int low=0,high=8,n;
scanf("%d",&n);
int tmp=nibuntansaku(n,data,low,high);
if(tmp!=-1) printf("%d番目\",tmp+1);
else printf("notfound\n");
}
0771デフォルトの名無しさん
2006/12/01(金) 09:04:09すいません。これです。
ttp://www.geocities.jp/c_prog2011/struct3.ppt
0772デフォルトの名無しさん
2006/12/01(金) 09:15:10×else if(high-low==1){
○else if(high-low<=1){
0773デフォルトの名無しさん
2006/12/01(金) 09:26:18失礼した
×else return nibuntansaku(n,data,low,high-1);
○else return nibuntansaku(n,data,low,mid-1);
0774デフォルトの名無しさん
2006/12/01(金) 09:30:52#include<stdio.h>
int bs(int *data,int target,int low,int high){
int mid=(high+low)/2;
if(high<low)return -1;
if(data[mid]==target)return mid;
else if(target<data[mid])return bs(data,target,low,mid-1);
else return bs(data,target,mid+1,high);}
int main(){
int data[] = {1,2,3,4,6,7,8,9,10,11};
int num = 10,target,ans;
scanf("%d",&target);
ans = bs(data,target,0,num-1);
if(ans!=-1)printf("%d番目\n",ans+1);
else printf("見つかりませんでした\n");return 0;}
0775デフォルトの名無しさん
2006/12/01(金) 10:34:28[2] 問題文: 別に用意したファイルdata.txt
(5人分の名前、身長、年齢が入力されたファイル。こちらを参照http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3061.txt)から
データを読み取り、年齢順に並べ替えて表示する。また表示した内容をファイルに書き直す。
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 12/2/2006 7:00 までです。
[5] その他の制限: 特になし
自分でここまでできました。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3062.txt
しかし、実行するとエラーメッセージが出て強制終了っぽくなります。
どうしてでしょうか?
また、29行目のs[0]=a;を実行するとx[4]=12となってしまうみたいなのですが、
これも理由がわかりません。
お願いします。
0776デフォルトの名無しさん
2006/12/01(金) 10:37:27struct person s[4];
int x[4];
↓
struct person s[5];
int x[5];
0777デフォルトの名無しさん
2006/12/01(金) 10:40:14このソースは冗談だろ?
冗談だと言ってくれ!
0778デフォルトの名無しさん
2006/12/01(金) 10:58:39鼻からコーヒーふきだしちゃったじゃないか!!!1111111
どうしてくれるんだ!!!!!!!11
0779デフォルトの名無しさん
2006/12/01(金) 11:03:50でも何も分からなかったらこんなもんなのかもね…
0780デフォルトの名無しさん
2006/12/01(金) 11:05:410781デフォルトの名無しさん
2006/12/01(金) 11:09:20-― ̄ ̄ ` ―-- _ だめぽ・・・・・
, ´ ......... . . , ~  ̄" ー _
_/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、
, ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
(´__ : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
 ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: : ●::::::::::::::::::::::: : : :_>
,_ \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
(__  ̄~" __ , --‐一~ ̄ ̄ ̄
 ̄ ̄ ̄
0782デフォルトの名無しさん
2006/12/01(金) 11:19:240783デフォルトの名無しさん
2006/12/01(金) 11:50:52駄作ではあるがこれでも持って帰って今まで悪い夢でも見ていたんだろうとみんなで思おうじゃないか。
そう、全て悪い夢だったのさ。
#include <stdio.h>
#include <stdlib.h>
#define FILENAME_READ "data.txt"
#define FILENAME_WRITE "data_new.txt"
#define NAMESIZE 40
#define REALLOC_UNIT 10
struct person{int age;float height;char name[NAMESIZE];};
int main(){int i,j,k,n;FILE *fp;struct person *s,tmp;
if((fp=fopen(FILENAME_READ,"r"))==NULL){fprintf(stderr,"Fileopen failed (read:"FILENAME_READ").\n");return 1;}
n=0;s=(struct person*)malloc(sizeof(struct person)*REALLOC_UNIT);
while(fscanf(fp,"%d %f %s",&(s[n].age),&(s[n].height),s[n].name)!=EOF)
{n++;if(n%REALLOC_UNIT==0)s=(struct person*)realloc(s,sizeof(struct person)*(n+REALLOC_UNIT));}fclose(fp);
for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(s[k].age>s[j].age)k=j;if(k!=i){tmp=s[i];s[i]=s[k];s[k]=tmp;}}
for(i=0;i<n;i++)printf("%d %f %s\n",s[i].age,s[i].height,s[i].name);
if((fp=fopen(FILENAME_WRITE,"w"))==NULL){fprintf(stderr,"Fileopen failed (write:"FILENAME_WRITE").\n");return 1;}
for(i=0;i<n;i++)fprintf(fp,"%d %f %s\n",s[i].age,s[i].height,s[i].name);fclose(fp);return 0;}
0784デフォルトの名無しさん
2006/12/01(金) 11:54:12[2] 問題文(含コード&リンク):10個の倍精度実数型データをキーボードから入力し、
それらのデータを小さい順に並べ替えて画面表示するプログラムを作成しなさい。ただし、
次に示すステップを満たす事とし、入力するデータの中に必ず1種類以上の同じ数値を含むこと
(1)入力されたデータを1次配列double data[10]に格納する
(2)すべての入力が終了した後で、配列を操作してデータの並べ替えを行う
(3)データの並べ替えが終了した後で、画面表示を行う
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:12月3日まで
[5] その他の制限: なし
よろしくお願いします
0785デフォルトの名無しさん
2006/12/01(金) 12:56:17#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;
}
0788714
2006/12/01(金) 14:00:52完全にスルーされているのですが・・・・・・
よろしくおねがいします。
0789デフォルトの名無しさん
2006/12/01(金) 14:09:44それは無いだろ。
実際には屑揃いの中に割とマシな奴が居ると見て貰える。
0790デフォルトの名無しさん
2006/12/01(金) 14:16:54だから、教わるほうが屑なら教えるほうも屑という設定を勝手に作って
>>701の心境をエスパーするという冗談なのさ。
0791デフォルトの名無しさん
2006/12/01(金) 14:58:47そりゃ締め切り書かなきゃスルーされる確率も上がるだろ
常識的に考えて…
また解答側は全ての問題に答える義務があるわけではない
つまらなそうと思えば当然スルーされる
BM法 cでググれば答えがいくらでも出てくるものをわざわざ
やるのはめんどくさいんだよ
0792デフォルトの名無しさん
2006/12/01(金) 15:36:21割とマシだと思われてたのに、次の授業では宿題でやったことと同じ事が出来なかったら
悲惨じゃん
0793デフォルトの名無しさん
2006/12/01(金) 15:47:430794752
2006/12/01(金) 16:14:35別にホーナー法使ってないプログラムにケチをつけたわけじゃないよ
俺自身も752に書いてるようにホーナー法とか最適化手法なんて
もうバッドノウハウなのかなあと思いかけてるくらいだし
ホーナー法使ったプログラムを書いたらホーナー法知らない人にケチをつけられたってだけ
>>763
なるほど 勉強になったわ
トンクス
0795デフォルトの名無しさん
2006/12/01(金) 18:17:36片方が必死なのかと思ったらもう一方も必死なんだな
0796デフォルトの名無しさん
2006/12/01(金) 18:53:51[2] 問題文:
以下の要求(1)〜(6)を満たすクイックソートのプログラムを実現しなさい.
(1)軸要素の選び方については,以下の3方法が利用できるようにすること.
(a) ランダムに一つを選ぶ. (b) データの先頭,最後,真中の位置の3要素の中央値を選ぶ.
(c) データの先頭から見て最初に得られた2つの異なる値の大きいほうをとる.
(2)軸要素で分割した部分配列のサイズ(要素数)が小さくなった場合には, 基本的なソート方法を用いて並び替えること.
(3)プログラム終了時にデータ総数と比較回数を表示すること. また,分割の回数および基本的ソート方法が用いられた回数も表示すること.
いずれも「分かりやすく」表示するように工夫すること.
(5)プログラム実行は,次のような引数付きで行えること.
(ここでは,プログラムファイル名をquick81.cとし,
これをコンパイルしてquick81という実行形式ファイルを作成したとする.)
% quick81 inputfile outputfile pivot_selection basic_sort small_number debug_mode
inputfile : ソートするデータが入ったファイルの名前. outputfile : ソート後のデータを出力するファイルの名前
pivot_selection : a,b,c のいずれかの文字で上の軸要素の選び方に対応する.
basic_sort : b,s,i のいずれかの文字.それぞれ,バブル,選択,挿入ソートに
相当する.分割した部分配列のサイズが小さくなった場合に用いるソート方法を設定する.
small_number : 正の整数.この数字より部分配列のサイズが小さくなったら,上で指定した基本的なソート方法を用いる.
debug_mode : vあるいはnの文字。vの場合は,データの分割の仕方が分かりやすいように、軸要素とそれにより分割された部分配列のサイズを
逐次出力させるようにすること. n の場合は上の出力はしない.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:12月3日
0797デフォルトの名無しさん
2006/12/01(金) 19:05:02[2] 2 3
1 2
1 1
2 2 のような正方行列のデータを読み込んで上の行列をA、下の行列をBとしてA*BとA+Bを求めよ。
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] C
[4] 期限: 12/2
[5] mallocを用いる事。今回のデータは2行2列ですが、行列のサイズはどの数字でも対応できるものでお願いします。
0798デフォルトの名無しさん
2006/12/01(金) 19:09:38inputfileの仕様
0799デフォルトの名無しさん
2006/12/01(金) 19:19:20ファイル中のデータの並べ方は問わない.データ数は1000個です
outputfile : ソート後のデータを出力するファイルの名前
ファイル中のデータの並べ方は,inputfileと同じにすること.
pivot_selection : a,b,c のいずれかの文字
上の軸要素の選び方に対応する.
basic_sort : b,s,i のいずれかの文字.それぞれ,バブル,選択,挿入ソートに
相当する.分割した部分配列のサイズが小さくなった場合に用いるソート方法を
設定する.
small_number : 正の整数.この数字より部分配列のサイズが小さくなったら,
上で指定した基本的なソート方法を用いる.
debug_mode : v あるいは n の文字
vの場合は,データの分割の仕方が分かりやすいように,
軸要素とそれにより分割された部分配列のサイズを
逐次出力させるようにすること.
n の場合は上の出力はしない.
0800デフォルトの名無しさん
2006/12/01(金) 19:59:48//mallocでの正方行列の確保
int i;
int **p;
p = (int **)malloc(n*sizeof(int *));
for(i=0; i<n; i++) p[i] = (int *)malloc(n*sizeof(int));
//和
int i, j;
int **a, **b, **c;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) c[i][j] = a[i][j] + b[i][j];
}
//積
int i, j, k;
int **a, **b, **c;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
c[i][j] = 0;
for(k=0; k<n; k++) c[i][j] += a[i][k] * b[k][j];
}
}
後は適当になんとかして。
0801デフォルトの名無しさん
2006/12/01(金) 20:25:07言い方が悪かった
inputfileの区切り文字は何?
0802デフォルトの名無しさん
2006/12/01(金) 20:55:510803デフォルトの名無しさん
2006/12/01(金) 21:38:20{1〜10までの乱数を10個発生させて表示させる。ただし、1度出た数字は除外する。} という課題を出されたのですが、教科書を見ながら解いても 同じ数字が重複して表示されてしまうプログラムになってしまいどうしていいかわかりません。
どなたか手ほどきをおねがいします
0804デフォルトの名無しさん
2006/12/01(金) 21:42:38教科書を見ながら解いた結果を貼るか、>>1を読んで書き直して丸投げするか
好きな方を選べ
0805デフォルトの名無しさん
2006/12/01(金) 21:58:45int data[10];
int i, cnt = 0;
while( cnt < 10 ) {
data[cnt] = rand() % 10 + 1;
for( i = 0; i < cnt; i++ )
if( data[i] == data[cnt] )
break;
if( cnt == i ) cnt++;
}
0806デフォルトの名無しさん
2006/12/01(金) 22:13:14[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3051.txt
この整数値の昇順リストを作成するプログラムを、指定データ(下記deletedata)と同じデータを持つセルをすべて
消去し、消去するデータがあったときはdata foundと1回表示し、ないときにはno such data
と1回表示するvoid DeleteAlist(struct LIST **ptr, int deletedata)を再帰を用いることによって作成せよ。
指定データを持つセルの先頭のものを消去する関数を参考にせよ。
void Deletelist(struct LIST **ptr, int deletedata){
if((*ptr)==NULL){
printf("no such data \n");
}else if((*ptr)->data == deletedata){
struct LIST *tmp;
printf("data found\n");
tmp=(*ptr)->nextptr;
free(*ptr);
*ptr=tmp;
}else DeleteList(&((*ptr)->nextptr),deletedata);
}
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:
昨日も聞いたんですが、
また条件を言われました。void型は変えずに、関数のなかで、deletedataとnosuchdataを表示しないといけないと言われました。
何度もすいませんが、お願いします
0807デフォルトの名無しさん
2006/12/01(金) 22:21:47?
0808デフォルトの名無しさん
2006/12/01(金) 22:27:270809デフォルトの名無しさん
2006/12/01(金) 22:38:32return の変わりに条件判定とprintf文を書けば良いだけでないの?
0810デフォルトの名無しさん
2006/12/02(土) 00:23:33[2] 問題文:50個の整数データを読み込み、それらを小さい順に出力する
cプログラムを作成せよ。バブル整列法は使ってはいけない。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cのみ
[4] 期限: 2006年12月23日12:00まで
よろしくお願いします。
0811デフォルトの名無しさん
2006/12/02(土) 00:41:03#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]);
}
}
0813デフォルトの名無しさん
2006/12/02(土) 01:22:03int i,k=0,shaffle;
int rar[10];
for(i = 0; i< 9; i++)
rar[i] = i+1;
scanf("%d",&shaffle);
srand((unsigned)time(NULL));
while(k <= shaffle){
i = rand() % 10;
if(i>=0){
temp = Value[i];
Value[i] = Value[i-1];
Value[i-1] = temp;
}
k++;
}
適当にこんな感じでも良いでしょ
0814デフォルトの名無しさん
2006/12/02(土) 01:23:52びっくりだ
0815デフォルトの名無しさん
2006/12/02(土) 03:34:130816デフォルトの名無しさん
2006/12/02(土) 05:25:56int d[10];
int r,w;
int i;
srand((unsigned)time(NULL));
for( i=0; i < 10; i++)
d[i] = i + 1;
for( i = 0 ; i < 10; i++){
r = i + rand() % (10 - i);
w = d[i];
d[i] = d[r];
d[r] = w;
}
0817デフォルトの名無しさん
2006/12/02(土) 06:17:56なんか色々とおかしくない?
0818813
2006/12/02(土) 06:26:50何も見ずに書き込んだらやっぱだめだね
0819デフォルトの名無しさん
2006/12/02(土) 07:34:43コンパイルはしてないけどな。あと、データ読むところは書いてない。
#include <stdlib.h>
int compare(const int *a, const int *b);
int main(void)
{
int data[50];
int i;
/* ここいらでデータを読む */
/* ソート */
qsort(data, 50, sizeof(int), (int (*)(const void*, const void*))compare);
/* 表示 */
for (i = 0; i < 50; i++) {
printf("%d\n", data[i]);
}
}
int compare(const int *a, const int *b)
{
return *a - *b;
}
0820デフォルトの名無しさん
2006/12/02(土) 10:39:001
11
121
1331
14641
のように出力されるようにするにはどのように作ればいいですか。
0821デフォルトの名無しさん
2006/12/02(土) 11:33:54どのようにって
・n段目の左からm番目の数字が(n-1)段目の(m-1)番目とm番目の数字和 (n>=3, 2<=m<=n-1)
・n段目の左端(m=1)と右端(m=n)の数字が1
になるように作ればいいと思うよ
0823デフォルトの名無しさん
2006/12/02(土) 12:08:300824デフォルトの名無しさん
2006/12/02(土) 12:12:510825デフォルトの名無しさん
2006/12/02(土) 12:22:34プログラミングだけが人生じゃないさ。
難問奇問な宿題はさっさと丸投げして人生を楽しもう。
0826デフォルトの名無しさん
2006/12/02(土) 13:56:03自分で勉強してみて難しさが分かりました orz
これからは期限守らなくても大目に見ますね。
0827デフォルトの名無しさん
2006/12/02(土) 14:01:12当たり前だカス
0828デフォルトの名無しさん
2006/12/02(土) 14:15:57ニートは黙ってろ
0829デフォルトの名無しさん
2006/12/02(土) 14:34:35多分題意に反すると思うけど
#include <stdio.h>
#define N 5
int main(void)
{
int i, j, k, n,, a[N];
for(i=0; i<N; i++) {
scanf("%d", &n);
for(j=0; j<i; j++) {
if(a[j]>n) {
for(k=i; k>j; k--) a[k] = a[k-1];
break;
}
}
a[j] = n;
}
for(i=0; i<N; i++) printf("%d ", a[i]);
return 0;
}
0830デフォルトの名無しさん
2006/12/02(土) 14:35:520831デフォルトの名無しさん
2006/12/02(土) 15:26:000832デフォルトの名無しさん
2006/12/02(土) 15:27:090833デフォルトの名無しさん
2006/12/02(土) 15:33:04inputfile : ソートするデータが入ったファイルの名前.
ファイル中のデータの並べ方は問わない.データ数は1000個です
outputfile : ソート後のデータを出力するファイルの名前
ファイル中のデータの並べ方は,inputfileと同じにすること.
これを見る限り区切り文字がスペースだろうとコンマだろうと改行記号だろうと
対応しなくてはならないようだ
どうも質問者は分かってなかったみたいだが
とりあえず関数は全部書いたけどmain作るのがめんどくさくて絶賛放置中
0834デフォルトの名無しさん
2006/12/02(土) 15:47:120835832
2006/12/02(土) 15:49:090836デフォルトの名無しさん
2006/12/02(土) 15:49:58>ファイル中のデータの並べ方は,inputfileと同じにすること.
じゃあこれは何を意味するの?
あとファイル内のデータは数値?文字列?
0837デフォルトの名無しさん
2006/12/02(土) 15:54:190838デフォルトの名無しさん
2006/12/02(土) 16:01:26ていうのは、inputfileに入っているデータと同じ数字が入っているならいいらしいです。あとファイル内のデータは数字です
0839デフォルトの名無しさん
2006/12/02(土) 16:15:320840デフォルトの名無しさん
2006/12/02(土) 16:19:080841デフォルトの名無しさん
2006/12/02(土) 16:19:500842デフォルトの名無しさん
2006/12/02(土) 16:27:220843デフォルトの名無しさん
2006/12/02(土) 16:32:170844デフォルトの名無しさん
2006/12/02(土) 16:34:270845デフォルトの名無しさん
2006/12/02(土) 16:38:25[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3063.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: 12月7日
[5] その他の制限: よろしくお願いします。
0846デフォルトの名無しさん
2006/12/02(土) 16:58:53またお前か
0847デフォルトの名無しさん
2006/12/02(土) 17:26:51今からやるから期待しないで待ってろ
21時までに書き込み無かったら俺からの回答は諦めろ
0848831
2006/12/02(土) 17:38:22できそうですか?
0849デフォルトの名無しさん
2006/12/02(土) 17:38:580850デフォルトの名無しさん
2006/12/02(土) 17:43:49その関数を晒してもらおうか
0851848
2006/12/02(土) 17:49:03{
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;
}
まだバブルソートしかできてません
0852847
2006/12/02(土) 17:49:37それを晒してくれよ。Mainなら書くよ
0854デフォルトの名無しさん
2006/12/02(土) 17:52:100855848
2006/12/02(土) 17:53:500856デフォルトの名無しさん
2006/12/02(土) 17:57:440857デフォルトの名無しさん
2006/12/02(土) 17:57:58大変だwww無限ループにwww
0858デフォルトの名無しさん
2006/12/02(土) 18:09:330859デフォルトの名無しさん
2006/12/02(土) 18:13:18締め切り日曜みたいだし847からの解答が無ければ俺がのんびり解こう
0860796
2006/12/02(土) 19:05:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3064.txt
0861デフォルトの名無しさん
2006/12/02(土) 19:06:530862847
2006/12/02(土) 19:32:29これは面倒くさいな。とりあえず前言撤回。俺はやってないことにしておいてくれ。
ということで、>>859にまかせた。
0863デフォルトの名無しさん
2006/12/02(土) 19:56:540864796
2006/12/02(土) 20:04:440865デフォルトの名無しさん
2006/12/02(土) 20:05:42) だ .き .を れ(
( お て .疑 以 )
) ! い .い 上(
,, -──- 、._ ( く .な )
-"´ \ .) .の .が (
/ ヽ.( .は .ら .)
/ ヽ〜、_ _(
| _ノ ヽ、_ .| `,〜〜〜´
l o゚⌒ ⌒゚o l
` 、 (__人__) /
`ー 、_. ` ⌒´ /
/`''ー─‐┬''´
/ 丶. i |
./ 丶、_)|_ノ|_
.|  ̄ヽ._ ´ ヽ
ヽ、 _/´`ヽ /
 ̄  ̄ ̄
0866デフォルトの名無しさん
2006/12/02(土) 20:07:070867デフォルトの名無しさん
2006/12/02(土) 20:12:19他に方法がないからと言って判断を完全に預けてしまうのは
独立した個人としての人格の尊厳に関わるのではないだろうか。
0868デフォルトの名無しさん
2006/12/02(土) 20:22:26./ _/ / / / / / / / / ∧_ヽ \ ヽ. ヽ
// /! / .l l /,.-‐'フフヽ.// / /´ヽヽ `>.、 .! ',`ヽ 〉
/ / |/ | l// // /.: / ノ /. :.:.ヽ \\ `ト、 | | /
{ ./ || l/ /ン-‐<、 ://:/ ./: :,ィ─ヽ-\ヽ. | | | |′
\、.--|l-‐''"_,. -‐''",. =,=¬ミ、/: : :/ /: : : ノ゙,ニ==ミ、 | | | |
/  ̄|| ̄ {: :く ト-' } : : / ./: : : : : ト-' } // / j l !
/ .!', \:.` ゝ -‐' .// ー-- ./ / /j | /
/ ', ヽ \ゝ、 ノ : : ! ノ/ .//ノ'
./ .∧ \ \ -┐ ∠ -‐''" /
/ /,ハ = ゝヘ、_ ゝ、 __ノ) /〃/
/ // ヽ〃 ヾ ヽ ̄ ̄ 、_,.. -−'' ´ ̄ / /</ ケヒヒッ
/ ,r'"´ ̄了ゝ、rー、 ヽ ` ー──‐ '' ´ /liヾ/ 人生は裏切りの連続ですぅ
/ / ゝ, -‐'7`ーイ__.」、 \ ー / |
/ , f´ ̄/ / ノ/ヽゝン‐.、V丶、 /| |
/ 之/ / / ヽ ヽノ1ヽ-、.`丶、 _,. -‐'"´ /|ヾ 「l〃|
/ 「 / / / ', ��| ヽ \  ̄ / / |= =l
/ .ゝ/ // .i l , -イ ヽ. ヽ ,イヽ / |〃il ヾl
,r/ / || L.、| l `丶、 f | `ヽ、 | !
/./ / || ヽjヾ||〃l ,. ‐-、ヽl _ \| ヽ
/ / / || ノj= =|/ , --ヘ}⌒}´_\ \ 、 ヾ r ヽ
0869デフォルトの名無しさん
2006/12/02(土) 20:26:350870デフォルトの名無しさん
2006/12/02(土) 20:49:25ちゃんと動作確かめてないけど、こんなんでいいのかな?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3066.c
0871デフォルトの名無しさん
2006/12/02(土) 21:02:57信じていたのに
この言葉はお約束ですな
0872796
2006/12/02(土) 21:10:27はい、ありがとうございました。おかげで助かりました。
0873デフォルトの名無しさん
2006/12/02(土) 21:13:43/\ /\
/ \ / \
/ ゙'----''"´ ヾ
/ `:、
/ `:
| i
| ノ ' |
| .,___., .,___., i
、 ''"´`:、 υ / キミ達のこと 信じてたのに........クスン
`丶,:' 、. . )___Д____,,.,_,,.;''"
/ / ο
0874デフォルトの名無しさん
2006/12/02(土) 21:37:122ch閉鎖か
0875デフォルトの名無しさん
2006/12/02(土) 22:24:45[2] 問題文:
配列に格納されたデータをソートするプログラムを作成するにあたり、
以下の機能を持つ関数を作成しなさい。
乱数を生成し配列要素に格納する
init_array(int *pa, int n)
配列要素を1行で画面に出力する
output_array(int *pa, int n)
指定された2つアドレスのデータを交換する
swap(int *x, int *y)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C
[4] 期限: 2006年12月4日09:00まで
0876デフォルトの名無しさん
2006/12/02(土) 22:50:07# include <stdio.h>
# include <stdlib.h>
void init_array(int *pa, int n)
{
while(--n >= 0) pa[n] = rand();
}
void output_array(int *pa, int n)
{
int i;
for(i = 0; i < n; i++)
printf("%d ", pa[i]);
printf("\n");
}
void swap(int *x, int *y)
{
int t = *x;
*x = *y;
*y = t;
}
0877 ◆s2cIPM3PTs
2006/12/02(土) 23:05:15[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3067.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限: 明後日
[5] その他の制限: 配列を利用する
関数を利用しない
つい最近習い始めたばかりの初心者です。
宜しくお願いします
0878デフォルトの名無しさん
2006/12/02(土) 23:25:19問題文の読み込むってファイルから?
ファイルから読むんなら関数使っちゃうよね?
0879デフォルトの名無しさん
2006/12/02(土) 23:32:270880 ◆s2cIPM3PTs
2006/12/02(土) 23:38:13>>879
すいません。879さんの言うとおりです。
0881デフォルトの名無しさん
2006/12/03(日) 00:06:48[2]問題文:入力した年月日が、その年の1月1日から通算何日目かを表示するプログラムを
閏年を判別する関数、通算を求める関数、main関数に分けて作成せよ。
[3]環境
[3-1]OS:Windows XP
[3-2]コンパイラ名とバージョン:Visual Studio.NET2003
[3-3]言語:C++
[4]期限:12月7日
0882デフォルトの名無しさん
2006/12/03(日) 00:14:00[2]問題文:44,44と-0,1111×(10の2乗)を足した値をscanf関数を用いずに
表示するプログラムを作成せよ。ただし、数値は入力すること。
[3]環境
[3-1]OS:Windows XP
[3-2]コンパイラ名とバージョン:Visual Studio.NET2003
[3-3]言語:C++
[4]期限:12月7日
0883デフォルトの名無しさん
2006/12/03(日) 00:26:09#include <stdio.h>
int main(void){
float a,b;
char buf[1024];
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%f %f",&a,&b);
printf("%.2f\n",a+b);
return 0;
}
0884デフォルトの名無しさん
2006/12/03(日) 00:59:05>44,44と-0,1111×(10の2乗)
俺の脳がコンパイルエラーを返した
0885デフォルトの名無しさん
2006/12/03(日) 01:07:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3068.c
0886デフォルトの名無しさん
2006/12/03(日) 01:08:470887デフォルトの名無しさん
2006/12/03(日) 01:16:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3069.cpp
0888デフォルトの名無しさん
2006/12/03(日) 01:20:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3070.cpp
すまそ、細かいが念のためにちょい修正
0889デフォルトの名無しさん
2006/12/03(日) 03:06:06これはひどい・・・
0890デフォルトの名無しさん
2006/12/03(日) 03:17:450891デフォルトの名無しさん
2006/12/03(日) 03:49:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3071.txt
最低限題意は満たしたつもり。
0892デフォルトの名無しさん
2006/12/03(日) 04:09:361.平均と等しい数値が平均より小さい数になる。
2.sa_maxが初期化されてない
0893デフォルトの名無しさん
2006/12/03(日) 04:22:25thx
訂正
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3072.txt
0894デフォルトの名無しさん
2006/12/03(日) 05:59:27Q1
while ((c = getc(fp)) != EOF) {
putchar(c);
}
これ↑だとEOFを検出したらすぐ終了するのに
while (feof(fp)==0) {
c = getc(fp);
putchar(c);
}
これ↑だとEOFを出力してしまうのはなぜ…?
Q2.ファイルの終わりに'\0'を書き込む必要はないのですか?
基本的な質問でごめん、誰か教えてくれないかな…。
0895デフォルトの名無しさん
2006/12/03(日) 06:06:300896デフォルトの名無しさん
2006/12/03(日) 06:36:27int a[600][600];
とかって確保しようとしたら実行してもすぐ終了してしまう。
大きな領域の二次元配列を確保することは出来ないのでしょうか?
0897デフォルトの名無しさん
2006/12/03(日) 06:43:48600*600*4バイト以上だよね
スタック上じゃなくヒープ上に確保した方がいいのでは
0898デフォルトの名無しさん
2006/12/03(日) 06:48:15feofはファイルの終端を越えて読み出しを行った場合にゼロ以外を返す。
なので、最後の一文字を読んだ時点ではまだゼロ。
他の言語じゃ終端でEOFになるのが多いから間違えやすい。
ファイルシステムがファイルの長さの情報を持ってるから不要。
むかしCP/MというOSがファイルの長さの情報をブロック単位でしか持っていなかったので
テキストファイルの場合終端に ^Z(0x1a)を付けていたことがあるがこれは例外。
MS-DOSにもこの風習が残っていた。
0899デフォルトの名無しさん
2006/12/03(日) 06:57:21Windows上の場合は変数を保存出来る領域に制限があるんですか。
UNIXマシンだと問題なかったような…。
>>898
なるほど…。
よく分かりました。サンクス!
0900デフォルトの名無しさん
2006/12/03(日) 07:42:51「やさしいC 高橋 麻奈」
0901デフォルトの名無しさん
2006/12/03(日) 08:06:43コンパイルオプションにスタックサイズを与えればいいけど
そこまで考えているようじゃないのでヒープって言っちゃった
0902デフォルトの名無しさん
2006/12/03(日) 08:14:54麻奈って名前がいいだけだろw
0903デフォルトの名無しさん
2006/12/03(日) 08:40:050904デフォルトの名無しさん
2006/12/03(日) 08:45:560905デフォルトの名無しさん
2006/12/03(日) 08:54:080906デフォルトの名無しさん
2006/12/03(日) 08:55:360908 ◆s2cIPM3PTs
2006/12/03(日) 12:57:08[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3076.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限: 明日 17:00
[5] その他の制限: 特にありません
連続ですいません。
宜しくお願いします。
0909デフォルトの名無しさん
2006/12/03(日) 13:19:20オーバーフローとか気にしてないけど、
初級レベルならこの程度書いとけば充分だろう。
脳内コンパイルしかしてないから不備があっても勘弁な。
int countbetween(int data[],int n,int a,int b) {
int count=0;
for(int* p=&data[n-1]; p>=data; p--)
if(a<=*p && b>=*p) count++;
return count;
}
double avragearray(double data[],int n) {
double total=0;
for(int i=0; i<n; i++) total+=data[n];
return total/n;
}
int uruu(int year) {
return
year%400==0 ? 1 :
year%100==0 ? 0 :
year%4 ==0 ? 1 : 0;
}
0910デフォルトの名無しさん
2006/12/03(日) 13:20:31アセンブラ
ベーシック
C
か
0911デフォルトの名無しさん
2006/12/03(日) 13:25:55BrainFuck
C
です
0912デフォルトの名無しさん
2006/12/03(日) 13:29:14data[n]
0913722
2006/12/03(日) 14:30:240914デフォルトの名無しさん
2006/12/03(日) 14:37:05ttp://www.google.co.jp/search?q=%93%F1%95%AA%92T%8D%F5%96%D8
0915デフォルトの名無しさん
2006/12/03(日) 16:43:11[2] 問題文(含コード&リンク):
fscanf
printf
exit
atoi
fopen
pow
の関数の(戻り値の)型・引数の型・有限であればその個数・必要な
ヘッダファイル・リンク時に必要なオプションを調べよ。
manコマンドを用いて
man 3 fscanfとしたのですが、英語が解らず無理でした。
テンプレの【C 関数検索 man on WWW】でも検索してみたのですが、
完全に載ってませんでした。
これらが完全に載っているサイトがあれば教えて頂けると助かります。
よろしくお願いします。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 火曜日の朝9時00分まで
[5] その他の制限:
0916 ◆s2cIPM3PTs
2006/12/03(日) 16:48:36ありがとうございました(^^)。
参考にさせていただきます。
0917デフォルトの名無しさん
2006/12/03(日) 16:52:44http://www.linux.or.jp/JM/
0918デフォルトの名無しさん
2006/12/03(日) 17:34:38[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3077.txt
[3]環境
[3-1]OS:Windows XP
[3-2]コンパイラ名とバージョン:Visual Studio.NET2003
[3-3]言語:C
[4]期限:12月7日
0919デフォルトの名無しさん
2006/12/03(日) 17:46:27[2] ブレゼンハムのアルゴリズムを用いて、ウインドウ内に線分を描画するプログラムを作成しなさい。
仕様(マウスの左ボタンだけで操作する。候補線を表示する。)
マウスの左ボタンクリック 線分の始点座標の指定、及び線分の描画開始
マウスの移動 始点から線分を絶えず候補として描画。(古い線分は消す)
マウスの左ボタンクリック 線分の終点座標の確定。線分を描画。
ただし、ライブラリの点を描画するAPI関数を使って線分を引くこと。直線を引くAPI関数を使ってはならない。
ウインドウのクリア機能や,線に色をつける機能などをつけると,高得点になる。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ: VC++ 6.0
[3.3] 言語: C++
[4] 期限: 06年12月06日(水)提出
[5] その他の制限: 特になし
よろしくお願いします。
0920#
2006/12/03(日) 17:49:09[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3078.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限: 12月5日
[5] その他の制限: 配列を利用しない
関数を利用しない
問題がたまっています・・・(汗)。
助けてください。
0921デフォルトの名無しさん
2006/12/03(日) 17:56:42main関数とかprintf関数とか利用できないのは厳しすぎるなぁ。
0922#
2006/12/03(日) 18:04:52定義関数以外という意味です。
main関数、printf関数は使えます。
説明不足ですいません。
0923デフォルトの名無しさん
2006/12/03(日) 18:19:38めんどいんでとりあえず4だけ
#include<stdio.h>
int main(){
int n,m;
int odd=0,even=0,odd_n=0,even_n=0,i;
printf("n = ");scanf("%d",&n);
for(i=0;i<n;++i){
scanf("%d",&m);
if(m%2 != 0)
odd += m,++odd_n;
else
even+= m,++even_n;
}
printf("総和 = %d\n平均 = %f\n",odd+even,1.*(odd+even) / n);
printf("奇数\n");
printf("\t個数 = %d\n",odd_n);
if(odd_n == 0)printf("\t個数が0なので平均を求められません\n");
else printf("\t平均 = %f\n",1.*odd / odd_n);
printf("偶数\n");
printf("\t個数 = %d\n",even_n);
if(even_n == 0)printf("\t個数が0なので平均を求められません\n");
else printf("\t平均 = %f\n",1.*even / even_n);
}
0924デフォルトの名無しさん
2006/12/03(日) 18:23:24/* 1 */
#include<stdio.h>
int main(void){
int n;
printf("Input positive number:");
scanf("%d", &n);
printf("Sum of even number(s): %d\n", (n/2)*(n/2+1));
printf("Sum of odd number(s): %d\n", ((n+1)/2)*((n+1)/2));
return 0;
}
/* 2 */
#include<stdio.h>
#include<stdlib.h>
int main(void){
int m, n;
printf("Input two positive numbers:");
scanf("%d %d", &m, &n);
if(m==n) n++;
printf("Sum of number(s): %d\n", (m+n)*(abs(m-n)-1)/2);
return 0;
}
0925デフォルトの名無しさん
2006/12/03(日) 18:29:010926デフォルトの名無しさん
2006/12/03(日) 18:30:17必要なの?
0927デフォルトの名無しさん
2006/12/03(日) 18:39:17[2] 問題文(含コード&リンク):
以下の関数を実装するプログラムを作成せよ。
・標準入力から読み込んだ数字の最頻値を出力する関数
・読み込んだ数字に対する度数分布表を作成・出力する関数
<表>
階級 | 度数 | 度数を*の数で表示| 度数が出現する確率
0-10
10-20
20-30
30-40
40-50
50-60
60-70
70-80
80-90
90-100
[3] 環境
[3.1] OS: Unix
[3.2]gcc
[3.3] 言語: C
[4] 期限: 12/4 18:00
0928デフォルトの名無しさん
2006/12/03(日) 18:40:050929デフォルトの名無しさん
2006/12/03(日) 18:42:2110が入力されたら
0-10 と 10-20 の両方の度数が増えるのか?
0931デフォルトの名無しさん
2006/12/03(日) 19:00:34#include<stdio.h>
int main(void){
int count[101]={};
int part_total, total=0;
int value;
int i, j;
while(fscanf(stdin, "%d", &value)==1){
if(value>=0 && value<=100)
count[value]++;
total++;
}
for(i=0;i<=90;i+=10){
part_total=0;
for(j=0;j<=10;j++)
part_total+=count[i+j];
printf("%3d-%-3d %2d ", i, i+10, part_total);
for(j=0;j<part_total;j++)
printf("*");
printf(" %f\n", (double)part_total/total);
}
return 0;
}
0932デフォルトの名無しさん
2006/12/03(日) 19:18:51#include <stdio.h>
#define STK_MAX (1024)
int stk[3][STK_MAX];
int sp[3] = { -1, -1, -1 };
int count = 0;
void push( int si, int val ) {
if( sp[si] >= STK_MAX ) return;
sp[si]++;
stk[si][sp[si]] = val;
}
int pop( int si ) {
if( sp[si] < 0 ) return -1;
sp[si]--;
return stk[si][sp[si]+1];
}
void show( void ) {
int i, j;
for( i = 0; i < 3; i++ ) {
printf( "%d: ", i + 1 );
for( j = sp[i]; j >= 0; j-- )
printf( "%d, ", stk[i][j] );
printf( "\n" );
}
printf( "\n" ); count++;
}
0933デフォルトの名無しさん
2006/12/03(日) 19:20:18void 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だっけ?
0934931
2006/12/03(日) 19:57:10#include<stdio.h>
void saihin(int count[], int count_num){
int i, maximum_count=0, maximum_index=0;
for(i=0;i<count_num;i++){
if(count[i]>maximum_count){
maximum_count=count[i];
maximum_index=i;
}
}
printf("%d\n", maximum_index);
}
void hyou(int count[], int total){
int i, j, part_total;
for(i=0;i<=90;i+=10){
part_total=0;
for(j=0;j<=10;j++) part_total+=count[i+j];
printf("%3d-%-3d %2d ", i, i+10, part_total);
for(j=0;j<part_total;j++) printf("*");
printf(" %f\n", (double)part_total/total);
}
}
int main(void){
int count[101]={}, value, total=0;
while(fscanf(stdin, "%d", &value)==1){
if(value>=0 && value<=100) count[value]++;
total++;
}
saihin(count, 101);
hyou(count, total);
return 0;
}
0935デフォルトの名無しさん
2006/12/03(日) 20:12:30そんなわけのわからない関数はHQ9+以外ではいらんだろ。
0936915
2006/12/03(日) 21:02:30レスありがとうございます。
そこのman on WWWでも検索したのですが、
もちろん、それぞれの関数自体はあるんですけど、
宿題で必要な内容がほとんど載ってないんですよ。
0937デフォルトの名無しさん
2006/12/03(日) 21:08:46宿題で必要な内容は >>917 にすべて載ってるっしょ?
0938デフォルトの名無しさん
2006/12/03(日) 21:36:48> 宿題で必要な内容がほとんど載ってないんですよ。
じゃあほとんど分かったてことだな
後はイモヅル式にググれカス
0939デフォルトの名無しさん
2006/12/03(日) 22:08:22ttp://202.33.253.145/qanda/cbuilder/c0009366.html
このページ見つけたところまでで詰まってしまいました…。
具体的には何をどうすればいいのでしょうか…。
0940デフォルトの名無しさん
2006/12/03(日) 22:10:03変数宣言する個所の先頭に static と書いてみるといいんじゃないかな
0941デフォルトの名無しさん
2006/12/03(日) 22:11:00そのページのとうりにやればいいだろ…
0942デフォルトの名無しさん
2006/12/03(日) 22:17:32>メニューの [ プロジェクト | プロジェクトオプション | リンカ | 予約スタックサイズ ]
といわれても、borland/bcc55/フォルダのどこをどう弄ればいいのか分からないんだ…。
0943デフォルトの名無しさん
2006/12/03(日) 22:34:35bcc32 -lS:スタックサイズ(16進数) hoge.c
0944デフォルトの名無しさん
2006/12/03(日) 22:35:49bcb5tool.hlp で ilink32 の /S オプションの項をみるといいよ
0945674
2006/12/03(日) 22:49:24うちの大学、2chやWikiで片付けてる奴かなり多いんよ
0946デフォルトの名無しさん
2006/12/03(日) 22:51:090947デフォルトの名無しさん
2006/12/03(日) 22:53:55>>923で3もカバーしてるけど一応。
#include <stdio.h>
int main(void)
{
int num, odd = 0, even = 0, sum = 0, limit, i;
printf("入力する個数:");
scanf("%d", &limit);
for(i = 1; i <= limit; i++)
{
printf("%d個目:", i);
scanf("%d", &num);
sum += num;
if(num % 2 == 0)
even++;
if(num % 2 != 0)
odd++;
}
printf("総和:%d\n平均:%d\n", sum, sum / (even + odd));
printf("偶数:%d\n奇数:%d\n", even, odd);
return 0;
}
0948デフォルトの名無しさん
2006/12/03(日) 23:09:16なるほどー!
実行するときに
% bcc32 -lS:0x00200000 hoge.c
とかすると設定を弄ってコンパイル出来るのか!
あと使ってるエディタソフトに「コンパイルオプションの設定」とあって
テキストスペースがあったのが意味が分からなかったけれど、この
「-lS:0x00200000」の部分を指していた訳ですね。
助かりました。サンクスコ
0949デフォルトの名無しさん
2006/12/03(日) 23:12:54man の読み方が分ってないんじゃないか?
例えば pow を調べるとする。
man on WWW で引いたページの『書式』の項には
------------------------------
#include <math.h>
(4)
double pow(double x, double y)
(1) (2) (3)
(途中略)
-lm でリンクする。
(5)
----------------------------
とある。(括弧つき数字は説明のために私が書いた物で、マニュアル中にはない。)
(1)が関数の戻り値の型
(2)、(3)それぞれが引数の型を示し、2個書いてあるので個数=2になる
(4) が必要なヘッダファイル
(5)がリンク時に必要なオプション
と、あなたの要求した項目は全て載ってるわけだが。
0950デフォルトの名無しさん
2006/12/03(日) 23:20:31しかし、そのまま提出したら、ほぼ確実にばれちまいそうですな。
参考にさせていただきます。
0951950
2006/12/03(日) 23:24:25もしそうなら、自分は立てられないので代わりにどなたかお願いします。
0952デフォルトの名無しさん
2006/12/03(日) 23:26:18質問する前にスレを読み返した君はエライ
0953936
2006/12/03(日) 23:26:41あ、そういうことだったのですか…。完全に見方が解ってませんでした。
「関数の戻り値は○○です。」と書いてあるのかと思ってました。
どうもありがとうございました。
0954デフォルトの名無しさん
2006/12/03(日) 23:26:530955デフォルトの名無しさん
2006/12/03(日) 23:38:06[2] 問題文:四則演算を作成しなさい
[3] 環境
[3.1] OS:WindowsXP
[3.3] 言語:C++/
[4] 期限:明日
[5] 最近c++を習い始めました。1.2-1.1の答えが0.1ではなく0.09999になります。
このド素人にアドバイスお願いします。
0956デフォルトの名無しさん
2006/12/03(日) 23:41:44浮動少数点での計算は十中八九誤差が出ます
それだけ
0957デフォルトの名無しさん
2006/12/03(日) 23:42:04よくあること気にしない
0958デフォルトの名無しさん
2006/12/03(日) 23:42:28仕様です。
0959デフォルトの名無しさん
2006/12/04(月) 00:00:19printf("%.1f",hoge);
0960デフォルトの名無しさん
2006/12/04(月) 00:07:44[2] 問題文: C言語の配列とポインターを使って、文字列をひとつ入れて
それぞれの文字が入っているアドレスを出力しなさい。
また、整数データの列を定義してそれぞれの整数が入っている
アドレスを出力しなさい 。
[3] 環境
[3.1] OS:WindowsXP
[3.3] 言語: C
[4] 期限: 12月4日10時半
0961デフォルトの名無しさん
2006/12/04(月) 00:15:02現在過去スレ一覧で使ってるにくちゃんねるが、過負荷のため
12月31日で公開停止するそうです。
「にくちゃんねる」終了のお知らせ
ttp://makimo.to/close.html
0962デフォルトの名無しさん
2006/12/04(月) 00:49:02#include <stdio.h>
#include <string.h>
int main()
{
int i;
int *phoge,hoge[] = {1,1,2,3,5,8,13,21};
char *pfuga,fuga[] = "mojiretu";
phoge = hoge;
for(i = 0;i < strlen(fuga);i++){
printf("&fuga[%d] = %p\n",i,(phoge+i));
}
printf("\n");
pfuga = fuga;
for(i = 0;i < sizeof(hoge)/sizeof(int);i++){
printf("&hoge[%d] = %p\n",i,(pfuga+i));
}
return 0;
}
0963#
2006/12/04(月) 01:38:04[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3080.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3081.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限: 12月5日
[5] その他の制限:
・問題1,2 関数、配列は使わない
(main関数、printf関数など、定義関数は使える)
・問題3,4 特になし
>>947
ありがとうございました(^^。
親切な方ばかりで本当に助かっています。
宜しくお願いします。
0964#
2006/12/04(月) 01:42:01関数の方が4,5になっています。
すいません(汗)。
0965デフォルトの名無しさん
2006/12/04(月) 01:54:35持ってたら欲しいんだが。にくちゃんねるにも見当たらない。
0966デフォルトの名無しさん
2006/12/04(月) 02:07:100967デフォルトの名無しさん
2006/12/04(月) 02:16:39途中で切れてるっぽい
0968デフォルトの名無しさん
2006/12/04(月) 02:20:05[2] 問題文(含コード&リンク):
キーボードから入力した文章を単語単位で切り出し
総単語数と各単語の文字数を表示せよ。単語の区切りは半角スペース。
単語数の上限は50、一単語の最大文字数は30と仮定
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語:C
[4] 期限:12月5日まで
[5] その他の制限:文字入力にはgets関数を使用。ポインタだけでかければ
更に可
お願いします。半角スペースがわかりません。。
0969デフォルトの名無しさん
2006/12/04(月) 02:29:100970デフォルトの名無しさん
2006/12/04(月) 02:33:06それでエラー出たんです。。。
ってか難しくて無理ぽ。。。
0971デフォルトの名無しさん
2006/12/04(月) 02:36:510972デフォルトの名無しさん
2006/12/04(月) 02:56:43候補表示中にポインタがウィンドウ外に行ったとき、
ウィンドウ外をクリックされたときの挙動はどうしたらいい?
0973デフォルトの名無しさん
2006/12/04(月) 03:03:59[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3084.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Borland(bcc32)
[3.3] 言語: C
[4] 期限:木曜日
[5] その他の制限:ありません、よろしくお願いします
0974デフォルトの名無しさん
2006/12/04(月) 03:27:27ttp://gamdev.org/up/img/8294.phps
0975デフォルトの名無しさん
2006/12/04(月) 04:13:56逆順ってなんだ?
ヒストグラムのやつはデータに制限無いのか?
0976デフォルトの名無しさん
2006/12/04(月) 04:19:17逆順ってこれでいいか?
2.
#include <stdio.h>
int main(void)
{
int i, n, m;
scanf("%d", &m);
i = m;
n = 0;
while(i) {
n = n * 10 + i % 10;
i /= 10;
}
printf("%d\n", n);
if(m>n) printf("mがnより大きい\n");
else if(m<n) printf("nがmより大きい\n");
else printf("nとmは等しい\n");
return 0;
}
0977デフォルトの名無しさん
2006/12/04(月) 04:22:090の桁を指定してないからこれだと0にしてある。
3.
int keta(int n)
{
int i;
if(n>=0) {
for(i=0; n; i++, n/=10);
return i;
}
else {
n = -n;
for(i=0; n; i++, n/=10);
return i + 1;
}
}
0978デフォルトの名無しさん
2006/12/04(月) 06:09:08-------------------------------------------------
1 | 1 2 3 4 5 6 7 8 9
2 | 2 4 6 8 10 12 14 16 18
3 | 3 6 9 12 15 18 21 24 27
4 | 4 8 12 16 20 24 28 32 36
5 | 5 10 15 20 25 30 35 40 45
6 | 6 12 18 24 30 36 42 48 54
7 | 7 14 21 28 35 42 49 56 63
8 | 8 16 24 32 40 48 56 64 72
9 | 9 18 27 36 45 54 63 72 81
をつくるプログラムをCでお願いします
0979デフォルトの名無しさん
2006/12/04(月) 06:31:53こういう質問をすると、たいがい掛け算九九の計算手順をとらずに
数字をそのまま並べて表示するプログラムを書く人が出てくる、間違いないw
0980デフォルトの名無しさん
2006/12/04(月) 06:55:040981デフォルトの名無しさん
2006/12/04(月) 07:05:050982デフォルトの名無しさん
2006/12/04(月) 07:06:03>>979
ではご期待に応えて
#include <stdio.h>
int main()
{
printf("1 2 3 4 5 6 7 8 9\n"
"-------------------------------------------------\n"
"1 | 1 2 3 4 5 6 7 8 9\n"
"2 | 2 4 6 8 10 12 14 16 18\n"
"3 | 3 6 9 12 15 18 21 24 27\n"
"4 | 4 8 12 16 20 24 28 32 36\n"
"5 | 5 10 15 20 25 30 35 40 45\n"
"6 | 6 12 18 24 30 36 42 48 54\n"
"7 | 7 14 21 28 35 42 49 56 63\n"
"8 | 8 16 24 32 40 48 56 64 72\n"
"9 | 9 18 27 36 45 54 63 72 81\n");
return 0;
}
0983デフォルトの名無しさん
2006/12/04(月) 07:08:01#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");
}
0984983
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");
}
0985983
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");
}
0986!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");
}
0987デフォルトの名無しさん
2006/12/04(月) 08:12:05[2] 問題文:次のようなプログラムを作れ。
1. 数値を順番に読み込んで二次元の配列に格納する。
2. その配列を画面に出力する。
3. 次に、2つの整数を読み込む。
4. 二次元配列のうち、読み込んだ整数に対応する二つの行の内容を交換する。
5. 配列を画面に出力する。
配列の読み込み、交換、出力はそれぞれ関数にすること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2006年12月5日17:00
[5] その他の制限:授業では配列までやりましたが、特に制限はないです。
自分では期限内にできそうにないのでよろしくお願いします。
0988デフォルトの名無しさん
2006/12/04(月) 08:23:21二次元配列のサイズは?
0989デフォルトの名無しさん
2006/12/04(月) 08:35:05何から読み込むのか書いてないのは
なんだかなー
問題文に書いてあるとおりなんだろうからどうしようもないのかもしれんが
0990デフォルトの名無しさん
2006/12/04(月) 08:53:03あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【前スレ】
C/C++の宿題を片付けます 77代目
http://pc8.2ch.net/test/read.cgi/tech/1164079451/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=0&H=&view=table&link2ch=on&shw=2000&D=tech
0991デフォルトの名無しさん
2006/12/04(月) 08:59:29立てたよ
C/C++の宿題を片付けます 78代目
http://pc8.2ch.net/test/read.cgi/tech/1165190320/
0992987
2006/12/04(月) 09:01:13あと、読み込む数値は全てキーボードからの入力です
0993デフォルトの名無しさん
2006/12/04(月) 09:15:25という問題の変数を増やした場合
x(1) + ・・・+ x(n) = 1, x(i) >= 0の条件の下でΣ{i=1,m} (Σ{j=1,n} a(i,j) * x(j))^2の最小値
はどのように解いたらいいのかわかりますか?いいサイトあったら教えてください
パソコン、プログラム使って解ける方法教えてください
0994デフォルトの名無しさん
2006/12/04(月) 09:25:18[2]
一定の文字からなる列sを読み込み、以下の条件を満たす同じ個数の文字からなる列tを出力するプログラムを作りなさい。
ただし、以下での単語とは空白以外の文字からなる列のこととする。
1,s中の単語は同じ順番で t に現われる
2,t中では単語は一つの空白に区切られる
3,t中に最初の単語の最初の文字から最後の単語の文字までは列全体のちゅうおうに位置し、前後は空白である
例えば文字の列
_This___is__a____good___program___
を入力すると
______This_is_a_good_program______
が出力される。ここで、_は空白を表すものとする。
[3]C言語
[4]12/7
[5]for,while,if文 ポインター 文字列 1,2次配列 関数の書き方
0995デフォルトの名無しさん
2006/12/04(月) 09:38:35二次計画問題。
数理計画とか凸計画とか線型計画とかの本で「二次計画」
という言葉を探すといいと思うよ。
アルゴリズムとしては、線型計画に帰着するのと、
凸計画として降下法系のを使うのの二つがあるが、後者のほうが実装は楽。
0996デフォルトの名無しさん
2006/12/04(月) 09:46:13ありがとうございます
変数が2次なんですけど出来ますか?
0よりは小さくならず、無限には大きくならないので最小値は必ず一つあるはずなんですが
0997デフォルトの名無しさん
2006/12/04(月) 09:52:56本を読んでみたら?
0998デフォルトの名無しさん
2006/12/04(月) 09:57:14しかも最小値を与えるx(i)を決定したいんですが...出来ますか?
本が手に入らないんですが...いいサイトないですか?検索してみますけど
0999デフォルトの名無しさん
2006/12/04(月) 10:05:03図書館池。スレ違い。
1000デフォルトの名無しさん
2006/12/04(月) 10:07:4110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。