C/C++の宿題を片付けます 53代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 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++の宿題を片付けます 52代目
http://pc8.2ch.net/test/read.cgi/tech/1130431335/
【過去スレ一覧】
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デフォルトの名無しさん
2005/11/16(水) 10:09:130003デフォルトの名無しさん
2005/11/16(水) 10:45:10forを使用してください。
・キーボードから実数を5個入力し,その入力データのうち,
3つのデータから実数の平均値を求めよ.
求める平均は最初のデータから3個分,
次のデータから3個分と順次3個のデータとする.(下図参照)
・入力データは配列に入れること.
・ 出力は全部で3個となる.
・ 入力データ(sample)
1.1 1.2 1.3 1.4 1.5
よろしくお願いします
例えば1 2 3 4 5
と入れると,1 2 3の平均と,2 3 4と3 4 5のへいきんが
順に
2 3 4とひょうじされます。
初心者っぽくおねがいします
0004デフォルトの名無しさん
2005/11/16(水) 10:56:51--- ここから ---
#include <stdio.h>
int main(void){double data[5], sum;int i, j;for( i = 0 ; i < 5 ; i++ ) scanf("%lf", &data[i]);for( i = 0 ; i < 3 ; i++ ) {sum = 0.0;for( j = 0 ; j < 3 ; j++ ) sum += data[i + j];printf("%f ", sum / 3);}printf("\n");return 0;}
--- ここまで ---
printf("\n");なんて初心者っぽさ抜群だろ。
0005デフォルトの名無しさん
2005/11/16(水) 11:25:24scanf("%lf %lf %lf %lf %lf", &a, &b, &c, &d, &e);
printf("%f %f %f\n", (a + b + c) / 3.0, (b + c + d) / 3.0, (c + d + e) / 3.0);
素直すぎるか。
0006前スレ695
2005/11/16(水) 11:37:35[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1062.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今日いっぱい
[5] その他の制限:
ランダム生成プログラム
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1059.txt
一応両方とも書いたのですが、まだindex(索引)を作っていない状態です。
シェルソートの方はコンパイラは通るのですが、500程度のデータを入れるとcore dumpします。
そのあたりの原因も修正していただけたら幸いです。
シェルソート:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1060.txt
挿入ソート:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1061.txt
よろしくお願いします。
0007デフォルトの名無しさん
2005/11/16(水) 11:48:08↓
while(j-h>=0 && strcmp(a,A[j-h].str)<0){
かなぁ?わからんけど。
0008デフォルトの名無しさん
2005/11/16(水) 12:11:45for(int i=0;i<a.length;i++){
System.out.println("数値入力"+(i+1)+"回目>");
a[i]=Double.parseDouble(buf.readLine());
}
for(int i=0;i<a.length-2;i++){
double sum=a[i];
for(int j=i+1;j<i+3;j++){
sum=sum+a[j];
}
System.out.print(sum/3+" ");
}
0009デフォルトの名無しさん
2005/11/16(水) 12:15:52スレタイ嫁
0010デフォルトの名無しさん
2005/11/16(水) 12:18:34else System.out.print("ウンコー");
0011真・前スレ695
2005/11/16(水) 14:49:43勝手になりすましてんじゃねぇよ!
しかも、俺のテンプレどころかプログラムまでそのまま使おうとしてるし…
まぁ、俺は自分で解決できたから良いけどね。がんばって
0012真・前スレ695
2005/11/16(水) 15:10:52#include<stdio.h>
main(){
double data[5];
double ave;
int i,j;
for(i=0;i<5;i++) scanf("%lf",&data[i]);
for(i=0;i<3;i++){
ave=0;
for(j=i;j<i+3;j++) ave+=data[j];
printf("%f ",ave/3.0);
}
}
0013デフォルトの名無しさん
2005/11/16(水) 16:02:22[2] 問題文:キーボードから入力されたファイル名のファイルを開き
その内容をそのまま表示するプログラムを作りなさい
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C言語
[4] 期限: 11月17日9時まで
すいません、何卒よろしくお願いします。
0014デフォルトの名無しさん
2005/11/16(水) 16:08:54#include <stdio.h>
int main(void) {
char s[256];
int c;
FILE* fp;
scanf("%255s", s);
fp = fopen(s, "r");
while ((c = fgetc(fp)) != EOF) putchar(c);
fclose(fp);
return 0;
}
0015デフォルトの名無しさん
2005/11/16(水) 18:02:39オブジェクト指向言語という授業で、11月も半ば既に半分終ってるのに
出てきた課題に激しく吹いた。
0016デフォルトの名無しさん
2005/11/16(水) 18:15:15それは言わない約束でしょう。
0017デフォルトの名無しさん
2005/11/16(水) 18:16:25[2] 問題文(含コード&リンク):下記
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11月17日まで
[5] その他の制限: stdio.h、string.h、stdlib.hは可
標準入力から読み込んだ文字列に対し,ランレングス符号化を行うプログラムを作成せよ.
ランレングス符号化とは,データ内における同記号の列を,その記号と数値で置き換えることで情報圧縮を行う技術のことである.
例えば, aaaaabbbccdddda の入力に対し, a5b3c2d4a1 と出力する.
//----------解答の最初----------
(* ここに解答を書き加える *)
int main(void){
char buf_r[1024] = {0};
char buf_w[1024] = {0};
int length;
printf("文字列の入力\n");
scanf("%s",buf_r);
runlength(1024,buf_r,buf_w);
printf("[ランレングス符号化]\n%s\n",buf_w);
return(0);
}
//----------解答の終わり----------
どなたか教えてください。お願いします。
0018デフォルトの名無しさん
2005/11/16(水) 19:06:19ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1102.txt
0019デフォルトの名無しさん
2005/11/16(水) 19:15:51[2] 問題文(含コード&リンク): 県名、人口、面積が一行に書かれている。
これを10行分読み込んで県名、人口、面積、人口密度を表示するプログラムを作りなさい。
ただし、県データを格納する構造体として以下のものを使いなさい。
struct pref {
char name[20];
int pop,area;
float den;
};
*県データ*
hokkaido 5683 83456
aomori 1476 9606
iwate 1446 15278
miyagi 2365 7285
akita 1189 11612
yamagata 1244 9323
fukushima 2127 13782
ibaraki 2985 6096
tochigi 2005 6408
gunma 2025 6363
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C言語
[4] 期限:11月18日18時まで
考えたのですがわからなくて、よろしくお願いします。
0020デフォルトの名無しさん
2005/11/16(水) 19:54:18[2] 問題文(含コード&リンク):
main()
{
float *a,*b,c;
c=2.;
a=&c;
b=a;
{
float *a,b,c;
b=2.;
c=3.;
a=&c;
*a=*a+b;
printf("*a=%f\n ",*a);
}
次のプログラムを実行すると表示される値はどれだけになるか調べなさい。又
このプログラムを、ポインタ宣言を使った変数を使って計算するように書き改めなさい。ただし、変数のメモリへの割り当ては、
別に通常の宣言した変数のものを使うこと。
[3] 環境
[3.1] OS:Windows
[3.2] gcc 2.9
[3.3] 言語: C
[4] 期限: 明日
ポインタの説明が口頭のみでわかりませんでした、ほかの人も
苦労していました。お手数ですがよろしくお願いいたします。
0021デフォルトの名無しさん
2005/11/16(水) 20:15:14#include <stdio.h>
struct pref{
char name[20];
int pop,area;
float den;
};
int main(){
FILE* fp;
char buf[256];
fp = fopen("data.txt","r");
if(fp==NULL){
printf("データファイル'data.txt'が読み込めません.\n");
exit(-1);
}
struct pref prefs[10];int i;
for(i=0;i<10;i++){
fgets(buf,256,fp);
sscanf(buf,"%s %i %i\n",&prefs[i].name,&prefs[i].pop,&prefs[i].area);
prefs[i].den=(float)prefs[i].pop/(float)prefs[i].area;
}
printf("name pop area den\n");
printf("---------------------------------\n");
for(i=0;i<10;i++)printf("%-9s %6i %6i %g\n",prefs[i].name,prefs[i].pop,prefs[i].area,prefs[i].den);
return 0;
}
考えてないのに考えたのですが、とか述べてんじゃねーよ
0022デフォルトの名無しさん
2005/11/16(水) 20:23:06プログラムのソースも変だし
課題自体もいまいちよくわからんなぁ
表示される値がどれだけになるか調べなさい
なんて実行すりゃわかるじゃねーか
まぁそのソースはコンパイル通らないけど
2+3をポインタを用いて計算したいなら
int x=2,y=3;
int *b=&x,*c=&y;
printf("%i\n",*b+*c);
0023デフォルトの名無しさん
2005/11/16(水) 20:28:00ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1103.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1104.txt
はpref.txtとファイル名変更してくれ
0024デフォルトの名無しさん
2005/11/16(水) 20:30:51いろいろつっこみどころが満載ですね
0025デフォルトの名無しさん
2005/11/16(水) 20:34:57スレ汚し&2度手間すいません。2回コピーしてました。本当はこっちです。
main()
{
float *a,*b,c;
c=2.;
a=&c;
b=a;
c=*a+*b;
printf("c=%f\n ",c);
}
このプログラムを、ポインタ宣言を使った変数を使って計算するように書き改めなさい。ただし、変数のメモリへの割り当ては、
別に通常の宣言した変数のものを使うこと。
又、ポインタの概念を使い
底辺と高さを入力して三角形の面積を計算するプログラムを作成せよ。
実行するほうはコンパイルしてみて確認できました。
課題自体はポインタの概念を使わせたいみたいです。
0026デフォルトの名無しさん
2005/11/16(水) 20:41:010027デフォルトの名無しさん
2005/11/16(水) 20:52:03#include <stdio.h>
int main()
{
float t=2;
float *a,*b,*c;
c=&t;
a=c;
b=a;
*c=*a+*b;
printf("c=%f\n ",*c);
float h,w;
float *x=&h,*y=&w;
printf("三角形の高さを入力してください>>");
scanf("%f",x);
printf("三角形の底辺を入力してください>>");
scanf("%f",y);
printf("三角形の面積は %f です.",*x**y/2);
return 0;
}
こういうこと?
0028デフォルトの名無しさん
2005/11/16(水) 21:09:02うまくいきました!ありがとうございます。
0029デフォルトの名無しさん
2005/11/16(水) 22:35:16[2] 問題文(含コード&リンク):それぞれの数値を配列型変数に入力し、
数値の合計、平均を求め、さらに入力した数値を大きい順に並び替えよ。
(a[0]=20 a[1]=10 a[2]=25 a[3]=30 a[4]=15)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:20日まで
[5] その他の制限:習い始めて間もないので簡単な方法でお願いします
0030デフォルトの名無しさん
2005/11/16(水) 22:42:25[2] 問題文(含コード&リンク):
標準入力から複数の数値データを入力して、
データの個数、和、最大値、最小値、平均値
を標準出力に出力するプログラムを以下の条件を守り作成せよ。
このとき、別ファイルdata10.txtをリダイレクションにより入力させた結
果をresult10-2.txtに出力すること。
(a) 入力されるデータはdouble型で事前に個数は与えられない(入力データ
がなくなるまで)が、最大1000個である。
(b) プログラムを3個の関数(main, input, process)で構成する。
(c) データ入力はinput関数で行う。input関数は引数に入力データを格納
する配列のポインタをもち、関数の戻り値でデータ個数を表す。すな
わちinput関数の型はintとする。
(d) 和、最大値、最小値はprocess関数で求める。process関数はvoid型と
し、引数にデータが格納されている配列のポインタ、データ数、なら
びに和・最大値・最小値をmain関数に引き渡すためのポインタをもつ。
(e) main関数では必要な変数の宣言、input関数を利用したデータ入力、
process関数を利用した各種計算、平均値の計算、結果の表示を行う
[3] 環境
[3.1] OS:Windows
[3.2] gcc 2.9
[3.3] 言語: C
[4] 期限: 今週
お願いします!
0031デフォルトの名無しさん
2005/11/16(水) 22:47:14double a[5],ave,sum,tmp;
a[0]=20;a[1]=10;a[2]=25;a[3]=30;a[4]=15;
sum=a[0]+a[1]+a[2]+a[3]+a[4];
ave=sum/5;
for(i=0;i<5;i++) for(j=i;j<5;j++) if(a[i]<a[j]) {tmp=a[i];a[i]=a[j];a[j]=tmp;}
printf("Ave = %lf Sum = %lf\n",ave,sum);
for(i=0;i<5;i++) printf("%d - %lf",i,a[i]);
0032教えてください
2005/11/16(水) 23:52:06になったときの入力データは何番目であったか求めるプログラムを作成せよ。
これなんですけど、どうしても分からないのでよろしくお願いします。C言語
でお願いします。
0033デフォルトの名無しさん
2005/11/16(水) 23:53:520034教えてください
2005/11/16(水) 23:57:220035デフォルトの名無しさん
2005/11/16(水) 23:57:400036デフォルトの名無しさん
2005/11/16(水) 23:59:10{
int a, cnt=0;
for(i=0;i<1000;i++){
scanf("%d", &a);
if(EOF == a){
return (cnt);
}
data[cnt] = a;
cnt++;
}
return (cnt);
}
void process(double *data, int cnt, double *sum, double *max, double min)
{
int cnt;
if(0 == cnt){
return;
}
for(;1<=cnt;cnt--){
*sum = *sum+data[i];
*max = (data[i] > data[i-1]) ? data[i]:data[i-1];
*min = (data[i] < data[i-1]) ? data[i]:data[i-1];
}
}
void main()
{
double data[1000], sum, max, min;
int cnt;
}
0037教えてください
2005/11/16(水) 23:59:390038デフォルトの名無しさん
2005/11/17(木) 00:01:030039デフォルトの名無しさん
2005/11/17(木) 00:01:34なんか見たらバグってるが直すつもりは無い
0040デフォルトの名無しさん
2005/11/17(木) 00:06:16[2] 問題文(含コード&リンク):
問題:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1106.txt
自分のソースコード:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1105.txt
[3] 環境
[3.1] OS: Windows XP SP2
[3.2] Borland C++ Compiler 5.5.1
[3.3] 言語:C
[4] 期限: 2005/11/22
[5] その他の制限: 変数と型、式と演算子、構造制御文、 関数
配列ぐらいまで習いました。
がんばったのですが配列の使い方がよくわからず、
自分の力では解けません。。お力添えを。
0041デフォルトの名無しさん
2005/11/17(木) 00:16:02>for (i=0; i<=5; i++ )
配列の要素数が5個だから、使える添え字は0〜4までです
このforループだと0〜5までになっちゃうよ
0042デフォルトの名無しさん
2005/11/17(木) 00:23:35んだね、それ以外は大丈夫っぽい
0043デフォルトの名無しさん
2005/11/17(木) 00:28:55void main( void )
{
float k[5] = {92, 56, 89, 76, 81};
float s[5] = {82, 46, 79, 88, 91};
printf("kokugo : %f\n"
"suugaku: %f\n"
"Heikin : %f %f %f %f %f\n",
( k[0] + k[1] + k[2] + k[3] + k[4] )/5,
( s[0] + s[1] + s[2] + s[3] + s[4] )/5,
( k[0] + s[0] ) / 2,
( k[1] + s[1] ) / 2,
( k[2] + s[2] ) / 2,
( k[3] + s[3] ) / 2,
( k[4] + s[4] ) / 2);
}
これでどうだ!
0044デフォルトの名無しさん
2005/11/17(木) 00:46:25[2] 問題文(含コード&リンク):正の整数mを読み込んだときに、それを逆順にした数nを求めなさい。
そのとき、mとnとどちらが大きいかもあわせて出力しなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VisualC++ 6.0
[3.3] 言語:C
[4] 期限:明日の朝10時まで
自分で途中までやってはみたのですができません…_| ̄|○以下がそのプログラムです。
#include<stdio.h>
int main(void)
{
int m,n,max;
printf("整数を入力してください:");
scanf("%d",&m);
if(m > 0){
n = m % 10;
m = m / 10;}
if(m == 0){
if(m > n){max = m;}
else{max = n;}}
else{printf("NO");}
printf("逆順:%d、大きいのは%d\n",n,max);
return 0;}
ホント、初心者すぎて申し訳ないんですが、よろしくお願いします。
0045デフォルトの名無しさん
2005/11/17(木) 00:49:07__ __/ / | __ ──
/ ─ / / \ ○ | / | |  ̄ ̄/ ──
__/ _/ / \ | / レ ─┴─ _/
/\___/ヽ
/'''''' '''''':::::::\
. |(〇), 、(〇)、.:|
| ,,ノ(、_, )ヽ、,, .::::|
. | `,rェェェ、 ' .:::::::|
\ |,r-r-| .::::/
,,.....イ.ヽヽ、`ニニ´ーノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i |
> ヽ. ハ | ||
0046デフォルトの名無しさん
2005/11/17(木) 00:55:34マジカ
Borlandじゃ通ったんだがなぁ
0047デフォルトの名無しさん
2005/11/17(木) 00:58:18逆順にするってどういうこと?
0048デフォルトの名無しさん
2005/11/17(木) 01:00:36004940
2005/11/17(木) 01:01:02ありがとうございます。すごい簡単な見落とししてました。。
うまく表示されました。
>>43
実行例どうりに表示されてすごいです。
Heikinの表示参考にしてみます。(void型関数はよくわからない;;
>>45-46
borlandでは自分もコンパイルできました。
0050デフォルトの名無しさん
2005/11/17(木) 01:02:550051デフォルトの名無しさん
2005/11/17(木) 01:07:04例えば12345って入力したら、54321って表示されるようにしなさいってことです。
そして入力した整数をm、逆から表示した数字をnとするっていう意味です。
ややこしくて本当に申し訳ないです…。
0052デフォルトの名無しさん
2005/11/17(木) 01:13:11#include<stdio.h>
int main(void)
{
int l,m,n,max;
printf("整数を入力してください:");
scanf("%d",&m);
n = 0; max = l = m;
while(m > 0){
n = n * 10 + m % 10;
m = m / 10;
}
if(l < n) {max = n;}
printf("逆順:%d、大きいのは%d\n",n,max);
return 0;
}
0053デフォルトの名無しさん
2005/11/17(木) 01:17:11できました!!本当にありがとうございました!!
0054デフォルトの名無しさん
2005/11/17(木) 01:23:350055c言語初心者
2005/11/17(木) 02:47:20下記の二つのプログラムをまとめて一つにするには、どうしたらよいですか?
/*
コマンドライン引数で指定した解像度と明るさのPPM画像ファイルを生成する。
/*
#include <stdio.h>
#include <stdlib.h>
#include “ppm.h” /*PPM画像ファイル処理関数ライブラリ*/
Int main(int argc,char *argv[])
{
FILE *fpout; /*出力ファイルポインタ*/
unsigned char *buf; /*画像データバッファへのポインタ*/
int width; /*画像の幅*/
int height; /*画像の高さ*/
int br; /*画像の明るさ*/
int i,j /*注目ピクセルの座標(横、縦) */
int k; /*注目ピクセルの先頭からの位置*/
0056c言語初心者
2005/11/17(木) 02:47:56if(argc<5){
printf(“Usage:%s<outfile><width><height><bright>\n”,argv[0]);
exit(0);
}
/*コマンドライン引数で指定されたファイルをバイナリ書き込みモードでオープン*/
if(NULL==(fpout = fopen(argv[1],”wb”))){
printf(“%sをオープンできません\n”,argv[1]);
exit(-1);
}
/*画像の横幅を取得*/
Sscanf(argv[2],”%d”,&width);
if(width <=0){
printf(“画像の横幅の指定が不正です\n”);
exit(-1);
}
/*画像の高さを取得*/
sscanf(argv[3],”%d”,&height);
if(height <=0){
printf(“画像の高さの指定が不正です\n”);
exit(-1);
0057c言語初心者
2005/11/17(木) 02:48:25/*画像データバッファを取得*/
if(NULL==(buf = malloc(width*height*3*sizeof(unsigned char)))){
printf(“画像データバッファの取得に失敗しました\n”);
exit(-1);
}
/*画像データバッファに画像データを書き込む*/
for(j = 0;j < height; j++){
for(i = 0; i <width; i++){
k = (i+j*width)*3;
buf[k+0] =(unsigned char)br;
buf[k+1] =(unsigned char)br;
buf[k+2] =(unsigned char)br;
}
}
0058c言語初心者
2005/11/17(木) 02:51:59put_ppm_header(fpout,width,height,PPM_DEPTH);
/*画像データバッファの内容をファイルに出力*/
fwrite(buf,width*height*3*sizeof(unsigned char),1,fpout);
/*画像データバッファを解放*/
free(buf);
/*ファイルクローズ*/
fclose(fpout);
retrun0;
ここまでが一つで、
0059c言語初心者2
2005/11/17(木) 02:53:19/* PPM画像の平均輝度を算出する。 */
#include <stdio.h>
#include <stdlib.h>
#include “ppm.h” /*PPM画像ファイル処理関数ライブラリ*/
/*ピクセルのRGB各要素から,輝度を求める*/
int brightness(unsigned char *dat)
{
unsigned int r,g,b;
unsigned int br; /*ピクセルの輝度*/
r=(unsigned int)dat[0];
g=(unsigned int)dat[1];
b=(unsigned int)dat[2];
br=(77*r+151*g+28*b)/256;
return(int)br;
}
0060c言語初心者
2005/11/17(木) 03:04:00g=(unsigned int)dat[1];
b=(unsigned int)dat[2];
br=(77*r+151*g+28*b)/256;
return(int)br;
}
Int main(int argc,char*argv[])
{
FILE*fpin; /*入力ファイルポインタ*/
unsigned char*buf; /*画像データバッファへのポインタ*/
int header_len; /*画像データのヘッダのバイト数*/
int width; /*画像の幅*/
0061c言語初心者
2005/11/17(木) 03:04:42int depth; /*画像のデータ最大値*/
int br; /*ピクセルの輝度*/
int sum; /*輝度値の合計*/
double br_mean; /*平均輝度*/
int i,j; /*注目ピクセルの座標(横、縦)*/
int k; /*注目ピクセルの先頭からの位置*/
/*コマンドライン引数の個数チェック*/
if(argc<2){
printf(“Usage:%s<infile>\n”,argv[0]);
exit(0);
}
/*入力ファイルをバイナリ読み取りモードでオープン*/
if(NULL==(fpin = fopen(argv[1],”rb”))){
printf(“%sをオープンできません\n”,argv[1]);
exit(-1);
}
0062c言語初心者
2005/11/17(木) 03:05:19header_len = read_ppm_header(fpin,&width,&height,&depth);
/*ヘッダが不正な場合は終了*/
if(header_len < 0){
printf(“入力ファイルのヘッダが不正です\n”);
exit(-1);
}
/*画像データバッファを取得*/
in(NULL==(buf = malloc(width*height*3*sizeof(unsigned char)))){
printf(“画像データバッファの取得に失敗しました\n”);
exit(-1);
}
/*画像データの本体をバッファに読み込む*/
fseek(fpin,header_len,SEEK_SET); /*ヘッダの分だけ飛ばす*/
fread(buf,width*height*3*sizeof(unsigned char),1,fpin);
0063c言語初心者
2005/11/17(木) 03:05:53sum = 0;
for(j = 0;j < height;j++){
for(i = 0;j < width;i++){
k = (i+j*width)*3; /*j行i列のピクセルはkバイト目*/
br = brightness(buf+k);/*該当ピクセルの輝度*/
sum += br; /*輝度値の総和*/
}
}
br_mean =(double)sum/(double)(width*height);
/*平均輝度を表示する*/
printf(“%sの平均輝度:%lf\n”,argv[1],br_mean);
/*画像データ用バッファを解放*/
free(buf);
/*ファイルクローズ*/
fclose(fpin);
return0;
}
0064デフォルトの名無しさん
2005/11/17(木) 03:19:150065c言語初心者
2005/11/17(木) 04:26:39sum = 0;
for(j = 0;j < height;j++){
for(i = 0;j < width;i++){
k = (i+j*width)*3; /*j行i列のピクセルはkバイト目*/
br = brightness(buf+k);/*該当ピクセルの輝度*/
sum += br; /*輝度値の総和*/
}
}
br_mean =(double)sum/(double)(width*height);
/*平均輝度を表示する*/
printf(“%sの平均輝度:%lf\n”,argv[1],br_mean);
/*画像データ用バッファを解放*/
free(buf);
/*ファイルクローズ*/
fclose(fpin);
return0;
}
の二つです。長すぎて面倒だと思いますがどなたかお願いします。
0066デフォルトの名無しさん
2005/11/17(木) 04:29:37ttp://www.vector.co.jp/soft/win95/util/se072710.html
0067c言語初心者
2005/11/17(木) 04:35:150068デフォルトの名無しさん
2005/11/17(木) 07:15:32(x+3)の1/3乗を計算したい時はどのようにしたらいいんでしょうか><?
double pow(double x,double y)
を使うことは解るんですが・・・。
簡単なサンプルソースなどを貼ってもらえると助かります。
0069デフォルトの名無しさん
2005/11/17(木) 07:26:280070デフォルトの名無しさん
2005/11/17(木) 11:16:283h+1がいいらしいが理由はどこにもないorz 何故なんですの?
0071デフォルトの名無しさん
2005/11/17(木) 11:59:04こことか
ttp://www.kusa.ac.jp/~wat/ja/lecture/is2-2003/note11.html#shell
これってC/C++っていうよりむしろアルゴリズムの問題なキガス
実際、複雑なアルゴリズムってあんまり使わない仕事が多いような気がするんだけど、どうだろう。
0072デフォルトの名無しさん
2005/11/17(木) 13:49:22「数学的に難しい問題が多く、教授にもきっとわからない事でしょう」と
書いて出すとかw
0073デフォルトの名無しさん
2005/11/17(木) 14:28:46[2] 問題文(含コード&リンク): 入力した文字列を逆順で再構成する関数strinverseを作れ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2005年11月11日まで(すでに遅れ)
[5] その他の制限: なるべく簡単に・・・
長さを取得して、*(temp+i)に逆から一つ一つ入れていけばできるのかなと思いましたがどうも上手くいきません。
0074デフォルトの名無しさん
2005/11/17(木) 14:52:55#include <string.h>
char* strinverse(char* str)
{
int start = 0, end = strlen(str) - 1;
while (start < end) {
char temp = str[start];
str[start++] = str[end];
str[end--] = temp;
}
return str;
}
0075デフォルトの名無しさん
2005/11/17(木) 14:53:59#include <stdio.h>
int main(void)
{
char str_in[1024], str_out[1024]; // 十分な長さを確保しているという前提で
int i, j;
fgets(str, 1024, stdin);
for( i = strlen(str) - 1 ; i >= 0 && (str[i] == '\n' || str[i] == '\r') ; i-- ) ;
for( j = 0 ; i >= 0 ; i--, j++ ) str_out[j] = str_in[i];
str_out[j] = '\0';
printf("Input -> %s\nReverse -> %s\n", str_in, str_out);
return 0;
}
007671
2005/11/17(木) 15:16:17char *strinverse( char *s )
{
int i, len;
char *temp;
len = strlen(s);
for( i = 0 ; i < len ; i++ )
*(temp+i) = *(s+len-1-i);
return temp;
}
これが今まで考えてたものなんですが、入力する文字列によってはエラーが起きたりします。
質問を連発して悪いのですが、一体どこが悪いのでしょうか。
0077デフォルトの名無しさん
2005/11/17(木) 15:16:34> 関数strinverseを作れ
この部分の仕様を満たしてない。
007873
2005/11/17(木) 15:16:380079デフォルトの名無しさん
2005/11/17(木) 15:18:45まず、交換という操作を行っていない。
0080デフォルトの名無しさん
2005/11/17(木) 15:50:30tempの実体を確保していない。
実体を確保したとしてもauto変数の配列を返すことは出来ない。
従って*s自体を更新するように仕様を変更した方が良い
0081デフォルトの名無しさん
2005/11/17(木) 15:51:30>>76 char *tempに領域を確保してないのが悪い。エラーなしで動くことがある方が怖いな。
0083デフォルトの名無しさん
2005/11/17(木) 16:37:49[2] 10までの10進法の数字を2進法(char形)に直して表示する。
[3]
[3.1] Windows
[3.2] VC++ 6.0
[3.3] C
[4] 11/21
[5]たぶん、特になし。
おねがいします。
0084デフォルトの名無しさん
2005/11/17(木) 16:58:12ポインタとって実体確保しないなんてミスしないよ(つД⊂)・・・たぶん
0085デフォルトの名無しさん
2005/11/17(木) 17:03:30#include <stdio.h>
#include <math.h>
int dec2bin(int, char*);
int main(void)
{
char bin[5];
int i = 10;
dec2bin(i, bin);
printf("%s\n", bin);
return 0;
}
int dec2bin(int dec, char* buf)
{
int i, bin = 0;
for (i=0;i<4;i++) {
if (i == 0)
bin += dec % 2;
else
bin += (int)pow(10, i)*(dec%2);
dec /= 2;
}
sprintf(buf, "%04i", bin);
return dec;
}
0086デフォルトの名無しさん
2005/11/17(木) 17:20:45#include <stdio.h>
char* to_radix_2(unsigned int x, char* s) {
int index = 0, left = 0;
char temp;
do s[index++] = (x & 1) + '0'; while (x >>= 1);
s[index--] = '\0';
while (left < index) {
temp = s[left];
s[left++] = s[index];
s[index--] = temp;
}
return s;
}
int main(void) {
char s[256];
int i = 123456;
printf("%d(10) = %s(2)", i, to_radix_2(i, s));
}
0087デフォルトの名無しさん
2005/11/17(木) 17:30:33[2] 問題文(含コード&リンク): 1234567890を繰り返し表示するプログラムを作成せよ。
なお、表示する数字は、読み込まれた整数値の個数とする。
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VisualC++ 6.0
[3.3] 言語: C
[4] 期限: 今夜20時までに
プログラムを自分でも作成してみたのですが、うまく実行できません。
↓が自分で作成したものです。
#include <stdio.h>
int main (void)
{
int i,num;
printf("整数を入力してください:");
scanf("%d", &num);
for(i = 1; i <= num; i++){
if(i== 10){
i = 0;
}
printf("%d",i);
}
return 0;
}
よろしくおねがいします。
0088デフォルトの名無しさん
2005/11/17(木) 17:33:21それはたとえば3が指定されたときに
012と表示するの?それとも012345678901234567890123456789と表示するの?
0089デフォルトの名無しさん
2005/11/17(木) 17:36:21#include<stdio.h>
int main(void)
{
int s[10] = {1,2,3,4,5,6,7,8,9,0};
int a,i;
scanf("%d",&a);
for(i=0;i<a;i++)
printf("%d ",s[i%10]);
return 0;
}
009088
2005/11/17(木) 17:39:52ま、いいや。こんな感じ?
#include <stdio.h>
int main(void) {
int i = 9, num;
printf("整数を入力してください:"); scanf("%d", &num);
while (num-- > 0) {
if (++i == 10) i = 0;
printf("%d", i);
}
return 0;
}
0091デフォルトの名無しさん
2005/11/17(木) 17:41:17#include<stdio.h>
int main(void)
{
int num,i;
printf("整数を入力してください:");
scanf("%d",&num);
for(i=0;i<num;i++)
printf("%d ",(i+1)%10);
return 0;
}
0092デフォルトの名無しさん
2005/11/17(木) 17:46:10009387
2005/11/17(木) 17:46:10無事解決しました。
ありがとうございます!
0095デフォルトの名無しさん
2005/11/17(木) 19:28:36「要素それぞれの遷移確率に従ってランダムに1つ選ぶ」
にはどのようにすればよいのでしょうか?
例えばa,b,cがそれぞれ5/10,3/10,2/10の確率のとき、
この確率に従ってa,b,cの中からランダムに1つ選択する
といった感じです.
0096デフォルトの名無しさん
2005/11/17(木) 19:43:54int *a;
printf("要素数を入力:");
scanf("%d",&MAX);
a=(int *)malloc(sizeof(int)*MAX);
srand((unsigned int)time(NULL));
for(i=0;i<MAX;i++)
a[i]=rand()*pow(2,15)+rand();
とした場合、扱えるデータ数の最大はメモリ容量が空いてる限りですか?
それともrand()*pow(2,15)+rand();で表現できる2^30個までですか?
0097デフォルトの名無しさん
2005/11/17(木) 19:46:320098デフォルトの名無しさん
2005/11/17(木) 19:49:39コードは適当だけど、素朴に考えるとこんな感じになるんじゃね?
int i = rand() % 10;
if((0 <= i) && (i <= 4)){
next = a;
} else if((5 <= i) && (i <= 7)){
next = b;
} else if((8 <= i) && (i <= 9)){
next = b;
}
009998
2005/11/17(木) 19:50:31010095
2005/11/17(木) 19:56:03なるほど〜、確率に合わせて10を要素に配分してるんですね!
方針が立ちました、ありがとうございます!
0101デフォルトの名無しさん
2005/11/17(木) 20:26:10ではメモリの容量がある限りデータを生成できるってことですね?
ということはrand()*pow(2,15)+rand()で表現できる数の範囲以上の個数を
指定したら同じ値を何個も使って生成していくってことですよね?
0102デフォルトの名無しさん
2005/11/17(木) 20:27:39[2] 下
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VisualC++ 6.0
[3.3] 言語: C
[4] 期限: 来週中
1. 自然数2個の最大公約数を計算する関数を作成せよ
標準入力から自然数M, N, dm, dnを入力する。
自然数M〜M+dmとN〜N+dnとの最大公約数をそれぞれ求める。
結果は標準出力に表形式で示す。表形式の出力終了後、これらの中で互
いに素である自然数の組を標準出力に示す。
例:M=3, N=4, dm=3, dn=2の場合
3 4 5 6
4 1 4 1 2
5 1 1 5 1
6 3 2 1 6
互いに素:
(3,4)
(5,4)
(3,5)
(4,5)
(6,5)
(5,6)
d) プログラムは3個以上の関数で構成すること(main, 最大公約
数を計算する関数以外に何かの役割を持たせた関数を作成する必要があ
る)
お願いします
0103名無し
2005/11/17(木) 20:32:47[2] 問題文:[入力]4個の実数(一次方程式ax+by+cz=dの定数a,b,c,d)の組を3組
[操作]行列を使って3元一次方程式の解を求める [出力]3元一次方程式の解をx=解1,y=解2,z=解3の形で出力
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2005年11月19日13:00まで]
[5] その他の制限:ガウスの消去法かガウスジョルダン法で解かないといけないみたいです
よろしくお願いいたします。
0104デフォルトの名無しさん
2005/11/17(木) 20:48:29rand()*pow(2,15)+rand()じゃ、一様な乱数を生成できないんじゃね?
0105デフォルトの名無しさん
2005/11/17(木) 20:55:53あくまでランダムだから同じ数字が重複することもあるじゃん。
それにmallocでメモリ領域確保できなかったらエラーにしないとね。
あとallocしたらfreeを(´・ω・`)
0106デフォルトの名無しさん
2005/11/17(木) 21:56:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1109.c
0107デフォルトの名無しさん
2005/11/17(木) 22:11:51ありがとうございます〜
0108デフォルトの名無しさん
2005/11/17(木) 23:21:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1110.c
適当にガウスの消去法かガウスジョルダン法でぐぐったものに
http://user.ecc.u-tokyo.ac.jp/~tt37084/cp9703.html
・C++(//)でなくC(/*…*/)のコメント形式に変更
・main()が長すぎるから適当に関数へ分割
・ほか少々いじる
くらいしかやってないので上のトコの注意見ながら手直ししてください
解が一意に決まらなかったときの処理とかやってないんでかなりやっつけです
0109デフォルトの名無しさん
2005/11/18(金) 00:35:33str_reverse(char*s,char*d);
を使いなさい
s→dへのコピーをする
"abc"→"cba"になる
0110デフォルトの名無しさん
2005/11/18(金) 01:13:09主語がわからないけど一応はっとく
#include "stdio.h"
double str_reverse(char *,char*);
int main(void){
char s[100]="1",d[100];
str_reverse(s,d);
printf("_%s_\n_%s_\n",s,d);
return 0;
}
double str_reverse(char *s,char *d){
int n=0,i;
if(*s){
while(s[++n]);i=d[n--]=0;
do d[n-i]=s[i];while(s[++i]);
}else *d=0;
return 0.0;
}
0111デフォルトの名無しさん
2005/11/18(金) 01:31:11ありがとうございます
助かりました
0112デフォルトの名無しさん
2005/11/18(金) 08:55:45[2] 問題文(含コード&リンク):
★★★★★ で表現されたバーを回転させながら横に移動させなさい。
回転が速すぎるときは、sleep関数を使いなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: LCC-Win32
[3.3] 言語: C言語
[4] 期限: 11月18日月曜日
[5] その他の制限:
先週for,whileなどのをやって、今週if switch caseをやった後にこの宿題が出ました。
★ ★ ★
★ ★ ★
★★★★★ ★ ★ ★ ★★★★★
★ ★ ★
★ ★ ★
こんな感じに回転させながら右に動き、
1回転したら左に同じく回転しながら動き最初の位置に戻ります。
考えてもさっぱりわかりません。どなたか何卒よろしくお願いします。
0113デフォルトの名無しさん
2005/11/18(金) 11:09:060114デフォルトの名無しさん
2005/11/18(金) 11:43:12printf("%*s%c\n", ic, "", "-\\|/-\\|/-"[ic]);
}
みたいな感じなんだろうか。
0115デフォルトの名無しさん
2005/11/18(金) 12:04:05#include <stdio.h>
#include <windows.h>
int main()
{
int i, j;
for (j = 0; j < 20; j++){
for (i = 0; i < j; i++) printf(" ");
printf("★★★★★\r");
Sleep(100);
}
putchar('\n');
for (j = 20; j >= 0; j--){
for (i = 0; i < j; i++)
printf(" ");
printf("★★★★★\r");
Sleep(100);
printf(" \r");
}
return 0;
}
0116デフォルトの名無しさん
2005/11/18(金) 12:14:31[2] 問題文(含コード&リンク):
配列a[ ]のすべての要素に1を代入する。
この代入する部分を独立させポインタ変数を明示するプログラムを書け。
(ポインタで渡してポインタで受け取る)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11月21日まで
[5] その他の制限:よろしくおねがいします
0117デフォルトの名無しさん
2005/11/18(金) 12:31:25なにかの嫌がらせ?
0118デフォルトの名無しさん
2005/11/18(金) 13:08:02この実行ファイルを配布されたので、それをみてやっと理解できたんです。
中心の星が右にひとつずつ動きます。それを軸にして周りの4つの星が回ります。
回転するだけでもいいので、よろしくお願いします。
以下のファイルを参考にしてくださいと先生が言っていました。
#include <stdio.h> #include <xxxxxx.h> #include <conio.h>
int main(){
int x=15,y=15;
int dir,col=1;
Cinit(80,40);
while(1){
Cprint(0,0,"");
dir= getchar()-'0';
fflush(stdin);
switch (dir){
case 1: y++; break;
case 2: x+=2; break;
case 3: y--; break;
case 4: x-=2; break;
default : col =(col++)%15+1;
}Color(col);
Cprint(x,y,"■");
}return 0;}
「xxxxxx.h(学部名なので伏せてます。)このファイルをインクルードすると、
Cinit(幅 , 高さ); でコンソールの大きさを指定することができる。
Color(色番号); で色を0〜15 までの16 色選択できる。
Cprint(X,Y,文字列); でX,Y の位置に文字列を表示できる。
座標は文字単位に数えるので、X 方向とY 方向では長さが異なる。
半角文字を基準とするので、横方向長さは縦の約半分になる。
xxxxxx.h を使うときは必ずCinit 関数を使ってください。」とのことです。
0119デフォルトの名無しさん
2005/11/18(金) 13:25:49・自分のレス番が判るようにしよう。
・そういう条件ははじめから提示しよう。
それはさておき、めんどいし実行できないし、私ゃパスだ。
0120デフォルトの名無しさん
2005/11/18(金) 13:33:51それなら3パターンを静的にもっとけばいいだけのような。
なんにしてもわけのわからん課題だ。
0121デフォルトの名無しさん
2005/11/18(金) 13:39:47>それなら3パターンを静的にもっとけばいいだけのような
馬鹿ですか?
0122デフォルトの名無しさん
2005/11/18(金) 14:06:17あと、指定座標に特定のパターンを出力するのも、良くある話だ。
0123デフォルトの名無しさん
2005/11/18(金) 14:55:46[2] 問題文(含コード&リンク):最短最大路を求めるプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] vc++6.0
[3.3] C/C++
[4] 期限: 2005/11/21
色々と調べたのですが、どうしてもわかりません。
宜しくお願いします。
0124デフォルトの名無しさん
2005/11/18(金) 16:02:50>"最短最大路" の検索結果 1 件中 1 - 1 件目
最短最大路って何かと思って調べてみたらここにバッチリ書いてあるが
最短路の中で最大の重みがついてる路ってことか?
それならダイクストラ法で最短路出せば直ぐだろ
0125デフォルトの名無しさん
2005/11/18(金) 17:17:37[2] 問題文
入力した文字列を反転するプログラムをポインタ変数を用いて作成せよ.
[実行例]
文字列を入力してください:meijo
反転文字列は"ojiem"です.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft VisualC++6.0
[3.3] 言語: C++
[4] 期限:速ければ速いほど助かります。
よろしくお願いします。
0126デフォルトの名無しさん
2005/11/18(金) 17:57:08#include <stdio.h>
int main(){
char s[120];
char *p = s;
printf("文字列を入力してください:");
scanf("%s", &s);
for (; *p != '\0'; p++);
p--;
printf("反転文字列は\"");
for (; p != s - 1; p--) printf("%c", *p);
printf("\"です.");
return 0;
}
0127デフォルトの名無しさん
2005/11/18(金) 18:14:01#include <iostream>
using namespace std;
void st_reverse(char *,char *);
int main() {
char str[128],st2[128];
cout << "文字列を入力してください:";
cin >> str;
st_reverse(str,st2);
cout << "反転文字列は\"" << st2 << "\"です.\n";
return 0;
}
void st_reverse(char *s,char *d){
char* t=s;
if(*t){
while(*(++t));
d-=s-t;*d--=0;t=s;
while(*t)*d--=*t++;
}else *d^=*d;
}
0128デフォルトの名無しさん
2005/11/18(金) 19:55:01[2] 問題文(含コード&リンク): 4×4正方行列Aにたいして、A^n(n=1,2,3,4...)
を求めるプログラムを配列を使用して作成せよ。
[3] 環境
[3.1] OS:unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日いっぱい
[5] その他の制限:
便乗して申し訳ないのですが>>125さんの問題文を
言語:C言語
制限:ポインタを使わない(まだ習っていないもので...
にした時のプログラムもご教授願います。
0129デフォルトの名無しさん
2005/11/18(金) 20:58:07[2] 問題文: 入力した文字列を 2 回繰り返して表示するプログラムを作成
すること
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限:src が "cha" のとき dst に "chacha" が
コピーされる関数 void str_dup(char dst[], char src[])
をつくり、それを用いて。
よろしくお願いします
0130デフォルトの名無しさん
2005/11/18(金) 21:08:51#include <string.h>
void str_dup(char dst[], char src[])
{
strcpy(dst, src);
strcat(dst, src);
}
int main(void)
{
char s[128], d[256];
scanf("%s", s);
str_dup(d, s);
printf("%s\n", d);
return 0;
}
0131デフォルトの名無しさん
2005/11/18(金) 21:10:04void(str_dup(char *dst, char*src)
{
char *ptrd = dst, *ptrs = src;
int i;
for (i=0;i<2;i++)
while (ptrs != '\0')
*ptrd++ = *ptrs++;
*ptrd = '\0';
}
str_dupだけ作ったが脳内コンパイル。mainは自分で作ってくれ
それとstrで始まる関数はstring.hで予約済み
st_dupとかの方がいい
0132デフォルトの名無しさん
2005/11/18(金) 21:41:47str_から始まるのは問題ないはず
0133デフォルトの名無しさん
2005/11/18(金) 22:35:17ありがとうございました
0134デフォルトの名無しさん
2005/11/18(金) 22:40:12ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1112.txt
0135デフォルトの名無しさん
2005/11/18(金) 23:58:07[2] 問題文: 入力した文字列を逆順に表示せよ(abc→cba)
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限:ポインタを使わずに
お願いします
0136デフォルトの名無しさん
2005/11/19(土) 00:06:34#include <stdio.h>
#include <string.h>
int main(void)
{
int i;
char s[128];
scanf("%s", s);
for (i = strlen(s) - 1; i >= 0; --i) {
printf("%c", s[i]);
}
return ;
}
0137デフォルトの名無しさん
2005/11/19(土) 00:35:41出来れば#include <string.h> 使わずに・・・だめですか?
0138デフォルトの名無しさん
2005/11/19(土) 00:39:05#include <stdio.h>
int main(void)
{
int i;
char s[128];
scanf("%s", s);
for (i = 0; s[i]; ++i) ;
for (; i >= 0; --i) {
printf("%c", s[i]);
}
return 0;
}
0139デフォルトの名無しさん
2005/11/19(土) 00:56:25ありがとう まじ感謝
0140デフォルトの名無しさん
2005/11/19(土) 01:25:28最初に'\0'表示してる…(((( ;゚Д゚))))
まぁ画面上は問題無しか。
0141デフォルトの名無しさん
2005/11/19(土) 03:30:420142デフォルトの名無しさん
2005/11/19(土) 03:33:10ぼるじょあか?
0143デフォルトの名無しさん
2005/11/19(土) 03:54:40ハズレ。中央の金玉が回転したしょぼんでした。
0144ぼるじょあ ◆yBEncckFOU
2005/11/19(土) 03:58:440145デフォルトの名無しさん
2005/11/19(土) 04:19:09呼んでないからさっさと巣に帰れ
0146ぼるじょあ ◆yBEncckFOU
2005/11/19(土) 05:59:050147デフォルトの名無しさん
2005/11/19(土) 06:53:250148デフォルトの名無しさん
2005/11/19(土) 15:27:47これ、反応(逆にした文字)返ってこなくない?
0149デフォルトの名無しさん
2005/11/19(土) 16:39:00あふぉか。sprintfでもなんでも使えばいいだろうが。
0150デフォルトの名無しさん
2005/11/19(土) 20:34:38空白入るとダメっぽいね
#include <stdio.h>
int main(void){
int i;
char s[128];
scanf("%[^\n]",s); /* 改行以外読み込む */
for (i = 0; s[i]; ++i);
for (i--; i >= 0; --i)/* i--で\0の部分飛ばす */
printf("%c", s[i]);
return 0;
}
これでも表示できる分は対応したと思うけど十分じゃないかも
%[^\n] については正規表現でぐぐれ
0151デフォルトの名無しさん
2005/11/19(土) 21:21:21[2] 問題文:
(1)入力した文字列をオウム返しで画面に出力するプログラムを作成せよ。
ただし、何度でも入力可能とし、"q" を入力すると終了するようにすること。
入力は半角に限定する。このとき、"quiz" や "quit" などの文字を入力しても終了しないようにする。
(2)Eratosthenes の篩法を用いて入力された整数(2 〜 9999)が素数であるかを判定するプログラムを作成せよ。
ただし、素数でない場合は、その数を割り切る最初の素数とその他の因数を表示させること(1001=7*143のように)。
範囲外の数が入力されたときには、エラー処理を行うこと。
(3)多倍長演算の手法を用いてキーボードから 20 桁までの整数 a, b を入力し、
減算(a - b)をするプログラムを作成せよ。
但し、マイナスの場合は、マイナス記号を表示させること。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名:gcc
[3.3] 言語: C
[4] 期限: 2005年11月21日20時まで
[5] その他の制限: 関数は使わないこと。
Eratosthenes の篩法を用いて2〜9999 までの中の素数を探すプログラム:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1116.txt
多倍長演算の加算プログラム:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1115.txt
(2)と(3)については、上記のプログラムを改変、付け足しする形でお願いします。
0152デフォルトの名無しさん
2005/11/20(日) 00:20:08(1)、(2)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1117.zip
文字コードがS-JISですので…
(3)は((2)もだけど)一から作り直したい衝動に駆られたので他者にお任せします。申し訳ない
0153デフォルトの名無しさん
2005/11/20(日) 01:08:04[2] 問題文: あらかじめ定義した文字列がキーボードから入力した文字列で始まっているかどうかを
判定して表示するプログラムを作成せよ
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今日中
[5] その他の制限:ポインタを使わずに
お願いします
0154デフォルトの名無しさん
2005/11/20(日) 01:49:38[2] 問題文(含コード&リンク):
長さが3以上の文字列が5つ入力されるまで繰り返し入力を受け付ける。
最後にこれら5つの文字列を出力しなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VC++6.0
[3.3] 言語: C++
[4] 期限:2005,11,24
[5] その他:二次元配列?
よろしくお願いします。
0155デフォルトの名無しさん
2005/11/20(日) 04:50:55#include <stdio.h>
#include <string.h>
#define BUF_SIZE 1024
int isHajimatteru(const char arakajime[], const char buf[], const int buf_len)
{
int i;
for (i=0 ; i<buf_len ; i++)
{
if (arakajime[i] != buf[i])
{
return 0;
}
}
return 1;
}
0156デフォルトの名無しさん
2005/11/20(日) 04:51:19int main()
{
const char arakajime[]="hello, world";
char buf[BUF_SIZE];
int buf_len;
fgets(buf, sizeof(buf)-1, stdin);
buf_len=strlen(buf);
if (buf[buf_len-1]=='\n')
{
buf[buf_len-1]='\0';
buf_len--;
}
if(isHajimatteru(arakajime, buf, buf_len))
{
printf("はじまってます\n");
}
else
{
printf("はじまってません\n");
}
return 0;
}
0157デフォルトの名無しさん
2005/11/20(日) 05:10:38#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF_SIZE 1024
int main()
{
char *buf;
char *mojiretufive[5];
int i;
int buf_len;
i=0;
while (i<5)
{
buf=malloc(BUF_SIZE);
fgets(buf, BUF_SIZE-1, stdin);
buf_len=strlen(buf);
if (buf[buf_len-1]=='\n')
{
buf[buf_len-1]='\0';
}
buf=realloc(buf, strlen(buf)+1);
0158デフォルトの名無しさん
2005/11/20(日) 05:10:58if (strlen(buf)>=3)
{
mojiretufive[i]=buf;
i++;
}
else
{
free(buf);
}
}
for (i=0 ; i<5 ; i++)
{
printf("%s\n", mojiretufive[i]);
}
for (i=0 ; i<5 ; i++)
{
free(mojiretufive[i]);
}
return 0;
}
0159デフォルトの名無しさん
2005/11/20(日) 05:11:31出来るだけ簡潔に書いたつもり
#include <stdio.h>
int startsWith(const char input[], const char test[])
{
for (; *input && *test; ++input, ++test) {
if (*input != *test) {
return 0;
}
}
return *test == '\0';
}
int main(void)
{
const char s1[] = "The quick brown fox jumps over the lazy dog.";
char s2[128];
scanf("%[^\n]", s2);
printf("%s", startsWith(s1, s2) ? "始まる" : "始まらない");
return 0;
}
0160159
2005/11/20(日) 05:16:05int startsWith(const char input[], const char test[])
{
for (; input[0] && test[0]; ++input, ++test) {
if (input[0] != test[0]) {
return 0;
}
}
return test[0] == '\0';
}
こっちを使ってくれ。
(´-`).。oO(にしても何でポインタ使っちゃいけないんだろう…)
0161159
2005/11/20(日) 05:42:38暇だからこっちもやってみた
#include <iostream>
#include <iterator>
#include <functional>
#include <vector>
#include <string>
#include <algorithm>
namespace {
const int NUM_INPUT = 5;
const int MIN_LENGTH = 3;
struct StringsGenerator : std::unary_function<void, std::string> {
const std::string operator()() const
{
std::string s;
do {
std::getline(std::cin, s);
} while (s.length() < MIN_LENGTH);
return s;
}
};
}
int main()
{
std::vector<std::string> strings(NUM_INPUT);
std::generate(strings.begin(), strings.end(), StringsGenerator());
std::copy(strings.begin(), strings.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
return 0;
}
(´-`).。oO(こんなん出したら胡散臭そうな目で見られるだろうなぁ…)
0162デフォルトの名無しさん
2005/11/20(日) 05:46:190163デフォルトの名無しさん
2005/11/20(日) 06:54:12[2] 問題文(含コード&リンク)::ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1118.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C/C++どちらでも可
[4] 期限: 12月1日まで
[5] その他の制限: なし
私の力ではできません。どなたか教えてください。よろしくお願いします。
0164デフォルトの名無しさん
2005/11/20(日) 07:05:310165デフォルトの名無しさん
2005/11/20(日) 09:28:17状態3が定義されていません。
適当に改行をしましょう。
0167デフォルトの名無しさん
2005/11/20(日) 11:59:18[2] 問題文(含コード&リンク):
エコーサーバとクライアントを作成する。
サーバ側の要件
「end+return」を受け付けるとサーバは終了する。
それ以外の文字の場合は、クライアントに再送信する。
終了時には、終了メッセージをクライアントに送信する。
通信が終了した場合は、クライアントのリソースは解放すること。
クライアント側の要件
行の先頭で「q+return」を入力するとクライアントは終了する。
一行づつサーバに入力文字を送信する。
サーバから受信した文字列は画面に表示する。
通信規約は任意のものでよい
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 11月末
[5] その他の制限: 無し
ソケットはやったことがないのです。。。
0168デフォルトの名無しさん
2005/11/20(日) 12:17:56[2] 問題文(含コード&リンク):
csv形式(カンマ区切り、ダブルコートなし)のファイルがある。
このファイルを読み込んでデータを表示する。ただし、表示は各アイテム毎に改行する事。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 11月末
[5] その他の制限: 無し
0169デフォルトの名無しさん
2005/11/20(日) 14:14:53ダブルコートって何だ?ダブルバイトなら聞いたこともあるが
0170163
2005/11/20(日) 14:43:31ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1119.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1120.zip
0171デフォルトの名無しさん
2005/11/20(日) 14:52:08double-quoteだと思う。
0172デフォルトの名無しさん
2005/11/20(日) 14:52:32ダブルクォート(")だと思われ。
0173デフォルトの名無しさん
2005/11/20(日) 14:52:560174デフォルトの名無しさん
2005/11/20(日) 15:04:25そういうことか
日本語(とゆうかダブルバイト文字)の有り無しで変わってくるがどうなんだ?>>168
0175デフォルトの名無しさん
2005/11/20(日) 15:11:500176デフォルトの名無しさん
2005/11/20(日) 15:25:23入力:
1st,2nd,3rd
a,b,c
出力:
line 1, item 1, '1st'
line 1, item 2, '2nd'
/* 略。質問側は略しちゃだめよ */
とか。出力の形がわからんと組みようがないわ。
>XORでパリティの人
・授業なら「適当に並べ替え」ってところが肝で説明受けてるはず。なんで、それ書きましょう。
・ああ・・・それから、パリティって普通、パリティビットつけるものです。
・誤り訂正符合を考え提出せよってネタだったら、そのままだしたほうがいいよ。
0177デフォルトの菜無しさん
2005/11/20(日) 15:47:40[2]問題文(含コード&リンク):
1.実数型変数a, b を宣言し、そのアドレスを画面に表示するプログラムを作成。
2.上記のプログラムでポインタ変数 *pa, *pb を準備し、それぞれに変数 a, b のアドレスを入力して、それを画面に表示させる。
3.上記のプログラムで変数 a, b にキーボードから数値を入力し、その和 sum を計算して画面に表示させる。ただしポインタ *pa, *pb を用いて和を計算する。
4.実数型変数a, b を宣言し、和と差を計算して、結果を画面に表示するプログラムを考える。このとき、ポインタ変数 *pwa, *psa をmain関数内で準備し、関数 wasa に a, b, &pwa, &psa を引数として渡して、関数 wasa 内で「アドレス内のデータ」として和と差を計算する。
0178デフォルトの菜無しさん
2005/11/20(日) 15:48:27[3.1]OS:Windows
[3.2]コンパイラ名:gcc
[3.3]言語:C言語
[4] 期限:明日のお昼3時
[5] その他の制限:ポインタ変数を使うらしいです。
2番の問題までゎかるのですが、3番からが全然謎なので是非お願いします。
0179デフォルトの名無しさん
2005/11/20(日) 15:51:13Cスレにスレ違いのポストしておいてこっち来るんじゃねーよネカマが
0180デフォルトの名無しさん
2005/11/20(日) 15:53:58おっぱいうp
0181168
2005/11/20(日) 15:59:53ダブルバイトていうか多分スペース区切りでいいんじゃないでしょか
==============
1111 2222 3333
4444 5555 6666
==============
上記を
1111
2222
3333
4444
5555
.....
見たいに。だからスペースの有無とファイル中の改行を見て
コード内で1アイテムづつ改行を行うんじゃないかと...
0182デフォルトの名無しさん
2005/11/20(日) 15:59:540183デフォルトの名無しさん
2005/11/20(日) 16:02:26うpはまだでつか?
0184デフォルトの名無しさん
2005/11/20(日) 16:02:39カンマ区切りじゃないのか?
それと日本語云々は、(本当にあるのかは知らないが)2バイト目とカンマの文字コードが
一致する場合を避ける必要がある
0185デフォルトの名無しさん
2005/11/20(日) 16:05:22double a, b;
printf("&a %p, &b %p\n", &a, &b);
2)
double a, b, *pa, *pb;
pa = &a;
pb = &b;
printf("pa %p, pb %p\n", pa, pb);
3)
double a, b, *pa, *pb. sum;
pa = &a;
pb = &b;
printf("input a b:");
scanf("%lf %lf", pa, pb); /* scanf("%lf %lf", &a, &b);とどちらがよいだろう? */
sum = *pa + *pb;
printf("pa %p, pb %p\n", pa, pb);
4) はC言語スレで頑張ってた人が居るので宣言考えるだけであとはパス。
double a, b, *pa = &a, *pb = &b, wa, sa, pwa = &wa, psa = &sa;
0186デフォルトの名無しさん
2005/11/20(日) 16:06:080187デフォルトの名無しさん
2005/11/20(日) 16:06:21[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1121.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語:C
[4] 期限:2005年11月22日12:00まで
[5] その他の制限:特に無し
0188187
2005/11/20(日) 16:06:530189168
2005/11/20(日) 16:07:051111,2222,3333
4444,5555,6666
==============
こうっすね すいません。 日本語云々はどうなんでしょうか...
それこそ宿題程度のものなので作る側の任意で良いと思います。
日本語関係にも対応している高尚なものであればそっちの方がいいとは思いますが。。。
0190デフォルトの名無しさん
2005/11/20(日) 16:07:32コンパイルしてみます!
0191デフォルトの名無しさん
2005/11/20(日) 16:08:16#include <stdio.h>
int main(void) { char buf[100]; while(scanf("%99s", buf) == 1) printf("%s\n", buf); return 0;}
0192デフォルトの名無しさん
2005/11/20(日) 16:11:57ファイルじゃ?
0193デフォルトの名無しさん
2005/11/20(日) 16:12:07#include <stdio.h>
int main(void) { int c; while ((c = getchar()) != EOF) {if (c == ',' || c == '\n') putchar('\n'); else putchar(c);} return 0;}
0194デフォルトの名無しさん
2005/11/20(日) 16:19:36コマンドラインから
a.exe <file
とか
a.out <file
としてくれ。リダイレクトとかリダイレクションとかいう機能だ。
手抜きプログラムで必須の方法だ。
0195168
2005/11/20(日) 16:23:27ちゃんとやってください
0196デフォルトの名無しさん
2005/11/20(日) 16:27:380197デフォルトの名無しさん
2005/11/20(日) 16:49:44[2] 問題文(含コード&リンク):
N個の要素よりなる配列をmain関数に宣言する。配列にデータを読み込む関数(例えばinput)
をmainから呼んで入力を行いデータを書き出す関数(例えばoutput)を呼んで出力するプログラムを
配列で呼んで配列で受け取るやり方を書け。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限:2005年11月21日
[5] その他の制限:
ヘルプです
0198デフォルトの名無しさん
2005/11/20(日) 16:56:10void output(int *a){int i;for(i=0;i<N;i++){printf("%d\n",a[i]);}}
int main(){int a[N];input(a);output(a);return 0;}
0199デフォルトの名無しさん
2005/11/20(日) 18:04:43[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1123.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visualC++6
[3.3] 言語:C
[4] 期限:2005年11月24日まで
[5] その他の制限:無し
宜しくお願いします
0200163
2005/11/20(日) 18:44:51ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1120.zip
再三の変更となり申し訳ありません。
1119.txtからの変更点は
�@:1つのブロックを 100000/誤りの数 bitとする。つまり最初は1/e bit。
�K:誤りがなくなるまで
です。�Aの意味がシャッフルした時に繋がってませんでした。�Kはプログラムの終点を言ってませんでした。
1120.zipと共にどうか宜しくお願いします。
0201デフォルトの名無しさん
2005/11/20(日) 20:28:41#include <stdio.h>
void wasa(double a, double b, double **ppwa, double **ppsa)
{ **ppwa = a + b; **ppsa = a - b; }
int main(void) {double a, b, wa, sa, *pwa, *psa;
pwa = &wa; psa = &sa;
printf("a b: "); scanf("%lf %lf", &a, &b);
wasa(a, b, &pwa, &psa);
printf("wa %f, sa %f\n", wa, sa);
return 0; }
多分・・・の回答
#include <stdio.h>
void wasa(double a, double b, double *pwa, double *psa)
{ *pwa = a + b; *psa = a - b; }
int main(void) {double a, b, *pa, *pb, wa, sa;
printf("a b: "); scanf("%lf %lf", &a, &b);
wasa(a, b, &wa, &sa);
printf("wa %f, sa %f\n", wa, sa);
return 0; }
0202デフォルトの名無しさん
2005/11/20(日) 20:58:18状態1〜3が発生して、手順が全て示されるように、初期データを書いて、
実際に手順を適用してみてくれ。
ああ・・・ブロックサイズは説明用に小さくしてくれ。
0203デフォルトの名無しさん
2005/11/20(日) 21:08:36パリティの意味が解らない。
ためしに、16bit、e=1/16でどんなことを求められているのか説明してくれ。
0204デフォルトの名無しさん
2005/11/20(日) 21:33:530205デフォルトの名無しさん
2005/11/20(日) 23:26:55コンパイルしてみますね。
0206デフォルトの名無しさん
2005/11/20(日) 23:41:21void wasa(double a, double b, double *pwa, double *psa)
{ *pwa = a + b; *psa = a - b; }
int main(void) {double a, b, *pa, *pb, wa, sa;
printf("a b: "); scanf("%lf %lf", &a, &b);
wasa(a, b, &wa, &sa);
printf("wa %f, sa %f\n", wa, sa);
return 0; }
↑で、できましたw
本当にありがとうござぃます〜
また、お世話になると思いますがよろしくお願いしますw
0207デフォルトの名無しさん
2005/11/21(月) 01:38:40ボクは知らないからダケド。
0208デフォルトの名無しさん
2005/11/21(月) 03:20:58[2] 問題文(含コード&リンク):
文字列10個を入力として受け付け、長さ上位3つを長い順に出力する。
同じ長さの文字列が入った場合には、後に入力されたものが高位とする。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C++
[4] 期限: 2005年11月24日
[5] その他の制限:
http://www9.plala.or.jp/sgwr-t/
ここの9章あたりまでしか習っていません
よろしくお願いします
0209デフォルトの名無しさん
2005/11/21(月) 04:38:13http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1127.c
0210デフォルトの名無しさん
2005/11/21(月) 05:57:20正直面倒くさいしなあ.ネットワーク絡むと下手なプログラム書くとどこかで迷惑になるかもしれんし.
……167,コンパイラが bcc ってことは,winsock でいいんかな?
0211デフォルトの名無しさん
2005/11/21(月) 07:23:12>>210が書いてるように面倒+ちゃんと書かないと何処かの迷惑になりかねないし
そもそも完全に環境依存だからみんな及び腰になるんじゃまいか?
まぁそういう俺はまだソケットの扱い方分からないんだけどな
どこかにソケット関連のヘッダとそれで宣言されてる命令の一覧無い?
0212デフォルトの名無しさん
2005/11/21(月) 09:14:59[2] 問題文:
以下のクラス MyPair に対し, 演算子 == , !=, >=, >, <=, < を定義して下さい. ただし, これらの演算子は以下の性質を満たすようにして下さい.
これらは全て MyPair 同士の比較である.
fst が等しいとき, snd を比べてその比較の結果とする.
fst が異なるとき, fst を比べてその比較の結果とする.
class MyPair {
int fst;
int snd;
public:
MyPair(int f=0, int s=0) {
fst = f;
snd = s;
}
int get_fst() const { return fst; }
int get_snd() const { return snd; }
};
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio.NET
[3.3] 言語: C++
[4] 期限: 11月28日
[5] その他の制限:
0213デフォルトの名無しさん
2005/11/21(月) 09:31:24[2] 問題文:
以下の条件を満たす template 関数 replicate を定義して下さい.
template 引数(型引数) は一つであり, 以下の説明ではこれを T とする.
replicate の引数は2つあり, 第一引数は T型, 第二引数は int型である.
replicate はTの配列を第二引数で表される長さ分確保し, 各要素を第一引数の値で初期化した後, その配列の先頭へのポインタを返す.
メモリ確保失敗等, 異常がある場合, replicate は NULL を返す.
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio.NET
[3.3] 言語: C++
[4] 期限: 12月5日
[5] その他の制限:
0214デフォルトの名無しさん
2005/11/21(月) 09:55:34#include <new>
#include <algorithm>
template <class T>
class auto_array {
public:
typedef T element_type;
explicit auto_array(int size) : pointee_(new T[size]) {}
~auto_array() throw() { delete[] pointee_; }
T* get(int n = 0) const { return &pointee_[n]; }
T* release()
{
T* oldPointee = pointee_;
pointee_ = 0;
return oldPointee;
}
private:
T* pointee_;
};
template <class T>
T* replicate(T t, int n)
{
try {
auto_array<T> p(n);
std::fill_n(p.get(), n, t);
return p.release();
}
catch (std::bad_alloc&) {
return 0;
}
}
0215デフォルトの名無しさん
2005/11/21(月) 10:12:59>>213
の書き出しは
#include <iostream>
#include <string>
でおねがいします。
答えを書いてもらった後なのにすみません
0216デフォルトの名無しさん
2005/11/21(月) 10:38:13初級C言語
[2] 問題文(含コード&リンク):
1から500までの整数から、3の倍数を1行に10個ずつ表示するプログラムを書きなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: 学校のpcなんでわかりません
[3.3] 言語: C
[4] 期限: 2005年11月22日12:40まで
[5] その他の制限: for文を使えと指示されました。
初歩の初歩で申し訳ないんですけど、馬鹿文系の私をどなたか助けて下さい。
0217デフォルトの名無しさん
2005/11/21(月) 10:41:43#include <stdio.h>
int main(void)
{
int i, j=0;
for (i=3;i<500;i=i+3) {
if (++j > 10) {
putchar('\n');
j = 0;
}
printf("%d ", i);
}
return 0;
}
脳内コンパイラだからエラーでるかもしれん
しかし文系でもCやるんだな
0218デフォルトの名無しさん
2005/11/21(月) 10:42:48死ねよ
0219デフォルトの名無しさん
2005/11/21(月) 11:22:02iostream も string も使わないじゃん。何で必要なんだよ?
0220デフォルトの名無しさん
2005/11/21(月) 11:31:26即レスありがとうございます。学校行ったら実行してみます。
0221デフォルトの名無しさん
2005/11/21(月) 11:39:38つーか、足したきゃ自分で勝手に足せよ。
0222デフォルトの名無しさん
2005/11/21(月) 11:54:00[2] 問題文:
このプログラムで
#include <iostream>
using namespace std;
int main()
{
Quadratic q1(1,2,3);
for(double i=0; i < 10 ; i += 0.5)cout << q1(i) << endl;
return 0;
}
出力が
3 4.25 6 8.25 11 14.25 18 22.25 27
32.25 38 44.25 51 58.25 66 74.25 83 92.25 102 112.25
となるようにクラスQuadraticの定義とそれを実行するためのmain文を書いて下さい. ただし, Quadraticは二次式を表すクラスです.
この場合, q1は f(x) = 1*x*x + 2*x + 3 を意味します.
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio.NET
[3.3] 言語: C++
[4] 期限: 12月5日
[5] その他:
0223デフォルトの名無しさん
2005/11/21(月) 11:56:35書き忘れ
数字の出力は横ではなく縦一列でかまいません。
0224167
2005/11/21(月) 12:24:21bcc でも gcc でもとりあえずそのように動いてくれれば仕様はどんなものでも良いです。
宿題なのでホント動いてくれるコードならなんでも・・・。
bcc なら winsock ですし gcc なら sys/sock ですし。出来れば bcc がよいと言う意味で bcc とは書きましたが。
0225デフォルトの名無しさん
2005/11/21(月) 12:56:39とりあえず作って見たけどこんな感じでいいのかな。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1128.zip
0226デフォルトの名無しさん
2005/11/21(月) 13:03:13// main()はそのままでいいんじゃないの?
struct Quadratic {
Quadratic(double a, double b, double c) : a(a), b(b), c(c) {}
double operator()(double x) {return a * x * x + b * x + c;}
private:
double a, b, c;
};
0227デフォルトの名無しさん
2005/11/21(月) 13:03:36[2] 問題文(含コード&リンク):
1, 1/2, 1/3, 1/4, ..., 1/100の値をそれぞれ
配列に保存し、保存した値を全て足し合わせること
によって、
1 + 1/2 + 1/3 + ... + 1/100
を求めるプログラムを書きなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11月23日12:00まで
[5] その他の制限: お願いします
0229デフォルトの名無しさん
2005/11/21(月) 13:42:26int main(void){
int i;
double n[100], sum = 0.0;
for (i = 0; i < 100; i++){
n[i] = (double)1 / (i + 1);
sum = sum + n[i];
}
printf("%f\n", sum);
return 0;
}
0230むぅ
2005/11/21(月) 13:51:17[2] 問題文(含コード&リンク):ファイルを読み込み、空白が早く現れる順に各行を並べ替えるプログラムを作成したいと思います。
空白とはスペース記号 0x20 とタブ 0x9 を意味します。空白の無い行は 0 番目に空白が現れたことにして下さい。
以下の手順にしたがって作成
�@始めに文字列を入れたら最初に空白が来る位置を求める関数を作りたいと思います。
その関数をテストするための文字列をいくつか作り、関数が出力しなければいけない値をそれぞれ求めなさい。
�A文字列を入れたら最初に空白が来る位置を求める関数を作りなさい。但し、空白で始まる文字列には 1,
空白がなければ 0 を返しなさい。
次に題意を満たすプログラムを作成しようと思います。そのプログラムをテストするようなファイルをいくつか作りなさい。
そして完成したプログラムが出力すると予想した値を書きなさい。
�B上で作成した関数を利用して、題意を満たすプログラムを実際に作成しなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc 2.9
[3.3] 言語: C,C++
[4] 期限: [2005年11月30日12:00まで
[5] その他の制限: ファイルのサイズに上限を設けてはいけません。
何 MB のファイルでも読めるようになってなければいけません。
(配列は使うなということですか…)
但し、一行の文字制限が無いと入力バッファの処理が複雑になる場合、一行を高々 80 文字と仮定し、
一行を表す文字列としてだけ配列を使っても良い。
長くなってしまい申し訳ありません。
よろしくお願いします。
0231デフォルトの名無しさん
2005/11/21(月) 14:08:20{
int a, b;
char* space = strstr(" ", pline);
char* tab = strstr("\t", pline);
if(space && tab)
{
a = space - pline;
b = tab - pline;
return min(a, b);
}
else if(spacel)
return space - pline;
else if(tab)
return tab - pline;
retrun 0;
}
空白位置を返す関数
こうですか?わかりません
0232& ◆R7PNoCmXUc
2005/11/21(月) 14:34:07[2] 問題文(s構造体配列のプログラムであるがこのプログラムを正しく直しなさい)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: C
[4] 期限:11月20日
#include<stdio.h>
main(void){
int idx;
struct s_type{
int i;
long l;
}s[10];
for (idx=0;idx<10;idx++){
s.i[idx]=0;
s.l[idx]=0;
}
return 0;
}
どう直せばいいのか分かりません。
よろしくお願いします。
0233デフォルトの名無しさん
2005/11/21(月) 14:47:240234デフォルトの名無しさん
2005/11/21(月) 15:07:15s.i[idx]=0; → s[idx].i=0;
s.l[idx]=0; → s[idx].l=0;
0235デフォルトの名無しさん
2005/11/21(月) 15:16:12[2] 問題文(含コード&リンク): http://making-gold-princessmaki.hp.infoseek.co.jp/12.htm
通常課題2問、応用課題1問
[3] 環境
[3.1] OS: WinXp
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: C++
[4] 期限: 早ければ早いほど助かります。
0236デフォルトの名無しさん
2005/11/21(月) 15:18:26#include <stdlib.h>
int main(void)
{
int idx;
struct s_type {
int i;
long l;
} s[10];
for (idx = 0; idx < sizeof(s) / sizeof(*s); ++idx) {
s[idx].i = 0;
s[idx].l = 0;
}
return EXIT_SUCCESS;
}
0237デフォルトの名無しさん
2005/11/21(月) 15:24:04ダメ。
・(どうでもいいけど)typoがある。
・strstr()ではなくstrchr()を使うべき。つーかそもそも、もっと便利な関数がある。
・先頭が空白のときに1を返すと言う問題の仕様を満たしていない。
#問題も蛸なんだけどね。
0238デフォルトの名無しさん
2005/11/21(月) 15:28:28void initialize(int* acc)
{
int i;
for(i=0; i < 5; i++)
acc[i] = 0;
}
void dairy_input(int* acc)
{
int input, i;
const char name[5][] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク",};
for(i=0; i < 5; i++)
{
printf("%s: ", name[i]);
scanf("%d", &input);
printf("\n");
}
}
void dairy_output(const int* acc)
{
int i;
const char name[5][] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク",};
for(i=0; i < 5; i++)
printf("%s: %d\n", name[i], acc[i]);
}
あとマンドクセ('A`)
0239デフォルトの名無しさん
2005/11/21(月) 15:29:44{
int input, i;
const char name[5][] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク",};
for(i=0; i < 5; i++)
{
printf("%s: ", name[i]);
scanf("%d", &input);
acc[i] = input; // 抜けてた
printf("\n");
}
}
0240デフォルトの名無しさん
2005/11/21(月) 15:34:48ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1129.txt
0241デフォルトの名無しさん
2005/11/21(月) 15:42:080242デフォルトの名無しさん
2005/11/21(月) 15:45:250243デフォルトの名無しさん
2005/11/21(月) 15:47:390244デフォルトの名無しさん
2005/11/21(月) 15:49:40http://ex14.2ch.net/test/read.cgi/news4vip/1132550835/
この問題出してた奴が池沼なだけでしたか><
0245デフォルトの名無しさん
2005/11/21(月) 15:55:24[2] 問題文(含コード&リンク):複数の整数が格納されたnumbers.datというファイルから読み込んだ各整数を整数型の配列に順に格納していき、
それらの整数をバブルソートとマージソートを用いてそれぞれ降順で整列するプログラムを作成しなさい。
この時、バブルソートはbubblesortという関数を、マージソートはmargesortという関数を作成し、
そこで各アルゴリズムに基づいた整列作業を実行させなさい。また、2つの整数の交換作業はswap関数という
関数を作成しそこで実行させなさい。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:g++
[3.3] 言語:C++
[4] 期限:2005年11月22日12時まで
[5] その他の制限:よろしくお願いします。
0246デフォルトの名無しさん
2005/11/21(月) 16:54:51[2] 問題文(含コード&リンク):
自己参照構造体を使用したプログラムの作成:
キーボードより、名前と身長を次々に入力し、
名前の入力がリターンのみのとき、入力を終了し、身長の一番高い人の
名前と身長、身長の一番低い人の名前と身長及び入力された人数を出力する。
ただ、名前はスペース入力が可能で、身長は実数での入力が可能とする。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 2005年11月24日11:00まで
[5] その他の制限: 条件:関数の使用、mallocの使用。
また、リストの中身も出力する。リストの形式は自由。
氏名 ? ああ ああ
身長 ? 170
氏名 ? AA AA
身長 ? 175
氏名 ?
入力は 2人です。
一番低い人は ああ ああ さん 170センチです。
一番高い人は AA AA さん 175センチです。
出力はこのような形でお願いします。よろしくお願いします。
0247デフォルトの名無しさん
2005/11/21(月) 17:04:59[2] 問題文(含コード&リンク):引数4個のハノイの塔の再帰プログラムを作成しなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++6.0
[3.3] 言語:C
[4] 期限:2005年11月25日まで
[5] その他の制限:特に無し
よろしくお願いします
0248デフォルトの名無しさん
2005/11/21(月) 17:06:55エラーが出てしまいました。
error C2087: '<Unknown>' : 添字が不正です。
(14) : error C2117: 'りんご' : 指定された配列には、初期化子が多すぎます。
(14) : error C2117: 'みかん' : 指定された配列には、初期化子が多すぎます。
(14) : error C2117: 'イチゴ' : 指定された配列には、初期化子が多すぎます。
(14) : error C2117: 'ナシ' : 指定された配列には、初期化子が多すぎます。
(14) : error C2117: 'イチジク' : 指定された配列には、初期化子が多すぎます。
(28) : error C2087: '<Unknown>' : 添字が不正です。
: error C2117: 'りんご' : 指定された配列には、初期化子が多すぎます。
(28) : error C2117: 'みかん' : 指定された配列には、初期化子が多すぎます。
(28) : error C2117: 'イチゴ' : 指定された配列には、初期化子が多すぎます。
(28) : error C2117: 'ナシ' : 指定された配列には、初期化子が多すぎます。
(28) : error C2117: 'イチジク' : 指定された配列には、初期化子が多すぎます。
0249デフォルトの名無しさん
2005/11/21(月) 17:09:40×const char name[5][]
○const char name[][9]
0250デフォルトの名無しさん
2005/11/21(月) 17:09:550251デフォルトの名無しさん
2005/11/21(月) 17:10:40ttp://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Hanoi.html
0252デフォルトの名無しさん
2005/11/21(月) 17:14:04{
if (n > 0) {
hanoi(n - 1, a, c, b);
printf("Disk %d is moved from No.%d to %d\n", n, a, b);
hanoi(n - 1, c, b, a);
}
}
0253デフォルトの名無しさん
2005/11/21(月) 18:06:24課題の要求通りに動くにはこれだね。
>>250
がんばりました。なんで5-2とかもやってくれるとありがたい。
#include<stdio.h>
void initialize(int* acc, int* sum){
int i;
for(i=0; i < 5; i++) {sum[i] = 0;
acc[i] = 0;
}}
void dairy_input(int* acc)
{
int input, i;
const char name[][9] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
for(i=0; i < 5; i++)
{ printf("%s: ", name[i]);scanf("%d", &input);
acc[i] = input;printf("\n");
} }
void dairy_output(const int* acc, int *sum)
{ int i;
const char name[][9] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
for(i=0; i < 5; i++){sum[i] += acc[i];
printf("%s: %d\n", name[i], sum[i]);
}}
0254Ruby
2005/11/21(月) 20:45:45スレが見当たらないのでここで質問させてください。
すいませんです。
今学校でRubyを習っていて、
今日出た課題が解けなくて困っているのですが、
ここで質問は受け付けていただけるでしょうか…?
プログラムに関してはRubyが始めて習う言語であり
なんとも勝手が分かりません。
この質問自体トンチンカンだったらごめんなさい。
0255デフォルトの名無しさん
2005/11/21(月) 20:47:280256¥ ◆HndhSB4UQI
2005/11/21(月) 20:50:04[2] nの中からr個選ぶときの組み合わせの総数nCrを求めるプログラムを作成しなさい。ただし、関数名をcombinationと命名してやること。
(余裕のある人は、より大きな数を入力しても正しく表示されるように処理方法を工夫しなさい。)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C言語
[4] 期限: [2005年11月25日22:00まで]
[5] その他の制限: 標準ライブラリstdio.h・math.h・stdlib.hが使用可。
どうか宜しくお願いします。
0257デフォルトの名無しさん
2005/11/21(月) 20:50:53http://pc8.2ch.net/test/read.cgi/tech/1125587131/
とりあえず誘導。多分教えてくれるよ
0258Ruby
2005/11/21(月) 20:55:23ありがとうございます!感謝します!
0259デフォルトの名無しさん
2005/11/21(月) 22:39:46#include <stdio.h>
int conbinetaion(int,int);
int main()
{
printf("%d\n",conbination(7,2));
return 0;
}
int conbination(int n, int r)
{
if(r==0)return 1;
else return n*conbination(n-1,r-1);
}
0260デフォルトの名無しさん
2005/11/21(月) 22:43:03だった
0261デフォルトの名無しさん
2005/11/21(月) 23:17:47それ、ぜんぜん仕様を満たしてないやん
const char food[][9] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
void initialize(int acc[])
{
int i;
for(i=0; i < 5; i++) {
acc[i] = 0;
}
}
void dairy_input(int acc[])
{
int input, i;
for(i=0; i < 5; i++)
{
printf("%s: ", food[i]);
scanf("%d", &input);
acc[i] += input;
}
}
void dairy_output(const int acc[])
{
int i;
for(i=0; i < 5; i++)
{
printf("%s: %d\n", food[i], acc[i]);
}
}
0262デフォルトの名無しさん
2005/11/21(月) 23:33:15/* 課題5-2 */
int main(void) {
int account[3][5], i, input;
for(i=0;i<3;i++)initialize(account[i]);
printf("初期化を完了しました.\n");
while(1)
{
printf("売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):");
scanf("%d", &input);
if(input == 99)
{
printf("終了します\n");
break;
}
printf("本日の売上を入力してください.\n");
for(i=0;i<3;i++)
{
printf("【%s】\n",store[i]);
dairy_input(account[i]);
}
printf("<<本日までの売上>>\n");
for(i=0;i<3;i++)
{
printf("【%s】\n",store[i]);
dairy_output(account[i]);
}
}
return 0;
}
0263デフォルトの名無しさん
2005/11/21(月) 23:46:11最終的にこうなった
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1130.c
0264超初心者
2005/11/22(火) 00:00:26用語なし
期限は明日まで。
補足:windowsでlcc-win32っていうコンパイラ使ってます。chinou.3をインクルードしてCprint(x,y,文字列);っていうのを使うみたいなんですけど、お願いします!!
0265デフォルトの名無しさん
2005/11/22(火) 00:01:560266超初心者
2005/11/22(火) 00:04:440267デフォルトの名無しさん
2005/11/22(火) 00:08:17>>266
だろうな
0268超初心者
2005/11/22(火) 00:12:470269デフォルトの名無しさん
2005/11/22(火) 00:15:41ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1132.txt
0270デフォルトの名無しさん
2005/11/22(火) 00:16:340271デフォルトの名無しさん
2005/11/22(火) 00:26:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1131.c
259のように再帰を使った方がって…基本的なことを忘れてましたorz
/* intの n=33いけるかな */
int combination(int n,int r){
/* if(n<r || n<0||r<0) return -1;変な値は-1*/
if(n==r || r==0)return 1;/* 定義に基づいた簡略化 */
return combination(n-1,r)+combination(n-1,r-1);
}
関数呼び出しの関係上段違いに遅いけどな
0272名無し
2005/11/22(火) 02:39:21[2] 問題文:a^e (mod n)を効率よく求めるプログラムを作成せよ。ってやつです。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2005年11月22日22:00まで
[5] その他の制限:aとeの値は大きなものとする。
こんなんです。ヨロシクですー。
0273デフォルトの名無しさん
2005/11/22(火) 03:05:05ただしコンパイル通してない。
#include <stdio.h>
unsigned int powmod(unsigned int a, unsigned int e, unsigned int n)
{
unsigned int i, mod;
a %= n;
mod = 1;
for( i = 0x80000000 ; i ; i >>= 1 ) {
mod = (mod * mod) % n;
if( e & i ) mod = (mod * a) % n;
}
return mod;
}
int main(void)
{
// n <= 0xffff, e <= 0xffffffff で動作するはず
unsigned int a = 0x1234, e = 0xffffffff, n = 0x4321;
printf("%ud^%ud=%ud (mod %ud)\n", a, e, powmod(a, e, n), n);
return 0;
}
0274163
2005/11/22(火) 03:12:20ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1125.txt
返事が遅くなりすいません。
>202>203
これで宜しいでしょうか?
>>205
卒論ではないです。
1125.txtと共に宜しくお願いします。
0275デフォルトの名無しさん
2005/11/22(火) 05:01:340276デフォルトの名無しさん
2005/11/22(火) 11:04:03>>150さんのプログラムの
for (i = 0; moji[i]; ++i);
for (i--; i >= 0; --i) /* i--で\0の部分飛ばす */
の部分が、どういった動作をしているのかわかりません...。
説明していただける方いましたら、是非教えて欲しいです。
0277デフォルトの名無しさん
2005/11/22(火) 11:17:15よく流れを確認しないで答えるから間違ってるかもしれないが
for (i = 0; moji[i]; ++i);で\0まで何文字あるか確認して
for (i--; i >= 0; --i)で\0を除いた文字数でループ じゃないだろうか
0278デフォルトの名無しさん
2005/11/22(火) 11:18:40スレ違い。
文字列について調べろ。
0279ぼるじょあ ◆yBEncckFOU
2005/11/22(火) 11:19:500280デフォルトの名無しさん
2005/11/22(火) 11:26:31死ね。
特に意味はないんじゃないか?
While((--i) >= 0) ..
と書きかけてから書き直したとか。
0281デフォルトの名無しさん
2005/11/22(火) 11:27:42死ぬのは俺だ
0282ぼるじょあ ◆yBEncckFOU
2005/11/22(火) 11:35:00whileだと意味違った気がするけDO
0283デフォルトの名無しさん
2005/11/22(火) 12:07:54巣に帰RE!
0284ぼるじょあ ◆yBEncckFOU
2005/11/22(火) 12:12:160285デフォルトの名無しさん
2005/11/22(火) 12:21:26参照できるサイトありますか?わかる人いますか?ヒントください><
もう三ヶ月悩んでます、助けて
馬鹿な為ほんとプログラムわからないんです
0286デフォルトの名無しさん
2005/11/22(火) 12:27:10もうすこし実例挙げながら詳しく
あと>>1に沿って書いてくれるとありがたい
0287デフォルトの名無しさん
2005/11/22(火) 12:34:51for (i = 0; moji[i]; ++i); というか個人のクセで可能な限り
stdio.hで済ませようとするのでよくやります。最後の ; が嫌がらせ
と見られることがあるので、素直にstrlen()使った方がいいのかもしれません。
for (i--; i >= 0; --i)を
for ( ; i >= 0; --i)にして実行すればなぜ i-- 入れたのかが
わかると思います。あとは半角1文字ずつ後ろの方から出力して
printf("%c",moji[0]); (i=0最後の文字出力)
--i; (i=-1)
i>=0 が偽になりforループ終了 だと思います
この場合のi--と--iについては両方i--,--iに合わせても問題ないのですが
どっちのi--と聞かれるのがイヤかその時の気分かのどちらかです。
あとfor,whileに関してもその時のノリで決まります。do〜whileなんて
使わねーよとかforでなく普通にwhile使おうよとか1文字変数連発やめれなど、
そのまま使うと採点者が嫌がるように書いてます。その辺は依頼者の方で
多少修正した方がいいと思う。
0288デフォルトの名無しさん
2005/11/22(火) 12:58:33C++をやる気があるなら、どちらでもいいときには前置インクリメント(デクリメント)を
使う習慣をつけておいた方がいいよ。
#理由についてはスレ違いにつき割愛。
0289デフォルトの名無しさん
2005/11/22(火) 13:09:00i++
C:++
ほらなんか似てるじゃないか(・∀・)
0290デフォルトの名無しさん
2005/11/22(火) 13:12:380291デフォルトの名無しさん
2005/11/22(火) 13:22:50[2] 環境
[2.1] OS:Linux
[2.2] コンパイラ名とバージョン:gcc
[2.3] 言語:C
[3] 期限:11月25日14時
問題文:2題ですがすいません、どうかお願いします;
NO1:線形探索でデータを見つけるプログラムを作成し、実行せよ。ただし、対象とするデータ構造は
struct SportClub kaiin[]={555,"Yuki TERADA",222,"Kaho KANO",789,"Yuko FUKUDOME",444,"Seiko ANDO",456,"Mai YUKAWA",666,"Kyoko KAMIDOHZONO",123,"Yuasa OKADA",777,"Aya SAKATA",
111,"Yua SAITOU",333,"Noriko KIJIMA",0,"};と初期化すること。
<入出力例>
Please input ID#:777
ID#:777 Name:Aya SAKATA
Please input ID#:0
Not found!
NO2:
以下の仕様に従って、番兵採用の効果を確認できるプログラムを作成し、実行せよ。
<仕様>
1、会員番号を格納した配列
int t_array[]={555,222,789,444,456,666,123,777,111,333,55}を作る
2、上記配列の1つの要素に対し、それがNO1のデータ構造に格納されているかどうかを番兵非採用探索プログラムでチェックする。
この操作を1億回繰り返し、その繰り返しに要した時間を求める、ただし、目的とする番号が格納されている場合は、Found!を一度だけ表示させる、また、格納されていなかった場合も、Not Found!を一度だけ表示させる
3、上記2を全要素に対して行い、11名分(t_array[]の要素数文)の会員検索に要した時間を求める
4、上記2,3を番兵採用線形探索プログラムに対して行う
2題もお願いして大変恐縮ですがどうかお願いします;
0292デフォルトの名無しさん
2005/11/22(火) 13:24:43後置だとオブジェクトが複製されるからでしょ。
0293デフォルトの名無しさん
2005/11/22(火) 13:27:120294デフォルトの名無しさん
2005/11/22(火) 13:27:31いや俺Cしか知らんもんw
0295デフォルトの名無しさん
2005/11/22(火) 13:33:10なにその構造体宣言
いろいろおかしいぞ
0296291
2005/11/22(火) 13:36:27始まり
|
n←見つけたい会員番号
|
kaiin[10].id_num←n(番兵値)
|
i←0(配列先頭)
|
↑→→→→→→→|
↑ kaiin[i].id_num=nか?→-(YES)--↓
↑ |(NO) i=10(番兵)か?
↑←--------← i←i+1 |
↓←←←←(YES)←↓
↓ ↓
Not Foundを表示 (NO)
↓ ↓
↓←←←←←←←←nameを表示
↓
おわり
0297デフォルトの名無しさん
2005/11/22(火) 13:37:52配列か?とか思ってしまうかも
0298291
2005/11/22(火) 13:39:42う〜ん;問題文とか図とかそのままアップできればいいのですが、
アップの仕方わからないのです、でも問題文の写し間違えはありません;;
0299デフォルトの名無しさん
2005/11/22(火) 13:42:42ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1134.txt
0300デフォルトの名無しさん
2005/11/22(火) 13:46:44構造体宣言じゃなくてstruct SportClub[]型配列の宣言。
最後に"が一つ足りない点以外はおかしくないだろ。
0301デフォルトの名無しさん
2005/11/22(火) 13:51:05#include <stdio.h>
typedef struct{int id;char name[64];}SportClub;
int main(){
int _t;
SportClub* psc;
SportClub kaiin[] = {
555,"Yuki TERADA",
222,"Kaho KANO",
789,"Yuko FUKUDOME",
444,"Seiko ANDO",
456,"Mai YUKAWA",
666,"Kyoko KAMIDOHZONO",
123,"Yuasa OKADA",
777,"Aya SAKATA",
111,"Yua SAITOU",
333,"Noriko KIJIMA",
0,""};
while(1){
printf("please input ID#:");
scanf("%d",&_t);
psc=kaiin;
while(1){
if(psc->id == 0){
printf("not found!\n");
break;}
if(_t==psc->id){
printf("%s\n",psc->name);
break;
}psc++;}
}return 0;}
0302デフォルトの名無しさん
2005/11/22(火) 14:38:46#include <stdio.h>
int search(int); //番兵無し探索
int searchw(int);//番兵付き探索
#define ARRAYS 11
typedef struct{int id;char name[64];}SportClub;
SportClub kaiin[] = {
555,"Yuki TERADA",222,"Kaho KANO",789,"Yuko FUKUDOME",
444,"Seiko ANDO",456,"Mai YUKAWA",666,"Kyoko KAMIDOHZONO",
123,"Yuasa OKADA",777,"Aya SAKATA",111,"Yua SAITOU",
333,"Noriko KIJIMA",0,""};
int t_array[]={555,222,789,444,456,666,123,777,111,333,55};
int main(){
int (*pFunc)(int);
int ob = t_array[5];int i=0;
pFunc = search;
if(pFunc(ob)>0)printf("found\n");
else printf("not found\n");;
while(i++<100000000)pFunc(ob);
return 0;}
int search(int n){
int i;
for(i=0;i<ARRAYS && n!=kaiin[i].id;i++);
if(i<ARRAYS-1) return 1;
else return -1;}
int searchw(int n){
kaiin[ARRAYS-1].id=n;
int i=0;
while(kaiin[i++].id != n);
if(i<ARRAYS)return 1;
else return -1;}
0303デフォルトの名無しさん
2005/11/22(火) 14:39:41問題の意図がいまいち掴みきれんので
あってるかどうかはわからん
実行時間は/usr/bin/timeかなんかで計るんだろ
0304デフォルトの名無しさん
2005/11/22(火) 14:39:57先生、うちのしょぼい環境でも前者37秒、後者37秒で有意差が得られません。
秒未満の精度の時刻測定は勝手にやってもらうってことでよければソース貼りますけど。
0305デフォルトの名無しさん
2005/11/22(火) 14:56:06うちのマシンだと>>302のを用いて
番兵ありだと4.093000秒
番兵無しだと4.609000秒
プログラム自体が間違ってるんじゃ?
0306デフォルトの名無しさん
2005/11/22(火) 14:59:02printf("%3f %f\n",s,ins[i]);
↑でsの値とins[i]に格納した値を出力しようとしたら
0.001000 1.#QNANO
と出力されてしまいました。
どうゆうことでしょうか?
問題じゃなくてすいません。
0307デフォルトの名無しさん
2005/11/22(火) 15:03:44すれ違いじゃ
0308306
2005/11/22(火) 15:06:100309デフォルトの名無しさん
2005/11/22(火) 15:12:47[2] 問題文(含コード&リンク):
二つの(整数型)配列とその長さを引数とし、その共通の要素を新たな配列に格納するプログラムを作りなさい。
配列とその長さはmain関数で決めておくこととする。
[3] 環境
[3.1] OS: WindowsXP
[3.2] Borland C++ Compiler
[3.3] 言語: Cでお願いします
[4] 期限: 2005年11月23日09:20まで
[5] その他の制限: 特に制限なし
よろしくお願いします。
0310304
2005/11/22(火) 15:13:13日本語読めてます?
標準関数の範囲でプログラミングしたからどちらも37秒なんですが。
#37.000秒だとか37.000000秒だと書いていないのだが。
0311デフォルトの名無しさん
2005/11/22(火) 15:19:130312デフォルトの名無しさん
2005/11/22(火) 15:22:12特にキャッシュ
0313デフォルトの名無しさん
2005/11/22(火) 15:26:12time.h使えばもっと正確に出せるだろ
プログラムが間違ってるんじゃないか、と言われてムキになる>>304萌え
0314304
2005/11/22(火) 15:41:23time.hつーか、time()だと秒単位。
#clock()はCLOCKS_PER_SECが環境依存だと思って避けた。
で、むきになってw、rusage使ってみたら3%強の処理時間差が出た。
#約37.7sec対約36.4sec。
0315デフォルトの名無しさん
2005/11/22(火) 15:47:320316デフォルトの名無しさん
2005/11/22(火) 16:05:31[2] 問題文(含コード&リンク):3つの引数を取り、第1引数で指定されたint型の値を、第2引数で指定されたint型の値を基数として文字列に変換し、
第3引数で指定されたポインタが示す文字配列に格納する関数ltostr()を定義しなさい。
テストのためのmain()関数を記述したファイルに関数定義を記述すること。
ltostr()関数のプロトタイプ宣言、main()関数については変更を加えないこと。
(main関数は>>317に表示します)
第1引数の値は0以上の正の数、第2引数は2〜36とする。時間に余裕があれば、第1引数が負の場合に先頭に"-"(マイナス)を付けるように拡張せよ。
実行例:
./radix 10 16 4096 1024 2047
4096(10) -> 1000(16)
1024(10) -> 400(16)
2047(10) -> 7FF(16)
./radix 16 10 1000 400 7FF
1000(16) -> 4096(10)
400(16) -> 1024(10)
7FF(16) -> 2047(10)
[3] 環境
[3.1] OS: Vine Linux
[3.2] コンパイラ名とバージョン: GNOME 1.4.0.4
[3.3] 言語: C
[4] 期限: 2005年11月24日18:00まで
[5] その他の制限: とくに指示されていません。
もしよろしければ宜しくお願いします。
0317316 ◆cFdF91bb3U
2005/11/22(火) 16:08:13main関数を下に記載します。
#include <stdio.h>
#include <stdlib.h>
/* 第1引数のint型の数値を第2引数を基数として第3変数として指定した
配列に格納する関数 */
void ltostr( int number, int base, char *buf );
int main( int argc, char *argv[] ) {
int base1 = 10;
int base2 = 10;
int c;
char buf[256];
if ( argc < 4 ) {
fprintf( stderr, "Usage: %s [base1] [base2] [number]...\n", argv[0] );
exit(1);
}
else {
base1 = strtol( argv[1], NULL, 10 ); /* 第1引数をint型に直す */
base2 = strtol( argv[2], NULL, 10 ); /* 第2引数をint型に直す */
}
c = 3;
0318316 ◆cFdF91bb3U
2005/11/22(火) 16:09:25while ( c < argc ) {
ltostr( strtol( argv[c], NULL, base1 ), base2, buf );
printf( "%s(%d) -> %s(%d)\n", argv[c], base1, buf, base2 );
c++;
}}
よろしくおねがいします。長文失礼しました。
0319デフォルトの名無しさん
2005/11/22(火) 16:16:12#include <stdio.h>
int* compare(int[],int,int[],int);
int main()
{
int array1[10]={3,6,4,2,7,32,16,31,64,34};
int array2[7]={53,32,17,36,4,99,34};
int *dest,*p;
int i=0;
dest = compare(array1,10,array2,7);
while(dest[i] != -1)printf("%d\n",dest[i++]);
free(dest);
return 0;
}
int* compare(int ary1[],int len1,int ary2[],int len2)
{
int i,j,c=0;
int* buf = (int*)malloc(sizeof(int)*64);
for(i=0;i<64;i++)buf[i]=-1;
for(i=0;i<len1;i++){
for(j=0;j<len2;j++){
if(ary1[i]==ary2[j]){
buf[c++] = ary1[i];
}
}
}return buf;
}
こんな感じか?
0320デフォルトの名無しさん
2005/11/22(火) 16:27:28void ltostr( int number, int base, char *buf ){
char code[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int i=0;
while(number >= 1){
buf[i++] = code[number%base];
number/=base;
}
buf[i] = '\0';
strrev(buf);
}
0321名無し
2005/11/22(火) 16:28:59#include <stdio.h>
#define M_DIM (3)
void sol_gj(double [][M_DIM+1],int);
void sol_g(double [][M_DIM+1],int);
int main(void) {
int n=M_DIM,k,j;
double a[M_DIM][M_DIM+1],aa[M_DIM][M_DIM+1];
for(k=0;k<n;k++){
printf("(%d)ax+by+cz=d a,b,c,d?",k+1);
scanf("%lf,%lf,%lf,%lf",&a[k][0],&a[k][1],&a[k][2],&a[k][3]);
}
for(k=0;k<n;k++)
for(j=0;j<n+1;j++)
aa[k][j]=a[k][j];
sol_gj(a,n);
for(k=0;k<n;k++)
for(j=0;j<n+1;j++)
a[k][j]=aa[k][j];
sol_g(a,n);
return 0;
}
0322デフォルトの名無しさん
2005/11/22(火) 16:30:23static void ltos(int number, int base, char * buf)
{
static const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char * p;
if (number / base) {
ltos(number / base, base, buf);
}
p = strchr(buf, '\0');
p[0] = digits[number % base];
p[1] = '\0';
}
void ltostr(int number, int base, char * buf)
{
if (number < 0) {
buf[0] = '-';
ltostr(-number, base, buf + 1);
} else {
buf[0] = '\0';
ltos(number, base, buf);
}
}
0323名無し
2005/11/22(火) 16:35:21void sol_gj(double a[][M_DIM+1],int n){
int k,j,i;
double b;
char l[]="xyz";
for(k=0;k<n;k++) {
b = a[k][k];
for(j=0;j<n+1;j++) a[k][j] /= b;
for(i=0;i<n;i++){
if(i==k) continue;
b = -a[i][k];
for(j=0;j<n+1;j++) a[i][j] += (b*a[k][j]);
}
}
printf("Gauss-Jordan\n");
for(i=0;i<n;i++)
printf("%c=%f\n",l[i],a[i][n]);
}
0324名無し
2005/11/22(火) 16:36:24void sol_g(double a[][M_DIM+1],int n){
int k,j,i;
double b;
char l[]="xyz";
for(k=0;k<n;k++) {
b = a[k][k];
for(j=0;j<n+1;j++) a[k][j] /= b;
for(i=k+1;i<n;i++){
b = -a[i][k];
for(j=0;j<n+1;j++) a[i][j] += (b*a[k][j]);
}
}
for(k=n-2;k>=0;k--) {
for(j=k+1;j<n;j++)
a[k][n] -= (a[k][j] * a[j][n]);
}
printf("Gauss\n");
for(i=0;i<n;i++)
printf("%c=%f\n",l[i],a[i][n]);
}
0325名無し
2005/11/22(火) 16:37:02void sol_g(double a[][M_DIM+1],int n){
int k,j,i;
double b;
char l[]="xyz";
for(k=0;k<n;k++) {
b = a[k][k];
for(j=0;j<n+1;j++) a[k][j] /= b;
for(i=k+1;i<n;i++){
b = -a[i][k];
for(j=0;j<n+1;j++) a[i][j] += (b*a[k][j]);
}
}
for(k=n-2;k>=0;k--) {
for(j=k+1;j<n;j++)
a[k][n] -= (a[k][j] * a[j][n]);
}
printf("Gauss\n");
for(i=0;i<n;i++)
printf("%c=%f\n",l[i],a[i][n]);
}
x=1,y=2,Z=3となるように式を入れても答えがx=1.3*****,y=1.5*****,z=3.2*****などになり小数の値になります。
どこがおかしいか教えていただけないでしょうか?
0326デフォルトの名無しさん
2005/11/22(火) 16:38:02strrev()は標準じゃないし、そのltostr()は0を変換できない。
0327デフォルトの名無しさん
2005/11/22(火) 16:42:35void ltostr( int number, int base, char *buf ){
char code[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int i=0;
if(number<0){
buf[i++]='-';
number=-number;
}
if(number == 0)buf[i++]='0';
while(number > 0){
buf[i++] = code[number%base];
number/=base;
}
buf[i] = '\0';
if(buf[0]=='-')buf++;
strrev(buf);
}
strrevと同等の機能をもつものなんて簡単に作れるが割愛
0329デフォルトの名無しさん
2005/11/22(火) 16:44:57printf("%c=%f\n",l[i],a[i][n]);
ここがおかしいよ
いや、おかしくはないけど
0330329
2005/11/22(火) 16:45:360331デフォルトの名無しさん
2005/11/22(火) 16:48:24どうもありがとうございました。
0332デフォルトの名無しさん
2005/11/22(火) 16:56:23i方向に200j方向にも200の行列があるです、(数値地図50メートルメッシュ)。この数字を四点(iとi+1とjとj+1)での高さの値が一番高い所から、低いほうへ(→)矢印を引きたいのです
これをFor文で繰り返すことにより、(iとjを200)4万個引矢印を描写したいのです
わかりにくい文ですみませんが、どうかお願いします。
0333デフォルトの名無しさん
2005/11/22(火) 17:01:50ここは宿題スレ。宿題でないならさようなら。
宿題なら>1参照。
どうでもいいが、それだけ判っていて3ヶ月も掛かって書けないなら諦めた方が早いぞ。
0334デフォルトの名無しさん
2005/11/22(火) 17:03:00今試しにやってみたらちゃんとした結果が出たよ
0335316 ◆cFdF91bb3U
2005/11/22(火) 17:06:38ここで提案してくださったプログラムを実行したのですが、コンパイルエラーになってしまいました〇П_
0336デフォルトの名無しさん
2005/11/22(火) 17:08:12ひょっとして
□□□□□□
□□□□□□
□□□□□□
こういう単純マトリクスを書こうとしてるの?
だとしたら大人しくCやC++をやり直したほうがいいぞ
0337デフォルトの名無しさん
2005/11/22(火) 17:09:04コンパイルエラーの中身も書かずにどう対処しろと?
0338デフォルトの名無しさん
2005/11/22(火) 17:12:130339デフォルトの名無しさん
2005/11/22(火) 17:15:59いや、
→→↓→\↓
→/↑↓←↓
みたいのを書きたいのだろう。
0340デフォルトの名無しさん
2005/11/22(火) 17:18:05コンパイルエラーなら実行できないだろ。
それに、>320、>327はstrrev()を自作する必要があるぞ。
あ、>322も#include <string.h>が必要だな。
0341デフォルトの名無しさん
2005/11/22(火) 17:19:35そもそも200*200って画面収まらんだろうどうすんだ?
もすかすてAPIでも使って描きたいん?
0342デフォルトの名無しさん
2005/11/22(火) 17:38:57よくわからんが、例えば
0 8
1 4
なら→
2 5
3 9
なら\
とかってしたいのか?
0 0
3 4
とかだったらどうするんだ?
0343デフォルトの名無しさん
2005/11/22(火) 17:46:500344デフォルトの名無しさん
2005/11/22(火) 17:58:04卒研か何かだったら大笑いだな。
0345322
2005/11/22(火) 17:59:21strchr()も使う必要なかった。
static char * ltos(int number, int base, char * buf)
{
static const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (number / base) {
buf = ltos(number / base, base, buf);
}
buf[0] = digits[number % base];
return buf + 1;
}
void ltostr(int number, int base, char * buf)
{
if (number < 0) {
buf[0] = '-';
ltostr(-number, base, buf + 1);
} else {
ltos(number, base, buf)[0] = '\0';
}
}
0346デフォルトの名無しさん
2005/11/22(火) 18:00:1034なら←です
書き方悪くてみすません、これでも一生懸命書き込んだですが。とにかく書きにくいものでして
とりあえず↑の矢印を縦、横20ずつで400個かくプログラムわかれば教えてください(*_*)おながいします。神様
0347デフォルトの名無しさん
2005/11/22(火) 18:05:54>>333
いいかげんうざい。
0348デフォルトの名無しさん
2005/11/22(火) 18:08:42極端な話
10
01
なら→をどうするのか。
0349デフォルトの名無しさん
2005/11/22(火) 18:08:43for(i=0;i<20;i++){
for(j=0;j<20;j++)printf("↑");
printf("\n");
}
0350デフォルトの名無しさん
2005/11/22(火) 18:12:0234なら←です
まじわかんねぇよ
課題自体が意味不明な場合が多いから
宿題以外のものはご法度なんだよ
0351伝説新人タクシ
2005/11/22(火) 18:57:33ところでそいつ、マルチしてたぞ。
http://pc8.2ch.net/test/read.cgi/tech/1131443284/l50
初心者にVisual C++を教えるスレ
>(数値地図から)200×200の数の行列?を読み込まし、
>説明もむずかしい(◎-◎;)
日本語も数学もプログラムもできない (*_*) なんだろう。
質問していながら本人がわかってないカホリがするぜwww
そんな都合のいいエスパーがいないことを教えてやれよ。
0352伝説新人タクシ
2005/11/22(火) 19:01:020353デフォルトの名無しさん
2005/11/22(火) 19:07:08悩むだけ無駄だろ 諦めた方がいいと思う
0354ぼるじょあ ◆yBEncckFOU
2005/11/22(火) 19:32:010355デフォルトの名無しさん
2005/11/22(火) 20:21:10|っミ■
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1135.zip
やっつけ。矢印の表示の仕方は環境依存だからどうするのかはそっちで任せる
0356デフォルトの名無しさん
2005/11/22(火) 20:51:59先程実行してみたところ、エラーがでて、
私には到底分かりそうにないです。
できれば教えて頂けないでしょうか。
0357デフォルトの名無しさん
2005/11/22(火) 21:18:34>>299じゃないけどWinXP+gcc(MinGW)でコンパイル通るようにはした
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1136.c
訂正@**付近でいじってる
C++型のコメントをC型にした
windowsなので表などの0x5c対策を小手先レベルでした
未定義の変数をやっつけで宣言した
0358デフォルトの名無しさん
2005/11/22(火) 21:19:26エラーメッセージすら書かないのではどうしょうもないだろう
メッセージがないなら、ない、と書け
我々はまた神でもないのだから
0359デフォルトの名無しさん
2005/11/22(火) 22:06:43#include <string.h>
をコピペするのミスった。
コンパイルエラーならこれかも。
0360デフォルトの名無しさん
2005/11/22(火) 22:39:17[2] 問題文(含コード&リンク):
2〜7文字のランダムな文字列を、リダイレクションによって読み込み、出力せよ
なお、下のような構造体[data]を使うこと。
struct data{
char str[8];
};
提示する文字列データは5千個しかないが、最大50万個まで対応できるようにしておくこと。
[3] 環境
[3.1] OS:Lnux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:できるなら明日まで
[5] その他の制限:
5千個の文字列データ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1137.txt
本来は、格納された文字列を使って文字列のソートを行う問題なのですが
ソートの部分は何とかなりそうなので読み込みの部分をお願いします。
0361名無し
2005/11/22(火) 22:50:34小数でなく正確な値がでましたか?
0362356
2005/11/22(火) 22:53:08>>299さんの方のエラーがエラー
E2141 tr070.c 21: 宣言の構文エラー
警告 W8065 tr070.c 82: プロトタイプ宣言のない関数 'setFormat3' の呼び出し(関数 a
ddMList3 )
警告 W8065 tr070.c 99: プロトタイプ宣言のない関数 'setFormat3' の呼び出し(関数 a
ddMList3 )
エラー E2141 tr070.c 150: 宣言の構文エラー
*** 2 errors in Compile ***
>>357さんの方のエラー
エラー E2293 tr070.c 15: ) が必要
警告 W8065 tr070.c 158: プロトタイプ宣言のない関数 'memcpy' の呼び出し(関数 setF
ormat3 )
*** 1 errors in Compile ***
0363デフォルトの名無しさん
2005/11/22(火) 22:56:40リダイレクションってのはな
標準入力の変わりにファイルから入力データを読み込むんだ
つまりscanf使えばそのままリダイレクションで読み込める
0364デフォルトの名無しさん
2005/11/22(火) 23:03:25[2] 問題文(含コード&リンク): IF文と無限ループを使って、
10人の点数の上位3人(na1is ,na2is ,na3is )
求める。
[3] 環境
[3.1] OS: うに
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: C
[4] 期限: 2005年11月23日12時まで
[5] その他の制限:習ったばっかりなので、難しいことはあまりわかりません。
よろしくお願いします
0365デフォルトの名無しさん
2005/11/22(火) 23:08:02せめて原生動物以外にしようよ...
0366デフォルトの名無しさん
2005/11/22(火) 23:10:02#include <stdio.h>
int main(){
int na1is,na2is,na3is;
int score[] = {37,49,93,25,63,14,56,83,21,15};
int i;
na1is=na2is=na3is=0;
for(i=0;i<10;i++){
if(na1is<score[i]){
na3is=na2is;
na2is=na1is;
na1is=score[i];}
else if(na2is<score[i]){
na3is=na2is;
na2is=score[i];}
else if(na3is<score[i])
na3is=score[i];}
}
printf("1st:%d\n2nd:%d\n3rd:%d\n",na1is,na2is,na3is);
return 0;
}
あえてソートせずにやってみた
0367デフォルトの名無しさん
2005/11/22(火) 23:12:55アドバイスありがとうございます!やっぱりそれで大丈夫なんですね…
一度ちょっと試してみようと思ったんですけど、上手く書けなくて…
#include<stdio.h>
struct data{
char str[8];
};
main(){
struct data D[500000];
int i=0, j;
while(1){
if() break;
scanf("%s",D[i].str);
i++;
}
for(j=0; j<i; j++) printf("%s",D[j].str);
}
こんな風に書いてみたんですけど、どうしてもifの条件の書き方が分からないんです…
他にもおかしい箇所がありましたら、手直しおねがいします。
0368デフォルトの名無しさん
2005/11/22(火) 23:20:43・EOF(ctrl-z)で終了する
0369デフォルトの名無しさん
2005/11/22(火) 23:21:12scanfの返り値を使えば良い。
if(scanf("%s",D[i].str)!=1) break;
あと、本質的じゃないけどDの定義も下のように変更したほうが良い。
static struct data D[500000];
# 動的確保のほうがより良いけど
0370デフォルトの名無しさん
2005/11/22(火) 23:25:27変数に代入するのはscanfでいいのだろうけど
リダイレクトで最大50万件の不定数のデータを扱うので
fopenみたいに1回開いて件数把握することができない
おそらく初めに struct data hoge[500000];と宣言できるかも不明
ひょっとしたら50万件mallocでとってしまうのがいいのかもしれない。
また
typedef struct data DAT;
DAT **temp;
temp = (DAT**)calloc(100,sizeof(DAT*));
for(i = 0; i < 100; i++){
*(temp+i) = (DAT*)calloc(5000,sizeof(DAT));
for(j=0;j<5000;j++)
scanf(ry
}
として5000件ごとに新たに領域を確保していくか
(forよりwhileの方が適してるとか管理が大変だったりするが
[123456] → [24][3456]とかしなきゃならないし)
勘違いだったらすまん
0371デフォルトの名無しさん
2005/11/22(火) 23:34:46すいません。whhileも条件に入れて、もらえますか?
0372デフォルトの名無しさん
2005/11/22(火) 23:39:45int main(){
int na1is,na2is,na3is;
int score[] = {37,49,93,25,63,14,56,83,21,15};
int i=0;
na1is=na2is=na3is=0;
while(1){
if(na1is<score[i]){
na3is=na2is;
na2is=na1is;
na1is=score[i];}
else if(na2is<score[i]){
na3is=na2is;
na2is=score[i];}
else if(na3is<score[i])
na3is=score[i];
if(i++==9)break;
}
printf("1st:%d\n2nd:%d\n3rd:%d\n",na1is,na2is,na3is);
return 0;
}
そんくらいてめーでやれよ
0373デフォルトの名無しさん
2005/11/23(水) 00:01:4450*8MBものメモリが必要なわけで
それはおいといて
とりあえず
while(fgets(buf,8,stdin)!=NULL)sscanf(buf,"%s\n",D[i++].str);
とでもすればいい
0374デフォルトの名無しさん
2005/11/23(水) 00:02:32500*8KBだな
0375デフォルトの名無しさん
2005/11/23(水) 00:09:55[2] ttp://www.iba.k.u-tokyo.ac.jp/~iba/C/report1.html
[3] 環境
[3.1] Windows
[3.2] gcc
[3.3] C
[4] 11/24
さっぱりわからなくてお手上げ状態です
どうかお助けください
どれか2つでいいとのことなので1と2or4でかまいません
0376デフォルトの名無しさん
2005/11/23(水) 00:16:53それだと一行が7文字のときに困る。
0377デフォルトの名無しさん
2005/11/23(水) 00:26:32http://pc8.2ch.net/test/read.cgi/tech/1130431335/776
じゃまずいのかなぁ…確かにむずいけどね
0378デフォルトの名無しさん
2005/11/23(水) 00:30:58ここで研究室の名前を晒しておいて、ここで寄せられた回答をそのまま持っていく積もりかね。
当然、伊庭先生に筒抜けなんだがなぁ。
0379デフォルトの名無しさん
2005/11/23(水) 00:52:28通報しときまs(ry
0380デフォルトの名無しさん
2005/11/23(水) 01:00:383.14・・じゃなくて2.73・・・
になる・・・
うーんどこがおかしいんだろ
0381デフォルトの名無しさん
2005/11/23(水) 01:56:24[2] 問題文:行と列を入力し、for文を使い模様を表示するプログラム
実行例
行?7
列?9
━|━|━|━|━
|━|━|━|━|
━|━|━|━|━
|━|━|━|━|
━|━|━|━|━
|━|━|━|━|
━|━|━|━|━
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 11月23日22時まで
[5] その他の制限:for文を使う
0382デフォルトの名無しさん
2005/11/23(水) 02:11:212.73てネピア定数じゃね?
0383デフォルトの名無しさん
2005/11/23(水) 02:13:07int main(){
int i, j, x, y;
char ptn[2][3] = {"━", "|"};
printf("行?");
scanf("%d", &y);
printf("列?");
scanf("%d", &x);
for(i = 0;i < y;i++){
for(j = 0;j < x;j++){
printf("%s", ptn[(i + j) % 2]);
}
printf("\n");
}
return 0;
}
0384デフォルトの名無しさん
2005/11/23(水) 02:19:52あ、いや、原因は分かってちゃんと円周率に近い値を出すようにはなったんだが
針の角度を三角関数を用いずに一様に求める方法が分からん
針のY軸への射影を一様にすると期待通りの値が出ない
マクローリン展開でもしろってか?
0385デフォルトの名無しさん
2005/11/23(水) 02:25:40マクローリン展開で解を出しちゃったらシミュレーションの意味がないじゃんw
0386デフォルトの名無しさん
2005/11/23(水) 02:29:46while(1){
x=random()-RAND_MAX/2, y=random()-RAND_MAX/2;
if(x*x+y*y>RAND_MAX*RAND_MAX/4) continue;
r=sqrt(x*x+y*y);
s=y/r, c=x/r;
// 他の処理
}
これで三角関数使わなくても角度(というかsin,cos)出るよ。均等割合くらいで。
0387デフォルトの名無しさん
2005/11/23(水) 02:30:08三角関数や円周率は使ってはいけないが
cosxと同じような分布をもつものが必要なんだよ
0388デフォルトの名無しさん
2005/11/23(水) 02:44:36それでやってみたけどやっぱりうまくいかん
とりあえずcosバージョンを載せとく
void subject2(int L,int N, unsigned int seed)
{
srand(seed);
double M=0;
double sy,dy;
int i;
double x,y,r,c;
for(i=0;i<N;i++){
sy=2.0*L*rand()/RAND_MAX;
dy = L*cos(rand());
if((sy <= 0 && sy+dy >= 0)||(sy >= 0 && sy+dy <= 0)||
(sy <= L && sy+dy >= L)||(sy >= L && sy+dy <= L)||
(sy <= 2*L && sy+dy >= 2*L)||(sy >= 2*L && sy+dy <= 2*L))M++;
}
printf("%lf\n",(2*N)/M);
}
0389デフォルトの名無しさん
2005/11/23(水) 02:48:38[2] 問題文(含コード&リンク):
図のような矢がすり模様を出力するプログラムを 繰り返しと条件分岐,および一文字出力関数 putc() または putchar() を用いて作れ。
矢がすりの大きさや、模様の傾き度合い等は、変数を使い自由に値を指定できるようにすること。
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: C
[4] 期限:11/25
0390デフォルトの名無しさん
2005/11/23(水) 02:53:58***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
0391デフォルトの名無しさん
2005/11/23(水) 03:00:020392デフォルトの名無しさん
2005/11/23(水) 03:00:300393デフォルトの名無しさん
2005/11/23(水) 03:03:540394デフォルトの名無しさん
2005/11/23(水) 03:11:290395デフォルトの名無しさん
2005/11/23(水) 03:37:22こうかな
#include <stdio.h>
int main(int argc,char** argv)
{
int tend=1; //アローの傾き
int arrows=3; //折り返し回数
int width = 3; //ラインの幅
int col = 4; //アローの高さ
int row = 4; //アローの横幅
int w,c,r,x,dx,s;
dx = 1;
for(r=0,x=1;r<(row-1)*2*arrows;r++,x+=dx){
if(x==row-1)dx=-dx;
if(x==0)dx=-dx;
for(s=0;s<x*tend;s++)printf(" ");
for(c=0;c<col;c++){
for(w=0;w<width;w++)printf("*");
for(w=0;w<width;w++)printf(" ");
}
printf("\n");
}
return 0;
}
0396デフォルトの名無しさん
2005/11/23(水) 03:40:22int tend=1; /* アローの傾き */
int arrows=3; /* 折り返し回数 */
int width = 4; /* アローの横幅 */
int col = 4; /* アローの本数 */
int row = 4; /* アローの縦幅 */
うまく説明できん
0397デフォルトの名無しさん
2005/11/23(水) 03:54:01#include <stdio.h>
int main(int argc,char** argv)
{
int tend=3; /* アローの傾き */
int refs=2; /* 折り返し回数 */
int width = 4; /* アローの横幅 */
int size = 6; /* アローの大きさ */
int arrows = 3; /* アローの本数 */
int r,w,i,s,a,x,dx=1;
for(r=0,x=1;r<(size-1)*2*refs;r++,x+=dx)
{
if(x==size-1)dx=-dx;
if(x==0)dx=-dx;
for(i=0;i<x*tend;i++)printf(" ");
for(a=0;a<arrows;a++)
{
for(w=0;w<width;w++)printf("*");
for(s=0;s<size;s++)printf(" ");
}
printf("\n");
}
return 0;
}
0398デフォルトの名無しさん
2005/11/23(水) 04:01:30適当やってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1138.txt
0399389
2005/11/23(水) 04:17:43参考にしつつ明日自分でもう一度考えてみます。
0400デフォルトの名無しさん
2005/11/23(水) 04:38:33とりあえず適当に作った課題4
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1139.c
0401デフォルトの名無しさん
2005/11/23(水) 04:41:08適当作りすぎたせいかCOMが必ず勝つプログラムじゃなくて
COMが必ず負けるプログラムになっちゃったwww
まぁいいか
0402デフォルトの名無しさん
2005/11/23(水) 04:42:190403デフォルトの名無しさん
2005/11/23(水) 04:45:22COMの番です.
COM=>Lから32個取りました.
プレイヤーの勝ちです.
なにこいつwwwwwwwww
0404デフォルトの名無しさん
2005/11/23(水) 04:47:48テイルズの意思取りは最後の一個を取ったほうが負けだが
この場合全ての石を0にしたほうが勝ちのようだぞ
0405デフォルトの名無しさん
2005/11/23(水) 05:31:19伊庭さんに筒抜けかどうかはともかくとして少なくとも TA はいますお。
採点は TA がやるので…… ry
0406デフォルトの名無しさん
2005/11/23(水) 06:07:260407デフォルトの名無しさん
2005/11/23(水) 06:11:420408デフォルトの名無しさん
2005/11/23(水) 06:24:54自発的に人に聞いて解こうとするのはまあマシなんじゃないかね。
ただ 2ch で聞かなくても伊庭さんのところの掲示板で聞いてくれればそれなりに答えるのになあ。
0409デフォルトの名無しさん
2005/11/23(水) 06:29:020410デフォルトの名無しさん
2005/11/23(水) 06:30:26スレ住人の肴を奪わないでくれw
0411デフォルトの名無しさん
2005/11/23(水) 14:06:51中の人は違うかもしれんが
まぁ日に何度か同じ問題がでることもあるしな
0412デフォルトの名無しさん
2005/11/23(水) 14:28:29pDC->TextOut(0,0,"あ");
この"あ"という文字を180度反転させるにはどうすればいいでしょうか?
0413ぼるじょあ ◆yBEncckFOU
2005/11/23(水) 14:30:580414デフォルトの名無しさん
2005/11/23(水) 15:38:19回転したFontを作る。
0415デフォルトの名無しさん
2005/11/23(水) 17:56:360416デフォルトの名無しさん
2005/11/23(水) 18:29:27[2] 問題文(含コード&リンク):
任意の整数が与えられた時(例:4657の場合)
下記のように表示する再帰プログラムを作る
4 4
6 10
5 15
7 22
22
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++6
[3.3] 言語:C
[4] 期限:2005年11月26日0:00
[5] その他の制限:特に無し
0417デフォルトの名無しさん
2005/11/23(水) 18:38:27[2] 問題文(含コード&リンク):
入力した文字列の全ての英字を削除する再帰プログラムを作りなさい
例:BC192と入力したら
192だけ表示される
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++6
[3.3] 言語:C
[4] 期限:2005年11月26日0:00
[5] その他の制限:特に無し
よろしくお願いします
0418デフォルトの名無しさん
2005/11/23(水) 18:48:08#include <stdio.h>
int main(){
int d,t;
int sum=0;
int k=0,i;
printf("数字を入力してください:");
scanf("%d",&d);
while(d>0){
t=d;
k=0;
while((t/10)!=0){t/=10;k++;}
sum+=t;
printf("%d %d\n",t,sum);
for(i=0;i<k;i++)t*=10;
d-=t;
}
printf("%d\n",sum);
return 0;
}
こんな感じかな
0419デフォルトの名無しさん
2005/11/23(水) 18:49:00やりなおしてきまつ
0420ぼるじょあ ◆yBEncckFOU
2005/11/23(水) 18:55:27(・3・) エェー
#include<stdio.h>
int main(void)
{
char c;
int i;
while(1)
{
scanf("%c",&c);
if(c=='\n')break;
if(64>=c||(91<=c&&96>=c)||123<=c)
printf("%c",c);
}
return 0;
}
0421デフォルトの名無しさん
2005/11/23(水) 18:56:04int n2d(int);
int main(){
int d;
printf("数字を入力してください:");
scanf("%d",&d);
printf("%d\n",n2d(d));
return 0;
}
int n2d(int number){
int sum;
if(number==0)return 0;
int d=number%10;
sum=d+n2d(number/10);
printf("%d %d\n",d,sum);
return sum;
}
よし再帰的
0422ぼるじょあ ◆yBEncckFOU
2005/11/23(水) 19:00:370423デフォルトの名無しさん
2005/11/23(水) 19:02:39#include <stdio.h>
void delalpha(char* _str);
int main(){
char buf[256];
printf("文字を入力してください:");
scanf("%s",buf);
delalpha(buf);
return 0;
}
void delalpha(char* _str){
if(!(*_str >= 'a' && *_str <='z')&&
!(*_str >= 'A' && *_str <='Z'))putchar(*_str);
if(*_str!='\0')delalpha(_str+1);
}
0424ぼるじょあ ◆yBEncckFOU
2005/11/23(水) 19:04:240425デフォルトの名無しさん
2005/11/23(水) 19:39:370426デフォルトの名無しさん
2005/11/23(水) 21:21:08今日はネタが少ないな
当然か、祭日だし
0427デフォルトの名無しさん
2005/11/23(水) 21:34:311:MSXMLのパーサを簡単に扱えるクラスを作成する
読込・書出・要素、エレメントの読書き、程度の機能があればよい。
2:STLを使ったプログラムになれる。
map list vector ...etc 色々使って、なれておいてください。
以上を覚えるのにどちらか良いサイト、または書籍をご存知でしたら教えてください。
スレ違いかもしれませんが。。。
0428デフォルトの名無しさん
2005/11/23(水) 21:41:46機能を覚えつつ自作してみる
2:なれておいてください。
0429デフォルトの名無しさん
2005/11/23(水) 22:02:30なれておいてください。
0430デフォルトの名無しさん
2005/11/23(水) 23:09:431: boost::spiritか、XML程度ならboost::regexでもいいかも
2: なれておいてください。
0431デフォルトの名無しさん
2005/11/23(水) 23:12:35MSXMLのラッパーを作れってことではないのか?
0432デフォルトの名無しさん
2005/11/23(水) 23:13:511はまだ勉強中の俺では理解できないから>>428-430に任せるが
まだAcceleratedC++読んでないなら嫁
0433429だが
2005/11/23(水) 23:28:48XMLを解釈する方法ではなく、MSXMLのラッパーを作れと。
まずはMSXMLでぐぐって使い方を学べ。
こういう選択肢もあることを出しておく。
http://www.grinninglizard.com/tinyxml/
0434デフォルトの名無しさん
2005/11/23(水) 23:31:420435デフォルトの名無しさん
2005/11/24(木) 00:44:38確か昔日本語マニュアル読んだ気がするけど、最新のはしらね。
0436163
2005/11/24(木) 01:19:22お願いします。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1133.zip
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1125.txt
0437389
2005/11/24(木) 01:46:36[1] 授業単元:プログラミング基礎演習
[2] 問題文(含コード&リンク):
以下のようにcos関数のグラフを出力するプログラムを作れ(定義域は[0,4π]程度)。通常 kterm は横80桁,縦24行ほどあるので,その範囲に指定された定義域分のグラフを出力すること。
なお,変数を使い定義域を指定できるようにすること。
またcos(x)だけではなくcos(2*x)やcos(x/2)なども表示できるようにプログラムしてあると良い。ちなみに,前問同様これも 繰り返しと条件分岐,および一文字出力関数 putc()または putchar() を用いて作れ。
***** *****
*** ** *
** ** **
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
* * *
** ** **
* ** ***
***** *****
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: C
[4] 期限:11/25
0438デフォルトの名無しさん
2005/11/24(木) 01:55:20値域はどう扱ったらいいのかな?
0439デフォルトの名無しさん
2005/11/24(木) 03:07:0824行で表示するみたいです。
0440デフォルトの名無しさん
2005/11/24(木) 03:49:490441デフォルトの名無しさん
2005/11/24(木) 05:21:29[2] 問題文(含コード&リンク):
0 から 1までの間で一様な乱数Xi を M個発生させ、それを M個の同じ幅の「箱」に入れよう。
たとえば、M=4のときには、 [0.0,0.25],[0.25,0.5],[0.5,0.75],[0.75,1.0]の4つの箱になる。
その後で,乱数を受け取っていない箱の数Z を数える。このとき M/Z の値を求めるようなプログラムを書きなさい。
Mのさまざまな値(100〜10000くらい)に対して実験して見よ。 Mの値を自由に入力できるようにすること。
[3] 環境
[3.1] OS: Mac
[3.2] コンパイラ名とバージョン: gcc -ansi
[3.3] 言語: C
[4] 期限: 11/24
Mの値が固定ならできるのですが自由に入力できるようにしたらエラー出まくりで泣きました
よろしくお願いします
0442デフォルトの名無しさん
2005/11/24(木) 06:28:380443デフォルトの名無しさん
2005/11/24(木) 06:52:210444デフォルトの名無しさん
2005/11/24(木) 06:56:24とりあえず、
int *hako; int M,i; double rvalue;
scanf("%d",&M);
hako = (int*)malloc(sizeof(int)*M);memset(hako,0,なんだったっけ?);
for(i=0;i<M;i++){rvalue=(double)(rand()%10000)/10000.0;
hako[rvalue * M]++;}
こんなかんじになるはず。
0445デフォルトの名無しさん
2005/11/24(木) 13:56:12[2] 問題文:底辺と高さを入力して三角形の面積を計算するプログラムを作れ。
1。ただし底辺等を引数で渡すと各計算をしてreturn文で計算結果を返す
関数を作り、この関数を使って、その計算を表示するプログラムを作りなさい。
2。又、これとは別に底辺等と計算結果を入れておくものを引数で渡すと
各計算をして計算結果を返す関数を作り、この関数を使って、その計算を表示するプログラムを
作りなさい
3:環境 dcc
4 期限: 11/24
returnを使えということでしょうか?よろしくお願いいたします
0446デフォルトの名無しさん
2005/11/24(木) 15:38:57脳内コンパイルで試してないけど
1.
double triangle(double b, double h) {return (b*h)/2.0;}
int main(int argc, char **argv)
{
double base, height, ans;
printf("底辺="); scanf("%f", &base);
printf("高さ="); scanf("%f", &height);
ans = triangle(base, height);
printf("面積=%lf\n", ans);
return 0;
}
2.
void triangle(double b, double h, double *a) {*a=(b*h)/2.0;}
int main(int argc, char **argv)
{
double base, height, ans;
printf("底辺="); scanf("%f", &base);
printf("高さ="); scanf("%f", &height);
triangle(base, height, &ans);
printf("面積=%lf\n", ans);
return 0;
}
0447291
2005/11/24(木) 15:55:52304さん、できればはっていただけると助かります。
ところで302さんのソースを以下のように実行すると
bash-2.05b$ ./a.out
found
となるのですが、これはどういうことでしょうか?
bash-2.05b$ /usr/bin/time
Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose]
[--portability] [--format=format] [--output=file] [--version]
[--help] command [arg...]
の使いかたもよくわからないのですが
0448デフォルトの名無しさん
2005/11/24(木) 16:00:48実行結果は特に大事ではない
実行時間が大事なんだろ
foundなら検索した値がマッチしたってことだ
pFunc = search;なら番兵無し
pFunc = searchw;なら番兵あり
それぞれ変えて
/usr/bin/time ./a.outとやれば実行時間が出る
そこんとこ何も聞いてないのかよ
0449デフォルトの名無しさん
2005/11/24(木) 16:02:25それ上で話題になった伊庭研のやつと一緒ジャン
ソースも上のほうにあるんでは?
0450デフォルトの名無しさん
2005/11/24(木) 16:06:11ありがとうございます、2のほうが結果が0になりうまくいかないのですが、
関数のタイプ等間違いはないでしょうか?
0451デフォルトの名無しさん
2005/11/24(木) 16:19:00#include <stdio.h>
#include <math.h>
/*値域*/
#define VDOM 24
/*定義域*/
#define FDOM 60
int vcos[FDOM][VDOM]={0};
int main(){
int i,j;
double ang=0;
for(ang=0;ang<FDOM;ang++){
vcos[(int)ang][(int)(12+11*cos(4*M_PI*ang/FDOM))]=1;
}
for(i=0;i<VDOM;i++){
for(j=0;j<FDOM;j++){
if(vcos[j][i]==1)putchar('#');
else putchar(' ');
}
putchar('\n');
}
return 0;
}
とりあえず一部だけ
あとはがんがれ
0452デフォルトの名無しさん
2005/11/24(木) 16:31:56#include <stdio.h>
void triangle(double b, double h, double *a) {*a=(b*h)/2.0;}
int main(int argc, char **argv)
{
double base, height, ans;
printf("底辺="); scanf("%lf", &base);
printf("高さ="); scanf("%lf", &height);
triangle(base, height, &ans);
printf("面積=%g\n", ans);
return 0;
}
0453ふみー
2005/11/24(木) 17:47:26[2] 問題文:ファイルを読み込み、空白が早く現れる順に各行を並べ替えるプログラムを作成する。
空白とはスペース記号 0x20 とタブ 0x9 を意味し、空白の無い行は 0 番目に空白が現れた事にする。
�@文字列を入れたら最初に空白が来る位置を求める関数を作る。
その関数をテストするための文字列をいくつか作り、関数が出力しなければいけない値を
それぞれ求める。また、そのような文字列を作った理由を解説しなさい。
�A文字列を入れたら最初に空白が来る位置を求める関数を作る。
但し、空白で始まる文字列には 1, 空白がなければ 0 を返す。
�B上で作成した関数を利用して、題意を満たすプログラムを実際に作成する。
[3] 環境
[3.1] OS:Windows
[3.2] gcc 2.9
[3.3] 言語:C/C++
[4] 期限: [2005年11月31日17:00]
[5] その他の制限:一行の文字制限が無いと入力バッファの処理が複雑になる場合、
一行を高々 80 文字と仮定し、一行を表す文字列としてだけ配列を使っても良い。
以上、長々とお願いします。
0454デフォルトの名無しさん
2005/11/24(木) 18:55:38>>230
0455デフォルトの名無しさん
2005/11/24(木) 18:56:27提出期限でワラタ
0456デフォルトの名無しさん
2005/11/24(木) 19:56:22[2] 問題文:
平面座標上のn個(4個以上)の長方形の2つの対角となる点をキーボードから入力し、
一方向リストを使って表示するプログラムを作成せよ。
ただし、表示する時には長方形の面積も表示すること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:11/30まで
[5] その他の制限:初心者にもわかりやすいようにお願いします。
どなたかご教授お願いします。
0457デフォルトの名無しさん
2005/11/24(木) 20:38:020459デフォルトの名無しさん
2005/11/24(木) 20:56:42[2] 問題文(含コード&リンク):コンピューターにランダムな0〜99を選ばせて数当てゲームを作れ
回数制限もつける(10回でお願いします)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC 2003(たぶん)
[3.3] 言語: C
[4] 期限: 11月27日(日曜) できるだけ早めがいいです><
[5] その他の制限: かなり初歩的なことしか習ってないと思います。
一応参考として
for (cownter=10;cownter>0;cownter--)
何らかの処理;
if (条件)
{
break;
}
乱数の発生
#include <atdlib.h>
#include <time.h>
srand((unsigned)time(NULL))
ans=rand()%100;
と言うのが与えられているのでコレも含んだ感じで作ってもらえるとうれしいです。
あと、おもしろければおもいしろいほどイイ点数を付けてくれるそうなので、正解の±5以内だと「おしい!」的なことを言ったり
1行AAを入れてもらえればうれしいです。
よろしくおねがいします。
0460デフォルトの名無しさん
2005/11/24(木) 22:13:05初歩的なところしかやってないらしいのでif文の条件を&&で繋げずに書いてみた。
おしい!とかあたり!とかは適当に自分で改変しる。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int cownte, ans, x;
srand((unsigned)time(NULL));
ans=rand()%100;
for(cownter=10;cownter>0;cownter--){
printf("数を当ててね(残り%d回)>",cownter);
scanf("%d",&x);
if(x==ans){
printf("あたり!\n");
break;
}
else if(x<=ans+5){
if(x>=ans-5){
printf("おしい!\n");
}else{
printf("はずれ\n");
}
}
else{
printf("はずれ\n");
}
}
return 0;
}
0461デフォルトの名無しさん
2005/11/24(木) 23:20:05わかる方いらっしゃいますでしょうか?
0462デフォルトの名無しさん
2005/11/24(木) 23:39:51ちょっち長くなった
#include <stdio.h>
typedef struct LIST{
int x1;
int y1;
int x2;
int y2;
struct LIST *next;
}List;
List* init(int,int,int,int);
void release(List*);
List* init(int _x1, int _y1,int _x2, int _y2){
List* list = (List*)malloc(sizeof(List));
list->x1=_x1;
list->y1=_y1;
list->x2=_x2;
list->y2=_y2;
list->next = NULL;
return list;
}
void release(List* list){
if(list!=NULL){
if(list->next!=NULL)release(list->next);
free(list);
}
}
0463デフォルトの名無しさん
2005/11/24(木) 23:42:20int main(){
List head;
List *lp = &head;
int d1,d2,d3,d4,height,width,i=1;
char buf[80];
while(1){
printf("長方形の対角の二点を入力してください(x1 y1 x2 y2) :");
if(fgets(buf,80,stdin)==NULL)break;
if(sscanf(buf,"%d %d %d %d\n",&d1,&d2,&d3,&d4)!=4){
printf("入力に誤りがあります.\n");
continue;
}
lp->next = init(d1,d2,d3,d4);
lp = lp->next;}
lp = head.next;
while(lp!=NULL){
printf("%d:(%d %d),(%d %d),(%d %d),(%d,%d)",i++,lp->x1,lp->y1,lp->x2,lp->y1,lp->x1,lp->y2,lp->x2,lp->y2);
height = (lp->y2 > lp->y1)? lp->y2-lp->y1 : lp->y1-lp->y2;
width = (lp->x2 > lp->x1)? lp->x2-lp->x1 : lp->x1-lp->x2;
printf(" 面積=%d\n",height*width);
lp=lp->next;}
release(head.next);
return 0;
}
入力ループはCtrl-Zで打ち切る
なんかheadの指定方法が変だな
Cでこういうのやるとオブジェクトの良さがわかる
0464デフォルトの名無しさん
2005/11/24(木) 23:44:47つーか今気づいたんだが
Cの構造体もメソッドみたいなのつけられるようになったんだよな
忘れてた
0465デフォルトの名無しさん
2005/11/25(金) 00:07:23直線なら
x座標、y座標で近似 y=ax+b(三次元上では平面)
y座標、z座標で近似 z=cy+d(三次元上では平面)
y=ax+b、 z=cy+dが交わってできる直線をなんとか求める
というのはどうだろう
0466デフォルトの名無しさん
2005/11/25(金) 00:10:20[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1143.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:11月27日まで
[5] その他の制限:特になし
よろしくお願いします
0467デフォルトの名無しさん
2005/11/25(金) 00:23:58int combination(int n,int r)
{
printf("combination(%d,%d)が呼ばれました\n", n, r);
:
(略)
:
0468デフォルトの名無しさん
2005/11/25(金) 00:30:51int combination(int n,int r)
{
if(r==0||r==n){
printf("<%d,%d>\n",n,r);
return (1);
}
else if(r==1){
printf("<%d,%d>\n",n,r);
return (n);
}
printf("(%d,%d)->[%d,%d][%d,%d]\n",n,r,n-1,r-1,n-1,r);
return(combination(n-1,r-1)+combination(n-1,r));
}
注
<n,r>引数が n,rで呼び出されそこで完結したこと
(n,r)->… 引数が n,rで呼び出されさらに->以降の引数で呼び出しを行っていること
0469デフォルトの名無しさん
2005/11/25(金) 00:36:22かなり助かりますた!!!!!!!!!!
全部見たことある感じでいい感じです><
本当にありがとうございました。
0470163
2005/11/25(金) 00:36:25[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1125.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1133.zip
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C/C++どちらでも可
[4] 期限: 12月1日まで
[5] その他の制限: なし
すいません。最初しか質問テンプレを使ってなかったです。
私の力ではできません。どなたか教えてください。よろしくお願いします。
うはwww同じ大学wwwww
ちなみに、ひとつ情報たしときます。
for文使ったらその時点でダメとのこと
453氏は線形リスト理解しとけ〜
0475デフォルトの名無しさん
2005/11/25(金) 04:07:26なにいってんのかわかんねぇから消えろよ
0476デフォルトの名無しさん
2005/11/25(金) 05:05:18プログラミング言語C++
[2] 問題文(含コード&リンク):
std::stringを一つ受け取って、文字列内のスペースを除去したstd::stringを返す関数を作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc(バージョン不明)
[3.3] 言語: C++
[4] 期限:
本日午前中
[5] その他の制限:
STLの概要まで習いました。
0477デフォルトの名無しさん
2005/11/25(金) 06:02:40#include <string>
#include <algorithm>
std::string remove_space(std::string s) {
s.erase(std::remove(s.begin(), s.end(), ' '), s.end());
return s;
}
0479304
2005/11/25(金) 11:56:30#include <sys/resource.h> // #include <time.h>
#include <stdbool.h>
#include <stdio.h>
struct SportClub {int id; char name[64];} kaiin[] = {
{555, "Yuki TERADA",}, {222, "Kaho KANO",}, {789, "Yuko FUKUDOME",}, {444, "Seiko ANDO",},
{456, "Mai YUKAWA",}, {666, "Kyoko KAMIDOHZONO",}, {123, "Yuasa OKADA",}, {777, "Aya SAKATA",},
{111, "Yua SAITOU",}, {333, "Noriko KIJIMA",}, {0, "",},
};
int t_array[]={555,222,789,444,456,666,123,777,111,333,55};
static bool findWithoutSentinel(struct SportClub const * target, unsigned nTarget, int id)
{
for (unsigned ic = 0; ic < nTarget; ++ic) {
if (id == target[ic].id) {
return true;
}
}
return false;
}
static bool findWithSentinel(struct SportClub const * target, unsigned nTarget, int id)
{
for (unsigned ic = 0; target[ic].id; ++ic) {
if (id == target[ic].id) {
return true;
}
}
return false;
}
0480304
2005/11/25(金) 11:59:13static inline unsigned long long getTime()
{
// return time(NULL); // sec
struct rusage ru;
getrusage(RUSAGE_SELF, &ru);
return ru.ru_utime.tv_sec * 1000 * 1000 + ru.ru_utime.tv_usec; // usec
}
static void find(bool sentinel)
{
printf("with%s sentinel.\n", sentinel ? "" : "out");
bool (* func)(struct SportClub const *, unsigned, int) = sentinel ? findWithSentinel : findWithoutSentinel;
const int Iteration = 100000000;
bool isFound;
unsigned long long before = getTime();
for (unsigned id = 0; id < sizeof(t_array) / sizeof(*t_array); ++id) {
for (unsigned ic = 0; ic < Iteration; ++ic) {
isFound = func(kaiin, sizeof(kaiin) / sizeof(*kaiin), t_array[id]);
}
printf("id:%d is %sFound !\n", t_array[id], isFound ? "" : "Not ");
}
unsigned long long after = getTime();
// printf("%lld sec.\n", after - before);
printf("%lld msec.\n", (after - before) / 1000);
}
int main()
{
find(false);
find(true);
return 0;
}
0481助けて
2005/11/25(金) 14:05:34[2] 問題文(含コード&リンク): 神経衰弱を行うゲ−ムを作成すること。ただし
、カ−ドは52枚使用して、絵柄の区別はないものとする。
[3] 環境
[3.1] OS: windows [3.2] コンパイラ名とバージョン:Visual C++ 6.0
[4] 期限: 2005年11月27日[5] その他の制限: IF文 FOR文
配列 乱数を使用して作ります
助けてくださいお願いします
0482伝説新人タクシ
2005/11/25(金) 14:14:41それとも、誘導されてきた旨を伝えるか、さ。
レスを見れば印象が悪いことぐらい分かるでしょ。
マルチなんてしたら教えるヤシが確実にいなくなっちゃうよ。
0483助けて
2005/11/25(金) 14:24:550484デフォルトの名無しさん
2005/11/25(金) 14:41:22ユーザインタフェースが分かんない。どんな入出力になればいいの?
まさかGUIなプログラムを作れとか言わないよね?
0485ぼるじょあ ◆yBEncckFOU
2005/11/25(金) 15:46:20話はそれからだ
0486デフォルトの名無しさん
2005/11/25(金) 15:48:330487ぼるじょあ ◆yBEncckFOU
2005/11/25(金) 15:50:390488デフォルトの名無しさん
2005/11/25(金) 15:51:23いままでありがとうございましたYO
0489デフォルトの名無しさん
2005/11/25(金) 15:53:02(・3・)エェー まずグラ作ってYo
話はそれからだYo
0490デフォルトの名無しさん
2005/11/25(金) 15:54:190491デフォルトの名無しさん
2005/11/25(金) 16:02:540492デフォルトの名無しさん
2005/11/25(金) 16:07:2313×4配列に1-13のランダムな数字をひとつずつ入れて
まだめくってないカードは「*」で表示し当て終わったカードは「 」で表示する
プレイヤーには行列で選らばせればいいし
COMはランダムに選べばいい
という感じで誰か作ってやれ
0493デフォルトの名無しさん
2005/11/25(金) 16:09:18あまりに簡単すぎるのでツマランからいいだしっぺのおまいが作ってやれ
0494デフォルトの名無しさん
2005/11/25(金) 16:15:500495デフォルトの名無しさん
2005/11/25(金) 16:18:450496デフォルトの名無しさん
2005/11/25(金) 16:25:510497デフォルトの名無しさん
2005/11/25(金) 16:31:01>>495
消さなくても順次スクロールすればよかろ。
0498デフォルトの名無しさん
2005/11/25(金) 16:34:18見えなくなるまでスクロールってこと?
0499デフォルトの名無しさん
2005/11/25(金) 16:37:42これでいいはず
0500デフォルトの名無しさん
2005/11/25(金) 16:42:07見えててもいいじゃん。対人対戦じゃなければ。
0501デフォルトの名無しさん
2005/11/25(金) 16:43:45おお消えた!やべぇ楽しい(ノ´∀`*)
>>500
ま〜ね
0502デフォルトの名無しさん
2005/11/25(金) 16:58:24それってゲイツ限定だろ
まぁかといって\x1b[2Jはゲイツじゃ使えないが
0503デフォルトの名無しさん
2005/11/25(金) 17:01:250504デフォルトの名無しさん
2005/11/25(金) 17:01:26[2] 問題文:関数rand()を使用して0〜999の整数を10個作り、
画面に表示させた後、昇順に表示させるプログラム
実行例
564 448 669 974 917 483 14 743 155 946
14 155 448 483 564 669 743 917 946 974
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 11月27日22時まで
[5] その他の制限: バブルソートを使いソートをする
0505デフォルトの名無しさん
2005/11/25(金) 17:05:46#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int a[10], i, j, tmp;
srand(time(NULL));
for (i = 0; i < 10; ++i) a[i] = 1000*rand()/RAND_MAX;
for (i = 0; i < 10; ++i) printf("%d ", a[i]); printf("\n");
for (i = 0; i < 10; ++i)
for (j = i+1; j < 10; ++j)
if (a[i] > a[j]) tmp = a[i], a[i] = a[j], a[j] = tmp;
for (i = 0; i < 10; ++i) printf("%d ", a[i]); printf("\n");
}
0506246、 356
2005/11/25(金) 17:09:01いといけないので、>>246の課題をどなたか簡単に、できればswich文を使わ
ず、簡単な形でお願いできませんか。よろしくお願いします。
0507デフォルトの名無しさん
2005/11/25(金) 17:13:420508デフォルトの名無しさん
2005/11/25(金) 17:17:59>>299
に答えあるじゃん。
検索すらできないアホは質問するな。
0509デフォルトの名無しさん
2005/11/25(金) 17:26:12たぶん
switch使ってるから気に入らなかったんだろうw
0511デフォルトの名無しさん
2005/11/25(金) 17:48:050512デフォルトの名無しさん
2005/11/25(金) 18:03:55gccではRAND_MAX==INT_MAXだからかなり高い確率でオーバーフローするよ。それ
0513デフォルトの名無しさん
2005/11/25(金) 18:13:09* 関数 char *concatStrings(char *format, ... ) は第 1 引数 format に書式を指す文字列の先頭を指すポインタを受け取り,第 2 引数以降に文字列の先頭を指す char * 型のポインタを受け取る.
* 関数 char *concatStrings(char *format, ... ) は,書式 format 中の %s を左から順に,第 2 引数以降のポインタが指す文字列で置き換えた文字列を 1 本作り,その新しく作られた文字列の先頭を指す char * 型のポインタを返り値とする.
* 書式 format 中に %s 以外の形で % が現れた場合や,引数が正しくない場合に対する動作は不定でよい (エラー処理はさぼってよい).
また,できれば以下の条件も満していることが望ましい:
* 関数 char *concatStrings(char *format, ... ) が作る新しい文字列用のメモリ領域は必要最小限のサイズに抑える (メモリ領域を無駄に多く確保しない).
* 書式 format 中の %% は % に置き換える.
0515デフォルトの名無しさん
2005/11/25(金) 18:22:39[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: C
0516デフォルトの名無しさん
2005/11/25(金) 18:30:45{
va_list args;
va_start(args, format);
FILE * fp = fopen("/dev/null", "w");
size_t foo = vfprintf(fp, format, args);
fclose(fp);
char * bar = malloc(foo);
vsprintf(bar, format, args);
va_end;
return bar;
}
0517デフォルトの名無しさん
2005/11/25(金) 18:34:16いや、それすると新しいコンソールを開いてCLSしてすぐ閉じるようになる場合もあるんだ。
0518デフォルトの名無しさん
2005/11/25(金) 18:48:32ここの住人だってYO!
ttp://jbbs.livedoor.jp/bbs/read.cgi/study/952/1064897121/224
0519デフォルトの名無しさん
2005/11/25(金) 18:56:07221 名前: 電大さんが通る 投稿日: 2005/11/13(日) 02:36:32 [ vyr2Ul.s ]
今年も大騒ぎの予感がするデータ構造とアルゴリズムの課題1。
http://edu.net.c.dendai.ac.jp/ad/1/2005/kadai.html
この課題が分からないとか終わってるだろwwwww
232 名前: 電大さんが通る 投稿日: 2005/11/20(日) 22:14:03 [ zfSDCTN. ]
宿題解くのはいいのだがわざとわかりくく間違えを混ぜてあるとか自慢げに初回の授業で言ってたな
それがストレス発散になるらしいぞ
ちょwwwwwwwwおまwwwwwwwww
坂本出てきてくれ、おまい結構いいやつじゃないか
0520デフォルトの名無しさん
2005/11/25(金) 18:59:12×1000
○1000.0
0521デフォルトの名無しさん
2005/11/25(金) 19:03:04nul文字のメモリの確保忘れますよ
#include<stdarg.h>
#include<stdlib.h>
#include<stdio.h>
char * concatStrings(char * format, ...){
va_list args;
va_start(args, format);
{FILE * fp = tmpfile();
size_t foo = vfprintf(fp, format, args);
char * bar = malloc(foo+1);
rewind(fp);
bar[fread(bar,1,foo,fp)]='\0';
fclose(fp);
va_end(args);
return bar;}
}
0522521
2005/11/25(金) 19:05:32×忘れてますよ
0523501
2005/11/25(金) 19:05:39え〜ヘタレで時間かかった上に変なんでなんかゴメン
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define omote 1
#define ura 0
void gamen(long card[][13],long baka[][13]);
int main(void)
{
long card[4][13],unko[13],baka[4][13],i,j,k,tate[2],yoko[2],han=0,ok=0;
char end;
srand((unsigned)time(NULL));
for(i=0;i<13;i++)
unko[i] = 0;
for(i=0;i<4;i++)
for(j=0;j<13;j++)
{
baka[i][j] = ura;
while(1)
{
k = rand()%13+1;
if(unko[k-1]<4)
{
card[i][j] = k;
unko[k-1] += 1;
break;
0524501
2005/11/25(金) 19:06:09}
}
while(1)
{
gamen(card,baka);
puts("");
while(1)
{
if(ok==1)
{
gamen(card,baka);
puts("ダメもう一回入力");
}
puts("めくる場所を縦横の順に入力");
printf("縦(1〜4):");
scanf("%ld",&tate[han%2]);
printf("横(1〜13):");
scanf("%ld",&yoko[han%2]);
if(tate[han%2]>=1&&tate[han%2]<=4&&yoko[han%2]>=1&&yoko[han%2]<=13&&baka[tate[han%2]-1][yoko[han%2]-1]==0)
{
ok = 0;
baka[tate[han%2]-1][yoko[han%2]-1] = 1;
break;
}
else
{
ok = 1;
system("CLS");
}
}
if(han%2==1)
0525501
2005/11/25(金) 19:06:43if(card[tate[0]-1][yoko[0]-1]!=card[tate[1]-1][yoko[1]-1])
{
system("CLS");
gamen(card,baka);
baka[tate[0]-1][yoko[0]-1] = 0;
baka[tate[1]-1][yoko[1]-1] = 0;
puts("そろいませんですた\n続ける?(y/n)");
while(1)
{
scanf("%c",&end);
if(end=='y')break;
if(end=='n')return 0;
}
}
han++;
}
else
han++;
if(han>=52)
break;
system("CLS");
}
return 0;
}
0526501
2005/11/25(金) 19:07:16{
long i,j;
char c[27] = {"�@�A�B�C�D�E�F�G�H�I�J�K�L"};
printf(" ");
for(i=0;i<13;i++)
printf("%c%c ",c[i*2],c[i*2+1]);
puts("");
for(i=0;i<4;i++)
{
printf("%c%c",c[i*2],c[i*2+1]);
for(j=0;j<13;j++)
{
if(baka[i][j] == omote)
printf("%3d ",card[i][j]);
else
printf(" * ");
}
puts("");
}
}
0527501
2005/11/25(金) 19:27:53最初に
void sleep(int n); 追加して
system("CLS");
gamen(card,baka);
baka[tate[0]-1][yoko[0]-1] = 0;
baka[tate[1]-1][yoko[1]-1] = 0;
puts("そろいませんですた");
sleep(3);
に変えて
最後に
void sleep(int n)
{
time_t start,end;
time(&start);
while(time(&end),difftime(end,start)<n);
}
追加して
0528坂本
2005/11/25(金) 20:22:43>>519
結構いいやつかどうかは定かではないが、「わざと間違いを混ぜる」というのは嘘で、
本当は「動くけど、そのままじゃ提出できないようなプログラム」が正解。
皆様おせわになりますが、うちのできの悪い学生を宜しくお願いします。
0529デフォルトの名無しさん
2005/11/25(金) 20:43:32講師に、今回のプログラムで
swichはないだろうと言われたので。
条件後付けされた感覚ですよ。
0530デフォルトの名無しさん
2005/11/25(金) 20:47:00[2] 問題文(含コード&リンク):
以下のプログラムを微分を関数微分から数値微分に変更したプログラムを完成させる
Δxは打ち切り誤差DELTAと同じ値とする
√5を計算できるように変更する
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C++
[4] 期限: 2005年11月30日12:00まで
[5] その他の制限: 特にありません。
数学の知識がぶっ飛んでいて、関数積分、数値積分の意味が分かりませんorz
よろしくお願いします。
0531以下のプログラム(1)
2005/11/25(金) 20:47:51#include <stdio.h>
#include <math.h>
#define DELTA 0.000001
double f(double x);
double df(double x);
double newton(double ox);
void main(void)
{
double x, ox;
int num = 1;
printf("初期値x0を指定してください:");
scanf("%lf", &ox);
printf("反復回数 近似値\n");
while(1){
x = newton(ox);
if(fabs(x - ox) < DELTA) break;
printf("%d %lf\n", num++, x);
ox = x;
}
printf("解の近似値は%lfです。\n", x);
}
0532以下のプログラム(2)
2005/11/25(金) 20:48:40{
return x*x*x + 2*x*x - 19*x -20;
}
double df(double x)
{
return 3*x*x + 4*x - 19;
}
double newton(double ox)
{
double x;
x = ox - (f(ox)/df(ox));
return x;
}
0533デフォルトの名無しさん
2005/11/25(金) 21:01:22関数二つだけ書き換える
double f(double x)
{
return x*x-5;
}
double df(double x)
{
return (f(x+DELTA)-f(x)) / DELTA;
}
0534デフォルトの名無しさん
2005/11/25(金) 21:18:21ありがとうございます。数学用語が分からないなんて、プログラム以前の問題でしたねorz
0536デフォルトの名無しさん
2005/11/25(金) 21:20:57駄目だ自分・・・。
ちょっと落ち着いてきます_| ̄|○
0537デフォルトの名無しさん
2005/11/25(金) 21:35:50ちょwww先生wwwwwwwww
0538デフォルトの名無しさん
2005/11/25(金) 22:18:43乱数はrand()/RAND_MAX;ではなく
rand()%1000という形にしたい場合はどうすれば
0539デフォルトの名無しさん
2005/11/25(金) 22:23:230540デフォルトの名無しさん
2005/11/25(金) 22:26:260541デフォルトの名無しさん
2005/11/25(金) 22:29:10試行回数を増やしまくると響くな
0542デフォルトの名無しさん
2005/11/25(金) 22:42:26そのまま変えるとエラーがでてしまう。
0543デフォルトの名無しさん
2005/11/25(金) 22:46:38ちょっとは自分で考えろよ
0544デフォルトの名無しさん
2005/11/25(金) 22:49:150545デフォルトの名無しさん
2005/11/25(金) 23:03:400546デフォルトの名無しさん
2005/11/25(金) 23:16:02return 0;
順番変わってないよ・・・
0547デフォルトの名無しさん
2005/11/25(金) 23:26:301/32 と 1/32 ってどこから出たの?
俺の計算では rand が一様乱数を生成するとして,X ≦ 647 の要素はどれも 0.00100000016 くらいの確率で出現し,
X > 647 の要素はどれも 0.00099999969 くらいの確率で出現することになったんだけど.
0548デフォルトの名無しさん
2005/11/25(金) 23:28:42ルーレットじゃね?
0549デフォルトの名無しさん
2005/11/26(土) 00:00:570550デフォルトの名無しさん
2005/11/26(土) 00:04:130551デフォルトの名無しさん
2005/11/26(土) 00:10:2433/32768と32/32768か
0552547
2005/11/26(土) 00:13:29サンクス.「The value of the RAND_MAX macro shall be at least 32767」(ISO/IEC 9899:1999) か.
gcc の RAND_MAX が 2147483647 だったから 647 で考えてしまってた.
0553デフォルトの名無しさん
2005/11/26(土) 00:32:15[2] 問題文(含コード&リンク):
int main(void)
{
char str[] = "abcd";
char *ptr = str;
}
以上のような変数宣言をしたときの
ポインタ変数のアドレス
ポインタ変数が参照する配列変数の先頭アドレス
ポインタ変数そのものの値(ポインタ変数に格納されている値)
ポインタ変数の参照先データ
をそれぞれポインタ変数を用いてポインタの位置を文字数分まで1つずつ進めながら16進数で確認するプログラムを作成
ただし,ポインタの位置を変化させても値が変化しないものについては,1回だけ表示すれば良い.なお,文字型のデータであっても16進数で文字コードを表示させれば良い.
[3] 環境
[3.1] OS:winXP
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語: C++
[4] 期限: 2005まで
[5] その他の制限:
#include<stdio.h>
まで。
0554デフォルトの名無しさん
2005/11/26(土) 01:21:58#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _PROFILE{
char name[32];
double height;
struct _PROFILE* next;
}profile;
profile* add(char* _str,double d){
if(strlen(_str)>32)return NULL;
profile* p = (profile*)malloc(sizeof(profile));
strcpy(p->name,_str);
p->height = d;
p->next = NULL;
return p;}
int remove(profile* p){if(p!=NULL){if(p->next!=NULL)remove(p);free(p);}}
void minmax(profile* p){
if(p!=NULL){
int c=0;profile *min=p,*max=p;
while(p!=NULL){
if(min->height > p->height)min=p;
if(max->height < p->height)max=p;
c++;
p = p->next;}
printf("入力は%d人です.\n",c);
printf("一番低い人は%sさん %gセンチです.\n",min->name,min->height);
printf("一番高い人は%sさん %gセンチです.\n",max->name,max->height); }}
0555デフォルトの名無しさん
2005/11/26(土) 01:22:33profile *head = NULL,*pp;
char buf[32],n[32];
double h;
while(1){
printf("氏名?: ");
if(fgets(buf,32,stdin)==NULL)break;
if(strlen(buf)<=1)break;
buf[strlen(buf)-1]='\0';
strcpy(n,buf);
printf("身長?: ");
if(fgets(buf,32,stdin)==NULL)break;
if(sscanf(buf,"%lf\n",&h)!=1)break;
if(head==NULL){
pp = add(n,h);
head = pp;
}else{
pp->next = add(n,h);
pp = pp->next;
}
}
minmax(head);
remove(head);
return 0;
}
switchなし版
こんなもんで十分だろ
0556デフォルトの名無しさん
2005/11/26(土) 01:32:30#include <stdio.h>
int main(){
char str[] = "abcd";
char *ptr = str;
while(*(ptr)!='\0'){
printf("ポインタ変数のアドレス:0x%X\n",&ptr);
printf("ポインタ変数が参照する配列変数の先頭アドレス:0x%X\n",ptr);
printf("ポインタ変数そのものの値:%s\n",ptr);
printf("ポインタ変数の参照先データ:%X\n",*ptr);
printf("\n+ポインタを進めます+\n");
ptr++;
}
return 0;
}
こういうことかな?
0557デフォルトの名無しさん
2005/11/26(土) 01:40:46int main(){
char str[] = "abcd";
char *ptr = str;
printf("ポインタ変数のアドレス:0x%X\n",&ptr);
printf("ポインタ変数が参照する配列変数の先頭アドレス:0x%X\n",str);
while(*(ptr)!='\0'){
printf("ポインタ変数そのものの値:0x%X\n",ptr);
printf("ポインタ変数の参照先データ:%Xh\n",*ptr);
printf("\n+ポインタを進めます+\n");
ptr++;
}
return 0;
}
こうじゃないか?
0558デフォルトの名無しさん
2005/11/26(土) 02:17:24[2] 問題文(含コード&リンク):
余弦定理を用いて三角形の一辺の長さを求めるプログラムを完成せよ。
ディスプレイから入力する値:2辺の長さ、辺の間の角度(単位は度)
出力する値:2辺の長さ、辺の間の角度、計算で求めた1辺の長さ
注:数学関数を使用すること、π=3.14 として計算。
ヒント
余弦定理
c^2=a^2+b^2-2abcosθ
使用する数学関数
sqrt( ),cos( )
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: [2005年11月28日11:00まで]
[5] その他の制限:入出力のところまでやりました。
よろしくお願いします。
0559デフォルトの名無しさん
2005/11/26(土) 02:25:44#include <stdio.h>
#include <math.h>
#ifndef M_PI
#define M_PI 3.14/*1592653589793*/
#endif
int main(void)
{
double a, b, c, th;
do{printf("a=?");}while(scanf("%lf\n", &a)!=1);
do{printf("b=?");}while(scanf("%lf\n", &b)!=1);
do{printf("θ=?");}while(scanf("%lf\n", &th)!=1);
c = sqrt(a*a+b*b-2.0*a*b*cos(th*M_PI/180.0));
printf("c=%f\n", c);
return 0;
}
0560デフォルトの名無しさん
2005/11/26(土) 02:45:27ありがとうございます!
本当に助かりました。
0561デフォルトの名無しさん
2005/11/26(土) 02:47:59do{printf("b=?");}while(scanf("%*c%lf", &b)!=1);
do{printf("θ=?");}while(scanf("%*c%lf", &th)!=1);
のほうがいいな
0562デフォルトの名無しさん
2005/11/26(土) 02:49:36do{printf("a=?");}while(scanf("%lf", &a)!=1);
do{printf("b=?");}while(scanf("%*c%lf", &b)!=1);
do{printf("θ=?");}while(scanf("%*c%lf", &th)!=1);
だ
0563デフォルトの名無しさん
2005/11/26(土) 03:05:08アドバイスありがとうございます!
参考にさせていただきます。
0564デフォルトの名無しさん
2005/11/26(土) 06:57:30先生、11/31ってなんですか pgr
0565デフォルトの名無しさん
2005/11/26(土) 07:14:48本当に、ありがとうございます。
ここの人達は物凄く親切ですね。
どうも、ありがとうございました。
0566デフォルトの名無しさん
2005/11/26(土) 07:15:529/31、4/31、2/31に次ぐ暗黒の日です
2/30、6/31もあてはまりますがマイナーです
0567デフォルトの名無しさん
2005/11/26(土) 10:09:550568坂本
2005/11/26(土) 11:51:03闇の締切日です。>>453
この日にレポートを提出すると、大学生活一年分プレゼントのチャンス!!
ただ、危険な技なので自己責任で。
0569デフォルトの名無しさん
2005/11/26(土) 14:52:44[2] 問題文:fgets()を用いて英文を改行、\0を含む128文字以内で1行入力し、文中に含まれる
単語の長さと単語の出現回数の統計(1,2,3,4,5,6,7,8,9,10,それ以上に分ける)を表示する
処理を繰り返すプログラムを作成しなさい。単語境界は空白文字とし、単語の要素は
英数字記号なら何でも良い。出現回数を単語の長さに応じて記録するlen[]とい
う整数型配列をグローバル変数として定義。 入力行を引数としてlen
[]に値を設定する関数を定義し、main関数から呼び出すようにする。
。sscanf()を用い、書式指定子に%sを多用してはならない。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2005年11月28日16:10まで
[5] その他の制限:stdio.h,string.h内ポインタは使用禁止です。
よろしくお願いしますm(__)m
0570246
2005/11/26(土) 15:04:10エラー E2140 test.c 12: ここでは宣言はできない(関数 add )
エラー E2356 test.c 17: 'remove' の再宣言で型が一致していない
エラー E2344 c:\Borland\Bcc55\include\stdio.h 193: 一つ前の
'remove' の定義位置
警告 W8075 test.c 17: 問題のあるポインタの変換(関数 remove )
警告 W8070 test.c 17: 関数は値を返すべき(関数 remove )
警告 W8075 test.c 56: 問題のあるポインタの変換(関数 main )
*** 3 errors in Compile ***
というエラーがでました。助けてください。お願いします。
0571デフォルトの名無しさん
2005/11/26(土) 15:09:061.
%sは何回までなら使用していいのか。
2.
>[5] その他の制限:stdio.h,string.h内ポインタは使用禁止です。
stdinは使うなということか?
0572レン
2005/11/26(土) 15:36:23[2] 問題文:0からN(適当な自然数)までの数を一つ利用者に思ってもらう。計算機は当て推量(ゲスguess)で
0からNまでの数の一つを出力する。計算機のゲスが当たっていたらG(Good)、計算機のゲスした数より思った数が大きければL(Large)、
小さいならばS(Small)を入力してもらって、出来るだけ少ない回数のゲスで利用者の思った数を当てるゲームを作る。
<入力>"G"、"L"、"S"。
<操作>利用者の"L"または"S"の回答によって利用者の思った数の範囲を狭めてゆく、利用者の思った数が0からNまでのどの数であっても、
出来るだけ少ないゲスで利用者の思った数を当てるように工夫する。
<出力>0からNまでの数(ゲス)。
<考察>もっとゲスの回数を少なくする可能性のあるアルゴリズムは?
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2005年11月30日9:00まで]
[5] その他の制限:なし
よろしくお願いいたします。
0573デフォルトの名無しさん
2005/11/26(土) 15:38:03>%sは何回までなら使用していいのか。
わかりませんが、たとえば128文字ならスペース区切りで
64個の%sを用いればできるらしいのですが、そういった使い方
は禁止と言われました。
2.
>stdinは使うなということか?
日本語がまずかったです。すみません。
stdio.hとstring.hに含まれる標準関数は
使用可能です。
0574デフォルトの名無しさん
2005/11/26(土) 16:05:22とりあえず。
・stdinは使った。
・%sは1度も使ってない。(%*sは1度だけ使った)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1146.c
0575デフォルトの名無しさん
2005/11/26(土) 16:16:13[2] 問題文(含コード&リンク):問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1147.txt
入力データ http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1148.zip
授業中のソース http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1149.c
[3] 環境
[3.1] OS: Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (どちらでも可)
[4] 期限: ([2005年11月28日15:30まで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
制限は特にありません。
完全にお手上げなので、どうかよろしくお願いいたします。
0576デフォルトの名無しさん
2005/11/26(土) 16:20:25ありがとうございました。
これからは気をつけますm(__)m
0577デフォルトの名無しさん
2005/11/26(土) 16:42:00次のメタアルゴリズム(アルゴリズムに対するアルゴリズム)を考える:
入力: アルゴリズム(既知の情報から次のゲスを決める戦略)
出力: 数
1. I = [0,N] とする.
2. これまで得られている情報から,アルゴリズムが x ∈ I を選び出すとき,
I として I∩[0,x) と I∩(x,N] の長いほうを再設定する.
3. I の要素数が 1 になるまで 2 を繰り返す.要素数が 1 ならそれを返す.
このメタアルゴリズムによって得られる数は,構成方法から明らかに
与えられたアルゴリズムの対してその繰り返し回数だけのゲスを必要とする.
その回数は区間の長いほうを常に選んだことから,二分探索以上になる.
従って,任意のアルゴリズムはこのメタアルゴリズムが選ぶ数に対して,
二分探索以上のゲス回数がかかるので,二分探索が最良のアルゴリズム.
0578デフォルトの名無しさん
2005/11/26(土) 17:29:55ン、プロトタイプ宣言して
メイン関数を一番上に持って行けば直ると思うぞ
0579246
2005/11/26(土) 18:20:25度々すみません。教科書片手に戦いましたが、分かりそうにないです。
お手数かけますが、馬鹿な私にも分かるように教えてください。
お願いします。
0580デフォルトの名無しさん
2005/11/26(土) 18:23:17この578が最も好きな事のひとつは
自分で馬鹿だと思ってるやつに『NO』と断ってやる事だ…
0581デフォルトの名無しさん
2005/11/26(土) 19:16:340582デフォルトの名無しさん
2005/11/26(土) 19:44:280583デフォルトの名無しさん
2005/11/26(土) 19:56:35ブロックの先頭以外でのローカル識別子宣言は>>246は禁止。
0584デフォルトの名無しさん
2005/11/26(土) 20:32:41[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1150.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 11月28日まで
[5] その他の制限: 使用する関数はmain関数のみでお願いします。
0585デフォルトの名無しさん
2005/11/26(土) 20:37:40番兵使用/未使用で2通りのマージソートを書けと言うことか
大量にサンプルコードあるんだから自分で探せ
つーか、なんでマージソート書かせておいてmainのみなんだ
別関数化した方が使い回し効いて便利なわけだが
0587デフォルトの名無しさん
2005/11/26(土) 21:01:52>それぞれのデータ列を整列(ソート)させたうえでマージ
>(どちらの解法でも構わない)を行うプログラムを作成せよ。
>(マージソートではないので、各データ列を個別に整列させた後マージを行うこと。)
>ただし、以下の点に注意すること
これのことか
0588デフォルトの名無しさん
2005/11/26(土) 21:04:00広義でのマージソートじゃまいか?
まぁ流し読みだった俺も悪いんだが
0589デフォルトの名無しさん
2005/11/26(土) 22:48:22誰かおせーてくれよん
0590デフォルトの名無しさん
2005/11/27(日) 01:55:25[2] 問題文;ファイルから データを読み込み、人口の多い順に都道府県を出力せよ
[3]環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: lcc-win32
[4] 期限:2005年11月29日火曜
都道府県とそれぞれの人口が書いてあるファイルあって、そこからファイルを読み込むまではできるんですけど、
人口が多い順に並び替えるのが、どうやればいいかわからないんでおしえてください!!
0591デフォルトの名無しさん
2005/11/27(日) 01:57:58データファイルさらせよぼけぇ
0592デフォルトの名無しさん
2005/11/27(日) 02:25:29http://edu.net.c.dendai.ac.jp/ad/1/2005/kadai.html
解る解らない前に、全てのプログラムそのものが全くわからん
どこの参考書にも載ってない。助けてくれ
0593デフォルトの名無しさん
2005/11/27(日) 02:29:06<string>を使っていいか否かによって手間が結構変わる。
0594デフォルトの名無しさん
2005/11/27(日) 03:15:21[2] 問題文:度数分布
関数rand()を使用して0〜9の整数を作る。これを100回実行して、
各数値の出現回数をn[0]〜n[9]の10個の配列にセット、
これを用いて次のような棒グラフを表示するプログラム。
実行例
0:***********
1:*********
2:*****
3:*****************
4:***********
5:**********
6:******
7:**********
8:**********
9:***********
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 11月28日20時まで
[5] その他の制限: 配列を使う
0595デフォルトの名無しさん
2005/11/27(日) 03:16:27条件もヒントも無視したが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1151.txt
0596デフォルトの名無しさん
2005/11/27(日) 03:25:29#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, n[10];
srand(time(NULL)); // 乱数系列初期化
for( i = 0 ; i < 10 ; i++ ) n[i] = 0; // 初期化
for( i = 0 ; i < 100 ; i++ ) n[rand()%10]++;
for( i = 0 ; i < 10 ; i++ ) {
printf("%d:", i);
for( ; n[i] > 0 ; n[i]-- ) printf("*"); // putchar('*'); も可
printf("\n"); // puts(""); も可
}
return 0;
}
0597デフォルトの名無しさん
2005/11/27(日) 03:26:52二分探索木版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1152.cpp
strcpyとかぜんぶ作ってやろうとしたが面倒なんでとちゅうでやめた
0598595
2005/11/27(日) 03:32:39× int pos = min( line.find(' '), line.find('\n') );
○ int pos = min( line.find(' '), line.find('\t') );
× m.insert( Pair( max(pos,INT_MIN), line ));
○ m.insert( Pair( pos, line ));
0599デフォルトの名無しさん
2005/11/27(日) 04:11:09http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1153.txt
0600デフォルトの名無しさん
2005/11/27(日) 04:31:27[2] 問題文(含コード&リンク): ポインタ変数を用いて入力した文字列を反転するプログラム
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: どちらでも可
[4] 期限: [無期限]
[5] その他の制限: #include<stdio.h>だけ
0601デフォルトの名無しさん
2005/11/27(日) 04:33:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1154.c
>(追加 2005/11/9 午後) 但し、一行の文字制限が無いと入力バッファの処理が複雑になる場合、
>一行を高々 80 文字と仮定し、一行を表す文字列としてだけ配列を使っても良い。
を逆手にとってやった。ソートを組む気力なかったです
0602デフォルトの名無しさん
2005/11/27(日) 04:42:25#include <stdio.h>
void st_reverse(char *,char *);
int main() {
char s[100],d[100];
scanf("%[^\n]",s);
st_reverse(s,d);
printf("_%s_\n_%s_\n",s,d);
return 0;
}
void st_reverse(char *s,char *d){
char* t=s;
if(*t){
while(*(++t));
d-=s-t;*d--=0;t=s;
while(*t)*d--=*t++;
}else *d^=*d;
}
0603デフォルトの名無しさん
2005/11/27(日) 05:00:180604デフォルトの名無しさん
2005/11/27(日) 05:15:57http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1155.c
なぜ二分探索木ばっかりかだって?
簡単な上にそこそこ早いからさ
0605デフォルトの名無しさん
2005/11/27(日) 05:20:190606デフォルトの名無しさん
2005/11/27(日) 08:48:11神経衰弱
おもしろそうなんでやってみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1156.zip
0607デフォルトの名無しさん
2005/11/27(日) 09:15:38日本語ファイル名は止めようぜ・・・
0608246
2005/11/27(日) 10:44:08「remove」の所を強引に「remo」に変えた所、エラーは減りました。
エラー E2140 test.c 12: ここでは宣言はできない(関数 add )
警告 W8070 test.c 17: 関数は値を返すべき(関数 remo )
頑張ってみたけど分かりません。助けてください。お願いします。
0609デフォルトの名無しさん
2005/11/27(日) 10:46:5981行以上のファイルはどうするんだ?
0610デフォルトの名無しさん
2005/11/27(日) 10:52:25[2]10000 までのすべての素数をできるだけ効率のいい方法で求めなさい。
[3] 環境
[3.1] Windows
[3.3] C
[4] 11月29日火曜まで
[5] とくになし
よろしくお願いいたします。
0611デフォルトの名無しさん
2005/11/27(日) 10:56:35以上
0612デフォルトの名無しさん
2005/11/27(日) 11:01:390613デフォルトの名無しさん
2005/11/27(日) 11:03:150614デフォルトの名無しさん
2005/11/27(日) 11:25:19[2] 問題文(含コード&リンク): abc.txtからデータを読み込み、人口の多い都道府県順に出力せよ
[3] 環境 [3.1] OS: Windows
[3.2] コンパイラ名とバージョン: lcc
[3.3] 言語: C言語
[4] 期限: 火曜日まで
[5] その他の制限:
今、配列と構造体をやっています。「abc.txt」とは、
北海道56590
青森1462
岩手1402
宮城2373
秋田116
山形1230
福島2113
茨城299
このようなファイルです。ちなみに、
#include <stdio.h>
int main(){
char ken[12];
double num;
FILE *fp;
fp=fopen("pop.txt","r");
while(fscanf(fp,"%s\t%lf",ken, &num)!=EOF){
printf("%s\t%f \n", ken, num );
} return 0; }
に付け加えるようにと言われました。画面に表示されるのは、県名のみです。
いろいろごちゃごちゃしていますが、なにとぞよろしくお願いします。
0615デフォルトの名無しさん
2005/11/27(日) 11:27:22ファイル名は何でもいいです。
0616デフォルトの名無しさん
2005/11/27(日) 11:38:34[2] 問題文(含コード&リンク): 画像一画素あたりのRGBそれぞれの平均の値を数値で取得するプログラムを書け。
[3] 環境
[3.1] OS: FreeBSD
[3.3] C
[4] 11月30日水曜まで
[5] とくになし
0617デフォルトの名無しさん
2005/11/27(日) 11:59:23#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define DATA_MAX 256
typedef struct {char ken[12]; double num; } data_t;
int cmp_of_num(const void *a, const void *b){ return (*(data_t**)b)->num -(*(data_t**)a)->num; }
int main()
{
data_t DataBase[DATA_MAX] = {0};
data_t *pDataBase[DATA_MAX] = {0};
int i, numOfData;
FILE *fp;
if(!(fp = fopen("abc.txt","r"))) return -1;
for(i = 0; i < DATA_MAX; ++i)
{
if(i == DATA_MAX || fscanf(fp,"%s\t%lf",DataBase[i].ken, &DataBase[i].num) == EOF) break;
pDataBase[i] = &DataBase[i];
}
numOfData = i;
qsort(pDataBase, numOfData, sizeof(data_t*), cmp_of_num);
for(i = 0; i < numOfData; ++i) printf("%s\t%f \n", pDataBase[i]->ken, pDataBase[i]->num );
close(fp);
return 0;
}
0618デフォルトの名無しさん
2005/11/27(日) 12:04:56[2] 問題文:
http://ysserve.int-univ.com/sugsi/Lecture/c2/e_07-05-04.html
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:11/30まで
[5] その他の制限:課題の一番下にあるプログラムの大枠に従って作成してください。
よろしくお願いします。
0619デフォルトの名無しさん
2005/11/27(日) 12:17:55>>470
誰か解けた?答えが見当たらない。
問題文の意味はなんとか分かる。
が、プログラム作成はオレには無理だorz
そもそもC言語でできるのかな?
0620デフォルトの名無しさん
2005/11/27(日) 13:11:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1157.txt
0621デフォルトの名無しさん
2005/11/27(日) 13:14:38テスト時は109万行(50MB)のテキストで試したけど
1行80字以上のテキストに仮対応(1行1024文字までだけど)するなら
#include<stdio.h> の次行に
#include N (1024) 追加
char d[81]; → char d[N+1];
for(i=0;i<81;i++){ → for(i=0;i<N+1;i++){
while(fgets(d,80,f)!=NULL){ → while(fgets(d,N,f)!=NULL){
if(!a[i] || i>80)return 0; → if(!a[i])return 0;/* やっぱいらないか */
の5ヶ所を修正
また20-22行のwhile文内でiより大きい最小の整数を見つけておくと
無駄なループを省ける
inti; → int i=0,t,c; に修正後
while(i<N+1){
fseek(f,0,SEEK_SET);/* 初めから読み直し */
t=N+1;
while(fgets(d,N,f)!=NULL){
if((c=s(d))==i) fputs(d,g);
/* iより大きい最小の空白開始位置がどこにあるかの目星をつける */
if(c>i && c<=t) t=c;
}
i=t;
}
いわゆる char d[N+1] が気に入らないというのならお手上げですorz
0622デフォルトの名無しさん
2005/11/27(日) 13:28:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1158.c
0623デフォルトの名無しさん
2005/11/27(日) 14:13:59データ形式定義よろ。
まあこういう課題ならふつうはJPEG2000だろうが。
0624デフォルトの名無しさん
2005/11/27(日) 14:48:42[2]簡単なDBMSを作る
[3]windowsXP
C言語
[4]2005/11/28 (月)
問題 search1.txtまたはsearch2.txtを読み込んで、次にそれら1行目に書かれている
gakusei.csvを読み込み、2行目に書かれている項目を表示する。
↓search1.txtの中身
gakusei.csv
学籍番号,氏名,電話番号
↓search2.txtの中身
gakusei.csv
氏名,住所
↓gakuseki.csvの中身
学籍番号,氏名,住所,電話番号
401,市川雅紀,つくば市,2985421
402,海老原徹,潮来市,2894654
403,小林誠二,水戸市,2924583
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1159.lzh
マジ切羽詰ってるんでよろしくお願いしますm(__)m
0625伝説新人タクシ
2005/11/27(日) 14:59:070626デフォルトの名無しさん
2005/11/27(日) 15:02:100627デフォルトの名無しさん
2005/11/27(日) 15:02:31つまりsearch*.txtを読み込んで
select (2行目) from (1行目);
だと解釈しろってことか?
0628デフォルトの名無しさん
2005/11/27(日) 15:12:35perl向きだ。
0629伝説新人タクシ
2005/11/27(日) 15:13:04最低レベルのDB作るにしてもレベル低い、
DBを実装を除いて教えているかと思うと、まったくの無知。
これじゃ、Cを教えているだけwwww
0630デフォルトの名無しさん
2005/11/27(日) 15:16:15perlならcsv読み込んで、一行目を,で区切った上でハッシュのキーにしておけば
楽に読み出せるもんな
C++ならmap使えばどうにか出来なくも無いが、面倒だな
Cじゃ何もないから自力でやらないとダメだし面倒杉
0631デフォルトの名無しさん
2005/11/27(日) 15:24:03Accessとかを習う授業ではなく、データベース管理はどういう仕組みになってるかって言う
授業なもので・・・orz
>>627
SQLだとそういうことと思います。
0632デフォルトの名無しさん
2005/11/27(日) 15:27:170633624
2005/11/27(日) 15:41:50一応先生がそのプログラムをテストできる言語なら何でも良いとのことです。
それからソースコードと実行例のみ提出すれば良いらしいです。
0634デフォルトの名無しさん
2005/11/27(日) 15:47:13そもそも文字列処理はPerlの十八番
言語指定無しならわざわざC/C++でやる意味が無い
0635ぼるじょあ ◆yBEncckFOU
2005/11/27(日) 15:50:100636デフォルトの名無しさん
2005/11/27(日) 16:34:51>>614
0637デフォルトの名無しさん
2005/11/27(日) 16:37:00パワポ入ってないので詳しい定義等がわからn
0638デフォルトの名無しさん
2005/11/27(日) 17:58:48計算可能である限り C で書けんことはない.
が,俺には 470 の問題の意味が全然わからんので無理.
これまで回答が無いのも問題をきちんと理解できた奴が居ないからだと思ってた.
具体的に何をしたらいいか,きちんとした定義で書いてくれれば,やったるよ.
0639デフォルトの名無しさん
2005/11/27(日) 18:07:04char d[N+1] が気に入らない、以前に
プログラムのボトルネックとなるファイル入出力を
無駄に81回も1024回も繰り返して、更に肥大させてどうするんだよ
プログラミングじゃなくて計算機の構造を勉強しなおせ
0640619
2005/11/27(日) 18:33:38http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1162.zip
ppt から wmf にしてみた。
0641デフォルトの名無しさん
2005/11/27(日) 19:07:00[2] 問題文(含コード&リンク): ポインタ変数を用いて入力した文字列から指定した文字を検索するプログラム。
[3] 環境
[3.1] OS:Windows/Linux
[3.2] コンパイラ名とバージョン: .NET
[3.3] 言語: c++
[4] 期限: 無期限
[5] その他の制限:
#include<stdio.h>
int main(void)
だけでお願いします。
0642デフォルトの名無しさん
2005/11/27(日) 19:08:310643デフォルトの名無しさん
2005/11/27(日) 19:12:28「誤り訂正」というよりも,「区間に渡る xor」だけを用いて,ビット列の 1 になってる場所を
特定して 0 に置き換えていくときの「区間に渡る xor」の回数を求める感じなのか.
図5.wmf, ブロックのサイズは,全ビット数/誤り個数 に定められてるものなの?
あと,「半分にしたブロックまで記憶」って意味がわからん.
0644デフォルトの名無しさん
2005/11/27(日) 20:13:42ジャンクすぽーつみている俺がやってきましたよ。
#include<stdio.h>
int main(void)
{
char src[1000]="abcdefghijklmnopqrstuvwxyz";
char dst[1000]="mno";
char *p1,*p2,*d;
for(p1=src;*p1;p1++){
for(p2=p1,d=dst;(*p2==*d)&&(*p2);++p2,++d);
if(!*d) printf("%s\n",p1);
}
return 0;
}
0645デフォルトの名無しさん
2005/11/27(日) 20:33:190646デフォルトの名無しさん
2005/11/27(日) 20:44:44[2] 問題文(含コード&リンク): 2次元配列を利用してパスカルの三角形を 作るプログラム
ただし、行数は入力して指定出来るようにすること(最大で16行まで)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 2005年12月2日23:59まで
[5] その他の制限: 表示された際、二等辺三角形型ではなく、直角三角形型で表示する事
※パスカルの三角形:頂点は全て1、それ以外は全て(上の数)+(左上の数)
例)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
0647646
2005/11/27(日) 20:46:10よろしくお願いします
0648デフォルトの名無しさん
2005/11/27(日) 21:15:43int comb(int,int);
int main(){
int i,j;
int n=16;
for(i=1;i<=n;i++){
for(j=0;j<=i;j++){
printf("%d ",comb(i,j));
}
putchar('\n');
}
return 0;
}
intcomb( int m, int n )
{
if( (m>n) && (n>0) ) {
returncomb(m-1,n-1) + comb(m-1,n);
} else {
return1;
}
}
0649デフォルトの名無しさん
2005/11/27(日) 21:31:23char c,s[64],*p=s;
fgets(s,64,stdin);
c=getchar();
for(;(*p!=c)!='\0';p++);
if(!*p) puts("not found");
else printf("%d番目",p-s);
0650デフォルトの名無しさん
2005/11/27(日) 21:50:42[2] 問題文: 1999リットルの水が入った容器Aと、同じ大きさのからの容器B がある。
1 回目は、A の1/2 の量をB へ移し、2 回目は、B の1/3 をA に移す、
3 回目は、A の1/4 をB へ移す、次はB の1/5 をA へ・・・・
この方法で、次々と水を移す。1999回目にA からB へ移したとき、
B の容器には、何リットルの水が入っているかを求めるプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 11月29日まで
[5] その他の制限: 特にありません
0651デフォルトの名無しさん
2005/11/27(日) 22:06:47#include <stdio.h>
int main(){
double a = 1999.0;
double b = 0.0;
int i;
for(i = 1; i <= 1999; ++i){
if( i % 2 ){
b += a /= 2.0;
}else{
a += b / 3.0;
b -= b / 3.0;
}
}
printf("A = %f\n", a);
printf("B = %f\n", b);
return 0;
}
0652651
2005/11/27(日) 22:07:410653デフォルトの名無しさん
2005/11/27(日) 22:11:05#include <stdio.h>
int main(){
double a = 1999.0;
double b = 0.0;
double c = 2.0;
int i;
for(i = 1; i <= 1999; ++i, ++c){
if( i % 2 ){
b += a / c;
a -= a / c;
}else{
a += b / c;
b -= b / c;
}
}
printf("A = %f\n", a);
printf("B = %f\n", b);
return 0;
}
0654デフォルトの名無しさん
2005/11/27(日) 22:14:440655デフォルトの名無しさん
NGNGそれだと一回目に3で割ってませんか?
>> 1 回目は、A の1/2
0656デフォルトの名無しさん
2005/11/27(日) 22:27:32gcc と vc7 では使えるようだ。
>>655
んなことはない。
0658デフォルトの名無しさん
2005/11/27(日) 22:36:46関係ない.for の第三項はループの終端で評価される.
0659デフォルトの名無しさん
2005/11/27(日) 22:38:23漏れもそのソースと同じのを上げようとしてしまったやww
0660619
2005/11/27(日) 23:50:06一番大きいブロックが 全ビット数/シャッフルした時の誤り個数 。
「半分にしたブロックまで記憶」 は要するに図4で一番下の状態になったら
0000 0 0 00 00000000 1010 0 0 00 10001000 … (α)
のブロックの塊で記憶しているということだろう。
もちろん各ブロックには誤りがない又は偶数の状態。
というか図4の一番下の区切り方がまずいなぁ。
(α)のように区切っていてくれれば分かりやすいのに。
もちろん図5の上から1番目がまずいのは当然として、3番目、4番目もまずい。
図5の上から3番目の緑の部分は
0 0 00 1100 00000000
のブロックの塊、
図5の上から4番目の訂正後はおそらく
0000 0 0 00 00000000 00 0 0 0 0 00 0 0 00 0000
のブロックの塊で記憶しているということのはず。
0661おーすけ
2005/11/28(月) 00:01:550662デフォルトの名無しさん
2005/11/28(月) 00:05:47[2]問題:
要素数[20]、マイナスになったら終了。
入力した数の分だけ*で表示。
実行例
データ入力:3
データ入力:1
データ入力:4
データ入力:-1
結果
[0]:***
[1]:*
[2]:****
[3]環境
[3.1]OS:Windows
[3.2]コンパイラ名とバージョン:bcc
[3.3]言語:C
その他の制限:特になしです
問題うろ覚えなのですが、よろしければお願いします。
0663デフォルトの名無しさん
2005/11/28(月) 00:07:36もう一から構成しなおしたほうが早くないか
0664デフォルトの名無しさん
NGNG#include <stdio.h>
void main()
{
int n[20];
int cnt = 0;
int i , k;
do {
scanf("%d" , &n[cnt]);
} while (n[cnt++] >= 0);
for (i = 0 ; i < cnt - 1 ; i++) {
printf("[%2d]:" , n[i]);
for (k = 0 ; k < n[i] ; k++) printf("*");
printf("\n");
}
}
どうでしょうか
0666デフォルトの名無しさん
2005/11/28(月) 00:17:22×printf("[%2d]:" , n[i]);
○printf("[%2d]:" , i);
下から5行目
0667デフォルトの名無しさん
2005/11/28(月) 00:21:32一から構成したら問題にならん.全部 0 に置き換えれば済んでしまう.
0668デフォルトの名無しさん
2005/11/28(月) 00:21:34状態(1):エラー数6984
シャッフル後:当然6984
状態(2):エラー数5951
ぜんぜんへらねぇ
0669デフォルトの名無しさん
2005/11/28(月) 00:36:35[1] 授業単元:
[2] 問題文(含コード&リンク):ポインタ変数を用いて入力した文字列のアルファベットをカウントするプログラム
例
abcdABCDE
a,A=2
b,b=2
c,C=2
d,D=2
e,E=1
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: c++
[4] 期限: なし
[5] その他の制限:
#include<stdio.h>
int main(void)
{
0670デフォルトの名無しさん
2005/11/28(月) 00:49:25#include <stdio.h>
int main(){
char buf[80],c,*pc;
pc = (char*)malloc(sizeof(char)*80);
int count[26]={0},i;
fgets(buf,80,stdin);
sscanf(buf,"%s",pc);
while(*pc!='\0'){
putchar(*pc);
if((*pc)>='A' && (*pc)<='Z')count[*pc-'A']++;
if((*pc)>='a' && (*pc)<='z')count[*pc-'a']++;
pc++;
}
for(i=0;i<26;i++){
if(count[i]!=0)printf("%c,%c=%d\n",'a'+i,'A'+i,count[i]);
}
return 0;
}
0671デフォルトの名無しさん
2005/11/28(月) 00:50:220672619
2005/11/28(月) 01:02:32>>667
「一から構成」の意味を取り違えて解釈してしまったかもしれないけど、
状態1の?番目→状態2の?番目は、1→1 2→50001 3→2 4→50002 のようでなくても、
ランダムにシャッフルして
状態1の何番目が状態2の何番目になったかが追跡できればいいんじゃないのかな?
全ビット数/シャッフルした時の誤り個数 にするのは、
出力する「誤りの数を確かめる回数」を一番少なくするためだと思う。
0673デフォルトの名無しさん
2005/11/28(月) 01:07:45状態(1) エラービット数: 6808 エラー率:0.06808000 ブロックサイズ: 8
状態(2) エラービット数: 4306 エラー率:0.04306000 ブロックサイズ: 16
状態(1) エラービット数: 4306 エラー率:0.04306000 ブロックサイズ: 8
状態(2) エラービット数: 2302 エラー率:0.02302000 ブロックサイズ: 16
状態(1) エラービット数: 2302 エラー率:0.02302000 ブロックサイズ: 8
状態(2) エラービット数: 874 エラー率:0.00874000 ブロックサイズ: 16
状態(1) エラービット数: 874 エラー率:0.00874000 ブロックサイズ: 8
状態(2) エラービット数: 288 エラー率:0.00288000 ブロックサイズ: 16
状態(1) エラービット数: 288 エラー率:0.00288000 ブロックサイズ: 8
状態(2) エラービット数: 62 エラー率:0.00062000 ブロックサイズ: 16
状態(1) エラービット数: 62 エラー率:0.00062000 ブロックサイズ: 8
状態(2) エラービット数: 10 エラー率:0.00010000 ブロックサイズ: 16
状態(1) エラービット数: 10 エラー率:0.00010000 ブロックサイズ: 8
状態(2) エラービット数: 0 エラー率:0.00000000 ブロックサイズ: 16
パリティ回数97369
追跡するとどれだけ減るのやら
0674デフォルトの名無しさん
2005/11/28(月) 01:14:23出題者のほうもあまり知識がないんじゃないか?
0675デフォルトの名無しさん
2005/11/28(月) 02:22:40[2] 問題文:
以下のクラス MyPair に対し, 演算子 == , !=, >=, >, <=, < を定義して下さい. ただし, これらの演算子は以下の性質を満たすようにして下さい.
これらは全て MyPair 同士の比較である.
fst が等しいとき, snd を比べてその比較の結果とする.
fst が異なるとき, fst を比べてその比較の結果とする.
それと下記を実行するためのmain文も書いてください
class MyPair {
int fst;
int snd;
public:
MyPair(int f=0, int s=0) {
fst = f;
snd = s;
}
int get_fst() const { return fst; }
int get_snd() const { return snd; }
};
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio.NET
[3.3] 言語: C++
[4] 期限: 11月28日
[5] その他の制限:
0676619
2005/11/28(月) 02:37:02状態3は無視?んまぁ、そこまで減らないと思うけど。
>>674
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1164.txt
1125.txtの問題文を改良、というか出題者の意図に近くしたはずのもの。
難しいから、
できない場合は、なるべく近いプログラムを作成する
ということを書いているのだろうなぁ。
0677673
2005/11/28(月) 02:41:01しかも下手打った場合状態10くらいまでいくこともあるし
>>675
#include <iostream>
using namespace std;
class MyPair {
int fst;int snd;
public:
MyPair(int f=0, int s=0) {fst = f;snd = s;}
bool operator ==(const MyPair mp){if(this->fst!=mp.fst)return this->fst == mp.fst;else return this->snd == mp.snd;}
bool operator !=(const MyPair mp){if(this->fst!=mp.fst)return this->fst != mp.fst;else return this->snd != mp.snd;}
bool operator <=(const MyPair mp){if(this->fst!=mp.fst)return this->fst <= mp.fst;else return this->snd <= mp.snd;}
bool operator <(const MyPair mp){if(this->fst!=mp.fst)return this->fst < mp.fst;else return this->snd < mp.snd;}
bool operator >=(const MyPair mp){if(this->fst!=mp.fst)return this->fst >= mp.fst;else return this->snd >= mp.snd;}
bool operator >(const MyPair mp){if(this->fst!=mp.fst)return this->fst > mp.fst;else return this->snd > mp.snd;}
int get_fst() const { return fst; }
int get_snd() const { return snd; };
void isTrue(bool b){if(b)cout << "true" << endl;else cout << "false" << endl;}
int main(){
MyPair mp1(2,6);MyPair mp2(2,4);
isTrue(mp1==mp2);
isTrue(mp1!=mp2);
isTrue(mp1>=mp2);
isTrue(mp1>mp2);
isTrue(mp1<=mp2);
isTrue(mp1<mp2);
return 0;}
0678デフォルトの名無しさん
2005/11/28(月) 02:43:21何もC++に直さなくて、最初の「ひまわり」で実装したバージョンで良くないか?
0679デフォルトの名無しさん
2005/11/28(月) 02:44:25#include <iostream>
using namespace std;
class MyPair {
int fst;int snd;
public:
MyPair(int f=0, int s=0) {fst = f;snd = s;}
bool operator ==(const MyPair mp){
if(this->fst!=mp.fst)return this->fst == mp.fst;else return this->snd == mp.snd;}
bool operator !=(const MyPair mp){
if(this->fst!=mp.fst)return this->fst != mp.fst;else return this->snd != mp.snd;}
bool operator <=(const MyPair mp){
if(this->fst!=mp.fst)return this->fst <= mp.fst;else return this->snd <= mp.snd;}
bool operator <(const MyPair mp){
if(this->fst!=mp.fst)return this->fst < mp.fst;else return this->snd < mp.snd;}
bool operator >=(const MyPair mp){
if(this->fst!=mp.fst)return this->fst >= mp.fst;else return this->snd >= mp.snd;}
bool operator >(const MyPair mp){
if(this->fst!=mp.fst)return this->fst > mp.fst;else return this->snd > mp.snd;}
int get_fst() const { return fst; }
int get_snd() const { return snd; }};
void isTrue(bool b){if(b)cout << "true" << endl;else cout << "false" << endl;}
int main(){
MyPair mp1(2,4);MyPair mp2(2,4);
isTrue(mp1==mp2);
isTrue(mp1!=mp2);
isTrue(mp1>=mp2);
isTrue(mp1>mp2);
isTrue(mp1<=mp2);
isTrue(mp1<mp2);
return 0;}
0680デフォルトの名無しさん
2005/11/28(月) 03:02:52一度にどっさり覚えるの苦手なんで、毎月チマチマと
新鮮な気分で習得していきたいんです。
雑誌買うと、真新しい気分になれるじゃん。
0681デフォルトの名無しさん
2005/11/28(月) 03:03:58今月はクラス、来月はポインタやりますよー
なんて初歩的なのはないと思うぞ
0682デフォルトの名無しさん
2005/11/28(月) 03:16:390683デフォルトの名無しさん
2005/11/28(月) 03:36:08mallocとは?
0684デフォルトの名無しさん
2005/11/28(月) 04:10:06#include <stdio.h>
int main(void)
{
int a[] = {3, 8, 11, 19, 24, 30, 37, 43};
int b[] = {5, 13, 24, 31};
int c[20] = {0};
int asize = sizeof(a) / sizeof(int), bsize = sizeof(b) / sizeof(int), i = 0, j = 0, num = 0;
do {
if (i < asize && j < bsize) {
if (a[i] < b[j])
c[num++] = a[i++];
else
c[num++] = b[j++];
} else if (i < asize)
c[num++] = a[i++];
else /* j < bsize */
c[num++] = b[j++];
} while (i < asize || j < bsize);
for (i = 0; i < num; i++)
printf("%d ", c[i]);
putchar('\n');
return 0;
}
0685デフォルトの名無しさん
2005/11/28(月) 04:41:10>>670は>>669あて
0686デフォルトの名無しさん
2005/11/28(月) 04:53:55chomp ($src = <STDIN>);
open (FS, "< $src") || die "can't open $src\n";
chomp ($from = <FS>);
open (F, "< $from") || die "can't open $from\n";
chomp ($category = <F>);
($no, $name, $addr, $tel) = split(",", $category);
%data = ($no => [], $name => [], $addr => [], $tel => []);
$i = 0;
foreach $line (<F>)
{
chomp $line;
($data{$no}->[$i], $data{$name}->[$i], $data{$addr}->[$i], $data{$tel}->[$i]) = split(",", $line);
$i++;
}
chomp ($key = <FS>);
@keys = split(",", $key);
print "$_ " foreach (@keys);
print "\n";
$cnt = $data{$no};
foreach $l (0..@$cnt-1)
{
print "$data{$_}->[$l] "foreach (@keys);
print "\n";
}
close(FS);
close(F);
文字コードとか考慮してない
0687614
2005/11/28(月) 08:20:58Tabが間に入っていることにも察してくれたことには感謝です。
本当は都道府県が47個なので読み込むのは47回でよかったのですが、
わざわざdefineとか使わせてしまってすみませんでした。
今後気をつけます。
後は自分で調整にがんばってみようと思います。
できないかもしれませんが・・・。
本当にありがとうございました。
0688デフォルトの名無しさん
2005/11/28(月) 09:04:05学科が同じなだけなのか
0690デフォルトの名無しさん
2005/11/28(月) 10:22:36[2] 問題文:
以下のプログラムのキャスト記法を, 正しいC++のキャスト演算子に直して下さい.
#include <iostream>
void func(int* x)
{
cout << *x << endl;
}
int main()
{
const int a=1;
double b=1.2;
unsigned int c = ('a' << 24) | ('b' << 16) | ('c' << 8) | 'd';
const int* d=&a;
func((int *)d);
cout << (int)b << endl;
cout << ((char *)(&c))[0] << endl;
cout << ((char *)(&c))[1] << endl;
cout << ((char *)(&c))[2] << endl;
cout << ((char *)(&c))[3] << endl;
return 0;
}
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio.NET
[3.3] 言語: C++
[4] 期限: 12月10日
[5] その他:
0691デフォルトの名無しさん
2005/11/28(月) 11:43:335A+2B-2C+D=0
3A+B-C+D=0
7A+2B+C-3D=0
この連立一次方程式をガウス・ザイデル法で解くプログラムの作成
なんですが
これを参考にしても出来ません
http://www5.airnet.ne.jp/tomy/cpro/sslib6.htm
どなたかお願いします
0692デフォルトの名無しさん
2005/11/28(月) 13:33:39こういうことでいいのか?
#include <iostream>
void func(int* x)
{
cout << *x << endl;
}
int main()
{
const int a=1;
double b=1.2;
unsigned int c = ('a' << 24) | ('b' << 16) | ('c' << 8) | 'd';
const int* d=&a;
func(const_cast<int*>( d ));
cout << static_cast<int>( b ) << endl;
cout << (reinterpret_cast<char*>( &c ))[0] << endl;
cout << (reinterpret_cast<char*>( &c ))[1] << endl;
cout << (reinterpret_cast<char*>( &c ))[2] << endl;
cout << (reinterpret_cast<char*>( &c ))[3] << endl;
return 0;
}
0693デフォルトの名無しさん
2005/11/28(月) 14:02:48[2] 問題文(含コード&リンク):
ローン返済プログラム
・元利均等方式
・ボーナス返済はなし
・月払い
・単位期間における支払総額 = 当初借入額 × 利率/(1-(1+利率))^(-返済回数)
・月の支払額と、支払い総額を求め表示する
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ 5.5
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 2005年12月01日
[5] その他の制限:
習ったもの↓
・printf
・scanf
・基本的な算術演算
・if
・for、while、do-while
・多次元配列
#include <stdio.h>
void main ( void ){
でお願いします。
初心者なので初心者ぽくお願いします…。
うちのガッコのプログラミングはあまり授業が進まない…。
進んでもついていけないけどorz
0694デフォルトの名無しさん
2005/11/28(月) 14:16:27[2] 問題文(含コード&リンク):
1:いくつかの要素を持つ配列のなかから最大値を求めるユー
ザー関数を作成。
2:文字列のコピーを行うユーザー関数を作成。標準関数は使
用しない。
[3] 環境
[3.1] OS: /Linux/
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: すぐにお願い致します
[5] その他の制限:ポインタを少し習いました。
今授業中なんでできれば早めにお願い致します。
0695デフォルトの名無しさん
2005/11/28(月) 14:41:35進まない方がいいかもね。
0696デフォルトの名無しさん
2005/11/28(月) 14:42:13#include <stdio.h>
int max(int *array, int size)
{
int max;
int i;
max=array[0];
for (i=1 ; i<size ; i++)
{
if (array[i]>max)
{
max=array[i];
}
}
return max;
}
int main()
{
int array[]={1,5,6,3,2};
printf("%d\n", max(array, sizeof(array)/sizeof(array[0])));
return 0;
}
0697デフォルトの名無しさん
2005/11/28(月) 14:42:22キーボードから入力された5つの整数を配列の中に保存し、それを表示するプログラムを作れ
で授業終わりまでに仕上げないといけません^^;
先輩方知恵を貸してくださいTT
0698デフォルトの名無しさん
2005/11/28(月) 14:47:31#include <stdio.h>
void my_string_copy(char *src, char *dest)
{
while(*src!='\0')
{
*dest=*src;
dest++;
src++;
}
*dest='\0';
}
int main()
{
char *src="fuck'n jap";
char dest[80];
my_string_copy(src, dest);
puts(src);
puts(dest);
}
0699デフォルトの名無しさん
2005/11/28(月) 14:52:13#include <stdio.h>
int main()
{
char buf[1919];
int num[5];
int i;
for (i=0 ; i<5 ; i++)
{
fgets(buf, sizeof(buf)-1, stdin);
sscanf(buf, "%d", &num[i]);
}
for (i=0 ; i<5 ; i++)
{
printf("%d\n", num[i]);
}
}
0700デフォルトの名無しさん
2005/11/28(月) 14:57:38意味がわからないですけど、マジでそれしか習ってないんでorz
0701デフォルトの名無しさん
2005/11/28(月) 15:04:53そんな風にはできますか??
0702デフォルトの名無しさん
2005/11/28(月) 15:11:08#include <stdio.h>
int main()
{
int num[5];
int i;
for (i=0 ; i<5 ; i++)
{
scanf("%d", &num[i]);
}
for (i=0 ; i<5 ; i++)
{
printf("%d\n", num[i]);
}
}
0703デフォルトの名無しさん
2005/11/28(月) 15:18:340704デフォルトの名無しさん
2005/11/28(月) 15:20:41平気
0705デフォルトの名無しさん
2005/11/28(月) 15:22:32雰囲気なのですが・・・
0706デフォルトの名無しさん
2005/11/28(月) 15:24:43となりの奴が間違ってる
好評価を得るチャンス
0707デフォルトの名無しさん
2005/11/28(月) 15:27:01今日は初期化の授業をしております
0708デフォルトの名無しさん
2005/11/28(月) 15:43:32渡す配列が、「要素全部」なのか「一つの要素だけ」なのかわかりません。
見回りの院生に聞いたら「ハァ?」みたいな顔された・・・orz
質問が悪いのかも、意味補完して理解できる人オシエテクレ
0709デフォルトの名無しさん
2005/11/28(月) 15:46:23sizeof(buf)から1引いてるのは何かのトラップですか?
0710デフォルトの名無しさん
2005/11/28(月) 15:46:430711名無し
2005/11/28(月) 15:47:09の期限が近いのでよろしくお願いします。
0712デフォルトの名無しさん
2005/11/28(月) 15:47:36要するに、配列の先頭要素のポインタです。
0713デフォルトの名無しさん
2005/11/28(月) 15:48:05上げんなやスレ違いヴォケ帰れ
0714デフォルトの名無しさん
2005/11/28(月) 15:51:40>>709
fgets manpageより抜粋
fgets() は stream から最大で size - 1 個の文字を読み込み、
s が指すバッファに格納する。
読み込みは EOF または改行文字を読み込んだ後で停止する。
読み込まれた改行文字はバッファに格納される。
'\0' 文字が一つバッファの中の最後の文字の後に書き込まれる。
なんで、確かにいらないですね。
0715デフォルトの名無しさん
2005/11/28(月) 17:01:18いまだにわかんね
締め切りが…
0716デフォルトの名無しさん
2005/11/28(月) 17:12:41去年は2ch又はプログラミング掲示板に投稿された事が坂本先生に発覚。
そのプログラムを使用した人は100%落ちた。その数は全体の6割強。
この掲示板を見てる人はお前さんが思ってるよりもずっと多い、今回も同じだろ。
賢いあの先生のことだ・・・見て無いはずがないし生徒じゃ到底気づかない罠を仕掛けてるに決まってる。
0717坂本
2005/11/28(月) 17:45:58補足すると、別に 2ch で書かれたプログラムだから落したわけではないよ。
問題のプログラムは Java で書かれていたもの。
実行結果を読むと明白に問題を解いてないことが分かるのに
それをチェックもせずに「正しく動作した」とか書いて来たから不合格になっただけ。
今回の課題の「罠」は他人が作ったプログラム程レポートが書きづらくなっているだけ。
他に裏は無いよ。まあ課題 2 も同じ人にプログラムを書いてもらってね。
# この一行でパニックになっている人がいるかも
0718デフォルトの名無しさん
2005/11/28(月) 18:07:326割がJavaで書いてくるとは... お疲れ様です。
0719デフォルトの名無しさん
2005/11/28(月) 18:09:14教えて差し上げます。
11/30の12:00が締め切りです。
0720デフォルトの名無しさん
2005/11/28(月) 18:10:370721デフォルトの名無しさん
2005/11/28(月) 18:13:08sageくらい小学生でも知ってるが・・・
0723デフォルトの名無しさん
2005/11/28(月) 18:17:31社会に出たほうがいいよ。
0724デフォルトの名無しさん
2005/11/28(月) 18:30:53int main(int argc, char* argv[])
{
char buf[5];
int guess_number,lower,higher;
printf("Think A number from 0 to %d.\n" , N);
lower=0; higher=N;
do{
guess_number = (lower + higher)/2;
printf("I guess %d , how about it is? ->" , guess_number);
fgets(buf,sizeof(buf),stdin);
switch (buf[0]){
case 'L':higher = guess_number-1; break;
case 'H':lower = guess_number+1; break;
}
}while(buf[0]!='C');
printf("Number = %d\n",guess_number);
return 0;
}
0725デフォルトの名無しさん
2005/11/28(月) 18:32:49「ここに書き込んでる時点で」って言いたいが、どいつもこいつも揃って馬鹿ばっかだな(pgr
0726デフォルトの名無しさん
2005/11/28(月) 18:33:400727デフォルトの名無しさん
2005/11/28(月) 18:34:52もう一人馬鹿が見えるよwww
0728デフォルトの名無しさん
2005/11/28(月) 19:03:21仕様に沿ってないようだけど>>269
0729sage
2005/11/28(月) 19:37:21終了させるには、どのような終了条件にすればいいですか
0730デフォルトの名無しさん
2005/11/28(月) 20:00:35>>592
いままで3回くらい同じ課題があげられて
そのつど何人かが答えを提示してるのに
0731デフォルトの名無しさん
2005/11/28(月) 20:01:47もしくは>>1を読んで半年ROMれ。
0732デフォルトの名無しさん
2005/11/28(月) 20:02:31ヒント:一人じゃない。
0733デフォルトの名無しさん
2005/11/28(月) 20:06:340734デフォルトの名無しさん
2005/11/28(月) 20:19:570735デフォルトの名無しさん
2005/11/28(月) 20:58:150736デフォルトの名無しさん
2005/11/28(月) 20:59:54何がNGなの?
0737デフォルトの名無しさん
2005/11/28(月) 21:05:450738デフォルトの名無しさん
2005/11/28(月) 21:28:15return 0;抜けとる。
0739デフォルトの名無しさん
2005/11/28(月) 21:42:520740デフォルトの名無しさん
2005/11/28(月) 21:44:380741デフォルトの名無しさん
2005/11/28(月) 21:53:56引数は5つで変換元整数、変換先、桁数、16進表示or10進表示か、先頭の0を表示するか。
sprintfで同じことができますが、自作しろとのことです。
お願いします。
0742デフォルトの名無しさん
2005/11/28(月) 21:54:200743デフォルトの名無しさん
2005/11/28(月) 21:57:45過去に類似する、または同一の課題が腐るほど存在した、
あるいはソートのように検索するだけで答えがでるようなものに
いちいち答えてたらきりがないよな
テンプレでもありゃいいのに
0744デフォルトの名無しさん
2005/11/28(月) 22:06:08そのアンカーの先「E:数字9桁-」が見えるんだが何だ?
0745通りすがり
2005/11/28(月) 22:17:42東京電機大学の課題ってそんなに鬼畜なの?
0746デフォルトの名無しさん
2005/11/28(月) 22:26:050747デフォルトの名無しさん
2005/11/28(月) 22:29:33東京電機大ってこれのことか?
ttp://edu.net.c.dendai.ac.jp/ad/1/2005/kadai.html
俺は国立の情報系学部に行ってるが、こんなつまらんのよりよっぽどややこしいのばっかりだ
あれだろ、東京ryの奴らが馬鹿ばっかなんだろ
0748デフォルトの名無しさん
2005/11/28(月) 22:49:28[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1166.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1167.txt
http://vista.x0.com/img/vi12907.gif
http://vista.x0.com/img/vi12908.gif
http://vista.x0.com/img/vi12909.gif
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2005/12/1
よろしくお願いします
0749デフォルトの名無しさん
2005/11/28(月) 22:57:04【原田@J】東京電機大学part31【は2ちゃんねらー】
http://school4.2ch.net/test/read.cgi/student/1117981232/
0750デフォルトの名無しさん
2005/11/28(月) 23:20:22ttp://www.ic-net.or.jp/home/takaken/nt/light/light2.html
これ見て頑張れ。
0751デフォルトの名無しさん
2005/11/28(月) 23:35:500752デフォルトの名無しさん
2005/11/28(月) 23:37:34とりあえず1167のほうは生めてやったぞ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1168.txt
0753デフォルトの名無しさん
2005/11/28(月) 23:39:10void change_board( char** board, int size, Coordinates input )
{
board[input.j][input.i]^=1;
if(input.j>0)board[input.j-1][input.i]^=1;
if(input.i>0)board[input.j][input.i-1]^=1;
if(input.j<size-1)board[input.j+1][input.i]^=1;
if(input.i<size-1)board[input.j][input.i+1]^=1;
}
0754デフォルトの名無しさん
2005/11/29(火) 00:01:080755デフォルトの名無しさん
2005/11/29(火) 00:12:15俺がかよってた大学だと2年の終わりにCでスモールコンパイラ作らされたぞ
0756デフォルトの名無しさん
2005/11/29(火) 00:42:120757デフォルトの名無しさん
2005/11/29(火) 00:43:11どこの大学?つか教授誰?コンパイラやりたい高校生にはマジ欲しい情報だと。
0759デフォルトの名無しさん
2005/11/29(火) 00:48:03そういや俺の所も2年の最後か3年初めどっちかで
CでPascalのコンパイラ(といってもサブセットだが)を作らせるとか言ってたな
まだ1年の俺には関係ない話だがw
0760デフォルトの名無しさん
2005/11/29(火) 04:42:46[2] 問題文:
"end"が入力されるまで繰り返し文字列の入力を受け付ける。入力された文字列のうち,
長さが4 以上7 未満のものを配列に格納して,最終的にその配列の全要素を出力せよ。
一回作ってみたソース
http://up.viploader.net/mini/src/viploader0820.txt.html
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Microsoft Visual C++
[3.3] 言語: C
[4] 期限: 11月29日
[5] その他:
コンパイラは通るのですが問題が発生したためa.exeを終了します。ご不便をおかけして申し訳ありませんって出ます
0761デフォルトの名無しさん
2005/11/29(火) 04:59:29jを初期化してません。
0762761
2005/11/29(火) 05:01:37あとj++の位置をstrcpyのあとにしたほうがよいです。
0763デフォルトの名無しさん
2005/11/29(火) 05:14:17確かにj++の位置を変えたほうがいいですね
おかげさまで出来ました。ありがとうございます!
夜遅くにやるもんじゃないっすねぇ
0764デフォルトの名無しさん
2005/11/29(火) 05:15:58文字データを文字配列に渡すにはどうすれば
いいんでしょうか?
coutで画面には出せるんですが・・・・
0765デフォルトの名無しさん
2005/11/29(火) 05:36:090766デフォルトの名無しさん
2005/11/29(火) 06:13:44大学じゃなくて専門じゃないの?
大学だと情報系でも一般教養とかうざったいからあんまし授業時間とれないし
0767デフォルトの名無しさん
2005/11/29(火) 10:11:13レベルが低いのに授業を演習も十分にやらないで先に進めるから学生もついてこれないわけだ
教師も大変だね
0768デフォルトの名無し
2005/11/29(火) 10:13:29[2] 問題文(含コード&リンク):二分検索
�@10個数字を取り込む
�A検索したい数を入れる
�B二分検索
�C数字○は、○個目にあると表示
なければ、エラー表示
終了
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual c++ 6.0
[3.3] 言語: c言語
[4] 期限: 11月30日
[5] その他の制限: 配列かリストで実現してください。
二分検索お願いします。
0769デフォルトの名無しさん
2005/11/29(火) 11:31:23~~~~
0770デフォルトの名無しさん
2005/11/29(火) 12:09:48ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1169.c
0772768
2005/11/29(火) 13:25:530773768
2005/11/29(火) 13:29:420774たべちゃう
2005/11/29(火) 13:30:06[2] x^2^sinx=0の解は0以外にx=0.1から1の間にある。
これを10^-6の精度で解の存在範囲を示せ。
(解法は中点を次々に取り、範囲を縮める方法)
[3] 環境
OS:UNIX
言語:C
[4] 期限:17年12月2日(金)
[5] インクルード関数はstdio,math のみ。
おねがいします。
0775たべちゃう
2005/11/29(火) 13:31:210776197
2005/11/29(火) 13:43:44[2] 問題文(含コード&リンク):
>>197の派生で
最後の行を、配列で呼んでポインタで受け取るやり方を教えてください
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限:2005年11月30日
[5] その他の制限:
おねがいします
0777デフォルトの名無しさん
2005/11/29(火) 14:04:500778デフォルトの名無しさん
2005/11/29(火) 14:09:43>>198なら
配列a[]で呼んで、char*aで受け取っているように見えるが。
0779デフォルトの名無しさん
2005/11/29(火) 14:12:22#include <stdio.h>
#include <math.h>
double f(double x){ return x * x - sin(x); }
int main(void) {
double left, right, middle;
double eps = 1e-6; // 精度
for( left = 0.0, right = 1.0 ; right - left >= eps ; ) {
printf("[%.6f,%.6f]を調査\n",left, right);
middle = (left + right) * 0.5;
if( f(right) * f(middle) > 0 ) right = middle else left = middle;
}
middle = (left + right) * 0.5;
printf("解: x=%.6f (f(x)=%.6f)\n", middle, f(middle));
return 0;
}
0780デフォルトの名無しさん
2005/11/29(火) 14:17:04#include <stdio.h>
#include <math.h>
double f(double x){ return x*x-sin(x); }
int main(int argc, char* argv[])
{
double l=0.1, r=1.0 , c;
do{
c = (l + r) / 2;
//printf("x = %f , f(x) = %f \n" , c , f(c) );
if( f(c) < 0) l=c; else r=c;
}while( fabs(f(c)) > 1E-6);
printf("x = %f , f(x) = %f" , c , f(c) );
return 0;
}
0781たべちゃう
2005/11/29(火) 14:29:28ありがとうございます。
僕自身はこれで納得いくのですが、どうも
授業では関数の定義をやっていないので、
できればmain関数のみでできないでしょうか?
このソースをヒントに作り変えているところですが。
お願いします。
0782たべちゃう
2005/11/29(火) 14:34:26これで完璧です。
ありがとうございました。
0783780
2005/11/29(火) 14:34:52先生に「関数って自分で定義出来ませんか?」って聞いてしまえ。
もしくは本に載っていたので使ってみましたで。
0784780
2005/11/29(火) 14:52:05int i,j;
int l,r,c;
int a[10] = { 3 , 15, 24, 14 , 76 , 39 , 48 , 52 , 6 , 10};
int b;
/* Sort */
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
if(a[i]>a[j]){ int t = a[i];a[i]=a[j];a[j]=t; }
}
}
for(i=0;i<10;i++){printf ("%d ",a[i] ); } printf("\n");
/* Find */
scanf("%d",&b);
for(l=0, r=9 , c=(l+r)/2; a[c]!=b; c=(l+r)/2){
printf("%d - %d - %d \n",a[l],a[c],a[r]);
if(l==r) break;
if(a[c]<b) l=c+1; else r=c-1;
}
if( l==r && a[l]!=b){
printf("Not found \n");
}else{
printf("%d - %d - %d \n",a[l],a[c],a[r]);
}
0785784 ◆RyqPmHPleY
2005/11/29(火) 15:24:39[1] 授業単元:プログラミング演習(ポインタ)
[2] 問題文(含コード&リンク):
次のフォーマットで格納されたバイナリファイルを読み込み、標準出力にその内容を書き出すプログラム(ファイル名 readBinDat.c )を作成せよ。
国名(40個のchar型(40バイト))
面積(double型(8バイト))
人口(double型(8バイト))
GDP(double型(8バイト))
の順に記録されたデータの繰り返し、国の数は256を越えない。
入力ファイル名はコマンドラインの引数として受け取ること。
入力ファイルの例として、country.bin.datを使用せよ。
[3] 環境
[3.1] OS: Vine Linux
[3.2] コンパイラ名とバージョン: gcc 2.9
[3.3] 言語: C
[4] 期限: 2005年12月1日17:20まで
バイナリーファイルはうpロダにうpします。
もしよろしければ御協力お願いします。
0786デフォルトの名無しさん
2005/11/29(火) 15:27:090787785 ◆DxAEe3f6tw
2005/11/29(火) 15:27:590788785 ◆DxAEe3f6tw
2005/11/29(火) 15:34:21拡張子変換をしたいけど窓しか使ったこと内のでできないっすorz
0789デフォルトの名無しさん
2005/11/29(火) 15:36:46ソースは出来たので、動作確認したい。
0790785 ◆DxAEe3f6tw
2005/11/29(火) 15:38:23にバイナリーファイルをうpしますた。
txt形式なので拡張子をdatにしてください。
よろしくおねがいします。
0791デフォルトの名無し
2005/11/29(火) 15:44:45[2] 問題文(含コード&リンク):二分探索
�@10個数字を取り込む
�A検索したい数を入れる
�B二分探索
�C数字○は、○個目にあると表示
なければ、エラー表示
終了
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual c++ 6.0
[3.3] 言語: c言語
[4] 期限: 11月30日
[5] その他の制限: 配列かリストで実現してください。
二分探索お願いします。 前の二分探索木になってて二分探索してほしいんです
0792デフォルトの名無しさん
2005/11/29(火) 15:48:28char name[40];
double area, population , GDP;
int n;
fp=fopen(argv[1],"rb");
if(fp==NULL){return 1;} /* file cannot open */
for(n=0;n<256;n++){
fread(&name,sizeof(char),40,fp);
fread(&area,sizeof(double),1,fp);
fread(&population,sizeof(double),1,fp);
fread(&GDP,sizeof(double),1,fp);
if(feof(fp)) break;
printf("%d - %-40s %10.2lf %8.0lf %10.0lf\n",n,name,area,population,GDP);
}
fclose(fp);
return 0;
0793デフォルトの名無しさん
2005/11/29(火) 15:49:47>>784
0794デフォルトの名無しさん
2005/11/29(火) 15:52:33>>792
一応補足。printf("-40s")は文字列を表示するとき左詰でやるということ。
あと、本当はfreadの返り値でチェックするのが望ましいけど、
面倒なので最後にチェック。
0795デフォルトの名無しさん
2005/11/29(火) 16:00:200796デフォルトの名無しさん
2005/11/29(火) 16:02:45どの宿題??
ばっちこーーい
0797デフォルトの名無し
2005/11/29(火) 16:12:150798デフォルトの名無しさん
2005/11/29(火) 16:13:440799デフォルトの名無しさん
2005/11/29(火) 16:16:17二分探索だと数字をソートしないといけないのだが、
「n番目」を表示するのはソート前?だったら二分探索自体いらない罠。
0800デフォルトの名無しさん
2005/11/29(火) 16:19:41int l,r,c;
int a[10];
int b;
/* Input*/
for(i=0;i<10;i++){
scanf("%d" , &a[i]);
}
/* Sort */
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
if(a[i]>a[j]){ int t = a[i];a[i]=a[j];a[j]=t; }
}
}
for(i=0;i<10;i++){printf ("%d ",a[i] ); } printf("\n");
/* Find */
scanf("%d",&b);
for(l=0, r=9 , c=(l+r)/2; a[c]!=b; c=(l+r)/2){
if(l==r) break;
printf("%d - %d - %d \n",a[l],a[c],a[r]);
if(a[c]<b) l=c+1; else r=c-1;
}
printf("%d - %d - %d \n",a[l],a[c],a[r]);
if( l==r && a[l]!=b){
printf("%dは見つかりませんでした\n",b);
}else{
printf("%dは小さいほうから数えて%d番目の要素です\n",b,c+1);
}
return 0;
0801デフォルトの名無し
2005/11/29(火) 16:22:090802デフォルトの名無しさん
2005/11/29(火) 16:25:46これは元の数列での何個目かも表示するバージョン。
int main(int argc, char* argv[]){
int i,j; int l,r,c;
int a[10],a2[10]; int b;
/* Input*/
for(i=0;i<10;i++){
scanf("%d" , &a[i]); a2[i]=i;
}
/* Sort */
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
if(a[i]>a[j]){ int t = a[i];a[i]=a[j];a[j]=t; t=a2[i];a2[i]=a2[j];a2[j]=t;}
}
}
for(i=0;i<10;i++){printf ("%d ",a[i] ); } printf("\n");
/* Find */
scanf("%d",&b);
for(l=0, r=9 , c=(l+r)/2; a[c]!=b; c=(l+r)/2){
if(l==r) break;
printf("%d - %d - %d \n",a[l],a[c],a[r]);
if(a[c]<b) l=c+1; else r=c-1;
}
printf("%d - %d - %d \n",a[l],a[c],a[r]);
if( l==r && a[l]!=b){
printf("%dは見つかりませんでした\n",b);
}else{
printf("%dは小さいほうから数えて%d番目の要素です\n",b,c+1);
printf("%dは元の数列では%d番目の要素です\n",b,a2[c]+1);
}
}
0803791
2005/11/29(火) 16:27:210804デフォルトの名無しさん
2005/11/29(火) 16:29:56家帰ってから確認してください。
数字の配列だけ使っているので、多分大丈夫ですよ。
0805デフォルトの名無しさん
2005/11/29(火) 16:32:460806デフォルトの名無しさん
2005/11/29(火) 16:33:370807デフォルトの名無しさん
2005/11/29(火) 16:34:390808785
2005/11/29(火) 16:35:30ありがとうございました(_ _*)_ _*)
もう一つあるのですがもう少し考えてみます。わからなかったらまたカキコさせてください(_ _*)_ _*)
0809デフォルトの名無しさん
2005/11/29(火) 16:37:350810デフォルトの名無しさん
2005/11/29(火) 16:39:410811デフォルトの名無しさん
2005/11/29(火) 16:46:14int main(int argc, char* argv[])
{
int i,j;int l,r,c;
int a[10]; int b;
printf("%3d ->",0); scanf("%d", &a[0]);
for(i=1;i<10;i++){
printf("%3d ->",i); scanf("%d" , &a[i]);
if(a[i-1]>a[i]){
printf("前の数字よりも大きい数値を指定してください\n");
i--;
}
}
/* Find */
scanf("%d",&b);
for(l=0, r=9 , c=(l+r)/2; a[c]!=b; c=(l+r)/2){
if(l==r) break;
printf("%d - %d - %d \n",a[l],a[c],a[r]);
if(a[c]<b) l=c+1; else r=c-1;
}
printf("%d - %d - %d \n",a[l],a[c],a[r]);
if( l==r && a[l]!=b){
printf("%dは見つかりませんでした\n",b);
}else{
printf("%dは小さいほうから数えて%d番目の要素です\n",b,c+1);
}
}
0812デフォルトの名無しさん
2005/11/29(火) 16:48:180813デフォルトの名無しさん
2005/11/29(火) 16:49:18おぉぉーけーーい。ばっちこーい!
0814809
2005/11/29(火) 16:56:130815デフォルトの名無しさん
2005/11/29(火) 16:57:090816809
2005/11/29(火) 17:54:19お礼に私のブログ・・。
0817デフォルトの名無しさん
2005/11/29(火) 17:58:140818デフォルトの名無しさん
2005/11/29(火) 18:23:465A+2B-2C+D=0
3A+B-C+D=0
7A+2B+C-3D=0
この連立一次方程式をガウス・ザイデル法で解くプログラムの作成
0819785 ◆ONOrs/34Aw
2005/11/29(火) 18:32:56今までもう一つの課題を考えていたのですが何もできなかったので助けていただけるとうれしいです。
[1] 授業単元: プログラミング演習(ポインタ)
[2] 問題文(含コード&リンク):
次のフォーマットで格納されたバイナリファイルを読み込み、人口密
度順にソートして、その内容を同じ形式のバイナリファイルに書き出
すプログラム(ファイル名 sortBinDat.c )を作成せよ。
国名(40個のchar型(40バイト))
面積(double型(8バイト))
人口(double型(8バイト))
GDP(double型(8バイト))
の順に記録されたデータの繰り返し、国の数は256を越えない。
入力ファイル名、出力ファイル名はこの順にコマンドラインの引数と
して受け取ること。
入力ファイルの例として、country.bin.dat を使用せよ。
国名等のデータを格納するメモリ領域は動的に確保すること。
[3] 環境
[3.1] OS: Vine Linux
[3.2] コンパイラ名とバージョン: gcc 2.9
[3.3] 言語: C
[4] 期限: 2005年12月1日17:20まで
バイナリーファイルは>>790のURLです。
もしよろしければ御協力お願いします。
0820デフォルトの名無しさん
2005/11/29(火) 18:32:570821デフォルトの名無しさん
2005/11/29(火) 18:44:05てかさ、本人じゃねーだろwww
0822デフォルトの名無しさん
2005/11/29(火) 19:01:02やばい・・・スルーしましたw ちょっとまって
0823デフォルトの名無しさん
2005/11/29(火) 19:10:00構造体+qsortも使ってるけど大丈夫?
0824デフォルトの名無しさん
2005/11/29(火) 19:14:22「C言語 ファイルサイズ 取得」でぐぐると
上から二つ目の908に「ファイルサイズの取得」がある。
でもって、ファイルサイズ/構造体のサイズ=データ件数のはず。
fseekを調べたらSEEK_ENDで最後に移動できて、SEEK_SETで先頭に移動できるのを発見。
まあこんなとこ。
0825デフォルトの名無しさん
2005/11/29(火) 20:41:09AX=0 よって解なし。
0826デフォルトの名無しさん
2005/11/29(火) 20:49:59AX=b においてb=0の形のものを斉次形と呼ぶ。
この際、解の重なりがありうるので、一意に決定することが出来ない。
よってこの解をガウス・サイデル法で求めるのは不可能である。
0827むう
2005/11/29(火) 21:41:19[2] 問題文(含コード&リンク):サーバから送られてくるデータは0,1。これをクライアント側で3×3配列に[0][0]=1,[0][1]=1,[0][2]=0,[1][0]=0の順にデータを
格納するプログラムを作る。今回はサーバ側からデータが送られてきたと仮定してプログラムを作成する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VW BC++
[3.3] 言語: C
[4] 期限: [無期限]
[5] 制限: Winsockを必ず使う。
以上、よろしくお願いします
0828デフォルトの名無しさん
2005/11/29(火) 21:45:190829デフォルトの名無しさん
2005/11/29(火) 21:52:48線型代数の本を読み直しましょう.
A について斉次方程式 Ax = 0 の解は rank(A) だけの余自由度を持って「必ず」存在する.解なしなんてのは絶対にありえない.
特にこの問題の A は正方で,det(A) ≠ 0 即ち rank(A) = n だから自由度 0 の解,つまり一意解が存在(x = 0).
あと,ガウス法は解がなす線型空間を求める解法だから,ちゃんと組めば自由度付きで解が求まるよ.
0831デフォルトの名無しさん
2005/11/29(火) 22:35:12[2] 問題文(含コード&リンク):
スケジュールを入力、閲覧、日付順に並べ替えするプログラムを作りなさい。
スケジュールはsche.datに入力すること
全ての機能はユーザー定義関数で個別に分け行うこと。mainは各機能に飛ぶのみ
スケジュールの書式は
年月8桁 予定20桁半角英数字 コメント半角英数字10桁 時間半角英数字4桁とする
余力のあるものは時間を取得し今現在の日付に何があるかmain画面に表示させなさい
並べ替えは演習のため
mainでレコード数を取得→何らかの手段を使い並べ替えの関数に移動→レコードを構造体の配列で管理し入れ替える
とする
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ 5.5
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 2005年12月02日
入力閲覧はあっさりできましたが時間取得、並べ替えの最後の部分がうまくいきません。
どうかお願いします。
0832831 ◆CmLj3PLs4E
2005/11/29(火) 22:37:420833デフォルトの名無しさん
2005/11/29(火) 22:39:15[2] 問題文: 除算は,減算を繰り返すことによって実現できる。例えば,6 / 2 は6 から2 を3 回引け
るということである。これを利用して,2 つの整数a とb を引数としてとり,a をb で割っ
た結果を返す関数を作成せよ。ただし,a あるいはb に負の数が入力された場合にも正しく
動くことを確認すること。テストは,a とb の正負全ての組み合わせに対して行うこと。
やりかけソース
http://up.viploader.net/mini/src/viploader0834.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Microsoft Visual C++
[3.3] 言語: C
[4] 期限: 11月30日 0:00
[5] その他:
0834デフォルトの名無しさん
2005/11/29(火) 22:43:200835デフォルトの名無しさん
2005/11/29(火) 22:44:33scanf("%d%d",&divis(a,b));
ってなんですか?
0836デフォルトの名無しさん
2005/11/29(火) 22:50:500837デフォルトの名無しさん
2005/11/29(火) 22:51:01(オリジナルを尊重)
int divis(int a,int b){
int i , j = 0;
if ((a < 0 && b > 0) || (a > 0 && b < 0)) j = 1;
a = abs(a);
b = abs(b);
if (b == 0) return(0);
for(i = 0 ;; i++){
a = a - b;
if (a < 0) break;
}
if (j == 1)i *= -1;
return(i);
}
int main(void){
int a, b, i;
printf("a÷bを計算します\n");
printf("a、b順に入れてください");
scanf("%d%d", &a, &b);
i = divis(a, b);
printf("割った結果;商=%d\n",i);
return(0);
}
0838デフォルトの名無しさん
2005/11/29(火) 22:53:25if(a<0||b>0 && a>0||b<0){
j=1;
}
でなくて
if(a<0||b>0 && a>0||b<0){
j=1;
} else {
j=0;
}
int j; でなくてint sign;を使って
sign = a*b<0? -1: 1;
として、最後の
if(j==0){
i=-1*i;
}
をi *= sign;
としたほうがエレガント。
0839デフォルトの名無しさん
2005/11/29(火) 22:56:00ちょっと恥ずかしい//
0840デフォルトの名無しさん
2005/11/29(火) 22:59:00ありがとうございます
0841デフォルトの名無しさん
2005/11/29(火) 23:05:45#include <stdio.h> #include <stdlib.h>
int divis(int a,int b){
int i;
if(a<0 && b<0){ return divis(-a,-b); }
if(b==0) { return 0; }
if(a * b < 0) { return -1; }
for(i=0;a!=0;i++){ a-=b; if(a<0) return -2; }
return i;
}
int main(void){
int a,b,c;
printf("a÷bを計算します\n a、b順に入れてください");
scanf("%d%d",&a,&b);
c = divis(a,b);
switch(c){
case 0:printf("0で除算しようとしました\n"); break;
case -1:printf("割り算の左右の項の符号が一致しません\n"); break;
case -2:printf("割り切れませんでした\n"); break;
default: printf("割った結果;商=%d\n",divis(a,b)); break;
}
return(0);
}
0842デフォルトの名無しさん
2005/11/29(火) 23:06:09i = -1 * i;
も
i = -i;
と書くべきだな。コンパイラによっては余計な演算が一個減らせる。
0843デフォルトの名無しさん
2005/11/29(火) 23:07:15default: printf("割った結果;商=%d\n",c); break;
0844831 ◆yhhkigCuTE
2005/11/29(火) 23:09:40ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1173.zip
作りかけのものは学校に忘れてしまい、なんとか並び替えと時間だけでもやろうとしています。
構造体名は自由です。変数も条件としてあったのですが書き加えになるのでご迷惑になると思います。一応datに同梱します
お手数かけますがお願いします
0845デフォルトの名無しさん
2005/11/29(火) 23:13:380846デフォルトの名無しさん
2005/11/29(火) 23:17:01#include <stdlib.h>
int divis(int a,int b){
int i;
if(a < 0) { return -divis(-a,b); }
if(b < 0) { return -divis(a,-b); }
if(b==0) { return 0; }
for(i=0;a!=0;i++){
a-=b;
if(a<0) return 0;
}
return i;
}
int main(void){
int a,b,c;
printf("a÷bを計算します\n a、b順に入れてください");
scanf("%d%d",&a,&b);
switch((c = divis(a,b))){
case 0:printf("除算エラー\n"); break;
default: printf("割った結果;商=%d\n",c); break;
}
return(0);
}
0847デフォルトの名無しさん
2005/11/29(火) 23:19:040849デフォルトの名無しさん
2005/11/29(火) 23:28:10for() 命令1; ってやってて、命令2を足そうとして
for() 命令1; 命令2; とかやってバグだすよかまし。
0850デフォルトの名無しさん
2005/11/29(火) 23:28:10ifのあと1文だけなら要らない
そもそもifの後は1文処理ってのからきて、
複数文処理したい時に、じゃあ{ }使って
ブロック化し、1文と見なしちゃおう
という発想
0851849
2005/11/29(火) 23:28:580852デフォルトの名無しさん
2005/11/29(火) 23:32:09まだまだ勉強が足りないっすねぇ。。
アルゴリズムの勉強をもうちょっとした方がよさそう
0853デフォルトの名無しさん
2005/11/29(火) 23:33:26085498
2005/11/29(火) 23:35:130855デフォルトの名無しさん
2005/11/29(火) 23:52:130856デフォルトの名無しさん
2005/11/29(火) 23:55:16じゃあ、俺の代わりにこのスレで宿題やっててくれ。俺はもう練る。
0857デフォルトの名無しさん
2005/11/29(火) 23:58:510858デフォルトの名無しさん
2005/11/30(水) 00:05:54シフト管理システム作ってくれ
0859デフォルトの名無しさん
2005/11/30(水) 00:06:58・・・あ、>>831忘れてた。誰かおねが
0860デフォルトの名無しさん
2005/11/30(水) 00:07:23( ´・ω・)
____(____)___
/ \ ___\
.<\※ \____|\____ヽ
ヽ\ ※ ※ ※| |====B=|
\`ー──-.|\|___l__◎..|ヽ
 ̄ ̄ ̄ ̄| .| ̄ ̄ ̄ ̄|
\| |〜
_∧,,∧
___( ( ´・ω・)___ フゥ・・・
/ \  ̄ ̄ ̄__\
.<\※ \____|\____ヽ
ヽ\ ※ ※ ※| |====B=|
\`ー──-.|\|___l__◎..|ヽ
 ̄ ̄ ̄ ̄| .| ̄ ̄ ̄ ̄|
\| |〜
_________
/ /
/ /
/ /
/ / バタンッ!
/_________/
/ \ ※ ※__\
.<\※ \_____※___|\____ヽ
ヽ\ ※ ※ ※| |====B=|
\`ー──-.|\|___l__◎..|ヽ
 ̄ ̄ ̄ ̄| .| ̄ ̄ ̄ ̄|
\| |〜
0861829
2005/11/30(水) 00:22:52「四の五の言わず……」とか喧嘩腰で言われるとなんかアレですが,
口を出したのはこっちなので一応やりました:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1174.cpp
見ればわかると思うけれど,自由度の表し方なんていくらでもあって,
例えばその変数を記号処理的に残してやればok.
特にガウス法は >>829 で言ったように解空間の基底を取り直してるだけだから,
前進消去+交代消去で消えない基底を自由変数と思えばそれだけで十分:
あ,>>818 はこれを参考にしてがんばってください.
0862デフォルトの名無しさん
2005/11/30(水) 00:50:40なんかちょっと荒れてんな
0863デフォルトの名無しさん
2005/11/30(水) 01:37:11って問題の解答例を教えてくれませんか?
0864デフォルトの名無しさん
2005/11/30(水) 01:37:42>>1のテンプレに従ってください。
0865デフォルトの名無しさん
2005/11/30(水) 01:49:46あ、すいません
[1]授業単元:プログラミング�U
[2]問題文:一行分の文字列を入力し、次に数字nを入力すると、文字列がn番目から表示される
[3]環境
[3.1]OS:Windows
[3.2]コンパイラ名とバージョン:Visual C++ .NET 2003 コマンドプロンプト
[3.3]言語:C
[4]期限:今日中
お願いします
0866デフォルトの名無しさん
2005/11/30(水) 01:59:04#include<stdio.h>
int main(void)
{
char *c;
int i,n;
printf("文字列入力:");
scanf("%s",c);
printf("何番目表示?:");
scanf("%d",&n);
for(i=1;i<n;i++)
c++;
printf("%d番目は%cです\n",n,*c);
return 0;
}
例外は一切考えてないぞ
0867デフォルトの名無しさん
2005/11/30(水) 02:00:290868デフォルトの名無しさん
2005/11/30(水) 02:06:31int main(void)
{
char *c;
int n;
printf("文字列入力:");
scanf("%s",c);
printf("何番目から表示?:");
scanf("%d",&n);
c += n-1;
while(*c!='\0')
{
printf("%c",*c);
c++;
}
puts("");
return 0;
}
例によって例外は考えてない
0869デフォルトの名無しさん
2005/11/30(水) 02:06:34いえいえ
"HELLO"って文字列を入力した場合、数字2を入力すると"LLO"
みたいになる感じです
0870デフォルトの名無しさん
2005/11/30(水) 02:10:23じゃあ>>868のc+=n-1→c=nにでも変更しといて
0871デフォルトの名無しさん
2005/11/30(水) 02:12:17c += n-1;
以下を、
printf("%s\n", c + n);
return 0;
}
に。
0872デフォルトの名無しさん
2005/11/30(水) 02:16:11ちなみにあんまり長いの入れるとボロでるよ (´σ `)
0873デフォルトの名無しさん
2005/11/30(水) 02:17:250874デフォルトの名無しさん
2005/11/30(水) 02:18:16ただし1023文字まで。
#include <stdio.h>
int main(void) {
char buf[1024];
int n;
scanf("%1023[^\n]", buf);
scanf("%d", &n);
printf(buf + n);
}
>>866-868,870-871
それでは領域を確保していない。
0875デフォルトの名無しさん
2005/11/30(水) 02:19:02char *c;
scanf("%s",c);
はまずいべ
0876デフォルトの名無しさん
2005/11/30(水) 02:20:12int main(void)
{
char c[100];
int n;
printf("文字列入力:");
scanf("%99s",c);
printf("何番目から表示?:");
scanf("%d",&n);
printf("%s\n", c + n);
return 0;
}
にでもしとき。
>>874
それは流石に、%を含む文字列を入力されるとまずい。
0877デフォルトの名無しさん
2005/11/30(水) 02:22:53いろいろ試したら文字列長くなるとバグるなこれww
0878デフォルトの名無しさん
2005/11/30(水) 02:23:47多謝。
>>868
考えて下さってありがとうございます
0879デフォルトの名無しさん
2005/11/30(水) 02:25:49本当にありがとうございます
0880デフォルトの名無しさん
2005/11/30(水) 02:31:08[1] 授業単元: IT入門B2
[2] 問題文(含コード&リンク): 円周率πを以下の式を用いて計算するプログラムを作成しなさい。
π/4 = arctan 1/2 + arctan 1/5 + arctan 1/8
ただし、arctanは以下の級数展開の式を用いて計算すること。
arctan t = t - t^3/3 + t^5/5 -t^7/7 + … + (-1)^n * t^(2n+1) / 2n+1 + …
http://www-it.sci.waseda.ac.jp/ITB2/c-class2/itb2-rep1.pdf
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] 言語:C言語
[4] 期限: ([2005年12月2日09:00まで]
[5] その他の制限:
よろしくお願いします。
0881デフォルトの名無しさん
2005/11/30(水) 02:36:57#include <stdio.h>
#include <string.h>
int main(void){
char str[256];
int i,j,n;
printf("文字列を入力してください\n");
scanf("%s",str);
printf("何番目から?\n");
scanf("%d",&n);
for(i=n;;){
printf("%c",str[i]);
i++;
j=strlen(str);
if(i>j){
break;
}
}
return(0);
}
0882デフォルトの名無しさん
2005/11/30(水) 02:37:22なんかここで計算止めみたいな基準ないの?
0884デフォルトの名無しさん
2005/11/30(水) 02:40:01それじゃ、abc%def、2、とでも入力して味噌。
0885デフォルトの名無しさん
2005/11/30(水) 02:42:060886デフォルトの名無しさん
2005/11/30(水) 02:43:15せめてjの算出はループの外へ。
そうすれば条件判断もifでやることもないし。
つーか、変数名が安直過ぎ。
0887デフォルトの名無しさん
2005/11/30(水) 02:44:520888デフォルトの名無しさん
2005/11/30(水) 02:46:070889デフォルトの名無しさん
2005/11/30(水) 02:49:56#include <math.h>
#define N 99
double myarctan(double x)
{
int i;
int sign;
double at = 0.0;
sign = 1;
for (i = 1; i <= N; i++) {
if (i%2 == 0) continue;
at += sign * pow(x, i)/i;
sign *= -1;
}
return at;
}
int main(void)
{
double pi;
pi = 4*(myarctan(1/2) + myarctan(1/4) + myarctan(1/8));
printf("π=%g\n", pi);
}
0890889
2005/11/30(水) 02:52:060891デフォルトの名無しさん
2005/11/30(水) 02:53:47forの繰り返し文を i += 2とすれば、その次のif文は要らない訳だが。
それと、sign *= -1;もsign = -sign;とした方が無駄な乗算が行なわれる可能性を排除できる。
処で、計算式が>880と違うわけだが、どっちが正しいんだ?
0892889
2005/11/30(水) 02:55:47pi = 4*(myarctan(1/2) + myarctan(1/5) + myarctan(1/8));
ですね^^
0893デフォルトの名無しさん
2005/11/30(水) 02:56:180894デフォルトの名無しさん
2005/11/30(水) 02:56:460895889
2005/11/30(水) 03:01:26適当じゃないお
0896デフォルトの名無しさん
2005/11/30(水) 03:02:060897デフォルトの名無しさん
2005/11/30(水) 03:02:21こういうのって最適化してくれないの?
まあそうでなくても外に出すべきだろうけど。
0898デフォルトの名無しさん
2005/11/30(水) 03:05:560899デフォルトの名無しさん
2005/11/30(水) 03:07:51strlen()は標準関数だし単純だからよきに計らってくれそうではあるね。
でも外に出せば条件判断がすっきりすることだし。
0900デフォルトの名無しさん
2005/11/30(水) 03:08:400901デフォルトの名無しさん
2005/11/30(水) 03:12:03組みあがったけどどうしよう…。
0902デフォルトの名無しさん
2005/11/30(水) 03:17:510903889
2005/11/30(水) 03:17:52結果はどうでした?
0904901
2005/11/30(水) 03:27:22どうも文字化けしたくさい。せっかく日本語で入れたコメントが無駄になった。
JISだろうから変換できるならしてくれ。変換しないなら#defineの1行目末にある#define文を忘れずに分離してくれ。
>>903
こんだけのプログラムになると一応チェックする。1000桁で試したが、末尾の細かいことしてないから996桁までしか合ってない。
0905901
2005/11/30(水) 03:28:240906デフォルトの名無しさん
2005/11/30(水) 03:39:27sin(x) = x - x^3/3! + x^5/5! + ... + (-1)^(n-1)(x^(2n-1)/(2n-1)!) + ...
普通に計算した場合(func1-3), 逐次方式(func4)
x^3/3! = (x)*x*x/2/3
x^5/5! = (x^3/3!)*x*x/4/5
x^7/7! = (x^5/5!)*x*x/6/7
double の場合 n = 16 で収束
sin(π/6 = 0.523598775598298820) = 0.499999999999999940, 0.499999999999999940
sin(π/4 = 0.785398163397448280) = 0.707106781186547460, 0.707106781186547460
sin(π/3 = 1.047197551196597600) = 0.866025403784438490, 0.866025403784438490
sin(π/2 = 1.570796326794896600) = 1.000000000000000200, 1.000000000000000200
sin(2π/3 = 2.094395102393195300) = 0.866025403784438930, 0.866025403784438930
sin(π = 3.141592653589793100) = 0.000000000000000334, 0.000000000000000248
*/
0907デフォルトの名無しさん
2005/11/30(水) 03:39:47#include <math.h>
#define PI 3.14159265358979323846
struct pitable {
double x;
char *s;
};
int func1(int n)
{
return (int)pow(-1, n);
}
double func2(int n, double x)
{
int i;
double r = func1(n-1) * pow(x, (2 * n - 1));
for(i = 2 * n - 1; i > 1; i--) r /= i;
return r;
}
double func3(double x, int max)
{
int i;
double r = x;
for(i = 2; i <= max; i++) r += func2(i, x);
return r;
}
0908デフォルトの名無しさん
2005/11/30(水) 03:40:08{
int i;
double r = x;
double y = x;
for(i = 1; i < max; i++){
y *= x * x / (2 * i) / (2 * i + 1);
r += (i & 1 ? -1 : 1) * y;
// printf("%03d, %20.18f, %20.18f\n", i + 1, y, r);
}
return r;
}
0909デフォルトの名無しさん
2005/11/30(水) 03:42:02{
int i, j;
struct pitable pt[] = {
PI / 6, "π/6",
PI / 4, "π/4",
PI / 3, "π/3",
PI / 2, "π/2",
PI * 2 / 3, "2π/3",
PI, "π"
};
for(i = 1; i <= 20; i++){
printf("%03d\n", i);
for(j = 0; j < 6; j++){
printf("sin(%s = %20.18f) = %20.18f, %20.18f\n",
pt[j].s, pt[j].x, func3(pt[j].x, i), func4(pt[j].x, i));
}
}
return 0;
}
0910デフォルトの名無しさん
2005/11/30(水) 04:18:33#define N 10000
double myarctan(double x)
{
int i;
double result;
double d;
double s;
for (i=3, d=x, s=-1.0, result = x; i<=N; i+=2)
{
d *= x * x;
result += s * d / (double)i;
s = -s;
}
return result;
}
int main(void)
{
double pi;
pi = 4.*(myarctan(1./2.) + myarctan(1./4.) + myarctan(1./8.)); /* doble型に修正*/
printf("pai=%g\n", pi);
return 0;
}
精度は… orz
pi = 4.*(myarctan(1./2.) + myarctan(1./4.) + myarctan(1./8.)); /* doble型に修正*/
↓
pi = 4.*(myarctan(1./2.) + myarctan(1./5.) + myarctan(1./8.)); /* doble型に修正*/
0912デフォルトの名無しさん
2005/11/30(水) 05:26:46N = 100 で収束してるから N = 10000 回実行は無駄のようです
pi = 3.29999999999999980 : n = 1
pi = 3.14173932800660390 : n = 10
pi = 3.14159265358979220 : n = 100
pi = 3.14159265358979220 : n = 1000
pi = 3.14159265358979220 : n = 10000
>>910-911 のは誤差が伝播するから
>>889,892 の方が精度高いと思われ
どっちも五十歩百歩なんだけど
0913デフォルトの名無しさん
2005/11/30(水) 05:28:10double arct(double x, int n)
{
int i;
double result;
double d;
double s;
for(i = 3, d = x, s = -1.0, result = x; i <= n; i += 2){
d *= x * x;
result += s * d / (double)i;
s = -s;
}
return result;
}
int main(void)
{
int i;
double pi;
for(i = 1; i <= 10000; i *= 10){
pi = 4.0 * (arct(0.5, i) + arct(0.2, i) + arct(0.125, i));
printf("pi = %20.17lf : n = %d\n", pi, i);
}
return 0;
}
0914デフォルトの名無しさん
2005/11/30(水) 05:47:53for(i = 1; i <= 10000; i *= 2){
で実行すると N = 32〜64 あたりで収束するから N = 100 (99) でも無駄大杉
0915デフォルトの名無しさん
2005/11/30(水) 05:54:13適当な eps を取って while(error > eps) { ... } が定石でしょうが.
0916デフォルトの名無しさん
2005/11/30(水) 06:09:310917デフォルトの名無しさん
2005/11/30(水) 07:43:41正直すまんかった。
で、これなんてガウス・ザイデル法?
問題文>>818は「ガウス・ザイデル法で」という指定付なんだが。
だから困ってる。
0918829
2005/11/30(水) 08:37:38ザイデルは反復解法のほうですね.こっちだと A x = 0 に反復させたら一発で x = 0 で終わりですね
0919917
2005/11/30(水) 08:41:040920デフォルトの名無しさん
2005/11/30(水) 08:47:22ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1176.txt
0921776
2005/11/30(水) 10:37:53[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
N個の要素よりなる配列をmain関数に宣言する。配列にデータを読み込む関数(例えばinput)
をmainから呼んで入力を行いデータを書き出す関数(例えばoutput)を呼んで出力するプログラムを
配列で呼んでポインタで受け取るやり方を書け。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限:2005年11月21日
[5] その他の制限:
おねがいします
0922デフォルトの名無しさん
2005/11/30(水) 10:44:54void output(int *a){int i;for(i=0;i<N;i++){printf("%d\n",*(a+i));}}
int main(){int a[N];input(a);output(a);return 0;}
0923デフォルトの名無しさん
2005/11/30(水) 13:32:28あ、2番目のprintfがいかんかったのか。
0924デフォルトの名無しさん
2005/11/30(水) 15:27:350925デフォルトの名無しさん
2005/11/30(水) 15:33:23大丈夫だ、今日はまだ11/30だ。
>>453
提出日は明日11/31... と言い切れ!!
0926デフォルトの名無しさん
2005/11/30(水) 15:58:27forを使用してください。あと初心者っぽくお願いします。
•3×3の2次元配列を用意する
• キーボードから任意の実数を9個入
力し,順番に配列にいれる.
([0][0]->[0][1]->[0][2]->....)
• その入力データから3×3の配列の
縦と横のそれぞれの平均(実数)を
求め,画面に表示する.
• 入力データ
– 1.1 1.2 1.3 1.4 1.5 ・・・・
例えば
1.1 1.2 1.3
1.4 1.5 1.6
1.7 1.8 1.9
があると,それぞれの横の平均1.2 1.5 1.8が出力されて
たての平均も1.4 1.5 1.6と出るようなプログラムを作ってください。
よろしくお願いします。
0927デフォルトの名無しさん
2005/11/30(水) 16:00:440928デフォルトの名無しさん
2005/11/30(水) 16:27:21>>924
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1177.txt
メモリリークはご愛嬌(やるきなす)
0929デフォルトの名無しさん
2005/11/30(水) 16:40:12[2] • 3×3の2次元配列を用意する
• キーボードから任意の実数を9個入力し,順番
に配列にいれる.([0][0]->[0][1]->[0][2]->....)
• その入力データから3×3の配列の縦と横のそ
れぞれの平均(実数でよい)を求め,画面に表
示する.
• 入力データ
– 1.1 1.2 1.3 1.4 1.5 ・・・・
[3] 環境
[3.1] Windows
[3.2] コマンドプロンプト 秀丸
[3.3]C
[4] あと一時間半
[5] forを使って初心者っぽくお願いします。
0930926 ◆8/./95naVw
2005/11/30(水) 16:41:33[2] • 3×3の2次元配列を用意する
• キーボードから任意の実数を9個入力し,順番
に配列にいれる.([0][0]->[0][1]->[0][2]->....)
• その入力データから3×3の配列の縦と横のそ
れぞれの平均(実数でよい)を求め,画面に表
示する.
• 入力データ
– 1.1 1.2 1.3 1.4 1.5 ・・・・
[3] 環境
[3.1] Windows
[3.2] コマンドプロンプト 秀丸
[3.3]C
[4] あと一時間半
[5] forを使って初心者っぽくお願いします。
何回も書き込んですいません。
0931デフォルトの名無しさん
2005/11/30(水) 16:43:46初心者っぽい?
#include <stdio.h>
int main (void)
{
int i, j;
double d[3][3];
for (i=0; i<3; ++i)
for (j=0; j<3; ++j)
scanf("%lf", &(d[i][j]));
for (i=0; i<3; ++i)
printf("横平均 %f\n", (d[i][0] + d[i][1] + d[i][2])/3.0);
for (i=0; i<3; ++i)
printf("縦平均 %f\n", (d[0][i] + d[1][i] + d[2][i])/3.0);
return 0;
}
0932デフォルトの名無しさん
2005/11/30(水) 16:52:490933926 ◆8/./95naVw
2005/11/30(水) 16:53:51またおねがいします(^_^)
0934デフォルトの名無しさん
2005/11/30(水) 16:55:11#define フォー for
#define バッチコーイ scanf
#define セイセイセイセイ printf
なんてやって遊んでたら...
0935デフォルトの名無しさん
2005/11/30(水) 16:59:27どうみてもコンパイルエラーです
本当にありがとうございました
0936デフォルトの名無しさん
2005/11/30(水) 17:06:53int main(int argc,char *argv[]){
double a[3][3],r[3],c[3];
int i;
scanf("%lf %lf %lf %lf %lf %lf %lf %lf %lf",
&a[0][0],&a[0][1],&a[0][2],
&a[1][0],&a[1][1],&a[1][2],
&a[2][0],&a[2][1],&a[2][2]);
for(i=0;i<3;i++ ){
i[r]=(a[i][0]+a[i][1]+a[i][2])/3;
i[c]=(a[0][i]+a[1][i]+a[2][i])/3;
}
printf("横の平均%f %f %f\n",0[r],1[r],2[r]);
printf("たての平均%f %f %f\n",0[c],1[c],2[c]);
return 0;
}
いちおう入力データが1行かと思って作ってたら出遅れた
初心者っぽく記法をいじっといた。コンパイル通るのは確認した
0937デフォルトの名無しさん
2005/11/30(水) 17:12:07まちがいなくコンパイルエラーでした
本当にありがとうございました
0938デフォルトの名無しさん
2005/11/30(水) 17:38:560939デフォルトの名無しさん
2005/11/30(水) 17:43:51error C2007: #define の後に識別子が必要です。
VC2005
OK!!
ktkr!!!
0940デフォルトの名無しさん
2005/11/30(水) 18:21:500941デフォルトの名無しさん
2005/11/30(水) 18:41:04error C3209: 'tH[' : Unicode 識別子は現在サポートされていません。
2003 → 2005でサポートされたのか…?
0942デフォルトの名無しさん
2005/11/30(水) 18:50:28[1]授業単元:アルゴリズム・プログラム
[2]問題文:適当な連結成分を持つグラフを作り、関節点を見つけるプログラムを作ってください。
グラフには関節点を入れるようにしてください。
[3]環境
[3.1]OS:Windows
[3.2]コンパイラ名とバージョン:Visual C++ .NET 2003 コマンドプロンプト
[3.3]言語:どちらでも可
[4]期限:来週の月曜日
どなたかお願いします。。。
0943デフォルトの名無しさん
2005/11/30(水) 19:37:31入出力の仕様がわからなかったから昔作ったプログラムをそのままあげとく.参考にしてくれ.
http://acm.uva.es/p/v3/315.html を解くプログラム:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1179.cpp
0944 ◆XYndhCe37s
2005/11/30(水) 20:06:29[2]問題文:rand()を用いて一様乱数を100個発生させ、乱数の最大値RAND_MAXでそ
れぞれを割り、その答えが0≦i≦0.1、0.1<i≦0.2、・・・0.9≦i≦1
の10個の区間にそれぞれ何個あるか調べよ
[3]環境
[3.1]OS:Linux
[3.2]コンパイラ名とバージョン:gcc 2.9
[3.3]言語:どちらでも可
[4]期限:明日午前9時まで
お願いします
0945 ◆XYndhCe37s
2005/11/30(水) 20:09:330946デフォルトの名無しさん
2005/11/30(水) 20:47:58#include <stdio.h>
#include <stdlib.h>
int main(){
int i, j, sum[10];
double d;
for(i = 0; i < 10; ++i) sum[i] = 0;
for(i = 0; i < 100; ++i){
d = (double)rand() / (double)RAND_MAX;
for(j = 0;j < 10; ++j){
if(d <= (double)(j+1)/10){ ++sum[j]; break;}
}
}
for(i = 0;i < 10; ++i)
printf("%0.1f < i <= %0.1f %2d\n", (double)i/10, (double)(i+1)/10, sum[i]);
return 0;
}
適当に作ったんで誰か添削ヨロ
あと表示が0<i になってるけどキニシナイ
0947デフォルトの名無しさん
2005/11/30(水) 20:58:13#include <stdlib.h>
#include <iostream>
int main()
{
using namespace std;
long box[10];
for (int j=0;j<10;j++)
box[j] = 0;
for (int i=0;i<100;i++)
{
int n = rand()*10/RAND_MAX;
box[n]++;
}
for (int k=0;k<10;k++)
{
cout << "0." << k << "~0." << k+1 << ":" << box[k] << endl;
}
return 0;
}
0948デフォルトの名無しさん
2005/11/30(水) 21:17:47[2] 問題文:
平面座標上のn個(4個以上)の長方形の2つの対角となる点をキーボードから入力し、
その点を一方向リストを使って表示するプログラムを作成せよ。
ただし、表示する時には長方形の面積も表示すること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:12/1まで
[5] その他の制限:初心者にもわかりやすいようにお願いします。
462さんに一度作ってもらったのですが、LinuxでCtrl-Zを入力すると
プログラムが強制終了してしまうので、上手く動きませんでした。
Windowsではちゃんと動いたのですが。
あと表示するのは長方形の対角となる2点だけでもいいそうです。
申し訳ないですが、どなたかまたご教授お願いします。
0949デフォルトの名無しさん
2005/11/30(水) 21:40:14Linuxでは一般的にCtrlZはプロセス中断。強制終了ではない。
入力を閉じたいなら、CtrlDでできるはず。
0951デフォルトの名無しさん
2005/11/30(水) 22:45:30int n = rand()*10/RAND_MAX;
これって大丈夫?
19.8.1 ISO C Random Number Functions
This section describes the random number functions that are part of the ISO C standard.
To use these facilities, you should include the header file stdlib.h in your program.
— Macro: int RAND_MAX
The value of this macro is an integer constant representing
the largest value the rand function can return.
In the GNU library, it is 2147483647,
which is the largest signed integer representable in 32 bits.
In other libraries, it may be as low as 32767.
0952デフォルトの名無しさん
2005/11/30(水) 23:32:21[2] 問題文:
1.最初にnの値を入力して、各入力を行った後、それぞれの目的を実行する以下のプログラムを作成しなさい。
ただし、nの大きさは100を超えないものとする。
n人の点数を入力した後、不可(60点以下)の人の数を調べるプログラム
ただし一次元配列を引数で渡すと各計算をして結果を返してくれる関数を作り、この関数を使って、
その計算を表示するプログラムを作りなさい。
2.
最初に行列の次元nの値を入力し、配列を使って次の計算をするプログラムを
作りなさい。ただし、nは100以内で、n次の正方行列とする。
行列AとBを入力すると、その掛け算A×Bを計算するプログラム
ただし二次元配列を引数で渡すと各計算する関数を作り、この関数を
使って、その計算を表示するプログラムを作りなさい。ただし、計算した
結果は、引数で渡した行列Aで戻すものとする。
[3] 環境
[3.1] OS:xp
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:12/1まで
行列同士の規則性を見つけ出してプログラムで表してとくようなのですが、
いまいちよくわかりません。よろしくお願いいたします。
0953デフォルトの名無しさん
2005/12/01(木) 01:01:58[2] 1〜100万までの整数から素数全てを表示せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:明後日
[5]整数の表示から素数の導きについて何を使えば分からずもし、よろしければ
説明もお願いします
長々と書きましたがどうぞよろしくお願いします
0954デフォルトの名無しさん
2005/12/01(木) 01:05:010955デフォルトの名無しさん
2005/12/01(木) 01:22:36こんなでどう?
だけど、計算時間がものすごくかかるね
#include <stdio.h>
#define MAXNUM 1000000
int isprime(int pr)
{
int i;
for (i = 2; i < pr; i++) {
if (pr % i == 0) break;
}
return i == pr? 1: 0
}
int main(void)
{
int i;
for (i = 2; i <= MAXNUM; i++) {
if (isprime(i)) {
printf("%d\n", i);
}
}
return 0;
}
0956デフォルトの名無しさん
2005/12/01(木) 01:26:56眠たいので適当に書いた。
アルゴリズムは エラトステネスのふるい でググッて
#include<stdio.h>
int t[1000000],x,y;
int main(){
for(x=t[0]=t[1]=2;x<1000000;++x)
for(y=x+x;y<1000000;y+=x)t[y]=2;
for(x=y=0;x<1000000;++x)t[x]||(printf("%7d ",x),++y%8||puts(""));
return 0;
}
0957デフォルトの名無しさん
2005/12/01(木) 01:27:36printf("2, 3, 5, 7, 11,..............,999983\n");
0958デフォルトの名無しさん
2005/12/01(木) 01:35:57参考にして頑張ります
>>957
えwwwwwwwwww
0959デフォルトの名無しさん
2005/12/01(木) 02:23:42あんまり覚えてないからフォルダ漁ったら出てきた
#include <stdio.h>
int main(void)
{
int i, n;
static int prime[1000000];
int ptr = 0;
int flag;
prime[ptr++] = 2;
prime[ptr++] = 3;
for (n = 5; n <= 1000000; n += 2) {
flag = 0;
for (i = 1; prime[i] * prime[i] <= n; i++) {
if (n % prime[i] == 0) {
flag = 1;
break;
}
}
if (!flag) {
prime[ptr++] = n;
printf("%d\n", n);
}
}
return 0;
}
0960デフォルトの名無しさん
2005/12/01(木) 02:33:300961デフォルトの名無しさん
2005/12/01(木) 03:21:300962デフォルトの名無しさん
2005/12/01(木) 04:02:10つーか、自分自身で割れない数は0だけですが。
0963デフォルトの名無しさん
2005/12/01(木) 05:02:50ある奇数整数nが素数かを判断するには
3からルートnまでで割り切れるかどうかを調べればいい
0964デフォルトの名無しさん
2005/12/01(木) 06:17:030965デフォルトの名無しさん
2005/12/01(木) 06:20:04エラトステネスの素直なプログラム
#include <stdio.h>
#define N 1000000
int main (void)
{
char t[N+1];
int i, j, count;
printf("%d\n", 2);
count = 1;
for (i=0; i<=N; ++i) t[i] = 0;
for (i=3; i<=N; i += 2)
{
if (t[i] == 0)
{
printf("%d\n", i); ++count;
for (j=i; j<=N; j += i) t[j] = i;
}
}
printf("count = %d", count);
return 0;
}
0966デフォルトの名無しさん
2005/12/01(木) 06:33:26非常に無駄の多いエラトステネスですね
0967デフォルトの名無しさん
2005/12/01(木) 06:47:040968デフォルトの名無しさん
2005/12/01(木) 08:13:45int damecount(int*point,int n,int low){
int i; int m;
m=0;
for(i=0;i<n;i++)if(point[i]<=low)m++;
return m;
}
0969デフォルトの名無しさん
2005/12/01(木) 08:38:34ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1180.txt
0970デフォルトの名無しさん
2005/12/01(木) 09:32:07ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1182.txt
0971970
2005/12/01(木) 09:35:44を#includeし忘れた。
0973デフォルトの名無しさん
2005/12/01(木) 10:16:38ひとつ質問があります。
今授業で配列(x[ ]など)を学んでいるのですが、それの問題で
「5つ数字を入力してその内の最小値を見つけ、画面にその最小値の
配列番号を表示させる」というのがなかなかできません。
例えばx[4]={10,45,23,8,14}の場合x[3]が最小値を持ってるので
画面に「3」と出したいのですが・・・。
以下のようにやってみたところ表示されるのは最小値であって
配列の番号ではないんです。
void findIndex(int x[], int size);
int min;
int main()
{
int score[4];
cout << "Enter 4 numbers: " << endl;
cin >> score[0];
min = score[0];
findIndex(score, 4);
cout << "The index of the array which has the smallest number is: " << min << endl;
return 0;
}
void findIndex(int x[], int size)
{
int n;
for (n = 1; n < size; n++)
{
cin >> x[n];
if (x[n] < min)
min = x[n];
}
}
どなたかご指導のほどよろしくお願いします。
0974デフォルトの名無しさん
2005/12/01(木) 10:22:380975デフォルトの名無しさん
2005/12/01(木) 10:26:00findIndexでnを返り値にしろ。
0976973
2005/12/01(木) 10:29:35申し訳ございません。半年も読み返したら期限過ぎちゃうんでご勘弁を・・。
[1] 授業単元:Problem Solving with C++
[2] 問題文(含コード&リンク):上記
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: win visual studio 6.0
[3.3] 言語: C++
[4] 期限: 明日まで
よろしくお願いします。
0977973
2005/12/01(木) 10:47:34>>意味なくglobal変数使っている時点で終了。
ごもっともです・・・。
なんせ初心者なんでいろいろ試してみてるんですが
その分無駄も多いですよね。
>>findIndexでnを返り値にしろ。
すいません、もう少し分かりやすくお願いできますでしょうか。
nを返り値にとはどうのようにすればできますか・・・?
0978デフォルトの名無しさん
2005/12/01(木) 10:54:16{
int n,ret=0;
int min = x[0];
for (n = 1; n < size; n++)
{
cin >> x[n];
if (x[n] < min) {
min = x[n];ret=n;
}
}
return ret;
}
0979デフォルトの名無しさん
2005/12/01(木) 10:54:28どなたかわかるかた今したら教えていただけないでしょうか。
0980デフォルトの名無しさん
2005/12/01(木) 11:07:14スレ違いと思うなら聞くなや。
この辺でどうだ?
http://pc8.2ch.net/test/read.cgi/tech/1129798459/
http://pc8.2ch.net/test/read.cgi/tech/1107946285/
http://pc8.2ch.net/test/read.cgi/tech/1131353602/
http://pc8.2ch.net/test/read.cgi/tech/1130937679/
0981デフォルトの名無しさん
2005/12/01(木) 11:22:53std::min_elementで一発だろ
最初は使い方覚えるだけでいいし、
自作するより遙かにマシなはず
0982デフォルトの名無しさん
2005/12/01(木) 11:28:12Z1=2.5+3.2i
Z2=1.3+0.4i
この和と積を求めて、結果を打ち出すプログラムはどうなりますか?
自分でやってみたんですが、うまくいきません。
誰かわかる方教えてください
0983デフォルトの名無しさん
2005/12/01(木) 11:46:53スレ終了間際になってマルチとはいい根性してるジャマイカ。
http://pc8.2ch.net/test/read.cgi/tech/1129043264/932
0984デフォルトの名無しさん
2005/12/01(木) 11:47:52#include <stdio.h>
#include <complex.h>
int main(void)
{
double _Complex Z1 = 2.5 + 3.2i;
double _Complex Z2 = 1.3 + 0.4i;
double _Complex R = Z1 * Z2;
printf("%lf+%lfi\n", __real__ R, __imag__ R);
}
0985984
2005/12/01(木) 11:48:43適宜追加してくれ。
0986デフォルトの名無しさん
2005/12/01(木) 12:04:20>1に則っていない、しかもマルチに回答すんじゃね。
#しかし、C99って便利になってんだな。
0987973
2005/12/01(木) 12:05:36なるほど!findIndexをvoidじゃなくてintにすればreturnできますね。
しかもret=nをifの{}の中に入れるとは思いつきませんでした!
ret=nみたいなことは試したのですが{}がなかったので
どんな数字入れても配列の一番最後の「4」が表示されるだけだったんです。
早速試してみます。
>>981
すみません、まだそういうの習ってないんでわかんないです・・・。
それは最小値を見つけてくれるんですか?だったらかなり使えそうですね。
勉強してきます。ありがとうございます。
0988デフォルトの名無しさん
2005/12/01(木) 12:09:48無理ならまた書き込む。
0989988
2005/12/01(木) 12:12:55C/C++の宿題を片付けます 54代目
ttp://pc8.2ch.net/test/read.cgi/tech/1133406672/
0990デフォルトの名無しさん
2005/12/01(木) 12:57:20ありがとうございました、ソースの大本はわかったのでこれを元に
改変してみます。
0991デフォルトの名無しさん
2005/12/01(木) 16:57:011.配列を利用して
2.また、構造体を用いたリストを応用して
実装してください。
プッシュ、ポップの関数を定義してください。
0992デフォルトの名無しさん
2005/12/01(木) 16:57:47>>1 やり直し。
0993デフォルトの名無しさん
2005/12/01(木) 17:14:59[2] 問題文(含コード&リンク):getchar関数を使用して文字を読み取り、ピリオドが出てきたら改行する
プログラムを作りなさい。(ファイルの終わりを入力したらプログラムを終了させる)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2005年12月2日17時
[5] その他の制限: ポインタと標準入出力関数の初歩しか習っていません
よろしくお願いします
0994デフォルトの名無しさん
2005/12/01(木) 17:23:16int main(void)
{
int ch;
while (ch = getchar(), ch != EOF) if (ch == '.') puts("");
return 0;
}
0995デフォルトの名無しさん
2005/12/01(木) 17:48:390996デフォルトの名無しさん
2005/12/01(木) 20:53:350997デフォルトの名無しさん
2005/12/01(木) 20:55:36C/C++の宿題を片付けます 54代目
http://pc8.2ch.net/test/read.cgi/tech/1133406672/
0998デフォルトの名無しさん
2005/12/01(木) 20:57:010999デフォルトの名無しさん
2005/12/01(木) 20:57:32/ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
─( ゚ ∀ ゚ )< ぱいそんぱいそん!
\_/ \_________
/ │ \
∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいそんぱいそんぱいそん!
ぱいそん〜〜〜! >( ゚∀゚ )/ | / \__________
________/ | 〈 | |
/ /\_」 / /\」  ̄ / /
1000デフォルトの名無しさん
2005/12/01(木) 20:58:00\ │ /
/ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
─( ゚ ∀ ゚ )< ぱいそんぱいそん!
\_/ \_________
/ │ \
∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいそんぱいそんぱいそん!
ぱいそん〜〜〜! >( ゚∀゚ )/ | / \__________
________/ | 〈 | |
/ /\_」 / /\」  ̄ / /
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。