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

このエントリーをはてなブックマークに追加
早速バグってやがる( ´Д`)y━─┛~~
[8.080000 4.000000 -3.000000] = -13.800000
934デフォルトの名無しさん:03/08/07 09:30
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;
}
935デフォルトの名無しさん:03/08/07 09:30
続きです

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;
}
936934:03/08/07 09:33
すいません
if(num.size()<=)
のところは
if(num.size()<=1)
です。

i = size -1のとき、
num[i+1]が違法。
>>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;
}
>>932
便乗だけど2次方程式解くにはどうしたらよいの?
x^2+3y+5=0
x+5y=2
みたいな香具師
940934:03/08/07 10:34
<<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;
}
}

にしたらできました。
941934:03/08/07 10:38
>>938
mapという型自体をはじめて知りました。
勉強してきます。
>>925
ガウスの消去法でぐぐれ
943デフォルトの名無しさん:03/08/07 11:08
unsigned charを引数にして
LSB側4bitが全て0であるかどうかを判定する
関数を誰か作ってください
戻り値はunsigned char型で
1なら真 0なら偽 それ以外ならエラー
と言う条件でお願いします
エラーって、どういう状況だろーか
unsgned char testLSB4bit( unsgned char ch )
{return !( ch & 0x0f );}
946_:03/08/07 11:17
>>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;
続き
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;

あとは自分で考えれ。
>939
その二元二次方程式は、楕円の交点を求める問題にまで
発展するのか?

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

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

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); /* 余白の間隔を調節 */
}
}
956955:03/08/08 17:49
>955
ありがとうございます。
参考にさせてもらいます。
957954:03/08/08 17:59
コンパイルすると次の行
if (strcmp(node->id,sid)!=NULL){
が warning: comparison between pointer and integerとでるのですが
なぜでしょうか。
958954:03/08/08 18:23
957は解決しました。そこで以下のように修正しました。
しかしコンパイルはできたのですが実行できません。
なぜでしょうか。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=133
strcmpって・・・
まあいいか
Search_rの使い方が悪いんじゃないか?
idに0わたしてるようだし
961955:03/08/08 19:19
962955:03/08/08 19:23
・本来のmain文が読めません(;;)使い方不明です。
 とりあえず嘘main文を書いておきました。
・Display関数も、こんな風に簡略化できる。
フローを詳しく追っていけばあなたなら分かると思うけど、

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

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

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

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

を作れと言う事です。

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

全く分かりません助けてください。
こういうときlessのソースを探すのが定石
そしてGPL違反
>>955
とりあえず
struct line{
 char *s;
 struct line *prev, *next;
};
俺としては、
struct line
{ struct line *prev, *next;
 char s[1];};
の方がいいナ
970デフォルトの名無しさん:03/08/09 23:07
>>966
どうやって探せばいいのでしょう?
>>970
ググる
972デフォルトの名無しさん:03/08/09 23:15
>>969
ねぇ、その要素がひとつの配列にはどんな意味があるの?C FAQにもあるけれどよく分からない。
973デフォルトの名無しさん:03/08/09 23:25
同じだろ
>>972
つまり、struct lineを確保する時に配列s用の容量も上乗せすると
いっぺんに確保解放ができて便利。Win32では普通に使われている
しかし標準Cではできないらしい。CFaqの二つ目の方法は
char s[沢山];としておいて必要なだけ少なく確保する。
しかしこれも標準Cではできないらしい。
976デフォルトの名無しさん:03/08/09 23:47
>>975
もしかして、

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

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