C言語なら俺に聞け(入門篇) Part 4

このエントリーをはてなブックマークに追加
952928:2006/11/30(木) 23:15:59
>>950
確かにそうですね。ありがとうございます。
しかし下のエラーが出てしまいます。初心者ですいません。

error C2440: '=' : 'unsigned char' から 'unsigned char [3]' に変換できません。

>>951
ppm形式の画像を出力して表示したいと言うことです。
ちなみにソフトはACDSee v3.1vです。
953デフォルトの名無しさん:2006/11/30(木) 23:17:46
>>952
宣言部もちゃんと変えた?

画像の問題じゃなくて配列がまともに扱えないだけじゃないのか
954デフォルトの名無しさん:2006/11/30(木) 23:36:12
ttp://up.img5.net/src/up1054.txt
ここまで進めていて、どこがおかしいのか分からなくなってしまいました。
実行値が正しくない上にエラーとなってしまいます。
よければどの辺がおかしいか教えてください。
955デフォルトの名無しさん:2006/11/30(木) 23:37:32
>>952
g[v][c]=f[v][i][c];

g[v][0][c]=f[v][i][c];
とすればいいじゃない?

とりあえず画像をどうこうしたいなら多次元配列の勉強を先にしたほうがいい。
>error C2440: '=' : 'unsigned char' から 'unsigned char [3]' に変換できません。
これで困っているようなら、多次元配列を扱うのも早すぎる気がする。
956928:2006/11/30(木) 23:43:14
>>953
その通りです。

>>955
解答ありがとうございます。
地道な努力をしようとしなかった自分が甘ちゃんでした。
勉強して出直してきます。
957デフォルトの名無しさん:2006/12/01(金) 10:28:08
>勉強して出直してきます。
やっぱ最初から答えが聞きたかっただけじゃねえか
958デフォルトの名無しさん:2006/12/01(金) 15:01:16
cpadだとファイルの入出力ができないんですか?
959デフォルトの名無しさん:2006/12/01(金) 15:08:13
>958
できます
960デフォルトの名無しさん:2006/12/01(金) 15:19:55
2進数で入力した文字を16進数で出力するにはどうやればいいんですか?
961デフォルトの名無しさん:2006/12/01(金) 15:22:18
16で割ればいい
962デフォルトの名無しさん:2006/12/01(金) 15:25:12
>960
printf("%x", n);
963デフォルトの名無しさん:2006/12/01(金) 15:48:46
>>962
二進数文字列だからそれじゃダメ。

printf("%x",strtol(str,NULL,2));
964767:2006/12/01(金) 20:02:15
少し話題がずれるかもしれないのですが
皆さんはCをどのくらいの期間勉強してるんですか?
965デフォルトの名無しさん:2006/12/01(金) 21:29:21

1〜10までの乱数を10個発生させて表示させる。ただし、1度出た数字は除外する」
という課題を出されたのですが、教科書を見ながら解いても
 同じ数字が重複して表示されてしまうプログラムになってしまいどうしていいかわかりません。 
