[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 01/02 08:08 / Filesize : 214 KB / Number-of Response : 711
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:08:18 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

前スレ
C/C++の宿題片付けます 130代目
pc12.2ch.net/test/read.cgi/tech/1250204272/

237 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:08:44 ]
こうだろ。

#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
char b[80];

gets(b);
for(input=0;input<11;input++)if(!strchr(b,"0123456789"[input]))printf("終了します\n"),return 0;
for(input=3;input<11;input++)if(strstr(b,nums[input]))printf("終了します\n"),return 0;

for(input=0;input<4;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}
return 0;
}


238 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:37:15 ]
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
char *colors[] = {"Red", "Green", "Blue"};
int input, i;
char buf[1024];
char *num[] = {"0","1","2","3","4","5","6","7","8","9"};
char *num2[] = {"零","一","二","三","四","五","六","七","八","九"};
fgets(buf, 1024, stdin);
input = atoi(buf);
for(i = 0; i < 10; i++) if (strncmp(buf, num[i]) == 0) input = i;
for(i = 0; i < 10; i++) if (strncmp(buf, num2[i]) == 0) input = i;
if (input <= 0 || input >= 4) printf("終了します\n");
printf("%s\n", colors[input]);
return 0;
}

239 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:43:12 ]
__declspec(dllimport) extern int printf(const char *s, ...);
__declspec(dllimport) extern int scanf(const char *s, ...);
int main(void) {
char *colors[] = {"Red", "Green", "Blue"};
int input;
char b[80];
gets(b);
input = atoi(b);
if (input <= 0 || input >= 4) printf("終了します\n");
else printf("%s", colors[input - 1]);
return 0;
}

240 名前:210 mailto:sage [2009/10/23(金) 13:47:52 ]
>>211
ありがとうございます。
検索ワードが思い浮かばず困っていた面もありました。
時間はあるのでじっくりググって煮詰めようと思います。

>>213=>>219=>>221=>>223
>>229
ありがとうございます。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10000.txt
自分でも布団の中で考えn個の中から1つを選ぶ、n-1個の(ryみたいな感じでやってみましたが比べると無駄が多い…
参考に改善しようと思います。




241 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:52:09 ]
knuthやfisher-yatesでググると参考になる。

242 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:05:23 ]
putchar(8) って何? バグ?

243 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:11:29 ]
asciiコードぐらい自分で調べろよw

244 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:23:37 ]
さぁとっととリストの課題こいや〜!麻呂のミートクソースをお見舞いしてやんよでおじゃる?
カレンダー出力も来るでおじゃる!

245 名前:デフォルトの名無しさん [2009/10/23(金) 16:45:24 ]
いやっほー!



246 名前:麻呂専用 mailto:sage [2009/10/23(金) 16:55:35 ]
[1] C言語中級
[2] 8X8のオセロの全局面をリスト構造で列挙しそれを適当なファイルに保存するプログラム
次の問いの答えも添付すること
(1)先手必勝、後手必勝かの決定
(2)平行初期値と通常初期値(回転対称、鏡映は同一視)それぞれの
場合において到達可能な葉は全部の場合の何パーセント程度であるか?

[3] Windows 2000/Visual-C++ 6.0/C言語(厳守)
★置く場所が無い場合に限りパスが認められる。
★FileMappingやVirualAllocateのWindowsの機能を利用し、
メモリがパンクしないように留意すること。メモリの搭載は128M程度
を仮定する。
[4]来週月曜日迄(厳守)

247 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:21:25 ]
全文を書くと大変なことになるのと(300行以上)、
どこから、どこまでを引っこ抜いてきて書けばいいかが分からないので、とりあえず下記を抜粋しました。
この部分で文法的に間違ってる文章はありますでしょうか?
nはdefine済みです。よろしくお願いします。

int i, l, s, c, k, d[n];

srand(10);

