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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。
気に入らない質問やその他の発言はスルーの方向で。
「著作」「違法」「Qz」はNGワード推奨。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。 >>2以降にあります。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を
 入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
2デフォルトの名無しさん:2014/02/14(金) 23:27:31.76
【質問テンプレ】
[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://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
http://pastebin.com/ ←たまにテンポるので上の2つが混んでいる時以外はなるべく使わないで下さい
【wiki】               http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 166代目
http://toro.2ch.net/test/read.cgi/tech/1381909900/
3デフォルトの名無しさん:2014/02/14(金) 23:28:24.24
テンプレここまで

【C 関数検索 man on WWW】【過去ログ検索】
の2つは使えなくなってたから外した
必要なら適当に補足して
4デフォルトの名無しさん:2014/02/15(土) 13:49:22.52
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
struct node {int elem;struct node *next;};
struct node *list;
問1、中央のセルのポインタを返す関数list midcell(list L)を定義してください。
条件は単方向リストで。また中央のセルとは末尾のセルを除いて考えセルの個数が
2N個の場合N番目のセルのことをいいます。
問2、連結リストLとその途中のセルのポインタMが与えられたとき
先頭LからMの直前のセルまでを切り離し順序を逆転させリストを返す関数
list revfR(list L,list M)を再帰関数で定義してください。
リストLは空でないと仮定します。また本問も単方向リストでお願いします。
問3、問2の機能を持つ関数list revf(list L,list M)を再帰関数を用いず定義してください
よろしくお願いします。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2/16(日)
[5] その他の制限:
5デフォルトの名無しさん:2014/02/15(土) 15:48:02.91
6デフォルトの名無しさん:2014/02/15(土) 17:39:58.46
>>5
問題文読み直せ
7デフォルトの名無しさん:2014/02/15(土) 20:32:23.24
重複してしまいました。
こちらを使ってください。
http://toro.2ch.net/test/read.cgi/tech/1392388003/
8デフォルトの名無しさん:2014/02/16(日) 03:57:07.98
>>4
マルチポストは氏にましょう

http://toro.2ch.net/test/read.cgi/tech/1390954735/417-426

あと、>>4は list midcell(list L) の list は変数名だろ
根本的に解決は無理だぞ
9デフォルトの名無しさん:2014/02/16(日) 06:59:59.64
10デフォルトの名無しさん:2014/02/17(月) 04:26:00.18
[1] 授業単元:統計分析
[2] 問題文(含コード&リンク):
確率分布が
if(x < c) f(x) = ax + b else f(x) = ac + b (定数)
という形であることが分かってる場合にサンプルデータから c を推定せよ

[3] 環境
 [3.1] OS: Linux
 [3.2] gcc 3.4?
 [3.3] 言語: どちらでも可
[4] 期限: 2/19(水) 24:00
[5] その他の制限:

サンプルデータはこのタイプのデータはアップロードできませんっていわれたんですけど
200 18 255
230 18 402
250 18 269
210 14 189
150 54 723

っていう感じで
x 該当数 総数
が int型で改行で並んでるテキストファイルが与えられてます

単調増加の f(x) = ax + b の場合の推定方法は習ったんですが
途中で折れ曲がるグラフの場合にどうしたらいいのか分からなくて
よろしくお願いします
11デフォルトの名無しさん:2014/02/17(月) 11:10:11.35
>>10
最小2乗法のように{ f(x[k]) - y(x[k]) }^2 を求めろってこと?
それとも最良近似のように max | f(x[k]) - y(x[k]) | ってこと?
12デフォルトの名無しさん:2014/02/17(月) 18:20:13.61
>>11
リプありがとうございます

問題文に指定はなかったんですけど
直線グラフの場合に最小2乗法を習ったので最小二乗近似だと思います
13デフォルトの名無しさん:2014/02/17(月) 21:46:09.73
[2] http://wktcoder.blogspot.jp/2012/07/cstrcat.html
の問題をaとbの文字列を受け取れるようにし、連結前と後を表示。
また、連結後の結果も表示する。
void my_strcat(char* str_a,char* str_b)を使用。

[3] 環境
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン: Visual Stdio 2013
 [3.3] 言語: C
[4] 期限: 2/17

よろしくお願いします。
14デフォルトの名無しさん:2014/02/18(火) 10:03:24.34
どなたか>>13お願いします
15デフォルトの名無しさん:2014/02/18(火) 10:40:30.73
期限きれてますやん
16デフォルトの名無しさん:2014/02/18(火) 13:24:58.95
なんで2年前の問題をひっぱってくるのか
宿題じゃないのか
17デフォルトの名無しさん:2014/02/18(火) 17:35:52.94
>>15
期限は誤りです
今日までです

>>16
たまたま同じ問題なので
よろしくお願いします
1811:2014/02/18(火) 19:59:00.97
>>10
typedef struct tagPoint{
int x; int y;
}POINT;
typedef struct tagPointList{
POINT* pDataAry;
//メンバ変数 pDataAry の長さ
int size;
}POINTLIST;
typedef struct tagLsmInfo{
//想定関数 f(x)=ax+b の係数 a 。
double dCoefA;
//想定関数 f(x)=ax+b の係数 b 。
double dCoefB;
/**
想定関数とデータの誤差の √ 平方和 => √ ( { y(x[k]) - f(x[k]) }^2 )。
即ち √ { σ(y) ( 1 - 相関係数^2 ) } と同じ値
*/
double dSumError;
}LSMINFO;
/**
入力データから最小2乗法により想定関数 f(x)=ax+b の各係数と
想定関数と入力データの誤差の平方和の0.5乗の値を算出します。<br>
つまり、引数 pRcv のすべてのメンバ変数に適切な値を設定します。<br>

<b>未実装!大して難しくないから、自分で実装してね</b>

@param pData : 入力データ
@param pRcv : 計算結果の受け取りバッファ
*/
void calcLsmInfo(POINTLIST* pData, LSMINFO* pRcv);
1911:2014/02/18(火) 20:02:12.76
/**
入力データをXの値が、指定値より大きいか、小さいかで2つに分けます。
@param pData : 入力データ
@param borderX : 入力データを2分する境界値
@param pSmaller : 計算結果の受け取りバッファ
@param pBigger : 計算結果の受け取りバッファ
*/
void splitData(POINTLIST* pData, int borderX, POINTLIST* pSmaller, POINTLIST* pBigger){
int i;
pSmaller->size = pBigger->size = 0;
for(i = 0; i < pData->size; i++){
if( pData->pDataAry[ i ] < borderX ){
pSmaller->pDataAry[ pSmaller->size++ ] = pData->pDataAry[ i ];
}else{
pBigger->pDataAry[ pBigger->size++ ] = pData->pDataAry[ i ];
}
}
}
2011:2014/02/18(火) 20:03:10.71
/**
f(x)=ac+b と入力データの誤差の平方和の0.5乗の値の総和を計算します。

@param pData : 入力データ
@param iTheC : f(x)=ac+b の c の値
@param pFuncInof : 想定関数の情報
@return double : 計算結果。
*/
double calcErrOnHL(POINTLIST* pData, int iTheC, LSMINFO* pFuncInfo){
double dBuffer, dTmp;
int i;
dBuffer = 0.0;
for(i = 0; i < pData->size; i++){
//ac + b
dTmp = iTheC * pFuncInfo.dCoefA + pFuncInfo.dCoefB;
//y(x[k]) - f(x[k]) = y(x[k]) - { ac + b }
dTmp -= pData->pDataAry[ i ]->y;
dTmp *=dTmp;
dBuffer += dTmp;
}
return sqrt( dBuffer );
}
2111:2014/02/18(火) 20:08:29.27
長過ぎてエラーが出るから2回に分けるよ。

/**
設問を解決する関数。
再急降下法で iCMax から iCMin に近づく方向で iTheC を推定する

@param pInputData : 入力データ
@param iCMax : データを分ける f(x)=ac+b の c の値の取り得る最大値
@param iCMin : データを分ける f(x)=ac+b の c の値の取り得る最小値
@param iSeepestDecentValue : 再急降下法で使用する最大傾斜の値。0 より大きくなければいけません。

@return int : 答えとなるデータを分ける f(x)=ac+b の c の値。
算出不可能なときは iCMin より小さい値を返します。
*/
int solveHomework(POINTLIST* pInputData, int iCMax, int iCMin, int iSeepestDecentValue){
double dPrevErr, dCurErr;
POINTLIST vSmallerList, vBiggerList;
LSMINFO lsmInfo;
int iTheC, iDiggingVal;

iTheC = iCMax; iDiggingVal = iSeepestDecentValue;

vSmallerList.pDataAry = (POINTLIST*)malloc( sizeof(POINTLIST)* pInputData->size );
vBiggerList.pDataAry = (POINTLIST*)malloc( sizeof(POINTLIST)* pInputData->size );

splitData( pInputData, iTheC, &vSmallerList, &vBiggerList );
calcLsmInfo( &vSmallerList, &lsmInfo );

//小さい方の想定関数 ax+b とデータの誤差の√平方和
dPrevErr = lsmInfo->dSumError;
//大きいの想定関数 ac+b とデータの誤差の√平方和
dPrevErr += calcErrOnHL( &vBiggerList, iTheC, &lsmInfo );
2211:2014/02/18(火) 20:10:45.93
//前とのツナギ目 //大きいの想定関数 ac+b とデータの誤差の√平方和
////ツナギ目ツナギ目 //dPrevErr += calcErrOnHL( &vBiggerList, iTheC, &lsmInfo );

//想定関数とデータの誤差の√平方和 が最も小さくする iTheC を再急降下法で探す
while( 0 < iDiggingVal ){
iTheC -= iDiggingVal;
//入力データをXの値が iTheC より大きいか、小さいかで2つに分けます。
splitData( pInputData, iTheC, &vSmallerList, &vBiggerList );
//小さい方で最小2乗法
calcLsmInfo( &vSmallerList, &lsmInfo );
//小さい方の想定関数 ax+b とデータの誤差の√平方和
dCurErr = lsmInfo->dSumError;
//大きいの想定関数 ac+b とデータの誤差の√平方和
dCurErr += calcErrOnHL( &vBiggerList, iTheC, &lsmInfo );

if( dPrevErr <= dCurErr ){ iTheC += iDiggingVal; iDiggingVal /= 2;
}else{ dPrevErr = dCurErr; }
if( iTheC < iCMin ){ break; }
}

free( vSmallerList.pDataAry );
free( vBiggerList.pDataAry );

return iTheC;
}
2310:2014/02/19(水) 00:51:01.38
>>18-22
ありがとうございます
まだ読んでないんですけどとりあえずお礼だけ
明日じっくりよませていただいて再度書き込みしにきます!
24デフォルトの名無しさん:2014/02/20(木) 09:41:49.48
2511:2014/02/20(木) 15:57:23.95
>>10
読み返したら結構単純なミスが多いな
アルゴリズムはOKだと思うけど実際にレポートに使用できた?
26デフォルトの名無しさん:2014/02/21(金) 01:55:16.09
>>25
結局昨日時点ではよくわからなかったので提出起源あきらめました><
せっかくといていただいたのにすいません
いずれにしても遅れてもださないと単位こないので今考えてるところなんですけど

入力データの y 座標を何にすべきなのか分からなくて
該当したかどうかなので y 座標は 0 と 1 とみるべきなんですよね…

あと C++ は基本的なことはならったんですけどプリミティブな関数しか使えなくて
ファイル読み込みの時の文字列のパーズが面倒だったので
solver の関数だけかりて Java でかきなおしてしまいました

とりあえず自分で calcLsmInfo を実装して
メイン関数でデータの読み込みと solver の呼び出しをしてるだけなんですが
なぜか実行結果が -3850 っていう負の値になってしまいました…
solver を呼び出すときの初期値がまずいんでしょうか…

http://codepad.org/fBWf1Hp5
27デフォルトの名無しさん:2014/02/21(金) 01:56:46.67
C/C++のスレなのにスレチになってしまって申し訳ありません
課題に言語指定がとくになくて Perl や Java でもかまわないみたいで…
28デフォルトの名無しさん:2014/02/21(金) 04:20:01.59
>45行目 if(data.data[i].x < border_x)
//ここは間違えてて、ゴメンなさい。m(_ _)m
>100, 115行目 × //大きい の想定関数 ac+b とデータの誤差の√平方和
>100, 115行目 ○ //大きい方の想定関数 ac+b とデータの誤差の√平方和
//ここも間違えてて、ゴメンなさい。m(_ _)m
//159行目より修正
int max_x = Integer.MIN_VALUE;
int min_x = Integer.MAX_VALUE;
int iSeepestDecentValue;
while((line = br.readLine()) != null) {
 StringTokenizer st = new StringTokenizer(line);
 int x = Integer.parseInt(st.nextToken());
 int n = Integer.parseInt(st.nextToken());
 int sum = Integer.parseInt(st.nextToken());
 for(int i = 0; i < n; i++)
  data.add(new Point((double)x, 1.0));
 for(int i = 0; i < sum - n; i++)
  data.add(new Point((double)x, 0.0));
 if(x > max_x)
  max_x = x;
 //修正
 if(x < min_x)
  min_x = x;
 }
 PointList input_data = new PointList(data);
 //修正
 //再急降下法で使用する最大傾斜の値。0 より大きくなければいけません。
 iSeepestDecentValue = ( max_x - min_x ) / 100;
 iSeepestDecentValue = ( 0 >= iSeepestDecentValue ) ? 1 : iSeepestDecentValue;
 System.out.println(solve(input_data, max_x, min_x, iSeepestDecentValue));
2911:2014/02/21(金) 04:27:24.98
>>27
>>28は俺ね。
取り敢えず見つけてバグを修正してみたけど。

ところで if(x<c)...略 の c って int型でいいのかい?
再急降下法はまだ習ってなかった?そうだったら使用してしまってゴメンなさい。
3011:2014/02/21(金) 05:01:29.98
追記

//前とのツナギ目 //大きいの想定関数 ac+b とデータの誤差の√平方和
////ツナギ目ツナギ目 //dPrevErr += calcErrOnHL( &vBiggerList, ithe_c, &lsmInfo );
103,104のコメントは不要。俺の書き方が悪かった。
2回に分けたから、繋ぎ目が分かるようにしたつもりだったんだが…。

>106 × //想定関数とデータの誤差の√平方和 が最も小さくする ithe_c を再急降下法で探す
>106 ○ //想定関数とデータの誤差の√平方和 を最も小さくする ithe_c を再急降下法で探す

データファイルのフォーマットが分からないから何ともいえないが
Pointとして捉えるデータ方式が間違っているような悪寒が俺はするんだが
>該当したかどうかなので y 座標は 0 と 1 と
ではなく、通常は、この手の問題は、入力は
X値,Y値 [改行]
ってのがN行あるCSVファイルだと思うんだが。
>200 18 255
>230 18 402
>250 18 269
>210 14 189
>150 54 723
>:
>っていう感じで
>x 該当数 総数
と、言うのならば
200 0.0705882(=18/255)
230 0.0447761(=18/402)
250 0.0520446(=14/189)
150 0.0746888(=54/723)

じゃないだろうか?
31デフォルトの名無しさん:2014/02/21(金) 06:32:11.11
[1] プログラミング言語 入門
[2] 変数を入力して、入力された値と以下の条件を満たした値を表示する

1 : 6の倍数なら2で割った値
2 : 3の倍数なら二乗した値
3: 2の倍数なら2で割った値
4: 上記以外の倍数は、二乗した値から元の値を引いた値
☆ 複数の条件が合致した場合は大きい倍数の条件のみとする
☆ 自作で関数を1つは作成する

なにとぞよろしくお願いします。

[3] 環境
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン: Visual Stdio 2010
 [3.3] 言語: C
[4] 期限: 2/22
32デフォルトの名無しさん:2014/02/21(金) 06:37:30.54
>>31
1の条件を訂正させてください。

正 1 : 6の倍数なら2で割った値を二乗した値

です。
3311:2014/02/21(金) 17:07:22.83
>>27
まだ修正箇所があった。スマンm(_ _)m

-- 152行目 --
lsm_info.sum_error = buf;
lsm_info.sum_error = java.Math.sqrt( buf );

×再急降下法
○最急降下法
3411:2014/02/21(金) 17:22:26.78
>>32 改行が多すぎでエラーが出たから体裁が無茶苦茶なのは勘弁な
int solve(int inputValue){ int iBuffer;
//1 : 6の倍数なら2で割った値を二乗した値
iBuffer = inputValue % 6;
if( 0 == iBuffer ){ iBuffer = inputValue / 2; return ( iBuffer * iBuffer );
}else{ //2 : 3の倍数なら二乗した値
iBuffer = inputValue % 3;
if( 0 == iBuffer ){ return ( inputValue * inputValue );
}else{ //3: 2の倍数なら2で割った値
iBuffer = inputValue % 2;
if( 0 == iBuffer ){ return ( inputValue / 2; ); }
} }
//4: 上記以外の倍数は、二乗した値から元の値を引いた値
iBuffer = inputValue * inputValue - inputValue; return iBuffer;}
int main(int argc, char* argv[]){ int iBuffer;
printf( "Input Number : " ); scanf( "%d", &iBuffer );
solve( iBuffer ); return 0;}
3511:2014/02/21(金) 17:27:27.90
>>32
最後の行が間違ってた
×: solve( iBuffer ); return 0;}
○: printf( "Anser %d\n", solve( iBuffer )); return 0;}
36デフォルトの名無しさん:2014/02/21(金) 20:35:58.88
>>35
訂正後もスペル間違ってる
×Anser
○Answer
37デフォルトの名無しさん:2014/02/22(土) 08:32:55.51
>>34-36

ありがとうございます。
特にコンパイラでエラーは出ないんですが、実際Visual Stidioで起動しCmdに入力すると表示されませn。
よかったら見ていただいてもいいですか?

http://ideone.com/uoAvzm
3811:2014/02/22(土) 12:22:49.56
>>37
36!=11な
Linux+gccでは問題無く動作した。

ここ数年は Visual Studio は触ってないから確かなことは言えないけど
ビルドして「実行」とかいうボタンを押すと、DOSプロンプトが立ち上がって
”Input Number : ”ってコードで書いてあるとおりに入力を催促表示すると思うけど。
違っていたら Visual Studio スレで聞いてみて
39デフォルトの名無しさん:2014/02/23(日) 02:02:52.36
>>37
エスパーするとCtrl+F5
4013:2014/02/24(月) 09:56:37.62
自分なりにやってみたのですが、どうもうまくいきません。
修正していもらってもいいでしょうか?

http://ideone.com/jAceXa
41デフォルトの名無しさん:2014/02/24(月) 10:26:11.23
>>38
アドバイスありがとうございます

>>39
cmd自体は出ますが、入力して結果が表示される前に消えてしまいます
42デフォルトの名無しさん:2014/02/24(月) 12:53:30.92
>>40
3箇所誤り見つけた。

19行目の返り値
28行目、30行目の変数の渡し方

>>41
正常終了して画面が消えただけ。
main関数のreturn直前にsystem("pause");入れてみ。
43デフォルトの名無しさん:2014/02/24(月) 19:26:19.56
>>41
6行目の空白行に
char* pHead = str_a;
とおいて、19行目の戻り値を pHead に変えてみる

>>42
>main関数のreturn直前にsystem("pause");入れてみ。
これよりはreturn直前にprinf("Input any key to quit. "); scanf("%s",&a);で
ダミーの入力受付の方が初心者向けじゃね。
まあ、どっちでもいいけどさ
44デフォルトの名無しさん:2014/02/24(月) 19:40:08.91
>>43
人にコメントできないくらい色々ミスってるぞ
45デフォルトの名無しさん:2014/02/24(月) 20:44:34.51
>>44
だっていちいちコンパイルするのが面倒いだもん(/ω\)ハズカシーィ
46デフォルトの名無しさん:2014/02/24(月) 21:39:40.32
>>45
安価ミスは気づいてないのかな?

また、以下3点の理由で、42の勝ち
??標準入力にゴミデータがあったら停止しない
??charの配列が必須
??バッファオーバーフローの可能性
47デフォルトの名無しさん:2014/02/25(火) 02:13:38.46
>>41
おまえ>>39試してないだろ
48デフォルトの名無しさん:2014/02/25(火) 09:05:21.57
>>47
VC2010では効かないみたいだが?
49デフォルトの名無しさん:2014/02/26(水) 23:20:13.15
またできない人が偉そうに回答してるのか
50デフォルトの名無しさん:2014/02/27(木) 09:44:24.68
このスレは全大学の教授に監視されています
51デフォルトの名無しさん:2014/02/27(木) 10:15:49.27
>>50
しっかりした答えを書く責任があるということですね。
5211:2014/02/27(木) 13:49:06.50
>>50
vimの練習のために、お題に答えていた俺は逝ってよしなんですか?
53デフォルトの名無しさん:2014/02/27(木) 15:39:54.56
vim script, elisp入門の講義にしたら良いのに
54デフォルトの名無しさん:2014/02/27(木) 17:42:07.54
このスレは全大学の情報学科出身の派遣社員が生暖かい目で見守っています
55デフォルトの名無しさん:2014/02/27(木) 18:04:29.58
田舎大学のアホ教授なんて全員、クビにして然るべき
56デフォルトの名無しさん:2014/02/27(木) 18:37:03.61
と奴隷が申しております。
57デフォルトの名無しさん:2014/02/27(木) 18:39:07.28
派遣先輩の忠告は聞くべき。
卒業式の日に、お礼参りに角材で殴ったりしちゃダメだぞ☆
58デフォルトの名無しさん:2014/02/28(金) 00:59:43.82
こいつには単位あげない
5911:2014/02/28(金) 01:02:03.01
情報学科出身ではない、
派遣社員ではない、
そんな俺は逝ってよし!なんですか
60デフォルトの名無しさん:2014/02/28(金) 05:19:23.69
>>59
誰だよお前
6111:2014/02/28(金) 05:30:23.48
>>59
このスレで11を獲った人
そういうお前こそ誰なのよ?
62デフォルトの名無しさん:2014/02/28(金) 17:01:34.27
ニートです
63デフォルトの名無しさん:2014/02/28(金) 17:27:31.44
>>31 fizzbuzzだな。
#include <stdio.h>

static int sqr(int n) { return n * n; }
static int div(int n) { return n / 2; }

