C/C++の宿題を片付け ..
[2ch|▼Menu]
237:デフォルトの名無しさん
08/06/11 18:11:00
>>234
URLリンク(kansai2channeler.hp.infoseek.co.jp)

238:デフォルトの名無しさん
08/06/11 18:11:34
>>237 は取り消し。早とちりしとった・・・

239:デフォルトの名無しさん
08/06/11 18:13:05
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):()
クイックソートにより配列をソートするプログラムを作れ
URLリンク(www2.uploda.org)
ネットを参考に書いたのですが、中途半端にしかソートされません
どこが違うのか指摘お願いします
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008/6/3まで
[5] その他の制限: とくになし

240:デフォルトの名無しさん
08/06/11 18:13:52
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年06月12日18:00
[5] その他の制限:ポインタまで学習済み


241:デフォルトの名無しさん
08/06/11 18:19:03
>>234
URLリンク(kansai2channeler.hp.infoseek.co.jp)

242:デフォルトの名無しさん
08/06/11 18:19:19
>>234
#include<stdio.h>

int main(void){
char *filename="data.txt";
FILE *fp;
int i, data;
double average=0.0;

if(!(fp=fopen(filename, "r"))) return 1;
for(i=1;i<=1000;i++){
if(fscanf(fp, "%d", &data)!=1) break;
average=(average*(i-1)+data)/i;
}
printf("%f\n", average);

return 0;
}

243:デフォルトの名無しさん
08/06/11 18:21:16
[1] 授業単元:プログラム実習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語: C++
[4] 期限:なし
[5] その他の制限:なし

問題文はソースの上に記しています

244:デフォルトの名無しさん
08/06/11 18:22:29
>>242
一々平均計算しなおすのはどうかと思うぜ。

245:デフォルトの名無しさん
08/06/11 19:09:48
【質問テンプレ】
[1] 授業単元:情報ネットワーク論
[2] 問題文(含コード&リンク):
基数変換プログラムを作成しなさい。
「元:2〜16進数(選択)→変換先:2〜16進数(選択)」
という基数の指定ができるようにすること
[3] 環境
 [3.1] OS:Window
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:6月19日まで
[5] その他の制限:基数変換を行う関数や外部プログラム等を用いてはいけない

プログラミング類はやらないと言われていたのに出てしまいお手上げです
よろしくお願いします

246:デフォルトの名無しさん
08/06/11 19:15:57
>>240
1.
#include <stdio.h>

int chkmatch(char *t1, char *t2)
{
while(*t2) if(*t1++!=*t2++) return 0;
return 1;
}

int main(void)
{
char t1[256], t2[256], *p;

scanf("%s", t1);
scanf("%s", t2);

for(p=t1; *p; p++) if(chkmatch(p, t2)) break;

printf("%s", *p ? "yes" : "no");

return 0;
}

247:デフォルトの名無しさん
08/06/11 19:18:07
>>240
2.
#include <stdio.h>
int chkmatch(char *t1, char *t2){
while(*t2) if(*t1++!=*t2++) return 0;
return 1;
}
char *findstr(char *t1, char *t2){
while(*t1) {
if(chkmatch(t1, t2)==1) return t1;
t1++;
}
return NULL;
}
int main(void){
char *p, *q, *tag, t1[256], t2[256];
scanf("%s%s", t1, t2);
p = t1;
while(*p) {
tag = findstr(p, t2);
if(tag == NULL) {
while(*p++) putchar(' ');
break;
}
while(p!=tag) {
putchar(' ');
p++;
}
for(q=t2; *q; q++, p++) putchar('^');
}
return 0;
}

248:デフォルトの名無しさん
08/06/11 19:20:39
>>240
3.
#include <stdio.h>

void swapmax(int *data, int num)
{
int temp, i, max_indx = 0;

for(i=1; i<num; i++) if(data[i] > data[max_indx]) max_indx = i;

temp = data[0];
data[0] = data[max_indx];
data[max_indx] = temp;
}

int main(void)
{
int data[10], i, n;

scanf("%d", &n);

for(i=0; i<n; i++) scanf("%d", data + i);

swapmax(data, n);

for(i=0; i<n-1; i++) printf("%d ", data[i]);
printf("%d", data[i]);

return 0;
}


249:デフォルトの名無しさん
08/06/11 19:56:19
>>243
URLリンク(kansai2channeler.hp.infoseek.co.jp)

250:デフォルトの名無しさん
08/06/11 20:02:48
>>245
文字列を整数に
int my_strtol(char* str, int base) {
int l, val;
l = 0;
while (*str) {
if (*str >= '0' && *str <= '9') {
val = *str - '0';
}
else if (*str >= 'A' && *str <= 'F') {
val = *str - 'A' + 10;
}
else if (*str >= 'a' && *str <= 'f') {
val = *str - 'a' + 10;
}
// 16進数以外の文字が出たらそれまでの数値を返す
else {
return l;
}
// 基数以上の数値が出たらそれまでの数値を返す
if (val >= base) {
return l;
}
l *= base;
l += val;
str++;
}
return l;
}

251:デフォルトの名無しさん
08/06/11 20:03:54
>>245
整数を文字列に
int my_ltostr(int l, int base, char *str, int len) {
int val, mod, i;
val = l;
i = 0;
// 桁数を求める
while (val) {
val /= base;
i++;
}
// 文字数オーバー
if (i > len) {
return -1;
}
str[i + 1] = '\0';
for (; i >= 0; i--) {
mod = l % base;
if (mod >=0 && mod <= 9) {
str[i] = mod + '0';
}
else if (mod >= 10 && mod <= 15) {
str[i] = mod - 10 + 'A';
}
l /= base;
}
return 0;
}

