ぼるじょあがC/C++の宿題を片づけますYO! 20代目

このエントリーをはてなブックマークに追加
不適切な部分にクエスチョンマークをつけるな
828826:04/02/24 20:02
すいません、初心者名もので
>>828
初心者向けの手順

1.Google で検索
ttp://www.google.co.jp/search?q=C%E8%A8%80%E8%AA%9E%E3%80%80%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%80%80%E5%89%8A%E9%99%A4%E3%80%80%E3%82%BD%E3%83%BC%E3%82%B9&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

2.一番上のサイトを見る。
ttp://f1.aaacafe.ne.jp/~pointc/log336.html
(日によって変わると思うが・・・)

3.コメントを削除しているソースを探す。

4.削除の所を、別ファイルに出力にすれば完成。
830デフォルトの名無しさん:04/02/24 21:12
>>829
長すぎるURLを貼り付けるなよ。
831781:04/02/24 21:15
チェッカーのソースが載っているサイトがあれば教えて下さい。
(APIで御願いします。)
結局、>>781氏は何がしたいのだろうか?

プログラミングの勉強?
それなら、いきなりゲームなんか作らないでC/C++の初歩を一から学ぶべきだ。
彼の知識では仮にソースコードを見たとしても理解できるとは思えない。

チェッカーゲームがしたい?
それならフリーウエアを探した方が手っ取り早い。

以上はネタでも煽りでもない。真面目な話だ。
>>831 >>781
藻前さんの言う API って何だ? という突っ込みもしておきたいところだが、
マルチしたスレで答えてもらってるだろうが。

【初心者歓迎】C/C++室 Ver.5【環境依存OK】
ttp://pc2.2ch.net/test/read.cgi/tech/1077102238/160

>>832に禿堂。>>781よ、今の藻舞さんでは何を
与えられても 教えて君 になるのがオチだ。
834お願いします:04/02/25 13:33
問)
ファイルからデータを読み込み、一番最初に出てくる、ある文字列を指定し
その文字列以降の一行の各レコードの上位2桁と下位2桁を入れ替え別のフ
ァイルに書き込むプログラムを作成せよ
仮に指定する文字列をDATAとする。
  こんな感じの問題です
ちなみにファイルのデータは
2000/01/10 19:58:39,DATA=,051A,C002,0105,FF00,000B,7F00,・・・省略・・・C002,0105,FF00,000B,7F00
2000/01/10 19:58:40,DATA=,051A,C002,0105,FF00,000B,7F00,・・・省略・・・C002,0105,FF00,000B,7F00
2000/01/10 19:58:41,DATA=,051A,C002,0105,FF00,000B,7F00,・・・省略・・・C002,0105,FF00,000B,7F00
2004/01/10 19:58:39,DATA=,051A,C002,0105,FF00,000B,7F00,・・・省略・・・C002,0105,FF00,000B,7F00
>>834
なんか言ってることがいまいち。
どんな感じの出力を望んでるの?
836デフォルトの名無しさん:04/02/25 13:42
>>835
それは理解力が乏しいからでは?
ちなみに俺もよくわからん。
837834です:04/02/25 13:59
2000/01/10 19:58:39,DATA=,051A,C002,0105,FF00,000B,7F00,・・・省略・・・C002,0105,FF00,000B,7F00
↑これを最初に出てくる仮の文字列"DATA"の行とした時に =の後の
051A,C002,0105,・・・・の一行を 1A05,02C0,0501・・・のように上位2桁と下位2桁を反転して
別のファイルに書き込むという意味なのですが・・・
838834です:04/02/25 14:12
2000/01/10 19:57:39,=,051A,C002,0105,FF00,000B,7F00,・・・省略・・・C002,0105,FF00,000B,7F00
・・・・・・・・・・・・・・・・・・・・・・・省略・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
2000/01/10 19:58:40,DATA=,051A,C002,0105,FF00,000B,7F00,・・・省略・・・C002,0105,FF00,000B,7F00
2000/01/10 19:58:41,DATA=,051A,C002,0105,FF00,000B,7F00,・・・省略・・・C002,0105,FF00,000B,7F00
2004/01/10 19:58:39,DATA=,051A,C002,0105,FF00,000B,7F00,・・・省略・・・C002,0105,FF00,000B,7F00
何行もあるデータの中からDATAと言う文字列を探してその後の一行を別のファイルに入れなさいナ・・・と言う
ことだと思うのですが

