C/C++の宿題を片付けます 109代目
at TECH
1:デフォルトの名無しさん
08/06/08 12:30:56
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
【C 関数検索 man on WWW】 URLリンク(www.linux.or.jp)
【過去ログ検索】 URLリンク(chomework.sakura.ne.jp)
【wiki】 URLリンク(www23.atwiki.jp)
【前スレ】C/C++の宿題を片付けます 108代目
スレリンク(tech板)
2:デフォルトの名無しさん
08/06/08 19:14:28
[1] 授業単元:
Cプログラミング
[2] 問題文(含コード&リンク):()
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
スレが変わったのでもう一度書き込ませていただきます。
明日までなのでどうにかよろしくお願いします。。
3:デフォルトの名無しさん
08/06/08 20:08:35
[1]プログラミング
[2]問題文
int型整数の四乗値を返す関数、int pow4(int x)を作る。
ただし関数sqrを利用すること。
[3-1]windows
[3-2]gcc
[3-3]C言語
[4]明後日まで。
よろしくお願いいたします。
4:デフォルトの名無しさん
08/06/08 20:09:51
>>3
>関数sqr
ここ詳しく
5:デフォルトの名無しさん
08/06/08 20:18:31
[1] 授業単元:Cプログラミング入門
[2] 問題文:間隔1の碁盤目状に格子点が並んでいます。
外径R+1、幅1の円環に含まれる格子点の数nを求めるプログラムを作成しなさい。
なお、格子点が円環の境界上にあった場合、外側境界上の点は含め、内側境界上の点は含めない。
以下に半径R=2の場合を示します。
URLリンク(upp.sakura.ne.jp)
全部で16個の格子点が円環に含まれます。
半径が少ない場合の例をあげておきます。
(R,n)=(0,4),(1,8),(2,16),(3,20),(4,32)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限:[2008年6月10日まで]
[5] その他の制限:まだ大した勉強はしていません。
6:デフォルトの名無しさん
08/06/08 20:19:04
>>3
#include <stdio.h>
int sqr(int x) {
return x * x;
}
int pow4(int x) {
return sqr(sqr(x));
}
int main(void) {
int n;
scanf("%d", &n);
printf("%d\n", pow4(n));
return 0;
}
7:デフォルトの名無しさん
08/06/08 20:21:29
>>4
問題文には、二乗値を返すという問題の際にsqrという関数を使ったんですが、この四乗値を返すという問題でもsqrを使えと書いてるんですよね。
8:デフォルトの名無しさん
08/06/08 20:31:17
>>5
#include<stdio.h>
#include<math.h>
#define EPS (1e-10)
long internal_point(double r){
int x, y;
long count=0;
for(x=0;x<=r;x++){
y=sqrt(r*r-x*x+EPS);
if(x==0) count+=2*y+1;
else count+=(2*y+1)*2;
}
return count;
}
int main(void){
int R=2;
printf("%ld\n", internal_point(R+1)-internal_point(R));
return 0;
}
9:デフォルトの名無しさん
08/06/08 20:33:28
>>7
int pow4(int x){ return sqr(x)*sqr(x); }
10:デフォルトの名無しさん
08/06/08 20:33:38
>>8
ありがとうございました。
11:デフォルトの名無しさん
08/06/08 20:35:07
>>6
#include <stdio.h>
#define R 2
int main()
{
int x, y;
unsigned n = 0;
for(x = -(R + 1); x <= R + 1; ++x)
for(y = -(R + 1); y <= R + 1; ++y)
{
unsigned r = x * x + y * y;
if(R * R < r && r <= (R + 1) * (R + 1)) ++n;
}
printf("%d\n", n);
return 0;
}
浮動小数点数つかうなんて正気の沙汰と思えねえ
12:デフォルトの名無しさん
08/06/08 20:45:55
Rが整数だとは?
13:デフォルトの名無しさん
08/06/08 20:50:20
>>11
それだと実行時間が半端ねえよ
R=10000 の時
>>8 1[msec]
>>11 625[msec]
14:5 ◆3kDaM44dXs
08/06/08 21:10:06
>>8
すいません、これだと
R=2のときのものしかできないので、
Rを打ち込んでそのときのnを求めるプログラムがほしいのですが…
>>12
整数です。
15:デフォルトの名無しさん
08/06/08 21:30:10
>>14
#include<stdio.h>
#include<math.h>
#define EPS (1e-10)
long internal_point(double r){
int x, y;
long count=0;
for(x=0;x<=r;x++){
y=sqrt(r*r-x*x+EPS);
if(x==0) count+=2*y+1;
else count+=(2*y+1)*2;
}
return count;
}
int main(void){
int R=2, n;
printf("Input R : ");
scanf("%d", &R);
n=internal_point(R+1)-internal_point(R);
printf("%d\n", n);
return 0;
}
16:5 ◆3kDaM44dXs
08/06/08 21:35:35
>>15
ありがとうございました。
17:デフォルトの名無しさん
08/06/08 21:47:23
格子点の表示はしなくていいの?
18:5 ◆3kDaM44dXs
08/06/08 21:48:32
>>17
格子点の数nだけでよいです。
ありがとうございます。
19:デフォルトの名無しさん
08/06/08 22:03:53
[1] 授業単元:コンピュータグラフィックス
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VisualC++6.0
[3.3] 言語: C++
[4] 期限:明日の昼までにお願いします。
[5] その他の制限:元の図をもとに、できるだけ簡単にお願いします。
20:デフォルトの名無しさん
08/06/08 22:04:20
[1] 授業単元:コンピュータ入門
[2] 問題文(含コード&リンク):
たてa,よこbの長方形から半径cの円をできるだけ多く取りなさい
出力:円は何個できましたか?
長方形の何パーセント使いましたか?
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:わかりません
[3.3] 言語: C
[4] 期限:明日中
[5] その他の制限:できるだけ簡単に
お願いします
21:前スレ765
08/06/08 22:06:33
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):forkによる子プロセスの生成
子プロセスを2つ生成して、それぞれに、fork1, fork2 のプログ
ラムを実行させるようなプログラムを作成しなさい。
///fork1.c///
URLリンク(kansai2channeler.hp.infoseek.co.jp)
///fork2.c///
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:6月11日
fork1とfork2は外部プログラムとして呼びます。
よろしくお願いします。
22:デフォルトの名無しさん
08/06/08 23:16:23
[1] 授業単元:アルゴリズム論
[2] 問題文(含コード&リンク):()
安定結婚問題を解くプログラムを実装し実行せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 6/9(月)の13時まで
[5] その他の制限:
過去ログ106を基に組み立ててみたのですが、どうも安定な組合わせが
うまく出力できません。どうかよろしくお願いします> <
URLリンク(kansai2channeler.hp.infoseek.co.jp)
23:デフォルトの名無しさん
08/06/09 00:14:47
>>20
#include<stdio.h>
int main(void){
int a,b,c,count=0,menseki=0;
double circle=0,amari=0;
printf ("縦:");
scanf("%d",&a);
printf ("横:");
scanf("%d",&b);
printf ("円の半径:");
scanf("%d",&c);
menseki = a*b;
circle = c*c*3.14;
count = menseki/circle;
amari = (menseki-(circle*count))/menseki;
printf ( "%d個 余り%4.2f%%\n",count,(amari*100));
}
間違えたこれ円の個数じゃなくて、ただ面積引いてるだけだ
長方形から円を引くって難しいな…俺も知りたいから誰か答えて
24:デフォルトの名無しさん
08/06/09 01:08:42
>>20
問題文は以上ですか?
その問題文ですべてなら
円はほぼ無限個でき、長方形のほぼ100%を使うことができます。
25:デフォルトの名無しさん
08/06/09 01:12:45
できるわけねーだろ
26:デフォルトの名無しさん
08/06/09 01:13:06
>>24
わかりにくくてすみません
長方形を円でくりぬいていき何個円ができるかという感じでお願いします
>>23
考えてくださってありがとうございます
27: ◆nOwZY.WgD2
08/06/09 03:35:22
[1] 授業単元:Cプログラミング入門
[2] 問題文:文字列を入力し、その長さ(入力した文字数)を求めよ
[例]文字列を入力して下さい:abcde fghijkl mn
文字の長さ:16
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名:VC++6.0
[3.3] 言語:C
[4] 期限:6月10日まで
[5] その他の制限:標準関数を使わずにお願いします。
28:デフォルトの名無しさん
08/06/09 03:44:47
>>27
#include <stdio.h>
int main(void){
char str[64];
int nlen;
scanf("%s", str);
for (nlen = 0; str[nlen]; nlen++);
printf("文字列の長さ:%d", nlen);
return 0;
}
29:デフォルトの名無しさん
08/06/09 03:45:38
ゴメン、scanfはスペースで区切っちゃうんだった
30: ◆nOwZY.WgD2
08/06/09 04:00:14
>>28
ありがとうございます!
こうやってみるとめっちゃ簡単ですね(;><)
31:デフォルトの名無しさん
08/06/09 04:09:27
gets使ってもいいなら
scanf("%s", str);
↓
gets(str);
にしといてください
32:デフォルトの名無しさん
08/06/09 04:49:08
#include <stdio.h>
int main(void)
{
int i, ch;
printf("文字列を入力して下さい:");
for(i=0; (ch=getchar())!='\n'; i++);
printf("文字の長さ:%d\n", i);
return 0;
}
33:デフォルトの名無しさん
08/06/09 05:29:30
#include <stdio.h>
int main(void)
{
int i, ch;
printf("文字列を入力して下さい:");
for(i=0; (ch=getchar())!='\n' && ch!=EOF; i++);
printf("文字の長さ:%d\n", i);
return 0;
}
34:デフォルトの名無しさん
08/06/09 10:22:30
>>20
ようするにクッキーの生地(長方形)から型(円)を何個とれるか、てこと?
35:20
08/06/09 10:44:00
>>34
そうです
36:デフォルトの名無しさん
08/06/09 12:33:25
>>21
外部プログラムとして動かすのにforkなの?
37:20
08/06/09 12:38:46
どなたか20の解答お願いします!!
38:デフォルトの名無しさん
08/06/09 12:53:25
>>37
難しいです
解法plz
39:デフォルトの名無しさん
08/06/09 13:18:42
むずいね。
しかも今日中か。
40:デフォルトの名無しさん
08/06/09 13:21:42
しかもこれがコンピュータ入門すか。
前回の課題とかせっかくだから載せてもらえる?
できれば作成したソースも。
41:デフォルトの名無しさん
08/06/09 13:25:31
>>20
とりあえず a<b ならそれなりの解が出るソースコード
解法plz
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int pattern1(double a, double b, double c){
int x, y;
y=(a-2*c)/(sqrt(3.)*c)+1;
x=b/(2*c);
return x*y-y/2;
}
int pattern2(double a, double b, double c){
int x, y;
y=a/(2*c);
x=b/(2*c);
return x*y;
}
int main(int argc, char *argv[]){
double a=20., b=30., c=3.;
int num, maximum;
switch(argc){
case 4: c=atof(argv[3]);
case 3: b=atof(argv[2]);
case 2: a=atof(argv[1]);
}
maximum=pattern1(a, b, c);
num=pattern2(a, b, c);
if(num>maximum) maximum=num;
printf("円の数:%d 使用率:%.3f%%\n", maximum, (c*c*M_PI*maximum)/(a*b)*100);
return 0;
}
42:41
08/06/09 13:44:20
>>20
>>41 の訂正
return x*y-y/2;
↓
return x*y-((b-x*2*c<c)?y/2:0);
43:デフォルトの名無しさん
08/06/09 13:47:56
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
abbcという問題の中にabがあればそのabをxyzに置き換えるプログラムをつくりなさい、です。
また、なかった場合は問題をそのまま出力するようにしなさい、です。
問題と単語は自分で適当に入力するようにプログラムするようにしなさい、です。
どうぞよろしくお願いします。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: (2008年6月12日まで
[5] その他の制限: ポインタ変数を習ってまもないです
44:デフォルトの名無しさん
08/06/09 14:00:10
>>43
#include<stdio.h>
#include<string.h>
void replace(char dest[], const char src[], const char modify[], const char org[]){
const char *p;
int org_len;
org_len==strlen(org);
while((p=strstr(src, org))){
dest+=sprintf(dest, "%.*s%s", p-src, src, modify);
src+=p-src+org_len;
}
sprintf(dest, "%s", src);
}
int main(void){
char *src="abbc", *org="ab", *modify="xyz";
char dest[1024];
puts(src);
replace(dest, src, modify, org);
puts(dest);
return 0;
}
45:デフォルトの名無しさん
08/06/09 14:01:03
>>44 の == を = に訂正しておいて
46:デフォルトの名無しさん
08/06/09 14:52:14
ここのスレって、意外と勉強になる、、、、
47:デフォルトの名無しさん
08/06/09 14:53:51
>>46
ここも一緒に見てると、C言語に詳しい人があれこれ討論して
て知らないことも詳しくでてきたりするのでいいよ。
C言語なら俺に聞け(入門篇) Part 29
スレリンク(tech板)
48:デフォルトの名無しさん
08/06/09 15:22:34
>>44
ありがとうございます。
あと、聞きたいのですが、xyzに置き換えるのはそのままでアルファベットを任意でprintf,scanfして行う場合は
どのようにプログラムを書いたらいいのでしょうか?
49:デフォルトの名無しさん
08/06/09 16:38:39
[1] 授業単元:Cプログラミング
[2] 問題文:
入力した文字からキャラクターを作成し、名前とパラメーターを表示。
入力した文字によってパラメーターが変化する。
例)・生命力 = 入力した文字コードの合計
・攻撃力 = 入力した偶数番目文字コードの合計
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名:VC++6.0
[3.3] 言語:C
[4] 期限:6月13日まで
[5] その他の制限:文字列操作を習ったばかりです。
例にある生命力、攻撃力の場合のプログラムをお願いします。
50:デフォルトの名無しさん
08/06/09 16:44:54
リナックスの問題で
1+(1+2)+(1+2+3)+(1+2+3+・・・+n)
二重ループを用いて書いてください。
よろしくお願いします
51:デフォルトの名無しさん
08/06/09 16:46:22
>>49
#include <stdio.h>
#include <string.h>
int main(void) {
char name[1024];
int code = 0;
int hp = 0, at = 0;
int i = 0;
gets(name);
for (i = 0; i < strlen(name); i++) {
code = name[i];
hp += code;
if (i % 2 == 0) {
at += code;
}
}
printf("名前:%s 生命力:%d 攻撃力:%d\n", name, hp, at);
return 0;
}
間違ってたら自分で治してね☆
52:デフォルトの名無しさん
08/06/09 17:15:12
>>51
無事エラーも出ず、例のとおり実行できました。
ありがとうございます。
53:デフォルトの名無しさん
08/06/09 17:22:15
>>50
#include <stdio.h>
int main(void)
{
int i, j, n, sum = 0;
scanf("%d", &n);
for(i=1; i<=3; i++) for(j=1; j<=i; j++) sum += j;
for(i=1; i<=n; i++) sum += i;
printf("%d", sum);
return 0;
}
54:デフォルトの名無しさん
08/06/09 17:33:09
1 + (1 + 2) + (1 + 2 + 3) + ・・・ + (1 + 2 + 3 + ・・・・ + n)
55:デフォルトの名無しさん
08/06/09 17:47:37
[1] 授業単元:グラフ理論2
[2] 問題文:
ノード数100、平均リンク数4の、 ランダムネットワークを生成。
各ノードには予め1or-1の値をランダムで割り振る。
このネットワーク全体の熱量を求めるプログラムを考えよ。
*注意1
Ni(ノードi)とNj(ノードj)、
熱量=Ni*Nj
上記の式を全リンクで計算し、結果を足し上げていく。
すなわち、接続しているノード同士が同じ値だと全体の熱量は増していく。
*注意2
ランダムネットワークとは、リンク数とリンク先がランダムに選択されたネットワークのことで、今回は分断されてないネットワークを利用すること。
[3] 環境
[3.1] 言語:C
[4] 期限:6月11日まで
以上、よろしくお願いします。
56:
08/06/09 19:31:20
内容:
[1] 授業単元: c言語
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows vista
[3.2] コンパイラ名とバージョン:
[3.3] 言語: c
[4] 期限: ([yyyy年mm月dd日hh:mmまで] 今週中に
[5] その他の制限:問題文の部分に書いてます。
57:デフォルトの名無しさん
08/06/09 20:13:55
>>50
int main(void){
int i=0;
int total=0;
int n=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
total+=1+i*i/2;
}
return 0;
}
え?二重ループ?
無駄はない方がいいよ
58:デフォルトの名無しさん
08/06/09 20:18:12
ん、計算順序おかしいや
total+=(1+i)*i/2;
だね
ついでに
printf("%d",total);
も足しといて
59:デフォルトの名無しさん
08/06/09 20:26:21
問題の指定を守らないのは回答する資格ないから
60:デフォルトの名無しさん
08/06/09 20:53:40
>>20
は壮大な釣りだよ。最密充填はそれほど簡単な問題ではない。
ここ数百年かけてかなり解けるようになってはいるけどね。
多数の数学者の頭脳を持ってしても手こずっている問題だと
推して知るべし。
61:55
08/06/09 20:56:21
失礼しました。
再度お願いいたします。
[1] 授業単元:グラフ理論2
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] 言語:C
[4] 期限:6月11日まで
62:デフォルトの名無しさん
08/06/09 21:20:35
>>60
そこまで大仰なものでもないだろ
63:デフォルトの名無しさん
08/06/09 21:24:52
長方形に円をつめるだけなら簡単。
64:デフォルトの名無しさん
08/06/09 21:28:25
>>56
vistaでの日本語文字コードって何だっけ?
Shift-jis と仮定してよいなら、
int c;
while ((c = getchar()) != EOF) {
if (c & 0x80) {
putchar(c); c = getchar;
}
else if (islower(c)) c = toupper(c);
else if (isupper(c)) c = tolower(c);
putchar(c);
}
65:デフォルトの名無しさん
08/06/09 21:29:35
>>60
最適解を求めることができればそれはとてもすごいことだということは
分かるが、自分の思いつく範囲で可能な限りたくさん、というのを
試しているのだと思うよ。
a b がともに2*cよりも大きい
→円は1個でき、(c*c*PI)*100/(a*b) パーセント
という、とても稚拙なものであっても、とりあえず要求は満たされてるんだよ
ということで、>>20にはがんばってもらいたい。
66:デフォルトの名無しさん
08/06/09 21:31:21
getchar; -> getchar(); orz
67:デフォルトの名無しさん
08/06/09 21:34:39
[1] 授業単元:
Cプログラミング
[2] 問題文(含コード&リンク):()
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
今日中
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
明日以降でも提出はできるのですが、一応期限は今日までなのでよろしくお願いします。
68:デフォルトの名無しさん
08/06/09 21:35:55
>>67
たぶん前スレとかによく似たのがあるよ。
今日中ってのもアレな話だけど、がんばれ。
69:デフォルトの名無しさん
08/06/09 21:40:52
誰も見ていないし更新もされていないだろうwikiにスタック載ってるなw
70:デフォルトの名無しさん
08/06/09 22:07:40
>>41
ありがとうございます!
71:デフォルトの名無しさん
08/06/09 22:08:54
[1] 授業単元:
Cプログラミング
[2] 問題文(含コード&リンク):()
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
ChSciTE
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
今日中
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ファイル読み込み、書き込み
72:デフォルトの名無しさん
08/06/09 22:15:12
>>68
前スレっていうと自分の頼んだ課題かもしれません。前スレでも依頼したので・・
長くて面倒そうだからやってもらえないのかもしれませんが、どうにかよろしくお願いします。。
73:デフォルトの名無しさん
08/06/09 22:32:55
>>71ですが、
コンパイラはBorlandCでもいいです。
74:デフォルトの名無しさん
08/06/09 22:43:09
>>72
スレリンク(tech板:866番)
この人?なら回答してくれてない?
既に依頼済みならあらためてアップロードしてる意味がちょっと
分からないです。しかも必要な内容削られてるし。。。なぜ。。
75:デフォルトの名無しさん
08/06/09 22:45:27
>>74
その通りです。
1つ目の課題はやってもらったのですが、
もう一つの課題が残っていまして・・それが>>67なのです。。
76:74
08/06/09 22:45:59
ちゃんと動いたって報告してるしやっぱり違う人でしょかー。
例題のソースからもコメントがばっさり抜かれてるし、どういうことだろう。
77:67
08/06/09 22:46:15
ちなみに・・長すぎると読むのが面倒かなと思って、短く削ってアップロードし直しました。
78:デフォルトの名無しさん
08/06/09 22:53:22
>短く削って
何を削っていいか判断できるぐらいなら宿題も自分で解けるだろw
79:67
08/06/09 22:58:26
>>78
プログラミング上級者のここのスレの方達だと、例題のコメントや余計な制約は邪魔なだけかなと思って削らせていただきました。
何分実力不足なので、私自身の力では無理です。。力を貸して下さい
80:デフォルトの名無しさん
08/06/09 22:59:57
[1]プログラミング
[2]問題文
画面に「こんにちは」と表示して改行する、void hello(void)関数を作る。
[3-1]windows
[3-2]gcc
[3-3]C言語
[4]明後日まで。
よろしくお願いいたします。
81:デフォルトの名無しさん
08/06/09 23:01:19
>>80
void hello(void)
{
printf("こんにちわ\n");
return;
}
82:デフォルトの名無しさん
08/06/09 23:04:05
>>79
上級者(ってなんだ?)になればコメントが不要になるか?
→必要
制約を無視していいか?
→よくない
ということなんで、素直に
URLリンク(kansai2channeler.hp.infoseek.co.jp)
の課題2をお願いしますって言っとけばよかったのに。
むやみにアップロードして資源を使うこともないよ。
83:67
08/06/09 23:06:06
>>82
そうですね、すいません。余計なことをしてしまいました。。
これからは気をつけます。
84:デフォルトの名無しさん
08/06/10 00:31:55
>>59
回答するつもりも無いならレスする必要(ry
こうですか?わかりません><
この言い方古いのかな
85:デフォルトの名無しさん
08/06/10 00:33:55
>>84
っつーか2重ループの回答あがってるし、
どうでもいい
86:21
08/06/10 01:56:32
>>36
確認しましたが、特に指定はないとのことです…
曖昧な返答で申し訳ありません。どうかよろしくお願いします。
87:デフォルトの名無しさん
08/06/10 01:58:16
制約を守らないのにループを残した>>57はなんだ?
どうせならこうするがね。
int main(void){
int n=0;
scanf("%d",&n);
printf("%d\n", n*(n+1)*(n+2)/6);
return 0;
}
88:デフォルトの名無しさん
08/06/10 02:01:11
>>19お願いします。できれば今日中に・・・
89:デフォルトの名無しさん
08/06/10 02:09:47
>>86
forkを使って、fork1.c fork2.cそれぞれから生成される実行体を
外部プロセスとして呼び出すのですか?
という意図の質問をしてしまったのであれば、前回の課題を実力で
解答したのではないことがばれたかと。
理解しなかったっしょ。もったいない。
90:デフォルトの名無しさん
08/06/10 02:42:29
>>88
アフィン変換とかでぐぐってみればどうだろう。
91:デフォルトの名無しさん
08/06/10 03:28:18
[1] 授業単元:
C言語入門
[2] 問題文(含コード&リンク):
二つの整数値を入力したら最大公約数を表示してくれるやつ作れ
[3] 環境
[3.1] OS:
windows
[3.2]
borland c++ 5.5.1
[3.3] 言語:
C
自分で作ってみたのですがうまく動きません
どこが間違ってるんでしょうか?
#include <stdio.h>
int main (void)
{
int x,y,z=0,i=1;
printf("二つの整数を「,」で区切って入力してください:");
scanf("%d,%d",&x,&y);
while(i==1){
if(x>y) z=x-y;
if(x<y) z=y-x;
else break;
}
printf("最大公約数は%d\n",z);
return 0;
}
92:デフォルトの名無しさん
08/06/10 03:50:48
>>91です
意味ないかもしれませんが
正解に近づいたかもしれないので貼ってみます
#include <stdio.h>
int main (void)
{
int x,y,a,b;
printf("二つの整数を「,」で区切って入力してください:");
scanf("%d,%d",&x,&y);
a=x;
b=y;
while(a!=b){
if(a>b) a=a-b;
if(a<b) a=b-a;
}
printf("%d%dの最大公約数は%d\n",x,y,a);
return 0;
}
93:デフォルトの名無しさん
08/06/10 03:52:44
[1] 授業単元:
C言語
[2] 問題文(含コード&リンク):()
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Microsoft Visual Studio 2008
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
無し
お願いします。
94:デフォルトの名無しさん
08/06/10 04:12:00
#include <stdio.h>
int main(void)
{
int i, j, count[11] = {0}, n;
while(1) {
scanf("%d", &n);
if(n==-1) break;
if(0<=n && n <= 100) count[n/10]++;
}
for(i=0; i<10; i++) {
printf("%3d -%3d %d人 ", i*10, i*10 + 9, count[i]);
for(j=0; j<count[i]; j++) putchar('*');
putchar('\n');
}
printf("100 %d人 ", count[10]);
for(j=0; j<count[10]; j++) putchar('*');
putchar('\n');
return 0;
}
95:デフォルトの名無しさん
08/06/10 04:16:28
>>92
#include <stdio.h>
int main (void)
{
printf("二つの整数を「,」で区切って入力してください:");
scanf("%d,%d",&x,&y);
int a,i;
if (x>y) {
for (i=1;i<=y;i++) {
if (y%i == 0) {
if (x%i == 0) a = i;
}
}
} else {
for (i=1;i<=x;i++) {
if (x%i == 0) {
if (y%i == 0) a = i;
}
}
}
printf("%d%dの最大公約数は%d\n",x,y,a);
return 0;
}
96:デフォルトの名無しさん
08/06/10 04:19:57
>>93
発展
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, j, count[11] = {0}, n;
srand(time(NULL));
while(1) {
n = rand() % 102 - 1;
if(n==-1) break;
count[n/10]++;
}
for(i=0; i<10; i++) {
printf("%3d -%3d %3d人 ", i*10, i*10 + 9, count[i]);
for(j=0; j<count[i]; j++) putchar('*');
putchar('\n');
}
printf("100 %3d人 ", count[10]);
for(j=0; j<count[10]; j++) putchar('*');
putchar('\n');
return 0;
}
97:デフォルトの名無しさん
08/06/10 04:43:15
>>95
ありがとうございます
98:デフォルトの名無しさん
08/06/10 04:55:23
while(a!=b) {
while(a > b) a -= b;
a = a + b;
b = a - b;
a = a - b;
}
99:デフォルトの名無しさん
08/06/10 04:56:26
>>92
,で区切る意味が全く分からない
再帰を使わずに作ると
#include <stdio.h>
int gcd(int a, int b);
int main(void){
int x, y, z;
scanf("%d", &x);
scanf("%d", &y);
z = gcd(x, y);
printf("%d\n", z);
}
int gcd(int a, int b){
int c;
while (b > 0){
c = a % b;
a = b;
b = c;
}
return a;
}
100:22
08/06/10 05:12:14
結構プログラムを書き換えましたが、以前さっぱりです・・・
いつでもいいので、どうかよろしくお願いします。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
101:デフォルトの名無しさん
08/06/10 05:43:56
>>21
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <unistd.h>
int main(void) { pid_t c[2], p; int s;
switch (c[0] = fork()) { case -1: perror("fork"); break;
case 0: execlp("./fork1", "fork1", NULL); perror("fork1"); _exit(1); /* NOTREACHED */
default: break; }
switch (c[1] = fork()) { case -1: perror("fork"); break;
case 0: execlp("./fork2", "fork2", NULL); perror("fork2"); _exit(1); /* NOTREACHED */
default: break; }
while (c[0] != -1 || c[1] != -1) { int i;
if ((p=wait(&s)) == -1) { perror("wait"); break; }
else for (i = 0; i < 2; i++) if (p==c[i]) {
if (WIFEXITED(s)) printf("fork%c exit(%d)\n", i+1, WEXITSTATUS(s));
else if(WIFSIGNALED(s)) printf("fork%c killed(%d)\n", i+1, WTERMSIG(s));
c[i]=-1;break; }
if (i==2) {fprintf(stderr, "?\n"); break;}}
return 0; }
102:101
08/06/10 05:45:59
どうして 「backslash n」が消えるんだ???
103:デフォルトの名無しさん
08/06/10 05:57:44
>>102
ソースを貼るのには適さないんだし、行が多い場合はテキストファイルを
ここ用のロダにあげなよw
104:デフォルトの名無しさん
08/06/10 10:17:36
学科の出席簿作成。
15人分の学生を表示し、入力により内容を変動させる。
表示順番:出席表
<入力>学生番号0〜14
<入力>曜日番号0〜6
<入力>時限番号0〜3
<入力>出欠番号0〜1
<入力>学生番号0〜14の時に99を入力するとプログラム終了。
105:デフォルトの名無しさん
08/06/10 10:17:59
ここまでは自力でできた。
#include <stdio.h>
int main()
{
int gakusei,youbi,jigen,syukketsu;
printf("学生Noを入力してください----");
scanf("%d", &gakusei);
printf("曜日番号を入力してください----");
scanf("%d", &youbi);
printf("時限番号を入力してください----");
scanf("%d", &jigen);
printf("出欠番号を入力してください----");
scanf("%d", &syukketsu);
if(gakusei=99){
printf("学生番号は99以外の数字を入力してください。\n");
}
if(gakusei>=0||gakusei<=14 || youbi>=0||youbi<=6 || jigen>=0||jigen<=3 || syukketsu>=0||syukketsu<=1){
printf("学生No%d\n",gakusei);
printf("月曜日\n");
printf("時限番号%d\n",jigen);
printf("出欠番号%d\n",syukketsu);
}else{
printf("エラーです\n");
}
return 0;
}
106:デフォルトの名無しさん
08/06/10 12:05:18
>>101
forkしてexecか。なる。
出題者じゃないが勉強になった。
107:デフォルトの名無しさん
08/06/10 12:20:46
そういう事柄に関しては
小耳に挟んだ
ということと
勉強になったということは
根本的に違うということは区別しようね。
108:デフォルトの名無しさん
08/06/10 12:28:22
それにして、インデントがないと、ソースが読みにくい(><)
109:デフォルトの名無しさん
08/06/10 12:33:35
まあ手元ソース書く場合はメモ帳とか使うんだろうからせめて
TAB1個->全角スペース3個とかで置換かけてから投下しようよw
それがあれならアップローダーにあげるとかさ・・・
110:デフォルトの名無しさん
08/06/10 12:33:57
>>5の問題の補足なんですが
円の中心に原点をおくと、格子点はi,jを整数として座標(i,j)で表される。(i,j)が円環に含まれる場合に1,含まれない場合に0を返却する関数
is_inrarge(double r, int i, int j)
を作成し、これを用いて、半径Rをキー入力することでn(R)を表示するプログラムを作成しなさい。
とのことなのでこれを踏まえてもう一度この問題の解答をお願いします。
111:デフォルトの名無しさん
08/06/10 12:53:24
>>109
全角はねーよw
112:デフォルトの名無しさん
08/06/10 13:05:53
[1] 授業単元: C++
[2] 問題文キーボードから2以上の整数を入力し、その数が素数であるかどうかを判断するコードを記述せよ。
ただし入力される数値が2以上でない場合、繰り返し入力を求めること。[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 )
[3.3] 言語: C++
([[4] 期限:今日の5時mで
[5] その他の制限:なし
113:デフォルトの名無しさん
08/06/10 13:07:32
>>110
#include <stdio.h>
int is_inrange(double r, int i, int j)
{
return r * r >= i * i + j * j;
}
int main(void)
{
int i, j, r, count = 0;
scanf("%d", &r);
for(i=-(r+1); i<=r+1; i++) {
for(j=-(r+1); j<=r+1; j++) {
if(is_inrange(r+1, i, j)&&!is_inrange(r, i, j)) count++;
}
}
printf("%d", count);
return 0;
}
114:デフォルトの名無しさん
08/06/10 13:08:44
そういうオープンな問題が出るわきゃないだろ
出した講師か教師が糞
2^2^1024-1が素数かも判定しなきゃならなくなる罠
115:ルート
08/06/10 13:11:11
[1] 授業単元: プログラミング C言語
[2] 問題文(含コード&リンク): 【課題】
BMPファイルを読み込み、以下の処理を行って下さい。
@2値化(白黒画像) 閾値は指定できること
Aディザ法による2値化
B誤差拡散法による2値化
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC++
[3.3] 言語: C
[4] 期限: 〜6月13日0:00
[5] その他の制限: 無い
116:デフォルトの名無しさん
08/06/10 13:12:25
なんか、ここを見てるとプログラミングを嫌いにさせたいのか
と思うような出題内容が多いよな。
まあIT業界は悲惨なので学生時代に嫌いにさせておいて
就職口から外す講師の親心なのかもしれないけどw
ってそれはねーかw
117:デフォルトの名無しさん
08/06/10 13:18:15
口だけクンががんばってるなw
118:デフォルトの名無しさん
08/06/10 13:19:34
@
[1] 授業単元: C++
[2] 問題文 キーボードから2以上の整数を入力し、その数が素数であるかどうかを判断するコードを記述せよ。
ただし入力される数値が2以上でない場合、繰り返し入力を求めること。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C++
[4] 期限: 6月10日
[5] その他の制限: なし
A
[1] 授業単元: C++
[2] 問題文 直角三角形の表示を行うフローチャートは左下が直角の直角三角形を表示するプログラムであった。直角が左上側、右上側、右下側の三角形を表示するプログラムをそれぞれ作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C++
[4] 期限: 6月17日
[5] その他の制限: なし
お願いします。
119:デフォルトの名無しさん
08/06/10 13:24:22
書くだけクンが大きなこと言えるのかなw
120:デフォルトの名無しさん
08/06/10 13:24:34
>>112
#include <iostream>
int main(void)
{
int n, flag = 1;
do {
std::cout << "2以上の整数を入力してください:";
std::cin >> n;
}while(n < 2);
for(int i = 2; i*i<=n; i+=2) {
if(n % i == 0) {
flag = 0;
break;
}
}
std::cout << n << "は素数" << (flag ? "です" : "ではありません") << std::endl;
}
121:デフォルトの名無しさん
08/06/10 13:32:01
2以上の素数を入力して下さい 15
15は素数です
122:デフォルトの名無しさん
08/06/10 13:32:56
ミスった
i+=2 → i++
123:デフォルトの名無しさん
08/06/10 13:33:47
>>118
#include <iostream>
int main()
{
int i, j, n;
std::cin >> n;
//左上
for(i=n; i>0; i--) {
for(j=i; j>0; j--) std::cout << '*';
std::cout << std::endl;
}
//右下
for(i = 0; i<n; i++) {
for(j=1; j < n - i; j++) std::cout << ' ';
for(j=0; j<=i; j++) std::cout << '*';
std::cout << std::endl;
}
//右上
for(i=0; i<n; i++) {
for(j=0; j<i; j++) std::cout << ' ';
for(j=n; j>i; j--) std::cout << '*';
std::cout << std::endl;
}
}
124:デフォルトの名無しさん
08/06/10 13:44:20
2以上の素数を入力して下さい:2
2は素数ではありません
125:デフォルトの名無しさん
08/06/10 13:50:00
>>124
バカ発見
126:デフォルトの名無しさん
08/06/10 14:02:11
[1] 授業単元: プログラミング C言語
[2] 問題文(含コード&リンク)課題:ファイル"test.txt"から文字列を読み込み、並びを逆にしてファイル"sample.txt"に出力するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語: C
[4] 期限: 〜6月11日11:00
[5] その他の制限: ポインタを使う
127:110
08/06/10 14:10:22
>>113ありがとうございます
128:デフォルトの名無しさん
08/06/10 14:15:28
>>126
#include <stdio.h>
void f(FILE *in, FILE *out)
{
int ch = fgetc(in);
if(ch==EOF) return;
f(in, out);
fputc(ch, out);
}
int main(void)
{
FILE *f_in, *f_out;
if((f_in=fopen("test.txt", "r"))==NULL) return 0;
if((f_out=fopen("sample.txt", "w"))==NULL) return 0;
f(f_in, f_out);
fclose(f_in);
fclose(f_out);
return 0;
}
129:デフォルトの名無しさん
08/06/10 14:31:41
>>128
正しく実行できません。
130:デフォルトの名無しさん
08/06/10 14:37:33
>>126
int main(void) {
FILE* in;
FILE* out;
int c;
char ss[1024];
int i = 0;
in = fopen("test.txt", "r");
if (in == NULL) {
return -1;
}
out = fopen("sample.txt", "w");
if (out == NULL) {
return -1;
}
while ((c = fgetc(in)) != EOF) {
ss[i] = c;
i++;
}
ss[i] = '\0';
i--;
while (i >= 0) {
fputc(ss[i], out);
i--;
}
fclose(in);
fclose(out);
return 0;
}
適当すぎたorz
131:130
08/06/10 14:39:26
おかしかったら自分でなんとかして。
結構、初心者向けに書いたつもりなので
132:20
08/06/10 15:38:13
>>41>>41
int pattern1(double a, double b, double c){
int x, y;
y=(a-2*c)/(sqrt(3.)*c)+1;
x=b/(2*c);
return x*y-((b-x*2*c<c)?y/2:0);;
}
すみませんがここの処理が何をやってるのかわからないのですが
説明していただけませんか?
133:デフォルトの名無しさん
08/06/10 15:38:36
[1] 授業単元:
Cプログラミング
[2] 問題文(含コード&リンク):()
URLリンク(kansai2channeler.hp.infoseek.co.jp)
の課題2をお願いします
[3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明後日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません
134:デフォルトの名無しさん
08/06/10 15:41:55
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):小さい順の友愛数ペア10組を探し出すプログラムをつくれ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C++
[4] 期限:2008年6月17日14:40まで
[5] その他の制限:for,while,if文ぐらいしか習ってません。
main関数のみでお願いします。
参考プログラム:約数の和の計算
#include <stdio.h>
void main()
{
int m; /* 整数 */
int n; /* 1〜m まで繰り返す */
int s; /* 約数の和(累計) */
scanf("%d", &m); /* キーボードから整数を読み込む */
s = 0; /* s の内容をクリア */
for (n = 1; n <= m; n++) { /* 1〜m まで繰り返す */
if (m % n == 0) /* 約数の判定 */
s += n; /* 約数であれば s に足す */
}
printf("整数%dの約数の和は%dです。\n", m, s); /* 約数の和の画面表示 */
}
よろしくお願いします。
135:デフォルトの名無しさん
08/06/10 15:48:26
[1] 授業単元: C++
[2] 問題文次々に入力される値を合計する処理である。
変数dtにデータを入力する処理を繰り返し行い、
入力終了後その合計sumと平均aveを出力する。
なお、入力データは正の整数とし、
入力するデータがなくなったら、
終わりの印として負の値を入力する。
【ヒント】
平均の計算は、合計÷入力回数。
入力回数も変数を用意して数える。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 )
[3.3] 言語: (C++)
[4] 期限: ([2008年06月24日午後5時までまで] )
[5] その他の制限:なし
136:ルート
08/06/10 16:02:29
>>115 よろしくおねがいします
137:デフォルトの名無しさん
08/06/10 16:02:34
[1] 授業単元: C++
[2] 問題文 次の処理を行うプログラムを作成しなさい。
キーボードから入力した2進数を
10進数に変換して出力する。
ただし,入力が2進数でなかった場合
エラーメッセージを出力して最初からやりなおす。
【実行例】
2進数を入力してください 10101
21
2進数を入力してください 12345
エラー(2進数ではありません)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 )
[3.3] 言語: (C++)
[4] 期限: ([2008年06月24日午後5時までまで] )
[5] その他の制限:なし
お願いします
138:21
08/06/10 16:07:41
>>101
ありがとうございました。
来週テストということもあり、前回のプログラムも含めて復習してみます。
本当にありがとうございました。
139:デフォルトの名無しさん
08/06/10 16:18:36
>>135
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char input[1024];
int temp = 0;
int dt = 0;
int count = 0;
gets(input);
while ((temp = atoi(input)) >= 0) {
count++;
dt += temp;
gets(input);
}
printf("合計:%d\n", dt);
printf("平均:%d\n", dt / count);
return 0;
}
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4995日前に更新/317 KB
担当:undef