252:デフォルトの名無しさん
08/06/11 20:07:08
うpロダ使え

253:デフォルトの名無しさん
08/06/11 21:28:14
【質問テンプレ】
[1] 授業単元:自習
[2] 問題文(含コード&リンク):
グレースケール化した画像の0〜3次までのモーメントMpqを求めたいです。
Mpq = ΣΣ((x-xx)^p)*((y-yy)^q)*f(x,y)
xx = M10/M00 = ΣΣx*f(x,y) / ΣΣf(x,y)
yy = M01/M00 = ΣΣy*f(x,y)/ ΣΣf(x,y)

数式の記述はこちらのほうが見やすかったです
URLリンク(mikilab.doshisha.ac.jp)

[3] 環境
 [3.1] OS: CentOS5.0
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:6/14
[5] その他の制限: 特になし
使っている画像の種類はpgmです。
よろしくお願いいたします。

254:デフォルトの名無しさん
08/06/11 21:35:30
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):int a[4]={30,15,60,5}を昇降に並び替える。(ポインタ使用)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月11日11:00まで
[5] その他の制限: ポインタ・再帰まで学習済み。

関数部分でif文で左右を比較し、whileかfor文を用いて繰り返すことはわかったのですが、どう書いていいかわかりません。お願いします。

255:デフォルトの名無しさん
08/06/11 21:37:40
>>245
URLリンク(kansai2channeler.hp.infoseek.co.jp)
10進数をn進数に変換するのみ。10進数以外は適当に
一度10進数にしてから変換し直す仕組みでも作って下さい ><;

256:デフォルトの名無しさん
08/06/11 21:46:44
>>254
#include <stdio.h>
#include <stdlib.h>

static int cmp(const void*a, const void*b) {
return *(int*)a < *(int*)b ? -1: *(int*)a > *(int*)b ? 1 : 0;
}

int main(void) {
int a[4] = {30, 15, 60, 5};
qsort(a, sizeof a/sizeof *a, sizeof *a, (int(*)(const void*, const void*))cmp);
return 0;
}

257:デフォルトの名無しさん
08/06/11 21:51:11
1] 授業単元:C言語
[2] 問題文(含コード&リンク):西暦yy年mm月dd日と(文字には1から12の数字が入る)入力するとその日の昨日の日付と明日の日付
を出力するプログラムをつくれ
ただし閏年については以下のプログラムを使うこと

int isleap(int year)
{
return (year % 4 == 0 && year % 100 != 0 || year % 400 = 0);
}



[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 来週まで
[5] その他の制限: swich文は使わない方向でお願いします


258:デフォルトの名無しさん
08/06/11 21:52:03
>>256
できました

ありがとうございました。

259:デフォルトの名無しさん
08/06/11 21:52:13
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク)課題:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
 [3.3] 言語: C
[4] 期限: 6月13日
[5] その他の制限: 特に無し

初歩的なことかも知れませんが
どうかよろしくお願いします

260:257
08/06/11 21:54:11
間違えました……
閏年については以下のプログラムを使うこと→うるう年は以下の関数で判定すること

261:デフォルトの名無しさん
08/06/11 22:15:21
[1] 授業単元:C言語入門
[2] 問題文:
「キーボードから異なる実数を3つ入力し、大きい順に3つの値を
表示させるプログラム」をswitch文を用いて作成せよ。

「キーボードから数値を1つ入力し、実数か整数か自然数か判定し、
当てはまるものすべてを表示するプログラムを作成しなさい」

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 明朝7:00まで
お願い致します。

262:デフォルトの名無しさん
08/06/11 22:40:53
>>261 適当
#include<stdio.h>
int main()
{
double a[3], t;
int i, j;
for(i = 0; i < 3; i ++)
scanf("%lf", a+i);
for(i = 0; i < 3; i ++)
for(j = i + 1; j < 3; j ++)
if(a[i] < a[j]) {
t = a[i]; a[i] = a[j]; a[j] = t;
}
for(i = 0; i < 3; i ++)
printf("%g\n", a[i]);
return 0;
}
-----------------------------------
#include<stdio.h>
#include<math.h>
int main()
{
double a, b;
scanf("%lf", &a);
printf("%gは実数です。\n", a);
if(modf(a, &b) == 0) {
printf("%gは整数です。\n", a);
if(b > 0.5)
printf("%gは自然数です。\n", a);
}
return 0;
}

263:デフォルトの名無しさん
08/06/11 22:43:54
マジでうpロダ使え・・・

264:デフォルトの名無しさん
08/06/11 22:50:24
>>261
携帯からなんで1のヒントだけ
switch((a>b)+(b>c)*2+(c>a)*4)

265:デフォルトの名無しさん
08/06/11 22:55:45
>>257
URLリンク(kansai2channeler.hp.infoseek.co.jp)

266:デフォルトの名無しさん
08/06/11 22:59:53
>>260 >>257
return (year % 4 == 0 && year % 100 != 0 || year % 400 = 0);
明らかに括弧の位置と、 year%400 == 0 の部分が間違っているんで訂正

267:261
08/06/11 23:21:54
>>264
switchの中がそんな事に・・・どうなるのか見当がつかないです

