C/C++の宿題やらせてください。おながいします
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG今まで1年*ヶ月、ほとんど毎日休まず一生懸命C++を勉強してきた。
ついでに今はJavaと基本情報もやっている。
わからない宿題若しくは処理があったら私にやらせてくださいm(_ _)m
3代目(前スレ): http://pc2.2ch.net/test/read.cgi/tech/1041992392/l50
2代目: http://pc3.2ch.net/test/read.cgi/tech/1039772622/l50
宿題手伝いますYO!!: http://pc3.2ch.net/test/read.cgi/tech/1038024989/l50
0002デフォルトの名無しさん
NGNG乙。
0003デフォルトの名無しさん
NGNGだけど、なかなか答えが出ないよ。かなり時間がかかるの?
0005デフォルトの名無しさん
NGNG○ おがないします
0006デフォルトの名無しさん
NGNG#include <stdlib.h>
#define MAXN 15
int inuse[MAXN];int main(void){
int i, j, k, l, m;int n, o, p, q;int r, s, t;int u, v;int w;
for (i = 1; i <= MAXN; i++) {inuse[i - 1] = 1;for (j = 1; j <= MAXN; j++) {
if (inuse[j - 1]) continue;inuse[j - 1] = 1;for (k = 1; k <= MAXN; k++) {
if (inuse[k - 1]) continue;inuse[k - 1] = 1;for (l = 1; l <= MAXN; l++) {
if (inuse[l - 1]) continue;inuse[l - 1] = 1;for (m = 1; m <= MAXN; m++) {
if (inuse[m - 1]) continue;inuse[m - 1] = 1;
n = abs(i - j);if (inuse[n - 1]) goto lbl10;inuse[n - 1] = 1;
o = abs(j - k);if (inuse[o - 1]) goto lbl9;inuse[o - 1] = 1;
p = abs(k - l);if (inuse[p - 1]) goto lbl8;inuse[p - 1] = 1;
q = abs(l - m);if (inuse[q - 1]) goto lbl7;inuse[q - 1] = 1;
r = abs(n - o);if (inuse[r - 1]) goto lbl6;inuse[r - 1] = 1;
s = abs(o - p);if (inuse[s - 1]) goto lbl5;inuse[s - 1] = 1;
t = abs(p - q);if (inuse[t - 1]) goto lbl4;inuse[t - 1] = 1;
u = abs(r - s);if (inuse[u - 1]) goto lbl3;inuse[u - 1] = 1;
v = abs(s - t);if (inuse[v - 1]) goto lbl2;inuse[v - 1] = 1;
w = abs(u - v);if (inuse[w - 1]) goto lbl1;inuse[w - 1] = 1;
printf("%d %d %d %d %d\n", i, j, k, l, m);
printf(" %d %d %d %d\n", n, o, p, q);printf(" %d %d %d\n", r, s, t);
printf(" %d %d\n", u, v);printf(" %d\n", w);inuse[w - 1] = 0;
lbl1:inuse[v - 1] = 0;lbl2:inuse[u - 1] = 0;lbl3:inuse[t - 1] = 0;lbl4:inuse[s - 1] = 0;
lbl5:inuse[r - 1] = 0;lbl6:inuse[q - 1] = 0;lbl7:inuse[p - 1] = 0;lbl8:inuse[o - 1] = 0;
lbl9:inuse[n - 1] = 0;lbl10:inuse[m - 1] = 0;
}inuse[l - 1] = 0;}inuse[k - 1] = 0;}inuse[j - 1] = 0;}inuse[i - 1] = 0;}return 0;}
0007デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG了解です。もう少し走らせてみます。
0010デフォルトの名無しさん
NGNGバグ取れたらぜひ見せてくださいねー。面白そうなアルゴリズムだから。
俺のは思いっきり力技で書きますた。
0011前スレ988
NGNGなんとか解読してみた。引き算やった結果が既に使われてる数字かどうかで枝刈りしてるのね。
おれがやったのは、全部のパターンを生成してチェックしてる。
だからチェックする回数は最悪で15!=1307674368000回もチェックしなきゃならん。
そりゃ遅いよ…
コードはちったあ綺麗かもしらんが、使い物にならんわこれ(汗
しかもチェックする関数にバグがあった。配列の添え字が全部ひとつずつ大きかった。
最初に書いたコメントに引きずられたらしい。
001212
NGNG#include <stdlib.h>
#define LINE 5
#define MAXN 15
int x[LINE][LINE];
int use[MAXN+1];
void show(void){
int i, j;
for(i = 0; i < LINE; i++){
for(j = 0; j < LINE - i; j++)
printf("%d ", x[i][j]);
printf("\n");
}
}
001312
NGNGint i, j, k, l, n;
for(i = 1; i < LINE; i++){
for(j = 0; j < LINE - i; j++){
n = abs(x[i-1][j] - x[i-1][j+1]);
if(use[n] == 1){
x[i][j] = n;
use[n] = 0;
}else{
for(k = 1; k <= i; k++){
for(l = 0; l < LINE - k; l++){
if(k != i || l != j){
n = x[k][l];
use[n] = 1;
}
}
}
return;
}
}
}
show();
for(i = 1; i < LINE; i++){
for(j = 0; j < LINE - i; j++){
n = x[i][j];
use[n] = 1;
}
}
}
001412
NGNGint j;
x[0][pos] = k;
use[k] = 0;
if (pos == LINE - 1) test();
else {
for (j = 1; j <= MAXN; j++)
if (use[j]) put(pos + 1, j);
}
use[k] = 1;
}
int main(void){
int k;
for(k = 1; k <= MAXN; k++) use[k] = 1;
for(k = 1; k <= MAXN; k++) put(0, k);
return 0;
}
001512
NGNGの1で順列作って、そっから枝狩りしてまふ
#define LINE 7
#define MAXN 28
にしたら終わらねぇ(д
001612
NGNGint i, j, k, l, n;
for(i = 1; i < LINE; i++){
for(j = 0; j < LINE - i; j++){
n = abs(x[i-1][j] - x[i-1][j+1]);
if(use[n]){
x[i][j] = n;
use[n] = 0;
}else{
for(k = 1; k <= i; k++){
for(l = 0; l < LINE - k; l++){
if(k == i && l == j) return;
n = x[k][l];
use[n] = 1;
}
}
return;
}
}
}
show();
for(i = 1; i < LINE; i++){
for(j = 0; j < LINE - i; j++){
n = x[i][j];
use[n] = 1;
}
}
}
0017デフォルトの名無しさん
NGNGぜんぜんわかりません。
言語はC++です。
お願いします。
0018デフォルトの名無しさん
NGNG#include <stdlib.h>
#define MAX 15
int que[MAX];
int check(int top, int next){
int i,j,num,next_next;
num=next-top-1;
for(i=0;i<num;i++){
que[next+i]=abs(que[top+i]-que[top+i+1]);
for(j=0;j<next+i;j++){
if(que[next+i]==que[j]) return -1;
}
}
next_next=next+num;
if(next_next<MAX){
return check(next,next_next); //再帰
}else{
for(i=0;i<MAX;i++){
printf("%d ",que[i]);
if(i==4||i==8||i==11||i==13) printf("\n");
}
return 0;
}
}
0019デフォルトの名無しさん
NGNG{
int i,j,k,l,m;
for(i=1;i<=MAX;i++){
que[0]=i;
for(j=1;j<=MAX;j++){
if(j==i) continue;
que[1]=j;
for(k=1;k<=MAX;k++){
if(k==i||k==j) continue;
que[2]=k;
for(l=1;l<=MAX;l++){
if(l==i||l==j||l==k) continue;
que[3]=l;
for(m=1;m<=MAX;m++){
if(m==i||m==j||m==k||m==l) continue;
que[4]=m;
if(!check(0,5)) return 0;
}
}
}
}
}
return -1;
}
0020デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
#define N 7
#define MAX (N * (N + 1) / 2)
int number[MAX + 1];
int triangle[N][N];
002120
NGNG{
int i, j, d;
if (n < N) {
for (i = 1; i <= MAX; i++) {
if (number[i] == 0) {
triangle[0][n] = i; number[i] = 1;
for (j = 1; j <= n; j++) {
d = abs(triangle[j - 1][n - 1] - triangle[j - 1][n]);
if (number[d] == 0) {
triangle[j][n] = d; number[d] = 1;
} else {
break;
}
}
if (j > n) recursive(n + 1);
for (j -= 1; j >= 0; j--) number[triangle[j][n]] = 0;
}
}
} else {
for (i = 0; i < N; i++) {
for (j = 0; j < i * 2; j++) putchar(' ');
for (j = i; j < N; j++) printf("%2d ", triangle[i][j]);
putchar('\n');
}
}
}
002220
NGNG{
recursive(0);
return 0;
}
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGchar two[1024];
char one_two_buf[1024];
printf("データ1を入力してください\n");
scanf("%s",&one);
printf("データ2を入力してください\n");
scanf("%s",&two);
sprintf(one_two_buf, "%s %s)", one, two);
というプログラムでは、
『one』と『two』にスペース入りの文字列は入力できないんですか?
one_two_bufに『赤 青 緑 …』というように入れたいのですが
『one』に『赤 青』
『two』に『緑』
という感じでoneにスペースで区切って文字列を入力すると
『赤』がoneに、『青』がtwo に入ってしまうようで、
scanf("%s",&two);
の行が実行されません…
スペース入りの文字列を入力できる関数はあるのですか?
ぜひご教授ください
お願いします
002625
NGNG誤:sprintf(one_two_buf, "%s %s)", one, two);
正:sprintf(one_two_buf, "%s %s", one, two);
です
0027デフォルトの名無しさん
NGNGgets?
002825
NGNGthe `gets' function is dangerous and should not be used.
と表示されるのですが…
危ないから使うな、って言われてるんですか…?
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNGCの中の人からのメッセージだ。
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGfread(buf, sizeof(buf), stdin);
0033デフォルトの名無しさん
NGNGYes.
getsはバッファーオーバーフローの危険性があって、
その危険性をどんなにプログラム上で工夫しても
回避することが出来ないんだよ。
0034デフォルトの名無しさん
NGNG格納するにはどうしたらいいんでしょうか?
変数に格納した後、その中身を比較したいんですが、ここで詰まってしまいますた。
(例)
ABCDEF123456 ⇒TMP[1]
BCDEFG234567 ⇒TMP[2]
CDEFGH345678 ⇒TMP[3]
:
助けてください。おながいします。
0035デフォルトの名無しさん
NGNG行数をまずカウントし、行数分の配列をmalloc。
rewind()して読み直す。
0036デフォルトの名無しさん
NGNG質問の意図は汲めるが意味がよくわからん
0037デフォルトの名無しさん
NGNG・scanf()は正しい仕事をしている。
"%s"は空白を区切りと見做す仕様だ。
喩え入力の途中であろうが、文字列が確保できたらそこで終了してしまい、
残りの入力は読み取られないままになる。
#そして次回のscanf()で入力されるわけ。
・gets()は問題が色々ある。
fgets()で置き換え可能なので、行単位の入力でいいのならfgets()を勧める。
但し、改行コードも読みこまれていることに注意。
そして、どちらかというと擦れ違い。
0038デフォルトの名無しさん
NGNGLCDに表示させるにはどうしたらいいですか?
0039デフォルトの名無しさん
NGNG>>59辺りでできてたりして。
0040前スレ985
NGNGとりあえず、>>6だけコンパイル・実行してみたけど、速い!お見事!
ツリーにして再帰〜とか漠然と考えていたんだけど、なるほどねぇ・・・
前スレ1000の誘導もお見事でした。
0041デフォルトの名無しさん
NGNGデータレジスタは内蔵RAMではないどこかの番地にマップされてる?
たとえばはINITでいくつかコマンドを送ってLCDを表示状態にして、
インターバルタイマで1秒を作り、その割込処理で時刻を加算して、
時刻をhh:mm:ssとかに編集してLCDのデータレジスタにその文字を送る
とかやりたいわけ?
0042デフォルトの名無しさん
NGNG0043前スレ925
NGNG0044前スレ963
NGNGもう1つ質問なのですが
このような動作をするプログラムを作るにはどうすればいいでしょうか。
例えば ○○○left○○right○○○(○は空白) と入力すると
left○○○○○○○○right と出力される
文字列の2つの単語を画面の行の両端に表示するプログラムを
作りたいのですがどうすればいいのでしょうかお願いします。
0045デフォルトの名無しさん
NGNG前スレの問題とほとんど同じだろ
回答例を理解してないのか?
0046デフォルトの名無しさん
NGNGもちついてー もちついてー
#include <stdio.h>
#define GAMEN_NO_SIZE (80)
int main(){
int i;
char left[GAMEN_NO_SIZE],right[GAMEN_NO_SIZE],line[GAMEN_NO_SIZE+1];
scanf("%s",&left);
scanf("%s",&right);
for(i=0;i<GAMEN_NO_SIZE;i++)
line[i]=' ';
line[GAMEN_NO_SIZE]='\0';// 文字列の終端を意味する
for(i=0;i<strlen(left);i++)
line[i]=left[i];
for(i=0;i<strlen(right);i++)
line[GAMEN_NO_SIZE-strlen(right)+i]=right[i];
printf("%s",line);
}
0047デフォルトの名無しさん
NGNG仕事なら落第。
0048デフォルトの名無しさん
NGNGごめん、こんな問題を出す学校の宿題ならエラー処理要らないかと(藁)
それにここに聞く人がそれほどレベルの高いコードを貰っても、
理解できないと思うので、中学生レベル程度の組み方っす。
えーっとぉ、この場合想定されるエラーと、あと減点対象は、
・変数名や定数名の付け方
・入力される文字列の長さ判定 strlen(left)+strlen(right) <= 画面サイズ であるかの判定
・っていうかfor文使わなくても、strcpyがあるでしょ!
こんなもんですかね?
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGご教授願います
時間処理なんですが、
time( &long_time );
として現在時刻を取得したんですが、
この時間を10分おきに更新していく処理がほしいんです。
具体的に言いますと、
2002/12/23 14:09:45 というデータがあるとしたら、
ループの中で
2002/12/23 14:19:45
2002/12/23 14:29:45
・
・
・
と一年分を文字列変数に入れる
(longでもいい)
処理ルーチンがほしいのですが
よろしくお願いします。
0051デフォルトの名無しさん
NGNG突っ込みどころが満載過ぎるが、取りあえず
scanfに文字配列を渡すときに&を付けるのは止めような。
>>50
time_tは単純な積算秒数であって、普通に加減算できるよ。
10分なら600秒だから、
now += 600;
とすれば10分後の値が得られる。
0052デフォルトの名無しさん
NGNG仕事なら擦れ違い
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNGそれだと、年月日まで自動更新されるんでしょうか
0055デフォルトの名無しさん
NGNG>○○○left○○right○○○
(入力された筈の)rightの右側の空白の運命やいかに。
エラー処理は兎も角、一文字ずつコピーするのとループで毎回strlen()するのは如何な最中と。
0056デフォルトの名無しさん
NGNGだから、time_tは(1970/1/1からの)「積算秒数」なの。
年月日時分などのデータを別々に持ってる訳じゃないのよ。
四則演算ってのはそういうこと。
0057デフォルトの名無しさん
NGNG>53
どうもありがとうございました。
oracle で時間を更新する手段もあったらしいですが
そんな難しく考えないほうがよかったですね
0058デフォルトの名無しさん
NGNGtime_t型は1970年1月1日からの秒数だと言ってるだろう。
>>51を読んだのか?
0059デフォルトの名無しさん
NGNG>>57は読んだのか?
0060デフォルトの名無しさん
NGNGうるう秒がある現在では不正確にならないのカナ?
0061デフォルトの名無しさん
NGNGおまえは役に立たん
0062デフォルトの名無しさん
NGNG言っている意味がわかりません。
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNGprintf("win32win32win32win32win32\n"
"win32 win32\n"
"win32 ○ win32\n"
"win32 win32\n"
"win32win32win32win32win32\n");
0067デフォルトの名無しさん
NGNGprintf(" ○\n"
"win32win32win32win32win32\n"
"win32 win32\n"
"win32 win32\n"
"win32 win32\n"
"win32win32win32win32win32\n");
0068デフォルトの名無しさん
NGNGuseless.
if you don't know how, just say so.
losers
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNGSO
0071デフォルトの名無しさん
NGNGYou must be search at this page.
http://www.google.co.jp/
This page is in at your aim.
0072デフォルトの名無しさん
NGNGこの英文は正しいの?
0073デフォルトの名無しさん
NGNGアナログコンピュータ使え
0074デフォルトの名無しさん
NGNG載るっていう単語で
和英辞典を引け
0075デフォルトの名無しさん
NGNGその和英辞典ですか?
007675
NGNG○どの和英辞典ですか?
0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG> You must be search
だろ(w
0080デフォルトの名無しさん
NGNGこのスレをなんだと思ってる
0081デフォルトの名無しさん
NGNGあなたはこのページに探索であるに違いありません。
http://www.google.co.jp/
このページは、あなたの目標に中にあります。
0082デフォルトの名無しさん
NGNGまさか そんな役だと思ってないよな?
0083デフォルトの名無しさん
NGNG┃一┃一┃一┃二┃三┃四┃五┃六┃七┃八┃九┃九┃九┃┃六┃
┃萬┃萬┃萬┃萬┃萬┃萬┃萬┃萬┃萬┃萬┃萬┃萬┃萬┃┃萬┃
┗━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┛┗━┛
/ヘ;;;;;
';=r=‐リ 充分、九連宝燈だと思うが。
ヽ二/
0084デフォルトの名無しさん
NGNGではあなたが訳してみましょう。
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNGじゃ 御前がやれ
模範解答見せてくれよ
0090デフォルトの名無しさん
NGNGあなたはこのページに探索であるに違いありません。
http://www.google.co.jp/
このページは、あなたの目標に中にあります。
0091デフォルトの名無しさん
NGNGYou'd better search at this site.
There you'll get it!!
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGいいだろ。
0094デフォルトの名無しさん
NGNGWin32で環境や基盤と考えればinやon
どれも間違いではないだろう
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNGAPIによって円を
circles in APIs
APIの中に円を
circles on APIs
API上で円を
circles of APIs
APIの円を
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGランダム関数randですが
最大幅65535ですか
これ、最大幅9999になるような
方法はないでしょうか
ifで淘汰する方法以外のを探してます
0099デフォルトの名無しさん
NGNGrand() % 9999
0100デフォルトの名無しさん
NGNGとかは?
0101デフォルトの名無しさん
NGNGrandで出てきた数値の10000のあまりを求めるとか?
0103デフォルトの名無しさん
NGNGなんて書く奴は素人
0104デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG>>105
ではrand()が0からRAND_MAXの充分に特性のよいランダムと仮定して
0からkの均一なランダム関数を作成せよ
0108デフォルトの名無しさん
NGNGそうなの?ふつうに0-9998までの乱数がでてきそうだけど
0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNG処理系にもよるけど、rand() の返す下位ビットはあまりランダムでない事が
ままあるらしいから、なるべく % ではなく / を使って上位ビットを使う
ようにしたほうがいいという話があった。
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNGそういう問題じゃない。話を簡単にするためにRAND_MAXが8で、
0〜6の乱数が欲しいとしよう。そのときに、
rand() % 5
とやったらどうなる? 一応、rand()が理想的な乱数を返すと仮定して、
それぞれの数字が出る確率を求めてみようじゃないか。
rand() rand()%5
0 0
1 1
2 2
3 3
4 4
5 0
6 1
7 2
0,1,2の出る確率はそれぞれ 2/8
3,4の出る確率はそれぞれ1/8
だろ。偏っちゃうじゃないか。だから剰余で乱数を求めちゃいけない。
0114113
NGNGでも、言いたいことはわかるよな。な。スマン
0〜6の乱数が欲しいとしよう(×)
0〜4の乱数が欲しいとしよう(○)
0115デフォルトの名無しさん
NGNGreturn x;
0116デフォルトの名無しさん
NGNGk>RAND_MAXの時は?
0117デフォルトの名無しさん
NGNGrand() 関数は 0 から RAND_MAX の間の疑似乱数整数を返す。
> k>RAND_MAXの時は?
0<=k<=RAND_MAX のときのみ使用すれば問題ない。
0118レイホウ@6歳
NGNG#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int i;
randomize();
printf("0 から 99 までの 10 個の乱数\n\n");
for(i=0; i<10; i++)
printf("%d\n", rand() % 100);
return 0;
}
えいめ〜ん
0119デフォルトの名無しさん
NGNGリファレンスマニュアルのサンプル?
一様乱数と書いてなければ間違ってはいないんじゃない?
#妥当かどうかは兎も角も。
0121デフォルトの名無しさん
NGNG0〜5の乱数値を得られるときに、
0〜3の乱数が欲しかったら、
0〜3 使う
4〜5 やり直す
で、いいんじゃない?
0122デフォルトの名無しさん
NGNG何を的外れなことを言ってるんだ?
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG(int)((dobule)rand() * (double)9999 / (double)65535)
ネタですよ。
0125デフォルトの名無しさん
NGNGつっこまなくてもみんなわかるだろうと思って…
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNGRAND_MAXが32767の環境で
printf("%d\n", rand() % 10000);
した出力を集計してみた。
予想通り、2767を境に出現頻度が数割変わった。
printf("%d\n", (int) ((double) rand() * 9999 / RAND_MAX));
にしたら、そのような境界条件はないものの、ここのばらつきが増えた気がする。
0128デフォルトの名無しさん
NGNGそれで、何を訴えたいの?
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG剰余じゃなくて、10000以上になったらやりなおせばいいだろ?
無駄が多いなら2の累乗の剰余で減らしといて。
0133デフォルトの名無しさん
NGNG乱数っていう意味わかってるの?
0135デフォルトの名無しさん
NGNGrandが完全な乱数ならそれで確率は全く同じになるだろ?
6面ダイスで4面ダイスの代わりをするときにそうするだろ?
0136デフォルトの名無しさん
NGNGその前提がそもそも間違ってる
0137デフォルトの名無しさん
NGNG突っ込みの方向が明後日に向いとるな
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG∧_∧
∧_∧ (´<_` ) 意味が違うと思うぞ、兄者。
(´く_` ) / ⌒i
/ \ | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/.Gateway./ .| .|____
\/____/ (u ⊃
0140デフォルトの名無しさん
NGNG6面ダイスを4面ダイスとして使う方法を
いってみろ
・訂正・
randが(最大値までの範囲内において)完全な乱数なら
0141デフォルトの名無しさん
NGNGどうかご教授願えませんでしょうか?
原形の単語を入れる→複数形
未来形
過去形(それぞれ無いなら原形のまま出力)
という感じです。
不規則変化もあるので、dic作ってそれ以外は文字列の単語のラストや母音で変化でしょうか?
0142デフォルトの名無しさん
NGNGそれでいいんじゃない?
0143デフォルトの名無しさん
NGNG二重検索(?)はあまり理解していないので。
それと、検索し終わった後の処理の仕方も。
前文サゲ忘れてました、すみません
0144デフォルトの名無しさん
NGNG今作っているもので、saveボタンを押すとNumberofStudents1のテキストボックス
から入力された生徒数を読み取り、
courses[0].student_number = atoi(NumberofStudents1->Text.c_str());
clearボタンでテキストボックスを空欄に戻し、loadボタンで先程入力された生徒数
をもう一度NumberofStudents1に表示させたいのですが、
NumberofStudents1->Text = courses[0].student_number;
ではもちろんloadできません。違うfanction内で得た情報を使用する場合、どのよう
にしたらよいのでしょうか?初心者質問ですみませんが、わかる方教えて下さい。
0145デフォルトの名無しさん
NGNGhttp://www.nhk.or.jp/news/2003/02/14/k20030214000149.html
政府は14日の閣議で、北朝鮮を脱出して日本に戻っている人たちの中に、
日本国籍を持たない人もいるとしたうえで、こうした人たちが、日本で暮ら
せるよう事情に応じて適切な在留資格を与えているとする答弁書を決定し
ました。
【政治】国籍なき脱北者に在留資格−政府
http://news2.2ch.net/test/read.cgi/newsplus/1045221402/
674 :名無しさん@3周年 :03/02/15 12:19 ID:u/yKFIsD
まあ、ここで文句いう前に 国に文句言え。以下直に御意見板に行く。
年令、メアド等書きたく無いのは書かなくても大丈夫。
首相官邸「ご意見募集」
http://www.kantei.go.jp/jp/forms/goiken.html
65 :名無しさん@3周年 :03/02/14 20:42 ID:iHggbG5E
http://www.e-pon.net/project/2ch/asia/
俺、もうメール送った。
みんなもやってくれ。
28 :名無しさん@3周年 :03/02/14 20:23 ID:ECrhI8Fb
>北朝鮮を脱出して日本に戻っている人たちの中に、日本国籍を
持たない人もいるとしたうえで、
なんで日本国籍を持たない人が”戻って”くんのよ?
0146デフォルトの名無しさん
NGNG全体像が見えないと応え難いかと。
coursesをグローバルにおけばいいような気はするけど。
0147デフォルトの名無しさん
NGNG1行ずつ読みこんで処理をすると仮定して、
char *pBuffer; /* 行バッファ */
char *pWord; /* 単語 */
size_t len; /* 行の長さ */
・行内から特定の単語を探す。
strstr(pBuffer, pWord);
単語が見つかれば見つかった場所が返される。
・行の先頭の文字を出力
printf("%c\n", pBuffer[0]);
・行の最後の文字を出力
len = strlen(pBuffer);
printf("%c\n", pBuffer[len ? len - 1 : 0]);
・行の最後から2文字を表示(但し2文字に満たない場合は短くなる)
printf("%s\n", pBuffer + len >= 2 ? len - 2 : len - 1);
このくらいあればヒントになるかな。
0148144
NGNGどうもありがとうございます。
coursesはグローバルになっていると思うのですが・・・
これはコースが3つあり、その一つ一つのコースに4人以下
の生徒がいるという設定です。header fileには
#define NAMESIZE 20
#define SSNSIZE 9
enum eGender { UndefinedGender=-1, Male, Female };
enum eStatus { UndefinedStatus=1, Freshman, Sophmore, Junior,
Senior, Other };
struct Student
{
char first_name[NAMESIZE+1];
char last_name[NAMESIZE+1];
char SSN[SSNSIZE+1];
eGender gender;
eStatus status;
int scores[4];
};
struct Course
{
struct Student students[3];
char course_name[NAMESIZE+1];
int student_number;
};
で、cppのincludeの下に
Student students[3];
Course courses[2];
といれました。これでよいのでしょうか?
0149デフォルトの名無しさん
NGNG辞書に登録するとき、単語のスペルを逆順に登録する。
study -> yduts
文字列の1文字目と2文字目が、自動的に
単語の後ろから1文字目、2文字目になる。
ウマー!
0150デフォルトの名無しさん
NGNG頂点が8個在るから、それぞれに番号をつけて、
振って上に来た頂点の番号の二分の一を取る。
注:底が三角錐の入れ物に振る。
0151デフォルトの名無しさん
NGNGそれはもちろんできる。1/4=0.13(6進)で有限小数だから
0152デフォルトの名無しさん
NGNGさいころを2回振り、1回目に出た数と2回目に出た数を
覚えておき、以下の表にしたがって変換する。
例) 1回目に "3"、2回目に "5" が出た場合、
(3,5)->2
4面体さいころを1回振って "2" が出たものとして扱う。
(1,1)->1; (1,2)->1; (1,3)->1; (1,4)->1; (1,5)->1; (1,6)->1;
(2,1)->1; (2,2)->1; (2,3)->1; (2,4)->2; (2,5)->2; (2,6)->2;
(3,1)->2; (3,2)->2; (3,3)->2; (3,4)->2; (3,5)->2; (3,6)->2;
(4,1)->3; (4,2)->3; (4,3)->3; (4,4)->3; (4,5)->3; (4,6)->3;
(5,1)->3; (5,2)->3; (5,3)->3; (5,4)->4; (5,5)->4; (5,6)->4;
(6,1)->4; (6,2)->4; (6,3)->4; (6,4)->4; (6,5)->4; (6,6)->4;
0153デフォルトの名無しさん
NGNG「三角錐」は余りうまくないという罠。
0154デフォルトの名無しさん
NGNG0155143
NGNG何とかやってみたいと思います。
明日の午前中までに報告します。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNG1からmの値をとる一様乱数を1個得られるnとmの条件を求めよ」
という問題があったのを思い出した。
0158デフォルトの名無しさん
NGNGを作ってください
0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNGヤコビ法でも使え。
0161デフォルトの名無しさん
NGNGそれは行列式では?
0162デフォルトの名無しさん
NGNGほれ、ヤコビ法のリンク貼ってやったぞ。
0163デフォルトの名無しさん
NGNGコンピュータ乱数はサイコロとは違うんだよ。
そんなこともわからないのかい(プ
0164デフォルトの名無しさん
NGNGむしろ「頂点が8個あるから」とかネタで返してるヤシに突っ込めよ。
0165デフォルトの名無しさん
NGNG流れがわけわかんないことになってるスレはここですね。
そうですね。
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNGなんかその台詞スゲェかっこいい!
0168デフォルトの名無しさん
NGNGhttp://www2.toshiba.co.jp/efort/market/rmaster/index_j.htm
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGフリーダムランダム
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG#define N 8
int main (void){
int i, j;
static char a[N] [N+1]={
{"********"},
{"********"},
{"*000000*"},
{"*00**00*"},
{"****00**"},
{"***00***"},
{"**00****"},
{"********"}}, b[N] [N+1];
for(i=0; i<N; i++){
for(j=0; j<N; j++)
b[j][N-i-1]=a[i][j];
b[i][N]='\0';
}
for(i=0; i<N; i++)
printf("%s\n", b[i]);
return 0;
}
↑の"7"を変形(90、180度回転、左右反転)させたいんですが、180度と左右反転
がわかりません。このソースでは90回転してまつ。どなたか、他2つの処理を
教えてください・・・(´・ω・`)
0176デフォルトの名無しさん
NGNG>b[j][N-i-1]=a[i][j];
を
b[j][N-i-1]=a[j][i];
にしてみな。
0177デフォルトの名無しさん
NGNG/dev/random 使うからいらね
それに最近のx86 CPUにはそれと同じ機能が備わっている罠
0178デフォルトの名無しさん
NGNG例123.45+67.89=191.34
ただし入力には、getchar()を使い、char型として1文字ずつ受け取る。
解釈できない文字が含まれた場合、それが入力された時点でそこまでの計算するものとする。
できなければエラーを表示して打ち切りでもよい。冒頭の0をゆるしてもよい。
scanfやatoi関数など既存の関数は使わないこと。
意味不明、焼肉定職
0179デフォルトの名無しさん
NGNGものすごくどうでもいい話だが、>>166は
「ウルトラマン」最終回のゾフィーの台詞が元ネタと思われる。
0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNGしかし、これだと1秒単位の秒数しか計測できません
コンマ以下の時間も表示させたいのですが、どのようにすればいいのでしょうか?
tp_start とかの定義にdoubleとかがついていれば
printfで %f を付けるなどの方法がありそうなのですが、
調べてみたところ tipe_t、という定義でしか載ってなく、
その通りにやったのでコンマ以下を表示させる方法が思いつきません
教えてください
void time_keisoku()
{
time_t tp_start, tp_end;/* 応答速度計測 */
printf("\n応答時間計測開始.....\n\n");
time(&tp_start);/* 処理開始時間取得 */
// 処理
time(&tp_end);/* 処理終了時間取得 */
printf("\n応答時間計測終了\n");
printf("応答時間は %ld 秒です\n", tp_end - tp_start);
}
0183デフォルトの名無しさん
NGNG移植性の高い方法は存在しない。
UNIXを使っているのなら、gettimeofday()あたりで。
Windowsであれば、GetTickCount()などで。
ただし、あまり高い精度は期待しないこと。
単純に処理を10000回とかループするような方法が取れるのなら、
そのほうがいいのでは。
0184デフォルトの名無しさん
NGNGマルチタスクのOSで
その方法は無意味。
OSの機能かプロファイラを使うのが正解
0185d
NGNGcharstack[15];/* スタック */
charans[15];/* 出力用変数 */
charwork[15] = "X=(a+b)*(c-d)";
void poland( void )
{
inti, j = 0, n = 0;
for(i = 0; work[i] != '\0'; i++) {
switch ( work[i] ) {
case '=':
if(j == 0) {
stack[j] = work[i];
j++;
}
else {
for(; j != 0; j--) {
ans[n] = stack[j - 1];
n++;
}
stack[j] = work[i];
}
break;
case '(':
stack[j] = work[i];
j++;
break;
0186d
NGNGfor(; stack[j - 1] != '('; j--) {
ans[n] = stack[j - 1];
n++;
}
j--;
break;
0187d
NGNGcase '-':
case '*':
if(stack[j - 1] == 'X' || stack[j - 1] == 'a' || stack[j - 1] == 'b' || stack[j - 1] == 'c' ||
stack[j - 1] == 'd') {
ans[n] = stack[j - 1];
n++;
j--;
stack[j] = work[i];
printf("%c\n\n\n", stack[j]);
}
else {
stack[j] = work[i];
j++;
}
break;
default:
stack[j] = work[i];
j++;
break;
}
}
/* スタックの残り要素を取り出し */
if(j != 0) {
for(; j != 0; j--) {
ans[n] = stack[j - 1];
n++;
}
}
}
0188デフォルトの名無しさん
NGNG#include <stdio.h>
void assign(void);
void expr(void);
void term(void);
void factor(void);
char input[15] = "X=(a+b)*(c-d)";
char input_count = 0;
char get(void) { return input[input_count++]; }
void unget(char c) { input_count--; }
void put(char c) { putchar(c); }
void assign(void)
{
char c;
factor();
c = get();
if (c == '=') {
expr();
put(c);
}
}
0189デフォルトの名無しさん
NGNG{
char c;
term();
c = get();
while (c == '+' || c == '-') {
term();
put(c);
c = get();
}
unget(c);
}
void term(void)
{
char c;
factor();
c = get();
while (c == '*') {
factor();
put(c);
c = get();
}
unget(c);
}
0190デフォルトの名無しさん
NGNG{
char c;
c = get();
if (c == '(') {
expr();
c = get();
if (c != ')') puts("syntax error");
} else if (c == 'X' || c == 'a' || c == 'b' || c == 'c' || c == 'd') {
put(c);
}
}
int main()
{
assign();
return 0;
}
0191デフォルトの名無しさん
NGNGファイルのデータは
748
324
56
37
987
68
のように3桁の数字になってます
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG画像のデータなんで40*30のサイズとして
a[40][30][3](x座標、y座標、RGBの画素)
の配列に格納したいです
0194≠191
NGNG748なら、7 - 4 - 8 と分けて、matrix[7][4][8]=1
とかいうこと?
でもそれなら56とか68はどう解釈するんだろう?
なお、この場合はfgetsしたデータをsscanfで解釈する、という
方法でできます。
0195≠191 && ≠192
NGNGデータファイルの値は何を意味するの?
3桁がそれぞれRGBを意味するの?
0196191
NGNG数字適当に書いたので…
例えば
12
15
244
78
65
21
…
だったら
a[0][0][0]=12
a[0][0][1]=15
a[0][0][2]=244
a[1][0][0]=78
a[1][0][1]=65
a[1][0][2]=21
って感じにするってこと
x座標を(0,0)から(39,0)までいったら次に(0.1)から(39,1)までいって
最後は(39,29)
0197≠191 && ≠192
NGNG#include <stdio.h>
#define IMG_WIDTH 40
#define IMG_HEIGHT 30
#define IMG_COL_FACTOR 3
int main(){
FILE *fp;
char a[IMG_WIDTH][IMG_HEIGHT][IMG_COL_FACTOR];
int x,y,c;
fp=fopen("data.dat","r");
for(y=0;y<IMG_HEIGHT;y++){
for(x=0;x<IMG_WIDTH;x++){
for(c=0;c<IMG_COL_FACTOR;c++){
char temp[1024];
fgets(temp,1024,fp);
sscanf(temp,"%d",&a[x][y][c]);
}
}
}
fclose(fp);
}
0198≠191 && ≠192
NGNGfor(x=0;x<IMG_WIDTH;x++){
printf("(");
for(c=0;c<IMG_COL_FACTOR;c++){
printf("%3d",a[x][y][c]);
}
printf(")");
}
printf("\n");
読み込めたか見るには、これをfcloseの後にでも挿入してください。
0199デフォルトの名無しさん
NGNG30回まわして、それを40回まわせばいいんじゃない?
3次元配列の大きさ変わるの?
0200191
NGNGありがとうございます。試してみます
>199
かわらないです
0201191
NGNG0202デフォルトの名無しさん
NGNGchar a[IMG_WIDTH][IMG_HEIGHT][IMG_COL_FACTOR];
じゃなくて
char ***a;
みたいな定義しとらんか?
0203191
NGNG#include <stdio.h>
#define IMG_WIDTH 40
#define IMG_HEIGHT 30
#define IMG_COL_FACTOR 3
void main(){
FILE *fp;
int a[IMG_WIDTH][IMG_HEIGHT][IMG_COL_FACTOR];
int x,y,c;
fp=fopen("data.dat","r");
for(y=0;y<IMG_HEIGHT;y++){
for(x=0;x<IMG_WIDTH;x++){
for(c=0;c<IMG_COL_FACTOR;c++){
char temp[4];
*fgets(temp,5,fp);
a[x][y][c]=atoi(temp);
}
}
}
fclose(fp);
atoiのほうつかったら動いたようです。。
0204デフォルトの名無しさん
NGNGつまり、
sscanf(temp,"%d",&a[x][y][c]);
じゃなくて
int tmpVal;
sscanf(temp, "%d", &tmpVal);
a[x][y][c] = tmpVal;
0205デフォルトの名無しさん
NGNG>*fgets(temp,5,fp);
って…
0206デフォルトの名無しさん
NGNGにするべきだし、エラーチェックも忘れずに。
0207197.5ぐらい
NGNGあらら?ごめんなさい、gccでは動作を確認したんだけど。
むぅー これじゃ動かないのか……
>>191
あとは、206さんの言う通り
fgetsの2つめの引数は、「何文字読み込むか」ということなので、
sizeofで「何文字まで入るか」を宣言したほうがスマートです。
一応、読み込んだ数値が0未満または256以上だったら「n行目のデータが不正です」とか
表示してやるといいかも。
0208デフォルトの名無しさん
NGNGchar変数の場所をintのポインタとして渡すとint境界を跨ぐ格好になるので
CPUによっては致命的なエラーになりうる。それに、配列の最後を
アクセスするときに領域を飛び出してしまう。
なので、コンパイラを問わずやってはいけない。
0209デフォルトの名無しさん
NGNGお力お貸しください、、
[1] 正の整数nと実数データx[0], x[1],…….,x[n-1]をキーボードより読み込み、
平均より大きい値を出力するCプログラムをつくりなさい。
[2] 実数xと0以上の整数yをキーボードより読み込み、
xのy乗(xの値をy回掛算する)を計算し、結果を出力する
Cプログラムをつくりなさい。
0210デフォルトの名無しさん
NGNG[1]はなにを元に平均を出すの?
[2]
#include <stdio.h>
#include <math.h>
int main()
{
double x;
int y;
scanf("%lf %d",&x,&y); /* 宿題ならscanfで十分 */
printf("%f",pow(x,y));
return 0;
}
0211210
NGNG0212デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i;
double d,sum=0.0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%lf",&d);
sum+=d;
}
printf("%f\n",sum/n);
return 0;
}
0213212
NGNG0214デフォルトの名無しさん
NGNGうわぁありがとうございます。゜°(´Д`)°゜。
単位に関わる宿題だったので本当に困っていました、
ありがとうございました!!
0215デフォルトの名無しさん
NGNG多分>>210>>212じゃ、まじめにやれっていわれるぞ(藁
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGそうだった(藁
書き直す
0218デフォルトの名無しさん
NGNG#include <stdlib.h>
int main()
{
double *x,sum=0.0,ave;
int i,n;
scanf("%d",&n);
if(!(x=malloc(n*sizeof(double)))) return 1;
for(i=0;i<n;i++){
scanf("%lf",x+i);
sum+=x[i];
}
ave=sum/n;
for(i=0;i<n;i++)
if(x[i]>ave)
printf("%f\n",x[i]);
free(x);
return 0;
}
0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNGお手をわずらわせてすみませんです、、( ´Д⊂ヽ
0222名無しさん@Emacs
NGNG[1]
#include <algorithm>
#include <iostream>
#include <vector>
#include <numeric>
#include <functional>
int main()
{
std::vector<double> x;
std::copy(std::istream_iterator<double>(std::cin),std::istream_iterator<double>(), back_inserter(x));
double average = std::accumulate(x.begin(), x.end(), 0.0) / x.size();
std::remove_copy_if(x.begin(), x.end(), std::ostream_iterator<double>(std::cout, "\n"),
std::bind2nd(less_equal<double>(), average));
}
[2]
#include <iostream>
#include <cmath>
int main()
{
double x;
unsigned int y;
std::cin >> x >> y;
std::cout << std::pow(x, y);
}
とかっての出すと[2]はともかく[1]は講師がどう出るか見てみたいな(w
と思ったら「Cプログラム」か…
0223デフォルトの名無しさん
NGNGC++か、まぁ「じゃあこのプログラムの説明して」
っていわれて困窮するのが落ちだな
0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNG0226222
NGNG#include <algorithm>
#include <iostream>
#include <vector>
#include <numeric>
#include <functional>
template <typename T>
class read_stream
{
private:
std::istream& is_;
public:
read_stream(std::istream& is) : is_(is) {}
T operator()()
{
T value;
is_ >> value;
return value;
}
};
int main()
{
unsigned int n;
std::cin >> n;
std::vector<double> x(n);
std::generate(x.begin(), x.end(), read_stream<double>(std::cin));
double average = std::accumulate(x.begin(), x.end(), 0.0) / x.size();
std::remove_copy_if(x.begin(), x.end(), std::ostream_iterator<double>(std::cout, "\n"),
std::bind2nd(std::less_equal<double>(), average));
}
0227222
NGNGせん(ワラ
0228222
NGNG#include <algorithm>
#include <iostream>
#include <vector>
#include <numeric>
#include <functional>
#include <boost/lambda/lambda.hpp>
#include <boost/iterator_adaptors.hpp>
int main()
{
unsigned int n;
std::cin >> n;
std::vector<double> x(n);
std::for_each(x.begin(), x.end(), std::cin >> boost::lambda::_1);
double average = std::accumulate(x.begin(), x.end(), 0.0) / x.size();
std::copy(boost::make_filter_iterator(x.begin(), x.end(), std::bind2nd(std::greater<double>(), average)),
boost::make_filter_iterator(x.end(), x.end(), std::bind2nd(std::greater<double>(), average)),
std::ostream_iterator<double>(std::cout, "\n"));
}
0229デフォルトの名無しさん
NGNG標準入力から読むのは間違いなのだが、移植性の高い方法が
存在しない罠。
0230デフォルトの名無しさん
NGNGそうやって教師にかみつく生意気な生徒は落第させられます。
0231デフォルトの名無しさん
NGNG可愛がられるという罠。
0232デフォルトの名無しさん
NGNG落第はいやん。
。
0233デフォルトの名無しさん
NGNGstruct element{
char data;
struct element *next;
}
void something(struct element *l){
struct element *p,*w;
p=NULL;
while(l->next!=NULL){
w=p;
p=l->next;
l->next=p->next;
p->next=w;
}
l->next=p;
}
0234デフォルトの名無しさん
NGNG単方向リスト
0235デフォルトの名無しさん
NGNGstruct element型へのポインタを受け取り、何も返さない。
0236デフォルトの名無しさん
NGNG実験してみたが、lが指す次のstruct element型のデータがリストの
最後に持って行かれるようですね。
0237デフォルトの名無しさん
NGNG~
2)l->next以降の要素(末尾のNULLを除く)の並び順を逆転させる。
0238デフォルトの名無しさん
NGNGレスありがとうございます。
簡単に(抜けてました)延べよなので
リスト上の要素の順序を逆にする機能
でいいですよね?
>>237
>1)somethihgは「以下に示」されていない
すみません。
明日の再試あるんですが、こんなとこでつまづいてるんで同様してたようです。
0239デフォルトの名無しさん
NGNG不安なら確認しる。Cコンパイラは入れてないの?
0240デフォルトの名無しさん
NGNGっていうか。今どきvector<string>くらいつかえよ。
0241デフォルトの名無しさん
NGNGあのソースはどうみてもCだろ。
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG「もうlistなんか流行らねぇんだよ( ´_ゝ`)プ」
とか来そうだな。
0245デフォルトの名無しさん
NGNGそこでまたぶち切れですよ
あのな、listなんてきょうび流行んねーんだよ
ボケが
0246デフォルトの名無しさん
NGNG#これだからなんとかの一つ覚えは・・・
0247デフォルトの名無しさん
NGNGtotal. Modify the program to calculate and display the total of each row.
0248デフォルトの名無しさん
NGNGquantity and total. each array should be capable to hold ten elements.
using a for loop, input values for the price and amount arrays. The entries
in the total array should be the product of the corresponding values of
the price and quantity arrays. After all the data have been entered, display an output
as a table in the following.
total price quantity
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNGC or C++?
0251デフォルトの名無しさん
NGNG各列の合計を計算し表示するプログラムを修正してください。
価格、量および合計と命名される3つの一次元の配列を指定するプログラムを書きます。
各配列は10の要素を保持するのに有能に違いありません。
使用、1つの、ループ、価格に対する入力価値および量配列のために。
配列の合計中のエントリーは価格と量の配列の対応する値の製品であるべきです。
データがすべて入力された後、下記中のテーブルとして出力を表示してください。
価格量の合計
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG開発環境:C++(VisualC++.NET)です。
#include <stdio.h>
main()
{
printf("Hello!\n");
}
このようなプログラムを作成して実行したところ、一瞬だけウィンドウが表示されるのですがすぐ消えます。
このあとに何を書き込めばとまるんでしょうか???
0255デフォルトの名無しさん
NGNG#include <conio.h>
main()
{
printf("hello world\n");
getch();
}
0256デフォルトの名無しさん
NGNGvoid main(void)
{
printf("Hello!\n");
return ;
}
こっちの方が良くね?
0257デフォルトの名無しさん
NGNGmain()
{
printf("Hello Work");
(void(*(void)))NULL();
}
0258デフォルトの名無しさん
NGNGwhile(!kbhit())
;
0259デフォルトの名無しさん
NGNGvoid main()って言うな。
0260デフォルトの名無しさん
NGNG<被演算数>および<演算数>に対して<演算子>が示す計算を行い画面表示する。
コマンド入力:”cal2 <被演算数> <演算子> <演算数>”
演算数・被演算数 .... 数値を指定。符号、小数点の指定も可能。
演算子 ......... +(加算)、−(減算)、乗算(*)、/(除算)、%(剰余算)
実行例:
>cal2 123 + 45
123 + 45 = 168
>cal2 1234.56 % 78
1234.56 % 78 = 64.56
プログラムソース:
<<cal2.c>>
0001: #include <stdio.h>
0002: #include <stdlib.h>
0003: #include <string.h>
0004: #include <math.h>
0005: /*****************************************************************************/
0006: int main (int argc , /* IN : Arguments Count */
0007: char *argv[] ) /* IN : Arguments Contents */
0008: {
0009: int ret = (-1) ;
0010: const static
0011: char *command_help =
0012: "Command usage:\n"
0013: "\"<cmd> <Operated Digits> <Operator> <Operating Degits>\"\n"
0014: " <Operator> .... acceptable oerator are, +, -, *, /, %.\n" ;
0015: double ope1 ; /*** <被演算数> ***/
0016: double ope2 ; /*** <演算数> ***/
0017: double ans ; /*** <計算結果> ***/
0018: char *chp ;
0019:
0261デフォルトの名無しさん
NGNG0021: puts(command_help) ;
0022:
0023: else if ( argc < 4 )
0024: puts("Argument Error: not enough arguments.\n") ;
0025:
0026:
0027:
0028: else if ( argc > 4 )
0029: puts("Argument Error: too many arguments.\n") ;
0030:
0031: else if ( ( ope1 = strtod(argv[1],&chp) ) == HUGE_VAL || *chp != '\0' )
0032: puts("Argument Error: <Operated Digit> error.\n") ;
0033:
0034: else if (
0035: /******************************************
0036: ** 許容される演算子か否かをチェック? **
0037: ******************************************/ )
0038: puts("Argument Error: <Operator> error.\n") ;
0039:
0262デフォルトの名無しさん
NGNG0041: **** <演算数>の変換・チェック ****
0042: ***********************************/ )
0043: puts("Argument Error: <Operating Digit> error.\n") ;
0044:
0045: else if ( /***************************************
0046: **** <演算数>のチェック−ゼロ除算 ****
0047: ***************************************/ )
0048: puts("Argument Error: Zero-Divide occur.\n") ;
0049:
0050: else{
0051: /****************************************************
0052: ** 計算処理を行い、変数ansへ格納。 **
0053: ** 剰余算は、標準関数=fmodを用いる **
0054: ****************************************************/
0055:
0056: printf("%.9g %s %.9g = %.9g\n",ope1,argv[2],ope2,ans) ;
0057: ret = 0 ;
0058: }
0059:
0060: return ret ;
0061: }
0263デフォルトの名無しさん
NGNGvoid main()厨 うるさい
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG/* エラー処理 */
}
0266デフォルトの名無しさん
NGNGまずはどこに穴があるのかを教えてください。
なお、予想されるくだらないネタレスは遠慮願います。
0267266
NGNGわかりにくい書き方だな。
0268デフォルトの名無しさん
NGNG/* エラー処理 */
}
0269264
NGNG<演算数>のチェック−ゼロ除算、計算処理を行い、変数ansへ格納。
剰余算は、標準関数=fmodを用いる、の4箇所です。誰かお願いします。
0270デフォルトの名無しさん
NGNGcase '+':
ans = ope1 + ope2;
break;
case '-':
ans = ope1 - ope2;
break;
/* 割愛 */
default:
/* 有り得ない */
ans = 0;
break;
}
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNGdefaultいらねーだろ。
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNG0275264
NGNG助かりました。
0276222
NGNG// マルチはやめませう。
#include <vector>
#include <iostream>
#include <algorithm>
#include <numeric>
int main()
{
std::vector<double> values;
// "all values stored" はとりあえず標準入力から入力しとけば良し?
std::copy(std::istream_iterator<double>(std::cin), std::istream_iterator<double>(), std::back_inserter(values));
std::cout << std::accumulate(values.begin(), values.end(), 0.0) << std::endl;
}
// "each row" ってなんじゃらほい?
0277222
NGNG#include <vector>
#include <algorithm>
#include <iomanip>
template <typename T>
class calc_total
{
std::vector<T>& price_, &quantity_;
unsigned int id_;
public:
calc_total(std::vector<T>& price, std::vector<T>& quantity) : price_(price), quantity_(quantity), id_(0) {}
T operator()()
{ T ret = price_[id_]*quantity_[id_]; ++id_; return ret; }
};
int main()
{
std::vector<double> price(10), quantity(10), total(10);
// "using for loop" じゃぁ仕方あるめぇ…でもstd::algorithmなら内部的には(ry
for(int i=0;i<10;++i) std::cin >> price[i] >> quantity[i];
std::generate(total.begin(), total.end(), calc_total<double>(price, quantity));
std:: cout << "total price quantity\n";
std::cout << std::setiosflags(std::ios::left);
for(int i=0;i<10;++i) // ここはさすがに素直にforかな。フォーマットはこれでいいんかいのぅ。
std::cout << std::setw(9) << total[i] << std::setw(8) << price[i] << quantity[i] << "\n";
}
0278!=259
NGNGスレ違いでスマソが
void main()ってなにか問題あるの?
0279デフォルトの名無しさん
NGNG標準C/C++にはそんなものはない。だけ。
0280デフォルトの名無しさん
NGNG深刻なほうから順に、
コンパイルすらできないことがある。
実行できないことがある。
正しく実行できないことがある。
くさかべーにいじめられる。
0281デフォルトの名無しさん
NGNG0282247
NGNG0283デフォルトの名無しさん
NGNG本自体は、役に立ったけれど。
0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNG信者が煽っているだけ。
0286デフォルトの名無しさん
NGNGこしたことはないけど。
0288デフォルトの名無しさん
NGNGってことでは?
0289デフォルトの名無しさん
NGNGくさかべーにいじめられるのが一番深刻ということか。
それはそれで、面白い話ではある。
くさかべーについては、『ということにしたいのですね』で2典をひくと、
少しわかる。
0290デフォルトの名無しさん
NGNG確かに、
>コンパイルすらできないことがある。
その時点でわかるから深刻ではない。
>実行できないことがある。
実行してみれば判るからそれほど深刻ではない。
>正しく実行できないことがある。
これもテストの段階でわかるから余り深刻ではない。
>くさかべーにいじめられる。
これはいじめられるかどうかわからないだけに深刻だね。
0291デフォルトの名無しさん
NGNGということにしたいのですね。
馬鹿な記事が増えて迷惑です。
等と言われて、ハァハァできそうでつ・・・
0292デフォルトの名無しさん
NGNG配列arrのデータに従って、前回までのデータを含めた今回の平均値を計算する
arr[0] : 前回までのデータの総数。arr[2]を加算して平均値を計算する
arr[1] : 前回までのデータの総和。arr[3]以降を加算して平均値を計算する
arr[2] : 今回のデータの数。0のときarr[0]arr[1]をクリアする
arr[3]〜 : 今回のデータ
どなたかかお願いします。
0293デフォルトの名無しさん
NGNG0クリアはmemsetで。
0294デフォルトの名無しさん
NGNGarr[0] += arr[i];
arr[1]++;
}
0295デフォルトの名無しさん
NGNGif (arr[2]==0) { arr[0] = 0; arr[1] = 0; }
else arr[0] += arr[2];
for (i=3; i < arr[2]+3; i++) arr[1] += arr[i];
0296デフォルトの名無しさん
NGNG{
int ic;
if (arr[2] == 0) {
arr[0] = 0;
arr[1] = 0;
return 0;
}
for (ic = 3; ic < 3 + arr[2]; ic++) {
arr[1] += arr[ic];
}
arr[0] += arr[2];
return arr[1] / (double) arr[0];
}
0297293
NGNG0298デフォルトの名無しさん
NGNG{
if (arr[2] == 0) {
arr[0] = 0;
arr[1] = 0;
return 0;
}
arr[0] += arr[2];
for (;arr[2]--;) {
arr[1] += arr[arr[2]];
}
return arr[1] / (double) arr[0];
}
0299デフォルトの名無しさん
NGNG平均値を計算しているのは>>296だけか。
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNG↑
どうやったら表示できますか?
0302デフォルトの名無しさん
NGNGputchar('%');
printf("%%");
0303デフォルトの名無しさん
NGNGさんくす
0304デフォルトの名無しさん
NGNG一斉に驚きの声と女生徒の「かわいーっ」という声が混ざった歓声が上がる。
「メルメルメ〜vvv」
「お、おいっゴン!?」
しぇりりんに抱きつき、顔をペロペロしようと思いっきり飛び掛ったウマゴンであったが、相手は幻影。すなわち単なる映像である。
どんなに精巧に映し出されていても実体が無いのだから、彼が彼女たちをすり抜けて床にダイビングしてしまったのも仕方の無いことだった。
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNGナイスたて読み。
0307デフォルトの名無しさん
NGNGどう読むの?
0308デフォルトの名無しさん
NGNGス
一
「
「
し
ど
0309デフォルトの名無しさん
NGNGかば
0310デフォルトの名無しさん
NGNG釣りなのだろうか、俺が馬鹿なのだろうか…
0311デフォルトの名無しさん
NGNG「どしおメース」でぐぐってみろ
0312デフォルトの名無しさん
NGNG次に表示させる範囲を入力させて均等な隙間を空けて表示します。
例えばABC 5ならA B C、A 3なら A 、ABCDEF 8なら ABCDEF 。
均等に隙間を与えられない場合は真ん中に寄せます。
ABC 4ならABC。のように余裕のない場合は隙間を消して
表示させたいのですがどうしたらよいでしょうか。
0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNGアルゴリズムからご教示願います。
0315デフォルトの名無しさん
NGNG方針としてはこんなところか。
1. 文字間の空白の大きさを求める→ (表示範囲-文字数)/(文字数-1)
2. 空白を含めた文字数が決まるので、1文字目の開始位置が決まる
3. 表示。
0316デフォルトの名無しさん
NGNG大きな流れは解りました。
ABC 7は(7-3)/(3-1)=2だからA B Cと。
ABC 6ならば(6-3)/(3-1)≒1でA B Cということですね。
ABCD 6で(6-4)/(4-1)=2/3で1に満たないけれど両端に空白を
置く場合はどうしたらいいのでしょうか。 ABCD のように。
それと2の部分のもう少し細かい説明をお願いします。
0317312
NGNG間違えてsageてました。
0318デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
void test(int n, char *s) {
int size = strlen(s);
int sp_size = (n - size) / (size - 1);
int side_sp = sp_size * (size - 1) + size < n-1;
printf("%d:", n);
if (n < strlen(s)) { puts("$"); return; }
if (side_sp) putchar(' ');
for (; *(s+1); s++) {
int i;
putchar(*s);
for (i = 0; i < sp_size; i++) putchar(' ');
}
putchar(*s);
if (side_sp) putchar(' ');
puts("$");
}
void main() {
int i;
char s[] = "ABCDF";
for (i = 0; i < 12; i++)
test(i, s);
}
0319デフォルトの名無しさん
NGNG1:$
2:$
3:$
4:$
5:ABCDF$
6:ABCDF$
7: ABCDF $
8: ABCDF $
9:A B C D F$
10:A B C D F$
11: A B C D F $
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
void test(int n, char *s) {
int size = strlen(s);
int sp_size = size <= 1 ? 0 : (n - size) / (size - 1);
int side_sp = (n - sp_size * (size - 1) - size) / 2;
int i;
printf("%d:", n);
if (n < size) { puts("$"); return; }
for (i = 0; i < side_sp; i++) putchar(' ');
for (; *(s+1); s++) {
putchar(*s);
for (i = 0; i < sp_size; i++) putchar(' ');
}
putchar(*s);
for (i = 0; i < side_sp; i++) putchar(' ');
puts("$");
}
int main(int argc, char *argv[]) {
int i;
char s[] = "ABCDEF";
for (i = 0; i < 12; i++)
test(i, s);
return 0;
}
0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG黙れ。
0324デフォルトの名無しさん
NGNGchar const *const *argv
argvイジる気もなければ
char const *const *const argv
0325デフォルトの名無しさん
NGNGはっきり言ってウザい。
0326デフォルトの名無しさん
NGNGchar *strcpy(char *, const char *);
とかの意味わかった上で、そう言っているのか?
0327デフォルトの名無しさん
NGNGchar s[] = "" ;
char s[] = "A" ;
のときはどうなってしまうんですか。
0328デフォルトの名無しさん
NGNGキャストするくらいなら最初からchar *にしろYO!
0329デフォルトの名無しさん
NGNG? どういうこと? 意味がよく・・・
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGchar *strchr(const char *s,int c)
{
for(;*s;s++)
if(*s==(char)c)
return (char *)s; /* ここ */
if(!c)
return (char *)s; /* ここ */
return NULL;
}
0332デフォルトの名無しさん
NGNGハァ?
0333デフォルトの名無しさん
NGNGあーなるほど
これは引数のconstを外すか戻り値にconstを付けないとだめだよね
でもこれって関数を作る側の意見だよね?
使う側ではあまり関係ないような気がする
0335334
NGNG0336デフォルトの名無しさん
NGNGウゼー
0338デフォルトの名無しさん
NGNGバカ。char*だとconst char*を渡した時にエラーになるんだよ。
それにconst がついてるとコメントを書かなくても入力専用である事が利用者に伝わる。
0339デフォルトの名無しさん
NGNG0340330
NGNGさっきはすまんかった。おまえが感じた違和感はまともだし、
キャストを使ったこのコードには>>333や>>335みたいなのんきなことを
言っていられない危険がある。だが、引数のconstをはずすと今度は、
書き込み不可の文字列をstrchrするのにキャストが必要になる。
これも困る。
本当は、入出力ともconstのstrchrと、入出力ともそうでないstrchrが
作れればいい。C++では作れる。
ウゼーとか言うなよ。
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNGラインエディタを作成しなさい(メモリの動的確保、双方向リストを用いること)
必要な機能として
・ファイルの読み込み
・表示
・行の入れ替え
・行の削除
・行の挿入
・ファイルへの保存
0345デフォルトの名無しさん
NGNG誰かチャレンジゴー
0346デフォルトの名無しさん
NGNGC++でいいなら簡単にできるけど?
0347デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <string.h>
struct line { char *str; struct line *prev, *next; } *start = NULL, *p;
char filename[1000];
void print(struct line *p, FILE *fp) { if (p) fprintf(fp, "%s", p->str); }
struct line *nline(int n) { for (p = start; --n && p; p = p->next) ; return p;}
int num(const char *s) { int n; sscanf(s, "%d", &n); return n; }
void del(const char *s) {
p = nline(num(s));
if (!p) return;
if (!p->prev && !p->next) start = NULL;
if (p->prev) p->prev->next = p->next;
if (p->next) p->next->prev = p->prev;
free(p->str); free(p);
}
void change(const char *s) {
int i, j; char *t; struct line *q;
sscanf(s, "%d %d", &i, &j);
p = nline(i); q = nline(j);
if (!p || !q) return;
t = p->str; p->str = q->str; q->str = t;
}
0348デフォルトの名無しさん
NGNGvoid delall(void) {
struct line *q;
for (p = start; p; p = q) { q = p->next; free(p->str); free(p); }
start = NULL;
}
void read(void) {
char buf[1000];
FILE *fp = fopen(filename, "r");
if (!fp) return;
delall();
for (; fgets(buf, sizeof buf, fp); p = p->next) {
struct line *q = malloc(sizeof(struct line));
if (!start) start = p = q;
q->str = malloc(strlen(buf)+1);
strcpy(q->str, buf);
q->prev = start == p ? NULL : p; p->next = q; q->next = NULL;
}
fclose(fp);
}
void write(void) {
FILE *fp = fopen(filename, "w");
if (!fp) return;
for (p = start; p; p = p->next) print(p, fp);
fclose(fp);
}
0349デフォルトの名無しさん
NGNGchar buf[1000];
struct line *q = nline(num(s));
if (!q) return;
printf("* ");
fgets(buf, sizeof buf, stdin);
p = malloc(sizeof(struct line));
p->str = malloc(strlen(buf)+1);
strcpy(p->str, buf);
p->prev = q->prev; p->next = q; q->prev = p;
if (p->prev) p->prev->next = p;
}
int main(int argc, char *argv[]) {
char buf[1000];
for (;;) {
printf("? ");
fgets(buf, sizeof buf, stdin);
switch (*buf) {
case 'r': sscanf(buf+1, "%s", filename); read(); break;
case 'v': print(nline(num(buf+1)), stdout);; break;
case 'c': change(buf+1); break;
case 'd': del(buf+1); break;
case 'i': insert(buf+1); break;
case 'w': write(); break;
case 'q': return 0;
}
}
}
0350デフォルトの名無しさん
NGNG上のだと双方向リストにする意味ないし。
書き直すわ。
0352デフォルトの名無しさん
NGNG> ラインエディタとは違うかも。
> 上のだと双方向リストにする意味ないし。
> 書き直すわ。
0353デフォルトの名無しさん
NGNG0354アナルファッカ
NGNG0355デフォルトの名無しさん
NGNG名前
sin - 正弦(サイン)関数
書式
#include <math.h>
double sin(double x);
説明
sin() 関数は x の正弦(サイン)の値を返す。ここで、 x はラ
ジアン単位で与えられる。
返り値
sin() 関数は -1 と 1 の間の値を返す。
準拠
SVID 3, POSIX, BSD 4.3, ISO 9899
関連項目
acos(3), asin(3), atan(3), atan2(3), cos(3), tan(3)
June 8, 1993 1
0356デフォルトの名無しさん
NGNG0357アナルファッカ
NGNG0358アナルファッカ
NGNG0359デフォルトの名無しさん
NGNGなら
360 : 2π = deg : rad
360 * rad = 2π * deg
rad = π * deg / 180
0360デフォルトの名無しさん
NGNGあなたも七行の人ですが何か?
0361デフォルトの名無しさん
NGNG(sin x)' = cos x, (cos x)' = -sin xになるから
マクローリン展開で求められます。
sin 0 = 0, cos 0 = 1.
sin x = 0 + x + 0*x^2/2! - x^3/3! - 0*x^4/4! + x^5/5! .....
0362デフォルトの名無しさん
NGNG高校に戻って数学やり直せ。ここで一から説明しているスペースも時間もない。
0363アナルファッカ
NGNG中学数学だろブァカ
お前には将来が無い
0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNGいや、ラジアンは高校数学だろ!!
0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNG0368デフォルトの名無しさん
NGNGさすがにラジアンまでは先取りしないだろ!!
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNG戦前ですか?
0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNGあと、いつ学ぶかは工業高校は大学の初歩程度まで一気にやるし
(数学できないと電気電子なんか授業にならないからな)
進学校は3年分を2年間でやったりと参考にならんぞ
ちなみに漏れはラジアンやSIN、COSは高校一年で習った
0375デフォルトの名無しさん
NGNGsin、cos(度数):中学
sin、cos(ラジアン):高校文系
sin、cosの微分:高校理系
マクローリン展開、テイラー展開:大学初歩
マクローリン展開とかテイラー展開とかとsin、ラジアンで検索すれば
詳しく解説してるページあると思うけど。
>>361は符号が違いますよ。
sin x = 0 + x - 0*x^2/2! - x^3/3! + 0*x^4/4! + x^5/5! .....
で、Cで書くとこんな感じ。
double sin(double x) {
double s = 0, a = x; int n = 2;
do {
s += a;
a *= -1 * x * x / n / (n + 1);
n += 2;
} while (n < 20);
return s;
}
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNG10年前の話だそうだが
漏れは中学でsin,cos使ってた
プログラムやる奴はそんなもんだろ
理解してるかどうかは別として
0378デフォルトの名無しさん
NGNGんなこと言うと小学生でも三角関数知ってる奴とかもいるので問題外。
ここで言ってるのは教育機関でいつ習うかってことだろ。
0379デフォルトの名無しさん
NGNG普通科でも高校一年でやるけど・・・
0380デフォルトの名無しさん
NGNGそれに対してクラスは、そのメンバとして変数と共に�@も含めたものである。クラスのメンバ
として�@を特に�Aと呼ぶ、構造体と同様にプログラム上でクラスを扱うためにはクラスの定義
だけでなく、クラスの実体を宣言する必要があり、この実体を�Bと呼ぶ。クラスのメンバは
外部から直接呼び出すことができる�Cメンバと�Aの中でしか呼び出すことができない�Dメンバとに
分かれる。一般に、データメンバは�Eとして�Aは�Fとしておくのがよいとされる。
�Aの中でも特別なものとして�Gと�Hがある。�Gは�Bを作成するとき呼び出すもので
主にデータメンバの初期化を行う。またその関数名�Iと決まっている。�Hは�Bを削除するときに
自動的に呼び出され、データの解放などを行うのに使われる。またその関数名は�Jと決まっている。
0381デフォルトの名無しさん
NGNG1 関数
2 メソッド
3 インスタンス
4 パブリック
5 プライベート
6 private
7 public
8 コンストラクタ
9 デストラクタ
10 はクラス名と同じものだ
11 クラス名の先頭に~をつけたものだ
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNGこんな穴埋め問題じゃあまり役には立ちそうにないね。
0384デフォルトの名無しさん
NGNG「変数だから」とか「関数だから」という理由で公開・非公開を決めるんじゃなくて、目的に応じて決めるべきだ。
0385デフォルトの名無しさん
NGNG--語句--
コンストラクタ デストラクタ オブジェクト 手続き 関数 変数 配列
ポインタ private public virtual ~クラス名 関数名 関数の型 メンバ関数
メンバ変数 仮想関数
って…遅かった…
0386381
NGNG0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNG分かってるくせに。
0392デフォルトの名無しさん
NGNGこのフライトシムのソースコードが出てますよ。
直リンは怖い!って人は
http://www.simhq.com/simhq3/sims/downloads/
からMIG ALLEYをクリック。
0394デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <string.h>
struct line { char *str; struct line *prev, *next; } *start, *p, *pa;
char filename[1000];
void print(struct line *p, FILE *fp) { if (p) fprintf(fp, "%s", p->str); }
void change(const char *s) {
int n; sscanf(s, "%d", &n);
for (p = start; --n && p; p = p->next) ;
if (pa && p) { char *t = pa->str; pa->str = p->str; p->str = t; }
}
void connect(struct line *p, struct line *q) {
if (p) p->next = q; else start = q;
if (q) q->prev = p;
}
void del(void) {
if (!pa) return;
connect(pa->prev, pa->next);
p = pa->next ? pa->next : pa->prev ? pa->prev : start;
free(pa->str); free(pa);
pa = p;
}
void delall(void) {
for (p = start; p;) { struct line *q = p->next; free(p->str); free(p); p = q; }
start = NULL;
}
0395デフォルトの名無しさん
NGNGstruct line *p2 = malloc(sizeof(struct line));
if (!p2) return;
p2->str = malloc(strlen(s)+1);
if (!p2->str) return;
strcpy(p2->str, s);
connect(p1, p2); connect(p2, p3);
}
void read(void) {
char buf[1000];
FILE *fp = fopen(filename, "r");
if (!fp) return;
delall();
for (p = NULL; fgets(buf, sizeof buf, fp); p = p ? p->next : start)
makeline(p, buf, NULL);
fclose(fp);
pa = start;
}
void write(void) {
FILE *fp = fopen(filename, "w");
if (!fp) return;
for (p = start; p; p = p->next) print(p, fp);
fclose(fp);
}
0396デフォルトの名無しさん
NGNGchar buf[1000];
printf("* ");
fgets(buf, sizeof buf, stdin);
makeline(pa ? pa->prev : NULL, buf, pa);
}
int main(int argc, char *argv[]) {
char buf[1000];
start = pa = NULL;
for (;;) {
print(pa, stdout);
printf("? ");
fgets(buf, sizeof buf, stdin);
switch (*buf) {
case 'r': sscanf(buf+1, "%s", filename); read(); break;
case 'v': print(pa, stdout); break;
case 'n': if (pa && pa->next) pa = pa->next; break;
case 'p': if (pa && pa->prev) pa = pa->prev; break;
case 'c': change(buf+1); break;
case 'd': del(); break;
case 'i': insert(); break;
case 'w': write(); break;
case 'q': return 0;
}
}
}
0397344
NGNG理解できるように勉強してきます!
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNG入力として文字列一つを受け取り、その部分文字列すべてを短い順に出力する
プログラムをC言語を用いて作れ。文字列は引数で与え、プログラムからは
main(int argc, char *argv[])関数の引数argv[1]として利用せよ。
整数変数をmain関数の行数だけ用意して、完成したプログラムのすべての箇所で
実行時の通過回数を数えるカウンタとして使い、計算が終わったあとに最も
通過回数の多かった箇所の回数と、文字列の長さを印字するようにせよ。
例:入力がabcdeだったときの出力は
文字列の長さは5
a
b
c
d
e
ab
bc
cd
de
abc
bcd
cde
abcd
bcde
abcde
(通過回数はわからなかったので省略しました)
0400デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
int checkstr(int len, char *argv, char *str)
{
int i;
if(len > (int)strlen(argv)) return 0;
str[0] = argv[0];
for(i=1;i<len;i++) {
if(argv[i-1] < argv[i]) str[i] = argv[i];
else return 0;
}
return 1;
}
0401デフォルトの名無しさん
NGNG{
int i,j,count,len;
char str[256];
count=strlen(argv[1]);
for(i=0,len=1;i<count;i++,len++) {
memset(str, 0, sizeof(str));
for(j=0;j<count;j++) {
if(checkstr(len, &argv[1][j], str))
printf("%s\n", str);
}
}
return 0;
}
0402デフォルトの名無しさん
NGNG?あーよくわからん・・・
0403デフォルトの名無しさん
NGNG本当にコレでいいかは知らない。
int printlinecount(int *lines, int size)
{
int maxvalue = 0;
for(int i=0;i<15;i++)
maxvalue = maxvalue > lines[i] ? maxvalue : lines[i];
printf("%d回", maxvalue);
}
int main(int argc, char *argv[])
{
int i,j,count,len,line[15]={0}; line[0]++;
line[1]++; char str[256]; line[1]++;
line[2]++;
line[3]++; count=strlen(argv[1]);
line[4]++; printf("文字列の長さは%d", count);
line[5]++; for(i=0,len=1;i<count;i++,len++) {
line[6]++; memset(str, 0, sizeof(str));
line[7]++;
line[8]++; for(j=0;j<count;j++) {
line[9]++; if(checkstr(len, &argv[1][j], str))
line[10]++; printf("%s\n", str);
line[11]++; }
line[12]++; }
line[13]++;
line[14]++; printlinecount(line, 15); return 0;
}
0404デフォルトの名無しさん
NGNG-line[10]++; printf("%s\n", str);
+line[9]++; if(checkstr(len, &argv[1][j], str)) {
+line[10]++; printf("%s\n", str); }
0405399
NGNGmain関数の行数分の整数変数は、文字列の長さと最大通過回数の関係から
最悪時間計算量を見積もるためのものかと思ったんですが、無知な私が考えたことなので
違っているかもしれません(;´Д`)
C言語だけでなくアルゴリズムのほうも勉強し直してきます。
それから、レスが遅くなってしまい申し訳ありませんでした。
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG#include <string.h>
int main(int argc, char *argv[]) {
int count = strlen(argv[1]);
int n; char *s, *t;
for (n = 0; n < count; n++)
for (s = argv[1]; *(s+n); s++) {
for (t = s; t < s+n+1; t++)
putchar(*t);
putchar('\n');
}
return 0;
}
0408デフォルトの名無しさん
NGNG0409デフォルトの名無しさん
NGNG「2ch をやめて、まっとうな生活に戻れ。」
これが、お前の宿題だ。
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGしてねーじゃん。(藁
0412デフォルトの名無しさん
NGNGこれ使って何か具体的なプログラムを書け。
int (*(*(*array(int, int (*)[4]))[3])[2])(int, int (*)[4]);
0413デフォルトの名無しさん
NGNGそういうのは読めれば十分だ。
それを実際に使う力を身につけさせるような事はむしろすべきじゃない。
0414デフォルトの名無しさん
NGNG禿同。読める必要はあるけど、書ける必要はない。
素直に、typedef 使え。
0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNGarray(int , int(*)[4]) ってなに?関数じゃないでしょ?
array()(int, int(*)[4]) もわけわからない(;;)
解説お願いしますー
0417デフォルトの名無しさん
NGNGtypedef int int4array[4];
typedef int4array *pint4array;
int array1(int , pint4array);
// array()(int, int(*)[4])
typedef int int4array[4];
typedef int4array *pint4array;
typedef int (*func_of_return)(int , pint4array);
func_of_return array2(void);
0418デフォルトの名無しさん
NGNGint (*(*array(int i))[2])(int);
int func(int i)
{
return i;
}
int (*(*array(int i))[2])(int)
{
static int (*ptr[2])(int) = {func, func};
printf("parameter = %d\n", i);
return &ptr;
}
int main(void)
{
printf("array() = %d, %d\n", (*(*array(0))[0])(123), (*(*array(1))[1])(456));
return 0;
}
0419デフォルトの名無しさん
NGNGやるなよw
0421デフォルトの名無しさん
NGNGint (*(*(*array(int i, int (*x)[4]))[3])[2])(int, int (*)[4]){
return (int (*(*(*)[3])[2])(int, int (*)[4]))0;
}
main(){
int x[3][4] ;
array(0,x);
}
0422デフォルトの名無しさん
NGNGarray is function with parameter(int, int(*)[4]) returning pointer to array[3] of pointer to array[2] of pointer to int
arrayは(int, int(*)[4])をパラメータに取り、intへの大きさ2のポインタ配列の大きさ3の
ポインタ配列を返す、と読めます。
ポインタ配列のポインタ配列を返す具体的なプログラムか。初めてだなこんなの。
0423デフォルトの名無しさん
NGNGポインタ配列を返す関数、 だったスマソ。
0424デフォルトの名無しさん
NGNGcout<<i**i;
これが18を出力するようなoperatorを定義してください。
0425デフォルトの名無しさん
NGNGpublic:
Int(int i) {};
int operator *() { return 0; }
int operator *(int i) { return 18; }
};
0426デフォルトの名無しさん
NGNG漏れも 425 のような答えしか思いつかない・・・。
0427デフォルトの名無しさん
NGNGこのスレが寂しそうなのでこっそりあほな問題だしてみた
425正解
f(o^_^o)(o^_^o)(o^_^o)(o^_^o);
これをコンパイルが通るように適当に何かを定義してください。コメントアウトは不可で。
0428デフォルトの名無しさん
NGNGべき乗じゃないのかよ。
真面目に考えてソース書いた瞬間ネタだと分かった・・・。
0429デフォルトの名無しさん
NGNGfunctype1 f2(int i) { printf("f2(%d)\n", i); return f3; }
functype2 f1(int i) { printf("f1(%d)\n", i); return f2; }
functype3 f(int i) { printf("f(%d)\n", i); return f1; }
int main()
{
int o = 1, _ = 2;
f(o^_^o)(o^_^o)(o^_^o)(o^_^o);
return 0;
}
0430デフォルトの名無しさん
NGNGべき乗でもどうやるか想像つかない漏れは逝ってヨシですか?
てなわけでうpきぼんぬ
0431428
NGNG俺にわざわざ恥を晒せと?
まぁいいや。gcc 3.2で確認した。
#include <iostream>
struct Int {
struct Tag { int num; Tag (int i) : num(i) {} };
int num; Int (int i) : num(i) {}
Tag operator* () { return Tag(num); }
Int operator* (Tag t) {
int ret = 1;
for (int i = 0; i < t.num; ++i) { ret = ret * num; }
return Int(ret);
}
};
std::ostream& operator<< (std::ostream& o, Int i) { return o << i.num; }
int main () { Int i = 3; std::cout << i**i << std::endl; }
0432デフォルトの名無しさん
NGNG早いですねー
ちなみに別回答です
struct foo
{ foo &operator()(int) { return *this; } };
int o,_; foo f;
f(o^_^o)(o^_^o)(o^_^o)(o^_^o);
3[o . o]/~bye;
これをコンパイルが通るように適当に何かを定義してください。コメントアウトは不可で。
ちなみにこれはさよならをしている耳のついたロボットです。AA初挑戦
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNGint main()
{
struct { char *o; } o = { "12345" };
int bye = 1;
3[o . o]/~bye;
return 0;
}
0435デフォルトの名無しさん
NGNGint main()
{
struct { char *o; } o = { "12345" };
int bye = 1, ans =
3[o . o]/~bye;
printf("%d\n", ans)%3
0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNG正解! こんなくだらないことに付き合ってくれてありがとう!
もう終わりにします。
A_____A
< 3 , 3 >
( o ) < "ありがとー";
0438デフォルトの名無しさん
NGNGtemplate <int a, int b> char *A_____A(int c){return 0;}
int main(void)
{
int o=
A_____A
< 3 , 3 >
( o ) < "ありがとー";
printf("o=%d\n", o);
return 0;
}
0439デフォルトの名無しさん
NGNG正解!!
0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG汎用GUIライブラリを作成しなさい。
0448デフォルトの名無しさん
NGNG浣腸の最大効果が得られる挿入角度、深度を計算する
専用BENPIライブラリを作成しなさい。
0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNGhttp://www.lab2.kuis.kyoto-u.ac.jp/~yanagis/acmicpc/past/index.html
0451デフォルトの名無しさん
NGNGreverse(s) の再帰版を書けっていう
k&r の演習なんですけどお願いします
0452..
NGNG●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
直通 090−8505−3086
URL http://www.h5.dion.ne.jp/~grobal/
メール [email protected]
グローバル探偵事務局
0453デフォルトの名無しさん
NGNGこんなのはどうだ。
char *reverse(char *str)
{
char *p;
char c1, c2;
if (strlen(str) < 2) return str;
p = str + strlen(str) - 1;
c1 = *str, c2 = *p;
*p = '\0';
reverse(str + 1);
*p = c1;
*(p + 1) = '\0';
*str = c2;
return str;
}
0454デフォルトの名無しさん
NGNG(・∀・)イイ!!
で質問なんですが
*(p + 1) = '\0';
この一行って必要なんでしょうか?
0455デフォルトの名無しさん
NGNGそう言われてみれば不要かも。急いで作ったので削っておいてくれ。
0456デフォルトの名無しさん
NGNG更に、*str は再帰したルーチンでは触らないので c1 へ退避は不要。
char *reverse(char *str)
{
char *p;
char c2;
if (strlen(str) < 2) return str;
p = str + strlen(str) - 1;
c2 = *p;
*p = '\0';
reverse(str + 1);
*p = *str;
*str = c2;
return str;
}
0457デフォルトの名無しさん
NGNGなるほどいただきます。
0458デフォルトの名無しさん
NGNG遊びにはいいけど、実用にはならない・・。
// 文字列 src を逆転して dst に複写します
char *reverse_recursive( char *dst, char *src) {
char c = *src;
if( c ) {
*(dst = reverse_recursive( dst, src+1)) = c;
return ++dst;
}
return dst;
}
char *reverse( char *s) {
if( s ) reverse_recursive( s, s);
return s;
}
0459デフォルトの名無しさん
NGNGchar *t = s;
for (; *t; t++) ;
for (t--; s < t; s++, t--) {
char c = *s;
*s = *t;
*t = c;
}
}
0460459
NGNG0461459
NGNGchar c = *s;
if (!c) return;
reverse(s+1);
for (; *(s+1); s++)
*s = *(s+1);
*s = c;
}
0462デフォルトの名無しさん
NGNG俺も最初はそれを考えたが、文字列全体をシフトするので著しく
効率が悪くなりそうでやめた。
0463デフォルトの名無しさん
NGNGchar *t = s + strlen(s);
if (s+2 > t) return;
*t = *s;
*s = *(t-1);
*(t-1) = '\0';
reverse(s+1);
*(t-1) = *t;
*t = '\0';
}
0464デフォルトの名無しさん
NGNGchar s[1];
s[0] = '\0';
reverse(s);
ってやった時に破綻する可能性があるぞ。
0465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNG単なる typo なのか、本当のアフォなのか判断に迷うレスすんなよ。(藁
0467デフォルトの名無しさん
NGNGchar *t = s + strlen(s) - 1;
if (s+2 > t) return;
if (s+4 > t) {
char c = *s;
*s = *t;
*t = c;
return;
}
*(t+1) = *t;
*t = '\0';
reverse(s+1);
*t = *s;
*s = *++t;
*t = '\0';
}
0468デフォルトの名無しさん
NGNGprintf("printf("in the file \"%s\".\n",);\n");
というように表示したいのですがどうすればいいのでしょうか
厨な質問ですいません
0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGそう書いたファイルを読みとって表示。
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNGfputs( STR(printf("printf("in the file \"%s\".\n",);\n");), stdout );
...みにくい
0475宿題アリコ
NGNGデスケド,誰も任されてくれないので、俺に任せろと思っちゃった
人はぜひ任されちゃってください・・
ピンチなんで助けてくれるとかなりうれしーです、お願いします。
http://pc2.2ch.net/test/read.cgi/tech/1047538922/
0476デフォルトの名無しさん
NGNGこのスレに書いたということはCとかC++とかで解けってこと?
0477デフォルトの名無しさん
NGNG0478宿題アリコ
NGNGやっぱりすれ違いなのですね・・・逝ってきます・・
>>477エレベータの問題です。宿題アリコのは全部それ関係です。
もしよろしかったら、助けてくださいな。
0479にやこう ◆Es3JBt9s5c
NGNG0480デフォルトの名無しさん
NGNGCで。
0481デフォルトの名無しさん
NGNGchar (p*)[3] = MATRIX_ALLOC(char, 5, 3);
...
free(p);
0482デフォルトの名無しさん
NGNG{
char ch;
if( 1 >= len )
return;
len--;
ch = *pt;
*pt = *(pt+len);
*(pt+len) = ch;
pt++;
len--;
reverse( pt, len );
}
strlenが何度も呼ばれるのが気に入らない版
引数が増えて鬱だったらマクロでもかませ
0483デフォルトの名無しさん
NGNGvoid reverse(char *pt, char *last) {
char ch;
if (pt <= last) return;
ch = *pt;
*pt = *last;
*last = ch;
reverse(++pt, --last);
0484デフォルトの名無しさん
NGNG再帰が適するのは、それによって記述が簡単になる場合だよな?
void reverse(char *p)
{
char *t = p;
if(!*t) return;
while(*++t);
t--;
while(p < t)
{
char c = *p;
*p++ = *t;
*t-- = c;
}
}
0485デフォルトの名無しさん
NGNGそのマクロだと列のサイズが固定じゃないと使えないと思うんだけど。
0486デフォルトの名無しさん
NGNG配列だからいいんじゃないの?
0487デフォルトの名無しさん
NGNG暇ならやってみてください。
Compilable Ascii Artです。(適当に命名)
A_____A
[(o) (o)]
()
()
()
()()()()() = 3;
これをコンパイルが通るように適当に何かを定義してください。コメントアウトは不可で。
0488デフォルトの名無しさん
NGNGclass X
{
public:
X operator=(int i) {}
X operator[](int i) { return *this; }
X operator()() { return *this; }
};
class Y;
class Y
{
public:
int operator()(Y) { return 0; }
};
Y o;
X A_____A[1];
0489デフォルトの名無しさん
NGNGinclude<stdio.h>
main()
{
int n,i,t=0;
int a[50];
a[0]=1;
n=かける回数;
scanf("%d",&n)
for(i=0;i<50;i++){
for(t=0;t<50;t++){
a[t]=a[t]*2;
}
for(t=0;t<50;t++){
while(a[t]>9999){
a[t]=a[t]-10000;
a[t+1]++;
}
}
}
if(a[49]>0) printf("%d 単位49",a[49]);
・
・
・
if(a[2]>0) printf("%d 億",a[2]);
if(a[1]>0) printf("%d 万",a[1]);
if(a[0]>0) printf("%d ",a[0]);
}
でいいんですかね、なんか無駄が多い気がするんですがこれ以外思いつかなくて
というか一気に2^nを計算するとオーバーフローするので困ってこんなのになりました
0490デフォルトの名無しさん
NGNGint main(int argc, char *argv[]) {
int n, i;
int a[50];
for (i = 0; i < 50; i++)
a[i] = 0;
a[0] = 1;
scanf("%d", &n);
for (; n > 0; n--) {
for (i = 0; i < 50; i++)
a[i] *= 2;
for (i = 0; i < 49; i++)
while (a[i] > 9999) {
a[i] -= 10000;
a[i+1]++;
}
}
for (i = 49; i >= 0; i--)
printf("%d 単位%d ", a[i], i);
return 0;
}
0491デフォルトの名無しさん
NGNG計算方法自体は結構まとも。
ただし、実用化するなら、実装は関数にした方がいい。
データも、生の int の配列よりも、struct や typedef で名前付けし、実装は隠蔽
した方がいい。
それにより、固定長だけではなく、malloc() を駆使して可変長も実装できる。
C++ であれば class にするべき。
出力ロジックが冗長なのは、桁名を配列にすれば解決する。
void PrintNumber(int Num[], int size)
{
const char * const ColNames[] = { "", "万", "億", "兆", "京", "垓", "穰", "溝", "澗", "正", "載", "極", "恒河沙", "阿僧祇", "那由他", "不可思議", "無量大数" };
const int NumOfColNames = sizeof(ColNames) / sizeof(const char *);
char *s = "";
int i;
for(i = size - 1; i > 0; i--)
if(Num[i]) break;
if(i < 0)
{ puts("0"); return; }
for(; i >= NumOfColNames; i--)
if(Num[i]) { printf("%s%d単位%d", s, Num[i], i); s = " "; }
for(; i >= 0; i--)
if(Num[i]) { printf("%s%d%s", s, Num[i], ColNames[i]); s = " "; }
putchar('\n');
}
0492デフォルトの名無しさん
NGNG> { puts("0"); return; }
これ要らなかった。
0493デフォルトの名無しさん
NGNG> if(Num[i]) break;
これも要らなかった。
代わりに、
> for(; i >= NumOfColNames; i--)
ではなく
for(i = size - 1; i >= NumOfColNames; i--)
0494デフォルトの名無しさん
NGNGこれがおかしい。
0495デフォルトの名無しさん
NGNGおれっちの流儀では、垓の次に「じょ(漢字が表せないもの)」を入れるのだが、
それに対応するようにフラグをいれてほしいなぁ。
0496489
NGNG0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNGDOSでいうコンソールというものがよく分かりません。
コンソールとは一体何でしょうか?
ストリームの標準入力とどう違うのでしょうか?
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNGストリームは入出力デバイスを規定しない。
コンソールは入出力にディスプレイとキーボードが規定される。
0502デフォルトの名無しさん
NGNGインタフェースの種類は関係ない。
0503デフォルトの名無しさん
NGNGインタフェースの種類は関係ない。
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNG0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG初心者には再帰が難しくて。
typedef struct CELL *LIST;
struct CELL {
int element;
LIST next;
};
上のリストのセルがelementとして整数1500を
含んでいるなら1を返し
含んでいないなら0を返す
LIST型の引数をもつ再帰的関数を教えてください。
どうかお願いします
0510デフォルトの名無しさん
NGNG{
if( !p ) return 0;
if( p->element == 1500 ) return 1;
return is1500( p->next);
}
0511デフォルトの名無しさん
NGNGマルチ氏ね
0512デフォルトの名無しさん
NGNG2つのファイルを読み込み、同じ要素のところの比を求めます。
その結果を新たなファイルに出力させるプログラムをつくりなさい
とのことでした。
0513「とのことでした」って(w
NGNGO 。
, ─ヽ
________ /,/\ヾ\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|__|__|__|_ __((´∀`\ )< というお話だったのさ
|_|__|__|__ /ノへゝ/''' )ヽ \_________
||__| | | \´-`) / 丿/
|_|_| 从.从从 | \__ ̄ ̄⊂|丿/
|__|| 从人人从. | /\__/::::::|||
|_|_|///ヽヾ\ / ::::::::::::ゝ/||
────────(~〜ヽ::::::::::::|/ = 完 =
0514デフォルトの名無しさん
NGNGマルチ氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね
0515デフォルトの名無しさん
NGNG【問題】
5桁の整数を入力し、それを各桁ごとに分解し、
間に3個ずつ空白をあけてプリントするプログラムを書け。
たとえば、ユーザが 42339 とタイプしたら、次のようにプリントする。
出力: 4___2___3___3___9 (_はスペース)
【ここまで】
これはピアソンから出てる『C言語プログラミング(H.M.ダイテル著)』の
第2章30問目の練習問題なのですが、これは第2章までの技法で可能なのでしょうか?
もしこの本を持ってる方がいたら教えてください。(;´д`)
0516デフォルトの名無しさん
NGNGprintf("%d", n % i);
}
0517デフォルトの名無しさん
NGNG{
return p ? p->element == 1500 ? 1 : has1500(p->next) : 0;
}
0518きふぉ
NGNG市ね死ね紙ね氏ね言うな!
0519デフォルトの名無しさん
NGNG氏ねと言われたくなかったら言われるようなこと書くなよ( ´,_ゝ`)
0520509
NGNGすいませんでした。
以後気をつけます。
0521デフォルトの名無しさん
NGNGそれだと逆にならないか?
それにスペース(ry
0522デフォルトの名無しさん
NGNG2339 339 39 9
と言う風に表示されないか?
(わかりやすくなるようにスペース入れた)
0523デフォルトの名無しさん
NGNGそうだな、もう一つ変数が欲しい。
0524デフォルトの名無しさん
NGNG/ (i / 10) を付ければよいのでは?
0525デフォルトの名無しさん
NGNGかな
0526525
NGNG0527デフォルトの名無しさん
NGNG%10とか要らない気がするけど、、
0528デフォルトの名無しさん
NGNG寝よっw
0529遅レスだが...
NGNGchar *Reverse(char *s){
char *t=s,tmp;
static char *s0=NULL;
if(s0==NULL)
s0=s;
if(*t==0)
return s0;
while(*t)
t++;
t--;
tmp=*s;
*s=*t;
*t=0;
if(*(s+1))
s0=Reverse(s+1);
*t=tmp;
return s0;
}
単に非効率なだけなので実際には使わないで!
0530529
NGNG0531デフォルトの名無しさん
NGNGあと一度しかつかえない。
0532デフォルトの名無しさん
NGNG1/100秒まで表示させないといけないのですが、
time関数を使ってやると1/100秒まで表示させることが出来ません。
1/100秒まで表示する方法(関数)を教えてください。
0533デフォルトの名無しさん
NGNGWin32ならtimeGetTime()。
0534デフォルトの名無しさん
NGNGどうすればよいでしょうか?
例えば、パケットを100Kbpsで送信し続けたい場合などです。
誰か教えてください。
0535532
NGNGお返事ありがとうございました。
#include<stdio.h>
#include<time.h>
#include<windows.h>
#include<mmsystem.h>
#include<conio.h>
#define CLS printf("\x1b[2J")
void main(void)
{
double t1,t2,t3=0;
t1 = timeGetTime();
while(!kbhit()){
t2 = timeGetTime();
if (t3 != (t2-t1)){
t3=t2-t1;
CLS;
printf("%f",t3);
}
}
}
と作ってVC++6.0でコンパイルしてみました。
しかし、
time.obj : error LNK2001: 外部シンボル "__imp__timeGetTime@0" は未解決です
Debug/time.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
と2つのエラーが出てしまいました。
timeGetTimeの使い方自体が間違っているのでしょうか?
0536デフォルトの名無しさん
NGNGインポートライブラリ、という言葉を知っているか?
0537デフォルトの名無しさん
NGNG??1文字の時も正しく動くぞ。あと一回しか使えないというのは回避は簡単
/*文字列反転関数(再帰版)*/
char *Reverse(char *s){
char *t=s,tmp,first=0;
static char *s0=NULL;
if(s0==NULL){
s0=s;
first=1;
}
if(*t==0)
return s0;
while(*t)
t++;
t--;
tmp=*s;
*s=*t;
*t=0;
if(*(s+1))
s0=Reverse(s+1);
*t=tmp;
t=s0;
if(first)
s0=NULL;
return t;
}
0539デフォルトの名無しさん
NGNGつーかtimeGetTime()の返り値をdoubleに代入している当たりも
激しく気になる。
0540デフォルトの名無しさん
NGNGwinmm.lib をリンクライブラリに含めろ。
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG自分自身に宿題を出せばどんな問題もありえる
0544デフォルトの名無しさん
NGNGプロセスはsleep状態になりますが、
これにタイムアウトを設けることはできるでしょうか?
例えば、とりあえず文字が入力されるまで待ち続けるんだけど、
ある程度時間が経っても、文字が入力されなかったら待つのをやめて、
次の処理へ移行するといったことはできるのでしょうか?
0545デフォルトの名無しさん
NGNG微妙なマルチやめれ。
0546デフォルトの名無しさん
NGNG> C言語のgetcharやscanfは何らかの文字が入力されるまで
> プロセスはsleep状態になりますが、
ここから間違い。処理系によってはそうなるとは限らない。
> これにタイムアウトを設けることはできるでしょうか?
できない。
> 例えば、とりあえず文字が入力されるまで待ち続けるんだけど、
> ある程度時間が経っても、文字が入力されなかったら待つのをやめて、
> 次の処理へ移行するといったことはできるのでしょうか?
処理系によるから、処理系を書かないと誰も答えられない。
0547デフォルトの名無しさん
NGNG0548532
NGNG協力してくださった方々どうもありがとうございます。
0549デフォルトの名無しさん
NGNGご褒美は何?
0550544
NGNG私はここだけにしか書き込んでませんよ。
>>546
スリープ状態になるとは限らなかったんですか、知りませんでした。
できるだけ汎用性のあるプログラムを書きたいので
処理系によるなどの制限があるのならば
この方法は取りやめることにします。
0551デフォルトの名無しさん
NGNG「スリープ」状態を誤解している気がする。
いずれにしても、先行入力の問題など考慮しないといけない。
ユーザフレンドリに作ろうとしたら、汎用性は犠牲にしないとね。
0552デフォルトの名無しさん
NGNGstruct CELL {
int element;
LIST next;
};
これを用いて
整数のリストを引数とする
再帰的な選択ソートのプログラムを教えてくれませんか?
C言語なら俺に開け! Part 〈54〉で間違って書き込んでしまったので
改めてこちらで。
0553デフォルトの名無しさん
NGNG再帰的アルゴリズムを教えてください
0554デフォルトの名無しさん
NGNG私の質問のレスが来てから答えます。
10進数を2進数に直す
再帰的アルゴリズムを教えてください
0555デフォルトの名無しさん
NGNG私の質問のレスが来てから答えます。
10進数を2進数に直す
再帰的アルゴリズムを教えてください
0556デフォルトの名無しさん
NGNG私の質問のレスが来てから答えます。
10進数を3進数に直す
再帰的アルゴリズムを教えてください
0557デフォルトの名無しさん
NGNG>>553
void print(int n) {
if (n == 0) return;
print(n >> 1);
putchar(n & 1 ? '1' : '0');
}
>>556
void print(int n) {
if (n == 0) return;
print(n / 3);
putchar('0' + n % 3);
}
0558デフォルトの名無しさん
NGNG//>>555-556お洒落が解らない>>557は無視する
>>558
数が0だったら0をレス、そうでない場合は私の質問のレスが来てから
答えます。
10進数を2進数に直す再帰的アルゴリズム教えて下さい。(数/2)
偶数だったら0,奇数だったら1をレスする。
0559デフォルトの名無しさん
NGNG君さぁ、どうでもいいけど
全角数字やめろよ。
それと、文章が理論的に展開してないんだよ。
そんなんでプログラム書けるのか?
0560デフォルトの名無しさん
NGNGなんだそりゃ?
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG私の質問のレスが来てから答えます。
10進数を3進数に直す
再帰的アルゴリズムを教えてください
0563デフォルトの名無しさん
NGNGrand(255) > 253 && $NT_START==1) || (rand(255) > 253 && $NT_START==2) ||
(rand(255) > 253 && $NT_START==2) || (rand(500) == 1 &&
$NT_START==3);}else{$PL_VALUES[12]="$VS_VALUES[12]" if ($FORM{'mode'} !=1 &&
rand(255) > 200 && $NT_END==1) || (rand(255) > 253 && $NT_END==2) ||
(rand(255) > 253 && $NT_END==2) || (rand(500) == 1 && $N
あるオンラインゲームのものです。
私は全く機械語(?)がわかりません。
「もし、PLの値が12だったら、びっくりして6・・・???」
↑頭のなか↑って感じです。
どういうことを言っているのか簡単で良いので、
解読してくれませんか?
0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGヲイ。ここを何のスレだかわかってるんだろうな?
機械語?ふざけんな。
本当にわからないなら来るな。
釣りでやってんならよそへいけ。
0566563
NGNGよそへいきます。
0567デフォルトの名無しさん
NGNGいったいどんなゲームだよ。
それは、C++じゃなくてCだ。
でも、くだ質あたりに行け。
0568デフォルトの名無しさん
NGNG>いったいどんなゲームだよ。
>それは、C++じゃなくてCだ。
突込み所満載だな。
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNGPerlで書かれた自動マクロツールがあるとか
0571デフォルトの名無しさん
NGNG見覚えあるなぁ、そのコード。
0572デフォルトの名無しさん
NGNGお前のかっ!
>>563
お前抜いたのかっ!?
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGカレンダー作成
入力はfgets関数、月入力時にRが入力されたら西暦入力に戻る
西暦・月入力時、Eが入力されたらプログラムを終了する
カレンダーを出力中に
Aが入力されたら西暦の入力処理に戻る
Bが入力されたら翌月を表示する
Cが入力されたら前月を表示する
0575デフォルトの名無しさん
NGNGプログラムのあらすじはわかるのか?
わからないなら、まずはフローチャートでも書いて考えろ。
0576デフォルトの名無しさん
NGNGあらすじは、理解しているつもりです。
それをプログラムにするのが難しく悩んでいます。
カレンダーを表示するだけで精一杯です。
0577デフォルトの名無しさん
NGNGもちろん、お約束としてエラーチェックはないよ。
とりあえずフローはこんなもんかな。
PrintCalendar(int, int); は自分で考えてね。
static char GetNumber(const char Prompt[], int *Number){
char Buffer[...];
printf("%s: ", Prompt); fgets(Buffer, sizeof Buffer, stdin);
if(Number != 0){ *Number = atoi(Buffer); }
return Buffer[0];
}
int Year, Month, Command;
while(GetNumber("西暦", &Year) != 'E'){
if(GetNumber("月", &Month) == 'R'){ continue; }
do {
PrintCanlendar(Year, Month);
Command = GetNumber("Command", 0);
switch(Command){
case 'A': break;
case 'B':
Month++;
if(12 < Month){ Year++; Month = 1; }
break;
case 'C':
Month--;
if(Month < 1){ Year--; Month = 12; }
break;
default: printf("??\n");
}
} while(Command != 'A');
}
0578デフォルトの名無しさん
NGNGありがとうございます。
書いてくださったプログラムを参考にし、改めて自分で考え直してみます。
0579デフォルトの名無しさん
NGNGなんか、綺麗なプログラムですね。
質問者じゃないけど、とても勉強になりました。
引数の渡しかたとか、関数の感じとかお手本になります。
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNG> なんか、綺麗なプログラムですね。
ありがと。
VB みたいに途中脱出 (Do 〜 Exit Do 〜 Loop) の構文があれば、関数は定義する必要ないんだけど、C/C++ だとこれがまずまず綺麗に書ける方法だと思う。
(無理矢理、カンマ演算子を使うと言う手もあるが、あまり美しくないし。
>>580
ごめんね。C++ のつもりで書いてるのと、俺 NULL より 0 派だから。
0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG音声波形を画面上に表示するプログラムを作れという宿題が出たのですが
全然わからなくて途方にくれております。
教えてください。よろしくお願いします。
また参考になるページなど知っている方はそのアドレスも教えていただけると
ありがたいです。
言語はC++でお願いします。
0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNG教授がC++でつくれと・・・
ゴールデンウイーク明けまでに作らないといけないので
自分でも勉強をはじめているのですが・・・
0587デフォルトの名無しさん
NGNGどういう入力と出力なのか書かないと誰もできないと思うよ。
0588デフォルトの名無しさん
NGNGえーとwaveファイルの音声波形を表示するみたいなんですけど
オシロスコープのようなもんを作れとのことです。
これで質問に答えられているか不安ですが
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNGWinampでいいんじゃねーか?
プログラムの事をなにもわからない状態から、
目的のものを作るのは、かなり困難だと思うぞ。
俺は、音声ファイルとかよくわからんが、
要するに、wavファイルからの入力をフーリエ級数展開してやって
その結果を使って画面にグラフを書くんかいな。
とすると、wavファイルのサンプリングレートとか、
Windowsでやるのか、Linuxでやるのかとか、
コンパイラは何を使うのかとか、そういう情報がまず必要だろう。
0591デフォルトの名無しさん
NGNG作れといっても作りようが無い。
その教授ちゃんと教えてるんかいな。
0592デフォルトの名無しさん
NGNG授業で何やってるか知らないから答えても無駄になりそう。
0593デフォルトの名無しさん
NGNGやっぱり答えになっていませんか・・・。
0594山崎渉
NGNG0595hage
NGNG数が二つしかない計算のプログラムでしたら書けたのですが「1+2-3*4?5」のような連続した文字列を打ち、「=」でリターンで計算するのが作れません。
atoi関数を使って作るようにいわれたのですが、もう何がなにやら…
誰か教えてください(涙
下がいま自分で書いてたソースなんですが、関数の中身の考え方作り方がさっぱりなんです。
もしかしたら根本的に何もできてないかもしれないんですが…どなたか助けてください
#include <stdio.h>
#include <string.h>
int atoi(char *str);
void main(){
char str[256];
int num;
printf("数式を入力(「=」まで入力後にリターンキーを押す)>>>>");
scanf(str);
num = atoi(str);
printf("%d\n", num);
}
int atoi(char *str){
int n,s=0;
for(n=s,str="=",s++){
if(str[n]!="+" && str[n]!="-" && str[n]!="*" && str[n]!="/"){
atoi(char *str)
}
else if(){}
else
}
}
0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNG標準入力から文字列を読みたいならfgetsでも使っとけ。
0598デフォルトの名無しさん
NGNGそれと、四則演算使うなら、一度、逆ポーランド電卓に変換したほうが簡単そう。
0599hage
NGNGあ、そこはgetsで最初書いたんですけど、scanfで書くようにいわれたんで、scanf("%d",&str);
って言う風になおしたです。
>>598
いえ一桁だけではないです…
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGstrはchar *かcharの配列か?アドレス演算子(&)はつけるなよ。
0603デフォルトの名無しさん
NGNGとりあえず、ひとの作ったやつを参考にしてみるとか...。
内容見てないけど、
ttp://members.tripod.co.jp/hishoh/arc/funcalc.html
等、ソース公開してる人がいるよ。
0604デフォルトの名無しさん
NGNG一応マジレスしとくが、Perlで書かれた有名な(?)CGIゲームのコード。
>>563は大人しくWebProg板にでも行ってくれ。
0605hage 1/2
NGNGどなたかご教授いただけますでしょうか。
#include <stdio.h>
#include <string.h>
int keisan(char* buffer);
void main(){
char buffer[256];
int a=0;
printf("数式を入力(「=」まで入力後にリターンキーを押す)>>>>");
scanf("%s",buffer);
printf("\nbuffer= %s", buffer);
a=keisan(buffer);
printf("\n答え= %s", a);
}
0606hage 2/2
NGNGint n=0;
int a=0;
int w=0;
int m=strlen(buffer);
char ez;
for(n=0;n<m;n++){
if(buffer[n]=='+'){
ez=buffer[n];
if(n=1){
a=a+w;}else{
if(ez=='+'){
a=a+w;}
else if(ez=='-'){
a=a-w;}
else if(ez=='*'){
a=a*w;}
else if(ez=='/'){
a=a/w;}
}w=0;}
else if(buffer[n]=='='){
break;}
else {
w=buffer[n]-48;}
}
return a;}
改行大杉ではじかれた…一寸改行減らしました
0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNGもし少しでも動くと期待したんだったら、甘すぎるから(一旦)諦めろ。
計算云々前に、数値と記号をきちんと分離するプログラムを書くところから始めたらどうだ?
0609デフォルトの名無しさん
NGNG数式を前から順番に読みに行くと、
乗算の優先順位と、加算の優先順位が守られなくなるよ。
前の方で誰か書いてたが、一度、逆ポーランド記法に変換するとかしたほうがいいかな。
というか、if elseをswitchでまとめたほうがいいぞ。
0610デフォルトの名無しさん
NGNGひとつ考え方を示す。(模範的なものではない。)
計算式はどんな場合でも2つの部分に分けることができる。
ex) a*b/(c+d)-e*f
→ [a*b/(c+d)] - [e*f]
このとき二つの部分を結んでいるのはもっとも優先順位の低い演算子(この場合は-)
である。ここでkeisan関数が完成したと仮定する。これを$keisanと呼ぶ。
するとkeisan関数は、
1.もっとも優先順位の低い演算子を見つけ、これをopとする;
2.$keisan(左被演算子) と$keisan(右被演算子)に対して、opを実行する。
3.結果を返す。
と書くことができる。ここで$keisanをkeisanで置き換えて見る。すると
keisanは渡された式を2つに分けて、それぞれを別のkeisanに渡す。
渡されたほうのkeisanもその式を2つにわけて・・・ということが起こる。これは
永遠に終わらないので、
0.if(渡された式が単一の数字) その数字をintに変換して返す。
を付け加えればよい。これで枠組みは完成である。
あとはどのようにこれらを実現するか考えればよい。
0611hage
NGNG確かにたぶん皆さんのおっしゃるとおりなんでしょうねぇ…
最初に書くのを忘れてたんですけども、四則演算の順番は打ち込んだとおりでよくって、昨日までに習った所+あと自習で完成させろという課題でしたんで…
御目汚しなモノ張ってすいませんでした…
一応さっき張ったのをいじって何とか一桁四則演算はでるようになったです。
0612デフォルトの名無しさん
NGNGttp://www1.kcn.ne.jp/~robe/pf/index.html のbisonとflexのあたり参照
再帰についてはこの辺がいいかも↓
ttp://www.geocities.co.jp/SiliconValley-Oakland/1680/index.html
構文解析とトークンの切り出しは分けた方がいいと思う
整数だけでも
1 +1 -1 1.0 12,345,678 1.4*10^5
少数とか入れたらさらにあるし、まあ変なもの除けばいいかもしれないけど
ついでに関係ない文字が来ることも考慮しないといけないし
0613デフォルトの名無しさん
NGNGそれは邪道か。
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNGあんまり綺麗に書けなかったんだが、これはどうでしょうか?
あとはこのスレッドのみなさんで、うまく修正してください。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *pbuffer;
int Get_kazu(void)
{
char kazu[256];
for (;*pbuffer == ' '||*pbuffer=='+'||*pbuffer=='-'||*pbuffer=='*'||*pbuffer=='/'; pbuffer++);
sscanf(pbuffer, "%[0-9]", kazu);
pbuffer += strlen(kazu);
return atoi(kazu);
}
0616デフォルトの名無しさん
NGNG{
char buffer[256];
int num = 0, answer;
printf("Input :");fgets(buffer, 256, stdin);pbuffer = buffer;
answer = Get_kazu();
while (*pbuffer != '=') {
switch(*pbuffer) {
case '+':
num = Get_kazu();answer += num;break;
case '-':
num = Get_kazu();answer -= num;break;
case '*':
num = Get_kazu();answer *= num;break;
case '/':
num = Get_kazu();answer /= num;break;
default: // 数字や空白ならpbufferを進める
break;
}
pbuffer++;
}
printf("Answer = %d\n", answer);
return 0;
}
0617デフォルトの名無しさん
NGNG1.0 2.0 3.0 | 4.0
2.0 5.0 7.0 | 10.0
-1.0 2.0 -4.0 | 5.0
として実際に解いてみてください.
Gauss Jordan法を使って。
0618電卓ならこうでしょ。
NGNG#include <iostream>
#include <stack>
#include <functional>
#include <string>
using namespace std;
using namespace boost::spirit;
struct push_int {
push_int(stack<long>& eval_) : eval(eval_) {}
void operator()(char const* str, char const* /*end*/) const {
long n = strtol(str, 0, 10);
eval.push(n);
cout << "push\t" << long(n) << endl;
}
stack<long>& eval;
};
0619電卓ならこうでしょ。
NGNGdo_op(op const& the_op, stack<long>& eval_) : m_op(the_op), eval(eval_) {}
void operator()(char const*, char const*) const {
long rhs = eval.top();
eval.pop();
long lhs = eval.top();
eval.pop();
eval.push(m_op(lhs, rhs));
}
op m_op;
stack<long>& eval;
};
template <class op> do_op<op> make_op(op const& the_op, stack<long>& eval) {
return do_op<op>(the_op, eval);
}
struct do_negate {
do_negate(stack<long>& eval_) : eval(eval_) {}
void operator()(char const*, char const*) const {
long lhs = eval.top();
eval.pop();
eval.push(-lhs);
}
stack<long>& eval;
};
0620電卓ならこうでしょ。
NGNGcalculator(stack<long>& eval_) : eval(eval_) {}
template <typename ScannerT> struct definition {
definition(calculator const& self) {
integer = lexeme_d[ (+digit_p)[push_int(self.eval)] ] ;
factor = integer | '(' >> expression >> ')' | ('-' >> factor)[do_negate(self.eval)] | ('+' >> factor) ;
term = factor >> *( ('*' >> factor)[make_op(multiplies<long>(), self.eval)] | ('/' >> factor)[make_op(divides<long>(), self.eval)]) ;
expression = term >> *( ('+' >> term)[make_op(plus<long>(), self.eval)] | ('-' >> term)[make_op(minus<long>(), self.eval)]) ;
}
rule<ScannerT> expression, term, factor, integer;
rule<ScannerT> const&
start() const { return expression; }
};
stack<long>& eval;
};
0621電卓ならこうでしょ。
NGNG{
stack<long> eval;
calculator calc(eval); // Our parser
string str;
while (getline(cin, str)) {
if (str[0] == 'q' || str[0] == 'Q') break;
parse_info<> info = parse(str.c_str(), calc, space_p);
if (!info.full)
{
cout << "Parsing failed\nstopped at: \": " << info.stop << "\"\n";
}
}
return 0;
}
0622デフォルトの名無しさん
NGNGここまで見にくいソースは初めてだ。
C++ってこんなのが普通なの?
0623デフォルトの名無しさん
NGNGboost::spirit が変態なだけ
わかりにくさ即ち美学と思っているグルの領域だからな…
0625618
NGNG#include <iostream>
#include <ixlib_matrix_impl.hh>
int main()
{
double u[] = {
1.0, 2.0, 3.0, 4,0,
2.0, 5.0, 7.0, 10.0,
-1.0, 2.0, -4.0, 5.0
};
ixion::matrix<double> A(3, 4, u);
ixion::matrix<double> jordan = A.gaussJordan();
jordan.outMatrix(std::cout);
std::cout << "x = " << jordan(0,3)/jordan(0,0) << "\n";
std::cout << "y = " << jordan(1,3)/jordan(1,1) << "\n";
std::cout << "z = " << jordan(2,3)/jordan(2,2) << "\n";
}
0626デフォルトの名無しさん
NGNG5-7*33-8なら→5-231-8→-226-8→-234 見たいにやっていきます。
1、エラーチェック。式に変な文字が入っていないか、順番はおかしくないか、
僕が作ったのは括弧も入ってたので()は同じ数か等。
2、計算する場所を探す。2項ずつ計算していく。計算する場所の左端、演算子、右端
を探す。上の式なら- * 3(一の位)。注意するのは左の項が-の時とそうでない時の区別。
もし上の式が5+7*33-8なら探す位置は7 * 3(一の位)になる。
3、探したものを利用して計算する。上の式は文字列として入力しているが、計算は数値として行う。
4、計算した部分を文字列から削る。上の式なら削ったことによって5-8となる。
5、3で計算した数値を文字列に変換して埋め込む。埋め込む位置は前に探した左端の位置。
6、2〜5を計算する所がなくなるまで繰り返す。
0627デフォルトの名無しさん
NGNGそれとも、同時に行えから、同時に行うのがいいの?
0628デフォルトの名無しさん
NGNG1〜5 ぐらいの理解力で...
> 昔エクセルを作ろうとした
のか ?
少なくとも、>>612 が書いてるリンク先ぐらいには目を通しておいた方が良いぞ。
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNG0631626
NGNG途中では入れてなかったと思います。でもどちらでもいいでしょう。
>>628 はい。勉強します。
>>629 ネタではないですよ。グラフやマクロなんかできませんが。B1+C3みたいなのや
行の潜入、削除など初歩的な表計算のみですが。コンソール+エスケープシーケンス
でへぼいやつです。エラーが解消できなくて途中で止めましたが。
>>Enzan.exe http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=62
0632デフォルトの名無しさん
NGNG自分は変数の使えるものを作っていたことがあって、
>>610のような方法しか思いつかなかったので。
でもどうせUPするならソースを見たかった…
0633626
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=63
0634デフォルトの名無しさん
NGNGわざわざどうもです。ちょっと読んでみます。
0635デフォルトの名無しさん
NGNG2--1 = 3 まではいいとして、
2---1 = 1
2----1 = 3 と計算するのか...
0636山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0637山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0638617
NGNG0640617
NGNGあなたのやつは全然参考にならなかったので
0641デフォルトの名無しさん
NGNGこの場合、参考にできない 617 が悪い。
0642617
NGNGごめんなさい。習いたてなので理解ができなかったんです。
説明してくだされば嬉しいのですが・・
0643デフォルトの名無しさん
NGNG無礼さの限界値ってのがあるわけよ。
0645640
NGNGしょーがねぇからマジレス。「一応」C++。
#include <cstdio>
int main()
{
double a[3][4];
double b;
int i,j,k;
a[0][0] = 1.0; a[0][1] = 2.0; a[0][2] = 3.0; a[0][3] = 4.0;
a[1][0] = 2.0; a[1][1] = 5.0; a[1][2] = 7.0; a[1][3] = 10.0;
a[2][0] = -1.0; a[2][1] = 2.0; a[2][2] = -4.0; a[2][3] = 5.0;
for(k=0;k<3;k++) {
b = a[k][k];
for(j=0;j<4;j++) a[k][j] /= b;
for(i=0;i<3;i++){
if(i==k) continue;
b = -a[i][k];
for(j=0;j<4;j++) a[i][j] += (b*a[k][j]);
}
}
for(i=0;i<3;i++) printf("x[%d]=%lf\n",i,a[i][3]);
}
0646デフォルトの名無しさん
NGNGこれはネタとかそういう問題でもないだろ 悪質
0648デフォルトの名無しさん
NGNGどっちかっつーと>>640=>>617の口の効き方の方が個人的にはよっぽど気に食わないんだが。
まぁロクに答えてない俺が言うのもなんだがな。
0649デフォルトの名無しさん
NGNG0650
NGNG正しい括弧付けかどうかをテストするプログラムを教えてください…
0651
NGNG正しい括弧付けかどうかをテストするプログラムを教えてください…
>正規表現かどうかを調べるプログラムです
0652デフォルトの名無しさん
NGNGマルチにつきスルーよろ。(つーか、なに聞きたいかちんぷんかんぷんだしね。)
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNGによれば、
正しい括弧付け:
解析木に含まれる括弧付けのうち、
コーパスに付加された構文構造の
全ての括弧付けと交差しないもの
とあるが、、、
ちなみに、
http://www.google.com/search?hl=ja&lr=lang_ja&q=Q0.1%2cE0.8%2cE0.4 だと
http://tcslab.csce.kyushu-u.ac.jp/~hiroyuki/automaton/automaton1.html
がでてくるなぁ。
何なんだろう、一体?
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNGが出ていたようなのですが、あれって32bitですよね?
カラーデータが4byteだったし・・・。
あと、24bitのビットマップをbinary editerで見てみると
なぜか変なところに規則的に00が1、2個並んでるような・・・。
どなたか、C++ もしくはCのみでビットマップファイルの読み込み、
DOS画面に表示する方法を教えていただけないでしょうか?
自分でもググっても見たのですがコピペしてもものすごい量の
エラーが出るし・・・。
できればできる限りの種類のビットマップファイルを読み込めるよう
にしたいのですが・・・。
//長文 && 教えて君 && クレクレ君 && 自称初心者で申し訳なく・・・
0658sage
NGNG突っ込み所満載でどこから手をつけていいやら。
取り敢えず何がしたいのか、何をやってみたのか、具体的に書いてみ?
尤も、ここは教えるスレじゃなくて宿題を楽しむスレだから教えてはやらないが。
0659デフォルトの名無しさん
NGNG0660レレレ
NGNG0661デフォルトの名無しさん
NGNG自首しなさい。
0662デフォルトの名無しさん
NGNG全角に変換するプログラムを作成せよ。
↑がわかんない^^;
とうほうCはじめて1週間
0663デフォルトの名無しさん
NGNG↑の補足で、(while)を用いてです
0664デフォルトの名無しさん
NGNGガシャ(AA略
0665デフォルトの名無しさん
NGNGキーボード入力をそのまま表示するのは出来るのか?
全角に変換するのがわからないのか?
何がわからないんだ?
0666bloom
NGNG0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNGvoid ascii2jis(char *pDest, char const *pSrc)
{
while (*pSrc != '\0') {
*pDest++ = '#';
*pDest++ = *pSrc++;
}
}
0672Cん入生
NGNG数字を読み込み、カンマ編集して出力する。
例) 入力:1000000 出力:1,000,000
注) メイン処理のみで製作すること
という課題をもらったんですけど、だれかたすけてください。
ポインタとかまだ習ってないです…
0673デフォルトの名無しさん
NGNG#include <string.h>
int main()
{
char buf[256], out[290];
int i, ip=0, op = 0;
fgets( buf, 256, stdin );
i = strpbrk(buf,"\n.") - buf;
for( ; i>0; i-- ){
if( ( i % 3 ) == 0 )
out[op++] = ',';
out[op++] = buf[ip++];
}
out[op] = 0;
printf("%s\n", out );
return 0;
}
0675デフォルトの名無しさん
NGNGそれじゃ数字じゃなくても出力するやんw
0676デフォルトの名無しさん
NGNGじゃ、i=strchr(buf,'\n') -buf;でいいよ。
>675
鼻から悪魔が出てきたと思いねぇ。
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNGそれから、scanf()は入力を行の途中のまま終了するから
後々エラー処理が面倒だぞ。
0685Cん入生
NGNG0686デフォルトの名無しさん
NGNGライブラリ関数に関してはそこで質問すれば?
0687デフォルトの名無しさん
NGNGバイナリ比較をしたいのですが
Aというファイルを開いて先頭が3バイトが
47 49 46 だったら というif文はどうかけばいいのでしょうか?
0688デフォルトの名無しさん
NGNGunsigned char sig[3];
if (memcmp(sig, signature, 3) == 0) ...
0689デフォルトの名無しさん
NGNGFile* fp;
int i;
fp = fopen("A", r);
for(i = 0; i < 3; i++) {
num[i] = fgetc(fp);
}
if(num[0] == 47 && num[1] == 49 num[2] == 46) {
/*処理を書く*/
}
fclose(fp);
return 0;
ではコンパイラ通るかもわからないですが、やはりダメですか。
0690デフォルトの名無しさん
NGNGそれだったら
fread(num, 1, 3, fp);
if (num[0] == 47 && num[1] == 49 && num[2] == 46) {
/* 処理 */
}
でいいじゃん。
でもまぁ、
unsigned char signature[] = {47, 49, 46};
char num[sizeof(signature)];
FILE *fp = fopen("A", "r");
fread(num, 1, sizeof(signature), fp);
if (memcmp(num, signature, sizeof(signature)) {
/* 処理 */
}
fclose(fp);
とでもしておいた方がチェックするバイトが増えたときに楽だろ?
#その点では>>688は却下。
0691デフォルトの名無しさん
NGNGif (!memcmp()) {
ってことで。
0692687
NGNGところで 47, 49, 46 っていうのは GIF なんですが
fread(num, 1, 3, fp);
printf("%d%d%d",num[0],num[1],num[2]);
で読み込んで表示して見ると 717370 と表示されます・・・
バイナリエディタでみてる数値とずれているのですが
なぜなんでしょうか?
0693687
NGNG0694デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char s[256];int a;int l;int ok=0;
for(;ok==0;)for(puts("正の整数を入力して下さい"),gets(s),l=strlen(s),a=0,ok=1;a<l&&ok;a++)
if(!isdigit((int)s[a])){ok=0;puts("入力エラー");}
puts(",を入れて見やすくします");
for(a=0,l=strlen(s);a<l;a++)
{printf("%c",s[a]);if((l-a)%3==1&&a+1!=l)printf(",");}
printf("\n改行を押してください。終了します");getchar();return 0;
}
0695デフォルトの名無しさん
NGNGunsigned char signature[] = "GIF";
0696デフォルトの名無しさん
NGNGどうすればよいのでしょうか・・・。
0697デフォルトの名無しさん
NGNG{
//奇数
}
else{
//偶数
}
でいいんじゃね?
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNG0700デフォルトの名無しさん
NGNG一個じゃなきゃいけない。
0701デフォルトの名無しさん
NGNGできました。こんなものだったとは…。
差もこれの変化形ですかね。
0702デフォルトの名無しさん
NGNG0703Cん入生
NGNGfor(;ok==0;)for(puts("正の整数を入力して下さい"),gets(s),l=strlen(s),a=0,ok=1;a<l&&ok;a++)
バリバリ動くんですけども、okを使ったここの部分がよくわかんないんですけど、okはつまりどのような働きをしてるのでしょうか?
0704デフォルトの名無しさん
NGNGされてなかったら0になって
for(puts("正の整数を入力して下さい
"),gets(s),l=strlen(s),a=0,ok=1;a<l&&ok;a++)
のループにまた入る。
別関数で判定させてdo while文を使った方がすっきりすると思う。
0705デフォルトの名無しさん
NGNGなんだか、色んな意味でスゲー(*゚∀゚)
0706デフォルトの名無しさん
NGNGdo for(puts("正の整数を入力して下さい
"),gets(s),t=s,ok=1;*t;t++)
if(!isdigit(*t)){ok=0;puts("入力エラー"); break;}
while (!ok);
0707デフォルトの名無しさん
NGNG> for(;ok==0;)
while(!ok) じゃダメなん ?
0708sage
NGNGどのようなプログラムが考えられますか?
0709デフォルトの名無しさん
NGNGここ読んで好きなの選べ。
0710デフォルトの名無しさん
NGNG○山大学通信2年だろ? こんなところで出会うなんて奇遇だな(藁
0711デフォルトの名無しさん
NGNGあなた達の大学ってレベルが低いんですね(笑
0712某三流工専
NGNGこのときバブルソートで整列し計算時間を出力するプログラムを作れ。
お願いします。
0713デフォルトの名無しさん
NGNGfor(i=0; i<n; i++)
for(j=0; j<n-1; j++)
if (a[j] > a[j+1]) swap(j, j+1);
こんなんでしょ。
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG・floatで例えば以下の様に配列を宣言して、計40バイトの領域を確保しまつ。
で、別にchar test_c[40]とか宣言しておいて、元来のfloatデータ形式で
1バイト目をtest_c[0]に入れる、2バイト目をtest_c[1]に入れる・・・という方法を
探しています。BCBでmallocとかポインタとか使ってみたけど駄目でした。
どなたか分かる方がいればご教示願いたく。
float test_f[] = {2.9, 3.4, 8.8, 2.2, 5.3};
0717デフォルトの名無しさん
NGNGfloat test_f[] = {2.9, 3.4, 8.8, 2.2, 5.3};
union {
float f[sizeof(test_f) / sizeof(float)];
char c[sizeof(test_f)];
} test;
test.f = test_f;
for (int ic = 0; ic < sizeof(test); ic++) {
printf("%#02x ", test.c[ic]);
}
0718710
NGNGそうなの?残念。間違いスマソ。
0719bloom
NGNG0720デフォルトの名無しさん
NGNGあなた達の家族ってレベル低いんですね(笑
0721デフォルトの名無しさん
NGNGこちらに逝けとのことでしたので、質問させていただきます。
----------問題---------------------------------
それぞれの値が0からn-1までの間の整数値を持ち、
さらに、すべての値は異なるような、長さがk(k<=n)
であるランダム整数列(ランダム置換列)を生成する
ためにはどうしたら良いでしょう?
1:早く、短いプログラム(擬似コード)を作りなさい。
2:そのプログラムの正当性を証明しなさい。
-----------------------------------------------
えーと、言語はCとかJAVAとか何でもいいです。
基本的に、「動くプログラムを作れ」ってことじゃなくて
「こういう方針でコーディングすればよい」ってのが
わかれば良いので。
あと、rand(でしたっけ?乱数発生させる関数)を使って
うまいことやるみたいです。
よろしくおながいします。
0722716
NGNGおお素晴らしい!!なるほど共用体ですか!!!
と、思って打ち込んでみたら・・・BCBエラー吐くやん。
test.f = test_f;
for (int ic = 0; ic < sizeof(test); ic++) {
printf("%#02x ", test.c[ic]);
}
↑こいつは・・・
for (int ic = 0; ic < sizeof(test); ic++) {
test.f[ic] = test_f[ic];
printf("%#02x ", test.c[ic]);
}
でないとマズいみたいですね(BCBだけ?!)。
>>717さんありがとうございました。
0723716
NGNGfor (int ic = 0; ic < (sizeof(test_f) / sizeof(float)) ; ic++) {
test.f[ic] = test_f[ic];
}
for (int ic = 0; ic < sizeof(test); ic++) {
printf("%#02x ", test.c[ic]);
}
が正解かな?
連続カキコ失礼しました。
0724デフォルトの名無しさん
NGNG質問スレのほうに返事書いちまった。
線形合同法とかM系列とかそういうキーワードで調べろ。
正当性の評価とかって、ガロアの群論使えばいいのかな。
あとさ、その課題って、rand 使ってやれってことじゃなくて、
rand を自作しろってことじゃないのか?
0725デフォルトの名無しさん
NGNGむずかちいことは、よくわからんが、
解1
10 0〜n-1までのテーブルAを作成(0,1,2,3,4....n-1)
20 0〜k-1の領域Bを確保
30 index1 = 0
40 index2 = rnd(0〜n-1の範囲)
50 もしA[index2] が -1 の時 40へ戻る
60 B[index1] に A[index2]を代入
70 A[index2] に -1を入れる
50 index1を増加させ index1が k 以下の場合40へ進む
解2
10 0〜k-1の領域Aを確保
20 Aの配列に増値n/kで代入し、小数点以下は切り捨てる
30 Aの配列をランダムにシャッフル
解3
10 0〜n-1までのテーブルAを作成(0,1,2,3,4....n-1)
20 Aをランダムでシャッフル
30 A[0〜k-1]を解とする
解2はアヤシイな。解1も速度がイマイチRNDによっては帰ってこないかな。
3はシャッフルの精度次第か。
0726721
NGNGレスありがとうございます。
この課題の趣旨を書いてなかったんですけど
ソーティングアルゴリズムの評価をするために
テスト入力用のファイルを作るって課題なんです。
で、たぶん”すべての値は異なるような”ってとこが
ネックなんだと思います。
0727デフォルトの名無しさん
NGNG40 index2 = rnd(0〜n-1-index1の範囲)
70 A[index2] に A[n-1-index1]を入れる
0728デフォルトの名無しさん
NGNG#include <algorithm>
#include <vector>
std::vector make(int n, int k)
{
std::vector<int> x;
x.resize(n);
for(int i = 0; i < n; ++i)
x.push_back(i);
std::random_shuffle(x.begin(), x.end());
return std::vector(x.begin(), x.begin() + k);
}
あんまり?
0729デフォルトの名無しさん
NGNG鬱打死脳
0730デフォルトの名無しさん
NGNG逝ってきます
0731デフォルトの名無しさん
NGNGDebug Asertion Failed!というエラーメッセージが出てしまいます。
コードのどこが誤りでどのように修正すれば良いか見ていただけないでしょうか。
よろしくお願いします。
ある配列があり、その配列のサイズを超えた要素に値を入れようとしたとき、
自動的に配列のその要素までメモリ領域を確保するプログラムです。
例えば配列vaの要素数が2である時にva[3]に値を入れようとした場合、
自動的にva[3]まで領域が拡大され、そこに値が書き込まれます。
配列の情報は構造体(array.hで宣言)が持っており、メンバはbase(配列の先頭アドレス)、
limit(配列の要素数)と2つの関数ポインタです。
0732731
NGNGstruct varray {
int *base;
int limit;
int (*read) (struct varray *va, int index);
void (*write) (struct varray *va, int index, int value);
};
struct varray *varray_new (void);
void varray_free (struct varray *va);
/*ここまで*/
0733731
NGNG#include <stdlib.h>
#include <assert.h>
#include "array.h"
static int va_read (struct varray *va, int index);
static void va_write (struct varray *va, int index, int value);
static int va_read (struct varray *va, int index)
{
return (va -> base)[index];
}
static void va_write (struct varray *va, int index, int value)
{
if((va -> limit) <= index){
(va -> limit) = index + 1;
(va -> base) = realloc((va -> base), sizeof(int) * (va -> limit));
}
(va -> base)[index] = value;
}
0734731
NGNG{
struct varray *p;
struct varray va = {NULL, 0, va_read, va_write};
p = &va;
return p;
}
void varray_free (struct varray *va)
{
free(va);
}
int main (void)
{
struct varray *va = varray_new ();
va->write (va, 3, 99); /*引数3は配列のインデックス数、99は書き込む値*/
printf ("%d\n", va->read (va, 3)); /*引数3は値を読み込む配列インデックス数*/
varray_free (va);
return 0;
}
0735731
NGNGva_readとva_writeの中身だけです。よろしくお願いします。
0736デフォルトの名無しさん
NGNGあとvarray_free()でva->baseを解放してない。
0737デフォルトの名無しさん
NGNGあと、varray_free()内ではva->baseをfreeせんと駄目では?
0738デフォルトの名無しさん
NGNG関数を出たらその値の一貫性はまず保証されない。
だからといってstatic struct varray={NULL,0,va_read,va_write};
とすればいいだろうと即断するともっと泥沼に陥る。
struct varray va={NULL,0,va_read,va_write};のままでいいから
きちんとmallocを使ってpに確保してvaの値をpに確保した領域にコピー
これなら大丈夫な筈。reallocなんて使ってるのにどうしてmalloc使わなかった
のだろうと不思議に思うべき。
0740デフォルトの名無しさん
NGNGreadのときに範囲チェックと拡張処理が無いのは、いいのかな?
0741デフォルトの名無しさん
NGNGwriteでチェックかけてるのは、va->baseの領域を確保する為にも必要だし。
0742デフォルトの名無しさん
NGNGと思ったけど、現状でもwriteでreallocした後、新たに確保した領域の初期化はせずに放置プレイか
0743RIE
NGNGキーボードから文字列を読み込んで,読み込んだ文字列の長さを表示するプログラムを作成せよ.
(例)papa->4, level->5
(通常課題1-2)提出フォルダへ
キーボードから文字列を読み込んで,読み込んだ文字列を逆にした文字列を表示するプログラムを作成せよ.
(例)papa->apap, level->level
(通常課題1-3)提出フォルダへ
小文字のaからzまでを表示するプログラムを作成せよ.ただし文字定数および文字列定数を使ってはいけない.
(ヒント)文字コードを使う
(応用課題1-A1)提出フォルダへ
キーボードから文字列を読み込んで,読み込んだ文字列が逆から読んでも同じ(回文のようなもの)文字列かどうかを判定するプログラムを作成せよ.
(例)papa->no, level->yes
0744RIE
NGNG0745デフォルトの名無しさん
NGNG1-1)
#include <stdio.h>
#include <string.h>
int main() {
char s[256];
gets(s);
printf("%s->%d\n", s, strlen(s))
return 0;
}
0746デフォルトの名無しさん
NGNG「小文字のaからz」もasciiと限定されてないので不可能っぽい気がするし。
キーボードから二バイト文字を入力されたらどうするんだろうとか、
突っ込み所が山ほどあるんですが。
0747デフォルトの名無しさん
NGNG256文字以上入力される可能性は考慮しないの?
キーボードからってどうやって保証するの?
0748デフォルトの名無しさん
NGNG1-2)
#include <stdio.h>
#include <string.h>
int main() {
char s[100];
int i;
gets(s);
printf("%s->",s)
i = strlen(s)-1;
for(;i>=0;--i) putchar(s[i])
putchar('\n')
return 0;
}
0749デフォルトの名無しさん
NGNG1-3)
#include <stdio.h>
#include <ctype.h>
#include <limits.h>
int main(){
int i;
for(i = 0; i <= UCHAR_MAX; ++i) {
if(islower(i))putchar(i);
}
putchar('\n');
return 0;
}
0750デフォルトの名無しさん
NGNG1-A1)
#include <stdio.h>
int main(){
char s[100];
int i,len,f;
gets(s);
len=strlen(s);
f = 1;
for(i=0; i < len/2; ++i) {
if(s[i] != s[len-1-i]) {
f = 0;
break;
}
}
printf("%s->",s)
if(rev){
puts("yes");
}
else {
puts("no")
}
return 0;
}
0751デフォルトの名無しさん
NGNG間違えた
×if(rev){
○if(f){
0752RIE
NGNG0753RIE
NGNG0754デフォルトの名無しさん
NGNG0755RIE
NGNG0756bloom
NGNG0757デフォルトの名無しさん
NGNGセミコロン「;」が抜けてるからじゃないの?
0758デフォルトの名無しさん
NGNG行末のセミコロンが抜けてた。
ほかのもミスがあるから、自分でがんばってなおしてみ。
0759RIE
NGNG0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNG0762RIE
NGNG数値の内部表現は,データ型(整数の場合はchar, short, long, intごとにビット長が異なる.
そこで,キーボードから整数値を入力しshort型(16ビット)の変数に格納した後,
この変数の内部表現をビット列で表示するプログラムを作成せよ
0763デフォルトの名無しさん
NGNG1-3)の回答は教師の意図とはちがうかもな。
ヒントが「文字コードを使え」だから。
0764デフォルトの名無しさん
NGNG#include <stdio.h>
#include <limits.h>
int main() {
int i;
short n;
scanf("%hd", &n);
for(i=0;i<CHAR_BIT*sizeof short;++i) {
if(n<0)putchar('1');
else putchar('0');
n <<= 1;
}
}
0765れな
NGNG1000以下の正の整数値のうち,素数をすべて計算し,その結果をファイルに格納するプログラムを作成せよ.素数とは自分自身と1以外の数値で割り切れない整数のことである.
また、計算の実行の中で乗除(乗算と除算)を行った回数もあわせて表示し、ファイルに格納すること
0766デフォルトの名無しさん
NGNGint isprime(int n) {
int i;
if (n < 2) return 0;
for (i=2; i*i < n; i++)
if (n % i == 0) return 0;
return 1;
}
0767れな
NGNGfatal error LNK1120: 外部参照 1 が未解決です。
こんなんでちゃったよお
0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGネカマきも。
0770デフォルトの名無しさん
NGNGまったくC言語が始めて?なあなたになぜそんな問題が出されるのか不思議です。
http://www.kumei.ne.jp/c_lang/ ここなんかで勉強しましょう。
0771デフォルトの名無しさん
NGNGみんなが懇切丁寧に教えてくれるスレですか?(w
0772デフォルトの名無しさん
NGNGなんだそれ
シンプレックス法か?
0773デフォルトの名無しさん
NGNG除算をし
137/1110 = 0.1(234) のように、何らかの記号をつけて
循環小数であるとを示す。
0.122313(略)7837| ただし、小数点以下100桁に収まらない場合は
└―ここが100桁以上 小数点以下100桁まででよい。
0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNGむしろもませろ!
0776デフォルトの名無しさん
NGNGhttp://group.lin.go.jp/data/zookan/kototen/rakuno/r122.htm
さらに来てくれればいつでも揉ませてあげます。
0777健太
NGNG数値の内部表現は,データ型(整数の場合はchar, short, long, intごとにビット長が異なる.
そこで,キーボードから整数値を入力しshort型(16ビット)の変数に格納した後,
この変数の内部表現をビット列で表示するプログラムを作成せよ
を解いてやってください。「shortが不要です」と出て実行できません。助けてください。
0778デフォルトの名無しさん
NGNG#include <stdio.h>
#include <limits.h>
int main() {
int i;
short n;
scanf("%hd", &n);
for(i=0;i<CHAR_BIT*sizeof(short);++i) {
if(n<0)putchar('1');
else putchar('0');
n <<= 1;
}
}
0779健太
NGNG0780健太
NGNG数値の内部表現は,データ型(整数の場合はchar, short, long, intごとにビット長が異なる.そこで,キーボードから整数値を入力しshort型(16ビット)の変数に格納した後,この変数の内部表現をビット列で表示するプログラムを作成せよ.
と
1000以下の正の整数値のうち,素数をすべて計算し,その結果をファイルに格納するプログラムを作成せよ.素数とは自分自身と1以外の数値で割り切れない整数のことである.
また、計算の実行の中で乗除(乗算と除算)を行った回数もあわせて表示し、ファイルに格納すること.
です。お願いします。助けてやってください。
0781デフォルトの名無しさん
NGNG0782まさこ
NGNG作ってください。
0783健太
NGNGだから決してすぐに挫折したわけでは無いんです。どうしても分からないんです。なんとかお願いできませんか?
0784デフォルトの名無しさん
NGNGfprintf(fout,"1\n");
for(i=1; 1000>i; i++){
flag=1;
for(j=1; i>j; j++){
if(i % j == 0){ flag=1; break; }
}
if(flag == 0)fprintf(fout,"%d\n",i);
}
fclose(fout);
0785デフォルトの名無しさん
NGNG778の回答じゃいかんの?
ただ、教えろって連呼するだけじゃなくて、なぜいけないか説明して
みないよ。
0786デフォルトの名無しさん
NGNG~~
n%1は0じゃないか
0787デフォルトの名無しさん
NGNG俺の環境 (Win2K + VC++6) ではとりあえず動く。ただ、負数のシフト結果は保証されないことがあるからお勧めしない。俺なら素直に...
#include <stdio.h>
#include <limits.h>
int main() {
int i;
short n;
scanf("%hd", &n);
for(i = CHAR_BIT * sizeof(short) - 1; 0 <= i; i--){
if(( n & (1 << i)) != 0){ putchar('1');} else { putchar('0'); }
}
}
とするだろう。
0788デフォルトの名無しさん
NGNG#include <fftw3.h>
0789デフォルトの名無しさん
NGNGバグ修正まで面倒見れません。
0790健太
NGNGキーボードから月(12ヶ月)に相当する整数値を入力し,その月の値に応じて,3・4・5月は「春またはspring」、6・7・8月は「夏またはsummer」、9・10・11月は「秋またはautumn」、12・1・2月は「冬またはwinter」と表示するプログラムを作成せよ.
という問題を願いしようとしてたんです。すいません、本当にすいませんでした。
0791デフォルトの名無しさん
NGNG2週間の間、一瞬でも自分の頭で考えたことあるのかどうか問い詰めたい。
0792デフォルトの名無しさん
NGNGint main(void)
{
int n;
do
scanf("%d", &n);
while(n <= 0 || 12 < n);
switch(n)
{
case 12:
case 1:
case 2:
printf("冬またはwinter\n");
break;
case 3:
case 4:
case 5:
printf("春またはspring\n");
break;
case 6:
case 7:
case 8:
printf("夏またはsummer\n");
break;
case 9:
case 10:
case 11:
printf("秋またはautumn\n");
break;
}
return 0;
}
0793健太
NGNG0794bloom
NGNG0795デフォルトの名無しさん
NGNGエラーがでたら、何故エラーの内容を書かない?
俺らはエスパーじゃないんだが。
0796デフォルトの名無しさん
NGNG#include <stdio.h>
int main(){
int n;
scanf("%d", &n);
const char *tbl[] = {"冬またはwinter","春またはspring","夏またはsummer","秋またはautumn"};
printf("%s\n",tbl[n%12/3])
}
0797デフォルトの名無しさん
NGNGdo while の間に{ } がないからでは?
0798デフォルトの名無しさん
NGNGっていうか>>796のは場合によっては死ぬだろ?
#include <stdio.h>
int main(void) {
int manth;
while(1) {
scanf("%d", &manth);
switch(manth){
case 12: case 1: case 2:
printf("冬またはwinter\n"); return 0;
case 3: case 4: case 5:
printf("春またはspring\n"); return 0;
case 6: case 7: case 8:
printf("夏またはsummer\n"); return 0;
case 9: case 10: case 11:
printf("秋またはautumn\n"); return 0;
default:
}
}
}
0799デフォルトの名無しさん
NGNG問題があるってわけじゃないけど、出題者の意図どおりの
回答しても面白くないじゃん。
0800デフォルトの名無しさん
NGNGあっ、もう792みたいにbreakせずにシステムへreturnしちゃう?
そっちの方がいいのかな?
ここは質問した人以外でも勉強になるスレだなぁ。
0801デフォルトの名無しさん
NGNGスマソ。
0802デフォルトの名無しさん
NGNGmanthってなんだろ。
それと、main()からの出口が複数あるのはちょっといやだなぁ。
>>797
ちゃんと確認してからレスつけなよ。
>>796
nがunsignedなら落ちないのに。
0803デフォルトの名無しさん
NGNG本人になおさせろよ。
0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNG#include <OnePassDP.h>
0806デフォルトの名無しさん
NGNGじゃあそのヘッダファイルの中身を書いてください。
0807デフォルトの名無しさん
NGNGチンコの写真UPしたら書いてやるよ。
0808デフォルトの名無しさん
NGNG#ifndef AAAA
#define AAAA
int init(void);
char *ninshiki(void *);
#endif
0809デフォルトの名無しさん
NGNG「配列に格納されたn個の数を、最大値選択法によって昇順にソートする」というものでした。
とりあえず以下。
void selection_sort(int *ptr, int n)
{
int i, j, k;
for(i=0; i
k = i;
for(j=i+1; j
if(*(ptr+k) > *(ptr+j)){
k = j;
}
}
swap((ptr+i), (ptr+k));
}
}
void swap(int *ptr1, int *ptr2)
{
int w;
w = *ptr1;
*ptr1 = *ptr2;
*ptr2 = w;
}
間違っているところあったら指摘してください。
また、これを擬似言語で記述するとどのようになるのでしょうか。
よろしくお願い致します。
0810デフォルトの名無しさん
NGNGなんでforの後ろが抜けてるの?
0811デフォルトの名無しさん
NGNGvoid selection_sort(int *ptr, int n)
{
int i, j, k;
for(i=0; i<n-1; i++){
k = i;
for(j=i+1; j<n; j++){
if(*(ptr+k) > * (ptr+j)){
k = j;
}
}
swap((ptr+i), (ptr+k));
}
}
void swap(int *pyr1, int *ptr2)
{
int w;
w = *ptr1;
*ptr1 = *ptr2;
*ptr2 = w;
}
0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNG2 決定する値の場所を、現在の決定する場所を仮の初期値とする。
3 決定する値の場所 + 1 〜 最後尾について次を繰り返す。
4 最小値を探し、その場所を覚えておく。
5 覚えておいた場所の値と、決定する値を交換する。
という手順を踏んでいます。
単純選択法、つまり最大値選択法ではないかと思うのですがどうでしょう。
0814デフォルトの名無しさん
NGNG最大値っていうんだからこうじゃないの?
0815デフォルトの名無しさん
NGNG同じパターンが繰り返されていたらその部分を括弧でくくるプログラムですが、
文字列の長さが最大10の時(\0を含む)
例一:ABCDECDE → AB (CDE)
例二:ABCDEFCDE → AB (CDEF)
/* 最大の長さ */ /* 同じパターンが続くと類推する */
となのですが、
例二の類推が上手くできません。
●投げで住まんけど、お願いします。
0816デフォルトの名無しさん
NGNGありがとうございます。やってみます。
このアルゴリズムを擬似言語で記述するとどうなるんでしょうか?
0817デフォルトの名無しさん
NGNGそうすると降順にソートされるよ。
0818デフォルトの名無しさん
NGNGループを逆に回したら?
nが0より小さければ終了
最大値を見つけてn番目と交換する。
nを1減らす。
0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNGありがとう
0822デフォルトの名無しさん
NGNGとりあえず美しくないが...
#include <stdio.h>
#include <string.h>
#include <conio.h>
static void foo(const char *s)
{
const char *p;
printf("%s --> ", s);
while(*s){
p = strchr(s + 1, *s);
if(p == NULL){
putchar(*s++);
continue;
}
int i;
for(i = 0; &s[i] < p; i++){
if(p[i] == '\0' || s[i] != p[i]){ break; }
}
if(p[i] == '\0' || s[i] == p[i]){
putchar('(');
for(; s < p; s++){ putchar(*s); }
putchar(')');
s = &p[i];
} else { putchar(*s++); }
}
putchar('\n');
}
0823デフォルトの名無しさん
NGNGありがとうできました。・・・けど擬似言語わからん。Cじゃいかんのか。
0824デフォルトの名無しさん
NGNGどうやればいいのでしょうか?
とりあえず、考えた方法ではこんな感じなんですが・・・
//こーぞーたいの宣言はWindowsとおんなじ
#include <stdio.h>
int main(int ArgCount,char* Argument[])
{
BITMAPFILEHEADER BMPFileHeader;
BITMAPINFOHEADER BMPInfoHeader;
RGBQUAD RGBQuad;
FILE* pFile;
unsigned char BMPBuffer[3];
pFile = fopen("(HCG)(無修正)George W Bush × Saddam Husayn.BMP","rb");
fread(&BMPFileHeader,sizeof(BITMAPFILEHEADER),1,pFile);
fread(&BMPInfoHeader,sizeof(BITMAPINFOHEADER),1,pFile);
for (Y = 0; Y < BMPInfoHeader.biHeight; Y ++)
{
for (X = 0; Y < BMPInfoHeader.biWidth; X ++)
{
// ここでイメージを1ピクセルごと読み込む
RGBQuad[(Y + 1) * (X + 1) - 1] = BMPBuffer;
}
}
return 0;
}
自分では完成されられないので助けていただけないでしょうか?
あと、もっと高速に美しく読み込む方法があると思うので
教えていただけませんでしょうか?
ミジンコヤローでも分かるくらい簡単に・・・
0825お願いします☆
NGNG立方体の体積を求めるプログラムを作成せよ。
また、実行結果を書け。
(ヒント)立方体体積 たて*よこ*高さ
int taiseki,tate,yoko,takasa;
書式 たて%4d よこ%4d 高さ%4d 体積%6d
実行結果 たて( )センチ、よこ( )センチ、高さ( )センチの
立方体の体積は( )立方センチです。
問題2
円柱の体積を求めるプログラムを作成せよ。
また、実行結果を書け。
(ヒント)円柱の体積=円周率(3.14)*半径*半径*高さ
int hankei,takasa;
float taiseki;
半径=12、高さ=34
書式 半径%3d 高さ%3d 体積%8.3f
実行結果 半径( )センチ、高さ( )センチの円柱の体積は( )
立方センチです。
0826デフォルトの名無しさん
NGNG0827デフォルトの名無しさん
NGNGその固定ファイル名は何とかならんのか(w
それはともかく、
BMPは1ラインのバイト数が4の倍数になるようになってるから、
単純にforでまわすと絵が崩れることがあるよ。
>16bit,24bit,32bitのbitmapを読み込みたいのですが
って言われてもなぁ。
読み込んだ後どうしたいのか書いてくれないと。
画像処理して別のファイルに書き出し?
それとも画面に表示?
表示したいなら環境依存だから環境かいてないとわかんないよ。
0828デフォルトの名無しさん
NGNGそこまでわかっててできないわけがない。
0829デフォルトの名無しさん
NGNGなんか違和感を感じるね。
0830デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
#define NFRAC 100 /* :D */
#define NBUF 200 /* :D */
#define NSTR 200 /* :D */
int gcd(int x, int y){return (y == 0 ? x : gcd(y, x%y));}
void reduce(int *n, int *d){int g; g=gcd(*n,*d); *n=*n/g; *d=*d/g;}
int cycle(int *h, int t, int n){while(t--) if(h[t]==n) return t; return -1;}
char *expand(char *s, int n, int d){
int x,y,i,m,c,neg,rt=0,qt=0,*r,*q; char buf[NBUF];
reduce(&n, &d); neg = n*d < 0 ? 1 : 0; x = n = n<0?-n:n; y = d = d<0?-d:d;
sprintf(s,neg?"-%d.":"%d",n/d); if(d==1) return s; strcat(s,".");
r=(int*)alloca(sizeof(int)*NFRAC); q=(int*)alloca(sizeof(int)*NFRAC);
while(0>(c=cycle(r,rt,n))){r[rt++]=n;n*=10;m=n/d;n=n%d;q[qt++]=m;}
for(i=0;i<m;i++){sprintf(buf,"%d",q[i]); strcat(s,buf);} strcat(s,"(");
for(i=c;i<qt;i++){sprintf(buf,"%d",q[i]); strcat(s,buf);} strcat(s,")");
return s;}
int main(int c, char *v[]){
int n,d; char str[NSTR]; if(c<3){fprintf(stderr,"%s n d\n",v[0]);return 1;}
n=atoi(v[1]); d=atoi(v[2]); printf("%d/%d = %s\n",n,d,expand(str,n,d));
return 0;}
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNG+ for(i=0;i<c;i++){sprintf(buf,"%d",q[i]); strcat(s,buf);} strcat(s,"(");
0833デフォルトの名無しさん
NGNG最低限、windows.hのインクルードはしてね。
0834824
NGNG> 単純にforでまわすと絵が崩れることがあるよ。
Σ(゚Д゚) では、どうすればいいのでしょうか?
> 読み込んだ後どうしたいのか書いてくれないと。
bit/pixelを変えて保存したいのです。 でも、表示もしたいです。
環境はMS-DOSかLinuxがいいな〜。
>> 833
Windowsに依存したくないんです。
0835デフォルトの名無しさん
NGNGMS-DOSかLinuxで点を打つ事はやったことはあるの?
0836デフォルトの名無しさん
NGNGWindowsに依存したくないなら、bmpの構造関係を全部自前で宣言しないとねぇ。
xvみたいなソースの公開されているViewerのソースを見るのが一番早いんじゃない?
0837デフォルトの名無しさん
NGNG制すうちを入力しshort型の変数に格納した後
この変数の内部表現をビット列で表示するプログラムを作成せよ・・・
という課題がでました。
integer=>1
0000000000000001
integer=>-2
1111111111111110
といった感じで表示するってとこまでは分かったけど・・・
実際のプログラムが分かりません。どうしよう・・・tt
0838デフォルトの名無しさん
NGNGunsigned short a;
for(int i=0;i<16;i++){
printf("%d",(a>>15)&1);
a<<=1;
}
0839824
NGNGないです。 MoveTo()とLineTo()でならあります。 恐ろしく効率が悪いですが。
>> 836
824の「//こーぞーたいの宣言はWindowsとおんなじ」の部分に
typedef struct BITMAPFILEHEADER{
unsigned intFileType;
unsigned longFileSize;
unsigned intReserved1;
unsigned intReserved2;
unsigned longOffset;
}BITMAPFILEHEADER;
0840824
NGNGunsigned longStructureSize;
longBitmapWidth;
longBitmapHeight;
unsigned intPlaneCount;
unsigned intBitCountPerPixel;
unsigned longCompressionType;
unsigned longImageSize;
longXPixelPerMeter;
longYPixelPerMeter;
unsigned longColorTable;
unsigned longImportantColor;
}BITMAPINFOHEADER;
typedef struct RGBQUAD{
unsigned charBlue;
unsigned charGreen;
unsigned charRed;
unsigned charReserved;
}RGBQUAD;
typedef struct BITMAPINFO{
BITMAPINFOHEADERBitmapInfoHeader;
RGBQUADRGBQuad[1];
}BITMAPINFO;
こんな感じで宣言してあります。
0841824
NGNGLinuxのGraphicViewerですね。 Linux系は
ttp://lss.eternity.ne.jp/
ttp://www.sourceforge.net/
等で落としてきてソースを見ているのですが全然理解できないんです。
いや、もちろん私がおたんちんなのがいけないんですけど・・・。
0842デフォルトの名無しさん
NGNGImageMagic の corders/bmp.c の方が作りは素直かも
0843デフォルトの名無しさん
NGNGレス番つけるときに">>"のあとにスペースは入れないでくれ。
スピード上げたいんなら、ヘッダ読んだ後にデータ自体もファイルから
freadでメモリ上に全部まとめて読み込んで、
あとはそこからデータを読むようにしたほうがいい。
1ラインが4の倍数になるってことから、1ラインごとのバイト数が計算できるから、
それでアクセスすべきアドレスは計算できる。
1ラインのバイト数=((1ラインのピクセル数*ピクセルごとのビット数/8-1)/4+1)*4
変換するのと表示するのは別問題だから、
とりあえず環境依存のない変換だけをやってみたほうがいいよ。
0844デフォルトの名無しさん
NGNG課題の度に聞くのであれば、ばれるだろうけど?
0845デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, j, ransuu, ni[8];
srand ((unsigned)time(NULL));/* 異なる乱数を得るため */
for (i=0 ; i<10 ; i++) {
ransuu = rand() / 32768.0*256;/* 0〜255までの乱数指定 */
j = 8;
do {
j--;
if (ransuu%2 == 1) {
ni[j] = 1;
}else {
ni[j] = 0;
}
ransuu = ransuu/2;
}while (ransuu > 0);
for (j=j ; j<=7 ; j++) {
printf ("%d", ni[j]);/* 2進数表示 */
}
printf ("\n");
}
}
乱数を求めて二進数に変換するプログラムなんですけど、8ビットにそろえたいのですがうまくいきません。
(↑のプログラムだと乱数が10の場合、1010が表示される。そうじゃなくて00001010にしたい)
どのようにすればうまくできるでしょうか?。
0846デフォルトの名無しさん
NGNG}while (j > 0);
0847845
NGNG0849デフォルトの名無しさん
NGNG0850デフォルトの名無しさん
NGNGfor (i=1<<7; i>0; i<<=1)
putchar(ransuu&i ? '1' : '0');
0852デフォルトの名無しさん
NGNGこれを機に勉強してみよ。
0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNG/* b<1 || 36<b || w<1 のとき何もせずNULLをその他の場合sを返す */
#define DIGITCHAR "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
char *
int2str(char *s, unsigned int n, int b, int w)
{
if (b < 1 || 36 < b || w < 1) return 0;
s[w] = '\0';
while(n || w>=0){s[--w] = DIGITCHAR[n%b]; n/=b;}
while(w >= 0) s[w--] = '0';
return s;
}
0855デフォルトの名無しさん
NGNG0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGint型の配列の中に数字を代入しているのですが
(例) hairetu[5] = {5,4,3,2,1};
これを一つの変数のなかに代入したいんです(ファイルに出力したい為)
(例) hitotu = 54321;
どうしたらできますか?
0858デフォルトの名無しさん
NGNGなんで配列に入れるとファイルに出力できないの?
0859デフォルトの名無しさん
NGNG? 何がやりたいのかわからんが、こうか?
int ret=0;
for(int i=0; i<5; i++)
{
ret+=hairetu[i];
ret*=10;
}
0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNGhitotu = 0;
hitotu += hairetu[0]*10000;
hitotu += hairetu[1]*1000;
hitotu += hairetu[2]*100;
hitotu += hairetu[3]*10;
hitotu += hairetu[4];
0862デフォルトの名無しさん
NGNG0なんか代入しないで最初の+=を=にすればいいじゃん。
0863デフォルトの名無しさん
NGNGfor(int i=4; i>=0; i--)
{
hitotu+=hairetu[i]*ret;
ret*=10;
}
0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNG#include <math.h>
・
・
for(int i =0; i < 5; i++) {
hitotu += hairetu[0] * pow( (double)10, (double)(4-i) )
}
とか考えたけど、>>863で十分なんですな。勉強になります。
0866デフォルトの名無しさん
NGNGこんな処理ごときで、変数を2個 (for の制御変数を入れると3個) も使わんとできんのか ?
int hitotu = 0;
for(int i = 0; i < 5; i++){
hitotu = 10 * hitotu + hairetu[i];
}
(と言うか、これって定石じゃないのか ?)
0867デフォルトの名無しさん
NGNG0868デフォルトの名無しさん
NGNGCでも通る書き方でかけよC++厨
0869デフォルトの名無しさん
NGNG0870デフォルトの名無しさん
NGNGCに直すのは一瞬で可能でしょう。
だいたい何処にもCで書けなんて言ってなかったよC厨
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNGまぁ宿題なんてそんなモンなんだよね。
0873デフォルトの名無しさん
NGNGどこにも書かれていないからこそだよ。
Cでやっていたらコンパイルできないよって言ってくるだろう。
初 心 者 は
0874デフォルトの名無しさん
NGNG0875857
NGNG配列のなかが
hairetu[5] = {5,4,3,2,1}; の場合はうまくいくのですが、
hairetu[5] = {0,0,6,7,8}; とかゼロが入っていると「678」と出力されてしまいます。
「00678」と0も表示させたい場合はどうすればよいのでしょうか?
0876デフォルトの名無しさん
NGNGfprintf(fp,"%05d",hitotu)
0877デフォルトの名無しさん
NGNGhairetu[5] = {0, 0, 6, 7, 8}
のhairetuをpaiotuと書き換えてみてください
0878デフォルトの名無しさん
NGNGここに書いても大丈夫でしょうか?
0879デフォルトの名無しさん
NGNGprintf(" ");
0880デフォルトの名無しさん
NGNG0881857
NGNGありがとうございます(^-^)
0882デフォルトの名無しさん
NGNGなんか、文字列に変換した方がいいのでは...。
for(int i = 0; i < 5; i++){
fputc(hairetu[i] + '0', fp);
}
つーか何のためにこんなことが必要なのか書けよ。
0883デフォルトの名無しさん
NGNGpaiotu
0884857
NGNG宿題です。ごめんなさい(;;)
0885デフォルトの名無しさん
NGNG宿題の意図するところを勘違いしていないか? なんかおかしい。
0886デフォルトの名無しさん
NGNGとりあえず宿題の問題を全部ここにコピペしる!
0887デフォルトの名無しさん
NGNGじゃあ、お前はなんのためにこのスレに書き込んでんの?
0888デフォルトの名無しさん
NGNG0889878
NGNG#include <cstdlib>
using namespace std;
class list {
public:
list *head; // リスト先頭へのポインタ
list *tail; // リスト末尾へのポインタ
list *next; // 次項目へのポインタ
int num; // 格納される値
list() { head = tail = next = NULL; }
virtual void store(int i) = 0;
virtual int retrieve() = 0;
};
// キュー型リストの作成
class queue : public list {
public:
void store(int i);
int retrieve();
};
0890878
NGNG{
list *item;
item = new queue;
if(!item) {
cout << "メモリ割り当てエラー\n";
exit(1);
}
item->num = i;
// リスト末尾に置く
if(tail) tail->next = item;
tail = item;
item->next = NULL;
if(!head) head = tail;
}
0891878
NGNG{
int i;
list *p;
if(!head) {
cout << "リストは空です\n";
return 0;
}
// リスト先頭から取り除く
i = head->num;
p = head;
head = head->next;
delete p;
return i;
}
あまりにも長いので一部だけ載せます。
//リスト末尾に置く というところから何がどうなってどうなるのか、さっぱりわからないのです。
どなたかアドバイスお願いします。
0892デフォルトの名無しさん
NGNGわかんね? なんでだ?
0893デフォルトの名無しさん
NGNG何年制の何年目でこの問題が出されるの?
0895デフォルトの名無しさん
NGNGtail = item; //tailに item(データのある所の最後)のアドレスを代入
item->next = NULL; //item(=tail)の次にNULLを代入
0896デフォルトの名無しさん
NGNGごめん。相手間違えた
0897デフォルトの名無しさん
NGNGついでに聞くと二が月前からCの知識はありました?
0898895補足
NGNG0899デフォルトの名無しさん
NGNG何ページ?
0900デフォルトの名無しさん
NGNGは?
0901878
NGNGありがとうございます。
しかし、なんとも頭がこんがらがっちゃいます…
なんと言ったらいいのでしょう。言葉では説明しにくいのですが。
tail->next や item->next でどうして次を指すのか、というのがスデにわからなくて…
0902デフォルトの名無しさん
NGNG>>885の意図するところを勘違いしていないか?なんかおかしい。
0905デフォルトの名無しさん
NGNG多分,頭だけじゃなくて、紙に書いたりして考えるのもいいだろうね。
問題はどんな図を書くべきかだ。
0906デフォルトの名無しさん
NGNG最初はheadとtailにitemを入れておく。
次からはheadは変えずにtailにitemを入れる。
ただし前のtailのnextにもitemを入れる。
headからnextをたどっていってtailまで届くようにしてる。
tailのnextには終端をあらわすNULLを入れる。
0907デフォルトの名無しさん
NGNGごめんよ
0909895
NGNGイメージで覚えてしまうとなかなか忘れないし。
*nextは、常にデータのある次のアドレスの部分を指す為に使う、など、
(通り道、行き先等簡略して良い)
意味をしっかり捉えてから進めた方が良い。
address □ ここに保持される値の特徴は?
data □ こっちは?
next □ さらに、こっちは?
とかね(上の四角の中から矢印を出して次の部分に繋げたり、擬似的にデータをいれてみたりする)。
0911デフォルトの名無しさん
NGNG分けて考えたほうが解りやすいかもしれんね。
0912デフォルトの名無しさん
NGNG教えてください。
0913デフォルトの名無しさん
NGNGdtx=-dtx;
if(y<0||600<y)
dty=-dty;
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNG0916デフォルトの名無しさん
NGNGリスト全体を大きな一直線のジグソーパズルとして、リストの要素をパズルのピースとすると、
(暇だったら図書いてみるといいかも?)
ジグソーパズルのピースには、はめるためのでっぱりと、はめられるためのへこみがある。
この例題の場合、そのはめるためのでっぱりがnextにあたるかと。
パズルに言い換えれば、nextってのは自分がどのピースと繋がってるかを表すものかと。
例えば、AっていうピースがBっていうピースにはまってたとしたら、
Aのデッパリ(next)にはBへのポインタが入ってる。
こうしておけば、まず最初に一個のピースを設置して、後はデータを追加する際には
そのピースのでっぱりに新しいピースをはめて、次はその新しいピースのでっぱりに、、、
っていう一直線のジグソーパズルを作ることが出来る。
headとtailってのはそれぞれ先頭と末尾のピースへのポインタ。
実際にデータを追加する時には、tailを参照するとパズルの一番最後のピースが分かるから、
そのピースのでっぱりに新しい要素をはめる、ってイメージじゃないかな。
で、headとtailっていうのは最初と最後のピースへのポインタだから当然要素がなければNULLだし、
パズルの一番最後にピースをくっつける時(つまりは要素を追加する時)は当然、最後のピースへのポインタ(tail)は変えなきゃいけないし。
もちろん最後のピースは何も繋がってないからnextはNULLだし。
その例題はそういうことじゃないの?
ていうか変にかみ砕きすぎて意味がわからない文章になった。。
全く見当違いのこと書いてたら&無駄な長文スマソ
0917まりも
NGNG作ったCOM(DLL形式、タイプライブラリ)をVBから
つかっているのですが、現在つかっているCOM別に新たに
COMを作って、C++でいう継承をしたいのですが、
簡単に説明すると
新規で作ったCOMクラスBとしてC++でいう
基本クラス、現在つかっているCOMをAとしてC++で言う派生クラス
(ちなみにA,BもおなじATLウィザードクラス?なかにつくります。)
例
class A : public B
{
インターフェイス関数 drawA
}
class B{
インターフェイス関数 drawB
}
//したい事
A *tmp;
tmp = new A;
tmp->drawB(); ←というようにしたいのですが。
どうもうまくいきません。
どうも、インターフェイスのインプリメントとなるメニューを発見して
実行しました。VCのクラスビュウでは、ちゃんと、Bのインターフェイス
がAのクラスにはいっているのですが、VBから呼び出した場合
インターフェイスの関数名がでません。(メンバ一覧にのっていません)
うまく説明できてないところがありますが、どなたかご存知な
方おしえてもらえないでしょうか?よろしくお願いします。
0918デフォルトの名無しさん
NGNGWindowsではそれっぽいのがあるみたいだけど。
0919デフォルトの名無しさん
NGNG0920878
NGNG先日は色々ありがとうございました。
ほぼ徹夜状態で考えてたのですが、また色々混乱してきまして…
実際にstore()を呼び出す時は
for(i=0;i<5;i++){
//...
store(i);
}
こんな感じで呼び出されるわけですが、
これってどんどんlistクラスを生成してる そんな感じで捕らえてよいのでしょうか?
0921デフォルトの名無しさん
NGNG{
char str[] = "words";
char *ptr = str;
以上のような変数宣言をしたときの
・ポインタ変数のアドレス
・ポインタ変数に格納されている値
・ポインタ変数が参照する配列変数の先頭アドレス
・ポインタ変数の参照先データ
をそれぞれポインタ変数を用いてポインタの位置を
文字数分まで1つずつ進めながら16進数で確認するプログラムを作れって
言われました。
16進数なら %x を使うと思うのですが?
0922デフォルトの名無しさん
NGNG0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNG{
char str[] = "words";
char *ptr = str;
while (*ptr) {
printf("%p, %p, %p, %c\n",
&ptr, //・ポインタ変数のアドレス
ptr, //・ポインタ変数に格納されている値
str, //・ポインタ変数が参照する配列変数の先頭アドレス
*ptr); //・ポインタ変数の参照先データ
}
}
0926デフォルトの名無しさん
NGNG無限ループ...。
0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNG%pでの表記方法は処理系依存
>>921
> 16進数で
0930デフォルトの名無しさん
NGNGそもそも処理系非依存でポインタを16進表示なんかできないよ。
0932デフォルトの名無しさん
NGNGstore()が>>878だとすれば間違っちゃいない
ただし生成しているのはlistクラスではなくlistクラスのインスタンス
0933デフォルトの名無しさん
NGNGttp://www-ccs.ucsd.edu/c/types.html#Pointer%20Types
> No relationship exists between the representations of pointer types and
> integer or floating-point types.
もっとも>>921がどういう前提で課題を出されたかはしらんが。
0934デフォルトの名無しさん
NGNGPOSIX.1ならnanosleep()がある。
0935デフォルトの名無しさん
NGNGprintf("%x %x %x %x\n", (int)&ptr, (int)ptr, (int)str, (int)*ptr);
0936デフォルトの名無しさん
NGNG読み込んだデータを単語ごとに分割し、1単語ごとに'[}'で囲んだ上で
標準出力へ各行に1単語ずつ書き出すプログラムを作成せよ。
ただし、データはgetc()を用いて1文字ずつ読み込み、空白、改行が現れたら。
そこまでを1つの単語とする。
このとき','および'.'は読み飛ばすこと。
ちなみに英文は以下です
Every student has been admitted to this University with an unshakable
BELIEF and HOT PASSION. I believe that not only the beautiful nature
of Iwate, but also advanced study enveronment and excellent professors
will support and guide students to realize their HOT PASSION. We have
many laboratory classes for students to realize and improve their real
abilities.
0937デフォルトの名無しさん
NGNG頭文字が出力されない
改行の後の単語が出力されない
'.'','が省けないんですがどこがまずいんでしょうか?
int main()
{
FILE * fp;
char a[100], c[100];
int i;
fp = fopen("dean_msg.txt", "r");
if(fp == NULL){
printf("Cannot open file.\n");
return -1;
}
0938デフォルトの名無しさん
NGNGdo{
i++;
a[i] = getc(fp);
c[i] = a[i];
if(c[i] == ' ' || c[i] == '\n'){
c[i+1]= '\0';
printf("[%s]\n", c);
i = -1;
}
if(c[i] == ',' || c[i] == '\n'){
c[i] = '\0';
printf("[%s]\n", c);
i = -1;
}
}
while(c[0] = ' ');
return 0;
}
0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNGありがとうございます。
strtok君使って挑戦してみます。
0941デフォルトの名無しさん
NGNGint main()
{
char t[100],c;
int i=0;
FILE *fp;
fp = fopen("dean_msg.txt","r");
//エラー処理は省略
while((c = fgetc(fp)) != EOF) {
if(c == ' ' || c == '\n' || c == '.' || c == ',') {
if(i > 0) {
t[i]='\0';
printf("[%s]\n", t);
i = 0;
}
continue;
}
t[i] = c;
i++;
}
fclose(fp);
}
超適当だがこんな感じか?
ってfgetcじゃなくてgetcか、、
0942939
NGNG読めた。ごめんよ。
0943デフォルトの名無しさん
NGNG#define TXT "dean_msg.txt"
int
main(void)
{
FILE *fp; char c; int i=0;
if (!(fp = fopen(TXT, "r"))) {perror("fopen(): " TXT); return 1;}
while((c = fgetc(fp)) != EOF) {
switch(c) {
case '.': case ',': case ' ': case '\n':
if(i>0) puts("}");
i = 0; break;
default:
if(i++==0) putchar('[');
putchar(c);
}
}
return 0;
}
0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNGgetlineくらいつかわせろつーの。
0946デフォルトの名無しさん
NGNGお願いします教えてください。
0947デフォルトの名無しさん
NGNG仕様は細かく丁寧に書こうね。
0948946
NGNGブロック崩しのボールみたいな感じのプログラムを作りたいんです。
教えて下さいまし。
0949デフォルトの名無しさん
NGNG一個のWindowで作るのかそれともUNIXのX11で作るのかはたまた他の媒体で作るのか
移動スピードは機種依存でいいのか一定にするのか
移動コマ数はどうするのか
●の色はどうするのか
反射角はランダムを織り交ぜるのか一定なのか
etc.etc...
そういったことを聞いてるんだYO!
0950946
NGNGlocateを使って作りたいんです。
0951デフォルトの名無しさん
NGNGコンソール画面でやんの?
0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNG0956新人の宿題
NGNGWin32 Platform で動く同一プロセス内の Read/Write Lock クラスを C++ で作りなさい。
その際、Event と CriticalSection オブジェクトだけで構成しなさい。セマフォやミュー
テックスオブジェクトを使用してはならない。
同時に入るスレッドの数、システム状態などには全く依存せず、汎用的に作りなさい。
(但し、システムの限界を越える数(unsigned int の上限値など)の場合はその限りでは
ありません。)
Read/Write Lock とは、複数のスレッドがあるリソース(例えばメモリブロックなど)を
1. Read - Read conflict のときは何もしない
2. Read - Write, あるいは Write -Write conflict のときは待ち合わせ処理をする
という排他制御を言います。
0957デフォルトの名無しさん
NGNGa=2;b=1;
kansuu(int a, intb)
{int koukan;
koukan=a;
a=b;
b=koukan;
}
ポインタを使わない場合、なぜabの値の交換ができないのか
わかりません。
0958デフォルトの名無しさん
NGNGint locate( short, short ) ;
int main( void )
{
int x,y,i;
locate(x,y);
printf("☆\n");
return 0;
}
int locate( short x, short y )
{
COORD dwPos ;
HANDLE hOut ;
dwPos.X = (SHORT)x ;
dwPos.Y = (SHORT)y ;
hOut = GetStdHandle( STD_OUTPUT_HANDLE ) ;
return (SetConsoleCursorPosition( hOut, dwPos ) == 0)? -1: 0;
}
0959デフォルトの名無しさん
NGNGttp://www.geocities.co.jp/SiliconValley-Bay/7437/c/c1a.html
0960デフォルトの名無しさん
NGNG何か宿題を下さい。おながいします
0961デフォルトの名無しさん
NGNGCは値渡しだから、ポインタを使わないと交換関数は作れない。
C++なら&指定で参照渡しになるから交換関数も作れる。
しかし、実装上は単純なポインタ渡しも参照渡しも全く同一のコードになるので、
ポインタ渡しのやり方も覚えて置いて損はない。
また、単純な交換だけが目的なら交換関数とせずにマクロで実現するのも手。
0962デフォルトの名無しさん
NGNGkoukan(int x,int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
}
main()
{
int a,b;
a=2;
b=1;
koukan(a,b);
printf("%d,%d",a,b);
}
0963デフォルトの名無しさん
NGNG素敵な お相手が貴方を待っています!
もちろん 女性は完全無料です!
http://www.sweet.st
0964デフォルトの名無しさん
NGNG#define SwapInt(a, b) {int tmp = a; a = b; b = tmp;}
#define Swap(a, b) {a ^= b; b^= a; a^= b;}
0965デフォルトの名無しさん
NGNGこれってパイプライン乱しそうで遅くなりそうだよね。
0966デフォルトの名無しさん
NGNG#define Swap(a,b,type) do{type tmp; tmp=a; a=b; b=tmp;}while(0)
0967デフォルトの名無しさん
NGNG関数をinlineにしろ。
0968アンチconst
NGNG0969デフォルトの名無しさん
NGNGC++だったら最初からテンプレート使うのが当たり前だしね。
0970デフォルトの名無しさん
NGNG{ \
char checker[sizeof(a)==sizeof(b)]; \
char temp[sizeof(a)]; \
memcpy(&temp,&a,sizeof(a)); \
memcpy(&a,&b,sizeof(a)); \
memcpy(&b,&temp,sizeof(a));\
}
0971デフォルトの名無しさん
NGNG名前空間全体を汚すマクロ定数を使うな
0972デフォルトの名無しさん
NGNGすげぇ、効率度外視だけど型を問わないと言う点では強力だ。
0973デフォルトの名無しさん
NGNGありがとうございました。
0974デフォルトの名無しさん
NGNGなんつーか、char checkerの行がおもしろい。
もしかして常套手段?
0975デフォルトの名無しさん
NGNGstatic_assertのC版として使ってみた
0976デフォルトの名無しさん
NGNG#define Swap(a,b) \
{ \
char checker[sizeof(a)==sizeof(b)]; \
typedef struct { char temp[sizeof(a)]; } temp_t;\
temp_t temp=*(temp_t*)&a;\
a=b;\
(*(temp_t*)&b)=temp;\
}
0977デフォルトの名無しさん
NGNG常識だろ?
0978デフォルトの名無しさん
NGNG0979デフォルトの名無しさん
NGNGまじで!?
0980デフォルトの名無しさん
NGNGひどい。
一生懸命考えたのに・・・
0981デフォルトの名無しさん
NGNGなにが?
0982デフォルトの名無しさん
NGNG0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNGコンパイルエラーになるかどうかで型(の大きさ)があっているかどうか確かめること。
0988デフォルトの名無しさん
NGNGC/C++の宿題やってください。おながいします 5
私はC++房。
今まで1年*ヶ月、ほとんど毎日休まず一生懸命C++を勉強してきた。
ついでに今はJavaと基本情報もやっている。
しかし、全然分からない。宿題はたまる一方だ。
わからない宿題若しくは処理があるのでやってくださいm(_ _)m
4代目: http://pc2.2ch.net/test/read.cgi/tech/1045074808/l50
3代目: http://pc2.2ch.net/test/read.cgi/tech/1041992392/l50
2代目: http://pc3.2ch.net/test/read.cgi/tech/1039772622/l50
宿題手伝いますYO!!: http://pc3.2ch.net/test/read.cgi/tech/1038024989/l50
0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNGmain(int argc,char **argv,char **envp)
{
echo(envp);
exit(0);
}
echo(char *ss)
{
while (*ss != NULL)
printf("%s\n",*ss++);
}
このプログラムがなんなのかわかりません
0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNGenvp(というかmainの第三引数)は環境変数のリストだと思う。
Cの標準規格には存在しないけどね。
0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。