X



C言語なら俺に聞け 144

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 838a-3nWA)
垢版 |
2017/12/23(土) 19:33:43.89ID:dghfoRy20
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


http://mevius.5ch.net/test/read.cgi/tech/1509107288/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0598デフォルトの名無しさん (アウアウエー Saf2-qxBm)
垢版 |
2018/01/30(火) 18:07:51.62ID:zy+7iaPqa
これはひどい
0603デフォルトの名無しさん (オッペケ Srab-9Pjq)
垢版 |
2018/01/30(火) 21:14:33.45ID:YzkDukp0r
これは苦しいwwwww
0607デフォルトの名無しさん (オッペケ Srab-9Pjq)
垢版 |
2018/01/31(水) 07:53:31.27ID:OVj1tDHAr
>苦しんで覚えるC言語(苦C)は、初心者を対象としたC言語入門サイトです。
>C言語の基本機能を体系立てて解説しており、市販書籍と同等以上の完成度です。

去年サイトリニューアルするまでは、項目はあるのにページが無いのとか結構あったし、完成してないのにこれで市販書籍以上の完成度とかよく書けるなw
0608デフォルトの名無しさん
垢版 |
2018/01/31(水) 08:25:41.29
>>607
運営者本人が初学者だから苦しんでるんだろうなw
0612デフォルトの名無しさん (アウアウカー Sa33-bnsf)
垢版 |
2018/01/31(水) 10:23:38.93ID:H6iQ2Lk/a
体で覚えるしかないな

なんて、コンパイラにバグがあって変な風に覚えちゃったりしてw
0614デフォルトの名無しさん (ワッチョイ 5323-oJ1J)
垢版 |
2018/01/31(水) 11:31:00.48ID:S61vzQOK0
最近の書籍はあてにならない
著者も編集もレベル落ちてる
0615デフォルトの名無しさん (アウアウカー Sa33-bnsf)
垢版 |
2018/01/31(水) 12:50:06.35ID:lHClPcOQa
gccには騙されっぱなしです。
0616デフォルトの名無しさん (アウアウカー Sa33-bnsf)
垢版 |
2018/01/31(水) 12:52:56.34ID:lHClPcOQa
void * の変数に1を足しているのを見た時は驚きました。
0622デフォルトの名無しさん (ワッチョイ b3b3-MCTD)
垢版 |
2018/01/31(水) 17:47:56.79ID:4EcHtUfm0
1.5ストップビットみたいな 立ってるビットの総和で1シフトする/しないとかの条件付きかと思ったけど

ふと 2で割る演算を 右へ算術シフトする話のほうっぽい
0629デフォルトの名無しさん (アウアウカー Sa33-/a9j)
垢版 |
2018/01/31(水) 23:29:55.01ID:NqV1T3vca
https://i.imgur.com/yXsENPk.jpg
https://i.imgur.com/LhIHXaC.jpg

こちらになります。
一応これをC言語でやれというものなので、よろしくお願いします。
解き方の方針だけでも、、、