for(k=0; k<n; k++){
d[k] = 0;
}

i = floor(rand() * n);
c = i;
for(l=0; l<10; l++){
s = floor(rand() * rowvec[c].num );
c = rowvec[c].kazu[s];
d[c]++;
}


248 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:28:02 ]
>>1
>【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)

249 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 19:09:34 ]
【質問テンプレ】
[1] 授業単元: 情報演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10001.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
うpろだお借りしました。
10001.txtの中の
int i, l, s, c, d[n];

init_genrand(10);

for(k=0; k<n; k++){
d[k] = 0;
}

i = floor(genrand_real2() * n);
c = i;
for(l=0; l<10; l++){
s = floor(genrand_real2() * rowvec[c].num );
c = rowvec[c].kazu[s];
d[c]++;
}
for(c=0; c<n; c++){
printf(" %d\n", d[c]);
}
}
が手間取っている部分です。どうしてもうまく動作しません。
よろしくお願いします

250 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 19:42:46 ]
>>249
何がどうなって欲しいの?

251 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 20:10:44 ]
プログラム全体でやっていることは、
隣接行列を作る。
強連結か判定。
ページランクの測定。
です。
>>249では有向グラフで出発点をランダムにとり、
そこからランダムウォークをして、何回か移動したとき、各点にどれだけ移動したかを測定しようとしています。


252 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 20:25:40 ]
ランダムウォークじゃなくて全部歩くべきなんじゃないの?

253 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 22:28:46 ]
>249
値を返していない関数がある
245行目で初期化されていない変数を使っている

254 名前:デフォルトの名無しさん [2009/10/24(土) 00:55:05 ]
[1] 授業単元:プログラミングV
[2] 問題文(含コード&リンク):外部ファイルより整数を読み込み、棒グラフを描くプログラムを
作る。外部ファイルはコンストラクタで配列に読み込め。使う関数はヘッダーファイルに
publickに定義する。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:2009年10月29日10時
[5] その他の制限:特にないです。


255 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 03:12:57 ]
問題文って本当にそれだけ?




256 名前:デフォルトの名無しさん [2009/10/24(土) 09:13:10 ]
mathematicaなんですが、関数を作れとのことなので
ここに投稿させてもらいます。
暇がある方お願いします。

2変量のデータ {{x1, y1}, {x2, y2}, ... , {xn, yn}} を引数として,散布図と相関係数を出力する関数を作成せよ.


257 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 09:49:53 ]
お断りします

258 名前:デフォルトの名無しさん [2009/10/24(土) 14:40:31 ]
テストの平均点を出して小数第2位を四捨五入したいんだけどどうすればいいの?
平均点は出てます。


259 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 14:46:52 ]
%とfの間に「.1」だっけ?

260 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 15:12:39 ]
>>258
main(){
float a = 1.56;
int b;
b = a*10+0.5;
a = b/10.0;
printf("%f",a);
return 0;
}

261 名前:デフォルトの名無しさん [2009/10/24(土) 15:15:44 ]
#include <math.h>
float round(float val, int decimal)
{
val += pow(5.0, -(decimal+1));
long tmp = val * pow(10.0, decimal);

return tmp/pow(10.0, decimal);
}

262 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 16:58:52 ]
テキストから"n 100"みたいな文字列を読み込んで、プログラム内でnに100を代入するにはどうすればいいでしょうか?

263 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 17:14:17 ]
それがコンパイラだよ。

264 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 17:17:56 ]
>>262
プログラム書くか、>>1を読めばいい。

265 名前:デフォルトの名無しさん mailto:age [2009/10/24(土) 19:07:42 ]
[1] 授業単元:変数の基礎
[2] 問題文(含コード&リンク):このプログラムのどこかに変数における間違いがあります。
  その間違いを探しなさい。  kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10002.txt

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: visual studio2008
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: 明後日まで
[5] その他の制限: 特になし




