C/C++の宿題を片付けます 96代目
レス数が950を超えています。1000を超えると書き込みができなくなります。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/
0856デフォルトの名無しさん
2007/10/08(月) 14:54:05>>1
0857デフォルトの名無しさん
2007/10/08(月) 15:11:28[2] 問題文(含コード&リンク):
原点(0,0)から初めて。<なら(左へ1移動) >なら(右へ1移動) ^なら(上へ1移動) vなら(小文字のvで下へ1移動)
を入力して最後にどこにいるかを出力するプログラムを作成する
入力例
<^^>>v<^v>
出力例
(1,1)
[3] 環境
[3.1] OS:xp
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: なし
0858デフォルトの名無しさん
2007/10/08(月) 15:15:50上、右が正方向でいいのか?
0859デフォルトの名無しさん
2007/10/08(月) 15:16:30ぶっちゃけ、どっちがいい?
0860デフォルトの名無しさん
2007/10/08(月) 15:16:45int main(void){
int x, y;
char buf[1024+1], *p;
scanf("%1024s", buf);
for(x=y=0, p=buf;*p!='\0';p++)
switch(*p){
case '<': x--; break;
case '>': x++; break;
case '^': y--; break;
case 'v': y++; break;
}
printf("(%d,%d)\n",x,y);
}
0861デフォルトの名無しさん
2007/10/08(月) 15:19:390862デフォルトの名無しさん
2007/10/08(月) 15:21:070863デフォルトの名無しさん
2007/10/08(月) 15:30:38[2] 問題文(含コード&リンク):
�@ 10進数を2進数に変換するプログラムと
�A 2進数を10進数に変換するプログラムを作れ
ただし最初の入力で1を入力すれば�@を2を入力すれば�Aを
例1
2進数変換or10進数変換 (2or10)->2
2進数に変換したい数字を入力してください->4
100
例2
2進数変換or10進数変換 (2or10)->10
10進数に変換したい数字を入力してください->100
4
[3] 環境
[3.1] OS:xp
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: なし
連続ですみません
0864デフォルトの名無しさん
2007/10/08(月) 15:32:28入力する数値の制限はないのか?
・負数ならどうなる?
・100万桁ならどうなる?
・無限大は入力できる?
とか
0865デフォルトの名無しさん
2007/10/08(月) 15:33:470866デフォルトの名無しさん
2007/10/08(月) 15:35:50負数は無いものとして
入力桁数は
両方10桁でお願いします
0867デフォルトの名無しさん
2007/10/08(月) 15:46:023行目の「ただし最初の入力で1を入力すれば�@を2を入力すれば�Aを」ですが
「ただし最初の入力で2を入力すれば�@を10を入力すれば�Aを」の間違いでした
すみません
0868デフォルトの名無しさん
2007/10/08(月) 16:22:08[2] 問題文(含コード&リンク): データベースを作成しなさい。(詳しくは下で)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc または VC++
[3.3] 言語: C
[4] 期限: 10/09 13:00 (10/12 16:00最終期限)
[5] その他の制限:
・検索、挿入、削除、変更、ソート、出力の6機能を備えること。
・出力は標準出力、入力は標準入力を使うこと。
・挿入、削除、変更が行われる度に、データベースファイルを更新すること。
・検索はレコードの各項目に対して行えること。検索結果は20件を超える場合は20件ずつ表示すること。
・検索結果を表示する際、前の20件表示、次の20件表示、検索結果から1件選んで削除・変更・出力できること。
・必要ならば作業ファイルを作成してもよい。ただし、プログラム終了時には削除すること。
・挿入は先頭、末尾、番号指定で行えること。
・削除は全体から番号指定で1件削除、検索結果の全件削除ができること。
・ソートはレコードの各項目に対して行えること。また、昇順・降順を選択できること。
・データベースはファイルに保存されること。ファイル名はDATABASE.TXTとする。
・レコードは480Byte固定長、先頭から次の順に定義する。(*は入力時省略可、+は入力させない事を意味する。)
削除フラグ+:半角数字1桁(初期値0、削除されたら1に変更) 書名:半角80字(全角40字) シリーズ*:半角80字(全角40字) 巻数*:半角数字3桁(000〜999、省略時999)
著者:半角80字(全角40字) 出版社:半角80字(全角40字) レーベル*:半角50字(全角25字)(省略時はXで埋める)
初版発行日:半角数字8桁(2007年1月1日ならば20070101) 価格:半角数字6桁(480円ならば000480、4ドル95セントなら100495)
ISBN:半角数字13桁(10桁の場合は余りを空白で埋める)
登録日時+:半角数字14桁(2007年1月1日0時30分59秒ならば20070101003059。操作時にシステム時計をみて自動的に記録。)
更新日時+:半角数字14桁(同上) 予約領域:52Byte(Xで埋める)
0869デフォルトの名無しさん
2007/10/08(月) 16:28:41わざわざ読みにくくするなよ・・・
結局ファイルフォーマットとデータフォーマットはどーなってんの
0870デフォルトの名無しさん
2007/10/08(月) 16:40:05・レコードは480Byte固定長、先頭から次の順に定義する。
(*は入力時省略可、+は入力させない事を意味する。)
削除フラグ+:半角数字1桁(初期値0、削除されたら1に変更。)
書名 :半角80字(全角40字)
シリーズ* :半角80字(全角40字)
巻数* :半角数字3桁(000〜999、省略時999)
著者 :半角80字(全角40字)
出版社 :半角80字(全角40字)
レーベル* :半角50字(全角25字)(省略時はXで埋める)
初版発行日 :半角数字8桁(2007年1月1日ならば20070101)
価格 :半角数字6桁(480円ならば000480、4ドル95セントなら100495)
ISBN :半角数字13桁(10桁の場合は余りを空白で埋める)
登録日時+ :半角数字14桁(2007年1月1日0時30分59秒ならば20070101003059。操作時にシステム時計をみて自動的に記録。)
更新日時+ :半角数字14桁(同上)
予約領域 :52Byte(Xで埋める)
ファイルフォーマットは区切り無くレコードを連続記録したものでOKです。
特に指定されてなければ、余りは空白で埋めます。
0871デフォルトの名無しさん
2007/10/08(月) 16:43:260872デフォルトの名無しさん
2007/10/08(月) 16:44:47[1] 授業単元:
[2] 問題文(含コード&リンク): ランダムに何文字かのアルファベットを入力したとき、
そこに含まれる母音の種類(a,i,u,e,o)と、
その総数を表すプログラム。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC++ 2005
[3.3] 言語: C++
[4] 期限: 明日まで
[5] その他の制限: なし
よろしくお願いします
0873デフォルトの名無しさん
2007/10/08(月) 16:48:43入力例と出力例をお願いします
0874デフォルトの名無しさん
2007/10/08(月) 16:53:59母音の種類:
その総数:0
0875デフォルトの名無しさん
2007/10/08(月) 16:55:160876デフォルトの名無しさん
2007/10/08(月) 16:56:500877デフォルトの名無しさん
2007/10/08(月) 16:58:440878872
2007/10/08(月) 17:05:50こんな感じでお願いします
//アルファベットを入力してください
How are you?
//母音は o a e o u です
//5 個の母音が含まれています
0879デフォルトの名無しさん
2007/10/08(月) 17:07:390880デフォルトの名無しさん
2007/10/08(月) 17:10:27つまり aiueo aiueo aiueo
なら
母音はaiueoaiueoaiueo
15 個の母音が含まれています
ってのでいいのね
0881デフォルトの名無しさん
2007/10/08(月) 17:12:130882デフォルトの名無しさん
2007/10/08(月) 17:13:16main(){int i,j,r;char s[80],c[10]={'a','i','u','e','o','A','I','U','E','O'};
while(1){r=0;scanf("%s",s);for(i=0;i!=80,s[i]!=0;i++)for(j=0;j!=10;j++)if(s[i]
==c[j])r++;printf("%d\n", r);}}
0884872
2007/10/08(月) 17:25:23正直、よく分かりません
>>882
すいません、エラー1です
// 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートし// ていません
0885デフォルトの名無しさん
2007/10/08(月) 17:49:47main()→int main()
0886デフォルトの名無しさん
2007/10/08(月) 17:50:18すまない、Cだと思ってた。C++でやりなおした。
#include <iostream>
int main()
{
const int B=5,L=80;
char s[L],c1[B]={'a','i','u','e','o'},c2[B]={'A','I','U','E','O'};
while(1)
{
int i,j,r[B];
std::cin >> s;
for(i=0;i!=B;i++) r[i]=0;
for(i=0;i!=L&&s[i]!=0;i++)
{
for(j=0;j!=B;j++) if(s[i]==c1[j]||s[i]==c2[j])r[j]++;
}
std::cout << "含まれてるボイン";
for(j=0;j!=B;j++) if(r[j]!=0) std::cout << c1[j]; cout << std::endl;
std::cout << "その数" << r[0]+r[1]+r[2]+r[3]+r[4] << std::endl;
}
return 0;
}
0887872
2007/10/08(月) 18:08:11ありがとうございました
しかしエラー3と出てしまいます
// (16) : error C2065: 'cout' : 定義されていない識別子です。
// (16) : error C2563: 仮パラメータ リストまたは関数へのポインタが、適合していません。
// (16) : error C2568: '<<' : オーバーロード関数のうち、どれを呼び出すのか決定できません。
0888デフォルトの名無しさん
2007/10/08(月) 18:09:170889デフォルトの名無しさん
2007/10/08(月) 18:09:36自分でも少しくらいチェック汁
std::cout
0890デフォルトの名無しさん
2007/10/08(月) 18:13:45[2] 問題文(含コード&リンク):
RC回路(4端子)のVo/Viと周波数fの関係を図示せよ。(Vo/Viは縦軸、周波数fは横軸)
R = 1kΩ、 C = 1μF
Vo/Vi = 1 / (1 + jωCR)
周波数fは、1、3、5、7、10、30、50、70、100・・・と増やしていく。
Cで計算した結果をExcelでグラフ化する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月10日まで
[5] その他の制限:なし
よろしくお願いします
0891872
2007/10/08(月) 18:19:36ありがとうございました
0892デフォルトの名無しさん
2007/10/08(月) 18:55:19参考URLが欲しいところ
0893890
2007/10/08(月) 19:06:44|____
| \
| \
| \
| \
| \
| \
| \
| \
| \_____
|______________________f
0894890
2007/10/08(月) 19:09:36Excelで表したとき>>893のようなグラフが出来上がれば成功です
紙面で出された課題ですのでURLはありません
0895デフォルトの名無しさん
2007/10/08(月) 19:36:04[2] 問題文(含コード&リンク):15+6,20÷5,10*8,12*(5+10),10+2の計算問題で答えを入力して
最後に正解数を表示させる。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限:早めにお願いします
0896デフォルトの名無しさん
2007/10/08(月) 19:36:30永遠の17歳とか閣下とか聖徳太子とかが困る
0897852
2007/10/08(月) 19:44:03とりあえず私の読解力の限界にチャレンジしつつ、問題を解釈し
組んでみました。
久しぶりのCなので、ちょっと変かもしれません。
って、もう遅かったかな?
( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5026.txt
0898デフォルトの名無しさん
2007/10/08(月) 19:57:21#include<stdio.h>
#include<math.h>
int main(void){
const double R=1.0e+3, C=1.0e-6;
double Vo_Vi; // Vo / Vi
double f, omega, r;
int i, j, table[]={1,3,5,7};
for(i=1;i<=5;i++){
r = pow(10.0, i);
for(j=0;j<sizeof(table)/sizeof(*table);j++){
f = table[j] * r; // 周波数
omega = 2 * M_PI * f; // 周波数 → 角速度 変換
Vo_Vi = 1.0 / (1.0 + cos(omega * C * R)); // 注意!cos が -1 の時除算エラー
printf("%f , %.3e\n", f, Vo_Vi);
}
}
return 0;
}
0899デフォルトの名無しさん
2007/10/08(月) 20:08:27[2] 問題文(含コード&リンク):
�@ 10進数を2進数に変換するプログラムと
�A 2進数を10進数に変換するプログラムを作れ
ただし最初の入力で2を入力すれば�@を10を入力すれば�Aを
負数は無いものとし
入力桁数は両方10桁
例1
2進数変換or10進数変換 (2or10)->2
2進数に変換したい数字を入力してください->4
100
例2
2進数変換or10進数変換 (2or10)->10
10進数に変換したい数字を入力してください->100
4
[3] 環境
[3.1] OS:xp
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: なし
よろしくお願いしますお願いします
0901デフォルトの名無しさん
2007/10/08(月) 20:59:01こんな感じでよろしいでしょうか?
( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5027.txt
0902デフォルトの名無しさん
2007/10/08(月) 21:01:0010桁の入力可
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5028.c
0903デフォルトの名無しさん
2007/10/08(月) 21:02:23なんで回答が着きにくいかってーと
Excelで図形を表示するとこまで頑張ると,COMつかわにゃならんからだ.
せめて数値計算だけでとどめて欲しい
0904デフォルトの名無しさん
2007/10/08(月) 21:19:27こんな多機能なものを標準入力から操作するって、正気とは思えん。
> ファイルフォーマットは区切り無くレコードを連続記録したものでOKです。
連続記録したものでなくてもOKてことか?更新毎に(順番を保持しつつ)ファイルに書き出すってことなら
連続記録だといちいちファイル全上書きになって非効率なんだが。
まあ12日までなら小細工してるヒマないかもだけどな。
0905890
2007/10/08(月) 21:22:00失礼しました
Excelはこちらでやりますので、Cで数値を示すところまでかまいません
>>898では、計算結果がおかしいので困っています。力を貸していただけると助かります
私の解釈が間違ってたらすいません
0906デフォルトの名無しさん
2007/10/08(月) 21:25:35どう見ても固定長レコードでseekや何かを使えってこったろ
削除は元のレコードに削除フラグを立てるだけ
更新は元のレコードだけを書き換える
挿入はケツに追加していくだけ
性能要件は無いから、仕様を満たすだけならインデクスを保守する必要は
ないだろうが、やれば評価は高くなるだろうな
0907デフォルトの名無しさん
2007/10/08(月) 21:31:36いやね、
> ・挿入は先頭、末尾、番号指定で行えること。
これがいやらしいとは思わんかw
0908デフォルトの名無しさん
2007/10/08(月) 21:35:00なるほど、すまん。それを見落としていたぜ。
0909895
2007/10/08(月) 21:36:24わかりません。
どなたか教えてください('A`)
0910デフォルトの名無しさん
2007/10/08(月) 21:41:46レス大変遅れて申し訳ありません。
本当にありがとうございました。
0911デフォルトの名無しさん
2007/10/08(月) 21:48:08#include<stdio.h>
int main(void)
{
typedef struct {
char* ques;
double ans;
} DATA;
DATA data[] = {{"15+6", 15+6}, {"20÷5", 20/5}, {"10*8", 10*8}, {"12*(5+10)", 12*(5+10)}, {"10+2", 10+2}};
int i, sum;
double input;
for(i=0, sum=0; i<sizeof(data)/sizeof(data[0]); i++)
{
printf("問題%d\n%s = ", i+1, data[i].ques);
scanf("%lf", &input);
if(input == data[i].ans)
{
printf("正解!\n");
sum++;
}
else
{
printf("不正解!\n");
}
}
printf("正解数:%d\n", sum);
return 0;
}
0912デフォルトの名無しさん
2007/10/08(月) 21:58:11#include<stdio.h>
#include<math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
int main()
{
const double ConstR = 1.0e+3, ConstC = 1.0e-6;
for (int i = 1; i <= 5; ++i) {
const int table[] = {1, 3, 5, 7, };
for (int j = 0; j < sizeof(table) / sizeof(* table); ++j) {
const double f = table[j] * pow(10, i); // 周波数
const double omegaCR = 2 * M_PI * f * ConstC * ConstR;
const double Vo_Vi = 1.0 / sqrt(1.0 + omegaCR * omegaCR);
printf("%g, %g\n", f, Vo_Vi);
}
}
return 0;
}
0913デフォルトの名無しさん
2007/10/08(月) 22:03:440914デフォルトの名無しさん
2007/10/08(月) 22:06:43気のせいです
0915912
2007/10/08(月) 22:10:280917デフォルトの名無しさん
2007/10/08(月) 22:19:35#define R (1*1.0e+3)
#define C (1*1.0e-6)
typedef struct _complex{ double r, i; } complex;
complex constructor(double r, double i){ complex _={r, i}; return _; }
double cabs(complex v){ return v.r*v.r+v.i*v.i; }
complex inverse(complex v){ double den=cabs(v); complex _={v.r/den, -v.i/den}; return _; }
complex VoVi(double freq){ return inverse(constructor(1, freq*C*R)); }
int main(void){
int freqBase;
int freqPer;
printf("freq(rad), Real(VoVi), Img(VoVi), Gain(VoVi)\n");
for(freqPer=1; freqPer<1.0e+9 ; freqPer*=10)
for(freqBase=1; freqBase<=7; freqBase+=2){
complex _=VoVi(freqBase*freqPer);
printf("%d, %10.10f, %10.10f, %10.10f\n", freqBase*freqPer, _, cabs(_));
}
}
こうか?
最近電気回路とか忘れた
0918デフォルトの名無しさん
2007/10/08(月) 22:30:22今後の勉強のために、添削また別解などをここでお願いすることは出来るのでしょうか?
0919デフォルトの名無しさん
2007/10/08(月) 22:32:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5031.zip
これでよかったら使え
0920デフォルトの名無しさん
2007/10/08(月) 22:36:40いいと思うよ。
ただ、そういう事情だと書いておいてくれると、切羽詰ってる
課題との優先順位がついて、助かる人がいるかもしれない。
0921デフォルトの名無しさん
2007/10/08(月) 22:40:42習ったところはif文とfor文、switch文とcontinue文まで習いました。
for文を一回か、二重ループにしないといけないのでわからないです。
どなたかわかる方、お願いします。
西暦と月を入力すると,以下のようなカレンダーを出力するプログラムを作成せよ.
例として,2007年7月のカレンダーを示す.
ヒント
1.閏年(うるうどし)にも対応すること.
1.西暦年が4で割り切れる年は閏年
2.ただし、西暦年が100で割り切れる年は平年
3.ただし、西暦年が400で割り切れる年は閏年
2.指定された年,月の一日(ついたち)の曜日を求めると良い.曜日を求めるには,Zellerの公式を使う.年も月も整数型の変数を用い,日の部分は1に置き換えること.
(年+年/4-年/100+年/400+(13*月+8)/5+日 )%7
1月と2月は前年の13月,14月として考える.
この式の答えと曜日の関係は以下の通り.
0:日曜日,1:月曜日,2:火曜日....,6:土曜日
3.色付け
printf("\033[31m%d",x);と記述すれば,変数xを赤で表示する.
printf("\033[34m%d",x);と記述すれば,変数xを青で表示する.
printf("\033[0m%d",x);と記述すれば,変数xを標準設定で表示する.
一度色指定すれば,次に色指定するまで設定が反映されることに注意する.
0922デフォルトの名無しさん
2007/10/08(月) 22:42:35C言語です。すいません
0923デフォルトの名無しさん
2007/10/08(月) 22:46:10>>1
0924デフォルトの名無しさん
2007/10/08(月) 22:48:46OSはknoopixEdu6をつかってます
0925デフォルトの名無しさん
2007/10/08(月) 22:51:32[2] 問題文(含コード&リンク):マクロ定義、サブ関数を使った四字熟語の読みをキーボード入力する課題
一刻千金( いっこくせんきん)
一騎当千( いっきとうせん)
一朝一夕 (いっちょういっせき)
if文,for文,while文,do文,switch文の五つの文を複数使うのが条件。(できれば全部です。
補足:無駄に長いプログラミングになっても大丈夫です。
[3] 環境
[3.1] OS:xp
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 10月10日
[5] その他の制限: なし
よろしくお願いします(ペコリ
0926デフォルトの名無しさん
2007/10/08(月) 22:52:43他の質問者のように>>1のテンプレートに内容をを当てはめて質問するように
0927デフォルトの名無しさん
2007/10/08(月) 22:53:47エスパーが必要な書き方するな。
0928デフォルトの名無しさん
2007/10/08(月) 23:02:560929デフォルトの名無しさん
2007/10/08(月) 23:14:28ありがとうございます。
[1] 授業単元:プログラミング�T
[2] 問題文:下図の左のグラフ(頂点と辺からなる図)で、出発点を1とする一筆書きの書き順を全パターン生成しなさい。
[3] 環境
[3.1] OS:Windows XP(自宅) / Linux(学校)
[3.2] コンパイラ名とバージョン:Visual C++ 2005 Express Edition(自宅)
[3.3] 言語:C
[4] 期限:無期限
プログラミング歴約3ヶ月、教科書に柴田望洋著 明解C言語 入門編を使用おり、現在第七章まで学習が進んでいます。
この課題は既に提出済みなので、期限は存在しません。
ここにお願いしましたのは、今後の勉強のために、皆様にご指導いただけたらと思った次第であります。
アップロードしたファイルの中身は
・問題の詳細(画面をキャプチャしたファイルです)
・自分が作ったソースコード
・問題に対する考察
などが入っています。
添削や別解の案などがありましたらご教授下さい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5033.zip
0930デフォルトの名無しさん
2007/10/08(月) 23:14:31問題を少し変えます。
次の読みは何と読むでしょうか?
問題1:一刻千金
1:いっこくせんきん
2:いっこくせんかね
3:いっかくせんきん
上の文を表示させ、答えは「1」と正解番号をキーボード入力するようにしたいです
問題2:一騎当千
1.いっきとうせん
2.いっきせんとう
3.いっきうち
答え1
わかりにくいことをだらだらと書いて申し訳ございません。
0931デフォルトの名無しさん
2007/10/08(月) 23:18:060932デフォルトの名無しさん
2007/10/08(月) 23:21:08[2] 問題文(含コード&リンク):
数字を入力してそのひとつひとつを配列の中に入れる
入力される数字の桁数は不特定である
配列の要素は入力された数字がちょうど収まるようにする
配列に入れるのみで出力はしない
入力例
12345
これを
1 2 3 ・・・・・・
a[0] a[1] a[2] ・・・・・・
となるようにする
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:なし
[5] その他の制限: なし
0933デフォルトの名無しさん
2007/10/08(月) 23:21:42#include<stdio.h>
#include<stdlib.h>
int is_leap(int year){
return (year%400==0 || (year%100!=0 && year%4==0));
}
int week_day(int year, int month, int day){
if(month<=2) year--, month+=12;
return (year+year/4-year/100+year/400+(13*month+8)/5+day)%7;
}
int end_day(int year, int month){
int day_list[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(month==2) return day_list[month-1]+is_leap(year);
return day_list[month-1];
}
int main(int argc, char *argv[]){
int year=2007, month=10, first_week_day, month_day;
int i, color_table[]={31,0,0,0,0,0,34};
if(argc>=2) year=atoi(argv[1]);
if(argc>=3) month=atoi(argv[2]);
first_week_day=week_day(year, month, 1);
month_day=end_day(year, month);
for(i=0;i<first_week_day;i++) printf("%*s", 3, "");
for(i=0;i<month_day;i++){
if( (first_week_day+i)%7==0 && i>0) printf("\n");
printf(" \033[%dm%2d", color_table[(first_week_day+i)%7], i+1);
}
printf(" \033[m");
return 0;
}
0934デフォルトの名無しさん
2007/10/08(月) 23:23:41不可能です
0935デフォルトの名無しさん
2007/10/08(月) 23:26:390936デフォルトの名無しさん
2007/10/08(月) 23:32:05#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
char buf[20+1], buf_len;
int *array=NULL, array_size=0, i;
while(fscanf(stdin, "%20[0-9]", buf)==1){
buf_len=strlen(buf);
array=realloc(array, sizeof(*array)*(array_size+buf_len));
for(i=0;i<buf_len;i++) array[array_size+i]=buf[i]-'0';
array_size+=buf_len;
}
printf("\nInfo: array size is %d\n", array_size);
return 0;
}
0938デフォルトの名無しさん
2007/10/08(月) 23:39:120939デフォルトの名無しさん
2007/10/08(月) 23:41:29何で微妙に大丈夫な数を挙げるんだよw
0940デフォルトの名無しさん
2007/10/08(月) 23:41:42入力してから配列を決めるので不特定にしたのですがそれだとできないということなので
桁数は20未満
20未満で入力された数に対しちょうど収まる配列を作ってそれに一桁ずつ入れていく
というのでどうでしょうか
0941デフォルトの名無しさん
2007/10/08(月) 23:56:07プログラマ暦25年のおっさんはちょっと感動したw
0942デフォルトの名無しさん
2007/10/09(火) 00:07:56ホラヨ
最近のgccなら通るだろ。
ムリならコンパイルオプションに「-std=c99」を追加。
そのオプション無かったらgccが古い。
しかしこいつは本当に出された課題の問題文そのままか?
C99な環境で宿題出す先生なんざ殴っていいと思う。
#include <stdio.h>
#include <string.h>
int main()
{
char tmp[32];
int i;
fgets(tmp,30,stdin);
for(i = 0;i < strlen(tmp);i++){
if(tmp[i] == '\r' || tmp[i] == '\n'){
tmp[i] = '\0';
break;
}
}
char buf[strlen(tmp)];
for(i = strlen(tmp) - 1;i >= 0 ;i--)buf[i] = tmp[i];
//for(i = 0;i < sizeof(buf);i++) printf("[%d]:%c\n", i, buf[i]); //sample output
return 0;
}
あー・・・今気づいたが、配列に入れる「数字」が「数値(intとか?)」のことなら、
テケトーに改変してくれ。
0943デフォルトの名無しさん
2007/10/09(火) 00:54:05ちょw1億じゃなくて1億桁w
多倍長演算ライブラリでもさすがに無理じゃね?
0944デフォルトの名無しさん
2007/10/09(火) 00:58:34[2] 問題文(含コード&リンク):3つの四字熟語の読みをキーボード入力すること。
読みが正解なら正解、間違いなら不正解と表示させたいです。
1、一刻千金 (いっこくせんきん)
2、一騎当千 (いっきとうせん)
3、一朝一夕 (いっちょういっせき)
C言語歴1ヶ月の自分が分かるプログラムにしてくれると嬉しいです。
if文、for文、switch文,while文,do文は一通り学習しましたが
組み合わせ方がわかりません;
[3] 環境
[3.1] OS:windows xp
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 10月9日
[5] その他の制限: なし
わかりにくい書き方、無駄なレスを付けてしまい本当に申し訳ありません;
0945デフォルトの名無しさん
2007/10/09(火) 02:08:31#include<stdio.h>
#include<string.h>
main()
{
int n=1,h=0,x;
char in[1000];
char *q[3]={"一刻千金","一騎当千","一朝一夕"};
char *a[3]={"いっこくせんきん","いっきとうせん","いっちょういっせき"};
printf("読みがなを入力しなさい。\n");
while(n<=3){
printf("問 %d: %s\n",n,q[n-1]);
scanf("%s",in);
if(!strcmp(in,a[n-1]))
printf("正解\n");
else
printf("不正解\n");
x=getchar();
n++;
}
}
ありがとうございます!!
すごいです☆
ちなみに、コンパイラは何を使っているのですか?
0948デフォルトの名無しさん
2007/10/09(火) 02:19:54問い合わせてみたところ、以下のような回答がありました。
「ブブー。それ不許可。必ずレコード連続記録。ファイルサイズが480の倍数にならないと減点対象だからね。」
「非効率でもいいから仕様通りに作っといて。僕なら絶対に末尾へ挿入以外は使わないけど。」
0949デフォルトの名無しさん
2007/10/09(火) 03:19:440950852
2007/10/09(火) 05:08:01gcc3.4で試しました。
VC2005は持ってないので試してません。エラーが出たらメッセージを
貼ってもらえれば、お手伝いできるかもしれません。
0951デフォルトの名無しさん
2007/10/09(火) 12:32:02[2] 問題文(含コード&リンク):1から100までの数字をランダムで一つだけ表示せよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限: 2007/10/9
[5] その他の制限: 自分でやってみましたが実行すると一回目はランダムで数字が選ばれるのですが、何度も実行すると10、9、8、7のように数字がランダムではなく一つずつ選ばれる数字が小さくなるだけでランダムになりません。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 100
int main(void)
{
int a[NUM],i,index;
for(i=0;i<NUM;i++)
a[i]=i+1;
srand((unsigned)time(NULL));
index=rand()/(RAND_MAX + 1.0)*(NUM-1);
printf("%d\n",a[index]);
return(0);
}
0952デフォルトの名無しさん
2007/10/09(火) 12:45:50srand((unsigned)time(NULL));というのは処理系によって
rand()の発生系列をどのように変えるのか違うけど、BCC5.5の
場合はその通りたまたま1秒に1ずつ減っていくように計算結果が
変わるだけでしょう。
不満なら
srand((unsigned)time(NULL));
srand((unsigned)rand());
とでもすればよい。
0953デフォルトの名無しさん
2007/10/09(火) 12:52:430954デフォルトの名無しさん
2007/10/09(火) 13:09:59>index=rand()/(RAND_MAX + 1.0)*(NUM-1);
rand()/(RAND_MAX + 1.0)は0以上1未満の実数を出すので、これをNUM-1にかけるとNUM-2までの数しかでない
index=rand()/(RAND_MAX + 1.0)*NUM;
こうすると0以上NUM未満(NUM-1以下)のNUM個の数が出る
>for(i=0;i<NUM;i++)
a[i]=i+1;
>printf("%d\n",a[index]);
→printf("%d\n",index+1);
>>953
ループ内じゃないだろ
0955sage
2007/10/09(火) 14:15:29[2] 問題文(含コード&リンク):
あるクラスの10人の国語、数学、理科、社会、英語の点数のデータをまとめたファイルがある。
(japanese.dat,math.dat,science.dat,sociology.dat,english.dat)。
ファイル名を入力するとそのファイルの点数データを読み出し、
画面に出力する。ファイル名を入力する前に、入力するファイル数を入力し、
そのファイル数だけ操作を繰り返し行う。最後に入力したファイル名の点数と
人毎の平均点をdataout.datに出力するプログラムを作成せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] cygwin
[3.3] C++
[4] 今日中
入出力はファイルで行います。
期限が迫っていますが全くわかりません。。どなたかよろしくお願いします
C++です。
レス数が950を超えています。1000を超えると書き込みができなくなります。