C/C++の宿題を片づけ作戦指令 30代目

このエントリーをはてなブックマークに追加
927デフォルトの名無しさん:04/09/13 15:05:23
>>925
中卒プログラマはこれだから(ry
928デフォルトの名無しさん:04/09/13 15:07:05
すいませんこのようなプログラムを作ったのですがいろいろいじっても動かないのです。
#include <stdio.h>

void main()
{
FILE *fp;
char str;

fp=fopen("test.txt","r");

if(fp==NULL){
printf("ファイルのオープンに失敗しました。\n");
}
else
{
while (feof(fp)!=0)
{
fscanf(fp,"%s",str);
printf(str);
}
}
}
feofはEOFになると0を返すようなので返さない間ファイルを読んで表示させたいのですが
何も表示されませんでした。
どなたかご教授願います・・
929デフォルトの名無しさん:04/09/13 15:08:11
あ、すいません半角スペースは消えてしまうのを忘れていました見づらくて申し訳ありません。
930デフォルトの名無しさん:04/09/13 15:09:30
>>927
>>1

>>928
逆。 while(feof(fp)==0){
931デフォルトの名無しさん:04/09/13 15:13:03
>>928
char型の値を読み込むときは%cを使え。%sはcharへのポインタを渡す必要がある。
たぶんやりたいのはこうだと思う。
while (feof(fp) != 0)
{
  fscanf(fp, "%c", str);
  printf("%c", str);
}
だけどただ単に1文字ずつ読み込んで表示したいのなら、fscanf/printfよりもfgetc/putcharの方がいい。
932デフォルトの名無しさん:04/09/13 15:25:08
930 _| ̄|○名にやってんだ折れ…

>>928
char str[1024];
fscanf(fp, "%.1024s", str);
933デフォルトの名無しさん:04/09/13 18:18:38
C言語(RT-Linuxのプログラム)です。

------------------------------------

・・・

pthread_t theThread;

void *thread_code(void *t)
{
・・・
}


main()
{
・・・

pthread_attr_init (&attr);
sched_param.sched_priority = 4;
pthread_attr_setschedparam (&attr, &sched_param);
ret = pthread_create (&theThread, &attr, thread_code, (void *) 0 );

・・・
}

優先度4のスレッド(thread_code 0)を作る部分なのですが、

main の中のこの4行を、優先度、スレッド名、スレッド番号を持つマクロに変換するには
どのようにしたらよいでしょうか?
934デフォルトの名無しさん:04/09/13 18:26:14
>>933
attrは作業用変数か?
それだと不可能。
戻り値をマクロに引数として渡すか、マクロをやめて関数にすることを検討するといい。
935デフォルトの名無しさん:04/09/13 19:35:53
C言語の質問です
1、2、3の駆動するモーターとスイッチが1つあり
1のモーターだけが3秒間、2のモーターだけが3秒間
モーター1と2が同時に10秒間駆動し、この3つの動きははランダムに行われて
スイッチが押されると1、2は駆動を止めて3が5秒間駆動し、5秒後はまた同じ事が繰り返される
というプログラムをできるだけ簡単に作って下さい
936デフォルトの名無しさん:04/09/13 19:53:33
そのモーターとスイッチの制御方法を言え
937デフォルトの名無しさん:04/09/13 19:59:01
>935
何のOSで組んでいるのですか?
WindowsやLinuxではあきらかに不向きのようなきが
938デフォルトの名無しさん:04/09/13 20:01:06
宿題スレなんだから。実際に繋がってるわけじゃないだろ。
939デフォルトの名無しさん:04/09/13 20:08:28
>>937
組込みではOSが無しの場合も良くあるよ。
環境依存だし、もしここに書くなら環境をちゃんと書いてもらわないとダメかもね。
940935:04/09/13 20:16:36
スイッチは手動制御だと思います
PICを使ってやるんですが、自分では何がなんやら全く分かりません…
自分の専門学校のパソコンはウインドウズです
941デフォルトの名無しさん:04/09/13 20:18:52
>>940
そうか。
二度と来るな。
942デフォルトの名無しさん:04/09/13 20:31:00
>>940
氏んでください。
君のPCに入っているOSなんか聞いていません。
PIC使うにしても回路図が解からないとどのポートに出力するのか解かりません。
C使うにしてもどの処理系を使うのか書いてもらえないと実装できません。
PICにもいろいろあります。メジャーなのはPIC16F84とか?
一番の問題はスレ違いということですね。
逝ってよし
943デフォルトの名無しさん:04/09/13 20:31:36
まあまあ、そんなこと言うなよ。
944933:04/09/13 20:40:31
>>934
レスありがとうございます。
遅れてすみません。
attrが他で使用されないと仮定の上ではどうでしょうか?
945デフォルトの名無しさん:04/09/13 20:43:45
946デフォルトの名無しさん:04/09/13 20:45:20
>>945
↑は偽スレです。飛ばないように。
947デフォルトの名無しさん:04/09/13 22:04:45
二つの抵抗値をキーボードから入力し、並列接続したときの合成抵抗の値を求めて、
出力するプログラムを作成しなさい。なお、各抵抗値の入力は整数型で行い、
合成抵抗は実数型で小数第二位まで表示するものとする。

と、いう宿題がでたのですが

#include <stdio.h>
void main(void)
{
int i1;
int i2;
float i3=1/(1/i1+1/i2);
  printf("R1を入力してください→");
scanf("%d",&i1);
printf("R2を入力してください→");
scanf("%d",&i2);
printf("合成抵抗は %d です。",i3);
}

と、作ってみたのですがborlandのコンパイラでコンパイルすると
2エラーでてしまいます・・・・何が原因なのでしょうか?
948デフォルトの名無しさん:04/09/13 22:05:30
>>935
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=222&fi=no
モーターとスイッチの制御は勝手にやってくれ。
あと、unsigned int mode = 0, i;のiは消してくれ。
949いつもここから:04/09/13 22:08:35
>>947
バッカヤロー!ひき殺されてーのか!
i1,i2がまだ入力されてないのにi3計算してんじゃねーぞ!
950デフォルトの名無しさん:04/09/13 22:08:43
>>947
エラー名書けや氏ねボケカス
#include <stdio.h>
int main(void)
{
int i1;
int i2;
float i3;
  printf("R1を入力してください→");
scanf("%d",&i1);
printf("R2を入力してください→");
scanf("%d",&i2);
i3=1.0/(1.0/i1+1.0/i2);
printf("合成抵抗は %d です。",i3);
return 0;
}
951デフォルトの名無しさん:04/09/13 22:09:56
間違ったじゃねえかこのやろう
printf("合成抵抗は %f です。",i3);
952いつもここから:04/09/13 22:10:15
>>948
バカヤロー!
i3はfloatだろうが!
printf("合成抵抗は %f です。",i3);
953デフォルトの名無しさん:04/09/13 22:11:20
>>952
どこにレスしてんだおまえは
しかもおせえんだよ
954デフォルトの名無しさん:04/09/13 22:14:55
>>947
double から float に変換してんじゃねーよクソボケ
#include <stdio.h>
int main(void)
{
    int i1;
    int i2;
    double i3;
    printf("R1を入力してください→");
    scanf("%d",&i1);
    printf("R2を入力してください→");
    scanf("%d",&i2);
    i3=1.0/(1.0/i1+1.0/i2);
    printf("合成抵抗は %f です。",i3);
    return 0;
}
955947:04/09/13 22:17:39
>>950 951 952
ありがとうございました!!
エラー名かきわすれ申し訳ございませんでした・・・

さっそく修正してみたいと思います。

956954:04/09/13 22:18:40
>>955
オレにはお礼なしかよチンカス
957デフォルトの名無しさん:04/09/13 22:19:06
すいません、>>933>>944ですが、
どなたか回答をいただけないでしょうか・・・?
よろしくお願いします。
958デフォルトの名無しさん:04/09/13 22:20:35
>>957
極力マクロを使うな。inlineで十分だろ。デバッグやりにくいし。
マクロにしないと駄目な理由を書いてくれ。
959デフォルトの名無しさん:04/09/13 22:24:51
Cだからinline不可でわ?
960947:04/09/13 22:27:33
>>956
すいません、入力してるときにカキコマレタようでみてませんでした・・・
961デフォルトの名無しさん:04/09/13 22:28:04
>>959
ああ、inlineの使えないCもあったんだった・・・
962デフォルトの名無しさん:04/09/13 22:33:11
>>959
ハァ?
963933:04/09/13 22:45:19
>>958
では inline を使うとどのようにできるのでしょうか?
すみません・・・
964デフォルトの名無しさん:04/09/13 22:48:05
>>963
関数の頭にinlineをつける
965デフォルトの名無しさん:04/09/13 22:50:12
>>963
調べたりする気のないヤツはプログラムするな
966デフォルトの名無しさん:04/09/13 23:04:15
>>965
禿同
967933:04/09/13 23:14:49
>>964-966
少し調べてみました。みなさん、レスありがとうございます。
inline はC++のようですが、Cでも使えるのでしょうか?
そこが心配なのですが・・・

例えば>>933だと

以下のようにnew というinline関数を定義すると

pthread_attr_init (&attr);
sched_param.sched_priority = 4;
pthread_attr_setschedparam (&attr, &sched_param);
ret = pthread_create (&theThread, &attr, thread_code, (void *) 0 );

は、どのように使用すればよいのでしょう?

--------------------------------------------

pthread_t theThread;

inline int new(priority, thread, number)

void *thread_code(void *t)
{
・・・
}

main()
{
・・・
}
968デフォルトの名無しさん:04/09/13 23:17:19
>>967
それは調べたなどと言わない。
969デフォルトの名無しさん:04/09/13 23:24:04
Cでもinlineは仕様できます。
C99に対応したコンパイラなら。
970デフォルトの名無しさん:04/09/13 23:24:09
>>968
厳しいですね・・・(涙)
いろいろと調べてるのですが、なかなか分からなくて・・・
すみません・・・
971969:04/09/13 23:24:43
+ 使用
- 仕様
972デフォルトの名無しさん:04/09/13 23:59:32
>970
インライン云々の前にふつうの関数がわからんのではないかという疑念を抑えることができない
973マイク ◆yrBrqfF1Ew :04/09/14 07:44:00
inlineをつけると「俺はfunctionをinline展開してくれるように切望してる」と
コンパイラに対して意思表示ができる
974デフォルトの名無しさん:04/09/14 08:42:08
printfで出力で小数点第二位まで出力したいのですが%.2で正常に出力できますでしょうか?
975デフォルトの名無しさん:04/09/14 08:49:07
>>974
試しもしないでできるかどうか聞いているのか?
976デフォルトの名無しさん
Cでプログラムしてるんですが
虚数√-1ってどうやってやるんでしょうか
sqrt(-1)だとおかしくなってしまうんですが