θをラプラス変換後、伝達関数と掛け合わせてから、逆ラプラス変換をするのかと思いましたが、そんなこと計算できませんでした。
よろしくお願いします。
0630愛知人
垢版 |
2018/02/01(木) 01:41:00.48
流石にラプラス変換をC言語でやれという問題じゃないと思う(´・ω・`)
手計算で(6)式に対する出力信号(tの関数)をωcを含む形で導いてから、適当な値を変数omagacにセットして出力信号を数値計算するのでは...?
0632愛知人
垢版 |
2018/02/01(木) 02:20:41.57
普通にやればできると思う。
0634デフォルトの名無しさん (ワッチョイ d78a-IOOI)
垢版 |
2018/02/01(木) 02:43:54.99ID:3G6Lk4x40
>>629
積分器の部分が面倒くさいな
単純に時間刻み値一段だけ遅延させてみたけどうまくcos波形にならない
何段遅延させればうまくいくかよく分からない
とりあえず方針としては、ブロック図を単純に差分方程式に落とし込んでやれば回答には辿り着けるはず
1/sの部分が積分器だから入力を適当に遅延させて出力させてやればいい
ラプラス変換云々は理論的な理解には大切だけど、プログラム的には最終的に差分方程式(数学的には微分方程式)の形に落とし込んでしまえばいいよ
もうここまでにして途中のソースだけ挙げておく
https://ideone.com/69YxIz
0635愛知人
垢版 |
2018/02/01(木) 02:49:41.29
部分分数分解なんか要らないと思うけど...
0636愛知人
垢版 |
2018/02/01(木) 02:52:06.51
ごめん、俺が知ってるやり方も部分分数分解だった。
でも手順に従うだけじゃ...?
http://lab.cntl.kyutech.ac.jp/~nishida/lecture/MathOfCntl/no5.pdf
0637デフォルトの名無しさん (アウアウカー Sa2b-2d+2)
垢版 |
2018/02/01(木) 12:27:50.14ID:Df+LK2Bma
>>634
伝達関数の使い方が、その方法じゃ分からないです…
勉強不足です。

>>635
θをラプラス変換したものを伝達関数と掛け合わせてから、逆ラプラス変換した結果がこうなりました。
T=ω/(ω^2+1)
P=0.1/ω^2+1000^2

と適当な文字において、
θ(t)'=T(-cos(t)+ωsin(t)+e^(-ωt))+
P(-cos(t)+ωsin(1000^(2)×t)/1000^(2)+e^(-ωt))
となりました。
これをtを0.001秒毎に、0〜10まで出していけばいいんですよね?
自分でやってみたんですけど、tが0.001秒毎に変わっていかなくて途方にくれてます。
多分簡単なことなんで、コードをお願いします。
0639愛知人
垢版 |
2018/02/01(木) 15:22:38.94
>>637
計算結果が間違ってる(>_<)
0640デフォルトの名無しさん (ワッチョイ 9f37-j4Dg)
垢版 |
2018/02/01(木) 15:39:24.12ID:sLGIVvbi0
int main()
{
int a;
a=1;
sumNum(&a);
printf("%d\n",a);//13

char str;
sumStr(&str);
printf("%c\n",str);//□
}

void sumStr(char* str){
*str ="a";
}
int sumNum(int * num){
*num=*num+12;
return 0;
}
なぜ変数strの出力が"a"と表示されないのですか?
0642愛知人
垢版 |
2018/02/01(木) 15:48:38.02
"a"は{'a', '\0'}へのポインタ
'a'は文字のa
0646愛知人
垢版 |
2018/02/01(木) 18:41:02.74
>>644
仮に文字列リテラルの式の値の型がポインタじゃないとして、それらが何故その根拠になるのか分かりません(>_<)
0649愛知人
垢版 |
2018/02/01(木) 18:48:48.23
>>648
文字列リテラルは定数なのでそれは分かります(>_<)
0651愛知人
垢版 |
2018/02/01(木) 19:08:28.37
ポインタ変数にリテラルを代入した場合は...?(>_<)
0655愛知人
垢版 |
2018/02/01(木) 19:16:30.75
>>652 ?ʕ•ᴥ•ʔ?
0657愛知人
垢版 |
2018/02/01(木) 19:18:03.81
>>654
これは分かりました(>_<)
配列の変数はポインタと同じようで違うんですね(>_<)
0658デフォルトの名無しさん (アウアウウー Sa5b-wbgk)
垢版 |
2018/02/01(木) 21:16:29.83ID:bg4M2KC6a
>>640
void sumStr(char* str){
*str ="a";
}

これ、strはcherのポインタでありその指す先はchar型だ。
"a"は 'a', '\0' と並んで入っている先を指すポインタだ。

*str は char 型で、"a" は char * 型だ。型が違う。

これが例えば *str = 'a'; だったり、あるいは *str = *"a"; だったりすれば型も一致するし目的の値の代入に成功するだろう。
(まあしかし普通は *str = *"a"; なんて書き方しないけどな)。
0661659 (ワッチョイ ff80-g5j1)
垢版 |
2018/02/01(木) 23:02:59.65ID:iw8YX/Ps0
ポインタ・文字列を、図解して説明している

"abc" なら、"abc\0" みたいに4バイトになるとか
0666デフォルトの名無しさん (アウアウウー Sa5b-wbgk)
垢版 |
2018/02/03(土) 01:07:56.65ID:uJsu8afca
これからC言語始めます自分で色々と調べたけっかこの2つが残りました
どちらがいいでしょうか?アドバイス下さい。それやめとけなんて話もあればお聞かせ下さい

1,「C言語プログラミング」(ハーベイ・M. ダイテル/ポール・J. ダイテル 、ピアソン)
2,プログラミング言語C 第2版 ANSI規格準拠 B.W. カーニハン (著),? D.M. リッチー
0667デフォルトの名無しさん (アウアウエー Sadf-EZPO)
垢版 |
2018/02/03(土) 04:53:07.36ID:pNC8Ba1va
gcc
0668デフォルトの名無しさん (ワッチョイ ff80-g5j1)
垢版 |
2018/02/03(土) 06:09:55.21ID:5C9YCfZr0
巨匠の柴田望洋・林 晴比古とか、
「猫でもわかるC言語プログラミング 第3版」粂井(くめい)康孝、2013

古い本だと、例題の開発環境が古いから、動かせないだろ

「c言語 入門書 おすすめ」で検索!
0670デフォルトの名無しさん (ワッチョイ 57b3-iQWu)
垢版 |
2018/02/03(土) 10:38:20.76ID:zCLT35Li0
>>666
新しいことを学ぶときは
・バイブル的な本(K&R第2版)
・初心者向け
の組み合わせで。
片方だけではダメ。
0671デフォルトの名無しさん (ワッチョイ 77c9-VW3n)
垢版 |
2018/02/03(土) 12:45:56.09ID:YTn5lucX0
ちょっと教えてくらさい。

最近Cを書くことが多くなったんですけど

#include <Includes/General.h>
#include "Includes/General.h"

これって、本来の動作的に厳密には何か違いがあるんですか?
0673デフォルトの名無しさん (ワッチョイ 179d-duq4)
垢版 |
2018/02/03(土) 13:23:39.69ID:iWk8ZVwf0
>>671
#include <> はコンパイル環境指定のインクルードディレクトリから探索
#include "" はインクルードしたファイルのあるローカルディレクトリを先に探索してから環境のインクルードディレクトリを探索

つまり自分で今作ってるプログラムのヘッダファイルは#include ""を使わないと他人の同名のファイルをインクルードするかも知れない。
0674デフォルトの名無しさん (ワッチョイ 77c9-r4To)
垢版 |
2018/02/03(土) 14:54:39.21ID:YTn5lucX0
>>672-673

そういう事ですか、なるほど。
詳しくありがとうございました。勉強になりました。
0676デフォルトの名無しさん (ワッチョイ 179f-A9+C)
垢版 |
2018/02/03(土) 17:23:23.11ID:VDv79Nx+0
>>666
1は知らんけど2は絶対に読んだほうが良い本だと思うよ。
0679デフォルトの名無しさん (エムゾネ FFbf-EZPO)
垢版 |
2018/02/03(土) 19:06:23.67ID:VzdMwW3vF
いくら本読んでも本に頼ってるうちは初心者
書いて書いて書きまくってエラー出しまくって経験積め
0684デフォルトの名無しさん (ワイモマー MM5b-Rd6c)
垢版 |
2018/02/04(日) 11:15:43.36ID:snv+Mm9gM
>>168
トイプログラムはそうなるかもな。
0685デフォルトの名無しさん (ワッチョイ d7c3-YYog)
垢版 |
2018/02/04(日) 12:44:06.41ID:TVUXtLT70
初心者です。参考書を読んで勉強していたのですが
「浮動小数点数の利点は、一定の有効桁数(精度)の範囲内で、小さな数から大きな数まで表現できることです」(分かりやすいC入門編:川場隆)
とあったのですが、どういう意味か分かりま出んでした。
ネットで調べても同じようなことしか書いてなくて。浮動小数点数の利点を教えてください。
0686デフォルトの名無しさん (アウウィフ FF5b-EZPO)
垢版 |
2018/02/04(日) 12:49:52.12ID:D/BHnVHFF
利点と欠点が同時に書かれてるな
0687デフォルトの名無しさん (ワッチョイ 57b3-iQWu)
垢版 |
2018/02/04(日) 12:53:55.66ID:9kHA/gVX0
>>685
123,000,000,000=123×10^9

右辺の方がコンパクトだろ?
0689デフォルトの名無しさん (ワッチョイ d7c3-YYog)
垢版 |
2018/02/04(日) 13:24:01.43ID:TVUXtLT70
>>686
というと?
>>687
では、数字が少数になったらどうなんでしょうか?
例えば12469125478.945→1.2469125478945×10^10。これでコンパクトになっていると言えるのでしょうか?
>>688
すいません。固定小数点数と比べて、です。
0693デフォルトの名無しさん (ワッチョイ 57b3-iQWu)
垢版 |
2018/02/04(日) 13:36:20.20ID:9kHA/gVX0
二進数32ビットで123,000,000,000は表せないけど、
32ビットを符号部、指数部、仮数部に分けると表現できる。
有効桁数は仮数部のビット数で決まる。
0694デフォルトの名無しさん (ワッチョイ ff80-g5j1)
垢版 |
2018/02/04(日) 13:40:30.68ID:ue7FPdZ+0
例えば、8ビットなら、2^8 通り、0〜255 しか表現できない

それを5ビットにして、残りの3ビットを桁をずらす機能にすると、
2^5 通り、0〜31 しか表現できないけど、

残りの3ビットで、0〜7 を表現できるので、それをずらす桁とすると、
7桁ずらせば、310,000,000 を表現できる

だから精度は減ったけど、桁をずらせるようになったから、
非常に小さな数や、大きな数を表現できる

桁をずらす部分は、指数部という。
実際には、10進数ではなく、2進数でずらしていく
0695デフォルトの名無しさん (ワイモマー MMbf-aajP)
垢版 |
2018/02/04(日) 13:43:30.54ID:uz8VZN5uM
初心者質問おねがいします。

二つのunsigned char型があり、
一つ目が 0b10001000 で、
二つ目が 0b01110111 です。
これを合わせて 0b10001000 となる計算式はどうすればいいですか?
よろしくおねがいします。
■ このスレッドは過去ログ倉庫に格納されています