int main(void)
{
&nbsp; int n, t;
&nbsp; scanf("%d", &n);
&nbsp; t = n;
&nbsp; if (n % 2 == 0)
&nbsp; &nbsp; n = div(n);
&nbsp; if (n % 3 == 0)
&nbsp; &nbsp; n = sqr(n);
&nbsp; if (t == n)
&nbsp; &nbsp; n = sqr(n) - t;
&nbsp; printf("%d\n", n);
&nbsp; return 0;
}
64デフォルトの名無しさん:2014/02/28(金) 19:32:57.19
QZがまた糞回答をした
65デフォルトの名無しさん:2014/02/28(金) 23:02:55.60
>>34よりはいいんじゃないの?
66デフォルトの名無しさん:2014/02/28(金) 23:20:58.87
>>65
お前>>63だろ
仕様に適合してないことに気が付いてるか?
67デフォルトの名無しさん:2014/02/28(金) 23:30:57.53
今流行のラムダ式でおね
68デフォルトの名無しさん:2014/02/28(金) 23:37:29.74
今でしょ
69デフォルトの名無しさん:2014/03/01(土) 02:06:27.01
>>66
適合しない入力を教えて。
70デフォルトの名無しさん:2014/03/01(土) 05:46:08.96
>>64
末尾に /* end */ がない
71デフォルトの名無しさん:2014/03/01(土) 12:59:38.44
>>69
全ての入力
72デフォルトの名無しさん:2014/03/01(土) 13:42:51.65
>>69
入力値が6のとき、答えはいくつになればいいと思う?
7369:2014/03/01(土) 16:38:35.00
ママーみんながボクをいじめるよ〜(´Д⊂ヽ
>>34のドキュソよりも、いいコードを貼り付けてやったのに
間違ってるって、言いがかりを付けてくるんだ〜
74デフォルトの名無しさん:2014/03/02(日) 21:42:17.10
#include <iostream>
int main() {
int n; std::cin >> n;
std::cout << ([&](){ return !(n % 2) ? n / 2 : !(n % 3) ? n * n : n * n - n; })() << std::endl;
return 0;
}
75デフォルトの名無しさん:2014/03/02(日) 21:44:02.95
あ、違った。
76デフォルトの名無しさん:2014/03/02(日) 21:45:29.90
QZ渾身の糞コード
77デフォルトの名無しさん:2014/03/02(日) 22:00:01.85
>>76

main;
/* end */
78デフォルトの名無しさん:2014/03/04(火) 17:45:25.55
誰か助けて
79デフォルトの名無しさん:2014/03/04(火) 17:51:14.19
誰か助けてください。お願いします。
来週に似たような問題の試験があるので解説付きだと嬉しいです。

now.ameba.jp/x12xxxy24x

出力しろってやつは無視しておkでっす。
80デフォルトの名無しさん:2014/03/04(火) 22:26:50.67
>>79
URLをちゃんと記述してくれ、クリックして出ない URL なんか誰も見ない
81デフォルトの名無しさん:2014/03/04(火) 22:31:45.84
>>80
俺見たよ。レベル低くてリンク張れないんだろ、察しろよ雑魚。
82デフォルトの名無しさん:2014/03/05(水) 06:25:33.74
>>81
俺見ないよ。レベル低くて見る気が起きないんだよ、察しろよ雑魚。
83デフォルトの名無しさん:2014/03/05(水) 06:28:11.60
>>82
だったら出てけよ
84デフォルトの名無しさん:2014/03/05(水) 06:34:23.08
忍法帖も知らないにわかが偉そうにURLがどうとかw マジ糞だなこいつ>>80
85デフォルトの名無しさん:2014/03/05(水) 07:42:31.67
>>79
見れるけど
Nexus7で見てるから
画像の文字が読み取れん
86デフォルトの名無しさん:2014/03/05(水) 11:43:25.52
>>79
問2
(1)(a)2 出力の第2項がyの初期値
(b)x+y (a)の答えと出力の3項から
(2)BとD
問3
(1) (a)int cnt=0; 初期値0必要
(b)cnt
(c)"%sは%d文字です。\n",str,strcnt(str)
(2)for(;s[cnt]!='\0';cnt++){/*何もしない*/};
87デフォルトの名無しさん:2014/03/05(水) 11:45:29.08
>>79 続き
問4(1)
#include <stdio.h>
typedef struct{ int x, y; } Pt;
Pt swap(Pt p){
Pt ret; /* 戻り値 */
ret.x=p.y; ret.y=p.x;
return ret;
}
(2)
int main(void){
unsigned int i;
Pt p;
Pt array[]={{-1,1},{1,0},{0,-1}};
for(i=0;i<sizeof(array)/sizeof(Pt);i++){
printf("入替前:(%d, %d)\n", array[i].x, array[i].y);
p = swap(array[i]);
printf("入替後:(%d, %d)\n", p.x, p.y);
}
return 0;
}
88デフォルトの名無しさん:2014/03/05(水) 11:47:33.89
>>79 続き
問5 自信無い、誰か教えて。
#include <stdio.h>
int main(){
int *x = /*空欄*/
x += 5;
printf("%X\n", x);
return;
/* 出力:19 の時 空欄を埋めよ */
}
intが2byteなら,int *x=15;
intが4byteなら,int *x=5; で、一意には決まらない?
あと、ポインタ型を数値で初期化していいの?
89デフォルトの名無しさん:2014/03/05(水) 11:49:38.79
>>79 続き
問6(2)
#include <stdio.h>
#include <string.h>
void freverse(char* c){
int n = strlen(c); /* 'H','e','l','l','o','\0' で n=6*/
while(n>0){
printf("%c", c[--n]);
/* [--n]:変数の値を使う前に-1するので n[5]からn[0]まで出力 */
}
printf("\n");
}
int main(){
char* c = "Hello";
/* c[0]='H',c[1]='e',c[2]=l,c[3]=l,c[4]=o,c[5]=w,c[6]='\0' */
freverse(c);
return 0;
}
問7
最後が見えないのでよく分からん。
9086:2014/03/05(水) 14:01:17.39
>>79 ごめん、訂正。strlenの戻り値間違えた。
問6(2)
#include <stdio.h>
#include <string.h>
void rev_1(char* c){
int n = strlen(c); /* 'H','e','l','l','o' で n=5*/
while(n>0){
printf("%c", c[--n]);
/* [--n]:変数の値を使う前に-1するので n[4]からn[0]まで出力 */
}
printf("\n");
} /* 出力: olleH */
int main(){
char* c = "Hello";
/* c[0]='H',c[1]='e',c[2]=l,c[3]=l,c[4]=o,c[5]=w,c[6]='\0' */
rev_1(c);
return 0;
}
9186:2014/03/05(水) 14:09:55.83
>>79
又間違えた。>>90 mainの中のコメント
/* c[0]='H',c[1]='e',c[2]=l,c[3]=l,c[4]=o,c[5]=w,c[6]='\0' */
じゃなく、
/* c[0]='H',c[1]='e',c[2]=l,c[3]=l,c[4]=o,c[5]='\0' */ だわ。
92デフォルトの名無しさん:2014/03/05(水) 19:22:58.10
>>79
int main(){
  Pinfo ps[] = {{"taro",M},{"hanako",F},{"saburo"←この行が切れてて解答できません
  printPerson(ps);
  return 0;
}

これで合ってる?
  Pinfo ps[] = {{"taro",M},{"hanako",F},{"saburo",M},{"",E}};
93デフォルトの名無しさん:2014/03/07(金) 03:35:58.03
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&amp;amp;リンク):
10×10のグラフにおいて、直接接続されたノード間のエッジの距離を1から10までの整数から無作為に選択した値、接続のないノード間の距離を無限大(実際には99999など)としてそれぞれ与え、配列などのデータ構造に記憶させる。
上記で作成したネットワークの任意のノードから、それ以外のすべてのノードまでの距離と経路をDijkstra法を用いて求め、表示する。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland c++ 5.5.1
 [3.3] 言語: c++
[4] 3/8(土)
94デフォルトの名無しさん:2014/03/07(金) 07:59:32.77
すみません、93の言語を修正させてください。

[3.3]言語c++ → c でお願いします。
9593:2014/03/07(金) 11:44:08.01
>>94
勝手になりすますのは止めてください
96デフォルトの名無しさん:2014/03/07(金) 19:28:49.68
>>93
糞レベルなこのスレで回答がつくとでも思っているのか?
9793:2014/03/07(金) 19:36:20.18
お前ら、これくらいしか能が無いんだから、さっさと答えろ
9886:2014/03/07(金) 20:51:32.26
>>93
初心者だけど練習で書いてみた。(リンク禁止なのでコピペで)
 ideone.com/PUYFar
隣接行列の作成はかなりええかげんに書いたのでそこらはもっといいのに書き換えて。
俺には出来んかった。
99デフォルトの名無しさん:2014/03/08(土) 05:55:58.24
>>93
用語適当すぎ
10×10のグラフって何や、完全二部グラフか?
100デフォルトの名無しさん:2014/03/08(土) 10:58:25.67
知らないんならレスしないでください
101デフォルトの名無しさん:2014/03/08(土) 20:22:58.33
ここでお願いをする人間は、これらが必要だよな
a. トリップを付ける。
b. 回答を受け取ったら感謝と報告を含んだ返答を書き込む。
c. E-mail欄は sage ではなく age 。
102デフォルトの名無しさん:2014/03/08(土) 20:27:51.06
>>101
勝手にやってろよバーカ
103デフォルトの名無しさん:2014/03/08(土) 20:29:53.38
ろくに答えられない分際でルール作りにばかり力入れるやついるよなw
まずお前が出て行けとw
104デフォルトの名無しさん:2014/03/08(土) 20:45:52.87
こういう宿題は解いても載せない
105デフォルトの名無しさん:2014/03/08(土) 20:52:30.65
カス大生の問題は解いても掲載しない
106デフォルトの名無しさん:2014/03/08(土) 21:05:29.08
>>105
解けないバカが妄想語ってんじゃねえよカスw
107デフォルトの名無しさん:2014/03/08(土) 21:12:57.85
やったー!
煽るしか人間として能がないDQN(=暇潰し玩具)が降臨したぞー!

>>105さん、自分ここで回答してしまったバカです。
何かコメントくださいw
108デフォルトの名無しさん:2014/03/08(土) 21:41:19.18
謎の勝利宣言
109デフォルトの名無しさん:2014/03/08(土) 21:45:00.41
団塊世代のジジイ共をのさばらせないためにも、
ゆとりのクズ大生は甘やかしてはいけない
110デフォルトの名無しさん:2014/03/08(土) 21:46:22.94
だね
自分で調べる力を身に着けさせよう
111デフォルトの名無しさん:2014/03/08(土) 21:47:14.41
>>106
同様の問題をPrologで出されたわ
c++とか1,2時間も掛からないだろ
112デフォルトの名無しさん:2014/03/08(土) 22:47:23.40
>>103
そうそう、wikipedia や wikisource をちょこちょこ書いているが、やたらとルール作りが好きな連中が多いね、あそこは
113101:2014/03/08(土) 23:03:39.68
>>112
そうそう、このスレでちょこちょこ回答しているが、やたらと煽る以外脳がない低脳と同類の連中が多いね、ここは
114デフォルトの名無しさん:2014/03/09(日) 14:55:55.26
現在プログラム板のID制導入の投票を実施中です
よろしくお願いします

プログラム板 強制ID制導入に関する投票スレ
http://kohada.2ch.net/test/read.cgi/vote/1394290844/
115デフォルトの名無しさん:2014/03/11(火) 23:51:43.13 ID:CqsIcYOw
IDが表示されるようになりました。
ありがとうございました。
116デフォルトの名無しさん:2014/03/12(水) 22:55:36.30 ID:IkRDHIrE
[1] プログラミング言語 C
[2]
・ 指定したファイルに文字列を行数を指定して挿入するプログラム(ファイル名と位置,挿入する文字列を入力できるようにする)
・ また、上記のプログラムを直して文字列を挿入する場所を行だけでなく列も指定できるようにせよ。(まずは半角だけでよい)

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C
[4] 期限: 3月14日

最近勉強を始めたんですが、ファイルの取り扱いでかなり苦戦しています。
どなたかよろしくお願いします。
上の方が使っていたWebのコンパイラも置いておきます。
ttp://ideone.com/
117デフォルトの名無しさん:2014/03/12(水) 23:12:56.68 ID:AZrAiCEG
自分で調べろゴミ
118デフォルトの名無しさん:2014/03/13(木) 03:17:23.49 ID:9GIXFBoB
>>117
何でこのスレくるのかわからんw
119デフォルトの名無しさん:2014/03/13(木) 03:18:17.41 ID:9GIXFBoB
>>116
2つ作れば良いのかな?
120デフォルトの名無しさん:2014/03/13(木) 07:15:19.11 ID:vtBqfgev
>>118
春休みだもん
煽り目的の馬鹿が涌くいて出てくる時期だろ
121デフォルトの名無しさん:2014/03/13(木) 10:12:57.55 ID:u5puOzBI
uyじゃないか?
IDが出てさぞ荒らしにくくなってるだろうなあザマアww
122デフォルトの名無しさん:2014/03/13(木) 11:23:25.78 ID:ZLHpPjTL
最近勉強を始めたんですが、ファイルの取り扱いでかなり苦戦しています。
どなたかよろしくお願いします。
上の方が使っていたWebのコンパイラも置いておきます。

こいつ馬鹿だろ。この程度で苦戦とか本の読みこみが足りなすぎ
123デフォルトの名無しさん:2014/03/13(木) 12:37:29.72 ID:ZSiSFjs+
>>116
> ファイルの取り扱いでかなり苦戦しています。

どこまでできてるんだよ?
124デフォルトの名無しさん:2014/03/13(木) 12:46:21.85 ID:ZLHpPjTL
自分の能力も明示せず問題丸投げで回答を求める
これ質問できない馬鹿の見本
125デフォルトの名無しさん:2014/03/13(木) 13:06:01.24 ID:8C61XcI9
>>116
何か変なのが一匹居るけど、無視で良いよ。
初心者スレでしか暴れられない可哀想な人だから。
126デフォルトの名無しさん:2014/03/13(木) 13:11:59.33 ID:ZLHpPjTL
>>125
自己顕示欲で糞回答しろよ
糞コードを見せろQZ
127デフォルトの名無しさん:2014/03/13(木) 14:45:54.07 ID:Lb6ZNCgf
IDが表示されるのと、この宿題スレをやめる問題は全く無関係な話
このスレはこのまま続ければいい
ただ質問する奴は大学側にバレバレなんで、それで単位を落としてもこのスレを逆恨みすんな
そんな大事な単位なら安易に問題を晒すな
128デフォルトの名無しさん:2014/03/13(木) 17:42:43.90 ID:ZLHpPjTL
素タップ細胞のコピペ事件知ってるならここで質問するのやめとけ
129デフォルトの名無しさん:2014/03/13(木) 18:06:13.94 ID:jln8hkaw
質問者でもないのに必死になっている奴いて、ワロタ
130デフォルトの名無しさん:2014/03/13(木) 18:34:58.05 ID:qaG+7LaQ
ファイルやストリームもろくに調べることのできないクズが居ると聞いて
131デフォルトの名無しさん:2014/03/13(木) 18:56:25.95 ID:6bFdP97U
春休み真っ盛りだな
煽り目的のDQNがバカ丸出し♪

うーん、この低脳っぷりが芳ばすい〜(゜∇^d)!!
132デフォルトの名無しさん:2014/03/13(木) 19:29:50.99 ID:ZLHpPjTL
この質問者クズすぎだろ
133デフォルトの名無しさん:2014/03/13(木) 19:32:39.03 ID:eWE/omsK
ID:ZLHpPjTLの必死さにワロタ
134デフォルトの名無しさん:2014/03/13(木) 19:59:13.76 ID:ZLHpPjTL
>>131
じゃあお前が>>116の能無し馬鹿にお手本となるコードを書いてやれよ
135131 ◆GccdMSkjmA :2014/03/13(木) 20:29:33.60 ID:6bFdP97U
本日22:00までに>>116からお願いのカキコが
あったらやったるわ
136デフォルトの名無しさん:2014/03/13(木) 21:30:42.10 ID:1FOo5v5s
C言語なんですけど
void swap(int *x int *y)
int temp;
temp = *x;
*x = *y
*y = temp
一時変数tempを使わないで、swapを実行するにはどうすればいいですか?
137デフォルトの名無しさん:2014/03/13(木) 21:32:20.90 ID:ZLHpPjTL
もう馬鹿すぎて何も言えねえ
138デフォルトの名無しさん:2014/03/13(木) 21:35:10.13 ID:ci5j+wiG
>>116
http://ideone.com/zpaN5a
ゴリ押しプログラムができたぞ!!ふはははは!
ははは・・・
139デフォルトの名無しさん:2014/03/13(木) 21:35:22.78 ID:AgM9wxep
>>116
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
void doit(char*fname,int lineno,char*str) {
FILE*fin,*fout;int i,line=0;
char buf[1024];char**lines=NULL;fin=fopen(fname,"r");
while(fgets(buf,1024,fin)) {lines=realloc(lines,(line+1)*sizeof(char*));
lines[line++]=strdup(buf);
}
fclose(fin);fout=fopen(fname,"w");
for(i=0;i<line;i++){
if(i+1==lineno)fprintf(fout,"%s",str);
fprintf(fout,"%s",lines[i]);
}if(i+1==lineno)fprintf(fout,"%s",str);fclose(fout);
for(i=0;i<line;i++)free(lines[i]);free(lines);}
140デフォルトの名無しさん:2014/03/13(木) 21:38:29.32 ID:ZLHpPjTL
QZやっとの糞コード排出
141片山博文MZジェバンニ ◆T6xkBnTXz7B0 :2014/03/13(木) 21:42:08.30 ID:AgM9wxep
>>136
XOR swap
142デフォルトの名無しさん:2014/03/13(木) 21:47:30.75 ID:ZLHpPjTL
>>116は単位を落とすこと確定
143131 ◆GccdMSkjmA :2014/03/13(木) 21:51:01.80 ID:tz2xhzYu
>>138氏が先に片付けてしもうたか
ご苦労様ですm(_ _)m

あとは>>116がお礼をするだけだな
144デフォルトの名無しさん:2014/03/13(木) 23:40:25.92 ID:ZLHpPjTL
>>116はとんずらした
145デフォルトの名無しさん:2014/03/14(金) 00:14:18.45 ID:CN82R/hG
アホ大学生ネット回答でコピペし教授にバレる
146デフォルトの名無しさん:2014/03/14(金) 00:24:37.78 ID:JlWgyJEe
ID付きだとあぼーんが捗っていいな
147デフォルトの名無しさん:2014/03/14(金) 00:56:42.84 ID:CN82R/hG
友達いないからここで質問するんだろ
148デフォルトの名無しさん:2014/03/14(金) 03:20:22.81 ID:6a31vfjQ
>>116
なるべく易しく書いてみた。
範囲外などのエラーチェックはまったくしていない。

http://ideone.com/xOpfUA
149デフォルトの名無しさん:2014/03/14(金) 11:57:48.43 ID:CN82R/hG
ほらまた自己顕示欲キチガイが必死になってる
150デフォルトの名無しさん:2014/03/14(金) 12:58:13.50 ID:2dNSUwpy
145 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
147 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
149 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

素晴らしい

ID導入のおかげだ
151デフォルトの名無しさん:2014/03/14(金) 13:15:21.64 ID:CN82R/hG
ID:2dNSUwpyをNGIDにしよう
152デフォルトの名無しさん:2014/03/14(金) 14:53:11.12 ID:KtWzfVn0
IDが役に立ってるw
153デフォルトの名無しさん:2014/03/14(金) 15:04:07.53 ID:Mb2J0ktV
>>150
ワロタ。おれも同じ所があぼーんになってるwww

ID良いな。自動的に雑音排除して普通にスレを読めるようになった。
154デフォルトの名無しさん:2014/03/14(金) 15:11:09.11 ID:THJ4r5An
俺もw
( ;∀;)イイハナシダナー
155デフォルトの名無しさん:2014/03/14(金) 19:32:37.42 ID:CN82R/hG
宿題を投稿するな
156デフォルトの名無しさん:2014/03/14(金) 19:34:19.16 ID:CN82R/hG
>>152-154
全部あぼーんなんだが
157デフォルトの名無しさん:2014/03/14(金) 20:25:51.38 ID:CN82R/hG
一つの糞質問に群がるゴミどもきもすぎる
158デフォルトの名無しさん:2014/03/14(金) 22:43:51.11 ID:CN82R/hG
結局こいつらがしたいのは自分の力の誇示ってやつなんだよな
まあどいつもヘボだらけなんだが
159デフォルトの名無しさん:2014/03/14(金) 22:55:55.03 ID:CN82R/hG
オタクってさ、使いどころのない知識を自慢して優越感に浸る傾向にあるよね
こいつらも同じキモオタ
160デフォルトの名無しさん:2014/03/14(金) 22:59:08.73 ID:zw+41NN1
>>155-159
ID導入は正解だった
161デフォルトの名無しさん:2014/03/14(金) 23:10:51.98 ID:mqmIxcJs
>>160
っていうかなんでID導入されたのに悪化するのかね?
あぼーんできるからID導入は正解だった思うけれども
162デフォルトの名無しさん:2014/03/14(金) 23:38:19.22 ID:CN82R/hG
本物のオタクってさ、自分のために生きた知識を生かすんだけど
キモイオタクってのはくだらない知識を自慢するだめだけに使うんだよね
163デフォルトの名無しさん:2014/03/14(金) 23:46:16.36 ID:2tWZV7kK
悪化してないでしょ
赤いIDによる印象操作だ!陰謀だ!
164デフォルトの名無しさん:2014/03/14(金) 23:59:03.30 ID:S9zwpGGD
遅れてすいません。
インフルエンザB型に感染してしまったもので。

>>119
そうです。
ひとつは全角文字も読み、行数のみです

>>138
これでは入力した文字を挿入できないので問題とは違うようです。
ありがとうございます。参考にさせていただきます。

>>139
error C2598: リンケージ指定子がグローバル スコープで宣言されていません。
と出てしまいます。
doiit っていうのは初めて見ました。

>>148
string.hを追加したら動きました。
ありがとうございます。
165デフォルトの名無しさん:2014/03/15(土) 01:26:29.99 ID:AJr6U08J
>>164
>error C2598: リンケージ指定子が、
>グローバル スコープで宣言されていません
ttp://msdn.microsoft.com/ja-jp/library/w3kzs7x0.aspx

エラーは、エラー番号で検索すれば、たいてい説明が見つかる
error C2598
166デフォルトの名無しさん:2014/03/15(土) 01:56:14.99 ID:AJr6U08J
>>93
10*10の隣接行列だね
でも隣接行列は、ほとんどが隣接しない99999となり、
メモリの無駄だから、一般的には隣接リストを使う

セル番号を、1-100とすると、
1->2,3,4
2->1,3,5

漏れは今、6マスタイプの大戦略のAIを考えている
首都からすべてのセルへの、最小移動コストと、
その経路をたどるパス

すべてのセルへ、ランダムな移動コストを与えて、
シミュレートしようと思っている
優先度キューを使うか?
167デフォルトの名無しさん:2014/03/15(土) 22:18:05.01 ID:Pv8JcOyk
文字列(string型)の先頭から数字として有効な文字数を返す関数ってどうやって作れば良いですか?

"126AB"→3
"-(1+2)"→0
"-9.25ABC"→5
168デフォルトの名無しさん:2014/03/15(土) 22:32:58.92 ID:2R7Cli6M
strspn(s, "0123456789")
169デフォルトの名無しさん:2014/03/15(土) 23:13:57.17 ID:/jvxmNA2
>>176
10進数でない文字列の場合はどういう扱いをすればいいの?
170デフォルトの名無しさん:2014/03/15(土) 23:19:38.21 ID:71cS5Xff
あぼーんじゃないからレス番ずれたな
171116:2014/03/15(土) 23:43:49.16 ID:nqywdHbD
>>148
非常にわかり易かったです。
これを少し変えて

・指定したファイルに文字列を行数を指定して挿入するプログラム(ファイル名と位置)、挿入する文字列(全角)を入力できるようにする

にしたいんですが、どこをどのように変えたらいいでしょうか?
172デフォルトの名無しさん:2014/03/16(日) 08:48:02.12 ID:nQOiLa8y
>>176
> 文字列(string型)の先頭から数字として有効な

数字?
なら、"-9.25ABC" は 0 じゃね?
数値なら、1.2e-3、0x1234、.123、1,234.56 等を数値として見なすかを決めてもらわないと
173デフォルトの名無しさん:2014/03/16(日) 10:19:40.42 ID:wmlsbQd6
>>170
公開質問状でコードを見せろ、というつもりだったのに残念
174デフォルトの名無しさん:2014/03/16(日) 11:16:13.40 ID:u4clKyZZ
>>171
>文字列を行数を指定して挿入

という事は、「最初に改行してから、指定行数挿入」という事ですか?

>32. fprintf(fp2,"%s",str);

この部分に改行を追加し、指定行数ループするのではだめでしょうか?
175デフォルトの名無しさん:2014/03/16(日) 11:57:23.40 ID:+0w7Q/Uu
プログラマ=奴隷は事実だからしょうがないね

隠そうとしてもムダ
176デフォルトの名無しさん:2014/03/16(日) 13:18:00.57 ID:NcMQ7vHT
てか、会社次第では貴族待遇。
もっとも君らみたいなゴミには、そんな専門知識もスキルも期待できないからね
派遣ITの奴隷街道へまっしぐらだよ!
177116:2014/03/16(日) 21:10:46.65 ID:JTOubL74
>>175
おそらく>>172に対するレスですよね?
>>148の問題を変えて
挿入したい行数のみ指定し、(挿入したい)文字列(全角)を入力できるようにしたいのです
178デフォルトの名無しさん:2014/03/16(日) 21:11:42.66 ID:+0w7Q/Uu
なにこれよくわかんない
179デフォルトの名無しさん:2014/03/16(日) 21:30:14.05 ID:+0w7Q/Uu
ここで質問しても教授にバレバレだから
楽で出来ると持ったら大間違いで、結局は単位落とすだけなんだよなー
180デフォルトの名無しさん:2014/03/16(日) 21:57:22.91 ID:wmlsbQd6
単位落とすだけならいいけれども‥‥
ネイチャーに出す人がいるとはさすがに‥‥
181デフォルトの名無しさん:2014/03/17(月) 02:16:04.45 ID:q5oUANu3
>>177
行数と文字列を引数でもらって、処理をする
行数を引数でもらって、文字列は入力させて、処理をする

処理をするところは変更する必要ないのが分かればあとは簡単でしょ。
文字列の入力を読み取ることもできないレベルなら素直に単位を落としましょう。
182デフォルトの名無しさん:2014/03/17(月) 07:59:18.86 ID:K/DZRQsK
>>177
一応このスレのルールなんで、
>>1のテンプレに従って依頼内容をもう一度書き直して
183デフォルトの名無しさん:2014/03/17(月) 08:06:26.25 ID:HQUUHLVF
このスレのルールより社会のルールが優先
184デフォルトの名無しさん:2014/03/17(月) 08:56:25.05 ID:VXhVqDC5
>>182
>>183

[1] プログラミング言語 C
[2] 指定したファイルに文字列を行数を指定して挿入するプログラム(ファイル名と行数、挿入する全角文字列を入力できるようにする)
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C
[4] 期限: 3月18日
自分なりにやってみたのですが、うまくいきません。
もしよければ修正お願いします。
http://ideone.com/GuocSg
185デフォルトの名無しさん:2014/03/17(月) 12:01:18.21 ID:K/DZRQsK
>>184
>行数を指定
というのは、
挿入する行番号を指定という意味か、
入力された文字列を挿入する回数という意味か、
どちらでしょうか?

それから、
>挿入する全角文字列を入力できるようにする
というのは、入力時に漢字を入力すればいいだけに思います。
もしかして、IMEのON/OFFをするという事ですか?
186デフォルトの名無しさん:2014/03/17(月) 16:03:35.24 ID:q5oUANu3
>>184
>>148は非常に分かりやすかったんでしょ?
それを改造するに当たって、どこで困っているのかを書いたほうがはやいと思うよ。

必要な要素は>>148に含まれているように思うし。
一点問題を挙げるとすると、「指定したファイルに」挿入していないというところだけど、
そこは気にしてなさそうだし。
187デフォルトの名無しさん:2014/03/17(月) 16:27:48.56 ID:qNLDgXjv
そんなことするよりさっさと単位諦めて退学届出したほうがいいと思うけど
188デフォルトの名無しさん:2014/03/17(月) 16:45:58.35 ID:VXhVqDC5
>>186
>挿入する行番号を指定という意味か
そうです。頭から数えていって〜という意味です。

>挿入する全角文字列を入力できるようにする
なるほど。マルチバイト文字でも気にしなくて良いのですね。

>>187
おそらくこの問題で指定したファイルというのは
「a.txt」といういファイルをあらかじめつくっておき、そのファイル名を入力したら挿入できていればいいと思います。
189デフォルトの名無しさん:2014/03/17(月) 16:49:03.20 ID:q5oUANu3
>>188
だからさ、>>148、、もういいや。ごめん
190デフォルトの名無しさん:2014/03/17(月) 17:06:21.32 ID:qNLDgXjv
日本語の理解も不十分だったのか
ほんとに大学いってるのかな
191デフォルトの名無しさん:2014/03/17(月) 17:18:19.98 ID:omlKKA03
>>188
28行目をcolに1を代入する文に直す。
32行目の出力フォーマットを%sから%s\nに代える。
これで意図する動作しないかな?
192デフォルトの名無しさん:2014/03/17(月) 17:20:49.26 ID:qNLDgXjv
単位落とすの確定なのに答えてあげる優しい人がいるね
ダメ人間を育ててしまう人たちだ
193デフォルトの名無しさん:2014/03/17(月) 17:30:34.31 ID:VXhVqDC5
>>190
すいません、なにをどうしたらいいのかよくわからないです

>>192
http://ideone.com/NjbLBb
変えてみました。
194デフォルトの名無しさん:2014/03/17(月) 17:36:52.16 ID:qNLDgXjv
君、次の課題もそんな調子でここに質問する気?
奇跡的にここで得られた回答でコピペして単位もらえても
そのうち大きな課題出てまったく太刀打ちできなくなってコピペ論文で退学になる運命だから
ほんと諦めたほうがいい
195デフォルトの名無しさん:2014/03/17(月) 17:46:24.05 ID:VXhVqDC5
196デフォルトの名無しさん:2014/03/17(月) 17:50:38.20 ID:qNLDgXjv
問題を解くにあたっての必要となるベースの知識が欠けているから丸投げするんでしょ
だったら反省して自分で基礎の勉強をまず始めなきゃ、
いつまでもここで解決できると想ったら大間違い
197デフォルトの名無しさん:2014/03/17(月) 17:51:22.29 ID:wAxdNR9N
>>195
>>196はコピペを提出して退学になったクズらしいです
198デフォルトの名無しさん:2014/03/17(月) 17:54:42.64 ID:feM2kHU8
退学になるわけないだろ
せいぜい半期の単位を全部取り消されるくらいだ
199デフォルトの名無しさん:2014/03/17(月) 18:13:38.30 ID:qNLDgXjv
退学同然だと思うけどね
200デフォルトの名無しさん:2014/03/17(月) 18:14:37.58 ID:PETpdFuR
と大口たたいて出て行った男性が10分後に血まみれになって帰ってきた
201デフォルトの名無しさん:2014/03/17(月) 18:33:48.39 ID:GEI0z5hj
東大以外は行くだけ無駄らしいからさっさと退学した方がいいらしいよ。
202デフォルトの名無しさん:2014/03/17(月) 21:01:58.77 ID:K/DZRQsK
>>184
http://ideone.com/UMpTXd

// と ### にはさまれているところを、その下のように直す
203デフォルトの名無しさん:2014/03/17(月) 21:12:27.01 ID:q5oUANu3
いまさらだけどコードを最後まで読んでなかった恥ずかしい。
204デフォルトの名無しさん:2014/03/17(月) 21:28:01.12 ID:848rfsax
大学もなにも個人勉強でないの?
なんにせよガンバレ
205デフォルトの名無しさん:2014/03/17(月) 21:38:15.19 ID:qNLDgXjv
人に頼ってる時点でプログラマとしては3流
206デフォルトの名無しさん:2014/03/18(火) 13:31:43.10 ID:JEryyi3Z
>>203
これだと行と列の両方になってないか?
207デフォルトの名無しさん:2014/03/18(火) 14:01:55.78 ID:G12u9CCe
>>206
馬鹿が頑張って解決しようとしてもムダ
お前の知識は何も役にも立たん
かえって質問者を惑わせ迷惑させようとしているのかね
208デフォルトの名無しさん:2014/03/19(水) 00:02:02.64 ID:+A6hJBSy
本当にまる2日以上寝てるとき以外はPCに向かってるんだな
やっぱりここで宿題やってもらったのがばれて留年した人か
209デフォルトの名無しさん:2014/03/19(水) 01:14:22.14 ID:pgTJKr0l
マジでここでのコピペがばれて単位落として泡吹いた奴は多いと思うよ
それをこのスレで報告していないだけで
これだとまだまだ自滅していく学生は多いのかな
210デフォルトの名無しさん:2014/03/19(水) 03:31:39.66 ID:K3WonBla
一泡吹かせた人なのか、はたまた泡を食った人なのか。というのはさておき。

そもそもコピペに対する罰が単位を落とす程度で済ませる学校が悪いよ。
半期単位失効というところもあるが、それでもやはりぬるいといわざるを得ない。
基本的に退学、譲歩して全期単位失効が妥当。

それでも俺は回答し続けるけどね。
211デフォルトの名無しさん:2014/03/19(水) 08:24:15.10 ID:jJsViii8
プログラムの課題をちゃんと書き換えるからと一人に渡したら
5人ぐらいが丸々コピーして提出してた。
うち一人はソース内の名前+学生番号も書き換えてなかった。
212デフォルトの名無しさん:2014/03/19(水) 08:32:00.35 ID:pgTJKr0l
ドカタになろうとしている奴らの精神的レベルはこの程度
このスレは削除したほうがいい
213デフォルトの名無しさん:2014/03/19(水) 22:52:55.01 ID:uuz1UwWR
彼らは学士や修士号を獲て、SIerやコンサルに成ろうとしているんだから、
課題の丸投げや不都合な事実の隠蔽は社会へ出る前の適切な訓練。
技術者になろうとするアホは課題を自力で解こうとするし、
人生の春を失うどころかキャリアさえ失う。バレなければ問題はないし、
社会的に優秀だし輝かしい名誉まで手に入る。
214デフォルトの名無しさん:2014/03/19(水) 22:58:29.28 ID:uuz1UwWR
このスレに出るレベルの課題如きでプログラマになれると考えているのは、
かなり頭が悪い大学生だろうし、恐らく行くだけの価値がない大学に通っている。
この程度の課題で十分だと考える教授陣営も、常春の人生を満喫して、
全身にダニが湧いていることは確実。
215デフォルトの名無しさん:2014/03/20(木) 00:57:34.00 ID:bcMe3eGT
>>214
しかしながら、学生のときに学んでいるはずであろう素養を備えていないプログラマが多いのも事実。
つまり、この程度の課題すらこなせない学生相手にする教授陣営も大変だということだ。
ま、単位あげなきゃいいだけなんだけどね。
216デフォルトの名無しさん:2014/03/20(木) 07:53:22.37 ID:S8YTEebr
>>172
カンマの妥当性判定が面倒だな
123,0000 は3になるんだろ、書きたくねぇw
217デフォルトの名無しさん:2014/03/20(木) 09:14:13.18 ID:noBkfRX0
>>216
こういう嘘回答する奴は回答者にもなれない
低学歴野郎です
218デフォルトの名無しさん:2014/03/20(木) 14:03:23.20 ID:VJY+yRA6
カンマはデータの区切りにもなるから、
数値の一部として見るのはやめた方がいいかも
219デフォルトの名無しさん:2014/03/20(木) 14:05:42.76 ID:noBkfRX0
スレ違い誤爆だろageるなクズ
220デフォルトの名無しさん:2014/03/20(木) 15:41:50.02 ID:VJY+yRA6
perlだとこんな感じか?
if ($str =~/(^\-{0,1}[0-9]+(\.[0-9]+|))/) {
 printf("%d %s\n", length($1), $1);
}
221デフォルトの名無しさん:2014/03/20(木) 16:22:16.70 ID:bcMe3eGT
>>220
突っ込みどころ
-{0,1}
[0-9]
(\.[0-9]+|)
222デフォルトの名無しさん:2014/03/20(木) 16:24:49.80 ID:bcMe3eGT
と思ったけど、最後のやつは意図を読み間違えていた。けどなんか気持ち悪いね。
223デフォルトの名無しさん:2014/03/20(木) 19:41:16.53 ID:noBkfRX0
気持ち悪いのはお前の人生
スレ違いなのに勝手にPerlの話しだす迷惑野郎です
消えろ糞ニートが、ドカタにもなれないだろそんな協調性のない人間じゃ
224デフォルトの名無しさん:2014/03/20(木) 21:40:15.79 ID:ANBdGt0P
こんな場所で宿題を解きたいって、どんな神経しているんだろう?
225デフォルトの名無しさん:2014/03/20(木) 21:47:58.23 ID:cjvdZq4D
>>224
暇潰し以上の意味があるわけないだろ
226デフォルトの名無しさん:2014/03/20(木) 21:55:17.41 ID:Hz3eyzKl
>>225
いや、あるよ。学生潰し。
227デフォルトの名無しさん:2014/03/20(木) 23:16:30.53 ID:132ZA9Bu
公開オナニーを趣味にしている変態
228デフォルトの名無しさん:2014/03/21(金) 02:34:14.51 ID:SpeQMCN6
>>223
そういうレスばかりするのはどういう気持ちから?
出題する側、出題される側、回答する側、およびそれぞれの過去を持ついずれか、はたまた無関係。
このどれなんだろう。
少なくとも朝昼夜の3回レスをしているわけだから、無関係ってことはないと思うんだよね。
229デフォルトの名無しさん:2014/03/21(金) 12:46:06.78 ID:Z82+z0lX
公開オナニーする馬鹿がこの板から出ていけばこのスレは必要なくなる
230 ◆QZaw55cn4c :2014/03/22(土) 23:22:48.72 ID:p0VQZyPj
正直どうでもいい
231デフォルトの名無しさん:2014/03/23(日) 00:23:46.40 ID:LwVxNWuC
公開オナニーをしてきた本人がこの一言
232デフォルトの名無しさん:2014/03/23(日) 01:08:12.22 ID:xE/ua0sY
233デフォルトの名無しさん:2014/03/23(日) 01:13:14.52 ID:SSYwKPLD
春休みかあ、と思ったけど16日はさすがにまだ春休みではないか?
234デフォルトの名無しさん:2014/03/23(日) 02:02:35.42 ID:MnyK3jKs
UFC 139 - マウリシオ・ショーグンvsダン・ヘンダーソン
https://www.youtube.com/watch?v=Rrzc6CXb_KY


UFC Fight Night 33 - マウリシオ・ショーグンvsジェームス・テフナ
https://www.youtube.com/user/UFC/feed?filter=2
235デフォルトの名無しさん:2014/03/23(日) 04:10:41.57 ID:1sIXiNOp
>>230
本物のQZ?酉割れてるから本人かどうかわからないけど、
強制IDになっても自演しまくりの日々は続いてんの?
236デフォルトの名無しさん:2014/03/23(日) 04:11:20.10 ID:BoG2P7C1
結果は人がいてもいなくても同じだ。
237デフォルトの名無しさん:2014/03/23(日) 10:52:33.39 ID:SXKh7u/F
自己顕示欲さん仕事探せよ。
2ちゃんに引きこもっていても道は開けないぞ。
238デフォルトの名無しさん:2014/03/23(日) 12:38:14.86 ID:wYZODv5U
このスレに職業プログラマの人ってどれくらいいるんだろうか

ちなみに俺はプログラマです
239デフォルトの名無しさん:2014/03/23(日) 12:50:39.71 ID:YZGI/DRg
>>238
どこから職業プログラマなんだ?
社外には売らないけど、社内のシステム構築してる俺は対象か?
240デフォルトの名無しさん:2014/03/23(日) 13:04:04.97 ID:TTHi9wBa
「勤務時間に業務としてプログラム開発をしている人」
じゃないかな?
241デフォルトの名無しさん:2014/03/23(日) 13:09:04.37 ID:xE/ua0sY
社内システム開発にC使うの?
それとも趣味でCやるの?
どっちにしても謎だ
242デフォルトの名無しさん:2014/03/23(日) 13:12:39.07 ID:TTHi9wBa
うちはCを使っている
もちろんそれ以外も使ってるけど
cronで動かしているものはほとんどがC
243デフォルトの名無しさん:2014/03/23(日) 13:44:31.07 ID:GFwabcra
>>241
>社内システム開発にC使うの?

大量データを扱う技術系パッチ処理では、今でもCが使われているよ
いまだに勘定系でCOBOLが使われているのと同じ理由
244デフォルトの名無しさん:2014/03/23(日) 14:44:58.46 ID:YZGI/DRg
>>241
C++ 使ってるが、何か?
C# の方が楽だけど、.NetFramework のインストールかいる環境とかあるとか色々面倒だったりするから。
あと、Linux 絡みは C だし。
245デフォルトの名無しさん:2014/03/23(日) 15:23:08.28 ID:8jLtLR5A
社内利用ならスクリプトで十分。
C/C++は開発効率が悪い。
246デフォルトの名無しさん:2014/03/23(日) 15:58:19.92 ID:qQgnZ21H
>>235
自演の定義はなんだい?
そのときの感性でトリップをつけたりつけなかったり適当にやっているだけだが、それでも自演というの?
トリップつきでもトリップなしでも問わず語りを紡いでいるだけで対話篇は意図していないんだが
それでも自演っていうの?

それなら違うよ、
247デフォルトの名無しさん:2014/03/23(日) 18:50:29.62 ID:YZGI/DRg
>>245
お前んとこではそうなんだろうな
248デフォルトの名無しさん:2014/03/24(月) 07:51:01.01 ID:30azwQW6
249デフォルトの名無しさん:2014/03/24(月) 10:07:51.73 ID:iN+OyuMJ
病気なのはQZ
宿題がないと生きていけない
250 ◆QZaw55cn4c :2014/03/24(月) 18:53:38.58 ID:t653hGnB
251デフォルトの名無しさん:2014/03/25(火) 15:14:39.11 ID:bvFcvrs8
QZのバ回答を当てにしてる奴は間違いなく無能プログラマ
252デフォルトの名無しさん:2014/03/25(火) 16:43:57.34 ID:i+51dnCa
自分が生きていると貼ったスレの2/3がdat落ち。タイムマシンか何か?
253デフォルトの名無しさん:2014/03/25(火) 21:30:34.03 ID:HPBQlIXi
>>251
誰もあてにしていないと思うよ体臭が強すぎて人目でQZってわかりやすすぎだし
254デフォルトの名無しさん:2014/03/26(水) 00:34:31.34 ID:7XkCn4fS
https://pbs.twimg.com/media/BjjLKdhCAAESoyB.jpg
剽窃で停学&留年@スーフリ大学
255デフォルトの名無しさん:2014/03/26(水) 04:34:02.81 ID:6J9B4gLY
いいね。回答者側は気楽なもんだ
256デフォルトの名無しさん:2014/03/26(水) 10:53:28.33 ID:EsehAkFD
宿題投げる奴が何故学生続けるか理解できない
257デフォルトの名無しさん:2014/03/26(水) 15:57:41.60 ID:8jubPs5x
暇つぶしのネタを提供してくれてる
258デフォルトの名無しさん:2014/03/28(金) 03:15:42.72 ID:zzqObK8g
>>254
法学部ですら退学にはならんということにビックリ
259デフォルトの名無しさん:2014/03/28(金) 21:10:37.31 ID:QdKQU949
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&amp;リンク):
10000以下の自然数のうち素因数分解を行ったときにその因子の数が最多となる数を求め,その数,因子の数,素因数分解の結果を表示するプログラムを作成して下さい.

出力形
8192 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
因子数:13

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 3月30日まで
[5] その他の制限:
ヒントを教授に聞きに行ったら自分で考えろと一蹴されました
よろしくお願いします
260デフォルトの名無しさん:2014/03/28(金) 21:32:30.39 ID:fFnbRaxR
>>259
それが正解だろ。小さい数(2か3)が有利。
ほぼ2で良いが、3もあり得る。
MAX次第。
261デフォルトの名無しさん:2014/03/28(金) 22:07:28.79 ID:iffS8S5F
エラトステネスの篩みたくやってけば良いんじゃない?
262デフォルトの名無しさん:2014/03/28(金) 22:12:20.11 ID:fFnbRaxR
Nに対し、N >= 2^nとなる最大のnを見つける。
N >= 2^(n-1) * 3 であれば、2解。
263デフォルトの名無しさん:2014/03/28(金) 22:45:22.88 ID:yytRCpay
10000ぐらいならテーブル化しちゃえ。
264デフォルトの名無しさん:2014/03/28(金) 22:50:49.51 ID:ETOIpidC
QZ糞コード連発
学生は泡吹くレベル
265デフォルトの名無しさん:2014/03/28(金) 22:54:27.99 ID:zWFnNM9i
>264 は留年&退学
266デフォルトの名無しさん:2014/03/28(金) 23:04:34.85 ID:QdKQU949
>>259ですが
8192 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
因子数:13
をもとめるソースコードが知りたいです
267デフォルトの名無しさん:2014/03/28(金) 23:21:48.83 ID:fFnbRaxR
ギジコード

fnc(N) {
for(n=1;;n++) if( N < pow(2,n) ) break;
n--;
prt(n,0);
n--;
if( N < pow(2,n)*3 ) prt(n,1);
}


prt(a,b){
2をa個、3をb個出力
}
268デフォルトの名無しさん:2014/03/29(土) 14:19:08.81 ID:Utjmo3gz
>>259
お前俺と同じ大学かよww
教授にチクっとくわ
269 ◆QZaw55cn4c :2014/03/29(土) 15:13:19.22 ID:T0jzXlJE
>>273
Hi!
270デフォルトの名無しさん:2014/03/29(土) 23:47:47.72 ID:3XiSwePB
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):入力した1桁の整数を行数と解釈し、その後、その行数分だけキーボードから入力された
文字をディスプレイに出力する。
[条件1]整数(行数)入力にはgetchar関数を使用する。
[条件2]行数入力後の文字入出力にはgetchar関数とputchar関数を使用する。
[条件3]入力された整数(行数)が、不正(整数でないまたは2桁以上の整数)の場合は、"Input error"と表示する。
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限:2014/03/30
271デフォルトの名無しさん:2014/03/30(日) 09:28:12.90 ID:xXpv5PSO
#include <ctype.h>
main()
{
    int   first, next, i;

    first = getchar();
    next = getchar();
    if(! isdigit(first) || isdigit(next)) {
        printf("Input Error\n");
        exit(1);
    }
    for(i = 0; i < first - '0'; i++) {
        putchar(next); putchar('\n');
    }
}
272デフォルトの名無しさん:2014/03/30(日) 10:31:02.30 ID:6grQiit6
>>217
7と答えるべきなのか?
仕様が曖昧だなぁ・・・
273デフォルトの名無しさん:2014/03/30(日) 13:06:59.67 ID:6RO/tmV/
>>272
単位落として留年する馬鹿
教授は観てるぞー
274デフォルトの名無しさん:2014/03/30(日) 15:35:22.26 ID:o9ag65ui
期末になってこのレベルだったら単位を落としてやり直すべき
275デフォルトの名無しさん:2014/03/30(日) 17:46:51.19 ID:4OPeePmh
>>259

