ぼるじょあがC/C++の宿題を片づけますYO! 68代目
1 :
デフォルトの名無しさん :
2007/06/03(日) 16:44:55 (・3・)エェー ぼるじょあですYO!
わからない宿題を片づけますYO!
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html 【前スレ】
ぼるじょあがC/C++の宿題を片づけますYO! 67代目
http://pc11.2ch.net/test/read.cgi/tech/1165718021/
2get
(・3・) エェー 誰も書いてないYO!
4 :
デフォルトの名無しさん :2007/06/05(火) 19:15:15
@3行5列の二次元配列に15個の数字をランダムで選ぶ(ただし、必ず12を入れる) A配列に入れられた数字を B大きい順に配列に入れ直して示す。(バブルソートで) C小さい順(バブルソートで) Dprintfで12の行、列を出力 if,do,wihle習いました。ぼるじょあさん、お願いします(;_;)
6 :
デフォルトの名無しさん :2007/06/05(火) 19:45:55
(・3・)アルェ〜そうなのかYO!ポインタの替わりに添え字から行と列を (・3・)作ればいいと思うYO!
>>4 俺も作ってみたんでどうぞ。
ポインタ、for文、自作関数、未使用。
後、配列に馬鹿でかい数字を入れる意味がないと思ったから
配列に入れる数値が50を越えないようにしてある。
10 :
デフォルトの名無しさん :2007/06/05(火) 23:40:44
>>8 さん、
>>9 さん、どこにソースコードがあるのですか(;_;)?
>>10 (・3・) アルェ〜
>>9 だけどリンクを踏んでYO!
(・3・)
>>8 は僕じゃないからわからないYO!
12 :
デフォルトの名無しさん :2007/06/06(水) 00:02:28
>>4 です。すいません、問題で15個ランダムみたいなこと書いたんですけど、自分で決めます。例えば、15,23,54,69,8,5,4,52,5,12,11,29,58,73,65です。この数字でお願いします(;_;)
14 :
8 :2007/06/06(水) 09:15:53
15 :
デフォルトの名無しさん :2007/06/06(水) 14:55:57
リンクってパソコンからじゃないと無理ですか?
>>15 たぶん無理やね、っておまいPC持ってないのかYO!
親に言って安いノートで良いから買ってもらえYO!
<チラシの裏>
>>14 のコード、time.hとすべき所をmath.hと書いてしまったのに
BCCでコンパイル出来たし、実行も出来た。一体どうなってんだ?
</チラシの裏>
17 :
デフォルトの名無しさん :2007/06/06(水) 18:59:21
いやパソコンあります。
18 :
デフォルトの名無しさん :2007/06/06(水) 19:07:41
>>4 です。
みなさんありがとうございました。
ちなみに
>>13 さん
k=i/5
l=i%5
ってどういうことですか?
普通のテキストには載ってないんじゃないか?
まあ、バブルソートと多次元配列を考えればおのずと答えは出るよね。
>>17 持ってるならなら変な事聞くな。
21 :
◆lIN/ESgxWw :2007/06/06(水) 21:10:48
[1]プログラミング [2]1本の道に,食べ物が多数落ちている. ランダムに動く動物が,それらを全て食べ尽くすと終了するようなプログラムを作成せよ. <仕様> 「道」は要素数20程度の1次元配列で表現する. 「食べ物」は,上記配列の各要素に値1があればその場所に存在し,値0であればその場所には存在しないものとする. 「動物」は,1回の移動で配列中の1つ左または1つ右に移動できる. 「動物」の訪れた場所のエサは食べられたものとする. 「道のうち食べ物のない箇所」,「道のうち食べ物のある箇所」,「動物」は,それぞれ -, *, O で表現する.それらを横一列の文字で表示する. 繰り返し処理中は,毎回数十〜数百ミリ秒程度の時間,実行を一時停止させることで,状態の推移を見やすくする. [3]OS:Linux コンパイラ名:スイマセン、分かりません 言語:C言語 [4]できれば今日中にお願いします 他の掲示板で聞いたんですが、イマイチ回答が得られなかったのでこちらに 質問させていただきました。よろしくお願いします。
>>18 多次元配列はそのままでは一次元配列のようにリニアにはアクセスできないので
添え字を i から作り出す必要があるわけです。
23 :
デフォルトの名無しさん :2007/06/06(水) 21:56:59
まあポインタを一次元配列に変換するとリニアにアクセスできるけどな。 この質問者はポインタを知らないらしいのでこれはなかった事に。
>>25 void mysleep(long msec){
static long mcount = -1;
long i, j;
if(mcount < 0){
time_t check_time;
check_time = time(NULL);
while(check_time == time(NULL));
check_time = time(NULL);
for(mcount = 0; check_time == time(NULL); mcount++);
mcount /= 1000;
}
for(i = 0; i < msec; i++){
for(j = 0; j < mcount; j++){
time(NULL);
}
}
}
27 :
デフォルトの名無しさん :2007/06/06(水) 23:30:12
>>4 で多次元配列を一次元配列に入れ直して、また多次元配列に入れるにはどうしたらいいんですか?
>>27 ”入れ直す"んじゃなくて”ポインタを付け替える”だけ。
ポインタを勉強してない人に説明すると長くなるから、これ位で勘弁。
30 :
29 :2007/06/07(木) 00:15:01
>>26 最低なsleepだな。いや寧ろ、sleepなんて名乗るのは烏滸がましい。
32 :
デフォルトの名無しさん :2007/06/07(木) 00:29:01
C言語が全然わらかないんですけど…皆さんは始めのころどうやって勉強しましたか?
33 :
◆lIN/ESgxWw :2007/06/07(木) 00:51:55
標準関数に拘らなければ usleep(microsecond) @ unistd.h 使えばおk
>>26 はシングルタスクOS時代の手法
linux だと
>>34 使ったほうがいいと思う
37 :
デフォルトの名無しさん :2007/06/07(木) 08:14:41
#include<stdio.h> void main(void) { int n,m,sum; printf("整数nの入力==>"); scanf("%d",&n); m = 0; sum = 0; while(m < n){ sum+=++m; } printf("合計:%d\n",sum); } 実行画面 整数nの入力==>5 合計:15 このプログラム文をdo〜while文に書き換えたやつにしたいのですがどうやればいいですか?
do{ if (m < n) break; sum += ++m; }while(1);
1] 授業単元:C言語演習 [2] 問題文(含コード&リンク): 長さ157以下の英数字,空白の並びからなる文字列を二つ入力し, それぞれをa1, a2とする. a1が"abc",a2が"ab"の場合のように, a2の先頭部分がa1の先頭部分に含まれるときは1を,そうでないときは0を値として 返す関数 int match(char *a1, char *a2);を作成しなさい. 配列宣言を除きすべてポインタを用いて処理すること. 文字列は157文字以下が入力されるものとし,文字列の長さに関するエラー処理を する必要はない. 計算の手順としては,文字列の先頭から一文字ずつ一致するかどうかを比較する. a2にあたる文字列中の比較対象となった文字が'\0'であれば,a2はa1に包含された ものとして扱う.これ以外で比較時に,一文字でも一致しない場合があれば 包含されていないとして扱う. この関数をもちいて,2つの文字列を与えたとき,一つ目の文字列の中に二つ目の 文字列が含まれている場合(この場合先頭が必ずしも一致していなくてもよいものとする) には "一致"をさもなければ"不一致"を出力するプログラムを作成しなさい. [3] 環境 [3.1] OS:Windows [4] 期限: 6月7日午前10:30 [5] その他の制限: よろしくお願いいたします。
↑実行結果はこのようになります。 [home@C*LPC* ~/test]% ./test ABC AB 一致 [home@C*LPC* ~/test]% ./test AB ABC 不一致 [home@C*LPC* ~/test]% ./test ABC ABD 不一致 [home@C*LPC* ~/test]% ./test ABC BC 一致 [home@C*LPC* ~/test]%
>>32 最初、Cの入門サイト(KID's World)でやってたけど、もっと知りたくなって
Cの入門書(基礎C)を買った。それでも足りなくて独習Cで色々学んで
練習問題をこなした。最近はここで宿題の代行して腕を磨いてる。
簡単な練習問題をやって、徐々にステップアップしていけば、ここに投下される
宿題位はこなせるようになるよ。
42 :
デフォルトの名無しさん :2007/06/07(木) 12:39:38
授業単元:C言語 問題文(含コード&リンク): 今までやった内容:if・for文 OS:Windows コンパイラ名とバージョン:borland 言語:C テーマ:while文 問題:複数件の整数を入力し、合計、件数、平均を求め表示しなさい 0が入力されたらデータの終了とし、合計、件数には反映しない実行画面 整数入力(0で終了)==>5 整数入力(0で終了)==>4 整数入力(0で終了)==>10 整数入力(0で終了)==>8 整数入力(0で終了)==>0 合計:27 件数:4 平均:6.8 今授業でやってる内容なんですがどうしてもわからないので何方か教えてください
>>42 何をお教えすればよろしいのでしょうか?。
#include<stdio.h>
int main(void)
{
int n;/*キーボードから入力された整数*/
int num;/*件数*/
int sum;/*合計*/
double ave;/*平均*/
num=0;sum=0;/*合計、件数を初期化*/
do{
printf("整数入力(0で終了)==>");
scanf("%d",&n);/*キーボードから整数nを受け取る*/
if(n != 0){/*0は合計、件数に含めないので、n≠0の時実行される*/
sum=sum+n;
num=num+1;
}
}while(n != 0);/*入力された数nが0で無い時は繰り返す。nが0ならループ終了*/
ave=(double)sum/num;/*平均の計算、整数同士の割り算だと小数点以下が切り捨てられるので
sumを(double)でdoubleにキャスト(一時的な型の変換)している。*/
printf("合計:%d 件数:%d 平均:%.1f",sum,num,ave); /*結果表示、%.1fで平均の値が
小数点以下1桁で表示されるようにしてある*/
return 0;
}
44 :
デフォルトの名無しさん :2007/06/07(木) 16:36:47
[1] 授業単元:プログラミングA [2] 問題文(含コード&リンク): 2つの4行4列の行列が与えられたとき、その積を計算するプログラムをwhileループを用いて作成せよ。インクリメント演算子を使用すること。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C++ [4] 期限: 2007年6月7日23:59まで [5] その他の制限: よろしくお願いします。
46 :
デフォルトの名無しさん :2007/06/07(木) 23:39:36
47 :
デフォルトの名無しさん :2007/06/08(金) 10:02:03
48 :
デフォルトの名無しさん :2007/06/08(金) 10:03:45
49 :
デフォルトの名無しさん :2007/06/08(金) 22:56:31
[1] 授業単元:基本プログラミング [2] 問題文(含コード&リンク): 関数f(x)は次式で与えられる。 f(x)=x+x*x/4+x*x*x/9+……+xのn乗/n*n+…… 上式右辺の無限級数は、第n項(xのn乗/n*n)の絶対値が最初に0.000001より小さく なる項までの和で打ち切っても近似的には問題ないものとする。 x=0.1, 0.2, 0.3, 0.4, …, 0,9, 1におけるf(x)の値を計算して表示するプログ ラムをつくれ。 [実行例] f(0.1)=0.202618 f(0.2)=0.411004 f(0.3)=0.626129 f(0.4)=0.849283 : : f(0.9)=2.19971 f(1)=2.64393 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C++ [4] 期限:6月10日まで [5] その他の制限: do while文でお願いします。
51 :
デフォルトの名無しさん :2007/06/08(金) 23:14:24
[3]宿題ってか 3つの引数使いたいんですが visualC++で error C2660: 'initFld' : 関数に 3 個の引数を指定できません。 てエラーが… パソコン全くダメなんでやヴぁいです(’д`) 死ぬ
52 :
デフォルトの名無しさん :2007/06/08(金) 23:19:11
(・3・)エェー 死ねYO
53 :
デフォルトの名無しさん :2007/06/08(金) 23:33:58
冷たい(◎д◎)! 教えて!
>>49 #include <cstdio>
double f(double x) {
double y=x,z=1,i=3,r=0,n;
do {
n=y/z;
r+=n;
z+=i;
i+=2;
y*=x;
} while(n>=0.000001);
return r;
}
int main(void) {
int i=1;
do {
printf("f(%.1f)=%f\n", i/10.0, f(i/10.0));
} while(++i<=10);
return 0;
}
[1] 授業単元:C言語によるプログラミング入門 [2] 問題文(含コード&リンク): 演習課題1:次の関数がどのような値を返すか確かめるプログラム(main関数)を作成し実行せよ。考察も書くこと。 int myreturn(){ return 0; return 1; } 演習課題2:次の二つの関数が同じ働きであることを理解させるプログラム(main関数)を作成し実行せよ。 int myfactorial1(int i){ int j,a; if (i<0) return (0); if (i<2) return (1); a=1; for(j=1;j<i+1;j++) a=a*j; return a; } int myfactorial2(int i){ if (i<0) return 0; if (i<2) return 1; return (i*myfactorial2(i-1)); } [3] 環境 [3.1] OS: Windows [3.2] Cygwin 1.5.24-2 [3.3] 言語:C言語 [4] 期限:6月13日の水曜日まで [5] その他の制限:今日はじめてreturn文を習いました。そのレベルでよろしくお願いします
56 :
54 :2007/06/09(土) 10:48:28
しもた using namaspace std; を書き忘れた。
>>58 は??
<cstdio>内を読んでみることをお勧め
>>56-59 規格が読み難い文章だけど
>>56 は誤りっぽいな
「JISX3014 附属書D(規定) 互換性」より抜粋
D.5 標準Cライブラリヘッダ
標準Cライブラリとの互換性のため、C++標準ライブラリは、表100に示す18個
の言語Cのヘッダを提供している。
表100 言語Cのヘッダ
<assert.h> <iso646.h> <setjmp.h> <stdio.h> <wchar.h>
<ctype.h> <limits.h> <signal.h> <stdlib.h> <wctype.h>
<errno.h> <locale.h> <stdarg.h> <string.h>
<float.h> <math.h> <stddef.h> <time.h>
それぞれのCヘッダは、その名前をnameとしたとき"name.h"の形式をしている。
それぞれに対応して、標準C++ライブラリの名前空間内に置かれた"cname"とい
うヘッダが、名前空間stdの名前空間有効範囲の中にも置かれ、その後に明示的
に《using指令》(7.3.3)が指定されているかのように振る舞う。
例
ヘッダ<cstdlib>は、名前空間stdの中に、その宣言及び定義を提供する。
ヘッダ<stdlib.h>は、C標準と同じく、これらを大域的名前空間でも利用
可能にする。
別のところが険悪ムードで少しまずいと思ったのでお答えいただけませんか/ [1] 授業単元: コンピュータ・C言語 [2] 問題文: ファイルからデータを読み込み、pointが85以上、gpa<2,0のデータだけを表示しなさい。 続いて、(1)ファイルの内容を全て表示し、次に上記の条件に合致するデータだけを別ファイルに書き出し さらにこのファイルを読み込んで表示せよ。 最後に、point、gpaの平均を計算して同じファイルのデータ後に書き出し、そのファイル内容を読み込み表示せよ。 (つまり2.3,4を表示) x-file.tex↓ 1 alice 48 3.6 2 bob 88 3.2 3 charlie 69 1.8 4 dick 100 3.9 5 bomb 3 0.4 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ: Visual Studio 2005またはgcc [3.3] 言語: C++ [4] 期限: 6/11 まで [5] その他の制限: 配列でdefineで文字を定義して使うか、for loopで製作する
>>61 (・3・) エェー 「このファイル」っていうのは「ファイル」?「別ファイル」?
「同じファイル」ってどのファイル?
問題の意味がよく分からないYO!
それぞれのファイルに名前をつけてくれYO!
ファイルのフォーマットが分からないYO!
point および gpa の取り得る値の範囲も分からないYO!
例)
ファイルA を読み込み、上記の条件に合致するデータだけを ファイルB に書き出す
ファイルB の内容を標準出力に出力する
ファイルA 中の point, gpa それぞれの平均値を計算して、ファイルA の最後に追記する
ファイルA の内容を標準出力に出力する
>>46 (・3・) エェー 期限過ぎてるから解いても無駄かNA?
すいません分けて書いたほうがよかったかもしれません (問題1)X-fileを読み込んでpointが85以上、gpa<2,0のデータだけを表示しなさい。 (つまり2.3,4を表示するようにしなさい)というもので (問題2)続いて、1・x-fileの内容を全て表示する。2・問題1の条件に当てはまるものを別のファイル(Bファイル)に書き込む。3・Bファイルを読みこんで表示する。 (問題3)X-FILEを読みこんでpointとgpaの平均を計算して同じファイルの元のデータの後に書き出し、さらにそのファイル内容を表示。 (x-fileに平均を書き、平均が追加されたx-fileを表示せよ) x-file 1 alice 48 3.6 2 bob 88 3.2 3 charlie 69 1.8 4 dick 100 3.9 5 bomb 3 0.4 わかりにくくてすみませんでした。
書き忘れました。x-fileはメモ帳で適当に(先生が)作ったテキストファイル(.tex)です。
>>61 (・3・) エェー どれが point で どれが gpa なのか分からんYO!
合致するデータっていうのは 1 行丸ごとかYO!
なんで 5 が表示されないんだYO!
何度も言葉が足りずにすみません。 pointは(多分)名前の後のものでgpaは(多分)小数点ついてるやつです。 合致するデータは一行丸ごとだと思います。 5が表示されないのは・・・ミスでしょうか。2.3.4と書いてあるので適当に5を条件外の数値にしてみたのでそれでお願いします。 1 alice 48 3.6 2 bob 88 3.2 3 charlie 69 1.8 4 dick 100 3.9 5 bomb 3 2.4 つーか問題がわかりにくいですね。今度抗議してみます。すいませんでした。
>>61 (・3・) エェー CしかできないからC++っぽくするなら自分で書き換えてくれYO!
#include <cstdio>
void file_display(char *filename){
FILE *fp;
int moji;
if((fp=fopen(filename, "r"))==NULL) return;
while((moji=fgetc(fp))!=EOF) fputc(moji, stdout);
fclose(fp);
}
int main(void){
char one_line[1024], *fname_in="x-file", *fname_out="Bファイル";
FILE *fp_in, *fp_out;
double point, gpa, point_sum=0.0, gpa_sum=0.0;
int num=0;
file_display(fname_in); // q2 only
if((fp_in=fopen(fname_in, "r+"))==NULL) return 1;
if((fp_out=fopen(fname_out, "w"))==NULL) return 2; // q2 only
while(fgets(one_line, sizeof(one_line), fp_in)){
if(sscanf(one_line, "%*d %*s %lf %lf", &point, &gpa)!=2) continue;
num++; point_sum+=point; gpa_sum+=gpa; // q3 only
if(point>=85 || gpa<2.0){
fputs(one_line, stdout); // q1 only
fputs(one_line, fp_out); // q2 only
}
}
if(num>0) fprintf(fp_in, "-1 average %f %f\n", point_sum/num, gpa_sum/num); // q3 only
fclose(fp_in);
fclose(fp_out); // q2 only
file_display(fname_out); // q2 only
file_display(fname_in);
return 0;
}
問題1,2,33つともやっていただけたんですか。ありがとうございます! ファイルが見つからないというエラーが出たんですが、同じフォルダ内に入れないとダメとかいう制限でもあるのでしょうか?
(・3・) エェー 新スレおつんつんん C++っぽくだとこんなんかNA? #include <iostream> #include <sstream> #include <fstream> #include <string> using namespace std; #define filename "x-file.txt" int main(){ fstream file; string str; int point = 0; double gpa = 0.0; file.open( filename, ios::in ); while( !file.eof() ){ char buf[256]; getline(file, str); istringstream is( str ); int p; double g; is >> buf >> buf >> p >> g; point += p; gpa += g; } file.close(); file.open( filename, ios::app ); file << point /5 << " " << gpa /5 << endl; file.close(); return 0; }
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): (問題1)点1が79以上、または点2が20以下のものを行ごと表示しなさい (問題2)点1、点2の平均を計算して表示しなさい 点1 点2 1、A君 30 49 2、B君 90 69 3、C君 60 12 4、D君100 88 5、E君 30 67 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:visual studio 2005 [3.3] 言語: C [4] 期限: 6/12 [5] その他の制限:配列を使って行ってください。
ちょっと問題2の分が悪かったです。 点1の平均と点2の平均を出し、表示しなさいでした。すみません。
何度もすみません。私バカなんでなるべく簡単に書いてもらえないでしょうか? スレ汚し失礼しました。配列は勉強済みです。
>>71 (・3・) エェー こんなんでいい?
#include <stdio.h>
int main( void ){
char name[5][4] = {"A君", "B君", "C君", "D君", "E君"};
int score[5][2] = {{30, 49}, {90, 69}, {60, 12}, {100, 88}, {30, 67}};
double ave1 = 0.0, ave2 = 0.0;
int i;
for(i=0; i<5; i++){
if( score[i][0] >= 79 || score[i][1] <= 20 ){
printf( "%d、%s %d点 %d点\n", i+1, name[i], score[i][0], score[i][1] );
}
ave1 = score[i][0];
ave2 = score[i][1];
}
printf( "点1の平均:%f 点2の平均:%f\n", ave1 /5, ave2 /5 );
return 0;
}
>>74 char name[5][4]←これはよろしくないんでないかい?
(・3・) アルェー ダメ・・・だっけ?
>>76 規格で+1まで保証されてたか忘れたけどいちお、char[5][5]がいいんじゃない?って思っただけ。
>>77 すまん、ABCDEが全角に見えたんだ・・・
スルーしてくれ・・・
(;・3・) エェー 文字列って2バイト余計に必要な場合あるのかYO
>>78 (・3・) エェー よかったびっくりしたYO
>>74 (・3・) エェー 実行してみたら平均点が低すぎるYO!
[1] 授業単元: C言語プログラミング [2] 問題文(含コード&リンク): ファイルからデータを読み込み、1が80以上、または2が20以下のデータだけを行ごと表示しなさい Aファイル↓ 1 2 1、A 33 49 2、B 88 69 3、C 70 12 4、D 99 88 5、E 55 67 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:visual studio 2005 [3.3] 言語: C [4] 期限: 6/14 [5] その他の制限:上のほうに殆どそっくりな問題が出ているのですがわからないので・・
>>81 (・3・) エェー ave1 += のところが ave1 = になてたYO
すいません。参考文献を乗せるのを忘れました。
次のプログラムは、hairetu-filesと呼ばれるファイルに格納した
3つのデータを読み込んで合計した値を求めて出力しています。
#include<stdio.h>
#define N 3
int main(void){
FILE *fp;
int i,date,sum=0;
if((fp=fopen("hairetu-files","r"))==NULL){
puts("File Open Error"); return 0;}
for(i=0;i<N;i++){
fscanf(fp,"%d",&date);
sum+=data;
}
fprintf(stdout,"合計は%dです\n",sum);
fclose(fp);
return 0;
}
hairetu-files
121
232
341
この途中の部分を
>>82 の条件になるように書き換えれば出来るらしいですが・・・
どうかこれを参考にお願いします
(・3・) エェー まぁこんなんで #include <stdio.h> #define filename "A.txt" #define N 5 int main( void ){ FILE *fp; int i, sum1 = 0, sum2 = 0, data1, data2; char buf[256]; if( (fp = fopen( filename, "r")) == NULL){ printf( "File Open Error"); return 0; } while( fgets( buf, 256, fp) != NULL){ sscanf( buf, "%*s %d %d", &data1, &data2); sum1 = sum1 + data1; sum2 = sum2 + data2; if(data1 >= 80 || data2 <= 20){ printf( "%s", buf); } } printf( "点1の平均:%d\n点2の平均:%d\n", sum1 /N, sum2 /N); fclose( fp ); return 0; }
>>82 です。他の人のもこなしているのにわざわざありがとうございました。
データを読み込むことは出来たのですが実行した際全部出てきてしまい
条件の結果とは一致しませんでした・・・
(・3・) アルェー 読み込みファイルの中身はどんなん?
1 2 1、A 33 49 2、B 88 69 3、C 70 12 4、D 99 88 5、E 55 67 が読み込みファイルの中身です。これが全て表示されてしまうのです。
(・3・) アルェー 全角スペースですかYO ファイルを・・ 1 2 1、A 33 49 2、B 88 69 3、C 70 12 4、D 99 88 5、E 55 67 にして見てくださいYO ソースもちょい直すYO
#include <stdio.h> #define filename "A.txt" #define N 5 int main( void ){ FILE *fp; int i, sum1 = 0, sum2 = 0, data1, data2; char buf[256]; if( (fp = fopen( filename, "r")) == NULL){ printf( "File Open Error"); return 0; } if( (fgets( buf, 256, fp)) == NULL)return 0; while( fgets( buf, 256, fp) != NULL){ sscanf( buf, "%*s %d %d", &data1, &data2); sum1 = sum1 + data1; sum2 = sum2 + data2; if(data1 >= 80 || data2 <= 20){ printf( "%s", buf); } } printf( "点1の平均:%d\n点2の平均:%d\n", sum1 /N, sum2 /N); fclose( fp ); return 0; }
ありがとうございます。半角にしてやってみたところやはりなぜか5番が表示されてしまうのです。 1番は消えました
できましたよおおおおおおおおおおhomoじょあさんありがとうございます!!
(・3・) エェー そりは良かったお 結局なんで5番はでてたのかお
1、 2、 3、 4、 5、 を小文字のまま書いていたのが悪カッタっぽいです。データは自分で作ったものなんで大文字でかいたら おーけーでした。
適当すぎw
>>94 (・3・) エェー よくわからんけどそうゆうことかYO
>>95 (・3・) アルェー がっこの宿題こんなもん〜
【質問テンプレ】 [1] 授業単元:Cプログラミング実習 [2] 問題文(含コード&リンク): オリジナルプログラムの作成 下記要綱を満たしていればどんなプログラムでも問題ありません @文は最低50以上(;で終わる文のみカウント) A2次元配列、マクロを使用 Bif,while,for文の使用 C自作関数又は引数を使用。戻り値は問いません Dヘッダファイルを使用 E誰が見ても分かりやすいプログラムにすること(/*説明*/) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:VB.NET2003 [3.3] 言語: C [4] 期限: 2007年6月15日 [5] その他の制限:ポインタ、リスト使用不可
99 :
デフォルトの名無しさん :2007/06/12(火) 21:00:06
2次元配列[3][5]に0〜99の数のうちから15個の数字をランダムに選び(30は必ずどこかに入れる)次のプログラムを作れ 配列に格納された数値を a,大きい順に並べる(バブルソートで) b,小さい順に(バブルソートで) c,30の場所を配列の行番号と列番号をprintfで出力せよ お願いします。
100 :
82 :2007/06/12(火) 21:58:35
[1] 授業単元: C言語プログラミング [2] 問題文(含コード&リンク): ファイルからデータを読み込み、まずファイルの内容を全て表示し、 1が80以上、または2が20以下のデータだけを別のファイルに書き出しなさい。(別ファイルは適当でよい) そしてこのファイルを読みこんで表示しろ Aファイル↓ 1 2 1、A 33 49 2、B 88 69 3、C 70 12 4、D 99 88 5、E 55 67 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:visual studio 2005 [3.3] 言語: C [4] 期限: 6/14 [5] その他の制限:上のほうに殆どそっくりな問題が出ているのですがわからないので・・ この前お世話になったものです。自分で解こうとしたけれどいくらやっても無理なので 知識豊富な皆様の力を分けてください。お願いします。
[1] 授業単元:C++研究
[2] 問題文:
多次元配列を用いて自分の時間割を作成しコマンドプロンプトへ出力しなさい。
なお,履修データはプログラムに直接記述してよい。
また,時限名,曜日名のタイトルも出力すること。
配列などはいれてませんが出力すると、下記urlのcout文のような表示にするようです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4223.txt 枠は手書きでも構わないみたいです。
枠や時間割りはすべては埋めてませんが、時間割の枠と全ての時間割り枠内に
科目名、担当の先生の名前、講義室の番号室の3つと
それプラス曜日名と時限名を多次元配列で出力表示します
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:Visual studio.2005
[3.3] 言語: C++
[4] 期限: ([2007年6月15日11:00まで]
[5] その他の制限:特になし
よろしくお願いします
[1] 授業単元:C++研究
[2] 問題文:
ボーリングのスコア計算をするプログラムを作成しなさい
(入力:スコア, 配列データ:スコア表, 出力:入力毎にスコア表を表示させる)
ttp://hmets.hp.infoseek.co.jp/boul.html ↑のように表を作成して表示するみたいです。10回戦目は3投、投げます
氏名の部分はいりません。
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:Visual studio.2005
[3.3] 言語: C++
[4] 期限: ([2007年6月16日11:00まで]
[5] その他の制限:特になし
よろしくお願いします
104 :
デフォルトの名無しさん :2007/06/14(木) 12:48:10
アップローダーのNo.4248に問題をアップしましたので、 よろしくお願いします。
[1] 授業単元:C言語 [2] 問題文: 次の条件を満たす関数を作りなさい。 1. 配列の要素p[n]とp[n+1]を比較し小さいほうを前にずらす。 2. 番兵-1が出たら処理を終了させる。 3. 1、2を要素の数だけ繰り返す。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:microsoft Visual C++ .NET 2005 , borland C++ compiler5.5 ほか [3.3] 言語: CまたはC++ [4] 期限: 2007年06月28日13:00まで [5] その他の制限:メールでの提出も可。ただし、他人のコピーは不可。
106 :
デフォルトの名無しさん :2007/06/14(木) 15:57:37
授業単元:C言語 環境:if文・for文・while文・do〜while文・switch〜case文 OS:Windows コンパイラ名とバージョン:borland 言語:C テーマ:数値配列の操作 配列[8]に整数を入力し、以下のような表示をしなさい 実行画面 整数入力[0]==>4 整数入力[1]==>3 整数入力[2]==>8 整数入力[3]==>6 整数入力[4]==>1 整数入力[5]==>5 整数入力[6]==>2 整数入力[7]==>7
演習課題1:次の関数がどのような値を返すか確かめるプログラム(main関数)を作成し実行せよ。考察も書くこと。 int myreturn(){ return 0; return 1; } 演習課題2:次の二つの関数が同じ働きであることを理解させるプログラム(main関数)を作成し実行せよ。 int myfactorial1(int i){ int j,a; if (i<0) return (0); if (i<2) return (1); a=1; for(j=1;j<i+1;j++) a=a*j; return a; } int myfactorial2(int i){ if (i<0) return 0; if (i<2) return 1; return (i*myfactorial2(i-1)); }
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 1:次の関数がどのような値を返すか確かめるプログラム(main関数)を作成し実行せよ。 [3] 環境 2:次の二つの関数が同じ働きであることを理解させるプログラム(main関数)を作成し実行せよ [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 ) [3.3] 言語: (C) [4] 期限: ([2007年6月14日) [5] その他の制限: 特になし よろしくお願いします
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 演習課題1:次の関数がどのような値を返すか確かめるプログラム(main関数)を作成し実行せよ。考察も書くこと int myreturn(){ return 0; return 1; } 演習課題2:次の二つの関数が同じ働きであることを理解させるプログラム(main関数)を作成し実行せよ int myfactorial1(int i){ int j,a; if (i<0) return (0); if (i<2) return (1); a=1; for(j=1;j<i+1;j++) a=a*j; return a; } int myfactorial2(int i){ if (i<0) return 0; if (i<2) return 1; return (i*myfactorial2(i-1)); } [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 ) [3.3] 言語: (C) [4] 期限: ([2007年6月14日) [5] その他の制限: 特になし ごめんなさい ここに書き込むのが初めてで様式を知りませんでした。。 よろしくお願いします
【質問テンプレ】 [1] 授業単元: C言語 [2] 問題文(含コード&リンク): int型配列データaに100,200,300,400の値を初期設定し、それらの 値の和WAを求めて、aのそれぞれの値と和WAを求めて出力するための プログラムを作成せよ。 [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン: microsoft Visual C++ .NET 2005 [3.3] 言語:C [4] 期限: ([07年6月14日24時まで] [5] その他の制限:特になし よろしくお願いします
#include <stdio.h> int main(void) { int i,WA; int a[4] = {100,200,300,400}; WA = 0; for(i=0;i<4;i++) WA += a[i]; for(i=0;i<4;i++) printf("a[%d] = %d\n",i,a[i]); printf("WA = %d\n",WA); return 0; }
114 :
デフォルトの名無しさん :2007/06/14(木) 20:45:17
>>106 #include <stdio.h>
int main(void){
int num[8] = {4, 3, 8, 6, 1, 5, 2, 7};
int i;
for(i=0; i<8; i++){
printf("整数入力[%d]==>%d\n", i, num[i]);
}
return 0;
}
117 :
デフォルトの名無しさん :2007/06/14(木) 22:47:00
>>105 #include<string.h>
void sub(char *p)
{
int i,n;
int LEN=strlen(p);
char temp;
for( i=0; p[i] != '0'; i++) {
for ( n=0; n<LEN-2; n++) {
if ( p[n] > p[n+1] )
{
temp = p[n];
p[n] = p[n+1];
p[n+1] = temp;
}
}
}
}
>>114 #include <stdio.h>
#define N 256+1
struct Person{
char name[N];
int age;
int sex;
};
void main(void){
struct Person P[]={{"花咲爺",64, 1},{"桃太郎", 5, 1},{"金太郎",12, 1},{"浦島太郎",41, 1}};
struct Person tmp;
int n=sizeof(P)/sizeof(P[0]);
for(int i=0; i<n; i++){
for(int j=n-1; j>i; j--){
if(P[j].age>P[j-1].age){
tmp=P[j];P[j]=P[j-1];P[j-1]=tmp;
}
}
}
printf("登場人物\n");
for(int i=0; i<n; i++) printf("名前=%s\t年齢=%3d\t性別=%s\n",P[i].name,P[i].age,P[i].sex == 0 ? "女" : "男");
}
119 :
デフォルトの名無しさん :2007/06/15(金) 02:01:25
誰が何をかいてもお前にはわかんないよ。
>>116 ありがとうございます、凄く助かりました。
124 :
依頼者 :2007/06/16(土) 19:10:03
[1] 授業単元: C言語演習 [2] 問題文(含コード&リンク): (1)登録番号"int no"と名前"char *name"と"int age"を含む構造体person型の配列を定義し 初期化せよ。なお、最後のデーダの名前にはNULLを入れておく。登録番号は入力順に1,2,3,4,5 とする。配列の先頭アドレスを目指す構造体person型のポインタは引数として与え、データを年齢順に 並び替える関数を作成せよ (2)登録番号"int no"と名前"char *name"と"int age"を含む構造体person型の配列を定義し 初期化せよ。なお、最後のデーダの名前にはNULLを入れておく。登録番号は入力順に1,2,3,4,5 とする。そして配列の先頭アドレスを目指す構造体person型のポインタと参照したい人の登録番号を引数として その名前年齢を表示する関数を作成せよ [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio.net [3.3] 言語:C++ [4] 期限: 07年6月19日まで [5] その他の制限:特になし よろしくお願いします。
[1] 授業単元:C++ [2] 問題文: 新しい型(設計図)として,「人間」型と「動物」型を設計(新しい型(設計図)は,structでmain関数の外で記述すること, 要素は適時考えること)し,main関数で上記の型(設計図)の変数を配列で2つづつ宣言(生成)した後, その変数の要素に適当な初期値を格納しなさい(関数を用いること)。最後に, main関数で上記で生成した変数の要素をすべてコマンドプロンプトに出力しなさい(関数を用いること)。 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2003 [3.3] 言語: C++ [4] 期限: ([2007年6月18日00:00まで] [5] その他の制限:ないです どうぞよろしくおねがいします
[1] 授業単元:C言語解析
[2] 問題文:
「直列共振回路の周波数特性」 抵抗R、自己インダクタンスL、静電容量Cの直列回路に
起電力Eを加える時、電流I(正確にはIドット)が流れる。Eの周波数fを変化させて、
Iの大きさと位相の変化を調べよ
(注) 共進周波数をはさんで適当な範囲で周波数を変化させる。また、周波数の刻み幅も適切に選ぶこと。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=4251 の7レス目(ミスってしまった・・)は複素数の演算を行うプログラムである
ここの下のほうのint main(void)からを変化させてとくようにするといい。
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:Visual studio.2005
[3.3] 言語: C
[4] 期限: 6月20日
[5] その他の制限: 特になし
初カキコだけどよろしくお願いします
>>125 とりあえず名前だけ作った。
適当に関数追加するだけなんだし自分で作って。
#include <iostream>
struct Creature {
private:
const char *name;
public:
void setName(const char *name) {
this->name = name;
}
const char *getName() const {
return name;
}
};
struct Animal : public Creature {};
struct Human : public Creature {};
int main() {
Animal animal;
animal.setName("動物");
std::cout << animal.getName() << std::endl;
Human human;
human.setName("人間");
std::cout << human.getName() << std::endl;
return 0;
}
[1] 授業単元:C++ [2] 問題文: 野球のスコア計算をするプログラムを作成しなさい。 スコアを入力して、配列データにイニング表を、入力毎にスコア表を表示 最後に勝者を出力。 なお延長の場合も考えること(延長は15回までとする) [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:Visual studio.2005 [3.3] 言語: C++ [4] 期限: ([2007年6月19日00:00まで] [5] その他の制限:特になし どうかよろしくお願いします
[1] 授業単元:C言語 [2] 問題文: 俳優のデータベースについて次の各問いに答えよ。 1.名前、出身地、年齢、性別、登場作品を定義する構造体を宣言せよ。 2.年齢順に並び替える関数を作成せよ。 3.名前、出身地、年齢、性別、登場作品を表示せよ。 4.(発展)外部ファイルでの読み書きをできるようにせよ。 5.(発展)データを標準入力で追加できるようにせよ。 6.(自由)それを応用してオリジナルのプログラムを作成せよ。 [3] 環境 [3.1] OS:制限なし [3.2] コンパイラ名とバージョン:制限なし [3.3] 言語:C言語 [4] 期限: ([2007年7月3日13:00まで]) [5] その他の制限: 動きましたといっただけでは正解になりませんので、説明すること。 発展および自由に関しては余力のある人のみでよい。 自由は評価の対象にならない。
130 :
鎌ゆう :2007/06/19(火) 12:17:36
[1] 授業単元:C言語 [2] 問題文: Randを使ってゲームを作る。一回遊んで終了でかまわない [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:Visual studio.2005 [3.3] 言語: C [4] 期限: ([2007年6月20日00:00まで] [5] その他の制限:特になし どうかよろしくお願いします
131 :
デフォルトの名無しさん :2007/06/19(火) 14:53:29
1]C言語 [2] double型実数Xのn乗x(xをn回掛けた値、nは正の整数)を返す関数powerを作成して、この関数powerを利用して、キーボードから実数aと整数mを読み込み、aのm乗aを求めるプログラムを作成しなさい [3] [3.1] OS: XP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C 実行結果例 実数a;1,2 実数m;10 -------------- 1,20の10乗=6,19
>>130 #include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int a,b,n;
srand(time(NULL));
a=rand()%51;
printf("数当てゲーム、秘密の値を当ててください。秘密の値は0〜50の整数です。\n");
printf("チャンスは10回,0〜50以外の整数を入れると終了します。\n");
for(n=1;n<=10;n++){
if(n==10) printf("最後のチャンス:");
else printf("%d回目:",n);
scanf("%d",&b);
if(b>50 || b<0){
printf("ゲームを中止します");
return 0;
}else if(b==a){
printf("あたり");
break;
}else if(b>a) printf("秘密の値より大きいよ");
else printf("秘密の値より小さいよ");
}
printf("\n");
if(n==11)printf("残念");
else if(n<3) printf("%d回で当てましたね。エスパーさんですか?",n);
else printf("%d回で当てました",n);
return 0;
}
>>131 #include<stdio.h>
double power(double x, int n)
{
double a=1;
for(;n>0;n--) a*=x;
return a;
}
int main(void)
{
double a;int m;
printf("実数a;");scanf("%lf",&a);
printf("整数m;");scanf("%d",&m);
printf("--------------\n");
printf("%fの%d乗=%f\n",a,m,power(a,m));
return 0;
}
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 1.二次元配列、ランダム関数をつかったポーカー 2.配られたカードがダブらないようにする 3.カードは二回変えることができる。 4.役は必要ありません。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: bcc55 [3.3] 言語:C [4] 期限: ([2006年06月20日12:00まで] [5] その他の制限:
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): テキスト形式のファイルを読み込み, 読み込んだアルファベットで書かれた文章のうちa,i,u,e,o(母音)を'*'に置き換えて出力するプログラムを作成しなさい. 出力はファイル名test.outにすること. [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 21日正午まで [5] その他の制限: 特になし 実行結果 [home@*** ~/h1]% cat test.in Mr.X is a gentleman. [home@*** ~/h1]% ./test filename: test.in [home@*** ~/h1]% cat test.out Mr.X *s * g*ntl*m*n. [home@*** ~/h1]% よろしくお願いします。
137 :
デフォルトの名無しさん :2007/06/21(木) 02:36:20
138 :
デフォルトの名無しさん :2007/06/21(木) 15:31:48
授業単元:C言語 環境:if文・for文・while文・do〜while文・switch〜case文・ OS:Windows コンパイラ名とバージョン:borland 言語:C テーマ:文字配列の操作 問題1 文字型の配列変数mojiに設定されている文字数を答えなさい char moji[] = "ABCDEFG"; 実行画面 文字数:7 問題2:文字列を入力して偶数番目の要素数と奇数番目の要素を別の配列に格納し、文字列として表示しなさい 実行画面 文字列入力==>ABC123def 偶数要素:AC2df 奇数要素:B13e
>>138 問題1
printf("文字数:%d\n",strlen(moji));
問題2
#include <stdio.h>
int main(){
char tmp[128],str1[64],str2[64];
int i;
printf("文字列入力==>");
fgets(tmp,sizeof(tmp),stdin);
for(i=0;tmp[i]!='\0';i++){
i%2 ? (str2[i/2]=tmp[i]) : (str1[i/2]=tmp[i]);
}
str1[i/2] = str2[i/2] = '\0';
printf("偶数要素:%s\n",str1);
printf("奇数要素:%s",str2);
return 0;
}
140 :
デフォルトの名無しさん :2007/06/21(木) 16:25:14
i番目のフィボナッチ数を返す関数 long fibonacci(long n){/* */}を再帰を用いて定義せよ という問題なんですが 実行例 整数を入力してください:0 Fibonacci(0)=1 整数を入力してください:1 Fibonacci(1)=1 整数を入力してください:2 Fibonacci(2)=2 整数を入力してください:6 Fibonacci(6)=13 となるようにしたいんですがお手上げ状態ですorz よろしくお願いします
141 :
デフォルトの名無しさん :2007/06/21(木) 16:34:52
i番目のフィボナッチ数を返す関数 long fibonacci(long n){/* */}を再帰を用いて定義せよ という問題なんですが 実行例 整数を入力してください:0 Fibonacci(0)=1 整数を入力してください:1 Fibonacci(1)=1 整数を入力してください:2 Fibonacci(2)=2 整数を入力してください:6 Fibonacci(6)=13 となるようにしたいんですがお手上げ状態ですorz よろしくお願いします
>>129 #include <stdio.h>
typedef struct{
char name[128];
char home[128];
int age;
int sex;
char film[128];
}actor;
void sortage(actor*, int);
void show(actor);
int main(void){
return 0;
}
void sortage(actor *act, int cnt){
int i, k;
actor swap;
for(i=0; i< cnt -1; i++){
for(k=i+1; k<cnt; k++){
if(act[i].age > act[k].age){
swap = act[i];
act[i] = act[k];
act[k] = swap;
}
}
}
}
>>129 void show(actor act){
printf(
"名前:%s\n"
"出身地:%s\n"
"年齢:%d\n"
"性別:%s\n"
"登場作品:%s\n",
act.name, act.home, act.age,
act.sex == 0 ? "男" : "女",
act.film
);
}
(・3・) エェー mainの中身は知らないYO
>>141 #include <stdio.h>
long fibonacci(long n){
if(n == 0 || n == 1) return 1;
return fibonacci( n-1) + fibonacci( n-2);
}
int main(void){
long n;
printf( "整数を入力して下さい:");
scanf( "%ld", &n);
printf( "Fibonacci(%d) = %d\n", n, fibonacci(n));
return 0;
}
てst
再帰でフィボナッチで無駄が多すぎてダメな例だろ
147 :
◆UoNQqijD4I :2007/06/22(金) 15:47:15
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):4行3列の行列Aと3行4列の行列Bの異なる行列式のファイルを読み込み、 読み込んだ行列と、Aの転置行列、及びAの転置行列とBの行列との和を出力するプログラムを作成し、 ソースコードを提出すること。 注意)読み込むファイルはこちら側で用意しておきますので、 行列Aのファイル名を[kadai1.dat]、行列Bのファイル名を[kadai2.dat]という名前で提出すること。 [3] 環境 [3.1] OS Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語:C言語 [4] 期限: 今日の5時まで! [5] その他の制限:バイナリファイル、ポインタまで習いました。もう1つのサイトにも書き込みましたが、 結構急ぎなので、できればこちらでもお願いします!!
148 :
◆sLIzEFbWfc :2007/06/23(土) 11:49:23
>>147 です!
期限過ぎましたが、とりあえずは提出したのでよろしくお願いします
ちなみにC言語は今年の春から初めて初心者です(;;)
提出したんならもういいじゃん
150 :
依頼者 :2007/06/23(土) 16:40:46
1] 授業単元: C言語演習 [2] 問題文(含コード&リンク): (1)変数xのyビット目を0にする関数int bit_clear(int x, int y)の作成。 (2)変数xのyビット目の値を返す関数int bit_test(int x,int y)の作成。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio.net [3.3] 言語:C++ [4] 期限: 07年6月25日まで [5] その他の制限:特になし 演算子の問題です。よろしくお願いします。
int bit_clear(int x, int y) {return x & ~ (1 << y);} nt bit_test(int x,int y) {return (x >> y) & 1;}
152 :
◆DpMW3bRjps :2007/06/23(土) 18:55:52
内容:
>>148 です
とりあえず提出し「た」いのでよろしくお願いします
脱字すみません↓↓ちなみに課題は
>>147 です。。。
#include <stdio.h>
#include <stdlib.h>
#define ROW 4
#define COLUMN 3
int main(void)
{ FILE *fp;
double a[ROW][COLUMN];
int i, j;
if ( (fp = fopen( "kadai1.dat", "r")) == NULL )
{ printf("ファイルが見つかりません : kadai.dat \n");
exit(1); }
printf("行列は次の通りです\n");
for( i = 0 ; i < ROW ; i++)
{ for( j =0 ; j < COLUMN ; j++)
{ fscanf(fp, "%lf", &a[i][j]);
printf("%5.2f\t", a[i][j]); }
printf("\n"); }
printf("転置行列は次の通りです\n");
for( j = 0 ; j < COLUMN ; j++)
{ for( i = 0 ; i < ROW ; i++)
{fscanf(fp, "%lf", &a[i][j]);
printf("%5.2f\t",a[i][j]); }
printf("\n"); }
fclose( fp );
return 0;
}
>>152 #include <stdio.h>
#define file1 "kadai1.dat"
#define file2 "kadai2.dat"
int main(void){
FILE *fp;
double A[3][4], B[4][3], TA[4][3];
int i, k;
printf("A:\n");
fp = fopen(file1, "r");
for(i=0; i<3; i++){
for(k=0; k<4; k++){
fscanf(fp, "%lf", &A[i][k]);
printf("%5.2f ", A[i][k]);
}
printf("\n");
}
printf("\nB:\n");
fp = fopen(file2, "r");
for(i=0; i<4; i++){
for(k=0; k<3; k++){
fscanf(fp, "%lf", &B[i][k]);
printf("%5.2f ", B[i][k]);
}
printf("\n");
}
fclose(fp);
printf("\nTA:\n"); for(i=0; i<4; i++){ for(k=0; k<3; k++){ TA[i][k] = A[k][i]; printf("%5.2f ", TA[i][k]); } printf("\n"); } printf("\nB+TA:\n"); for(i=0; i<4; i++){ for(k=0; k<3; k++){ printf("%5.2f ", B[i][k] + TA[i][k]); } printf("\n"); } return 0; }
155 :
◆DpMW3bRjps :2007/06/23(土) 20:35:24
[1] 授業単元:アルゴリズム研究 [2] 問題文:10リットル、8リットル、3リットルの容器があり、10リットルの容器に水がいっぱい入っている。 この3つの容器を用い、3リットルの容器に1リットルの水を取り出す最小の手順を答えよ。ただし、水を移す時は、移す側が空になるか、移す側がいっぱいになってときとする。 幅優先探索と言うのを用いるそうです。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 5.5.1 [3.3] 言語: C [4] 期限: 6月25日の2400まで [5] その他の制限:バケツの水の入り方を、座標に見立て、その座標に番号をつけ、広がり優先探索を用いる。 どうしたら良いかわからず、焦っています。 急ですがよろしくお願いします
157 :
デフォルトの名無しさん :2007/06/24(日) 21:56:40
一次元配列に入った数字の最大値を自作関数maxofをつかって求めよって問題です。 配列の中身は25、35、8、4、23でお願いします。
>>157 仕様が曖昧すぎるので勝手に決めた。
配列の先頭アドレスと配列数を入力とし、配列内の最大値を出力とする。
配列内の数字は正の整数のみとする。
int maxof( int * array, int max )
{
int i;
int ans = 0;
for ( i = 0; i < max; i++ ) {
if ( *array > ans ) ans = *array;
array++;
}
return ans;
}
160 :
デフォルトの名無しさん :2007/06/25(月) 15:27:00
[1] 授業単元:ユニット演習 [2] 問題文(含コード&リンク):正整数n を入力し,2 〜 n の範囲にある素数およびその個数を求めるプログラムを作成 しなさい. [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン:cygwin [3.3] 言語:C [4] 期限:特になし [5] その他の制限:特になし よろしくお願いします。
#include <stdio.h> int prime[500000]; int main(void) { int i, j, n, cnt = 0; printf("正の整数を入力してください:"); scanf("%d", &n); prime[cnt++] = 2; for(i=3; i<=n; i+=2) { int flag = 0; for(j=0; prime[j]*prime[j]<=i; j++) { if(i%prime[j]==0) { flag = 1; break; } } if(flag==0) prime[cnt++] = i; } for(i=0; i<cnt; i++) printf("%d ", prime[i]); printf("\n%d個\n", cnt); return 0; }
162 :
kino :2007/06/25(月) 20:14:23
年頭(1月1日0時0分)からの経過「分」数を標準入力から入力し、 それが何月何日の何時何分に当たるかを標準出力に出力するプログラムを、 以下の手順に従って(必ず以下の仕様・条件を満たすこと)、C言語を用いて作成せよ。 なお、本課題では、その年が閏年かどうかを考慮する必要はないものとする (閏年ではないものとしてよい)。 なお、制限事項として、本課題では、構造体は用いてはならないものとする (構造体を用いた場合は未提出として扱う)。 1. 年頭(1月1日0時0分)からの経過「分」数から、それが何月何日の何時何分に当たるかを求める関数whattime()を作成し、必ず、この関数を用いてプログラムを完成せよ。ただし、この関数内では(エラーメッセージ出力以外の)入出力を一切行ってはならないものとする。 2. whattime()が返す情報を以下のように定める。 * 「月」の情報は、数値ではなく、英語の名称(例えば "April")とする。プログラム上では、文字列(文字列ポインタ)を返すものとする。 * 「日」の情報は数値で返すものとする。プログラム上では、int型のデータを返すものとする。 * 「時」および「分」の情報は、それぞれ数値として返すのではなく、「hh:mm」の形式の文字列(文字列ポインタ)を返すものとする。 3. whattime()が返す文字列の情報については、その記憶領域をすべて whattime()の内部で用意あるいは確保すること。つまり、whattime()を呼び出す側で文字配列を定義する必要がないようにせよ。 通常、関数内で定義した変数(自動変数)は、関数からリターンした後は利用できない。関数からリターンした後でもその領域を確保したまま利用するためには、以下のいずれかの方法をとらなければならない。 * static 宣言とともに変数を定義する。 * malloc()によって領域を確保する。 すいませんどうかこの問題おねがいします。
163 :
kino :2007/06/25(月) 20:31:57
[1] 授業単元:c言語 [2] 問題文(含コード&リンク):上記 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: すぎてます [5] その他の制限:なし お願いします。
[1] 授業単元:情報数学 [2] 問題文(含コード&リンク): 2分法の関数を double bisection(unaryfunc f, double a, double b, double tol, int n); Newton法の関数を double newton(unaryfunc f, double p, double tol, int n); と定義した、方程式解法ライブラリ equation.h, equation.cを作り、 include”equation.h”とすると newton(myfunc, p, tol, n); のようにmain関数から呼び出して使える ようにしてみなさい。 [3] 環境 [3.1] OS:Windows XP [3.2] bcc32 [3.3] 言語:C [4] 期限:今週中 よろしくお願いします。
165 :
デフォルトの名無しさん :2007/06/26(火) 00:41:44
C言語です。 2進数の四則演算ができるプログラムを作れって問題です。お願いします。
>>165 意味が分からん。入力を受け付ける際に2進数を入力するのか
2進数の各桁を筆算するやり方なのか。
169 :
デフォルトの名無しさん :2007/06/26(火) 15:09:55
1] 授業単元:C [2] 問題文: 要素数が同じint型配列xaとxbの対応する要素(xa[i]とxb{i})の値が ・xa{i}<xb[i]ならば、xa[i]とxb[i]を入れ替え ・xa{i}≧xb[i]ならば、そのまま ・入れ替えた要素の個数を返す 関数swap_bを作成し、関数swap_bを用いて、下記の配列fa,fbでfaの要素が必ず大きい(または等しい)ように入れ替えて、結果を表示するプログラムを作成しなさい。(下表の配列faとfbの元のデータは配列の初期化で設定) (元の配列要素) 添字 0 1 2 3 4 fa 3 8 1 9 4 fb 9 1 7 5 6 (変換後の配列要素) 添字 0 1 2 3 4 fa 9 8 7 9 5 fb 3 1 1 6 4 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2005 [3.3] 言語: C [4]期限 6月28日 実行結果 元のデータ fa : 3 8 1 9 4 fb : 9 1 7 5 6 -------------- 変換後のデータ fa : 9 8 7 9 5 fb : 3 1 1 6 4 入れ替えた個数=3 どうかよろしくお願いします
170 :
デフォルトの名無しさん :2007/06/26(火) 15:11:44
1] 授業単元:C [2] 問題文: 要素型が同じint型配列xaとxbの対応する要素(xa[i]とxb[i])の値をすべて入れ替える関数swap_arrayを作成し、下記の配列fa,fbの要素を入れ替えて、その結果を表示するプログラムを作成しなさい。(下表の配列faとfbの元のデータは配列の初期化で設定) 添字 0 1 2 3 4 fa 3 8 1 9 4 fb 9 1 7 5 6 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2005 [3.3] 言語: C [4]期限 6月28日 実行結果 元のデータ fa : 3 8 1 9 4 fb : 9 1 7 5 6 -------------- 変換後のデータ fa : 9 1 7 6 5 fb : 3 8 1 9 4 どうかよろしくお願いします
171 :
デフォルトの名無しさん :2007/06/26(火) 15:12:34
1] 授業単元:C [2] 問題文: 要素型がnumであるint型配列vcの値が最大である要素の添字を返す関数max_indexを作成しなさい。関数max_indexを用いてキーボードから読み込まれた5つの値のうち最大値は何番目だったかを表示するプログラムを作成しなさい [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2005 [3.3] 言語: C [4]期限 6月28日 実行結果 1番目のデータ=99 2番目のデータ=120 3番目のデータ=80 4番目のデータ=110 5番目のデータ=100 ------------- 最大値は2番目に入力 どうかよろしくお願いします
172 :
デフォルトの名無しさん :2007/06/26(火) 15:14:28
1] 授業単元:C [2] 問題文: 要素型がnumであるdouble型配列dataの値の平均値を返す関数meanvを作成しなさい。関数meanvを用いて、キーボードから読み込まれた4つの値の平均値を表示するプログラムを作成しなさい [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2005 [3.3] 言語: C [4]期限 6月28日 実行結果例 1番目のデータ=1.55 2番目のデータ=2.66 3番目のデータ=3.77 4番目のデータ=4.88 ------------- 平均値 3.21 どうかよろしくお願いします
173 :
デフォルトの名無しさん :2007/06/26(火) 15:15:14
1] 授業単元:C [2] 問題文: 数型引数x、yに対していの値を返す関数power2を作成し、関数power2を用いて、キーボードから読み込まれた2つの実数a,bに対して の値を画面に出力するプログラムを作成しなさい [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2005 [3.3] 言語: C [4]期限 6月28日 実行結果例 実数 a : 1.23 実数 b : 9.87 答え = 98.93 どうかよろしくお願いします
174 :
デフォルトの名無しさん :2007/06/26(火) 15:17:32
1] 授業単元:C [2] 問題文: 2つのint型変数x0、x1(x0<x1とする)に対してx0からx1までの整数の和を返す関数souwa2を作成しなさい。関数souwa2を用いて、キーボードから2つの整数値a,b(a<bとする)を読み込み、そのaからbまでの和を求めるプログラムを作成しなさい [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2005 [3.3] 言語: C [4]期限 6月28日 実行結果例 整数a : 33 整数b : 98 33から98までの和=4323 どうかよろしくお願いします
175 :
デフォルトの名無しさん :2007/06/26(火) 15:19:41
1] 授業単元:C [2] 問題文: int型配列の変数numを引数として、1からnumまでの整数の和を返す関数souwaを作成しなさい。関数souwaを用いて、キーボードから整数値を読み込み、1からその整数値までの和を求めるプログラムを作成しなさい [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2005 [3.3] 言語: C [4]期限 6月28日 実行結果例 整数を入力 : 98 1から98までの和=4851
176 :
デフォルトの名無しさん :2007/06/26(火) 15:21:01
1] 授業単元:C [2] 問題文: 要素型がnoであるint型の配列vcの並び(格納されているデータの順番)を逆順にする関数rev_arrayを作成しなさい。関数rev_arrayを用いて、下記のような値をもつ配列bufの各要素の値を逆順に入れ替えて、but[0]から順番に表示するプログラムを作成しなさい 添字 0 1 2 3 4 値 10 20 30 40 50 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2005 [3.3] 言語: C [4]期限 6月28日 実行結果 buf[0] : 50 buf[1] : 40 buf[2] : 30 buf[3] : 20 buf[4] : 10 どうかよろしくお願いします
>>174 #include<stdio.h>
int souwa2(int x0, int x1);
int main(void)
{
int a ,b ,sum;
printf("a:");scanf("%d",&a);
printf("b:");scanf("%d",&b);
sum=souwa2(a,b);
printf("%dから%dまでの整数の和は%d", a, b ,sum);
return 0;
}
int souwa2(int x0, int x1)
{
int sum=0;
if(x0>x1){/*x0がx1より大きい時は警告して-1を返す*/
printf("x0がx1より大きい\n");
return -1;
}
for(;x1>=x0;x1--)
sum+=x1;
return sum;
}
>>175 #include<stdio.h>
int souwa(int num);
int main(void)
{
int a ,sum;
printf("a:");scanf("%d",&a);
sum=souwa(a);
printf("1から%dまでの整数の和は%d", a,sum);
return 0;
}
int souwa(int num)
{
int sum=0;
for(;num>=1;num--)
sum+=num;
return sum;
}
>>176 #include<stdio.h>
void rev_array(int vc[],int no);
int main(void)
{
int i, buf[5];
for(i=0;i<5;i++){
printf("buf[%d] : ", i);
scanf("%d",&buf[i]);
}
rev_array(buf,5);
printf("添字 ");
for(i=0;i<5;i++) printf(" %d", i);
printf("\n値 ");
for(i=0;i<5;i++) printf(" %d", buf[i]);
return 0;
}
void rev_array(int vc[],int no)
{
int i,temp;
for(i=0;i<(no/2-1);i++){
temp=vc[i]; vc[i]=vc[no-1-i]; vc[no-1-i]=temp;
}
}
>>173 >数型引数x、yに対していの値を返す
の部分が分りません。
数値だけ見れば x^2+y^2だな
x^2+y^2で見切り発車します。
>>173 #include<stdio.h>
double power2(double x,double y);
int main(void)
{
double a,b;
printf("実数 a:");scanf("%lf",&a);
printf("実数 b:");scanf("%lf",&b);
printf("答え = %.2f", power2(a, b));
return 0;
}
double power2(double x,double y)
{
return x*x+y*y;
}
185 :
デフォルトの名無しさん :2007/06/26(火) 18:21:16
>>165 の問題は、入力を受け付けるさいに2進数を入力します。
186 :
デフォルトの名無しさん :2007/06/26(火) 18:22:45
>>165 の問題は、入力のさい、2進数で入力します。
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
構造体を使って学生の名前、大学名、学科、生年月日(年はintで月日がshort),趣味を定義する(全て実在しないものになるようにする)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4411.txt まずはfwriteを用いて先頭に学生の数もバイナリ形式で出力する。その後バイナリ形式で定義した学生の情報を出力する。
その後freadでまず生徒の数を読み込み、その人数分ループさせ画面上に読めるように一人ずつ出力する。
[3] 環境
[3.1] OS: WindowsXP
[3.2] gcc 3.4
[3.3] 言語: (C
[4] 期限: 6月27日22:00まで
[5] その他の制限:特になし
よろしくお願いします。
ぼるじょあもほもじょあも来ないな
189 :
kino :2007/06/27(水) 02:47:28
0224 < これは先頭に0があるせいで、8進数の値として扱われているね。 その辺、質問者はこれで良いんだろうか?
>>191 Oh!そんなとこまで気にしてナカタヨ。
193 :
デフォルトの名無しさん :2007/06/27(水) 14:58:08
>>169 #include <stdio.h>
int swap_b(int fa[], int fb[],int n);
int main(void)
{
int i,n, fa[]={3, 8, 1, 9, 4}, fb[]={9, 1, 7, 5, 6};
printf("元のデータ \n");
printf("fa :");for(i=0;i<5;i++) printf(" %d",fa[i]);printf("\n");
printf("fb :");for(i=0;i<5;i++) printf(" %d",fb[i]);printf("\n");
n=swap_b(fa, fb, 5);
printf("\n-------------- \n変換後のデータ\n");
printf("fa :");for(i=0;i<5;i++) printf(" %d",fa[i]);printf("\n");
printf("fb :");for(i=0;i<5;i++) printf(" %d",fb[i]);printf("\n");
printf("入れ替えた個数=%d",n);
return 0;
}
int swap_b(int fa[], int fb[],int n)
{
int i, temp,c;
c=0;
for(i=0;i<n;i++){
if(fa[i]<fb[i]){
temp=fa[i]; fa[i]=fb[i]; fb[i]=temp; c++;
}
}
return c;
}
>>170 #include <stdio.h>
void swap_array(int xa[], int xb[],int n);
int main(void)
{
int i, fa[]={3, 8, 1, 9, 4}, fb[]={9, 1, 7, 5, 6};
printf("元のデータ \n");
printf("fa :");for(i=0;i<5;i++) printf(" %d",fa[i]);printf("\n");
printf("fb :");for(i=0;i<5;i++) printf(" %d",fb[i]);printf("\n");
swap_array(fa, fb, 5);
printf("\n-------------- \n変換後のデータ\n");
printf("fa :");for(i=0;i<5;i++) printf(" %d",fa[i]);printf("\n");
printf("fb :");for(i=0;i<5;i++) printf(" %d",fb[i]);printf("\n");
return 0;
}
void swap_array(int xa[], int xb[],int n)
{
int i, temp;
for(i=0;i<n;i++){
temp=xa[i]; xa[i]=xb[i]; xb[i]=temp;
}
}
>>171 >要素型がnumである、の要素型は要素数の打ち違いと判断した。
#include <stdio.h>
int max_index(int vc[], int num);
int main(void)
{
int i,vc[5],max;
for(i=0;i<5;i++){
printf("%d番目のデータ=",i+1);
scanf("%d", &vc[i]);
}
max=max_index(vc, 5);
printf("最大値は%d番目に入力",max+1);
return 0;
}
int max_index(int vc[], int num)
{
int i,max;
max=0;
for(i=0;i<num;i++){
if(vc[i]>vc[max]){
max=i;
}
}
return max;
}
>>172 #include <stdio.h>
double meanv(double data[], int num);
int main(void)
{
int i;
double mean, data[4];
for(i=0;i<4;i++){
printf("%d番目のデータ=",i+1);
scanf("%lf", &data[i]);
}
mean=meanv(data, 4);
printf("平均値 %.2f",mean);
return 0;
}
double meanv(double data[], int num)
{
int i;
double sum=0;
for(i=0;i<num;i++){
sum=sum+data[i];
}
return sum/num;
}
198 :
デフォルトの名無しさん :2007/06/27(水) 17:46:46
199 :
デフォルトの名無しさん :2007/06/27(水) 17:47:58
1] 授業単元:C [2] 問題文: 要素数がnoであるint型の配列vcの最小値を返却値として返す関数min_ofを作成しなさい。この関数min_ofを利用して、キーボードから10名の得点データを入力すると、その最小値に表示するプログラムを作成しなさい [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2005 [3.3] 言語: C [4]期限 6月28日 実行結果例 1 番目の得点= 70 2 番目の得点= 50 : (途中省略) 10 番目の得点 = 63 ------------------- 最小値 : 50点 よろしくお願いします
200 :
デフォルトの名無しさん :2007/06/27(水) 17:51:46
1] 授業単元:C [2] 問題文: 要素数がnoであるint型の配列vcの全要素に整数xの値を代入する関数fillを作成しなさい(関数fillは値を返さない)。この関数fillを用いて、要素数5のint型配列xcの全要素をキーボードから読み込んだ値に設定するプログラムを作成しなさい [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VISUALSTUDIO2005 [3.3] 言語: C [4]期限 6月28日 実行結果例 設定する値を入力= 7 ----------------- xc[0]=7 xc[1]=7 xc[2]=7 xc[3]=7 xc[4]=7 よろしくお願いします
怒涛の宿題丸投げには恐れ入るな
このレベルの低さで、ここまで大量に丸投げするのはすごいな。
>>200 よし、3日前にHSPからC++に以降した俺に任せろ。期限に間に合うかどうかは知らん。
----------------------------------------------------------- ///////////////////////////////////////////// //fill関数 ///////////////////////////////////////////// //要素数5の配列変数Uncoの全ての要素に、 //キーボードから入力された値を代入する関数。 //入力値の宣言 int P1=0; //以下関数本体 int fill(int P1) { //配列の作成 int Unco[5]; //全要素にP1の値を代入 int cnt=0; while(cnt<(P1-1)) { //代入 Unco[cnt]=P1; //カウンタ回し cnt++; } return 0; } --------------------------------------------------------------- C++の細かい仕様がまだ分からん。やっぱ諦めるわ。落書きレベルだけど一応載せとく。
>>205 1行目の宣言文は不要。この場合のループではforが一般的。
というよりも、この関数は仕様を一切満たしていない。
fillされるのはローカルのUnco配列のみで、呼び出し側の配列がfillされていないため。
実行確認していないけど、たぶんこんな感じ。
>>200 // pvc 配列の先頭アドレス no 配列個数 x 代入する値
void fill( int * pvc, int no, int x ) {
int i;
for ( i = 0; i < no; i++ ) {
pvc[ i ] = x;
}
}
207 :
デフォルトの名無しさん :2007/06/28(木) 14:56:49
授業単元:C言語 環境:if文・for文・while文・do〜while文・switch〜case文・ OS:Windows コンパイラ名とバージョン:borland 言語:C テーマ:文字配列の操作 問題 文字列と検索文字、置換文字を入力し文字列中の検索文字を置換文字に置き換えなさい 実行画面 文字列(m1)入力==>ABCDEFAABCDABC 削除文字==>A 置換文字==>* 結果文字列(m1):BCDEF**BCD*BC
208 :
デフォルトの名無しさん :2007/06/28(木) 15:04:11
授業単元 関数 言語 C言語 引数の階乗(1*2*3*....*n)を関数を作れ お願いします
209 :
202 :2007/06/28(木) 15:55:58
解決しました。お騒がせしました。
>>208 できたぜ!まだヘボいけど、生まれて初めて自分でC++のプログラム作れたヤッホー。
// Info : 引数の階乗を返すfact関数をコンソールウィンドウで使う
///////////////////インクル
#include "stdafx.h"
#include <iostream>
using namespace std;
///////////////////fact関数
int fact(int p1) {
////宣言
int cnt=p1;
int brk=0;
////メイン処理
while (brk==0) {
////階乗
p1=(cnt-1)*p1;
////カウンタ回し
cnt=cnt-1;
////終端チェック
if (cnt==1) { brk=1; }
}
return p1;
}
//////////////////メイン関数
int main() {
int p2=0;
cin >> p2;
int temp=fact(p2);
cout << temp << endl;
}
brk使わないでcntで判定すりゃいいじゃん
>>210 馬鹿野郎、C言語でと言われてるのに、C++で作る奴があるか
Cで作り直して再提出、ついでに便所掃除1年間の刑に処す。
それともモーホーの肉便器1年間の方がいいか?
と冗談を言ってみるテスト
213 :
デフォルトの名無しさん :2007/06/29(金) 00:39:43
>>165 お願いします。関数電卓みたいな感じです。
214 :
デフォルトの名無しさん :2007/06/29(金) 00:49:42
テキストファイルをよみこんでたとえばファイルに cccchaa というのがかいてあったら下のような感じで画面に表示したいんですけど どんなソースコードですかね?お願いします。 c→4 h→1 a→2
215 :
214 :2007/06/29(金) 00:56:09
あ、テンプレ忘れましたすいません。 [1] 授業単元: C言語 [2] 問題文(含コード&リンク): テキストファイルをよみこんでたとえばファイルに cccchaa というのがかいてあったら下のような感じで画面に表示する c→4 h→1 a→2 [3] 環境 [3.1] Linux [3.2] gcc [3.3] 言語: C [4] 期限:明日
216 :
デフォルトの名無しさん :2007/06/29(金) 02:11:39
>>215 cccchaacccchaaの時はどちらに?
c→4 h→1 a→2 c→4 h→1 a→2
c→8 h→2 a→4
218 :
かま :2007/06/29(金) 17:02:04
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 次に引数の順番を入れ替えて逆順に表示するプログラムに直せ。 ソースプログラムを書き込んで提出せよ。 #include "stdio.h" main(int argc, char * argv[]){ int i; printf("%d argument(s), \n", argc -1);//, for(i=0;i<argc; i++) { printf("argv[%d]:\"%s\"\n", i, argv[i]); } } [3] 環境 [3.1] Linux [3.2] gcc [3.3] 言語: C [4] 期限:今日
>>218 #include "stdio.h"
#include <string>
main(int argc, char * argv[]){
int i;
char temp[100];
/*引数の順番を入れ替える*/
for(i=0;i<argc/2; i++){
strcpy(temp,argv[i]);
strcpy(argv[i],argv[argc-i-1]);
strcpy(argv[argc-i-1],temp);
}
printf("%d argument(s), \n", argc -1);//,
for(i=0;i<argc; i++) {
printf("argv[%d]:\"%s\"\n", i, argv[i]);
}
}
えー? >/*引数の順番を入れ替える*/ だからこうじゃないの? for(i=argc -1; i > 0; i--) { printf("argv[%d]:\"%s\"\n", i, argv[i]); }
>引数の順番を入れ替えとあるから、引数の配列を並べ替えるような希ガス ただ単に、逆順で表示するだけなら"引数の順番を入れ替え"を書かずに "次に引数を逆順に表示するプログラムに直せ"で良いような希ガス 下手をすると、在日より日本語力の低い俺がどうこう言える立場じゃないけどな。
>#include "stdio.h" むしろこれに突っ込んであげて
>>222 自作のヘッダファイルつくったんじゃない?
>>221 >在日より日本語力の低い俺がどうこう言える立場じゃないけどな。
手抜きの説明文しか書けない218よりは日本語力あるだろ。
よって、どうこう言える立場にある。
>>222 それの何が問題?コンパイルできなかった?
OKOK、俺が書き直してやんよ。 #include "stdio.h" main(int argc, char * argv[]){ int i; char *tmp; /*引数の順番を入れ替える*/ for(i=1;i<argc/2; i++){ tmp=argv[i]; argv[i]=argv[argc-i]; argv[argc-i]=tmp; } printf("%d argument(s) \n", argc -1); for(i=1;i<argc; i++) { printf("argv[%d]:\"%s\"\n", i, argv[i]); } }
だから、標準インクルードファイルを""で括ってインクルードするなって。
228 :
デフォルトの名無しさん :2007/07/01(日) 05:57:41
な・ん・で?それがタブーとされる理由でもあるの?自分ルールや自分スタイルを 押し付けるだけじゃだめだぞ。本質的に不適切かどうかで説明してみろよ? お前わかってない分かってないって言う奴ほど、自分が本当は分かっていないなんて オチはどこでもある。
>>227 だめな理由が見つからないだろ?自分の主観でそうしないよだの
それはおかしいだの言っている奴が他にもいるからそうなんだよ!
っていうゴネ方はなしな。まるで、子供が欲しいおもちゃがあると
「みんな持っている」とか言ってしまい、持っていない人もいて親に
「みんな持ってはいないよ」とつき返されるのと似た状況だなw
理由まだ〜?""でヘッダファイル名を囲ってもなんらコンパイルエラーなんて出ないよ?
カレントディレクトリもインクルードファイルのサーチパスに含まれてしまうから、 同名のファイルをカレントディレクトリに置いておくと誤動作の原因になる。 こんな基本的なことも知らずにプログラミングやってるの? 「コンパイルエラーでないよ」って、エラーが出なければ全て正しいなんて 阿呆なこと言ってないで人生やり直してきたら?
232 :
デフォルトの名無しさん :2007/07/01(日) 06:37:46
231 名前:デフォルトの名無しさん 投稿日:2007/07/01(日) 06:27:51 カレントディレクトリもインクルードファイルのサーチパスに含まれてしまうから、 同名のファイルをカレントディレクトリに置いておくと誤動作の原因になる。 こんな基本的なことも知らずにプログラミングやってるの? 「コンパイルエラーでないよ」って、エラーが出なければ全て正しいなんて 阿呆なこと言ってないで人生やり直してきたら? 阿呆なこと言ってないで人生やり直してきたら? 阿呆なこと言ってないで人生やり直してきたら? 阿呆なこと言ってないで人生やり直してきたら? 阿呆なこと言ってないで人生やり直してきたら? 阿呆なこと言ってないで人生やり直してきたら? 阿呆なこと言ってないで人生やり直してきたら? こんなことで他人をここまで罵倒できる基地外が良く言うぜw
233 :
デフォルトの名無しさん :2007/07/01(日) 06:40:47
え〜〜〜、ちなみに、わざと知ってて理由を言わないあんたを試してみただけです。
なんで俺が知らないことになっているのか、さっぱりですね。揺さぶられると
ファビョって当たるタイプかな?検索すりゃ出てくるから、知らない人にも参照しておきますかw
ttp://www.02.246.ne.jp/~torutk/cxx/file/header.html > ""で囲む場合、コンパイラはまず#include文を記述したソースファイルと同じディレクトリに
> ヘッダファイルがあるか探します。そこになければ、インクルードパスに指定されている
> ディレクトリを探しにいきます。
ええ、当然知ってましたよ、俺は?w
理由もいわないくせに
>>227 みたいなことを言う奴がうぜぇだけ。だからわざと "" のまま
書いてやったんだよw
素朴な疑問だが、揶揄はしてても罵倒はしてないような。 つーか、正論吐かれて涙目?
>>232 こんな基本的なことも知らずにプログラミングやってるの?
こんな基本的なことも知らずにプログラミングやってるの?
こんな基本的なことも知らずにプログラミングやってるの?
こんな基本的なことも知らずにプログラミングやってるの?
こんな基本的なことも知らずにプログラミングやってるの?
なぜか知らないことになっているしw 俺が言いたいのは お前は知っているのか?
ってことだ。指摘する側が理由を言わずに指摘するのは、周りから見るとなんだこいつ?
って思われていることに気づくんだな。それが分からないなら他人の質問に答えるような
スレに来るな。その方がマシな人生が送れるぞw
>>234 あれ?言い逃れかな?なみだ目?そっちが勝手に「わからずや、無知」だと思った奴に対して
顔を真っ赤にしているくせして?w 別に俺は「知らなかった」わけじゃないから
知らないでと言われても別にぃ?知ってたけど?としか言いようがない。
理由を言わずしてこんなところでレスするのがこっけいに見えたから揺さぶったんだよw
237 :
デフォルトの名無しさん :2007/07/01(日) 07:02:26
>>236 あまり突っ込まずにスルーするのが大人の対応。
>>237 スルー?逃げてちゃ大人になれないぜ?ベイベー
239 :
デフォルトの名無しさん :2007/07/01(日) 07:37:22
>>238 戦争はその小さな争いから始まるのさベイベー
相変わらず週末になると元気だな
残念、日曜日は週始めだ。曜日の始めは日曜日からだろ?カレンダーを見てみな。 日 月 火 ・・・ と書かれているだろ?当然世間一般でも日曜日が週の始めだ。
242 :
デフォルトの名無しさん :2007/07/01(日) 08:14:44
親切に答えてくれる人に逆ギレするのは
英語のWeekEndは土日で問題ないんだけどね。
世間一般では日曜が週始めなのか・・・知らなかった・・・
あれで親切とは片腹痛いわ
っつうか、週の概念ねキリスト教とかじゃねぇの? 宗教詳しくないけど、いろいろモノ作って7日目に休んだことから 日曜日を休日としたんじゃなかったっけ?
(・3・) アルェー みんな仲良くしろYO
(・3・) エェー ""だろうが<>だろうがいいじゃんかYO 宿題レベルで気にしちゃだめPO
終わった話題を蒸し返すとは、荒れて欲しいのかYO
(・3・) エェー それもいいかもYO
そもそも stdio.h を自分で定義したヘッダのファイル名として使うのもどうかと。 まぁ、それについては人それぞれだけど、敢えてそのファイル名で独自のヘッダファイルを 用意するやつって・・・
>>218 は荒らす為の道具かもな。名前欄もそれっぽいし、
講師があんなコードを講義で出したら出来の良い学生から馬鹿にされるし。
教務課辺りに、あの講師は馬鹿だから辞めさせろと凸されかねん。
授業評価アンケートも凄い事になるぞ。
もう一つの可能性は、おかしな部分を指摘OR修正して提出するかどうかで
学生の理解度を計ろうとしているのかも試練
宿題レベルでも悪い習慣は付けない方がいい。 自分でstdio.hなんてファイルを作らなくても、プリプロセッサのファイル検索順が変わるから、プリプロセスの速度が僅かに遅くなる。大規模になれば影響はある。 ここで答え聞くような奴は単位取るために仕方なくやってるんだろうけど、頼むからソフトウェア・エンジニアにはならないでくれ。
>>256 頼むからSEでもないお前がソフトウェアエンジニアにはならないでくれとか言わないでくれ。
なんかおもしれーくらいに荒れてるんだけどさ
>>218 >printf("%d argument(s), \n", argc -1);//,
>
>for(i=0;i<argc; i++) {
argcが10だった場合「引数が9個あるぜ!」と言ってるにも
関わらず、for文で10回回ってるように見えるのは俺だけか?
んもうこれからは #include "stdio.h" を流行らせようぜ?これができれば SEになれるのは間違いなしw
俺流ヘッダ(現在更新中) #include "myheader.h" 中身は↓ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <ctype.h> #include <time.h> 使うであろうヘッダをとりあえず全部取り込んでおkと。
261 :
デフォルトの名無しさん :2007/07/02(月) 15:02:44
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 温度データを入力し,摂氏から華氏,華氏から摂氏に変換するプログラムを作成しなさい。 [3] 環境 [3.1] OS:windows xp [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:特になし [5] その他の制限:特になし お願いします。
>>261 //セ氏→華氏
/////////////////////////////////////////////
//インクルード
/////////////////////////////////////////////
#include "stdafx.h"
#include <iostream>
using namespace std;
/////////////////////////////////////////////
//fah関数
/////////////////////////////////////////////
int fah(int p1) {
//セ氏→華氏
p1=((p1*9)/5)+32; //華氏→セ氏の場合は、p1=5(p1-32)/9
return p1;
}
/////////////////////////////////////////////
//メイン関数
/////////////////////////////////////////////
int main() {
int p2=0;
cin >> p2;
int temp=fah(p2);
cout << temp << endl;
}
263 :
デフォルトの名無しさん :2007/07/02(月) 19:04:44
あるファイルの中にデータとして多くの0と1が書き込まれており、最後の1文字だけがEであるとする。 このとき、0と1の並びに着目し、データを圧縮することを考える。 ここでは、0と1のそれぞれが何個連続して並んでいるかを記録することで圧縮を行う。 たとえば、digit1.datというファイルに 111110000000000000000000000001E というように0と1が並んでいるとき、 7 1 24 0 1 1 と圧縮できる。このとき圧縮結果に空白を挟むことに注意する。 上記の圧縮方法に従って、任意の0と1から成るデータを圧縮するプログラムを作成せよ。 ただしデータはリダイレクションを使用し、char型変数の1文字ずつ繰り返し世も困れるものとする。 最後には「圧縮完了」と表示のこと。 期限が迫っています・・・ C++です。 if文、for文、while文、リダイレクションまで習いました。 習ったところまでの文法でお願いします・・・
265 :
デフォルトの名無しさん :2007/07/02(月) 22:29:11
>>7 1 24 0 1 1 と圧縮できる。
>>世も困れるものとする。
5 1 24 0 1 1
じゃないのか(間違ってたらゴメン(藁))?
そもそも処理系も何もかいてなくちゃ世も困れるよ。
267 :
かま :2007/07/02(月) 23:34:34
[1] 授業単元: c言語 [2] 問題文(含コード&リンク): このプログラムを書き換え、ファイル名をコマンドラインの引数から指定できるようにしてください。 #include<stdio.h> #include<stdlib.h> int main(void){ char c; char filename[]="date.txt"; FILE *fp; if((fp=fopen(filename, "r"))==NULL){ printf("file does not exist, \n"); exit(1); } while((c=getc(fp))!=EOF){ printf("%c\n", c); } fclose(fp); } [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0 [3.3] 言語: C [4] 期限: 2007年7月4日 [5] その他の制限: では、宜しくお願いします。
268 :
デフォルトの名無しさん :2007/07/03(火) 00:02:49
[1]授業単元:プログラミング [2]次のアルファベットのキーワードを入力して計算する関数電卓プログラムを作成しなさい。 sin 正弦 cos 余弦 tan 正接 arcsin 逆正弦 arccos 逆余弦 arctan 逆正接 ln 自然対数 log 常用対数 exp 指数関数 sqr 平方 rad 入力データをラジアン単位にする deg 入力データを度を単位にする end プログラムの終了 [3] 環境 [3.1] windows2000 [3.2] VC 6.0 [3.3] C++ [4] 期限 2007年7月4日 午前8時 [5] その他の制限 無し どうかよろしくお願いいたします。
269 :
デフォルトの名無しさん :2007/07/03(火) 01:05:52
>>267 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char *argv[]){
char c;
char filename[128];
FILE *fp;
if(argc != 2){
printf("コマンドラインの引数が違います。 \n");
exit(1);
}
strcpy(filename, argv[1]);
if((fp=fopen(filename, "r"))==NULL){
printf("file does not exist, \n");
exit(1);
}
while((c=getc(fp))!=EOF){
printf("%c\n", c);
}
fclose(fp);
return 0;
}
>>261 #include<stdio.h>
int main(void)
{
double temp;
char ch;
printf("温度:");
scanf("%lf",&temp);
printf("摂氏から華氏[c], 華氏から摂氏[f] :");
scanf(" %c",&ch);
switch(ch){
case 'C':
case 'c':
printf("摂氏%f度 = 華氏%f度",temp,1.8*temp+32);
break;
case 'F':
case 'f':
printf("華氏%f度 = 摂氏%f度",temp,(temp-32)/1.8);
break;
default:
printf("不正な入力");
break;
}
return 0;
}
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):
宿題11.プログラム
step1: a = x + y;
step2: b = z + 1;
step3: c = a ? b;
step4: w = c + 1;
に関し、parallel.c(parallel.txt をダウンロード&参照)を完
成させて、step1とstep2を並列実行させるプログラムを作成せよ。
但し、x,y,zはプロンプトにしたがって入力するとする。
正しく動作したか?結果を考察せよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4482.txt [3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: できれば早くお願いします
[5] その他の制限:丸投げですがよろしくお願いします
授業中に教授が
「これは正しく動作しないんだけど、その理由を考察してね」
とか言っていました
できればその理由もお願いします
275 :
268 :2007/07/03(火) 08:26:37
>>274 素早い解答、ありがとうございました。
有難く、活用させて頂きます。
>>265 丸写しはよくないよ。帳尻あわせぐらいは自分でしよう。
そうだ、丸出しは良くない。尻くらい隠して前は丸出しで良いぞ
278 :
273 :2007/07/03(火) 08:58:34
問題が少し間違っていました 【誤】step3: c = a ? b; 【正】step3: c = a - b; よろしくお願いします
>>273 それは本当に「並列実行」だと教授が言ったのか?
いやはや……
やること自体はあまり難しくないだろ。
/* create 2nd child... */
のコメントの後にstep2に相当するコードを書いて、
/* on the parent... */
のコメントの後に(授業で教わっているであろう)子プロセスの終了待ちコードを書けばいい。
その後でstep3とstep4を書くことになるわけだが、子プロセスからはstep1, step2の結果を受け取ってないので
正しい計算結果は得られない。それはこの書き方なら当然なのだが、「正しく動作しない」と言いたいのだろう。
280 :
デフォルトの名無しさん :2007/07/03(火) 15:13:52
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 5 名の体重をキーボードから読み込んで,5 名の平均値以上の 値を持つ人の番号と体重を表示するプログラムを作成しなさ い. [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 7月5日 実行結果 1 番目の体重= 60.5 2 番目の体重= 57.3 3 番目の体重= 68.1 4 番目の体重= 52.4 5 番目の体重= 65.2 ---------------- 平均値: 60.7kg 3 番目: 68.1kg 5 番目: 65.2kg よろしくお願いします
281 :
デフォルトの名無しさん :2007/07/03(火) 15:15:31
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 5 名の体重をキーボードから読み込んで,それらの値を小さい 順に表示するプログラムを作成しなさい. [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 7月5日 (実行結果例) 1 番目の体重= 60.5 2 番目の体重= 57.3 3 番目の体重= 68.1 4 番目の体重= 52.4 5 番目の体重= 65.2 ---------------- (1): 52.4kg (2): 57.3kg (3): 60.5kg (4): 65.2kg (5): 68.1kg よろしくお願いします
282 :
デフォルトの名無しさん :2007/07/03(火) 15:16:56
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 5 名の体重をキーボードから読み込んで,値の小さい順に,何 番目の人かと,その体重を表示するプログラムを作成しなさ い.なお,同じ値があれば,番号の小さい方を先に表示する. (ヒント:番号を保存する配列を別途用意して,体重データを入れ替え る時に番号も入れ替える) [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 7月5日 (実行結果例) 1 番目の体重= 60.5 2 番目の体重= 57.3 3 番目の体重= 68.1 4 番目の体重= 52.4 5 番目の体重= 65.2 ---------------- (1) 3 番目: 52.4kg (2) 1 番目: 57.3kg (3) 0 番目: 60.5kg (4) 4 番目: 65.2kg (5) 2 番目: 68.1kg よろしくお願いします
283 :
デフォルトの名無しさん :2007/07/03(火) 15:17:46
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 三角形の「底辺の長さ」と「高さ」を仮引数として,三角形 の面積(底辺の長さ×高さ÷2)を返却値とする関数triangle を定義しなさい.この関数triangle を用いてキーボートから 読み込んだ底辺の長さ,高さの三角形の面積を表示するプロ グラムを作成しなさい. [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 7月5日 (実行結果例) 三角形の面積計算 底辺の長さ:10.8 高さ:8.6 ---------------- 面積: 46.44 よろしくお願いします
284 :
デフォルトの名無しさん :2007/07/03(火) 15:18:30
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 3つの整数tanka,kosu,pay を仮引数として, pay − tanka×kosu の値を返す関数otsuri を定義しなさい.この関数otsuri を用 いて,キーボートから読み込んだ単価,購入個数,支払金額 に対して,おつり(=支払金額 − 単価×個数)を表示するプ ログラムを作成しなさい. [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 7月5日 (実行結果例) 単価:129 購入個数:17 支払金額:5000 ----------------- おつり:2807 円 よろしくお願いします
285 :
デフォルトの名無しさん :2007/07/03(火) 15:24:29
[1] 授業単元: プログラミング言語 [2] 問題文(含コード&リンク): 2次方程式 ax*x+bx+c=0 の係数a,b,cを与え、方程式の解を求めて出力せよ(関数は使わなくてよい) 係数の値によって3つの場合分けをする zの平方根yの計算はy=sqrt(z)で計算する。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio2005 [3.3] 言語: C++ [4] 期限: 無期限 [5] その他の制限:特になし。 ネットで2次方程式を探しましたが、よくわからないので上の問題の条件で回答いただけると幸いです。 お願いいたします。
286 :
デフォルトの名無しさん :2007/07/03(火) 15:40:18
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 要素数がno であるint 型配列data の値の合計を返す関数 CalcSum を定義しなさい.この関数CalcSum を用いて,キ ーボードから読込まれた5つの得点の合計得点を表示するプ ログラムを作成しなさい. [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 7月5日 (実行結果例) 1 番目の得点= 59 2 番目の得点= 68 3 番目の得点= 75 4 番目の得点= 51 5 番目の得点= 64 ---------------- 合計は317 点 よろしくお願いします
287 :
デフォルトの名無しさん :2007/07/03(火) 15:41:26
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 要素数がnum であるdouble 型の配列xv の全要素に,値c を代入する関数SetValue を定義しなさい(関数SetValue は 値を返さないvoid 型).この関数SetValue を用いて,要素数 10 のdouble 型配列buf_A とbuf_B の全要素を,それぞれキ ーボードから読込んだ値に設定するプログラムを作成しなさ い.(設定後のbufA とbufB の全要素を画面に表示する) [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 7月5日 (実行結果例) bufA に設定する値= 1.23 bufB に設定する値= 3.45 ------------------- bufA[0]=1.23 bufB[0]=3.45 bufA[1]=1.23 bufB[1]=3.45 : bufA[9]=1.23 bufB[9]=3.45 よろしくお願いします
何この質問ラッシュ。
290 :
デフォルトの名無しさん :2007/07/03(火) 18:36:47
教授「あー!俺の考えた課題をこいつらに解かれてたまるか! ダミーで釣って、隠してやる!!!お前らはこっちでも解いておけ! わっははは!」 に一票
291 :
◆QQoa7tAmuU :2007/07/03(火) 18:42:07
整数nを入力し、2からnの範囲にある素数およびその個数を求めるプログラム なんですが #include <stdio.h> int main(void) { int i , j, n, cnt, flg; printf("2以上の整数を入力してください>"); scanf("%d",&n); if(n<2) return 1; printf("2"); for(i=3,cnt=1; i<=n; i+=2){ for(j=3,flg=1; j*j<=i; j+=2){ if(i%j==0) {flg=0; break;} } if(flg) { printf("%d",i); cnt++; if(cnt%10==9) printf("\n"); } } printf("\n2から%dまでには%d個の素数が含まれている\n",n,cnt); return 0; } これだと実行結果が 「2以上の整数を入力してください>5 235 2から5までには3個の素数が含まれている」 と235が余計にでてしまうのですが、どうしたらいいでしょうか? 教えてください!お願いしますm()m
292 :
◆DpMW3bRjps :2007/07/03(火) 20:13:30
293 :
デフォルトの名無しさん :2007/07/04(水) 00:32:23
みんながC言語やろうとしたきっかけを話してほしいなぁ。
294 :
デフォルトの名無しさん :2007/07/04(水) 05:04:06
病気療養で求職中に、少しでも再就職に向けて何か技術を習得したいと思った。 今となっては、プログラマ以外の何か資格の勉強してれば良かった。
[1] 授業単元:C言語実習課題 [2] 問題文(含コード&リンク):横棒グラフ ・10人分の氏名と売上台数を入力して、順位をつけて、 順位の昇順(売上1番から)売上台数を横棒グラフにして表示する。 ・星印は、5台で1個とする。5に満たないものはなし。 (たとえば、23台なら星4つ) ・250台以上は、全て星50個とする。 ・売り上げが同じなら氏名の昇順とする。文字列関数(strcmp)を用いる。 ・氏名は、15文字以内とする。 [3] 環境 [3.1] OS: WindowsVista [3.2] コンパイラ名とバージョン: Visual Studio 2006 [3.3] 言語: C++ [4] 期限: 7月20日 [5] その他の制限:配列を使用
>>280 #include<stdio.h>
#define N 5
int main(void)
{
int i;
double weight[N];
double sum, average;
sum=0;
for(i=0;i<N;i++){
printf("%d 番目の体重= ",i+1);
scanf("%lf",&weight[i]);
sum+=weight[i];
}
average = sum/N;
printf("平均値: %.1fkg\n",average);
for(i=0;i<N;i++){
if(weight[i]>average){
printf("%d 番目: %.1fkg\n",i+1,weight[i]);
}
}
return 0;
}
>>296 の訂正
×if(weight[i]>average){
○if(weight[i]>=average){
>>281 #include<stdio.h>
#define N 5
int main(void)
{
int i,j,min;
double weight[N];
for(i=0;i<N;i++){
printf("%d 番目の体重= ",i+1);
scanf("%lf",&weight[i]);
}
printf("---------------- \n");
for(i=0;i<N;i++){
min = 0;
for(j=0;j<N;j++){
if(weight[min] > weight[j]){
min =j;
}
}
printf("(%d): %.1fkg \n",i+1,weight[min]);
weight[min]=100e3;
}
return 0;
}
>>282 #include<stdio.h>
#define N 5
int main(void)
{
int i,j,min;
double weight[N];
for(i=0;i<N;i++){
printf("%d 番目の体重= ",i+1);
scanf("%lf",&weight[i]);
}
printf("---------------- \n");
for(i=0;i<N;i++){
min = 0;
for(j=0;j<N;j++){
if(weight[min] > weight[j]){
min =j;
}
}
printf("(%d) %d 番目: %.1fkg \n", i+1, min, weight[min]);
weight[min]=100e3;
}
return 0;
}
299 :
かま :2007/07/04(水) 15:38:56
[1] 授業単元: C言語 [2] 問題文(含コード&リンク):このプログラムを書き換え、ファイル名をコマンドラインの引数から指定できるようにしてください。 #include<stdio.h> #include<string.h> main(){ char c[3]; char s1[]="abcdefghijklmnopqrstuvwxyz"; char s2[100]; s2[0]='\0'; printf("s1 initial value:\"%s\"\n",s1); printf("s2 initial value:\"%s\"\n",s2); if (strcmp(s1,s2)==0){printf("s1==s2\n");} else {printf("s1!=s2\n");} printf("Push ENTER to procceed."); fgets(c,2,stdin); strcpy(s2,s1); printf("s1 current value:\"%s\"\n",s1); printf("s2 current value:\"%s\"\n",s2); if (strcmp(s1,s2)==0){printf("s1==s2\n");} else {printf("s1!=s2\n");} } [3] 環境 [3.1] OS: Windows/ [3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0 [3.3] 言語: C [4] 期限: 7月5日まで [5] その他の制限: よろしくお願いします。
>>283 double triangle(double b, double h);
int main(void)
{
double b, h, a;
printf("三角形の面積計算 \n");
printf("底辺の長さ:");
scanf("%lf", &b);
printf("高さ:");
scanf("%lf",&h);
printf("---------------- \n");
a = triangle(b, h);
printf("面積:%.2f\n",a);
return 0;
}
double triangle(double b, double h)
{
return b*h/2;
}
>>284 #include<stdio.h>
int otsuri(int tanka, int kosu, int pay);
int main(void)
{
int t, k, p, o;
printf("単価:");
scanf("%d", &t);
printf("購入個数:");
scanf("%d", &k);
printf("支払金額:");
scanf("%d", &p);
printf("----------------- \n");
o=otsuri(t, k, p);
printf("おつり:%d\n",o);
return 0;
}
int otsuri(int tanka, int kosu, int pay)
{
return pay - tanka*kosu;
}
>>286 #include<stdio.h>
#define N 5
int CalcSum(int data[], int no);
int main(void)
{
int data[N],i;
for(i=0;i<N;i++){
printf("%d 番目の得点= ",i+1); scanf("%d", &data[i]);
}
printf("---------------- \n");
printf("合計は%d 点", CalcSum(data, N));
return 0;
}
int CalcSum(int data[], int no)
{
int sum=0,i;
for(i=0;i<no;i++)
sum = sum + data[i];
return sum;
}
>>287 #include<stdio.h>
#define N 10
void SetValue(int num, double xv[], double c);
int main(void)
{
int i;
double v,bufA[N], bufB[N];
printf("bufA に設定する値= "); scanf("%lf",&v);
SetValue(N, bufA, v);
printf("bufB に設定する値= "); scanf("%lf",&v);
SetValue(N, bufB, v);
for(i=0;i<N;i++)
printf("bufA[%d]=%.2f bufB[%d]=%.2f\n",i,bufA[i],i,bufB[i]);
return 0;
}
void SetValue(int num, double xv[], double c)
{
int i;
for(i<0;i<num;i++)
xv[i] = c;
}
>>293 きっかけなんて無かった。ただ何となくやり始めたらは面白くって
今では宿題スレに居着いてる。
>>288 もしかして教科書に柴田望洋著『新版明解C言語入門編』を使ってないか?
307 :
305 :2007/07/04(水) 22:21:27
308 :
306 :2007/07/04(水) 22:48:16
>>307 return文の書き方が独特だから、return (0);と書いている教科書は俺が知る限り
その教科書しかない。
return (0);って・・・随分ぶっ飛んだ教本だな
問題の無い点を自分スタイルで批判する奴は痛い・・・何も問題ないぞ? んじゃ、今後は return (数式);スタイルもタブーにしてくれよw
>>311 イコールじゃねーぞ?妄想する前にちゃんと return (0); の問題点を指摘しろよ。
本当にそれが問題という問題があるなり、不適切と言えるんであれば
当然それなりの説明は出来るだろ。自分スタイルがイカしているだの
自分スタイルを使ってない奴はとか独裁的な考えをすると
自民党のように干されて支持されなくなりますよ?
自民党と同等程度に支持されていれば充分だと思うが。 (一部の例外を除いて)余計な括弧はつけないという方針では納得しないんだろうなぁ。
315 :
◆DpMW3bRjps :2007/07/06(金) 16:01:37
先週お世話になったものですが、ぼるじょあさんにやっていたただいた 課題の成績の評価が見事にSでした!! ほんとに感謝してます(^^)
316 :
sarucyann :2007/07/06(金) 17:14:27
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 次を元にして、足し算などの式を入力すると計算結果を表示するプログラムを作ることを考える。たとえば式1+2ENTERを入力すると結果の3が表示されるようにプログラムを作り直してください、エラー処理は無視してよい。 他の演算ができるようになっているとさらに高く評価する。 #include<stdio.h> #include<ctype.h> main(){ char c[10]; char *p; int i=0; printf("Enter a number:"); fgets(c,6,stdin); p=&c; while(isdigit(*p)){ i=i*10+(*p++)-48; } printf("You have entered: %d\n",i); } [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 7月8日 よろしくお願いします
317 :
デフォルトの名無しさん :2007/07/06(金) 18:45:56
問題文[1] 授業単元:C言語 [2] 問題文: :入力した人の年齢の合計と平均を出力させるプログラムを作成して下さい。 ※入力時に累積の人数を表示 ※年齢入力時に数字属性と範囲のチェックを行う※nullは不許可とする ※0 〜 9 の文字のみで、かつ 1 〜 99 の範囲のみを許可する※年齢の平均は小数点第二位まで出力する ※名前に空が入力された場合に年齢の合計と平均を出力してプログラムを終了する −実行結果− 1人目の名前:human1 1人目の年齢: 入力エラー(年齢を入力してください) 1人目の年齢:30 2人目の名前:human2 2人目の年齢:abc 入力エラー(年齢は数字のみで入力してください) 2人目の年齢:20 3人目の名前:human3 3人目の年齢:0 入力エラー(年齢は1から99の範囲で入力してください) 3人目の年齢:25 4人目の名前: 年齢の合計は75歳、年齢の平均は25.00歳 [3] 環境 [3.1] OS:Windows [3.2] LCpad [3.3] 言語: C [4] 期限: 2007年7月9日hhまで [5] 初心者です。
>>312 スペルミスしたとき、例えばretrun 0;はコンパイル時エラーになるが、
retrun (0);ではretrunという名前の関数を呼び出す式としてコンパイルできてしまう。
もちろんリンカエラーにはなるはずだが、エラーが表示されるときは早いほうがよい。
>>318 なるほど、C++ならコンパイル時にエラーになるから構わないわけだな
実際にvoid retrun(int)なる関数があったら……
retrun()という関数を自分で作っておいて retrun(1); とかreturnのつもりで書くってのは相当にアホだろ
switch()でのdefault:のスペルミスに比べれば害は少ないよな retrunというスペルミス云々って話は昔からよく聞くけど どうもこじつけ臭い 単にカッコは不要で冗長だから嫌われてるだけだろう 他人にスタイルを押し付けるほどの根拠は無いと思うがどうよ
今時大抵の奴はキーワードに色がつくエディタか統合開発環境使ってるから どうせすぐ気づくわな
> 単にカッコは不要で冗長だから嫌われてるだけだろう そうだろうね。昔はreturnに括弧が要ったが、後から要らなくなったことの説明が付く。
325 :
デフォルトの名無しさん :2007/07/07(土) 01:06:43
C言語 問題 2つの符号なし整数a,b(ただし、a>bとし、bは2のべき乗とする)をキーボードから読み込み、 @a,bを2進表示し、配列の中にビットを格納しなさい。 Aa,bの四則演算 c=a+b d=a-b e=a*b f=a/b(商のみ)を計算し、その結果を出力しなさい。 7月13日までです。お願いします。
326 :
デフォルトの名無しさん :2007/07/07(土) 01:08:34
[1] 授業単元: プログラミング実習 [2] 問題文:時宜の微分方程式を数値計算を用いて解け。 ルンゲクッタ法または後退オイラー法を使いプログラミングすること。 ・3*d^2x/dt^2+dx/dt+2x=4 ・x(t=0)=0 ・dx/dt(t=0)=0 [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン: bcc32? [3.3] 言語:C++ [4]期限: 2007年07月08日23:00まで [5] その他の制限:制限なし よろしくおねがいします
>>325 int main( void )
{
unsigned int a,b;
schanf( "%d %d", &a, &b );
printf( "+:%d\n", a + b );
printf( "-:%d\n", a - b );
printf( "*:%d\n", a * b );
printf( "/:%d\n", a / b );
return 0;
}
>>326 どこかの宿題スレで同じ問題あったよ。
ルンゲクッタ法使ってた。
328 :
デフォルトの名無しさん :2007/07/07(土) 01:23:21
C言語で 1〜Nの整数(Nは任意)を、ランダムな順番に並び替え, printf で出力するようなプログラムを作成したいのですが。 良いアルゴリズムなどはありますか? あ、動けばいいような気もしてきた・・・・orz
329 :
328 :2007/07/07(土) 01:27:19
おらあもうだめだあ 123456 ↓ 245136 こうなってほしいのに 632312 これが現実 (謎
>>328 簡単なのでいいならこんなの?
1.int Num[100]に1〜100の値を入れる。
2.Num[rand()%100]とNum[rand()%100]を入れ替える。
3.「2」を適当な回数する。
おまいら、なんでそんなに rand() が好きなんだw
332 :
328 :2007/07/07(土) 11:38:02
>>330 ありがとうございます
一応、それで作ってみます。
何回くらい入れ替えればいいんだろうか・・・
333 :
デフォルトの名無しさん :2007/07/07(土) 13:43:44
>328 int a[N]; for(i=1; i<N; i++) { int j = rand()%(i+1); if(j!=i) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } }
>>316 (・3・) エェー 足し算と引き算だけNE
#include<stdio.h>
#include<ctype.h>
int calc(int ans, int i, int op){
switch( op ){
case 0: return ans + i;
case 1: return ans - i;
}
return ans;
}
main(){
char c[256];
char *p;
int i, op = 0, ans = 0;
printf("Enter a number:");
fgets(c, sizeof(c), stdin);
p = c;
while(*p != '\0'){
i = 0;
while(isdigit(*p)){
i = i*10+(*p)-48;
p++;
}
ans = calc(ans, i, op);
if(*p == '+')op = 0;
else if(*p == '-')op = 1;
else op = -1;
p++;
}
printf("You have entered: %d\n", ans);
return 0;
}
338 :
デフォルトの名無しさん :2007/07/08(日) 01:43:22
問題文[1] 授業単元:C言語 [2] 問題文: :入力した人の年齢の合計と平均を出力させるプログラムを作成して下さい。 ※入力時に累積の人数を表示 ※年齢入力時に数字属性と範囲のチェックを行う※nullは不許可とする ※0 〜 9 の文字のみで、かつ 1 〜 99 の範囲のみを許可する※年齢の平均は小数点第二位まで出力する ※名前に空が入力された場合に年齢の合計と平均を出力してプログラムを終了する −実行結果− 1人目の名前:human1 1人目の年齢: 入力エラー(年齢を入力してください) 1人目の年齢:30 2人目の名前:human2 2人目の年齢:abc 入力エラー(年齢は数字のみで入力してください) 2人目の年齢:20 3人目の名前:human3 3人目の年齢:0 入力エラー(年齢は1から99の範囲で入力してください) 3人目の年齢:25 4人目の名前: 年齢の合計は75歳、年齢の平均は25.00歳 [3] 環境 [3.1] OS:Windows [3.2] LCpad [3.3] 言語: C [4] 期限: 2007年7月9日hhまで [5] 初心者です。お願いします。
1つ上のレスぐらい見ろクズ
340 :
デフォルトの名無しさん :2007/07/08(日) 18:18:48
>>327 がやってるじゃんと言おうとしたら、仕様を満たしてないのね。
Aa,bの四則演算は、何も考えずにc=a+bとかやらずに
2進数で演算しないといけないのかな?
>>325 (・3・) エェー bitに直すだけYO
もう酔っ払ってダメぽ
#include <stdio.h>
void changeBit(unsigned long n, unsigned char bit[32]){
int i;
for(i=0; i<32; i++, n = n >> 1){
bit[31 -i] = n & 0x1;
}
}
int main(void){
unsigned long a, b;
unsigned char bita[32], bitb[32];
int i;
printf("a:");
scanf("%ld", &a);
printf("b:");
scanf("%ld", &b);
changeBit(a, bita);
changeBit(b, bitb);
for(i=0; i<32; i++){
printf("%u", bita[i]);
}
puts("");
for(i=0; i<32; i++){
printf("%u", bitb[i]);
}
return 0;
}
343 :
デフォルトの名無しさん :2007/07/09(月) 14:17:13
すいません。
>>325 のaとbは8ビットで結果は16ビットです。すいませんでしたm(_ _)m
344 :
デフォルトの名無しさん :2007/07/09(月) 14:44:00
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 年(西暦),月,日を入力したとき,入力した年月日の曜日を出力するプログラムを作成 しなさい. [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:無期限 [5] その他の制限:なし お願いします。
//
>>344 #include <time.h>
#include <stdio.h>
int main()
{
int year;
int month;
int day;
printf("Input date(year month day:Ex. 2006 12 31).\n");
if (scanf("%d%d%d", & year, & month, & day) < 3) {
fprintf(stderr, "Illegal format.\n");
return 1;
}
struct tm tmp = {0};
tmp.tm_year = year - 1900;
tmp.tm_mon = month - 1;
tmp.tm_mday = day;
mktime(& tmp);
static const char * const weekDayTable[] = {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
};
printf("%d/%d/%d is %s.\n", 1900 + tmp.tm_year, 1 + tmp.tm_mon, tmp.tm_mday, weekDayTable[tmp.tm_wday]);
return 0;
}
348 :
デフォルトの名無しさん :2007/07/09(月) 15:28:57
>>325 もう一度書かして下さい。
C言語です。
二つの符号なし整数a,b(ただしa>bとし、bは2のべき乗とする。またaとbは8ビットで、演算の結果は16ビットです。)をキーボードから読み込み、
@a,bを2進表示し、配列の中にビットを格納しなさい。
Aa,bの四則演算(上のを使って、相手に10進で入力させ、それを2進表示する)
c=a+b
d=a-b
e=a*b
f=a/b(商のみ)
を計算し、その結果を出力しなさい。
習ったのはfor文、if文、do文、while文、シフト演算子{(>>)(<<)}、ビット単位のAND演算子(&)、OR演算子(|)、排他的OR演算子(^)、1の補数(~)です。結果は2進の16ビットです。
7月14日までです。お願いしますm(_ _)m
とりあえずテンプレに沿って質問しろよ
350 :
デフォルトの名無しさん :2007/07/09(月) 19:46:08
[1] コンピュータ・サイエンス [2] C++でUDPのechoサーバを作れ [3] 環境 [3.1] Windows [3.2] VisualC++系 [3.3] C++ [4]無期限 [5]wsock32.lib UDPで おねがいします。
351 :
177 :2007/07/09(月) 20:27:59
[1] 授業単元: プログラミング技術 [2] 問題文(含コード&リンク): (2)例えば式1+2[ENTER]を入力すると3を出力するように足し算の出来る プログラムに改造したいです。他にも掛け算や割り算、引き算も出来るように お願いします。 #include <stdio.h> #include <ctype.h> main(){ char c[10]; char *p ; int i=0; printf("Enter a number: "); fgets(c,6,stdin); p = &c; //ここでWarningが出るが問題にはならない While(isdigit (*p));{ i=i*10+(*p++)-48; } printf("You have entered: %d\n", i); } [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C++ [4] 期限: 明日中 [5] その他の制限:特になし
それは本当にC++か・・・
// ヘッダファイルここから class Player { int point; public: Player(); Player(int p); int get_point(); void set_point(int p); int rand(); int judge(Player &opp); void show(); }; void show_winner(int result, const char *a, const char *b); void show_point(Player &man, Player &woman);
// ソースファイルここから #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <ctime> #include "player.h" using namespace std; Player::Player() : point(100) {std::srand((unsigned)time(NULL));} Player::Player(int p) : point(p) { std::srand((unsigned)time(NULL)); } int Player::get_point() { return point; } void Player::set_point(int p) { point = (p < 0) ? 0 : p; } int Player::rand() { return std::rand() % 20; } int Player::judge(Player &opp) { int i = this->rand(); int you = (opp.rand() * 8) / 10; if (i > you) { opp.set_point(opp.get_point() - i); return 1; }
356 :
デフォルトの名無しさん :2007/07/10(火) 14:21:09
以下(ry
357 :
デフォルトの名無しさん :2007/07/10(火) 15:06:01
[1] 授業単元:C言語 [2] 数字だけからなる文字列をchar型の配列へ読み込み、それをint型のデータに変換する関数myatoi() を作成せよ、ただし文字列中に数字以外の文字が含まれれる場合は戻り値としてー1を返すようにすること さらにmyatoi()を用い、標準入力から与える文字列を数値として(printfの%dを用いて)表示するプログラムを作成せよ [3] 環境 [3.1] Linax [3.2] gcc [3.3] 言語: C言語 [4] 期限: できるだけはやく [5] できるだけ特殊じゃないので [3] 環境 [3.1] OS: linax [3.2]gcc gnome emacs [3.3] 言語: C [4] はやめ お願いします
358 :
デフォルトの名無しさん :2007/07/10(火) 15:08:57
追加 %./ファイル名 入力:14314 入力された数値は14314です 入力:abc 数字以外の文字が入っています 入力: [c]+d % 実行結果です
359 :
デフォルトの名無しさん :2007/07/10(火) 15:17:31
[1]授業単元:プログラミング演習 [2]問題文:二つの符号なし整数a,b(ただしa>bとし、bは2のべき乗とする。またaとbは8ビットで、演算の結果は16ビットとする。)をキーボードから読み込み、 @a,bを2進表示し、配列の中にビットを格納しなさい。 Aa,bの四則演算(上のを使って、相手に10進で入力させ、それを2進表示する) c=a+b d=a-b e=a*b f=a/b(商のみ) を計算し、その結果を出力しなさい。 [3]環境 [3.1]Windows XP [3.2]VisualC++,UNIX [3.3]C言語 [4]2007年7月14日まで。 [5]習ったのはfor文、if文、do文、while文、シフト演算子{(>>)(<<)}、ビット単位のAND演算子(&)、OR演算子(|)、排他的OR演算子(^)、1の補数(~)、符号なしありの表し方(unsignなど)です。お願いしますm(_ _)m
361 :
みえ :2007/07/10(火) 17:14:21
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 次を元にして、足し算などの式を入力すると計算結果を表示するプログラムを作ることを考える。たとえば式1+2ENTERを入力すると結果の3が表示されるようにプログラムを作り直してください、エラー処理は無視してよい。 他の演算ができるようになっているとさらに高く評価する。 #include<stdio.h> #include<ctype.h> main(){ char c[10]; char *p; int i=0; printf("Enter a number:"); fgets(c,6,stdin); p=&c; while(isdigit(*p)){ i=i*10+(*p++)-48; } printf("You have entered: %d\n",i); } [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 7月11日 よろしくお願いします たとえば式1+2ENTERを入力すると結果の3が表示される
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4569.txt 実行例
1:コーラ 2:ミルクティー 3:ビール 4:オレンジジュース 5:緑茶
110円 140円 210円 190円 120円
希望の飲み物の番号を入力(終了する場合はCTRL+D) 1
商品はコーラ(価格=110円) お金を入れてください。
1000円:1
500円:0
100円:0
50円:0
10円:0
商品価格=110 釣銭あり
投入貨幣 =1000円(1), 500円(0), 100円(0), 50円(0), 10円(0)
釣銭 =1000円(0), 500円(1), 100円(3), 50円(1), 10円(4)
釣銭用貨幣=1000円(1), 500円(9), 100円(7), 50円(9), 10円(6)
希望の飲み物の番号を入力(終了する場合はCTRL+D)
[3] 環境
[3.1] OS: WindowsXP
[3.2]gcc
[3.3] 言語: C
[4] 期限: 7/11まで
[5] その他の制限: 特になし
よろしくお願いします。
>>362 は出来たのですが
>>363 ができません。
今日の22時までなんです。どなたかお願いします。
>>364 昨日やってできたけど、バカバカしくなって消した
366 :
363 :2007/07/11(水) 13:24:42
バカバカしくなるぐらい簡単ってことなんでしょうか? だったら少し頑張って自分でやってみます
>>366 できたところまででいいから晒せばヒントあげるよ
すべて人任せはイクナイ
368 :
デフォルトの名無しさん :2007/07/11(水) 18:47:35
[1] 授業単元: プログラミング技術 [2] 問題文(含コード&リンク):ニュートン法 出力が 値入力⇒○ 解の値は ○ 収束するのに ○ 回かかりました [3] 環境 [3.1] OS:WindowsVISTA [3.2] コンパイラ名とバージョン:コンパイラが動かないですorz [3.3] 言語:C言語 [4] 期限:考える時間であっというまに・・・7/13(金)17:00です。 [5] その他の制限: #include<math.h>とdouble、fabsは必ず使うようです。
(・3・) エェー ニュートン法って式いらんのかいNA
370 :
デフォルトの名無しさん :2007/07/11(水) 23:57:17
[1] 授業単元:情報処理 [2] 問題文(含コード&リンク): コンビニの売り上げ伝票ファイルを集計し、20歳代、30歳代それぞれの売り上げ総額を求める処理 のプログラムを作る。売り上げ伝票ファイルは以下のような形式で記録されるものとする。1行に1品目の売り上げ記録があり、第 1項目が商品コード、第2項目が単価、第3項目が数量、第4項目が客の性別、第5項目が客の年齢層。年齢層の値は19歳以下 なら1、20〜29歳なら2、30〜39歳なら3、40〜49歳なら4、50歳以上なら5である。性別は0が男、1が女を表す。商品コードが0の または負のとき、それ以後のデータがないことを表すものとする。また、データが不正のときも記録はないものとする。 [3] 環境 [3.1] OS:Windows Visual stdio 2003 [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C [4] 期限:7月12日朝6時まで [5] その他の制限:switch文を必ずいれて下さい。 他スレでスルーされてしまいました(´;ω;`) 助けて下さい。よろしくおねがいしますm(_ _)m
ぎりぎり杉
全くだ やろうと思ったら6時過ぎてたよw
374 :
デフォルトの名無しさん :2007/07/12(木) 14:42:26
#include <stdio.h> int main(void) { int i, n; int min, sec; int minsum = 0, secsum = 0; printf("曲数を入力して下さい. --> "); scanf("%d", &n); for(i = 0; i < n; i++) { printf("<%d 曲目>\n", i); printf("何分ですか. --> "); scanf("%d", &min); printf("何秒ですか. --> "); scanf("%d", &sec); minsum += min; secsum += sec; } printf("総時間%d 分%d 秒", minsum, secsum); return 0; }
>>375 いちいち突っ込むのもあれだけど、とりあえず(鼻からブーーのAA略) ブーーッ!
377 :
デフォルトの名無しさん :2007/07/12(木) 16:43:15
378 :
◆lIN/ESgxWw :2007/07/12(木) 17:01:58
[1]単元:プログラミング技術 [2]問題文:アップローダーのno.4600にアップしておきました [3]環境 OS:リナックス コンパイラ:gcc 言語:C [4]期限:来週の水曜までに よろしくお願いします。
379 :
368 :2007/07/12(木) 17:51:51
>>369 式いります。
do{
(式)
}while();
みたいな感じなのですが、私には理解できませんorz
>>359 c言語ブランク暦13年の俺様のテクニックをしかと見届けよ
#include<stdio.h>
char b8[9],b16[17];
void d2b8(int n){
for(int i=0;i<8;i++)b8[7-i]=(n&1)+'0',n/=2;b8[8]='\0';
}
void d2b16(int n){
for(int i=0;i<16;i++)b16[15-i]=(n&1)+'0',n/=2;b16[16]='\0';
}
int main(void){
int a,b,i;
while(1){
printf("a=");scanf("%ud",&a);
if(a<0||a>255){printf("8bit\n");continue;}
printf("b=");scanf("%ud",&b);if(b>=a){printf("b<a\n");continue;}
if(b!=1&&b!=2&&b!=4&&b!=8&&b!=16&&b!=32&&b!=64&&b!=128){printf("b=2^n\n");continue;}
d2b8(a);printf("a = %3d (%s)\n",a,b8);
d2b8(b);printf("b = %3d (%s)\n",b,b8);
d2b16(a+b);printf("c = %3d + %3d = %5d (%s)\n",a,b,a+b,b16);
d2b16(a-b);printf("d = %3d - %3d = %5d (%s)\n",a,b,a-b,b16);
d2b16(a*b);printf("e = %3d * %3d = %5d (%s)\n",a,b,a*b,b16);
d2b16(a/b);printf("f = %3d / %3d = %5d (%s)\n",a,b,a/b,b16);
}
//return 0;
}}
計算も2進でやらせたいんじゃないん?
引数にクラスを指定するのってどうやるの? 下のやり方だとだめだっだ。 TEST_CLASS Sizuoka; int *p; p = &Sizuoka; func(p);
383 :
デフォルトの名無しさん :2007/07/12(木) 20:39:32
funcの型が書かれてないし 意味不明だよ^^
385 :
デフォルトの名無しさん :2007/07/12(木) 21:15:14
^^はにこやかに意味がわからないよ〜って言ってるだけで 笑っているわけじゃない
386 :
デフォルトの名無しさん :2007/07/13(金) 10:24:49
すいません。
>>359 は2進で計算しますm(_ _)m
387 :
デフォルトの名無しさん :2007/07/13(金) 13:55:42
357お願いします
>>357 #include <stdio.h>
int myatoi(char *buf)
{
char *p = buf;
int n = 0;
while(*p != '\0') {
if(isdigit(*p)) { n *= 10; n += *p - '0'; p++; }
else return -1;
return n;
}
int main(void)
{
int n;
char buf[128];
scanf("%s", buf);
n = myatoi(buf);
printf("%d\n", n);
return 0;
}
>>390 #include <ctype.h> を忘れてた。
whileの閉じ括弧もわすれちょるよ
393 :
デフォルトの名無しさん :2007/07/13(金) 14:44:14
397 :
デフォルトの名無しさん :2007/07/13(金) 18:56:28
>>390 実行結果が358にならないです。 おねがいします
>>396 bccだとcursesがないからできなかった
401 :
デフォルトの名無しさん :2007/07/14(土) 00:42:49
>400 ほとんど答えが書いてあるようなもんなのに、なんで自分でやらないかねぇ
403 :
デフォルトの名無しさん :2007/07/14(土) 02:38:58
>>401 int push(int data, int *sp, int *STK)
{
if (*sp == 0) return 0;
(*sp)--; *(STK + *sp) = data;
return 1;
}
int pop(int *dataP, int *sp, int *STK)
{
if (*sp == N) return 0;
*dataP = *(STK + *sp); (*sp)++;
return 1;
}
void dsp_stack(int top, int *a)
{
int i;for (i = top; i < N; i++) {
printf("%d:%3d\n",i, *(a + i));}
}
404 :
もり :2007/07/14(土) 10:34:36
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):次のプログラムは、式を入力すると計算結果を表示するプログラムであるが、 誤っている点があります。現在の内容を理解し、誤りを訂正してコメントをつけてください。 #include <stdio.h> #include <stdlib.h> #include <ctype.h> char *p; char c[100]; int expression(void); int term(void); int number(void); main(){ int ans; while(1){ printf("Enter expression : "); fgets(c,90,stdin); p=&c; if(*p == '\n') break; ans = expression(); printf("Answer:%d\n", ans); } } int expression(){ int ans; ans = term(); while(1){ if(*p == '+'){ ans = ans + term(); }else if(*p == '-'){ ans = ans - term(); }else break; } return(ans); } int term(){ int ans,x; ans = number(); while(1){ if(*p == '*'){ ans = ans * number(); }else if(*p == '/'){ x = number(); if(x == 0){ printf("Division by 0\n"); exit(1); } ans = ans / x; }else break; } return(ans); } int number(){ int i=0; while (isdigit(*p)){ i=i*10+(*p++)-48;} return(i); } [3] 環境 [3.1] OS: Windows [3.2] gcc 3.4 [3.3] 言語: C言語 [4] 期限: 2007/7/17 改行が多すぎて、乗せられなかったためこんな形になりますた。すみません。宜しくお願いします。
うpろだ使えよww
407 :
デフォルトの名無しさん :2007/07/15(日) 15:44:54
408 :
デフォルトの名無しさん :2007/07/15(日) 15:50:40
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): フィボナッチ数列の第n 番目(1 ≤ n ≤ 50)の数を出力するプログラムを作成しなさい. [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:無期限 [5] その他の制限:なし よろしくお願いします。
409 :
デフォルトの名無しさん :2007/07/15(日) 16:02:05
>>408 #include <stdio.h>
int main(void){
int i, max;
int tanka, kosuu, total = 0;
double tax_total = 0.0;
printf("商品数を入力してください. --> ");
scanf("%d", &max);
for(i=0; i<max; i++){
printf("<商品%d>\n", i+1);
printf("単価を入力してください. --> ");
scanf("%d", &tanka);
printf("個数を入力してください. --> ");
scanf("%d", &kosuu);
printf("** 単価×個数 ** ==> %d\n", tanka * kosuu);
total += tanka * kosuu;
printf("** 累積合計代金 ** ==> %d\n", total);
tax_total += total * 1.05;
printf("** 消費税込み累積合計代金** ==> %lf\n", tax_total);
}
return 0;
}
コンパイル通してないからどっかエラーでたら教えてね☆
#include <stdio.h> typedef struct { int nValue; int nNums; int nPrice; } DATA; int main(void) { int n, i; DATA *dt; int nSmPrc = 0; double dSmPrcTaxin = 0; printf("商品数を入力して下さい --> "); scanf("%d", &n); dt = (DATA *)malloc(sizeof(DATA) * n); for(i=0; i<n; i++) { printf("<商品%d>\n単価を入力して下さい. --> ", i); scanf("%d", &dt[i].nValue); printf("個数を入力して下さい. --> "); scanf("%d", &dt[i].nNums); dt[i].nPrice = dt[i].nValue * dt[i].nNums; nSmPrc += dt[i].nPrice; dSmPrcTaxin = (double)nSmPrc * 1.05; printf("** 単価×個数** ==> %d\n", dt[i].nPrice); printf("** 累積合計代金** ==> %d\n", nSmPrc); printf("** 消費税込み累積合計代金** ==> %g\n", dSmPrcTaxin); } return 0; }
411 :
デフォルトの名無しさん :2007/07/15(日) 16:10:56
>>409 #include <stdio.h>
int main(void){
int i, n;
unsigned int fibonacci[50];
fibonacci[0] = fibonacci[1] = 1;
for(i=2; i<50; i++){
fibonacci[i] = fibonacci[i-1] + fibonacci[i-2];
}
printf("何番目を表示させたいか入力してください\n");
scanf("%d", &n);
printf("フィボナッチ数列の %d 番目は %d です\n", n, fibonacci[n-1]);
return 0;
}
こっちも通してないからエラーでたら教えてね☆
412 :
舞子 :2007/07/15(日) 16:11:29
自宅でマイコン開発をはじめようと考えているものです。 (現在マイコンの知識はほとんどないです。) そこで、マイコン開発に必要なハードウェア、アプリケーションを知りたいんですが、 お知恵をおかりできませんでしょうか? ハードウェアとしてはできればUSBで接続で マイコンにそのまま書き込めるようなものがあれば最適です。 USBとかって安くうってるのでしょうか? 自宅で行うのでできれば安く簡単にと考えてます。 (当然レベルの高い製品はできないと思いますが) よろしくお願いいたします。
じゃあ俺も #include <stdio.h> int main(void) { int shouhinsuu,tanka,kosuu,daikin,ruiseki=0; printf("商品数を入力して下さい --> ");scanf("%d",&shouhinsuu); for(int i=1;i=<shouhinsuu;i++){ printf("<商品%d>\n単価を入力して下さい. --> ",i);scanf("%d",&tanka); printf("個数を入力して下さい. --> ");scanf("%d",&kosuu); printf("** 単価×個数** ==> %d\n",daikin=tanka*kosuu); printf("** 累積合計代金** ==> %d\n",ruiseki+=daikin); printf("** 消費税込み累積合計代金** ==> %.1f\n",ruiseki*1.05); } }
intじゃあふれない?
415 :
デフォルトの名無しさん :2007/07/15(日) 16:14:30
今やってみたらあふれた 泣いた
416 :
デフォルトの名無しさん :2007/07/15(日) 16:16:41
首吊って死んでくるねっ☆
417 :
デフォルトの名無しさん :2007/07/15(日) 16:21:09
わかるだろうが一応死ぬ前に fibonacci を int から double 型に変更して printf のところを %0.lf ってしといてくれ…とだけ言っておく 俺はもうだめだ
418 :
デフォルトの名無しさん :2007/07/17(火) 12:15:18
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):任意の回数だけコンピュータを相手にじゃんけんをするプログラムを作成しなさい. ただし,コンピュータは時間によって変わる乱数により実現すること.また,あいこの場合は回数のカウントには含めないこととする [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:今日17時まで [5] その他の制限:なし できるだけ速くお願いします!!
419 :
デフォルトの名無しさん :2007/07/17(火) 12:23:08
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):正整数n を入力し,n× n の正方行列において,以下のような○と●のパターンを出力す るプログラムを作成しなさい n=1 ○ n=2 ●○ ○○ n=3 ○●○ ●●○ ○○○ n=4 ●○●○ ○○●○ ●●●○ ○○○○ n=5 ○●○●○ ●●○●○ ○○○●○ ●●●●○ ○○○○○ [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:無期限 [5] その他の制限:なし お願いします。
>>409 フィボナッチは配列イラナイwww
int宣言でゴミ箱を作ればいいw
馬鹿ジャンw
>>411 ワロタw
1→1→2→3→5といくのだから
a=1;b=1;c==a+b;
forでループさせてcを出力すればいいw
馬鹿ジャンw
>>411 出来るだけ軽くしろw無能乙w
遅レスだが
>>32 「やさしいC(高橋麻奈著)」を読みながら
コマンドプロンプトで出来るテトリス作成(俺の時は無知から初めて2週間で形にはなった)
>418 (・3・) きっと、Windwsへのgccのインストール方だYO
>419 #include <stdio.h> int main(void) { int i, j, n; printf("n="); scanf("%d", &n); for(i=n; i > 0; i--) { if(i%2) for(j=0; j<=n-i; j++) printf("○"); else for(j=0; j<n-i; j++) printf("●"); for(j=0; j<i/2; j++) printf("●○"); putchar('\n'); } return 0; }
427 :
426 :2007/07/17(火) 14:51:53
Cのプログラミングでタイピングゲームを作るんだけど クリアするのにかかった時間ではなく、 「1分あたりに入力したキー数」を結果として表示させるにはどうしたらいいだろう? 試行のたびに1分以上タイピングゲームするのが嫌だから、 10秒毎に入力数を記憶して、その平均を6でかけてやろうと思ったんだけど 10秒毎っていうのにひっかかってる。 秒数カウントするのはsleep関数での方法しか知らないから、 タイピングゲームを滞らせることなく実行しながら秒数をカウントって どうすればいいのか全くわからん。 ネットのC言語講座とかでも調べてみたけどわからない… 友達に、教えてって言われたんだけど私もわからず、てんてこまい。誰か助けてー
clock使えばいいんでないの? timeで十分か
具体的にどうすれば…… int main(void) { FILE *fp; int i,len,ch,j,mojisu=0,nyu=0,key,seida,speed; char buf[256]; char level; clock_t start,end; double jikan; fp = fopen("file.txt","r"); if(fp == NULL) { printf("File Open Error"); return 0; } printf("以下の文字列をタイプしてください。\n"); start=clock();
while(fgets(buf,256,fp)!=NULL) { len = strlen(buf); buf[len-1] = '\0'; len = strlen(buf); mojisu = mojisu + len; for(i=0;i<len;i++) { printf("%s \r",&buf[i]); fflush(stdout); while(1){ ch = getch(); nyu = nyu + 1; if(ch==buf[i]) { printf(" \b"); break; } } } } end = clock(); fclose(fp); jikan = (double)(end - start) / CLOCKS_PER_SEC; seida = mojisu * 100 / nyu; speed = key * 6;
if(seida >= 90) { if(speed <= 25) { level = 'A'; } else if(speed <= 40) { level = 'B'; } else { level = 'C'; } } else if(seida >= 60) { if(speed <= 25) { level = 'B'; } else { level = 'C'; } } else { level = 'C'; } printf("\n%3.1lf秒かかりました。\n",jikan); printf("正打率は%d%\n",seida); printf("タイプスピードは%d\n",speed); printf("あなたのレベルは%c\n",level); return 0; } いまこんなかんじ。speedの大体の値がどうなるかまだわからないので、テキトーに25と40に設定してあります
433 :
デフォルトの名無しさん :2007/07/18(水) 00:28:51
[1] 授業単元:IT入門B1
[2] 問題文:繰り返し複素数(実部,虚部はそれぞれ整数型とする)を入力し,ユーザが最後に1 (1+i*0)を入れたら今まで入力した複素数の実部と虚部のペアをすべて出力し,さらに入力した複素数すべての積を出力するプログラムを作成せよ.
なお,ユーザが入力する回数に制限はないものとする.
stdio.hの他にstdlib.hをインクルードしておく必要がある.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c
[4] 期限:2007年7月30日
[5] その他の制限: 特になし
参考プログラムです→
http://www-it.sci.waseda.ac.jp/ITB1/class1/list.c よろしくお願いします。
>>436 どんな変数を使ったかは把握しておこうぜ?
とりあえず
while(length--)
*start++ = ch;
ってやればコンパイルは通る
なんか変な文字がでてきて・・・ 下のような結果にならないんです 4 -89 0 1 5 43 ... 112 ← cmemset 使用前 0 0 0 0 0 0... 0 ← 0 で埋めたとき 88 88 88 88 88 88 ... 88 ← 88 で埋めたとき
>>438 どうみてもそうなるようには作られて無いからねww
表示は文字列じゃなくて数列なんでしょ?
数列だと思います 問題は435なんですが全然分からないんです
解けるようにできる問題ではないんですか?
#include <stdio.h> #include<stdlib.h> void cmemset(char *start, int value, int length); int main(void) { int i, size = 10; char *str; //埋める前 str = (char *)malloc(sizeof(char) * size); for(i=0; i<size; i++) printf("%3d ", (int)*(str+i)); putchar('\n'); //0で埋める cmemset(str, 0, size); for(i=0; i<size; i++) printf("%3d ", (int)*(str+i)); putchar('\n'); //88で埋める cmemset(str, 88, size); for(i=0; i<size; i++) printf("%3d ", (int)*(str+i)); putchar('\n'); return 0; } void cmemset(char *start, int value, int length) { while(length--) *start++ = (char)value; return; }
ありがとうございます!
444 :
◆DpMW3bRjps :2007/07/23(月) 19:11:48
1] 授業単元: プログラミング実習 [2] 問題文(含コード&リンク): 任意の文字列を入力し、その文字列の中に任意の文字がいくつはいっているかを出力する プログラム [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2007年7月24日17:00まで [5] その他の制限: こないだ初めて文字列の入力を習いました、初心者です! よろしく お願いします
int CountChar(char *str, char ch) { int num = 0; do { if(*str == ch) num++; } while(*str++); return num; } 入力は適当に作ってくれ
446 :
◆UoNQqijD4I :2007/07/23(月) 20:26:11
>>444 ですが、配列を使ってお願いします。
無理いってすみませんが…(;;)
447 :
デフォルトの名無しさん :2007/07/24(火) 15:28:06
あっちの宿題スレにレスあったで
448 :
デフォルトの名無しさん :2007/07/24(火) 16:03:21
449 :
デフォルトの名無しさん :2007/07/24(火) 16:34:08
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある
(
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4151.txt )
このデータをファイルから読み込み
挿入ソート
基数ソート
ヒープソート
クイックソート
マージソート
によってソートできるよう各プログラムを作成せよ
データ数が100,000個のときでも対応できるようメモリを確保しておいてください。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 7月28日
[5] その他の制限:出来る限り単純なアルゴリズムで作ってください。合計5つのプログラムを作成してください。
大変な問題で申し訳ありませんがどなたか詳しい方よろしくお願いいたします
>>457 (・3・) エェー 期限過ぎてるけどやったほうがいいのかNA?
どんな入力に対してどんな出力が欲しいか書いてくれYO!
459 :
名無しさん@そうだ選挙に行こう :2007/07/29(日) 15:05:47
宿題スレで解決しなかったのでこっち来ました お尋ねしたいのですが以下のプログラムに、 「rand100000.dat(ランダムに数値が100000個並んでいるデータ)」 から読み込んでソートするというのを追加したいのですがどうすればよいでしょうか? void BubbleSort(int Data[], int n) { int BeginPlace, ComparePlace; //比較を始める位置を最初からn-1まで変えていく for(BeginPlace = 0;BeginPlace < n;BeginPlace++) { //n - BeginPlaceまで比較する for(ComparePlace = 1;ComparePlace < n - BeginPlace;ComparePlace++) { //右のほうが小さかったら交換する if(Data[ComparePlace - 1] > Data[ComparePlace]) { Swap(&(Data[ComparePlace - 1]), &(Data[ComparePlace])); } } } return; }
>>459 (・3・)エエー rand100000.datの書式が分からないと答えられないYO
461 :
名無しさん@そうだ選挙に行こう :2007/07/29(日) 16:14:37
データファイルの先頭レコードに、データ件数がある場合と、 データ件数が固定件数か分かっている、ファイルの中はデータだけでは 処理の仕方が違うと思うがな。 このデータファイルって、予め件数がわからないという条件でなかったか?
463 :
名無しさん@そうだ選挙に行こう :2007/07/29(日) 16:52:41
いや、件数は分かってるんでとりあえずファイルから読み込むというmain関数を作ってほしいです
>>463 int main()
{
FILE * fp = fopen("4151.txt", "r");
int lines;
if (fscanf(fp, "%d", & lines) < 1) return 1;
int * array = calloc(sizeof(* array), lines);
if (array == NULL) return 1;
for (int ic = 0; ic < lines; ++ic) {
if (fscanf(fp, "%d", & array[ic]) < 1) return 1;
}
fclose(fp);
#if 0
for (int ic = 0; ic < lines; ++ic) printf("%d\n", array[ic]);
#endif
free(array);
return 0;
}
>>463 dataに読み込んでいる。
#include <stdio.h>
#define DATAFILE "rand100000.dat"
#define DATASIZE 100000
int data[DATASIZE];
int main()
{
FILE *fp;
char buf[80];
int i=0,size;
fp=fopen(DATAFILE, "r");
if(fp==NULL){
fprintf(stderr,"Can't open %s",DATAFILE);
return 1;}
while(fgets(buf,sizeof(buf),fp)!=NULL){
data[i]=atoi(buf);
i++;}
size=i;
printf("data count=%d\n",size);
for(i=0;i<size;i++)
printf("%d ",data[i]);
printf("\n");
return 0;
}
466 :
465 :2007/07/29(日) 17:12:40
いけない。fclose(fp)が抜けている。 return 0;する前に入れてくれ。
467 :
デフォルトの名無しさん :2007/07/30(月) 09:34:26
[1] 授業単元:数値計算 [2] 問題文(含コード&リンク): ガウスの消去法(ピボット選択ありで、計算時間表示あり)をプログラミングせよ [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2007/7/31 よろしくお願いします。。
>>468 相関係数や一時回帰はExcelでグラフを作れば計算してくれるからそれを参考に。
それ以外は判るのならそこまで自分で書いたものを寄越したまえ。
ぼるじょあって何? 昔麻原ショーコーのAAの三段活用をコピペしまくってた馬鹿がたしかそんなHN名乗ってたが。。
ぐぐれよ
475 :
デフォルトの名無しさん :2007/08/01(水) 21:05:38
[1] 授業単元:C言語 [2] 問題文: 指定された段数numの図形を画面に表示するプログラム部分である □に適当なプログラムを書なさい。(プログラム中のi,jはint型変数) for(i=1;□;i++){ for(j=1;j<=□;j++){ printf(□); } for(j=1;□;j++){ printf("%d",i); } putchar(□); } [3] 環境 [3.1] OS:WINDOWS XP [3.2] コンパイラ名とバージョン: (VS 2005) [3.3] 言語: C [4] 期限: 8月1日まで 実行結果 何段?num=5 1 22 333 4444 55555 よろしくお願いします
(・3・)アルェー? for文多くないかNA? for(int i=1;i<=num;i++) { // for(j=1;j<=□;j++) // { // printf(□); // } for(int j=1;j<=i;j++){ printf("%d",i); } putchar('\n'); }
[1] 授業単元:応用ネットワークプログラミング2 [2] 問題文 TCPおよびUDPのチェックサムを計算するプログラムを作成せよ なお、IPは以下のようにする。 src 200.199.198.197 dest 1.2.3.4 [3] 環境 [3.1] OS: Linux [3.2] Gentoo [3.3] 言語:C言語 [4] 期限:6月9日の水曜日まで [5] その他の制限:Cが苦手で困っています。
>479 宿題スレと同じ? 向こうは少し条件足りてないけど。 int arr_min_pos(int arr[], int n) { int pos; if(n==1) return arr[0] < 0 ? -1 : 0; pos = arr_min_pos(arr, n-1); return arr[n-1] < 0 || arr[n-1] > arr[pos] ? pos : n - 1; }
482 :
デフォルトの名無しさん :2007/08/29(水) 12:59:49
言語:C コンパイラ名とバージョン:ボーランド OS:XP 問題:ユーザー関数の作成 再帰関数を使って、xのn乗を求めるプログラムを作成しなさい プロトタイプ宣言:int power(int x,int n); 実行画面 文字列入力==>2 文字列入力==>0 値:1 文字列入力==>2 文字列入力==>3 値:8 文字列入力==>6 文字列入力==>4 値:1296
int power(int x,int n) { return n <= 1 ? x : x * power(x, n-1); }
484 :
デフォルトの名無しさん :2007/08/30(木) 04:55:24
日本オワタな
>>483 (・3・) エェー 惜しいYO!
x=2 n=0
(・3・) エェー 久々に来たけどもみあがってないNE
487 :
◆uWJL1MSv.M :2007/09/01(土) 23:19:03
[1] 授業単元: データ構造とアルゴリズム [2] 問題文: @Cell型のオブジェクトa,b,c,d,eを用意し、 それぞれvalueに10,20,30,40,50を設定し、 a→b→c→d→eと連結する。valueの値を順に出力しなさい。 A @のプログラムに書き足し、オブジェクトcの次(オブジェクトd)を削除し、 valueの値を順に出力しなさい。次にオブジェクトaを削除し、 valueの値を順に出力しなさい。 B Aのプログラムに書き足し、オブジェクトcの次にオブジェクトaを挿入し、 valueの値を順に出力しなさい。次に先頭にオブジェクトdを挿入し、 valueの値を順に出力しなさい。 C @のプログラムを双方向リストにし、valueの値を逆順に出力しなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VisualC++.net [3.3] 言語: C++ [4] 期限: 2007年9月3日まで よろしくお願いします。
(・3・) エェー Cell型ってどんなんだYO
細胞に関するクラスじゃね?
(・3・) エェー そりは難しそうですNE
乾電池かも知れず。
直列に繋いで電圧を調べるのか
貨車かもしれんぞ
494 :
◆uWJL1MSv.M :2007/09/02(日) 14:24:09
すいません。 セル 連結リストはセル (cell) というデータを繋げて作ります。 セルにはデータを格納する場所と、次のセルを指し示す場所から構成されます。 図でいうと、箱がひとつのセルを表していて、左側にデータを格納し、 右側に次のセルへの参照を格納します。 セルの型の定義 class Cell{ private: Cell* next; //次のセルへのポインタ int value; //値 public: Cell(){next = NULL; value = 0;} //コンストラクタ void setNext(const Cell* p){next = p;} //nextを設定する void setValue(int a){value = a;} //valueを設定する Cell* getNext(){return next;} //nextの値を得る int getValue(){return value;} //valueの値を得る … };
なんだ。もうできてんじゃん
>>487 (・3・) エェー @だけやってみたお
int main(){
Cell *list = new Cell();
Cell *header = list;
for(int i=1; i<=5; i++){
list->setNext(new Cell());
list->getNext()->setValue(i*10);
list = list->getNext();
}
while(header->getNext() != NULL){
header = header->getNext();
std::cout << header->getValue() << std::endl;
}
return 0;
}
497 :
◆uWJL1MSv.M :2007/09/02(日) 20:58:11
ありがとうございます。 すいません、A、B、Cもお願いします。
(・3・) エェー つーか@間違ってたお int main(){ Cell *a, *b, *c, *d, *e; a = new Cell();b = new Cell();c = new Cell();d = new Cell();e = new Cell(); a->setNext(b);b->setNext(c);c->setNext(d);d->setNext(e); a->setValue(10);b->setValue(20);c->setValue(30);d->setValue(40);e->setValue(50); Cell *header = a; while(header != NULL){ std::cout << header->getValue() << std::endl; header = header->getNext(); } return 0; }
(・3・) エェー Aってこんなん? int main(){ Cell *a, *b, *c, *d, *e, *header, *list; a = new Cell();b = new Cell();c = new Cell();d = new Cell();e = new Cell(); a->setNext(b);b->setNext(c);c->setNext(d);d->setNext(e); a->setValue(10);b->setValue(20);c->setValue(30);d->setValue(40);e->setValue(50); header = a; c->setNext(c->getNext()->getNext()); list = header; while(list != NULL){ std::cout << list->getValue() << std::endl; list = list->getNext(); } std::cout << std::endl; header = header->getNext(); list = header; while(list != NULL){ std::cout << list->getValue() << std::endl; list = list->getNext(); } return 0; }
(・3・) エェー B・・なんか意図が違う気がしてきたお int main(){ Cell *a, *b, *c, *d, *e, *header, *list; a = new Cell();b = new Cell();c = new Cell();d = new Cell();e = new Cell(); a->setNext(b);b->setNext(c);c->setNext(d);d->setNext(e); a->setValue(10);b->setValue(20);c->setValue(30);d->setValue(40);e->setValue(50); header = a; //Aの処理 c->setNext(c->getNext()->getNext()); header = header->getNext(); //Bで追加 a->setNext(c->getNext()); c->setNext(a); list = header; while(list != NULL){ std::cout << list->getValue() << std::endl; list = list->getNext(); } std::cout << std::endl; d->setNext(header); header = d; list = header; while(list != NULL){ std::cout << list->getValue() << std::endl; list = list->getNext(); } return 0; }
(・3・) エェー そろそろ書き込みが規制される予感 Cのクラスの変更 class Cell{ Cell *next; Cell *front; int value; public: Cell(); void setNext(Cell*); void setFront(Cell*); void setValue(int); Cell* getNext(); Cell* getFront(); int getValue(); }; Cell::Cell(){next = NULL; front = NULL; value= 0;} void Cell::setNext(Cell *next){this->next = next;} void Cell::setFront(Cell *front){this->front = front;} void Cell::setValue(int value){this->value = value;} Cell* Cell::getNext(){return next;} Cell* Cell::getFront(){return front;} int Cell::getValue(){return value;}
(・3・) エェー C int main(){ Cell *a, *b, *c, *d, *e, *header, *list; a = new Cell();b = new Cell();c = new Cell();d = new Cell();e = new Cell(); a->setValue(10);b->setValue(20);c->setValue(30);d->setValue(40);e->setValue(50); Cell *array[] = {NULL, a, b, c, d, e, NULL}; for(int i=1; i<=5; i++){ array[i]->setFront(array[i-1]); array[i]->setNext(array[i+1]); } header = a; list = header; while(list->getNext() != NULL)list = list->getNext(); while(list != NULL){ std::cout << list->getValue() << std::endl; list = list->getFront(); } return 0; }
503 :
◆uWJL1MSv.M :2007/09/03(月) 01:35:15
助かりました。ありがとうございました。
>>504 そんなもんTCP/IPバイブル読み尽くしたらすぐにわかるわ。
そんな努力もせんと、人に聞くな。何するつもりや。
(・3・) エェー 素晴らしい説明でしたお
507 :
デフォルトの名無しさん :2007/09/13(木) 09:15:37
授業単元:C言語 問題文(含コード&リンク):文字列を入力し、圧縮しながら他の文字列配列に格納しなさい 使用する主な標準関数:strlen()、sprintf()など 実行画面 入力文字列(m1)==>AAAAAAABBBCddEEEE#### 圧縮(m2):@7A@3BC@2d@4E@5# 圧縮比:72.7% 環境 OS: Windows コンパイラ名とバージョン:ボーランド 言語:C 期限: その他の制限:
>>507 マルチすんな
C/C++ に今答えを書き込んだけど消したくなった
509 :
507 :2007/09/13(木) 10:16:30
>>507 (・3・) エェー 暇だYO!
#include<stdio.h>
#include<string.h>
int main(void){
char m1[100+1], m2[100*3+1], *ptr=m2;
int m1_len, i;
printf("入力文字列(m1)==>");
scanf("%100s", m1);
m1_len=strlen(m1);
for(i=0;i<m1_len;i++) ptr+=sprintf(ptr, "@1%c", m1[i]);
printf("圧縮(m2):%s\n", m2);
printf("圧縮比:%.1f%%\n", strlen(m2)*100./m1_len);
return 0;
}
短!って思ったら、、ちょwww もうPerlでいいよw s/(.)\1+/"@".length($&).$1/ge
ぼるじょあへ挑戦状 君に花札のプログラムを作れるかな? ルールは花合わせだ おっと、無理ならやらなくてもいいんだぜ? それじゃ、goodluck!
>>512 (・3・) エェー 挑戦ってことはAI同士の対戦ってことかYO!
-> を使ったプログラムを作れ
>>514 #include <stdio.h>
int main(void) {
printf("->");
return 0;
}
#include <stdio.h> int main(void) { int n = 0; printf("%d", n-->0); return 0; }
[1] 授業単元:C++プログラミング [2] 問題文(含コード&リンク): 「年(西暦)」「月」を入力したら,その月のカレンダーを表示するプログラムを作成しなさい。ただし,下記の条件を満たすものとする。 【条件】 (1)カレンダークラスを作成し,main関数でカレンダークラスの実体を生成し,カレンダークラス内のメンバ関数(show関数)を呼び出してカレンダーを表示する。 (2)カレンダークラスはカプセル化されていること。 (3)カレンダー表示には,年,月および曜日,日を表示すること。 (4)「閏年」「祝日」「節句」「二十四節気」の表記を可能にする。 (5)上記以外については自由に作成してよい。 [3] 環境 [3.1] OS: Windows VISTA or XP [3.2] visual studio 2005 [3.3] 言語: C++ [4] 期限: 2007/10/7 23:00まで。 [5] その他の制限: 特になし よろしくお願いします。
>>517 (・3・) エェー 太陽暦から旧暦に変換する数式はないのかYO!
>>518 六曜でしょうか?
すみません、変換式わからないです
>>518 (4)でわからない数式の部分は省いてもらって良いです。
申し訳ないです
521 :
デフォルトの名無しさん :2007/10/07(日) 14:57:23
今日中は辛いな… 今日は研究が忙しい…
作るけどレイアウトとかは自分で調整してね
祝日設定が面倒だったので断念
ええ!? 突き落とされた気分です・・・
ためしにやってみてるけど面倒すぎるんだよな
途中まで。祝日とか二十四節気の表示は自分でやって。面倒すぎる。 #include "stdafx.h" #include <iostream> #include <string> #include <map> #include <cassert> #define numof(a) (sizeof(a) / sizeof((a)[0])) /** ある年ある月の日 */ class CDay { private: int m_year; int m_month; int m_day; public: CDay(int year, int month, int day) : m_year(year), m_month(month), m_day(day)
{ assert(month >= 1 && month <= 12); assert(year >= 0); } ~CDay() {} /** 曜日 */ std::string GetDayOfWeek() { int nDayOfWeek = (5 * m_year / 4 - m_year / 100 + m_year / 400 + (26 * m_month + 16) / 10 + m_day) % 7; static const char *szDayOfWeek[] = { "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat" }; return szDayOfWeek[nDayOfWeek]; }
/** 節句 */ bool GetSeasonalFestival(std::string& name) { struct SeasonalFestival { int month; int day; char *name; } stSeasonalFestivals[] = { { 1, 7, "Jinjitsu"}, { 3, 3, "Joushi" }, { 5, 5, "Tango" }, { 3, 9, "Chouyou" } }; name = ""; for (int i = 0; i < numof(stSeasonalFestivals); ++i) { if (stSeasonalFestivals[i].month == m_month && stSeasonalFestivals[i].day == m_day) { name = stSeasonalFestivals[i].name; return true; } } return false; }
private: CDay(CDay&); CDay& operator =(CDay&); }; /** ある年ある月のカレンダー */ class CCalender { private: int m_year; int m_month; public: CCalender(int year, int month) : m_year(year), m_month(month) { assert(month >= 1 && month <= 12); assert(year >= 0); } ~CCalender() {} /** カレンダーをコンソールに表示 */ void Show() { ShowTitle(); ShowBody(); }
private:
/** その月の日数
@ref
http://bal4u.dip.jp/algo/daysOfMonth.txt */
int NumOfDay() const
{
static int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (m_month == 2) {
return days[1] + (m_year % 4 == 0 && m_year % 100 != 0 || m_year % 400 == 0);
} else {
return days[m_month-1];
}
}
/** 閏年 */ bool IsLeapYear() const { return (0 == (m_year % 400)) || ((0 != (m_year % 100)) && (0 == (m_year % 4))); } /** タイトルを表示 */ void ShowTitle() const { std::cout << std::endl; std::cout << '\t' << m_year << '/' << m_month << (IsLeapYear() ? " (Leap Year)" : "") << std::endl; std::cout << std::endl; }
/** 日を表示 */ void ShowBody() const { int nNumOfDay = NumOfDay(); for (int i = 1; i <= nNumOfDay; ++i) { CDay day(m_year, m_month, i); std::string strSeasonalFestival; day.GetSeasonalFestival(strSeasonalFestival); std::cout << i << "\t(" << day.GetDayOfWeek() << ")" << "\t" << strSeasonalFestival << std::endl; } } private: CCalender(CCalender&); CCalender& operator =(CCalender&); }; int _tmain(int argc, _TCHAR* argv[]) { CCalender calender(2000, 1); calender.Show(); return 0; }
つかこんなもんをわざわざ作らせるなんて面倒な授業だな…。
ええ、この教授のだす課題はいつもこんな感じで 毎週地獄です
540 :
デフォルトの名無しさん :2007/10/22(月) 13:41:11
1] 授業単元: c++プログラミング [2] 問題文(含コード&リンク): 10個の製品の在庫管理のプログラムを作成しなさい。 全ての製品は初期在庫として、1000個の在庫を持っている。毎日80〜120個ランダムに減っていく。 また、製品によって減っていく量は異なるものとする。 在庫量が300個(発注点)以下になった製品は発注をかけ、その三日後に500個納品される。 終了条件:1000日 単位時間: 日 出力の例: 製品A 前日在庫量 需要量 当日在庫量 320 120 200 200 100 100 100 110 0 ○日に10個欠品しました!! 500個納品されました!! 490 90 400 各製品ごとに上記のように表示されるようにしなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ: bcc [3.3] 言語: C++ [4] 期限:22日19時 [5] その他の制限: できれば、後から簡単に、初期在庫量・発注点・製品数などを変更できるようにしてください。 よろしくお願いします。
いくらなんでも期限ギリギリすぎるだろ
542 :
さとみ :2007/10/23(火) 20:22:42
#include <stdio.h> #include <stdlib.h> struct node{ int data; struct node *next; }; struct node *head; void add_head(int x) { struct node *p; p = (struct node *)malloc(sizeof(struct node)); p->data = x; p->next = head; head = p;} void print_list(struct node *q) { struct node *p; printf("list\n"); for(p = q;p != NULL;p = p->next){ printf("%d\n"p->data);}} main(int argc, char *argv[]) { int i, val, n; head = NULL; n = atoi(argv[1]); for(i = 0;i < n; i++){ scanf("%d",&val); add_head(val);} print_list(head); return(0);} コンパイルしてみた結果二箇所にエラーが発生しました 間違えたどころどうか直してもらえないでしょうか お願いします
保守
545 :
00ち :2007/11/08(木) 16:19:05
[1] 授業単元: [2] 問題文(含コード&リンク):0〜99までランダムで得た値の平均と総計を求めるプログラムですが currentを使い、書き直したいですが教えてください。 #include <stdio.h> #include <time.h> #include <stdlib.h> int main(void) { int rints[30]; int i, sum=0; int j = 0; float avrg; srand((unsigned)time(NULL)); for(j=0; j<1; j++){ printf("\n"); for(i=0; i<30; i++) { rints[i] = rand()%100; printf( " %d ", rints[i] ); sum += rints[i];} printf("\n"); avrg = sum / 10.f; printf( " 総計: %d , 平均: %.2f\n", sum, avrg ); sum = 0; } return 0;} [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限:本日 [5] その他の制限:なし
549 :
デフォルトの名無しさん :2007/11/08(木) 20:09:20
任意の自然数をキーボードから入力し、 素因数分解を行った結果を画面に出力するプログラムを作成すること この問題をお願いします(^^)
>>549 任意と言うことは、グーゴルプレックスも入力できないとダメかしら。
む、難しいなぁ。
551 :
デフォルトの名無しさん :2007/11/08(木) 20:50:11
数字を入力して因数分解するだけでいいです
#include <stdio.h> int main(void) { int i, n; scanf("%d", &n); for(i=2; i<n; ) { if(n%i==0) { printf("%d * ", i); n /= i; } else i++; } printf("%d\n", n); return 0; }
554 :
デフォルトの名無しさん :2007/11/09(金) 00:19:57
11月10日までなので急いでください。お願いします。ちなみに、 for文とif文だけでお願いします(^_^)
555 :
デフォルトの名無しさん :2007/11/09(金) 00:30:39
ありがとうございました。o(^o^)o 本当に助かります。o(^ヮ^)o
>>551 だから、どんな数字?
単に「任意」では巨大な数字も入力できないといけないのか、
それとも1000程度の数字まで出いいのか判らないでしょ。
JavaでいうところのBigIntegerを作れというのか アホか
559 :
デフォルトの名無しさん :2007/11/16(金) 11:56:40
da
560 :
デフォルトの名無しさん :2007/11/16(金) 12:02:00
[1]C言語上級 [2] 入力ファイルフォーマット: source-node destination-node packet-loss-rate a b 0.3 a c 0.1 . z w 0.9 Step1: 二行目からデータを読み込みます.例えば,node a から node bまで のパケット損失率0.3から最後までに読むこと.ノードペア毎のパケット損失率 を記録する. ※ 下記変数が必要 char *node_pair_name[1000]; //ノードペア名を記録する,行ごとは一記録と します.何行があるならば,何個の記録がある.後で使う. double packet_loss_rate[1000];//ノードペア毎に記録する, Step2: 読み込んだデータpacket_loss_rateをJI(double *x, int n)に 渡して,JIを計算します. Step3: JI出力 以上のプログラムを作りなさい [3]C言語 [4]11月18日 このプログラムがわかりません.よろしくお願いします.
561 :
デフォルトの名無しさん :2007/11/16(金) 14:39:57
[1] 授業単元: C [2] 問題文:????を埋めよ [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: 任意 [3.3] 言語: (C [4] 期限:2007 11.16
562 :
デフォルトの名無しさん :2007/11/16(金) 14:43:32
#include <stdio.h> #include <stdlib.h> #define NMAX 20 /* リストの構成要素となる構造体 node_tag */ struct node_tag { int num; char name[NMAX]; ??????? /* 自己参照:次のデータへのポインタ next */ }; int main(void) { /* 12の要素をもつ構造体配列の定義 */ struct node_tag Month[12] = { {1, "January", NULL}, {2, "February", NULL}, {3, "March", NULL} }; struct node_tag *p; /* ポインタ p */ ??????? p=&Month[0]; while (p!=NULL){ printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */ p=??????? /* p を p の next とする */ } return 0; }
563 :
デフォルトの名無しさん :2007/11/16(金) 14:44:58
#include <stdio.h> #include <stdlib.h> #define MAX 20 #define MMAX 100 struct node_tag { int num; char name[NMAX]; ??????? /* 自己参照:次のデータへのポインタ */ }; int main(void) { struct node_tag Meibo[MMAX]; /* 構造体配列の定義 */ int n=0; /* 配列の番号を格納する整数 n,初期値は 0 */ struct node_tag *head, *p; /* リストの先頭を指すポインタ head,新しく追加するノードを指すポインタ p */ head=NULL; while ( scanf("%s", ???????) != EOF ){ Meibo[n].next=???????; /* 新しく追加するノード(Meibo[n]) の next が指すものは? */ head=???????; ???????=n++; /* Meibo[n] の num に配列番号を格納する整数を入れる */ } p=head; while (p!=NULL){ printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */ p=???????; /* p を p の next とする */ } return 0; } 以上の二つです 見づらいですが解答おねがいします
????なんて無くね?
565 :
デフォルトの名無しさん :2007/11/16(金) 19:47:55
?の個数が違うのはスルーで^^;
s/\?/梅/g
567 :
デフォルトの名無しさん :2007/11/16(金) 21:21:42
[1] 授業単元:プログラミング、関数基礎 [2] 問題文(含コード&リンク): メイン関数において、2つの放物線 y=ax2+bx+c y=px2+qx+r の係数a、b、c、p、q、rをキーボードから入力し、その数値を関数に引数として渡す。 関数はその数値を用いて2曲線の交点の有無を調べ、その交点の個数を戻り値とし てメイン関数に渡す(交点が無い場合は0、交点が1つの場合は1、交点が2つの場 合は2、交点が無限に存在する場合はー1を戻り値にする)。また関数は、もし交点が 有限個存在するならばそれらの交点の座標値をメイン関数に渡す。メイン関数は関数 から得たこれらの情報を得て、交点の個数を画面に表示し、さらにもし交点が有限個 存在するならばそれらの座標値を画面に表示する。そのようなプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限: 2007年11月19日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) C言語の基礎しか習っていません。 どなたかよろしくお願いします。
568 :
デフォルトの名無しさん :2007/11/17(土) 02:24:01
[1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): @ 3×10の2次元配列を用意する。 A キーボードから任意の文字列を3つ入力し、配列に入れる。 B その入力データーから文字tがあるかどうかを判定し、見つけた場合、下図のように その2次元配列の場所をすべて画面に表示し、見つけた個数も表示する。 入力データ;Computer、Data、Internet 図 [0]行目の文字列を入力_>Computer [1]行目の文字列を入力_>Data [2]行目の文字列を入力_>Internet [0]行目[5]列目に文字tを発見 [1]行目[2]列目に文字tを発見 [2]行目[2]列目に文字tを発見 [2]行目[7]列目に文字tを発見 文字tを全部で4文字見つけました [3.1] OS: Windows [3.2] コンパイラ名とバージョン: 指定なし [3.3] 言語: C [4] 期限: 2007年11月19日 [5] その他の制限: 特にありません。お手数ですがよろしくお願いします。
569 :
デフォルトの名無しさん :2007/11/17(土) 02:25:23
1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): @ 3×10の2次元配列を用意する。 A キーボードから任意の文字列を3つ入力し、配列に入れる。 B その入力データーから文字tがあるかどうかを判定し、見つけた場合、下図のように その2次元配列の場所をすべて画面に表示し、見つけた個数も表示する。 入力データ;Computer、Data、Internet [0]行目の文字列を入力_>Computer [1]行目の文字列を入力_>Data [2]行目の文字列を入力_>Internet [0]行目[5]列目に文字tを発見 [1]行目[2]列目に文字tを発見 [2]行目[2]列目に文字tを発見 [2]行目[7]列目に文字tを発見 文字tを全部で4文字見つけました [3.1] OS: Windows [3.2] コンパイラ名とバージョン: 指定なし [3.3] 言語: C [4] 期限: 2007年11月19日 [5] その他の制限: 特にありません。お手数ですがよろしくお願いします。
570 :
デフォルトの名無しさん :2007/11/17(土) 02:44:53
>>569 static char inputbuf[REPEAT][BUFSIZE];
int
main(void)
{
char *p = NULL;
int nfound = 0, i;
for (i = 0; i < REPEAT; i++) {
printf("[%d]行目の文字列を入力_>", i);
if (fgets(inputbuf[i], BUFSIZE, stdin) == NULL) {
perror("fgets");
exit(1);
}
}
for (i = 0; i < REPEAT; i++) {
p = inputbuf[i];
while ((p = strchr(p, CHAR)) != NULL) {
printf("[%d]行目[%d]列目に文字%cを発見\n", i+1, p-inputbuf[i]+1, CHAR);
nfound++;
p++;
}
}
printf("文字%cを全部で%d文字見つけました\n", CHAR, nfound);
return 0;
}
571 :
デフォルトの名無しさん :2007/11/17(土) 03:02:59
>>569 >>570 がコンパイルできなかったら、ソースの先頭に以下の行を追加シル。
それと多重投稿は、ヤメレ。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#define REPEAT 3
#define BUFSIZE 10
#define CHAR 't'
572 :
デフォルトの名無しさん :2007/11/17(土) 03:25:36
多重投稿すみません。図のところのずれが少し気になりましたので。
573 :
デフォルトの名無しさん :2007/11/17(土) 03:26:38
あと助けてもらってありがとうございます。
ここのスレってもうひとつの宿題のスレとどうちがうの?
[1] 授業単元:統計学
[2] 問題文:
対数の足し算をするプログラムをつくれ。ただし計算
で用いるのはlog(x)=-1.966113,log(y)=-103.23,log(z)=-80.98,log(w)=0を用いよ。
(1)log(X+Y)
(2)log(X+Y+Z)
(3)log(W+X+Y+Z)
x=0.14 x=0.000000000000000000422
y=0.000000000000000023134 w=1ですが、w,x,y,z,を足してlogかけた値が
(4)になります。
しかしこの問題ではlogの値をexpかけずに計算せよ。
対数の足し算は以下を用いよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5273.txt [3] 環境
[3.1] OS: LINUX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11月17日24時
[5] その他の制限:
お願いします。
それぞれ分けてつくってほしいんですが。
576 :
デフォルトの名無しさん :2007/11/17(土) 19:16:23
神経衰弱を行うゲームを作成すること。 ただし、カードは52枚全て使用し、絵柄の 区別は無いものとする。 このプログラムをお願いします。(^o^) 期限は、11月18日までです。
577 :
デフォルトの名無しさん :2007/11/17(土) 23:14:10
ぼるじょあいないのかーい?
(・3・) エェー 忙しいか酔っ払ってるかだお
575 ですけどもうOKです。 小数点とlogの関係をみてみたら logの2くらいの差でもかなり大小ありました。
580 :
デフォルトの名無しさん :2007/11/18(日) 16:06:09
C言語ではなく、Fortranなんですが宿題教えてくれませんか。 ・xとyの2つの数値の約数と最小公倍数、最大公約数を求めなさい。
>>574 投稿が少ないから比較的スルーされにくいが、
能力が低いので難しい問題は解けない
>>580 Fortranつっても77と90じゃ違いすぎるんでどのFortranかハッキリしてもらえますか?
あと期限と、xとyはキーボードから入力するのか、コードに直接書き込むのかその辺の所も
ハッキリ書いて貰えますかね?
584 :
デフォルトの名無しさん :2007/11/18(日) 21:01:50
576ですけど、カードは54枚です。 期限は、明日までです。
詳細な説明が全く無いし、テンプレに従ってないからできません
>>584 おお、期限が迫ってきて、じょじょに小出しの情報が揃ってきたな。
もう少し待てば、重要な情報が得られるかもな。
587 :
デフォルトの名無しさん :2007/11/18(日) 21:17:49
580ですが、f77でコンパイルしているので、たぶん77だと思います。 unix環境で、端末エミュレータからmuleを起動して、xとyをキーボードから 入力していますが、参考になりますでしょうか・・・
590 :
デフォルトの名無しさん :2007/11/19(月) 05:23:33
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):1次元変数c[2]を関数polyに送り、 c[0]x^2+c[1]x+c[2]=0の二つの解(実部と虚部:xre[2],xim[2])を polyから受け取って、2つの解を表示するプログラム (引数は、c,xre,ximとなる) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: [2007年11月19日14:30まで] [5] その他の制限:なし 期限は短いですが、よろしくお願いします
593 :
デフォルトの名無しさん :2007/11/19(月) 14:48:36
>>592 ありがとうございました
すごい助かりました
[1] 授業単元:C言語 [2] 問題文 ある打撃点から目標に向かってまと狙いを行い、命中させるプログラム。 打撃点から目標点までの距離、障害までの距離 障害の幅と高さ、および風速を初期設定条件とし、 ゲームをする時は距離と風速のみ表示 打撃点からの玉の発射角(θ)初速度(Vo)を設定すると到達距離を計算し 目標点との差を表示するプログラム 障害物に当たると失敗と表示させる。 目標点より手前に落ちても失敗と表示。 目標点からの玉の距離を表示させる。 [3] 環境 [3.1] OS: XP VISTA [3.2] コンパイラ名とバージョン: BCC [3.3] 言語: C [4] 期限: 11/21 〜9:30 [5] その他の制限: 特になし
XP VISTAって何?
xpとvista両方可能です、と
>>597 (・3・) エェー 6 の部分しか変更しちゃダメなら無理だYO!
gets について調べてみるといいYO!
599 :
597 :2007/11/20(火) 19:30:36
>>598 6の部分しか変更しちゃいけないのは問2です。
問3はfgets使用OKです。
おねがいしますペコシ
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { char buff[1002]; char *data[10000]; int kosu, i, j; kosu = 0; while(fgets(buff, sizeof(buff), stdin) != NULL) { if(strlen(buff) > 1000){ puts("入力が1000バイトを超えています"); for (i=0; i<kosu; i++)free(data[i]); return 0; } else if(kosu >= 10000){ puts("入力は10000個までです"); for (i=0; i<kosu; i++)free(data[i]); return 0; } data[kosu] = (char *) malloc( strlen(buff)+1 ); strcpy(data[kosu], buff); kosu = kosu + 1; }
/* ソート */ for(i=0; i<kosu-1; i++){ for(j=i; j<kosu-1; j++){ if(strcmp(data[i], data[j+1]) > 0){ char *swap; swap = data[i]; data[i] = data[j+1]; data[j+1] = swap; } } } for (i=0; i<kosu; i++) free(data[i]); return 0; }
>>600 ,601
凄い助かりました!
ありがとうございます。
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 今a.txt,b.txt,c.txt,d.txt,e.txtというファイルがある。(これらのファイルを<1>) それぞれのファイルには「a」「b」「c」「d」「e」とかかれている。 また,A.txt,B.txt,C.txt,D.txt,E.txtというファイルがある(これらのファイルを<2>) それぞれのファイルには「A」「B」「C」「D」「E」とかかれている。 <1>のファイルと<2>のファイルを読み込んでその中身を aA aB aC aD aE bA bB という風に表示せよ。つまり25行になります。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限:2007/11/22 24:00まで [5] その他の制限:fscanfで読み込んでほしいんですが まあ自分が作りたいのは5個のファイルと別の5個のファイルを 最初の5個のうちの1つのファイルに対して別の5個のファイルをつかって5つの 値を出すみたいな。で25個の値が出したいんです。
>>603 (・3・) エェー これでいいのかYO!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NELEMS(arr) (sizeof(arr)/sizeof(arr[0]))
char **get_list(char *fname_list[], int fname_num){
int i;
char **ret, buf[100+1];
FILE *fp;
ret=malloc(sizeof(*ret)*fname_num);
for(i=0;i<fname_num;i++){
fp=fopen(fname_list[i], "r");
if(fp==NULL || fscanf(fp, "%100s", buf)!=1){fclose(fp);free(ret);return NULL;}
ret[i]=strdup(buf);
fclose(fp);
}
return ret;
}
int main(void){
char *one[]={"a.txt", "b.txt", "c.txt", "d.txt", "e.txt"};
char *two[]={"A.txt", "B.txt", "C.txt", "D.txt", "E.txt"};
char **buf_one, **buf_two;
int i, j;
buf_one=get_list(one, NELEMS(one));
buf_two=get_list(two, NELEMS(two));
if(buf_one==NULL || buf_two==NULL) return 1;
for(i=0;i<NELEMS(one);i++)
for(j=0;j<NELEMS(two);j++)
printf("%s%s\n", buf_one[i], buf_two[j]);
return 0;
}
>>603 a.txt と A.txt が私のPCでは作れなかったんだけどやってみました。
意図は不明ですが仕様はこれで満たしているはず
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *fname[2][5] = {
{"a.txt","b.txt","c.txt","d.txt","e.txt"},
{"1.txt","2.txt","3.txt","4.txt","5.txt"}, };
FILE *fp;
char ch[2];
int cnt = 0, idx = 0;
for (cnt=0; cnt<sizeof(fname[0])/sizeof(fname[0][0]); ++cnt)
{
for (idx=0; idx<sizeof(fname)/sizeof(fname[0]); ++idx)
{
if ((fp = fopen(fname[idx][cnt], "r")) == NULL) exit(1);
fscanf(fp, "%c", &ch[idx]);
fclose(fp);
}
printf("%c%c\n",ch[0], ch[1]);
}
return 0;
}
606 :
605 :2007/11/22(木) 02:51:19
被ったしよくみたら全然違いました。すみませんでしたm(_ _)m
>604 ありがとう
609 :
デフォルトの名無しさん :2007/11/24(土) 07:42:36
ほかで質問しましたが解答がないので、まじでお願いします!! [1] 授業単元: システム解析 [2] 問題文(含コード&リンク):2変数非線形連立方程式の解を求めるnewton-rapson法のプログラムを作成し以下の問題を解け @x^2+y^2-8=0 と x+y=0 で初期点(x(x0),y(y0))∈[-4,-4]×[4,4]を10000個とり、初期点に対する収束値の関係を2次元で図示する。 収束値の関係の座標を出すこと。 Ax^3-3xy^2-8=0 と x^3-3x^2y=0 で初期点(x(x0),y(y0))∈[-1/2,-1/2]×[1/2,1/2]を10000個以上(百万個程度を推奨する)とり、初期点に対する収束値の関係を2次元で図示する。 収束値の関係の座標を出すこと。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: ([2007年11月25日23:00まで] [5]その他:^は累乗を示します。たとえば、x*x=x^2です。 2問ありますが、一問だけでもといていただけると助かります。2変数ということで手も足もでません、、、 よろしくお願いします。
610 :
デフォルトの名無しさん :2007/11/24(土) 15:47:30
[1] 授業単元: プログラミング演習 [2] 問題文 CD−Rは1枚〜10枚で1枚が100円、11枚から100枚で1枚が90円、101枚以上で1枚が70円とする。枚数nに対する金額を計算するプログラムを作成しなさい。終了時にはCtrl+Z(Enter)と入力する [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限: 11/30 [5] その他の制限: 特になしです。お願いします。
>>610 #include <stdio.h>
#include <conio.h>
int main(void)
{
int num, price;
printf("CDの購入枚数を入力してください->");
scanf("%d", &num);
if(num < 0) return 1;
else if(num < 11) price = num * 100;
else if(num < 101) price = num * 90;
else price = num * 70;
printf("合計金額は %d 円です。\n", price);
_getch();
return 0;
}
>>610 これ、10枚買うときは 11 枚買って一枚捨てるとか、
79枚買うときは 101枚買って 22枚捨てるとかやるの?
613 :
612 :2007/11/24(土) 20:55:23
>>610 ということで作ってみた
#include <stdio.h>
int main(void){
int price[]={100,90,70,-1};
int number[]={1,11,101,-1};
int i,ret,pr,minpr,num,index,sute,s;
for(;;){
ret=scanf("%d",&num);
if(ret==EOF){break;}
if(ret!=1){scanf("%*c");fprintf(stderr,"入力エラー\n");continue;}
for(i=0;number[i]!=-1;i++){
if(num>number[i]){pr=num*price[i];s=0;}
else{pr=number[i]*price[i];s=number[i]-num;}
if(i==0 || pr < minpr){index=i;minpr=pr;sute=s;}
}
if(sute==0){printf("%d 円\n",minpr);}
else{printf("%d 円で %d 枚買って、 %d 枚捨てて下さい\n",minpr,number[index],sute);}
}
}
614 :
デフォルトの名無しさん :2007/11/24(土) 21:53:13
615 :
デフォルトの名無しさん :2007/12/01(土) 13:07:17
1] 授業単元:プログラミング言語 [2] 問題文 キーボードから実数を5個入力し、その入力データのうち3つのデータから実数の 平均値を求める。 求める平均は最初のデータから3個分、次のデータから3個分および3番目の データから3個分の計3種類とする。 平均をするプログラムは関数化すること引数で値を渡すようにすること。 入力データ 1、1 1、2 1、3 1、4 1、5 [3] 環境 [3.1] OS: windows xp [3.2] コンパイラ名とバージョン: 特に指定なし [3.3] 言語: C [4] 期限: 12月3日 18時 [5] その他の制限: 特になし
>>615 #include <stdio.h>
double average(double a, double b, double c){
return (a + b + c)/3.0;
}
int main(void){
double input[5];
int i;
for(i=0; i<5; i++){
printf("%dつ目->", i+1);
scanf("%lf", &input[i]);
}
for(i=0; i<3; i++)printf("%d-%d:%f\n", i+1, i+3, average(input[i],input[i+1],input[i+2]));
return 0;
}
617 :
デフォルトの名無しさん :2007/12/01(土) 18:38:10
615ですが、ありがとうございます。
618 :
デフォルトの名無しさん :2007/12/02(日) 03:35:37
あげ
■最近流行りのSM系サイトを知っていますか?
それは「SMプレイをすること」を最終目的とした人達が集まる出会い系サイトのことです。
普通の出会い系サイトと一味違った、熱い出会いが全国各地で繰り広げられています。
《ブログ SM系サイトが会える訳》
http://smsite.blog123.fc2.com/ ブログでは管理人一押しのSM系サイトを紹介しています。
是非ご利用下さい。
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):西暦y年m日d日の前の日と次の日の日付を求めてセットする関数 Lv1:大小の月はなし(各月の日数は30日、閏年なし(一年は360日) Lv2:大小の月あり(30日の月と31日の月を考慮する。 Lv3:大小の月あり(30日の月と31日の月を考慮する。)閏年あり [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名:gcc [3.3] 言語: C [4] 期限: 12月6日 [5] その他の制限: ポインタまで習ってます。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 数字を十五個入力し、その中から五番目に大きい数値を求める [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio.NET [3.3] 言語:C [4] 期限:12月2日 24:00] [5] その他の制限: forとifを使ったものでお願いします
>>620 (・3・) エェー プロトタイプ宣言希望
y,m,dの3つを引数で受けるのはわかるけど
前の日と次の日の格納をどうするのか不明だYO
まさか引数9個ですKA?
>>621 #include <stdio.h>
int main(void){
int input[15], i, k;
for(i=0; i<15; i++)scanf("%d", &input[i]);
for(i=0; i<5; i++){
for(k=i+1; k<15; k++){
if(input[i] < input[k]){
int swap = input[i];
input[i] = input[k];
input[k] = swap;
}
}
}
printf("五番目に大きい数値:%d\n", input[48]);
return 0;
}
(・3・) エェー 並べ替えて5番目見てるだけだがYO
もしかして、 例えば9 9 9 9 9 9 9 9 9 9 8 7 6 5 4って入力されたら
答えは5になる?
ちょ、48w
626 :
620 :2007/12/02(日) 16:02:28
>>622 void yesterday(int*y,int*m,int*d){/* */}
void tomorrow(int*y,int*m,intd){/* */}
プログラミング苦手なのでよくわからないですが
こうかかれてました。
void yesterday(int*y,int*m,int*d) { struct tm tmp = {0, 0, 0, *d - 1, *m - 1, *y}; mktime(& tmp); *y = tmp.tm_year; *m = tmp.tm_mon + 1; *d = tmp.tm_mday; } void tomorrow(int*y,int*m,intd) { struct tm tmp = {0, 0, 0, *d + 1, *m - 1, *y}; mktime(& tmp); *y = tmp.tm_year; *m = tmp.tm_mon + 1; *d = tmp.tm_mday; }
628 :
デフォルトの名無しさん :2007/12/02(日) 18:52:38
631 :
628 :2007/12/02(日) 23:45:11
なんとか自力でできました。 homoじょあさん レスしてくれてありがとうございます。
(・3・) アルェー そりはよかったですYO
635 :
629 :2007/12/03(月) 01:03:25
>>634 あざっす。と言いたいけどレベルたけえw
これ提出したら絶対怪しまれる
でも制限なしとか書いちゃったの自分なんで
あとは自力でがんばります
636 :
デフォルトの名無しさん :2007/12/05(水) 10:51:31
[1] 授業単元:C言語 [2] 問題文 まず、次のメンバを持つ構造体をtypedef宣言を使用し、data型として準備しなさい。 ただし、typedef宣言において構造体タグ名は省略しなさい。 char型の配列変数id(配列サイズ:8)、int型の変数n main関数では、このdata型の変数personを宣言し、そのメンバidを 012345、nを25として初期化する。 続いて、実行結果に示すように「学籍番号・・・の現在の得点:」とともにpersonのメンバidとnを表示した後、personをadd_num関数に渡す。 さらにadd_num関数から戻る値をpersonに格納し、「学籍番号・・・の総合得点:」とともにpersonのメンバidとnを表示するプログラムを作成しなさい。 ただし、add_num関数は、data型の構造体person2に受取った内容を格納し、「今回の得点は60点満点で何点ですか?」の質問とともにキーボードによりint型変数cに得点を入力した後、person2のメンバnにcの値を加算し、person2の内容を返すように作成しなさい。 [3] 環境 [3.1] OS: Windows XP [3.2] visual studio 2005 [3.3] 言語: C [4] 期限: 12月6日9:30 実行結果例 学籍番号012345の現在の得点:25 今回の得点は60点満点で何点ですか? 45 学籍番号012345の総合得点:70 よろしくお願いします
637 :
デフォルトの名無しさん :2007/12/05(水) 10:54:34
[1] 授業単元:C言語 [2] 問題文 まず、次のメンバを持つ構造体をtypedef宣言を使用し、data型として準備しなさい。 ただし、typedef宣言において構造体タグ名は省略しなさい。 char型の配列変数id(配列サイズ:8)、int型の変数n main関数では、このdata型の配列変数personを配列サイズ5で宣言する。 続いて、person[0]、person[1]、person[3]、person[3]、person[5]の順にこれらの内容を一つずつadd_num関数に渡し、その都度add_num関数から戻る内容をperson[0]、person[2]・・・に格納する。 その後、5つのperson[i]のメンバidとnを「学籍番号・・・の得点」として表示するプログラムを作成しなさい。 ただし、add_num関数は、data型の構造体person2に受取った内容を格納し、「学籍番号7桁を入力してください。」の質問とともにキーボードによりperson2のメンバidに学籍番号を入力、 また、「今回の得点は何点ですか?」の質問とともにキーボードによりperson2のメンバnに得点を入力し、person2の内容を返すように作成しなさい。 [3] 環境 [3.1] OS: Windows XP [3.2] visual studio 2005 [3.3] 言語: C [4] 期限: 12月6日9:30 実行結果例 学籍番号7桁を入力してください。 0123456 今回の得点は何点ですか? 70 学籍番号7桁を入力してください。 0124680 今回の得点は何点ですか? 80 学籍番号0123456の得点:70 学籍番号0124680の得点:80 よろしくお願いします
638 :
デフォルトの名無しさん :2007/12/05(水) 18:11:43
[1] 授業単元:C言語 [2] 問題文 int型の値を変数bで受け取り、次の演算を行ってbの値を返すadd_num関数を作成しなさい。 [add_num関数内の処理] 「今回の得点は60点満点で何点ですか?」と画面表示した後、キーボードからint型変数cに値を入力する。 続いて、変数bにcの値を加算し、bの値を返す。 次に、main関数でint型変数nを値25で初期化し、nの値を「現在の得点:」とともに表示した後、add_num関数にnの値を渡す。そしてadd_num関数が返した値を再び変数nに格納し、nの値を「総合得点:」とともに右のように表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS: Windows XP [3.2] visual studio 2005 [3.3] 言語: C [4] 期限: 12月6日9:30 実行結果例 現在の得点:25 今回の得点は60点満点で何点ですか? (48) 総合得点:73 ()はキーボード入力
639 :
デフォルトの名無しさん :2007/12/05(水) 18:15:09
[1] 授業単元:C言語 [2] 問題文 まず、次のメンバを持つ構造体をtypedef宣言を使用し、data型として準備しなさい。 ただし、typedef宣言において構造体タグ名は省略しなさい。 char型の配列変数id(配列サイズ:8)、int型の変数n main関数では、このdata型の変数personを宣言し、そのメンバidを 012345、nを25として初期化する。 続いて、実行結果に示すように「学籍番号・・・の現在の得点:」とともにpersonのメンバidとnを表示した後、personのメンバnのみの値をadd_num関数に渡す。 さらにadd_num関数から戻る値をpersonのメンバnに格納し、「学籍番号・・・の総合得点:」とともにpersonのメンバidとnを右のように表示するプログラムを作成しなさい。 ただし、add_num関数は、int型の変数bに受取った値を格納し、「今回の得点は60点満点で何点ですか?」の質問とともにキーボードによりint型変数cに得点を入力した後、変数bにcの値を加算し、bの値を返すように作成しなさい。 [3] 環境 [3.1] OS: Windows XP [3.2] visual studio 2005 [3.3] 言語: C [4] 期限: 12月6日9:30 実行結果例 学籍番号012345の現在の得点:25 今回の得点は60点満点で何点ですか? (45) 学籍番号012345の総合得点:70 ()はキーボード入力 よろしくお願いします
640 :
デフォルトの名無しさん :2007/12/08(土) 13:48:01
1] プログラミング基礎 [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]期限 月曜日18:00 [5] よろしくお願いします。
641 :
デフォルトの名無しさん :2007/12/08(土) 14:33:50
[1] 授業単元: コンピュータープログラミング [2] 問題文 1日目はn円、2日目はn*2円、と前日の倍額を貯金したら何日で1000万円を超えるか?貯金の合計金額は?を計算するプログラムを作成しなさい。ただし、利子は考えないものとする。 [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限: 12/14 [5] その他の制限: 可能ならホワイル文使用でお願いします。
643 :
デフォルトの名無しさん :2007/12/10(月) 20:44:24
[1] 授業単元: C++ [2] 問題文:以下のような、クラスphdataを作成せよ ・身長(cm)と体重(kg)を格納する変数をもつ ・コンストラクタで、各変数に値を格納させる ・オブジェクトを浮動小数点数に変換した際には、BMI値を返すようにする そしてmain()関数で、簡単な動作確認を行うこと。 ※BMI = 体重(kg) / [身長(m)×身長(m)] [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限: 12/20 [5] その他の制限: なし
644 :
デフォルトの名無しさん :2007/12/10(月) 21:38:24
内容: [1] 授業単元:c++基礎 [2] 問題文 1: 1000以下の素数をかぞえるプログラムを作り そのプログラムについて実行時間をTIME、timeのそれぞれ方法で測定しなさい。 ただし、TIME、timeの精度はそれぞれ1桁、2桁とする。また、そのプログラムをコンパイルしたコマンドを用い、 サンプルプログラムに手を加えてはいけない。つまり、この評価ではプログラムをメモリに読み込む時間も含まれる。 2つの方法の実行時間を比較し、どちらが早いか答えよ 2:second.exeの応答時間を測定せよ。なお、有効数字は2桁とする 3:起動時間を有効数字2桁まで測定するプログラムを作り、1で作ったプログラムの一部(外側のfor文全体)の起動時間を測定せよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Visual Studio 2003 [3.3] 言語:C++ [4] 期限:[2007年12月12日23:59まで]
>>643 #include <iostream>
using namespace std;
class phdata{
private:
double height, weight;
public:
phdata(double height, double weight);
operator double();
};
phdata::phdata(double height, double weight){
this->height = height;
this->weight = weight;
}
phdata::operator double(){
return weight*10000/(height*height);
}
int main(){
phdata data(172.5, 75.4);
cout << "BMI:" << (double)data << endl;
return 0;
}
(・3・) エェー TIMEとtimeって知らないYO サンプルてなんだYO
647 :
664 :2007/12/11(火) 00:16:39
すいません・・ いろいろとぬけてました TIME=TIMEコマンド time=time関数 サンプルプログラム=1000以下の素数を数えるプログラムです 申し訳ございません
648 :
664 :2007/12/11(火) 01:31:02
すいません・・あとひとつ second.exeってのは @echo off second.exe FOR /L %%I IN (1,1,10000) DO A.exe >NUL second.exe PAUSE
649 :
デフォルトの名無しさん :2007/12/11(火) 07:56:25
650 :
デフォルトの名無しさん :2007/12/11(火) 16:31:53
符号無し整数を左右にシフトした値が、2のべき乗での乗算や除算と等しくなることを確認するプログラムを作成せよ 誰か助けて
hoge1 = x >> 1; hoge2 = x << 1; hoge3 = x * 2; hoge4 = x / 2; hoge1から4をprintfで確認してみてはどうだろう。 xはunsigned int型変数で値は適当で構わない。
>>650 たまたまサンプルしたものが一致するだけじゃ「確認」って言わないんだろうな。
やっぱ0から計算できる限界までシフトと乗算、除算が一致することを
全部調べるんだろうね。
#include <stdio.h>
#include <limits.h>
int main(void){
unsigned int i=0;
while(1){
if((i<<1)!=(i*2)){
printf("%uで乗算と左シフトが異なる。\n",i);
break;
}
if((i
>>1 )!=(i/2)){
printf("%uで除算と右シフトが異なる。\n",i);
break;
}
if(i==UINT_MAX){
printf("%uまで同じだと確認した。\n",i);
break;
}
++i;
}
return 0;
}
655 :
デフォルトの名無しさん :2007/12/13(木) 13:31:45
[1] 授業単元:C [2] 問題文):@「ファイル名を受け取って,ファイルが読み込みモードでオープンできれば1を返し,オープンできなければ0を返す」関数 FileExist を作成する. コマンドラインから入力されたファイルの存在を,関数 FileExist を利用して確認する. ファイルが存在すればファイルの中身をそのまま表示するプログラムを完成しなさい. A以下のプログラムをもとにして,次の仕様を満たすプログラムを完成しなさい. コマンドラインからファイル名を受け取って,読取りモードでオープンすることによりそのファイルの存在を確認する. シークする位置とシークするバイト数を受け取って,その位置の文字のASCIIコード(10 進数)を表示する. [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: 任意 [3.3] 言語: C [4] 期限: 2007年12月d14日16:00まで [5] その他の制限: 特になし
656 :
デフォルトの名無しさん :2007/12/13(木) 13:33:59
#include <stdio.h> #include <stdlib.h> ??????? /* FileExist 関数の定義 */ int main(???????){ FILE *fp; int ch; if (???????){ printf("There is no FILE NAME. \n"); exit(1);} if (???????) { /* FileExistを利用 */ fp = ??????? while(???????){ putchar(ch);} ??????? }else { printf("FILE OPEN error. \n");} return 0; } ??????? { FILE *fp; if (???????) { return 0; } ??????? return 1; }
657 :
デフォルトの名無しさん :2007/12/13(木) 13:35:28
#include <stdio.h> #include <stdlib.h> int main(???????){ FILE *fp; long pos; int i,j; if (???????) { printf("USAGE: %s \n", ???????); exit(1);} if (???????){ printf("FILE OPEN error: %s \n", ???????); exit(1); }else { printf("Input seek NO. :"); scanf("%ld", &pos); printf("Input seek BYTES:"); scanf("%d", &j); for (i=0; i < j; i++){ if (???????){ printf("seek ERROR. "); exit(1);} printf("%d byte: %d \n", i, ???????);} ??????? /* ファイルのクローズ */ }return 0; }
658 :
デフォルトの名無しさん :2007/12/13(木) 13:36:21
655,656,657の回答お願いします
660 :
デフォルトの名無しさん :2007/12/13(木) 16:09:14
659の人回答サンクス!
661 :
いときん :2007/12/14(金) 16:09:12
662 :
いときん :2007/12/14(金) 20:36:53
上の補足です。 プログラミングのここをこうしたらもっとうまくいくよ、とかあったら、 訂正もよろしくおねがいします。 もうすこしかえられるとおもうので..
663 :
デフォルトの名無しさん :2007/12/15(土) 09:10:16
661,662です。 解決しました。 ありがとうございました。
664 :
デフォルトの名無しさん :2007/12/15(土) 14:54:18
[1] 授業単元:プログラミング [2] 問題文:n個の数データをキーボードから入力し、最大値と最小値を求めるプログラムを作成しなさい [3.1] WindowsXP [3.2] コンパイラ名とバージョン: fujitu workbench v4.0L10 [3.3] 言語: C C++ [4] 期限: 12/21 [5] その他の制限:なし
665 :
デフォルトの名無しさん :2007/12/15(土) 19:05:41
プログラミング基礎 [2]• ファイルから数値データを読み込み,その数値の平均をファイルに書き込むプログラ ムを作成する • 数値データは全部で100行(ファイルには実際に100 行以上存在している) ファイル名: kadai.datとする • 平均を書き込むファイル名はheikin.dat とする.平均はすべてのデータ(600個)の平 均とする [3] 環境 [3.1] Windows [3.2] コマンドプロンプト 秀丸 [3.3]C [4] 12月17日18時 [5]665のファイルを埋める形式です。よろしくお願いします
666 :
デフォルトの名無しさん :2007/12/15(土) 19:09:06
すみません665のファイルです include "stdio.h" /* file_read 関数は【】内を記述する */ double file_read( void ) { 【 】 int i, j; double data[600]; double heikin; 【 】 for( i=0 ; i<600 ; i+=6 ) { for( j=0 ; j<6 ; j++ ) 【 】 } for( i=0, heikin=0.0 ; i<600 ; i++ ) { heikin += data[i]; } heikin /= 600.0; printf("heikin -> %lf\n",heikin); 【 】 return heikin; } /* file_write 関数の中身を全部記述すること */ void file_write( double heikin ) { /* ここの中身を記述する */ }
>>664 #include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> data;
while(true){
int num;
cout << "数値を入力:";
cin >> num;
if(num < 0)break;
data.push_back(num);
}
sort(data.begin(), data.end());
cout << "最大:" << data[data.size()-1] << endl;
cout << "最小:" << data[0] << endl;
}
>>665 (・3・) エェー 結局100行なのか600行なのかわからんぜYO
サンプルの読み込みファイルはないかYO
あと、ソース内によくわからない2重ループがあるんだけど説明ないかNA?
>>669 (・3・) エェー 構造体の定義どこだお?
>>671 struct sdate{
int year;
int month;
int day;
};
673 :
デフォルトの名無しさん :2007/12/17(月) 15:46:26
[1] 授業単元:C [2] 問題文: 問@以下のプログラムをもとにして,標準入力から受け取った文字を 「2進数表示したもの」と「その補数」を表示するプログラムを作成しなさい. ビット演算子を用いてプログラムを作成すること. 問A以下のプログラムをもとに,標準入力から0以上の整数を 1 つ受け取り (scanf を用いて整数を符号無し整数型 unsigned 型の変数に読み込む), 8で割った余りを計算するプログラムを作りなさい. ビット演算子を用いてプログラムを作成すること. [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:任意 [3.3] 言語: C [4] 期限: ([2007年12月19日15:00まで] [5] その他の制限:特になし
674 :
デフォルトの名無しさん :2007/12/17(月) 15:47:11
問@ #include <stdio.h> #include <stdlib.h> void printBinary(char); int main(void) { char ch; printf("Input character: "); scanf("%c", &ch); printBinary(???????); printBinary(???????); return 0; } void printBinary(char x) { int i; for (i= ???????; ???????; i--) { ??????? } putchar('\n'); }
675 :
デフォルトの名無しさん :2007/12/17(月) 15:49:48
問A #include <stdio.h> #include <stdlib.h> void printBinary2(unsigned); int shou8(unsigned);int main(void) { unsigned n; printf("Input non-negative integer: "); scanf("%d", &n); printBinary2(???????); printBinary2(???????); printf("%d %% 8 = %d", n, shou8(n)); return 0; }void printBinary2(unsigned x){ int i; for (i = ???????; ???????; i--) { ???????} putchar('\n');} int shou8(unsigned x) {int i, j=1, sum=0; for (i = ???????; ???????; i++) { if( ??????? ){ ??????? } j *= 2; }return(sum);}
676 :
デフォルトの名無しさん :2007/12/17(月) 15:50:32
673 674 675です 回答お願いします
>>672 (・3・) エェー 関数だけ作ってみた
int preceedp(struct sdate d1, struct sdate d2){
if(d1.year < d2.year){
return 1;
}else if(d1.year == d2.year){
if(d1.month < d2.month){
return 1;
}else if(d1.month == d2.month){
if(d1.day < d2.day){
return 1;
}
}
}
return 0;
}
int succeedp(struct sdate d1, struct sdate d2){
return preceedp(d2, d1);
}
int samedayp(struct sdate d1, struct sdate d2){
if(d1.year == d2.year && d1.month == d2.month && d1.day == d2.day)return 1;
return 0;
}
int compdate(struct sdate d1, struct sdate d2){
if(samedayp(d1, d2))return 0;
if(preceedp(d1, d2))return 1;
return -1;
}
>>673 void printBinary(char x){
int i;
for(i=8; i>0; i--){
(128 & x) ? putchar('1') : putchar('0');
x = x << 1;
}
putchar('\n');
}
(・3・)1の補数なら引数に「~ch」を渡せばいいお
2の補数なら引数に「~ch+1」を渡せばいいお
>>673 (・3・) エェー 時間ないからAはダメぽ
int shou8(unsigned x){
return x - (x >> 3) * 8;
}
(・3・) エェー 全くビット演算の意味ないよNE
>>673 (・3・) エェー さすがに酷いから作り直した
今週の営業は終了致しましたYO
int shou8(unsigned x){
int i, j=1, sum=0;
for (i=0; i<3; i++) {
if( j & x ){
sum += j;
}
j *= 2;
}
return(sum);
}
682 :
デフォルトの名無しさん :2007/12/21(金) 14:57:21
tanθの値を-360<=θ<=360の範囲で1°刻みにプログラムを作成すること。 ただし、tanは、自分で作った関数の中でのみ使用でき、θの値は mainの中で決定し、関数へと受け渡すこと。 プログラムの中身 -360,○○○ -359,○○○ ・ ・ ・ 360, ○○○ このプログラムをお願いします。
#include <stdio.h> #include <math.h> //円周率(double型の有効桁数までのつもり) #define PAI (3.141592651389793) double mytan(double dig) { if(fmod(dig+90,180)==0)//ex. 90,270... { //求められない return HUGE_VAL; } return tan(dig*PAI/180); } int main(void) { int dig; double val; for(dig=-360;dig<=360;dig++) { val=mytan(dig); printf("%+3d ",dig); if(val==HUGE_VAL) printf("エラー"); else printf("%lf",val); printf("\n"); } return 0; }
穴でも掘るのか?
中学1年のころの英語の授業の記憶より "カナダは大きい国です。"を英訳 (正)Canada is a big country. (誤)Canada is a dig country.
686 :
デフォルトの名無しさん :2007/12/25(火) 13:58:30
[1] 授業単元:C [2] 問題文(含コード&リンク):A:0からある数値(NUM) までの合計を表示するプログラムを,以下の手順で作りなさい.B:課題A で作成したプログラムを修正して,NUM の値を変化させるプログラムを作成する [3] 環境 [3.1] OS: (Windows [3.2] コンパイラ名とバージョン: 任意 [3.3] 言語: C [4] 期限: ([2008年1月9日まで] [5] その他の制限:
687 :
デフォルトの名無しさん :2007/12/25(火) 14:01:07
問A ヘッダファイル kadai09a.h を作成し,NUM と関数hyoujiを定義する. ------------------------------------------------------------- #define NUM 5 extern void hyouji(int, int); ------------------------------------------------------------- 以下のプログラムをもとに, main関数の部分をソースファイル kadai09a.c に,関数 hyouji の部分をソースファイル kadai09a1.c に分割する. ------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> void hyouji(int, int); int main(void) { int i, n; int sum = 0; printf("Input non-negative integer: "); scanf("%d", &n); for (i = 1; i <= n; i++) { sum += i;} hyouji(n, sum); return 0; } void hyouji(int k, int m) { printf("The sum of 0 to %d : %d\n", k, m); } ------------------------------------------------------------- 作成した kadai09a.c, kadai09a1.c, kadai09a.h をコンパイルして実行する.
688 :
デフォルトの名無しさん :2007/12/25(火) 14:03:04
ヘッダファイル kadai09b.h を作成し,NUM と関数hyouji と関数sum を定義する. ただし,NUM は,「マクロNUM が定義されていなければ,NUM=5 」と定義する. ------------------------------------------------------------- #define NUM 5 extern void hyouji(int, int); extern int sum(void); ------------------------------------------------------------- main関数の部分を,ソースファイル kadai09b.c で定義する. ------------------------------------------------------------- #include <stdio.h> /* おまじない */ #include <stdlib.h> /* おまじない */ int sum(void); void hyouji(int, int); int main(void) { hyouji(NUM, sum()); return 0; } ------------------------------------------------------------- 関数sum を,ソースファイル kadai09b1.c で定義する. ------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int sum(void) { int i, souwa=0; for (i = 1; i <= NUM; i++) { souwa += i;} } ------------------------------------------------------------- ここで示したサンプルプログラムでは動かないので,必要最小限の修正をしてプログラムを完成すること
689 :
デフォルトの名無しさん :2007/12/25(火) 15:12:43
【質問テンプレ】 [1] 授業単元:Cプログラミング実習 [2] 問題文(含コード&リンク): VC 6.0の環境で電卓の作成。 (1).加算を行う電卓の作成。(後に四則演算に対応させる) (2).エディットボックスに数値を入力し演算を行う。 (3).エディットボックスにプラス「+」、マイナス「-」、 スペース「' '」を入力されても演算可能にする。 (補足) C言語の初心者です。 今、VC 6.0の環境で電卓を作っています。 エディットボックスに数値を入力して計算させるプログラムなのですが エディットボックスにスペースを入力されても計算出来るようにしたいのですが解りません。 NULL文字をチェックすればよいのか、それとも「isspece」の関数を使って空白文字を 調べればよいか解りません。プラス「+」、マイナス「-」の符合が入力されても 計算出来るようには行えたのですが、どうしても空白(スペース)を入力された場合が、 うまくいきません。以下は作成途中のソースコードです。ここに付け加えるような コードで教えていただけると助かります。ご指導お願いします。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語: C,C++ [4] 期限: 2007年12月25日 [5] その他の制限:クラス使用不可
690 :
デフォルトの名無しさん :2007/12/25(火) 15:14:49
>> 689の作成中のコードです。宜しくお願いします。 // OnButton1() ///////////////////////////////////////////////////////////////////// void CKasanDlg::OnButton1() { adding(); char num1[128],num3[128]; int i,length=strlen(&num1[0]); int numk,numl=0; m_num3.GetLine( 0, num3 ); numk = sscanf( num3, "%d", &numl ); for( i=0; i<length; i++ ){ isdigit( (int) num1[i] ); } if(( numk == -1 )){ MessageBox("数値を入力してください。"); // メッセージボックス } }
>>687 //kadai09a.h
#define NUM 5
void hyouji(int,int);
//kadai09.c
#include "kadai09a.h"
#include <stdio.h>
//#include <stdlib.h>//いらなくね?
int main(void)
{
//mainの内容を記述します。
}
//kadai09a1.c
#include <stdio.h>
void hyouji(int k,int m)
{
printf("The sum of 0 to %d : %d\n", k, m);
}
コンパイラの使い方は誰かに聞け
692 :
691 :2007/12/25(火) 20:02:06
すまん。問題よく読んでなかった。 kadai09a.cだけ変えてくれ。 #include "kadai09.c" int main(void) { int i,; int sum = 0; for (i = 1; i <= NUM; i++)sum += i; hyouji(n, sum); return 0; }
>>688 //kadai09b.h
#ifndef NUM
#define NUM (5)
#endif
void hyouji(int,int);
int sum(void);
//kadai09b.c
#include "kadai09b.h"
int main(void)
{
hyouji(NUM,sum());
return 0;
}
//kadai09b1.c
//NUMを変えるのならここで定義すること
//#define NUM (100)
#include "kadai09b.h"
int sum(void)
{
int souwa=0;
for (i = 1; i <= NUM; i++)souwa+=i;
return souwa
}
694 :
デフォルトの名無しさん :2007/12/26(水) 02:14:56
別スレで答えてもらえなかったので、ここで頼みたいのですが・・ C++ Linux #include <stdio.h> #include <math.h> int x,y; { mi(x,y,a); } mi(x,y,a) int x,y; float a; { } return } ルーチンワーク内で、mi(x,y,a)という、 (x,y)にa倍の「み」という文字を表示するコマンドをつくりたいのですが どうやってつくればよいでしょうか? 1倍の「み」は横幅縦幅ともに50くらいとしておねがいします。 できればforなどの基礎構文で
>>694 情報量が少な過ぎ。用件をきっちり書くか、ちゃんとしたサンプルを提示してくれ。
696 :
デフォルトの名無しさん :2007/12/26(水) 12:58:48
>>695 宿題で、「み」という文字をウインドウにアニメーション的に表示する
プログラムをつくる(これしか言われてないです・・)というのがでたので、
mi(x,y,a)というコマンドを用意したいのですが、どうすればいいかわからなくて。
最近やっと、for文をつかったアニメーションのつくりかたを習ったばかりという
レベルです。
for文をつかったアニメーションのつくりかたって何だ
698 :
デフォルトの名無しさん :2007/12/26(水) 14:38:31
>>697 えと、
for(i=0;i<=100;i++)
{
x=10*i,y=100-10*i
ginit();
mi(x,y);
draw();getchar();
}
という感じなのですが、一般的じゃないんですか?
必要そうな関数を使い方なども含めて全部説明してくれ。 この質問はMS-DOSユーザに対して、Windowsのプログラム作ってくれってなぐらいに厳しいぞ。
静止画からの(複数)顔検出率95%以上のプログラムをください(><)
701 :
デフォルトの名無しさん :2007/12/27(木) 05:01:48
>>699 ginit() window画面を出す
line(x1,y1,x2,y2) (x1,y1)と(x2y2)を結ぶ線分を描く
circle(x,y,r) (x,y)を中心とする半径rの円を書く
くらいしか使えないのですが、これで「み」をかけますかね?
lineでベクトル的に書く
取り敢えずこんなもんかな。 -- static int conv(int xy, int a, int oxy, int dxy) {return xy + (oxy + dxy) * a;} void mi(int x, int y, int a) { const int ox = 0; const int oy = -50; static const struct point { int x; int y; } points[] = { {10, 0}, {20, 0}, {10, 50}, {0, 40}, {10, 30}, {50, 30}, {-1, -1}, {40, 20}, {40, 50}, {-1, -1}, }; for (int ic = 0; ic < sizeof(points) / sizeof(* points); ++ic) { if (points[ic].x >= 0 && points[ic + 1].x >= 0) { line(conv(x, a, ox, points[ic].x), conv(y, a, oy, points[ic].y), conv(x, a, ox, points[ic + 1].x), conv(y, a, oy, points[ic + 1].y)); } } } int main() { mi(100, 100, 2); return 0; }
ぼるじょあさんあけおめ
(・3・) 新年明けましておめでとうございます 本年もご愛顧の程よろしくお願いしますYO!
706 :
デフォルトの名無しさん :2008/01/07(月) 15:46:41
707 :
デフォルトの名無しさん :2008/01/07(月) 15:51:04
@
708 :
デフォルトの名無しさん :2008/01/07(月) 15:52:47
711 :
名無し :2008/01/09(水) 21:24:21
[1] 授業単元: プログラム [2] 問題文:複数の整数の平均・分散を求めるプログラムを作成せよ。ただし、平均・分散ともに 小数点第3位以下を切り捨て、小数第2位まで求めるものとする 入力に関して キーボードからまず、入力する整数の個数を入力し(最大でも100とする)改行する 次に指定した数の整数をスペース1つずつ開けて1行で入力するものとする この時、入力を促す文字等は表示しないこと 出力に関して 1行目に平均(+改行)、2行目に分散(+改行)を数値のみ出力する。 指定した数値・改行以外の文字等の出力は一切行わない事 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:わかりません [3.3] 言語: C [4] 期限: 2008年1月10日10:00まで [5] その他の制限: 特になし よろしくおねがいします
712 :
名無し :2008/01/09(水) 22:05:32
[1] 授業単元: プログラム [2] 問題文:複数の数値に対する最大公約数を求める関数を作成し、それを利用するプログラムを作成せよ 関数は下記の通り int gcm(int*in,int num) in 入力値が格納された配列のポインタ num 入力値の数 戻り値 入力値の最大公約数 入力に関して、キーボードから、入力値をスペース1つ開けて1行で入力する この時、入力を促す文字等は表示しないこと 出力に関して、結果+改行のみ出力。指定した数値・改行以外の文字等出力は行わない [3] 環境 [1] OS:XP [2] コンパイラ名とバージョン:わかりません [3] 言語: C [4] 期限: 2008年1月10日10:00まで [5] その他の制限: 特になし またまたおねがいします。
>>711 #include <stdio.h>
#include <stdlib.h>
#include <math.h>
double Average(int count,int data[])
{
double sum=0;int i;
for(i=0;i<count;i++)sum+=data[i];
return sum/count;
}
double StandardDeviation(int count,int data[])
{
double av,variance;
int i;
variance=0;
av=Average(count,data);
for(i=0;i<count;i++)variance+=((data[i]-av)*(data[i]-av));
variance/=count;
return sqrt(variance);
}
int main(void) { char buf[1024],*szStrPtr; int i,count,data[100]; gets(buf); count=atoi(buf); if(count>100){printf("最大で100までゆうただろうが!\n");return 1;} szStrPtr=buf; gets(buf); for(i=0;i<count;i++) { char *endptr; data[i]=strtol(szStrPtr,&endptr,10); if((*endptr)=='\0' && i!=(count-1)){printf("きちんと入力できてないでー\n");return 1;} szStrPtr=endptr+1; } printf("%.2f\n%.2f\n",floor(Average(count,data)*100)/100,floor(StandardDeviation(count,data)*100)/100); return 0; }
>>711 (・3・) エェー やっとでけたYO!
#include<stdio.h>
#include<math.h>
int main(void)
{
int i, value_num, value;
double total=0.0, total_2=0.0, ave, dev;
scanf("%d", &value_num);
if(value_num<=0) return 1;
for(i=0;i<value_num;i++)
{
scanf("%d", &value);
total+=value;
total_2+=value*value;
}
ave=total/value_num;
dev=(total_2-total*ave)/value_num;
printf("%.2f\n", floor(ave*100)/100);
printf("%.2f\n", floor(dev*100)/100);
return 0;
}
716 :
名無し :2008/01/09(水) 22:37:52
>713、714さん ありがとうございます。助かりました。
717 :
名無し :2008/01/09(水) 22:44:39
>715さん ありがとうございます
>>712 #include<stdio.h>
#include<stdlib.h>
int gcd(int *in, int num){
int a, b, c, i;
if(num<=0) return -1;
b=in[0];
for(i=1;i<num;i++){
a=in[i];
if(b<=0) return -1;
while((c=a%b)) a=b,b=c;
}
return b;
}
int main(void){
int *data=NULL, datanum=0;
char buf[20+1];
for(;;){
fscanf(stdin, "%*[ ]");
if(fscanf(stdin, "%1[\n]", buf)==1) break;
if(fscanf(stdin, "%20[0-9]", buf)!=1) return 1;
data=realloc(data, sizeof(*data)*(datanum+1));
data[datanum++]=atoi(buf);
}
printf("%d\n", gcd(data, datanum));
free(data);
return 0;
}
719 :
デフォルトの名無しさん :2008/01/10(木) 22:33:56
>>719 ソートが気に食わなかったら書き換えて
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc,char *argv[])
{
char buf[1024];char *ptr;
if(argc<=1){puts("コマンドライン例\n% printchar u\n% printchar l\n% printchar r\n% printchar s");return 0;}
gets(buf);
switch(tolower(*(argv[1])))
{
case 'u':
for(ptr=buf;*ptr;ptr++)*ptr=toupper(*ptr);
break;
case 'l':
for(ptr=buf;*ptr;ptr++)*ptr=tolower(*ptr);
break;
case 'r':
for(ptr=buf;*ptr;ptr++)*ptr=(islower(*ptr)?toupper(*ptr):tolower(*ptr));
break;
case 's':
qsort(buf,strlen(buf),1,(int(*)(const void *,const void *))strcmp);
break;
default:puts("コマンドライン例\n% printchar u\n% printchar l\n% printchar r\n% printchar s");return 0;
}
puts(buf);
return 0;
}
ごみじょあ
722 :
デフォルトの名無しさん :2008/01/12(土) 15:28:07
[1] 授業単元:C言語 [2] 問題文:構造体としてT1時T1分T1秒とT2時T2分T2秒をキーボードから入力し、 経過時間を求め、表示するプログラムを作成しなさい。但し、秒は実数型とする [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:fujitsu workbench [3.3] 言語:C [4] 期限:1月16日16:00 [5] その他の制限:T1=7時25分12.33秒 T2=12時3分27.55秒.時間は24時間60分60秒で それ以上はNGで安全装置を働かせる
マルチすんなボケ
724 :
デフォルトの名無しさん :2008/01/17(木) 21:49:34
くそじょあ
>>724 こんなあんばいでどう?
テストしてないけど。
//穴1
typedef struct _Animal
{
int id;
char name[23];
int show[5];
int show_sum;
int show_prev;
int show_disp_total;
}Animal;
//穴2
for(i=0;i<n;i++)
{
s[i].show_sum=0;
for(j=0;j<5;j++)s[i].show_sum+=s[i].show[j];
s[i].show_disp_total=s[i].show_sum+s[i].show_prev;
tmp_total+=s[i].show_disp_total;
}
727 :
デフォルトの名無しさん :2008/01/17(木) 23:38:51
>>726 おかげさまでエラーもなく実行することができました!
本当に感謝します,ありがとうございました!
728 :
デフォルトの名無しさん :2008/01/18(金) 22:05:06
マルチばっかりじゃないか・・・
731 :
デフォルトの名無しさん :2008/01/19(土) 08:09:40
学校の課題でC++のクラスについての問題が出たのですが、まず以下のような データファイルを用意した上で、そこからデータを読み出して、別ファイルに 標準体重の人の血液型と名前を出力するというものなんです。ファイルの読み出しまでは分かるのです がその後が分かりません。アドバイスお願いします。 *標準体重・・・指数k(平均体重÷(平均身長ー100)を設定し、各々(身長ー100)*kの理想体重に対して97〜103%の間に入っていること。 <データファイル> 一行目 人数 二行目以降 名前 血液型 身長 体重
テンプレ嫁
734 :
デフォルトの名無しさん :2008/01/20(日) 23:00:29
735 :
デフォルトの名無しさん :2008/01/20(日) 23:14:23
736 :
デフォルトの名無しさん :2008/01/21(月) 00:43:00
何度目だ?Cプログラマ必須テキスト!
738 :
デフォルトの名無しさん :2008/01/21(月) 16:00:55
v 問7 キーボードから実数を一つ入力 させ、それを x に代入する。 x ≦ 100 のとき「A」、 100 < x ≦ 350 のとき「B」、 350 < x ≦ 600 のとき「C」、 600 < x のとき「D」 と表示するプログラム @ わかんないです。 C言語プログラミング 、C-pad?? lcpad使ってます。
739 :
デフォルトの名無しさん :2008/01/21(月) 16:05:03
[1] C言語 [3] [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: わかりません [3.3] 言語: C言語 [4] 期限: 1月24日木曜日 [2] 問題文(含コード&リンク): 問2 4個の変数 a 整数 b 実数 c 精度の高い実数 d 文字 を宣言し、それぞれに適当なデータを代入する。 そして次のように画面表示するプログラム a の値は ... です b の値は ... です c の値は ... です d の値は ... です 問3 37から229までの整数を加算しその結果を表示するプログラム お願いします!!
740 :
デフォルトの名無しさん :2008/01/21(月) 16:06:14
続きです。 問4 x = 0 から出発し、x の値を0.001 づつ増加させることを繰り返し、 x^2 + 7x - 1 の値が初めて正となった時点で繰り返しを終了し、 そのときのx の値を表示するプログラム 問5 キーボードから整数を入力させその数を x に代入する。 x が 100 より大きいとき、 「入力した数は 100 より大きい」と表示し、x が 100 以下のとき、 「入力した数は 100 以下です」と表示するプログラム 問6 キーボードからアルファベット を1文字入力させ、それが 「a」のとき、「a です」 「b」のとき、「b です」 「c」のとき、「c です」 「d」のとき、「d です」 「e」のとき、「e です」 と表示し、それ以外のとき「a,b,c,d,e 以外の文字」と表示するプログラム
741 :
デフォルトの名無しさん :2008/01/21(月) 16:06:45
問7 キーボードから実数を一つ入力させ、それを x に代入する。 x ≦ 100 のとき「A」、 100 < x ≦ 350 のとき「B」、 350 < x ≦ 600 のとき「C」、 600 < x のとき「D」と表示するプログラム 問8 1 + 4 + 9 + 16 + ・・・と加えて行き、 和が初めて 10000を超えたとき、 その和の値、および最後に加えた数を求めて表示するプログラム 問9 次に書かれた数の総和を求め、結果を表示するプログラム: 1 1+2 1+2+3 1+2+3+4 ・ ・ ・ 1+2+3+4+5+・・・+ 10 問10 縦 100m、横 120mのグランドがある。 縦横それぞれ同じ長さ x だけ長くして面積が 13000u となるようにしたい。 x を少数点以下1桁までの精度で求めるプログラム。 こんな感じです。お願いします!!
一問くらいやれよ
問10だけ なぜこれで答えがでるかは自分で考えてくれ。 #include<stdio.h> #include<math.h> int main(void) { double x,temp; temp=-110+10*sqrt(131.0);//二次方程式:x~2+220x-1000=0…(x>0)の解を代入 x=floor(temp*10+0.5)/10;//解の少数第2位で四捨五入 printf("約%.1f[m]伸ばせばよいぞ、雑種。\n",x); return 0; }
>>739 問2
#include<stdio.h>
int main(void)
{
int a; /* 整数 */
float b; /* 実数 */
double c; /* 精度の高い実数 */
char d; /* 文字 */
a = 2008;
b = 3.14159;
c = 1.60217733E-19;
d = 'A';
printf("a の値は %d です\n", a);
printf("a の値は %f です\n", b);
printf("a の値は %G です\n", c);
printf("a の値は %c です\n", d);
return 0;
}
>>739 問3
#include<stdio.h>
int main(void)
{
int i, sum = 0;
for(i = 37; i<=229; i++){
sum+=i;
}
printf("37から229までの整数の合計は%d\n",sum);
return 0;
}
問4
#include<stdio.h>
int main(void)
{
double x = 0;
while( x*x + 7*x - 1 < 0){
x+=0.001;
}
printf("x = %g\n",x);
return 0;
}
>>740 問5
#include<stdio.h>
int main(void)
{
int x;
printf("整数を入力して下さい:");
scanf("%d", &x);
if(x > 100){
printf("入力した数は 100 より大きい\n");
}else{
printf("入力した数は 100 以下です\n");
}
return 0;
}
>>740 問6
#include<stdio.h>
int main(void){
char x;
printf("1文字入力して下さい : ");
scanf("%c", &x);
if(x == 'a'){
printf("a です\n");
}else if(x == 'b'){
printf("b です\n");
}else if(x == 'c'){
printf("c です\n");
}else if(x == 'd'){
printf("d です\n");
}else if(x == 'e'){
printf("e です\n");
}else{
printf("a,b,c,d,e 以外の文字\n");
}
return 0;
}
>>741 問7
#include<stdio.h>
int main(void){
double x;
printf("実数を入力して下さい。: ");
scanf("%lf", &x);
if(x <= 100){
printf("A\n");
}else if(x <= 350){
printf("B\n");
}else if(x <= 600){
printf("C\n");
}else{
printf("D\n");
}
return 0;
}
749 :
名無し :2008/01/21(月) 21:10:09
[1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク): 円周率を求めるプログラムを作成せよ。 1.rand()関数を用いて0〜1のx座標、y座標を生成する。 2.原点との距離を求め、座標が半径1の円内かどうか調べ、円内である場合、円外である場合をそれぞれカウントする。 3.以上を指定回数分繰り返し、半径1の円内である確率がπ/4であることからπを求める。 ・入力に関して、キーボードから繰り返し回数を入力する。(上限はint型の最大値(実際には最大値を入れると膨大な時間がかかるので テストは1分程度で終了する値でよい) ・出力に関して、結果(求めた円周率)のみを浮動小数点(double型を%1f)で出力(+改行) [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:わからないです [3.3] 言語: C [4] 期限: 2008年1月23日12:00まで [5] その他の制限:StudyCを使ってます。よろしくお願いします
>>741 問8
#include<stdio.h>
int main(void){
int i=1,sum=0,x;
while(sum < 10000){
x = i*i;
sum+=x;
i++;
}
printf("和 = %d、最後に加えた数 = %d\n",sum,x);
return 0;
}
>>741 問9
#include<stdio.h>
int main(void){
int i,j,sum;
for(i = 1;i <=10; i++){
sum =0;
for(j=1; j<= i;j++){
if(j>1){
printf("+");
}
printf("%d", j);
sum+=j;
}
printf("=%d\n",sum);
}
return 0;
}
>>749 #include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
int main(void)
{
int i,n,f;
double x,y,r,pi;
srand(time(NULL));
printf("繰り返し回数を入力:");
scanf("%d",&n);
f=0;
for(i=0;i<n;i++){
x=(double)rand()/RAND_MAX;
y=(double)rand()/RAND_MAX;
r=sqrt(x*x+y*y);
if(r<=1){ f++; }
}
pi = (double)f/n*4;
printf("%1f\n",pi);
return 0;
}
753 :
名無し :2008/01/21(月) 23:24:04
[1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク): 英文の文字列を入力した場合、文字数・単語数・文章数を求めるプログラムを作成せよ。 英文中の特殊文字は(, . ! ?)のみとする。単語の間には1つ以上(2つ以上でも可)のスペースが入るものとする。 文章の最後には必ず. ! ?のどれかが単独で使われる。 ,や. ! ?の後に入る可能性があるが前にはスペースは入らないものとする。省略につかう.は今回ないものとする。 入力に関して:キーボードから、文字列を1行で入力する 出力に関して:文字数・単語数・文章数をそれぞれスペース1つあけて1行で出力(+改行) [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン:わからないです [3.3] 言語: C++ [4] 期限: 2008年1月23日12:00まで [5] その他の制限:StudyCを使ってます。よろしくお願いします。
754 :
名無し :2008/01/21(月) 23:30:50
>>752さん 749の問題を書き込んだものですがRAND_MAXのところがエラー表示されます。 申し訳ありませんがもう一度確認してもらってよろしいでしょうか。
756 :
デフォルトの名無しさん :2008/01/22(火) 00:24:46
2つの整数を入力して、その2つの整数の最大公約数と、 最小公倍数を求めるプログラムを作りなさい。 このプログラムをお願いします。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 1からNまでの和を求めよ。 1からNの総和を求める関数をint wa(int N)として定義せよ。 (注)WIN32コンソールアプリケーションで、Nの値をキーボードより入力。 #include <stdio.h> int wa(N); { int i, sum = 0; for(int i=1, i<=N, i++) Sum+=i; } int main(void) { } ※ これを参考に作成するのですが、イマイチ分かりません [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: (".NET 2003") [3.3] 言語: (C++) 期限は特にありませんので、宜しくお願いします。
#include <stdio.h> int wa(int N); { int i, sum = 0; for(int i=1, i<=N, i++) Sum+=i; } int main(void) { int n; scanf("%d",&n); printf("%d\n",wa(n)); return 0; }
>>759 ありがとうございます。
しかし、.NET 2003環境で
#include <stdafx.h>
#include <stdio.h>
int wa(int N);
{
int i, sum = 0;
for(int i=1, i<=N, i++) Sum+=i;
}
int main(void)
{
int n;
scanf("%d",&n);
printf("%d\n",wa(n));
return 0;
}
このようなエラーが出てしまします。
error C2447: '{' : 対応する関数ヘッダーがありません。旧形式の仮引数リストの可能性があります。
{の対応は間違っているようには見えないのですがうまくいきません。
for文は for(int i=1, i<=N, i++) じゃなくて for(int i=1; i<=N; i++) こうだろう Sumもなんでか大文字になってるし、 wa関数に return sum; もない
>>761 ありがとうございます。
for文ご指摘のとうりでした
直して見たのですが、やはり
error C2447: '{' : 対応する関数ヘッダーがありません。旧形式の仮引数リストの可能性があります。
とでてしまいます。>< お時間ありましたらもう少しおつきあい下さいませ。
#include <stdafx.h>
#include <stdio.h>
int wa(int N);
{
int i, sum = 0;
for(int i=1; i<=N; i++) sum+=i;
return sum;
}
int main(void)
{
int n;
scanf("%d",&n);
printf("%d\n",wa(n));
return 0;
}
int wa(int N); ←なにこのセミコロンw
764 :
ラッセン沖縄 :2008/01/22(火) 09:42:41
[1]授業単元 プログラミングB [2]問題文 次の仕様を満たし、入力例の通りにして実行でき、更に、出力例の通りに出力されるようなCプログラムを作成せよ。(出力の空白や桁数にも留意せよ。) 仕様 三角形の底辺と高さ入力し、その面積を求める。 入力例 Z:\>(kadai) (カッコ内を 底辺=(3.0) 入力する)高さ=(4.5) 出力例* ----+----|----+----|----+----|----+----|----+----| 底辺=3.000, 高さ=4.500 面積=6.7500 (*目盛りは桁を示すためのもの。プログラムで出力するのではない。) よろしくお願いします。
>>763 あ、ほんとだ!
ありがとうございます。コンパイル成功しました。
でも、動かない。。
プロンプト起動後に数値入力→Enter
すると終了してしまいます><
#include <stdafx.h>
#include <stdio.h>
int wa(int N)
{
int i, sum = 0;
for(int i=1; i<=N; i++) sum+=i;
return sum;
}
int main(void)
{
int n;
scanf("%d",&n);
printf("%d\n",wa(n));
return 0;
}
>>756 #include<stdio.h>
main(){
int a,b,x,y,gcd,lcm;
printf("1つ目の整数を入力して下さい:"); scanf("%d", &x);
printf("2つ目の整数を入力して下さい:"); scanf("%d", &y);
if(x>y){a = x; b = y;}
else{a = y; b = x;}
while(b > 0){gcd = a%b; a = b; b = gcd;}
gcd = a; lcm = x*y/gcd;
printf("%dと%dの最大公約数は%d、最小公倍数は%d\n", x, y, gcd, lcm);
}
767 :
デフォルトの名無しさん :2008/01/22(火) 15:09:47
>743,744,745,746,747,748,750,751 ありがとうございます。 あの、問6の問題なんですが、 switchの構文で作ってもらうことできますか?
問6 #include<stdio.h> int main(void){ char x; printf("1文字入力して下さい : "); scanf("%c", &x); switch(x){ case 'a': case 'b': case 'c': case 'd': case 'e': printf("%c です\n", x); break; default: printf("a,b,c,d,e 以外の文字\n"); } return 0; }
769 :
デフォルトの名無しさん :2008/01/22(火) 15:17:11
>>768 ありがとうございます。
すごく助かりました。
770 :
デフォルトの名無しさん :2008/01/23(水) 00:37:23
>>765 それは正常に動いてる。 処理が終わったから窓を閉じただけ。
実行後も見たいなら、ファイル名を指定して実行から cmd と打てば
コマンドラインが出るから、そこに実行ファイルドラッグするなりして
再度実行してみればいいと思うよ
772 :
名無し :2008/01/23(水) 01:17:06
[1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク): (1)複数の整数を降順(大きい順)にソートするプログラムを作成せよ 。 入力に関して:キーボードから、入力する整数の個数を入力(最大で10とする)し、次に指定した数の整数をスペース1つ開けて1行で入力するものとする。 このとき、入力を促す文字は表示しないこと。 出力に関して:ソートした整数をスペース1つのみあけて1行で出力する(+改行)。 指定した数値・改行以外の出力は一切行わない事。 久々のROに戸惑い中@緋月とーま の発言: (2)数値を表示して最大値の回答をチェックするプログラムを作成せよ 入力1に関して:キーボードからまず、表示する整数の個数を入力(最大で10とする)する。 この時、入力を促す文字は表示しないこと。 出力1に関して:rand()関数を用いて0〜100までのランダムな整数を、入力1の数だけ生成して表示する。 指定した数値・改行以外の出力は一切行わない事。 入力2に関して:続いてキーボードから、表示された数値のうち最大のものを選び(間違えても構わない)その数値を入力する このとき、入力を促す文字は表示しないこと。 出力2に関して:入力2の値が正解なら1を、間違っていれば0を出力する(+改行)。 指定した数値・改行以外の出力は一切行わない事。 [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン:わからないです [3.3] 言語: C [4] 期限: 2008年1月24日10:30まで [5] その他の制限:StudyCを使ってます。2問あるんですが、よろしくお願いいたします。
773 :
デフォルトの名無しさん :2008/01/23(水) 11:40:10
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 2次方程式 ax^2 + bx + c = 0について、a,b,cをキーボードから入力して解を求めるプログラムを作成せよ。 a=0を入力を入力するまでは繰り返し計算を行うようにする 平方根の計算も必要です [3] 環境 [3.1] OS: windowsXP [3.2] コンパイラ名とバージョン:VC2005 [3.3] 言語: C++ [4] 期限: 今週中におねがいします。できれば早く。 初歩的ですいません。
>久々のROに戸惑い中@緋月とーま の発言: うーむ……
>>772 >久々のROに戸惑い中@緋月とーま の発言
ここがよくわからん。もう少しくやしく。
777 :
名無し :2008/01/23(水) 18:31:07
776さん>>久々のROに戸惑い中@緋月とーま の発言 これはもうムシしてください。へんな文章入れて申し訳ないです。
>>773 #include <iostream>
#include <math.h>
using namespace std;
int main(void)
{
double a,b,c,d;
cout << "a=";cin >> a;
cout << "b=";cin >> b;
cout << "c=";cin >> c;
d=b*b-4*a*c;
if(d==0)
{
double x;
x=-b/(2*a);
cout << "x=" << x << endl;
}
else if(d>0)
{
double x1,x2;
x1=(-b+sqrt(d))/(2*a);x2=(-d-sqrt(d))/(2*a);
cout << "x1=" << x1 << "\nx2=" << x2 << endl;
}
else
{
double xa,xb;
xa=-d/(2*a);xb=sqrt(-d)/(2*a);
cout << "x1=" << xa << "+" << xb << "i\nx2=" << xa << "-" << xb << "i" << endl;
}
}
久々のROに戸惑い中@緋月とーま の発言:
タコじょあ
>>770 #include<stdio.h>
#define num 10/* (・3・)エェー 等号とセミコロンはいらないYO */
int i;
double data[num]={ 173.8,168.2,180.3,166.0,189.7,167.4,159.8,170.5,167.5,167.4};/* (・3・)エェー セミコロン付いてないYO */
int main(void)
{
for(i=1;i<=num;i++){
int max=i,j;/* (・3・)エェー 変数maxとjが宣言されて無いYO */
for(j=i+1;j<=num;j++)/*最大の要素の場所を捜す*/
if (data[max]<data[j])max=j;
data[i]=data[max];data[max]=data[i];/*入れ換え*/
}
for(i=1;i<=num;i++)printf("%7.1f ",data[i]);
return 0;
}
#include<stdio.h> #define num (10)//セミコロンとかいらん double data[num]={ 173.8,168.2,180.3,166.0,189.7,167.4,159.8,170.5,167.5,167.4};/*セミコロン付けな*/ int main(void) { int i,j,max;/*変数宣言しとけ*/ double temp;/*入れ替え時に使用*/ for(i=0;i<=num-1;i++)/*配列の添え字は[0]から[num-1]まで*/ { max=i; for(j=i;j<=num-1;j++)/*[i]から[num-1]まで*/ if (data[max]<data[j])max=j; temp=data[i];/*tempを利用する*/ data[i]=data[max]; data[max]=temp;/*tempから書き込む*/ } for(i=0;i<=num-1;i++)printf("%7.1f ",data[i]);/*配列の添え字は[0]から[num-1]まで*/ puts("");/*最後、改行するためになんとなく*/ return 0; }
783 :
デフォルトの名無しさん :2008/01/23(水) 23:09:48
>>772 #include <stdio.h>
int main(void){
int n, num[10], i, k;
scanf("%d", &n);
if(n > 10)return 0;
for(i=0; i<n; i++)scanf("%d", &num[i]);)
for(i=0; i<n-1; i++){
for(k=i+1; k<n; k++){
if(num[i] < num[k]){
int swap = num[i];
num[i] = num[k];
num[k] = swap;
}
}
}
for(i=0; i<n; i++)printf("%d ", num[i]);
printf("\n");
return 0;
}
>>772 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int n, in, max = -1, i;
scanf("%d", &n);
if(n > 10)return 0;
srand((unsigned)time(NULL));
for(i=0; i<n; i++){
int tmp = rand()%101;
if(max < tmp)max = tmp;
printf("%d ", tmp);
}
printf("\n");
scanf("%d", &in);
printf("%d\n", (in == max));
return 0;
}
[1] 授業単元: C言語 [2] 問題文 間違った日付が入力された場合、再入力させる仕様にする [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: VC2005 [3.3] 言語: C [4] 期限:1月27日まで [5] その他の制限: ここに書いてあるのはプログラムの一部です #include<stdio.h> int main() { int year,months,day; int sum,i; int m_array[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; char*week[7] = {"日","月","火","水","木","金","土"}; sum =0; printf ("input (e.g. ****/**/**)\n>>"); scanf ("%d/%d/%d",&year,&months,&day if ((imonths >2) && ((iyear % 4 == 0) && ((iyear % 100 !=0) || (iyear % 400 == 0)))) { sum++; } for (i =0; i < imonths-1; i++) { sum += m_array[i]; } おそらくprintf scanf あたりを変えてwhile文とかbreakを使うと思うのですが・・ ヨロシクお願いします。
そんなのも分からないのに良くポインタ扱えるな
自分で作ったわけではありませんから
791 :
791 :2008/01/24(木) 22:13:51
>>788 そんな変な手の加え方してコンパイル通せるのか?
#include<stdio.h>
int main() {
int year,months,day;
int sum,i;
int m_array[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
char*week[7] = {"日","月","火","水","木","金","土"};
sum =0;
do{
printf ("input (e.g. ****/**/**)\n>>");
scanf ("%d/%d/%d",&year,&months,&day);
if(year%4==0 && year%100!=0 || year%400==0)
m_array[1]=29;
else
m_array[1]=28;
}while(months<1 || months>12 || day<1 || day>m_array[months-1]);
for (i =0; i < imonths-1; i++) {
sum += m_array[i];
}
>>785 〜 ヘッダのinclude 省略 〜
int main(void){
char line[18+1]={0}, buf[16+1]={0}, *p;
int i, num, tmp;
printf("Input Number (ex. B0000000001111011 or D123 ) ===>");
fgets(line, 18+1, stdin);
p = strchr(line, '\n');
if(p != NULL) *p = '\0';
switch(line[0]){
case 'B':
if(strlen(line) != 17) return 1;
for(i=16, tmp=1, num=0; i > 0; i--, tmp*=2) if(line[i] == '1') num += tmp;
if(line[1] == '1') num -= 65536;
printf("%s ===> D%6d\n", line, num);
break;
case 'D':
num = atoi(&line[1]);
if(num < -32768 || num > 32767) return 1;
if(num < 0) num += 65536;
for(i=15; i >= 0 && num != 0; i--, num/=2){
if( num%2 == 0) buf[i] = '0';
else buf[i] = '1';
}
for(; i >= 0; i--) buf[i] = '0';
printf("D%6s ===> B%s\n", &(line[1]), buf);
break;
}
return 0;
}
蛆じょあ
794 :
◆t0OD42fqHw :2008/01/26(土) 16:55:04
[1] 授業単元: C++ [2] 問題文(: vectorクラスを利用して、int型を格納する動的配列を生成せよ まず1〜20までの間の奇数を格納せよ。 それから、追加で 21〜40までの間の奇数を格納せよ そして、11〜30までの間の奇数を格納している要素を削除せよ [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限: [無期限] [5] その他の制限: なし
#include <vector> #include <algorithm> #include <cstdio> static void bar(int val) {printf("%d\n", val);} int main() { std::vector<int> foo; for (int ic = 1; ic <= 20; ic += 2) { foo.push_back(ic); } for (int ic = 21; ic <= 40; ic += 2) { foo.push_back(ic); } for (int ic = 11; ic <= 30; ic += 2) { foo.erase(remove(foo.begin(), foo.end(), ic), foo.end()); } std::for_each(foo.begin(), foo.end(), bar); return 0; }
796 :
デフォルトの名無しさん :2008/01/27(日) 14:43:59
[1] 授業単元:プログラミングU [2] 問題文(含コード&リンク):与えられたデータ(data1.txt )に対して季節調整を行うプログラムを作成しなさい。 <調整法> i年目、j月のデータを aij とする。 月平均 Mj 月平均の平均 M 調整のための指数 Sj = Mj / M 調整結果 aij / Sj [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Visual Studio 2005 [3.3] 言語:C++ [4] 期限:2月3日 [5] その他の制限: 特にありません。 よろしくお願いします。
>>796 data1.txtがどんな物か分からないとやりようが無いYO
data1.txtをうpしてクレYO
調整結果は画面に表示すれば良いのかな?
798 :
◆DSpH.2sBBQ :2008/01/27(日) 19:43:32
[1] 授業単元: C++ [2] 問題文 格子状(一辺20mのブロック×縦横10ブロック)の道を、人が4m/sで移動し 任意の座標(通路上に自由に指定可)にある複数の障害物とのそれぞれの距離を、各分岐点で表示しなさい。 スタートは左下の点、ゴールは一番右上の点とする。人が通る道順も自由に指定可。 障害物の上を通る場合は人の速度を1m/sとし、ゴールに到着するまでにかかった総時間も表示しなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限: とても急いでます(>_<) [5] その他の制限: なし 本当に切羽詰ってます!ぼるじょあさん、宜しくお願い致します!!
799 :
# :2008/01/27(日) 20:31:30
>>797 すいません。貼り付け忘れてました。
データ(12カ月×5年)
40.0 37.7 51.8 45.9 45.2 45.4 62.0 40.8 42.1 49.1 51.5 93.4
42.6 39.5 53.4 47.6 47.0 47.5 63.5 42.2 42.9 51.1 51.8 94.7
43.3 39.8 53.6 48.5 48.3 47.5 65.9 42.8 43.7 53.2 52.9 97.0
44.9 42.3 55.0 50.7 48.6 48.9 68.8 43.3 46.2 54.2 54.6 100.5
47.5 42.8 57.7 52.6 51.0 50.9 71.4 45.0 47.3 56.8 56.7 102.7
調整結果は、画面に表示させてください。よろしくお願いします。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 2つの正の整数値a,bの最大公約数を出力するプログラムを ユークリッドの互除法というアルゴリズムを用いて作成したい。 以下のプログラムの****部分に適切な処理をいれて,プログラムを完成させなさい。 #include <stdio.h> int main( void ) { int a, b; /* 変数の宣言 */ int m, n; scanf( "%d,%d", &a, &b );/* 2つの正の整数値を入力する */ m= a ; n= b ; while(m **** n){ /* ユークリッドの互除法を適用 */ if( m > n ) m = ***** ; else n = **** ; [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C言語 [4] 期限: [2008年1月28日12:00まで] [5] その他の制限: 特になし よろしくお願いします。
全部あれかよwなさけねえ
803 :
デフォルトの名無しさん :2008/01/31(木) 16:31:13
[1]授業単元:C言語
[2]問題文:単純なソートアルゴリズム(バブル・選択・挿入)のどれか1つと、クイックソートアルゴリズムを計算量を比較するプログラムを作る。
*自分はバブルソートを選択しました。
[3]環境
[3.1]OS:(Windows XP)
[3.2]Ultara-C pro version 2.1
[3.3]言語:c言語
[4]期限:2008年2月1日 AM2:00まで
[5]その他制限:特になし
プログラムが長かったのでろだにアップしています。URLは下記に貼り付けています。
2008/01/30(Wed) 17:02 No.5941 が自分の書き込みです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm よろしくお願いします。
804 :
デフォルトの名無しさん :2008/01/31(木) 18:39:47
[1] 授業単元: C言語 [2] 問題文(含コード&リンク):フロッピードライブのディスクイメージを作成せよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++ [3.3] 言語:C [4] 期限: 2008/02/05に提出 [5] その他の制限: 基本的なことはできます。RAW Readをやらせたいんだと思うので、標準ライブラリ以外はダメです。 ioctrlを使うんだと思うんですが・・・。 すみません。資料へのリンクだけでもいいのでお願いします。
>>804 ・ディスクイメージを作成せよ
・RAW Readをやらせたい
・ioctrlを使う
相互に矛盾しているとは思わんかね。
806 :
804 :2008/01/31(木) 19:43:51
>>805 そうなんですか・・・?
FDイメージを作成するためにFDをFATでのReadではなく、RAW Readをしなければならない。
RAW Readをするためには・・・と思って調べていくとioctrlがそれっぽいかなぁというところまでは行ったつもりだったんですけど、違うんですか?
807 :
デフォルトの名無しさん :2008/01/31(木) 21:40:57
>>802 はい、ありがとうございます。使わせていただきます。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 線形探索/二分探索 の2つの方法での計算時間の違いをC言語実装によって 定量的に示す。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition もしくはUltara-C pro version 2.1 [3.3] 言語: Cのみ [4] 期限: ([2008年2月1日AM:6:00まで [5] その他の制限: 特に無いです。 よろしくお願いします
809 :
デフォルトの名無しさん :2008/02/01(金) 02:28:34
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):手の平の2値画像(
http://www2.uploda.org/uporg1226336.pgm ):手領域は255、背景は0 を使って
・手領域の面積 SS
・手領域の重心位置 (Mg,Ng)
・手領域の外接長方形 (RI,RJ) (RM,RN)
を計算して表示するプログラムを作成しなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: Cのみ
[4] 期限: 2008年2月4日まで
[5] その他の制限:なし
よろしくお願いします。
>>804 Windows環境でBorlandC++を使っていいならAPIでいいやん。
CreateFile
引数:\\.\C:\
で検索してみ。
811 :
モダン :2008/02/01(金) 19:14:16
[1] 授業単元:C言語 [2] 問題文 優先順位つき四則演算(小数点付き) 例 261.5*(2.3+7.9)+6.3/3.0= を計算して表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Visual Studio 2005 [3.3] 言語: C++のみ [4] 期限: 2008年2月5日まで [5] その他の制限:特にありません
マルチ死ね
セリオも死ね
>>818 (・3・) エェー (いろんな意味で)ねーYO!
(・3・) エェー Fizz-Buzz 問題解いてみるYO! 問題: 1から100までの数をプリントするプログラムを書け。 ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、 3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 #include <stdio.h> int main(void){ int i; for(i=1;i<=100;i++){ if(i%3==0 && i%5==0) printf("FizzBuzz\n"); else if(i%3==0) printf("Fizz\n"); else if(i%5==0) printf("Buzz\n"); else printf("%d\n", i); } return 0; }
>>820 の別解
#include <stdio.h>
int main(void){
int i;
char *print_format[]={"%d\n", "Fizz\n", "Buzz\n", "FizzBuzz\n"};
for(i=1;i<=100;i++){
printf(print_format[!(i%3)+(!(i%5))*2], i);
}
return 0;
}
823 :
デフォルトの名無しさん :2008/03/18(火) 09:24:13
本家が荒れているのでこちらをage! 宿題をやってもらいたい人かもーん!!
今の時期に宿題が出るとは思えませんが、お暇ならこの問題をどうぞ 3^(1,000,000,000,000,000)MOD23を計算せよ。
3と23の最小公倍数ってどうやって算出すればいいんですか?
>>825 3と23を掛けた後、最大公約数で割る。
#include <stdio.h> #include <math.h> int main(void) { int i, amari = 3; for(i = 0; i < 15; i++) { amari = int(pow((double)amari, 10.0)) % 23; } printf("%d", amari); return 0; }
#include <stdio.h> int main(void) { const int a = 3, b = 23; int i = b; while (i % a != 0) i += b; printf("%d\n", i); return 0; }
>>824 (・3・) エェー 出遅れたYO!
>>827 は有効桁数を超える可能性があるYO!
(3**10 も 8**10 も 2**31 以上じゃないから大丈夫だけど)
#include<stdio.h>
int main(void){
int i, j;
int result=1, mul=3;
for(j=0;j<15;j++){
for(i=0;i<10;i++) result=(result*mul)%23;
mul=result;
}
printf("%d\n", result);
return 0;
}
>>830 (・3・) エェー なんか処理内容見落としてるYO!
> if ((imonths >2) && ((iyear % 4 == 0) && ((iyear % 100 !=0) || (iyear % 400 == 0)))) {
の
(imonths >2)
はどこいったんだYO!
妹なら俺のちんぽしゃぶってるが
>>831 忘れてました・・・ありがとうございますw
>>832 忘れてました・・・ありがとうございますw
>あとこのソースって前年度の総日数(365xyear-1)とかがぬけてますよね? 質問してるところのループだけじゃなくて、その前のループもわかってないじゃんw
で?
839 :
839 :2008/04/12(土) 16:12:38
(・3・) エェー 全然初心者用の問題じゃないお
>>839 (・3・) エェー 問題文の意味が分からないYO!
842 :
839 :2008/04/13(日) 18:14:42
843 :
839 :2008/04/14(月) 13:00:50
期限を今日の8:00までと書いてますが期限を延ばしてもらったので、 どうぞ教えていただけないでしょうか
(・3・) エェー 期間が、明日明後日だと僕は無理だYO もっと余裕があるならやってもいいYO
845 :
デフォルトの名無しさん :2008/04/15(火) 12:05:41
期日が短くてすいません orz
では
>>842 のプログラムをもっと簡単にはできないでしょうか?
お願いします
マルチポストして解決したんなら、こっちでも報告するのが筋だろ。
848 :
デフォルトの名無しさん :2008/04/15(火) 23:08:40
はい仰る通りですね、すいません。 orz いいわけになりますが、やってもらったプログラムの理解とフローチャートを作ろうとしていたもの ですから報告が遅れました。そして私の宿題を手伝っていただきありがとうございました。
849 :
デフォルトの名無しさん :2008/04/17(木) 21:06:36
[1] 授業単元: プログラム入門 [2] 問題文(含コード&リンク): 整数aにデータを6つ入力し、偶数、奇数の個数を求めよ [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C [4] 期限: 2008年4月18日12:00まで [5] その他の制限: 初心者レベルです、Whileやfor、一次元配列までしか・・・ よろしくお願いします。
#include <stdio.h> int main(void) { int data[6], i, kisuu=0, guusuu=0; for(i=0;i<6;i++) { printf("%d番目のデータを入力してください:",i); scanf("%d",&data[i]); } for(i=0;i<6;i++) { if(data[i]%2==1)kisuu++; else guusuu++; } printf("奇数は%d個、偶数は%d個です",kisuu,guusuu); return 0; }
851 :
デフォルトの名無しさん :2008/04/18(金) 00:13:28
>>850 様
ありがとうございます!助かりました〜。
>>852 (・3・) エェー 元のプログラムが間違ってるYO!
ツェラーの公式使えYO!
ツェラーの公式を使うことが、そんなに辛い(つぇらい)のかね?ん?
857 :
デフォルトの名無しさん :2008/04/27(日) 18:53:51
[1] 授業単元:データ構造とアルゴリズム [2] 問題文(含コード&リンク):体育館問題を列挙で解け。 ・入力・・・最初に部活の数 n (0 <= n <= 100)が与えられる。 si(部活の活動開始時間),fi(部活の活動終了時間)の順に n 個の整数の組が与えられる。 (0 <= si <= 9999, 1 <= fi <= 10000, si < fi) ・出力・・・活動可能な部活の最大数を出力 Sample Input n = 5 si fi 0 5 13 20 15 27 4 10 25 30 Sample Output 3 [3] 環境 [3.1] OS: WindowsXP [3.2] Borland C++ [3.3] 言語:C++ [4] 期限: [2008年5月2日17:00まで] [5] その他の制限:特にありません よろしくお願いしますm(_ _)m
[1] 授業単元:プログラミング実験(ソフト開発) [2] 問題文(含コード&リンク): 下記の機能を持つ原始的なペイントソフトの作成をせよ。最低でも1.2は必須の機能である。 1.直線の描画 左ボタンを押しながらマウスを移動させ、左ボタンを離すと、左ボタンを押した座標から離した座標までの直線を描画する。 この際、移動最中の過程を消すためのXORペンを使用する。moveto,linetoという関数を用いる。 2.ラバーバンド 右ボタンを押しながらマウスを移動すると、右ボタンを押した座標とマウスの現座標を頂点とする矩形を描写する。 3.ハイライト 描いた直線の先端にマウスカーソルを合わせると、端点が強調される。 4.右ドラッグ選択 描いた直線をラバーバンドで囲み、右クリックを離すと、ラバーバンド内の直線の端点が強調される。 [3] 環境 [3.1] OS:Windows XP [3.2] Visual C++ 2005(or2008) Express Edition [3.3] 言語:C++ [4] 期限: 2008年5月4日まで [5] その他の制限:Windowsフォームアプリケーションで作成。 1.2の機能を持つものであれば十分すぎるほど十分です。 ぜひお力添えしていただければと思います。よろしくお願いします。
はわわ〜、ってネタが古いですぅ〜?
861 :
デフォルトの名無しさん :2008/05/20(火) 14:01:27
[1] 授業単元: C言語 [2] 問題文:文字列s1の中から文字列s2に含まれる文字を取り除く.関数の戻り値は文字列s1(の先頭を指すポインタ値). テストプログラムでは,文字列s2は固定でも構わない.しかし,関数の仕様としては,s1とs2の両方を引数にする.できるならば,s2もキーボードから入力できるようにする. s1: "This is a pen." s2: "sp." ↓ s1: "Thi i a en" [3] 環境 [3.1] OS:LINUX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 2008/05/026に提出 C言語全然分からなくて困ってます。どうかよろしくお願いします。
>>861 (・3・) エェー 久々だYO!
#include <stdio.h>
unsigned char *hoge(unsigned char *s1, const unsigned char *s2){
int i, j, remove_flag[256]={0};
for(i=0;s2[i];i++) remove_flag[s2[i]]=1;
for(i=j=0;s1[i];i++) if(!remove_flag[s1[i]]) s1[j++]=s1[i];
s1[j]='\0';
return s1;
}
int main(void){
char s1[1024]="", s2[1024]="sp.";
fgets(s1, sizeof(s1), stdin);
puts(s1);
hoge(s1, s2);
puts(s1);
return 0;
}
#include <stdio.h> #include <string.h> // s1にs2[some]が存在したら詰めると言う横着アルゴリズム。 // s1[some]がs2中に存在したら詰めると言う戦略のほうが無難かと思われる。 static void removeChars(char * s1, const char * s2) { for (const char * s2p = s2; * s2p != '\0'; ++s2p) for (char * p; (p = strchr(s1, * s2p)) != NULL; strcpy(p, p + 1)) ; } // 以下はテスト用サンプル。提出に当たっては適当に修正されたし。 int main(int argc, char ** argv) { removeChars(argv[1], argv[2]); puts(argv[1]); return 0; }
strcpy(p, p + 1) これって未定義じゃねーの?
865 :
デフォルトの名無しさん :2008/05/20(火) 16:47:06
【質問テンプレ】 [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): キーボードから文字列を入力し、それを逆順に表示するプログラムを作成せよ。 表示には必ずポインタを用いること。 [3] 環境 [3.1] OS: (Windows xp [3.2] コンパイラ名とバージョン: Cl [3.3] 言語: C言語 [4] 期限:2008年5月22日hh:17時 [5] その他の制限: 文字列の長さを知る必要があるので工夫する. ポインタに最初どこを向けさせて、どこまでいったら表示を終えるかを考えること。 よろしくお願いします。
866 :
863 :2008/05/20(火) 17:00:13
// >864の指摘も尤もなので、修正した。 // ついでに、s1[some]がs2中に存在したらコピー元をずらして、毎回一文字だけコピーする戦略に。 // これって、中のwhileの行を取り除いてp = s1をp = s2にしたらstrcpy()だ。 // static void removeChars(char * s1, const char * s2) { char * p = s1; do { while (* p != '\0' && strchr(s2, * p)) ++p; * s1++ = * p; } while (* p++ != '\0'); }
アルエェー ぼるじょあってまだいたのかYO! 健康なのかYO!
>>865 #include <stdio.h>
int main(void)
{
char str[256], *p;
scanf("%s", str);
for(p=str; *p; p++);
while(p-->str) putchar(*p);
return 0;
}
せめてscanf("%255s", str)にしようよ。
870 :
◆g/ZMVdytmo :2008/05/20(火) 22:18:53
871 :
865 :2008/05/20(火) 22:49:45
>>870 (・3・) エェー でけたYO!
#include<stdio.h>
int main(void){
int i, j, n;
printf("段数を入力してください:");
scanf("%d", &n);
for(i=0;i<n;i++){
for(j=0;j<n-i;j++) printf("*");
printf("\n");
}
return 0;
}
#include<stdio.h>
int main(void){
int i, j, n;
printf("段数を入力してください:");
scanf("%d", &n);
for(i=0;i<n;i++){
for(j=0;j<n-1-i;j++) printf(" ");
for(j=0;j<=i;j++) printf("*");
printf("\n");
}
return 0;
}
873 :
◆g/ZMVdytmo :2008/05/21(水) 00:12:59
ぼるじょあ氏超絶感謝!! 意外とシンプルワラタww
874 :
デフォルトの名無しさん :2008/05/21(水) 11:00:12
>>862 どうもありがとうございます。
どうやら条件があるみたいで「配列版」と「ポインタ版」 をつくり,それらの動作をテストするためのプログラムを作成する.
どの関数も,与えられた文字列に何らかの加工を施すものである「配列版」とは,関数内の文字列に対する処理を配列的表現を使って記述したものである.文字列sの中のある文字にアクセスする場合に,s[i]という表現を用いる.
「ポインタ版」とは,関数内の文字列に対する処理をポインタ使って記述したものである. 関数内には,全く配列的表現が現れないように書く.単に,配列版の s[i] を *(s+i) に置き換えるだけではダメで,ポインタ変数の値を変化させて文字列を走査するように記述する.
なんか面倒くさくて申し訳ないですが、よろしくお願いします。
875 :
デフォルトの名無しさん :2008/05/21(水) 11:26:33
[1] 授業単元: C言語 for [2] 問題文(含コード&リンク): 整数の個数を読み込み、その個数分の整数を 読み込み、読み込んだ整数の最大値を求めるプログラムを作れ。 整数の個数: 3 No.1: 6 No.2: 3 No.3: 4 最大値は 6 です [3] 環境 [3.1] OS: WINDOWS XP [3.2] コンパイラ名とバージョン: Cl [3.3] 言語: C [4] 期限: 2008年5月21日19:00 [5] その他の制限: for文を使う事。 お願いしますm(__)m
>>874 (・3・) エェー そういうことは先に言えYO!
#include <stdio.h>
#include <string.h>
unsigned char *hoge(unsigned char *s1, const unsigned char *s2){
char *src, *dest;
for(src=dest=s1;*src;src++){
if(!strchr(s2, *src)) *dest++=*src;
}
*dest='\0';
return s1;
}
int main(void){
char s1[1024]="", s2[1024]="sp.";
fgets(s1, sizeof(s1), stdin);
puts(s1);
hoge(s1, s2);
puts(s1);
return 0;
}
>>875 (・3・) エェー でけたYO!
#include <stdio.h>
int main(void){
int i, value_num, value, maximum_value=12345;
printf("整数の個数: ");
scanf("%d", &value_num);
for(i=0;i<value_num;i++){
printf("No.%d: ", i+1);
scanf("%d", &value);
if(i==0 || value>maximum_value) maximum_value=value;
}
printf("最大値は %d です\n", maximum_value);
return 0;
}
878 :
デフォルトの名無しさん :2008/05/21(水) 11:41:23
【質問テンプレ】 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク) 身長 150 cm から 170 cm までの標準体重(BMI法で計算)によるの対応を 表示するプログラムを for 文を使って作成せよ。 標準体重は小数点以下を1桁だけ表示すること。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:特になし [5] その他の制限:特になし
881 :
ぼろじょあ :2008/05/24(土) 06:03:58
(´3`) エェー でけねーYO!
882 :
◆ob60wHXQlc :2008/05/26(月) 23:12:53
[1] C言語 [2] 後から用意される2つのファイルがマージできるプログラムをつくる。 ファイルのサイズは最大で1000バイト。 unsigned shortを使う。 昇順。 [3] 環境 [3.1] Windows [3.2] visual studio [3.3] C [4] 5月27日のお昼まで。 [5] C言語始めて3週間です。 お願いします。
>>882 (・3・) エェー 問題の意味が分からないYO!
884 :
デフォルトの名無しさん :2008/05/27(火) 13:15:08
[1] 授業単元: C言語 [2] 問題 文字列sの文字の順を逆に置き換える. 関数の戻り値は文字列s(の先頭を指すポインタ値). s: "This is a pen." ↓ s: ".nep a si sihT" [3] 環境 [3.1] OS:LINUX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C >876いつもありがとうございます。 助かります。 追加で問題だされました。 配列版のほうは自力でできましたがポインタ版のほうは無理でした。 よろしくお願いします。
>>884 (・3・) エェー 配列版とかポインタ版とか省略すんなYO!
過去ログ読み直さないと意味分からんYO!
#include<stdio.h>
char *reverse(char *s){
char *p, *q, t;
for(p=q=s;*q;q++);
for(q--;p<q;p++,q--) t=*p,*p=*q,*q=t;
return s;
}
int main(void){
char s[]="This is a pen.";
puts(s);
puts(reverse(s));
return 0;
}
886 :
◆Anhlv1kDvE :2008/05/27(火) 21:17:24
【質問テンプレ】 [1] 授業単元: C言語 [2] 問題文(含コード&リンク): コマンドプロンプトで実行して ”ファイル名は?” と聞いてきてテキストファイルのフルパス(場所)を入力してエンターキーで次は ”作成先は?” と聞いてきてフルパス(場所)を入力してエンターキーで終わり、 英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”NEWテキスト”と呼ぶ)に書き込み保存するプログラミングです。 実際の内容の結果は次のようになる。 -------------------英文.txt------------------------------- I was wondering if my plant needs friends, do I need to get more of the same plant so it can get polinated and produce peppers? 続く
887 :
◆Anhlv1kDvE :2008/05/27(火) 21:20:15
886 続き1 ------------------new英文.txt(プログラムによって新規作成)------------------------------ I was wondering if my plant needs friends, do need to get more of
888 :
"gra454 :2008/05/27(火) 21:21:14
887 続き the same so it can polinated and produce peppers? ------------------------------------------------- ポイント (1) NEWテキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう) 例)Apple と apple
889 :
gra454 :2008/05/27(火) 21:22:15
888 続き では違うものとしNEWテキストに書き込みされる。また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。 例)get! と get つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。 (できるならnew英文.txtは記号を削除して英数字の大文字と小文字のみにしたい。その場合上の例は重複となる) (2) Windowsで動作すること。NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけたものでいい。 例)英文.txt → new英文.txt [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual C++ 2005 [3.3] 言語: どちらでも可 [4] 期限: ([2008年6月2日まで] [5] その他の制限: 初心者です
>>886 (・3・) エェー ほらYO!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct tag_list_t{
int num;
char **wordlist;
}list_t;
int list_add(list_t *list, char *word){
int i;
for(i=0;i<list->num;i++) if(strcmp(list->wordlist[i], word)==0) return 0;
list->wordlist=realloc(list->wordlist, sizeof(char*)*(list->num+1));
list->wordlist[list->num]=strdup(word);
list->num+=1;
return 1;
}
int main(void){
list_t list={0, NULL};
char fname_in[FILENAME_MAX], fname_out[FILENAME_MAX], word[255+1];
FILE *fp_in, *fp_out;
printf("”ファイル名は?”");
scanf("%s", fname_in);
printf("”作成先は?”");
scanf("%s", fname_out);
if((fp_in=fopen(fname_in, "r"))==NULL) return 1;
if((fp_out=fopen(fname_out, "w"))==NULL) return 2;
while(fscanf(fp_in, "%255s", word)==1) if(list_add(&list, word)) fprintf(fp_out, "%s\n", word);
fclose(fp_in);
fclose(fp_out);
return 0;
}
質問長いしうpロダ使えよ
>>889 (・3・) エェー 記号削除版だYO!
while(fscanf(fp_in, "%255s", word)==1) if(list_add(&list, word)) fprintf(fp_out, "%s\n", word);
↓
while(fscanf(fp_in, "%255[A-Za-z]%*[^A-Za-z]", word)==1) if(list_add(&list, word)) fprintf(fp_out, "%s\n", word);
893 :
デフォルトの名無しさん :2008/05/28(水) 00:15:53
894 :
デフォルトの名無しさん :2008/05/28(水) 00:17:25
895 :
◆hwfaJ.m7oQ :2008/05/28(水) 00:28:46
>>886 ありがとうございます。
実行すると(記号未削除版)
ファイル名は? 1.txt
作成先は? C:\
続行するには何かキーを押してください . . .
と出てエンターキーをおしても何も作られませんが?
896 :
デフォルトの名無しさん :2008/05/28(水) 00:40:57
ヴィジュアルベーシック2005 携帯プログラミング テキストボックス1に文字が出る ボタン12個 ボタン1(1) ボタン2(2、A,B,C) ボタン3(3、D,E,F) ・・・ ボタン9(9、W,X,Y,Z) ボタン10(*)入力画面を初期化 ボタン11(0) ボタン12(#)同じ文字・数字をつづけて入力できる 多いですがプログラミングコードを教えてください。 本当によろしくお願いします。
>>893 #include <stdio.h>
int main(void){
int score[20], range[5] = {0}, input, i = 0, k;
while(i < 20){
printf("[No.%2d]の成績を入力して下さい: ", i+1);
scanf("%d", &input);
if(input >= 1 && input <= 5){
score[i] = input;
range[input -1]++;
i++;
}
}
puts("*** 成績分布 ***");
for(i=0; i<5; i++){
printf("評価[%d] (%2d人) ", i+1, range[i]);
for(k=0; k<range[i]; k++){
if(k != 0 && k%5 == 0) putchar(' ');
putchar('*');
}
puts("");
}
return 0;
}
898 :
デフォルトの名無しさん :2008/05/28(水) 09:33:44
899 :
デフォルトの名無しさん :2008/05/28(水) 09:43:03
900 :
◆ob60wHXQlc :2008/05/28(水) 09:57:39
>>883 100個の数字が入ったファイルが2つ用意されるので、
それを合わせて昇順にソートして、
新しいファイルに書き込むというものです。
ファイルはいっきに読み込まず、1レコードずつです。
よろしくお願いします。
902 :
デフォルトの名無しさん :2008/05/28(水) 10:12:33
903 :
デフォルトの名無しさん :2008/05/28(水) 10:14:02
>>882 (・3・) エェー こんなもん?
#include<stdio.h>
#include<stdlib.h>
#define DATA_NUM_MAX (100*2)
int compare(const unsigned short *a, const unsigned short *b){
if(*a>*b) return 1;
if(*a<*b) return -1;
return 0;
}
int main(int argc, char *argv[]){
FILE *fp_in, *fp_out;
unsigned short data[DATA_NUM_MAX];
int i, data_num=0;
if(argc!=4){
printf("Usage: ./a.out filename[in] filename[in] filename[out]\n");
return 0;
}
for(i=0;i<2;i++){
if((fp_in=fopen(argv[i+1], "r"))==NULL) return 1;
for(;data_num<DATA_NUM_MAX;data_num++)
if(fscanf(fp_in, "%hu", &data[data_num])!=1) break;
fclose(fp_in);
}
qsort(data, data_num, sizeof(data[0]), (int (*)(const void *,const void *))compare);
if((fp_out=fopen(argv[3], "w"))==NULL) return 2;
for(i=0;i<data_num;i++) fprintf(fp_out, "%hu\n", data[i]);
return 0;
}
906 :
◆ob60wHXQlc :2008/05/28(水) 11:01:50
>>883 ありがとうございます!!!!!!!
ちなみに、入ってる数字の数は不明だったとして、
ファイル1とファイル2の名前は相手に入力させ、
freadとfwriteを使ってファイル3に書き込み、
それをソートして1レコードずつ出力する。
っていうのはできたりするんでしょうか‥。
長くてすいません‥。
907 :
デフォルトの名無しさん :2008/05/28(水) 11:08:15
>>905 ありがとうございます。
しかし、コンパイルしたら(haii1.cで保存)
haii1.c: In function `main':
haii1.c:14: warning: unknown escape sequence: `\' followed by char code 0x8e
となってしまいました…。
該当部分のprintf("\nデータ一覧を表示します\n");を削ったら成功したんですがどうすればいいんでしょう?
んなあほな、そこはエラーというエラーは起こらないはずだが・・・
「表示」 S-JIS 文字コードの場合、十六進数表記で 95 5C 8E A6 5C == '\\' ってことでコンパイルオプションに以下を追加すればいいYO! --input-charset=cp932 --exec-charset=cp932
俺も問題無し
911 :
デフォルトの名無しさん :2008/05/28(水) 11:27:09
すみませんが初心者なので
>>909 がよくわかりません。。。
具体的にはどうすればいいのでしょうか?
「表示」だけ削ればたしかに成功しますが…。
とりあえず、エラーじゃなくて警告だからスルーしておk
"表\示します" にすればいけるだろ
914 :
デフォルトの名無しさん :2008/05/28(水) 11:31:33
データ一覧を侮ヲします とでました。orz
915 :
デフォルトの名無しさん :2008/05/28(水) 11:33:54
>>913 よっしゃあああああああああああああああああああああああ
できました!!皆様ありがとうございました!!!!
>>911 コンパイラする時にcmdで渡す引数に
--input-charset=cp932 --exec-charset=cp932
を追加するって意味
C:\Work>command --input-charset=cp932 --exec-charset=cp932
917 :
デフォルトの名無しさん :2008/05/28(水) 11:43:48
まあ ソ系ダメ文字 でググれば原因はわかるはず
あぁ、あったなぁ・・・ソね。そーっすね。そうだね、そうなのか・・・そっかぁ・・
最小値の出し方はわかるんですけど、2番目に小さい値ってどうすれば出ますかね
最小の次、あるいはもう ソ ートして2番目ってことで
922 :
920 :2008/05/28(水) 15:25:47
>>921 お早い解答有難うございます!
「ソーティング」で調べてやってみたらできました有難う御座いました。
さらに3番目、4番目、……、一番大きい値と知りたいとかならともかく 2番目を知りたいだけならわざわざソートするのは無駄が多い気がしなくもない
ソうやなぁ。まず一番最小の要素をチェキして、その要素以外で 次に最小のものをチェキ。並び替える必要はないが、基本選択法の 一部を用いれば・・・
925 :
デフォルトの名無しさん :2008/05/28(水) 15:50:14
比較と代入ってどっちが遅いんだっけ とりあえずi386系
俺の超高速挿入はむっちゃ早いで?クイック挿入なんて目じゃねーぜ
口で語る前にソース書け
要するに全部配列使ってやればいいんでしょ int takara[SIZE][SIZE];/*宝が入ってれば1 無ければ0*/ int hide[SIZE][SIZE];/*既にオープンされている=1 されていない=0*/ int around[SIZE][SIZE];/*周囲の宝の数*/ もう出来たも同然
>>930 defineのビットマスクのとこにその配列を入れるってことですよね?
なんか実行できないのですが…
お手数かけますがプログラムを書いていただけませんか?
932 :
デフォルトの名無しさん :2008/05/28(水) 23:57:30
>>933 解答していただき本当にありがとうございます
staticっていうのはまだ習ってないのですが簡単に書き直せませんか?
935 :
デフォルトの名無しさん :2008/05/29(木) 01:53:38
>>934 static外せばいいよ
どうせmain()は一回しか呼ばれて無いだろうし
936 :
デフォルトの名無しさん :2008/05/29(木) 02:14:40
#include <stdio.h> #include <stdlib.h> main(){ int I, YOU; srand(time(NULL)); I=rand()%3+1; YOU=rand()%3+1; printf("my choice="); scanf("%d",&I); printf("your choice="); scanf("%d",&YOU); if(I==0){ if(YOU==0){ printf("引き分け\n");} if(YOU==1){ printf("勝ち\n");} if(YOU==2){ printf("負け\n");} } else if(I==1){ if(YOU==0){ printf("負け\n");} if(YOU==1){ printf("引き分け\n");} if(YOU==2){ printf("勝ち\n");} } else{ if(YOU==0){ printf("勝ち\n");} if(YOU==1){ printf("負け\n");} if(YOU==2){ printf("引き分け\n");} }}
937 :
デフォルトの名無しさん :2008/05/29(木) 02:16:08
乱数使ってジャンケンしろって問題なんですが相手(YOU)の入力を
乱数にするにはどうすれば良いのでしょうか?
>>936 に書いてみましたが
IとYOUの両方とも入力しなければならないこととなっています。
938 :
デフォルトの名無しさん :2008/05/29(木) 02:40:10
あ、出来ました。 IとYOUってのがちょっと分かりにくいですがw main(){ int I, YOU; srand(time(NULL)); YOU=rand()%3+1; printf("my choice="); scanf("%d",&I); printf("your choice=%d\n",YOU); printf("%d,%d\n",I,YOU);
939 :
デフォルトの名無しさん :2008/05/29(木) 15:39:48
940 :
デフォルトの名無しさん :2008/05/29(木) 16:39:16
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 西暦年を引数に取り、閏年かどうか判定する 関数 is_leap_year() を用いて、 開始年と終了年を入れると、開始年、終了年およびその間の年に 閏年が何個あるか数えるプログラムを作成せよ。 [3] 環境 [3.1] OS: (Windows) [3.2] 言語: (C++) [4] 期限: 5/29
#include <stdio.h> int is_leap_year(int year){return((((year) % 4) == 0) && (((year) % 100) != 0) || (((year) % 400) == 0));} int main(void){ int count=0; int i,a,b; scanf("%d %d",&a,&b); for(i=a;i<=b;i++){ if(is_leap_year(i)) count++; } printf("%d",count); return 0; }
転載。期限切れだけど誰かやってあげて。 [1] 授業単元:Windous Programming [2] 問題文(含コード&リンク): 限界まで新規ウィンドウを開き続けるプログラムを完成させなさい。ただし、 1.開くウィンドウの閉じるボタン(通常右上に配置される[x]ボタン)は無効にすること。 2.限界まで開いたら、開いたウィンドウを全て閉じてきちんと後始末すること。 3.開いたウィンドウ数をカウントしておき、最後に「あなたのマシンの窓力はxxxです。」 (xxxには数値が入る)とダイアログで表示して終了すること。 [3] 環境:WindowsXP, VC++, C++ [4] 期限: 昼までに [5] その他の制限: 特になし
意味ワカンネ
>[1] 授業単元:Windous Programming そんな単元あるなら見てみたいもんだ。
945 :
デフォルトの名無しさん :2008/05/30(金) 16:49:35
[1]C言語 [2]組・名前・国語の点数・算数の点数が入った構造体がある。 もし組が同じなら、国語の点数を足していって、 1組ごとの合計をファイルに出力して、また次の組も。(算数も同様に。) [3] 環境 [3.1]Windows [3.2]visual studio [3.3]C [4]5月31日12:00 [5]キーブレイクというのをやらせたいみたいです。
946 :
デフォルトの名無しさん :2008/05/30(金) 17:29:05
>>945 問題文省略して無い?
それじゃいくらなんでも適当すぎる
そもそも、キーブレイクとはなんなのだ。
948 :
945 :2008/05/30(金) 17:42:38
これしか聞いてなかったので今質問してきます!!
[1]C [2]放物線プログラム 定数として重力加速度、初速度 経過時間からX,Yをもとめる。 経過時間0の場合は(X,Y)は(0,0)
ま、ぼるじょあが何であるか理解できてないような板だから、期待してはいないけどね。
953 :
945 :2008/05/30(金) 21:09:46
大事なとこが抜けてました。。 成績データレコード struct PERSONAL_REC { unsigned char number; (クラス番号) unsigned char reserve[3]; (予備) unsigned char name[80]; short kokugo; short sansuu; }; 成績集計レコード struct CLASS_REC { unsigned char number; (クラス番号) unsigned char reserve[3]; (予備) short kokugo; short sansuu; }; を使うということです! お願いします。
954 :
◆AfLWwW3FJ2 :2008/05/31(土) 00:12:40
前も質問してなかった?別スレで
956 :
◆AfLWwW3FJ2 :2008/05/31(土) 01:27:10
>>955 どこかに投稿した覚えありますが
見失ったのですいません
お願いします。
ひとついえることがある。 今の計算機ではshortは速度においても消費メモリにおいても doubleとまったく変わらないケースがほとんど。
>>956 質問しておきながら見失ったんですか。。。
善良な誰かが大切な時間を費やして回答してくれたかもしれないのに、
それをいともたやすく踏みにじるんですね。
反吐が出ます。
959 :
◆AfLWwW3FJ2 :2008/05/31(土) 04:00:21
>>958 いえどこかにテキストをアップロードしただけで
質問はしてません。
一応すいません。ここはプログラムを教えあうところで
言い合いしたくないので。
質問がどんどん埋もれるので
954
の質問お願いします。
>>959 tolower使えばいいじゃん。
なんなの?
作ってもらって理解してないからそんな醜態晒すことになるんだよ 頼むから留年してよ
>>954 (・3・) エェー ただ一つの愛があれば救われるYO!
(・3・) 〜♪
> ここはプログラムを教えあうところで言い合いしたくないので。 質問がどんどん埋もれるので954の質問お願いします。 これは笑ったwwwwww
>>965 一応すいません。ここはプログラムを教えあうところで
言い合いしたくないので。
質問がどんどん埋もれるので
954
の質問お願いします。
wwwwww
[1] 授業単元: [2] 問題文(含コード&リンク): 分子と分母をint型で入力すると、その小数値を表示するプログラムを作成せよ。 なお、循環する場合は"[ ]"で括る事。 例: 分子:1 分母:3 値:0.[3] [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2008/6/1 23:00 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 桁数があまりにも多くなる場合、任意で打ち切ってよい。 ただしその場合は閉じ括弧は表示しないこと。
>>959 > ここはプログラムを教えあうところで
いいえ。ぼるじょあがC/C++の宿題を片付けるところです。
>>968 質問がどんどん埋もれるので
954
の質問お願いします。
wwwwww
>>967 (・3・) エェー 結構面倒だったYO!
#include<stdio.h>
#define BUF_SIZE 2048
int main(void){
int bunsi, bunbo, c, i, is_inf=0;
int mod[BUF_SIZE];
char result[BUF_SIZE];
scanf("%d %d", &bunsi, &bunbo);
printf("%d.", bunsi/bunbo);
bunsi%=bunbo;
for(c=0;(mod[c]=bunsi%bunbo) && c<BUF_SIZE && !is_inf;c++){
result[c]=bunsi*10/bunbo+'0';
for(i=0;i<c;i++){
if(mod[c]==mod[i]){
is_inf=1;
break;
}
}
bunsi=(bunsi*10)%bunbo;
}
if(is_inf) printf("%.*s[%.*s]\n", i, result, c-1-i, result+i);
else printf("%.*s\n", c, result);
return 0;
}
971 :
側近中の側近 ◆0351148456 :2008/06/01(日) 22:59:04
972 :
デフォルトの名無しさん :2008/06/01(日) 23:48:15
質問がどんどん埋もれるので 954 の質問お願いします。
975 :
デフォルトの名無しさん :2008/06/05(木) 00:04:25
[1] 授業単元:プログラミング演習1 [2] 問題文(含コード&リンク): m ×m 行列を入力し和と積を求め、結果を行列の形で表示させる プログラムの作成。但し、入力した行列も表示。 <表示例> 1 2 3 4 [3] 環境 [3.1] OS:WinXP/linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等):VC++/gcc [3.3] 言語:C言語 [4] 期限:2008/06/06 [5] その他の制限: stdio.h、入力はscanf関数、出力はprintf関数、配列で プログラムの冒頭ですが、これで配列可変になるんでしょうか…? int m,i,j;/*要素、カウント用変数宣言*/ printf("行列数を入力"); scanf("%d",&m); int a[m]=0; int b[m]=0;
>>975 > プログラムの冒頭ですが、これで配列可変になるんでしょうか…?
C89はできません
977 :
デフォルトの名無しさん :2008/06/05(木) 00:15:58
[1] 授業単元: [2] 問題文: ポインタを使った循環リストを実装せよ.リストの表示、ノード の挿入,削除を行う関数を作ること.なお,リストのノードNode は以下のよ うに定義されている. typedef struct { // data type int no; char name[10]; } Data; typedef struct __node { // node definition Data data; struct __node *next; } Node; 実行例: (0) Insert a Node (1) Delete a Node (2)View the List (3) exit : 0 Please input the data. No.: 1 Name: Lu (0) Insert a Node (1) Delete a Node (2)View the List (3) exit : [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:BorlandC++ [3.3] 言語:C [4] 期限:6月5日16:00 [5] その他の制限:一応構造体まで習っているので、初歩的な知識程度だと思われます よろしくお願いします
978 :
デフォルトの名無しさん :2008/06/05(木) 01:13:25
2008/06/01
こんにちは 管理人です
2003年から運営しているこのサイトですが
もはや掲示板やブログの類は機能せず、
唯のアップローダーサイトになってしまっているという現実と
本スレの酷い衰退具合と、運営費の問題と
そして私の受験という様々な要因から
今までも事実上の閉鎖状態ではありましたが
今日をもちまして正式な閉鎖とさせて頂きます。
何故かアップローダーとしては多少名が知れているらしく、
毎日何方かが利用して下さってたのですが 申し訳ありません。
ここについては基本的に弄ることなく残しておこうとは思いますが、
XREAの有料アカウントが解除されると同時に容量制限により
過去ログは殆ど飛んでしまうと思われます。(11月に切れます)
過去ログが飛んでしまえばもはや何も無い空のサイトですが、
せめてAAデータベースや1001変更の纏めは残しておきます。
borujoa.orgとpcqa.orgのドメインに関しての処理は未定です
今後どこかで流用するかもしれません。
右に表示されているメッセのアカウントは現在でも使用しており、
これからも使用する予定なので
過去ログがどうしても必要だ、等何か連絡がありましたらお気軽にどうぞ。
中1から始まったゆとりの暇つぶしに今までお付き合い頂き、
本当にありがとうございました。
ぼるじょあ文化が絶えないことを祈っております。
ではまたいつか
http://www.borujoa.org/
VS2008のVC++を使っているのですが インテリセンスの表示をデフォルトのCtrl+Spaceではなくて VBのように何も押さなくても リアルタイムに表示するようにしたい場合はどうすればいいでしょうか?
C言語のリスト構造によるスタック・キューそれぞれについて、 要素数を管理する変数を用意して追加・削除の際に更新する方法で、 格納されている要素数を取得することの利点・欠点がわかりません。 又は、スタック・キューの全要素を追査して現要素数を調べて要素数を 取得する方法の利点・欠点でも構いません。 どなたか宜しくお願いします。
982 :
デフォルトの名無しさん :2008/06/05(木) 13:14:56
>>981 要素数を得るときの計算量がO(1)かO(n)かの違いでいいんでね?
>>981 別途変数を用意すると要素数を知るのが速くなるが、その分メモリを多く消費する
984 :
デフォルトの名無しさん :2008/06/05(木) 17:02:16
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): A=1を何倍ずつしていくと50回目に1,000,000を越えるか? [3] 環境 [3.1] OS: (Windows) [3.2] 言語: (C++) [4] 期限: 6月6日 似た問題もわかりませんが、これ一問を質問させていただきます。 よろしくお願いします。
1.32
986 :
デフォルトの名無しさん :2008/06/05(木) 19:43:34
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 2次元配列(hai[10][10])を用いる。 各マスには予め1または2がランダムで入力されている。 100マスの中で、1と2のサイズを計測せよ。 なお、境界は存在せず、トーラス状とする。 例) 1,1,1 2,1,1 1,1,1 であれば、 1:8 2:1 1,1,1 2,1,2 1,2,1 であれば、 1:6(トーラス状であるため、左下と右下も一つの塊と見る) 2:2(トーラス状であるため、中段の左右は一つの塊と見る),1 [3] 環境 [3.1] 言語: どちらでも可 [4] 期限: 6月10日 解決の糸口が見つかりません。 どうかよろしくお願いします。
トーラスじゃない場合はできる?
多次元配列を利用して、5人の3教科(国語・数学・英語)の最高点を出すソースと、平均点を出すソースをそれぞれ別々に教えていただけませんか?
>>984 (・3・)エェー この倍数って実数でしょ?
2倍ずつしてっても1000000超えるYO!
と言うより単にlog2(1000000)のような気が・・・・
じゃなかった 不等式 logx(1000000) >= 50 を解けばいいのか
1000000^(1/50)<x<1000000^(1/49)
誰かニュートン法でも二分法でもいいから解いてやってくれ
>>986 解決しました。
心優しい方ありがとう。
>>984 (・3・) エェー
>>993 がズバリ答えだYO! (表示している数値は10^-5まで有効だYO!)
#include<stdio.h>
#include<math.h>
int main(void){
printf("%.6f<x<%.6f\n", pow(1000000., 1./50), pow(1000000., 1./49));
return 0;
}