266 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:27:11 ]
>265
使われていない変数がある
値を返していない関数がある

267 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:41:18 ]
>265
outputが開放されていない

引数が使われていない
未定義動作の式が存在する

268 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:45:31 ]
意図のわからない名前をつけちゃだめ

269 名前:265 mailto:age [2009/10/24(土) 20:22:15 ]
>>266>>267

ありがとうございます。
もし良ければ何行目あたりかを教えてください。(スルーでも大丈夫です)


270 名前:デフォルトの名無しさん [2009/10/24(土) 21:24:20 ]
>>265
これすごいなw
実装したやつ天才すぎるw
つか宿題じゃねーだろこれ?

271 名前:デフォルトの名無しさん [2009/10/24(土) 21:25:44 ]
こういうスレにいると
問題と回答の両方があるから
勉強になるよね☆

272 名前:265 mailto:age [2009/10/24(土) 21:28:20 ]
専門学校の宿題です
長いプログラムですが間違えてる所は最初〜真ん中らへんにあるって言ってました

関数や引数のことがよく分かっていないんで詳しく説明できる人がいればお願いいたします


273 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:32:43 ]
>>265
このコード自体くそ
はじめから書き直せ
素人丸だし

274 名前:デフォルトの名無しさん [2009/10/24(土) 21:37:18 ]
>>272
宿題なのかこれ・・・
これ先生が書いたの?
突っ込みどころ満載なんだがwww

275 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:43:59 ]
>>265
プログラムを見た瞬間目が回った
これだけやる気をなくすプログラムも珍しいな



276 名前:デフォルトの名無しさん [2009/10/24(土) 21:46:35 ]
うちの学校の講師はプログラミングテストで合格しないとなれないみたいだから
>>265みたいなひどいコードはないな

277 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:46:57 ]
とりあえず何をしたいプログラムか分らないと途中経過を追うのが怠すぎる…

278 名前:265 mailto:age [2009/10/24(土) 21:47:08 ]
>>274

先生が書きました とりあえず自力でがんばってみます。
一応明後日までみなさんの詳しい答え待ってます。おやすみなさい

279 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:13:01 ]
>265
>266, 267
とりあえず、機械的に解析してもらった結果から出したんだけど
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10003.txt

280 名前:デフォルトの名無しさん [2009/10/24(土) 22:30:47 ]
>>279

ってか機械的に解析ってどうやんの?プログラマーの俺に教えてちょww




281 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:36:15 ]
lintと違うん?

282 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:36:15 ]
>>280
ツール使うだけ
lint とか

283 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:36:27 ]
>>265
こんなん教えてる専門学校は今すぐ辞めるべき


284 名前:デフォルトの名無しさん [2009/10/24(土) 22:37:48 ]
lintかー あざーす

285 名前:デフォルトの名無しさん mailto:age [2009/10/24(土) 22:43:15 ]
lintってフリーソフトなん?



286 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:48:36 ]
>>285
ググれよw

287 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:00:02 ]
ググって見たけど最近のコンパイラなら必要なさそうだな

288 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:09:13 ]
>265

まぁみんなつっこんでるので繰り返しになるが、
問題文自体が間違ってないか。

「このプログラムのどこかに変数における間違いがあります。」

いや、変数の問題じゃ無いんだが、、、。
こんなコードをデバッグさせようとすること自体が間違いでしょ。

専門学校の宿題か。
その講師の言うことは宛にならないと思う。



289 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:20:24 ]
lintとかを使えるようにしようっていう意図なんじゃないかと深読み

290 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:22:06 ]
>>265
これはひどい。
うちの会社なら、これ書いた奴の上司が社長室に呼びつけられるなw

291 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:24:59 ]
>>265
こんなコードを人に見せるなんて恥ずかしくて切腹ものですね。
先生、あさってには死んでるかもしれないんじゃないですか。

