ぼるじょあがC/C++の宿題を片づけますYO! 20代目
不適切な部分にクエスチョンマークをつけるな
すいません、初心者名もので
830 :
デフォルトの名無しさん:04/02/24 21:12
チェッカーのソースが載っているサイトがあれば教えて下さい。
(APIで御願いします。)
結局、
>>781氏は何がしたいのだろうか?
プログラミングの勉強?
それなら、いきなりゲームなんか作らないでC/C++の初歩を一から学ぶべきだ。
彼の知識では仮にソースコードを見たとしても理解できるとは思えない。
チェッカーゲームがしたい?
それならフリーウエアを探した方が手っ取り早い。
以上はネタでも煽りでもない。真面目な話だ。
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 それは理解力が乏しいからでは?
ちなみに俺もよくわからん。
837 :
834です: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桁を反転して
別のファイルに書き込むという意味なのですが・・・
838 :
834です: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となってしまうんですがどうすればいいんでしょうか。
どなたかお願いします。
間違えました。
>>このプログラムだと文字列の改行が認識されずにファイルの中身が
abcde
fghij
klmnoとなってしまうんですがどうすればいいんでしょうか。
どなたかお願いします。
このプログラムだと文字列の改行が認識されずにファイルの中身が
abcde fghij klmnoとなってしまうんですがどうすればいいんでしょうか。
どなたかお願いします。
別にまちがっているようには見えんが・・・
コンパイルし忘れってことはないよな。
コンパイルはしてるんですが、
ファイルの中身が改行の所で■みたいなのが出て
改行されずに、abcde■fghijみたいになってるんです。
843 :
834です:04/02/25 14:39
お願いしますどなたか教えてください!
>>834 最初に出てくる行だけを書き換えて別ファイルに保存すればいいんか?
後にDATAがあっても無視?
そうです、課題では一番最初のDATAの行だけです
で
>>834
の意味が理解できた人はおらんのかい?
おいらは、さっぱり駄目だけど
行を読み込んでいって。
もしDATAが見つかれば
それ以降の , で区切られたデータを例えばa0b1ならb1a0と入れ替えて
その行全体だけ他のファイルに書き込んでそれ以降の行にDATAがあっても
何もしない。
ということではないだろうか。
>>839 もしかしてcygwin上で実行して結果をメモ帳とかで見てる?
メモ帳なんて使わないでgvimを使いましょう。
>>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);
cur*だった
また間違った
*cur
858 :
デフォルトの名無しさん:04/02/25 19:20
>>855 こう書くとおなじみのコードも新鮮に感じる。
859 :
デフォルトの名無しさん:04/02/25 19:20
何はともあれ、ありがとうございます。
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;
}
>>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 になる。
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 当方MSX-Cを使用していますので、K&R仕様かつ変数名は6文字まででおねがいします。
またカニチャーハン仕様か!
蟹飯&立地
蟹チャーハンうまうま
蟹工船
氏名を5人分をキーボードから入力して、昇順にソートする。
そして、データマッチング機能を使用して、キーボードから
検索したい氏名を入力してあれば表示する。
分かる方、いました教えてもらえないでしょうか?
お願いします。
>>879 >データマッチング機能
正規表現の事か?
単なる文字列比較でいいんじゃないの?
「使用して」って言うと大層に聞こえるけど。
コード関係の質問てここでしてもいいんでしょうか(´・ω・`)
レベルはかなり低いと思うのですが、教科書買ってないため全然手がつけられません
例をあげると
次の各意味を表すコードを記述しなさい
1.テキストボックス1を空欄にする
といった感じです
ちなみに変数型の名称調べるのに1時間かかったへたれです_| ̄|○
>>882 教科書は買わずとも、何とかして手に入れるべき。勉強にならんだろ。
で、授業に出てない奴とかの宿題は、全文が書いてなかったり前提条件が不明だったりするので、
解答が得られることはまれ。
この場合のテキストボックスとはなんぞや?というところから入らないといけないのでね。
>>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回やっちゃだめ?
>>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
入力データのサイズは決まっていない。
>>896 ユーザが3桁しか入力しないという保証はない。
>>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
みたいに。
修正できるかどうかはコンソール次第だろ。
つーか一回作れよ。
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
910 :
デフォルトの名無しさん:04/02/28 10:58
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をつけないグローバル変数だけでどうにかしろということだと思う。
>>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(文字列)
というような感じです。よろしくお願いします。