268:デフォルトの名無しさん
08/06/11 23:30:22
>>259
画像処理のことはあまりわからんので、ちょっと質問。
・グレースケールの画像を使うと書いてあるが、読み込んだRGBの値がバラバラの場合、輝度はRGBの平均値でおk?
・ヒストグラムの形式は何でもいい?例えば、N=8だったらこんな感じ?
0: *****
32: ************
64: *******
96: ********************
128: ***************************
160: ***************
192: ****
224: **


269:デフォルトの名無しさん
08/06/11 23:41:30
[1] 授業単元:プログラミング基礎
[2] 5人の学生の3教科(国語・数学・英語)の点数を2次元配列を用いて次の二つ
   の処理を実行するプログラムを作成せよ
  @科目別の最高点を求める
  A各学生の平均点を求める
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン: borland5.5.1
 [3.3] 言語:C
[4] 期限: 2008年6月12日中
[5] その他の制限: 特になし

よろしくお願いします

270:デフォルトの名無しさん
08/06/11 23:56:27
>>268
自分がいまいちわかってないので自信がないのですが
グレースケール画像の各成分の輝度値を量子化する以外は
平均値をとるなどの指示はないです。
ヒストグラムの方は後でエクセルで処理をするので
値をテキストファイルに保存できればいいです。

271:デフォルトの名無しさん
08/06/12 00:05:02
>>253
pgm形式、rawとascii、2つのモードがあるですが。両方対応ですか?

272:257
08/06/12 00:13:26
>>265 >>266
こんなに早くしてくれるとは
マジで助かりました
ありがとうございます

273:デフォルトの名無しさん
08/06/12 00:43:55
>>269
URLリンク(kansai2channeler.hp.infoseek.co.jp)
エラーチェックもしてないし
終了もしてないけどおやすみなさい。

274:デフォルトの名無しさん
08/06/12 00:48:23
>>228
勘違いしていたのでもう一度書き込みします。

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
1.0/1による8桁の2つの2進数入力に対して,それらの和を2進数表現で求め,その2進数表現を出力せよ.
このとき,2ビットの論理和,論理積,排他的論理和を求める関数,および,これらを用いて2進数1桁の加算を行う全加算器の機能を関数で実現すること.
なお,確認を容易にするため,入力と出力の各2進数に対する10進数表現も出力すること.
さらに2の補数を用いて負の数も扱えるように拡張せよ.
2.2つの2進数の差を求めるプログラムを作成せよ.
3.任意の(変数や定数で指定した)桁数の2進数を扱えるようにせよ.
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C++
[4] 期限:2008年06月11日まで
[5] その他の制限:1については 2の補数を用いて負の数も扱えるように拡張する前までは作ることができたのでうpしておきます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

よろしくお願いします。

275:デフォルトの名無しさん
08/06/12 00:54:05
レスが遅れて申し訳ございません
前スレの
スレリンク(tech板:753-756番)
有り難う御座いました
勉強させて頂きます


276:デフォルトの名無しさん
08/06/12 01:15:08
>>274 です。
[4] 期限:2008年06月12日までですが最終16日まで大丈夫です。

277:デフォルトの名無しさん
08/06/12 02:02:12
えっ?クソアッー!は両方一致、すなわち a==b のとき 0 を返し
一致しない場合は 1 を返せばおk、だったかと。

278:デフォルトの名無しさん
08/06/12 02:23:07
>>239
流れてたんであげなおします
URLリンク(kansai2channeler.hp.infoseek.co.jp)
よろしくお願いします

279:デフォルトの名無しさん
08/06/12 02:34:38
>>259,270
Dll_BMP_C.h とかいうファイルがないので動くかどうかわからんが
とりあえずExcelで読めるようCSVで出力するようにした
URLリンク(kansai2channeler.hp.infoseek.co.jp)

280:デフォルトの名無しさん
08/06/12 02:57:18
>>239
釣りっぽい気もするけど、とりあえずtyuuouの後半が間違ってんじゃん

281:デフォルトの名無しさん
08/06/12 03:19:27
>>274
URLリンク(kansai2channeler.hp.infoseek.co.jp)

> さらに2の補数を用いて負の数も扱えるように拡張せよ.
先頭の桁が1なら負にするようにしてあるけど、それは
10進数に変換するときの計算結果でやってます。

> 2.2つの2進数の差を求めるプログラムを作成せよ.
これはやってない。

282:デフォルトの名無しさん
08/06/12 03:20:20
>>281 あぁ、あと free してなかった、すまそ。

