C/C++の宿題を片付け ..
142:デフォルトの名無しさん
07/10/25 00:51:09
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):
1:y=sin(x) x=0から4πまで、512分割して、yの値を求め、ファイルに書き込む。
2:y=sin(x-π/2) x=0から4πまで、512分割して、yの値を求め、ファイルに書き込む。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語:C
[4] 期限:なるべく早めに
[5] その他の制限: 特にないです。
よろしくお願いします。
143:デフォルトの名無しさん
07/10/25 01:00:46
#include<stdio.h>
#include<math.h>
main(){
int n;
FILE *fp=fopen("sin.txt", "w");
for(n=0;n<=512;n++)fprintf(fp,"sin(π×%d/512) = %f\n",n,sin(4*M_PI*(n+0.0)/512));
}
144:デフォルトの名無しさん
07/10/25 01:07:18
こっち訂正汁
for(n=0;n<=512;n++)fprintf(fp,"sin(4π×%d/512) = %f\n",n,sin(4*M_PI*(n+0.0)/512));
for(n=0;n<=512;n++)fprintf(fp,"sin(4π×%d/512 - π/2) = %f\n",n,sin(4*M_PI*(n+0.0)/512-M_PI/2));
145:デフォルトの名無しさん
07/10/25 01:13:41
#include<stdio.h>
#include<math.h>
main(){
FILE *fp=fopen("sin.txt", "w");
for(int n=0;n<=512;n++)fprintf(fp,"sin(4π×%d/512 - π/2) = %f\n",n,sin(4*M_PI*(n+0.0)/512-M_PI/2));
fclose(fp);
}
146:デフォルトの名無しさん
07/10/25 01:15:03
>>63
テンプレがおかしい。指示通りにやるとセグメントエラーを起こす。
147:デフォルトの名無しさん
07/10/25 01:17:10
>>111
まずはこんなので
URLリンク(kansai2channeler.hp.infoseek.co.jp)
148:デフォルトの名無しさん
07/10/25 01:32:23
>>147
ありがとうございます。
残念ながら、今はプログラミングができる環境じゃないので、明日試して見ます。
149:142
07/10/25 01:32:29
>>143>>144>>145
早速答えていただき、本当にありがとうございます!
助かりました!
150:デフォルトの名無しさん
07/10/25 01:47:38
>>146
一応、>>127のi++;の付け加えでちゃんと動いてくれるので、OKです。
コンパイル通って、動作も「,.」削除+空白削除+分割表示できてるので。
151:デフォルトの名無しさん
07/10/25 01:48:52
i++;じゃなくてstr1[i] != ' ' && str1[i] != '\0'の変更ですね。
152:147
07/10/25 02:07:00
>>111
念のため、
#define DAYS 10 // 販売期間
#define ITEMS 10 // 製品の種類数
の部分を
#define DAYS 1000 // 販売期間
#define ITEMS 100 // 製品の種類数
と書き換えると題意に沿った回答になる。
ただし、このとき、出力が最悪200000行になるので注意。
153:デフォルトの名無しさん
07/10/25 06:10:11
>>82
課題にはそのとおり書いてあったんですが・・。
自分には問題の@〜Bの意味がさっぱりで・・・。
>>83
それが答えってことになるのですか?
154:デフォルトの名無しさん
07/10/25 06:30:23
こたえだね。
155:デフォルトの名無しさん
07/10/25 07:17:13
答えかどうかもわからないって…
156:デフォルトの名無しさん
07/10/25 09:26:14
[1] 授業単元:情報システム基礎
[2] 問題文(含コード&リンク):このC言語で作られたプログラムをC++に変えて下さい
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: すいません、よくわかりません。
講義では「Microsoft Visual Studio .NET 2003」を使用しています
[3.3] 言語: CからC++へ
[4] 期限: 明日が終わるまで
[5] その他の制限: 特になし
明日までと急なことで申し訳ありませんがお願いします。
157:デフォルトの名無しさん
07/10/25 09:59:01
>>156
本当にそんな問題が……?
158:デフォルトの名無しさん
07/10/25 10:04:20
>>156
すでにC++ですっていって提出しちゃえば?
問題が曖昧すぎ
159:デフォルトの名無しさん
07/10/25 10:18:09
プログラムは配布されたプリントから打ち込みましたが、
問題文は文章でなく口頭で出題されました。全くこの通りです。
すでにC++になっているんでしょうか?
160:156 ◆B5khfT.h4o
07/10/25 10:19:39
すいません、今更ですがトリップをつけるのを忘れていました
161:デフォルトの名無しさん
07/10/25 10:56:23
>>159
拡張子cppでコンパイルしてみな
162:デフォルトの名無しさん
07/10/25 11:03:08
class Helonを作ってコンストラクタで三辺の長さで初期化して
get()で返すとか、そういう風にすればどう?
あとprintfをcoutに無理矢理直すとそれらしく見える。別にprintfでも
C++の範囲内なのだが。
163:デフォルトの名無しさん
07/10/25 11:31:04
>>156
無理矢理C++にしてみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
164:デフォルトの名無しさん
07/10/25 13:40:38
>>147
一つ目の製品はちゃんと発注するんですけど、二つ目以降は発注が行われないんですけど
どうすればいいんですか?
165:147
07/10/25 14:00:28
>>111 >>164
// 製品情報初期化
int ADD_NUM = (rand()%81)+FIRST_NUM;
int ADD_NUM_LOWER = (rand()%31)+50;
int ADD_DAYS = (rand()%5)+1;
の部分に
// 製品情報初期化
int ADD_NUM = (rand()%81)+FIRST_NUM;
int ADD_NUM_LOWER = (rand()%31)+50;
int ADD_DAYS = (rand()%5)+1;
inc_day = 0;
を書き足せばよかったみたい。
ということでソースは下記に。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>152も参考に。
166:デフォルトの名無しさん
07/10/25 14:06:31
>>165
できました。本当にありがとうございました。
167:65です
07/10/25 14:48:32
遅くなりました。すいません。
変数を州ごとに集計して平均を出す部分がよくわかりません。
>67
ファンクションについてはまだ授業で習っていないので、先生に避けたほうがいいと言われました。
でも、Voidとか変数のReferenceとか基本的なことは本で読んだので、使ってくださってもけっこうです。
提出するコードは、ファンクションを使わないように書き換えます。
>70
はい。州の略はその通りで大丈夫です。
168:デフォルトの名無しさん
07/10/25 15:30:40
>>147さん
URLリンク(kansai2channeler.hp.infoseek.co.jp)
っていう課題が新たに出されたので、やっていただけませんか?
以前のプログラムがとても見やすかったので、よろしくお願いします。
169:デフォルトの名無しさん
07/10/25 16:52:28
>>65 >>167
URLリンク(kansai2channeler.hp.infoseek.co.jp)
・しっかりとgetlineを使っている。
・line.substr(13, 2)とline.substr(23, 4)を使って読み込んでいるので、gasprices.txtの配置がずれたら限りなくアウト。
170:デフォルトの名無しさん
07/10/25 16:54:31
>>14
まだ、待っています。出来る方お願いします。
アドバイスはいくつか貰ったのですが、関数から関数への受け渡しがうまく行きません。
171:169
07/10/25 17:00:34
>>65 >>167 続き
・1行目にある #include <algorithm> は削除。
・出力は一応CSV のはず。
・アメリカの略号に誤入力があるかもしれない。
・アメリカの州って50だったっけ?
172:コンパイルは出来たがあってないぞ
07/10/25 17:06:21
#include<stdio.h>
#include<string.h>
void d_word(char st[], int pos, int len){
int l=strlen(st);
int i;
for(i=pos; i<=l-len; i++) {
st[i] = st[i+len]; }}
void search_del(char st1[], char st2[]){
int i, j;
int m1=strlen(st1);
int m2=strlen(st2);
for(i=0; i<=m1-m2; i++) {
for(j=0; j<m2; j++) {
if(st1[i+j] != st2[j])
break; }
if(j=m2) {
d_word(st1, i, m2);
m1 -= m2;
}}}
int main(){
char str1[256], str2[256];
printf("string? : ");
gets(str1);
printf("deleted word? : ");
gets(str2);
search_del(str1, str2);
puts(str1);
return 0;}
173:デフォルトの名無しさん
07/10/25 17:22:18
お願いします
問題【0からa-1までの整数の乱数をn個発生させ、発生した整数のヒストグラムを表示しなさい。
ただし。a<21とし、aとnはキーボードから入力する】
______________________________________________とりあえずいままで作成したコードです__________________________________
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main(void)
{
int n,a,b,i,val;
int c[21];
printf("0からa-1までの整数の乱数をn個発生させ、\n");
printf("発生した整数のヒストグラムを表示させます\n");
printf("1から21までの任意の整数aを入力してください。\n");
scanf("%d",&a);
printf("任意の正の整数nを入力してください。\n");
scanf("%d",&n);
if(a<=0||a>=22)
{printf("aの値を入力しなおしてください。\n");}
else{
val=(double)rand()/(RAND_MAX+1)*a;
if(n<=0) {printf("nの値を入力しなおしてください。\n");}
else { for (i=0; i<=(a-1); i++)
{printf("aが%dのとき、%d回\n",i,c[val]);
c[val]=c[val]+1;}
}
}
}___________________________________________________________________________________________________________________________
174:173
07/10/25 17:24:12
結果表示はヒストグラムというか
〜は〜回という形式にします
volとかそのへんの扱いかたがよく分からずに参っております
よろしくお願いいたします。
175:156 ◆B5khfT.h4o
07/10/25 17:26:49
レスしてくれた方やプログラムを作ってくれた>>163さん、ありがとうございました。
とりあえず課題を出したうえで、C++にするのはどういうことか詳しく聞いてみます。
176:65です
07/10/25 17:31:19
>169さん
丁寧にありがとうございます。
はい、アメリカの州は50です。
ところで、私は途中まで以下のようにコードを組み立てたのですが、以下のようなやり方でも、プログラムを完成させることはできますか?
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main (int argc, char **argv)
{
char peek;
ifstream myFile;
string cityName,
stateName;
float gasPrice;
myFile.open("gasprice_file.txt");
while((peek = myFile.peek () ) ! = EOF) {
myFile >> cityName;
myFile >> stateName;
myFile >> gasPrice;
If(! myFile) {
myFile.clear();
cityName = cityName + " " + stateName;
myFile >> sateName;
myFile >> gasPrice;
{
myFile.close();
return 0;
}
177:デフォルトの名無しさん
07/10/25 17:53:30
>>173
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(void)
{
int n=-1,a=0,b,i,val,c[21];
for(i=0;i<21;i++) c[i]=0;
srand((unsigned int)time(NULL));// 乱数の初期化
printf("0からa-1までの整数の乱数をn個発生させ\n");
printf("発生した整数のヒストグラムを表示します。\n");
printf("1から21までの任意の整数aを入力してください。\n");
while(!(a>0&&a<22)){
scanf("%d",&a);
if(a<1||a>21)
printf("aの値を入力しなおしてください。\n");
}
printf("任意の正の整数nを入力してください。\n");
while(n<0){
scanf("%d",&n);
if(n<0)
printf("nの値を入力しなおしてください。\n");
}
for(i=0;i<n;i++){
val=(double)rand()/(RAND_MAX+1)*a;
c[val]++;
}
for (i=0; i<=(a-1); i++)
printf("%d = %d回\n",i,c[i]);
}
表示はヒストグラムでなくてもいいのかな。
178:デフォルトの名無しさん
07/10/25 17:58:47
>>170
アドバイスって言うか>>20で回答もらってるじゃない。
・if(j=m2)をif(j==m2)
・printf("%d\n", st1);をprintf("%s\n", st1);
この2点の変更だけで動くはず。変更の仕方が間違ってるんだと思う。
179:デフォルトの名無しさん
07/10/25 18:06:46
>>177
whileの条件とループの中のifで2回判定するのはムダ
180:デフォルトの名無しさん
07/10/25 18:22:58
>>177の訂正。入力部分。
while(scanf("%d",&a),!(a>0&&a<22))
printf("aの値を入力しなおしてください。\n");
printf("任意の正の整数nを入力してください。\n");
while(scanf("%d",&n),n<0)
printf("nの値を入力しなおしてください。\n");
>>179の指摘したムダを省くと多分こうなると思います。
181:デフォルトの名無しさん
07/10/25 18:26:06
ってやっちまった。>>180だと文字入力したら無限ループしてしまう。
while(scanf("%d",&a),!(a>0&&a<22)){
printf("aの値を入力しなおしてください。\n");
fflush(stdin);
}
printf("任意の正の整数nを入力してください。\n");
while(scanf("%d",&n),n<0){
printf("nの値を入力しなおしてください。\n");
fflush(stdin);
}
こうでした。
182:デフォルトの名無しさん
07/10/25 18:34:53
>>178
この様にコード書いたけどコンパイラが通らないです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
183:デフォルトの名無しさん
07/10/25 18:38:11
>>182
見ずにコメント。1.改行コード 2.全角スペース
そろそろコンパイラが吐いたエラー貼ったらどうだ?
184:デフォルトの名無しさん
07/10/25 18:42:43
>>182
#include<string.h>を追加。もしかしてstr〜の関数習ってない?
185:デフォルトの名無しさん
07/10/25 18:45:55
>>177
ありがとうございます
実行してみたところ、
0以外の数字が何度やっても0回になってしまいますが
これはどうすればよろしいのでしょうか?
186:デフォルトの名無しさん
07/10/25 18:50:01
>>183
エラーが無いので下に張りました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>184
追加しても効果なかったです。関数str〜習ってます。
187:デフォルトの名無しさん
07/10/25 18:52:46
>>186
「エラーが無いので」×
「エラーが長いので」○
188:デフォルトの名無しさん
07/10/25 18:54:50
1] 授業単元:C言語
[2] 問題文:ファイルの内容を読み込んで、下記の例のように読み込んだ内容を
ディスプレイに表示させよ。
ファイルの内容
誕生年:2000
誕生月:1
誕生日:2
身長:120.0
体重:21.0
名字:Kouno
名前:Hiro
実行例
氏名 Kouno Hiroです。
生年月日は2000年1月2日です
身長120,0cm 体重21,0kgです
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年10月26日
[5] その他の制限: ライブラリ関数は使っても大丈夫です。
読み込むことはできたのですが、fgetsを使うと「誕生年:2000」と読み込んで
しまって2000だけ表示させることができません。
よろしくお願いします。
189:デフォルトの名無しさん
07/10/25 18:57:41
>>185
valにちゃんと値が入ってないのかな。
val=(double)rand()/(RAND_MAX+1)*a;
を
val=rand()%a;
に変えてみてください。
>>186
インデントを全角スペースでやってない?
190:デフォルトの名無しさん
07/10/25 19:04:06
>>189
盲点、スペースを全角でやっていました。
スペースを全て消したらコンパイルが通って、ちょんと動きました。
全角スペースでエラー返されるんですね、勉強になりました。
次からはスペースの全角/半角に気をつけます。
191:デフォルトの名無しさん
07/10/25 19:09:39
>>189
ありがとうございます!ちゃんとできました
助かりました
192:デフォルトの名無しさん
07/10/25 19:57:16
>>188
URLリンク(kansai2channeler.hp.infoseek.co.jp)
193:169
07/10/25 20:16:30
>>176
できます。あなたらならできます。
194:デフォルトの名無しさん
07/10/25 20:39:32
[1] 授業単元:プログラミング実験
[2] 問題文(含コード&リンク):
URLリンク(case.f7.ems.okayama-u.ac.jp)
にならって以下のデータ平均分散を用いて確率を出せ。10次元です。
データ
-18.858 1.046 -1.616 4.023 1.857 4.207 6.451 0.989
-3.807 0.744
平均
-6.388222e+00 -1.383500e+01 -1.249702e+01 -3.617623e+00 2.185494e-01
3.840833e+00 6.477101e+00 -1.552781e+01 4.537848e+00 -2.995257e+00
分散
1.504899e+01 2.376009e+01 2.176429e+01 2.650845e+01 2.850247e+01
5.442906e+01 3.594814e+01 7.991224e+01 2.946554e+01 3.397208e+01
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年10月26日まで
[5] その他の制限: なし
195:78&153
07/10/25 20:56:27
すいません、問題Bに間違い&追加がありました。
実装仕様もあって、書いてたことが違ってました。
以下が訂正問題です。
[1] 授業単元:文字列操作プログラム
[2] 問題文(含コード&リンク):
配列とポインタを使用し、文字列操作を行うプログラムを作成せよ。
@独自のstrlen関数mystrlen関数を自作する。
文字列のポインタを受け取り、文字列の長さを返す関数を作成する。
A独自のstrcpy関数mystrcpy関数を自作する。
文字列のポインタ2つを受け取り、文字列のコピーを行う関数を作成する。
B独自のatoi関数myatoi関数を自作する。
数値文字列のポインタを受け取り、数値を返す関数を作成する。
C独自のitoa関数myitoa関数を自作する。
数値を受け取り、指定された基数で文字列変換を行う関数を作成する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語:C言語
[4] 期限:2007年10月26日朝5:00まで
>>196に続く
196:78&153
07/10/25 20:56:58
>>195の続き
[5] その他の制限:実装仕様として、
@int mystrlen(const char*s)
第一引数:文字列のポインタ
戻り値:文字列の長さを返す
Achar*mystrcpy(char*s1,const char*s2);
第一引数:コピー先バッファのポインタ
第二引数:コピー元文字列のポインタ
戻り値:第一引数の文字列へのポインタを返す
Bint myatoi(const char*nptr);
第一引数:変換元の数値文字列
戻り値:変換された値を返す
Cchar*myioa(int value,char*buff,int radix);
第一引数:変換元の整数
第二引数:変換後の数値文字列を格納するバッファのアドレス
第三引数:基数(何進数で変換するか。2〜36の範囲内で指定可能)
戻り値:第二引数の文字列へのポインタを返す
と、なっております。
すいませんが回答の方をよろしくお願いします
197:デフォルトの名無しさん
07/10/25 21:03:26
>>66 = >>71 = >>93 = >>130 = >>194
198:デフォルトの名無しさん
07/10/25 21:28:40
>>195 >>196
いまさら?これから変更するの面倒だし
期限:2007年10月26日朝5:00
ってことは残り7時間、無理。
がんばれノシ
199:デフォルトの名無しさん
07/10/25 21:31:16
標準ライブラリ使っちゃダメって書いてないんだからそのまま引数渡せばいいだろ。
200:デフォルトの名無しさん
07/10/25 21:31:22
>>123
ありがとうございます!
感謝します!
201:デフォルトの名無しさん
07/10/25 21:36:03
よろしくお願いします。
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):
次のクラス定義を参照して、関数 func 内の処理を記述してください。
関数 func 内では p が派生クラス MagazineMotorcycle のインスタンスを指すかどうかを調べて、
もしそうならメンバー関数 Reserve を呼び出してください。そうでなければ false を返してください。
class Magazine
{
public:
virtual bool Order(int amount = 1) = 0;
};
class MagazineMotorcycle : public Magazine
{
public:
bool Order(int amount = 1) {}
bool Reserve() {}
};
bool func(Magazine* p)
{
// 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理
}
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C++
[4] 期限: 10/26 12:00
[5] その他の制限:なし
202:78&153
07/10/25 21:45:03
>>198
昨日書き込んで、今日間違い気づいたんですよorz
できればお願いします。自分にとっては、これってホントに初級編!?って
いうぐらい難しい
203:デフォルトの名無しさん
07/10/25 21:46:42
>>201
bool func(Magazine* p)
{
// 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理
if (MagazineMotorcycle* mm = dynamic_cast<MagazineMotorcycle*>(p))
mm->Reserve();
return false;
}
これでおk?
204:デフォルトの名無しさん
07/10/25 22:03:47
[1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):stack.cpp 中のpushとpop関数を完成せよ。
stack.cpp:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:win xp
[3.2] Microsoft Visual Studio .NET 2003
[3.3] 言語:c++
[4] 期限:2007年10月26日9:30まで
[5] その他の制限:(どこまで習っているか)構造体、ファイル処理まで
どうかよろしくお願いします。
205:デフォルトの名無しさん
07/10/25 22:10:08
>>203
ありがとうございます。
こちらを提出してみます。
206:デフォルトの名無しさん
07/10/25 22:12:28
>>201
bool func(Magazine* p)
{
// 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理
if (MagazineMotorcycle* mm = dynamic_cast<MagazineMotorcycle*>(p))
return mm->Reserve();
return false;
}
こんどこそおk?
207:デフォルトの名無しさん
07/10/25 22:26:15
>>204
// データvalをスタック x に積む
void push(int *x,int val)
{
// (1) スタックがオーバフローかどうかをチェック
if (stack_pointer < stack_size) {
// (2) オーバフローでなければデータ val をスタック x につむ
x[stack_pointer++] = val;
}
}
// データをスタック x からおろす
void pop(int *x)
{
// (1) スタックがアンダーフローかどうかをチェック
if (stack_pointer > 0) {
// (2) アンダーフローでなければスタックxからデータをおろして、
// スタックポインターを調整
stack_pointer--;
}
}
これでおk?
208:デフォルトの名無しさん
07/10/25 22:41:25
>>207おkです。感謝です。
本当にありがとうございます。
助かりました。
209:57
07/10/25 22:54:44
>>60
レスありがとうございます。
今日の朝、main関数を作って動かしてみたのですが、
おかしいです。
例えば、連結リストのaの値を10、11、12とすると、
11、10、56787
と、一番最後が変な数値になってしまいます。
並び替える前に表示すると、10、11、12となってちゃんと動作するので、
表示する関数は間違ってないと思います。
一応補足として、自分が扱っている連結リストは一番最初に、aに値が
含まれていない要素があり、その後からaに値が含まれる要素が並びます。
210:デフォルトの名無しさん
07/10/25 23:10:52
>>202
#include<stdio.h>
int mystrlen(const char *s)
{
int len=0;
while(*s++!='\0') len++;
return len;
}
int myatoi(const char *nptr)
{
int i,n=0,sign=0,len=0;
const char *s=nptr;
while(*s++!='\0') len++;
if(*nptr=='-'){
sign++; len--; *nptr++;
}
for(i=0;i<len;i++)
n=10*n+*nptr++-'0';
return sign ? -n : n;
}
mystrcpy,myitoaは>>83のままで仕様満たしてるのでそれ以外を。
211:デフォルトの名無しさん
07/10/25 23:11:09
>>147さん
URLリンク(kansai2channeler.hp.infoseek.co.jp)
っていう課題が新たに出されたので、やっていただけませんか?
以前のプログラムがとても見やすかったので、よろしくお願いします。
212:デフォルトの名無しさん
07/10/25 23:19:38
>>168さん、この生産管理プログラムの期限はいつまででしょうか。
213:78&153
07/10/25 23:21:11
>>83>>210
遅い時間に本当にありがとうございます。
お手数おかけ致しました。(TT)
214:デフォルトの名無しさん
07/10/25 23:21:23
>>209
糞リストの仕様を書かなかったほうが悪い。
215:デフォルトの名無しさん
07/10/25 23:22:42
お願いします!!
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
1:int型整数をchar型配列の文字列に変換するitoa関数を作れ
2:long型整数をchar型配列の文字列に変換するltoa関数を作れ
3:float型小数をchar型配列の文字列に変換するftoa関数を作れ
[3] 環境
[3.1] OS: XP sp2
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語: C
[4] 期限: 明日26日(金)の16時まで
216:デフォルトの名無しさん
07/10/25 23:33:35
>>215
1.
char* itoa(int n){static char c[16];sprintf(c,"%d",n);return c;}
2.
char* ltoa(long n){static char c[16];sprintf(c,"%ld",n);return c;}
3.
char* ftoa(float n){static char c[16];sprintf(c,"%f",n);return c;}
217:デフォルトの名無しさん
07/10/25 23:34:03
>>215
itoaは >>83 にあるよ。ltoaはitoaとほとんど変わらん。
ftoaも小数点以下あるだけであんま変わらないな。
218:57
07/10/25 23:37:20
>>214
申し訳ないです。
リストの仕様は以下の様になります。
・リストは連結リストで片方向リストです。
・次の要素がない場合(リストの一番最後)は、次の要素へのポインタをNULLとします。
・リストの一番最初には、aに値が含まれていない要素があります。
よろしくお願いします。
219:デフォルトの名無しさん
07/10/25 23:42:13
木曜日の15時までです。
220:デフォルトの名無しさん
07/10/25 23:45:52
>>218
static struct c *re_internal(struct c *l)
{
struct c *p;
if(l->n==NULL) return l;
p = re(l->n);
l->n->n = l;
l->n = NULL;
return p;
}
struct c *re(struct c *l)
{
if(l->n) l->n = re_internal(l->n);
return l;
}
221:デフォルトの名無しさん
07/10/25 23:49:08
再帰は?
222:215
07/10/26 00:03:01
>>216
さすがにsprintfは使うわけにはいかないかと・・・w
>>217
ありがとうございます。
>>83を参考にしてやってみようと思います。
223:57
07/10/26 00:03:47
>>219
減点はするけど、出さないよりは、ましだから今週の課題と一緒に来週に
出しなさいと言われました。
>>220
ありがとうございます。
リストの仕様は>>218に書いた通りですが、
問題自体は>>57に書いた通り、再帰を使わないと…
224:デフォルトの名無しさん
07/10/26 00:08:57
>>220
re_internalの中でre呼び出してる
225:57
07/10/26 00:23:54
>>224
再帰って自分自身の関数を呼び出すんじゃないですっけ?
これだと、他の関数を呼び出してるだけな気がするのですが…
一つの関数で作ることって出来ないのですかね?
226:デフォルトの名無しさん
07/10/26 00:24:24
>>218 直した
static struct c *re_internal(struct c *l)
{
struct c *p;
if(l->n==NULL) return l;
p = re_internal(l->n); // <- この行
l->n->n = l;
l->n = NULL;
return p;
}
struct c *re(struct c *l)
{
if(l->n) l->n = re_internal(l->n);
return l;
}
>>224 thx
227:57
07/10/26 00:50:35
>>226
ありがとうございます。
228:デフォルトの名無しさん
07/10/26 00:58:09
リストの先頭にデータを入れないことによってどんな利点があるの?
229:168
07/10/26 00:58:45
>>147・212
28日までにお願いしたいんですけど・・・
よろしくお願いします。
230:デフォルトの名無しさん
07/10/26 07:29:15
1] 授業単元: C言語
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2007年10月26日
[5] その他の制限: ライブラリ関数は使ってもおkです
徹夜で考えたんですが分からなかったのでお願いします
URLリンク(kansai2channeler.hp.infoseek.co.jp)のよに書いたのですが
セグメントエラーが出てしまいます。
ダメなところとかがあったら直して教えてください。
231:デフォルトの名無しさん
07/10/26 07:51:19
>>230
比較用演算子 == を使うこと.
if(fop=NULL)
if(fout=NULL)
あと、終盤で下記不要
> heikin=goukei/NUM;
> fprintf(fout,"番号\t平均点との差\n");
> for(i=0;i<NUM;i++)
> {
> fscanf(fop,"%d%d",&gakusei[i].bangou,&gakusei[i].seiseki);
> goukei=+gakusei[i].seiseki;
> }
最後は goukeiもNUMも整数なのでgoukei/NUMは整数となるのを防ぐ
heikin=(double)goukei/NUM;
232:デフォルトの名無しさん
07/10/26 08:09:19
>>230
14〜21行目: 使わない変数 (fairu, cp, sirusi1, sirusi2) の宣言は外しましょう
21行目: heikin は int 型でいいんじゃない?
double 型で行きたい場合、int型変数 (seiseki, goukei等) との計算をするときにキャストとか考えた方が良い
24,26行目: scanf("%s", &open); → scanf("%s", open);
ポインタを習っているかは知りませんが、配列名は単独で使用するとポインタ型になります
30,42行目: if (fop=NULL) → if (fop == NULL)
C言語での比較演算子は == です
56行目: goukei=+gakusei[i].seiseki; → goukei += gakusei[i].seiseki;
演算子を見直しましょう
63〜70行目: 平均2回計算してるから消そう
74行目: "%d\t%dn" → "%d\t%d\n"
改行文字は "\n" で表します
233:デフォルトの名無しさん
07/10/26 08:16:51
>>231さん
>>231さん
朝早くだったのにレスありがとうございます。
おかげ様でセグメントエラーも出ないで実行できました
来週中間試験があるので
もっと勉強しなきゃいけないなと思いました。
ホントにお世話様でした
234:デフォルトの名無しさん
07/10/26 08:46:17
中間試験って紙にコード書くの?
235:課題お願いします
07/10/26 09:05:21
[1] 授業単元:プログラミング演習
[2] 問題文:n個からr個を選ぶ組み合わせは、nCr = n!/r!(n-r)! ただし、n! = 1*2*3*…*(n-1)*nで求められる。そこで、n!を求める関数functorial(n)を定義し、それを3度呼び出す形で、組み合わせnCrをもおめるプログラムを作成せよ。
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語: C
[4] 期限: 今日の昼までに。
[5] その他の制限: 授業で配列とポインタは習いました。この問題は「関数」というセクションの問題です。大学の授業なのであまり難しくなり過ぎないようにお願いします。
236:235
07/10/26 09:07:30
書き間違いorz
[2] 問題文:n個からr個を選ぶ組み合わせは、nCr = n!/r!(n-r)! ただし、n! = 1*2*3*…*(n-1)*nで求められる。そこで、n!を求める関数functorial(n)を定義し、それを3度呼び出す形で、組み合わせnCr を求めるプログラムを作成せよ。
237:デフォルトの名無しさん
07/10/26 09:09:55
int function(int n)
{
return n<2 ? 1 : n * function(n-1);
}
int nCr(int n, int r)
{
return function(n) / function(r) / function(n-r);
}
238:デフォルトの名無しさん
07/10/26 09:11:28
一瞬で片付くというのもある意味爽快だ
239:デフォルトの名無しさん
07/10/26 09:20:03
>>234
中間試験は筆記と実技があって
実技は端末からサーバーにアクセスして書きます。
実技は今のままじゃ、受かる気がしません…
ファイル処理、ポインタがかなりヤバイです
240:デフォルトの名無しさん
07/10/26 09:23:34
関数名functorialだw
階乗ならfactorialだし、関数ならfunctionだからfuncだけみて間違っちまった。
241:デフォルトの名無しさん
07/10/26 10:59:15
1] 授業単元: プログラミング
[2] 問題文:3人の昼食代を入力し、その平均を関数aveにて計算し、
「割り勘で△円」と表示するプログラム
(定義例:double ave(double c1,double c2,double c3))
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: ([2007年10月26日まで] できれば早いほうがうれしいです。
[5] その他の制限:定義例を使ってください
if,while,switch,forは習いました
お願いします
242:デフォルトの名無しさん
07/10/26 11:01:22
なんで金額がdoubleなんだよ・・・
243:デフォルトの名無しさん
07/10/26 11:05:00
>>234
別人だけど、フロッピーでソース提出とか、メールで添付とかもあるけど、一番多いのは紙。
正直、このご時勢で紙でやるのは馬鹿だと思う。
244:デフォルトの名無しさん
07/10/26 11:14:18
>>242
小数点出てもいいらしいです。要はaveを使って計算したいのだと思います。
245:デフォルトの名無しさん
07/10/26 11:18:40
俺の高校は紙にVBA書かされたぜ
246:デフォルトの名無しさん
07/10/26 11:19:06
>>243
国がやってる情報処理系の資格試験は、全部紙だぞ?
247:デフォルトの名無しさん
07/10/26 11:24:49
先日はありがとうござました。
[1] 授業単元: C言語演習U
[2] 問題文(含コード&リンク):
前回の授業で"姓/名"という形式の文字列を入力すると、これを姓と名を表す2つの文字列に分割するプログラムを作成した。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
このプログラムを関数を用いた形に書き換えようと思い、次のプログラムを作成した。
このプログラムを実行すると、おかしな出力になってしまった。
問題1:このプログラムのどこが間違っているのか、その理由を答えよ。
(ヒント:pt_s,pt_mはローカル変数)
問題2:プログラムを書き直せ。
(配列を渡す方法、ポインタのアドレスを渡す方法などある)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限:29日(月)
248:デフォルトの名無しさん
07/10/26 11:34:38
>>239
うちも紙〜
さすがにプログラムを卓上で作りコード全部書けは無いけど、
5〜6行くらいの穴埋めでプログラムを完成させよとか。
249:デフォルトの名無しさん
07/10/26 11:59:09
流石に資格試験でソース全部書けは無いだろ。
あったら死ねるけどw
普段書かない記号とか書かなきゃならんし、
インデント一つ追加しようと思ったらその間書き直しだし、
書いてる事がタイプ以上に考えてる事に追いつかないし、
変数名チェックも全部自分でしなけりゃならんから面倒だし。
250:デフォルトの名無しさん
07/10/26 12:01:52
>>239
うちは進んでるよ。
テストプログラムを当日教室で下してきて実行すると、P検みたいなプログラムが走って画面左半分が問題書いてあって、右半分の上がコマンドプロンプト?で下がテキストパッドになってる。
問題にある仕様のプログラムをテキストパッドで作って、「実行」ボタンがその下にあるから押すとコマンドプロンプトで自動的にコンパイル+実行してくれる。
作ってる途中のものを試しでコンパイルする度、実行はうざかった。
問題全部作ったら問題1番最後の回答終了を押すと自動で結果をサーバーに送信して、プログラム終了。
ファイヤーウォールに引っ掛かって提出できないとか、提出時に回線が込んでて提出できないとかで、良悪あるけどね。
251:デフォルトの名無しさん
07/10/26 13:04:09
>>250
なんだかすごい環境だな。
252:デフォルトの名無しさん
07/10/26 13:09:33
>>239
高専電気科の情報の授業では
ごく普通にPCでやってるぞ
しかも、授業で書いたコードを参照してもいいというオマケ付きで。
授業理解度を確かめるのならこういう方式でもよさげな気がする。
253:デフォルトの名無しさん
07/10/26 13:12:10
>>241
これは……一見するととても簡単そうなプログラムに見える……
そう見えるのはオレだけか……?
254:デフォルトの名無しさん
07/10/26 14:03:27
strcpyの使い方で質問があるんですが、
strcpy(a+(変数),b+(変数));
これはどういう意味でしょうか?+が特に分からないんですが…
a、bは配列です
255:デフォルトの名無しさん
07/10/26 14:06:41
>>250
せっかくプログラミングやってんだから、
講師の側でもそんな感じでテスト用プログラム作って欲しいもんだな
>>252
そういう方式もいいよなあ
実際のプログラミングだとソース参照し放題、ネットで調べ放題なわけで
それでもできない人がいるんだから、十分実力測れるだろう
プログラミングは暗記じゃない
256:デフォルトの名無しさん
07/10/26 14:38:19
>>254
その配列a, bの +変数分以降のみの文字列をコピーするという意味。
変数が 2 だったらaの先頭 2 文字は変化しない。
257:デフォルトの名無しさん
07/10/26 15:04:04
>>256
分かり易い解説ありがとうございました
258:235
07/10/26 15:23:52
>>237
ありがとうございました!!
259:デフォルトの名無しさん
07/10/26 16:17:50
>>247
元のプログラムではポインタ変数は仮引数なので呼び出し元に結果が反映されない
#include <stdio.h>
void namesplit(char [], char **, char **);
int main(void){
char full[200];
char *pt_sei, *pt_mei;
printf ("姓/名で入力せよ:");
scanf("%s", full);
namesplit(full, &pt_sei, &pt_mei);
printf("姓:%s\n 名:%s\n", pt_sei, pt_mei);
return 0;
}
void namesplit(char f[], char **pt_s, char **pt_m)
{
/*pt_sとpt_mをfの先頭アドレスにセット*/
*pt_s = f; *pt_m = f;
/*スラッシュまでpt_mを移動*/
while (**pt_m != '/')
(*pt_m)++;
**pt_m = '\0';
(*pt_m)++;
/*これで、pt_seiとpt_meiはそれぞれ姓と名を指す場所に移動した?*/
}
260:デフォルトの名無しさん
07/10/26 17:08:00
>>253
わかる人は簡単だよ
でも、習ったばっかりなんだろ
最初はみんなわからないもんだよ
261:デフォルトの名無しさん
07/10/26 17:32:12
一分で書けるけど書かない
262:デフォルトの名無しさん
07/10/26 18:04:04
なぜ書かない?
263:デフォルトの名無しさん
07/10/26 18:17:14
単純に3つの引数とって平均を求める関数て言えばいいのに、なんで割り勘とか余計な設定つけてんだよ。
一人一人の代金がわかってるなら、割り勘になんてしないだろ。
264:デフォルトの名無しさん
07/10/26 18:43:15
>>263
「相乗平均じゃなくて相加平均だよ^^ お前ら間違えんなよ^^」て言いたかったんだよ
気の回る良い先生じゃないか
265:デフォルトの名無しさん
07/10/26 19:40:50
宿題マダァ?(・∀・ )っ/凵⌒☆チンチン
266:デフォルトの名無しさん
07/10/26 22:09:36
ひつまぶしキボンヌ
267:デフォルトの名無しさん
07/10/26 22:12:45
質問テンプレ】
[1] プログラミング
[2] 自然対数の底eを求めるプログラムをSRT除算を用いて求めよ。
exp(x)=Σ(n=0,∞){1/n!}=1/0!+1/2!+1/3!+…+1/n!
=1+(1+1/2(1+1/3(1+…+1/n)))
固定小数点で、整数部を16ビット、小数部を48ビットとする(n≧17)
[3] 環境
[3.1] Vine Linux
[3.2] gcc
[3.3] C言語
[4] 2007年10月29日8:40まで でも早い方がいいです。
[5] ループを使用してお願いします。
268:デフォルトの名無しさん
07/10/26 22:12:55
全ディレクトリのファイルを調べてサイズが一致するファイルをプルパスで出力せよ
269:デフォルトの名無しさん
07/10/26 22:19:18
URLリンク(journal.mycom.co.jp)
270:デフォルトの名無しさん
07/10/26 22:22:06
>>265
自分で要求するほど、宿題を回答してやりたいのか。
この掲示板の鏡だな、解けない問題は無いってか?
271:デフォルトの名無しさん
07/10/26 22:25:20
SRT除算は簡単ではないな
272:デフォルトの名無しさん
07/10/26 22:43:03
[1] プログラミング
[2] URLリンク(doiob.net)
シンプソンの公式を用いて定積分を求めるプログラムを作成し、
以下2つの定積分を計算せよ。ただし刻み幅 h=0.1 とする。
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] C言語
[4] 2007年10月29日
お願いします
273:デフォルトの名無しさん
07/10/26 22:46:03
>>269
これはむずい
もう少し前のページから見ないと単語がわからなすぎる
274:デフォルトの名無しさん
07/10/26 22:54:36
シンプソンは簡単 関数をf(x)とし、 区間(a,b)を一分割で積分するとする
m=(a+b)/2 、d=(b-a)とするとき積分値は d/6 * (f(a)+f(b)+4f(m))だ
N分割のときはこの値を使えばいい
275:デフォルトの名無しさん
07/10/26 22:57:47
>>274
なぜコードで示さないんだ
276:デフォルトの名無しさん
07/10/26 22:59:44
具体的には、区間(a,b)をN分割するならば、
F(s,t)= (t-s)/6 * (f(s)+f(t)+4f(s+t /2)) 、 d = (b-a)/Nとおくとき
n=0,・・・,N-1に対しF(a+nd, a+(n+1)d)の和を計算すればよい
277:デフォルトの名無しさん
07/10/26 23:02:42
>>276
擬似コードだけなら単位はやれないな
278:デフォルトの名無しさん
07/10/26 23:03:56
>>275
プログラム自体は計算と結果の出力だけの簡単なものだからチャレンジしてみなってことじゃない?
計算内容自体は>>274が解説してくれてるし。
もしくは作成中か。
279:デフォルトの名無しさん
07/10/26 23:08:01
>>259
ありがとうございます。ポインタ変数が問題だったんですね。
仮引数だったのをポインタのポインタで呼び出しが出来るようにしたと。
なるほど納得しました。
280:デフォルトの名無しさん
07/10/26 23:09:01
#include <stdio.h>
#include <math.h>
double f(double x){return exp(-x*x);}
double g(double x){return exp(1/sqrt(1+x*x*x*x));}
#define F(a,b) (f(a)+f(b)+4*f((a+b)/2))*(b-a)/6
#define G(a,b) (g(a)+g(b)+4*g((a+b)/2))*(b-a)/6
int main(){
double x,d=0.1,sum;
sum=0;
for(x=0;x<1;x+=d)sum+=F(x,x+d);
printf("%f\n",sum);
sum=0;
for(x=0;x<1;x+=d)sum+=G(x,x+d);
printf("%f\n",sum);
}
281:デフォルトの名無しさん
07/10/26 23:10:31
訂正
double g(double x){return 1/sqrt(1+x*x*x*x);}
282:デフォルトの名無しさん
07/10/26 23:12:03
値があっているか確認したいが数値計算ソフトだれか持っている?
283:デフォルトの名無しさん
07/10/26 23:12:09
何にせよ動作するリストを出すのがこのスレってもん
284:デフォルトの名無しさん
07/10/26 23:12:15
>>274 >>276
で組み込む計算式作ってくれてるから、もう課題出来てるも同然な気がする。
だって、その式を表示するだけで完成でしょ。
285:デフォルトの名無しさん
07/10/26 23:17:30
>>272 カウンタは整数のが良いと思うので便乗
#include <stdio.h>
#include <math.h>
double func1(double x)
{
return sqrt(pow(x, 4) + 1);
}
double func2(double x)
{
return exp(-pow(x, 2));
}
int main(void)
{
double l = 0.0, r = 1.0, h = 0.1, s = 0;
int i;
for(i = 0; i < (r - l)/h; i += 2)
s += h/3*(func1(l + i*h) + 4*func1(l + (i + 1)*h) + func1(l + (i + 2)*h));
printf("%g\n", s);
for(i = 0; i < (r - l)/h; i += 2)
s += h/3*(func2(l + i*h) + 4*func2(l + (i + 1)*h) + func2(l + (i + 2)*h));
printf("%g\n", s);
return 0;
}
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5001日前に更新/157 KB
担当:undef