printfからの取り出し方法

[戻る]
けんじ 2003/09/02(火) 20:05:54
すいません。急なアドバイスをください!!
こんがらがっています。
int count;
for(count=0 ; count<MAX); count++){
for(・i・){
printf("%f\n", a[i]);//aの更新 
}
}
このようなaの配列が更新されてできたものはコンソール画面に出力されます。この結
果をそっくりそのまま配列として利用したいです。
宜しくお願いします。

けんじ 2003/09/02(火) 20:12:25
訂正

int count;
for(count=0; count<MAX; count++){//訂正 )
for(i=0;i<MAX;i++){
printf("%f\n", a[i]);//aの更新 
}
}

とおりすがり 2003/09/02(火) 20:14:54
> printf("%f\n", a[i]);//aの更新

とりあえず、これは更新じゃなくて、出力。

で、あなたは出力がしたいの? それとも、更新した後の値を使いたいの?

けんじ 2003/09/02(火) 20:15:56
はい。
更新した値がほしいのです。

とおりすがり 2003/09/02(火) 20:17:32
じゃあ、更新した値をそのまま使えばいいじゃない。
もう一度、言うけど、画面に出すことは更新じゃないよ。

けんじ 2003/09/02(火) 20:18:48
すいません。そのやり方がわからないのです。

とおりすがり 2003/09/02(火) 20:22:20
a[]が何者かも書いてないからようわからんが、iとかcountとかの変数を更新してるのと同じ
ように、配列の中身a[ほにゃらら]を更新すればいいじゃない。四則演算でも何でも。
forが二重になってるのも、よくわからんが…

けんじ 2003/09/02(火) 20:27:09
int count;
for(count=0; count<MAX; count++){//訂正 )
for(i=0;i<MAXa;i++){
a[i]=a[i]+i;//更新処理
}
for(i=0;i<MAX;i++){
printf("%f\n", a[i]);//aの出力 
}
}
この様なものです。実際にforループを使ってまではイメージができるのですが、出力を
配列にすることができません。
参考をいただけませんか?

とおりすがり 2003/09/02(火) 20:32:07
出力を配列にするってのが、意味不明です。
あなたがやりたいこと(画面に出したいもの?)を明確にして下さい。
(自分語でしゃべらんように)

けんじ 2003/09/02(火) 20:35:09
お手数かけます。
a[i]に格納された出力結果を利用したいです。
この後それを利用してプログラムを続けたいです。

とおりすがり 2003/09/02(火) 20:42:44
> a[i]に格納された出力結果を利用したいです。

ここがまだ意味不明なんだけど、a[i]に格納されているのは"出力結果"じゃなくて、ただの
数値。それを出力してるだけ。
だから、printfで出力しようが、a[i]の中身は入ったまま。その後もそれを使えばいいだけ。

けんじ 2003/09/02(火) 20:48:14
countをしてa[i]を更新していますからその更新されたものが今のprintfですと縦に出力
するようになっているとおもいます。このcount処理を終えた後にa[i]を取り出す方法を
教えていただきたいのです。私の場合、まったく持ってうまくいきません。

とおりすがり 2003/09/02(火) 20:52:37
だからー、言ってることがわからないのよ。
「取り出す」って何?
次の計算に使いたいなら、a[i]として取り出せるでしょ?
画面出力が欲しいなら、欲しい出力を図で説明するとか、"仕様"を明確にして下さい。
何度も言いますが…

joan 2003/09/02(火) 21:00:23
よくわからんのですが、題名から察するにコマンドプロンプトに表示された結果
を取りたいのでしょうか?

けんじ 2003/09/02(火) 21:07:12
説明不足ですいません。
JOANさんのおっしゃるとおりコマンドプロンプトに表示された結果を利用したいので
す。
#include <stdio.h>
#include <string.h>


int main()
{
    int a[5]={1, 2 ,3 ,4, 5 };
    int i;
    
    int count;
for(count=0; count< 50; count++){

for(i=0;i<5;i++){
a[i]=a[i]+i;//更新処理
}
for(i=0;i<5;i++){
printf("%d\n", a[i]);//aの出力 
}

    }//count

    return 0;



//ここからa[i]を利用したいのですがうまくいきません

}//main