あまりきれいではないけど、誰もやらないので一応参考に

http://ideone.com/LWro3R
276デフォルトの名無しさん:2014/03/30(日) 18:09:16.83 ID:6RO/tmV/
単位落とし記念カキコ
277デフォルトの名無しさん:2014/03/31(月) 13:11:48.78 ID:qra824CY
期限に間に合ったのか?
278デフォルトの名無しさん:2014/03/31(月) 19:20:39.49 ID:aH5oPSHV
何この小保方スレッドw
279デフォルトの名無しさん:2014/03/31(月) 21:37:21.57 ID:YuwcCGee
博士論文が2chのコピペ
280デフォルトの名無しさん:2014/04/03(木) 01:54:55.16 ID:GyJlUgSJ
まじできちがいじみてる
281デフォルトの名無しさん:2014/04/03(木) 04:46:38.64 ID:3kW14kq3
>>267
よくわからんが、10のとき何が出るの?
282デフォルトの名無しさん:2014/04/03(木) 13:56:38.91 ID:GyJlUgSJ
10以外出ると不可
283デフォルトの名無しさん:2014/04/10(木) 19:49:16.30 ID:o2rx8JxT
[1] 授業単元:プログラミング基礎II
[2] 問題文(含コード&リンク):
課題:
 double値を10進数表示せよ。
対象:
 C言語
制約:
 ・出力にはfputc()またはputc()またはputchar()を使うこと。
 ・printf系の書式変換を一切使ってはならない。
 ・C標準ライブラリ以外のライブラリの使用は禁止する。
 ・system()による外部プロセスの利用も禁止する。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2010
 [3.3] 言語: C
[4] 期限: 2014年05月31日まで
[5] その他の制限: プログラミング基礎I で基本的なところ(入門書1冊丸々程度)は終了してます
284 ◆QZaw55cn4c :2014/04/10(木) 21:27:04.03 ID:MkZSgWPI
285283:2014/04/10(木) 21:39:20.95 ID:o2rx8JxT
>>284
ありがとうございます
286デフォルトの名無しさん:2014/04/10(木) 21:44:54.82 ID:MSa8YAKk
それ
f(0.00031415926, 0);
はどんな結果を返すかな?
287デフォルトの名無しさん:2014/04/10(木) 22:03:04.12 ID:4bNYm9hY
>>286
痛いところを‥‥
EPSILON をてきとーにいじらないといけないですね、まあ小ネタってことで
続きはお題スレにて
288デフォルトの名無しさん:2014/04/10(木) 22:05:31.19 ID:fuOgayzR
>>286
\n しか出さないな。
float.h を include して、EPSILON を DBL_EPSILON に変えればまぁいいんじゃない?

しかし、
if (x >= 10.0) {
 f(x / 10.0, n + 1);
 return;
}
これは流石に駄目だと思う。

問題の処理系においての double のフォーマットを明示しなかった出題側も手落ちなんだけど…。まぁ難しいか。
IEEE 754 と仮定して、何 bit かは sizeof で勝手に判断する分には問題は無いと思うんだが。
289デフォルトの名無しさん:2014/04/10(木) 23:13:09.44 ID:YVcrTM8f
10の割り算で制約かけるなんて無理じゃないの?

http://ideone.com/KrJX4u
290デフォルトの名無しさん:2014/04/10(木) 23:14:53.98 ID:d5XuDKUS
そもそも小数2進数を小数十進数でスパッと表せるわけがないしな……
桁数指定しないと無理ゲーだろ
291デフォルトの名無しさん:2014/04/10(木) 23:57:30.77 ID:fuOgayzR
dtoa(非標準ライブラリ)の実装を読んでみる方がいいじゃない。
netlib は良く出来ているらしいし。

>>289
お題は printf 禁止なんだが…。
292デフォルトの名無しさん:2014/04/11(金) 00:27:35.68 ID:Vf1XqNZR
これアリ?ナシ?
ttp://ideone.com/Ir8Wdl
VCとGCCで挙動違うでやんの。
293デフォルトの名無しさん:2014/04/11(金) 00:30:18.09 ID:nkEZv0su
>char Z[L] = "\0";
>char B[L] = "\0";
配列の限界越えているぞ
294デフォルトの名無しさん:2014/04/11(金) 00:32:09.99 ID:nkEZv0su
いや、超えてないか
295デフォルトの名無しさん:2014/04/11(金) 00:35:03.86 ID:GvHlzSSy
期限まで1か月以上あるんだし焦る必要はない
296デフォルトの名無しさん:2014/04/11(金) 00:38:54.83 ID:Vf1XqNZR
>>293-294
配列の頭がポインタなら超えてる。ちゃんと領域を確保してそれにコピーしてるなら超えてない。
俺もそれ見てあれ?って思ったんだけど、配列だから大丈夫だと思うんだけど。どうだろう?????
普段からこういう書き方してるが、普段はC++ライクなんだよな〜〜。
297デフォルトの名無しさん:2014/04/11(金) 01:46:09.36 ID:nkEZv0su
領域確保とか面倒いし文字列とか string クラス使っちゃうしな
298デフォルトの名無しさん:2014/04/11(金) 02:23:18.29 ID:Vf1XqNZR
そうそう。今回もどうやってMallocしないで書こうか苦心したんだよ・・・。Orz
299デフォルトの名無しさん:2014/04/11(金) 03:40:24.49 ID:QXXBVWPw
IEEE754だっけ
指数部とか仮数部とか眺めるだけじゃ全然わけわからんなこれw
http://ideone.com/huYQ8d
300デフォルトの名無しさん:2014/04/11(金) 04:14:05.22 ID:Vf1XqNZR
基本的に少数以下は1/nの足し算なので簡単に誤差が出る。
10進数の少数表現と言うのも規格化されてるんだけど、新しすぎて対応してないはず。
C++は暫定的に組み込み可能なクラスで対応するようだ。そのうち。
301デフォルトの名無しさん:2014/04/11(金) 04:15:10.10 ID:Vf1XqNZR
1/(2^N)だったかもしれん。
302デフォルトの名無しさん:2014/04/11(金) 04:59:03.30 ID:Vf1XqNZR
あぁ、この問題って消費税関係か。1.08倍ってすごいきりが悪いからな。
金融の話だったら、ハードに頼るな。ってとこだろう。
文字列の数字の四則演算を実装するのが結果的に早い気がする。
303デフォルトの名無しさん:2014/04/11(金) 06:19:44.07 ID:5I17xPmm
>>286
>>288
改良版だhttp://codepad.org/DuNxC4mA

