宿題手伝います
■ このスレッドは過去ログ倉庫に格納されています
0001Rina
NGNG前スレ:http://pc3.2ch.net/test/read.cgi/tech/1026138039/
前スレより抜粋.
1 :かおる :02/07/08 23:20
こんにちは。えれなの妹のかおるです。
前スレは恭祐さんの「ほう、宿題とはな。」です。
http://pc.2ch.net/test/read.cgi/tech/1024592344/
それ以前の人たちは、>>2-10あたりにかかれるでしょう。
宿題とか手伝いますけど、以下の事項は守ってほしいです。
・マルチポストは厳禁です。
・キーワードが分かっているなら、http://www.google.co.jp を活用すること
・質問内容がちゃんと日本語になっていること
・言語名を入れること。
・自分の力で頑張ってみたことを伝えられる人。
・どこまでわかったのかを書くこと。
以上です。このスレだけのおつきあいですが、よろしくおながいします。
2 :デフォルトの名無しさん :02/07/08 23:21
手助けはするな、助言はしてやれ。
3 :かおる :02/07/08 23:22
登場人物&過去スレ 1/2
●お姉さん
あなたの宿題、お姉さんが答えます
http://piza.2ch.net/tech/kako/972/972032579.html
で登場。
●麻衣
お兄ちゃんの宿題、私が答えるよ
http://pc.2ch.net/tech/kako/982/982853418.html
で初登場。可愛い妹キャラ
●お兄ちゃん(名称不明)
宿題見てやるよ
http://pc.2ch.net/tech/kako/1003/10038/1003838158.html
で初登場。しかし、女性がいいという影の圧力により
1以外には登場せず。
●怜
宿題みてあげるっ
http://pc.2ch.net/test/read.cgi/tech/1007902384/l50
で初登場。お兄ちゃんの恋人。
結構親切に答えてくれる年上キャラ。
0160デフォルトの名無しさん
NGNGじゃだめなの?
0161デフォルトの名無しさん
NGNG2*2*2*2*2*2*2*2*2*2*
2*2*2*2*2*2*2*2*2*2*
2*2*2*2*2*2*2*2*2*2*
2*2*2*2*2*2*2*2*2*2 << endl;
0163デフォルトの名無しさん
NGNG#include <stdio.h>
#include <math.h>
#define SIZE 10
#define VAC 100000
typedef int bignum[SIZE];
void regular_bignum(bignum n)
{
int i;
for (i=0; i < SIZE-1; i++)
if (n[i] >= VAC) {
n[i+1] += n[i] / VAC;
n[i] %= VAC;
}
}
void write_bignum(bignum n)
{
int i = SIZE-1;
regular_bignum(n);
for (; i>=0; i--)
if (n[i] != 0) {
printf("%u", n[i]);
i--;
break;
}
for (; i>=0; i--)
printf("%05u", n[i] % VAC);
printf("\n");
}
void make_bignum(bignum b, int n)
{
int i;
b[0] = n;
for (i=1; i < SIZE; i++)
b[i] = 0;
}
0164163
NGNGvoid mul(bignum b, int n)
{
int i;
for (i=0; i<SIZE; i++) {
b[i] *= n;
regular_bignum(b);
}
}
int main(void)
{
int i;
bignum b;
make_bignum(b, 1);
for(i=0; i<50; i++)
mul(b, 2);
write_bignum(b);
return 0;
}
0166163
NGNG下ので
1125899906842624
になったす。
void mul(bignum b, int n)
{
int i;
for (i=0; i<SIZE; i++)
b[i] *= n;
regular_bignum(b);
}
0167デフォルトの名無しさん
NGNG#include <stdio.h>
int main()
{
printf("%lld\n", 1LL<<50);
}
をやったら 1125899906842624 となりますた。
関数電卓でやっても 1.125899e+15 です。
163 は下の方が一致してるよね。上位桁の扱いに問題がありそう。
0168デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNGどう作ればいいんですか?
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGモチロンオレモナー
0175 ◆aCDPDEl2
NGNG0176デフォルトの名無しさん
NGNG3×3のマスの中にチェスのナイトが置かれている。
(1) 3×3の配列aを定義して、すべての要素を0に初期化。ナイトの位置は1で、空欄は0で配列に記録。
スクリーン上には、□で空欄を、★でナイトの現在位置を表示する。(ナイトの最初の位置はプログラマーが選択してよい)
(2) チェスのナイトは、将棋の桂馬と同じ動きをするが、前だけでなく左右や後ろにも桂馬飛びができる。
そこで、3×3の配列bとcを宣言して、それぞれに現在位置(i,j)から移動できるマスの番号を2桁の整数で入力する。
移動できるマスが(3,1)ならば31と入力する。(この問題では移動できるマスは常に2つなので配列bとcを使います。)
(3) 現在のナイトがいる配列bの要素を10で割った商と余りを利用して、移動できるマスを(i,j)の形でプリントする。
同様に、配列cの要素をプリントする。
(4) ユーザーからの入力を読み、上の(3)で求めた(i,j)のどちらかならばナイトを移動して、新しい状態をプリントする。
入力が-1,-1ならばプログラムを終了する。
(5) 上の(3)と(4)を繰りかえす。
条件:配列aを引数として、現在ナイトがいる場所をプリントする関数を作製すること。
0177 ◆aCDPDEl2
NGNG0179デフォルトの名無しさん
NGNGで、どう助けろと??
そこで、3×3の配列bとcを宣言して、それぞれに現在位置(i,j)から移動できるマスの番号を2桁の整数で入力する。
移動できるマスが(3,1)ならば31と入力する。(この問題では移動できるマスは常に2つなので配列bとcを使います。)
ここの意味が分からん。
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNGよし、助け船を出そう。
こう回答しとけ。
「設計自体が悪いので却下します」
それが角が立つので嫌だというならこういうのもあるぞ。
「一体貴方はプログラマを育成したいのですか?
それともキーパンチャーを育成したいのですか?」
0183デフォルトの名無しさん
NGNG全角スペースで字下げしてくれないかなぁ…
読み辛いです
ダメならいいけどさ
0184145
NGNG0186デフォルトの名無しさん
NGNG問題1
荷物| a b c d e
――+――――――――――
重量| 4 5 2 1 6
価値|450 570 225 110 670
重量制限8
ってな感じです。
解けます?ほかのスレから持ってきたんだけど解答がでなくて…
ttp://pc3.2ch.net/test/read.cgi/tech/1027353004/
で、いくつかプログラムが出てるんですけど、いかがでしょうか?
こちらの方のほうがスキルありそうなので…
0187デフォルトの名無しさん
NGNGって言われたんですがCでマルチスレッドってどうやるんですか?
調べてみたら、内のNTくんだとforkという関数?を
使えるらしいところまでは分かりました。
また、シェルソート自体のコードは検索して見つけたので
printfを使いながら力技で勉強中です。
0188デフォルトの名無しさん
NGNGこういう事だと思われ。
しかし、やる気が失せるぐらい(出題者の)センスが悪いな。
int a[3][3]={
1,0,0,
0,0,0,
0,0,0,
};
int b[3][3]={
12, 2,12,
20,-1, 0,
21, 0,10,
};
int c[3][3]={
21,22, 1,
22,-1, 2,
10,20, 1,
};
0189デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNGそれが宿題か?
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGキーワード「線形計画法」でいくらでもでてくるYO!!
http://lecture.ecc.u-tokyo.ac.jp/~okatu/planning/30lp.html
とか
0194デフォルトの名無しさん
NGNGあれ? ナップザック問題って「線形計画法」で解くんだっけ?
0195デフォルトの名無しさん
NGNG動的計画法では?
0196デフォルトの名無しさん
NGNG0197195
NGNGしかも、レス付け間違えた
0198デフォルトの名無しさん
NGNG#include <stdio.h>
#define LIMIT 8
#define N 5
#define MIN_SIZE 1
void main(void)
{
static struct body
{
char *name;
int size;
long price;
} a[]={{"a",4,450},{"b",5,570},{"c",2,225},
{"d",1,110},{"e",6,670}};
long newvalue,value[LIMIT+1];
int item[LIMIT+1],i,s,p;
for(s = 0;s <= LIMIT;s++)
{
value[s]=0;
}
for(i = 0;i < N;i++)
{
for(s = a[i].size;s <= LIMIT;s++)
{
p = s - a[i].size;
newvalue = value[p] + a[i].price;
if(newvalue > value[s])
{
value[s] = newvalue;
item[s]=i;
}
}
}
printf(" 品 目 重量 価格\n");
for(s = LIMIT,p=0;s >= MIN_SIZE;s-=a[item[s]].size)
{
printf("%10s %5d %5ld\n",a[item[s]].name,a[item[s]].size,a[item[s]].price);
p += a[item[s]].size;
}
printf(" 合 計 %5d %5ld\n",p,value[LIMIT]);
}
参考文献:改訂 C言語によるはじめてのアルゴリズム入門(河西朝雄 著,技術評論社)
int main(void){
int i,j,x,y,next;
int a[3][3]={{1,0,0},
{0,0,0},
{0,0,0}};
int b[3][3]={{12,20,10},
{2,-1, 0},
{2, 0, 1}};
int c[3][3]={{21,22,21},
{22,-1,20},
{12, 2,10}};
while(1){
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(a[i][j]==0){ printf("□"); }
else{
x=i;
y=j;
printf("★");}
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(a[i][j]==1) printf("(%d,%d)",b[i][j]/10,b[i][j]%10);
}
}
printf("\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(a[i][j]==1) printf("(%d,%d)",c[i][j]/10,c[i][j]%10);
}
}
printf("\n next : ");
scanf("%d",&next);
if(next==b[x][y]){
a[x][y]=0;
a[b[x][y]/10][b[x][y]%10]=1;
}else if(next==c[x][y]){
a[x][y]=0;
a[c[x][y]/10][c[x][y]%10]=1;
}else if(next==-1)break;
}
return 0;
}
0200デフォルトの名無しさん
NGNGデータが0と1しか含まないと仮定して以下の方法で圧縮されたデータを解凍
するプログラムを作成してください。
圧縮前 0 0 0 1 1 1 0 0 0 0
圧縮後 3 , 3 , 4 \n
1、読んだ数字の数を数えるカウンターの値を1に初期化して、文字を読む前
に整数型の変数numを0に初期化します。
2、データは3,3,4のようにカンマ区切りでファイルに記憶されており、左端
は必ず0から始まっているいるものとしています。従って入力データの種類
は以下の3種類です。
(1)1から9までの数字
(2)カンマ
(3)行末記号。EOLともよばれ、\nのことです。
そこで、getcharコマンドで、入力データの1行目を1文字ずつ読み取ります。
読んだ文字がカンマか行末記号で無い間は、numを10倍した値に、呼んだ文字を
数字に変更して加えます。(読んだ文字を数字に変更するには、文字の'0'を引きます。)
num=0×10+5(numの値は5になります)
num=5×10+9(numに値は59になります)
3、読んだ数字を配列aに代入し、カウンターの値に1を加えます。
4、読んだ文字が行末記号になるまで2から3までを繰り返します。
5、配列aの要素の値だけ、0や1を交互にプリントとします。データが入っている配列の要素数
は、カウンターで数えてあります。
6、上の方法を繰り返して後19行処理しています。(入力データファイルには20行のデータが
あります。)
7、配列aを引数といて、0もたは1の数をプリントする関数を作成してください。
8、サンプルデータsample3を入力としてプログラムを実行してください。
サンプルデータ
62,
35,4,23
30,14,18
32,2,6,2,20
33,2,4,2,21
34,2,2,2,22
34,6,12,4,6
1,5,26,4,2,4,8,2,3,2,5
6,4,20,5,4,5,5,2,5,2,4
11,3,14,4,10,4,2,2,7,2,3
13,5,9,3,14,5,9,2,2
16,4,5,3,18,3,10,2,1
18,9,20,4,8,2,1
20,6,22,4,6,2,2
22,4,22,4,3,3,4
23,4,20,8,7
25,3,18,3,13
28,4,10,4,16
32,10,20
62
0202デフォルトの名無しさん
NGNG(0.50・・,0.86・・)となるんですが・・・
0204デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNGcos30=0.86・・・
何を求めたいんだ?(5、6)という点がθ=30のときに
どこへ移るかを求めるんじゃないの?
0208デフォルトの名無しさん
NGNG(0.5・・,0.86・・)→(1.000,0.000)になるんです。
0209デフォルトの名無しさん
NGNGint data_n;
int f=1;
while(data_n){
for(i=0;i<data[data_n];i++){
printf("%d ",f);
}
data_n--;
f ^= 1;
}
0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGfloat a[2][3],b[2][2],c[2][3],theta,phi;
↓
float a[3][2],b[2][2],c[3][2],theta,phi;
0213デフォルトの名無しさん
NGNGデータを代入する関数を使うにはどうすればいいんですか?
int i;
for(i=0;i<3;i++){
c[i][0]=b[0][0]*a[i][0]+b[0][1]*a[i][1];
c[i][1]=b[1][0]*a[i][0]+b[1][1]*a[i][1];
}
}
asdf(a,b,c);
0215デフォルトの名無しさん
NGNGf~=1が渋めだけどdata_nの初期化が抜けてるやん 70点
0216名無しのだれかさん。
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
スレ立ててみました。良かったら使ってくださいませ。
かなり長いソースでもOK。全角スペースで再インデントする必要もなし!
添付ファイルもできちゃうゾ!
0217デフォルトの名無しさん
NGNGんで自分でちょっといじくったらセグメンテーション違反って結果が。。。
初心者で申し訳ないのですが、一体どうすればいいのでしょうか?
0218デフォルトの名無しさん
NGNG>>149もそうだけど、なしてa[2][3]にするの?
行列を考えたときそのほうがわかりやすかったからでふ。
0221213
NGNG#include <math.h>
#define pai 3.14
void asdf(float a[3][2], float b[2][2] , float c[3][2]){
int i;
for(i=0;i<3;i++){
c[i][0]=b[0][0]*a[i][0]+b[0][1]*a[i][1];
c[i][1]=b[1][0]*a[i][0]+b[1][1]*a[i][1];
}
}
int main(void){
int i;
float a[3][2],b[2][2],c[3][2],theta,phi;
for(i=0;i<3;i++){
printf("%d個目の点を入力してください\n x = ",i+1);
scanf("%f",&a[i][0]);
printf(" y = ");
scanf("%f",&a[i][1]);
}
printf("θ = ");
scanf("%f",&theta);
phi=(pai*theta)/180.0;
b[0][0]=cos(2*phi);
b[0][1]=sin(2*phi);
b[1][0]=sin(2*phi);
b[1][1]=-cos(2*phi);
/* for(i=0;i<3;i++){
c[i][0]=b[0][0]*a[i][0]+b[0][1]*a[i][1];
c[i][1]=b[1][0]*a[i][0]+b[1][1]*a[i][1];
}*/
asdf(a,b,c);
for(i=0;i<3;i++){
printf("(%10f,%10f)→(%10f,%10f)\n",a[i][0],a[i][1],c[i][0],c[i][1]);
}
return 0;
}
これであってるかな?
0224213
NGNG0225グチ
NGNGだから、多次元配列なんて一度も使ったこと無いんだ。
だいたい、ミスってても分かりづらいからバグの温床になるんだよな。
経験上、他人のソースをレビューしてて真っ先に注目するのってソレ。
一番ありがちなのは次元を間違えて別領域書き潰し。
スタックぶっ潰してるから、関数から戻ったときに訳のわからんアクセス
違反でアボート。
Cではヤメにしない?多次元配列。
移植性損なわずに、ベクトル演算できるわけでもなし。
少なくとも宿題レベルで必要無いと言い切りたい。
0226225 改行規制くらった
NGNG例えば >>223 のソースならこんな風にさ。
#include <stdio.h>
#include <math.h>
#define pai 3.14
typedef struct {
float x;
float y;
} point;
typedef struct {
float a00,a01,a10,a11;
} matrix;
void asdf(point pnt[3], matrix mat , point res[3]){
int i;
for(i=0;i<3;i++){
res[i].x = mat.a00*pnt[i].x+mat.a01*pnt[i].y;
res[i].y = mat.a10*pnt[i].x+mat.a11*pnt[i].y;
}
}
int main(void){
int i;
float theta,phi;
matrix mat;
point pnt[3];
point res[3];
for(i=0;i<3;i++){
printf("%d個目の点を入力してください\n x = ",i+1);
scanf("%f",&pnt[i].x);
printf(" y = ");
scanf("%f",&pnt[i].y);
}
printf("θ = ");
scanf("%f",&theta);
phi=(pai*theta)/180.0;
mat.a00 = cos(2*phi);
mat.a01 = sin(2*phi);
mat.a10 = sin(2*phi);
mat.a11 = -cos(2*phi);
asdf(pnt,mat,res);
for(i=0;i<3;i++){
printf("(%10f,%10f)→(%10f,%10f)\n",
pnt[i].x, pnt[i].y, res[i].x, res[i].y );
}
return 0;
}
0227デフォルトの名無しさん
NGNG0228名無しのだれかさん。
NGNG>>216 に貼れば改行制限がゆるいし、インデントも保持されるよ。
0229デフォルトの名無しさん
NGNG3次元以上は使わないけど。
まあ、実際のメモリを考えると2次元もおかしいんだけど。
0230200
NGNG0231デフォルトの名無しさん
NGNG俺がその問題解いてたときは
#define SIZE 2
typedef float point[SIZE];
typedef float matrix[SIZE][SIZE];
ってして、point関係の関数作ってあまり考えなくても
いいようにしてたよ。
0233名無しさん@XEmacs
NGNG君にはPythonで十分だ。
foo.py
----------------------------------------------
import sys
import string
for line in sys.stdin.readlines():
list = string.split(string.strip( line ) , ',' )
even = 1
for data in list:
even += 1
sys.stdout.write( chr( ord('0' ) + even % 2 ) * int(data) )
sys.stdout.write( '\n' )
-----------------------------------------------
data.txt
62
35,4,23
30,14,18
32,2,6,2,20
33,2,4,2,21
34,2,2,2,22
34,6,12,4,6
1,5,26,4,2,4,8,2,3,2,5
6,4,20,5,4,5,5,2,5,2,4
11,3,14,4,10,4,2,2,7,2,3
13,5,9,3,14,5,9,2,2
16,4,5,3,18,3,10,2,1
18,9,20,4,8,2,1
20,6,22,4,6,2,2
22,4,22,4,3,3,4
23,4,20,8,7
25,3,18,3,13
28,4,10,4,16
32,10,20
62
-------------------------------
python foo.py < data.txt
0234デフォルトの名無しさん
NGNGじゃC++
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <boost/tokenizer.hpp>
#include <boost/lexical_cast.hpp>
main(){
std::string s ;
while(std::getline(std::cin,s,'\n'),std::cin){
bool f=false ;
typedef boost::tokenizer<boost::char_separator<char> > tokenizer ;
boost::char_separator<char> sep(",") ;
tokenizer tok(s,sep) ;
for(tokenizer::iterator ti=tok.begin();ti!=tok.end();ti++,f=!f) try {
std::fill_n(std::ostream_iterator<bool>(std::cout),boost::lexical_cast<int>(*ti),f) ;
} catch(...) {}
std::cout << std::endl ;
}
}
0236デフォルトの名無しさん
NGNGじゃあ、Ruby
while line = gets
i = 1
puts line.split(',').map{|n| i *= -1; (i == 1 ? '1' : '0') * n.to_i}.join
end
0237231
NGNG#include <stdio.h>
#define SIZE 10000
int a[SIZE];
int counter = 1;
void write_a(int *a)
{
int i, j, x=0;
for (i=1; i<counter; i++) {
for (j=a[i]; j--;)
printf("%d ", x);
x = (x) ? 0 : 1;
}
printf("\n");
}
int main(void)
{
int ch;
int num;
do {
counter = 1;
do {
num = 0;
while ((ch = getchar()) != ',' && ch != '\n' && ch != EOF) {
num *= 10;
num += ch - '0';
}
a[counter++] = num;
} while (ch != '\n' && ch != EOF);
write_a(a);
} while (ch != EOF);
return 0;
}
0238デフォルトの名無しさん
NGNG#include <stdio.h>
#include <ctype.h>
int main(){
int c, prev=0 ;
int flag=0 ;
while(c=getchar(),c!=EOF){
if(isdigit(c))
prev = prev*10+(c-'0') ;
else if(c==',' || c=='\n') {
while(prev--) printf("%d",flag) ;
prev = 0 ;
flag = !flag ;
if(c=='\n') {
printf("\n") ;
flag = 0 ;
}
}
}
return 0 ;
}
0239238
NGNGじゃ、awk。
BEGIN{FS=","}
{
for (i = 1; i <= NF; i++)
for (j = 0; j < $i; j++)
printf("%d", 1 - (i % 2));
print "";
}
0241デフォルトの名無しさん
NGNGこんなところか。ただ、ファイルの末尾が\nでないと最終行が出力されない既知のバグあり(w
#include <stdio.h>
#define SIZE 10000
static int a[SIZE];
void write_a(int *a, int counter)
{
int i, j, x=0;
for (i=0; i < counter; i++) {
// printf("%d ", a[i]);
for (j = 0; j < a[i]; j++)
printf("%d", x);
x = (x) ? 0 : 1;
}
printf("\n");
}
int main(void)
{
int ch;
int num = 0;
int counter = 0;
while ((ch = getchar()) != EOF) {
switch (ch) {
case ',':
a[counter++] = num;
num = 0;
break;
case '\n':
a[counter++] = num;
write_a(a, counter);
counter = 0;
num = 0;
break;
default:
num *= 10;
num += ch - '0';
break;
}
}
return 0;
}
0242名無しさん@XEmacs
NGNGint main()
{
while(string s=Stdio.stdin.gets()){
string x;
int count = 1;
foreach( s/",",x ){
count++;
write( (string)(count%2) * (int)x );
}
write("\n");
}
}
0243241
NGNGしかもバグ取りに使ったprintf残ってるし(恥
0244Rina ◆tI333vNE
NGNGおそるべし2ch…。
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG#include <stdio.h>
int a[3][3]={{1,0,0},
{0,0,0},
{0,0,0}};
int b[3][3]={{12,20,10},
{2,-1, 0},
{2, 0, 1}};
int c[3][3]={{21,22,21},
{22,-1,20},
{12, 2,10}};
void print_moveto(int b[3][3], int x, int y)
{
printf("(%d,%d)", b[x][y] / 10, b[x][y] % 10);
}
void print_knight(void)
{
int i, j, x=3, y=3;
for (i=0; i<3; i++) {
for (j=0; j<3; j++)
if (a[i][j] == 1) {
x = i; y = j;
printf("★");
} else {
printf("□");
}
printf("\n");
}
printf("move to ");
print_moveto(b, x, y);
printf(" or ");
print_moveto(c, x, y);
printf(".\n");
}
0248246
NGNGint check(int b[3][3], int x, int y)
{
int i, j;
for (i=0; i<3; i++)
for(j=0; j<3; j++)
if (a[i][j] == 1) {
return (b[i][j] / 10 == x) && (b[i][j] % 10 == y);
}
return 0;
}
void move(int x, int y)
{
int i, j;
for (i=0; i<3; i++)
for(j=0; j<3; j++)
a[i][j] = 0;
a[x][y] = 1;
}
int moveto(void)
{
int x, y;
scanf("%d,%d", &x, &y);
if (x == -1 && y == -1)
return 0;
if (check(b, x, y)) { move(x, y); return 1;}
if (check(c, x, y)) { move(x, y); return 1;}
printf("cannot move to (%d,%d).\n", x, y);
return 1;
}
int main(void)
{
do print_knight();
while (moveto());
return 0;
}
0249248=247
NGNG0250Rina ◆tI333vNE
NGNGimport java.util.*;
public class Main {
public static void main(String[] args)
throws Exception {
BufferedReader in = null;
{
FileReader fr = new FileReader(args[0]);
in = new BufferedReader(fr);
}
String line;
while( (line = in.readLine()) != null ) {
int c = 0;
StringTokenizer token = new StringTokenizer(line, ",");
while( token.hasMoreTokens() ) {
String tmp = token.nextToken();
int n = Integer.parseInt(tmp);
for (int i = 0 ; i < n ; i++) {
System.out.print( (c % 2) );
}
c++;
}
System.out.println();
}
}
}
これでいいの?
最早Javaとは呼べないソース…w
実行は
$ java Main sample
でどうぞ。
0251デフォルトの名無しさん
NGNG>>201 なんかどだ?
#!perl
$\ = "\n";
while(<>)
{
my $i = 1;
print join '', map { $i ^= 1; ($i ? 1 : 0) x $_ } split /,/;
}
0253デフォルトの名無しさん
NGNGデータが0と1しか含まないと仮定して、以下の方法でプログラムを作成し
てください。
getcharコマンドで、入力データの1行目を読み取り、配列aに代入(1行に38文字あるが、最後の1文字は改行文字と仮定)してカウンターの値を1に初期化する。<最初に読んだ文字(a[0]の値)が続いている間は、カウンタ
ーの値輪1ずつ増やして読んだ文字が今までと違った(文字の連続が終わっ
た)時点でカウンターの値をプリントして1の場合にはそのまま数字をプリ
ントして0の場合には、符号をマイナスにしてプリントする。カウンター
の値を1に再初期化>して<>の間を繰り返す。2行目以降を同時に処理し
てください。
条 件:・配列aを引数として、0または1の数をプリントする関数を作成してください。
・サンプルデータは
0000000000000000111100000000000000000
0000000000011111111111111000000000000
0000000000001100000000110000000000000
0000000000000111000011100000000000000
0000000000000011100111000000000000000
0000000000000011100111000000000000000
0000000000000001111110000000000000000
0000000000000001111110000000000000000
0000000000000111111111100000000000000
0000000000011111000011111000000000000
0000000001111000000000011110000000000
0000000011100000000000000111000000000
0000001110000000000000000001110000000
0000111100000000000000000000111100000
0001111000000000000000000000011110000
0001111000000000000000000000011110000
0000111100000000000000000000111100000
0000001110000000000000000001110000000
0000000001111111111111111111000000000
0000000000000111111111100000000000000
0000000000000000000000000000000000000
#include<stdio.h>
int main(void)
{
int i, j ,counter;
int a[20][38];
char ch;
for(i=0; i<21; i++){
for(j=0; j<38; j++){
a[i][j]=getchar();
}}
for(i=0; i<21; i++){
for(j=0; j<38; j++){
printf("%c",a[i][j]);
}}}
このプログラムの後に1行目は0が16個、1が4個、0が17個であるので16,4,17というように表示したいのですがで
きません。
16,4,17
11,14,12
:
:
:
:
と表示したいのです。どうぞお願いします。
0254241
NGNG貴様、>>200だな(w
にしても「getcharコマンド」てのはなんかイヤな呼び方だなあ。
getchar関数か(実装にもよるが)getcharマクロと呼んでほしい。
出題者のセンス悪いぞ。
とかいってる間に解いてみようかな。
あ、そうそう、
for(i=0; i<21; i++){
for(j=0; j<38; j++){
a[i][j]=getchar();
}}
なんかの部分、最後の}}はよしとけ。ひとつずつ改行しとけ。
あとインデントちゃんとやってる?
つまり、
for(i=0; i<21; i++){
for(j=0; j<38; j++){
a[i][j]=getchar();
}
}
みたいに書けってこと。
0255254
NGNG0257200
NGNGそうですね。今度からそうします!
この問題もよろしくおねがいします!
0258デフォルトの名無しさん
NGNG実行してもセグメンテーション違反と表示されてしまいます。
↓僕がいじったものを修正してくださいませんか?
#include <stdio.h>
#define LIMIT 8
#define NUMBER 5
#define MIN_SIZE 1
struct nimotu
{
char *name;
int size;
int price;
} data[]={{"a",4,450},{"b",5,570},{"c",2,225},
{"d",1,110},{"e",6,670}};
int main(void)
int newvalue,value[LIMIT+1];
int item[LIMIT+1],i,s,p;
for(s = 0;s <= LIMIT;s++)
{
value[s]=0;
}
for(i = 0;i < N;i++)
{
for(s = data[i].size;s <= LIMIT;s++)
{
p = s - data[i].size;
newvalue = value[p] + data[i].price;
if(newvalue > value[s])
{
value[s] = newvalue;
item[s]=i;
}
}
}
printf(" 品 目 重量 価格\n");
for(s = LIMIT,p=0;s >= MIN_SIZE;s-=data[item[s]].size)
{
printf("%10s %5d %5d\n",data[item[s]].name,data[item[s]].size,data[item[s]].price);
p += data[item[s]].size;
}
printf(" 合 計 %5d %5d\n",p,value[LIMIT]);
}
できればコメントつけていただくとうれしいのですが…
■ このスレッドは過去ログ倉庫に格納されています