とおりすがり 2003/09/02(火) 21:09:49
つまり、出力結果を違うプログラムから利用したいってこと?
だったら、画面じゃなくてファイルに出力して、違うプログラムからそのファイルを読み込む
のが手っ取り早いでしょう。

けんじ 2003/09/02(火) 21:10:27
通りすがりさんのおっしゃるとおりなのですが、新たに配列を設けてどうしても利用し
たいのです。

けんじ 2003/09/02(火) 21:11:49
いい案があればご助言をいただきたいのです。

とおりすがり 2003/09/02(火) 21:12:00
って、やっぱり同じプログラムでいいのか。
return 0;をした時点で、main関数から抜けてプログラムは終了します。
まだ処理を続けたいなら、returnせずに、処理を書きつづければいい。
さっき言ったとおり、a[i]の中身はそのままなんだから。
計算途中でも何でも好きなところで、いくらでも値を出力してみるもよし。

けんじ 2003/09/02(火) 21:18:09
そうですおっしゃるとおりmain内ではどこでも表示できると思うのですが、
カウント外の配列の出力が分からないのです。
この場合だとどうなりますか。
すいません。手間をおかけしまして。

とおりすがり 2003/09/02(火) 21:28:20
…「カウント外」(<=自分語)ってのは、for(count=0; count< 50; count++){ … }の外の
こと?
このfor文の外で、a[1]とか出力してみた?

っと、ここまで書いてなんとなく思ったが、a[i]とか書いてる?
forを抜けた時点でのiの値は5。で、a[5]として準備した配列はa[0]〜a[4]が有効なのです。
もしかして、そういう話?

けんじ 2003/09/02(火) 21:31:41
そういうことです。
カウントの範囲外での配列の出力が分かりません。
その為、コマンドプロンプトの出力結果が取れれば・・と考えたのですが・・。
この場合、カウント外(ご理解ください)での出力はどうすればよろしいのですか?

とおりすがり 2003/09/02(火) 21:41:55
コミュニケーションとは双方向なものです。
> このfor文の外で、a[1]とか出力してみた?
こちらの問いに答えて下さい。あと、後半に書いた私の推測はどうなんでしょうか?

…何を試して出来ないと判断したのか。
カウント外で同じ出力処理をもう一度やってみて、出来なかったとか。
試したソースを示せば、一発で助言できるだろうに。

けんじ 2003/09/02(火) 21:48:37
> このfor文の外で、a[1]とか出力してみた?
しています。
ただ、カウント外での配列処理が分からず困っています。
多分カウントの関係と思うのですが、単純にカウントの外でa[i]の値を得ようとしても
得ることができません。
>カウント外で同じ出力処理をもう一度やってみて、出来なかったとか。
>試したソースを示せば、一発で助言できるだろうに。
カウントを考慮したa[i]の出力を教えていただきたいのです。
分からないのです。

RAPT 2003/09/02(火) 23:27:02
こういうこと?

#include <stdio.h>        /* printf */

int main()
{
    int a[]={ 1, 2, 3, 4, 5, };
    int i;
    int count;
    for(count=0; count< 50; count++){
        for(i=0;i<5;i++){
            a[i]=a[i]+i;
        }
        for(i=0;i<5;i++){
            printf("%d\n", a[i]);
        }
    }

    printf("*** countループ外 ***\n");
    for(i=0;i<5;i++){
        printf("%d\n", a[i]);
    }

    return 0;
}

とおりすがり 2003/09/03(水) 01:53:33
>> このfor文の外で、a[1]とか出力してみた?
>しています。
>ただ、カウント外での配列処理が分からず困っています。

いい加減に答えないで下さいよ。
for文の外で出力「しています」ってことは、カウント外での配列出力処理がわかった
ってことでしょ?

>カウント外で同じ出力処理をもう一度やってみて、出来なかったとか。

RAPTさんが書いたように、カウント外で"同じ処理"をもう一度やってみろって言ったん
だけど…
しかも「カウントを考慮したa[i]の出力」ってのが、また自分語だし。
あなたが考慮したい「カウント」って何のことなの?
説明できないなら、せめてfor文の外で実際に出て欲しい出力例でも示せばいいのに…

ぺん 2003/09/03(水) 02:04:08
とおりすがりに一言。うっさい!
だいたい、質問半分中傷半分やん。それに質問は的確にしてくれ。ちなみにけんじじゃないで.