839デフォルトの名無しさん:04/02/25 14:15
C言語です。
fprintf()を使ってコマンドラインで指定されたファイルに文字列を書き込む。
文字列を書き込まれたファイルの中身
abcde
fghij
klmno
自分が作ったプログラム
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *fp;
if(argc!=2){
printf("ファイル名を指定してください\n");
exit(1);
}
if((fp = fopen(argv[1],"w"))==NULL){
printf("ファイルを開くことができません\n");
exit(1);
}
fprintf(fp,"%s\n%s\n%s","abcde","fghij","klmno");
fclose(fp);
return (0);
}
このプログラムだと文字列の改行が認識されずにファイルの中身が
abcde
fghij
klmnoとなってしまうんですがどうすればいいんでしょうか。
どなたかお願いします。

840839:04/02/25 14:18
間違えました。
>>このプログラムだと文字列の改行が認識されずにファイルの中身が
abcde
fghij
klmnoとなってしまうんですがどうすればいいんでしょうか。
どなたかお願いします。

このプログラムだと文字列の改行が認識されずにファイルの中身が
abcde fghij klmnoとなってしまうんですがどうすればいいんでしょうか。
どなたかお願いします。
別にまちがっているようには見えんが・・・
コンパイルし忘れってことはないよな。
842839:04/02/25 14:32
コンパイルはしてるんですが、
ファイルの中身が改行の所で■みたいなのが出て
改行されずに、abcde■fghijみたいになってるんです。
843834です:04/02/25 14:39
お願いしますどなたか教えてください!
>>834
最初に出てくる行だけを書き換えて別ファイルに保存すればいいんか?
後にDATAがあっても無視?
845834です:04/02/25 14:55
そうです、課題では一番最初のDATAの行だけです
で 
>>834
の意味が理解できた人はおらんのかい?
おいらは、さっぱり駄目だけど
行を読み込んでいって。
もしDATAが見つかれば
それ以降の , で区切られたデータを例えばa0b1ならb1a0と入れ替えて
その行全体だけ他のファイルに書き込んでそれ以降の行にDATAがあっても
何もしない。

ということではないだろうか。
>>839
もしかしてcygwin上で実行して結果をメモ帳とかで見てる?
メモ帳なんて使わないでgvimを使いましょう。
>>839
\n→\r\nでどうよ
850839:04/02/25 18:32
>>849
それでできました。ありがとうございまいた。
>>848
メモ帳で見てました。プログラムもメモ帳で書いているので。
gvimというのを調べて使ってみます。ありがとうございました。
851デフォルトの名無しさん:04/02/25 18:57
誕生日を入力すると現在の年齢を求めるプログラムを作りたいので、
C++で現在の年月日を取得する方法を教えてください。
できれば機種依存でない方法でお願いします。
環境 VisualStudio.NET 2002 Academic
    WindowsXP HomeEdition
time(), localtime()
853デフォルトの名無しさん:04/02/25 19:07
もちっと具体的にお願いします…
time localtime time.hでぐぐれ。あるいは首を釣って師ね。
#include <ctime>

std::time_t systime = std::time(0);
std::tm cur = std::localtime(&systime);
856855:04/02/25 19:16
cur*だった
857855:04/02/25 19:17
また間違った
*cur
858デフォルトの名無しさん:04/02/25 19:20
>>855
こう書くとおなじみのコードも新鮮に感じる。
859デフォルトの名無しさん:04/02/25 19:20
何はともあれ、ありがとうございます。
860エロイ人〜:04/02/25 21:16
void swap(int a,int b)
{
 int w;

 w=a;
 a=b;
 b=w;
}

スワップ関数間違ってますか?間違ってたら修正してちょ
>>860
void swap(int *a, int *b)
{
*b ^= *a;
*a ^= *b;
*b ^= *a;
}
862エロイ人〜サンクス:04/02/25 21:20
>>861
即答嬉しいっす。サンクス
>>861の方法はお勧めしません。
素直に、
void swap(int *a,int *b)
{
 int temp;

 temp = *a;
 *a = *b;
 *b = temp;
}
としておきましょう。
>>863
なんか不具合が起こることがあるんだっけ?
むしろ素直に
#include <algorithm>して
std::swap()を使う。
#define swap(type,x,y) do{ type temp;temp = x; x = y; y = temp;}while(1)