292 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:29:09 ]
プログラマが書いたコードじゃなくて数学屋が書いたコードだろ
やつらこんなの書くぞ

293 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:31:58 ]
講師が学生のバイトで、そいつが研究課題でプログラム組んだけどミスがある。
でも自分ではわからないから、バイト先の連中にやらせちゃえ
って感じな気がする。


294 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:36:18 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10004.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明後日

295 名前:デフォルトの名無しさん [2009/10/25(日) 00:08:00 ]
>>293
確かにw
そんな感じするw



296 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:19:37 ]
>>294
#include <stdio.h>
void rotate(int *p, int size)
{
int i, temp;
for(i=0,size--; i<size; i++, size--) {
temp = p[i];
p[i] = p[size];
p[size] = temp;
} }
int main(void)
{
int a[10], i, length, n;
printf("整数列をローテーションします.\n整数列の長さを入力してください:");
scanf("%d", &length);
if(length <= 0 || 11 <= length) return printf("error");
printf("整数列を入力してください(スペース区切り):");
for(i=0; i<length; i++) scanf("%d", a + i);
printf("ローテーション数を入力してください:");
scanf("%d", &n);
while(n >= length) n -= length;
rotate(a, length - n);
rotate(a + length - n, n);
rotate(a, length);
printf("結果 [ ");
for(i=0; i<length; i++) printf("%d ", a[i]);
printf("]\n");
return 0;
}

297 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:20:00 ]
>>294
もっと単純に書いちゃだめなのこれ?
for (i = 0; i < len; ++i)
{
  arr1[ (i + n) % len ] = arr0[ i ];
}
とかさ。

298 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:40:55 ]
>>296
関数の名前はrotateじゃなくてreverseのほうが正しくね?

299 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:21:30 ]
>294
どこかで見たことあるアルゴリズムだと思ったら、「珠玉のプログラミング」にあった奴だ。

問題の仕様には完全に合わせていないけど、
肝心の部分は、reverseを使ってこんな感じ。

void rightRotation(int *pInt, size_t size, size_t shift)
{
while (shift > size) {
/* シフトがサイズを超えたら、さらに一周させる */
shift -= size;
}

if (shift == size) {
/* シフトとサイズが同じなら変化無し */
return;
}

/* 先頭からsize - shiftサイズ分を逆順にする */
reverse(pInt, size - shift);
/* 残り部分を逆順にする */
reverse(&pInt[size - shift], shift);

/* 全体を逆順にする */
reverse(pInt, size);
}



300 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:28:40 ]
>>294
codepad.org/WglVP0uB
scanf()追放信者が書くとこうなってしまいました。

301 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:33:22 ]
せめて関数のエラー回避をw

302 名前:300 mailto:sage [2009/10/25(日) 01:38:45 ]
>>301
うーん、malloc()のエラー回避はしていますが、やっぱり足りないですか?

303 名前:294 mailto:sage [2009/10/25(日) 01:40:49 ]
実は関数を習ってないので、その部分は回答を参考に書き替えたら
正しい結果になりました。回答ありがとうございました

304 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 03:24:18 ]
これ作ったら神。
PS postscriptのテキスト抽出するやつ。日本語対応版。
フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増えるよ。

305 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 03:29:01 ]
乞食は死ね



306 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 04:10:02 ]
>>304
PDFからテキスト抽出とかどっかで見たことあるからpostscriptからも普通にありそうなもんだけど

307 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:37:59 ]
[1] 授業単元:独学
[2] 問題文(含コード&リンク):www.ioi-jp.org/joi/2006/2007-yo-prob_and_sol/2007-yo-problems/2007-yo-t3/2007-yo-t3.html
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:Visual Basic
 [3.3] 言語: C
[4] 期限: 無期限


308 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:39:20 ]
>>307
ぁ、Windowsです
お願いします!

309 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:43:57 ]
VBて。
しかも独学て。
独りで学んでないじゃん。