>>288
>これは流石に駄目だと思う。
完了版では処理系の double -> int 切捨てルーチンに丸投げした double x; (int)x
304デフォルトの名無しさん:2014/04/11(金) 13:00:39.99 ID:wnV3IcE/
>>303
前の版もそうだけど出力が1/10になってない?
305デフォルトの名無しさん:2014/04/11(金) 14:53:37.64 ID:5leeoZfo
http://ideone.com/jWOJDC
昨日作ってたけど先越されてたのでほっといたけどレス伸びてたのでせっかくだから貼る
小数点以下6桁表示決め打ちのウンコです
306 ◆QZaw55cn4c :2014/04/12(土) 12:46:01.37 ID:86gOYBKT
>>304
ご指摘感謝
今回はアイディア倒れに終わっちまった‥‥

>>283
訂正します
http://codepad.org/5zbOAPWc
307デフォルトの名無しさん:2014/04/15(火) 01:46:58.12 ID:S0P14nXJ
308デフォルトの名無しさん:2014/04/15(火) 16:19:28.76 ID:+gsaL0ih
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&amp;amp;リンク):入力した数が奇数の場合表示する。入力した奇数の和が20を超えるまで繰り返すプログラム。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++ 2010
 [3.3] 言語:C++
[4] 期限:4月18日
309デフォルトの名無しさん:2014/04/15(火) 18:09:39.29 ID:+gsaL0ih
↑自己解決しました
310デフォルトの名無しさん:2014/04/19(土) 02:38:29.25 ID:JqCVcRIk
311デフォルトの名無しさん:2014/04/20(日) 15:44:01.96 ID:5MmzIGIw
shitumo
312デフォルトの名無しさん:2014/04/20(日) 16:19:00.77 ID:4j91Sc/0
test
313 ◆QZschizo.ptH :2014/04/20(日) 16:19:52.37 ID:4j91Sc/0
test
314デフォルトの名無しさん:2014/04/23(水) 21:05:40.39 ID:I5h19qdV
315デフォルトの名無しさん:2014/04/23(水) 21:39:45.87 ID:bWoLrxMT
>>314
static intを使うと
http://ideone.com/vn92Ur
グローバル変数を使うと
http://ideone.com/GNdex3

staticとグローバル変数くらいは使えるようにならないと後で辛くなると思う。
316デフォルトの名無しさん:2014/04/24(木) 02:07:15.99 ID:JIk666B7
それ見てクワイン思い出した

http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AF%E3%82%A4%E3%83%B3_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

要するに自分自身を出力するプログラムだけど、そうではなくて中でプログラムをジェネレート
してからコンパイルするっていうアイディアがSTLだったんだよな
317デフォルトの名無しさん:2014/04/28(月) 15:52:23.27 ID:k1ZU+eWD
[1] 授業単元:プログラミングII
[2] 問題文(含コード&amp;リンク):
課題:
  #include < stdio.h >
int main (void){
int i;
float taiju[10]={58.6,65.2,74.4,46.0,52.8,62.4,55.0,51.2,54.8,48.4};
float total,average;
total=0;

for(i=0;i<10;i++){
total+=taiju[i];
}
average=total/10;
printf("Total=%.1f\n",total);
printf("Average=%.1f\n",average);
return 0;
このプログラムを関数にするにはどこをどうしたらいいですか?
}


 
318デフォルトの名無しさん:2014/04/28(月) 16:09:36.15 ID:PJcE9AjA
for(i=0;i<10;i++){
total+=taiju[i];
}
average=total/10;
319デフォルトの名無しさん:2014/04/28(月) 16:28:41.96 ID:tez0BZs4
>>317
http://ideone.com/EYr66x

題意は参照渡しが出来るかを試していると予想。
取り敢えず、参照渡しを覚える事を推奨する。
320デフォルトの名無しさん:2014/04/28(月) 16:35:48.86 ID:k1ZU+eWD
>>319
回答ありがとうございます。
渡しの部分が分からなかったのでしっかり覚えたいと思います。
アドバイスありがとうございます。
321デフォルトの名無しさん:2014/04/28(月) 17:23:22.28 ID:vBB1ZBuL
>>317
俺ならこう書き直すな……
コメントはしっかり付けたから、
頑張って意味を読み取ってくれ
http://codepad.org/Lk4gO1qY
322デフォルトの名無しさん:2014/04/28(月) 17:54:09.16 ID:k1ZU+eWD
>>321さん
sizeof関数まだ習ってないんですが、sizeof使わない場合はどうなるんですか?
なんども聞いてすいません。
323デフォルトの名無しさん:2014/04/28(月) 18:06:47.35 ID:vBB1ZBuL
>>322
別に配列サイズを別途与えてもいいけど、
sizeofを使って割り算で出すやり方がC言語では定番だということ
(学習用だからまだ習ってないsizeofは使えないんです><ってことなら「10」と決めうちしてもOK)

そもそも、計算させる際に配列サイズをベタ書きする方がおかしいわけで
(C言語なら#defineで定数宣言するといった分かりやすい手段があるのに)
324デフォルトの名無しさん:2014/04/28(月) 18:31:47.37 ID:2XbObvdB
[1] 授業単元:プログラミング基礎
[2] 問題文
text.txtというファイルに以下のような個人情報が保存されているとする。これを読み込み、
実行例のように画面に出力するプログラムを作成しなさい。
ヒント: 氏名の読み込みでは"name: %s\n"のような変換仕様を用いると良い。
▼text.txtの内容
name: Ichiro
age: 20
weight: 65.5
e-mail: [email protected]
▼実行例
氏名: Ichiro
年齢: 20
体重: 65.5
Eメール: [email protected]

ご教示願います
325デフォルトの名無しさん:2014/04/28(月) 18:47:13.71 ID:vBB1ZBuL
>>324
え、ヒントの通りじゃね?
要するにfscanf関数使えってことでしょ?

fscanf関数の使用例:
http://hitorilife.com/fscanf.php
http://www.c-tipsref.com/reference/stdio/fscanf.html
326デフォルトの名無しさん:2014/04/28(月) 19:11:16.56 ID:vBB1ZBuL
とりあえず模範解答。fscanfの書式指定が奇妙に見えるだろうが、
こうしないと名前に半角空白が入っていた場合途中で切れるからしゃーない
(例:「name: Taro Yamada」にしてた場合、「name: %255[^\n]\n」だと「Taro」までしか読まれない)
http://codepad.org/VbsaV5Qs
327デフォルトの名無しさん:2014/04/28(月) 19:12:47.85 ID:vBB1ZBuL
3行目ミスったw
× (例:「name: Taro Yamada」にしてた場合、「name: %255[^\n]\n」だと「Taro」までしか読まれない)
○ (例:「name: Taro Yamada」にしてた場合、「name: %255s\n」だと「Taro」までしか読まれない)
328デフォルトの名無しさん:2014/04/28(月) 19:45:01.50 ID:CAFKzRDO
>325
>326
ありがとうございます。
おかげさまで解決できました。
329 ◆0qAv26otVI :2014/04/30(水) 01:36:50.87 ID:IeCzK9WS
100000000000000 16384
10000000000000 8192
1000000000000 4096
100000000000 2048
10000000000 1024
1000000000 512
100000000 256
10000000 128
1000000 64
100000 32
10000 16
1000 8
100 4
10 2
1 1
0.1 0.5
0.01 0.025
0.001 0.0125
0.0001 0.00625
0.00001 0.003125
0.000001 0.0015625
0.0000001 0.00078125
0.00000001 0.000390625
0.000000001 0.0001953125
0.0000000001 0.00009765625
0.00000000001 0.000048828125
0.000000000001 0.0000244140625
0.0000000000001 0.00001220703125
330デフォルトの名無しさん:2014/04/30(水) 09:28:52.34 ID:f1RvcKlk
>>329
URRで良いやん。
331 ◆0qAv26otVI :2014/04/30(水) 12:18:34.26 ID:IeCzK9WS
2048個の配列に初期値入れておけば、あとは10進の足し算でやって下さい。
>>言葉足らずでした。
332デフォルトの名無しさん:2014/04/30(水) 13:15:50.11 ID:BnmcVkVe
>>331
で、何の意味があるの?
それが10進数の電卓作るときに役だつの?
333 ◆0qAv26otVI :2014/05/01(木) 01:49:32.67 ID:kg1PsNpN
>>283
#include <stdio.h>
#include <math.h>
struct str_aa {double a; int b; };
struct str_aa aa[2][1024] = {
1.0000000000000000,+0,
5.0000000000000000,-1,

4.4501477170144028,-308,
2.2250738585072014,-308,
1.1125369292536007,-308,
1.0000000000000000,+0,
2.0000000000000000,+0,

4.4942328371557898,+307,
8.9884656743115795,+307};

int main()
{
union bb_str {double a; int b[2];};
union bb_str bb;
int j;

bb.a = 1.4272476927059599e+45;
j = ((bb.b[1] >> 20) & 0x7FF) - 1024;
printf("%08X %08X %d\n", bb.b[1], bb.b[0], j );
printf("%.16fe%+04d", aa[1][j+1].a, aa[1][j+1].b );

return 0;
}
334デフォルトの名無しさん:2014/05/01(木) 04:03:47.77 ID:QEsY+r5w
お、なんか魔法使い来たぞ
335>>333:2014/05/01(木) 07:35:46.70 ID:kg1PsNpN
これは完成版ですか? 少数以下を16桁に変更させて頂いてOK? >>305
後、ほめられたのでおまけ:
#include <stdio.h>
#include <math.h>
void putdouble(double d); // >>305
int main(void){
int i;
double a = 123.4e+20;

putdouble(a);
a = 1.0;
for(i=0; i<1024; i++){
printf("%.16e\n", a);
a /= 2.0;
}
a = 1.0;
for(i=0; i<1024; i++){
printf("%.16e\n", a);
a *= 2.0;
}

return 0;
}
336333:2014/05/04(日) 21:58:51.85 ID:T5QjrG4C
http://codepad.org/
TixBAUrj
誰か見て、感想お願いします。
337デフォルトの名無しさん:2014/05/04(日) 22:49:18.30 ID:Ryn/of2a
338デフォルトの名無しさん:2014/05/05(月) 20:17:58.66 ID:KB14phN5
俺ならこうするぜ。(負数は未対応なんだぜ)

#include <math.h>
void disp(double);
main()
{
 double d = 123.456;
 disp(d);
}

void disp(double d)
{
  int i,n;
  double x = pow(10, ((int)log10(d)));

  for(i=0; i<10; i++) {
    n = d / x;
    putchar('0' + n);
    if(x == 1.0) putchar('.'); /* この比較はよくないぜ */
    d = fmod(d, x);
    x /= 10.0;
  }
}
339デフォルトの名無しさん:2014/05/07(水) 20:30:29.82 ID:5dQlzvFd
340デフォルトの名無しさん:2014/05/07(水) 22:15:57.26 ID:ZBYNUAwB
341339:2014/05/07(水) 23:01:40.00 ID:5dQlzvFd
結果が大きすぎた。10倍する前にキャリーを足すのではなく10倍してから足してくれ。すまんかった
342340:2014/05/11(日) 19:30:57.09 ID:aKdUIV9w
// wk &= 0x7ff0 0000 0000 0000;
wk &= 0x7ff0000000000000LL;

// longlong.ull += carry; //
// longlong.ull *= 10; //
longlong.ull *= 10; //
longlong.ull += carry; //

/* 指数が 0 〜 52 なら表示する */
// if(data_sisue >= 0 && data_sisue < 53){
/* 指数が 0 〜 48 なら表示する 48 + 1023 = 0x42F */
if(data_sisue >= 0 && data_sisue < 49){
&nbsp;&nbsp;&nbsp;&nbsp;case_seisueWithSyousue();
&nbsp;&nbsp;}
343339:2014/05/12(月) 02:37:45.75 ID:MKmfYHpq
>>340
153: if(flg == 0){
154: //if(longlong.ul2[1] == 10){ //下から1.0が上がってきた
155: // printf("kuriagattaze ");
156: // ++(data_seisue[0]);
157: // longlong.ul2[1] = 0;
158: //}
159: //disp_seisue();
160: printf(".");
161: flg = -1;
162: }

190: }
191: }
new disp_seisue();
192:}
344デフォルトの名無しさん:2014/05/14(水) 01:32:28.65 ID:Qd/1lT4o
345デフォルトの名無しさん:2014/05/14(水) 01:36:59.56 ID:mdmP4rsg
>>344
マルチポストはいけないよ


プログラミングのお題スレ Part3
http://toro.2ch.net/test/read.cgi/tech/1390525149/682-683

682 名前:デフォルトの名無しさん[] 投稿日:2014/05/14(水) 01:31:14.84 ID:Qd/1lT4o
http://gyazo.com/d95028bdea8af92bad1729ad221b1130

683 名前:デフォルトの名無しさん[] 投稿日:2014/05/14(水) 01:33:37.97 ID:Qd/1lT4o
>>682

わからん
346デフォルトの名無しさん:2014/05/14(水) 01:38:48.44 ID:Jr7baMzo
{}
347340:2014/05/15(木) 00:10:50.74 ID:4j/hvYC8
//void compute(){
 /* 指数が 0 〜 52 なら表示する 52 + 1023 = 0x433 */
// if(data_sisue >= 0 && data_sisue < 53){
 if(data_sisue >= -52 && data_sisue <= 52){
  case_seisueWithSyousue();
}

//void case_seisueWithSyousueSisueLE11(){
 if(data_sisue >= 0)
  longlong.ull <<= data_sisue;/* 指数分(0 〜 11)だけ左シフト */
 else
  longlong.ull >>= -data_sisue;/* 指数分(-52 〜 -1)だけ右シフト */

//void disp_seisue(){
 if(!data_keta)
  printf("%d", 0);
 for(int i = data_keta - 1; i >= 0 ; i--)
  printf("%d", data_seisue[i]);
>>いじょ Good bye.
348デフォルトの名無しさん:2014/05/16(金) 18:10:02.95 ID:LyHYCBhP
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&amp;amp;リンク):
wavファイルを読み込みテキストデータに変換、そのデータをフーリエ変換したものを画面に出力
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C
[4] 期限:5月19日
349デフォルトの名無しさん:2014/05/16(金) 18:13:43.46 ID:mI+a74mQ
スペクトラムアナライザのフーリエ部分だけでいいのか?
全体記述するとかなり巨大になるぞ
350デフォルトの名無しさん:2014/05/16(金) 19:30:32.75 ID:a2G3KqVr
そのフーリエ変換はライブラリ使ってもいいのか?
「基礎プログラミング」という名前から察するに
WAV読み込みすら課題として難しすぎる気がする……
351340 ◆0qAv26otVI :2014/05/17(土) 22:37:14.10 ID:MpfkVryu
352デフォルトの名無しさん:2014/05/18(日) 06:03:30.65 ID:UqGH8+5G
>>348
ライブラリ使用可じゃないと時間的に難しいぞ
>>350氏がいうようにwavの読み込み、解析でも結構な手間だぞ
353デフォルトの名無しさん:2014/05/18(日) 06:38:29.37 ID:7v87Hd7x
先生が口頭や板書でヒントとか出してることもあるだろうけど
だいたいこのスレで質問する質問者どもはそういうのを聞いてなかったり見逃してたりするんだろうね
354デフォルトの名無しさん:2014/05/18(日) 06:50:32.25 ID:7v87Hd7x
wav抽出だけならノウハウがネット上にいくらでもあるし
http://marupeke296.com/DS_No2_GetSoundDataFromWav.html

フーリエ変換もFFTのコード適当に拾ってくりゃいいんじゃないの
355デフォルトの名無しさん:2014/05/18(日) 08:36:41.49 ID:OmC98YTB
OSとコンパイラが指定されているからdoubleの内部表現決め打ちでいいわけか
356340:2014/05/18(日) 10:19:53.72 ID:BFkwxb50
3.14 x 1/2048 でも10進表現OKか
357デフォルトの名無しさん:2014/05/18(日) 11:03:53.27 ID:ICbJFvwM
動かしてないけど内容的には

http://www.geocities.jp/horie_ryu/page01.html

とかでええんでねぇの
358デフォルトの名無しさん:2014/05/18(日) 11:11:40.83 ID:untGUeAU
>>357
まあそうなんだろうけど、FFTじゃなくてDFTって時点で……
>>353無視するならそもそもFFTを自分で書かないけどな
359デフォルトの名無しさん:2014/05/18(日) 14:26:18.43 ID:T4xlj6Hv
1] 授業単元:プログラミングII
[2] 問題文(含コード&amp;amp;リンク):
3つの整数型一次配列vec1,2,3の先頭アドレスに要素数nを与えると、2つの配列vec1とvec2のそれぞれの和を計算し、vec3に代入する関数getarraysumを作成する。main関数では、5つの要素をもつ変数型配列vec1,2,3を定義する。
vec1は1,2,3,4,5で初期化し、vec2は10,20,30,40,50で初期化する。そして、作成した関数を呼び出し計算を行い、その結果で得られたvec3の値を表示する。
表示例
vec3[0]=11
vec3[1]=22
.
.
.
これをポインタにするとどうなりますか?
ご教授お願いします。
360デフォルトの名無しさん:2014/05/18(日) 14:45:33.15 ID:H/JD4vj2
どこをポインタにしたいんだ
361デフォルトの名無しさん:2014/05/18(日) 14:59:18.40 ID:T4xlj6Hv
>>360
vec3です。
362デフォルトの名無しさん:2014/05/18(日) 15:26:21.75 ID:lWjJVkd2
>>359
C/C++は知らないので馬鹿な質問なのかも知れませんが、
「3つの整数型一次配列vec1,2,3の先頭アドレスに要素数nを与えると」
これって普通の表現ですか。
363デフォルトの名無しさん:2014/05/18(日) 15:29:02.99 ID:mmOjks5D
>>362
ナイス突っ込み
364デフォルトの名無しさん:2014/05/18(日) 15:33:00.30 ID:DIHfwpMS
メモリポインタにしたいのか
365デフォルトの名無しさん:2014/05/18(日) 15:38:31.73 ID:P2EXL/Ge
コピペミスか出題者の日本語能力不足か分からないけど
三つの整数型の一次元配列vec1,vec2,vec3と、その要素数nを与えると
だろうね言いたいのは
366デフォルトの名無しさん:2014/05/18(日) 15:45:28.06 ID:P2EXL/Ge
表示例が配列になってるのをポインタにしたいってことですかね

*(vec3+0)=11
367デフォルトの名無しさん:2014/05/18(日) 17:32:32.13 ID:d9R6JRvl
>>350>>352-354
WAVの読み込みは手間だけど、離散フーリエ変換はFFTじゃないDFTなら問題なくね?
サンプル数(ウィンドウサイズ)分のforループを二重に回せば演算時間はともかく変換はできる。
368デフォルトの名無しさん:2014/05/18(日) 19:32:38.23 ID:untGUeAU
>>359
とりあえず「ご教示」な

解答としてはこんな感じ?
http://codepad.org/jfTHHfCc
369デフォルトの名無しさん:2014/05/18(日) 22:48:38.01 ID:T4xlj6Hv
>>368
回答ありがとうございます。
自分で考えてもう一度解いてみます。
370デフォルトの名無しさん:2014/05/19(月) 00:56:39.26 ID:UDyOnYKb
>>367
いずれにせよスレのレベル超える難易度の宿題だよな
371デフォルトの名無しさん:2014/05/19(月) 12:29:53.17 ID:ozr2de0w
[1] 授業単元:プログラミング演習2
[2] 問題文:
malloc とrealloc を用いて、繰り返し入力された文字列を連結していく。文字列
quit が入力されたとき繰り返しを終了してできあがった文字列を表示するプログ
ラムを作成
[3] 環境
 [3.1] OS:Windows 8
 [3.2] コンパイラ名とバージョン:Borland C++ 5.5.1 for Win32
 [3.3] 言語:C
[4] 期限:5月20日
http://pastebin.com/0BLX3vfH
上記のように作ってみたのですが、正常に動作していないようです。
30文字程度入力するとデータが飛ぶのでreallocあたりかと思うのですが、どこをどうすればいいのかわかりません。
よろしくお願いします。
372デフォルトの名無しさん:2014/05/19(月) 12:34:26.86 ID:ozr2de0w
後付けで申し訳ありません。
getchar()にて一文字ずつ付け足す方式の回答はできているのですがfgetsが大好きなのでできる限り改変なしで手直しかアドバイスをいただければ幸いです。
373デフォルトの名無しさん:2014/05/19(月) 12:41:47.58 ID:mxK7K6eG
>>372
「好き」って一体何なんだよ……
だいたいソースコード中に「30」って数字が入ってるじゃねーかw
374デフォルトの名無しさん:2014/05/19(月) 12:53:35.16 ID:ozr2de0w
途中で気付いて入力制限を無くしたバージョンを作ったのですが、上のコードが動かないことが気持ち悪くて質問させていただきました。
また、"30文字程度"というのは一度にではなく合計でです。
375デフォルトの名無しさん:2014/05/19(月) 13:15:42.07 ID:wBsls3I6
>>371
ざっと見ただけだけど
reallocが返すアドレスをmainまで返してないからじゃない?
376デフォルトの名無しさん:2014/05/19(月) 13:29:15.87 ID:yPaRcm/E
そうね。ポインタの使い方を間違ってる
str をポインタで渡すか
reallocで確保された ptr 値を返却して main 関数内で str に代入するかしないと
377デフォルトの名無しさん:2014/05/19(月) 16:32:02.51 ID:8OgLlmDp
>>371
my_strcat();みたいな処理をmainのwhile内に書いたほうが悩まずに済むと思う
378デフォルトの名無しさん:2014/05/19(月) 17:35:06.77 ID:8OgLlmDp
>>371
> 上記のように作ってみたのですが、正常に動作していないようです。
> 30文字程度入力するとデータが飛ぶのでreallocあたりかと思うのですが、どこをどうすればいいのかわかりません。

これは、
 1. 28行目のfgetsで30bytesからあふれた分が次回のfgetsで拾われる
 2. 8行目で強引に終端文字を\0 にしているから文字欠けが生じている
の2つが重なったのが原因だと思います。

http://ideone.com/Ff4R0x
みたいにすれば良いかも。
379デフォルトの名無しさん:2014/05/19(月) 17:58:07.75 ID:8OgLlmDp
ちなみに、realloc();が失敗した場合元のブロックは解放されたり移動されたり
しないそうなので、strのために確保したメモリは注意が必要。
380デフォルトの名無しさん:2014/05/19(月) 18:16:14.08 ID:ozr2de0w
>>375
>>376
関数とポインタについての理解が不十分だったようです。ご指摘ありがとうございました。
>>378
整ったコードをありがとうございます。参考にさせていただきます。
また、起きた事象の解説までしていただき恐れ多い限りです。
今夜はぐっすり眠れそうです。重ねてお礼申し上げます。
381デフォルトの名無しさん:2014/05/19(月) 19:14:04.33 ID:8OgLlmDp
>>378
は *str = '\0'; をしていなかった。
整っていないし…。
修正を入れた版 → http://ideone.com/X4p9LL
382デフォルトの名無しさん:2014/05/21(水) 01:52:36.45 ID:P13qVQqw
[1] 授業単元: Cプログラム
[2] 問題文: 国際ダイヤル通話料金システムは次のようになっている
@昼間料金(月曜日〜金曜日の午前8時から午後7時まで)
最初の1分まで300円
1分経過後6秒ごと15円
A夜間・休日割引料金(月曜日〜金曜日の午後7時から午後11時まで、および休日(土曜日、日曜日、祝日、正月三が日、振替休日)の午前8時から午後11時まで)
最初の1分まで240円
1分経過後6秒ごと12円
B深夜割引料金(日曜日〜土曜日の午後11時〜翌朝の午前8時まで)
最初の1分まで180円
1分経過後6秒ごと9円

通話時間と料金システムの区分(1~3)を入力して、それに該当する通話料金を計算して、出力するプログラムを作成せよ


通話時間を入力せよ(分 秒)- - - - >11 12
区分を入力せよ- - - - >2

あなたの通話料金は\1464です
[3] 環境
 [3.1] OS: Windows)
 [3.2] コンパイラ名とバージョン: 覚えてません
 [3.3] 言語: C
