トップページ⇒tech
982コメント317KB

<`Д´>C/C++の宿題は私にやらせるニダ!Ver11

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
私はC++房。
今まで1年*ヶ月、ほとんど毎日休まず一生懸命C++を勉強してきた。
わからない宿題若しくは処理があったら私にやらせてくださいm(_ _)m
ただし四面体の宿題は禁止!
前スレhttp://pc2.2ch.net/test/read.cgi/tech/1057070174/

9代目:http://pc2.2ch.net/test/read.cgi/tech/1055944101/ 150
8代目: http://pc2.2ch.net/test/read.cgi/tech/1055056940/l50
7代目: http://pc2.2ch.net/test/read.cgi/tech/1053963794/l50
6代目: http://pc2.2ch.net/test/read.cgi/tech/1053045530/l50
↓現在5代目スレまでhtml化完了
5代目: http://pc2.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc2.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc2.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
宿題手伝いますYO!!: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html

ラウンジ:質問が長い時はココを使うと便利
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
0932デフォルトの名無しさんNGNG
要は、"5.08x+4y+9=-04.80+3z-3x"
という式をパースして、
[3.000000 4.000000 -3.000000] = -13.800000
という行列(の一部)を生成すればいいんだろ。できたよ。
0933デフォルトの名無しさんNGNG
早速バグってやがる( ´Д`)y━─┛~~
[8.080000 4.000000 -3.000000] = -13.800000
0934デフォルトの名無しさんNGNG
C++で入力された単語がそれぞれ何回出たかを出力するものを書いているのですが
途中でアクセス違反になってしまいます。どこがおかしいのでしょうか?
よろしくお願いします。

int main()
{
vector<string> num;
string x;
cout << "単語を複数個入力してください。 << '\n' << "ctrl+zで入力をやめます。" << endl;
while(cin >> x){
num.push_back(x);
cin.clear();
}
if(num.size()<=){
cout << "入力された単語の数が足りません。" << endl;
return 1;
}
0935デフォルトの名無しさんNGNG
続きです

sort(num.begin(),num.end());
vector<string>::size_type size;
size = num.size();
string tmp;
int tmp2=0;
//比較と結果の出力
for(int i=0; i != size; i++){
tmp = num[i];
if(i==size){
cout << "比較は終了しました" << endl;
}
else if(tmp==num[i+1]){
tmp2++;
}
else{
cout << tmp << "は" << tmp2+1 << "個です。" << endl;
tmp2=0;
}
}
return 0;
}
0936934NGNG
すいません
if(num.size()<=)
のところは
if(num.size()<=1)
です。

0937デフォルトの名無しさんNGNG
i = size -1のとき、
num[i+1]が違法。
0938デフォルトの名無しさんNGNG
>>934
map<string,unsigned int>words;
while(cin >> x){
words[x]++;
}
for(map<string,unsigned int>::const_iterator i = words.begin(); i != words.end(); ++i){
cout << i->first << "は" << i->second << "回" << endl;
}
0939デフォルトの名無しさんNGNG
>>932
便乗だけど2次方程式解くにはどうしたらよいの?
x^2+3y+5=0
x+5y=2
みたいな香具師
0940934NGNG
<<937
ありがとうございます。最後の所を

for(int i=0; i != size; i++){
tmp = num[i];
if(i==size-1){
cout << num[i] << "は" << tmp2+1 << "個です。" << endl;
cout << "比較は終了しました" << endl;
}
else if(tmp==num[i+1]){
tmp2++;
}
else{
cout << tmp << "は" << tmp2+1 << "個です。" << endl;
tmp2=0;
}
}