こん! 2003/09/03(水) 02:05:57
こんなのとか?

#include <stdio.h>        /* printf */

int main()
{
    int a[255]={ 1, 2, 3, 4, 5, };
    int i;
    int count;
    for( count = 0; count < 50; count++ ){
        for( i = 0; i < 5; i++ ){
            a[count * 5 + i] = a[count * 5 + i] + i;
            printf("%d\n", a[count * 5 + i]);
            a[(count + 1 ) * 5 + i] = a[count * 5 + i];
        }
    }

    printf("*** countループ外 ***\n");

    // a[0]からa[249]に画面に表示された更新履歴がすべて残っているので煮るなり焼
    // くなりお好きにどうぞ

    return 0;
}

PAI 2003/09/03(水) 02:06:27
いや、しかし『自分語でしゃべるな』とかは、かなり的確なアドバイスだと思うが。

こん! 2003/09/03(水) 02:12:20
それにこれと言って中傷と思われる部分も無いような気がする。

ぺん 2003/09/03(水) 02:13:57
ふ━━( ´_ゝ`)━( ´_ゝ`)━( ´_ゝ`)━━ん

wood 2003/09/03(水) 07:49:02
話の流れを無視しての回答です
気に入らなければ黙殺してください
--------------------------------------------------------------------
質問の原文
>int count;
>for(count=0; count<MAX; count++){//訂正 )
>for(i=0;i<MAX;i++){
>printf("%f\n", a[i]);//aの更新 
>}
>}
>このようなaの配列が更新されてできたものはコンソール画面に出力されます。
>この結果をそっくりそのまま配列として利用したいです。
-------------------------------------------------------------------
>printf("%f\n", a[i]);//aの更新 
1.この処理では配列 aの内容は更新されることはありません
 ご理解できてますでしょうか?

2.勝手な解釈として
  printfを使ってコンソールに出力された内容
  例)a[i]の内容が「1234」だったとして
    コンソールには
    A:>1234「改行」
    A:>
    のように出力されるはずです
  このような視覚的値(文字列)となったものを利用したいのだと解釈すれば
  sprintf を利用すれば良いのではないのでしょうか


------------------------------------------------------------------
  struct XX {char CH[256] ;<-妥当な桁数はご自分で設定してください
            }
  struct XX XX2[MAX];

int count;
for(count=0; count<MAX; count++){//訂正 )
for(i=0;i<MAX;i++){
srintf(XX2[i].CH,"%f\n", a[i]);//aの更新 
}
}
------------------------------------------------------------------
のように変更すればコンソールに出力される値は利用可能になると思いますが
どうでしょうか
後続の処理でXX2[i].CHを利用すれば問題解決にならないのでしょうか
  

最後に白熱した討議は大いに結構ですが
「ぺん 2003/09/03(水) 02:13:57」
他人のスレッドを雑談掲示板にしてしまうのはやめましょう


>PAI 2003/09/03(水) 02:06:27
>いや、しかし『自分語でしゃべるな』とかは、かなり的確なアドバイスだと思うが。
は確かに同意を得ますが表現力の乏しい人にとってはそれが精一杯なものとして解釈
してあげるのも必要だと思います

私も「自分語」でこのラウンジ結構利用させていただいていますよ

Kazuki 2003/09/03(水) 08:47:54
けんじさんが"カウント外でのa[i]の出力"をしようとして
うまくいかなかったコードをここに書けば解決は早いような
 
こうしたらうまくいかなかったのかな?

// countのforループの終わりまでは省略
  
  return 0;
  
  for(i = 0; i < 5; i++ ) {
    printf("%f\n",a[i]);
  }
}

けんじ 2003/09/03(水) 11:11:33
皆様本当にたくさんのアドバイス有難うございます。
私の質問能力の問題だったと思います。
本来はソースを載せれば、皆様に一番理解していただけたのですが
大きなプログラムの中からの一部・・・正直表現に困っていました。
私の下手糞の説明の中でも応対有難うございました。
皆様の御助言全てが役立ちました。
結局、私が実際に行いたかった事はコン!さんがおっしゃってくれたような事です。
皆さん有難うございました。

けんじ 2003/09/03(水) 11:11:51
[[解決]]
解決です。

古いスレッドには追加発言できません。