283:デフォルトの名無しさん
08/06/12 03:21:38
[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC6.0
 [3.3] 言語:C++
[4] 期限:
[5] その他の制限:問題文上部に記載

よろしくお願いします

284:デフォルトの名無しさん
08/06/12 03:34:27
>>283
問題文上部を理解することのなんと困難なことか!

285:デフォルトの名無しさん
08/06/12 03:39:28
[1] 授業単元:プログラミング技術
[2] 問題文(含コード&リンク):
文字列を反転させて表示するプログラムを作成せよ。
ここでの”反転”とは例えば”Program”という文字列を入力したら
”margorP”と出力するものである。
(実行例)
文字列を入力せよ:Program
反転した文字列:margorP

単純な配列の並び替えでOKです、文字の長さを調べるstrlenの使用可。
ただし終端文字をどのように扱うかは注意。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:本日6/12 午後1時までにお願いします。

当方strlenで文字列カウントして、その後どうすれば文字列を反転させられるのかが分かりません。

286:デフォルトの名無しさん
08/06/12 03:43:03
>>283
どうすりゃいいの
input()をメンバ関数で持っていいの?

287:デフォルトの名無しさん
08/06/12 03:45:08
いいよ!

288:デフォルトの名無しさん
08/06/12 03:46:39
>>285
>>211

289:デフォルトの名無しさん
08/06/12 03:50:45
>>279
参考にさせてもらってどうにかできました!
本当にありがとうございます〜
助かりました

290:デフォルトの名無しさん
08/06/12 04:13:27
>>288
???
strlenも使ってないし、分からない関数だらけでC言語なんでしょうか?

291:デフォルトの名無しさん
08/06/12 04:20:10
#include <stdio.h>

int main(void)
{
char *p, str[256];

printf("文字列を入力せよ:");
scanf("%s", str);

for(p=str; *p; p++);
printf("反転した文字列:");
while(p-- > str) putchar(*p);

return 0;
}

292:デフォルトの名無しさん
08/06/12 04:20:23
>>210
> いらんもんを付け足すほうがアホだろ。
勝手にお前が要らんって思っているだけで、本当は必要なものだよw
バーカ、gdgd知ったか無知を晒す前にこのスレに来るな、来ても
発言せずにROMってろ、クズ

293:デフォルトの名無しさん
08/06/12 04:22:10
>>285
#include <stdio.h>
#include <string.h>

int main(void)
{
char buf[80], t;
int i, len;

printf("文字列を入力せよ:");
gets(buf);

len = strlen(buf);
for (i = 0; i < len / 2; i++)
t = buf[i], buf[i] = buf[len - i - 1], buf[len - i - 1] = t;

printf("反転した文字列:%s\n", buf);

return 0;
}

294:デフォルトの名無しさん
08/06/12 04:25:18
Cには暗黙の型変換があるからキャストする必要はない。
sizeof(char)は1であるので省略可能。

どちらもあってもなくても問題はない。

295:デフォルトの名無しさん
08/06/12 04:25:32
>>210
ソースも書かない、知ったような口を聞いているお前が言うと笑えるw

296:デフォルトの名無しさん
08/06/12 04:27:20
>>294
> どちらもあってもなくても問題はない。
ダウト。適切か不適切か、考えたら普通はそんなことは言わない。
そもそも、char型が単に1バイトだから、たまたま都合よく通っただけ。
本来あれを正式な場所でやった場合、不適切とされ、どんな言い訳をしても
知らなかったと駄目だしをされるだけだよ。これだから ド素人 は口を閉じてろって
言われるんだよw

297:デフォルトの名無しさん
08/06/12 04:29:20
>>291
ありがとうございます、ただ*pがどういう意味なのか分からなかったです。

>>293
こちらもありがとうございます、これなら当方にもちゃんと分かります。
とても参考になります。

298:デフォルトの名無しさん
08/06/12 04:29:21
>>294
キャストの場所を勘違いしていないか?にしても、mallocの前に
記述していないのは大減点。おまけに、そこじゃなくて
fseekの0Lについてでは?これについても問題はなかったにしろ
どちらも問題が無かっただけで、コードとしては完全に不適切。
だから要らん口出しはしない方が、自分が無知、バカだと露呈せずに済むよw

299:デフォルトの名無しさん
08/06/12 04:29:34
このスレにどうぞ
sizeof(char)が必ず1でも、省略すべきではない
スレリンク(tech板)

300:デフォルトの名無しさん
08/06/12 04:33:43
関数へ与える値が、型を宣言した変数の識別子ではなく
定数という点で、long型の変数に引き渡すことになっているため
ほとんどの資料には後ろにLを記述しているものが見られるよ。
中には書いてないものもあるが、符号無しでUをつけるように
いくら暗黙のキャストがあろうが、適切なコードに対して

蛇足

なんて知ったかぶるからバカにされるんだよ。そんな知ったかが
適切な記述を蛇足って言うなら、そいつは本当に必要なものに対しても
蛇足と思い込んでいるだろうね。これだから視野の狭い奴は相手にならねー

301:デフォルトの名無しさん
08/06/12 04:35:05
なんでこんな時間に蒸し返してまで顔真っ赤なんだろ

302:デフォルトの名無しさん
08/06/12 04:49:44
>>281 様。ありがとうございます。


303:デフォルトの名無しさん
08/06/12 04:57:59
蛇足でもないのにアホとか、発言したがために無知を晒したアホが
言うと笑えねーな・・・少なくとも>>210はプログラマには向いてない。
些細なことでイラついて、ムッキーポッポーで、業界に入っても
淘汰されて下手すりゃ排除されるよ。あぁ恐ろしや恐ろしや。

304:デフォルトの名無しさん
08/06/12 05:01:09
さすがにpowに渡すからってループ変数をdoubleにしたキチガイは言うことが違うw

305:デフォルトの名無しさん
08/06/12 05:20:06
ループ変数がdoubleでも小数点以下を使わなければ
桁落ち誤差が累積する事はない

306:デフォルトの名無しさん
08/06/12 05:26:52
円の中心に原点をおくと、格子点はi,jを整数として座標(i,j)で表される。(i,j)が円環に含まれる場合に1,含まれない場合に0を返却する関数
is_inrarge(double r, int i, int j)
を作成し
というところまでを自分でr、i、jを入力する方法でやって
#include <stdio.h>
#include<math.h>
#include<stdlib.h>
int main(void)
{
int r,i,j;
printf("r,i,j =");
scanf("%d,%d,%d", &r,&i,&j);
printf("%d,%d,%d \n",r,i,j);
inrange();
return 0;
}
int inrange(double r,int i, int j)

{
double o,p,q;
o=r*r;
p=(i*i+j*j);
q=(r+1)*(r+1);
if (q >= p && p>o){
printf("1");
}else{
printf("0");
}
}
ここまでやって5時間かけてもどうにもうまくいきません。
vista vc05ですけど関係ないような気もします。
誰か教えてください。

307:デフォルトの名無しさん
08/06/12 05:29:11
途中の↓はどうにも行かなくて確認で入れてみたら
代入した直後の数字とは別の数字が出ます。
printf("%d,%d,%d \n",r,i,j);
わけがわかりません

308:デフォルトの名無しさん
08/06/12 05:39:07
>>307
//inrange()
としてもう一度確かめてみそ

309:デフォルトの名無しさん
08/06/12 05:42:14
[1] 授業単元: プログラミング技術V
[2] 問題文(含コード&リンク):
任意の文字列を配列に読み込み、その中に出てくる特定の文字列を指定した文字列に置き換えるプログラムを作成せよ。
(実行例)
文字列を入力せよ : kadai no teisyutukigen ha mamore
置き換え元を入力せよ : kadai
置き換え後を入力せよ : report
結果 : report no teisyutukigen ha mamore

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C言語
[4] 期限: 本日午後2時までにお願いします。
[5] その他の制限: 空白ごと読み込む方法はgetchar命令、もしくはfgets命令を用いるとよい。

310:デフォルトの名無しさん
08/06/12 05:58:41
>>305
pow関数にdouble渡してカウンタにしてたってーのは知らないけど
情報落ちも考慮するとdoubleは異常

311:デフォルトの名無しさん
08/06/12 06:01:42
>>309
入力:111
置き換え元:11
置き換え後:aa

結果:aa1
結果:1aa
どっち?

312:デフォルトの名無しさん
08/06/12 06:02:22
double d=(double)10000000000000,e=(double)0.0;

while( e<d )
e+=(double)1.0;

このコードは停止するか?


313:デフォルトの名無しさん
08/06/12 06:06:23
>>311
最初に見つかった方をするようにお願いします。
結果:aa1

314:デフォルトの名無しさん
08/06/12 06:45:29
>>304
お前が相当な馬鹿だということが分かった・・・っつか、お前の言っていることって
言わなきゃ良いことばかりだよ?かなりあほだな・・・進路を変えろ、基地外

315:デフォルトの名無しさん
08/06/12 06:47:54
URLリンク(www.bohyoh.com)
double pow(double x, double y);

知った無知の基地外は、自分基準で相手を罵倒することに
専念するだけだから困る。しっかりと資料を提示するなり
見れば無駄口を叩くこともなかっただろうに。
適切な取り扱いを知らない奴は、こういった業界では
絶対に通用しない。

316:デフォルトの名無しさん
08/06/12 06:54:33
[1]授業単元:プログラミング基礎論
[2]URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:borland c++5.5
[4] 期限:来週の月曜日
[5] その他の制限:関数まで習いました
ぜんぜんわからないのでよろしくお願いします

317:デフォルトの名無しさん
08/06/12 07:33:40
>>306
入力するとき,で区切って入力してないってオチじゃない?

318:デフォルトの名無しさん
08/06/12 07:40:04
>>316
#include <stdio.h>
int my_tolower(int ch)
{
if('A'<=ch && ch<='Z') ch += ('a' - 'A');
return ch;
}
int main(void)
{
char str[256];
int i, len;

scanf("%s", str);
for(len=0; str[len]; len++);
printf("文字列の長さ:%d\n", len);

for(i=0; i<len; i++) str[i] = my_tolower(str[i]);
printf("大文字を小文字に変換した文字列:%s\n", str);

for(i=0; i<len / 2; i++) if(str[i]!=str[len-1-i]) break;

if(i==len/2) printf("回文です\n");
else printf("回文ではありません\n");

return 0;
}

319:デフォルトの名無しさん
08/06/12 08:01:11
>>309
文字列を複製する関数:strcpy(str1,str2,n)
文字列の長さを返すかんすう:strlen(str1)
文字列をn文字比較する関数:strncmp(str1,str2,n)
文字列str2をstr1のあとの連結する関数:strcat(str1,str2)
を使うなど、このレベルでプログラムを組んでいただけると助かります。

320:デフォルトの名無しさん
08/06/12 08:32:23
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
PNMという画像フォーマットを用いるとprint文で文字コードを出力することで
画像が作成できる。
(説明例:URLリンク(a-gamyl.hp.infoseek.co.jp)
これを用いて任意の画像を作成する。2次元の配列変数x,y座標を持つ平面に見立てて
画像を構成することが可能である。例えば画像の大きさ256x256の大きさとして
中央の(128,128)の場所に赤い点をひとつだけ打つには以下のようなプログラムになる。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
以下のように直接出力してみよう。
$ cc en5-3.c
$ ./a.out > test.ppm
出来上がったtest.ppmというファイルをファイルブラウザで開いてみると
中央に赤い点が打たれているのが分かる。どのようなデータが書き込まれているかは
プログラムの最後のfor文を見ていただきたい。
(課題)
・sin派を描いた画像を作成するプログラムに変更せよ。
・円を描いた画像を作成するプログラムに変更せよ。
・うずまきを描いた画像を作成するプログラムに変更せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:無理を承知で後日6/12 午後2時までにお願いします。

321:デフォルトの名無しさん
08/06/12 09:03:24
>>206
の老婆心
つまり、処理系によって、ちゃんと解釈してくれないよ
という忠告は
小さな親切余計なお世話
というのが>>207
で女々しい口喧嘩を繰り返すと。

要するにだ、207がちゃんとキャストをするなりしてコードを書いて
206がそれをハンディコンパイルすればそれで済む話
(できれば207がコードを実行すれば尚良い)

322:デフォルトの名無しさん
08/06/12 09:08:45
>処理系によって、ちゃんと解釈してくれないよ
Cの規格読み直せw

323:デフォルトの名無しさん
08/06/12 09:20:41
×小さな親切余計なお世話
○小さな親切大きなお世話

324:デフォルトの名無しさん
08/06/12 09:23:04
このスレレベルの「案件」では自分のコンパイラで動作確認さえ取ってさえいれば
いいんじゃないのか?(自分のコンパイラで動作確認もとってないのにソース上げるのは論外だけど)

どんな処理系でも動作するポータビリティなんて要求されてないし、
仮に要求してきたにせよ宿題丸投げの要求なんて無視していい
というか、そんなウィルスコードここに貼るな。

325:デフォルトの名無しさん
08/06/12 10:24:27
>>324
だからといってなコードは削ればいいという思想もウィルス

326:デフォルトの名無しさん
08/06/12 10:29:39
>>318
ありがとうございました!

327:デフォルトの名無しさん
08/06/12 10:36:54
このスレとしては
×自分のコンパイラ
○テンプレ[3]で指定されている環境

まぁ適当に書いてもだいたい通るから大丈夫だけど

328:デフォルトの名無しさん
08/06/12 10:46:12
205は適当でも処理系依存でもなくきちんと規格に準拠したコードなのになw

329:デフォルトの名無しさん
08/06/12 10:54:15
ソースコード読むのは人間だろ
解析するのがコンパイラ

330:デフォルトの名無しさん
08/06/12 13:25:47
>>306
なんだ、まだ5時間しか考えてないのか、というのはヤボですかね。

331:デフォルトの名無しさん
08/06/12 14:21:05
>>328
>>205
char *buf;
buf = malloc(size);
int main()



332:デフォルトの名無しさん
08/06/12 14:23:17
あーあ・・

333:デフォルトの名無しさん
08/06/12 14:26:55
URLリンク(www.bohyoh.com)
URLリンク(www.bohyoh.com)
とりわけ「準拠」というなら、何に?ANSI、ISO準拠なら
int mainについても蛇足とは言わない指摘がされるぞ。
だから無知は黙ってろって言われるんだよw
何に対して、何を元に指摘されているかわかってないんだろ。
資料を読んでから意見しろ。ルールブックも読まない奴が
勝手に自分ルールでそれは要らないよ、従っている人に
蛇足だよ、無駄だよなんて言っても通じない。

334:デフォルトの名無しさん
08/06/12 14:45:23
C#は取り扱っていませんか?

335:デフォルトの名無しさん
08/06/12 14:47:03
>>334
スレはあるようだけど過疎ってるなw

C#,C#の宿題片付けます。
スレリンク(tech板)

336:デフォルトの名無しさん
08/06/12 15:01:03
>>335
誘導ありがとうございます。
31に書き込んだのでどなたかよろしくお願いします

337:デフォルトの名無しさん
08/06/12 16:32:57
[1] 授業単元:
Cプログラミング
[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++/どちらでも可 のいずれか)

[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
6月16日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません。よろしくお願いします。

338:デフォルトの名無しさん
08/06/12 16:47:02
>>337
int main(void){
QUEUE_TYPE x;

initQueue();

while(1) {
printf("整数を入力して下さい:\n");
scanf("%d",&x);
if (x<0) break;
if(x % 2) {
printf("dequeue() %d : ",dequeue());
printQueue();
}
else {
enqueue(x);
printf("enqueue(%d) : ",x);
printQueue();
}
}

while(!chkEmpty()){
printf("dequeue() %d : ",dequeue());
printQueue();
}

return 0;
}


339:デフォルトの名無しさん
08/06/12 16:53:10
>>338
すばやい回答ありがとうございました!

340:デフォルトの名無しさん
08/06/12 16:56:53
[1] 授業単元:
Cプログラミング
[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++/どちらでも可 のいずれか)

[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
6月16日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
>>337の続きの課題なのですが・・
よろしくお願いします

341:デフォルトの名無しさん
08/06/12 17:16:43
while(1) {
printf("整数を入力して下さい:\n");
scanf("%d",&x);
if (x<0) break;
if(x % 2) {
dequeue(&Q);
printQueue(&Q);
}
else {
enqueue(x, &Q);
printf("enqueue(%d) : ", x);
printQueue(&Q);
}
}

342:デフォルトの名無しさん
08/06/12 17:23:16
>>341
ありがとうございます。

しかし、
負の数字-100を入力した場合に、実行例に在るとおりに
dequeue します: キューの中 [ 20 30 ]
dequeue します: キューの中 [ 30 ]
dequeue します: キューの中 [ ]
空状態のためデキューできません。

と表示されないのと、奇数の数字35等を入力した場合にdequeue しますという文字が表示されません。
それとやはり、デキューされた値を表示するのは難しいのでしょうか?

343:デフォルトの名無しさん
08/06/12 17:37:10
if(x % 2) {
dequeue(&Q);
printQueue(&Q);
}

if(x % 2) {
dequeue(&Q);
printf("dequeue します: ");
printQueue(&Q);
}


q=Q.front;以下はそのまま使ってる?

344:デフォルトの名無しさん
08/06/12 17:47:19
>>343
すいません、q=Q.front;以下も一緒に消してしまっていました。
負の数の時のも無事いけました!
デキューされた値を表示するのは無理でしょうか?

345:デフォルトの名無しさん
08/06/12 17:54:28
dequeue()関数をいじっていいなら337のみたいに返り値でdequeueしたのを戻せばいいんだけど。

346:デフォルトの名無しさん
08/06/12 17:55:56
void dequeueを↓に変更

int dequeue(struct queue *Q){ /* デキューする関数 dequeue の定義 */
struct cell *q; /* キューの先頭(デキューされるセル)を指す*q の宣言 */
int x;
if(Q->front == NULL) { /* Q->front がNULL(キューが空状態)であれば */
printf("空状態のためデキューできません。\n"); /* 左記のメッセージを画面に表示して */
exit(1); /* プログラムを終了 */
}
else { /* Q->front がNULL(キューが空状態)でなければ */
q=Q->front; /* ポインタ変数*q はキューの先頭を指す */
x=q->element;
Q->front = (Q->front)->next; /* キューの先頭(Q->front)を置き換える */
free(q); /* デキューされたセルのメモリを解放 */
}
if(Q->front == NULL){ /* Q->front がNULL(キューが空状態)であれば */
Q->rear = NULL; /* キューの初期化 */
}
return x;
}

あとmain()内の
dequeue(&Q);
printf("dequeue します: ");

printf("dequeue() %d : ",dequeue(&Q));
にすればいけると思う

347:デフォルトの名無しさん
08/06/12 17:56:53
あれ、dequeueを変えない方が良かったか?

348:デフォルトの名無しさん
08/06/12 17:57:33
>>250-251
>>255
ありがとうございます。助かりました

349:デフォルトの名無しさん
08/06/12 17:59:56
>>347
いいんじゃね?
main()を変えてって指定があるのは337の問題の方だけだし

350:デフォルトの名無しさん
08/06/12 18:09:16
>>346
ありがとうございました!見事に動作しました

351:340
08/06/12 18:17:57
何度もすいません、>>337と同じ内容を実施するプログラムと書いてあるので、
>偶数(0 を含む)である場合は、その整数をエンキューする。キューがフル状態である場合には、
>その整数をエンキューせず、『enqueue : フル状態のためエンキューできません。』と表示した後、プログラムを終了する。
の部分も付け加えなければいけないと思うのですが、
この部分はどうすればよいのでしょうか?
恐らくmain以外もいじくってよいと思います。。
よろしくお願いします

352:309
08/06/12 18:24:29
まだ、待ってます。
期限は過ぎてますが、遅れてでもいいので提出したいです。
>>309
>>319

353:デフォルトの名無しさん
08/06/12 18:28:17
>>351
>>340の場合は、要素が入る度にmallocでqueueのサイズを増やしてるから、
キューがフルである状態というのがそもそもない。
だからその部分は必要ないはず。
まあ、もしもそれを分かっていて、mallocするメモリが存在しなかった場合の話をしているなら、
enqueue内の

p=(struct cell *)malloc(sizeof(struct cell)); /* エンキューするセルを指すポインタ変数*p の獲得 */

if((p=(struct cell *)malloc(sizeof(struct cell)))==NULL){
printf("enqueue : フル状態のためエンキューできません。\n");
exit(1);
}
とすればおk

354:340
08/06/12 18:30:09
>>353
なるほど、そうなのですか!無知な発言申し訳ないです。
本当に助かりました

355:デフォルトの名無しさん
08/06/12 21:37:58
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: C
[4] 期限:明日中
[5] その他の制限:
1URLリンク(kansai2channeler.hp.infoseek.co.jp)
2-1URLリンク(kansai2channeler.hp.infoseek.co.jp)
自分で作れた所までです。
2-2はよくわかりませんでした
お願いします

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: C
[4] 期限:明日中
[5] その他の制限:
お願いします

356:デフォルトの名無しさん
08/06/12 22:18:12
[1] 授業単元:C言語
[2] 問題文URLリンク(http:)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限: 6月15日日曜日(早いと助かります)
[5] その他の制限:できるだけ簡単に
お願いします

357:デフォルトの名無しさん
08/06/12 22:19:55
[1] 授業単元:C言語
[2] 問題文URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限: 6月15日日曜日(早いと助かります)
[5] その他の制限:できるだけ簡単に
お願いします


358:デフォルトの名無しさん
08/06/13 00:16:39
>>278をおねがいします

359:デフォルトの名無しさん
08/06/13 00:18:43
>>352
どれがわかんないの?
int main(void)
{
//文字列入力

//置き換えられる文字入力
//その文字列が最初に入力した文章ないにあるかチェック
//無いときの処理

//置き換える文字列入力

//置き換え前文字列表示

//置き換え処理

//置き換え後文字列表示

return(0);
}

360:デフォルトの名無しさん
08/06/13 01:21:21
[1] 授業単元:C++プログラミング
[2] 3つの整数を入力し、入力値を昇順に入れ替える処理を作成する。
  ソート処理は関数を使って作成し、処理結果は関数の外で行う。
  ソート関数は引数がポインタ、参照の2種類の関数をオーバーロードで作成する

 出力イメージ:
  "整数を3つ入力しなさい"
  "入力した値は15,1,12"
  "昇順に並び替えると1,12,15"
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C++
[4] 期限:6月14日
[5] その他の制限:どうぞ宜しくお願いします

361:309
08/06/13 01:22:57
>>359
・指定した文字列が含まれているか判定
・無いときの処理
・置き換え方
特に置き換える際は、どうやって文字を置き換えているのかさっぱり分からないです。

自分で分からないものを煮詰めても、まったくす進まないので、丸投げで全部作っていただきたく思います。

362:デフォルトの名無しさん
08/06/13 01:26:13
>>309
#include <stdio.h>
#include <string.h>
#define BUFF_SIZE 1024
void ex(char *dest, char *src,char *a,char *b){
    while(*src!='\0'){
        if(strncmp(src,a,strlen(a))==0){
            strncpy(dest,b,strlen(b));
            src+=strlen(a);
            dest+=strlen(b);
        }
        else
            *dest++=*src++;
    }
    *dest='\0';
}
int main( void )
{
    char buf[BUFF_SIZE],src[BUFF_SIZE],dest[BUFF_SIZE],a[BUFF_SIZE],b[BUFF_SIZE];
    printf("文字列を入力せよ : ");
    fgets(buf,BUFF_SIZE,stdin);
    sscanf(buf,"%[^\n]",src);
    printf("置き換え元を入力せよ : ");
    fgets(buf,BUFF_SIZE,stdin);
    sscanf(buf,"%[^\n]",a);
    printf("置き換え後を入力せよ : ");
    fgets(buf,BUFF_SIZE,stdin);
    sscanf(buf,"%[^\n]",b);
    ex(dest,src,a,b);
    printf("結果 : %s\n",dest);
    return 0;
}

363:362
08/06/13 01:30:54
fgetsに引っ付いてくる改行文字除去するのにもっとスマートなやり方があるかもしれんが
優秀な方がつっこんでくれるに期待して

一応>>311の通りに置きかえ


364:デフォルトの名無しさん
08/06/13 01:36:46
\nの置き換えなら
if((p=strchar(buf, '\n'))!=NULL) *p = '\0';
ってやるのが一般的か?

365:デフォルトの名無しさん
08/06/13 01:37:45
strcharじゃなくてstrchrだな

366:デフォルトの名無しさん
08/06/13 02:52:16
[1] 授業単元:C言語
[2] コマンドラインから数字の文字列を入力して、
  unsigned intの範囲外の値が入力された場合は
  エラー文を返す。それ以外は入力値を標準出力する。

  例) 入力 → 出力
  例1) "4294967295" → 4294967295
  例2) "4294967296" → 入力値が範囲外です。
[3] 環境
 [3.1] OS:Ubuntu
 [3.2] コンパイラ名とバージョン:gcc4
 [3.3] 言語:C
[4] 期限:6月15日
[5] その他の制限:特にありません。isdigit()は使うと思います。

よろしくお願いいたします。

367:デフォルトの名無しさん
08/06/13 03:05:53
[1] 授業単元: プログラミング実験
[2] URLリンク(kansai2channeler.hp.infoseek.co.jp) 6889
[3] 環境
 [3.1] OS windows
 [3.2] コンパイラ名とバージョン: Visual studio2005
 [3.3] 言語: C
[4] 期限 本日13時まで
[5] その他の制限:特になし

よろしくお願いします


368:デフォルトの名無しさん
08/06/13 03:08:52
>>358
>>280をスルーしたからスルーされてるのかなー?

369:デフォルトの名無しさん
08/06/13 03:10:02
sum1 += (the[i] - mea1[i]) * (the[i] - mea1[i]);
sum2 += (the[i] - mea2[i]) * (the[i] - mea2[i]);

370:デフォルトの名無しさん
08/06/13 03:11:20
[1] 授業単元: プログラミング実験
[2] URLリンク(kansai2channeler.hp.infoseek.co.jp) 6889
[3] 環境
 [3.1] OS windows
 [3.2] コンパイラ名とバージョン: Visual studio2005
 [3.3] 言語: C
[4] 期限 本日13時まで
[5] その他の制限:特になし

よろしくお願いします


371:デフォルトの名無しさん
08/06/13 03:12:30
>>366
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
unsigned int u = ~0;
double d;
if(argc!=2) return 0;
d = atof(argv[1]);
if(d - u > 0) printf("入力値が範囲外です。\n");
else printf("%u", (unsigned int)d);

return 0;
}


372:デフォルトの名無しさん
08/06/13 03:12:32
2重投稿すみませんorz

373:デフォルトの名無しさん
08/06/13 03:13:47
>>361

> 文字列をn文字比較する関数:strncmp(str1,str2,n)
を使ってくれといっているのに
> ・指定した文字列が含まれているか判定
が分からないとは。

自分が分からないものを他人に作ってもらって分かったふりして
提出する程度の人だからしょうがないけど。


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

5023日前に更新/317 KB
担当:undef