トップページ⇒tech
1001コメント433KB

C/C++の宿題を片付けます 75代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/19(木) 20:39:01
あなたが解けない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++の宿題を片付けます 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
0175デフォルトの名無しさん2006/10/22(日) 16:05:56
>>174
scanf("%d", &t); な

if(t == 50*x+80*y+120*z)
01761722006/10/22(日) 16:15:41
#include<stdio.h>

int 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
とりあえず>>168をベースに適当に書いた。
#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
>>176
まあ、やりたいこととしては合ってるんだが…それくらい自分でテストしようよ

ちなみにそのままだとコンパイル通らないぞ
01801722006/10/22(日) 16:25:48
>>179
"が多かったですね。
自分でテストできるの忘れてました。ありがとうございました。
0181デフォルトの名無しさん2006/10/22(日) 16:34:36
[1] 授業単元: プログラミング
[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:53
おまえらprintfデバッグをやるときにどんな文字列を表示させてる?俺はいつもunkoって表示させてる。
0183デフォルトの名無しさん2006/10/22(日) 17:01:14
ひさびさに面白そうな問題が。
>>181
>L=10, n<=1のとき,すなわち,配列の添字の範囲10以内では,1もしくは2個の
>データの値の昇順が保証されない場合に,
この条件をもうちょっと厳密に頼む。
0184デフォルトの名無しさん2006/10/22(日) 17:09:25
>>182
そこで使っている変数の値を表示させることが多い。
その必要がなければ、関数名や"enter"/"leave"とか。
0185デフォルトの名無しさん2006/10/22(日) 17:27:05
前スレ683をC言語でやってくださる方いませんか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2764.txt
0186デフォルトの名無しさん2006/10/22(日) 17:27:56
>>182
ほぼ >>74 と同じファイル名と行番号+関数名
0187デフォルトの名無しさん2006/10/22(日) 17:33:49
>>185
前スレ684以降にあるじゃん?
0188デフォルトの名無しさん2006/10/22(日) 18:32:09
>>181
実装は面倒なのでアイデアだけ.n ≦ 1 ならこれで動くはず.

・二分探索を行う.ただし端点の要素は三つくらいの要素の
 中間値でも取って昇順条件を外れた要素を踏まないようにする.
・二分探索で範囲を絞りきったときの状態は
 1. 目的の値が見つかった → 終了.
 2. 昇順条件には従うが目的の値は見つからない → 存在しない.
 3. 昇順条件に反する値が見つかった → その値をキーにして再度二分探索.


一般の L, n については考えてないけど,O(n log L) くらいがある気はする.
0189デフォルトの名無しさん2006/10/22(日) 19:01:24
>>188
>一般の L, n については考えてないけど,O(n log L) くらいがある気はする.
なんでLの増加関数?
Lが小さいほど頻繁な交換が許されるので
より時間が掛かるようになるんじゃないか?
0190デフォルトの名無しさん2006/10/22(日) 19:47:58
>>189
L はリストの長さだから,全く交換が許されないとしても O(log L) はかかる.

L が小さいときは全然単調じゃなくなって線型探索したほうが早くなる(かもしれない)
けど,O 表記は漸近的に大きいときの挙動をあらわすので関係ない.
0191デフォルトの名無しさん2006/10/22(日) 20:07:27
>>190
>L はリストの長さだから
俺は違うように読んだ。正確な事は読み取れないけど、例えば
「任意の長さLの部分列について、n組が交換されている」
とか。これだとそんな列は存在し得ないので正しい解釈じゃないけど。
それに、>>180ではL=10でデータ数は100個と言っている。
0192デフォルトの名無しさん2006/10/22(日) 20:25:47
>>191
なるほど,再読すると 191 のように読めた.俺の誤読っぽい.

やっぱり細かいところがわからんので 181 は再説明求む.
0193デフォルトの名無しさん2006/10/22(日) 21:03:11
全然関係ないんだけど,や.の句読点になってるのは
何のソフト使ってるのか教えてくれないか?
翻訳ソフトだとしたら高機能っぽいので興味がある。
0194デフォルトの名無しさん2006/10/22(日) 21:07:46
>>193
翻訳?
MSIMEで「、」「。」の変換候補に出てくるけど?
0195デフォルトの名無しさん2006/10/22(日) 21:08:53
>>193
皮肉だと思うがマジレス。
理系の人は日常的に使う。論文などでもそれが普通。
MS-IMEでも設定で句読点変えれる。

俺は文系だけどな!
0196デフォルトの名無しさん2006/10/22(日) 21:21:38
[1] C言語プログラミング
[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:22
>>196です。

196の問題の解く部分は
人口が最大の区と最小の区の、名前と人口。
まででも構いません。

面積が最大の区と最小の区の、名前と面積。と
人口密度が最大の区と最小の区の、名前と人口密度。
は、前者の問題を応用して自分でやります

よろしくお願いします
0198デフォルトの名無しさん2006/10/22(日) 21:41:05
>>193
MS-IMEを始めとして、多くの日本語IMEは句読点に何を使うか、,と。.の組み合わせを設定できる。
たとえば,.を使用するように選んだ場合、キーボードの、。を叩くと変換するまでもなく直接,.が入力される。

スレ違いすまん。
0199デフォルトの名無しさん2006/10/22(日) 21:44:20
いや、IMEで設定するのは数字のあとに.や,にするにしておけばいいことじゃん
日本語のあとじゃないだろ。
0200デフォルトの名無しさん2006/10/22(日) 21:48:28
>>199
見当違いの予感
0201デフォルトの名無しさん2006/10/22(日) 21:49:22
わざわざ,や.に設定する意味が分からない。
0202デフォルトの名無しさん2006/10/22(日) 21:52:38
>>201 >>195
0203デフォルトの名無しさん2006/10/22(日) 21:53:01
>>201
別に、や。である必要もない。
それぞれの分野での習慣。
0204デフォルトの名無しさん2006/10/22(日) 21:54:17
、や。は文として必要。
数字の後の,や.以外での必要性が分からない。
02051812006/10/22(日) 21:59:30
>>188
具体案ありがとうございます。

>>183,>>192
100個の範囲の中から、10個見たとき昇順でない要素があると言ってましたが、
問題文その物のようです。
これ以上細かなことは聞いてないんです・・・
0206デフォルトの名無しさん2006/10/22(日) 22:05:51
1...100のうち任意に取り出した、連続した10個ってことなんだろうか
0207デフォルトの名無しさん2006/10/22(日) 23:41:00
[1] 授業単元:コンピューター実習
[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
>>207
#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
>>208
そりゃ文字列操作じゃなくてメモリ操作だろ
pの例外とか考えにゃならん
けど良く頑張った
0210デフォルトの名無しさん2006/10/23(月) 00:01:27
>>208
memmoveの引数、一番目と二番目が逆じゃね。
0211デフォルトの名無しさん2006/10/23(月) 00:01:41
>>209
pの例外?
0212デフォルトの名無しさん2006/10/23(月) 00:04:06
>>211
str_ins(a,-1,b);
とか出来るけど、おかしいよね
0213デフォルトの名無しさん2006/10/23(月) 00:04:56
>>211
strの範囲外をpが指してる時とかじゃね?
まぁ俺は変なデータを渡す奴が悪い、そんなの知らん。という主義だけど。
02141812006/10/23(月) 00:06:54
>>206
取り出すのではなく、1〜100までの中の任意の連続した10個の中に
昇順ではない並びがある時といった感じだったと思います。
昇順ではない箇所はいくつかというのは指定されていなかったと思うので、
拡大すれば1〜100のなかで1箇所だけ順序が違うけど2分探索しろ ということだと思います。
0215デフォルトの名無しさん2006/10/23(月) 00:11:51
[1] プログラミング
[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
>>212
>>213
負の値はさすがにアレだけど、

> str_ins( 挿入先の文字列 , 挿入する位置 , 挿入文字列)

↑に従うと文字サイズ渡せないから、エラーチェックなんてどうでもいい課題なんじゃないかね?
0217デフォルトの名無しさん2006/10/23(月) 00:14:56
文字サイズ?
0218デフォルトの名無しさん2006/10/23(月) 00:15:02
>>216
まぁ人それぞれの解釈になるわな

というわけで俺は愚問でFAした
0219デフォルトの名無しさん2006/10/23(月) 00:16:06
>>217
バッファサイズでしたorz
0220デフォルトの名無しさん2006/10/23(月) 00:17:20
>>215
#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
2数が2進数に見えた
もう寝よう…
0222 ◆3zNBOPkseQ 2006/10/23(月) 00:31:46
入力した一字を判別したプログラムをif制御で作りたいのですが、下のどこが違いますか?
#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:51
scanf("%c",&mozi); 
0224デフォルトの名無しさん2006/10/23(月) 00:34:07
めんどうだから

int main(){
char c;
scanf("%c",&c);

とかじゃなかった?
0225デフォルトの名無しさん2006/10/23(月) 00:34:31
char mozi;
0226 ◆3zNBOPkseQ 2006/10/23(月) 01:03:47
>>225
文字列でなくて一字でもcharの方がいいのですか
サンクスコ
02272152006/10/23(月) 01:11:59
すいません、#include<stdlibh>とかはまだ使ってないです。
>>174と同じくらいの感じで出来ないでしょうか。
0228デフォルトの名無しさん2006/10/23(月) 01:44:31
>>227
#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:45
putchar(\n) => putchar('\n')
putchar(@) => putchar('@')
に修正
0230デフォルトの名無しさん2006/10/23(月) 02:31:20
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2806.txt

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):50音順にソートするプログラムをつくれ。 (隣接交換)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C


コンパイラ通らない原因がわからないです。
お願いします。
0231デフォルトの名無しさん2006/10/23(月) 02:34:44
>>230です。
エラー文訂正します

/*
以下エラー文です。

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:51
strcpy使えよ
02332152006/10/23(月) 02:38:39
228
ありがとうございました
0234デフォルトの名無しさん2006/10/23(月) 02:49:37
>>232
ありがとうw
0235デフォルトの名無しさん2006/10/23(月) 02:56:19
最近はポインタ使っちゃいけないと学校で教えてるのか…?
0236デフォルトの名無しさん2006/10/23(月) 03:45:53
馬鹿学生が多くて理解できないから
最初からポインタを教えないらしい。
0237デフォルトの名無しさん2006/10/23(月) 03:53:38
教える側がポインタを理解してないらしい
0238デフォルトの名無しさん2006/10/23(月) 05:39:32
[1] 授業単元:プログラミング基礎
[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:42
ファイルの日付だよな?
Unixシステムコールか、Win32APIのどっちで取ってくるのか
0240デフォルトの名無しさん2006/10/23(月) 06:00:13
>>239
質問者じゃねーけど、OSがWinXPなんだから、APIでいいんじゃね?w
0241デフォルトの名無しさん2006/10/23(月) 06:03:55
いあコンパイラはgccとか書いてあるしさ
学校のPCじゃLinuxだけど、うちだとWinしかないとかありうるかなーと

まぁやる気はないんだが
02422382006/10/23(月) 06:50:30
>>239
言葉が足りなくてすみません。
Win32APIでお願いします。
JavaでLinuxは触っていますがCではXPにCygwin+gccがメインです。
0243デフォルトの名無しさん2006/10/23(月) 06:58:37
それじゃAPIじゃダメだろ。
0244デフォルトの名無しさん2006/10/23(月) 07:15:39
FindFirstFile()とFindNextFile()で作るしかなかろう。
02452382006/10/23(月) 07:36:30
自分はCがあまり得意で無い為にこちらで聴く事にしたんです。
Win32APIだと作る事ができないんですか?

漠然と課題内容の物作って来いと言う課題だったので…。
0246デフォルトの名無しさん2006/10/23(月) 08:00:30
>>245

http://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
>>246
わざわざありがとうございます。
自分でやってみて詰まったらまた着ますのでよろしくお願いします。
0248デフォルトの名無しさん2006/10/23(月) 08:09:03
>>196
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2807.c
0249デフォルトの名無しさん2006/10/23(月) 08:12:37
逐次でやりゃあオケじゃん
0250デフォルトの名無しさん2006/10/23(月) 09:29:04
>>238
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2808.c
gcc(mingw)でコンパイル・リンク・動作確認してある

環境依存・コンパイラ依存してるのでコンパイラが変わると書き換えなきゃいけないが…
02512382006/10/23(月) 10:34:13
>>250様
出先からなので携帯から失礼します。
本当にありがとうございます。
参考を見ても全くどうすれば良いか分からずに半ば諦めモードでした。
凄く助かりました本当にありがとうございました。
0252デフォルトの名無しさん2006/10/23(月) 11:13:42
>>181
ターゲット 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
[1] 授業単元:C演習
[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
[1] 授業単元: オペレーティングシステム
[2] 問題文(含コード&リンク): 無限に走り続けるプログラムtest.cを作り、実行可能なプログラムにtestという名前をつけ、これをバックグラウンドで走らせ、そのプロセスを殺すこと。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 特になし
0256デフォルトの名無しさん2006/10/23(月) 13:11:59
>>255
while(1);
0257デフォルトの名無しさん2006/10/23(月) 13:28:44
>>254
#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
>>257
なるほど。算術平均とは言われてないもんな。
0259デフォルトの名無しさん2006/10/23(月) 17:58:00
[1] 授業単元:C演習
[2] 問題(含コード&リンク):
括弧、加算、減算、乗算、除算に対応した記述を認識し、
先行順走査と後行順走査に書き換えるプログラムを作成せよ。
後行順 入力例:(a+b)-c
出力例:ab+c-
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)
[4] 期限: ([来週まで])
[5] その他の制限:
0260デフォルトの名無しさん2006/10/23(月) 19:38:55
>>196 の問題誰かお願いします
0261デフォルトの名無しさん2006/10/23(月) 19:45:49
>>260
>>248で解答が出てるが。
0262デフォルトの名無しさん2006/10/23(月) 20:14:02
>>260 すみません。素で気づきませんでした
0263デフォルトの名無しさん2006/10/23(月) 20:53:20
すごいスレw
C++が使える人来てくれませんか?
http://ex16.2ch.net/test/read.cgi/news4vip/1161592926/
0264デフォルトの名無しさん2006/10/23(月) 23:41:23
>>259
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2809.c

再帰下降型構文解析を行って構文木を作り,前優先と後優先で訪問する.
スタックを用いた非再帰アルゴリズムもあるが,前置と後置が統一的に書けるのでこちらで.
0265デフォルトの名無しさん2006/10/23(月) 23:57:50
so。
02661812006/10/24(火) 01:59:14
>>252
ありがとうございます。
早速、組み込んでみます。
0267デフォルトの名無しさん2006/10/24(火) 03:00:38
>>264
コンパイルするとこのようなエラーがでました。

ex02.c: In function `main':
ex02.c:64: parse error before `int'
ex02.c:67: `t' undeclared (first use in this function)
ex02.c:67: (Each undeclared identifier is reported only once
ex02.c:67: for each function it appears in.)
0268デフォルトの名無しさん2006/10/24(火) 03:09:53
>>267
拡張子をcppにしろ。
0269デフォルトの名無しさん2006/10/24(火) 07:25:17
[1] 授業単元: 情報工学
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2812.txt
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 2006年10月24日

よろしくお願いします。
0270デフォルトの名無しさん2006/10/24(火) 07:27:00
>>267
int main() {
char buf[256];
fgets(buf, 256, stdin);
int p = 0;
tree *t = equation(buf, &p);
を
int main() {
char buf[256];
int p = 0;
tree *t:
fgets(buf, 256, stdin);
t = equation(buf, &p);
に変更
0271デフォルトの名無しさん2006/10/24(火) 11:17:53
>>269
1次元適合度検定って何?カイ二乗検定なら聞いた事があるが。
よろしかったら詳しく説明してあるサイトへのリンク貼ってくれたら
プログラム書けると思うよ。
0272デフォルトの名無しさん2006/10/24(火) 12:40:06
>>271
携帯からなんでサイトは貼れませんけどカイ二乗というやつです。
一次元適合度検定はx軸をM個の区間に分けN個のデータの度数分布を調べ、カイ二乗を計算するものです
0273デフォルトの名無しさん2006/10/24(火) 14:06:38
ファイル出力する際、putsを使うと読み込んだ文字列を
片っ端から出力しちゃうんですが、どの文字(何文字目)を出力するか
指定できますか?
0274デフォルトの名無しさん2006/10/24(火) 14:11:54
>>273 できます。
■ このスレッドは過去ログ倉庫に格納されています