と望洋氏はしておられた。
>>866
while(1)だと永久ループだもんよ?
>>864
int a = 10; swap(&a, &a);
で a == 0 になる。
>>866
ワラタ
870エロイ人〜:04/02/25 23:40
void swap(int *a,int *b)
{
 int w;

 w = *a;
 *a = *b;
 *b = w;
}
>>863
すいません、tempってのがよく分からないのですが、wじゃ駄目なんですかぁ?
変数ってわかるか?
void swap(int *a,int *b)
{
 int shikibestumei_dakara_nandemo_iindayo_conchikisho;

 shikibestumei_dakara_doudemo_iindayo_conchikisho = *a;
 *a = *b;
 *b = shikibestumei_dakara_nandemo_iindayo_conchikisho;
}
>>872
そんな長い変数名使ったら殴るぞ?
>>872
当方MSX-Cを使用していますので、K&R仕様かつ変数名は6文字まででおねがいします。
またカニチャーハン仕様か!
蟹飯&立地
蟹チャーハンうまうま
蟹工船
879hj:04/02/26 01:52
氏名を5人分をキーボードから入力して、昇順にソートする。
そして、データマッチング機能を使用して、キーボードから
検索したい氏名を入力してあれば表示する。

分かる方、いました教えてもらえないでしょうか?
お願いします。
>>879
>データマッチング機能
正規表現の事か?
単なる文字列比較でいいんじゃないの?
「使用して」って言うと大層に聞こえるけど。
コード関係の質問てここでしてもいいんでしょうか(´・ω・`)
レベルはかなり低いと思うのですが、教科書買ってないため全然手がつけられません
例をあげると

次の各意味を表すコードを記述しなさい
1.テキストボックス1を空欄にする 
といった感じです

ちなみに変数型の名称調べるのに1時間かかったへたれです_| ̄|○
>>882
教科書は買わずとも、何とかして手に入れるべき。勉強にならんだろ。
で、授業に出てない奴とかの宿題は、全文が書いてなかったり前提条件が不明だったりするので、
解答が得られることはまれ。

この場合のテキストボックスとはなんぞや?というところから入らないといけないのでね。
884882:04/02/26 13:13
>>883
課題の内容からいくと、ただのコードの記述だけでいいと思うのですが
それすらわからないという感じです(´ω`;)

次の各意味を表すコードを記述しなさい
1.テキストボックス1を空欄にする 

TextBox1.Caption = ""          (あってるのかな_| ̄|○

という感じの問題が大多数を占めています
>>884
VBのくだスレ行った方がいいんじゃないかな・・・
ありがとうございます
レス検索してまいります
887デフォルトの名無しさん:04/02/26 22:59
C言語の問題です。

キーボードから入力された数値の範囲をチェックします。
範囲は0〜100として、入力の際に文字(a〜z,A〜Z,特殊文字)、
空白を含む入力、リターンのみの入力はエラーと表示します。
そしてもう一度入力を要求し、正常データが入力された時点で入力数値を表示して終了する。

実行結果例
INPUT:aaa
エラー
INPUT:A1a
エラー
INPUT:?1?
エラー
INPUT:(Enterキーのみ)
エラー
INPUT:101
エラー
INPUT:55
55

数字と文字をどうやって区別するのかがさっぱりわかりません。
どなたかお願いします。
#include <stdio.h>
#include <string.h>

int main()
{
       char str[256];
       int i;

       while(1) {
              printf("INPUT : ");
              gets(str);
              for(i=0;i<strlen(str);i++) {
                     if(str[i] < 0x30 || str[i] > 0x39) {
                            printf("エラー\n");
                            break;
                     }
              }

              if(i == strlen(str)) {
                     printf("%s\n",str);
                     break;
              }
       }
       return 0;
}

かなりテキトゥー
というかgetsでEnterのみを判別することは出来るんだろうか_| ̄|○
>>887
短いやつ。でも荒がありそう。
#include <stdio.h>
int main(void)
{
char str[BUFSIZ],str2[BUFSIZ];
int num;
while(1)
{
if(fgets(str,sizeof(str),stdin)==NULL)continue;
if(sscanf(str,"%d%s",&num,str2)!=1)continue;
if(num<0||num>100)continue;
break;
}
return 0;
}
スマン整数の範囲チェック入れ忘れた
getcharを3回やっちゃだめ?
892887:04/02/26 23:25
>>888〜891
ありがとうございました。
数字と文字の判別法とかわかりました。すごく助かりました。
#include <stdio.h>
void main(void)
{
int a;
printf("Input ; ");
gets('a');

if(a<1 || 100<a)
printf("\nError\n");

printf("%d",a);
}
fgets()で入力し、sscanf()かstrtol()で解析。
ここはこんな簡単なものも書けない香具師ばっかりか?
>891
入力データのサイズは決まっていない。
>>895
>範囲は0〜100として
>>896
ユーザが3桁しか入力しないという保証はない。
898891:04/02/27 16:02
>>897
だから、getcharを使ってプログラム側で3桁で
入力を打ち切るんだってば。できない?
char data[3];
int x;
data[0] = getchar();
data[1] = getchar();
data[2] = getchar();
if ('0' <= data[0] && data[0] <= '9'
&& '0' <= data[1] && data[1] <= '9'
&& '0' <= data[2] && data[2] <= '9')
&& 0 <= (x = (data[0] - '0') * 100 + (data[1] - '0') * 10 + (data[2] - '0'))
&& x <= 100)
//hogehoge
else
//hogehoge
みたいに。
>>898
打ってる途中での修正がきかないだろ。
900891:04/02/27 16:53
>>899
はい、その通り。
逝ってくる。
修正できるかどうかはコンソール次第だろ。
つーか一回作れよ。
100以外は全部エラーかよ
for(;;){
int i,data;
char buf[3+1]={0};;
for(i=0; i<sizeof(buf); ++i){
if((data=getchar())==EOF) break;
if(data=='\n') break;
if(i==sizeof(buf)-1){ ungetc(data, stdin); break; }
buf[i]=data;
}
if(data==EOF || feof(stdin)) break;

if(sscanf(buf,"%d",&i)<=0) x=-1;
if(i<0 || 100<i) i=-1;

printf(" -- %s", (i>=0)?"OK":"NG");
if(i>=0) printf(" (%d)", i);
putchar('\n');
}
あ、 x って間違ってるよ
906デフォルトの名無しさん:04/02/27 22:28
別に宿題じゃないんですが、無限ループの中で交互にある処理を実行した
い場合次の方法以外に何かありますか?

