C/C++の宿題を片付けます 75代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/10/19(木) 20:39:01【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 74代目
http://pc8.2ch.net/test/read.cgi/tech/1158844912/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0159デフォルトの名無しさん
2006/10/22(日) 13:42:31( ̄□ ̄;)!!
Linuxでやると
1 2
top=0
3 4
top=1
5 6
top=2
7 8
top=3
s->top=3 s-elements[s->top].x=7
test.x=7 test.y=8
こうならなきゃおかしいですよね。
0160デフォルトの名無しさん
2006/10/22(日) 13:47:18ちなみに自分のとこのvc,gcc,dmcでは>>159と同じ結果が出ました。
0161デフォルトの名無しさん
2006/10/22(日) 14:00:03コンパイラの性格なんじゃない?
前置演算子に変えてみては?
0162デフォルトの名無しさん
2006/10/22(日) 14:00:56またVC++ .NET 2003 Pro SP1で、/Za /O2、/Oxを試したが、やはり159のとおりになった。
なお、共にコマンドプロンプトから実行した。
0163158
2006/10/22(日) 14:02:24>>s->top=3 s-elements[s->top].x=7
>>test.x=2 test.y=2
デバッガつかってなかったんで、以下のようにmainを書き換えたところ
159と同じ結果でました。VC6の問題かも;・
結果:
1 2
top=0
3 4
top=1
5 6
top=2
7 8
top=3
s->top=3 s-elements[s->top].x=7
test.x=7 test.y=8
0164158
2006/10/22(日) 14:03:42int main() {
struct stack suuretu;
elementtype test;
initstack(&suuretu);
while(scanf("%d %d", &test.x, &test.y)!=EOF) {
push(&suuretu, test);
printf("top=%d\n",suuretu.top);
/* ここ追加開始 */
if(suuretu.top==3)
break;
/* ここ追加終了 */
}
test=pop(&suuretu);
printf("test.x=%d test.y=%d\n", test.x, test.y);
}
0165デフォルトの名無しさん
2006/10/22(日) 14:13:12ついでに適当に探してみた。
多分、VC6 SP3で修正されたこのバグの亜種だな。
http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/vs6fixes.aspx
> 6.3.5.2
> return ステートメントに ++ 演算子を使用すると、
> /Od を指定してコードをコンパイルしたときにアクセス違反となっていました。
0166デフォルトの名無しさん
2006/10/22(日) 15:24:06C++が必修で今学期初めてプログラミングの授業をとりました。
初心者で何もわからないのでどうか助けて下さい。
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):10人の生徒の名前、生徒番号、
4つのテストの点数を入力して、そこからテストの平均点を求め、
平均点から成績を割り出し、それらの記録を表示するプログラムを作成せよ。
成績は4つのテストの平均点が59点以下の場合=F、60−69点=D、
70−79点=C、80−89点=B、90−100点=A。
最終的な表示はこんな感じになります。
名前 生徒番号 テストの平均点 成績
-------------------------------------------
生徒1 28584 90.3 A
生徒2 359 71.6 C
:
生徒10 1701 82.4 B
[3] 環境
[3.1] OS: (Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C++
[4] 期限: 明日
[5] その他の制限: struct type array を使用する事
0167139
2006/10/22(日) 15:29:07>165
おかげさまでサービスパックをインストールしたら直りました。
ですが、構造体変数の宣言をmain内でしようとするとgccでは出ないエラーが出るので、もう好きになれません。
0168デフォルトの名無しさん
2006/10/22(日) 15:34:21一応自分がどれくらいのレベルか分かってもらうために
途中まで書いたのを載っけときますので、よろしくお願いします。
#include<iostream>
#include<iomanip>
using namespace std;
const_int NUM_STUDENT=10;
void getStudentInfo(char name[25],int &points);
char calculateGrade(int points);
void displayResult(char name[25],char grade);
struct Student
{
char stuName[25];
char grade;
int idNum;
int *testScore;
float average;
};
0169デフォルトの名無しさん
2006/10/22(日) 15:36:21int main()
{
char stuName[25],grade;
int earnedPoints=0;
getStudentInfo(stuName,earnedPoints);
grade=calculateGrade(earnedPoints);
displayResult(stuName,grade);
return 0;
}
void getStudentInfo(char name[25],int &points)
{
int test1, test2, test3, test4;
int scores [NUM_STUDENT];
int idNum;
float average;
0170デフォルトの名無しさん
2006/10/22(日) 15:37:44{
cout<<"Enter name of the student:";
cin.getline(name,25);
cout<<"Enter the first test score:";
cin>>test1;
cout<<"Enter the second test score:";
cin>>test2;
cout<<"Enter the third test score:";
cin>>test3;
cout<<"Enter the fourth test score:";
cin>>test4;
points=test1+test2+test3+test4;
}
}
char calculateGrade(int points)
{
char letterGrades;
int average=(points/4);
0171デフォルトの名無しさん
2006/10/22(日) 15:38:17if (average>=90)
letterGrade='A';
else if (average>=80)
letterGrade='B';
else if (average>=70)
letterGrade='C';
else if (average>=60)
letterGrade='D';
else
letterGrade='F';
return letterGrade;
}
void displayResult(char name[25],char grade)
{
cout<<endl<<endl;
cout<<"Student Name"<<" "<<name<<endl;
cout<<setw(45)<<setfill('-')<<"-"<<setfill('-')<<endl;
cout<<setw(14)<<"GRADE"<<" "<<grade<<endl<<endl;
}
0172デフォルトの名無しさん
2006/10/22(日) 16:00:12[2] 50円切手が 5 枚, 80円切手が 4 枚, 120円切手が 3 枚あるとき, キーボードから金額 t を入力し, 金額の合計がちょうど t 円になるような切手の枚数の組合せを求めるプログラムを作成せよ.
次のような出力が得られることを確認せよ (表示形式は各自工夫せよ).
o 310円 → 50円×3枚+80円×2枚+120円×0枚
o 390円 → 50円×3枚+80円×0枚+120円×2枚, 50円×3枚+80円×3枚+120円×0枚
[3] 環境
[3.1] winXP sp2
[3.2] cygwin
[3.3] C
[4] 2006年10月23日23時59分
[5] 途中までやったんで埋める形でお願いします
途中までやったぶんは次書きます
0173129
2006/10/22(日) 16:00:33実際に動かしてみたところ、様々な行列表示にはなるのですが、
>>129で設定したdat形式のように、
4 8
1 3 5 7 9 0 2 4
6 8 1 3 5 7 9 0
2 4 6 8 1 3 5 7
と、そのまま表示させるには、>>135のプログラムをどのようにすれば、
表示させることができるのでしょうか?
教えて君で本当に申し訳ありません。
0174172
2006/10/22(日) 16:01:44int main (void)
{
int x,y,z,t;
printf("金額tを入力してください>>");
scanf("%d",t);
for(x=0;x<=5;x++)
{
for(y=0;y<=4;y++)
{
for(z=0;z<=3;z++)
{
printf(" );
}
}
}
return 0;
}
よろしくお願いします
0175デフォルトの名無しさん
2006/10/22(日) 16:05:56scanf("%d", &t); な
if(t == 50*x+80*y+120*z)
0176172
2006/10/22(日) 16:15:41int main (void)
{
int x,y,z,t;
printf("金額tを入力してください>>");
scanf("%d",&t);
for(x=0;x<=5;x++)
{
for(y=0;y<=4;y++)
{
for(z=0;z<=3;z++)
{
if(t == 50*x+80*y+120*z)
{
printf("50円×%d枚+80円×%d枚+120円×%d枚"\n",x,y,z);
}
}
}
}
return 0;
}
これであってますか?
0177デフォルトの名無しさん
2006/10/22(日) 16:20:53#include<iostream>
#include<iomanip>
#include<numeric>
using namespace std;
const int NUM_STUDENT = 10;
const int NUM_TEST = 4;
const char*number_string[NUM_TEST]={"first","second","third","fourth"};
struct Student
{
char name[25];
int id,testScore[NUM_TEST];
int total(){return accumulate(testScore,testScore+4,0);}
static float average(int total){return total / 4.0f;}
static char grade(int total){return "FFFFFFDCBAA"[total / 4 / 10];}
void input(){
cout << "Enter name of the student:";
cin.getline (name, 25);
cout << "Enter id of the student:";
cin >> id;
/*
0178デフォルトの名無しさん
2006/10/22(日) 16:21:47*/
for(int i=0;i<4;++i){
cout << "Enter the "<<number_string[i]<<" test score:";cin >> testScore[i];
}
cin.ignore(std::numeric_limits<int>::max(),'\n');
}
void output(){
int total = this->total();
cout << setw(8) << name << setw(8) << id
<< setw(16) << average(total) << setw(8) << grade(total) << endl;
}
};
int main ()
{
Student a[NUM_STUDENT];
for(int i=0;i<NUM_STUDENT;++i)a[i].input();
cout << "名前 生徒番号 テストの平均点 成績" << endl;
cout << "----------------------------------------" << endl;
for(int i=0;i<NUM_STUDENT;++i)a[i].output();
return 0;
}
0179デフォルトの名無しさん
2006/10/22(日) 16:23:12まあ、やりたいこととしては合ってるんだが…それくらい自分でテストしようよ
ちなみにそのままだとコンパイル通らないぞ
0181デフォルトの名無しさん
2006/10/22(日) 16:34:36[2] 問題文(含コード&リンク):
完全に昇順ソートされているデータうち、配列の添字の範囲L中のn組の2個のデータがわざと交換されているとする(L>2n)。
この場合,データが昇順である性質が一部失われる。L=10, n<=1のとき,すなわち,配列の添字の範囲10以内では,1もしくは2個の
データの値の昇順が保証されない場合に,二分探索をどのように改良すれば,正しい探索が行えるだろうか?そのプログラムを実現せよ。
補足
用いるデータは,全部で100個。データの作成は手作業で構わない。
データを全部ソートし直すのはまずいが,二分探索をしながら辺りを調べその結果,一部何らかのデータ操作を行うことは禁止していない。
100個のデータを昇順に並び替えるプログラム載せてみます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2804.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: borland
[3.3] 言語: C
[4] 期限: 10/23
[5] その他の制限: どんな改良をしたか書いていただければ幸いです。
どうか、よろしくお願いします。
0182デフォルトの名無しさん
2006/10/22(日) 16:52:530183デフォルトの名無しさん
2006/10/22(日) 17:01:14>>181
>L=10, n<=1のとき,すなわち,配列の添字の範囲10以内では,1もしくは2個の
>データの値の昇順が保証されない場合に,
この条件をもうちょっと厳密に頼む。
0184デフォルトの名無しさん
2006/10/22(日) 17:09:25そこで使っている変数の値を表示させることが多い。
その必要がなければ、関数名や"enter"/"leave"とか。
0185デフォルトの名無しさん
2006/10/22(日) 17:27:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2764.txt
0186デフォルトの名無しさん
2006/10/22(日) 17:27:56ほぼ >>74 と同じファイル名と行番号+関数名
0187デフォルトの名無しさん
2006/10/22(日) 17:33:49前スレ684以降にあるじゃん?
0188デフォルトの名無しさん
2006/10/22(日) 18:32:09実装は面倒なのでアイデアだけ.n ≦ 1 ならこれで動くはず.
・二分探索を行う.ただし端点の要素は三つくらいの要素の
中間値でも取って昇順条件を外れた要素を踏まないようにする.
・二分探索で範囲を絞りきったときの状態は
1. 目的の値が見つかった → 終了.
2. 昇順条件には従うが目的の値は見つからない → 存在しない.
3. 昇順条件に反する値が見つかった → その値をキーにして再度二分探索.
一般の L, n については考えてないけど,O(n log L) くらいがある気はする.
0189デフォルトの名無しさん
2006/10/22(日) 19:01:24>一般の L, n については考えてないけど,O(n log L) くらいがある気はする.
なんでLの増加関数?
Lが小さいほど頻繁な交換が許されるので
より時間が掛かるようになるんじゃないか?
0190デフォルトの名無しさん
2006/10/22(日) 19:47:58L はリストの長さだから,全く交換が許されないとしても O(log L) はかかる.
L が小さいときは全然単調じゃなくなって線型探索したほうが早くなる(かもしれない)
けど,O 表記は漸近的に大きいときの挙動をあらわすので関係ない.
0191デフォルトの名無しさん
2006/10/22(日) 20:07:27>L はリストの長さだから
俺は違うように読んだ。正確な事は読み取れないけど、例えば
「任意の長さLの部分列について、n組が交換されている」
とか。これだとそんな列は存在し得ないので正しい解釈じゃないけど。
それに、>>180ではL=10でデータ数は100個と言っている。
0192デフォルトの名無しさん
2006/10/22(日) 20:25:47なるほど,再読すると 191 のように読めた.俺の誤読っぽい.
やっぱり細かいところがわからんので 181 は再説明求む.
0193デフォルトの名無しさん
2006/10/22(日) 21:03:11何のソフト使ってるのか教えてくれないか?
翻訳ソフトだとしたら高機能っぽいので興味がある。
0194デフォルトの名無しさん
2006/10/22(日) 21:07:46翻訳?
MSIMEで「、」「。」の変換候補に出てくるけど?
0195デフォルトの名無しさん
2006/10/22(日) 21:08:53皮肉だと思うがマジレス。
理系の人は日常的に使う。論文などでもそれが普通。
MS-IMEでも設定で句読点変えれる。
俺は文系だけどな!
0196デフォルトの名無しさん
2006/10/22(日) 21:21:38[2] 問題文(含コード&リンク):
ファイルからの入力・構造体
ファイル「kyotocity.txt」には、京都市の区ごとの人口(人)と面積(平方キロメートル)が記述されている。
これらの情報を格納する構造体 struct division を宣言しなさい。
struct division {
char name[20];
int population;
double area;
}
struct division型の配列 kyoto[11]を用意し、ファイルからデータを読んで、配列に入力しなさい。
入力した構造体の配列を調べて、以下の情報を出力しなさい。
人口が最大の区と最小の区の、名前と人口。
面積が最大の区と最小の区の、名前と面積。
人口密度が最大の区と最小の区の、名前と人口密度。
↓txtファイル中身のデータ↓
Kita 124306 94.92
Kamigyo 83082 7.11
Sakyo 168133 246.88
Nakagyo 100145 7.38
Higashiyama 41659 7.46
Yamashina 136769 28.78
Shimogyo 74897 6.82
Minami 97877 15.78
Ukyo 201819 291.95
Nishikyo 155973 59.20
Fushimi 284812 61.62
[3.1] OS: windws xp pro [3.2] visual studio 2003 [3.3] 言語: C
[4] 期限: 11月までに、なるべく早くお願いします
[5] その他の制限: 反復構造、ソート、探索、ポインタ、ファイル、構造体
0197デフォルトの名無しさん
2006/10/22(日) 21:26:22196の問題の解く部分は
人口が最大の区と最小の区の、名前と人口。
まででも構いません。
面積が最大の区と最小の区の、名前と面積。と
人口密度が最大の区と最小の区の、名前と人口密度。
は、前者の問題を応用して自分でやります
よろしくお願いします
0198デフォルトの名無しさん
2006/10/22(日) 21:41:05MS-IMEを始めとして、多くの日本語IMEは句読点に何を使うか、,と。.の組み合わせを設定できる。
たとえば,.を使用するように選んだ場合、キーボードの、。を叩くと変換するまでもなく直接,.が入力される。
スレ違いすまん。
0199デフォルトの名無しさん
2006/10/22(日) 21:44:20日本語のあとじゃないだろ。
0200デフォルトの名無しさん
2006/10/22(日) 21:48:28見当違いの予感
0201デフォルトの名無しさん
2006/10/22(日) 21:49:220202デフォルトの名無しさん
2006/10/22(日) 21:52:380203デフォルトの名無しさん
2006/10/22(日) 21:53:01別に、や。である必要もない。
それぞれの分野での習慣。
0204デフォルトの名無しさん
2006/10/22(日) 21:54:17数字の後の,や.以外での必要性が分からない。
0205181
2006/10/22(日) 21:59:30具体案ありがとうございます。
>>183,>>192
100個の範囲の中から、10個見たとき昇順でない要素があると言ってましたが、
問題文その物のようです。
これ以上細かなことは聞いてないんです・・・
0206デフォルトの名無しさん
2006/10/22(日) 22:05:510207デフォルトの名無しさん
2006/10/22(日) 23:41:00[2] 問題文
文字列に文字列を挿入する関数 str_ins を作成する。
str_ins( 挿入先の文字列 , 挿入する位置 , 挿入文字列)
-------------------雛形--------------------------
#include <stdio.h>
int str_ins(char str[], int p, char pat[])
{
}
int main(void)
{
char a[128];
strcpy(a, "abcdef");
str_ins(a, 3, "xyz");
puts(a);
}
-------------実行結果-----------------
[yokoyama@pratpc02 Temp]$ ./a.out
abcxyzdef
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 10月24日
[5] その他の制限:特になし
よろしくお願いします
0208デフォルトの名無しさん
2006/10/22(日) 23:55:23#include <string.h>
int str_ins(char str[], int p, char pat[])
{
size_t len = strlen(pat);
memmove(str+p+len,str+p,strlen(str+p)+1);
memcpy(str+p,pat,len);
}
0209デフォルトの名無しさん
2006/10/22(日) 23:59:50そりゃ文字列操作じゃなくてメモリ操作だろ
pの例外とか考えにゃならん
けど良く頑張った
0210デフォルトの名無しさん
2006/10/23(月) 00:01:27memmoveの引数、一番目と二番目が逆じゃね。
0211デフォルトの名無しさん
2006/10/23(月) 00:01:41pの例外?
0212デフォルトの名無しさん
2006/10/23(月) 00:04:06str_ins(a,-1,b);
とか出来るけど、おかしいよね
0213デフォルトの名無しさん
2006/10/23(月) 00:04:56strの範囲外をpが指してる時とかじゃね?
まぁ俺は変なデータを渡す奴が悪い、そんなの知らん。という主義だけど。
0214181
2006/10/23(月) 00:06:54取り出すのではなく、1〜100までの中の任意の連続した10個の中に
昇順ではない並びがある時といった感じだったと思います。
昇順ではない箇所はいくつかというのは指定されていなかったと思うので、
拡大すれば1〜100のなかで1箇所だけ順序が違うけど2分探索しろ ということだと思います。
0215デフォルトの名無しさん
2006/10/23(月) 00:11:51[2] 2 数 n と m を入力すると, 下のように '@' を n x m 個並べたパターン (画像) を出力するプログラムを作成せよ. 制御部は for 文の 2 重ループを用いよ.
[3]
[3.1] winXP sp2
[3.2] cygwin
[3.3] C
[4] 23時59分
[5] n=5 m=8でこんなん
@@@@@@@@
@@@@@@@@
@@@@@@@@
@@@@@@@@
@@@@@@@@
よろしくお願いします
0216デフォルトの名無しさん
2006/10/23(月) 00:11:56>>213
負の値はさすがにアレだけど、
> str_ins( 挿入先の文字列 , 挿入する位置 , 挿入文字列)
↑に従うと文字サイズ渡せないから、エラーチェックなんてどうでもいい課題なんじゃないかね?
0217デフォルトの名無しさん
2006/10/23(月) 00:14:560218デフォルトの名無しさん
2006/10/23(月) 00:15:02まぁ人それぞれの解釈になるわな
というわけで俺は愚問でFAした
0219デフォルトの名無しさん
2006/10/23(月) 00:16:06バッファサイズでしたorz
0220デフォルトの名無しさん
2006/10/23(月) 00:17:20#include<stdio.h>
#include<stdlib.h>
int main(int argc,char**argv){
if(argc==3){
int n=atoi(argv[1]);
int m=atoi(argv[2]);
int i,j;
for(i=0;i<n;putchar('\n'),++i)
for(j=0;j<m;++j)
putchar('@');
}
}
0221デフォルトの名無しさん
2006/10/23(月) 00:23:00もう寝よう…
0222 ◆3zNBOPkseQ
2006/10/23(月) 00:31:46#include <stdio.h>
int main (void)
{
int mozi;
printf("文字を一字入力してください。");
scanf("%s",&mozi);
if(mozi>='A' && mozi<='Z')printf("英大文字です");
else if(mozi>='a' && mozi<='z')
printf("英小文字です");
else if(mozi>=0 && mozi<=9)
printf("数字です");
else
printf("英字でも数字でもありません");
return 0;
}
0223デフォルトの名無しさん
2006/10/23(月) 00:33:510224デフォルトの名無しさん
2006/10/23(月) 00:34:07int main(){
char c;
scanf("%c",&c);
とかじゃなかった?
0225デフォルトの名無しさん
2006/10/23(月) 00:34:310226 ◆3zNBOPkseQ
2006/10/23(月) 01:03:47文字列でなくて一字でもcharの方がいいのですか
サンクスコ
0228デフォルトの名無しさん
2006/10/23(月) 01:44:31#include <stdio.h>
int main()
{
int m, n, i, j;
printf("m> "); scanf("%d", &m);
printf("n> "); scanf("%d", &n);
for (; m > 0; putchar(\n), m--) {
for (i = 0; i < n; i++)
putchar("@");
}
}
0229デフォルトの名無しさん
2006/10/23(月) 01:47:45putchar(@) => putchar('@')
に修正
0230デフォルトの名無しさん
2006/10/23(月) 02:31:20[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):50音順にソートするプログラムをつくれ。 (隣接交換)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C
コンパイラ通らない原因がわからないです。
お願いします。
0231デフォルトの名無しさん
2006/10/23(月) 02:34:44エラー文訂正します
/*
以下エラー文です。
c:\MyC>gcc foo.c
foo.c: In function `main': ←foo.c: In function `sort': が正しいです。すみません><
foo.c:42: incompatible types in assignment
foo.c:43: incompatible types in assignment
foo.c:44: incompatible types in assignment
*/
0232デフォルトの名無しさん
2006/10/23(月) 02:37:510233215
2006/10/23(月) 02:38:39ありがとうございました
0234デフォルトの名無しさん
2006/10/23(月) 02:49:37ありがとうw
0235デフォルトの名無しさん
2006/10/23(月) 02:56:190236デフォルトの名無しさん
2006/10/23(月) 03:45:53最初からポインタを教えないらしい。
0237デフォルトの名無しさん
2006/10/23(月) 03:53:380238デフォルトの名無しさん
2006/10/23(月) 05:39:32[2] 問題文(含コード&リンク):
あるフォルダ(sample)の中にある画像(.jpg,.jpeg)の更新日時(作成日時?)を取得し
yyyy-mmの様にフォルダを作成し各々のフォルダに振り分けるプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 水曜日まで
[5] その他の制限:
よろしくお願いします。
0239デフォルトの名無しさん
2006/10/23(月) 05:53:42Unixシステムコールか、Win32APIのどっちで取ってくるのか
0240デフォルトの名無しさん
2006/10/23(月) 06:00:13質問者じゃねーけど、OSがWinXPなんだから、APIでいいんじゃね?w
0241デフォルトの名無しさん
2006/10/23(月) 06:03:55学校のPCじゃLinuxだけど、うちだとWinしかないとかありうるかなーと
まぁやる気はないんだが
0242238
2006/10/23(月) 06:50:30言葉が足りなくてすみません。
Win32APIでお願いします。
JavaでLinuxは触っていますがCではXPにCygwin+gccがメインです。
0243デフォルトの名無しさん
2006/10/23(月) 06:58:370244デフォルトの名無しさん
2006/10/23(月) 07:15:390245238
2006/10/23(月) 07:36:30Win32APIだと作る事ができないんですか?
漠然と課題内容の物作って来いと言う課題だったので…。
0246デフォルトの名無しさん
2006/10/23(月) 08:00:30http://www.google.com/search?num=50&hl=ja&q=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB+%E6%9B%B4%E6%96%B0%E6%97%A5%E6%99%82+%E5%8F%96%E5%BE%97&lr=lang_ja
http://www.google.com/search?num=50&hl=ja&q=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB+%E5%88%97%E6%8C%99&lr=lang_ja
あとはフォルダの作成とかファイルの移動とか
0247デフォルトの名無しさん
2006/10/23(月) 08:01:49わざわざありがとうございます。
自分でやってみて詰まったらまた着ますのでよろしくお願いします。
0248デフォルトの名無しさん
2006/10/23(月) 08:09:03http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2807.c
0249デフォルトの名無しさん
2006/10/23(月) 08:12:370250デフォルトの名無しさん
2006/10/23(月) 09:29:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2808.c
gcc(mingw)でコンパイル・リンク・動作確認してある
環境依存・コンパイラ依存してるのでコンパイラが変わると書き換えなきゃいけないが…
0251238
2006/10/23(月) 10:34:13出先からなので携帯から失礼します。
本当にありがとうございます。
参考を見ても全くどうすれば良いか分からずに半ば諦めモードでした。
凄く助かりました本当にありがとうございました。
0252デフォルトの名無しさん
2006/10/23(月) 11:13:42ターゲット m は検索結果の場所 n を元に n-L < m < n+L の範囲にあるので
その範囲を線形サーチすると見つかる(はず)
int search(int search_value, int *data, int data_num){
intcenter, search_start, search_end;
inti;
search_start=0;
search_end=data_num-1;
while(search_end-search_start>=0){
center=(search_end-search_start)/2+search_start;
if(data[center]==search_value)
return center;
if(data[center]>search_value){
search_end=center-1;
}
else{
search_start=center+1;
}
}
search_start-=L;
search_end+=L;
if(search_start<0)
search_start=0;
if(search_end>=data_num)
search_end=data_num-1;
for(i=search_start;i<=search_end;i++)
if(data[i]==search_value)
return i;
return -1;
}
0253デフォルトの名無しさん
2006/10/23(月) 11:19:50「オレの質問答えが出てない」っていう質問者さん、是非もう一度書きこんで下さい。
0254デフォルトの名無しさん
2006/10/23(月) 12:17:34[2] 問題文(含コード&リンク):
コマンド行から複数の数値を受け取りその平均値を出力するプログラムを作成し、プログラムリストと実行結果を示せ。
ヒント:受け取った文字列をdouble型に変換するには関数double atof(const char *nPtr)を使うこの関数を使うにはstdlib.hのインクルードが必要である
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[] = "1.41421356";
double x;
x = atof(str);
}
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C)
[4] 期限: ([金曜まで])
[5] その他の制限:
ヒントみたいなのがあるけどよくわかりません、おねがいします
0255デフォルトの名無しさん
2006/10/23(月) 13:06:37[2] 問題文(含コード&リンク): 無限に走り続けるプログラムtest.cを作り、実行可能なプログラムにtestという名前をつけ、これをバックグラウンドで走らせ、そのプロセスを殺すこと。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 特になし
0256デフォルトの名無しさん
2006/10/23(月) 13:11:59while(1);
0257デフォルトの名無しさん
2006/10/23(月) 13:28:44#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
int i=0,n;
double *x;
double a=0,m=1,h=0;
if(argc<2) {
fprintf(stderr,"error : no input");
exit(1);
}
n=argc-1;
x=(double *)malloc(sizeof(double)*n);
while(i<n)
x[i++]=atof(argv[i+1]);
for(i=0;i<n;i++) {
a+=x[i];
m*=x[i];
h+=1/x[i];
}
a/=n;
m=pow(m,1/(double)n);
h=n/h;
printf("Arithmetical average = %lf\n",a);
printf("Multiply mean = %lf\n",m);
printf("Hamonic mean = %lf\n",h);
free(x);
return 0;
}
0258デフォルトの名無しさん
2006/10/23(月) 15:42:57なるほど。算術平均とは言われてないもんな。
■ このスレッドは過去ログ倉庫に格納されています