トップページ⇒tech
1001コメント330KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
おはようフェルプス君。
プログラミング能力がないにも関わらず授業を取った学生諸君が困り果てている。彼らは、いずれ単位を落とすだろう。
君の任務は持ち込まれる宿題を解き、質問者の窮状を救ったり足下を掬ったりすることだ。
例によって当局は一切関知しないからそのつもりで。
なおこのスレは1000まで達した後自動的に消滅する。

【注意点】 -------------------------------------------------
・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、全文を書きましょう。

・使用する言語(C/C++)や環境(CUI/ANSIとか
 GUI/Windows32bitAPI など)は必ず書きましょう。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。

・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
------------------------------------------------------------

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10】
0153デフォルトの名無しさんNGNG
%[認識するキャラクタの集合]
%[^無視するキャラクタの集合]
0154デフォルトの名無しさんNGNG
>>152
http://www.linux.or.jp/JM/ の 『man on WWW』 のセクション 2,3 で検索すると、
大概の C の関数は載っているので、調べてみる事をおすすめする。
0155146NGNG
>>153
>>154

セクション3 scanf

>変換を示す % 文字

そうでした。まさに変換。
意味するところが飲み込めて来ました。
ありがとうございます。
0156デフォルトの名無しさんNGNG
"%[^,],%[^,],%[^,]"って感じで割りと使うのだけど、ファイルの方が

foo,bar,baz

ならいいけど

hage,,hoge

だと2番目が変換ミス(戻り値が1)になるんだよね。
0157デフォルトの名無しさんNGNG
age
0158デフォルトの名無しさんNGNG
sage
0159デフォルトの名無しさんNGNG
>>157
宿題がほしいのか?
まぁ、焦らずとも夏休み終了間際にはどっとくるでしょ。
0160デフォルトの名無しさんNGNG
多機能(各々に任す)計算機のプログラムを作成せよ。ソースの説明をせよ。
という問題の答えを教えていただきたいです。
0161デフォルトの名無しさんNGNG
言語は?
0162デフォルトの名無しさんNGNG
>>160
マルチ氏ねや
0163デフォルトの名無しさんNGNG
>>162
向こうで誘導されたんだと思われ。
0164160NGNG
C言語です
0165デフォルトの名無しさんNGNG
誘導されたとしても、移動を伝えてなければマルチだよな。
0166デフォルトの名無しさんNGNG
>>165
そうか?誘導された時点で向こうでは誰も答えないだろうから良いと思うんだが。
0167デフォルトの名無しさんNGNG
>>166
その誰も答えないという自信はどこから?
第三者からみて何も告げずにというのは関心できないと感じる
0168デフォルトの名無しさんNGNG
>>167
言い方が悪かった。誰も答えないと確信してる訳じゃない。
ただ、既に他の摺れに誘導された事を知って質問に答えるのは
回答者の酔狂であって、マルチと知って質問に答えるのと対した違いは無いから、
礼儀を尽くすに値しないんじゃないか、と言う事が言いたかった。

>第三者からみて何も告げずにというのは関心できないと感じる
俺はどうでも良いと感じる。
0169デフォルトの名無しさんNGNG
でもまぁ、一言くらい書いてもばちは当たらんな。
つーか、移動元スレだけ見ても移動したかどうかは判らんし。
0170デフォルトの名無しさんNGNG
c:\borland\bcc55\examples\stdlib\cpp1mepo.cpp(5) : warning C4508: 'main' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。

できてるつもりなんですが、こんなのがでてしまいます
なぜなんでしょうか?
0171デフォルトの名無しさんNGNG
何が「出来てるつもり」なのか、説明してみろ
0172デフォルトの名無しさんNGNG
#include<iostream.h>
main()
{
cout<<"I am genius\n";
}

という単純なプログラムのはずなんですが
0173デフォルトの名無しさんNGNG
>>172
int main()...
0174デフォルトの名無しさんNGNG
スレ違い…と言おうと思ったが、コンパイラの吐いた警告すら
読めてないところを見るとこいつは日本語が読めないのか。
なら仕方ないな
0175デフォルトの名無しさんNGNG
>>170
void か int で return
0176170と同級生っぽwNGNG
進学校の高2の夏休みの宿題にいきなり