int a=0;
for(;;){
if(a == 0)
a=1;
else
a = 0;
}
>>906
一体何の処理をしているのかよく分からんが・・・

int a=0;
for(;;) a = !a;
>>906
分岐しなくとも2個が交互に実行されるだけなら、
1回のループで2個処理を一気に実行すればいいんじゃないのか?
909デフォルトの名無しさん:04/02/28 10:57
ttp://www.42ch.net/UploaderSmall/source/1077933333.txt
このような問題を出されたのですが良ければ
この中のレポート問題1~4のやり方できたら教えてください
910デフォルトの名無しさん:04/02/28 10:58
>>909
問題はどれですか?
911909:04/02/28 11:26
すいません問題間違えてました。
ttp://www5f.biglobe.ne.jp/~freeuploader/yui/source3/No_0474.txt
WM_TIMER
WM_LBUTTONDOWN
WM_RBUTTONDOWN
WM_PAINT
913ぼるじょあ ◆yBEncckFOU :04/02/28 12:15
(・3・)エェー 質問受付中ですYO!
ぼるじょあさんはいつもスレ見てるんではないのですか?
915モナーぼるじょあ ◆yBEncckFOU :04/02/28 13:38
>>914
ぼるじょあは全知全能の神だからだYO(・3・)
漸痴蝉嚢
sage
918デフォルトの名無しさん:04/02/28 17:51
問題の条件として、「各関数の引数と戻り値は定義せず外部変数を使うこと」
とあるんですが、どういうことかわかりません。
void 関数名(void)
みたいな関数のみを使って書け、ということでしょうか?
919デフォルトの名無しさん:04/02/28 17:56
>>918
だろうな。
staticをつけないグローバル変数だけでどうにかしろということだと思う。
920918:04/02/28 18:08
>>919
ありがとうございました。迷いがなくなりました。
>>899
うちではコンソールで修正できた。
Metrowerks CodeWarrior 8.2 Pro for Win

やっぱり処理系依存みたい。
922デフォルトの名無しさん:04/02/29 22:54
成績が正規分布に従うとして、偏差値60、70、80以上の人数を求めよ

…数学板行きかな?
キーワードはZ
>>922
ざっとn{1-P(X<(d-50)/10)}人。
(nは人数、dは偏差値、P(X<x)は標準正規分布に従う変数Xがxより小さくなる確率)
P(X<x)は
(1 + erf(x / sqrt(2))) / 2
で行けるはず。標準通りdouble erf(double)が実装されていればの話だが。
ちなみに家では#if !__INTEL__とかされて実装されてされてない(w
926デフォルトの名無しさん
0〜999までの整数X,Yをそれぞれ入力し、
その入力された整数を一つの文字列に結合・変換し出力したいです。
また入力された整数が1桁や2桁の場合は3桁に変換し、
必ず6文字の文字列なるように変換しなければなりません。
例)入力・・・X=9、Y=30
  出力・・・009030(文字列)
というような感じです。よろしくお願いします。