C/C++の宿題片付けます 128代目
at TECH
1:デフォルトの名無しさん
09/06/24 23:28:21 BE:454421568-DIA(282072)
あなたが解けない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++の宿題片付けます 127代目
スレリンク(tech板)
2:デフォルトの名無しさん
09/06/25 03:15:37
下痢便はすごく苦い
3:デフォルトの名無しさん
09/06/25 03:18:57
メールのことがかかれてないじょー
4:デフォルトの名無しさん
09/06/25 03:19:47
メールなんちゃらは他所でやれ
5:デフォルトの名無しさん
09/06/25 11:36:59
すみません。計算機を作る問題でリストのところでコンパイルエラーについて質問です。
ソースのうち原因となる可能性のある部分を書きだすと
07:struct queuen{
08: double data;
09: struct queuen *next;
10:};
11:
12:struct queuen *sp = NULL;
13:
14:struct queuep{
15: struct queuen *head;//先頭
16: struct queuen *tail;//最後尾
17:};
18:
19:struct queuep *queuen_pointer;
20:
21:queuen_pointer->head = sp;
22:queuen_pointer->tail = sp;
この状態でコンパイルすると
c:21: error: parse error before '->' token
というエラーが出ます。
ちなみに左に振ってある数字は行数です。
21行目のエラーらしいですが、上のソースの部分でまずい所を教えてください。
6:前スレ667
09/06/25 13:37:15
前スレ
>>704
有難うございました!
7: ◆/91kCCQXBo
09/06/25 13:53:33
>>005 まだ関数の外側にいる。URLリンク(effy.ldw.jp)
21: queuen_pointer->head = sp; // c:21: error: parse error before '->' token
22: queuen_pointer->tail = sp;
23: main() {
24: }
8:デフォルトの名無しさん
09/06/25 13:57:09
[1] 授業単元:システムコール
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)のかわりに
URLリンク(kansai2channeler.hp.infoseek.co.jp)とすると、どのような不都合が生じるか説明せよ
URLリンク(kansai2channeler.hp.infoseek.co.jp)のかわりに
URLリンク(kansai2channeler.hp.infoseek.co.jp)とすると、どのような不都合が生じるか説明せよ
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2009年07月01日18:00まで
[5] その他の制限:特になし
最後の方が違います
どう変わってくるのか教えて頂きたいです
9:前スレ884
09/06/25 14:04:10
前スレ982さんありがとうございました!
あまりの無駄のなさに普段の完成度との違いに怪しまれそうです
質問なのですが、sturcut、Node*、sentinelはそれぞれどういう意味をもっているのでしょうか
多分まだ習っていなく、ググってももう一つ良く分からなかったので
良ければ教えていただけないでしょうか
10: ◆/91kCCQXBo
09/06/25 14:22:38
>>008
while ((n = operation_status) >= 0) {
printf("Condition %s.\n", status_name_table[n]);
sleep(1);
}
9545: sleep関数の1秒以内にデクリメントが2回走った場合、ステータスが0から-2になる事があり、配列のインデックスが0を超える。
while ((n = operation_status) != -1) {
printf("Condition %s.\n", status_name_table[n]);
sleep(1);
}
9546: printf関数の実行前にデクリメントが走った場合、ステータスが0から-1になる事があり、配列のインデックスが0を超える。
while (operation_status >= 0) {
printf("Condition %s.\n", status_name_table[operation_status]);
sleep(1);
}
11:デフォルトの名無しさん
09/06/25 14:33:06
まだ習ってないのかさては
12:デフォルトの名無しさん
09/06/25 15:03:19
sturcut Nodeというものがあるらしいですが、多分まだ習っていません
13:デフォルトの名無しさん
09/06/25 15:39:16
>>9
struct
構造体。C++ではclassとほぼ同じもの。ただし全メンバがデフォルトでpublicである。
node
ノード。データを連結して使うリスト構造の場合、1個1個のデータを「ノード」と呼ぶことが多い。
sentinel
センチネル、日本語で番兵。
「配列やリストの端っこに置いとくと、全体のスキャン処理とかが楽になる」
などの目的で使われる、特別な値やノード。
14:デフォルトの名無しさん
09/06/25 15:40:47
>>前スレ スレリンク(tech板:953番) (ピラミッドアート)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
main()は自分で作ってね
15:デフォルトの名無しさん
09/06/25 16:02:09
予約語だな
16:前スレ934
09/06/25 16:25:15
前スレ>>939さんありがとうございました!助かりました!
17:デフォルトの名無しさん
09/06/25 16:45:25
前スレ>>998->>1000
>>14
ありがとうございます!
本当に助かりました。
18:デフォルトの名無しさん
09/06/25 17:15:21
>>9
このあたりかな。「番兵付きの双方向リスト」とか
URLリンク(akademeia.info)
19:デフォルトの名無しさん
09/06/25 17:28:34
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
if文を使って、月数に応じてコメントを表示するプログラム(1月ならばwinter、3月ならspringといった具合に)を作る。
月は1月〜12月までなので、13月以上の数値を打ち込んだ場合はerrorと表示させること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc 3.4…?
[3.3] 言語:C
[4] 期限: 2009年6月25日18:00まで…ぶっちゃけ今すぐ!!
[5] その他の制限:全くの初心者です。気づいたら履修登録してもうたー。
20:デフォルトの名無しさん
09/06/25 17:30:54
あと30分かよ!
21:デフォルトの名無しさん
09/06/25 17:32:50
は、はぃ!!あと30分切ってます…!!!@@@@@@
22:デフォルトの名無しさん
09/06/25 17:39:09
>>19
#include <stdio.h>
int main(void) {
int m;
printf("何月?"); scanf("%d",&m);
if (m <= 0 || 13 <= m) printf("error");
else if (m == 1) printf("初っ端から飛ばすと後でばてる。2月から本気を出す");
else if (m == 2) printf("まだまだ寒い。これではやる気が出ない。3月から本気出す");
else if (m == 3) printf("年度の終わりでタイミングが悪い。4月から本気を出す");
else if (m == 4) printf("季節の変わり目は体調を崩しやすい。5月から本気を出す");
else if (m == 5) printf("区切りの良い4月を逃してしまった。6月から本気を出す");
else if (m == 6) printf("梅雨で気分が落ち込む。梅雨明けの7月から本気を出す");
else if (m == 7) printf("これからどんどん気温が上昇していく。体力温存の為8月から本気を出す");
else if (m == 8) printf("暑すぎて気力がそがれる。9月から本気を出す");
else if (m == 9) printf("休みボケが抜けない。無理しても効果が無いので10月から本気を出す");
else if (m == 10) printf("中途半端な時期。ここは雌伏の時。11月から本気を出す");
else if (m == 11) printf("急に冷えてきた。こういう時こそ無理は禁物。12月から本気を出す");
else if (m == 12) printf("もう今年は終わり。今年はチャンスが無かった。来年から本気出す ");
printf("\n");
return 0;
}
23: ◆jaDL7.sW26
09/06/25 17:41:05
アリガトウゴザイマス!!!!!
24:デフォルトの名無しさん
09/06/25 17:44:59
>>22
GJ
25:◇jaDL7.sW26
09/06/25 17:46:11
// gcc ならincludeなくても通った。
main(){
int month;
printf("月を入力してください(1〜12):");
scanf("%d", &month);
switch(month){
case 12: case 1: case 2:
puts("Winter in Japan"); break;
case 3: case 4: case 5:
puts("Spring in Japan"); break;
case 6: case 7: case 8:
puts("Summer in Japan"); break;
case 9: case 10: case 11:
puts("Fall in Japan"); break;
default:
puts("Error Month number!"); break;
}
}
26:デフォルトの名無しさん
09/06/25 17:50:44
>>19
UNIX板で聞いといてWindowsかよ。
27:デフォルトの名無しさん
09/06/25 19:59:17
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:6月28日まで
[5] その他の制限: お願いします
28:デフォルトの名無しさん
09/06/25 20:10:54
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7月2日
[5] その他の制限: すべてファイルを使う。
29:デフォルトの名無しさん
09/06/25 20:21:35
>>28
入力やら出力やら書いてある部分の意味がわからんのは俺だけか?
30:デフォルトの名無しさん
09/06/25 20:40:55
>>22
Gjsぐるw
31:デフォルトの名無しさん
09/06/25 21:13:03
>>29
課題2だと
入力ファイル名が diff.in で、その内容が
1,2
1,0
0,1
1,0
-1,-1
課題で作ったバイナリ名を"trace"とする。コマンドラインからこのプログラムを実行すると、
まず入力ファイル名を入力(ここではdiff.inとする)。
そのあとに出力ファイル名を入力(ここではpoint.outとする)。
trace実行後の出力ファイル(point.out)の内容は
1,2
2,0
2,1
3,1
2,0
となる。
ってことでしょ。たぶん。
32:デフォルトの名無しさん
09/06/25 21:28:19
[1] 授業単元: プログラミングU
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン: win avr
[3.3] 言語: C
[4] 期限: 6月28日まで
[5] その他の制限: 先週からavr studio4 に変わったのでほとんど理解してません。
33:デフォルトの名無しさん
09/06/25 21:37:04
>>28 課題1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAMELEN 64
#define BUFFSIZE 32
int main(void)
{
FILE *fp;
char filename[FILENAMELEN];
char buff[BUFFSIZE];
double x = 0;
int n = 0;
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
fp = fopen(filename, "r");
while (fgets(buff, BUFFSIZE, fp)) { x += strtod(buff, NULL); n++; }
fclose(fp);
printf("%.1lf\n", x / n);
return 0;
}
34:デフォルトの名無しさん
09/06/25 21:38:05
>>28 課題2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAMELEN 64
#define BUFFSIZE 32
int main(void)
{
FILE *ifp, *ofp;
char filename[FILENAMELEN];
char buff[BUFFSIZE];
int x = 0, y = 0;
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ifp = fopen(filename, "r");
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ofp = fopen(filename, "w");
while (fgets(buff, BUFFSIZE, ifp)) {
x += atoi(strtok(buff, ","));
y += atoi(strtok(NULL, ","));
fprintf(ofp, "%d,%d\n", x, y);
}
fclose(ifp);
fclose(ofp);
return 0;
}
35:デフォルトの名無しさん
09/06/25 21:48:24
>>28 課題3
#include <stdio.h>
#define FILENAMELEN 64
#define NAMELEN 31
int main(void)
{
FILE *ifp, *ofp;
char filename[FILENAMELEN];
char name[NAMELEN];
double height, weight, BMI;
scanf("%s", filename); ifp = fopen(filename, "r");
scanf("%s", filename); ofp = fopen(filename, "w");
while (fscanf(ifp, "%s%lf%lf", name, &height, &weight) != EOF) {
BMI = weight / height / height * 10000;
if (BMI < 18.5 || BMI >= 25.0) fprintf(ofp, "%s\n", name);
}
fclose(ifp); fclose(ofp);
return 0;
}
36:デフォルトの名無しさん
09/06/25 21:56:36
>>32
Aの図?の意味がわからんのでもしかたら外してるかも
#include <stdio.h>
int main()
{
int i;
char c;
char* p;
char* name = "tatsuya";
printf("*** @ ***\n");
for (c='0'; c<='9'; c++)
{
printf("'%c'=%d\n", c, c);
}
printf("*** A ***\n");
for (c='0'; c<='9'; c++)
{
printf("'%c'=%x\n", c, c);
}
printf("*** B ***\n");
for (i=0; name[i]; i++)
{
printf("'%c'=%x\n", name[i], name[i]);
}
printf("*** C ***\n");
for (p=name; *p; p++)
{
printf("'%c'=%x\n", *p, *p);
}
return 0;
}
37:デフォルトの名無しさん
09/06/25 21:57:43
>>28 課題4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define FILENAMELEN 64
#define BUFFSIZE 128
int main(void)
{
FILE *ifp, *ofp;
char filename[FILENAMELEN];
char buff[BUFFSIZE];
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ifp = fopen(filename, "r");
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ofp = fopen(filename, "w");
while (fgets(buff, BUFFSIZE, ifp)) {
int i;
for (i = 0; buff[i]; ++i) if (isdigit(buff[i])) buff[i] = '*';
fprintf(ofp, buff);
}
fclose(ifp); fclose(ofp);
return 0;
}
38:デフォルトの名無しさん
09/06/25 22:04:30
>>32
もしかして0から9って普通に表示じゃなくてAみたいな数字の表示方法があったりしない?
39:デフォルトの名無しさん
09/06/25 22:08:19
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):do-while文を使って、入力させた数値を3で割った余りを表示することを続ける。
もし、3の倍数が入力されたときは"3の倍数"と表示して終了する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年06月28日
[5] その他の制限:まだまだ習い始めたところなのでif、swichくらいしか習っていません。
40:デフォルトの名無しさん
09/06/25 22:14:36
>>32は7セグメントLEDの組み込み系の話だと思う。
回路にビットパターン流し込んで対応するLEDをつけるって課題だとおもう。
AVRって環境を使うみたいだけど、ここのスレに使ったことがある人間がいるかはかなり疑問。
41:デフォルトの名無しさん
09/06/25 22:15:50
>>39
未コンパイルコード
#include <stdio.h>
int main( void )
{
int inp=0,mod=0;
do{
printf("->");
scanf("%d",&inp);
getchar();
mod = inp%3;
if( mod )
{
printf("%d\n");
}
else
{
printf("3の倍数です。\n");
}
}while(mod);
return 0;
}
42:デフォルトの名無しさん
09/06/25 22:16:16
>>38
その通りです、説明しずらいので、配布されたプリントの画像を見てもらえたらありがたいです。
DLkye 0000
URLリンク(www1.axfc.net)
43:デフォルトの名無しさん
09/06/25 22:20:17
>>39
#include <stdio.h>
int main()
{
int ret, num, rem;
printf("数値を入力してください\n");
while (true)
{
ret = scanf("%d", &num);
if (ret!=1)
{
printf("不正な入力です\n処理を中止しますn");
break;
}
printf("%d: ", num);
rem = num % 3;
if (rem==0)
{
printf("3の倍数です\n");
break;
}
else
{
printf("3で割ったあまりは%dです\nもう一度入力してください", rem);
}
}
return 0;
}
44:デフォルトの名無しさん
09/06/25 22:22:06
>>41
レスありがとうございます。出来ました。
45:デフォルトの名無しさん
09/06/25 22:24:52
>>14
前スレの内容について、一辺が3の八角形は
***
* *
* *
* *
* *
* *
***
こうではないだろうか。
質問者が納得してるからこうではなかったんだろうけど。。
46:39
09/06/25 22:28:39
すみませんこれも出来ませんでした。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):入力した数を2の何乗より大きいかを求めるプログラム。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年06月28日
[5] その他の制限:まだまだ習い始めたところなのでif、swichくらいしか習っていません。
たぶんdo-while文を使うんだと思います。
47:デフォルトの名無しさん
09/06/25 22:35:06
>>46
math.h使って
(int)(log(d)/log(2.0))
d: 入力した数
48:デフォルトの名無しさん
09/06/25 22:40:23
>>46
よくわからないが 2^k<x の条件でkの最大でいいのかな
#include <stdio.h>
int main()
{
int x;
int n = 1, k = 0;
scanf("%d",&x);
while(n < x){ n *= 2; k++;}
printf("%d\n", k-1);
return 0;
}
49: ◆/91kCCQXBo
09/06/25 22:42:24
>>045 C:\a.exe >a.txt line 255-261* を見れば、
>>014(9548) OK
>>前1000 は間違い
50:デフォルトの名無しさん
09/06/25 22:43:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):下に示すように,最初に整数を読み込み,その後,その個数だけ整数を読み込んでいき,そ
の合計と平均を表示するプログラムを作成せよ。
整数は何個ですか: 6
No.1 : 65
No.2 : 23
No.3 : 47
No.4 : 9
No.5 : 153
No.6 : 777
合計値: 1074
平均値: 179.00
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年07月02日
[5] その他の制限:どうかよろしくお願いします。
51:デフォルトの名無しさん
09/06/25 22:45:37
>>46
せっかく作ったから便乗アップ。動作は保障しない。
#include <stdio.h>
int main(){
unsigned int N,S;
printf("Input Number:");
scanf("%d",&N);
S=0;
do{
}while(N>(1<<S++));
S--;
printf("%d is upper then 2^%d ->%d!!\n",N,S-1,1<<(S-1));
return 0;
}
52:デフォルトの名無しさん
09/06/25 22:48:59
>>50
#include <stdio.h>
int main(void)
{
int i, n, x = 0;
printf("整数は何個ですか: "); scanf("%d", &n);
for (i = 0; i < n; ++i) {
int t;
printf("No.%d : ", i + 1); scanf("%d", &t);
x += t;
}
printf("合計値: %d\n平均値: %.2f\n", x, (double)x / n);
return 0;
}
53:デフォルトの名無しさん
09/06/25 22:50:47
>>31
> trace実行後の出力ファイル(point.out)の内容は
> 1,2
> 2,0
ここは2,2じゃないのかなあと、ガウス平面というものを知らずにレス
54:デフォルトの名無しさん
09/06/25 22:55:14
>>49
うpされたコードを見てなかったんだ。
スマソ
55:デフォルトの名無しさん
09/06/25 22:58:54
>>42
なんかよくわからんのだが、
「環境はwin avr, avr studio4です」で通じる話なのか?
どんなデバイス使ってるとかわからんと手の出しようがないような
わかる人にはわかるのかね
動作させるってのは実際にデバイス動かして
表示させるってのはデバイス上の液晶画面か何かに表示させるってことなんだよな?
56:デフォルトの名無しさん
09/06/25 23:02:53
>>37
% を含む文字列を出力できない
57:デフォルトの名無しさん
09/06/25 23:08:30
>>55
自分も正直何をやっているのかわかっていません・・・。
デバイスの関してはatmega88pというのを使います。
液晶画面に自分の名前のアルファベットを表示させるのですが、デバイスやらUSBライターなどは教授が持っているので、自分で確認することが出来ません。
58: ◆/91kCCQXBo
09/06/25 23:09:43
>>035 BMI 出力が標準出力でない。
#include <stdio.h>
#define FILENAMELEN 64
#define NAMELEN 31
int main(void)
{
FILE *ifp;
char filename[FILENAMELEN];
char name[NAMELEN];
double height, weight, BMI;
fgets(filename, FILENAMELEN, stdin); filename[strlen(filename)-1] = '\0';
ifp = fopen(filename, "r"); if(ifp == NULL) return 1;
while (fscanf(ifp, "%30s%lf%lf", name, &height, &weight) != EOF) {
BMI = weight / height / height * 10000;
if (BMI < 18.5 || BMI >= 25.0)
printf("%s\n", name);
}
fclose(ifp);
return 0;
}
59:デフォルトの名無しさん
09/06/25 23:19:34
>>56
あるある
60:デフォルトの名無しさん
09/06/25 23:20:46
>>37
strchr が NULL を返したらどうするんだ
61:デフォルトの名無しさん
09/06/25 23:23:52
>>57
ぶっちゃけ、エスパーじゃないと無理。
一般人は、回路図とデバイスの仕様が無いと書きようがない。
62:デフォルトの名無しさん
09/06/25 23:27:13
>>57
そうですか、わかりました。ありがとうございます。
63:61
09/06/25 23:45:35
>>57
7セグメントディスプレイは何個ついてるの?
問題文からは3つかな?
64:デフォルトの名無しさん
09/06/26 00:01:19
>>63
確か三つだったと思います。
65:61
09/06/26 00:19:45
>>64
7セグメントディスプレイにA(01110111)を表示する時の様に、
0から9の数字を出すパターンはできてるんだよね?
それを3つのポート(PORT-B,PORT-C,PORT-D)に喰わせれば良いんじゃないか?
例えば、PORT-Bが1の位、PORT-Cが10の位、PORT-Dが100の位の
7セグメントディスプレイと繋がっていると仮定すると、
char segdat[10] = { {0を表示するパターン}, ・・・, {9を表示するパターン} };
int i;
for ( i = 0; i < 256; i++ ) {
int d100 = i / 100;
int d10 = ( i - d100 ) / 10;
int d1 = i % 10;
PORTD = segdat[ d100 ];
PORTC = segdat[ d10 ];
PORTB = segdat[ d1 ];
}
これだけじゃね?
66:デフォルトの名無しさん
09/06/26 00:25:04
>>65
今かやってみます。ありがとうございます。
67:61
09/06/26 00:30:36
>>65
訂正。
×int d10 = ( i - d100 ) / 10;
○int d10 = ( i % 100 ) / 10;
68:デフォルトの名無しさん
09/06/26 01:40:23
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
じゃんげんプログラムを作成せよ。次の関数を用いること。
get_hand_player()
print_hand()
judge()
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 六月二十九日
[5] その他の制限: 関数まで。お願いします。
69:デフォルトの名無しさん
09/06/26 02:17:27
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
ほとんど質問に近いのですが、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のようなプログラムを人に聞きながら作ったのですが、
/*0.5を足してから*/
で示した文、kinri += 0.5;
ってどういう意味があるのでしょうか?
試しに抜いてみたのですが結果は変わりませんでした。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 関数まで。お願いします
70:デフォルトの名無しさん
09/06/26 02:27:23
>>69
恐らく四捨五入をさせているものと思われる。
int型にすると小数点以下全て切り捨てだから、
0.5を足してあげると丁度四捨五入になるかと。
71:デフォルトの名無しさん
09/06/26 02:40:00
>>70
ああ、なるほど・・・そういうことか。
ありがと!
72:デフォルトの名無しさん
09/06/26 03:08:09
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):下に示すように,二辺の長さと個数を読み込んで,読み込んだ個数だけ横長の長方形を表示
するプログラムを作成せよ.
一辺(その1) : 3
一辺(その2) : 5
個数: 4
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年07月01日
[5] その他の制限:特になし
73:68
09/06/26 03:29:04
>>68
の回答、
前スレにあった。どうも同じ大学の人がいるらしい。
ありがとー。
74:デフォルトの名無しさん
09/06/26 04:31:28
>>72
#include<stdio.h>
int main(void){
int width=4, height=3, num=2, i, j, k;
printf("一辺(その1) : ");
scanf("%d", &height);
printf("一辺(その2) : ");
scanf("%d", &width);
printf("個数: ");
scanf("%d", &num);
for(i=0;i<height;i++){
for(j=0;j<num;j++){
if(j) printf(" ");
for(k=0;k<width;k++) printf("*");
}
printf("\n");
}
return 0;
}
75:デフォルトの名無しさん
09/06/26 04:49:01
[1] 授業単元: C
[2] 問題文(含コード&リンク):
キーボードから入力された1以上の整数nについて、次の例に示すように行番号と*を表示するプログラムを作成せよ
。また、0や負の数が入力された場合はプログラムが終了するようにせよ。
表示結果の例
正の整数:6
1******
2 *****
3 ****
4 ***
5 **
6 *
[3] 環境
[3.1]linux
[3.2] gcc
[3.3]C
[4]6月29日
[5]繰り返しの課題なので繰り返しまででお願いします。
スペースをどういれたらいいかわからない・・・。
76:デフォルトの名無しさん
09/06/26 04:52:10
>>75
ごめん、問題文ミス。
1*****
2 ****
3 ***
4 **
5 *
77:デフォルトの名無しさん
09/06/26 05:11:14
>>75
#include<stdio.h>
int main(void){
int a=1,b,n,i,j,k;
printf("n…\n");
scanf("%d",&n);
if(n<=0){
return 0;
}
b=n;
for(i=1;i<=n;i++){
for(j=b;j<=n;j++){
printf(" ");
}
for(k=a;k<=n;k++){
printf("*");
if(k==n)printf("\n");
}
b--;
a++;
}
return 0;
}
78:デフォルトの名無しさん
09/06/26 06:09:38
前スレのプログラムへの質問なんですが、
前スレ675氏のプログラム、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
を実行すると、
Usage: exefile 10000
とだけ出力されて終了してしまうのですが、
これは自分の転記ミスなんでしょうか?
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
79:デフォルトの名無しさん
09/06/26 06:28:49
>>77
ありがとう。
せっかく作ってくれた所悪い、
問題文のとおり行番号がいるんだ。
80:デフォルトの名無しさん
09/06/26 06:34:11
>>79
#include<stdio.h>
int main(void){
int a=1,b,n,i,j,k;
printf("n…");
scanf("%d",&n);
if(n<=0){
return 0;
}
b=n;
for(i=1;i<=n;i++){
printf("%d",i);
for(j=b;j<=n;j++){
printf(" ");
}
for(k=a;k<=n;k++){
printf("*");
if(k==n)printf("\n");
}
b--;
a++;
}
return 0;
}
81:デフォルトの名無しさん
09/06/26 07:13:02
>>78
17s/argc != 2/argc != 3/
82:前675
09/06/26 10:16:03
>>78 やっちまったみたい、17行目と18行目を、次の2行に置き換えてみて、教えて。
//if(argc != 2) {puts("Usage: exefile 10000"); return 1;}
//max_days = atoi(argv[1]);
if(argc < 2) max_days = 10000;
else max_days = atoi(argv[1]);
83:デフォルトの名無しさん
09/06/26 16:39:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
自分の名前の英字名のASCIIコードを順番に表示するプログラムを作りなさい。
[3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年07月01日
[5] その他の制限:特になし
どうかよろしくお願いします。僕の能力では作ることができませんでした。
84:デフォルトの名無しさん
09/06/26 16:54:23
#include <stdio.h>
int main() {
int i;
char name[30] = "Taro Aso";
for ( i = 0; name[i] != '\0'; i++ )
printf("%3d %c", name[i], name[i]);
return 0;
}
85:デフォルトの名無しさん
09/06/26 18:09:15
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7月1日 17:00
[5] その他の制限:
86:デフォルトの名無しさん
09/06/26 18:10:43
>>28です。
答えてくだっさた方々ありがとうございました。
87:デフォルトの名無しさん
09/06/26 19:12:34
>>85
#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main(void){
char code[26][30]={{0}}, buf[30], filename[FILENAME_MAX], alpha;
FILE *fp;
int moji;
scanf("%s\n", filename);
fp=fopen(filename, "r");
if(fp==NULL) return 1;
while(fscanf(fp,"%c,%[^\n]\n", &alpha, buf)==2){
if(isalpha(alpha)){
strcpy(code[tolower(alpha)-'a'], buf);
}
}
fclose(fp);
while((moji=getchar())!=EOF){
if(isalpha(moji)){
printf("%s", code[tolower(moji)-'a']);
}else{
putchar(moji);
}
}
return 0;
}
88:デフォルトの名無しさん
09/06/26 19:23:31
30って気持ち悪いw
89:デフォルトの名無しさん
09/06/26 19:28:57
>>83
#include<stdio.h>
#include<ctype.h>
int main(void){
char name[]="Nanasi no Gonbee Jr.2";
int i;
for(i=0;name[i];i++){
printf("%c:%d\n", name[i], name[i]);
}
return 0;
}
90:デフォルトの名無しさん
09/06/26 19:36:17
なんでctype.h?
91:デフォルトの名無しさん
09/06/26 21:55:22
>>10
有難うございました!
92:デフォルトの名無しさん
09/06/26 23:25:43
[1]数値情報解析
[2]ドゥーリトル法によるLU分解でn元連立1次方程式を解くプログラムを作りなさい。
LベクトルとUベクトルと解ベクトルを表示すること。
[3]
[3.1]Windows
[3.2]Visual Studio
[3.3]C
[4]2009年7月1日
[5]ほぼ素人なので、少しでも優しい表現にしていただくようよろしくお願い致します。
93:デフォルトの名無しさん
09/06/27 00:37:12
前スレ930のものです。
前スレで回答してもらえず、前スレが落ちてしまったのでもう一度質問させてください。
[1] 授業単元:計算機システム構成原理
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 6月30日まで
[5] その他の制限: 特になし
よろしくお願いします。
94:デフォルトの名無しさん
09/06/27 00:39:17
長くてめんどくさいだけの課題はやる人あんまりいないよな。
95:デフォルトの名無しさん
09/06/27 01:27:02
>>93
URLリンク(ftp.gnu.org)
96: ◆/91kCCQXBo
09/06/27 02:17:57
>>032 LED コンパイルはしてない。0b01111111
URLリンク(rg550.hp.infoseek.co.jp)
97:デフォルトの名無しさん
09/06/27 05:39:00
11
★pc1つで毎日3万稼ぐ★
★翌日入金★
★2009年最新在宅ワーク!★☆
URLリンク(toutou.nantomo.dousetsu.com)
98:デフォルトの名無しさん
09/06/27 06:30:45
>>27
Dll_BMP_C.h ってのを晒さないと誰もできないぞ
(もし Dll_BMP_C.c みたいなのがあったらそれも)
99:デフォルトの名無しさん
09/06/27 07:24:15
>>27
>>98
D_llBMP_C.h URLリンク(kansai2channeler.hp.infoseek.co.jp)
100:83
09/06/27 09:54:43
>>84様
ありがとうございましたm(__)m
101:デフォルトの名無しさん
09/06/27 09:56:38
>>99
thx
DllBmpReadImage()とかの実体のDLLかソースコードもあるとうれしい
(というかそれがないとできない)
102:デフォルトの名無しさん
09/06/27 10:04:27
なんかこのやり取りを良く見る気がする
一般的でないライブラリを使用するときは
一緒にアップしろとテンプレに明記した方がいいんじゃないか
103:デフォルトの名無しさん
09/06/27 10:11:06
>>95
どうみてもbash
104:デフォルトの名無しさん
09/06/27 10:37:35
[1] 授業単元:C言語
[2] 問題文:2つの整数型の変数を入れ替える関数swapを定義して、それを使用して配列中の数字をランダムに入れ替えるプログラムの作成。
1から52までの数が順番に入った配列を用意し、十分に入れ替えた結果を表示すること。
[3] 環境
[3.1] OS: windows
[3.3] 言語: C
[4] 期限: 7月2日まで
[5] その他の制限: 特になし
105:デフォルトの名無しさん
09/06/27 10:44:04
#include <stdio.h>
#include <stdlib.h>
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main(void)
{
int i, a[52];
srand(time(NULL));
for(i=0; i<52; i++) a[i] = i + 1;
for(i=52; i> 0;) {
int j = rand() / (RAND_MAX + 1.0) * i--;
swap(a+i, a+j);
}
for(i=0; i<52; i++) printf("%d ", a[i]);
return 0;
}
106:デフォルトの名無しさん
09/06/27 11:30:32
>>92
URLリンク(kansai2channeler.hp.infoseek.co.jp)
107:デフォルトの名無しさん
09/06/27 14:22:30
[1] 授業単元 C言語
[2] 問題文 回文の判断をせよ
ただ、小文字、大文字の区別はしない、記号、空白も考えない。
例
Madam, I’m Adam
Able was I ere I saw Elba
この二つの文は回文である。 Ad czv zC Daのような文も回文
[3] 環境
[3.1] OS Windows
[3.2] コンパイラ名とバージョン VisualC++
[3.3] 言語 C
[4] 期限: 6月29日
108:デフォルトの名無しさん
09/06/27 16:01:45
>>107
眠りながら適当に書いた
#include<iostream>
#include<algorithm>
#include<string>
#include<cctype>
#include<functional>
int main(){
std::string line;
getline(std::cin,line);
std::string tmp = line;
tmp.erase(std::remove_if(tmp.begin(),tmp.end(),std::not1(std::ptr_fun(std::isalpha))),tmp.end());
std::transform(tmp.begin(),tmp.end(),tmp.begin(),std::toupper);
std::cout << (std::equal(tmp.begin(),tmp.end(),tmp.rbegin()) ? "回文です" : "回文じゃないです") << std::endl;
}
109:デフォルトの名無しさん
09/06/27 16:02:35
おおっとすまん課題はC言語だったか。適当に書き直すわー
110:デフォルトの名無しさん
09/06/27 16:03:34
>>107
URLリンク(kansai2channeler.hp.infoseek.co.jp)
111:デフォルトの名無しさん
09/06/27 16:15:54
書いてるうちに他の人が書いたけど悔しいから出してみる
#include<stdio.h>
#include<ctype.h>
#include<string.h>
void copyAlpha(char*dst,const char*src){
while(*dst = *src)if(isalpha(*src++))++dst;
}
void lowerCase(char*dst){
for(;*dst;++dst)*dst=tolower(*dst);
}
void reverseStr(char*dst,const char*src){
0[dst += strlen(src)]=0;
while(*src)*--dst=*src++;
}
int main(){
char src[80],rev[80];
gets(src);
copyAlpha(src,src);
lowerCase(src);
reverseStr(rev,src);
puts(strcmp(rev,src)==0 ? "回文です" : "回文じゃないです");
}
112:デフォルトの名無しさん
09/06/27 17:44:30
ポインタなしver.がないので
isalphaの行をどうにかマクロにしたかったw
int is_anagram(const char str[]) {
int head, tail, len;
head = 0; tail = (len=strlen(str))-1;
for ( len /= 2; head < len && len < tail; head++, tail-- ) {
if ( !isalpha(str[head]) ) { head++; continue; }
if ( !isalpha(str[tail]) ) { tail--; continue; }
if ( tolower(str[head]) != tolower(str[tail]) )
return 0;
return 1;
}
}
113:デフォルトの名無しさん
09/06/27 17:50:07
[1] 授業単元: コンピュータプログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: windows
[3.2] VisualC++
[3.3] 言語: c
[4] 期限: 2009年6月30日
[5] その他の制限:配列はcharやdouble,
並び替えはdo,for,if,whileなどで習いました。
お願いします。
114:デフォルトの名無しさん
09/06/27 17:55:56
URLが
115:デフォルトの名無しさん
09/06/27 17:56:14
>>113 大きいクリップ、リンクが変。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
116:デフォルトの名無しさん
09/06/27 17:57:34
>>113
問題文のリンクがちがうぞw
117:デフォルトの名無しさん
09/06/27 18:07:55
<<115のが正しいです。
すみません。
118:デフォルトの名無しさん
09/06/27 18:33:49
>>112
retrun 1;
の位置が明らかにおかしい
119:デフォルトの名無しさん
09/06/27 19:36:14
>>107
俺もブームに乗って作ってみた。動作は保障しない。怪文21面相〜♪
そうそう、全角文字には対応してないんだからね!サンプルをコピペしてハマッタ。ソースの整形はご自分で!
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(){
unsigned char str[1024]={'\0',}; char *ch; int i=0,j=0,N=0;
printf("input string:");
fgets(str,1024,stdin);
str[1023] ='\0';ch = strchr(str,'\n');
if(ch != NULL) *ch ='\0';
for(i=0;str[i]!= '\0';i++){
if(isalpha(str[i])){//アルファベット置換と移動
str[j++] = toupper(str[i]);
}
if(isdigit(str[i])){//数字移動
str[j++] = str[i];
}
}
str[j]='\0'; N=j/2;
for(i=0;i<N;i++){
if(str[i]!=str[j-1-i]){
printf("string is no match!\n");
return 1;
}
}
printf("string is Match!\n");
return 0;
}
120:デフォルトの名無しさん
09/06/27 20:15:38
>str[1023] ='\0';
無意味
121:デフォルトの名無しさん
09/06/27 20:18:23
>>120
保険だよ。一行削れるから、ないほうがよかったかなぁ。。。
122:デフォルトの名無しさん
09/06/27 20:25:14
行削りたいなら
if(isalum(str[i])) str[j++] = toupper(str[i]);
でいいだろ
123:デフォルトの名無しさん
09/06/27 20:37:25
>>122
あぁ、それでいけるのね。
toupperを普段使わないから、認識が曖昧だった。勉強になります。
124:デフォルトの名無しさん
09/06/27 20:41:01
>>121
fgets()は必ず終端に'\0'を付けると>>120は言ってるんだろう
fgets()で付く場合と付かない場合があるのは'\n'だ
125:デフォルトの名無しさん
09/06/27 20:45:29
>>124
それも認識が曖昧だった。なるほど、勉強になります。
126:デフォルトの名無しさん
09/06/27 21:07:38
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
int型配列:int x[]と、int型配列xの大きさ:int sizeの2つの引数を用いて、
クイックソートで昇順に並べ替えるvoid quicksort(int x[], int size)と
二分木の中間走査によって昇順に並び変えるvoid inorder(int x[], int size)
の作成
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 特になし
127:デフォルトの名無しさん
09/06/27 22:03:12
>>27
URLリンク(u9.getuploader.com)
128:93
09/06/27 23:06:49
>>95
これは違うと思うのですが…。
すいませんがどなたか>>93のをお願いします。
129:デフォルトの名無しさん
09/06/27 23:42:52
>>128
>>94-95
130:デフォルトの名無しさん
09/06/27 23:54:48
>>106 さんありがとうございました。
ホントに助かりました!
131: ◆/91kCCQXBo
09/06/28 01:42:21
>>113 ソートのアルゴリズムは習ってないということで。
スレリンク(tech板:676番)
132:デフォルトの名無しさん
09/06/28 02:54:57
【質問テンプレ】
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):3つの分数の和を求めるプログラムの作成.
但し,2つの分数の和をもとめる関数bunnsuwa(..)を作ってそれを利用して3つの分数を求める.
[3] 環境
[3.1] OS:Windows/vista
[3.2] コンパイラ名とバージョン Visual Studio 2008
[3.3] 言語:C++
[4] 期限: ([7月2日まで]
[5] その他の制限:
下の手順でプログラムを作成すること
1.二つの分数を入力して,その和をmain関数で計算して結果を表示する
1.1 分数を二つ入力 b/a, d/c とする:
ここは整数変数4つにデータを入力
1.2 二つの分数の和をf/eに計算:
普通に計算してf,eを表示
2.その二つの分数の和を計算する部分を取り出し関数bunnsuwa(..)を作成する:
3.bunnsuwa(..)を複数回適用し、三つの分数の和を求めるプログラムを作成する
4
約分をできるようにする。また分母が0のときにエラー処理をする。
4.1 yakubun(..)という関数を作ってみるのもよい
例えば、void yakubun(int *a, int *b)で *b/*aを約分して更新する
5
マイナスの分子や分母が入れられた時や,分母が1になった時もきれいに表示できるようにする
お願いします〜
133:デフォルトの名無しさん
09/06/28 10:36:59
>>132
こんな感じでよいか?
#include<stdio.h>
void yakubun(int*a,int*b){
int x=*a,y=*b,z;
while(y){z=x%y;x=y;y=z;}
*a/=x;*b/=x;
if(*a<0)*a=-*a,*b=-*b;
}
void bunnsuwa(int*a,int*b,int*c,int*d){
*b=*b**c+*a**d;*a*=*c;
}
int main(){
int a=!0,b=0,c,d,i;
for(i=1;i<4;i++){
for(;;puts("やりなおせ")){
printf("%dつ目の 分子 分母 = ",i);scanf("%d%d",&d,&c);
if(c)break;
}
bunnsuwa(&a,&b,&c,&d);
yakubun(&a,&b);
printf("合計 = %d",b);
if(a>1&&b!=0)printf(" / %d",a);
puts("");
}
return 0;
}
134:デフォルトの名無しさん
09/06/28 10:37:30
[1] 授業単元: C言語
[2] 問題文:
(1) 整数と4つの演算子(+, -, *, /)とカッコ ( ) から
成る計算式の文字列から計算木を作成する関数を作れ。
ただし、再帰は使ってはならない。
(2) 整数と4つの演算子(+, -, *, /)から成る計算木から
計算式の文字列を作成する関数を作れ。優先順位に注意
して、必要な箇所をカッコ ( ) でくくれ。ただし、
再帰は使ってはならない。
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] C言語
[4] 期限:6/30
お願いします。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4967日前に更新/375 KB
担当:undef