[4] 期限: 5月21日か22日
[5] その他の制限: 特になし
よろしくお願いします
383デフォルトの名無しさん:2014/05/21(水) 09:42:11.50 ID:zcLf8qzD
384デフォルトの名無しさん:2014/05/21(水) 15:55:03.02 ID:zcLf8qzD
>>382,383
バグ修正
ttp://ideone.com/yV03T1
385デフォルトの名無しさん:2014/05/24(土) 06:30:53.05 ID:GtRtgzPJ
>>382
ここでの問題は区間入力だから、単純だが、それでも区間を跨る場合の定義が書いていない。
本来は通話開始時刻と通話時間の二入力で出題されるところだろうが、その場合、
国民の祝日、休日の確定が必要で結構やっかい。春分の日、秋分の日は前年の二月一日の
官報に掲載されるまで決定できない。
386デフォルトの名無しさん:2014/05/24(土) 15:39:12.12 ID:pI+dKANJ
http://codepad.org/iSvhZg26
http://codepad.org/qjHj79OK
ここであってるのかわかりませんが、RPCサーバの課題についてです。
double型の値(x)を受け取り、その値から2.4*x*(1-x)を計算した結果をdouble型で返す
RPCサーバとクライアント(データ(x)送信範囲は0<x<1)の作成なんですが、プログラミングについて理解があまりないので
教えていただけませんか?

RPCサーバをコンパイルするも
警告: 暗黙的な関数宣言: registerrpc
と表示されたり
RPCクライアントをコンパイルするも
警告: 暗黙的な関数宣言: callrpc
と表示され何が問題なのかさえわかりません。
387デフォルトの名無しさん:2014/05/24(土) 18:16:25.56 ID:imaRiqLQ
>>386

>>警告: 暗黙的な関数宣言: registerrpc

その警告は「関数宣言がないから、暗黙的な関数宣言があったものとするよ」という意味。
#include <rpc/rpc.h>を入れれば消えるのでは?
388デフォルトの名無しさん:2014/05/24(土) 20:27:35.18 ID:Sb4iXA5P
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
プレイヤーvsモンスターの戦闘ゲーム
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2010
 [3.3] 言語:C++
[4] 期限:5月26日
[5] その他の制限: 1対1のターン制で宜しくお願いします
389デフォルトの名無しさん:2014/05/24(土) 20:44:15.43 ID:5k74nlaX
390デフォルトの名無しさん:2014/05/24(土) 20:47:42.79 ID:BoH7rvjb
>>388
せめてパラメータとか攻撃方法とかぐらい書けよ!
391デフォルトの名無しさん:2014/05/24(土) 20:50:41.21 ID:BoH7rvjb
と思ったら>>389で出てた。Magic連打してたらすぐ勝てそうなのはきっと気のせい
392デフォルトの名無しさん:2014/05/24(土) 22:46:47.83 ID:Sb4iXA5P
>>389
サクセス!
どちらかのHPが0になった時に戦闘を終了するようにはできないのでしょうか……?
393デフォルトの名無しさん:2014/05/24(土) 22:52:44.98 ID:5k74nlaX
ああ、条件式間違ってたな
while (PlayerHP > 0 || MonserHP > 0)
じゃなくて
while (PlayerHP > 0 && MonserHP > 0)
だた
394デフォルトの名無しさん:2014/05/24(土) 22:58:59.51 ID:znGmyzXe
>>392
>サクセス
成功(Success)?

……この実装だと0キッカリというのは難しいな(負数になり得るので)
PlayerHPとMonsterHPをunsignedにするとかすれば大丈夫だろう
395デフォルトの名無しさん:2014/05/24(土) 23:04:46.09 ID:znGmyzXe
>>393
なんだ、一度も走らせたことないのか……
「MonserHP」ってtypoしてるし、この書き方だと
Magic4回→Attack1回→Magic1回ってやるとバグるぞ?
http://codepad.org/xzCoDYRw
理由は言わずもがな
396デフォルトの名無しさん:2014/05/24(土) 23:06:15.64 ID:eVT80dAs
この状況でunsignedにしたら無限ループじゃないか
397デフォルトの名無しさん:2014/05/24(土) 23:08:38.64 ID:imaRiqLQ
>>394
398デフォルトの名無しさん:2014/05/24(土) 23:09:25.33 ID:znGmyzXe
>>396
その場合は条件式をいじって……
いやまあ>>395の時までは真面目にソース読んでなかったのよw
399デフォルトの名無しさん:2014/05/26(月) 09:36:06.44 ID:Cxl0XcJF
>>386 何ですが
double型で送信して、値の返却もdouble型でするには、どこをいじればいいのでしょうか?
400デフォルトの名無しさん:2014/05/26(月) 18:37:13.95 ID:l2nsfm+B
2ch.netへ再送。
>>388
ubuntuとかのlinuxディストリならAnswer 1を参照。solarisなら-lrpcでいけるのかな?
http://stackoverflow.com/questions/13145930/undefined-reference-to-registerrpc

>>401
extern int registerrpc(int, int, int, char *(*)(char [UDPMSGSIZE]),
xdrproc_t, xdrproc_t);

registerrpcの第4引数と第5引数を、xdr_intからxdr_doubleにすることで、
doubleを考慮したネットワークバイトに変換してくれるみたい。

funcの戻り値と引数はchar *func(char *udpmsg)にするのと、
xdr_doubleはxdrproc_tでキャストした方が良い。

static char *func(char *input)
{
static double output;
double *ptr = (double *) input; /** 第4引数のxdr_doubleで読み込み側のネットワークバイトオーダを、第5引数で書き込み側をケア */
output = *ptr + *ptr;
return (char *) &amp;output;
}
401400:2014/05/26(月) 18:41:14.32 ID:l2nsfm+B
ファック。レス番号までずれてやがる!もういいっす。
402デフォルトの名無しさん:2014/05/26(月) 22:52:16.16 ID:A1ad6/Mw
>>399
通信は基本的にビットを送信していると思ってください。ビットそのものには意味がありません。
ビットの塊にフォーマットを与えることでその仕事を成します。
基本的にはお約束にしたがってdoubleっぽいビット列をキャストしてやればいいんじゃないでしょうか。
403デフォルトの名無しさん:2014/05/27(火) 07:07:22.16 ID:b3eX0olM
わかってねえなら黙れよ。
404デフォルトの名無しさん:2014/05/27(火) 20:44:35.69 ID:5Qu+jOxY
シーン。
405デフォルトの名無しさん:2014/05/28(水) 06:55:00.23 ID:ZyYrP6pw
描き込まずにチンコ弄くります
406デフォルトの名無しさん:2014/06/10(火) 01:27:04.86 ID:bRopYhGX
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク): http://codepad.org/Tdb29gRf
以下の制約の下で、プログラムを改修し、処理にかかる時間を短縮しなさい。

1.グレースケール画像、エッジ画像、合成画像、それぞれ3つの作成は別の関数で行う。
2.画像のためのメモリは動的に確保する 
3.画像のサイズ、リピート回数は変えない
4.改修する前にこのプログラムをそのまま実行した時に生成される画像と、改修後の結果画像が変わらない