にしたらできました。
0941934NGNG
>>938
mapという型自体をはじめて知りました。
勉強してきます。
0942デフォルトの名無しさんNGNG
>>925
ガウスの消去法でぐぐれ
0943デフォルトの名無しさんNGNG
unsigned charを引数にして
LSB側4bitが全て0であるかどうかを判定する
関数を誰か作ってください
戻り値はunsigned char型で
1なら真 0なら偽 それ以外ならエラー
と言う条件でお願いします
0944デフォルトの名無しさんNGNG
エラーって、どういう状況だろーか
0945デフォルトの名無しさんNGNG
unsgned char testLSB4bit( unsgned char ch )
{return !( ch & 0x0f );}
0946_NGNG
http://homepage.mac.com/hiroyuki45/
0947デフォルトの名無しさんNGNG
>>925 ガウス消去はたぶん理解できないだろうから
#include <iostream>
using namespace std;
int main()
{
double x[] = {7,-45,-284};
double y[] = {1,1,4};
double div_x = x[0];
for(int i=0; i<3; ++i){
x[i] = x[i] / div_x;
cout << x[i] << ", ";
}
cout << endl;
double div_y = y[0];
for(int i=0; i<3; ++i){
y[i] = y[i] / div_y;
cout << y[i] << ", ";
}
cout << endl;
for(int i=0; i<3; ++i){
y[i] = y[i] - x[i];
cout << y[i] << ", ";;
}
cout << endl;
div_y = y[1];
for(int i=0; i<3; ++i){
y[i] = y[i] / div_y;
cout << y[i] << ", ";
}
cout << endl;
0948デフォルトの名無しさんNGNG
続き
cout << "y=" << y[2] << endl;

for(int i=0; i<3; ++i){
y[i] = y[i] * x[1];
cout << y[i] << ", ";
}
cout << endl;

for(int i=0; i<3; ++i){
x[i] = x[i] - y[i];
}

cout << "x=" << x[2] << endl;

あとは自分で考えれ。
0949デフォルトの名無しさんNGNG
>939
その二元二次方程式は、楕円の交点を求める問題にまで
発展するのか?

5xx-6xy+5yy-14x+2y+5=0
xx+4yy=1

みたいに。
0950デフォルトの名無しさんNGNG
なにをやってるかわからんかったら数Cの吐き出し法を復習しれ
0951943NGNG
>>945
ありがとうございました
0952デフォルトの名無しさんNGNG
>>949
別に宿題じゃないんだけどふと思いついた。
なんかいい方法ってありましたっけ?
解なしのときの処理とかが面倒だね。
0953デフォルトの名無しさんNGNG
>>947-948
微妙なとこでおわったな(w
0954デフォルトの名無しさんNGNG
スレ違いといわれてここに来た。
リンク先のプログラムを提出したら先生に
2分木を作成後に,任意の節(idを指定)のデータを木を根から
辿りながら見つけて出力できるようにしなさいって言われた。
どこをどうしたらいい?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=131
0955デフォルトの名無しさんNGNG
こんなかんじ。動作未確認、勘弁。

void Search_r(char *sid,int depth, Node *node) {
if (strcmp(node->id,sid)!=NULL){
printf("%s,%s,%s\n", root->id, root->name, root->ruby);
return;
}
if (node->left != NULL) {
Search_r(sid,depth + 1, node->left); /* 余白の間隔を調節 */
}
if (node->right != NULL) {
Search_r(sid,depth + 1, node->right); /* 余白の間隔を調節 */
}
}
0956955NGNG
>955
ありがとうございます。
参考にさせてもらいます。
0957954NGNG
コンパイルすると次の行
if (strcmp(node->id,sid)!=NULL){
が warning: comparison between pointer and integerとでるのですが
なぜでしょうか。
0958954NGNG
957は解決しました。そこで以下のように修正しました。
しかしコンパイルはできたのですが実行できません。
なぜでしょうか。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=133
0959デフォルトの名無しさんNGNG
strcmpって・・・
まあいいか
0960デフォルトの名無しさんNGNG
Search_rの使い方が悪いんじゃないか?
idに0わたしてるようだし
0961955NGNG
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=134&fi=no
0962955NGNG
・本来のmain文が読めません(;;)使い方不明です。
 とりあえず嘘main文を書いておきました。
・Display関数も、こんな風に簡略化できる。
0963デフォルトの名無しさんNGNG
フローを詳しく追っていけばあなたなら分かると思うけど、

3,木田,kida(
6,下田,simoda(
2,山田,yamada(
1,中田,nakata(
7,山田,yamada(
9,ぬるぽ,gaxtu!(

こういう内容のファイルを用意してコマンドラインから
実行ファイル名 < テキストファイル
みたいにするとできる。(このへんはやってないのかな?)

データの(の意味がよく分からないけど、
そのあとになにかはいるんだろう。たぶん。
0964デフォルトの名無しさんNGNG
          _
      ミ ∠_)←>木田 下田 山田 中田 山田
         /
         /   \\
 ウイーン  Γ/了    | |
  ウイーン  |.@|    | | ガッガッガッ
       | / |    人
       |/ |    <  >_Λ∩
      _/  | //.V`Д´)/
     (_フ彡        /
0965デフォルトの名無しさんNGNG
lessを作れと言う課題が出ました。
UNIXのLESSです。

機能としては,
j=一行進む
k=一行戻る
space=一画面進む
b=一画面戻る
q=終了

を作れと言う事です。

C言語でncursesという端末を制御するライブラリを使って作れと言う事です。
入力として与えられたファイルから1行ずつ読み出してそれを双方向リストで繋げろという課題です。

全く分かりません助けてください。
0966デフォルトの名無しさんNGNG
こういうときlessのソースを探すのが定石
0967デフォルトの名無しさんNGNG
そしてGPL違反
0968デフォルトの名無しさんNGNG
>>955
とりあえず
struct line{
 char *s;
 struct line *prev, *next;
};
0969デフォルトの名無しさんNGNG
俺としては、
struct line
{ struct line *prev, *next;
 char s[1];};
の方がいいナ
0970デフォルトの名無しさんNGNG
>>966
どうやって探せばいいのでしょう?
0971デフォルトの名無しさんNGNG
>>970
ググる
0972デフォルトの名無しさんNGNG
>>969
ねぇ、その要素がひとつの配列にはどんな意味があるの?C FAQにもあるけれどよく分からない。
0973デフォルトの名無しさんNGNG
あーでも、http://www.catnet.ne.jp/kouno/c_faq/c2.html#6とは違うのかな?
0974デフォルトの名無しさんNGNG
同じだろ
0975デフォルトの名無しさんNGNG
>>972
つまり、struct lineを確保する時に配列s用の容量も上乗せすると
いっぺんに確保解放ができて便利。Win32では普通に使われている
しかし標準Cではできないらしい。CFaqの二つ目の方法は
char s[沢山];としておいて必要なだけ少なく確保する。
しかしこれも標準Cではできないらしい。
0976デフォルトの名無しさんNGNG
>>975
もしかして、

struct hoge *p;
p=sizeof(struct hoge)+strlength;
strcpy(p->s,"もしかして・・・・");
free(p);

こういうこと?配列はメモリー上で連続していて、配列の大きさを越えても文句を言われないことをうまく利用して。
0977デフォルトの名無しさんNGNG
ムッチリ系の巨乳美女ですね。バイブを挿入されはしゃぎまくっちゃいます。
そのあたりまでは普通のビデオですがそこからがすごいです。
なんと5人連続生姦、中出しに挑戦!オマンコの中はザーメンまみれ!
大量のザーメンが流れ出てくるラストシーンは圧巻ですよ。
無料ムービーあるよ。
http://www.cappuchinko.com/
0978デフォルトの名無しさんNGNG
もしかしなくても、そういうこと。
hoge p; という使い方は考慮されていない。常にポインタで。
0979976NGNG
p=sizeof(struct hoge)+strlength;じゃなくて、p=malloc(sizeof(struct hoge)+strlength);だ。
0980デフォルトの名無しさんNGNG
>>976
もしかしてmallocが抜けているかもしれないけど
そういうこと
0981976NGNG
>>978
なるほどねぇ、、、すごいこと考える人がいるものだね。
C FAQにあるほどだから常套手段なのか。
0982976NGNG
あ、ありがとうございました。
レス数が950を超えています。1000を超えると書き込みができなくなります。