どなたか教えていただけませんでしょうか
966デフォルトの名無しさん:2006/12/01(金) 21:38:14
>>965
同じ数字が重複して表示されることを許してるからじゃないの?
967デフォルトの名無しさん:2006/12/01(金) 21:39:48
>965
1.チェック用の配列を用意して既に選んだものを選ばないようにする。
2.一つの数字を選ぶたびにその数字を抜き取って配列を詰めなおし、そこから選ぶ
968デフォルトの名無しさん:2006/12/01(金) 21:48:43
3. 1-10の数字が並んでいる配列を用意し、乱数で(要素同士を入れ替えるなどして)適当に並べ替える。
969デフォルトの名無しさん:2006/12/01(金) 21:54:06
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
int i , n;
srand((unsigned)time(NULL));
printf(0〜10:\n");
for (i=1; i<=10;i++)
printf("%d",rand());
としてみたのですが重複してしまいます
970デフォルトの名無しさん:2006/12/01(金) 21:57:37
971デフォルトの名無しさん:2006/12/02(土) 00:05:33
C仕事にしようとする場合、数学の知識はどの程度必要でしょうか?
972デフォルトの名無しさん:2006/12/02(土) 00:08:54
いるのは精神力と体力と忍耐力
973ぴゅあ:2006/12/02(土) 00:24:54
>>969
>としてみたのですが重複してしまいます

それが
>ただし、1度出た数字は除外する
で"やりなさい"と言われている部分のことになるのではないですか?
重複してしまうというのはそこをやっていないから…というところは把握できてます?

楽に(&効率良く)片付けるには>>967-968の言っている中で3のような手段がいいだろうと思うけど
最初(初歩的?)な段階のロジックを理解させようとしているのだとすれば1のような手段かも知れないと思ったりもするけど…

或いは各々がどんなロジックを考え出すかというようなことを求めているものなんでしょうか

あるロジックの考え方の理解を深めるために出された課題だとするなら
答えを導き出す元になるものがその中には足りないようにも思えるし
その中>{1〜10までの乱数を10個発生させて表示させる。ただし、1度出た数字は除外する。}

その課題が出される前にあった講義の中にそれがあったりはしないんでしょうか
(講義の中で出された課題ということですし
どういう経緯でその課題が出されたかに沿ってないと答えを提出しても通らないと思ったりもするので…)
974デフォルトの名無しさん:2006/12/02(土) 00:28:01
ロジック(・∀・)まで読んだ
975デフォルトの名無しさん:2006/12/02(土) 00:30:25
答える必要ないよ
2chから個人サイトまでマルチポストしまくり
976デフォルトの名無しさん:2006/12/02(土) 00:32:51
C言語を作るのにおすすめのフリーソフトはありませんか?
977デフォルトの名無しさん:2006/12/02(土) 00:35:24
yaccとflex。
978デフォルトの名無しさん:2006/12/02(土) 00:50:03
yaccとbisonてどこが違うの?
979デフォルトの名無しさん:2006/12/02(土) 00:53:23
>>978
yaccは生で食べれない
bisonは刺身で食べれる

あと仕入れ値がbisonはyaccより1.8倍ぐらい高め
980デフォルトの名無しさん:2006/12/02(土) 00:55:00
flexのDL場所がみつからないよ
981ぴゅあ:2006/12/02(土) 00:55:42
>>975
そか・・・
982デフォルトの名無しさん:2006/12/02(土) 01:06:49
>>980
ttp://www.nagoya-fantasia.com/pc/
ここにミラーあったよ
983デフォルトの名無しさん:2006/12/02(土) 01:16:20
>>982
アッー!!
984デフォルトの名無しさん:2006/12/02(土) 01:21:39
そろそろ誰か次スレたてようね〜
985デフォルトの名無しさん:2006/12/02(土) 02:06:30
>>976
それがコンパイラが欲しいという意味なら
ttp://bdn.borland.com/museum/
ここにある Turbo C 2.01 が最高にオススメ。
統合開発環境があった方がいいというなら Turbo C++ 1.01 という選択肢もアリ。
986デフォルトの名無しさん:2006/12/02(土) 05:45:30
>>976
日本語なら文法や意味があいまいだったり間違えて書いたりしても
読む側が推測してある程度は理解してもらえるけど、
C言語のコンパイラはそんなことないからな。
頑張れ。
987デフォルトの名無しさん:2006/12/02(土) 06:01:20
これ、もっと効率良い書き方ありませんか?

fprintf(output2,"%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",bin[0],bin[1],bin[2],
bin[3],bin[4],bin[5],bin[6],bin[7],bin[8],
bin[9],bin[10],bin[11],bin[12],bin[13],
bin[14]);
988デフォルトの名無しさん:2006/12/02(土) 06:06:32
>>987
int i;
for (i = 0; i < 15 - 1; i++)
  fprintf(output2, "%d\t", bin[i]);
fprintf(output2, "%d\n", bin[i]);
989デフォルトの名無しさん:2006/12/02(土) 06:17:48
ごめん、説明不足だった。
>>988 のは立に数値が保存されてくじゃないですか。
1  2  3  4  みたいに
横に並べて保存したいのです。
FILE *output2;
output2=fopen("1ca_dist.dat","a");
てしたので、シミュレーションする毎にデータに追加されて、
何十回かシミュレーションして各ビンの平均値を出したいのですが。
なにか、うまいこと出来ないかのう?
990デフォルトの名無しさん:2006/12/02(土) 06:28:21
>>989
>>988試してみて言ってるのか?
991デフォルトの名無しさん:2006/12/02(土) 06:44:27
アーー
992デフォルトの名無しさん:2006/12/02(土) 06:46:11
ごめん、そんなんでOKだったとは知らなかった。
993デフォルトの名無しさん:2006/12/02(土) 07:01:06
>987を書くような人間が>988をそんなんてw
994デフォルトの名無しさん:2006/12/02(土) 07:08:31
こりゃ将来苦労するタイプだな。人の意見がなかなか耳に入らない奴。
早とちり。
995デフォルトの名無しさん:2006/12/02(土) 07:13:45
int main(void) {
  int yorn[10];
  int i;

  for (i = 0; i < 10; i++) {
    yorn[rand()-1] = 1;
  }

  for (i = 0; i < 10; i++) {
    if (yorn[i] == 1) {
      printf("%d\t", i);
    }
  }
}

//rand()のところは1-10を生成するようにする
996デフォルトの名無しさん:2006/12/02(土) 08:17:29
そういや、次スレは?
997デフォルトの名無しさん:2006/12/02(土) 10:18:50
C言語なら俺に聞け(入門篇) Part 5
http://pc8.2ch.net/test/read.cgi/tech/1165022193/l50
998デフォルトの名無しさん:2006/12/02(土) 12:46:31
>995
何がしたいのかわからん
999デフォルトの名無しさん:2006/12/02(土) 13:06:58
>>998
を悩ませたいんだと思う
1000は譲るよ
1000デフォルトの名無しさん:2006/12/02(土) 14:16:44
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。