よろしくお願いします。
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 2014年6月11日17:00まで
[5] その他の制限:
407デフォルトの名無しさん:2014/06/10(火) 07:42:12.24 ID:9RO//ztd
わっしょい
408デフォルトの名無しさん:2014/06/10(火) 08:54:06.64 ID:AtWi4EDz
>>406
J( 'ー`)し タケシのコードをスクラッチで書き直してみたよ。http://codepad.org/cQiOfJY8
(`Д)   うるさい死ね 1割くらい遅えじゃねえか!
J( 'ー`)し ごめんね。お母さん1次元配列派だから、インデックス値の計算に時間が少し掛かるみたい。
(`Д)   うるさいくたばれ、返信すんな
J( 'ー`)し ヘッダ処理も少し真面目にやってみました。たいせつにつかってね 食事はしていますか?
(`Д)   死ねくそ女
409デフォルトの名無しさん:2014/06/10(火) 09:18:50.70 ID:FVnE5use
>>406
とりあえず
× irregal
〇 illegal

あとこっちでコンパイルしてみたらちゃんと(かどうか知らんが)
変な色の画像に変換された
410デフォルトの名無しさん:2014/06/10(火) 11:43:36.28 ID:GmSg9gy+
>>408
ありがとうございます
環境の違いなのかこっちで計測したら処理時間が元の8倍くらいかかりました
結果画像も違ってますね...

>>409
わかりました

そうです!変な色の画像になりますね
411デフォルトの名無しさん:2014/06/10(火) 11:46:42.70 ID:GmSg9gy+
>>406ですが、環境が Oracle VM VirtualBoxの仮想マシンで動かしてるLinuxなのが原因ですかね
その辺よくわからないんです
412デフォルトの名無しさん:2014/06/10(火) 12:00:22.30 ID:xGEOixPR
[1] 授業単元:プログラミング技術β
[2] 問題文(含コード&amp;リンク):
ディスプレイに「何時(0〜23)」と表示し、キーボードから整数を入力すると入力値によって、以下のように表示し、この操作を-1を入力するまで繰り返す。
0〜3 Goodnight
4〜11 Goodmorning
12〜17 Goodafternonn
18〜20 Goodevening
21〜23 Goodnight
上記以外の数値 再入力
よろしくお願いします。
[3] 環境
 [3.1] OS: Windwos
 [3.2] visualstdio 2013
 [3.3] 言語: C++
[4] 期限: 2014年6月9日まで
[5] その他の制限:
413デフォルトの名無しさん:2014/06/10(火) 13:08:07.48 ID:FVnE5use
>>411
わかんないけど念のため、
出力は別ファイル。もしかして同じファイルを上書きすると思ってない?
全面単色の画像を使ってたりしない?画像によっては変化ないかもしれない
414デフォルトの名無しさん:2014/06/10(火) 13:16:56.65 ID:FVnE5use
>>412
タイムマシン探さないと
415デフォルトの名無しさん:2014/06/10(火) 13:38:14.58 ID:ItrQsGd1
>>413
そこは大丈夫です、出力は別だと理解してます。

元画像はカラー画像を使ってます
全面単色ではないです

グレースケールに変換する部分のループを改変すれば早くはなるんですけど結果画像が変わっちゃうんですよね
416デフォルトの名無しさん:2014/06/10(火) 14:44:06.94 ID:IE+cVxVO
>>414
そこは大丈夫です、既に利用申請は通っています
417デフォルトの名無しさん:2014/06/10(火) 16:23:12.10 ID:NFkRDJAj
>>415
ごめん課題を理解してなかった。409と413は無視して。
で改善の方法だけど、全く思い付かない
基礎の授業なんだよね・・
グレースケールのとこは小数点演算を整数演算にしたら
自分の環境では微妙に速くなったけど、こういうのは
期待値じゃないよね

//ans[g][r]=(UCHAR)((data[g][r][0]+data[g][r][1]+data[g][r][2])/3.0+0.5);
ans[g][r]=((data[g][r][0]+data[g][r][1]+data[g][r][2])*2/3+1)/2;
418デフォルトの名無しさん:2014/06/10(火) 16:50:44.67 ID:AtWi4EDz
>>410
すんません。コメントのスキップがバグってて結果画像が変わってるかもしれません。
diff --git a/ppm/ppm.c b/ppm/ppm.c
index f31a799..6c72ede 100644
--- a/ppm/ppm.c
+++ b/ppm/ppm.c
@@ -120,9 +120,9 @@ static struct ppm *ppm_alloc_header_from_stream(FILE *text_stream)
{
struct ppm *ppm;
int width, height, color;
- char magic[4];
+ char magic[3];

- if (fscanf(text_stream, "%2s", magic) != 1 ||
+ if (fscanf(text_stream, "%2s\n", magic) != 1 ||
magic[0] != 'P' || magic[1] != '6') {
ppm_pr_err("Invalid magic number");
return NULL;

画像データが欲しいな・・・チラッ
419デフォルトの名無しさん:2014/06/10(火) 17:06:56.99 ID:EOz1UYwi
420デフォルトの名無しさん:2014/06/10(火) 20:18:19.01 ID:aONg9Rvp
>>406
小手先のポインタラッチで多少早くなる(ただし最初から最適化ありでコンパイルするなら変わらんかも)
ttp://codepad.org/fD0rji3C

画像のサイズを完全に固定していいのなら早くできそう
421420:2014/06/10(火) 20:19:41.98 ID:aONg9Rvp
あ、すまん、手元の画像サイズに変更しちゃったままだから注意

#同じく画像データが欲しいな・・・チラッ
422420:2014/06/10(火) 21:08:07.09 ID:aONg9Rvp
>>406
以下2点の対応による高速化
・ループ内で固定のポインタは必ずループの最初に保持するように変更
・多次元配列の実現方法として、ポインタのポインタをやめ、1次元配列でメモリ確保するように変更
ttp://codepad.org/h7frFJ2g

画像サイズは手元に合わせちゃったので注意
手元(cygwin gcc4.8.2)では25%位高速化した
423デフォルトの名無しさん:2014/06/10(火) 22:49:16.28 ID:nQmGr7gQ
>>417
いえいえ、わかりました
整数にしてしまうと、double型からint型に変わってしまって結果画像もかなり変わってきてしまうんです。
なので、*(1.0/3.0)にしてみたんですが、これでも少し変わってしまうんですよね...


>>418
ありがとうございます
読み方がよく分からないのでちゃんと書き換えられるか心配ですが...

画像なんですが、ppmファイルなので上手くアップ出来ないですすいません...
dropboxのリンクも貼れないですし何か方法ありますかね
424デフォルトの名無しさん:2014/06/10(火) 23:00:13.67 ID:CF7cNgR4
>>423
とりあえずPNGにしてアップしてみよう。
変換はこっちでやる前提で。
425デフォルトの名無しさん:2014/06/10(火) 23:25:39.83 ID:JSaVvobs
>>419
Windows cmdで開かせるように出来ないか。
論理演算子使用して。
どうも、ループと-1もしくはctrl D入れて終了が出来んのだ。
if (0 && 23)

else if (a<0 && 3>a)
的な
426デフォルトの名無しさん:2014/06/11(水) 00:33:08.82 ID:Lpj6uie1
そんなへんてこなグレースケールでいいのかい
427デフォルトの名無しさん:2014/06/11(水) 02:36:34.93 ID:eXkj4KPK
>>420
ありがとうございます
申し訳ないんですがポインタラッチを知らないので全然わからないです。
呼び出した値によって判定して置き換える?感じでしょうか
把握できなくてすいません

画像のサイズは元画像のまま固定で大丈夫です

>>422
変更点のわかりやすい記述ありがとうございます
ポインタを使ったほうが処理が早い認識でしたが、1次元配列だとなぜ早くなるのでしょうか
まだこちらで実行確認が出来ていないのがすごく申し訳ないです

>>418>>421>>423
遅くなってすみません
これが元画像です
http://imgur.com/xn0p92M

これを元のプログラムで処理するとこうなります
http://imgur.com/zgkYExK
428デフォルトの名無しさん:2014/06/11(水) 02:39:37.52 ID:eXkj4KPK
ごめんなさいこの方がいいですね

元画像
http://imgur.com/xn0p92M.png

処理後
http://imgur.com/zgkYExK.png
429デフォルトの名無しさん:2014/06/11(水) 07:15:26.20 ID:BC77khn/
[1] 授業単元:配列
[2] 問題文:文字列txtを"abcdefg"、
文字列ptnを"ef"で初期化し、力任せ法を用いてtxt内でptnが最初に出現する位置を求め、
途中経過、最初に出現する位置(txtの添え字)、比較回数を以下のように出力せよ。
(※txtとptnの値が変わっても正常動作するようにし、ptnが出現しない場合はそのことを出力せよ。)
[3]
 [3.2]linux
 [3.1] gcc
 [3.3] C言語
[4] 期限:14/6/12
[5] その他の制限:ポインタはまだ習っとりません。
先日for、whileによる繰り返し処理を習いました。
430デフォルトの名無しさん:2014/06/11(水) 07:23:51.87 ID:BC77khn/
連投すいません。よろしく願いします

出力例:
txt:abcdefg
ptn:ef

1回目の比較
abcdefg
e
失敗
2回目の比較
abcdefg
e
失敗
(省略)
N回目の比較
abcdefg
e
成功
N+1回目の比較
abcdefg
ef
成功
-----結果-----
添字: 4
比較回数: N+1回
431デフォルトの名無しさん:2014/06/11(水) 08:40:53.74 ID:gc0u05WB
>>423
417だけど417の変更では出力は変わらなかった。一応
432デフォルトの名無しさん:2014/06/11(水) 08:55:13.52 ID:mGD11vxw
>>429
入力がただのリターンだった時は出現しない?
433デフォルトの名無しさん:2014/06/11(水) 09:35:04.79 ID:mGD11vxw
> N回目の比較
> abcdefg
> e
> 成功
成功になってるのに途中経過がeなのはこれでいいのか

txt:1234
ptn:23
の時の全出力例も載せて
434418:2014/06/11(水) 10:36:37.89 ID:oyooQxgj
>>428
画像の提供ありがとう。>>418の修正で結果画像が同じになるのを確認しました。しかし、重い。クソースでサーセン。

>>422
x86_64版gcc 4.4.7とかだと最適化オプションなしでも、
UCHAR (*tmpgyou)[][DIM3]の領域はスタックコピーが発生せず、
&(*data)[g]のアドレスの先頭アドレスのみをスタックに入れるコードになるみたいですね。
不思議。おしえてgccに詳しい人。

最適化オプションつけた場合、make_grayはほぼ同じになりますが、
上記の影響なのか、他2つの関数はfor文がまとめられ(jump命令が減る)、
パイプラインフラッシュの回数現象で相当速くなりますね。
435デフォルトの名無しさん:2014/06/11(水) 12:37:51.24 ID:XYJSlMo0
>>427
420=422です 勝手なオレオレ用語使ってしまってごめんなさい
ポインタラッチ=ポインタをラッチ(保持)する=>>422の変更点1つ目 です(ラッチというとハードウェアの言葉だからソフトでは使わないかも)

1次元配列のほうが速いのは、時間を測った結果そっちのほうが速かったから
・・・というのは半分冗談半分ホントだけども

ポインタのポインタだと、一つ目のポインタの中身を知るためにメモリアクセスし、その値が指す先に再度メモリアクセスして値を取得する
(インデックス計算→メモリアクセス→インデックス計算→メモリアクセス)

1次元配列だと、インデックスの計算を複数回やった後に1度だけメモリアクセスする
(インデックス計算→インデックス計算→メモリアクセス)

この違いが後者のほうが速かったということ
基本的にはパイプライン処理してるプロセッサだとメモリアクセスはストールの原因になるので少ないほうが速い
(x86ってCISC?だけどパイプライン処理してる?よね?あまり詳しくないです)

実際にはほかの要因もいろいろあるはずで、処理時間は最終的には計測してみるのが確実

>>434
UCHAR (*tmpgyou)[][DIM3]は宣言がややこしいですが、配列を指すただのポインタ変数です
なので配列分の領域を持っているわけではないです
先頭アドレスを保持するためのポインタ変数として使ってるので意図通りですね
436デフォルトの名無しさん:2014/06/11(水) 12:41:13.61 ID:QAZZuHs2
>>427
>ポインタを使ったほうが処理が早い認識でしたが、
>1次元配列だとなぜ早くなるのでしょうか

arr[i][j]で、1次元の要素数をA、
1ポインタのバイト数をBとして、アドレスを求めると、
(i * A + j) * B
この、i * A の掛算が余分なのかな?

ポインタは、p++ インクリメントで、Bバイトずつ進むが、
この時は掛算ではなく、Bずつ加算するので、
シーケンシャルアクセスした方が、キャッシュ乗りもよく速そう
437デフォルトの名無しさん:2014/06/11(水) 13:19:49.82 ID:gc0u05WB
>>436
最適化すればその掛け算は隠蔽されると思う
一次元配列にする方法の場合、踏み台の配列分のメモリアクセスが減るので
メモリアクセスのコストだけ早くなるんだろうね
cache hit してもそれなりのレイテンシはあるし。
ただ元のコードの柔軟性(callee側はサイズ依存しない)が
無くなるので、微妙な気もする
438デフォルトの名無しさん:2014/06/11(水) 13:37:07.36 ID:IQSYsiwa
>>433
2重ループ内のprintfデバッグメッセージで
内と外の語彙が同一ってだけかと
成功
大成功
とかすりゃ分かりやすいかもねw
439436:2014/06/11(水) 14:48:31.92 ID:QAZZuHs2
>>437
for(〜i++){
for(〜j++){
arr[i][j]
}}

こういう2重ループの場合、(i * A + j) * B の、
i * A の部分は、掛算が必要なのでは?
iが、0,1,2〜と変わるから
440デフォルトの名無しさん:2014/06/11(水) 15:10:11.51 ID:CtrbFu71
>>439
コンパイラによっては(gccなど)、アセンブラ用ソース出力可だから、最適化オプションを変えて出して見ればいい。
441デフォルトの名無しさん:2014/06/11(水) 15:12:18.16 ID:mGD11vxw
>>438
どこで2重使うのかわからないがなんとなくわかったありがと
442デフォルトの名無しさん:2014/06/11(水) 15:31:55.21 ID:IQSYsiwa
>>441
機能的にはstrstrの劣化版でしょ
http://www.opensource.apple.com/source/xnu/xnu-792.13.8/libsa/strstr.c
を改悪したものだと思えばいい
443429:2014/06/11(水) 16:27:13.24 ID:BC77khn/
>>432-433
コピペしたんですがスペースがうまくコピー出来てませんでした
正しい表示例は、
最終的にabcdefのefの真下にefが表示される、と言ったかんじで、失敗したらptnの文字列が1文字分ずつずれるようにしたいです。
444デフォルトの名無しさん:2014/06/11(水) 16:44:15.61 ID:BC77khn/
445デフォルトの名無しさん:2014/06/11(水) 16:46:59.02 ID:XYJSlMo0
446デフォルトの名無しさん:2014/06/11(水) 16:51:59.87 ID:mGD11vxw
>>442
str系の仕様を認められてるのかわからないから使わずに1重でやってたわ
結果ありきだから速度とかは度外視
447429:2014/06/11(水) 17:24:34.58 ID:BC77khn/
>>445
ありがとうございます
448デフォルトの名無しさん:2014/06/12(木) 05:33:24.07 ID:Abgsr/RV
449デフォルトの名無しさん:2014/06/12(木) 13:06:28.39 ID:u0MLAqu6
450デフォルトの名無しさん:2014/06/12(木) 16:02:13.86 ID:6KI3I0Lz
>>435>>436
説明ありがとうございます
よくわかりました

昨日ぎっくり腰になったりして色々もたつきましたが、>>422の変更で問題なく出力されましたし、間に合いました
ちょっと整数演算に直しても上手く行ったので、最初に直した時は私の不手際があったのだと思います

最終的に最初の1/5以上高速化出来ました
本当にありがとうございました!
4511/2:2014/06/12(木) 17:45:43.36 ID:25HL/Rbg
入力したのが、素数かどうか判定するプログラム。

自分で考えた。
#include <stdio.h>
int main(void)
{
int a,b,c=0;
scanf("%d",&a);
for(b=1;b<=a;b++)
{
if(a%b==0)c++;
}
if(c==2)printf("素数です\n");
else printf("素数ではありません\n");
return 0;
}

解答。
#include <stdio.h>
int main(void)
{
int a,b,c=1;
scanf("%d", &b);
for(a=2; a<=b/2; a++)
if((b%a)==0) c = 0;
if(c==1) printf("素数です");
else printf("素数ではありません");
return 0;
}
4522/2:2014/06/12(木) 17:46:17.06 ID:25HL/Rbg
自分で考えたのは、整数を入力して、1からその数まで1ずつ増やし、割り切れたらcに1を足す。
for文から抜けて、cが2なら、1とその数でのみで割り切れるということなので素数。
1はc=1になるので含まれない。

って作ったのですが、解答の場合でも代入していって考えました。
代入していってだいたい分かりましたが、考え方は、公約数で1の次に大きな数が2で、
1と入力した数以外に約数がある場合、1番小さい数が2。だから、入力した数の半分まで
ループさせれば、足りる、みたいな感じでしょうか。

解答のほうがforループの回数が半分なので、これが莫大な量になったとき
処理は早くなると思います。やはり、自分の考えでプログラムを書いて正しい答えを出すより、
分かりづらかったり考える必要があっても、最小限の手数で
正しい答えが出せるプログラムも理解していくべきでしょうか?

仕事などをされてる方は、このようにパッと見で少し理解が難しくても、
少しでも速くなるプログラムを書いてる方は多いですか?
453デフォルトの名無しさん:2014/06/12(木) 18:34:50.13 ID:P9Wf1hbp
素数を知らない人(小学生とか)向けなら前者もいいけど
素数の計算で探索空間を半分にするのは常識というか
ほぼ100%そうするコードしかないから、深く考えるようなことじゃない
454デフォルトの名無しさん:2014/06/12(木) 20:09:35.46 ID:TIE2YHiq
>>452
ゲーム作ることを考える。
たまにゲームでなんでこんな簡素な描画なのにこんなにくそ重たいねん。っていうゲームがあると思う。
そういうストレスを削減する意味でも計算オーダーを下げるのは重要。
そのうえで読めるコードを書くのも技術ですよ。
それと、逆算も技術。
455デフォルトの名無しさん:2014/06/12(木) 20:23:38.21 ID:25HL/Rbg
>>453,454
なるほどですね。
ありがとうございました。
456デフォルトの名無しさん:2014/06/13(金) 10:04:52.54 ID:eljxZ1z3
[1] 授業単元:グラフ理論
[2] 問題文(含コード&リンク): http://codepad.org/zOQeEjA6
完全列挙法を用いてTSPを解くプログラムを作成しなさい

グラフの点を全て通って始点に帰ってくる経路の内、距離が最短なものを完全列挙法で導くプログラムです。
このプログラム内では点を都市としています

途中まで作った物がリンクのコードですが、最短の距離を算出するところが上手くかけません

そして順列の書き方がわからなかったのでコピペしたのですが、どう動いているのかがよくわかりません

また、こういう書き方の方が良いというのがありましたら教えていただきたいです

よろしくお願いします
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 2014年6月16日17:00まで
[5] その他の制限:
457デフォルトの名無しさん:2014/06/13(金) 16:22:01.41 ID:M4x6Kn4S
>>456
ttp://codepad.org/Yu5KMoPW
とりあえず計算できるようにはなってると思います

set関数の引数i(編集後pos_cnt)は、i番目に通る都市を決める関数です。
その中で通る都市を仮定して、次のi+1番目の都市を決めるために再度setを呼び出しています。(元34行目)
その際に、通る都市番号をposに保持し(元29行目)、通ったことを示すflagを1にしてます。(元33行目)
通る都市を決める際に、flagが1になっている都市を避けることで、同じ都市に何度も行かないようにしています。(元28行目)
iが都市数まで増えると全都市を回ったことになるので、結果をprintで出力してその経路は終わり。(元31行目)

編集後のコードでは、set関数に引数distを追加して、経路をたどっている際にその距離も一緒に計測するようにしました。
全都市を回った際に、これまでの最大距離よりも大きければ保持するようにしてます。

書き方のアドバイスとして
自分の書いたコードが半年後もすぐ意味が分かるように読みやすいようにしたほうがいいですよ
最低限以下に気を付けるくらいですね
・インデントをつけましょう
・変数名は意味のある単語もしくはその省略形にしましょう(1〜2文字で許されるのはループ用の変数iとかjぐらいと思ったほうがいい)
・意味が分かりにくい箇所には適宜コメントを入れましょう
458デフォルトの名無しさん:2014/06/13(金) 18:40:15.90 ID:/N84HNYW
[1] 授業単元:プログラミン演習
[2] 問題文(含コード&リンク):
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
問題文が長いので上記URLに投稿します
投稿者名は#458です
[3] 環境
 [3.1] OS: Windows8
 [3.2] コンパイラ名とバージョン: Visual Stdio 2010
 [3.3] 言語: C
[4] 期限: 2014/06/18
[5] その他の制限:

自分でも考えてみましたがわかりません。
よろしくお願いします。
459デフォルトの名無しさん:2014/06/13(金) 22:25:12.70 ID:M4x6Kn4S
>>458
ttp://codepad.org/AYNHHZ3P

アルゴリズムはほぼ参考ページの丸写しです
参考ページ:ttp://fussy.web.fc2.com/algo/algo3-2.htm
460デフォルトの名無しさん:2014/06/13(金) 22:35:52.71 ID:M4x6Kn4S
しまった仕様1が未達ですね
すみませんが上記は破棄で
461デフォルトの名無しさん:2014/06/13(金) 22:37:06.35 ID:mWNJp1eR
>>458
ルックアップテーブルというのを使ってみた。
http://codepad.org/qbkPBAE5
462デフォルトの名無しさん:2014/06/13(金) 22:43:41.47 ID:mWNJp1eR
>>460 もったいない。
type __array[] = {...}
type *array = __arrayで目をつむろうぜ。
463459:2014/06/13(金) 23:07:16.98 ID:M4x6Kn4S
>>458
ttp://codepad.org/BXC0miZY
無理やりポインタを使うようにしてみた(imageにはかならずpoint経由でアクセス)

>>462
似たような感じで変えてみましたw
464 ◆E39m/9K3xY :2014/06/14(土) 08:41:42.15 ID:MYxhMzGN
>>461
>>463
回答ありがとうございます
465デフォルトの名無しさん:2014/06/14(土) 11:29:20.51 ID:hFdfnZbt
>>458
思いつくまま書いてもなんとかなった
ポインタを使えってところが微妙に難しいところか

http://codepad.org/Ky7wUZqB
466デフォルトの名無しさん:2014/06/14(土) 13:11:25.49 ID:IGGRlfrQ
>>458
ttp://codepad.org/iMJsA8Iz
がんぱって削ってみた
467 ◆E39m/9K3xY :2014/06/14(土) 18:00:04.42 ID:MYxhMzGN
>>465-466
回答ありがとうございます
解決できました
468デフォルトの名無しさん:2014/06/17(火) 20:25:40.64 ID:waqSsQEe
[1] 授業単元:画層処理演習
[2] 問題文(含コード&amp;リンク):
長いのでこちらにまとめました。
http://codepad.org/WZx26C7D

[3] 環境
 [3.1] OS:Windows7
 [3.2] Visual Stdio 2010
 [3.3] 言語:C++
[4] 期限: ([2014年6月18日12時00まで])
[5] その他の制限:
自分でギリギリまで考えましたが分かりませんでした。
よろしくお願いします。
469デフォルトの名無しさん:2014/06/17(火) 21:51:23.95 ID:uAYqPugm
>>468
何が分からなかったの?
470デフォルトの名無しさん:2014/06/17(火) 22:58:58.00 ID:waqSsQEe
>>469
一度最後まで作ったのですが
この課題を出した人にこれでは間違っていると言われてしまいました。
とりあえずソース上げます
471デフォルトの名無しさん:2014/06/17(火) 23:16:06.68 ID:waqSsQEe
>>469
http://codepad.org/kSfZ5tUZ
↑これが自分で作ったソースです。
上から課題1.2.3.4になります。
配布された資料とにらめっこしながら作ったのですが
理解が及ばず詰まっているのが現状です。
最終的には処理を全てまとめたいと思っているのですが・・・
472デフォルトの名無しさん:2014/06/17(火) 23:22:24.15 ID:JQ3yohPe
まずインデントを何とかしろや。
バグがあっても自力で見つけられんぞ。
473デフォルトの名無しさん:2014/06/17(火) 23:25:36.53 ID:JQ3yohPe
例えば1番、9箇所全部の濃度値が8でも、8/9は0だから、9回足しても0になるぞ。
474 ◆rVDRt1VsVI :2014/06/17(火) 23:33:44.49 ID:waqSsQEe
>>472
イン、デント?
>>473
成程
0にななった場合1にすれば良いのでしょうか
475デフォルトの名無しさん:2014/06/17(火) 23:41:51.72 ID:JQ3yohPe
ググれ「インデント」

> 0にななった場合1にすれば良いのでしょうか
だめ。8/9 がちゃんと 0.8888... になるようにする。

3と4は見た目問題なさそうに見える。何か不具合あるの?
476デフォルトの名無しさん:2014/06/17(火) 23:55:46.98 ID:waqSsQEe
ググりました。
上手く割る為にはどうすれば良いのでしょう。

プログラムを提出する時に画像を見せるのですが
これではダメだと言われたんです。
一応画像を貼ります。
上から1.2.3.4
http://www.dotup.org/uploda/www.dotup.org5132663.png
http://www.dotup.org/uploda/www.dotup.org5132664.png
http://www.dotup.org/uploda/www.dotup.org5132667.png
http://www.dotup.org/uploda/www.dotup.org5132669.png
477デフォルトの名無しさん:2014/06/18(水) 00:10:22.85 ID:a3+GeDDB
1と2は割り算問題の影響が出てる感じ。
int/int は int になってしまうから、
double/int か int/double の形にすればいい。

3と4はバブルソートがだめだな。
jの初期値がj=i+jって何だよ。
478デフォルトの名無しさん:2014/06/18(水) 00:11:18.99 ID:FyKrT/+C
・なにはともあれ原画像(入力する画像)を貼りなさい
・「これではダメ」←「メディアンフィルタがかかってないのが一目瞭然だから」だろうね
・ぱっと見だが:3,4,でソートしてるとこの for(j=i+j; はすごく変
479デフォルトの名無しさん:2014/06/18(水) 00:12:31.18 ID:FyKrT/+C
カブったw
480デフォルトの名無しさん:2014/06/18(水) 00:16:40.15 ID:dQXq5s2V
>>477
>>478
すいません。
図々しいとは思うのですが解決方法を教えてくれませんか?
かれこれ一週間試行錯誤してたのですが期限に達してしまいました・・・
481デフォルトの名無しさん:2014/06/18(水) 00:17:38.88 ID:AXoUiaON
#include <stdio.h>
#include <string.h>

void display1(int a);
void display2(struct syouhin_data syouhin);

struct syouhin_data{
char name[20];
int tanka;
};

int main(void){
int a = 10;
struct syouhin_data syouhin = {"消しゴム",50};
display1(a);
display2(syouhin);
return 0;
}
void display1(int a){
printf("%d\n",a);
return;
}

void display2(struct syouhin_data syouhin)
{
printf("%s %d\n",syouhin.name, syouhin.tanka);
return;
}


教科書通りに打って関数display2がエラーになるのです
482デフォルトの名無しさん:2014/06/18(水) 00:27:58.71 ID:FyKrT/+C
>>481
惜しいな。
void display2(struct syouhin_data syouhin);
(は、struct syouhin_data を使っているから)
その構造体の宣言よりも下の行に持っていけば動くよ。

>>480
スマン俺は寝る。
たぶん for(j=i; だと思うが未確認だし責任は取れん。
他の間違いは探してないし。悪しからず。
483デフォルトの名無しさん:2014/06/18(水) 00:31:44.82 ID:dQXq5s2V
>>482
ありがとうございますありがとうございます。
もう12時間を切ってしまったあ
484デフォルトの名無しさん:2014/06/18(水) 00:34:53.37 ID:AXoUiaON
動きました。ありがとう御座います。
動かなかった理由も理解出来ました。

教科書が間違っていました。クレーム入れます。
485デフォルトの名無しさん:2014/06/18(水) 00:45:13.06 ID:a3+GeDDB
>>484
> 動かなかった理由も理解出来ました。

動かないのと、コンパイルできないのとは、区別した方がいいぞ。
486デフォルトの名無しさん:2014/06/18(水) 00:46:40.10 ID:mKlf65Kz
間違い探しさせる目的とかじゃないの
何て教科書の何ページ
487デフォルトの名無しさん:2014/06/18(水) 00:47:07.21 ID:dQXq5s2V
>>485
やはり上手く割り算できないです
488デフォルトの名無しさん:2014/06/18(水) 00:54:18.03 ID:a3+GeDDB
>>487
方法1: 9で割るんじゃなく9.0で割る
方法2: (double)をin_imageの前に付ける
方法3: 全部足してから9で割る
489デフォルトの名無しさん:2014/06/18(水) 01:04:15.09 ID:dQXq5s2V
>>488
上手くできました!
これで1はもう大丈夫でしょうか
490デフォルトの名無しさん:2014/06/18(水) 01:17:51.17 ID:dQXq5s2V
>>488
凄い今更なのですけど
自分の作ったプログラムは簡単に言うとどういった動作をしてるのでしょう
491デフォルトの名無しさん:2014/06/18(水) 01:30:35.94 ID:a3+GeDDB
>>490
……ォィォィ……
自分のわかる範囲を説明してみな
俺は寝るけど
492デフォルトの名無しさん:2014/06/18(水) 01:31:39.06 ID:d0o5Ribt
>>490 インデントは4タブのようなので。
tp://codepad.org/4elO5klx
tp://www1.cts.ne.jp/~clab/hsample/Sort/Sort1.html
493デフォルトの名無しさん:2014/06/18(水) 01:42:41.71 ID:dQXq5s2V
>>491
ゴメンなさい。
C言語苦手なんです・・・
とりあえず計算しているんだろうな・・・としか
494デフォルトの名無しさん:2014/06/18(水) 02:36:44.35 ID:dQXq5s2V
ダメだぁ
どんな処理が行われているのかわからない
誰か助けてください
495デフォルトの名無しさん:2014/06/18(水) 02:54:24.76 ID:8AGe2LGW
どこぞの馬鹿が書いた教科書よりK&R読んだ方がいいだろ
496デフォルトの名無しさん:2014/06/18(水) 06:37:26.20 ID:9i8t8Hfq
>>492で問題ない。
1. 元画像(x, y)を中心にした9x9の複数画素の平均値を新規画像の(x, y)に設定。
3. 元画像(x, y)を中心にした9x9の複数画素の中央値(hairetu[4])を新規画像の(x, y)に設定。
その際、元画像の複数画素をコピーしたhairetuにソートを実行。
2, 4についても同様。

処理の共通化と簡易化、コーディングの作法とかも教育現場で担当して欲しいね。
bitmapも画像処理の教材としては疑問。
497デフォルトの名無しさん:2014/06/18(水) 11:17:27.12 ID:9qLbuGjN
>>493
教師に言いなよそれ。
何も理解できてないのに課題だけ通っても意味がない
498デフォルトの名無しさん:2014/06/18(水) 12:10:04.78 ID:LGYjzaR6
>>496
オートマトンか?
Life Game、シムシティにも似ているような
499デフォルトの名無しさん:2014/06/18(水) 23:10:52.83 ID:Ls9SsycK
500デフォルトの名無しさん:2014/06/19(木) 00:51:22.83 ID:bX6gAL+1
>>498
メディアンフィルタって画像処理で使われてるフィルタが有りまして。
501デフォルトの名無しさん:2014/06/19(木) 07:38:56.43 ID:wVtUqKS0
[1] 授業単元:プログラミング序論I
[2] 問題文(含コード&リンク):
1. 1から10までの階乗の値を計算して出力するプログラミングを作ってみなさい。
2, ∫[0→2]x^3dxを計算するプログラミングを作ってみなさい。
3.. 不定積分∫f(x)dxを求めるプログラミングを作ってみなさい。
4. ∫[0→1]f(x)dxを求めるプログラミングを作ってみなさい。
5. 与えられた2x2正方行列の固有値を計算するプログラミングを作ってみなさい。
6. 与えられた3x3正方行列の固有値を計算するプログラミングを作って見なさい。
  さらに、正方行列の係数がいくつでもようようにするためにはどうしたらいいか?

f(x)は整式です。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2014年06月20日10:30まで

よろしくお願いします。。。
502デフォルトの名無しさん:2014/06/19(木) 08:41:47.19 ID:TPlHeEcS
1だけ妙に簡単だな
あと「プログラミングを作る」などという変な言い回しは普通なの?
503デフォルトの名無しさん:2014/06/19(木) 09:06:19.02 ID:T3v2xG5Y
本題以外に着目するあすぺは消えろ
504デフォルトの名無しさん:2014/06/19(木) 13:36:52.62 ID:u/NoNxMT
本題以外で妙な勘違いが発覚することもあるから一概には…
505デフォルトの名無しさん:2014/06/19(木) 13:55:54.90 ID:T3v2xG5Y
>>502の指摘で発覚する事は無いな
506デフォルトの名無しさん:2014/06/19(木) 14:01:10.22 ID:Di0jt70X
>>505
でもこれで、問題文を正確に写したのかという疑問が得られた
507デフォルトの名無しさん:2014/06/19(木) 14:48:47.19 ID:8jNSzAvz
ボクは書かれているとおりに正確に入力できないので
コピペですぐ動くように一文字も間違いなく正確に書いてください
おながいします
508デフォルトの名無しさん:2014/06/19(木) 18:38:09.37 ID:nGqFEu9y
>>503
侮蔑の為に病名を使うのはアッチ系脳。
509デフォルトの名無しさん:2014/06/19(木) 18:50:49.30 ID:BRW9+QBS
>>501
固有値固有ベクトルは永遠の課題だと思う‥
510デフォルトの名無しさん:2014/06/19(木) 23:54:47.53 ID:NPcUWdPP
で、「プログラミングを作ってみなさい」ってどこ学校だよ
511デフォルトの名無しさん:2014/06/20(金) 04:50:17.43 ID:4RPq8AiU
【質問テンプレ】
[1] 授業単元:画像処理
[2] 問題文:
http://codepad.org/NGyKGC2c
 [3.1] OS:Windows7
 [3.2] Visual Stdio 2010
 [3.3] 言語:C++
[4] 期限: ([2014年6月17日00時00まで])
[5] その他の制限: bmpファイルを用いる予定です。
          よろしくお願いします。
512デフォルトの名無しさん:2014/06/20(金) 07:24:04.04 ID:kSpxa/vA
また君か壊れるなあ
授業でアルゴリズムの説明あったんだろ?
それ書かないと分からんよ
513デフォルトの名無しさん:2014/06/20(金) 07:30:43.80 ID:4RPq8AiU
>>512
原理は習ったのですがそれをプログラムで組めません・・・
514デフォルトの名無しさん:2014/06/20(金) 07:34:04.18 ID:4RPq8AiU
>>512
配布された資料はこれなのですが
正直何を言っているのかわかりません。
http://www.dotup.org/uploda/www.dotup.org5137649.jpg
http://www.dotup.org/uploda/www.dotup.org5137650.jpg
515デフォルトの名無しさん:2014/06/20(金) 07:46:47.48 ID:xom+JU/q
正直お前はその講義とるの諦めた方が良い
516デフォルトの名無しさん:2014/06/20(金) 07:50:40.57 ID:kSpxa/vA
>>514
基本的には、前の課題と同様のプログラムでいいのでは?
各ドットに対し、for(i=-1; i<=1; i++) for(j=-1; j<=1; j++) の
二重ループでフィルタを適用すればいい
時間ないのでとりあえず。
517デフォルトの名無しさん:2014/06/20(金) 08:07:00.48 ID:eK7ekkfG
こんなスレが167まで続いてるのか
518デフォルトの名無しさん:2014/06/20(金) 08:20:21.70 ID:4RPq8AiU
>>515
頑張ってC言語覚えたいです。
>>516
前のプログラムを少しずつ改造すればいいのですか
519デフォルトの名無しさん:2014/06/20(金) 08:33:29.16 ID:xom+JU/q
>>518
C言語の問題じゃねえ画像処理の基礎の問題
520デフォルトの名無しさん:2014/06/20(金) 09:44:23.40 ID:eK7ekkfG
覚えたい奴は人に課題放り投げない
521デフォルトの名無しさん:2014/06/20(金) 11:48:42.00 ID:XgEVX42F
[1] 授業単元:数値計算法
[2] 問題文(含コード&amp;リンク):
与えられた零以上の実数(a,b,c,d)と正の実数(e,f)に対して
つぎのロンバーグ表と積分値を求めるプログラムを作成せよ
(分割数:n=2^k≧16,推定回数:m≧3)

I=∫ 1/(a*x^3+b*x^2+c*x+d)dx (e≦x≦f)

ただし、キーボードから(a,b,c,d,e,f)を入力すれば
上記の定積分のロンバーグ表の値と積分値が画面表示
されるようなプログラムを作ること。
[3] 環境
 [3.1] OS:win8
[4] 期限: 無期限
  過去スレにも同じ問題が挙がっていたみたいですが、解答が消えていたのでどなたかお願いします。
522デフォルトの名無しさん:2014/06/20(金) 16:48:42.20 ID:KiSHxBDS
>>521
推定回数ってのがよくわからん
nもkもmも問題文中に出てきてないから問題転記してない部分があるんじゃないか

ttp://codepad.org/nZeQHLoV
523デフォルトの名無しさん:2014/06/21(土) 22:50:55.31 ID:0zVEVEqa
基本的に「○○言語を覚えたい」って言う奴は(プログラミングに)向いてない。
524デフォルトの名無しさん:2014/06/22(日) 00:03:07.93 ID:dnAV7ml7
>>523
急にどうした?ダイジョブか?
525デフォルトの名無しさん:2014/06/22(日) 01:11:44.02 ID:QvJqsMa7
いや、>>523は自己紹介してるだけだから気にせず、次の方どうぞ
526デフォルトの名無しさん:2014/06/22(日) 13:35:33.05 ID:xdfzAQll
[1] 授業単元: プログラミングT
[2] 問題文(含コード&リンク): テキストファイルの読みこみ、行頭文字が小文字の場合
http://pastebin.com/RKHNpMwy
大文字に置き換え、変換してファイル出力
[3] 環境: Xcode 5.1.1
 [3.1] OS: OSX 10.9
 [3.2] コンパイラ名とバージョン: gcc49
 [3.3] 言語: C++
[4] 期限: 無期限
[5] その他の制限:
よろしくお願いします。
527デフォルトの名無しさん:2014/06/22(日) 14:29:26.31 ID:LcnID58r
>>526
今読んだ文字が行末かどうかは判断のしかたわかる?
528デフォルトの名無しさん:2014/06/22(日) 14:33:51.96 ID:xdfzAQll
>>527
改行文字である\nになったらとかそんな感じでしょうか
529デフォルトの名無しさん:2014/06/22(日) 14:35:38.95 ID:XJXpenaP
gets使っちゃえ
530デフォルトの名無しさん:2014/06/22(日) 15:18:59.75 ID:R6m2qV6z
>>511
0以下なら0
255以上なら255ってすればおk?
531デフォルトの名無しさん:2014/06/22(日) 15:40:08.57 ID:LcnID58r
>>528
うん。その次の文字が行頭だ。
532デフォルトの名無しさん:2014/06/22(日) 20:31:35.77 ID:2aKTDaZk
ゲッツはdeprecatedになったんじゃなかった?
533デフォルトの名無しさん:2014/06/22(日) 21:25:57.66 ID:xdfzAQll
>>531
while(文字全部読み取るまで) {
if(c==\n) {
行頭をなんかに格納
}
}
各行頭文字を変数として取得するのはこんなんでしょうか。
534デフォルトの名無しさん:2014/06/22(日) 22:07:51.20 ID:l/vaCLkN
>>533
while(文字全部読み取るまで) {
if(c==\n) {
行頭をなんかに格納
この時点で行頭は読み込まれていない
}
}
535デフォルトの名無しさん:2014/06/22(日) 22:16:55.65 ID:xdfzAQll
2次元配列化して最初の文字を[0][0]として格納
それを大文字/小文字という処理というのは無理でしょうか
536デフォルトの名無しさん:2014/06/22(日) 22:34:12.27 ID:l/vaCLkN
[行数][文字数]って事ならできるけど
最大行数、最大文字数を指定するかしないかでまた変わってくる
537デフォルトの名無しさん:2014/06/22(日) 22:53:05.24 ID:LRekzGzB
>>535
簡単に出来るよ。
ただ、この要件でキャッシュする必要ないから
無理ではないけど無意味。

元ソースを尊重しベッタベタに書くとこんな感じ
int flg=1;
while( (c = fgetc( fp )) != EOF ){
if(flg) {
if(c>='a' && c<='z') {
printf("%c", c+'A'-'a');
} else {
printf("%c", c);
}
flg = 0;
} else {
printf("%c", c);
if(c=='\n') {
flg=1;
}
}
}

toupperを使えばすっきりするしgets系なら概ね速くなる

sed 's/^\(.\)/\U\1/'
538デフォルトの名無しさん:2014/06/22(日) 22:56:38.63 ID:LRekzGzB
>>536
可変でいいじゃん
> [行数][文字数]って事ならできるけど
文字数、つまり可変長となり得る文字数の対策が出来てるなら
最大行数、最大文字数なんてちょろいでしょ
539デフォルトの名無しさん:2014/06/22(日) 23:05:51.49 ID:XJXpenaP
>>535
問題文には「一旦どっかに保管しろ」って条件はないようだけどね。
来た順に出して行って、変換の対象になる奴をいじれば良かんべえ。
http://ideone.com/KtDgz5
540デフォルトの名無しさん:2014/06/22(日) 23:05:59.59 ID:l/vaCLkN
>>538
[0][0]としか無かったから想像で書いただけだよ
動的確保が出来るのなら可変でいいし、出来ないのなら最大を決めないといけない
出来るかどうか現時点でわからないからな

勝手に出来ると決め付けて可変で答えても出来なかったら無駄だしな
541デフォルトの名無しさん:2014/06/23(月) 00:04:33.76 ID:apnOLU2t
>>539
細かいコメントありがとうございます。言葉としては
whileでEOFにならない間は
行頭に来たらc(行頭文字)が小文字か判断
大文字に変換、行末に来たら次の行の読み取りを開始
処理をし続けて、という解釈で大丈夫でしょうか。
それと最後にファイル出力なのですが

fp = fopen("output.txt", "w");
fprintf(fp,"%c" ,c);
printf("text export to output.txt\n");
printf("---\n");
fclose(fp);
printf("file close\n");
return 0;

と書くとoutput.txtの中身が[...]となってしまいます。この場合fprintfがおかしいのでしょうか
542デフォルトの名無しさん:2014/06/23(月) 00:18:38.22 ID:apnOLU2t
追記: newLineComesからtoupperのところは
islower(c)で一文字目を判定、toupper(c)が通ったら
すぐnewLineComes=false;で頭文字だけ処理を終わらせて
次のnewLineを読み取っているということで大丈夫でしょうか
543 ◆0qAv26otVI :2014/06/23(月) 02:09:05.13 ID:KutcWFSB
>>514
// 先鋭化フィルタ
for(y=1;y<YSIZE-1;y++)
for(x=1;x<XSIZE-1;x++)
  if(x<2 || x>253 || y<2 || y>253)
    out_image[y][x]=in_image[y][x];
  else{
    wa = in_image[y][x] * 5;
    wa-= in_image[y][x-1] + in_image[y][x+1] + in_image[y-1][x] + in_image[y+1][x];
    out_image[y][x] = wa;
  }
// ラプラシアンフィルタ
for(y=1;y<YSIZE-1;y++)
for(x=1;x<XSIZE-1;x++)
  if(x<2 || x>253 || y<2 || y>253)
    out_image[y][x]=in_image[y][x];
  else{
    wa = in_image[y][x-1] + in_image[y][x+1] + in_image[y-1][x] + in_image[y+1][x];
    wa-= in_image[y][x] * 4;
    out_image[y][x] = wa;
  }
544 ◆QZaw55cn4c :2014/06/23(月) 02:16:11.58 ID:0A44UZin
>>543
それは擬似コードか?
bmp を与えると動作するように記述してくれ
545デフォルトの名無しさん:2014/06/23(月) 02:27:51.35 ID:vG/6kdE8
>>544
x>253とかXSIZE何処行ったみたいなツッコミならまだしも、
出題文読まずに他人の回答にケチつけてるのか君は…
546デフォルトの名無しさん:2014/06/23(月) 03:05:00.43 ID:0A44UZin
>>545
>>511
>bmpファイルを用いる予定です。
547デフォルトの名無しさん:2014/06/23(月) 03:42:09.94 ID:vG/6kdE8
>>546
URL
548デフォルトの名無しさん:2014/06/23(月) 12:34:10.90 ID:HIGf9m9i
>>537
これは初心者にありがちなバグだね。ベタすぎ
549デフォルトの名無しさん:2014/06/23(月) 12:40:01.69 ID:0A44UZin
>>547
理解した、ごめんね
550デフォルトの名無しさん:2014/06/23(月) 19:56:29.92 ID:BmnMrvs4
>>511ですが
自分で作ってみたのですが
どうでしょう

for(y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++){

if(x<1 || x>254 || y<1 || y>254){
out_image[y][x]=in_image[y][x];
}else{

a=in_image[y][x+1]+in_image[y][x-1]+in_image[y+1][x]+in_image[y-1][x]-4*in_image[y][x];/*ラプラシアンフィルタ計算式をaに格納*/

}
if(a<=0){
a=0;
}
else if(a>=256){
a=255;}
out_image[y][x]=a;/*aに格納した値をout_image[y][x]にもどす。*/

}
}
551デフォルトの名無しさん:2014/06/23(月) 19:57:18.95 ID:BmnMrvs4
二個目

for(y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++){

if(x<1 || x>254 || y<1 || y>254){
out_image[y][x]=in_image[y][x];
}else{

a=-in_image[y][x+1]-in_image[y][x-1]-in_image[y+1][x]-in_image[y-1][x]+5*in_image[y][x];/*ラプラシアンフィルタ計算式をaに格納*/

}
if(a<=0){
a=0;
}
else if(a>=256){
a=255;}
out_image[y][x]=a;/*aに格納した値をout_image[y][x]にもどす。*/

}
}

会心の出来だとは思うのですが
552デフォルトの名無しさん:2014/06/23(月) 20:48:51.69 ID:gCMZG5du
かいしんのいちげき!
553デフォルトの名無しさん:2014/06/23(月) 21:14:19.55 ID:BmnMrvs4
>>543
今気がつきました!
思ったのですがout_imageに戻すときの処理ですが、0と256を忘れてませんか?
554 ◆0qAv26otVI :2014/06/24(火) 00:21:39.40 ID:x7MmALRG
>>551-552 条件を括弧の中に入れた。コメントも気を付けるように。
for(y=0;y<YSIZE;y++)
   for(x=0;x<XSIZE;x++)
    if(x<1 || x>254 || y<1 || y>254)
       out_image[y][x]=in_image[y][x];
    else{
      a = in_image[y][x+1]+in_image[y][x-1]+in_image[y+1][x]+in_image[y-1][x];
      a -= 4*in_image[y][x];
      if(a < 0)
        a = 0;
      else if(a > 255)
        a = 255;
      out_image[y][x] = a;
    }
555デフォルトの名無しさん:2014/06/24(火) 00:30:29.52 ID:gKXrKGrX
>>554
コメントとは?
556 ◆0qAv26otVI :2014/06/24(火) 09:21:40.73 ID:x7MmALRG
コメントも付けるように。
557デフォルトの名無しさん:2014/06/24(火) 20:10:16.97 ID:4MR8qoMd
【質問テンプレ】
[1] 授業単元:工学情報実習II
[2] 問題文(含コード&リンク):http://i.imgur.com/2IHDmSs.jpgのコースをライントレースカーで最短で走るプログラムを考えなさい
センサーは5センサーとしセンサー部分の反応プログラムはSwitch文で作成すること

[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (MPLAB ide 最新ver)
 [3.3] 言語: (C++ ,PIC)
[4] 期限: ([2014年06月25日9:00まで] )
[5] その他の制限: (C++ <pic.h>で走行プログラムを書く)

最短で走る案とそれに伴うプログラムが思いつきません。
よろしくお願いします。
558デフォルトの名無しさん:2014/06/24(火) 20:12:00.80 ID:nNYqUb+/
>>557
実物の基盤なしでどうやって開発する気だよ。
559デフォルトの名無しさん:2014/06/24(火) 20:37:57.79 ID:4MR8qoMd
>>558
実機ってこと?
560デフォルトの名無しさん:2014/06/24(火) 20:40:02.62 ID:nNYqUb+/
>>559
そう。
561デフォルトの名無しさん:2014/06/24(火) 20:51:01.29 ID:4MR8qoMd
>>560
実機ならあるんだが、今手元にないんだ
562デフォルトの名無しさん:2014/06/24(火) 20:52:42.96 ID:nNYqUb+/
>>561
いや、他人がその仕様わからないのにどうやって開発するんだ?
563デフォルトの名無しさん:2014/06/24(火) 21:01:56.98 ID:cZTSbkSS
>>562
仕様書があるんでしょ
564デフォルトの名無しさん:2014/06/24(火) 21:04:51.94 ID:4MR8qoMd
>>563
手作りだから仕様書なんてないんすよ
とりあえず実機外観のっけとくhttp://i.imgur.com/q0AdXdk.jpg
565デフォルトの名無しさん:2014/06/24(火) 21:07:52.50 ID:nNYqUb+/
うん。俺無理。
だいたい俺VCしか触ったことないもん。LOL。
566デフォルトの名無しさん:2014/06/24(火) 21:08:19.47 ID:81HQyHHG
外観じゃなくてさw
センサーの位置とか取得できる情報の種類とか値の範囲とかは
567デフォルトの名無しさん:2014/06/24(火) 21:10:06.55 ID:81HQyHHG
あとどうやって車体を制御できるのか
速度・旋回量みたいに制御できるようになってるのかモーターへの出力を直接制御するのかとか
その辺おそらくサンプルプログラムか何かあるんでしょ
568デフォルトの名無しさん:2014/06/24(火) 21:11:31.19 ID:cZTSbkSS
>>564
各パーツごとの仕様書はあるでしょ?
市販のパーツを組み立てたのではなく
パーツレベルで手作りなの?
569デフォルトの名無しさん:2014/06/24(火) 21:11:59.66 ID:4MR8qoMd
>>566
センサーは前面配置だけど取得できる情報って何?

一つ言えるのはデジタル出力ってことぐらいしか手元の資料では分からんな。
570デフォルトの名無しさん:2014/06/24(火) 21:16:45.51 ID:MKS7z3Yf
先生に、「2chで聞くのに必要な資料一式ください」とお願いしなさい
571デフォルトの名無しさん:2014/06/24(火) 21:21:06.02 ID:CuwkEz2Q
明日の朝までって、今すぐ先生に電話するしかないね
そもそもどんだけ課題放置してたんだよ
572デフォルトの名無しさん:2014/06/24(火) 21:24:20.85 ID:4MR8qoMd
>>567
デフォルトプログラム載っけといたよ
http://codepad.org/seEefNUd
573デフォルトの名無しさん:2014/06/24(火) 21:26:05.50 ID:4MR8qoMd
>>570
>>571
んー。
他の奴で手が回らなかった
574デフォルトの名無しさん:2014/06/24(火) 21:31:23.36 ID:nNYqUb+/
タートルグラフィックか。懐かしー。
575デフォルトの名無しさん:2014/06/24(火) 21:33:26.36 ID:4MR8qoMd
>>574
タートルグラフィック?
そんなの習ってないんだが
576デフォルトの名無しさん:2014/06/24(火) 21:34:26.27 ID:nNYqUb+/
>>575
教養だと思ってくれ。
577デフォルトの名無しさん:2014/06/24(火) 21:36:46.76 ID:4MR8qoMd
>>576
へーい
578デフォルトの名無しさん:2014/06/24(火) 21:41:29.68 ID:81HQyHHG
デフォルトプログラムだとどんな動きするの?ふらふらしながらライントレースする?
ふらふらするならPID制御でも入れる
ふらふらしないならもうそれが最速じゃね
579デフォルトの名無しさん:2014/06/24(火) 21:44:30.33 ID:4MR8qoMd
>>578
センサーの感度調整してスムーズに走る
でも、コースショートカットしてもいいから最短を考えろとのことでして
580デフォルトの名無しさん:2014/06/24(火) 21:52:35.41 ID:nNYqUb+/
マップデータを突っ込まないと無理じゃね?
581デフォルトの名無しさん:2014/06/24(火) 21:52:36.09 ID:81HQyHHG
>>579
デフォルトプログラムにしろショートカットOKにしろ最初から全部仕様や前提や条件を書かなきゃ誰も回答できない
ショートカットってどこまで許されてるの?
どこからスタートなの?赤ラインの上?手前?
何をもってゴールとなるの?赤ラインをタイヤが通過したら?
条件なく最速なんて言ったらライントレースなんてせずその場で小さく旋回してゴールしたら終わり
582デフォルトの名無しさん:2014/06/24(火) 22:00:51.88 ID:4MR8qoMd
まず、何をもってゴールとなるか
スタート地点から一旦離脱して元の位置に戻ってきた時点でゴールとする

スタート地点は自由
どこに置いても可

ショートカットは基本センサーが反応して最短距離を走行するのが理想だけどセンサー無視してもおk

仕様に至ってはなんて書けばいいか分からない。
583デフォルトの名無しさん:2014/06/24(火) 22:01:17.33 ID:PCFwbuYg
制御工学の範囲だろ?
こういうのはトライアンドエラーでなんとかするもの
実物ないと無理
584デフォルトの名無しさん:2014/06/24(火) 22:07:01.59 ID:81HQyHHG
>>582
581で言ったとおりその場で小さく旋回して1周したら終わりでよくない?
ゴールで止まる必要もないのであれば↓でいいんじゃね

switch(sensors){
// センサ入力からラインの外れ具合により
// 曲がり具合と直進具合を判断する
default:
move_left(); // 左へ1ステップ
break;
}
585デフォルトの名無しさん:2014/06/24(火) 22:07:37.01 ID:4MR8qoMd
>>583
トライアンドエラーの前にどこをショートカットできるかそれすら思い浮かばない
586デフォルトの名無しさん:2014/06/24(火) 22:07:46.60 ID:949Uh9AG
>>582
>スタート地点から一旦離脱して元の位置に戻ってきた時点でゴールとする
すげー簡単じゃん
1cmバックして、1cm前進する
587デフォルトの名無しさん:2014/06/24(火) 22:07:55.55 ID:nNYqUb+/
自己認識からプログラムしないと無理ゲーのような気がする。つまりむりげー。
588デフォルトの名無しさん:2014/06/24(火) 22:10:10.26 ID:nNYqUb+/
本体改造してカメラつけて画像認識するとかそういうレベルのような気がする俺素人。
589デフォルトの名無しさん:2014/06/24(火) 22:12:21.78 ID:4MR8qoMd
>>588
画像認識までできない。
というか、あんな小さいひょうたん型コースで画像認識させる意味なくね?
590デフォルトの名無しさん:2014/06/24(火) 22:13:35.27 ID:nNYqUb+/
ん?マシンはそのひょうたんを認識してませんよ。
認識してるのは君自身だ。
591デフォルトの名無しさん:2014/06/24(火) 22:16:11.56 ID:81HQyHHG
>>589
究極のショートカットだけど>>584>>586じゃダメなの?
その辺の条件は指定されてなくて曖昧なの?
592デフォルトの名無しさん:2014/06/24(火) 22:18:36.87 ID:nNYqUb+/
まぁ、プレゼンの時に、一発ネタでーす。とか言ってお茶濁すとかが最善手のような気がしないでもない。
593デフォルトの名無しさん:2014/06/24(火) 22:19:18.49 ID:4MR8qoMd
>>591
極論はそれでもいいかもしれないですが流石に...

何をもってゴールとするのかが担当から何も言われてないので曖昧です
594デフォルトの名無しさん:2014/06/24(火) 22:29:31.10 ID:nNYqUb+/
イニシャライザの作れないようなものをどうしろと・・・。
595デフォルトの名無しさん:2014/06/24(火) 22:30:15.69 ID:81HQyHHG
最低限センサー使ってますよアピールしながら短くするなら以下くらいか

ひょうたんのくびれ部分をスタート・ゴール地点として
スタート直後に90度旋回(ステッピングモータどれだけ回したら90度になるかは実測して試す)
ライン(ひょうたんのくびれの逆側)を検出するまで直進
検出したら180度旋回(旋回しすぎるとゴールしなくなるので170度くらいでもいいかも)
ラインを検出するまで直進
90度旋回しつつライントレースすればきれいにゴール
596デフォルトの名無しさん:2014/06/24(火) 22:35:53.95 ID:4MR8qoMd
>>595
くびれからくびれまで往復すれば確かにゴールになるかと

言ってることは分かるけどプログラムが分からん
597デフォルトの名無しさん:2014/06/24(火) 22:37:48.23 ID:ymkxFoq5
ショートカット可って事は、ラインが真っ直ぐになっている点(4箇所)を通る真円でも良いんでは?
まあそのためには最低1周してからショートカットを計算することになるが。
598デフォルトの名無しさん:2014/06/24(火) 22:52:57.04 ID:cZTSbkSS
日本語不自由な課題ってアカハラだよな
599デフォルトの名無しさん:2014/06/24(火) 22:54:23.03 ID:PCFwbuYg
まずきちんとフィードバック制御してライントレースできるものを目指せよ
600デフォルトの名無しさん:2014/06/24(火) 22:55:00.27 ID:4MR8qoMd
>>598
手作りで仕様なんか分かるかよ
特に制御プログラ不得意なのに...
601デフォルトの名無しさん:2014/06/24(火) 22:59:49.79 ID:5U6yDrEO
>>572
すでにライントレースするロジックになってる気がするが。
光センサは5つもあるの?
602デフォルトの名無しさん:2014/06/24(火) 23:00:07.24 ID:PCFwbuYg
>>598
演習なら質問すりゃ良いだけだしそれ前提だろ
あと多分日本語が不自由なのは課題出題者じゃない
603デフォルトの名無しさん:2014/06/24(火) 23:01:49.40 ID:4MR8qoMd
>>572
前は3センサーだったんだけどより検出率を高くしようとしたら5センサーになった
604デフォルトの名無しさん:2014/06/24(火) 23:01:53.29 ID:5U6yDrEO
あとタイマが何時動くのか全然分からん。
int_subってシンボル名をフレームワーク側で定期的に呼ぶのだろうか。
605デフォルトの名無しさん:2014/06/24(火) 23:08:43.34 ID:5U6yDrEO
>>603
(1) (2) (3) (4) (5)という光センサの配置だとして、
(2)から(4)の距離が黒線の幅よりも大きいなら、(1)と(5)が役立つケースは少ない。
CPUパワーが低くかったり、急カーブがあった場合に、(2)と(3)がON、あるは(3)と(4)がONのケースを見逃す可能性を見越してるってこと?
正直モータの加減でその辺はどうにかなるんじゃないかなぁ。

そもそもライントレースプログラミングは光センサが1つでどうにかするものが多い。
606デフォルトの名無しさん:2014/06/24(火) 23:11:37.24 ID:4MR8qoMd
>>604
プログラムの端から端まで理解してるわけじゃないんで、答えれんわ...

すまん
607デフォルトの名無しさん:2014/06/24(火) 23:17:30.65 ID:4MR8qoMd
>>605
5センサーにしたのはどっかのセンサーが見逃してもサブつまり奥のセンサーが対応して曲がるように5センサーにしてるわけでして。


(1)(2)(3)(4)(5)のうち、(2)(3)が反応するはずが反応しなかった場合(1)で対処するみたいな
608デフォルトの名無しさん:2014/06/24(火) 23:27:46.40 ID:WxM8Xv0V
if(conf !='y') printf("y/nのいずれかを入力して下さい");

ある本の問題で、この文を「y,Y,n,N」以外の場合にするにはどうしたらよいでしょうか?
「y」だけなら動くのですが、複数の条件が上手く扱えず常に真になっちゃって…
609デフォルトの名無しさん:2014/06/24(火) 23:32:26.03 ID:dXh+GD5r
>>608
if((conf != 'y') && (conf != 'Y') && (conf != 'n') && (conf != 'N')) printf("y/n or Y/Nのいずれかを入力してください。\n");
610デフォルトの名無しさん:2014/06/24(火) 23:35:41.84 ID:5U6yDrEO
>>607
ショートカットをせずに、愚直にライントレースするなら、
(1) move_forwardとmove_right/leftの回数を調整する(move_forward多め)。
(2) ハード仕様上できるのかしらんが、wait_msの時間を短くする。
(3) ハーry)、モータの駆動量を4ステップより多いステップにする。
くらいしかないっぽい。
611デフォルトの名無しさん:2014/06/24(火) 23:35:51.46 ID:WxM8Xv0V
>>609
ありがとうございます!

ずっと論理和に固執してました…
612610:2014/06/24(火) 23:48:13.70 ID:5U6yDrEO
俺、大嘘ついてるな。
>>578が言うように、PID制御を実装して係数を調整するのがロジック改善として最適だね。
センサー5つだと実装例ないだろうけど。
613デフォルトの名無しさん:2014/06/24(火) 23:54:16.83 ID:4MR8qoMd
>>612
そのPID制御を実装すると具体的にどうなるん?
調べて見たけど理解してるできん。
614デフォルトの名無しさん:2014/06/25(水) 00:00:11.04 ID:ISX3vtdj
>>613
PID制御を入れると、カーブの入口付近はギザギザ走行になるが、そのうちカーブに沿ったモータ制御になっていく。
極端な話、円だとそのうちギザギザ走行じゃなくなる。
>>572のプログラムだとカーブでは常にギザギザ走行になる。
左右のモータの回転数を変えられることが必須。
615デフォルトの名無しさん:2014/06/25(水) 00:06:34.53 ID:Jzh1k5/v
>>614
んー。
あまり入れる価値がなさそうな気がしてならないんだが

用は滑らかさを増すということかな...
616デフォルトの名無しさん:2014/06/25(水) 00:23:18.50 ID:ISX3vtdj
滑らかさというか、ラインに沿った動きが実現できる。
ライントレースのロジックとしては最強だよ。
カーブが多いと5割くらい時間が変わってくるんじゃないか。
ttps://www.youtube.com/watch?v=n5nk0yMJOT8
617デフォルトの名無しさん:2014/06/25(水) 00:31:15.34 ID:Jzh1k5/v
618デフォルトの名無しさん:2014/06/25(水) 00:32:22.68 ID:Jzh1k5/v
じゃあ、今回のコースは比較的カーブが多いから入れた方がいいのかな。
619デフォルトの名無しさん:2014/06/25(水) 00:32:25.33 ID:AAoe56mb
>>578に対して>>579の返答をしてる時点でもしやとは思っていたが案の定何の理解もしてなかったな
620デフォルトの名無しさん:2014/06/25(水) 00:41:03.68 ID:ISX3vtdj
余力があれば。
ただし、プログラムの改変、サンプリング回数の調整、係数の調整が工数として掛かる(係数調整だけでも結構だるい)。
ハード開発込みの講義だとしたら、コスト単価も意識できると将来役に立つかもな。
621デフォルトの名無しさん:2014/06/25(水) 08:32:07.43 ID:KznGqNfn
pid制御
622デフォルトの名無しさん:2014/06/25(水) 08:36:14.29 ID:KznGqNfn
誤送信
623デフォルトの名無しさん:2014/06/25(水) 19:25:19.80 ID:wig5YSH+
[1] 授業単元:グラフ理論
[2] 問題文(含コード&リンク):
貪欲法を用いてグラフの全ての点を通る最短閉路長を求めるプログラムを作りなさい。

グラフの点の数、点間の距離は最初に入力させること。

貪欲法の手順は

@全ての点間の距離を長さ順に並べる
A空の閉路から始め、点間の距離を短い順に調べ、それが以下の条件を満たすなら閉路に加える

・点の次数が3を超えない
・全ての点を回らない様な閉路を作らない

よろしくお願いします。
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 2014年6月28日17:00まで
[5] その他の制限:
624デフォルトの名無しさん:2014/06/25(水) 21:13:42.85 ID:DxJgguqg
TSPを貪欲法で解いたら最短の保証が無いじゃないか
625デフォルトの名無しさん:2014/06/25(水) 23:23:57.10 ID:uuSVt8Cj
>>624
他にもNearest neighbor法やNearest addition法でプログラムを組んでいる最中で、それらとの比較なので大丈夫です
626デフォルトの名無しさん:2014/06/26(木) 00:02:26.05 ID:ipx8s2Bd
>>625
じゃあそいつらを改良すれば貪欲法にできるよね
627デフォルトの名無しさん:2014/06/26(木) 19:48:45.06 ID:hIqK/FJL
>>626
そうなんですけどいまいちやり方が思いつかなくて

まず点間の距離を配列に格納して、それを長さが短い順に判定するのかなと思ったんですけど、例えば同じ長さがあった時どっちを選ばせるのかとか
そもそも配列の中身を長さ順に並べ替えるべきなのかとか

教えていただけませんか
628デフォルトの名無しさん:2014/06/26(木) 20:49:52.95 ID:Cm5OpuPA
>>623
>>・点の次数が3を超えない
って次数3はありってことだよね?
それって閉路にならなくない?

なんか勘違いしてるかな
629デフォルトの名無しさん:2014/06/26(木) 21:49:06.06 ID:svCBA0Nl
>>628
すいません、次数は3未満ですね
3は無しでした
630デフォルトの名無しさん:2014/06/27(金) 01:17:38.49 ID:mIIoYUoS
>>623
意外と難しい。合ってるのか分からんけど
http://codepad.org/KxHiIC71

なお点の数は固定で、点間の距離は乱数で決めてる
題意を満たすには、構造体などをmallocで動的に確保すればいい
631デフォルトの名無しさん:2014/06/28(土) 12:18:19.76 ID:UdsgUvF6
【質問テンプレ】
[1] 授業単元:画像処理
[2] 問題文:ソースコード
http://codepad.org/5RLy9iUt
 [3.1] OS:Windows7
 [3.2] Visual Stdio 2010
 [3.3] 言語:C++
[4] 期限: ([2014年7月1日15時00まで])
[5] その他の制限:ヒストグラムを作りそれをExcelでグラフ化するのが目的です。
         一応値は求められているとは思うのですが
         それを出力できません。使用する画像はLAX.bmpやgirl.bmpといった有名どころの画像です
632デフォルトの名無しさん:2014/06/28(土) 17:36:39.28 ID:9IkoF3d8
>>630
なるほど、構造体を使って配列に格納してクイックソートすれば良かったんですね

コメントも多くてすごくわかりやすいです

大変参考になりました
このコード見ながらですけどなんとか作れました
ありがとうございました
633630:2014/06/29(日) 18:41:25.14 ID:s1CDyW9K
>>632
あー・・。qsortの比較関数は、(たまたま結果は変わらないけど)、よくなかったね
構造体の比較してるんだからこうでないと。

int comp(struct line *a, struct line *b) {
  if(a->dist == b->dist) return 0;
  if(a->dist > b->dist) return 1;
  return -1;
}
634デフォルトの名無しさん:2014/06/29(日) 19:02:37.66 ID:gs1K0ves
>>633
return a->dist - b->dist;
でいいんじゃない?
635デフォルトの名無しさん:2014/06/29(日) 19:22:15.85 ID:s1CDyW9K
>>634
あー、確かにそれでいいですね。なるほど
636デフォルトの名無しさん:2014/06/29(日) 19:34:18.71 ID:gs1K0ves
>>635
と思ったけど
オーバーフローするな
637デフォルトの名無しさん:2014/06/29(日) 19:43:35.72 ID:tPOi50qg
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク) : マップ上でのシンボルエンカウントシステムを作成
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2010
 [3.3] 言語: C
[4] 期限: 2014/06/30 午前10:00
マップを書けてプレイヤーと敵と重なった時に「モンスターが現れた!」と表示されればOKです
期限が明日までなのは本当申し訳ございません、よろしくお願い致します
638デフォルトの名無しさん:2014/06/29(日) 21:25:40.82 ID:g7QOhf2W
マップとは?マップが書けるとはマップエディタがいるということ?
ローグみたいな文字だけのUIでよいの?それともGUIが必要?
639デフォルトの名無しさん:2014/06/29(日) 21:31:25.94 ID:tPOi50qg
>>638
コンソールアプリケーション上で動作するだけでいいので文字だけでダイジョブです
640デフォルトの名無しさん:2014/06/30(月) 08:04:40.79 ID:43q2q8K9
それ宿題じゃないだろ
個人的に欲しいコードをここで他人に書かせようとしてるんだろ
誰がボランティアするかよばーか
641デフォルトの名無しさん:2014/06/30(月) 09:58:57.89 ID:AfjkCyjj
ふぇぇ……ごめんね
ガチで宿題だったんだけどもう期限きちゃったから消えます
642デフォルトの名無しさん:2014/06/30(月) 15:05:01.48 ID:OY6iMqoP
[1] 授業単元:プログラミング技術β
[2] 問題文(含コード&リンク) : 16進数で入力されたふたつの整数の和と差を計算して、16進数と10進数で出力するプログラムを作成しなさい。
[3] 環境
 [3.1] OS: windows8.1
 [3.2] コンパイラ名とバージョン: Visual Studio 2013
 [3.3] 言語: C++
[4] 期限: 2014/07/01 午前8:00まで

10進数同士の計算方法は分かりますが16進数同士での計算方法及び計算結果の16進数を10進数に変換するところが分かりません。
643デフォルトの名無しさん:2014/06/30(月) 16:30:10.45 ID:sPLHYeev
644デフォルトの名無しさん:2014/06/30(月) 18:35:57.15 ID:OY6iMqoP
>>643
%xっていうのが16進数?

あと、16進から10進に変換されてる部分教えてもらってもいいすか?
645デフォルトの名無しさん:2014/06/30(月) 19:46:04.52 ID:w9GeHa8v
>>637
出来た。
http://codepad.org/Q9g1ayjs

ハラハラの大冒険なんだぜ
646デフォルトの名無しさん:2014/06/30(月) 21:24:30.05 ID:sPLHYeev
>>644
16進から10進に変換なんてしてない、CPUは10進で計算しない(しいていうなら出力printfの%d)
16進入力(scanf %x)→CPUで計算(2進とかいわれる)→16進出力(printf %x)、10進出力(printf %d)
647デフォルトの名無しさん:2014/06/30(月) 23:02:42.37 ID:OoeeUvmn
>>644
strtolで調べたらいいんでね
648デフォルトの名無しさん:2014/06/30(月) 23:34:43.68 ID:OY6iMqoP
>>646
>>647
ありがと。
頑張ってみるわw。
649デフォルトの名無しさん:2014/07/01(火) 19:23:17.82 ID:rsNQNidm
>>631
画像でヒストグラムを初めから求めてはダメなのかい?
650デフォルトの名無しさん:2014/07/01(火) 22:45:12.56 ID:ZD0/KFYR
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
問題文が長いので上の掲示板に投稿します。
投稿者は650です
[3] 環境
 [3.1] OS: Windows8
 [3.2] コンパイラ名とバージョン: Visual Stdio 2010
 [3.3] 言語: C
[4] 期限: 2014/07/03 13時まで
[5] その他の制限:
自分でも考えてみましたが、よくわかりません.
よろしくお願いします.
651デフォルトの名無しさん:2014/07/02(水) 02:34:38.96 ID:n8Tbw93l
>>650
nameフィールドが1つだと、アルファベット順ソートが面倒。
nameフィールドを2つ(name1,name2 など)にしても良いのかな。
652デフォルトの名無しさん:2014/07/02(水) 03:24:16.31 ID:t1pcmsUt
[1] 授業単元:プログラミング技術β
[2] 問題文(含コード&リンク) : 次のようなデータを扱う4個の変数を宣言して、キーボードから整数値を入力して、入力結果を出力するようなプログラムを作りなさい。
ただし、入力はそれぞれ、「身長=」などと表示した後に続けて入力させるものとする。また、出力もそれぞれ「身長=」などに続けて表示し、改行するものとする。

身長のデータ sintyou
各クラスの人数 ninzuu
各教科の平均点 heikin
都市の人口 zinkou

[3] 環境
 [3.1] OS: windows8.1
 [3.2] コンパイラ名とバージョン: Visual Studio 2013
 [3.3] 言語: C++
[4] 期限: 2014/07/03 午前7:00
授業時間一杯考えたのですがさっぱり分かりません。
よろしくお願いします。
653デフォルトの名無しさん:2014/07/02(水) 09:03:24.45 ID:3cCDtBQQ
>>651
構造体のメンバは変えないでほしいです
654デフォルトの名無しさん:2014/07/02(水) 09:26:32.66 ID:Zc6Wfmex
>>651
まあそうだけど、2つの構造体の前後関係を名前で判定する関数を作っておけば、qsortに渡すだけだな。
qsort禁止なら自分でバブルソートなり組んで比較時にその関数呼ぶだけ。
655デフォルトの名無しさん:2014/07/02(水) 09:29:18.01 ID:Zc6Wfmex
>>652
printfとscanfの組を4回実行して
scanfを4回実行するだけ
656デフォルトの名無しさん:2014/07/02(水) 16:43:09.23 ID:yz5g0sWi
>652
#include<stdio.h>
int main(void){
int sintyou,ninzuu,heikin,zinkou;
printf("入力\n");
printf("身長=");
scanf("%d",&sintyou);
printf("人数=");
scanf("%d",&ninzuu);
printf("平均=");
scanf("%d",&heikin);
printf("人口=");
scanf("%d",&zinkou);
printf("\n結果\n");
printf("身長=%d\n",sintyou);
printf("人数=%d\n",ninzuu);
printf("平均=%d\n",heikin);
printf("人口=%d\n",zinkou);
return 0;
}
657デフォルトの名無しさん:2014/07/02(水) 16:58:28.35 ID:z63CcN3Z
658デフォルトの名無しさん:2014/07/02(水) 18:28:52.62 ID:DNTNWI96
>>652
ひどい変数名だ。出題者は中学生だな(名推理)
659デフォルトの名無しさん:2014/07/03(木) 01:35:11.81 ID:G4K8x6+j
#include <stdio.h>
void sort(int h[],int i,int n,int *max,int *min){
int j,t;
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(h[i]<h[j]){
t=h[i];
h[i]=h[j];
h[j]=t;
}
}
}
*max=h[0];
*min=h[n-1];
}
main(){
int i,num=5,max_h,min_h;
int height[]={178,165,182,123,300};
sort(height,i,num,&max_h,&min_h);
printf("max=%d min=%d\n",max_h,min_h);
}
をcodepadでコンパイルしたら
max=300 min=123
Exited: ExitFailure 16と表示されました。
間違ってる部分が分からないので教えてください。
660659:2014/07/03(木) 01:41:11.31 ID:G4K8x6+j
分かりにくかったので付け足させていただきます。
Exited: ExitFailure 16と表示される原因を教えてください
661デフォルトの名無しさん:2014/07/03(木) 01:49:59.32 ID:fSGuHXOL
mainの戻り値を明示しないからコンパイラが補完して、
printfの戻り値がmainの戻り値に使われてるんだろ。激しく処理系依存。
662デフォルトの名無しさん:2014/07/03(木) 01:59:07.90 ID:SrSeBeNJ
>>657
ありがとうございます
解決できました
663659:2014/07/03(木) 02:30:14.68 ID:G4K8x6+j
>>661
なんと!?戻り値明示してないじゃないか私の馬鹿
ありがとうございます助かりました
664デフォルトの名無しさん:2014/07/03(木) 04:51:56.11 ID:mpJLProE
sortのiが激しく謎
665デフォルトの名無しさん:2014/07/04(金) 13:10:24.68 ID:MiP+bQJe
30代後半で漫画家になろうとしている童貞ひきこもりなバカを発見
足立区に住んでいるそうだ。
http://inumenken.blog.jp/archives/7002197.html
666デフォルトの名無しさん:2014/07/04(金) 15:12:23.23 ID:UPjF9R78
3. 名無し 2014年06月19日 03:07
普通の人なら童貞の書いた漫画なんか読みたく無いと思いますよ。
童貞の触った物には触れたく無いですよね。気持ち悪い。
667 ◆QZaw55cn4c :2014/07/05(土) 09:52:35.01 ID:NUdHoME9
        ,'   ヽ ',                  ,/    ',
       ,'.    ヽヽ              //      ヽ
      ,'        ヽ、         ,._='ヘ.!       ',
.      i  、      ヽ ヽ      ''"    !!         ',
     i  ヽ      `ヽ、 ` 、      ハ /´     i
     i   ヽ、       二ー 、ヽ     |! i _,,,,,,,,_  ノ
.    i.ヽ! ヽ   ヽ、     ,. ,.-=、、ヽヽ.   / !'""ー-   ,'
   i.!ヽ.ヽ、ヽ、 ヽ、ー-/ !::O:.i ヽ  -=/-/ 'T:::エヽ ,'
    !  ヽヽ  ヽ  ヽ、. `` ' ー ' '"/  /'  i 、    /',
.    !  , 〉 、 ヽ   ` 、 _  _ /_, ィ´   ! ` ー ´  !
   i  i  ノ ヽ  ヽ、       /´     i      !
.    ', ヽ !、 ヽ   ヽ、       ' .,. 、     !、     /
    ヽ  ヽ.'  ', ヽ、、 ヽ、      ,'         ',   ,イ
     ヽ  i  ', ヽ` 、 ` 、    '-‐‐、  ,.-〈   / i
       ',  ノ 、ヽ  ヽ 、`ー 、`ヽ      ̄  ',  ! i
       ".! ! ヽヽ  ヽ` ー 、`__ ' " `  -‐ 、  / .! i   かく言う私も童貞でね・・・
        i .!   ヽヽ、 `ヽ、 `` ー-`二ニ二>',   !
          ! i   ヽ、    ``ー- 、 _   _ ... '   /
         ! ヽ、   ヽ      ,.   ̄  、   /
668桃白白 ◆9Jro6YFwm650 :2014/07/07(月) 05:59:34.59 ID:XhjfpKh1
>>667
知ってるそれw 攻殻機動隊でしょ。
いい話だったよね。
669デフォルトの名無しさん:2014/07/07(月) 06:36:25.92 ID:96jMQzaX
>>668
神山健二の予言的なコンセプトは3作とも秀逸、昨今の国際情勢はなんか神山予言があたりそうな雰囲気じゃん
あと音楽は菅野よう子じゃないとね、最近のやつはどっちもだめだね
670デフォルトの名無しさん:2014/07/07(月) 10:22:29.72 ID:7jUzeIOQ
http://pastebin.com/1LK8FWab
これの正しくない、理由ってなんですか?
671デフォルトの名無しさん:2014/07/07(月) 10:30:09.35 ID:quzxXJFx
static がない変数なので、
呼び出される毎に不定な初期値となってる
= 再代入したところで、保持はしない
672デフォルトの名無しさん:2014/07/07(月) 21:23:07.57 ID:JT9yWl9Z
何がしたいのか、いまいち不明だが
1,2,3・・・って表示したいんだろか?

正しくない理由は671さんの言う通りです
staticとすべき(?ところがstaticではない
スタック上に確保した変数(total)が不定

ただ、staticにして初期値を与えれば良い
ってもんでもないかも
それだとスレッドセーフではないし、あまり良い
コードだとは思えない
673デフォルトの名無しさん:2014/07/08(火) 00:00:03.63 ID:xtKDNVE8
このスレもついに診療所になってしまったか・・・
674デフォルトの名無しさん:2014/07/08(火) 20:00:17.56 ID:hLIaJWwe
http://codepad.org/qicJuoxd

余り大げさな質問ではないのでテンプレ使いません。
スケーリングを仕様してコントラストの改善するプログラムが課題で
作ったのですが
何処かまだ簡略化出来る所が有る気がしてそわそわしてます・・・
どうにかできないでしょうか
675デフォルトの名無しさん:2014/07/08(火) 20:17:11.48 ID:2XtqBTEe
>>673
いままで違うと思ってたの!?
676デフォルトの名無しさん:2014/07/08(火) 20:18:55.73 ID:qu8l/hUZ
>>674
>>468,511,631
677デフォルトの名無しさん:2014/07/08(火) 20:57:35.27 ID:hLIaJWwe
>>676
過去の私とは違う!
課題は終わらせたんだ!
678デフォルトの名無しさん:2014/07/08(火) 21:20:36.93 ID:gmA7CUbf
解答見せてくれる友達ができたのか。良かったな
679デフォルトの名無しさん:2014/07/08(火) 21:43:50.54 ID:hLIaJWwe
>>678
違う違う
680デフォルトの名無しさん:2014/07/10(木) 01:30:37.84 ID:7fc4wVJQ
#include <stdio.h>
typedef struct{
char name[20];
int height;
int weight;
}student;

student swap(student sato,student tanaka, student max){
if(sato.height>tanaka.height)max=sato;
if(tanaka.height>sato.height)max=tanaka;
return max;
}

main(){
student sato={"Sato",178,64};
student tanaka={"Tanaka",165,69};
student max;
swap(sato,tanaka,max);
printf("%s: height=%d weight=%d\n",max.name,max.height,max.weight);
return 0;
}
戻り値を用いてheightの大きいほうのデータを出力したいのですが表示されません。
初心者以下の自分にはさっぱりなので間違っている部分を教えてください。
681デフォルトの名無しさん:2014/07/10(木) 01:33:36.79 ID:IRdIl+yS
>>680
戻り値を使ってない点
682デフォルトの名無しさん:2014/07/10(木) 01:40:59.22 ID:7fc4wVJQ
>>681
ありがとうございます
戻り値使ってなかったですね^^;
683デフォルトの名無しさん:2014/07/10(木) 16:23:31.15 ID:gPPo7GSh
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&amp;リンク):
@・キーワードを入力するようにユーザーに促し、キーワードを入力させる(キーワードは「character string」)
・正しく入力されたときは「A」と画面に表示させる
・入力が正しくないときは「B」と画面に表示させる
A@を完成させたうえで、入力が正しくないときは、「登録に失敗しました。もう一度正しいキーワードを入力してください。」と表示させ
正しいキーワードが入力されるまで繰り返し入力を促すように拡張する(whileループもしくはdo whileループを使う)

[3] 環境 .
 [3.1] Windows 8.1
 [3.2] Visual studio 2013
 [3.3] C++
[4] 期限:2014年7月16日20:00
講義の内容は文字列処理関数です。
授業中考えてもさっぱりわかりませんでした。
@とAの2つです。よろしくお願いします
684デフォルトの名無しさん:2014/07/11(金) 02:37:43.18 ID:mTredRn+
こんなもんかな
http://codepad.org/jkWNMwGI
685デフォルトの名無しさん:2014/07/11(金) 09:25:20.02 ID:RkLUNntM
>>684
Bと表示してないので不合格
686デフォルトの名無しさん:2014/07/11(金) 14:00:20.47 ID:umYaOgi4
>>684
使ってるコードをまだ習ってません…
char、print、if、elseなどを使ってやると思うんですが…
687デフォルトの名無しさん:2014/07/11(金) 14:30:51.48 ID:Rhi8lu02
684のコードの中でどれを習ってないのか具体的に書こうよ
688デフォルトの名無しさん:2014/07/11(金) 14:31:13.09 ID:B2z/pv99
>>686
C++ じゃなくて C言語なんだよね?
689デフォルトの名無しさん:2014/07/11(金) 15:27:25.38 ID:NpwKC5U+
690デフォルトの名無しさん:2014/07/11(金) 16:09:16.43 ID:qaVTv6bd
この手の宿題系での入力は scanf("%s", 変数) だろう
って決めうちすると、ちょーめんどくさいな
691デフォルトの名無しさん:2014/07/11(金) 16:47:51.18 ID:9lEqN05L
>>690
しかしなんで宿題出す奴ってscanf教えたがるの?
692デフォルトの名無しさん:2014/07/11(金) 17:26:09.45 ID:Rhi8lu02
http://ideone.com/Y4m0bh
scanf使ってできたよー
693デフォルトの名無しさん:2014/07/11(金) 17:34:37.82 ID:Txz9qfxA
>>689 の (2) が正解だね。
694デフォルトの名無しさん:2014/07/11(金) 23:35:05.40 ID:Rhi8lu02
>>693
なんでそれだけ正解だって言い直すのか
>>692も合ってるじゃないか!
695デフォルトの名無しさん:2014/07/11(金) 23:41:54.76 ID:HlACSYaK
>>691
scanf教えたがることよりも、scanf教える癖にscanfの戻り値の使い方を適当に流す事のほうが気になる。
696デフォルトの名無しさん:2014/07/12(土) 01:04:53.38 ID:/U4E4eER
scanf( ) について詳しくなっても、にちゃんで >>695 みたいなくそレス返すだけだし
697デフォルトの名無しさん:2014/07/12(土) 16:07:54.87 ID:lIxtjWqv
[1] 授業単元: プログラミング基礎
[2] 問題文
@以下のプログラムを作成しなさい.
文字列を入力して、
その文字列が数字であるかどうか調べる
(符号も対応すること)
(数字は、intの範囲内で)
(0023は、数字として扱う)
実行例)
1234 入力
number 出力
1234abncdef 入力
string 出力
ab^d34x 入力
string 出力
-92837 入力
number 出力
+37 入力
number 出力
[3] 環境 .
 [3.1] Windows 8.1
 [3.2] Visual studio 2013
 [3.3] C
[4] 期限:2014年7月14日0:00

丸投げですがよろしくおねがいします。
698デフォルトの名無しさん:2014/07/12(土) 16:08:58.76 ID:lIxtjWqv
[1] 授業単元: プログラミング基礎
[2] 問題文
A以下のプログラムを作成しなさい.
5件の数字を入力し、上位3位までの
数字を順に表示する
(数字の大きい順)

実行例)
22 入力1
30 入力2
10 入力3
40 入力4
2 入力5
40 30 22 出力
123 入力1
25 入力2
294 入力3
-100 入力4
80 入力5
294 123 80 出力
-20 入力1
-25 入力2
-394 入力3
-50 入力4
-80 入力5
-20 -25 -50 出力
[3] 環境 .
 [3.1] Windows 8.1
 [3.2] Visual studio 2013
 [3.3] C
