宿題手伝います
レス数が1000を超えています。これ以上書き込みはできません。
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
で初登場。お兄ちゃんの恋人。
結構親切に答えてくれる年上キャラ。
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG乙
対応が早いね。
0004Rina ◆tI333vNE
NGNG前スレ常駐してたわけではないので,
常連さんで気がついたリンクあったら書き足しておいてください.
0005デフォルトの名無しさん
NGNG前スレの内積、
if (n == 0) {
return 0.0;
}
↑これいらなくない?
0006Rina ◆tI333vNE
NGNGC/C++の宿題は専用スレがあるのでこちらへどうぞ.
http://pc3.2ch.net/test/read.cgi/tech/1021862587/l50
0007Rina ◆tI333vNE
NGNG0008デフォルトの名無しさん
NGNG0009おねがいします!
NGNG(問題)数を12個読み込む。それぞれが車の月間売り上げ数だとする。
売り上げが一番多かった月、売り上げが一番伸びた月を見つけて印刷する
プログラム(Hanbai)を書きなさい。というものです。おそらく配列を使う
らしいのですが。言語はjavaです。
言語はjavaです。
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG多分日本人に理解しやすいように和訳してくれてるんだと思われ。
0012デフォルトの名無しさん
NGNG0013おねがいします!
NGNG自分でもよくわかりません。はあーー。
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGワラタ
0016デフォルトの名無しさん
NGNGどこがわからないんだ。(複数可)
1) 数の読み込み
2) 12個の読み込み
3) 売り上げの一番多かった月の見つけ方
4) 売り上げの一番伸びた月の見つけ方
5) 3) 4) の結果の印刷(標準出力への表示でいいのか?)の仕方
6) Javaのコンパイル、実行
7) Javaのソースの書き方
配列は1)2)で読み込んだ月間売り上げ数を保持するのに使用し、
それを3)4)で使う。
0017名無しさん@カラアゲうまうま
NGNG0018デフォルトの名無しさん
NGNG無論、1月は除外でしょ?って解釈は駄目なん?
0019名無しさん@カラアゲうまうま
NGNGつーことを明確にしてない問題が欠陥仕様。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024Rina ◆tI333vNE
NGNGいっそ改行とっぱらって書き込もうか…。
0025デフォルトの名無しさん
NGNGいくつかのレスに分けたらよいのでは?
0026Rina ◆tI333vNE
NGNG//エラー処理は一切してない.
public class Hanbai {
/**
* 12ヶ月分のデータを読む.
*
* データフォーマットの指定がなかったので, 1行につき1月分の
* 売り上げが書き込まれたテキストファイルだと仮定.
*/
public static int[] readData(String dataFileName) {
BufferedReader in = null;
// 開ける
try {
FileReader fileReader =
new FileReader(dataFileName);
in = new BufferedReader(fileReader);
} catch (Exception e) {
e.printStackTrace();
System.out.println("も、もうだめぽ…");
System.exit(1);
}
// 読む
int[] result = new int[12];
for (int i = 0 ; i < result.length ; i++) {
try {
String tmp = in.readLine();
result[i] = Integer.parseInt(tmp);
} catch (Exception e) {
e.printStackTrace();
System.out.println("データファイルがなってねーよ, ハゲ");
System.exit(1);
}
}
// 閉じる
try {
in.close();
} catch (Exception e) {
// do nothing.
}
return result;
}
0027Rina ◆tI333vNE
NGNGpublic static void main(String[] args) {
int[] tmp = readData("datafile");
printMax(tmp);
printMaxDiff(tmp);
}
/**
* 最大売り上げの月を表示
*/
public static void printMax(int[] data) {
System.out.println("売り上げが最大なのは");
System.out.print(" ");
int max = data[0];
for (int i = 1 ; i < data.length ; i++) {
if (data[i] > max) {
max = data[i];
}
}
for (int i = 0 ; i < data.length ; i++) {
if (data[i] == max) {
System.out.print((i + 1) + "月 ");
}
}
System.out.println();
}
/**
* 差分が最大な月を求める.
*/
public static void printMaxDiff(int[] data) {
System.out.println("売り上げの伸びが最大なのは");
int maxDiff = data[1] - data[0];
for (int i = 1 ; i < data.length - 1 ; i++) {
int diff = data[i + 1] - data[i];
if ( diff > maxDiff) {
maxDiff = diff;
}
}
for (int i = 0 ; i < data.length - 1 ; i++) {
if ((data[i + 1] - data[i]) == maxDiff) {
System.out.println(" " + (i + 1) + "月 -> " + (i + 2) + "月");
}
}
}
}
0028デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031おねがいします!
NGNGかなり助かりました。ちょっと感動。。。
0032Rina ◆tI333vNE
NGNG使った方がコードの見通しがいいと思ったんだけど.
0033デフォルトの名無しさん
NGNG最大値の候補だけ保持しとくとか?
0034デフォルトの名無しさん
NGNG売上の最大の月が複数あったらどうすんだ ? 結局配列が必要だよ。
0035Rina ◆tI333vNE
NGNGだよね…あせったよw
0036デフォルトの名無しさん
NGNG脱げ
0037Rina ◆tI333vNE
NGNG当方、ぶちゃいくなので止めといたほうがいいと思われ.
0038デフォルトの名無しさん
NGNGブス専もいるんだよ。この世には。
0039Rina ◆tI333vNE
NGNG0040デフォルトの名無しさん
NGNGCollections Framework を使えということではないか?
0041Rina@Nethack ◆tI333vNE
NGNG0042Rina ◆tI333vNE
NGNG0043おねがいします!
NGNGという問題です。何度もごめんなさい。
実行例はこんなかんじらしい。
日付けを2つ記入してください。
何年? 2002
何月? 7
何日? 27
何年? 2003
何月? 7
何日? 27
日数は365日です。
その年はうるう年かどうかを考えなきゃいけないし。。。
何月は何日あるのかということは、
int month[]=new int[12];
month[0]=31; month[1]=28; month[2]=31; month[3]=30;
month[4]=31; month[5]=30; month[6]=31; month[7]=31;
month[8]=30; month[9]=31; month[10]=30; month[11]=31;
でたぶん配列を使うのかなー。
こうしておくとX月Y日が1月1日から数えて何日目かは、
days=0;
for(i=0; i< x-1; i++)days= days+month[i];
days=days+y-1;
2002年の4月1日と2002年の7月27日の間に何日あるかは、2002年の
4月1日が1月1日からP日あって、2002年の7月27日がQ日あるとすると
Q-Pで求まると書いてあります。
0044デフォルトの名無しさん
NGNG素直にtimeに頼りなさい。
0045Rina ◆tI333vNE
NGNGhttp://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/Calendar.html
これで我慢してください。
0046▽・w・▽
NGNG0047デフォルトの名無しさん
NGNGそれだけ分かってれば書けるだろ?
何が分からないんだ?
0048おね
NGNG0049Rina ◆tI333vNE
NGNG// うるう年
}
0050デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGこの程度のコードにコンパイル確認なんかいらんだろ。
0053Rina ◆tI333vNE
NGNGごめんなさい、emacsマンセーなんです。
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNG俺なんかココでお試しコード書くときは、このテキストエリアに
直書きするぞ(藁
0056デフォルトの名無しさん
NGNG0057Rina ◆tI333vNE
NGNGこれいいね。五目並べまでついてるのは笑ったw
んじゃー早速コードを。
import java.util.*;
public class Nissuu {
public static void main(String[] args) {
hoge();
}
public abstract void hoge();
}
これを継承すれば問題ない。
・・・すんません、ネタです。ご飯食べたら書きますので
何卒ご容赦を。
0058デフォルトの名無しさん
NGNGint i;
if(&i) ;
この条件式が必ず真となることを証明せよ。
全然分かりません・・・
0059デフォルトの名無しさん
NGNG・auto変数はスタックに確保される
・そのアドレスは当然ながら、NULL(0)ではない
0060デフォルトの名無しさん
NGNG0はpointerとしてはヌルポインタを表すため、&iがヌルポインタで
ないことを判定しているわけです。ヌルポインタはいかなるオブジェクトも
指し示さないポインタであることが保証されているためiというオブジェクト
を指す&iとは絶対に一致しません。よってif(&i)は真となります。
0061デフォルトの名無しさん
NGNGつーか、こんなのを課題に出す意図がちょっと不明。
「C言語」そのものを学ぶことにどういう必要性があるんだろう?
0062デフォルトの名無しさん
NGNGどういう授業の課題かにもよるんじゃない?
0063Rina ◆tI333vNE
NGNGJava>gcc>.NET 71回
Java=gcc>.Net 6回
gcc>Java>.Net 23回
とりあえず100回やってみました。
じゃークライアントから電話掛かってきたのでお仕事いってきます。
…行きたくない。
0064Rina ◆tI333vNE
NGNG0065デフォルトの名無しさん
NGNGスレチガイ
0066デフォルトの名無しさん
NGNGこのスレ立てた香具師は回線で首吊って氏ね
0067デフォルトの名無しさん
NGNGさっきまでいたけどお仕事に出かけていったよ
0068デフォルトの名無しさん
NGNG>>1
ケコーンしてください。
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNGじつは稲川亮二→R・inaとか?
0072デフォルトの名無しさん
NGNGいやーん
0073デフォルトの名無しさん
NGNG誰か助けてください。
「x円(x>=0)を1円玉、5円玉、10円玉、50円玉、100円玉、500円玉
で両替する方が何通りあるかを調べるプログラムを作成せよ。」
0円を両替する方法は1通り、マイナスの金額を両替する方法は0通りにしろ
とのヒントがついています。どなたかよろしくお願いします。
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGいいんじゃない...?
007773
NGNGずうずうしいこと言って本当にすいません。
0078デフォルトの名無しさん
NGNGそしたら、実装するよ。
0079こんなんどう?
NGNGint ryogae(int x, int coin, int d)
{
if( coin <= 1 ) return 1;
int c = 0;
int max_i = x / coin;
int i;
for(i = 0; i <= max_i; ++i)
{
c += ryogae(x - coin * i, coin / d, 7 - d);
}
return c;
}
int ryogaesousuu(int x)
{
if( x <= 0 ) return 1;
return ryogae(x, 500, 5);
}
int main()
{
int x = 0;
scanf("%d", &x);
printf("%d\n", ryogaesousuu(x));
return 0;
}
008079
NGNG008179
NGNG0082分かりやすさ優先
NGNG#include <stdio.h>
int exchange(int x){
int c=0,y1,y5,y10,y50,y100,y500;
if(c<0) return 0 ;
for(y500=0;y500<=x;y500+=500)
for(y100=0;y500+y100<=x;y100+=100)
for(y50=0;y500+y100+y50<=x;y50+=50)
for(y10=0;y500+y100+y50+y10<=x;y10+=10)
for(y5=0;y500+y100+y50+y10+y5<=x;y5+=5)
for(y1=0;y500+y100+y50+y10+y5+y1<=x;y1+=1)
if(y500+y100+y50+y10+y5+y1==x) c++;
return c ;
}
int main(){
int x;
printf("いくら?");scanf("%d",&x);
printf("%d通り\n",exchange(x)) ;
return 0 ;
}
0083デフォルトの名無しさん
NGNG#include <stdlib.h>
static int coins[] = { 1, 5, 10, 50, 100, 500 };
static int n_coins = sizeof(coins)/sizeof(coins[0]);
int countup( int x, int n ) {
if ( x == 0 ) return 1;
if ( x < 0 || n < 0 ) return 0;
return countup( x - coins[n], n ) + countup( x, n - 1 );
}
int main( int argc, char **argv ) {
int x, ans;
if ( argc != 2 )
return 1;
x = atoi( argv[1] );
if ( x < 0 )
ans = 0;
else
ans = countup( x, n_coins - 1 );
printf( "%d\n", ans );
return 0;
}
008479
NGNG#include <stdio.h>
int ryogae(int x, int coin, int d)
{
if( coin <= 1 ) return 1;
int c = 0;
int max_i = x / coin;
int i;
for(i = 0; i <= max_i; ++i) c += ryogae(x - coin * i, coin / d, 7 - d);
return c;
}
int ryogaesousuu(int x) { if( x < 0 ) return 0; return ryogae(x, 500, 5); }
int main()
{
int x = 0;
scanf("%d", &x);
printf("%d\n", ryogaesousuu(x));
return 0;
}
0085デフォルトの名無しさん
NGNGここに直で書いてたら、もう出てたという罠。
008683
NGNGans = 0;
else
これいらないやゴメン
008779
NGNGテストがてら、各xに対する組み合わせ数でもはりませんか?
008883
NGNGx = 10 => 4
x = 50 => 37
x = 100 => 159
x = 150 => 451
x = 500 => 19162
009082
NGNGx=50 => 37
x=100 => 159
x=150 => 451
x=500 => 19162
009282
NGNG> 7 - d
009483
NGNGx = 1000 => 248908
5000とか入れると止まっちゃうねえ。もっと速いアルゴリズムないのかな
009582
NGNG0097デフォルトの名無しさん
NGNGどっちが評価高いんでしょ。
cの宿題的には、>>79もありかもネ。
010179
NGNG010273
NGNG010373
NGNGしかも私意識飛んじゃってて本当にすいませんでした。
010483
NGNG∧||∧
( ⌒ ヽ
∪ ノ 計ってみたらダントツで遅かった.......鬱氏
∪∪
0105デフォルトの名無しさん
NGNG今日締め切りのレポートが完成して机の上に置いてあった。
という心境だな。
010679
NGNG寝ます
010773
NGNG010882
NGNG解析的に求まるし
おやすみ
010973
NGNG0110デフォルトの名無しさん
NGNGどうでもいいけど徹夜で考える前に google で調べてみたの?
"小銭の払い方 C"
で検索してみ。
0111デフォルトの名無しさん
NGNGかかるのか・・・?
0112質問です
NGNGグローバル変数を用いて書くのってどうやりますか?
#include<stdio.h>
int func(int *a,int *b)
{
*a-=3;
*b+=3;
return(*a+*b);
}
void main(void)
{
int a=5,b=5,c;
c=func(&a,&b);
printf("a:%d,b:%d,c:%d\n",a,b,c);
}
0113デフォルトの名無しさん
NGNG素直にポインタマスターしなさい。
0114デフォルトの名無しさん
NGNG流れ図というのは必ずしも最適なものではないということなのですが、何故なのでしょうか?
また、流れ図が最適でないのなら何を利用すればいいのでしょうか?
よろしくお願いします。
0115デフォルトの名無しさん
NGNG#include<stdio.h>
int a=5,b=5,c;
int func(int *a,int *b)
{
*a-=3;
*b+=3;
return(*a+*b);
}
void main(void)
{
c=func(&a,&b);
printf("a:%d,b:%d,c:%d\n",a,b,c);
}
#include <stdio.h>
int global;
int main() {
puts("a:2,b:8,c:10");
return 0;
}
0117デフォルトの名無しさん
NGNGまずはその「最適」の意味を教えてくれ。
0118デフォルトの名無しさん
NGNG詰めが甘いな。>>112の main の返り血が
void になっているのに気が付いていたか?
0120デフォルトの名無しさん
NGNG同じ結果が表示される事を「保証した」文章(=規格)ってある?
0121デフォルトの名無しさん
NGNG配列aに10個のデータを入力しそれを大きい順番に並べ、その中に同じ値のものがあれば
消去して,空いたスペースに次の要素をシフトするという部分を関数するのがわかりません。
下のプログラムを完成させてやってください。お願いします。
#include<stdio.h>
#define SIZE 10
int main(void)
{
int a[SIZE],b[SIZE];
int i,j,work,k;
for(i=0;i<SIZE;i++)
{printf("a=");scanf("%d",&a[i]);}
for(k=0;k<SIZE;k++)
{printf("b=");scanf("%d",&b[k]);}
for(i=0;i<SIZE-1;i++)
{for(j=i+1;j<SIZE;j++)
{if(a[i]<a[j]){work=a[i];a[i]=a[j];a[j]=work;}}}
for(i=0;i<SIZE;i++)
{printf("%d ",a[i]);}
printf("\n");
for(k=0;k<SIZE;k++)
{printf("%d ",b[k]);}
printf("\n");
printf("共通の要素は");
for(i=0;i<SIZE;i++)
{for(k=0;k<SIZE;k++)
{if(a[i]==b[k])
{printf("%d ",a[i]);}}}}
0122デフォルトの名無しさん
NGNG速度的にひけをとらないはず。
2000円札もへっちゃらだよう。
x = 10 => 4
x = 50 => 37
x = 100 => 159
x = 150 => 451
x = 500 => 19162
x = 1000 => 248908
x = 5000 => 285913936
int countup(int x, int *coin) {
int n = 0;
if (*coin == 1) return 1;
for (; x > 0; x -= *coin)
n += countup(x, coin+1);
return (x == 0) ? n+1 : n;
}
int ryogae(int x) {
int coins[] = {500, 100, 50, 10, 5, 1};
return countup(x, coins);
}
0123デフォルトの名無しさん
NGNGvoid shift(int i) {
for (; i < SIZE-1; i++)
a[i] = a[i+1];
a[i] = ...; /* <= 最後を埋める値。 */
}
0124デフォルトの名無しさん
NGNG#include <stdio.h>
#define SIZE 10
void input(char *s, int *p) {
int i = 0; for(;i<SIZE;i++) { printf(s); scanf("%d",&p[i]); } }
void sort(int *p) {
int i, j; for (i = 0; i < SIZE; i++) for (j = i+1; j < SIZE; j++)
if(p[i]<p[j]) {int work = p[i]; p[i]=p[j]; p[j]=work; } }
void display(int *p) {
int i = 0; for (; i < SIZE; i++) printf("%d ", p[i]); printf("\n"); }
void shift(int *p) {
int i = 1; for (; i < SIZE; i++) while (p[i-1] != p[i])
{ int j = i; for (; j < SIZE-1; j++) p[j] = p[j+1]; p[j] = 0;} }
void answer(int *p, int *q) {
int i, k; printf("共通の要素は"); for(i=0; i< SIZE; i++)
for (k=0; k< SIZE; k++) if (p[i] == q[k] && p[i] != 0)
printf("%d ", p[i]); }
int main(void) {
int a[SIZE],b[SIZE];
input("a=", a); input("b=", b);
sort(a); sort(b);
display(a); display(b);
shift(a); shift(b);
answer(a, b);
}
0125デフォルトの名無しさん
NGNG121のプログラムに入れ込んでもらえませんか?あほですんまそん。
0126デフォルトの名無しさん
NGNG宿題肩代わりスレではない。
0127デフォルトの名無しさん
NGNG>>124の
void shift(int *p) {
int i = 1; for (; i < SIZE; i++) while (p[i-1] != p[i])
{ int j = i; for (; j < SIZE-1; j++) p[j] = p[j+1]; p[j] = 0;} }
を使って shift(a); を置けば。
0128127
NGNGint i = 1; for (; i < SIZE; i++) while (p[i-1] == p[i] && p[i] != 0)
{ int j = i; for (; j < SIZE-1; j++) p[j] = p[j+1]; p[j] = 0;} }
だな。
0130127
NGNGsort(a); shift(a); でないとダメ。
shift 直したら124は動いたよ。テストしなかったな。>>124
1 2 3 4 5 6 7 8 9 1
1 2 3 4 5 1 2 3 4 5
↑sort shift の前、入力したまんま
↓結果
9 8 7 6 5 4 3 2 1 0
5 4 3 2 1 0 0 0 0 0
共通の要素は5 4 3 2 1
これでいいんでしょう?
0131127
NGNG使う前にmainの前に void shift(int *p) { .... } を置いて
main の中で shift(a); ってやればいいんだけど。
よく分からんので124を直したの書いておくよ。
#include <stdio.h>
#define SIZE 10
void input(char *s, int *p) {
int i = 0; for(;i<SIZE;i++) { printf(s); scanf("%d",&p[i]); } }
void sort(int *p) {
int i, j; for (i = 0; i < SIZE; i++) for (j = i+1; j < SIZE; j++)
if(p[i]<p[j]) {int work = p[i]; p[i]=p[j]; p[j]=work; } }
void display(int *p) {
int i = 0; for (; i < SIZE; i++) printf("%d ", p[i]); printf("\n"); }
void shift(int *p) {
int i = 1; for (; i < SIZE; i++) while (p[i-1] == p[i] && p[i] != 0)
{ int j = i; for (; j < SIZE-1; j++) p[j] = p[j+1]; p[j] = 0;} }
void answer(int *p, int *q) {
int i, k; printf("共通の要素は"); for(i=0; i< SIZE; i++)
for (k=0; k< SIZE; k++) if (p[i] == q[k] && p[i] != 0)
printf("%d ", p[i]); }
int main(void) {
int a[SIZE],b[SIZE];
input("a=", a); input("b=", b);
display(a); display(b);
sort(a); sort(b);
shift(a); shift(b);
display(a); display(b);
answer(a, b);
}
0132デフォルトの名無しさん
NGNGインデント付けろとはいわんが空行くらい入れてください・・・。
0133121
NGNGそうです!でも0はいりません。すみません、説明不足でした。
0134127
NGNGうーん、この宿題は0が入力されたらどうするの?(0も有効なの?)
0を無視していいなら表示するときに飛ばせばいいと思うけど。
そうでなかったら、配列の長さを変数で保持して、shiftで減らすとか・・・。
>>132
上の修正ができたら、空行いれるよ。
つーか、文句は124に言ってくれ。
0135121
NGNG例 1、3、5、0、7、5
↓
7、5、3、1、0
0136127
NGNG1 0 3 4 2 1 6 3 0 2
0 5 2 1 6 4 7 1 0 0
6 4 3 2 1 0
7 6 5 4 2 1 0
共通の要素は6 4 2 1 0
#include <stdio.h>
#define SIZE 10
void input(char *s, int *p) {
int i = 0;
for(;i<SIZE;i++) {
printf(s);
scanf("%d",&p[i]);
}
}
void sort(int *p) {
int i, j;
for (i = 0; i < SIZE; i++)
for (j = i+1; j < SIZE; j++)
if(p[i]<p[j]) {
int work = p[i];
p[i]=p[j];
p[j]=work;
}
}
void display(int *p, int p_size) {
int i = 0;
for (; i < p_size; i++)
printf("%d ", p[i]);
printf("\n");
}
0137127
NGNGvoid shift(int *p, int *p_size) {
int i = 1;
for (; i < *p_size; i++)
while (p[i-1] == p[i]) {
int j = i;
for (; j < SIZE-1; j++)
p[j] = p[j+1];
p[j] = 12346789; /* チェック用 */
--*p_size;
}
}
void answer(int *p, int p_size, int *q, int q_size) {
int i, k;
printf("共通の要素は");
for(i=0; i< p_size; i++)
for (k=0; k< q_size; k++)
if (p[i] == q[k])
printf("%d ", p[i]);
}
int main(void) {
int a[SIZE],b[SIZE];
int a_size = SIZE, b_size = SIZE;
input("a=", a); input("b=", b);
display(a, a_size); display(b, b_size);
sort(a); sort(b);
shift(a, &a_size); shift(b, &b_size);
display(a, a_size); display(b, b_size);
answer(a, a_size, b, b_size);
return 0;
}
0138121
NGNG0139127
NGNG動かないよなあ。でも直せん。
0140デフォルトの名無しさん
NGNG0141127
NGNGvoid shift(int *p, int *p_size) {
int i = 1, check = p[0] + 1;
for (; i < *p_size; i++)
while (p[i-1] == p[i]) {
int j = i;
for (; j < SIZE-1; j++)
p[j] = p[j+1];
p[j] = check; /* チェック用 */
--*p_size;
}
}
0142デフォルトの名無しさん
NGNG無理です。それは無限長のデータです。
0143デフォルトの名無しさん
NGNGとりあえずは文字列として表現するのが手っ取り早い。
char *add(char *a1, char *a2);
main(){add("123", "456");}
みたいな(中身を書くのは面倒臭いから勘弁。
また関数が返す値は関数内部で新規にメモリを
確保したとこに書く(形に実装したほうが手離れが良い?)から、
使用後は free するのをお忘れなく)。
それが嫌(速度・メモリ etc. の為)なら
その部分だけアセンブラで書くのが吉。
0145デフォルトの名無しさん
NGNG完成しません。どなたかお助けを!
(1)三角形の頂点の座標を入力させ、それらの値をa[3][2]に代入する。
(2)直線lがx軸となす角theta(=t)をたずね、それをラジアンに換算した値を変数phiに代入する。
(3)配列bは2×2の行列で頂点(x,y)は点(x',y')に移し、(2)で得られたphiから配列bの
要素を求める。
(ちなみにx'=xcos2t+ysin2t y'=xsin2t-ycos2t)
(4)配列a,bを用いて対称変換後の頂点の座標を計算し、結果を配列c[3][2]に代入する。
(5)配列aと配列cの要素をプリントする。
#include <stdio.h>
#include <math.h>
void kan(float x[3][2],float y[2][2],float z[3][2])
#define pai 3.14
int main(void)
{
int i;
float a[3][2],b[2][2],c[3][2],theta,phi;
for(i=0;i<3;i++)
{
scanf("%d,%d",&a[i][0],&a[i][1]);
}
scanf("%d",&theta);
phi=(pai*theta)/180;
b[0][0]=cos(2*phi);
b[0][1]=sin(2*phi);
b[1][0]=sin(2*phi);
b[1][1]=-cos(2*phi);
kan(a,b,c);
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
printf("%f",a[i][j]);
}
printf("/n");
}
void kan (float x[3][2],float y[2][2],float z[3][2])
{
int i;
for(i=0;i<3;i++)
{
z[i][0]=y[0][0]*x[i][0]+y[0][1]*x[i][1];
z[i][1]=y[1][0]*x[i][0]+y[1][1]*x[i][1];
}
}
0146 ◆aCDPDEl2
NGNG0147 ◆aCDPDEl2
NGNG0148デフォルトの名無しさん
NGNG完成してるやん
あとはcを表示するだけちゃうの?
#include <math.h>
#define pai 3.14
int main(void){
int i;
float a[2][3],b[2][2],c[2][3],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];
}
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;
}
0150148
NGNGあと、△形かどうかの判定は無くて良し?
0153 ◆aCDPDEl2
NGNG0154デフォルトの名無しさん
NGNG2^50を求めて表示させなさい。
0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNG貴様の処理系で sizeof long はいくつ?
もしあれば sizeof long long も。話はそれからじゃない?
0157デフォルトの名無しさん
NGNGうちはWinXP、学校はNT。
bccで試したところ、longは4バイトです。
long longはエラーになったので多分ないです。
0158 ◆aCDPDEl2
NGNG0160デフォルトの名無しさん
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]);
}
できればコメントつけていただくとうれしいのですが…
0259254
NGNGとりあえずRubyで。
while line = gets
puts line.scan(/1+|0+/).map{|s| s.length}.join(',')
end
次Cいくから待ってろ(w
0261200
NGNG0262254
NGNGなるほど。じゃあこれでいいのかな。
サンプルデータの一行目は
0000000000000000111100000000000000000
になってるけど、これは
-16,4,-17,
と出力したらいいんだよね。問題にはそうしろと書いてあるように読める。
#include <stdio.h>
static void print_a(const char *a, size_t size)
{
char state = a[0];
int i, count = 1;
for (i = 1; i < size; i++) {
if (a[i] != state) {
if (state == '0') {
count = -count;
}
printf("%d,", count);
state = a[i];
count = 1;
}
else {
count++;
}
}
printf("\n");
}
int main(int argc, char * argv[])
{
char a[38];
int i = 0, ch;
while ((ch = getchar()) != EOF) {
if (ch == '\n') {
print_a(a, i);
i = 0;
}
else {
a[i++] = ch;
}
}
if (i) {
print_a(a, i);
}
return 0;
}
0263デフォルトの名無しさん
NGNGまずそのままではコンパイルすら通らなかったぞ
int main(void) のあとに { 追加
for(i = 0;i < N;i++) の N を NUMBER に変更
したら、普通に動いたが?以下出力
品 目 重量 価格
d 1 110
c 2 225
b 5 570
合 計 8 905
0264200
NGNGホントにありがとうございました。
0265258
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 < NUMBER;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]);
}
これに応じたコンパイルの仕方というのがあるのでしょうか?
gcc -oでやっているのですが、おかしいですか?
↑ちなみに意味もわかっていないものなので…
0266名無しさん@カラアゲうまうま
NGNGオレんとこでもちゃんと動いたけどな。
コンパイルの手順と実行結果を省略せずに貼ってみ。
0267デフォルトの名無しさん
NGNG自分でデバグしろよ。
0268258
NGNGほんと素人ですいません…
コンパイルはgcc -o test test.cとやって別にエラーも出てきません。
で、実行結果は
品 目 重量 価格
d 1 110
c 2 225
セグメンテーション違反です
と表示されるんです。
0269デフォルトの名無しさん
NGNGこっちでも試してみたけど、違反は起きないなあ。
0270デフォルトの名無しさん
NGNG複数枚のウィンドウを表示してる状態でそのウィンドウを閉じると
その前にアクティブだったウィンドウにフォーカスが映りますよね。
あのように、その前にアクティブだったウィンドウのハンドル
って、どうやってとれば良いんでしょうか?
よろしくお願いします。<(__)>
0271258
NGNGでもやっぱり動かないんですよねぇ。
いったい何がいけないんだろう?
もう少しいろいろがんばってみます!
0272デフォルトの名無しさん
NGNG#define LIMIT 8
#define NUMBER 5
#define MIN_SIZE 1
で
gcc -Wall -o test test.c
やってみて。
0273258
NGNGそれでコンパイルしてみたら
test.c:In function 'main':
test.c:warning:control reaches end of non-void function
と出ます。
0274名無しさん@カラアゲうまうま
NGNGそしたらコンパイル通らないだろ。
0276258
NGNGこういう場合って書いてるプログラムのどこかがみなさんとちがう箇所とかがあるってことなんでしょうか?
スペースの空け方に問題があるとか…?
0277名無しさん@カラアゲうまうま
NGNGgdb test でデバッガから
runしてみ。
SEGVで止まったら
p s
p item
0278272
NGNGbccでは動いたけどなあ。
#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 < NUMBER;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]);
}
0279258
NGNGこんな風に表示されました
Program received signal SIGEGV,Segmentaion fault.
0x080485ca in main () at test.c:41
41 printf("%10s %5 %5d\n",data[item[s]].name,data[item[s]].size,data[item[s]].price);
と出ました。
原因は41行目ってことですね?
0280272
NGNGがんばれ。
0281デフォルトの名無しさん
NGNG表示してみるといいかもしんない。
0283名無しさん@カラアゲうまうま
NGNG> 原因は41行目ってことですね?
そう。そこでp sとp itemしてみ。
0284デフォルトの名無しさん
NGNG0285258
NGNGp sとp itemを行ったら
p s
$1=5
p item
$2={0,1073832704,3,2,-1073743552,1073795766,3,2,3}
と出ました。
いったいこれはどういうことなんでしょうか?
ほんとに何度もすいません
0286デフォルトの名無しさん
NGNG284の言う初期化し忘れだな。
for(s = 0;s <= LIMIT;s++) {
item[s] = 0;
}
を入れて。
0287デフォルトの名無しさん
NGNGそういう風に解いてるように見えるけど。
0288258
NGNGなったぁ〜〜〜〜〜〜〜〜〜〜〜〜〜
ありがとうございます!
for(s = 0;s <= LIMIT;s++) {
item[s] = 0;
value[s]=0;
}
って書いたけどいいでしょうか?
問題ないならこれでオッケーなんですけど。
とにかくうれしいです!
いろいろ協力してくださったみなさんありがとうございます!
今心の底から本当に感謝しています。ちょと涙。
プログラムの勉強をはじめて間もない素人相手にこれだけの助言をいただけてうれしいです。
これからもっと自分でできるようにがんばります!
0289258
NGNG――+―――――――――――――――――
重量| 39 13 68 15 10 20 31 15 41 16
価値| 42 12 45 5 2 61 89 32 47 18
で重量制限121の問題になるとさっきのプログラムを
#define LIMIT 121
#define NUMBER 10
#define MIN_SIZE 10
にして
data[NUMBER]=・・・のとこに問題の数値を入力すればいいと思ってたら
実行結果が
f 20 61
f 20 61
f 20 61
f 20 61
f 20 61
合計120 366
ってなってしまいました…ガッテム
287さんの指摘する部分はこういうことなんでしょうか?
0290287
NGNGはい。誠に悲しいことですが、アルゴリズムを根本から直さないと、
その現象は直りません。
0291258
NGNGそうなんですか…
その修正は難しいのでしょうか?
どのあたりを書き換えたらいいでしょうか?
よろしければ教えてください…
0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNGprime = 0 110 225 335 450 570 680 795 905
item = 4235264 3 2 3 0 1 3 2 3
になってたけど・・・
0294258
NGNG293さんもう少し詳しく教えていただけませんか?
0295デフォルトの名無しさん
NGNG参考にどうぞ。
0296デフォルトの名無しさん
NGNGほぼ全部書き直すことになると思います。
方針としては
●計算量を無視して、全ての組み合わせを試す。(サイズ10なら、2^10なので
なんとかなる)
●ちゃんとした手法(>>295で書いているような手法のどれか)を使う。
の二通りだと思います。
0297デフォルトの名無しさん
NGNG#include <stdlib.h>
#define LEN 5
#define MAX 8
struct NIMOTU {
char name; char used; int size; int points;
} data[LEN]={{'a',0,4,450},{'b',0,5,570},{'c',0,2,225},{'d',0,1,110},{'e',0,6,670}};
char solution[LEN];
int max_points = -1;
int max_size = 0;
int less(const void *x, const void *y) {
int n, m;
if ((n = ((struct NIMOTU *) x)->size) <= 0) n = 1;
if ((m = ((struct NIMOTU *) y)->size) <= 0) m = 1;
return ((struct NIMOTU *) y)->points/m - ((struct NIMOTU *) x)->points/n;
}
int eval(int i, int rest) {
int j, s = 0;
for (j = i; j < LEN; j++)
if (data[j].size <= rest)
s += data[j].points;
return s;
}
void knap(int i, int size, int points) {
int j;
if (points + eval(i, MAX - size) <= max_points) {
return;
}
if (max_points < points) {
max_points = points;
max_size = size;
for (j = 0; j < LEN; j++)
solution[j] = data[j].used;
}
if (i >= LEN)
return;
for (j = i; j < LEN; j++) { /* 重複を省く */
if (size + data[j].size <= MAX) {
data[j].used = 1; /* 入れる */
knap(i+1, size + data[j].size, points + data[j].points);
data[j].used = 0; /* 出す */
}
}
}
int main() {
int i;
qsort(data, LEN, sizeof(struct NIMOTU), less);
knap(0, 0, 0);
for (i = 0; i < LEN; i++)
if (solution[i])
printf("%c", data[i].name);
printf("\nTotal size = %d, Total points = %d\n", max_size, max_points);
}
0298258
NGNGすべての組み合わせを試す方法でいきたのですが、どういうプログラムを書いていいのか方向性が見えません・・・
組み合わせってどうやって求めるのでしょうか?
またその重複を省く方法というのはどうすればいいのでしょうか?
0299デフォルトの名無しさん
NGNGって言うか、
同じのを入れてはいけないことになってんの?
その課題ではさ。
0300デフォルトの名無しさん
NGNGつまり、全ての荷物について、入れるか入れないかの二択をするわけです。
で、重量制限にかかっていないうちから、価値が最大になる組み合わせを見つける
わけです。
0301デフォルトの名無しさん
NGNGこれでいい?>すべての組み合わせを試す方法
#include <stdio.h>
#define LIMIT 121
#define N_STUFF (sizeof(stuff)/sizeof(stuff[0]))
static struct Stuff {
char c;
int weigh;
int value;
} stuff[] = {
{ 'a', 39, 42 }, { 'b', 13, 12 }, { 'c', 68, 45 }, { 'd', 15, 5 }, { 'e', 10, 2 },
{ 'f', 20, 61 }, { 'g', 31, 89 }, { 'h', 15, 32 }, { 'i', 41, 47 }, { 'j', 16, 18 }
};
static int total_value[1 << N_STUFF];
int main(void) {
int i, max_value = -1;
for ( i = 0; i < (1 << N_STUFF); i++ ) {
int j, total_weigh = 0;
for ( j = 0; j < (int)N_STUFF; j++ ) {
if ( i & (1 << j) ) {
total_weigh += stuff[j].weigh;
total_value[i] += stuff[j].value;
}
}
if ( total_weigh > LIMIT )
total_value[i] = -1;
if ( total_value[i] > max_value )
max_value = total_value[i];
}
for ( i = 0; i < (1 << N_STUFF); i++ ) {
if ( total_value[i] == max_value ) {
int j;
printf( "Choise:" );
for ( j = 0; j < (int)N_STUFF; j++ )
if ( i & (1 << j) )
printf( " %c", stuff[j].c );
printf( "\ttotal value: %d\n", total_value[i] );
}
}
return 0;
}
0302デフォルトの名無しさん
NGNGつくってやればいいじゃん。それで解決するだろ
0303デフォルトの名無しさん
NGNG#define LIMIT 8
#define NUMBER 5
#define MIN_SIZE 1
int ans[NUMBER];
int maxvalue;
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 cvalue(int index, int space, int value){
int n, c1, c2;
if(index == NUMBER){
if(value > maxvalue){
maxvalue = value;
return 1;
}
return 0;
}
c1 = cvalue(index + 1, space, value);
if(data[index].size > space){
if(c1) ans[index] = 0;
return c1;
}else{
c2 = cvalue(index + 1, space - data[index].size, value + data[index].price);
if(c2){
ans[index] = 1;
return 1;
}else{
if(c1) ans[index] = 0;
return c1;
}
}
}
int main(void)
{
int i, value;
int maxvalue = 0;
cvalue(0, LIMIT, 0);
printf(" 品 目 重量 価格\n");
for(i = 0; i < NUMBER; i++){
if(ans[i]) printf("%10s %5d %5d\n", data[i].name, data[i].size, data[i].price);
}
printf(" 合 計 %5d", maxvalue);
}
0304デフォルトの名無しさん
NGNGすでにつくってあげてた人がいた。スマソ
逝って来る
0305301
NGNGあ、total weighも表示したかったら自分で改良してね
ってその前にこれで合ってるのか知らんけど
0306258
NGNGありがとうございます!
これを参考にもっとがんばってみます!
0307デフォルトの名無しさん
NGNGこれって実質上、全検に毛の生えたようなもの
(ちょこっと枝狩りが付いている?)と解釈していいのか?
枝狩りが結構ヒューリスティックな方法(だと思う・・・)なので
まだ良く理解できん。
アルゴリズムの説明キボンヌ(特に eval の所)
0309デフォルトの名無しさん
NGNGttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=5&fi=no
品 目 重量 価格
a 39 42
f 20 61
g 31 89
h 15 32
j 16 18
合 計 121 242
0310309
NGNG一回目のループで最大値を求め、
二回目で最大値な組み合わせを求めたつもり。
0311309
NGNG0312デフォルトの名無しさん
NGNG#include <stdio.h>
#define item_NUM 5
#define MAXWEIGHT 8
struct { int weight, point; } item[ item_NUM ] =
{ {4,450,}, {5,570,}, {2,225,}, {1,110,}, {6,670,}, };
int main( void )
{
int i, j;
int maxpoint = -1, maxi = -1;
for( i = 0 ; i < ( 1 << item_NUM ) ; i ++ ) {
int weight = 0, point = 0;
for( j = 0 ; j < item_NUM ; j ++ )
if( ( i >> j ) & 1 ) {
weight += item[ j ].weight;
point += item[ j ].point;
}
if( weight <= MAXWEIGHT && maxpoint <= point ) {
maxpoint = point;
maxi = i;
}
}
if( maxi == -1 )
printf( "not found\n" );
else {
for( j = 0 ; j < item_NUM ; j ++ )
if( ( maxi >> j ) & 1 )
printf( "%c", 'A' + j );
printf( " point=%d\n", maxpoint );
}
return 0;
}
0313デフォルトの名無しさん
NGNGそれって最適解が2つ以上あっても大丈夫か?
0314デフォルトの名無しさん
NGNGとりあえず1つだけ。
複数解を表示する必要があれば、その分の記憶域を確保すれば良い
(ちょっとコードをいじる必要があるが)。
0315 ◆aCDPDEl2
NGNG0316デフォルトの名無しさん
NGNG0317 ◆aCDPDEl2
NGNG0318デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG実行時間競うとか。
0321デフォルトの名無しさん
NGNGテーマは?
0322デフォルトの名無しさん
NGNGおまえら作ったプログラムをウプせよ
http://pc3.2ch.net/test/read.cgi/tech/1027938403/
てのがあるけど
0323デフォルトの名無しさん
NGNG●実行時間を競うもの
●なんかのゲームを対戦させるもの
どっちがいいかな?
0324デフォルトの名無しさん
NGNG実行時間で比較されるのはあんまし好きじゃないなあ。俺は保守性、可読性マンセーなんで
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNG次のような形式で地形(迷路)が表されている。
32
11
1111111110111111111111111111100G
10000000001111111111100000000011
11111011111110000000001111101111
11110000000000101111111111101111
10110111111111101111111111101111
10110000000000101110000011101111
10111111111110100000111000001101
10110000000000111011111100111101
10010111111111111011111110000001
11110111111000000000000000111111
S0000111111111111111111111111111
ここで、1が壁を表し、0は通路を表す。SはスタートでGはゴールを表している。
最初の32と11は、横・縦のサイズである。
このときスタートからゴールまでの最短距離を求めるプログラムをかけ。
縦横には移動できるが、斜めには移動できない。迷路のデータは標準入力から
入力するものとする。
0327デフォルトの名無しさん
NGNG#define item_NUM 5
#define MAXWEIGHT 8
struct { int weight, point; } item[ item_NUM ] =
{ {4,450,}, {5,570,}, {2,225,}, {1,110,}, {6,670,}, };
int main( void )
{
int i, j;
int maxpoint = -1, maxi = -1;
for( i = 0 ; i < ( 1 << item_NUM ) ; i ++ ) {
int weight = 0, point = 0;
for( j = 0 ; j < item_NUM ; j ++ )
if( ( i >> j ) & 1 ) {
weight += item[ j ].weight;
point += item[ j ].point;
}
if( weight <= MAXWEIGHT && maxpoint <= point ) {
maxpoint = point;
maxi = i;
}
}
if( maxi == -1 )
printf( "not found\n" );
else {
for( j = 0 ; j < item_NUM ; j ++ )
if( ( maxi >> j ) & 1 )
printf( "%c", 'A' + j );
printf( " point=%d\n", maxpoint );
}
return 0;
}
312が書いたプログラムなのだが、これでは組み合わせが表示されないうえに組み合わせたものの数だけ答えが表示されてしまう。
これを改善してみよう。
つまり、クイックソートよりバカソートが好きと。
0329デフォルトの名無しさん
NGNG俺もだ。
>>328
クイックソートって再帰で書かれてるのがちょっとね。再帰で書かない方法
もあるけど、本見て再帰で書かれていて嫌になった事がアルヨ。
0330324
NGNGたかが十数個の要素をソーティングするのにqsort()つかったり、
ましてやクイックソート関数を自作するようなヤシは即頃すけど
0332デフォルトの名無しさん
NGNGえ、そう? 要素数10数個程度にこそqsortを使うけど。
要素数が数万とかそれくらいになってくるとさすがに自前でソートすることを考える。
確実に動くものを作っておいて性能に問題が出たときに改めて
そういうところを見直すもんだと思ってた。
せっかく便利な関数があるんだから使わないと損だよ(w
いや、無論ソート前にquick sortの苦手な配列になっていることが確実なら、
最初から自前のソートを実装するかもしらんが。
4321→1234みたいなソートね。
で、確かqsortってquick sortで実装することは求められてなかったんじゃなかったっけ。
0333デフォルトの名無しさん
NGNG327は夏厨なんだからもっとわかりやすく教えてやれよ。
0334324
NGNG数10と十数は大違いだから覚えとくように
要素数が20以下ならqsortより自前のbubble sortのほうが速い
0335デフォルトの名無しさん
NGNG>>330も>>332もどっちも10数(十数)だけど?
要素数20以下つったら、バブルソートの方が速いつったって、
そんな少ない要素数ならどっちも誤差じゃないのかな。
ループのなかで何度も何度もソートするというなら、
そりゃ自前でソートするしアルゴリズムも検討するよ。
そうでなければ誤差だと思うけど考え方間違ってる?
0337デフォルトの名無しさん
NGNG了解、それなら納得です。
0338Rina ◆tI333vNE
NGNGなんかゴニョゴニョやって効率の良いソートをしてくれる…らしい.
Cならqsort(). ただし, 要素数が少ないってことがコーディングの
段階で分かってる場合はバブルソートをベタ書き(関数にしないってことね).
注釈で
// 要素数が少ないのでバブルソート:N>=20になったらqsort() :)
って書いておく.
以上, うちのコーディング規約より.
0339デフォルトの名無しさん
NGNG二分法では、次の中間値の定理を用いる。
「関数f(x)が区間[x0,x1]で連続であり、f(x0)*f(x1)<0であるとすると、f(x)=0は、区間(x0,x1)に根を持つ」
1.f(x0)*f(x1)<0となる適当な初期値x0,x1を与える。
2.くかん[x0,x1]の中点での関数の値と中間値の定理を利用することで、(少なくとも一つの)根が存在する範囲を区間[x0,x1]の半分に確定することができる。
3.そのような範囲の中点xmでの関数の絶対値|f(xm)|が十分に小さいときxmを方程式の根とする。
4.そうでないときは2,3の操作を繰り返し、範囲を徐々に狭めながら方程式の根を探す。
言語はcです。
全然わかんない、、、、どなたかプログラム書いてください
よろしくお願いします
0340デフォルトの名無しさん
NGNG#include <math.h>
#define VERYSMALL 0.000001
int main(){
float x0, x1, xm, sinx;;
x0 = 1;
x1 = 5;
while (1){
xm = (x0 + x1) / 2;
sinx = sin(xm);
if(sinx < VERYSMALL && sinx > -VERYSMALL){
printf("%f\n", xm);
break;
}else{
if(sinx * sin(x0) < 0){
x1 = xm;
}else{
x0 = xm;
}
}
}
}
0341339
NGNGありがとうございました!!
0342デフォルトの名無しさん
NGNG#include <math.h>
#define EPS 0.0000000001
double x0 = 3.0, x1 = 4.0;
int main(void)
{
double xm;
do {
xm = (x0 + x1) / 2.0;
if (sin(x0)*sin(xm) < 0)
x1 = xm;
else
x0 = xm;
} while (fabs(sin(xm)) > EPS);
printf("pi = %.10g\n", xm);
return 0;
}
0343デフォルトの名無しさん
NGNG#include <stdio.h>
#include <math.h>
int main()
{
const double eps = 0.000001;
double x0, x, x1;
double sin_x;
x0 = 3;
x1 = 4;
while( x = ( x0 + x1 ) / 2, sin_x = sin(x), fabs(sin_x) >= eps ) *( sin_x > 0 ? &x0 : &x1 ) = x;
printf("pi is nearly equal to %lf", x);
return 0;
}
0344339
NGNG「適当な実数aに対して、指数関数のテイラー展開を利用してeのa
乗の近似値を求めよ」
です。お願いできますでしょうか、、、、
こちらも言語はcです。
0345デフォルトの名無しさん
NGNG#include <math.h>
#define EPS 0.0000000001
double a = 7.0;
int main(void)
{
int n = 1;
double s = 1, ds = 1;
do {
ds /= n;
ds *= a;
n++;
s += ds;
} while (fabs(ds) > EPS);
printf("e^%g = %.15g\n", a, s);
return 0;
}
0346339
NGNGありがとうございました。
0347デフォルトの名無しさん
NGNG速いねぇ。
0348Rina ◆tI333vNE
NGNGいちおう, 私が書いたのを.
#include<stdio.h>
#include<math.h>
#define EPS (1e-15)
#define x1 3.0
#define x2 4.0
/*
* @param a, b: x1, x2
* @param func: 計算用の関数
*/
double BesectionMethod(double a, double b, double (*func)()) {
double fa, fb;
double tmp;
double x;
do {
tmp = (a + b) / 2.0;
x = sin(tmp);
if ( fabs(x) < EPS ) {
return tmp;
}
if((*func)(a) * x < 0){
b = tmp;
} else {
a = tmp;
}
} while (1); /* infinity */
}
int main(void) {
printf("答え: %lf\n", BesectionMethod(x1, x2, sin));
}
0349デフォルトの名無しさん
NGNG汎用ですな。
0350デフォルトの名無しさん
NGNG0351Rina ◆tI333vNE
NGNG一番のりじゃなかったのが実は悔しいw
0352デフォルトの名無しさん
NGNGまあ、依頼レスを見た時刻にもよるけどねぇ。
それにしても345とかは速い。
0353Rina ◆tI333vNE
NGNG…とかいいつつ, 次の宿題に秘かに期待している自分がここに(苦笑
0354デフォルトの名無しさん
NGNG同意w
0355デフォルトの名無しさん
NGNGsin のままのとこあるよ。
あと (*func)(a) は func(a) でもいいね。
0356Rina ◆tI333vNE
NGNG一度π用に書いて, その後書き直したんで見落としちゃったか.
仕事中にやったら殺されるなw ガタガタブルブル(((゜Д゜)))ガタガタブルブル
関数ポインタって(*func)()じゃなくてfunc()でコールできるの?
それは初耳.
0357Rina ◆tI333vNE
NGNG0358339
NGNG言語はcです。
「正の整数nに対して、0<=i<=nなるiのうち、gcd(i,n)=1となるiの個数をψ(n)とする。適当な正の整数mに関して、1<=a<=mなるすべてのaについて、(aのψ(n)乗)*(modm)、gcd(a,m)を計算せよ。」
ヒントで、「ψ(n)、gcd(a,b)、(aのk乗)*(modm)を計算する関数をそれぞれ定義するとよい。」
「aのk乗を計算する場合には、kの2進数展開を利用するとよい」
「(aのk乗)*(modm)を計算する際に、aのk乗を計算してから(modm)を計算しないこと」
とあります。よろしくお願いします。
0359デフォルトの名無しさん
NGNG0361339
NGNGわたしもmod,gcdの意味さえ分からないです。
何とか調べますんでちょっと待ってください。
0362Rina ◆tI333vNE
NGNG0363デフォルトの名無しさん
NGNGヒントの意味がまるでわからん。
0364Rina ◆tI333vNE
NGNGmodとgcdは作ったけど, 捨ての方向でw
いまノートで作業してる間横で, さっきまで使ってたマシンが
逝かれました…. 買い替えるかぁ….
0365339
NGNGkの2進数展開とは、
aのk乗=(i=0からの)Πaの(ki*2のi乗)乗
k=(i=0からの)Σ(ki*2のi乗)
三つ目のヒントはaが大きな数の場合にすぐ破綻してしまうため
とあります。
ものすごくわかりにくい書き方しかできずすいません。
だれか〜本当にお願いします〜!!!
0366デフォルトの名無しさん
NGNG>
>関数ポインタって(*func)()じゃなくてfunc()でコールできるの?
>それは初耳.
おめ−、学生さんだろ。学生さんが悪いとはいわんが
なんで「仕事中」なんて書くんだ?
0367Rina ◆tI333vNE
NGNG…あの〜、いちおう社会人なんですけど(ヘタレですが).
0368339
NGNG捨てないでくだせ〜〜〜〜〜
0369デフォルトの名無しさん
NGNG>*は掛けるのつもりで書きました
って、mod m はかけるものじゃないでしょ?
0370339
NGNGそっっっそうか!!(mod m)のまえの*いらないですね
全く分かってないまま質問してすいません。。。。
ひとまず・・・。
unsigned gcd(int x, int y)
{
unsigned i = x >= 0 ? x : -x;
unsigned j = y >= 0 ? y : -y;
if (i < j) {
unsigned t = i;
i = j;
j = t;
}
while (j) {
unsigned k = j;
j = i % j;
i = k;
}
return i;
}
int psi(int n)
{
int r = 0, i;
for (i = 1; i < n; i++)
if (gcd(i, n) == 1)
r++;
return r;
}
0372デフォルトの名無しさん
NGNGいや、まあ関数ポインタfuncが
(*func)();
ではなく、
func();
で呼べてしまうのがもともと気持ち悪いんであって。
funcが*funcと同値であるならば、**funcだって同値だし、
だったら(***************************************func)();
でも呼べてしまうわけで、さすがにこれは気持ち悪いでしょ。
それに昔のCだと当然のごとく(*func)();でしか呼べなかったんだし。
ま、不勉強は否めないにしてもな(w
そういう漏れはC99のことほとんどしらん。
nが1のときのことを考えてなかった。
int psi(int n)
{
int r = 0, i;
for (i = 0; i <= n; i++)
if (gcd(i, n) == 1)
r++;
return r;
}
0374Rina ◆tI333vNE
NGNG0376Rina ◆tI333vNE
NGNGあ, 可読性を重視してfunc()って書けってレスだったのね.
てっきり互換性を重視して(*func)()って書けって文章かと
早合点しちゃったよw
内容もスレ違いだし, 逝ってきます.
0377デフォルトの名無しさん
NGNGttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=7&fi=no
こんな感じか?
2進数処理とかよくわからん。
0378デフォルトの名無しさん
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=8&fi=no
やってみた
0379デフォルトの名無しさん
NGNGint f( int a ) // (aのψ(n)乗)*(modm)を計算する関数
{ return 1; }
詳しくは「オイラーの定理」を検索しれ。
0380 ◆aCDPDEl2
NGNG0381デフォルトの名無しさん
NGNG問題よく見れ
0382デフォルトの名無しさん
NGNG自然数nに対して、1,2,3,…,nの中でnと互いに素な数の個数をφ(n)
とすれば、(a,n)=1なる整数aに対して
a^φ(n)≡1(mod n)
となる。
また、この時のφをオイラー関数と言う。
0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=10&fi=no
0385377
NGNGpow_psi_mod(int a, int n, int m)
{
if (n == m && gcd(a, n) == 1) return 1;
return pow_mod(a, psi(n), m);
}
0386326
NGNGこんな感じの巨大な地形にも対応させてと言って見ます、
32
10
0000000000100000100000000000000G
00000000000000001111111111001100
11011111111100001000000001110100
00000000000100001000000001000100
00000000000100000000000000000100
11111111011111111000000001000100
00000000000000001000000001000000
00000000000000001000000001000100
00000000000000001000000000000100
S0000000000000001000000000000000
0388デフォルトの名無しさん
NGNGcの勉強を始め、いきなり壁に衝突、、、、助けてください。
「ディレクトリを指定すると、そのディレクトリのファイルの詳細一覧を表示するプログラムを作成せよ。なお「.」で始まるファイルも表示に含めること。」言語はcです。
次のようなヒントがあります。プログラム内でsystem()という関数を用いると、シェルを介してコマンドを実行できる。system()の引数として文字列を与えると、その文字列をコマンドとして実行する。
system()を用いるには、プログラムの先頭に#include<stdlib.h>を記述する必要がある。
また文字列操作関数を用いるには、同様に#include<string.h>を記述する必要があることに注意せよ
0389デフォルトの名無しさん
NGNG#include <stdio.h>
#define LIMIT 121
#define NUMBER 10
struct nimotu {
char name;
int weight;
int value;
} nimotu[] = {
{ 'a', 39, 42 }, { 'b', 13, 12 }, { 'c', 68, 45 }, { 'd', 15, 5 }, { 'e', 10, 2 },
{ 'f', 20, 61 }, { 'g', 31, 89 }, { 'h', 15, 32 }, { 'i', 41, 47 }, { 'j', 16, 18 }
};
int total_value[1 << NUMBER]; /*[]の中身は?*/
int main(void) {
int i, max_value = -1; /*なんで−1なのでしょう?*/
for ( i = 0; i < (1 << NUMBER); i++ ) { /*ここの<<の部分*/
int j, total_weight = 0;
for ( j = 0; j < NUMBER; j++ ) {
if ( i & (1 << j) ) { /*ここの<<の部分*/
total_weight += mimotu[j].weight;
total_value[i] += nimotu[j].value;
}
}
if ( total_weight > LIMIT )
total_value[i] = -1;
if ( total_value[i] > max_value )
max_value = total_value[i];
}
for ( i = 0; i < (1 << NUMBER); i++ ) { /*ここの<<*/
if ( total_value[i] == max_value ) {
int j;
printf( "Choise:" );
for ( j = 0; j < (int)NUMBER; j++ )
if ( i & (1 << j) )
printf( " %c", nimotu[j].c );
printf( "total value: %d\n", total_value[i] );
}
}
return 0;
}
疑問のところ特によろしくお願いします・・・
0390デフォルトの名無しさん
NGNGunix linux cygwin dos? 実行環境(OSとか)を書きなさいよ。
詳細情報まで表示する ls -l (dir)コマンドを system で実行して
1行づつ(スペース or TAB) で切り分けて表示してみれ。
0391デフォルトの名無しさん
NGNGビットシフト演算子がわからんだけ?
max_value = -1の理由は、これから
0よりも大きい数を入れていって、
それを最大値としていくから。
0392デフォルトの名無しさん
NGNG符号を2out-of5符号という。この条件を満足する符号語はちょうど10個存在するので、
0から9までの10種類の数字を表すことができる。たとえば数と符号を次のように対応
させる。
0=00011 1=00101 2=01001 3=10001 4=00110
5=01010 6=10010 7=01100 8=10100 9=11000
(1)ユーザーに、整数を2out-of5符号に変換するか、逆変換するかを尋ねる。(入力
が1ならば変換、2ならば逆変換とする。)
(2)変換の場合:3桁の整数をユーザーに入力させて、それを変数xに代入します。
(3)10で割った商と余りを利用して、xを3つの整数に分離します。
(4)それぞれの整数を2out-of5符号に変換して表示する。ヒント:2次元配列
a[10][5]の中にそれぞれの数の2out-of5符号を0や1で0入れておくと便利です。
(5)逆変換の場合:5桁の2進数を読み込んで、配列yに代入する。(1桁ずつよんでよい。)
(6)yの値を上の表と比較して、同じものがあればその数字をプリントする。該当する
ものがなければ「2out-of5符号ではありません。」とプリントする。
条件
1.配列yを2out-of5符号の配列と比較する部分を関数にする。
上の文章が問題です。自分で考えても全然わかりません。
お願いします。
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGで、
ttp://www.ncad.co.jp/~komata/c-kouza3.htm
に非常に良く似た課題に対する解説がある。参考になされ。
0395デフォルトの名無しさん
NGNGビットシフト演算子もわからないのですが、全体的にどういう流れでどういうことをしているのかを知りたいのです。
ここはこういう計算をしてるみたいな…
0396200
NGNGすみません。昨日といてもらった問題がちゃんと実行されないのですが
0397人行知能
NGNG> すみません。昨日といてもらった問題がちゃんと実行されないのですが
エラー:「ちゃんと」という言葉が曖昧です。
エラー1、警告0、要求は受理されませませんでした。
0398デフォルトの名無しさん
NGNG0400309
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=6&fi=no
俺のやつはみてもらえたのだろうか?
がんばって書いたのだけれど・・・
0401254
NGNG>>397も書いてるけど、「ちゃんと実行されない」の意味がわからない。
・コンパイルエラーになる
・コンパイルできたけど実行時エラーになる
・実行できたけど出力されたものが期待したものと違う
・それ以外
どれ? 前者ふたつのエラーの場合はエラーメッセージをコピペして。
後者ふたつの場合はもうちょっと状況を詳しく書いてみて。
一応こっちはコンパイル&実行して正しく動くことを確認してあるよ。
0402デフォルトの名無しさん
NGNG一応必要な関数は書いたよ。問題は意味が分からんので却下
(aのψ(n)乗)(modm)
ここに出てくるnて何だよ?
#include <stdio.h>
#include <math.h>
int square( int x ) {
return x * x;
}
/* (a^k)%m */
int expmod( int a, int k, int m ) {
if ( k == 0 ) return 1;
if ( k%2 == 0 )
return ( square(expmod(a, k/2, m)) % m );
else
return ( (a * expmod(a, k-1, m)) % m );
}
int gcd( int x, int y ) {
while ( y != 0 ) {
int tmp = y;
y = x % y;
x = tmp;
}
return x;
}
int psi( int n ) {
int i, ans = 0;
for ( i = 0; i <= n; i++ )
if ( gcd(i, n) == 1 ) ans++;
return ans;
}
0403デフォルトの名無しさん
NGNGコンパイルはできるんですが思う通り出力されないんですが
0404200
NGNGstatic void print_a(const char *a, size_t size)
{
char state = a[0];
int i, count = 1;
for (i = 1; i < size; i++) {
if (a[i] != state) {
if (state == '0') {
count = -count;
}
printf("%d,", count);
state = a[i];
count = 1;
}
else {
count++;
}
}
printf("\n");
}
int main(int argc, char * argv[])
{
char a[38];
int i = 0, ch;
while ((ch = getchar()) != EOF) {
if (ch == '\n') {
print_a(a, i);
i = 0;
}
else {
a[i++] = ch;
}
}
if (i) {
print_a(a, i);
}
return 0;
}
0405254
NGNGもちっと詳しく書いてもらえないとこっちとしても対処のしようがないよ。
・なにをして
・どうなった
・どうなってほしい
くらいは書いておくれ。
仕事が立て込んでるのでレスポンス悪いよ、すまんな。
0406デフォルトの名無しさん
NGNG将来どのようなことに役立つのでしょうか?今大学で教わって
いるのですが、学習意義がまだよくわかりません。
大雑把な質問ですみませんがどなたか教えてください。
僕は理工学部の二年生です。
0407デフォルトの名無しさん
NGNGプログラムできない奴よりはできる奴のほうが職業選択の
幅は広い
0408384
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=11&fi=no
0409デフォルトの名無しさん
NGNG厨房の時に「なんで三角関数なんて勉強するんだ?」って思ったんだよ。
工房の時に「なんで微分積分なんて勉強するんだ?」って思ったんだよ。
ところがさ。PGになって「なんで色々勉強しなかったんだ?」って思ったんだよ。
要するにさ。やりたいことが決まってるなら、それを勉強すれば良いと思うよ。
やりたいことが決まってないなら、なんでも勉強すると良いよ。
ということを若いころに言われた気がするけど、俺は理解していなかったからさ。
多分>>406も理解できないんじゃないかな。
0410デフォルトの名無しさん
NGNG理工学部であれば、将来何らかの技術職に就くつもりかな。
であれば、道具として計算機を使うだろう。
そのためにプログラミングを学ぶのは決して無駄じゃないと思うよ。
ちょっと条件を変えて同じような計算を何度もやったりとかなんて結構あるんじゃなかな。
電卓でいちいちその計算をなぞるよりも、ちょっとプログラム組んで自動化させたら楽だしね。
多分、技術職になれば嫌でもプログラミングを覚えないと仕事にならんと思う。
研究職ならなおさらだ。基礎体力だと思っておいたほうがいい。
それ以前にプログラミングは楽しいものだが、それは人によるか(w
大雑把な質問なんで大雑把な答を返してみた。
0411406
NGNGありごとうございました。とても参考になりました。
0412デフォルトの名無しさん
NGNG漏れも似たような境遇なんだけどさ、
正直なんでそう思えるのかがわからんよ。
将来ってか今必要じゃない?研究とかでさ。
漏れは逆になんでこんな基本的なことしか教えてくれないんだろう、と思ってるよ。
授業で習ったことだけじゃ研究に使うプログラムも満足に書けないからね。
理工系だろ?プログラム書けないっつーことは、英文科行ってて英語喋れない奴と同類だぜ?
0413デフォルトの名無しさん
NGNGおまえ自身が将来何の役にもたたなくて
存在意義がないと思う。
0414200
NGNGを入力すると16,4,17,と出力して
0000000000011111111111111000000000000
を入力すると11,14,12,と出力して以下同じように出力したいです
0000000000001100000000110000000000000
0000000000000111000011100000000000000
0000000000000011100111000000000000000
0000000000000011100111000000000000000
0000000000000001111110000000000000000
0000000000000001111110000000000000000
0000000000000111111111100000000000000
0000000000011111000011111000000000000
0000000001111000000000011110000000000
0000000011100000000000000111000000000
0000001110000000000000000001110000000
0000111100000000000000000000111100000
0001111000000000000000000000011110000
0001111000000000000000000000011110000
0000111100000000000000000000111100000
0000001110000000000000000001110000000
0000000001111111111111111111000000000
0000000000000111111111100000000000000
0000000000000000000000000000000000000
要するに
16,4,17,
11,14,12,
:
:
と出力したいです
0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG0417200
NGNG0000000000000000111100000000000000000
を入力すると16,4,17,と出力して
0000000000011111111111111000000000000
を入力すると11,14,12,と出力して以下同じように出力したいです
0000000000001100000000110000000000000
0000000000000111000011100000000000000
0000000000000011100111000000000000000
0000000000000011100111000000000000000
0000000000000001111110000000000000000
0000000000000001111110000000000000000
0000000000000111111111100000000000000
0000000000011111000011111000000000000
0000000001111000000000011110000000000
0000000011100000000000000111000000000
0000001110000000000000000001110000000
0000111100000000000000000000111100000
0001111000000000000000000000011110000
0001111000000000000000000000011110000
0000111100000000000000000000111100000
0000001110000000000000000001110000000
0000000001111111111111111111000000000
0000000000000111111111100000000000000
0000000000000000000000000000000000000
要するに
16,4,17,
11,14,12,
:
:
と出力したいです
0418デフォルトの名無しさん
NGNGstatic void print_a(const char *a, size_t size)
{
char state = a[0];
int i = 1, count = 1;
for (i = 1; i < size; i++){
if (a[i] != state) {
printf("%d,", count);
state = a[i];
count = 1;
}
else{
count++;
}
}
if(size){
printf("%d,\n",count);
}
else{
printf("\n");
}
}
0419デフォルトの名無しさん
NGNG答えてやるから二度とくるな
#include<stdio.h>
#defineBUF_SIZE(1024)
intmain( int argc, char *argv[] )
{
charbuf[BUF_SIZE], *cp, *pp;
intcnt, i, n;
while(1){
while(1){
gets( buf );
if( strlen(buf) )
break;
}
if( !strcmp( buf, "0" ) )
break;
for( pp = cp = buf, n = 0; cp = strchr( cp, ',' ); pp = ++cp, n++ ){
*cp = '\0';
cnt = atoi( pp );
if( !cnt )
break;
for( i = 0; i < cnt; i++ )
printf( "%d", (n%2)?1:0 );
}
printf( "\n" );
}
return 0;
}
0420デフォルトの名無しさん
NGNG#include <stdio.h>
#define BUF_SIZE (1024)
int main( int argc, char *argv[] )
{
char buf[BUF_SIZE], *cp, *pp;
int cnt, i, n;
while(1){
while(1){
gets( buf );
if( strlen(buf) )
break;
}
if( !strcmp( buf, "0" ) )
break;
for( pp = cp = buf, n = 0; cp = strchr( cp, ',' ); pp = ++cp, n++ ){
*cp = '\0';
cnt = atoi( pp );
if( !cnt )
break;
for( i = 0; i < cnt; i++ )
printf( "%d", (n%2)?1:0 );
}
printf( "\n" );
}
return 0;
}
0421254
NGNGうん、始めは>>200の逆の操作をすれば良いのかな、とおもってた。
そのつもりで、>>259のプログラムを書いたんだけどよくよく>>253を読んでみると、
>カウンターの値をプリントして1の場合にはそのまま数字をプリ
>ントして0の場合には、符号をマイナスにしてプリントする。
って書いてあるのよ。だから、0の連続では-符号つけて出してみた。
これ、問題が悪いよ。たぶん。お、おれは悪くない(必死だな)。
で、回答については既に出てるようなので略。
0422デフォルトの名無しさん
NGNG『4000未満の4桁のアラビア数字を読み込んでローマ数字に変換せよ。
入力された数字を10で割った時の商と余りを利用せよ。
尚、アラビア数字、ローマ数字は、順に1=�T、5=�X、10=�]、50=L、100=C、500=D、1000=Mとなる。
たとえば、MMDCL�]�X�T�T=1000+1000+500+100+50+10+5+1+1=2667です。
また、桁の数が4、9の場合は、引き算を適用します。たとえば、�T�X=5−1=4、�T�]=10−1=9です。
対話的に入力しますので、その入力誤りに対しては、再度入力するように表示して再入力させます。 』
0423デフォルトの名無しさん
NGNG0424422
NGNG0425デフォルトの名無しさん
NGNGまさか、課題が出るような場所にいるのにコンパイルの仕方すらワカランとは言わないよな?
0426422
NGNG0427デフォルトの名無しさん
NGNGint main(void)
{
int i;
scanf("%d", &i);
if (i == 0x0a6b) {
puts("MMDCLXVII");
}
else {
puts("わかりません");
}
}
とりあえず、例に関しては正しい答えを返しますが、何か?
0428デフォルトの名無しさん
NGNG2.C言語のプログラムを書く
あとは、アンタの知ってるコンパイル。
ていうか、main()関数も書けないの?
どこまでできんのよ? はっきりしろよ。
0429デフォルトの名無しさん
NGNG入力を求めて、入力の誤りを検出してメッセージを出すくらいなら作れるんじゃないの?
それもダメ?
0430デフォルトの名無しさん
NGNG『4000未満の4桁のアラビア数字を読み込んでローマ数字に変換せよ。
ヒント(入力された数字を10で割った時の商と余りを利用せよ。
尚、アラビア数字、ローマ数字は、順に1=�T、5=�X、10=�]、50=L、100=C、500=D、1000=Mとなる。
たとえば、MMDCL�]�X�T�T=1000+1000+500+100+50+10+5+1+1=2667です。
また、桁の数が4、9の場合は、引き算を適用します。たとえば、�T�X=5−1=4、�T�]=10−1=9です。
対話的に入力しますので、その入力誤りに対しては、再度入力するように表示して再入力させます。 ) 』
0431デフォルトの名無しさん
NGNGもしかして、「ローマ数字」が何なのかも知らなかったりしないか?
知っていれば問題文を丸写ししたりしないだろう。
自分の生まれた年(西暦)がローマ数字でどう表現されるか、答えられるか?
0432デフォルトの名無しさん
NGNG1) アラビア数字を読み込む
2) 4000未満でなければ、再度入力するよう表示して、1)へいく
3) 入力された数字を10で割ったときの商と余りを求めることで
桁毎の数字を求める
2667 : int → { 2, 6, 6, 7 } : int[4]
4) int roma[4][10] = { {略}, {略}, {略}, {"I", "II", "III", "IV", 略}};
という配列と3)の結果を使ってローマ数字を表示する。
という方針で作るといいと思うよ。
0433デフォルトの名無しさん
NGNG0434432
NGNG4) char* roma[4][10] = { {略}, {略}, {略}, {"I", "II", "III", "IV", 略}};
という配列と3)の結果を使ってローマ数字を表示する。
0435デフォルトの名無しさん
NGNG2)4000以上もしくは1000未満の数字が入力されたら
再度入力するように表示して1)へいく
一応、問題に「4桁の数字」ってあるんで。
0436432
NGNG4) char* roma[4][9] = { {略}, {略}, {略}, {"I", "II", "III", "IV", 略}};
という配列と3)の結果を使ってローマ数字を表示する。
0437430
NGNG0438430
NGNGプログラム書いてください。
0439デフォルトの名無しさん
NGNG@@@@
(゜д゜3
>>439
0440デフォルトの名無しさん
NGNGここでいきなり貼ったら教育的効果ゼロですかね。
0441430
NGNG0442manko_chinko ◆c2rpKRNM
NGNGエロ画像ください
0443430
NGNG0444440
NGNGまず、整数の入力を受け取り、
1000 未満でも 4000 以上でもないことを確認し
そのまま(ローマ数字に変換せず)画面に表示するコードくらい書いてみろ。
それがイヤならやっぱりエロ画像だな。
0445430
NGNGやっぱり、わからないです。
0446デフォルトの名無しさん
NGNGわからないなりに何かやってみた?
もし何かやってみたのなら、そのコードを貼ってみれ。
0447440
NGNGどんなテキストで、いままで何を習ってきたのか、
そのくらいは説明できないか?
0448430
NGNG0449ネタ
NGNGvoid main(void)
{
int n;
scanf("%d", n);
if(1000 <= n < 4000) printf("%d\n", n);
}
0450430
NGNG0451デフォルトの名無しさん
NGNGおもろいなぁ。つーか環境くらい書くもんだよ。>>430
0452デフォルトの名無しさん
NGNGお願いします。
やっぱり、わからないです。
教えてください。
マッシーンですか?
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNGここは
宿題を「手伝う」スレッドです
宿題を答えるスレッドではありません。
0455デフォルトの名無しさん
NGNGできたよー
TABLE = {
1 => 'I',
5 => 'V',
10 => 'X',
50 => 'L',
100 => 'C',
500 => 'D',
1000 => 'M',
5000 => '',
10000 => ''
}
def convert_one(value)
value = value.to_i
case value
when 4
'15'
when 5
'5'
when 9
'10'
else
if value < 4
'1' * value
elsif value < 9
'5' + '1' * (value - 5)
else
raise
end # if
end # case
end # def
def int_to_roman(value)
digit = 1
result = []
value.to_s.scan(/./).reverse.each do |d|
result.push(convert_one(d).tr('150', "#{TABLE[digit]}#{TABLE[digit * 5]}#{TABLE[digit * 10]}"))
digit *= 10
end
result.reverse.join
end # def
while line = gets
value = line.to_i
if value < 1000 || 4000 < value
puts "1000〜4000の数字を入力しろや、な。"
else
puts int_to_roman(value)
end # if
end
Rubyだけどな(w
参考にはなるんじゃないかな。
0456デフォルトの名無しさん
NGNG行列積は、N*M行列とM*L行列の積を計算し、N*L行列を求める
ものである。
複素数は次の構造体型定義したcomplex型を用いる。また、複素数の和
、積を求める関数を作成し、それらを用いること。
typedef struct{
double re; /*実数部*/
double im; /*虚数部*/
}complex;
この問題がわかりません。よろしくお願いします。
0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG0459430
NGNG読解力のない人ですか?
0460デフォルトの名無しさん
NGNGすみません。読解力無いので、手伝えません。
そんなわけで、この宿題は終了〜。
0461デフォルトの名無しさん
NGNG複素数値の入出力に関しては指定はないの?
「3.0 + 4.0 i」とか、「(3.0,4.0)」とか、これだけでも面倒。
それから、456 は(プログラムとは関係なしに)
行列の積の求め方とか、複素数についての知識とかはあるの?
0462デフォルトの名無しさん
NGNGできたけど。>>455では分からんのか?
0463デフォルトの名無しさん
NGNG禿道。
複素数や行列がわからないのか、structの意味がわからないのが、
プログラミングをしたことがないのか、
それがわからないと答えようがない。
答えそのものを書いちゃうって手はあるけどね。
0464デフォルトの名無しさん
NGNG#include <stdio.h>
main(){int n;struct{int c,n;}r[]={77,1000,68,500,67,100,76,50,88,10,86,5,73,1},
*p=r;for(scanf("%d",&n);n<3999&n>0;)n>=p->n?putchar(p->c),n-=p->n:p++;}
0465デフォルトの名無しさん
NGNGやくにたたんときがあるけど、VIIIとしないでもいい環境なのか? 」って
意味だろ。
0467デフォルトの名無しさん
NGNGどこまでわかって、どこがわからなかったのか、書け。
0468デフォルトの名無しさん
NGNGすげえ、アルゴリズムわかんねえ、とか思ってとりあえず実行してみたけど
これじゃダメじゃん(w
0469デフォルトの名無しさん
NGNGトリップつけれ
0470デフォルトの名無しさん
NGNGほとんど初めて見るのばっかです。
0471デフォルトの名無しさん
NGNG0472ともっち
NGNG0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNG0475200
NGNGコンパイルはできるんですが入力(00000011111100000のような)できません
0476440
NGNG>422
432 のアイディアはぜんぜん参考にならない?
461 にも書いたけど、問題そのものがわからないのか、
それをプログラムにする段階でわからないのか、
そのくらいはハッキリしてくれないとどうにもならないし、
いくらなんでも18歳にもなればそのくらい答えられて当然でしょう。
0478デフォルトの名無しさん
NGNGプログラムがわからないです。
0479デフォルトの名無しさん
NGNGなぜ、プログラムが分からないのに、プログラムの宿題があるの?
理解できない...。
0480455
NGNGまず一番下のwhileループから
・一行読み込んで、数字に変換し、入力チェックしている。
・条件に合えばint_to_roman関数を呼び出して整数値をローマ数字に変換している。
int_to_roman関数
・整数を受け取り、ローマ数字に変換する関数
・まず整数を一桁ずつに分解し、それぞれの桁について右側から
「正規化したローマ数字表現」(後で解説する)を得る
・正規化したローマ数字表現を、その桁にあったローマ数字表現に変換する。
たとえば、1の桁の場合、1->I、5->V、0->Xに置換する。
10の桁だった場合は1->X、5→L、0->Cというふうに置換していく。
・これを一番左の桁に達するまで繰り返す
・得られたそれぞれの桁のローマ数字表現を結合して返す
convert_one関数
・一桁の整数を受け取り、「正規化したローマ数字表現」を返す。
・正規化したローマ数字表現とは、
0 ->
1 -> 1
2 -> 11
3 -> 111
4 -> 15
5 -> 5
6 -> 51
7 -> 511
8 -> 5111
9 -> 10
のようになっている(つか変にcaseとかで分けるより、テーブルから取り出したほうがよかったな)。
書いてはみたものの、わかりづらいなあ。日本語は難しいよ・・・
0482デフォルトの名無しさん
NGNG出てない講義のレポートなんじゃねーの。
0483デフォルトの名無しさん
NGNG0484440
NGNGで、その、「プログラムがわからない」とは、
もっと具体的に説明できないの?
0485デフォルトの名無しさん
NGNG納得。それじゃどうしようもないね。終了?
0486デフォルトの名無しさん
NGNGいや、それもそうなんだけど、
たとえば、1004はMIVと表示しなければならないのに、
464のプログラムだとMIIIIになってしまう。
0487464
NGNGあひゃ!とうとう俺もボケ始めたらしい。さらば。
0488デフォルトの名無しさん
NGNG0489200
NGNGありがとうござうました。コンパイルはできました。しかしうまくいきません
0000000000000000111100000000000000000
0000000000011111111111111000000000000
11,14,12
と実行されます。1行がでません。
0491デフォルトの名無しさん
NGNG部分的に作ってみたよ。参考にしてね。
ただしコンパイルもしてみてないから間違ってるかもね。
void mul(struct complex *a, struct complex *b, struct complex *c, int n, int m, int l)
{
int i,j,k;
for(i=0;i<n;i++){
for(j=0;j<l;j++){
(c+i*l+j).re=0;
(c+i*l+j).im=0;
for(k=0;k<m;k++){
*(c+i*l+j)=addcomp(*(c+i*l+j),mulcomp(*(a+i*m+k),*(b+k*l+j));
}
}
}
}
0492464
NGNG#include <stdio.h>
main(){int(*p)()=putchar,n;struct{int c,n;}r[]={77,1000,68,500,67,100,76,50,88,
10,86,5,73,1,0,0},*t=r;for(scanf("%d",&n);n<4000&n>0;)n>=t->n?p(t->c),n-=t->n:t
->n==t[1].n*5&n>=t->n-t[1].n?p(t[1].c),p(t->c),n-=t->n+t[1].n:t++;}
0493デフォルトの名無しさん
NGNGttp://www.ioccc.org/
にエントリすれ(w
0494デフォルトの名無しさん
NGNG妙な答えがでてきまつ。
0495440
NGNG#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int *i = malloc(sizeof(int)),
j, k;
input_loop:
fscanf(stdin, "%d", i);
if (1000 > *i || *i > 0xf9f) goto input_loop;
j = *i;
free(i);
label1000:
if (j < 1000) goto label900;
putchar('M');
j = j - 1000;
goto label1000;
label900:
if (j < 900) goto label500;
putchar('C');
putchar('M');
for (k = 0; k < 900; ++k) --j;
label500:
if (j < 500) goto label400;
putchar('D');
j -= 500;
label400:
if (j < 400) goto label100;
putchar('C');
j = j- - -400;
putchar('D');
label100:
if (j < 100) goto label90;
putchar('C');
j = j - 100;
goto label100;
(次へ続く)
0496デフォルトの名無しさん
NGNG0497440
NGNGlabel90:
if (j < 90) goto label50;
putchar('X');
putchar('C');
j = j - 90;
label50:
if (j < 50) goto label40;
putchar('L');
j = j - 0x32;
label40:
if (j >= 40) {
putchar('X');
j -= 40;
putchar('L');
}
label10:
for (; j >= 10; j -= 10) putchar('X');
label9:
if (j != 9) goto label5;
(putchar('I')), j-=9, (putchar('X'));
label5:
if (j < 5) goto label4;
putchar('V');
j -= 5.0;
label4:
if (j == 4) putchar('I'), putchar('V');
else for (; j > 0; j--) putchar('I');
putchar('\n');
return 0;
}
仕様どおり動かないところがあったらじゃんじゃん指摘してくれ。
0498デフォルトの名無しさん
NGNG ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧
( ´Д⊂ヽ
⊂ ノ
人 Y
し (_) ヤバスギル・・・
0499デフォルトの名無しさん
NGNGありがとうございます
一応、複素数、行列の考え方はわかってます。
出力は3.0 + 4.0 iのような形です。
複素数の積と和のプログラムはできたのですが
それを行列と組み合わせるのがわからないです。
よろしくお願いします。
0502デフォルトの名無しさん
NGNG#include <string.h>
int main(void)
{
int n;
char buf[1024] = "";
int i;
do scanf("%4d", &n);
while ((n > 4000) || (n < 1000));
for (i = n/1000; i--; )
strcat(buf, "M");
n %= 1000;
for (i = n/500; i--; )
strcat(buf, "D");
n %= 500;
for (i = n/100; i--; )
strcat(buf, "C");
n %= 100;
for (i = n/50; i--; )
strcat(buf, "L");
n %= 50;
for (i = n/10; i--; )
strcat(buf, "X");
n %= 10;
if ((n >= 1) && (n <=3))
for (i = 0; i < n; i++)
strcat(buf, "I");
if (n == 4)
strcat(buf, "IV");
if ((n >= 5) && (n <= 8)) {
strcat(buf, "V");
for (i = n-5; i--; )
strcat(buf, "I");
}
if (n == 9)
strcat(buf, "IX");
printf("%s", buf);
return 0;
}
0503デフォルトの名無しさん
NGNGcomplex mul(complex, complex);
を作って行列の計算するんじゃないの?
0504440
NGNGそのコードで 3444 を与えると結果はどうなる?
0505デフォルトの名無しさん
NGNGMMMCDXLIVにするのか?
0507デフォルトの名無しさん
NGNG数字の入力を受け付けてくれません。
ずっと入力待ちなんですが・・・。
0508440
NGNGとりあえず、OS とコンパイラの名称およびバージョン、
具体的なコンパイル・実行の手順について
少し詳しく書いてほしい。
手元では一応動いているので。
0509デフォルトの名無しさん
NGNGスマソ。ソースよく見たら1000未満は再入力だったのね。
できますた。
0510デフォルトの名無しさん
NGNG#include <string.h>
void convert(char *buf, char *s, char *t, char *u, int n)
{
int i;
if ((n >= 1) && (n <=3))
for (i = 0; i < n; i++)
strcat(buf, s);
if (n == 4) {
strcat(buf, s);
strcat(buf, t);
}
if ((n >= 5) && (n <= 8)) {
strcat(buf, t);
for (i = n-5; i--; )
strcat(buf, s);
}
if (n == 9) {
strcat(buf, s);
strcat(buf, u);
}
}
int main(void)
{
int n;
char buf[1024] = "";
int i;
do scanf("%4d", &n);
while ((n > 4000) || (n < 1000));
for (i = n/1000; i--; )
strcat(buf, "M");
n %= 1000;
convert(buf, "C", "D", "M", n/100); n %= 100;
convert(buf, "X", "L", "C", n/10); n %= 10;
convert(buf, "I", "V", "X", n);
printf("%s", buf);
return 0;
}
0511440
NGNGその場合は
if (1000 > *i || *i > 0xf9f) {
fputs("再入力しろや(゚Д゚)ゴルァ\n", stdout);
goto input_loop;
}
と書き直せばいいはずです。
0512464
NGNGしかし完璧とはいえない。
あと>>440さん萌え。
#include <stdio.h>
main(){struct{int c,n;}r[]={77,1000,68,500,67,100,76,50,88,10,86,5,73,1,0,0},*t
=r;int(*p)()=putchar,n,i;while(scanf("%d",&n),n<0|n>3999);for(;n;)n>=t->n?p(t->
c),n-=t->n:(t->n==t[1].n*2&&(i=2)||t->n==t[1].n*5&&(i=1))&&n>=t->n-t[i].n?p(t[i
].c),p(t->c),n-=t->n-t[i].n:t++;}
0513デフォルトの名無しさん
NGNG0514440
NGNGやっぱり「7行プログラミング」スレの出身者ですか?
>513 作者としてはぜひともそれを希望する。(w
とりあえずバグは未発見だから。
ところで、>440 で発表しようとしていたコードは
もう発表する必要なしですかね。
>432 さんのアイディアほぼそのままなので無用でしょうか。
なんか 495-497 を書いてからナチュラル・ハイになってきた。
0515デフォルトの名無しさん
NGNG0=0011 1=0100 2=0101 3=0110 4=0111
5=1000 6=1001 7=1010 8=1011 9=1100
この符号を用いると、各桁の1と0を入れ替えたものが9の補数になる。
そこで、3桁の整数を読み込んで、3余り符号とその補数をプリントするプログラムを以下の方法で作製せよ。
(1)3桁の整数をユーザーに入力させて、それを変数xに代入します。
(2)10で割った商と余りを利用して、xを3つの整数に分離します。
(3)それぞれの整数を3余り符号変換して表示せよ。2次元配列a[10][4]の中に
それぞれの数の3余り符号符号を0や1で0入れておくと便利です。
(4)9の補数を求めたい数字と配列を引数として、9の補数をプリントする関数
を作製せよ。たとえば1の補数は8で、各桁の1と0を入れ替えた数になって
います。
(5)上の(4)で作製した関数を用いて、3余り符号の補数を2進数でプリントせよ。
条件
1.9の補数を求めたい数字と配列を引数として、9の補数をプリントする部分を関数に
すること。
友達に聞いても誰もわかりませんでした。どうかこの問題を解いてください。お願いします。
0516デフォルトの名無しさん
NGNG0517464
NGNGもちろん七行スレ出身、七行スレ育ちでチャキチャキの酔っ払いです(w
どうも夜になると頭が回らなくなるね。
0519デフォルトの名無しさん
NGNG問題を書いたのですが、改行が多すぎますといわれて
載せれません。どうしたらいいでしょうか?
改行を減らせ。
0521デフォルトの名無しさん
NGNG例えば 345 と入力されたらどう表示されるの?
あと言語は?
05228クイン
NGNGただし、点対称・線対称の解は排除します。
では、よろしくお願いします。
#include <stdio.h>
#define N 8
void show(int board[])
{int i, j;
for(i = 0; i < N; i++) {
for (j = 0; j < N; j++) {putchar('+');putchar('-');putchar('-'); }
putchar('+');putchar('\n');
for (j = 0; j < N; j++) {putchar('|');
if (board[i] == j)
printf("★");
else
printf(" "); }
putchar('|');
putchar('\n'); }
for (j = 0; j < N; j++) {
putchar('+');putchar('-');putchar('-'); }putchar('+');putchar('\n');
exit(0);}
void solve(int board[], int n)
{ int i, j;
if (n == N) {
show(board);
}
for (i = 0; i < N; i++) {
for (j = 0; j < n; j++) {
if (board[j] == i)
goto cont;
if (board[j] - i == n - j)
goto cont;
if (i - board[j] == n - j)
goto cont;
}
board[n] = i;
solve(board, n + 1);
cont:; }}
int main(void)
{
int board[N];
int i;
for (i = 0; i < N; i++) {
board[i] = 0;
}
solve(board, 0);
exit(0);}
0523デフォルトの名無しさん
NGNG>>216 使えはよろし。
0524デフォルトの名無しさん
NGNGいったい何の授業の宿題なんだ。
05258クイン
NGNGC言語のプログラムの授業です。
0526デフォルトの名無しさん
NGNG昔 MSX-FAN で高速なアルゴリズムを募集してたなー。
Z80 程度のおもちゃ(今では)であっさり答えが出てきたのには感動した。
0527デフォルトの名無しさん
NGNG「C言語による最新アルゴリズム辞典」
に載ってるのでそれ参照。
0528デフォルトの名無しさん
NGNG0529515
NGNGc言語です。すみませんが自分もあまり問題が理解できていません。
0530440
NGNGそれでは 432 さんのアイディアをもとにした
まともなコードをここに貼って、わたくしはまた名無しに戻ります。
(といいつつ、440 の時点よりコードがさらに進化している)
#include <stdio.h>
static const char *roma[4][10] = {
{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},
{"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
{"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},
{"", "M", "MM", "MMM"}
};
int main(void)
{
int i, arabic, digits[4];
for (;;) {
scanf("%d", &arabic);
if (1000 <= arabic && arabic < 4000)
break;
fprintf(stderr, "value must be in [1000,4000).\n");
}
for (i = 0; i < 4; ++i) {
digits[i] = arabic % 10;
arabic /= 10;
}
for (i = 3; i >=0; --i) {
printf(roma[i][digits[i]]);
}
putchar('\n');
return 0;
}
05318クイン
NGNGそれはそうなんですが、理解できないうえに
与えたものを改良しろという問題なので・・・
すいません。
0532521
NGNGその辺わかっていないと嘘教えられると困るよ。
問題文もまぎらわしいけど。
んじゃ、345 が入力されたら、
011001111000 3余り符号
100110000111 3余り符号の補数
と表示されるって解釈で話を進めるよ。
っていっても >>530 と似たようなプログラムになるはずなので、
まずこれを読んだ上での感想やわからない点などを
いってくれ。
0533529
NGNG530のプログラムを見ましたが理解できませんでした。そちらの解釈通りで結構なので
プログラムを進めて下さい。お願いします。
0534デフォルトの名無しさん
NGNGこんなとこで訊いてんじゃねえボケ。検索すればすぐ見つかるだろうが。
0535デフォルトの名無しさん
NGNGそういうときは黙って見守って、あとでコソーリ教官に報告しておくものだよ。
どうせこのスレは丸投げ厨にはまともな答えを返さないから。
0537521
NGNGstatic const int a[10][4] = {
{ 0, 0, 1, 1 }, { 0, 1, 0, 0 }, { 0, 1, 0, 1 }, { 0, 1, 1, 0 }, { 0, 1, 1, 1 },
{ 1, 0, 0, 0 }, { 1, 0, 0, 1 }, { 1, 0, 1, 0 }, { 1, 0, 1, 1 }, { 1, 1, 0, 0 }
};
void print_fugo(int x, const int a[10][4])
{
int i, j, digits[3];
for (i = 0; i < 3; ++i) {
digits[i] = x % 10;
x /= 10;
}
for (i = 2; i >=0; --i) {
for (j = 0; j < 4; j++) {
putchar('0' + a[digits[i]][j]);
}
}
putchar('\n');
}
void print_hosu(int x, const int a[10][4])
{
int i, j, digits[3];
for (i = 0; i < 3; ++i) {
digits[i] = x % 10;
x /= 10;
}
for (i = 2; i >=0; --i) {
for (j = 0; j < 4; j++) {
putchar('0' + 1 - a[digits[i]][j]);
}
}
putchar('\n');
}
int main(void)
{
int x;
for (;;) {
scanf("%d", &x);
if (100 <= x && x <= 999)
break;
fprintf(stderr, "value must be in [100,999].\n");
}
print_fugo(x, a);
print_hosu(x, a);
return 0;
}
~
0538Rina ◆tI333vNE
NGNG優しいねw
0539515
NGNG0540デフォルトの名無しさん
NGNGvoid convert(char c1, char c5, char c10, int n)
{
int i;
if ((n >= 1) && (n <=3))
for (i = 0; i < n; i++)
putchar(c1);
if (n == 4) {
putchar(c1);
putchar(c5);
}
if ((n >= 5) && (n <= 8)) {
putchar(c5);
for (i = n-5; i--; )
putchar(c1);
}
if (n == 9) {
putchar(c1);
putchar(c10);
}
}
int main(void)
{
int n;
int i;
while (scanf("%d", &n), (n > 4000) || (n < 1000))
printf("?");
for (i = n/1000; i--; )
putchar('M');
n %= 1000;
convert('C', 'D', 'M', n/100); n %= 100;
convert('X', 'L', 'C', n/10); n %= 10;
convert('I', 'V', 'X', n);
return 0;
}
0541デフォルトの名無しさん
NGNG複素数の積と和はできたって言うけど、
Cスレで教えてもらったんじゃん。正直に言いなよ。
0542デフォルトの名無しさん
NGNG>>537 の方が条件に沿って作られている。
深夜の0時ごろにレスがぽんぽんつくわけないっつーのに。
#include <stdio.h>
void hyouji(int n,int i){
if(i < 3)
hyouji(n>>1,i+1);
putchar('0'+(n&1));
}
void amari(int n){
if(n/10)
amari(n/10);
hyouji(n%10+3,0);
putchar(' ');
}
void hosu(int n,int a[]){
if(n/10)
hosu(n/10,a);
hyouji(~(n%10+3),0);
putchar(' ');
}
int main(int x, char *argv[]){
do{
puts("3桁の整数を入力してください");
scanf("%d",&x);
}while(x>999||x<100);
puts("3余り符号は");
amari(x);
puts("\n3余り符号の補数は");
hosu(x,(int*)*argv);
return 0;
}
0543デフォルトの名無しさん
NGNGchar *a[] = { "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", };
int x[3];
int main(void)
{
int n, i;
do {
puts("三ケタの数字を入力してください");
scanf("%d", &n);
} while ((n > 999) || (n < 100));
for (i = 3; i--; n /= 10)
x[i] = n % 10;
for (i = 0; i < 3; i++)
printf("%s", a[x[i]]);
printf("\n");
for (i = 0; i < 3; i++) {
char *s = a[x[i]];
for (; *s; s++)
putchar((*s == '0') ? '1' : '0');
}
return 0;
}
0544デフォルトの名無しさん
NGNGstatic const int a[10][4] = {
{ 0, 0, 1, 1 }, { 0, 1, 0, 0 }, { 0, 1, 0, 1 }, { 0, 1, 1, 0 }, { 0, 1, 1, 1 },
{ 1, 0, 0, 0 }, { 1, 0, 0, 1 }, { 1, 0, 1, 0 }, { 1, 0, 1, 1 }, { 1, 1, 0, 0 }
};
int x[3];
void print_fugo(int x)
{
int i;
for (i = 0; i < 4; i++)
putchar(a[x][i] ? '1' : '0');
}
void print_hosu(int x)
{
int i;
for (i = 0; i < 4; i++)
putchar(a[x][i] ? '0' : '1');
}
int main(void)
{
int n, i;
do {
puts("三ケタの数字を入力してください");
scanf("%d", &n);
} while ((n > 999) || (n < 100));
for (i = 3; i--; n /= 10)
x[i] = n % 10;
for (i = 0; i < 3; i++)
print_fugo(x[i]);
printf("\n");
for (i = 0; i < 3; i++)
print_hosu(x[i]);
printf("\n");
return 0;
}
0545デフォルトの名無しさん
NGNGvoid print_fugo(int x)
{
int i = 4;
for (x += 3; i--; x <<= 1)
putchar((x & 8) ? '1' : '0');
}
void print_hosu(int x)
{
int i = 4;
for (x += 3; i--; x <<= 1)
putchar((x & 8) ? '0' : '1');
}
int main(void)
{
int n, i, x[3];
do {
puts("三ケタの数字を入力してください");
scanf("%d", &n);
} while ((n > 999) || (n < 100));
for (i = 3; i--; n /= 10)
x[i] = n % 10;
for (i = 0; i < 3; i++)
print_fugo(x[i]);
printf("\n");
for (i = 0; i < 3; i++)
print_hosu(x[i]);
printf("\n");
return 0;
}
0546デフォルトの名無しさん
NGNGtypedef int (*PP_RECV)(SOCKET , char FAR * , int , int );
PP_RECV dd_recv;
HINSTANCE h_original;
int WINAPI d_recv(SOCKET s, char FAR * buf, int len, int flags){
int int_buf=0;
h_original = LoadLibrary( "c:\\windows\\system\\WSOCK32.DLL" );
dd_recv = (PP_RECV)GetProcAddress( h_original, "recv" );
int_buf =(*dd_recv)(s, buf,len, flags); //ここでデバッグエラーになる。
FreeLibrary( h_original );
return int_buf;
}
0547名無しさん@カラアゲうまうま
NGNG0548デフォルトの名無しさん
NGNGちゃんとエラーチェックせいや
0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNGあーウザッ。
0551デフォルトでない名無しさん
NGNGここ間違ってるとか
0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNGできました。
ありがとうございました。
0554デフォルトの名無しさん
NGNGふつうのCの関数はcdeclだけど、APIはstdcallです。
WINAPIはstdcallになってます。
cdecl は、引数渡しに使ったスタックを呼び出した側がクリア。
stdcall は、引数渡しに使ったスタックは呼び出された側がクリア。
dd_recv = (PP_RECV)GetProcAddress( h_original, "recv" );
で(PP_RECV)はずすとコンパイルエラーださない?
0555デフォルトの名無しさん
NGNGでます。
0557デフォルトの名無しさん
NGNGラインエディタ自体はソースがあります。
機能として
w:保存
q:終了
n:次のファイルへ
a:現在の行の後に行を追加
i:現在の行の前に行を挿入
d:行を削除
p:行を移動
-:前の行を表示
リターンのみ:次の行を表示
これに「3,10d」と入力すると
3行目から10行目までを削除する機能を付けるという課題です。
ようするにこの「3」と「10」をわけて受け取りたいのですが、そのへんがよくわかりません。
ここらへんをいじればいいと思われる所のソースを載せます。
char cbuf[256];
char *p;
int n;
*a = -1;
if (fgets(cbuf), 256, stdin)==NULL)
return(NULL);
p = cbuf;
if (isdigit(*p)) {
for (n = 0; isdigit(*p); p++) ←ここからがよくわかりません。
n = n * 10 + (*p - '0'); ←特にここ
*a = n;
}
コマンドをcbufに読み込んでその後の処理です。
あぁ、説明もあってるのか?(汗
的外れじゃないことを祈りつつよろしくお願いします。
0558デフォルトの名無しさん
NGNGそりゃ数字の文字列を整数にする処理だ。
終わった後が","かどうかとかやればできるんじゃないの?
0559Rina ◆tI333vNE
NGNGint n;
char *p = "234";
for(n = 0 ; isdigit(*p) ; p++) {
printf("*p = \'%c\'\n", *p);
printf(" n = %d (before)\n", n);
n = n * 10 + (*p - '0');
printf(" n = %d (after)\n\n", n);
}
こんなコードを書いたら何やってるか分かると思う.
0560デフォルトの名無しさん
NGNG> n = n * 10 + (*p - '0'); ←特にここ
2つに分解して考えてみよう。
tmp = (*p - '0'); ←1文字を数値に変換する
n = n * 10 + tmp; ←nを10倍し、変換した数値を足す。
つまり「123」という文字列が来た場合
tmp n
1回目:1 1
2回目:2 12
3回目:3 123
となる。
0561デフォルトの名無しさん
NGNG始めにある程度分析しておかないと行き詰まるぞ。
dに関しては「3,10d」という入力例が出ているからいいけど、
他の機能がどう入力されるか予め明らかにしておいた方がいいぞ。
0562デフォルトの名無しさん
NGNG#define IN 1;
#define OUT 0;
main()
{
int c, flag, nc;
flag = OUT;
nc = 0;
while ((c = getchar()) != EOF) {
if (c == ' ' || c == '\n' || c == '\t') {
if (flag == IN) {
flag = OUT;
}
}
else {
flag = IN;
nc++;
}
}
printf("%d\n", nc);
getchar();
}
↑これ、エラーでるんですけど、なんで?
見て分かると思いますが、C言語
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNGサンキュー&ソーリー
ボクは糞でした(;´Д`)
0565デフォルトの名無しさん
NGNGおそらく
> #define IN 1;
> #define OUT 0;
で最後にセミコロンが入っているからだろうが
エラーメッセージぐらい書け。
あと、そのソースならflagは必要ないだろ?
continueを使えばもっとすっきり書けるはずだ。
0566デフォルトの名無しさん
NGNG画面を移動する際、変数を渡したいのですが、どのように渡したらよいのか
わかりません。
グローバル変数ではなく、パラメーターを使って
との事なのですが、
パラメーターリストを作ることまではできたのですが、
そのパラメーターリストをどう使っていいのか
わかりません。
わかる方教えてください・・・(涙)
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG会社の研修用の宿題なんです(涙)
できなくて、ほんと泣いてます・・・。
0570562
NGNG#include <stdio.h>
#define IN 1
#define OUT 0
main()
{
int c, flag, nc, i;
int dim[80];
for (i = 0; i < 80; i++) {
dim[i] = 0;
}
flag = OUT;
nc = 0;
while ((c = getchar()) != EOF) {
if (c == ' ' || c == '\n' || c == '\t') {
if (flag == IN) {
flag = OUT;
dim[nc + 1]++;
nc = 0;
}
}
else {
if (flag == OUT) {
flag = IN;
}else {
nc++;
}
}
}
for (i = 0; i < 80; i++) {
printf("%2d文字の単語 = %d\n", i, dim[i]);
}
getchar();
}
0571デフォルトの名無しさん
NGNG別に貼らんでも。
0572デフォルトの名無しさん
NGNGたぶん、ウィンドウプロシージャみたいなのがあるでないの?
イベント割り込みみたいなー
0573566
NGNGどうなんでしょう?(すいません初心者なんでよくわからないんです・・・)
一応、ソース書いておいてみます。
DECLARE
PL_ID PARAMLIST;
PL_NAME VARCHAR2(10):='AA';
BEGIN
PL_ID:=CREATE_PARAMETER_LIST(PL_NAME);
ADD_PARAMETER(PL_ID,'BB',TEXT_PARAMETER,'CC');
CALL_FORM('MODULE4');
END;
0574デフォルトの名無しさん
NGNG詳しく教えてくれ。
0575デフォルトの名無しさん
NGNG折れ線グラフ
0576572
NGNGそれって、変数定義してだけだろ????
いや、オラクルやったことないから分からんけど、
>画面を移動する際、変数を渡したいのですが、どのように渡したらよいのか
>わかりません。
画面を移動したり、キャレットがテキストボックスに表示されたりすると、
イベントが発生して、それをうけとるんじゃないの?
ORACLEのHPから、ドキュメントが見れるから、それ見れば?
ttp://otn.oracle.co.jp/document/products/forms/
これぐらい、自分で探せると思われ。
0577557
NGNG>>557で書いた関数(command())の戻り値が*aなんですけど、この後この関数の戻り値で
行指定があったかどうかを判別してます。
cp = command(&a_no)
if (a_no > 0)
cpはswitch()に渡してます。(コマンド判別)
戻り値を引数にしてる???
ちなみに「3d」のような行指定は標準装備です。
わけわからんくなってきた・・・
0578566
NGNGもちろん、リファレンスは見てるのですが、
その解釈もできなくて・・・(涙)
イベントはcall_formで発生はさせています。
変数(とは違うと思うけど、この場合パラメータ)は宣言してるだけ
っていうのはわかってるんですが、
それをどう使っていいのかがわからないのです。
0579デフォルトの名無しさん
NGNGこっちも全然わからないんだが…
関数commandの定義はどうなってる?
char* command(int* a) てな感じ?
「3d」と入力された場合と、「3,10d」と入力された場合とで、
cp と a_no の内容はどうなる?
0580557
NGNGchar *cp;
int a_no;
「3d」の場合
char *command(int *);
cp = command(&a_no)
a_no = 3
cp=d
です。とりあえず、課題はクリアできそうです。バグだらけだけど・・・
「3,10d」の場合、(char *command int *a, int *b)
a_noとb_noにそれぞれ3と10が入るようにしました。
cpには「d」が入ります。(cp = command(&a_no, b_no)
command(&a_no)はいまだにわかりません。
0581デフォルトの名無しさん
NGNGcp = command(&a_no, &b_no)
こうじゃないのか。
>>557 の *a っていうのがどういうものかは
わかってる?
0582557
NGNG>cp = command(&a_no, &b_no)
そうです。間違えました。
command関数の*aがcommand(&a_no)の&a_noにアドレスとして戻ってくるんですよね?あってます?
その&a_noをcommand()に引数として渡すということじゃないんですか?
ここが、ループ?って感じでわからないんです。
command関数で「3d」などのコマンドを標準入力から受けているので引数いらないですよね?
0583デフォルトの名無しさん
NGNG#include <stdio.h>
static void print_a(const char *a, size_t size)
{
char state = a[0];
int i = 1, count = 1;
for (i = 1; i < size; i++){
if (a[i] != state) {
printf("%d,", count);
state = a[i];
count = 1;
}
else{
count++;
}
}
if(size){
printf("%d,\n",count);
}
else{
printf("\n");
}
}
int main(int argc, char * argv[])
{
char a[38];
int i = 0, ch;
while ((ch = getchar()) != EOF) {
if (ch == '\n') {
print_a(a, i);
i = 0;
}
else {
a[i++] = ch;
}
}
if (i) {
print_a(a, i);
}
return 0;
}
コンパイルはできました。しかしうまくいきません
0000000000000000111100000000000000000
0000000000011111111111111000000000000
11,14,12
と実行されます。1行がでません。
0584デフォルトの名無しさん
NGNG1111110000011111
みたいなのはどうするの?
0,6,5,5
って出さなくていいの?
0585デフォルトの名無しさん
NGNG今すぐにとは言わんけど、ポインタの勉強したほうがいいかも。
ところで、完成したプログラムは"10,3d"とか入力しても平気?
"3,5d"とかやると、3,5,7行目が消えたりしない?(藁
0586デフォルトの名無しさん
NGNG8クイーン解いたよ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=12&fi=no
ここ見ながら解いたけど。
http://www.pro.or.jp/~fuji/puzzlestudy/recursive/index.html
0587デフォルトの名無しさん
NGNGちょっと飯食ってた。
> command関数の*aがcommand(&a_no)の&a_noにアドレスとして戻ってくるんですよね?あってます?
一番わかっていなさそうなのがこの辺だと思う。
戻ってはこない。あくまでも渡す。
何を渡すかというと &a_no つまり変数a_noのアドレス(位置)を渡している。
そこにある箱の中に行指定を入れといてくれやという感じ。
これでもわからなかったいってくれ。
0588557
NGNGズバリです!これだけの情報でそこまでわかるんですか!?
嗚呼、なんてアホな俺。課題の提出は明日。ハァ・・・
急にヤル気がなく(以下略
0589584
NGNG#include <stdio.h>
static void print_a(const char *a, size_t size)
{
char state = a[0];
int i = 1, count = 1;
if (a[0] != '0') printf("0,");
for (; i < size; i++) {
if (a[i] != state) {
printf("%d,", count);
state = a[i];
count = 1;
} else {
count++;
}
}
if(size){
printf("%d,\n",count);
} else{
printf("\n");
}
}
int main(int argc, char * argv[])
{
char a[38];
int i = 0, ch;
while ((ch = getchar()) != EOF) {
if (ch == '\n') {
print_a(a, i);
i = 0;
} else {
a[i++] = ch;
}
}
if (i) {
print_a(a, i);
}
return 0;
}
05908クイン
NGNGほんとうにありがとうございました。
0591デフォルトの名無しさん
NGNG#include <stdio.h>
main(){int c,n=1,i=0;while((c=getchar())-EOF)c-'0'!=i?printf("%d",n),i=1-i,n=1,
putchar(c-'\n'?',':(i=0,'\n')):n++;}
0592557
NGNGアドレスを確保しとくから処理が終わったらここに(&a_no)にいれてくれ
ってことですか?
うぅ、一回寝ようかな?頭回らなくなってきたし、座りっぱなでケツが痛ひ
0593デフォルトの名無しさん
NGNG処理が終わったらでなく、入れるタイミングはcommand()の方におまかせ。
今回の場合、command()の *a = -1; や *a = n; で a_no に -1 や nの値が入る。
0595585
NGNG全部で8行のテキストに対して"3,5d"だとすると
12345678
↓3行目を消す
1245678
↓4行目を消す
124678
↓5行目を消す
12468(マズー)
分かる?で、
12345678
5行目を消す
1234678
4行目を消す
123678
3行目を消す
12678(ウマー!)
後の行から消せばいい
3行目を3回消すって手もある
0596デフォルトの名無しさん
NGNGdel(a);
for (i = a; i < b; i++)
del(i);
delは行を詰めるから、この二つは別もの。
0599585
NGNGあなたの環境はなんですか?
0600583
NGNG6,5,5でいいですよ
0603499
NGNG複素数の積と和は「C言語なら俺に聞け」で聞いてできるようになりました。
そこで教わった
complex add(complex alpha, complex beta)
{
complex gamma;
gamma.re = alpha.re + beta.re;
gamma.im = alpha.im + beta.im;
return gamma;
}
complex mul(complex alpha, complex beta)
{
complex gamma;
gamma.re = alpha.re*beta.re - alpha.im*beta.im;
gamma.im = alpha.im*beta.re + alpha.re*beta.im;
return gamma;
}
と>>491で教わった関数を組み合わせてmain関数をどのように書けばいいのか
わかりません。よろしくお願いします。
理解していないものを「できるようになった」とは言わないんじゃない?
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG#include <stdio.h>
struct complex {
double re;
double im;
};
complex add(complex alpha, complex beta);
complex mul(complex alpha, complex beta);
void mat_mul(complex a[][2], complex b[][2], complex c[][2]);
void print_mat(complex a[][2], char *str);
int main(void)
{
struct complex a[][2] = {{{1.0, 1.0}, {2.0, 1.0}}, {{-1.0, 1.0}, {1.0, -1.0}}};
struct complex b[][2] = {{{3.0,-1.0}, {-1.0,1.0}}, {{ 1.0, 2.0}, {-2.0, 3.0}}};
struct complex c[2][2];
print_mat(a, "a");
print_mat(b, "b");
mat_mul(a, b, c);
print_mat(c, "a * b");
return 0;
}
0607デフォルトの名無しさん
NGNG{
int i, j, k;
struct complex s, t;
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++) {
s.re = s.im = 0.0;
for (k = 0; k < 2; k++) {
t = mul(a[i][k], b[k][j]);
s = add(s, t);
}
c[i][j] = s;
}
}
void print_mat(complex a[][2], char *str)
{
int i, j;
printf("%s = \n", str);
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++)
printf("%+f + %+fi ", a[i][j].re, a[i][j].im);
printf("\n");
}
}
0608デフォルトの名無しさん
NGNG{
int i, j, k;
struct complex s, t;
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++) {
s.re = s.im = 0.0;
for (k = 0; k < 2; k++) {
t = mul(a[i][k], b[k][j]);
s = add(s, t);
}
c[i][j] = s;
}
}
void print_mat(complex a[][2], char *str)
{
int i, j;
printf("%s = \n", str);
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++)
printf("%+f + %+fi ", a[i][j].re, a[i][j].im);
printf("\n");
}
}
0609デフォルトの名無しさん
NGNGcomplex add(complex alpha, complex beta)
{
complex gamma;
gamma.re = alpha.re + beta.re;
gamma.im = alpha.im + beta.im;
return gamma;
}
complex mul(complex alpha, complex beta)
{
complex gamma;
gamma.re = alpha.re*beta.re - alpha.im*beta.im;
gamma.im = alpha.im*beta.re + alpha.re*beta.im;
return gamma;
}
0610デフォルトの名無しさん
NGNGcomplexの前に全部structキーワードを付けてくれ。
0611デフォルトの名無しさん
NGNGそれよりは
struct complex {
double re;
double im;
};
を
typedef struct {
double re;
double im;
} complex;
にすべきであろう。
0612sucka
NGNGってどういうのがやりやすいでしょうか?
上の物を使って自由にプログラムしろって言われても・・・・なんですよ。
よきアドバイスもとむ。
0613デフォルトの名無しさん
NGNGどれくらいの難易度のものを作ればいいのかよく分からんが、
html+javascriptでグラフィカルな電卓というのはどうだ。
0614sucka
NGNGグラフィカルな電卓って言うと?
ってかどっかにXMLとJavascriptsのプログラミング
のexampleみたいなのないのかな。参考にしてー
0615557
NGNGはい、"3d"なくなってました。なんか手のひらで弄ばれてる感じだw
一応それもクリアしました。
次は行指定じゃなく /単語/で検索後に処理ができるようにします。
/abc/p
で"abc"を含む行を表示。"d"についても同じです。
とりあえず、今からやってみますけどなんかヒントがあったらお願いします。
提出まであと7時間・・・
0616デフォルトの名無しさん
NGNGちょっと3行でテストしてみてくれないか?
たぶん最後の1行鹿結果がでてこないと思うぞ。
もしそうならmainのなかをもう一度確認してごらん。
0617デフォルトの名無しさん
NGNGというか環境は何よ?
Cmachineなら今すぐやめな。
0618557
NGNGどなたか教えてください。よろしくお願いします。
0619デフォルトの名無しさん
NGNGまぁ手抜きなんだけど。
if (strstr(行, 文字列) == NULL) {
/* 見つからなかった */
} else {
/* 見つかった */
}
0620619
NGNGあれ、解釈みすったかな?
> /文字列/で文字列の取り出し方
i = 0;
while ("/文字列/"[i + 1] != '\0') {
if ("/文字列/"[i + 1] == '/') break;
buffer[i] = "/文字列/"[i + 1];
i++;
}
buffer[i] = '\0';
0621557
NGNGその前の処理がわからないんです。
コマンドラインかで
/任意の文字列/p
と入力したとき、コマンドから文字列を取り出してその後>>619の処理ですよね?
command()は>>557です。ここのcbufなりpから文字列だけを取り出したいのです。
0622デフォルトの名無しさん
NGNGなんか下手に改造するよりも、edのソースを(以下略)
0623557
NGNGif (*p == '/'){
++p;
while (*p != '/')
*str++ = *p++;
*str = '\0';
}
でやってみたんですができません。あと
/文字列
のように、/でくくるのを忘れた時の処理にも迷ってます。
0624デフォルトの名無しさん
NGNGif (*p == '/'){
++p;
while (*p != '/' && *p != '\n' && *p != '\0')
*str++ = *p++;
*str = '\0';
}
とでもすれば間違って読みすぎることは無いかな。
あとstrの中はどうなってる?printしてみれ
0625557
NGNG何も入ってないです。しかも普通の動作もおかしくなりました。
うぅっ、あと4時間・・・
0626名無しさん@カラアゲうまうま
NGNG0627デフォルトの名無しさん
NGNGその部分をはずしたら動作は戻るのかい?
てかifぶんの後にelseをつけてないとか。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
0628557
NGNGp=abcd/ ,str=a"
p=bcd/ , str="
p=cd/, str="
p=d/, str=d"
どういうことでしょう?
0629名無しさん@カラアゲうまうま
NGNG0631デフォルトの名無しさん
NGNGchar *a = str;
++p;
while (*p != '/' && *p != '\n' && *p != '\0')
*a++ = *p++;
*a = '\0';
}
どうだ?
0632557
NGNG0634デフォルトの名無しさん
NGNGchar *str = malloc(256);
などと確保しておいて
その下に
char *a = str;
とすればaをいくらいじってもstrは変わらん。
strを書き換えると後で使うときになってそんな風になって非常に困る。
0635デフォルトの名無しさん
NGNGstr[256]とかstr = malloc(256)とかね。
char *a = strってのは確保ではないな。
0636499
NGNGstroage size of "a" isint known
っていうエラーがでるんですが、これはどういう意味なんでしょうか?
0637デフォルトの名無しさん
NGNGa[][2]では配列のサイズが確定できないということ。
配列の要素数を省略できるのは一番最後だけのはずなので、きちんと要素数を宣言すればいいよ。
桶?
0638499
NGNGありがとうございます。試してみます
0639499
NGNGすいません、要素数の宣言とはa[][2]を例えばa[2][2]とかにすれば
いいということですか?
0640637
NGNG正しくは最初だけが省略できる。
逝ってくる。
0641499
NGNGあ、そうなんですか、そうなると
エラー stroage size of "a" isn't known
はどうしたらいいかまったくわからなくなってしまった。
0642デフォルトの名無しさん
NGNGそのエラーはソースのどのあたりで出てる?
0643デフォルトの名無しさん
NGNGためしにやってみた。
構造体の宣言を
typedef struct {
double re;
double im;
} complex;
に変更とのこりのstructを全部取っただけで動いたけど?
0644デフォルトの名無しさん
NGNGうちでも動いた。
コンパイラは、
% gcc -v
Using builtin specs.
gcc version 2.95.4 20020320 [FreeBSD]
0645499
NGNG言われたとおりやってみたらコンパイルはできました。
実行してみたら行列aと行列bの値はでるのですが、
aとbの積がでませんでした。
0646デフォルトの名無しさん
NGNG2.Java言語の現状と今後の動向について
という課題に現在取り組んでます。
でもあまりわからないので、どういったことをかけばよいのか、
そして他の人の意見もほしくて投稿してます。
なにかないでしょうか?
0647499
NGNGどうしたらいいのでしょうか
0648デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数:120141人 発行日:2002/07/25
どもどもー、ロスタイムに身悶える、とっても苦しいひろゆきですー。。。
昨年5月、珍走団に「文句があったらいつでも来い!バーカ!バーカ!」といいつつ、本当に来られたら、土下座をしてしまったおいらですが、実は他にもあるですよー。恥ずかしい話は、、、うぅうぅ
昨年6月のことですが、おいらに批判的なチョンに「ボコる」「焼き入れる」「殺す」と慣れないセリフを使って一生懸命脅してみたですけど、チョンってば全然ビビッってくれないで「相手になってやる!」なんて言うですよー、、、うぅうぅ
おいらってば焦って必死に逃げ回って激ヤセしちゃったですよー、、、うぅうぅ
“歴史は繰り返す”といいますが“おいらの歴史”も繰り返しまくりですよー、、、うぅうぅ
皆さんご存知のとおり、おいらってばネットや電話では結構勇敢なんですが、どうも面と向かってしまうとすっかりドテチンになっちゃうみたいなんですよー、、、うぅうぅ
でも今はなんとか気を取り直してチョンに反撃をはじめたですよー、、、えっへん
イタズラ電話やウィルス爆弾とか家族への嫌がらせとか色々やってますですー。。。
ところで、おいらの病的な臆病さの原因は「腕力に自信がないから」だけではないんですー、、、
それはそれは、、本当に、、本当に、、根深い問題があるんですよー、、、うぅうぅうぅ
臆病さだけではありません。決断力のなさも笑われ始めてます、、、うぅうぅ
元削除人の皆さん!あんまりおいらの秘密言いふらすのやめてよー、、、うぅうぅ
んじゃ!
0649名無しさん@カラアゲうまうま
NGNG意味不明。先生に問題の意味を確認してこい。
0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNG0652499
NGNGtypedef struct {
double re;
double im;
} complex;
complex add(complex alpha, complex beta);
complex mul(complex alpha, complex beta);
void mat_mul(complex a[][2], complex b[][2], complex c[][2]);
void print_mat(complex a[][2], char *str);
int main(void)
{
complex a[][2] = {{{1.0, 1.0}, {2.0, 1.0}}, {{-1.0, 1.0}, {1.0, -1.0}}};
complex b[][2] = {{{3.0,-1.0}, {-1.0,1.0}}, {{ 1.0, 2.0}, {-2.0, 3.0}}};
complex c[2][2];
print_mat(a, "a");
print_mat(b, "b");
mat_mul(a, b, c);
print_mat(c, "a * b");
return 0;
}
0653499
NGNG{
int i, j, k;
complex s, t;
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++) {
s.re = s.im = 0.0;
for (k = 0; k < 2; k++) {
t = mul(a[i][k], b[k][j]);
s = add(s, t);
}
c[i][j] = s;
}
}
void print_mat(complex a[][2], char *str)
{
int i, j;
printf("%s = \n", str);
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++)
printf("%+f + %+fi ", a[i][j].re, a[i][j].im);
printf("\n");
}
}
complex add(complex alpha, complex beta)
{
complex gamma;
gamma.re = alpha.re + beta.re;
gamma.im = alpha.im + beta.im;
return gamma;
}
0654499
NGNG{
complex gamma;
gamma.re = alpha.re*beta.re - alpha.im*beta.im;
gamma.im = alpha.im*beta.re + alpha.re*beta.im;
return gamma;
}
これで実行すると、mat_mul呼び出す所でとまってしまいます。
0655デフォルトの名無しさん
NGNGとまる?
もっと状況を詳細に書いて。
0656557
NGNG助言してくださった方々、どうもありがとうございました。
0657デフォルトの名無しさん
NGNG0658499
NGNG実行すると、
a =
+1.000000 + +1.000000i+2.000000 + +1.000000i
-1.000000 + +1.000000i+1.000000 + -1.000000i
b =
+3.000000 + -1.000000i-1.000000 + +1.000000i
+1.000000 + +2.000000i-2.000000 + +3.000000i
と出たところで止まってしまいます。
0659499
NGNG一応動くようになりました。あと、このプログラムをn*m行列とm*l行列
を入力し、この積を計算してn*l行列を求めるようにできれば、完成なの
ですが、この場合どこを変えればできるようになるのでしょうか?
よろしくお願いします。
0660デフォルトの名無しさん
NGNGプログラムは終了していないという解釈でよいですか?
mat_mul()の t = mul(a[i][k], b[k][j]); ところに
i, j, kを表示するprintf()を埋め込んで実行し、
どう表示されたか教えて下さい。
0661デフォルトの名無しさん
NGNGa + b =の結果まで出たぞ
0663499
NGNGいました。本当にすいませんでした。
0664デフォルトの名無しさん
NGNG> Win+Cygwin
CygwinってWindows以外で使えるのか?
0665デフォルトの名無しさん
NGNG>>653 にそういうところはなさそうだけど、
どうなってるの?
>>659
n, m, l はどういう扱いにするの?
固定にするの?それとも、入力するようにするの?
0666499
NGNGプログラムの方は他のパソコンでやってまして、そっちで間違えてしまって
いました。
n,m,lですが、入力するようにしたいです。2*3と3*4や、3*2*と2*2など
n*mとm*lの形の行列の積に対応できるようにしたいです。
0667デフォルトの名無しさん
NGNGクラス内の関数のポインタはどのように取得すればよいのでしょうか?
例えば
class CXXXX {
void get();
void (* funcPtr);
};
として
void CXXXX::get() {
funcPtr = get;
}
では
error C2440: '=' : 'void (__thiscall CCommonProcess::* )(void)' から 'void (__cdecl *)(void)' に変換できません。
と出てしまいます。
他に
class CXXXX {
void get();
void (* CXXXX::funcPtr);
};
として
void CXXXX::get() {
funcPtr = get;
}
も試してみたのですが、こちらも無理なようでした。
何か方法はあるのでしょうか?
0668デフォルトの名無しさん
NGNGvoid (* funcPtr);って関数ポインタの宣言か?
0669デフォルトの名無しさん
NGNGおお!茨の道を進むと。
C言語では、n,m,lがコンパイル時に決定されていないような多次元配列を
扱うのは非常に面倒です。この場合よく使われるのは、以下の2つです。
・1次元配列を指すポインタの配列を使う
・1次元配列を2次元配列とみなして使う
前者は下準備が大変ですが、見た目はきれいに書けます。
後者は見た目は悪いですが、いろいろなと応用が効くように思います。
どちらにします?別に他のアイデアがあればそれでもかまいませんが。
0670デフォルトの名無しさん
NGNGすいません。記述ミスです。
元々の記述はこちらの様になっていました。
void (* funcPtr)();
二番目に書いた方法で解決すると思ったのですが、
こちらでもうまくいきません。
どうかよろしくお願いします
0671デフォルトの名無しさん
NGNG課題の内容がポインタとデータ構造となっているので、できれば
ポインタを使うほうが良いです。
0672デフォルトの名無しさん
NGNG1次元の配列をn*m次元の配列として扱う一般的な方法。
a11 a12 a13
a21 a22 a23
という配列を一次元配列に入れてみる。各要素はintとすると、
int a[] = {a11, a12, a13, a21, a22, a23};
// 要素a[n,m]を返す関数。
int elem(int *a, int xsize, int n, int m)
{
return *(a + n * x + m);
}
elem(a, 3, 2, 3); // a23が返ってくる
こんな感じで扱えばいい。
0673デフォルトの名無しさん
NGNGどうもありがとうございます。
できれば、先ほどのプログラムも使用していきたいのですが、
それは可能なのでしょうか?
0674デフォルトの名無しさん
NGNG引数で渡すかしないと。
0675デフォルトの名無しさん
NGNG一応↓のようにしたらコンパイル通った。望み通りの結果になるかは知らんが
class A {
void get();
void (A::*funcPtr)();
};
void A::get() {
funcPtr = &A::get;
}
0676669
NGNGでは、前者の方ということですね。
先程もいったようにn,m,lがコンパイル時に決定されないので、
当然、行列のサイズもコンパイル時にはわかりません。
そのため、malloc()を使って動的に行列を確保するようにします。
double** allocate(int n, int m)
{
double** p;
double* t;
int i;
p = (double**)malloc(sizeof(double*) * n + sizeof(double) * n * m);
t = (double*)&p[n];
for (i = 0; i < n; i++) {
p[i] = &t[i * m];
}
return p;
}
とりあえずこれが下準備部分となります。
0678669
NGNGというように変更し、2をnなりmなりlに置き換えてください。
print_mat()に関しても同様に修正してください。
0680499
NGNGどうもありがとうございます。
さっそく試してみます。
0681ぽえー
NGNGかなり、ネットで探したんですが、見つかりません。
0682499
NGNG{
int i, j, k;
complex s, t;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++) {
s.re = s.im = 0.0;
for (k = 0; k < l; k++) {
t = mul(a[i][k], b[k][j]);
s = add(s, t);
}
c[i][j] = s;
}
}
void print_mat(complex** a,int n,int m,char *str)
{
int i, j;
printf("%s = \n", str);
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++)
printf("%+f + %+fi ", a[i][j].re, a[i][j].im);
printf("\n");
}
}
というように変更すれば良いのでしょうか?
あと下準備を書く場所はどこでも良いのですか?
よろしくお願いします。
0683669
NGNG>>659 と話を合わせておいた方が混乱しにくくなりますよ。
入力部分は後で実装するようにして、デバッグし、動作確認をしてみましょう。
complex a[][2] = {{{1.0, 1.0}, {2.0, 1.0}}, {{-1.0, 1.0}, {1.0, -1.0}}};
を
n = 2; m = 3;
a = allocate(n, m);
for (i = 0, i < n; i++) {
for (j = 0, j < m; j++) {
a[i][j].re = 1.0 * (i * n + j);
a[i][j].im = 1.0 * (i * n + j);
}
}
という感じに。b, cも同様にしてみてください。
0684499
NGNGtypedef struct {
double re;
double im;
} complex;
complex add(complex alpha, complex beta);
complex mul(complex alpha, complex beta);
void mat_mul(complex** a, complex** b, complex** c);
void print_mat(complex** a, char *str);
int main(void)
{
int n,m;
n = 2; m = 3;
a = allocate(n, m);
for (i = 0, i < n; i++) {
for (j = 0, j < m; j++) {
a[i][j].re = 1.0 * (i * n + j);
a[i][j].im = 1.0 * (i * n + j);
}
}
b = allocate(n, m);
for (i = 0, i < n; i++) {
for (j = 0, j < m; j++) {
b[i][j].re = 1.0 * (i * n + j);
b[i][j].im = 1.0 * (i * n + j);
}
}
complex c[2][2];
print_mat(a, "a");
print_mat(b, "b");
mat_mul(a, b, c);
print_mat(c, "a * b");
return 0;
}
0685499
NGNG{
double** p;
double* t;
int i;
p = (double**)malloc(sizeof(double*) * n + sizeof(double) * n * m);
t = (double*)&p[n];
for (i = 0; i < n; i++) {
p[i] = &t[i * m];
}
return p;
}
void mat_mul(complex** a, complex** b, complex** c, int n, int m, int l)
{
int i, j, k;
complex s, t;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++) {
s.re = s.im = 0.0;
for (k = 0; k < l; k++) {
t = mul(a[i][k], b[k][j]);
s = add(s, t);
}
c[i][j] = s;
}
}
void print_mat(complex** a,int n,int m,char *str)
{
int i, j;
printf("%s = \n", str);
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++)
printf("%+f + %+fi ", a[i][j].re, a[i][j].im);
printf("\n");
}
}
>>683
この様に変更してみました。
これ以下は以前のプログラムのままです。
0686584
NGNG遅レスすいません。昨日はありがとうございました。申し訳ございませんが次の条件でもう一度解いてもらえませんでしょうか
getcharコマンドで、入力データの1行目を読み取り、配列aに代入(1行に38文字あるが、最後の1文字は改行文字と仮定)してカウンターの値を1に初期化する。<最初に読んだ文字(a[0]の値)が続いている間は、カウンタ
ーの値輪1ずつ増やして読んだ文字が今までと違った(文字の連続が終わっ
た)時点でカウンターの値をプリントして1の場合にはそのまま数字をプリ
ントして0の場合には、符号をマイナスにしてプリントする。カウンター
の値を1に再初期化>して<>の間を繰り返す。2行目以降を同時に処理し
てください。
条 件:・配列aを引数として、0または1の数をプリントする関数を作成してください。
0687669
NGNGプロトタイプ宣言を修正してください。
a, b, cの変数宣言を加えてください。
l = 4を加えて b の部分を直してください。
c もallocate()を使うようにしてください。
mat_mul()などを呼び出している部分も修正してください。
そこら辺を修正したら、一度コンパイルしてみましょう。
0689デフォルトの名無しさん
NGNG無理。
0690デフォルトの名無しさん
NGNG一応やってやったがこれが最後だ。動かなくても知らん(今後も知らん)。
自分のレス番は間違えないように。非常に迷惑だ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=13&fi=no
0691デフォルトの名無しさん
NGNGどなたか20日以降のお天気をおしえてください。
0692デフォルトの名無しさん
NGNG厨房の夏
2chの夏
#include <stdio.h>
void print(int n, const int *a) {
printf("%d", n);
}
int main() {
int a[1], n = 0, c = 0;
while (~(a[0] = getchar()))
{
if (a[0] == c)
n++;
else {
if (c)
print(n, a);
if (a[0] == '\n') {
putchar('\n');
c = 0;
} else {
if (c)
putchar(',');
c = a[0];
n = 1;
}
}
}
if (c) {
print(n, a);
putchar('\n');
}
return 0;
}
0694デフォルトの名無しさん
NGNG21時頃に停電になってしまい、レス遅れてすいませんでした。
allocate()のところのdoubleは全てcomplexに修正しました。
0695デフォルトの名無しさん
NGNG687>>の修正をやってみます。
0696686
NGNGすみませんでした。できました。ありがとうございます
0697デフォルトの名無しさん
NGNGtypedef struct {
double re;
double im;
} complex;
complex add(complex alpha, complex beta);
complex mul(complex alpha, complex beta);
void mat_mul(complex** a, complex** b, complex** c, int n, int m, int l);
void print_mat(complex** a,int n,int m,char *str);
int main(void)
{
int n,m,l,i,j;
n = 2; m = 3; l = 4;
double a,b,c;
a = allocate(m, l);
for (i = 0; i < m; i++) {
for (j = 0; j < l; j++) {
a[i][j].re = 1.0 * (i * n + j); *
a[i][j].im = 1.0 * (i * n + j); *
}
}
b = allocate(n, m);
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
b[i][j].re = 1.0 * (i * n + j); *
b[i][j].im = 1.0 * (i * n + j); *
}
}
c = allocate(n, l);
for (i = 0; i < n; i++) {
for (j = 0; j < l; j++) {
b[i][j].re = 1.0 * (i * n + j); *
b[i][j].im = 1.0 * (i * n + j); *
}
}
print_mat(a, n, m, "a"); *
print_mat(b, m, l, "b"); *
mat_mul(a, b, c, n,m,l); *
print_mat(c,n,l, "a * b"); *
return 0;
}
>>688
>>687で言われた修正をしてみましたが、*の部分でエラーが
でます。どう直せば良いかわからないので、よろしくお願いします。
> p = (double**)malloc(sizeof(double*) * n + sizeof(double) * n * m);
> t = (double*)&p[n];
これ、環境によっては動かないよ。
0699デフォルトの名無しさん
NGNGdouble a,b,c; -> complex **a,**b,**c;
0700499
NGNGtypedef struct {
double re;
double im;
} complex;
complex add(complex alpha, complex beta);
complex mul(complex alpha, complex beta);
void mat_mul(complex** a, complex** b, complex** c, int n, int m, int l);
void print_mat(complex** a,int n,int m,char *str);
int main(void)
{
int n,m,l,i,j;
n = 2; m = 3; l = 4;
double a,b,c;
a = allocate(m, l);
for (i = 0; i < m; i++) {
for (j = 0; j < l; j++) {
a[i][j].re = 1.0 * (i * n + j);
a[i][j].im = 1.0 * (i * n + j);
}
}
b = allocate(n, m);
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
b[i][j].re = 1.0 * (i * n + j);
b[i][j].im = 1.0 * (i * n + j);
}
}
c = allocate(n, l);
for (i = 0; i < n; i++) {
for (j = 0; j < l; j++) {
b[i][j].re = 1.0 * (i * n + j);
b[i][j].im = 1.0 * (i * n + j);
}
}
print_mat(a, n, m, "a");
print_mat(b, m, l, "b"); *
mat_mul(a, b, c, n,m,l);
print_mat(c,n,l, "a * b"); *
return 0;
}
>>699
あと二つ*の場所のエラーが残ります。これは、どう直せばよいので
しょうか。よろしくお願いします。
>>685
そうなんですか、動くことを信じてみます。
0701デフォルトの名無しさん
NGNGvoid print_mat(complex** a,int n,int m,char *str)
{
int i, j;
printf("%s = \n", str);
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++)
printf("%+f + %+fi ", a[i][j].re, a[i][j].im);
printf("\n");
}
}
です。
エラーは、parse eror before string constantと出ます。
0702デフォルトの名無しさん
NGNGdouble a,b,c;
が直ってない気がするが気のせいか?
文字列("b"と"a * b")の前に変な文字が混じってないか確認して
0703669
NGNG行列a は何*何ですか?行列b は何*何ですか?
つじつまがあっていませんよ。
>>699 で言われたように直してください。
c = allocate(n, l); の後のforは要らないです。
0705499
NGNGtypedef struct {
double re;
double im;
} complex;
complex add(complex alpha, complex beta);
complex mul(complex alpha, complex beta);
void mat_mul(complex** a, complex** b, complex** c, int n, int m, int l);
void print_mat(complex** a,int n,int m,char *str);
int main(void)
{
int n,m,l,i,j;
n = 2; m = 3; l = 4;
complex **a,**b,**c;
a = allocate(n, m);
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
a[i][j].re = 1.0 * (i * n + j);
a[i][j].im = 1.0 * (i * n + j);
}
}
b = allocate(m, l);
for (i = 0; i < m; i++) {
for (j = 0; j < l; j++) {
b[i][j].re = 1.0 * (i * n + j);
b[i][j].im = 1.0 * (i * n + j);
}
}
c = allocate(n, l);
print_mat(a, n, n, "a");
print_mat(b, m, l, "b"); *
mat_mul(a, b, c, n,m,l);
print_mat(c,n,l, "a * b"); *
return 0;
}
>>702-703
変更してみましたが、やはりあと二つのエラーがなくなりません。
0706デフォルトの名無しさん
NGNGここの部分だけでいいから(自分の手で打つんじゃなく)ファイルからそのままコピペしてくれ
print_mat(a, n, n, "a");
print_mat(b, m, l, "b");
mat_mul(a, b, c, n,m,l);
print_mat(c,n,l, "a * b");
0707499
NGNGprint_mat(a, n, n, "a");-->print_mat(a, n, m, "a");
です。
0708落ちこぼれ
NGNG提出が今日までなので必死なんです(;´Д`)
お願いします。
#include<stdio.h>
int sum(int, int, int *);
int sum(int first, int last, int *array)
{
if(first==last)
return array[first];
else
return array[first] + sum(�@, �A, �B);
}
int main(void){
int a[]={10, 2, 1, 3, 4};
printf("%d\n", sum(0, 4, a) );
return 0;
}
0709デフォルトの名無しさん
NGNGこのコードを元にすればよいということか?
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNG#include <stdio.h>
int sum(int, int, int *);
int sum(int first, int last, int *array)
{
if(first==last)
return array[first];
else
return array[first] + sum(first + 1, last, array);
}
int main(void){
int a[]={10, 2, 1, 3, 4};
printf("%d\n", sum(0, 4, a) );
return 0;
}
0712499
NGNGどうもすいませんでした。,が抜けてた箇所があったみたいです。
コンパイルすることはできたのですがaとbの行列を出力したところで
core cumped してしまいました
0713デフォルトの名無しさん
NGNG1. first+1
2. last
3. array
センセがLisperなんじゃね?
0714デフォルトの名無しさん
NGNGとりあえずmat_mul()を↓に変えてみな
void mat_mul(complex** a, complex** b, complex** c, int n, int m, int l) {
int i, j, k;
complex s, t;
for (i = 0; i < n; i++)
for (j = 0; j < l; j++) {
s.re = s.im = 0.0;
for (k = 0; k < m; k++) {
t = mul(a[i][k], b[k][j]);
s = add(s, t);
}
c[i][j] = s;
}
}
0715デフォルトの名無しさん
NGNGあとは行列を入力できるようにするだけなので、
やってみます。もしかしたら、また来ることになるかもしれませんが・・。
>>714さん>>669さん本当にありがとうございました。
0717デフォルトの名無しさん
NGNGどこを直したらいいのか、指摘して下さい。
#include <stdio.h>
void kansu( int a[5]);
int main( void ){
int a[5], b[5], c[10], i, j, k, e, f, g, min;
printf("配列 a に,5つの数を入力して下さい。\n");
for( i=0; i<5; i++){
scanf("%d",&a[i]);
}
printf("配列 b に,5つの数を入力して下さい。\n");
for( j=0; j<5; j++){
scanf("%d",&b[j]);
}
kansu( a );
for( i=0; i<5; i++){
e = i;
min=10000000;
for( j=e; j<5; j++){
if(min >= b[j]){
min = b[j];
f = j;
}
}
g = b[i];
b[i] = b[f];
b[f] = g;
}
printf("\n");
printf("配列 c の要素を順番に表示する。\n");
0718デフォルトの名無しさん
NGNGi = 0;
j = 0;
for( k=0; k<10; k++){
if( a[i] <= b[j] ){
c[k] = a[i];
i++;
}
else if( a[i] > b[j] ){
c[k] = b[j];
j++;
}
else if( i==5 ){
c[k] = b[j];
j++;
}
else if( j==5 ){
c[k] = a[i];
i++;
}
}
for( k=0; k<10; k++){
printf("%d\n", c[k]);
}
}
void kansu( int a[5]){
int i, j, e, f, g, min;
for( i=0; i<5; i++){
e = i;
min=10000000;
for( j=e; j<5; j++){
if(min >= a[j]){
min = a[j];
f = j;
}
}
g = a[i];
a[i] = a[f];
a[f] = g;
}
return;
}
見づらくなってすいません。
0719デフォルトの名無しさん
NGNGマージソートだな。
0720デフォルトの名無しさん
NGNGとりあえず↓ここは
if( a[i] <= b[j] ){
c[k] = a[i];
i++;
}
else if( a[i] > b[j] ){
c[k] = b[j];
j++;
}
else if( i==5 ){
c[k] = b[j];
j++;
}
else if( j==5 ){
c[k] = a[i];
i++;
}
↓こうしないとダメだろ
if( i==5 ){
c[k] = b[j];
j++;
}
else if( j==5 ){
c[k] = a[i];
i++;
}
else if( a[i] <= b[j] ){
c[k] = a[i];
i++;
}
else if( a[i] > b[j] ){
c[k] = b[j];
j++;
}
0721デフォルトの名無しさん
NGNGなんでkansu()を一回しか使ってないんだよ。
0723デフォルトの名無しさん
NGNG少なくともバブルソートか交換ソートで、a[]とb[]をまず整列しる。
それからマージソートでa[]とb[]をミックスしる。
0724デフォルトの名無しさん
NGNGa[]はkansu()でb[]はmain()内で(アフォ)選択ソートしてるよ
0725デフォルトの名無しさん
NGNGこの選択ソートあまり見かけないやり方だね。
それに、もし入力に10000000を越える数字を入れると、動作が
おかしくなるぞ。
0726デフォルトの名無しさん
NGNG#include <stdio.h>
void s_sort(int a[]);
void m_sort(int a[], int b[], int c[]);
int main(void)
{
int a[5], b[5], c[10], i, j;
printf("配列 a に,5つの数を入力して下さい。\n");
for (i = 0; i < 5; i++) scanf("%d", &a[i]);
printf("配列 b に,5つの数を入力して下さい。\n");
for (j = 0; j < 5; j++) scanf("%d", &b[j]);
s_sort(a);
s_sort(b);
m_sort(a, b, c);
printf("配列 c の要素を順番に表示する。\n");
for (i = 0; i < 10; i++)
printf("%d ", c[i]);
printf("\n");
return 0;
}
0727デフォルトの名無しさん
NGNG{
int i, j, t;
for (i = 0; i < 4; i++)
for (j = i + 1; j < 5; j++)
if (a[i] > a[j]) {
t = a[i]; a[i] = a[j]; a[j] = t;
}
}
void m_sort(int a[], int b[], int c[]) /* マージソート */
{
int i = 0, j = 0, k = 0;
while (i < 5 || j < 5) {
if (i == 5) c[k++] = b[j++];
else if (j == 5) c[k++] = a[i++];
else if (a[i] < b[j]) c[k++] = a[i++];
else c[k++] = b[j++];
}
}
0728デフォルトの名無しさん
NGNGありがとうございます。なりました。
でも、なぜこうしたらなるんですか?
0729デフォルトの名無しさん
NGNGa[]とb[]をマージする時に、どちらかの添え字が境界を越えてしまわないか
どうか先にチェックする必要があるのです。
0730デフォルトの名無しさん
NGNG自分では、気付きませんでした…。
ありがとうございます。
勉強させていただきました。
(あまりに基本的なことですみませんでした。)
0731デフォルトの名無しさん
NGNGC言語でお願いします。出来るだけ早く動くように・・・
0732デフォルトの名無しさん
NGNGキョーダイセイ
0733デフォルトの名無しさん
NGNGsageてるけど、ネタなのかな?
改行、空白文字の扱いはどーなの?
0734デフォルトの名無しさん
NGNGデキレバ 「カイギョウ」->「クウハクモジ」 ト スル
テキスト ハ スウヒャクキロバイト ノ エイブンショウセツ
0735デフォルトの名無しさん
NGNGやっぱ誰か見てるのね
0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNGハァ?
文字列が重なっている場合はどうなるんだ?
テキストが abcabcabc のとき、最長文字列は
abcabc か abc かどちらだ?
0742デフォルトの名無しさん
NGNGabcabc
0743デフォルトの名無しさん
NGNGモレ ハ モウ デキテルカラ ベツニ イインダガ......
「1冊の本の中に複数回出現する最長部分文字列を探せ。本は、Project Gutenberg
(http://promo.net/pg/)から選ぶこと。」
0744デフォルトの名無しさん
NGNGビット列を生成するアルゴリズムを教えてくれ。
0745デフォルトの名無しさん
NGNGアルゴリズムがある時点で圧縮可能なんじゃ?
0746デフォルトの名無しさん
NGNGいろんな圧縮アルゴリズムで圧縮しまくって、縮まなくなるまで
これを繰り返す
0747デフォルトの名無しさん
NGNG00000001
00000010
00000011
00000100
...
0748デフォルトの名無しさん
NGNG% ruby -e '256.times{|n| puts "%08b" % n}' > temp
% ls -l temp
-rw-r--r-- 1 hoge user 2304 8 3 01:15 temp
% gzip temp
% ls -l temp.gz
-rw-r--r-- 1 hoge user 469 8 3 01:15 temp.gz
圧縮できたYO
0749733
NGNG結局、詳細がよくわからんのでなんとも言えんが・・・
まずは「ハッシュ法 探索 文字列」あたりで検索かけて参考にしてくれ。
詰まったらここか、>>732にでも聞けばいい。
わしゃ眠いから寝る
0752デフォルトの名無しさん
NGNG回答するなら、こんなところでしょうね。
いずれも情報理論の基本かと思われ。
1:どんなビットパターンを生成しても、
そのビットパターンを圧縮できるアルゴリズムは必ず存在する
2:nビット以下で表現されるビット列を、
すべて、nビット未満に圧縮できるアルゴリズムは存在しない
2:は>>748>>750さんの示す通り。
1:は、たとえば 000 001 010 011 ... 111 のうち、
どれか一つだけを1ビットに圧縮できるが、
他はすべて4ビットに伸張してしまうようなアルゴリズムの存在を考えれば、
任意のビット列を1ビットに圧縮できるアルゴリズムが存在する、と言えるため。
0753デフォルトの名無しさん
NGNGシャノンの定義ではエントロピーが最大になればいいんだから
完全に偏りのない乱数のようなデータは圧縮できない
たとえばランダムに与えられる8ビットの整数 n は圧縮できない。
0755デフォルトの名無しさん
NGNG結局その乱数もコンピュータがなんらかのアルゴリズムに基づいて生成したものだから
そのアルゴリズムに基いて圧縮可能
0756デフォルトの名無しさん
NGNGそれが「真の乱数」ならばいいのだろうけどね。
でも、「真の乱数」などこの世に存在しないという罠。
0757デフォルトの名無しさん
NGNGただ1ビット
0
だ(1でも良いけどな)。これ以上圧縮しようが無い。
0758デフォルトの名無しさん
NGNG真の乱数ではないかもしれないが、面白い製品があるぞ。
http://www2.toshiba.co.jp/efort/market/rmaster/index_j.htm
0759デフォルトの名無しさん
NGNG>>727
それ選択ソートじゃなくてバブルソート
0760デフォルトの名無しさん
NGNG禿しく亀レスで、限りなくどうでもいいのだが、>>727は選択ソートだよ。
バブルソートは次のようになる。
void b_sort(int a[]) /* バブルソート */
{
int i, j, t;
for (i = 0; i < 4; i++)
for (j = 4; j > i; j--)
if (a[i] > a[j]) {
t = a[i]; a[i] = a[j]; a[j] = t;
}
}
0761デフォルトの名無しさん
NGNG限りなくどうでもいいのだが、それもバブルソートじゃないよ。
0762デフォルトの名無しさん
NGNG限りなくどうでもいいのだが、ではバブルソートの一例を具体的に
示してくれないか。
0763デフォルトの名無しさん
NGNGfor (j = i; j < 4-1; j++)
if (a[j+1] > a[j]) {
t = a[j+1]; a[j+1] = a[j]; a[j] = t;
}
}
0764デフォルトの名無しさん
NGNG納得しますた。
0766デフォルトの名無しさん
NGNGvoid b_sort(int a[]) /* バブルソート */
{
int i, j, t;
for (i = 0; i < 4; i++)
for (j = 4; j > i; j--)
if (a[j-1] > a[j]) {
t = a[j-1]; a[j-1] = a[j]; a[j] = t;
}
}
>>762
限りなくどうでもいいのだが、レスが早いね。
0767763
NGNG0768763
NGNG0769デフォルトの名無しさん
NGNG>>761と>>766-768は漏です。>>763は別の方です。
>>762を読んで>>766のレスを書いたのですが、
表示された>>763を自分のレスと勘違いして変な
連続書き込みをしてしまいました。
スレ汚しお詫びします。
今日はどうかしている。本当にもう逝く。
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNGが、課題なんですけど、全然わからないんです、、、
どなたか教えて下さい。
0772デフォルトの名無しさん
NGNGそれって例えば
1 + 2 * 3
と入れたら、ちゃんと 7 を返すようなもの?
0773デフォルトの名無しさん
NGNG既出じゃないか?
0774デフォルトの名無しさん
NGNGwhile(<>){
print eval $_
}
0775デフォルトの名無しさん
NGNG同じ学校の人なんじゃないの?(藁
0776731
NGNG一様、出来たことには出来たんだけど、とても遅い
0777肉と急得る
NGNGアプレット上でCanvasクラス承継したクラスをインナークラスにしてインナークラスを
内包するクラスにインナークラスのインスタンスを生成し、内包する
クラスにrepaintメソッドを記述して、インナークラスのupdateメソッド
を呼び出しキャンバス上に描画したいのですがうまく呼び出されません。
Canvasクラスを扱うには何かコツがあるのでしょうか?
ちなみに問題の内容は
表示ボタンをクリックすると、テキストフィールドに入力された文字列が、
指定されたフォントでキャンバスに表示される。です。
ボタンなどの部品とリスナはすべて作りました、あとはキャンバスに表示
するだけなのですが、どうでしょうか?
0778デフォルトの名無しさん
NGNGまず、4行にも渡る1文を書く癖から改めた方がいいかなと。
0779デフォルトの名無しさん
NGNGまくしたてすぎ
0780デフォルトの名無しさん
NGNGa.innerclass(extend(canvas)) = new a.innerclass(extend(canvas))
0782デフォルトの名無しさん
NGNG以下の様な文字列があったとする。
abc123abcd
この文字列の中では 123 という組み合わせは
一度しか現れていない。
その為、最長一致文字列を検索する際に
123 を含む文字列( abc123a, 123ab, ... )は
検索の対象から外す事ができるので、
これらを事前に見つけておく事ができれば
検索時間を大幅に削減する事が出来る。
このような文字列のうち、(全ての組み合わせに対して
検索をするアルゴリズムと比較して)
最大限に検索対象を削減できる文字列を見つける
プログラムを作成しなさい。
0783デフォルトの名無しさん
NGNG要はn文字以上でである文字列が入ってないのだけを抽出すればいいんだろ?
0784デフォルトの名無しさん
NGNGここ嫁。
このような文字列のうち、(全ての組み合わせに対して
検索をするアルゴリズムと比較して)
最大限に検索対象を削減できる文字列を見つける
プログラムを作成しなさい。
0785肉と急得る
NGNG書き込みありがとうございます。あと長文を書いてしまうのは癖でして、
見苦しい文章をカキコしてすいませんでした。
a.innerclass(extend(canvas)) = new a.innerclass(extend(canvas))
なのですが、キャンバスクラスを承継したクラスのインスタンスを
作成する時には、普通に記述した後に(extend(Canvas))と書き加える
という事でしょうか?。
自分で試してみたのですがエラーが出てコンパイル出来ませんでした。
気が向いて暇があったら教えてくださいm(__)m
今度は読みにくくないですよね?(~_~;)
0786デフォルトの名無しさん
NGNG>>778も言うように
複文でだらだら書いた仕様(のようなもの)を
単文の箇条書きに切り分けるとかして
整理して考えてみ?
そのうえでどの部分が問題なのかもう一回質問してみれ。
例)
>アプレット上でCanvasクラス承継したクラスをインナークラスにしてインナークラスを
>内包するクラスにインナークラスのインスタンスを生成し、〔以下略〕
1、 Canvasクラスを継承したクラスを作る。
2、 1、で作ったクラスは(???)クラスのインナークラスとする。
3、 1,2で定義したクラスのインスタンスを生成する。
:
:
0787デフォルトの名無しさん
NGNGですがまだぜんぜんわかってません
ここで頼んでもしょうがないのですが、有志の方がいたらどうぞ簡単なのをひとつ依頼してもよろしいでしょうか?
ひとつの改行までの文のうしろ5バイト文字を消すプログラムを作っていただきたいのですが
作れるでしょうか?
すみませんみなさんの会話を崩してしまい・・・
ここにお詫び申し上げます
0788787
NGNGI am japanese
というのを
I am jap
と、半角5文字分消せるようにしていただきたいのです
0789デフォルトの名無しさん
NGNGどの言語を使っているかくらいかけよ。
0790デフォルトの名無しさん
NGNG0791787
NGNGおねがいします
0792デフォルトの名無しさん
NGNG0794787(793 ◆31SOL0D.
NGNG私は画像を表示するだけとかの意味がないソフトくらいしかつくれないのですよ(;゚Д゚)
0795デフォルトの名無しさん
NGNGあほたれ。どれか構えっつの。教えた結果がまったくの無駄になるとむかつくからな。
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNG0799795=798
NGNG0800デフォルトの名無しさん
NGNG0801787(793 ◆31SOL0D.
NGNGアセンブラ何か指定しちゃったら何か迷惑だし。。。(この時点で迷惑ですけど(;´Д`)
0802デフォルトの名無しさん
NGNGhttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/String.html#substring(int,%20int)
0803デフォルトの名無しさん
NGNG0804787
NGNG0806787(793 ◇31SOL0D.
NGNG0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNG5バイトって日本語だったらどうするの?
0809787
NGNGたぶん
0810デフォルトの名無しさん
NGNGpublic class TrimLast5String {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
while ( true ) {
TrimLast5String.trim( br.readLine() );
}
} catch (Exception e) {
}
}
public static void trim( String line ) {
int length = line.length();
if ( length > 5 ) {
System.out.println( line.substring( 0, length - 5 ) );
}
}
}
0811デフォルトの名無しさん
NGNGC版。めんどいので、キモのところだけ。
len = strlen(str);
if(len < 5) str[0] = '\0';
else str[len-5]='\0';
char *strの後の5文字(=バイト)を消す(消したかのように見せる)
0812748
NGNGputs ARGF.map{|s| s.sub(/.{5}$/, '')}
0813デフォルトの名無しさん
NGNGpublic class Trim5 {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = in.readLine()) != null) {
System.out.println(trimTail5(line));
}
}
public static String trimTail5(String s) {
return s.substring(0, Math.max(0, s.length() - 5));
}
}
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNGSystem.out.println(s.substring(0, Math.max(0, s.length() - 5)));
これだけでいいか。
0816sucka
NGNG<form action="finalForm.htm" method="post "name="frmFillin">
First Name: <input type="text" name="firstName" size="15">
</form>
こんなんあります。どうやってfinalForm.htmのほうでこの情報を表示すればいいんでしょうか?
0817デフォルトの名無しさん
NGNGそれと、板違い→http://pc3.2ch.net/hp/
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG>>816がjavascriptとなんか関係あるの?
0820sucka
NGNGmethod="get"は分かってたんだけど、中身のほうがさ。
0821デフォルトの名無しさん
NGNG0822sucka
NGNG<form action="finalForm.htm" method="get "name="frmFillin">
First Name: <input type="text" name="firstName" size="15"></form>
そんでfinalForm.htmでどうやったら、名前やら住所を表示でするん?
0823デフォルトの名無しさん
NGNG板違いだから簡単に済ますけど、
formで送られた情報を得られるのはサーバ側。
だから、サーバの側でそのfinalForm.htmを加工して、
クライアントに送り返してやらないといけない。
クライアント側(ブラウザ側)だけで何とかしようと思ってもどうにもならない。
それは無理。
CGIの基本ですな。で、それは宿題なの?
0824デフォルトの名無しさん
NGNG「finalForm.htm」ってことは受ける側もJavaScript使うんじゃなく?
0825sucka
NGNGfinalForm.htmもjavascript使うんだけど、どうやればいいか。さっぱり。
なんか、XMLとjavascriptでプロジェクトしてんだけど、昔にやったjavascriptをわすれてんのよね。
0826デフォルトの名無しさん
NGNG0827787(793 ◆31SOL0D.
NGNGマジでうれしいです ありがとうございました
規制前だったら2chで書き込める串さしあげてました
0828デフォルトの名無しさん
NGNGジャバスクリプトはダバリプトです。よろしく。
0829787(793 ◆31SOL0D.
NGNG使いやすいですか? 私は最初はこれからやってみようかなと。。。
>>810さん
これってHSPとかでできますか??
0830787
NGNG0832731
NGNGttp://sary.namazu.org/docs/suffix-array.html
suffix array は正にこんな感じ。INDEXを用意して、そいつを
使ってパケットソートにかけてます。
時間としてはうちのPENTIUM3の533で1.5万字15分くらい。
5万字とかだと、もう待ってられません。
0833731
NGNG嘘だ・・・5千字で15分くらい
0834hoge ◆aLgb/tNY
NGNGPrivate Sub FindFile(ByVal ほにゃらら As String)
Dim hFind As Long
Dim FindData As WIN32_FIND_DATA
Dim bResult As Long
Dim NameOfFile As String
Const RoutePath = "るーと"
Const FILE_ATTRIBUTE_DIRECTORY = 16
flg = 0
'最初のファイル検索
hFind = FindFirstFile(RoutePath & "*.*", FindData)
'******** エラー終了 ********
If hFind = INVALID_HANDLE_VALUE Then
MsgBox "検索失敗"
Exit Sub
End If
Do
With FindData
'NULL文字を取り除く
.FileName = Left(.FileName, _
InStr(.FileName, vbNullChar) - 1)
.ShortFileName = Left(.ShortFileName, _
InStr(.ShortFileName, vbNullChar) - 1)
NameOfFile = Trim(.FileName)
If NameOfFile = "." Then
flg = 1
ElseIf NameOfFile = ".." Then
flg = 1
End If
'ディレクトリかどうか
If (.Attributes And FILE_ATTRIBUTE_DIRECTORY) <> 0 Then
Else
flg = 1
End If
End With
If Not flg = 1 Then
'【お願い】ここに呼び出したい【please】
Else
flg = 0
End If
'次を検索
bResult = FindNextFile(hFind, FindData)
Loop While bResult <> 0
'検索の終了
FindClose hFind
End Sub
0835732
NGNGバケットソートってRadixソートだよね?
おれも最初はそれでやってたんだけど、実際に指定のところから取ってきたファイル(400KB程度)をかけたら
4時間待っても終了しないんでwこれは違うと思ってやめた
よく考えたらRadixソートがO(n)なのはデータ長が定数のときだけで、これみたいに
データ長=データ数=ファイルの大きさnのときはO(n^2)かかっちゃう。当然遅い
で違う方法に変えたら400KBを3sec弱(Crusoe600MHz)ぐらいになった。
パクられたらヤだからネタは明かすつもりないけどw
0836デフォルトの名無しさん
NGNGうーん、まあ明かすつもりがないのは別にいいけど、
ソートアルゴリズムは研究され尽くされてる分野だから
多分、君の考えたのも既知のアルゴリズムだと思うよ。
だからこそ、10年位前にcomb sortなんてのが考案されたときに
プログラマの間で大ニュースになったわけだし。
あ、でもcomb sortってどんなのだったか忘れちゃった。
#いや、本音は「教えてホスィ」なんだけど、それは内緒(w
0837デフォルトの名無しさん
NGNGcomb sort遅いよ。実装してみたけど。shell sortとアルゴリズムも
似ているし、オーダーも同じくらい。
0838732
NGNGおれはソートアルゴリズム発明するよな天才じゃないYO!
要は使い方の問題。
0839モヒモヒ
NGNG0840デフォルトの名無しさん
NGNGいくら払うきがあるのかも問題だ。
0841デフォルトの名無しさん
NGNGただし、未婚で彼氏なしが条件。
0842デフォルトの名無しさん
NGNG気弱な男の人妻とかでもいいが。
さえない旦那を優しく包み込む美人妻。
それを奪い取る快感♪
最終的には恨まれて家炎上しそうだが。
じゃあ屈強な旦那にボコられて後腐れない方がいいのか・・・・?
0843デフォルトの名無しさん
NGNGといれはどこですか?
0844デフォルトの名無しさん
NGNG少しは自分で調べろ!
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=utf8&oe=utf8&q=%E3%83%88%E3%82%A4%E3%83%AC
0845デフォルトの名無しさん
NGNGhttp://dempa.2ch.net/misc/R3_temp.swf?inputStr=%83g%83C%83%8C%90%C0%82%C1%82%C4%82%E6%82%B5
0846デフォルトの名無しさん
NGNGmain(){
i++[realloc(d,i+1)]=getc();
}
これって、未定義動作ですか?
0847デフォルトの名無しさん
NGNGやってはいけないことなのは確かだな。
0848デフォルトの名無しさん
NGNGありがとうございます。
getc() は getch() の間違いでした。
i と i++ を使っているのですが、配列の中と外では、
評価が途中で確定するわけではないですよね?
0849デフォルトの名無しさん
NGNG意味不明。
0850デフォルトの名無しさん
NGNG意味が分かるようになってからレスしれ。
0851デフォルトの名無しさん
NGNGつぅかint iは配列か?
ポインタですらないが。
0852デフォルトの名無しさん
NGNGだからぁ、a[2] を 2[a] と書いてもいいんだってばw
0853デフォルトの名無しさん
NGNG宿題じゃないじゃん(w
0855デフォルトの名無しさん
NGNG何もそんな生々しい(?)例を持ってこなくても・・・
knkタンみたいに i=i++; でいいじゃないか。
0856デフォルトの名無しさん
NGNG非生産的な宿題ですね。
0857デフォルトの名無しさん
NGNGj = i++ * i++;
とかね。VCとBCCで動作が異なるよ。
0858846
NGNG0859デフォルトの名無しさん
NGNGありがとうございましたって・・・オィオィ
答えが分かったのか?(w
この問題には、いろいろな落とし穴が複合されているようだが。
200.164.56.24:80 (総合評価:<font size=+2 color=yellow>?</font><font color=lime>(A 以上 or 生 IP。)</font><font color=Cyan>[2972ミリ秒]</font><BR>
216.231.240.20:8080 (総合評価:<font size=+2 color=yellow>?</font><font color=lime>(A 以上 or 生 IP。)</font><font color=Cyan>[1532ミリ秒]</font><BR>
203.116.111.196:80 (総合評価:<font size=+2 color=yellow>?</font><font color=lime>(A 以上 or 生 IP。)</font><font color=Cyan>[3112ミリ秒]</font><BR>
これの[2972ミリ秒]、[1532ミリ秒]、[3112ミリ秒]を調べて速い順で上から並べるのって作れます?
HSPが手元であるのでそれでお願いしたいのですが、よろしいでしょうか?
0862デフォルトの名無しさん
NGNG構造解析くらい自分でやってくれ。
substrとindexof、もしくはそれ相当の機能がある言語なら猿でもできる。
0863デフォルトの名無しさん
NGNGマジレスするなら、awkとsortと正規表現で2,3行でできる。
0864デフォルトの名無しさん
NGNG086578K
NGNG0866デフォルトの名無しさん
NGNG0867423
NGNG宿題じゃないですよハゲ
0869デフォルトの名無しさん
NGNGじゃスレ違い
0870モヒモヒ
NGNG0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNGエロ本でもいいのか?
0873モヒモヒ
NGNGカモーン、カモーン
0874デフォルトの名無しさん
NGNG0875デフォルトの名無しさん
NGNGききめがあまりありません。
オトコでも顔みなければそれなりにいけるとおもうのでおねがいします。
しこしこ
0876デフォルトの名無しさん
NGNG(;´Д`) ウ、ウ、ウソ-ン・・・
0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNG/::\_____\
|: ̄\∩`_´) \
|: :| ̄ ̄U ̄:|
0880デフォルトの名無しさん
NGNGvoid item()
{
int item;
int howMuch[6]={100, 100, 125, 75, 75, 100};
cout << " 1 2 3" << endl;
cout << " Coke Sprite Orange Juice" << endl;
cout << "$1.00 $1.00 $1.25" << endl << endl;
cout << " 4 5 6" << endl;
cout << " Mars Oh Henry! Kit-Kat" << endl;
cout << "$0.75 $0.75 $1.00" << endl << endl;
cout << "Select the item:";
cin >> item;
clrscr();
if (item == 1)
cout << "Please deposit $1.00";
else if (item == 2)
cout << "Please deposit $1.00";
else if (item == 3)
cout << "Please deposit $1.25";
else if (item == 4)
cout << "Please deposit $0.75";
else if (item == 5)
cout << "Please deposit $0.75";
else if (item == 6)
cout << "Please deposit $1.00";
deposit();
}
void deposit()
{
int dep, change, i;
cout << endl << endl;
cout << "Enter how much you are going to deposit" << endl;
cin >> dep;
change = dep - howMuch[i - 1];
cout << "Your change is " << change << endl;
}
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNG答えが得られれば、それでいいのさ。彼は。
0883880
NGNGヒントかなんか教えてくだされば・・・
0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNGまとめて金入れて複数買って最後に釣りレバーとかってできないの?
0886デフォルトの名無しさん
NGNG0887880
NGNGdeposit(int item)にすればいいんですか?
0888デフォルトの名無しさん
NGNGいいよ。あとプロトタイプ宣言もいりそう。
0889デフォルトの名無しさん
NGNGパズルとしてはあっちのほうが面白い。
0890デフォルトの名無しさん
NGNG無限ループ内でsocket関数を使ってsockfdを生成しようとすると
カウンタが1000を少しこえたところで、エラーを返します。
このエラーを回避して、永久にsockfdを生成し続けるには
どうすればいいのでしょうか?
よろしくお願いします。
0891デフォルトの名無しさん
NGNGsocketの仕様読んでから死のうな。
後、所詮日本の通信回線ではDoSなんて不可能。
0892890
NGNG別にDoSってわけじゃないんですけど…
単にネットワークの勉強のためにやってるだけです。
0893デフォルトの名無しさん
NGNG0894デフォルトの名無しさん
NGNGループ内でちゃんとsocketをcloseしませう。
0895デフォルトの名無しさん
NGNG配列に格納するにはどうすればいいですか?
0897デフォルトの名無しさん
NGNG>コマンドの実行結果
何を指すのかさっぱりわからない。
popen
0898デフォルトの名無しさん
NGNGsystem内でリダイレクタつけといて、そのファイルをfopen、fgetsする
おそらく意図としてより正しいだろうと思われる例
パイプ(_popenとか)を使え
0899895
NGNGどうもです。
>>897
>何を指すのかさっぱりわからない。
system関数で実行したコマンドの実行結果。
これの何がわからんのか。あんたの方が意味不明。
0900デフォルトの名無しさん
NGNG実行結果って成功/失敗のフラグのこと?
それとも標準出力に吐かれた内容のこと?
0901デフォルトの名無しさん
NGNGただのアホだな。
0904デフォルトの名無しさん
NGNGあんたの言動が不思議
0905デフォルトの名無しさん
NGNGsysytemを使った場合、>>895の言っていることは複数の回答ができてしまう。
たぶんpopenを使うのが>>895の望みんなんだろう、と>>897さんは言っている。
日本語ができないのは、>>895の方
0906デフォルトの名無しさん
NGNGどうすればいいですか?
0907デフォルトの名無しさん
NGNG何もしていなければ、宣言時には初期化されていない。
0908デフォルトの名無しさん
NGNGアホは淘汰される運命にあるのだよ。
0909デフォルトの名無しさん
NGNGC言語ですよね。まずそれを書きましょう。
あと、「初期化」って言葉はC言語では用法を定義された言葉なので
(906さんの言うところの「宣言時」に値を設定することです。)
勝手に別の意味で使わないようにしましょう。
で、本題ですが、そんな方法はありません。
別の変数に初期化情報を保存しておいて、コピーするしかありません。
0910デフォルトの名無しさん
NGNGchar a[10], c[10];
memcpy(c, a, 10); // 宣言時の a 値を c に保存する
a[0] = 1; a[1] = 2; ...;
...
memcpy(a, c, 10); // ここで a を戻す
ただこんなプログラム書く奴とは付き合いたくないがな
0911906
NGNGでは、char型配列の中身を取り除くにはどうすればいいのですか?
0912デフォルトの名無しさん
NGNGさっきのもそうだが、まず言葉の定義をすること。
「配列の中身」とは?「取り除く」とは?
0913デフォルトの名無しさん
NGNG無理。せめて'\0'で埋めるなら分かるが。
0914デフォルトの名無しさん
NGNGもうお前はあふぉかと。
char *a = malloc(10);
...
free(a);
こんなんどうだw
0915デフォルトの名無しさん
NGNGchar a[256];
...
a[0]=0;
たいていはこれで事足りる。
0916デフォルトの名無しさん
NGNGそう、お前のようなうんこがな。
0917デフォルトの名無しさん
NGNG煽る気も起きないくらいのアフォ...珍しいくらいのアフォ...
0918デフォルトの名無しさん
NGNG宿題なら、問題を書け。まだその方が分かる。その上で分からない部分を示せ。
宿題じゃないなら、おまえプログラミングに向かないからやめた方がいい。
0919デフォルトの名無しさん
NGNG「煽る」とか、そういうおぞましい視点でこのスレを見てるお前のほうが
阿呆。それにキモイ。
0920デフォルトの名無しさん
NGNG> 阿呆。それにキモイ。
オマエモナー。
久しぶりに使ってみました。
0921デフォルトの名無しさん
NGNG0922名無しさん@Emacs
NGNG0924デフォルトの名無しさん
NGNG0925950
NGNG0926花男
NGNGC言語の構造体の問題です。
「1:00から5:00まで4時間分の電車の時刻表がある。この時間帯(1:00〜4:00)
のある時刻を入力し、次の電車の到着時刻は何分後で何時何分か表示せよ
(時刻表)
1時 10分 24分 35分 40分 55分 59分
2時 13分 26分 37分 49分
3時 7分 15分 45分
4時 30分 51分 」
ちなみに自分はプログラムではCが初めてでそれも数ヶ月はじめたばかりの厨房です。
せめてヒントを下さい。よろしくお願いいたします。
0927花男
NGNG新スレに改めてカキコします。
0928デフォルトの名無しさん
NGNGまだ次スレ立ってなかったと思ったけどおれがED?
0929デフォルトの名無しさん
NGNGEDなの?
0930デフォルトの名無しさん
NGNGこれ、構造体の問題なの? 単なる配列の問題じゃなくて?
分に直した時間の配列を持って、入力される時間も同様に分に直して、配列と比較すればよいんでは?
0931デフォルトの名無しさん
NGNGまずその時刻表をどうやって表現するか決めなくてはなるまい。
表は早い順に並べて配列に入れるとして、時刻の表現が問題だ。
1) 午前0時を基準に分で表現する
2) 構造体を使って時、分を入れる
の二通りが考えられる(これ以外にも秒であらわすとかいろいろあるけどいらんだろ)。
構造体の問題というからには2)で表現するんだろうなあ。
時間の比較、大小判定は1)の方が楽なんだけど。
そいで2)で表現するとする。まず構造体を定義する。
typedef struct {
int h; // hour
int m; // minute
} atime; // ださい構造体名だ
次にこの構造体を扱う関数を考える。差を分で返す関数があれば十分だろう。
大小の比較はこの関数が返してきた結果を利用すればいい。
// t - uを計算し、結果を分で返す。1時間=60分という事実を使って計算しろ。
int atimesub(atime t, atime u);
時刻表はこういうふうに初期化しとけ。
atime timetable[] = {
{1, 10},
{1, 24},
:
:
};
入力された時刻もatime型の構造体に入れて扱えばいいだろう。
以上がヒントだ。あとはこれらを使ってなんとかしてくれ。
Cを始めて数ヶ月だったらなんとかなるだろ。
0933デフォルトの名無しさん
NGNGttp://www.akahige.co.jp/images/index/illust/boss4.jpg
0934花男=926
NGNGすみません。こちらのスレッドは終わっていると思っていたものですから
丁寧にヒントを下さる方がいらっしゃるとは思いませんでした。
それで誠に申し訳無いのですが他のスレでかなり具体的な内容のプログラム
を教えて頂いてしまいました。
ただ931さんに教わったことを参考に良く考えてみます。
この電車がくるまでの時間を出す関数がどのようにしたらいいかさっぱり
分からなかったので頂いたヒントで考えて見ます
0935デフォルトの名無しさん
NGNG0936花男
NGNGマルチのつもりはないぽ。<935
0937デフォルトの名無しさん
NGNGみんな、口をそろえてこう言うんだ。
「結果的にマルチ」
0938花男
NGNGそ・・そんなつもりじゃ・・
0939デフォルトの名無しさん
NGNGまぁ気にするなよ。気にしたって「結果的にマルチ」という事実に変わりないわけだし。
0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNG>>925
仕方ないから>>949が立てて.
0944949(予定)
NGNG;y=ー( ゚д゚)・∵. ターン
\/| y |)
0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNG死んだら949取れないがな
0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNG0949949
NGNG;y=ー( ゚д゚)・∵. ターン
\/| y |)
0950デフォルトの名無しさん
NGNG∧_∧ ((
( ´Д`) ) )
/ \ ノ
| | | \ (( ((
| | /⌒|⌒|ヽ二二つ ) ) 丿パチパチ
ヽ二二Ο./ \ (( ( ノノ
(_| |_| |_ \ ∴λ∵ ←>>943
.(__)__) //》||ヾミ\
0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNGちょーのーりょくをー つかうときー
ばびるーにせいの ひとみはもえーえるー
0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNG連立1次方程式を解く。
初期値(x=0)を与えて、蜘蛛の巣のようにして連立一次方程式を解いてみる。
1)y=2x+4 y=4x
2)y=x-1 y=-2x+2
3)y=5x+4 y=-3x+1
4)y=-x-2 y=1/2x+3
0956デフォルトの名無しさん
NGNG0957nanashi
NGNG2番めに小さい値および3番目に小さい値を印字するプログラムを作れ。ただし、
データがつきたことをあらわすために、0または負の数を入力することにする。
このアルゴリズムのを書いてください。流れ図でも箇条書きでもよいです。書き
方がさっぱりです。
0958デフォルトの名無しさん
NGNG> 99999以下とは限らない
これの意味わからないな。
とんでもないでかい数字が入ってくるってこと?
0959デフォルトの名無しさん
NGNG夏休みの思い出っていう題名で作文書いてきてっていわれました。
夏休み終わったのにまだ、できてないからてずだってください。
0960デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1029422194/
0961nanashi
NGNGよくわからないけど99999より大きい数をよみこむとエラーがでるのかな?
0962デフォルトの名無しさん
NGNG#define swap(a,b) {int temp=a;a=b;b=temp;}
int num[3];
int main(void){
int count=0, n;
for(;;){
scanf( "%d", &n );
if( n <= 0 ) break;
count ++;
if( num[ 0 ] == 0 ) num[ 0 ] = n;
else if( num[ 1 ] == 0 ) num[ 1 ] = n;
else if( num[ 2 ] == 0 ) num[ 2 ] = n;
else {
if( num[ 1 ] < num[ 0 ] && num[ 2 ] < num[ 0 ] ) num[ 0 ] = n;
else if( num[ 0 ] < num[ 1 ] && num[ 2 ] < num[ 1 ] ) num[ 1 ] = n;
else if( num[ 0 ] < num[ 2 ] && num[ 1 ] < num[ 2 ] ) num[ 2 ] = n;
}
}
if( count < 3 ) printf( "(゚д゚)\n" );
else {
printf( "データの個数:%d\n", count );
if( num[ 1 ] < num[ 0 ] && num[ 1 ] < num[ 2 ] ) swap( num[ 0 ], num[ 1 ] );
else if( num[ 2 ] < num[ 0 ] && num[ 2 ] < num[ 1 ] ) swap( num[ 0 ], num[ 2 ] );
if( num[ 2 ] < num[ 1 ] ) swap( num[ 1 ], num[ 2 ] );
printf( "最小値:%d\n", num[ 0 ] );
printf( "2番め:%d\n", num[ 1 ] );
printf( "3番目:%d\n", num[ 2 ] );
}
return 0;
}
これでいいのか?
リア厨でもできたぜ?(ワラ
0963デフォルトの名無しさん
NGNGひょっとして続きものの問題じゃない
それの一つ前に99999以下に限った問題があったとか
scanfを使うことが期待されているような問題だとすれば
文字列として読み込んで数値に変換するのが問題の肝じゃないかな
0964デフォルトの名無しさん
NGNG釣れた(ワラワラ
0965デフォルトの名無しさん
NGNGこのcleanStringのメソッドをどう作ればいいのかがまったくわかりません。
http://www.cs.okstate.edu/cs1113/programs/pgm04.html
↑ここに宿題があります。。。
0966デフォルトの名無しさん
NGNG気が向いたら誰か助けてください。
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Dentaku extends Applet{
TextField display=new TextField("");
Panel keyPanel=new Panel();
String buttonString="789/456*123-0.=+";
public void init(){
setSize(200, 250);
setFont(new Font("Monospaced", Font.BOLD, 14));
setLayout(new BorderLayout());
add(display, "North");
keyPanel.setLayout(new GridLayout(4, 4));
for(int i=0; i<buttonString.length(); i++){
if(i==14 || i%4==3){
keyPanel.add(new OperatorButton(buttonString.substring(i,i+1)));
}else{
keyPanel.add(new NumberButton(buttonString.substring(i,i+1)));
}
}
add(keyPanel, "Center");
add(new ClearButton(),"South");
}
0967デフォルトの名無しさん
NGNGString number=getLabel();
display.setText(display.getText()+number);
}
}
次の計算させるとこがよくわかりません。
0968966 967 988
NGNGimplements ActionListener{
public OperatorButton(String s){
super(s);
addActionListener(this);
}
public void actionPerformed(ActionEvent e){
String operator=getLabel();
double number=(Double.valueOf(display.getText())).doubleValue();
double result=(Double.valueOf(display.getText())).doubleValue();
if(operator.equals("/")){
}else if(operator.equals("*")){
}else if(operator.equals("*")){
}else if(operator.equals("-")){
}else if(operator.equals("+")){
}else if(operator.equals("=")){
number=result;
display.setText(String.valueOf(result));
}
}
}
}
0969966 967 988
NGNGpublic class ClearButton extends Button
implements ActionListener{
public ClearButton(){
super("C");
addActionListener(this);
}
public void actionPerformed(ActionEvent e){
display.setEditable(false);
display.setText("");
}
}
訂正967
public class NumberButton extends Button
implements ActionListener{
public NumberButton(String s){
addActionListener(this);
}
public void actionPerformed(ActionEvent e){
String number=getLabel();
display.setText(display.getText()+number);
}
}
0970デフォルトの名無しさん
NGNG3つの配列のうち最小のやつを選びたいのですが、
minimum( Gx[i][j-1] , Gx[i-1][j] , Gx[i-1][j-1] );
としてminimumに渡したいのですが、
minimum' : 1 番目の引数を 'unsigned char' から
'int [][512]' に変換できません。
とエラーが出て上手く渡せません。どうしたらよいでしょうか。
ちなみに
#define X_SIZE 512
unsigned char Gx[X_SIZE][X_SIZE];
unsigned char minimum(unsigned char Gx1[X_SIZE][X_SIZE],
unsigned char Gx2[X_SIZE][X_SIZE],
unsigned char Gx3[X_SIZE][X_SIZE]){
}
と、しているのですが・・・。
0971デフォルトの名無しさん
NGNGマルチ氏ね
0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG呼び出し元から呼び出し先へ何を渡したいの?
0974970
NGNGGx[i][j-1] , Gx[i-1][j] , Gx[i-1][j-1] です。
for (i=0; i<biWidth; i++){
for (j=0; j<biWidth; j++){
Gx[i][j] = gx[i][j] + minimum( Gx[i][j-1] , Gx[i-1][j] , Gx[i-1][j-1] );
}
}
って感じでminimumに Gx[i][j-1] , Gx[i-1][j] , Gx[i-1][j-1] を
渡したいのですが・・・。
0975bloom
NGNGhttp://www.agemasukudasai.com/bloom/
0976デフォルトの名無しさん
NGNGとりあえず関数の引数については置いといて・・・
唐突だけど、関数内でGx[i][j-1]を他の変数に
代入するのってどうやる?
0977970
NGNGA[i][j]にGx[i][j-1]を代入するとして
どちらの配列もグローバルで定義してから、
for (i=0; i<biWidth; i++){
for (j=0; j<biWidth; j++){
A[i][j] = Gx[i][j-1]
}
}
として代入しています。
但しこの場合 , (i==0 || j == 0)のときは
Gx[i][j]は0としているのですが。
初心者なのでよくわからないのですが。
わかりやすくお教えください。
0978デフォルトの名無しさん
NGNG勝手に他人のサイトを直リンク!!
「法的根拠はない!!」
「だから直リンしてます」
ハァ?
ネチケットも守れない痛い厨のサイト晒し
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNGいや、行ってみたが、なんかマジでイタい厨だったよ。
たぶん、ヲチ祭りだろう。。どこでやってんのか知らんが。
0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNG0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。