C/C++の宿題を片付け ..
[2ch|▼Menu]
331:デフォルトの名無しさん
08/06/22 21:05:18
[1] 授業単元: Cプログラミング実習
[2] 問題文(含コード&リンク)--------------------

int型の数値データの内部表現を2進数で表示する。
実行に当たっては次のデータを入力して確認せよ。

[1]0
[2]1
[3]-1
[4]32767
[5]-32768

実行例↓

入力データ:-1
 内部表現:1111111111111111

入力データ:32767
 内部表現:0111111111111111

-----------------------------------------------


[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (visual studio 2005 )
 [3.3] 言語: (C言語)
[4] 期限:25日まで
[5] その他の制限: (まだ大してC言語は習ってないので簡単な関数でお願いします)

332:デフォルトの名無しさん
08/06/22 21:11:35
>>331
なんか、前スレにマイナスにも対応しているものがあった・・・
ちと探してくる

333:デフォルトの名無しさん
08/06/22 21:14:37
>>332
わざわざすいません<(_ _*)>

334:デフォルトの名無しさん
08/06/22 21:20:35
>>331
int型は16bitでいいの?

335:デフォルトの名無しさん
08/06/22 21:25:17
>>331
URLリンク(kansai2channeler.hp.infoseek.co.jp)

336:デフォルトの名無しさん
08/06/22 21:29:04
>>331
#include <stdlib.h>
#include <stdio.h>

void main(int argc,char* argv[])
{

int _in = atoi(argv[1]);
int i;
for(i = 0;i < 32;i++)
{
printf("%d",(_in & (0x80000000>>i) )?1:0);
}
printf("\n");
}

数値は引数で入力、エラーチェックはしてない

337:デフォルトの名無しさん
08/06/22 21:33:54
>>331
#include<stdio.h>
int main( void ){
int i,n;
printf("入力データ:");
scanf("%d",&n);
printf(" 内部表現:");
for(i=0;i<16;++i){
if(n & 1<<15-i) printf("1");
else printf("0");
}
return 0;
}

338:デフォルトの名無しさん
08/06/22 21:34:00
微妙だな

339:デフォルトの名無しさん
08/06/22 21:40:10
いや、絶妙だ

340:デフォルトの名無しさん
08/06/22 21:42:20
>>334
VS2005でWinが対象だから32bitじゃない?


341:デフォルトの名無しさん
08/06/22 21:42:51
絶妙ですがありがとうございます

342:デフォルトの名無しさん
08/06/22 21:45:06
まっ、待ってたもう、麻呂の16進数まで対応したクソースを拝むでおじゃるよ
もう少し待ってたもう

343:デフォルトの名無しさん
08/06/22 21:51:37
>>340
実行例が16桁だから…

344:デフォルトの名無しさん
08/06/22 21:52:05
int i,n;
int bit=sizeof(int)*8;
//nをキーボードから入力
for(i=bit-1; i>=0; i--)
printf("%d", n>>i&1);


345:デフォルトの名無しさん
08/06/22 21:52:46
>>343
それは確かに気になった…。


346:331
08/06/22 22:02:29
テキストの問題なんですけど、何ビットとか書いてないんですよ・・・
多分16ビットでOKだと思います。


347:デフォルトの名無しさん
08/06/22 22:03:37
Winでint型だと普通は32bitだけどね

348:デフォルトの名無しさん
08/06/22 22:07:13
普通にsizeof演算子使えよ
でも1byteが9bitの環境もあるって聞いたことあるな

349:デフォルトの名無しさん
08/06/22 22:11:32
テキストってことは16bit時代の参考書をそのまま使ってるんじゃね?
あくまで「int型」の内部表現を出力するんであれば32bitが正解だろうなぁ

350:デフォルトの名無しさん
08/06/22 22:12:10
せっかくがんばったのでうpっときます。

>>179
C++だけど参考にでもしてください。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

351:350
08/06/22 22:14:09
一番最後のcoutではCtrl+Gだったけど、ダメみたいね・・・

352:350
08/06/22 22:15:29
あら、コピったら生きてた

さばら

353:デフォルトの名無しさん
08/06/22 22:15:42
DWORD
WORD
BYTE表現でいいだろ

354:デフォルトの名無しさん
08/06/22 22:22:32
>>301 nが小さいときだけおk
#include<iostream>
#include<algorithm>
#include<cmath>
struct point_t{
double x, y;
};
double calc_distance(const point_t &a, const point_t &b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int main(void){
const int n=1000; // これが小さいときだけ
double *distance=new double[n*(n-1)];
point_t *point=new point_t[n];
long i, j, x=0;

for(i=0;i<n;i++){
point[i].x=rand();
point[i].y=rand();
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
distance[x++]=calc_distance(point[i], point[j]);
}
}
std::sort(&distance[0], &distance[x]);
for(i=0;i<x;i++){
std::cout << distance[i] << std::endl;
}
return 0;
}

355:デフォルトの名無しさん
08/06/22 22:22:44
16進数表示ならこんな漢字かな
実行して無いからわからんが

for(i=bit-4; i>=0; i-=4)
printf("%c", "0123456789abcdef"[n>>i&15]);

356:デフォルトの名無しさん
08/06/22 22:25:32
>>331
URLリンク(kansai2channeler.hp.infoseek.co.jp)
まっ、麻呂の、麻呂のクソースを見てたもうぅ〜〜
10進数の数値を2〜16進数まで変換できるでおじゃる

357:デフォルトの名無しさん
08/06/22 22:28:53
>>350
ちょ、俺のコンパイラ(BCC5..9.3)だと
direction++;で
エラー E2277 chess1.cpp 362: 左辺値が必要
(関数 CAnalyzeTourOfKnight::AnalyzeTourOfKnight(ANALYZETYPE) )


358:デフォルトの名無しさん
08/06/22 22:29:23
微妙だな

359:デフォルトの名無しさん
08/06/22 22:33:05
クソースとしては絶妙でおじゃ

360:デフォルトの名無しさん
08/06/22 22:33:11
まあ出題者がgcc指定してるからgccで通ればよいのか

361:デフォルトの名無しさん
08/06/22 22:37:44
>>357
>>360
いや
俺もbccなんだけど
そこで落ちる理由はわからん・・・??
俺の環境じゃ落ちないぞ?


362:デフォルトの名無しさん
08/06/22 22:39:20
それは奇妙だな

363:デフォルトの名無しさん
08/06/22 22:42:57
C:\Documents and Settings\knight>bcc32 TourOfKnight
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
TourOfKnight.cpp:
警告 W8004 TourOfKnight.cpp 134: 'tempY' に代入した値は使われていない(関数 CAnal
yzeTourOfKnight::MoveKnightPosition(int &,int &,DIRECTION) )
警告 W8004 TourOfKnight.cpp 134: 'tempX' に代入した値は使われていない(関数 CAnal
yzeTourOfKnight::MoveKnightPosition(int &,int &,DIRECTION) )
警告 W8004 TourOfKnight.cpp 309: 'y' に代入した値は使われていない(関数 CAnalyzeT
ourOfKnight::KinghtRoundBoard(int,int) )
警告 W8004 TourOfKnight.cpp 453: 'comparisonNum' に代入した値は使われていない(関
数 main() )
警告 W8004 TourOfKnight.cpp 452: 'answerNum' に代入した値は使われていない(関数 m
ain() )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

これだけ

364:デフォルトの名無しさん
08/06/22 22:44:11
>>361
BCC(今はCodeGearCCだからCCCか)のバージョンは同じ?
5.9.3ってBCB2007の付属品だよ。
フリーで配布されているのは5.5.1。

365:デフォルトの名無しさん
08/06/22 22:44:39
>>364
5.5.1

366:デフォルトの名無しさん
08/06/22 22:46:08
enum値のインクリメントは許されないのか・・・・

367:デフォルトの名無しさん
08/06/22 22:46:42
ちなみにVC9のエラーログ
c:\documents and settings\********\my documents\visual studio 2008
\projects\learn1\chess1\chess1.cpp(367) : error C2676: 二項演算子 '++' :
'CAnalyzeTourOfKnight::DIRECTION' は、この演算子または定義済の演算子に
適切な型への変換の定義を行いません。(新しい動作; ヘルプを参照)

368:デフォルトの名無しさん
08/06/22 22:51:13
>direction++;で
>エラー E2277 chess1.cpp 362:

ファイル名を chess1.cにするか
direction = direction + 1;
にしたらいいんでない?

369:デフォルトの名無しさん
08/06/22 22:51:49
>>366
そのままではできないが、演算子多重定義すればできる。

370:デフォルトの名無しさん
08/06/22 22:52:59
>>368
ああそうか。てっきり>>350

>C++だけど参考にでもしてください。

と書いてあったからcppしてたわ。
<time>も通らないので<ctime>にしてたしおかしいわと
思ってたんだ

371:デフォルトの名無しさん
08/06/22 22:53:35
direction = static_cast<Month>(direction+1);
でどうだ!!?


ということでごめんなさい。

372:デフォルトの名無しさん
08/06/22 22:55:04
>>370
いやcppだけどね。
timeは通ってるけど
たしかにctimeだわな('A`)
スマソ

373:350
08/06/22 22:56:14
俺のレス
>>361
>>363
>>365
>>366
>>371
>>372

374:デフォルトの名無しさん
08/06/22 22:56:27
要するにC++モードでもenumに++演算子を適用できる
コンパイラと弾くコンパイラがあるわけだ
規格書ではどうなってるのかな

375:デフォルトの名無しさん
08/06/22 22:57:09
ウォッチでは通るのに

376:350
08/06/22 23:01:35
まあ普通に考えたら
enum{
    A=1,
    B=10,
    C=100,
    D=1000
};

とかがあることもあるわけだから、やっぱり++は許されないのかな

377:179
08/06/22 23:23:16
>>350

返事遅れてごめんなさい・・・
自分C++全く知らないのですが、やっていただいたことに関しては
本当に感謝してます!
聞いてばかりで申し訳ないのですが、
このソースをCに書き換えるにはどのようにすればよいのでしょうか?


ちなみに調べてみたんですが5x5は解の個数が304個みたいです。


378:デフォルトの名無しさん
08/06/23 00:21:32
全部関数にしたらどう?

379:350
08/06/23 00:22:56
>>377
304><
感動><

変数がめんどくさいかも・・・
全部staticでいいならいいけど・・・

380:デフォルトの名無しさん
08/06/23 00:26:52
Cってことはfor内での変数宣言とかも直さなきゃならんか


381:デフォルトの名無しさん
08/06/23 00:37:11
URLリンク(www.kameda-lab.org)

382: ◆15lIZBDwz6
08/06/23 00:37:22
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):
5 つの文字列を格納できる二次元配列 str を定義し,キーボードから5つの文字列を入力する.
その後,配列 str と文字列数 num (この例では,5)を引数として受け取り,
最長の文字列が格納されている配列の添え字(行の要素番号)
を返す関数 int str_maxlen(const char str[][100], int num)を定義し,動作を確認するプログラムを作成せよ.
但し,同じ長さの文字列が存在する場合は,最初に現れる文字列を優先すること.
また,文字列長はライブラリ関数は利用せずに求めること。
main関数内で,str_maxlen 関数の返却値を元に文字列を出力することで,動作確認すること.

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限:2008年6月24日
[5] その他の制限: 習った範囲は文字列まで。その他の制限は問題文参照

自分で解いていたらこの問題だけ上手くいかないのでお願いします

383:350
08/06/23 00:38:42
>>377
書き換えてみた。
static変数使いまくりでひどいけど

ちなみに100行目に入れる値を変えればいろいろ変化します。
Bには非対応ですね。
自分で盤を初期化すれば多分できるのかな・・・


384:350
08/06/23 00:39:13
>>383
URLリンク(kansai2channeler.hp.infoseek.co.jp)
大事なもん貼り忘れた

385:デフォルトの名無しさん
08/06/23 00:55:26
>>382
#include <stdio.h>

int str_maxlen(char str[][100], int num) {
int i, j, max = 0, max_index = 0;
for(i=0; i<num; i++) {
for(j=0; str[i][j]; j++);
if(max < j) max = j, max_index = i;
}
return max_index;
}

int main(void)
{
char str[5][100];
int i;

for(i=0; i<5; i++) scanf("%s", str[i]);

printf("最長の文字列は%s", str[str_maxlen(str, 5)]);

return 0;
}

386:デフォルトの名無しさん
08/06/23 00:56:09
>>382
#include<stdio.h>
str_maxlen(const char str[][100], int num);
int main( void )
{
    char str[ 5 ][ 100 ];
    int i = 0;
    int length = 0;
    for( i = 0; i < 5; i++ ){
        gets( str[ i ] );
    }
    length = str_maxlen( str, i );
    printf( "%d", length);
    return( 0 );
}
int str_maxlen(const char str[][100], int num)
{
    int maxlen=0;
    int i = 0, k = 0;
    for( i = 0; i < num; i++ ){
        for( k = 0; str[ i ][ k ] != '\0'; k++ ){}
            if( k > maxlen ){
                maxlen = k;
            }
    }
return( maxlen );
}

387:デフォルトの名無しさん
08/06/23 00:57:38
今だっ!おまいらうpロダ(ry

388:386
08/06/23 00:59:01
>main関数内で,str_maxlen 関数の返却値を元に文字列を出力することで,動作確認すること.
これやってないわ
スマソ

389:デフォルトの名無しさん
08/06/23 01:00:51
返すのは長さじゃなくて添え字

390:デフォルトの名無しさん
08/06/23 01:02:19
>>389
まぁ結局は添え字だが、
返すべきはkじゃなくてiだわな

391:デフォルトの名無しさん
08/06/23 01:05:41
>まぁ結局は添え字だが、
何を言ってるんだ?

392:377
08/06/23 01:07:21
>>383>>384

書き換えまでやってくださったとは・・・!

本当何から何まですみません。
ありがとうございます!(>_<)



393:デフォルトの名無しさん
08/06/23 01:14:32
>>350 コンパイルは通ったけど、解が見つからなかったので報告。
// direction++;
direction = static_cast<DIRECTION>(direction+1);
/* switch(direction){
case NOTYET:direction = START; break;
case START: direction = RU; break;
case RU: direction = RD; break;
case RD: direction = DR; break;
case DR: direction = DL; break;
case DL: direction = LD; break;
case LD: direction = LU; break;
case LU: direction = UL; break;
case UL: direction = UR; break;
case UR: direction = END; break;
case END: direction = NOTYET; break;
}
*/

394:デフォルトの名無しさん
08/06/23 01:17:27
6x6の盤でナイトの旅を始めます。
解析中...
正しく解析できました。

1 30 27 18 3 10
26 17 2 11 28 19
31 36 29 20 9 4
16 25 8 35 12 21
7 32 23 14 5 34
24 15 6 33 22 13
評価回数は59079349回です。

要した時間は0.028秒です。


395:393
08/06/23 01:21:25
//盤面のサイズ。
#define SIZE 5
です。遅れました Express 2005 + SDK

396:デフォルトの名無しさん
08/06/23 01:24:45
以下のようなプログラミングはどのようにすればよいのでしょうか?

「組み合わせ」を求める数学の公式にコンビネーションがあります。このコンビネーションのプログラミングを教えてください!

1.nとrをscanf()で読み、nCrの値を計算して表示させます。
条件として、nとrの値はマイナスでなく、またゼロでなく、さらにここではn<=10であることを確認させて、正しい数値を入力させる。もし誤った数値を入力したら「入力ミスです」と表示させる。

2.0!=1も扱えるようにすることを忘れない。


397:デフォルトの名無しさん
08/06/23 01:25:06
統計計算のプログラミングの例を教えてください。

最大20個までの実数値をscanf()で、配列に読み、呼んだデータの、平均値、分散、最大値、最小値を計算して表示するプログラムを教えてください!

条件として、データは-999.0から999.0の範囲とし、入力終了の合図として1000.0より大きい値のデータを入力すると、その数値は入力されずに入力作業を終了する。
平均値と分散については、
データ数をn、各データをXi(i=1〜n)とすると、(ΣXi)/n (データの個数で割ったもの)が平均値
(Σ(Xi-(データの相加平均))^2)/nが分散であるとする。

よろしくお願いします!!


398:デフォルトの名無しさん
08/06/23 01:26:18
5x5の盤でナイトの旅を始めます。
解析中...
解析できませんでした。
評価回数は15615711回です。

要した時間は0.07秒です。

399:デフォルトの名無しさん
08/06/23 01:26:43
>>391
maxlen=k;
return maxlen;
はどう見ても添え字を返してるだろ


400:350
08/06/23 01:30:24
>>395
マスの数が奇数の場合、周遊は解なし

>>398
お前のPCのスペックが知りたいわw



401:デフォルトの名無しさん
08/06/23 01:32:32
>>396
つ パスカルの三角形
>>397
探せば見つかるようなありきたりの課題じゃ〜・・・

402:デフォルトの名無しさん
08/06/23 01:33:46
>>397
#include <stdio.h>

int main(void){
double value, sum=0, sum2=0, average, variance, maximum=0, minimum=0;
int n;

for(n=0;n<20;n++){
if(scanf("%lf", &value)!=1) break;
if(value>=1000.0) break;
sum+=value;
sum2+=value*value;
if(n==0 || maximum<value) maximum=value;
if(n==0 || minimum>value) minimum=value;
}
if(n==0) return 1;
average=sum/n;
variance=(sum2-sum*average)/n;
printf("平均値 %f\n分散 %f\n最大値 %f\n最小値 %f\n", average, variance, maximum, minimum);

return 0;
}

403:デフォルトの名無しさん
08/06/23 01:34:44
>>399
アホか
添え字って言っても
>最長の文字列が格納されている配列の添え字(行の要素番号)
だぞ。
kは文字列の長さにしかなんねーよ


404: ◆15lIZBDwz6
08/06/23 01:35:35
>>385-386
ありがとうございます。
それにしても…早いw
次の問題解き終わってきてみたら20分後にはもうできてるし…

405:デフォルトの名無しさん
08/06/23 01:39:37
>>399
>>390

406:デフォルトの名無しさん
08/06/23 01:39:47
>>396
> 2.0!=1も扱えるようにすることを忘れない。
階乗を求めるやり方か・・・

407:デフォルトの名無しさん
08/06/23 01:49:24
>>396
URLリンク(kansai2channeler.hp.infoseek.co.jp)

408:デフォルトの名無しさん
08/06/23 01:50:59
>>394
最近のコンピュータははやいな!

409:デフォルトの名無しさん
08/06/23 02:01:50
>>396
あ〜、入力エラーの表示は適当に追加しておいて。
あと、nもrも0のときでも考慮されてる。
0個の中から9個のものを選ぶという事象も1つの事柄として扱っているし
n個の中から0個のものを選ぶ、すなわち何も選ばないということも
1通りの事象として扱われているから。

410:デフォルトの名無しさん
08/06/23 02:02:27
×0個の中から9個のものを選ぶという
○0個の中から0個のものを選ぶという

411:デフォルトの名無しさん
08/06/23 02:04:32
>>397
#include <stdio.h>
#include <math.h>

int main(void)
{
double d[20], max = -1000.0, min = 1000.0, ave = 0, var = 0;
int i, n;

for(i=0; i<20; i++) {
scanf("%lf", d + i);
if(fabs(d[i]) > 999.0) break;
if(max < d[i]) max = d[i];
if(min > d[i]) min = d[i];
ave += d[i];
var += d[i] * d[i];
}

if(!i) return 0;
ave /= i;
var = var / i - ave * ave;

printf("最大値%f\n最小値%f\n平均%f\n分散%f\n", max, min, ave, var);

return 0;
}

412:395
08/06/23 02:48:26
>>400
有り難う御座います、見逃していました。
>ちなみに100行目に入れる値を変えればいろいろ変化します。

所で、よく見るとCのほう(float)キャストが無いので、経過時間が0.000秒でした。

413:デフォルトの名無しさん
08/06/23 03:04:20
軽作業用に使っている AthlonXP 2800+ 2GHzじゃ2.78秒
C2D E7200でも試してみようかのぅ

414: ◆dH2ZMCPPns
08/06/23 09:34:10
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語: C
[4] 期限: 6月23日 14時まで

よろしくお願いします。二問あります

415:デフォルトの名無しさん
08/06/23 10:06:26
[1]CとC++
[2]テキストサウンドノベルを作成する事。
キー入力でメッセージを表示し、途中で選択肢を含める。(最大3つまで)
画面をスクロールさせることは禁止。ページ切り替えは、画面全消去で対処する事。
テキスト行数は、最低50行から最大100行までとする。
画面全消去方法は、先生に聞くこと。

#include"stdlib.h"
system("CLS");
    この時に画面すべて消せる

416:デフォルトの名無しさん
08/06/23 10:11:46
>>415
サウンドはどうやって鳴らすの?

417:デフォルトの名無しさん
08/06/23 10:46:04
あいまいな問題にはまともに回答する必要無し

418:415
08/06/23 10:59:11
サウンドはほっといていいらしいです。

419:デフォルトの名無しさん
08/06/23 11:04:36
それただのノベル。

420:デフォルトの名無しさん
08/06/23 11:11:11
プログラム部分なら作れるけど、ノベルはどうすんだよw

421:デフォルトの名無しさん
08/06/23 11:21:44
サウンドノベルみたいに選択肢で分岐するテキストアドベンチャーを作れば良いと理解した。
まってろ、今作ってる。

422:sage
08/06/23 11:42:17
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
5 つの数を double 型の配列 nums にキーボードから読み込んで,
それらの 3乗の和を出力するプログラムを作成せよ。
3 乗の和を計算する部分は,関数 double cubesum(double vc[], int no) とすること。
ここで,配列 vc はデータの格納された配列を,
no は入力したデータの個数を表す。
main 関数では個数の 5 は定数として扱って構わないが,
関数 cubesum では個数は引数で読み込むものとする。
つまり何個のデータにでも使える汎用性のあるものとして関数を定義する。
3 乗の和の計算は,main からその関数を呼び出して行う。

ヒント:関数の中の3乗和の計算には繰り返しの処理が必要となる。
for 文を使えば簡単に書ける。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年6月24日
[5] その他の制限:特になし

423:デフォルトの名無しさん
08/06/23 11:47:31
#include <stdio.h>

double cubesum(double vc[], int no)
{
double sum = 0.0;
int i;
for(i=0; i<no; i++) sum += vc[i] * vc[i] * vc[i];
return sum;
}

int main(void)
{
double nums[5];
int i;

for(i=0; i<5; i++) scanf("%lf", nums + i);

printf("%f", cubesum(nums, 5));

return 0;
}

424:デフォルトの名無しさん
08/06/23 12:12:47
>>415
マルチでもいいけどさ、環境と期限書こうぜ

425:415
08/06/23 12:32:18
環境はvista
言語はC++
起源ははっきりとは言ってなかったが夏休み前だと思います。

426:デフォルトの名無しさん
08/06/23 12:40:32
お前の夏休みなんか知らねーよww

427:350
08/06/23 12:43:59
>>412
動作に現れる部分を修正するのは大いに結構だが
現れない部分の修正しないで提出すると痛い目見るよ

例えばラインコメント(//)とか//コンストラクタとか//デストラクタとか
アルゴリズムだとかstaticばかりなのかとか

428:デフォルトの名無しさん
08/06/23 13:00:16
421だが、飽きた。
他の人に任せた。

429:デフォルトの名無しさん
08/06/23 13:00:43
微妙ですがage

430:425
08/06/23 13:26:52
期限だろ。字間違うなよ

431:デフォルトの名無しさん
08/06/23 13:29:51
夏休みの宿題になっちまうなw

432:デフォルトの名無しさん
08/06/23 14:03:54
[1] 授業単元:画像処理 [2] 環境  [2.1] OS:Linux  [2.2] 言語:C言語
#include <stdio.h>
#include <stdlib.h>
int main( int argc , char *argv[] )
{ unsigned short int ipi[256][32];
unsigned short int ipo[256][32];
FILE *fpi,*fpo;
int i,j;
if((fpi=fopen( "logo.gray" ,"rb")) == NULL) {
printf("file open error\n");
exit(-1); }
fread(ipi[0],sizeof(unsigned short int),256*32,fpi);
fclose(fpi);
for (j=0 ;j <256 ; j++){
for (i=0 ;i <32 ; i++){
if(127>ipi[j][i]){
ipo[j][i]=0; }
else{
ipo[j][i]=255; }
}
}
if((fpo=fopen( argv[2] ,"wb")) == NULL) {
printf("file open error\n");
exit(-1); }
fwrite(ipo[0],sizeof(unsigned short int),256*32,fpo);
fclose(fpo);
logo-bin.gray の境界点を抽出した画像を作成するプログラムを作成せよ。




433:432
08/06/23 14:07:01
return 0;
}最後にこれを忘れてました。分かりにくくてすみませんが問題はこれです。

logo-bin.gray の境界点を抽出した画像を作成するプログラムを作成せよ。

434:142
08/06/23 14:27:47
>>142ですがどうかよろしくお願いします。

435:デフォルトの名無しさん
08/06/23 15:02:30
>>415何気に難しいな。セリフしか作れん

436:デフォルトの名無しさん
08/06/23 15:11:15
[1] 授業単元:
C
[2] 問題文(含コード&リンク):()
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Microsoft Visual Studio 2008
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明日13:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

お願いします。


437:デフォルトの名無しさん
08/06/23 15:14:09
>>435
バッチファイルで書いた方が早い気がするw

438:デフォルトの名無しさん
08/06/23 15:23:43
/*未コンパイル 動作確認無し*/
#define N 7
#include <stdio.h>
struct{int linkable[3];char *prompt;
}scene[N]={
{1,3,5," [彼女]ねぇ挿れて"},
{0,2,4,"[貴方]麻呂のクソースくらえ〜"},
{1,3,5,"[彼女]もっと優しくぅ〜"},
{0,2,4,"[貴方]う〜きつい"},
{1,3,5,"[彼女]う〜固い"},
{2,4,6,"[貴方]出、出る〜"},
{7,7,7,"[彼女]駄目〜出しちゃ.汚れちゃう"},
}
int main(void){
int i=0,j;
wihle( i<N)[
printf("%s¥n",scene[i].prompt);
do{
printf("Select which?[1,2,3]?");scanf( "%d¥n",&j);
}while((j<1)&&(j>3));
i=scene[i].linkable[j];
}
return 0;
}

439:デフォルトの名無しさん
08/06/23 15:48:45
>>436
くそーすですが
URLリンク(kansai2channeler.hp.infoseek.co.jp)

440:デフォルトの名無しさん
08/06/23 15:53:19
>>439
すまん、関数の名前間違ってたので修正
URLリンク(kansai2channeler.hp.infoseek.co.jp)


441:デフォルトの名無しさん
08/06/23 15:54:10
>>439
微妙ですが我慢しておきます。

442:デフォルトの名無しさん
08/06/23 16:01:44
>>441
の優しさに世界が泣いた

443:デフォルトの名無しさん
08/06/23 16:11:09
こんなの書くような子じゃなかったんだけど...

444:デフォルトの名無しさん
08/06/23 16:13:59
トリ付けてないからなりすましの可能性も…
更に言うとこれも含めて自演の可能性もあるなww

445:デフォルトの名無しさん
08/06/23 16:15:39
1以上の正の整数の値をキーボードから入力し、1からNまでの和を求める
プログラムをC言語で作成せよ。 また、1から999までの和はいくらか?
お願いします。

446:445
08/06/23 16:21:31
間違えた問題の続きです。 1+2+・・・+N=Σi

あともうひとつ
1以上の正の整数の値をキーボードから入力し、1からNまでの2乗の和を求める
プログラムをC言語で作成せよ。 また、1から100までの和はいくらか?

1の2乗+2の2乗+・・・+Nの2乗=Σiの2乗
これもお願いします。 問題分かりにくくてごめんなさい。




447:デフォルトの名無しさん
08/06/23 16:22:55
>>445
#include <stdio.h>
int main(void)
{
int N;
printf("入力");
scanf("%d", &N);
printf("1から%dの和は%d\n", N, (1+N)*N/2);
return 0;
}


448:445
08/06/23 16:23:18
誰か432をお願い!

449:445
08/06/23 16:25:44
>>447

ありがとうございます。


450:デフォルトの名無しさん
08/06/23 16:29:47
ずいぶんとレベルの違う宿題が出る授業だなw
小学校と大学院が校舎共有してるのか?

451:デフォルトの名無しさん
08/06/23 16:32:35
外径、内径、高さの値を入力して、中空円筒の体積を計算するプログラム
をC言語で作成せよ。
#include<stdio.h>
#include<math.h>
main()
{
double pi,r1,r2,h,V;
途中までやりました。お願いです。



452:447
08/06/23 16:32:38
>>449
本当はforループで計算するのを求めていると思う


453:445
08/06/23 16:36:06
>>450
1年の授業と3年の授業ですw
432と446の問題を誰かお願いします。
期限は今週末です。

454:デフォルトの名無しさん
08/06/23 16:38:59
[1] 授業単元:
プログラミング
[2] 問題文(含コード&リンク):()
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ポインタ習ったばっかりです。

おねがいします。

455:デフォルトの名無しさん
08/06/23 16:40:02
>>432
"logo.gray"ってファイルは?
無くとも、もっと説明しなきゃ

”境界点を抽出”って意味は?
"logo.gray"が無いと説明出来ないならUPしなきゃ


456:454
08/06/23 16:41:08
問題文のリンク間違えました・・・ すいません
URLリンク(kansai2channeler.hp.infoseek.co.jp)

457:デフォルトの名無しさん
08/06/23 16:43:33
次の関数を計算するプログラムを作成せよ。C言語で。
y=3エックス2乗+2エックス-6

これ簡単だからやってみそ!

458:デフォルトの名無しさん
08/06/23 16:48:13
お前がやれ。

459:436
08/06/23 16:50:45
>>440
ありがとうございます。
>>441
貴方は誰ですか?

460:432
08/06/23 16:54:17
>>455

境界点を抽出の意味は僕もよく分からないです。ほんとにちんぷんかんぷんです。
単元は2値画像処理というところです。

461:デフォルトの名無しさん
08/06/23 16:56:00
>>460
輪郭抽出って事?
2x2 sobel フィルタとか使うの?

462:デフォルトの名無しさん
08/06/23 16:56:01
>>457
そんなこと言わないでさー やってよーん

463:デフォルトの名無しさん
08/06/23 16:57:14
>>457
意味不明なりよ

464:デフォルトの名無しさん
08/06/23 16:58:54
>>460
それじゃ、誰も出来ないだろw
もっと説明がいるぞ

"logo.gray"ってのは存在して、それの境界点抽出なのか
それとも任意の2値画像なのか

友達でも誰でも良いから聞いてきなw


465:432
08/06/23 16:59:55
輪郭抽出だと思います!
2x2 sobel フィルタは使わないと思います。
とにかくそういうc言語のプログラムを作成しろと言われて。
432を少し改良すればできると教授に言われました。

466:432
08/06/23 17:01:19
>>464

"logo.gray"は存在して、それの境界点抽出です!

467:デフォルトの名無しさん
08/06/23 17:06:34
>>457
y = 3*x*x+2*x-6;

468:デフォルトの名無しさん
08/06/23 17:16:00
>>466

なんだ?意図的にとぼけてるのか?
それなら"logo.gray"をUPしなきゃ、誰も出来ないだろ
って言ってるんだけど…

469:デフォルトの名無しさん
08/06/23 17:18:41
>>466
16.bitグレイスケール画像を作ってうp!

470:デフォルトの名無しさん
08/06/23 17:21:18
>>451
#include<stdio.h>
main()
{
double pi,r1,r2,h,V;
printf( "外径\n" );
scanf( "%lf", &r1 );
printf( "内径\n" );
scanf( "%lf", &r2 );
printf( "高さ\n" );
scanf( "%lf", &h );
pi = 3.14159265358979;
V = (pi * (r1 / 2.0) * (r1 / 2.0) + h) - (pi * (r2 / 2.0) * (r2 / 2.0) + h);
printf( "中空円筒の体積\n%f\n", V );
return 0;
}

471:デフォルトの名無しさん
08/06/23 17:22:57
1] 授業単元:授業じゃないんですが、質問スレがここしか分からなかったのでお願いします。
[2] 問題文(含コード&リンク):
#include<stdio.h>
 int main(void){
 int teika;
 printf("定価を入力してからENTERを押してください。\n");
 scanf("%d",&teika);
 printf("1割引だと%4d円\n",(int)(teika*0.9));
 printf("3割引だと%4d円\n",(int)(teika*0.7));
 printf("5割引だと%4d円\n",(int)(teika*0.5));
 printf("8割日だと%4d円\n",(int)(teika*0.2));
 return 0;
}

このプログラムで、1000とかキリの良い数値を入力すると、3割引だけ1円だけずれた値が帰ってきちゃいます。
これってなんでですかね?
[3] 環境
 [3.1] OS:WindowsXP SP2かな?
 [3.2] コンパイラ名とバージョン:CPad for Borland C++Compiler Version 2.31
 [3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:基礎は一通りやって、授業ではそれを応用して色々やらされてます。
が、ところどころ分からないので一人で最初から勉強し直してます。

472:デフォルトの名無しさん
08/06/23 17:25:48
[1] 授業単元: 実験
[2] 問題文 (1)ベクトルの内積を求めるプログラムを書け
(2)3×3の行列の掛け算を行う関数を作り、標準入力から入力した行列を
       掛け算するプログラムを書け
       (ヒント 2重配列が必要。 double matrix[3][3];)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月26日まで
[5] その他の制限:
 特になし

473:デフォルトの名無しさん
08/06/23 17:25:48
>>471
切り捨てたいの?切り上げたいの?四捨五入したいの?

474:デフォルトの名無しさん
08/06/23 17:35:50
>>473
なんでもいいです。
参考にしてるサイトのやり方に従ってそこまで作りました。
やっぱ(int)が影響してるんですかね?
と思って全部それ取って実数型にしたら直りました。
どんな原因なんでしょう…


475:デフォルトの名無しさん
08/06/23 17:42:35
>>474
浮動小数点数は条件が合わない限り小数ぴったりの数値を扱えないので
内部ではその数値に近い値に丸められている

0.7 はコンピュータ内部では 0.7 より小さな値で格納されていて
0.9 と 0.2 は少し大きな値になってるんだろう

476:デフォルトの名無しさん
08/06/23 17:58:49
>>475
やはりコンピュータ上の問題ですか。
プログラムの作り方を変えるとかしないと解決できないわけですね。
ありがとうございました。

477:デフォルトの名無しさん
08/06/23 18:04:56
>>453
アンカー付けろ
テンプレ使え
数字は半角(まぁ全角でも困らないけどさ)

478:デフォルトの名無しさん
08/06/23 18:08:55
>>471
3割引だったら7倍してから10で割ってみてはどうだろう。
teika * 7 / 10

479:デフォルトの名無しさん
08/06/23 18:12:32
>>415
URLリンク(kansai2channeler.hp.infoseek.co.jp)
宿題っぽくしてみた。
入力されたデーターが不正な場合は飛ぶので、それがダメなら適当に直して

480:デフォルトの名無しさん
08/06/23 18:18:20
>>471
1円どっちにずれてる?
割る前に2円足すか1円引けばいいんじゃね?

481:デフォルトの名無しさん
08/06/23 18:20:06
>>480
定価を入力してからENTERを押してください。
1000
1割引だと 900円
2割引だと 800円
3割引だと 699円
4割引だと 599円
5割引だと 500円
6割引だと 400円
7割引だと 299円
8割引だと 200円
9割引だと 100円

482:デフォルトの名無しさん
08/06/23 18:22:46
>>481
round ceil floor のいずれを使ってもピッタリの数値になるのに
キャスト(int)による型変換のときだけ1円ずれる
めんどくせー

483:デフォルトの名無しさん
08/06/23 18:36:31
どなたか>>90お願いします

484:デフォルトの名無しさん
08/06/23 18:46:59
>>478
なるほど。
そういう風にすればいいのですね。
ありがとう。

>>480
>>481の通りです。

>>482
めんどいっすねw

でも宿題じゃなくてなんとなく答えも見えたんでおkです!
皆様ありがとう。

485:デフォルトの名無しさん
08/06/23 18:51:51
>>446
いくらなんでも簡単すぎだろ。
丸投げしすぎ。

486:デフォルトの名無しさん
08/06/23 19:03:05
>>456
URLリンク(kansai2channeler.hp.infoseek.co.jp)

487:446
08/06/23 19:07:34
>>485
そうですか。反省します。

488:451
08/06/23 19:09:41
>>470

サンクス

489:デフォルトの名無しさん
08/06/23 19:41:33
>>483>>90
〜省略〜
BITREE_TYPE sumValue(BITREE_NODE *p){
BITREE_TYPE total = 0;
if(p->left) total += sumValue(p->left);
if(p->right) total += sumValue(p->right);
total += p->value;
return total;
}
int main(int args, char **argv){
BITREE_NODE *p;
int end=0;
if(args < 2) return 1;
p = inputBITree(argv+1, args-1, &end);
printf("合計は %d です\n", sumValue(p));
printf("左部分木の合計は %d です\n", sumValue(p->left));
printf("右部分木の合計は %d です\n", sumValue(p->right));
destroyBITree(p);
return 0;
}

490:デフォルトの名無しさん
08/06/23 19:55:16
[1]プログラミング言語C
[2]@3より大きく、入力された上限の数未満の全ての自然数かつ非素数に
ついて、3で割り切れるものは無視し、3で割った余りが1のものは加算
し、余りが2のものは減算して合計を求めよ。
 A次のように表示する
Input Upper Limit : 11 [Enter]
Answer is : 6
 B配列、平方根は使ってはならない。
[3]@windows vista
  Agcc
  BC言語
[4]2008/6/23/21:00まで
[5]今年の春から始めたので、まだ基礎のほうです。
よろしくお願いします。

491:デフォルトの名無しさん
08/06/23 20:38:26
[1] 授業単元: 課題
[2] 問題文
h URLリンク(www.elc.ees.saitama-u.ac.jp)
h URLリンク(www.elc.ees.saitama-u.ac.jp)
[3] 環境
 [3.1] OS : windows vista
 [3.2] コンパイラ名とバージョン: Borland C++Compiler Version 2.31
 [3.3] 言語: C
[4] 期限: 6月26日(印刷の必要があるため)
[5] その他の制限:
 特になし

身を晒す事になりますが、お願いします。


492:デフォルトの名無しさん
08/06/23 20:46:24
>>490
URLリンク(kansai2channeler.hp.infoseek.co.jp)

493:491
08/06/23 20:52:41
h URLリンク(kansai2channeler.hp.infoseek.co.jp)

πの計算のコンパイルが通るところまで作りました。
Cはじめて2ヶ月で出た課題です。
ほとんど回答は載せてあるからこのレベルらしいですが、
正直見直しても全く分からないです。

494:491
08/06/23 20:55:59
h URLリンク(kansai2channeler.hp.infoseek.co.jp)

πの計算のコンパイルが通るところまで作りました。
Cはじめて2ヶ月で出た課題です。
ほとんど回答は載せてあるからこのレベルらしいですが、
正直見直しても全く分からないです。

495:デフォルトの名無しさん
08/06/23 20:58:38
>>492
マヂ助かった!!ありがとう!!

496:デフォルトの名無しさん
08/06/23 21:03:23
>>413
8x8の解がいくつあるのか試してみて欲しいな

497:デフォルトの名無しさん
08/06/23 21:08:47
>>490
URLリンク(kansai2channeler.hp.infoseek.co.jp)

498:デフォルトの名無しさん
08/06/23 21:14:04
>>490
URLリンク(kansai2channeler.hp.infoseek.co.jp)

499:デフォルトの名無しさん
08/06/23 21:20:12
>>489
ありがとうございます。
./a.out [ 6 [ 8 1 5 ] [ 3 _ 9 ] ]と入力すると

$ ./a.out [ 6 [ 8 1 5 ] [ 3 _ 9 ] ]
合計は 29 です
左部分木の合計は 14 です
右部分木の合計は 9 です

という風に出て、実効例どおりに行かないのですが、どこがおかしいのでしょうか?
省略と書いてあるところには、URLリンク(kansai2channeler.hp.infoseek.co.jp)
・2分木の基本的な操作関数をそのまま貼り付けただけです

500:デフォルトの名無しさん
08/06/23 21:28:06
比較的簡単な問題が出るとここぞとばかりに回答が提示されるよね

501:デフォルトの名無しさん
08/06/23 21:29:24
簡単な問題解いてなんの意味があるって感じだよな

502:デフォルトの名無しさん
08/06/23 21:31:25
肩慣らし

503:デフォルトの名無しさん
08/06/23 21:32:29
簡単な問題をだらだらと置いておいても意味ないし

504:デフォルトの名無しさん
08/06/23 21:33:01
>>500
だから何?お前基準で簡単とか言われても基準が曖昧なんだが。
お前が簡単だと思っているだけで、実際にお前が解いてもミスだらけなんじゃね?

505:デフォルトの名無しさん
08/06/23 21:33:13
>>501
それが解けない奴の為のスレだw

506:デフォルトの名無しさん
08/06/23 21:33:21
【回答テンプレ】
[1] 回答レベル:ノーチェック/コンパイル済/テスト済/清書済
[2] 回答 短いものは、直接記入可 もしくはリンク
[3] 開発環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイル/テストに使用した
 コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4]コメント

なーんてね

507:デフォルトの名無しさん
08/06/23 21:45:21
>>504
ひとつの問題に対して複数者から解答が上がったら概ね平易
ひとつの問題に対して複数者が議論を始めたら面白みのある問題

ミスだらけかもね

508:デフォルトの名無しさん
08/06/23 21:51:39
誰かの解答に対して議論が始まることもあるけどなー

509:デフォルトの名無しさん
08/06/23 21:53:40
>>507
うん、だから お前基準 ほど 難易度 として当てにならないっつってんだが?
一言居士はうざいって意味が分からない?四の五の言わずにてめぇレスしろよw

510:デフォルトの名無しさん
08/06/23 21:55:56
>>492 はなぜ (i+1) やら、i=0からスタートしているのかと?
>>490
> 入力された上限の数未満
おかげで未満じゃなくなってるし・・・

511:デフォルトの名無しさん
08/06/23 21:58:41
なんという自己参照定義 循環論証

512:デフォルトの名無しさん
08/06/23 22:07:59
>>509
もうお前一言居士ってコテハンにしろよ

513:デフォルトの名無しさん
08/06/23 22:10:56
ってか>>507が自分基準で難易度の話をしているように読めるのなら文盲だな
あ、文盲って言葉も使っていいよ。自分が知らない他人を批判する言葉とか大好きそうw

514:デフォルトの名無しさん
08/06/23 22:12:27
すいません、この問題をおねがいします。

[1] 授業単元: Cプログラミング演習
[2] 問題文(含コード&リンク)

2以上32767以下の素数を求める。
整数nが素数かどうかは、2から√nまでの素数で割り切れるかどうか判定して、
そのすべてで割り切れなければnは素数となる。また、2以外の偶数は素数にならないから、
3以上の整数については奇数だけを対象にして求めればよい。
余力があれば、long型を対象にして2から2^31-1までの素数を求めてみよ。




[3] 環境
 [3.1] OS: (Windows vista)
 [3.2] コンパイラ名とバージョン: (visual studio 2005 )
 [3.3] 言語: (C言語)
[4] 期限:今週中
[5] その他の制限: (自分のレベルはかなり低いので難しい関数はなしでお願いします・・・)


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4256日前に更新/251 KB
担当:undef