[4] 期限:2014年7月14日0:00
699デフォルトの名無しさん:2014/07/12(土) 17:30:17.32 ID:/m0mM/Do
>>697
flex使わないと頭が悪いコードになるね。
http://ideone.com/5C5Yf8
700デフォルトの名無しさん:2014/07/12(土) 17:31:21.46 ID:veA4ls8K
701デフォルトの名無しさん:2014/07/12(土) 17:35:18.53 ID:/m0mM/Do
atoi便利でワロタ
702デフォルトの名無しさん:2014/07/12(土) 17:40:23.01 ID:unKWHDeN
703デフォルトの名無しさん:2014/07/12(土) 17:48:36.18 ID:unKWHDeN
>>699
fgetsだからと言って最後に改行がある前提にはしないほうがよいよ
>>700
「00」がstringになるね
(0023は、数字として扱う)と言ってるから数字にしたほうがよさげではないか
実行例にないから何とも言えないけど
704デフォルトの名無しさん:2014/07/12(土) 17:56:37.69 ID:/m0mM/Do
1234[EOF]の場合にまずいのか。>>697はクソコードだ。
intの範囲でって記述があるからatoiとscanf系が出題者の意図なんだろうね。
705デフォルトの名無しさん:2014/07/12(土) 17:59:49.80 ID:veA4ls8K
>>700
>>697
手抜き。
< strcat(buf, "0");
---
> strcat(buf, "1");
706デフォルトの名無しさん:2014/07/12(土) 18:05:15.27 ID:unKWHDeN
なるほど思いつかなかった
707デフォルトの名無しさん:2014/07/13(日) 18:16:45.76 ID:IpWwiGPd
[1] 授業単元: プログラミング基礎
[2] 問題文
3 と 5 または両方を調べるプログラムを作る。
@数を1からカウントしていく
Aカウントする上限を尋ねる
B3の倍数の時、「アホになる」と表示
C5の倍数の時、「バカになる」と表示
D3と5の倍数の時、「ボケカス」と表示
[3] 環境 .
 [3.1] Windows 8.1
 [3.2] Visual studio 2008
 [3.3] C