C++!

って。。。

PC持ってない人はどうするんだろうねw
変な冊子渡されたけど意味プーだしw

つか、上で質問してる文盲のやってるプログラムは
その冊子の1題目。

おまえももうちょっとがんばれよw
0177デフォルトの名無しさんNGNG
>>176
古い規格を習わされて御愁傷様。
0178デフォルトの名無しさんNGNG
>>176 ってかなりアフォっぽいっていうかアフォ
0179デフォルトの名無しさんNGNG
俺なんか、昔勝手に質問を他スレにコピペされ、
あらぬマルチ疑いをかけられ、回答して貰えなかった事あったなぁ・・・
0180デフォルトの名無しさんNGNG
そんなのは極希
0181デフォルトの名無しさんNGNG
>>172
cout<<"I am genius\n"; // この行がおかしい
0182デフォルトの名無しさんNGNG
うはあ、高校生マジで来てんの?
0183デフォルトの名無しさんNGNG
using namespace std;
0184デフォルトの名無しさんNGNG
>>183
iostream.h
0185デフォルトの名無しさんNGNG
C++での質問なんですが、
基底クラスで純枠仮想関数を作って、派生クラスでその関数の中身を書くじゃないですか。
それで、基底クラスでその仮想関数を呼ぶ事って出来るんでしょうか?
上にある関数を下から呼び出すことは出来るのでしょうか?
0186デフォルトの名無しさんNGNG
出来なきゃ意味が(ry
それに下にある関数を上からの間違いじゃないのか?
0187デフォルトの名無しさんNGNG
基底と言う言葉から下を連想したのではないだらうか。
0188デフォルトの名無しさんNGNG
あの、初心者なんですがC++のコードって変数宣言するときに
VBみたいに関数のはじめのほうで全部宣言しちまったほうがいいんですか?
{
 int A,B,C,D,E;
 char cA,cB,cC;
 ・・・;・・・;・・・;・・・;・・・;・・・;・・・;
 ・・・;・・・;・・・;・・・;・・・;・・・;・・・;
}

それとも
{
 int A;
 ・・・;
 int B;
 ・・・;
 int C;
 ・・・;
 int D;
 ・・・;
 char cA;
 ・・・;
 ・
 ・
 ・
 (略)
}
こんなふうにそのつど宣言したほうがいいんでしょうか?
どっちのほうが綺麗なコードになりますか?
0189デフォルトの名無しさんNGNG
>>188
C++ では途中で宣言出来る。

どっちがいいかは知らね。
漏れは無駄がなくなるように変数宣言は出来るだけ後回し。
そのほうが変数の意味も分かりやすくなるし。
0190デフォルトの名無しさんNGNG
>>186-187
上下なんて図示上の都合なんだから、どちらが上か下かなんて意味無いだろ
0191デフォルトの名無しさんNGNG
次のようなメンバを持つ構造体の、それぞれのメンバの相対アドレス(先頭のメンバ
のアドレスが0x0000となるように)を昇順で出力するプログラムを作成しましょう。

char c;
short s;
int i;
long l;

ファイル名 : lesson10.c

l : 0x0000
i : 0x0004
s : 0x0008
c : 0x000a

ーーーーーーーーーーーーーーーーーー
これをお願いします 
0192デフォルトの名無しさんNGNG
>>188
まとめて書きたがる香具師に限って関数が長くなる傾向があり、その変数が何者なのか不明になりがち。

それはさておき、君は事前に使う道具を全て揃えてから作業に取り掛かるのと、
必要になる都度道具を用意するのとどっちが好きかね。
0193デフォルトの名無しさんNGNG
>>191
#include <stdio.h>
#include <stdlib.h>
#define offsetof(s, m) ((char *) &(s).(m) - (char *) &(s))
int main(void)
{
struct {
long l;
int i;
short s;
char c;
} foo;
printf("l:%p\ni:%p\ns:%p\nc:%p\n", offsetof(foo, l), offsetof(foo, i), offsetof(foo, s), offsetof(foo, c));
return EXIT_SUCCESS;
}
0194デフォルトの名無しさんNGNG
error C2059: 構文エラー : '('
0195191NGNG
ありがとうございます
でもオレのレベルが低すぎてマクロが理解できません(´・ω・`)ショボーン
マクロ部分を関数内に展開?してくれませんか?ごめんなさい
0196デフォルトの名無しさんNGNG
マクロくらいこの機会に理解したらどうだよ?
0197デフォルトの名無しさんNGNG
昇順だと普通にやると環境依存になりがち
0198デフォルトの名無しさんNGNG
>>195
あー、(m)じゃなくてmのまんまじゃないと>194だった。
ついでによく見たらstddef.hにあるoffsetofマクロと仕様が違ってた。
マクロ定義を外して、
struct {
を
struct Foo {
に、
offsetof(foo, l)
を
offsetof(struct Foo, l)
にすれば通るはずだよ。
0199デフォルトの名無しさんNGNG
#include<stdio.h>
typedef struct mystruct{
char c; short s; int i; long long l;
}MYSTRUCT;
int main(void){
MYSTRUCT ms[2];
int index[4];
char p[]="csil";
char c;
int i,j,temp;
index[0]=((void*)&(ms[0].c))-(void*)&ms[0];
index[1]=((void*)&(ms[0].s))-(void*)&ms[0];
index[2]=((void*)&(ms[0].i))-(void*)&ms[0];
index[3]=((void*)&(ms[0].l))-(void*)&ms[0];
for(i=0;i<4;i++){
for(j=3;j>i;j--){
if(index[j]<index[j-1]){
temp=index[j];
index[j]=index[j-1];
index[j-1]=temp;
c=p[j];
p[j]=p[j-1];
p[j-1]=c;
}
}
}
for(i=0;i<4;i++)printf("%c:%04x\n",p[i],index[i]);
printf("size %04x\n",(void*)&(ms[1])-(void*)&ms[0]);
}
0200199NGNG
仕様に昇順でとあったからソートを入れておいたよ。
バブルソート入れると行数きつきつ。

long だとうちのコンパイラ(cygwin gcc)じゃ int と同じサイズの 4 ビットだから
long long 型 8 ビットにしてみた。double 型でも可。
たぶん出題者の意図はこっち。
構造体の中身の順序をいろいろ変えて試すと面白いと思うよ。
ついでにおまけも入ってるよ。
0201デフォルトの名無しさんNGNG
……………4bitって………


unsignedで0〜15までしか表せないじゃん
0202191NGNG
ありがとうございます
本当に助かりました(´Д⊂グスン
この機会にマクロを勉強してきます
0203188NGNG
必要になる都度道具を用意するタイプなのでそうしようと思イマス
0204デフォルトの名無しさんNGNG
やってしまった。
s/ビット/バイト
何やっているんだろう・・・・・。
0205デフォルトの名無しさんNGNG
まだ夏休みなんだろ。
みんな遊び呆ければいいのに。
0206191NGNG
>199さんの
char p[]="csil";
が理解できません
教えてください
0207デフォルトの名無しさんNGNG
スレ違い
つかそれがマジならそんな宿題やるレベルじゃねーだろ
0208デフォルトの名無しさんNGNG
>>206
可変長の文字列配列の初期化
実質的には
char p[5];
p[0]='c';
p[1]='s';
p[2]='i';
p[3]='l';
p[4]='\0';
といっしょ。
0209191NGNG
( ゚д゚)ハッ!
csilって文字列になにか意味があるって想ってしまいました
早とちりごめんなさい(´;ω;`)ウッ…
0210デフォルトの名無しさんNGNG
GNUとはなにか教えてください
0211デフォルトの名無しさんNGNG
GNU's Not Usable
0212デフォルトの名無しさんNGNG
#include <stdio.h>

main()
{
printf("GNU");
while(1)
printf(" is Not Unix");
}
0213デフォルトの名無しさんNGNG
>>210
がんもどき 煮込んだら 美味かった
ttp://www.sra.co.jp/public/doc/gnu/
0214デフォルトの名無しさんNGNG
なんで G なの?

ANU = ANU's Not Unix
BNU = BNU's Not Unix
CNU = CNU's Not Unix
DNU = DNU's Not Unix

何でもいいじゃん
0215デフォルトの名無しさんNGNG
XINU
XI = G
0216デフォルトの名無しさんNGNG
gnu: 野牛、ヌー
0217デフォルトの名無しさんNGNG
gnuぬヌーン
http://img.esbooks.co.jp/bks/images/i4/30597574.jpg
0218デフォルトの名無しさんNGNG
何故 XI = G なのかワカラン。
バカでスマソ。
0219デフォルトの名無しさんNGNG
>>218
XI(ズィー)とG(ヂー)
英語だと発音違うのにな
0220デフォルトの名無しさんNGNG
6番目のアルファベット
0221デフォルトの名無しさんNGNG
えっとちょっと疑問に思ったので質問なんですが

char Suzi[100];
double Result;
Suzi = "3.28"
Result = atof(Suzi);

こうすると
Result に 3.280000000002 が格納されてしまいます。
なぜ 3.280000000000 ではないのでしょうか?

//Suziの数によって右端が0だったり0じゃなかったりします・・・。
0222デフォルトの名無しさんNGNG
不動小数点数で表される数字は離散的だから
0223デフォルトの名無しさんNGNG
不動・・・orz
0224デフォルトの名無しさんNGNG
>>222
うーん、なにやら奥が深いんですね。
Result に 3.280000000000 というように正しい値が格納されるようにするには
どうすればいいですか?
0225デフォルトの名無しさんNGNG
double Result = 3.28;
0226デフォルトの名無しさんNGNG
>>221

char Suzi[100];
Suzi = "3.28"

これ変じゃないか?
いいの?
0227デフォルトの名無しさんNGNG
>>225
3.28は例なので任意の数字を指定できるようにしたいです。
>>226
すいません";"が抜けてました。
Suzi = "3.28";
です。
0228227NGNG
あー変の意味がわかりました。
char Suzi[] = "3.28";

こう書けば大丈夫でしょうか?
0229デフォルトの名無しさんNGNG
>>227
そういう意味かな
0230226NGNG
>>228
そういう意味です
0231 ◆Z0vd5w812U NGNG
>>224
二進数小数についてを調べるとよい。
で、有限長小数を丸め誤差なしで扱いたいなら文字列で管理する。
あとは、誤差なしで数値管理してくれるライブラリパッケージを使うとか。
0232218NGNG
>>219
なるほど、でもXIならどっちかというと「グィ」?
ん?って事はXINUはギニュー!?(特戦隊)

>>220
XI は 11 だと思います。
G は 7番目だと(ry
0233デフォルトの名無しさんNGNG
>>232
不覚にもギニューはつぼだった
0234デフォルトの名無しさんNGNG
>>232
英語の場合、X は S とか Z の発音する気が。
0235デフォルトの名無しさんNGNG
ASCII文字列の各文字を
小文字を大文字に
大文字を小文字に
どっちでもなければそのまま
に変換するコードをC++でかっこよく書くにはどうしたらいいですか?
<*.h> および <cctype> の類は #include しないで実装するにはどうしたらいいですか?
0236デフォルトの名無しさんNGNG
>>236
かっこよくかww
がんばれ↓
0237236NGNG
自分にレスってどうする on_
0238デフォルトの名無しさんNGNG
こんなのしか思いつきません
これじゃあ全然C++じゃないんだけどなにをどうしたらC++らしくなるのでしょう?

void henkan(char* target)
{
  static const char s = ( 'a' - 'A');
  for(char* t = target; *t; ++t){
    if(*t >= 'a' && *t <= 'z') {
      *t -= s;
    }
    else if(*t >= 'A' && *t <= 'Z') {
      *t += s;
    }
}
0239デフォルトの名無しさんNGNG
センスなさ杉
C++ どころか C すらやめたほうがいいよ
0240デフォルトの名無しさんNGNG
ガーン・・・>>239さんならどのようにしますか?
0241デフォルトの名無しさんNGNG
そもそも
>C++でかっこよく
><*.h> および <cctype> の類は #include しない
これがおかしいわけだが
0242デフォルトの名無しさんNGNG
どこらへんがおかしいのか良くわからないので教えてもらえないでしょうか?
0243デフォルトの名無しさんNGNG
かっこいいかどうかはしらんが、こんなんでどう?

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
struct UpperLower {
  void operator()(char &c){
    if(InRange(c, 'a', 'z'))
      c = c - 'a' + 'A';
    else if(InRange(c, 'A', 'Z'))
      c = c - 'A' + 'a';
  }
  bool InRange(int val, int a, int b){
    return val >= a && val <= b;
  }
};
int main(){
  string s = "absgd7382AHsufeAFDUE";
  cout << s << endl;
  for_each(s.begin(), s.end(), UpperLower());
  cout << s << endl;
  return 0;
}
0244デフォルトの名無しさんNGNG
char
to_upper_or_lower( char c )
{
    const char d = 'A' - 'a';
    char         r = c;

    if( c >= 'a' && c <= 'z' )
    {
        r += d;
    }
    else
    if( c >= 'A' && c <= 'Z' )
    {
        r -= d;
    }

    return r;
}

void
henkan( char* target )
{
    while( *target != '\0' )
    {
        *target = to_upper_or_lower( *target );
        target ++;
    }
}

普通にこれじゃダメなのか?
0245デフォルトの名無しさんNGNG
printf("ぬるぽ ぬるぽ オートラン♪\n");
printf("ヌルポ ヌルポ AutoRun♪ \n");
printf("ぬるぽ ぬるぽ オートラン♪\n");
printf("お前が踏まなきゃ誰が踏む!\n");
0246デフォルトの名無しさんNGNG
かっこよくだとか、ハック的な事を好むのは厨房までにしときなさい
0247デフォルトの名無しさんNGNG
はーい
ありがとうございました。
0248デフォルトの名無しさんNGNG
>>235

普通は以下のようなテーブルを作成して
テーブル参照一発で解決じゃないですか?

{
0x00, 0x01, 0x02, ...
0x10, 0x11, 0x12, ...
...
0x40, 0x61, 0x62, ...
0x70, 0x71, 0x72, ...
0x60, 0x41, 0x42, ...
0x50, 0x51, 0x52, ...
...
};
0249デフォルトの名無しさんNGNG
>>246
ん〜、でも
きれいなソース、読みやすいソースをめざして、
コーディング技術の向上に努めるのはいいことかもしれませんよ。
0250デフォルトの名無しさんNGNG
>>249
オレがいつ
>きれいなソース、読みやすいソースをめざして、
>コーディング技術の向上に努めるのはいいこと
こんな話したよ?
0251デフォルトの名無しさんNGNG
       _
    ミ∠_)
  ∧_∧/ \\
  ( ・∀/)   | | ガッガッガッガッガッガッ 
  (  つつ    | |
   Y  /ノ    人
    / )    <  >_∧∩
  _/し' //. V`Д´)/
  (_フ彡        /  ←>>245
0252デフォルトの名無しさんNGNG
int char_tbl[0xff + 1];
void init(void){
  int i;
  for(i = 0; i <= 0xff; i++) char_tbl[i] = i;
  for(i = 'a'; i <= 'z'; i++) char_tbl[i] += 'A' - 'a';
  for(i = 'A'; i <= 'Z'; i++) char_tbl[i] += 'a' - 'A';
}

void henkan(char *s){
  while(*s){
    *s = char_tbl[*s];
    s++;
  }
}
■ このスレッドは過去ログ倉庫に格納されています