- 1 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:02:46 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/
- 652 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 11:59:53 ]
- >>650
>Scenario.resize(500); もしかして: Scenario.reserve(500);
- 653 名前:650 [2007/08/01(水) 12:12:39 ]
- すいません、誤解を招きそうな書き方をしてしまいました。
『Buf自体にはちゃんと1行入っていて、Scenario.puch_back(Buf)が出来ていないようです』という意味でした。 本当にすいません。 >>651さん 念のため、他のメソッドで使っているイベントデータを読み込んでみましたがダメでした。 ちなみに、そのメソッドはchar型で格納して1行ずつ表示したり、それをstrtok()に掛けるなど の処理を行っています。こちらは動いています。 >>652さん リザーブしてもダメでした…… おそらく、文法がちゃんと理解出来ていないせいだろうと思いますが、 例によって何が間違っているのか分からないという状態に陥っています(´・ω・`) vector<string> a; a.reserve(500);と string a[500];は、ひょっとすると配列としてはほぼ同じですか?
- 654 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 12:20:59 ]
- 次の3つが、後にa[0]からa[499]までの要素が使えるという点で似たようなもの。
1. std::vector<std::string> a; a.resize(500); 2. std::vector<std::string> a(500); 3. std::string a[500]; push_backは現在の最終要素の後ろに追加するメンバ関数。 a.size()が500のときにpush_back(Buf)したら、 そのBufの内容はa[500]で参照することになる。
- 655 名前:650 [2007/08/01(水) 12:52:30 ]
- >>654さん
push_backの意味、理解出来ました!ありがとうございます。 ひょっとして、std::string Text[512];として、 Text[0]に1行目、Text[1]に二行目、という風に合計512行を 格納出来るんじゃないかという考え方は、そもそも間違っていますか? char型のa[10]とstring型のa[10]は、どちらも10バイト分の要素を持つ配列、 という意味になってしまうのでしょうか? てっきり、string型は1行を動的に格納出来る優れものだと思ってました…… 行単位で保持しようという考え方が、そもそも無茶なのでしょうか。 ここまできて、ようやく、『ひょっとするとファイルオープンしたままのほうが 面倒が少なくていいんでね?』とか思い始めてきました……(´・ω・`) ちなみに、リザーブせずにpush_backで継ぎ足していったら、要素を出力した瞬間に 『ハンドルされてない例外エラー』で停止しました……切ないです(´・ω・`)
- 656 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:03:43 ]
- >>655
stringは一行(というか可変長な文字列ひとつ)を扱うクラス。 stringの配列で、行ごとに扱うというのは別に間違ってないよ。 あと、reserveは使うとpush_backが早くなるかもしれないけど、 使わなくてもいいという代物。 reserveしないとエラーが出るというのは、別のとこに原因があるはず
- 657 名前:650 [2007/08/01(水) 13:19:33 ]
- >>656さん
ありがとうございます。 原因は、Scenario[0]を出力しようとしているところにありました。 そして、string型の要素が入ってるくせに、.c_str()が使えないようです。 諦めて、string Scenario[500]; にしてコードを適切に変えたら、 やりたかったこと(1行単位で格納)そのものは出来ました。 やはり、stringの考え方そのものは正しかったようです。 それはそれで嬉しいのですが、今度はvectorの使い方を理解出来ていないと いうことが発覚して、非常に悔しいです。 改めて、また全く別の質問をさせてください。 vector<string> a(10); と宣言しても、a. でリストに出てくるメソッドはvectorのもので、stringの .c_str()等が 使えないのはどうしてでしょうか? また、a[0].にいたっては、リストすら表示されません。 a[0]にはstring型のデータが格納されていると考えるのは間違っていますか? これが、string b[10];なら、b[0].c_str();が使えることは確認済みです。 てっきり、同じように扱える物だと思っていましたが、どうやら違うようです。 宜しくお願いします(涙)
- 658 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:38:24 ]
- いや、そんな感じだぞ。
vector<string> a(10);とすると、aは10個要素を持った状態になる。 a[0].でstringのメンバが出てこないのは、単にエディタが阿呆なだけだから諦めろ。
- 659 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:39:13 ]
- VC2005だとちゃんと表示されるぜ
- 660 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 14:06:47 ]
- VC2003だと所々怪しい。
ポインタと配列が組み合わさるとインテリセンスが働かないことがある。 VC6を使ってたときはもっとひどかった。
- 661 名前:650 [2007/08/01(水) 14:32:24 ]
- 皆さん、本当にありがとうございます。
泥沼に入り込んだような絶望的状況の中、優しさに泣けてきます。 コーディング専用に使ってる古いノーパソの方はVC++2002でしたので、 メインPCに入っているVC++2005ExpressEditionのほうにソースコード移して、プロジェクト作り直してみました。 (2002と2005で互換性無いみたいで、余計なトラブル防ぐためです) すると……出ます! vector<string> a; a.resize(500); で、 a[0]にちゃんとstringのメソッドが出ます! やったぜ! 喜び勇んでデバッグビルド。 ……LNK4217やらLNK2019やらLNK1120やら出まくりやがります……(´;ω;`) どうやら、vectorを使うと出るっぽ……(コメントアウトすると出ない とりあえずエラーコードを全部ググってみたのですが、正直、専門用語連打で今ひとつ原因が理解できていません。 もうちょっと格闘してみます。
- 662 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 14:35:53 ]
- #include <vector.h> とかやってるってオチはないだろうね
- 663 名前:650 [2007/08/01(水) 14:52:27 ]
- >>662さん
ちゃんと #include "string" #include "vector" にしてます。 昼飯抜きでやってたので、いまちょっとラーメン食ってます。 今日は有給取ってまとまった時間があるんで頑張ります(^^)
- 664 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 15:00:07 ]
- ランタイムライブラリの設定がおかしくなっているような気がする。
- 665 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 15:44:18 ]
- C++のソースを他の言語に移植しているのですが、ちょっとこまったことがありました。
class Hoge { Hoge(); virtual ~Hoge(); } といった、クラスがある場合、 ソース中、 Hoge hoge; として、動的生成ではなく、静的に宣言?した場合、 デストラクタ(~Hoge);は、スコープから外れると自動で呼ばれるものなのでしょうか? 自動で、呼ばれない言語に移植しているいじっているもので(Delphi)
- 666 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 15:45:22 ]
- >>665
試してみればわかると思うけど、YES
- 667 名前:665 [2007/08/01(水) 15:45:28 ]
- 途中で、送信してしまいました。
自動で、静的な構造体の場合、デストラクタが呼ばれない言語に移植しているもので(Delphi)、 その場合は、手動でデストラクタを呼び出す必要があるということになりますよね。
- 668 名前:650 [2007/08/01(水) 15:46:10 ]
- いろいろ確認しましたが、やはり、vectorを使用するとリンカエラーが出るようです。
vector<int> i; と宣言して未使用のままでも、エラーが出ます。 stringは問題なく使えます。 他のSTLについては、そもそも使い方をまだ学習していないのでインクルードすらしてません。 ノートの方でエラー出ないってのが不思議です…… どなたか、原因が分かる方いらっしゃいますか? >>664 設定を戻したいのですが、どのようにしたら元に戻せるんでしょうか? 再配布用のVC++2005 SP1ランタイムは見付けましたが、多分、再配布用じゃないですよね(´・ω・`)
- 669 名前:665 [2007/08/01(水) 15:49:27 ]
- >>666
サンクスです。 こちらにも書いてありました。 C++編(言語解説) 第7章 コンストラクタとデストラクタ www.geocities.jp/ky_webid/cpp/language/007.html newしない場合は、スコープ外れるときに自動で呼ばれるのですね。 newした場合は、deleteするときに呼ばれる、と・・・。
- 670 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 15:54:29 ]
- >>668
プロジェクトの設定でC/C++→コード生成で ランタイムライブラリの設定をDLLからスタティックリンクライブラリにしてみたらどう?
- 671 名前:650/668 [2007/08/01(水) 16:10:06 ]
- >>670さん
ありがとうございます。 プロパティ→C/C++→コード生成→ランタイムライブラリ を見てみたところ、 マルチスレッド マルチスレッド デバッグ マルチスレッド DLL マルチスレッド デバッグ DLL の4つ選択肢があって、デフォルトではマルチスレッドデバッグDLL(Debugモードです。リリースだとマルチスレッドDLLになります)に なっていましたので、スタティックリンクライブラリの意味が正直よく分かっていないのですが、 『マルチスレッドデバッグ』にしてみました。 やはりリンカエラーでます。 「LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。」 これだけ、新しい(?)エラーが出た……のかな??? 他はLNK2019,LNK2001,LNK1120(fatal)です。 ざーーーーーっとMSDNやぐぐってヒットした質問掲示板を片っ端から見て行ってるのですが、自分と該当するものは 今のところ見付かっていません。 #include "vector" vector<int> i; の二行だけでエラー出るってやっぱおかしいですよね?
- 672 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 16:11:49 ]
- ライブラリ見てる先が違うのでは?
- 673 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 16:23:59 ]
- ライブラリの設定をマルチスレッドデバッグDLLに戻して
#include <vector> でも駄目かね?
- 674 名前:デフォルトの名無しさん [2007/08/01(水) 16:26:36 ]
- いやまずは、
char str[100][300]; string str [100]; で読む込むかやって見ろよ
- 675 名前:デフォルトの名無しさん [2007/08/01(水) 16:28:33 ]
- char* ScenarioFile = "Log.txt";
char buf[500][256]; int FileHandle = FileRead_open( ScenarioFile ); int i=0; while(FileRead_eof(FileHandle) == 0){ FileRead_gets(Buf[i], 256, FileHandle); i++; } FileRead_close(FileHandle);
- 676 名前:650/668 [2007/08/01(水) 16:30:57 ]
- >>672
それだと、stringもダメになりませんかね? stringは普通に使えてます。 >>673 戻してみて、#include <vector>にしましたがダメでした。 時間掛かるけど、再インストールしてみたほうがいいっすかね?
- 677 名前:デフォルトの名無しさん [2007/08/01(水) 16:32:07 ]
- つか、なぜC/C++ライブラリや、windowsAPIを使わないのか教えろ
- 678 名前:デフォルトの名無しさん [2007/08/01(水) 16:37:36 ]
- 普通のやり方だと動くのか???
#include <fstream> using namespace std; fstream fp; string str; fp.open("Log.txt", ios::in ); do{ getline(fp, str); cout<< str<<endl; }while(!fp.eof());
- 679 名前:650/668 [2007/08/01(水) 16:38:12 ]
- >>674さん
>>675さん ありがとうございます。 vectorを使わないで何とかする方法は皆さんのおかげで無事なんとかなりましたm(_ _)m 今は、VC++2005でvectorそのものが使えないという状態で困っております…… >>677 すいません。WinAPIはまだ学習していませんので、使い方が分かりません。 やっとポインターと参照送りを覚えて、STLの存在を知って2週間ばかりのど素人です…… C/C++ライブラリとは、STLのことですよね? 今はSTLのstringを覚えて、vectorに差し掛かったばかりです。
- 680 名前:650/668 [2007/08/01(水) 16:41:14 ]
- すいません、先ほど>>677にさん付けるの忘れてました。他意はありませんm(_ _)m
>>678 普通のやり方でももちろん動きます。特にDXライブラリが悪さしているとは思えません。 ぜんぜん関係ない、ごく普通のC++の部分でエラー吐いてますので…… vectorさえ使わなければ、エラーも出ず普通に動きます。 さし当たって今やろうとしていることには必要のないものですが、C++の学習が主な目的でもありますので、 使ったらエラーという状態だけは何とかしておきたいなと思っています……
- 681 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 16:43:02 ]
- 2003もアンインスコして再インスコだな
標準でさえこのざまなんだからこの先どんな不具合が起こるかわからないって状況は普通に怖いぞ
- 682 名前:デフォルトの名無しさん [2007/08/01(水) 16:46:06 ]
- ↓のプログラムをDOSで実行すると、何故か画面がフリーズして
「問題が発生したため、終了します」という画面が出て実行できないのですが 何故なんでしょうか?文法上の誤りも自分で見る限りは特に無いと思うのですが・・・ 混じれ酢お願いします。 改行が多すぎて一度に書き込めない様なので分割して書き込ませて頂きます #include<stdio.h> #include<string.h>
- 683 名前:デフォルトの名無しさん [2007/08/01(水) 16:47:05 ]
- main(int argc, char* argv[])
{ char filename[256]; char key[128]; if(argc>2){strcpy(filename,argv[1]); strcpy(key,argv[2]);} else if(argc){ strcpy(filename,argv[1]); printf("暗号キーを入力してください>"); scanf("%s",key); } else { printf("ファイル名を入力してください>"); scanf("%s",filename); printf("暗号キーを入力してください>"); scanf("%s",key); } printf("ファイル名:%s\n",filename); printf("暗号キー:%s\n",key); return 0;}
- 684 名前:デフォルトの名無しさん [2007/08/01(水) 16:47:23 ]
- vectorは殆ど使い道ないよ
初めから必要な領域を動的確保すればよい
- 685 名前:デフォルトの名無しさん [2007/08/01(水) 16:49:38 ]
- >>682
実行するときに引数入れろよ
- 686 名前:デフォルトの名無しさん [2007/08/01(水) 16:52:43 ]
- >>683
コマンドライン引数ないとargv[1]参照してエラー起きる argcは少なくとも1だよ argv[0]にはプログラム名が入ってるから
- 687 名前:デフォルトの名無しさん [2007/08/01(水) 16:52:45 ]
- else if(argc>=2){ にしとけ
- 688 名前:デフォルトの名無しさん [2007/08/01(水) 16:53:07 ]
- >>685
実行するときに引数を入れても同じ画面が出てエラーになります・・・
- 689 名前:デフォルトの名無しさん [2007/08/01(水) 16:53:43 ]
- 途中だったw
if文書きかえて if(argc > 2) うんたら else if(argc == 2)うんたら else うんたら にしる
- 690 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 16:54:24 ]
- >>684
それだと解放する手間がかかるでしょ。 例外に強くするためにもvectorに解放を任せるのは有用。 もしかして釣られた?
- 691 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 16:59:46 ]
- >>689
ありがとうございます!!やってみたらできました こんなくだらないミスで質問をしてすみません・・・ 皆さんありがとうございました
- 692 名前:デフォルトの名無しさん [2007/08/01(水) 17:00:47 ]
- 一つ一つ内容を増やしていって確保する領域が不明であるケースなんて
ほとんどないよ それに、個数が多ければ一度に確保しておいた方が速いし、 個数が少なければ多めに確保しておけばエラーは出ない 多くても少なくてもvectorは使えない
- 693 名前:650/668 [2007/08/01(水) 17:01:09 ]
- >>684さん
なんとなく『最初から上手く設計すればいらないような……?』とは思っていたのですが……_| ̄|○ はっきり言って下さってありがとうございます。 踏ん切りが付きましたので、ひとまずvectorの学習は中断することにします。 あ、でもVC2005の再インストールだけは念のためしておこうと思います(^^; 皆さん、本当にありがとうございました!
- 694 名前:デフォルトの名無しさん [2007/08/01(水) 17:02:41 ]
- 例えば、100万個データ追加するのに
毎回vectorのメンバ関数で追加するより a[i]=5とやった方が速いし見やすい
- 695 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 17:06:06 ]
- .| | | | | | | | | | || | |
.| | | レ | | | | | J || | | ∩___∩ | | | J | | | し || | | | ノ\ ,_ ヽ .| レ | | レ| || J | / ●゛ ● | .J し | | || J | ∪ ( _●_) ミ .| し J| 彡、 |∪| | .J レ / ∩ノ ⊃ ヽ ( \ / _ノ | | \ " / | | \ / ̄ ̄ ̄ /  ̄ ̄ ̄ ̄
- 696 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 17:08:56 ]
- >>692
reserve >>694 resize
- 697 名前:デフォルトの名無しさん [2007/08/01(水) 17:10:55 ]
- vectorの方が楽
それだけで使用価値があるとは思わないか
- 698 名前:デフォルトの名無しさん [2007/08/01(水) 17:13:17 ]
- vectorの方が不便
だって[]での代入が装備されていない
- 699 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 17:13:43 ]
- >>698
はい?kwsk
- 700 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 17:16:27 ]
- template <typename T>とtempalte <class T>ってどう使い分けすれば良いんでしょうか?
- 701 名前:>>699 [2007/08/01(水) 17:18:39 ]
- #include <vector>
#include <iostream> using namespace std; main(){ vector<int> v; v.push_back(1); cout << v[0]<<endl; v[0]=2; cout << v[0]<<endl; /* 逆にしたこっちはエラーになる v[0]=2; cout << v[0]<<endl; v.push_back(1); cout << v[0]<<endl; */ }
- 702 名前:デフォルトの名無しさん [2007/08/01(水) 17:20:46 ]
- reserve();で確保すればエラー出ないんだな
しらんかった すまん
- 703 名前:デフォルトの名無しさん [2007/08/01(水) 17:21:27 ]
- >>701
そんな使い方ありえないから実装されてない 使いたければオーバライドすればいいじゃん
- 704 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 17:26:07 ]
- >>700
好みの問題。 ただし、下みたいなテンプレートテンプレートではclassしか使えなかったはず。 template<template<typename T> class T> こんな機能使わないけど。
- 705 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 17:28:39 ]
- >>702
reserveで押さえただけ領域は使ってはいけないところ。 vectorで使える要素は0番目からsize()の1つ手前の要素まで。 size()の値を変えるにはresize()。 特に要素がクラスオブジェクトだとコンストラクタが呼ばれていなかったり、 デストラクタが呼ばれた後だったりするのでわかりやすいけど、 組込型でも駄目なことに変わりはない。
- 706 名前:デフォルトの名無しさん [2007/08/01(水) 17:29:21 ]
- vectorかnewかどっちがいいかは、巨大配列を確保したときに問われるだろう
何となくvectorは100M超の領域確保に向いていない気がするが・・・ 速度、安定性において同程度ならvectorに統一した方がいい
- 707 名前:デフォルトの名無しさん [2007/08/01(水) 17:30:12 ]
- >>701
それを不便というなら、比較対照にしてる組み込み型では int *v = new int[0] と宣言してるも同然じゃね?
- 708 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 17:31:28 ]
- >>706
それは仰るとおり ほとんどの場合はvectorでも問題ないから おれはvector使う
- 709 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 17:31:46 ]
- >>704
なるほど 複雑な特殊化をする時に必要となりそうな気がするのでメモっておきます
- 710 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 17:37:55 ]
- >>706
new[]はoperator new[]関数、newはoperator new関数、 vectorは、operator new関数で確保される。 共に<new>に存在し、operator newとoperator new[]で 異なる実装になっていることは考えづらい。殆どの処理系で、同一の実装だと見なして問題ないはず。 そして、operator newやoperator new[]を自分で定義すれば、メモリ確保ルーチンを差し替えられる。 またvector(やその他全てのコンテナ)はアロケータをテンプレート引数に取り、 それを差し替えることでもメモリ確保ルーチンを変更可能。 不用意にinsertやpush_backしなければ、巨大な配列もvectorにして問題ないと思う。 それでも不安ならshared_array/scoped_arrayなんて選択肢もあるけどね。
- 711 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 18:01:21 ]
- >>710
>不用意にinsertやpush_backしなければ、巨大な配列もvectorにして問題ないと思う。 是。reserve しとけば push_back も怖くない。
- 712 名前:デフォルトの名無しさん [2007/08/01(水) 18:11:39 ]
- >>710
オーバーヘッドが掛かったり無駄に確保したりしていないかvector new単体で使えば2倍の領域確保とかないだろうし
- 713 名前:デフォルトの名無しさん [2007/08/01(水) 18:33:08 ]
-
| | | | /  ̄  ̄ \ (=) /、 ヽ J >vector厨 |・ |―-、 | q -´ 二 ヽ | ノ_ ー | | \. ̄` | / O===== | / | / / |
- 714 名前:650/668 [2007/08/01(水) 18:35:00 ]
- 戻りました。
VC++2005を修復インストールした結果、vector使ってもwarning LNK4217だけで済みました。 fatalなエラーでビルド失敗と言うことはないです。 やっぱ、何かが潰れていたっぽいっすね〜。 これでダメなら再インストールしようと思っていましたが、無事に済んだようです。 LNK4217エラーは4つ出て、どれも内容は似ています。 warning LNK4217: ローカルで定義されたシンボル ??1exception@std@@UAE@XZ (public: virtual __thiscall std::exception::~exception(void)) が フィクション __unwindfunclet$??0logic_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z$0 にインポートされました。 僕の今の知識レベルでは、なんのことやら意味不明です。 実用上問題ないなら、#pragma warningで切っておきます。 ありがとうございました。 あれからのログを見ていると、vectorもやっぱり押さえておきたい基本技術みたいですね。 折を見て勉強再開します。
- 715 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 18:51:31 ]
- 念の為OSの再インストールからやり直したほうがいいよ
- 716 名前:デフォルトの名無しさん [2007/08/02(木) 21:26:13 ]
- typedef std::vector<Hoge> VEC_HOGE;
を定義したいときにHoge は前方宣言で対応可能でしょうか? それとも#include しなければいけませんか? 前方宣言の可付加の決まり方がいまいちわかりません。 よろしくお願い致します。
- 717 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:49:38 ]
- typedef std::vector<ちぺなめ Hoge> VEC_HOGE;
- 718 名前:デフォルトの名無しさん [2007/08/03(金) 00:11:16 ]
- すみません、質問させてください。
Cのプログラムで、popenを使ってpingを打ちたいと思っています。 その時に、p=popen("ping www.google.co.jp", "w")のように 直接相手先を書くのではなく、文字配列に相手先を格納し、 それを用いてpingを打つ方法がわかりません・・。 一応ぐーぐる先生にお尋ねはしたのですが、わかりませんでしたorz (聞き方がまずかったのかも知れませんが・・) どうぞよろしくお願い致します。
- 719 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 00:31:34 ]
- sprintf使えばいいんじゃないの?
- 720 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 00:39:38 ]
- 入門書読んだ方がいいんじゃないの。
ping先壊したって知らないよ?
- 721 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 00:54:31 ]
- system()じゃいかんのかね。
- 722 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 01:02:11 ]
- >>716 って何か意味あんの?
- 723 名前:718 [2007/08/03(金) 21:14:19 ]
- 遅くなってしまいましたが、アドバイスありがとうございました。
正直自分でも、入門書レベルからやり直した方がいいなぁと 自覚はしているのですが、今回は時間に余裕がなかったもので、 ここでお尋ねした次第です・・すみません。ご忠告ありがとうございます。 system()ではどうかとのことですが、プログラムの中でpingの結果を 受け取って処理をしたかったので、今回はsystem()ではなくpopen()を使いました。 記載し忘れてしましたね。ごめんなさい。 sprintfですか。ちょっと試してみたいと思います。 皆様どうもありがとうございましたm(_ _)m
- 724 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:36:45 ]
- 行列で
-1 0 1 -1 0 1 -1 0 1 は以下のプログラムでできるんですけど(wはdouble、l,kはint) for(k=0;k<3;k++) { for(l=0;l<3;l++) { w[k][l] = -1 + k; } } -1 1 -1 -1 1 -1 -1 1 -1 はどんな感じでつくればいいですかね?増分2してみたいな・・・ 上のプログラムを極力いじらない感じでお願いします
- 725 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:40:50 ]
- 行列で
-1 0 1 -1 0 1 -1 0 1 は以下のプログラムでできるんですけど(wはdouble、l,kはint) for(k=0;k<3;k++) { for(l=0;l<3;l++) { w[k][l] = -1 + k; } } -1 1 -1 -1 1 -1 -1 1 -1 はどんな感じでつくればいいですかね?増分2してみたいな・・・ 上のプログラムを極力いじらない感じでお願いします
- 726 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:43:15 ]
- すいません 2回も書いてしまいましたorz
- 727 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 21:12:58 ]
- -1×-1=1
これ算数。
- 728 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 21:16:16 ]
- -1 + k
↓ (k % 2) * 2 - 1
- 729 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 05:27:34 ]
- int v;
for(k=0;k<3;k++) { v=-1; for(l=0;l<3;l++) { w[k][l] = v; v*=-1; } } でいいじゃん
- 730 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:31:29 ]
- >>727>>729
本気でそんなプログラミングしているのか? 桑原桑原。
- 731 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:39:44 ]
- >>730
桑原桑原。
- 732 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 07:07:12 ]
- w[k][i] = i&1 ? -1 : 1;
を提案します(ぉ
- 733 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 07:07:59 ]
- lだった…orz
- 734 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:40:58 ]
- >>729
int v = 1; for(k=0;k<3;k++) { for(l=0;l<3;l++) { w[k][l] = v * -1; } } のほうがすっきり。
- 735 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 10:55:06 ]
- >>734
9つ全部-1にならない?
- 736 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:18:23 ]
- ここのつ、とう!
はい、よくできました♪
- 737 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:20:12 ]
- ??
- 738 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:49:07 ]
- !!
- 739 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:50:44 ]
- 3×3の行列の初期化くらいなら、
いちいちfor文で回したりせず、 double w[3][3] = { {-1.0, 0.0, 1.0}, {-1.0, 0.0, 1.0}, {-1.0, 0.0, 1.0} } これでいいじゃないか。
- 740 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:58:06 ]
- 例として3×3にしてるだけで、
実際はもっと大きいんじゃないのかな?
- 741 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:26:55 ]
- えー
for(k=0;k<3;k++) のように、ハードコーディングしてるじゃん。 もし巨大だったり、任意のサイズだったら、そういうコードになるべ?
- 742 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:33:55 ]
- ていうかさ、
行列の問題なのか、 数列の生成の問題なのか、 切り分けてから質問してほしい。
- 743 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:57:18 ]
- 全角数字使うなカス
- 744 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:49:04 ]
- 揚げ足取り乙
- 745 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:52:32 ]
- 揚げ足ってレベルじゃねぇぞカス
- 746 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 19:38:47 ]
- カスは自分のことを棚に上げる傾向にあります。
- 747 名前:デフォルトの名無しさん [2007/08/06(月) 21:24:19 ]
-
スレ違いだったらすいません。 アプリ開発の依頼スレが見つからなかったのでこちらに書かせて頂きました。 当方所有のウェブアプリケーションソフト (以前プログラマに依頼して作ってもらったものですが今は連絡が取れません) がURL先の変更?で突然使えなくなってしまいました。 そこで、緊急で本日中に改変が出来そうな方是非お願いできないでしょうか? 当方、全くの知識不足で言語が C++ということ以外分かりません。 ソースファイルは持っております。料金は2万円でお願いします! seishinkeiki@hotmail.co.jp
- 748 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:27:03 ]
- 本日中ってあと2時間半しかないぞ
- 749 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:28:22 ]
- バイナリエディタで書き換えたら使える
- 750 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:31:03 ]
- マルチすると来る人が居なくなるかもよ
- 751 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:32:25 ]
- マルチすると釣られる人が居なくなるよ
- 752 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:46:42 ]
- >>747
2万じゃ安いな・・8万でどうだ?
|

|