708デフォルトの名無しさん:2014/07/13(日) 18:32:52.52 ID:/A7mwUNZ
>>707
ネタお断り
709デフォルトの名無しさん:2014/07/13(日) 20:14:19.30 ID:881ltTtV
順番通り実装するとAが実行されない
710デフォルトの名無しさん:2014/07/13(日) 20:21:27.56 ID:7mpUtnIe
>>707
おまえのアタマのなかでやってろ
持ちこんでくるなボケカス
711デフォルトの名無しさん:2014/07/13(日) 20:44:04.27 ID:5l7F/jSZ
大学でFizzBuzz問題って言われたんだが・・・
712デフォルトの名無しさん:2014/07/13(日) 21:18:53.94 ID:/A7mwUNZ
>>711
それでググれば山ほど解答例が出てくるから好きなのコピペして出しとけ
ここで回答してもらってもコピペするだけだろ
713デフォルトの名無しさん:2014/07/13(日) 23:48:47.36 ID:6cgxdczx
FizzBuzzって何?
714デフォルトの名無しさん:2014/07/14(月) 06:39:28.09 ID:7GRxvXCW
FizzBuzzとは大分違うけどね。
715デフォルトの名無しさん:2014/07/17(木) 19:27:11.74 ID:GZBYDlnm
[1] 授業単元: プログラミング基礎
[2] 問題文:英語、理科の点数を整数として入力し、高い方の点数を表示しなさい。
(同じ点数の時はどちらの点数が表示されてもよい。)
[3] 環境
  OS: Windows7
  言語: C
[4] 期限:急ですが明日中までにお願いします
何卒ご教示お願いします。
716デフォルトの名無しさん:2014/07/17(木) 19:31:56.41 ID:GZBYDlnm
[1] 授業単元: プログラミング基礎
[2] 問題文:整数を1つ入力し、その数の倍数を1倍から5倍まで表示させなさい。
(例:入力を2とすると「2 4 6 8 10」と表示)
[3] 環境
  OS: Windows7
  言語: C
[4] 期限:明日中までにお願いします
717デフォルトの名無しさん:2014/07/17(木) 20:40:18.50 ID:+37EBU2h
>>715
その課題出されるまでに教わったサンプル全部見せてみろ
718デフォルトの名無しさん:2014/07/17(木) 20:43:19.91 ID:70T+J4W5
#include <stdio.h>

main()
{
  char buf[100];
  int eigo,rika;

  printf("英語の点数 :");
  fgets(buf,100,stdin);
  sscanf(buf,"%d",&eigo);
  printf("理科の点数 :");
  fgets(buf,100,stdin);
  sscanf(buf,"%d",&rika);

  if( eigo > rika )
    printf("\n英語の点数は %d です。\n",eigo);
  else
    printf("\n理科の点数は %d です。\n",rika);
}
719デフォルトの名無しさん:2014/07/17(木) 20:46:52.46 ID:70T+J4W5
#include <stdio.h>

main()
{
  char buf[100];
  int eigo;

  printf("整数を入力 :");
  fgets(buf,100,stdin);
  sscanf(buf,"%d",&eigo);

  printf("\n%d %d %d %d %d\n",eigo,eigo*2,eigo*3,eigo*4,eigo*5);
}
720デフォルトの名無しさん:2014/07/17(木) 20:53:15.60 ID:Kqtj7lna
fgetsの使い方わかりません・・・orz
stdinはわかるんですが・・・
721デフォルトの名無しさん:2014/07/17(木) 20:55:58.08 ID:GZBYDlnm
>>718
>>719
さっそくのご回答ありがとうございます。
fgets関数などの関数を使わずに出来る方法はないのでしょうか
722デフォルトの名無しさん:2014/07/17(木) 21:00:06.01 ID:oG7QfsM9
>>720
stdinの使い方にfgetsは含まれる
>>720-721
fgets以外にも使えない関数があるあろうから使える関数を提示したほうが
723デフォルトの名無しさん:2014/07/17(木) 21:31:08.18 ID:+37EBU2h
>>722
だから何を習ったかの確認が先なんだよ
724デフォルトの名無しさん:2014/07/17(木) 21:37:02.55 ID:wKNmXy3y
fgetsは文字列として入力だから
整数として入力って前提が破綻してる
725デフォルトの名無しさん:2014/07/17(木) 23:23:02.79 ID:GZBYDlnm
c言語
726デフォルトの名無しさん:2014/07/17(木) 23:24:04.83 ID:GZBYDlnm
[1] 授業単元: プログラミング基礎
[2] 問題文:10個の整数を入力し配列に保存した後、入力された数字の中に
5の倍数が含まれているかを調べ、含まれていた時には「5の倍数が含まれています」
含まれていない時に「5の倍数が含まれていません」と表示するプログラムを作りなさい。

よろしくお願いいたします。
727デフォルトの名無しさん:2014/07/18(金) 07:35:39.20 ID:RMNUzhlR
>>726
array[i] % 5 == 0で5の倍数
後は自分でやれば
728デフォルトの名無しさん:2014/07/18(金) 09:10:27.24 ID:+Avqvx3X
ヒントを参考に考えて作ったのですが、以下の通りでよろしいでしょうか
#include <stdio.h>
main()
{
int i;
double c[10];
for (i = 0; i < 10; i++)
{
printf("整数を10個入力してください.(%d つ目) : ", i+1);
scanf("%lf", &amp;c[i]);
}
if(c[i] % 5 == 0){
printf("5の倍数が含まれています\n");
}
else{
printf("5の倍数が含まれていません\n");
}
return 0;
}
729デフォルトの名無しさん:2014/07/18(金) 09:38:07.05 ID:zESUzG0I
>>728
結果表示がおかしい
730デフォルトの名無しさん
printf("います"); のあとで break;
else 消してprintf("ません"); をメイン内直書きでいい

と思ったらこの書き方だと入力途中に終わるな
forもう一個分けておk