310 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:47:06 ]
VBじゃ駄目ですか?

独学以外に何と書けば良いかわからなかったので・・・。

311 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:49:30 ]
>>310
Visual Studioのことを言いたいのかい?

312 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:50:48 ]
>>311

あ・・・はい。
そうです。すいません

313 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:58:34 ]
>>308ではないのですが、
A〜Zまで配列にして
forで文字列を1文字ずつ取り出し
さらにforで配列との比較を行い一致したら
x,y,z以外だったら文字比較forのカウント変数に3を加算
x,y,zならa,b,cをそれぞれを出力用配列の内側配列に格納
という風に考えたんですが
これよりスマートなやり方を教えてください。


314 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 10:15:51 ]
スマートかどうか知らんが
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main(int argc, char **argv)
{
char *p;

if (argc != 2) exit(EXIT_FAILURE);
if (strlen(argv[1]) > 1001) exit(EXIT_FAILURE);
for (p = argv[1]; *p != '\0'; p++) {
if (!isupper(*p)) {
exit(EXIT_FAILURE);
}
}

for (p = argv[1]; *p != '\0'; p++) {
putchar(((*p) - 'A' + 26 - 3) % 26 + 'A');
}
putchar('\n');

exit(EXIT_SUCCESS);
}

315 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 10:21:10 ]
あ。'A'〜'Z'が連続しているコードが前提です。



316 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 10:52:13 ]
>307
hashとかmapが使えるとすげー楽なのだけれど、Cには無いので代わりの方法をやってみた。
要はD→A、C→Z・・・の写像を定義してあげればよい。mapだとそのままこの写像が定義できる。
Cではできないので、インデックスに変換してあげている感じ。
#include <stdio.h>
#include <string.h>
#define ELENUM(array) (sizeof(array) / sizeof(array[0]))
/* A, B, C...,Zを0, 1, 2, .. 25に変換。 変換できない場合-1 */
int alphIndexing(char ch)
{
char alph[] = "ABCDEFCHIJKLMNOPQRSTUVWXYZ";
int idx;
for (idx = 0; idx < ELENUM(alph); idx++) {
if (alph[idx] == ch) {
return idx;
}
}
return -1;
}
int main(int argc, char **argv)
{
const char aCaesarTbl[] = "*XYZABCDEFCHIJKLMNOPQRSTUVW";
const char *pConvert = (aCaesarTbl + 1);
int idx;
printf("input : %s\n", argv[1]);
printf("encoded: ");
for (idx = 0; idx < strlen(argv[1]); idx++) {
putchar(pConvert[alphIndexing(argv[1][idx])]);
}
putchar('\n');
return 0;
}

317 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 11:12:48 ]
>>314
>>316
共にエラーが出る・・・

318 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 11:16:01 ]
>>317
へぇ。

319 名前:316 mailto:sage [2009/10/25(日) 11:42:44 ]
引数入力してないでしょ。
入力チェック省いていたから。

ちょっと改善して入力チェックも入れた。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10005.txt

320 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 11:55:03 ]
#include <stdio.h>
int main(){
 int c;
 while((c=getchar()) != EOF){
  if('D' <= c && c <= 'Z') putchar(c-3);
  else if('A' <= c && c <= 'C') putchar(c+23);
  else putchar(c);
 }
 return 0;
}

321 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 13:54:52 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10006.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10007.txt
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限: 2009年10月30日

私なりに考えてみましたがわかりませんでした。
どなたかお解りになる方がいましたら宜しくお願い致します。

322 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:09:43 ]
>321

ポインタがわかっていないようですね。その点は要復習。
第3、第4引数がポインタ渡しか参照渡しか、曖昧ですが、
一応参照渡しでやってみた。
doubleの余りとか適当。

void div(int op1, int op2, int& sho, int& amari)
{
sho = op1 / op2;
amari = op1 % op2;
}

void div(double op1, double op2, double& sho, double& amari)
{
sho = int(op1 / op2);
amari = op1 - sho * op2;
}

323 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:10:12 ]
インラインアセンブラでidivとか言ったら怒られるだろうか。

324 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 18:22:58 ]
>>254
codepad.org/kbfG5GKd
プログラムの最初に想定しているファイル形式と出力を書いておきます。

325 名前:324 mailto:sage [2009/10/25(日) 21:26:09 ]
書き直しました。
codepad.org/Yi4G9x0S



326 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:39:30 ]
[1] 授業単元:C言語とアルゴリズム
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10008.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:明日まで

よろしくおねがいします!!

327 名前:デフォルトの名無しさん [2009/10/25(日) 21:53:33 ]
[1] 授業単元: C言語プログラミング演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10009.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 
 [3.3] 言語: C
[4] 期限: 2009年10月28日 16:00まで


328 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:57:20 ]
>>326 問題1−2
#include<stdio.h>

char *ul2a(char buf[40], unsigned long value){
int i;
char *p;
for(i=31,p=buf;i>=0;i--){
*p++=((value>>i)&1)+'0';
if(i%4==0) *p++=' ';
}
*--p='\0';
return buf;
}

int main(int argc, char *argv[]){
char buf[40];
unsigned long x=0, y=0;

printf("符号なし32bit整数2つを入力してください.\n");
scanf("%lu %lu", &x, &y);
printf("%lu は2進表示で %s ,\n", x, ul2a(buf, x));
printf("%lu は2進表示で %s です.\n", y, ul2a(buf, y));
printf("~%lu は2進表示で %s ,\n", x, ul2a(buf, ~x));
printf("~%lu は2進表示で %s です.\n", y, ul2a(buf, ~y));
printf("%lu << 1は2進表示で %s ,\n", x, ul2a(buf, x<<1));
printf("%lu >> 1は2進表示で %s です.\n", y, ul2a(buf, y>>1));
printf("%lu & %lu は2進表示で %s です.\n", x, y, ul2a(buf, x&y));
printf("%lu | %lu は2進表示で %s です.\n", x, y, ul2a(buf, x|y));
printf("%lu ^ %lu は2進表示で %s です.\n", x, y, ul2a(buf, x^y));

return 0;
}

329 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:23:33 ]
>>326
問題1: codepad.org/f8POt06D
問題2: codepad.org/IObqxmMY

330 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:41:19 ]
>>326です
>>328、329さんありがとうございます。
問題1−1なんですが>>328さんの問題1−2のようにもう少し簡単になりませんか?


331 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:43:38 ]
すげー煽りだw

332 名前:329 mailto:sage [2009/10/25(日) 22:51:03 ]
>>330
>>328 ではポインタを使っていますが、>>329 ではポインタを使わず、算術演算(割り算と余り演算子)で処理しています。
あるいは、わかりやすいように配列にいったん結果をいれるようにしています。4桁ごとのくぎりも普通にかいています。
>>329 も簡単だと思いますが( >>328 を否定しているわけではありません)、やっぱり短く書いたほうがわかりやすいでしょうか?

333 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:37:00 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10010.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10012.zip
[3] 環境
 [3.1] OS: Windows?
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: (2009年10月30日17;50まで

うまく実行できません。おねがいいたします。

334 名前: ◆pGt6/pVDLk mailto:sage [2009/10/25(日) 23:40:45 ]



335 名前:333 ◆F8HqQ.0zX2 mailto:sage [2009/10/25(日) 23:43:07 ]
見にくいですが、宜しくおねがいします。



336 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:03:32 ]
>327
気が向いただけ、ただ気が向いただけ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10013.zip
s/foo.zip/foo.tar.gz/

337 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:40:51 ]
これ作ったら神。
PS postscriptのテキスト抽出するやつ。日本語対応版。
フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増える。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<214KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef