あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html 【過去ログ検索】
http://chomework.sakura.ne.jp/ 【wiki】
http://www23.atwiki.jp/homework/
・作りかけの動かないソースを宿題として投げるのは止めてください 自分が 判らない・作れない・動かない等は、たいてい何か条件を見逃している為です 課題全文を掲載する事によって、質問者が見落としている事も回答者に知らせる事が出来ます ・課題全文をテンプレの様に書き別途ファイルをロダにUPすれば回答を得やすくなります 作りかけであっても「途中までやりました」「ここまで作成しまた」としてUPすると クラス名・変数名 コーディンスタイルなど追従するため理解が楽になります
・死んでください
回答が得られないケースの傾向 ・マルチ 別のスレッドに同一の質問がある ・レポート 考察を述べよ・原因理由を述べよ 等 記述が主旨の宿題はスルーされてます ・督促 【重要】のルールを守らず同課題が張られると回答者の気力が萎えます ・重複質問 直近に 同じ/似た 質問があったかも知れません・前スレぐらいまでは検索してみましょう 別人が新規の質問として投稿しても督促とみなされスルーされます ・動作に必要なファイルがない 読込みデータを回答者が作ると、課題と別のフォーマットになる可能がある (回答を得ても動かない場合はほとんどこのケース) ・作りこんだソースの一部しかUPされない 回答者が仮のmainを作らないと起動する事が出来ないものはスルーされます ・課題掲載がなく作りかけのソースのみUPされてる 仕様(課題)が判らないと答えようがない ・環境構築が大変 別ミドルウェァをインストールしなければならないようなものはスルーされます ・言語仕様かミドルウェアの仕様か判別できない もはや宿題のレベルではないような・・・
・こんなにダラダラと決まり事作ったって質問する奴は読まない
長くて読む気がしない。 要点を三行半でまとめてくれないか?
・バーカ
・↑要点
>>6 読まないでいいんじゃね?
回答欲しい奴はは読むだろうしw
何故回答が得られないのか、まとまってるな 未回答の理由がリンク1つ >4 で済むから楽だな
>4 じゃね〜やw >5だったorz
いきなり軽く荒れてるねー
決まり事というより回答する為には必須のようなw
ほっぺ膨らませて鉄アレイみたいな顔になるところとか、期も過ぎる。
16 :
15 :2007/02/08(木) 03:01:17
物凄い勢いで誤爆した。スマソ
20 :
デフォルトの名無しさん :2007/02/08(木) 11:57:48
おらっ、俺にも簡単に解ける宿題を質問しろ!
21 :
デフォルトの名無しさん :2007/02/08(木) 14:08:18
いきなりですみません。 倍精度整数型の配列a[100]にキーボードから入力された整数を順に格納する、ただし、今までに 入力された数を掛け合わせたものが1000万を超えれば、そこで終了し、結果と そこまでの配列aの内容を逆順に出力するプログラムをC言語で作れ。 この問題解いていただけませんか?お願いします
断る。去れ。
倍精度整数型ってCの型で言うと何?
>>21 環境に依存する
倍長精度整数型の表せる範囲は言語や処理系によって違う
>1のテンプレ使え
単精度浮動小数点数 float 倍精度浮動小数点数 double char short int long (long long) 単精度整数? 倍精度整数? 対応する日本語訳が難しいな。
文字型 char: 1 byte 文字列型 char *: 単精度整数型 short: 2 byte 整数型 int: 4 byte 倍精度整数型 long: 4 byte (環境依存) 単精度浮動小数点型 float: 4 byte 倍精度浮動小数点型 double: 8 byte 最大1000万だから32bit変数で十分だね
堂々と嘘を書かないでくれ
ウソではなく正確ではない、かと
どこの腐れ政治家だよ
息を吐くように嘘をつく人種もいるそうな。
>>25 長精度整数とか倍長精度整数とかは見たことがある
だが整数に精度は会わないと思う
短整数型、長整数型でいい
倍長精度整数型 C言語 の検索結果 約 21,000 件中 1 - 10 件目 (0.14 秒)
>>21 これで好きなように改造しろ
#include <stdio.h>
void main(void){
long a[100],b=1,i;
for (i=0;i<100&&b<10000000;i++ ) { scanf("%ld",&a[i]); b *= a[i]; } while ( i-- ) printf( "%ld ", a[i] );
}
>33 >文字列型 char *: これのことかな?
>>35 サイトの内容をコピペしたのでいらんもんまでくっついてきただけ
それは消し忘れた
64bitネイティブの世の中になってコンパイラが対応したら int幅が64の時代になるのかなぁ 昭和は遠くになりにけり
int自体はCPUのビットと関係無い
>38 ありぁそなの?メモリのアドレッシング幅=intだと思ってた 雑談スマソ>All 宿題スレ再開どぞ
よろしくお願いします。 [1] 授業単元: プログラミング言語演習1 [2] 問題文: キー入力した10人分の得点データを整数型配列 に格納し、その後、優(80以上)、良(70〜79)、可(60〜60) それぞれの人数と平均点を求め、出力せよ。 [3] 環境 : VC++ 6.0 [3.1] OS: WindowsXP [3.2]言語:C++ [4]期限:2月9日 12時
>>40 可は60〜69にした 違ったら直してくれ
#include <stdio.h>
#define N (10)
void main(void)
{
int i,a[N],t6=0,t7=0,t8=0,c6=0,c7=0,c8=0;
for (i=0;i<N;i++){
printf("%2d番目の得点:",i+1);
if (EOF==scanf("%d",&a[i]) )
break;
}
for (i=0;i<N;i++){
if ( 80<=a[i] ) { c8++; t8 += a[i]; }
else if ( 70<=a[i] ) { c7++; t7 += a[i]; }
else if ( 60<=a[i] ) { c6++; t6 += a[i]; }
}
if( c8 != 0)
printf(" 優 %d人 ave %d\n", c8, t8/c8);
if( c7 != 0)
printf(" 良 %d人 ave %d\n", c7, t7/c7);
if( c6 != 0)
printf(" 可 %d人 ave %d\n", c6, t6/c6);
}
>>41 ×int i,a[N],t6=0,t7=0,t8=0,c6=0,c7=0,c8=0;
○int i,a[N]={0},t6=0,t7=0,t8=0,c6=0,c7=0,c8=0;
>>43 出力するのは「それぞれの人数」と「それぞれの平均点」なのかい?
「それぞれの人数」と「平均点」のようにも見えるけれど。
それから「可」の点数の範囲は結局いくらだったの?
>>21 #include <stdio.h>
int main(){
long int a[100];
int i,j,total=1;
puts("100個の整数格納しろやカスが");
for(i=0;i<100;i++){
scanf("%d",&a[i]);
total *= a[i];
if(total > 10000000){
printf("今までに入力された数を掛け合わせたもの:%d\n",total);
for(j=i;j>=0;j--)
printf("a[%d]=%d\n",j,a[j]);
break;
}
}
printf("終了だ包茎野郎");
return 0;
}
>>40 //可は60〜69です
#include <iostream>
using namespace std;
int a[10];
int i, l=0, m=0, s=0, ss=0;
float sum=0;
int main(){
for(i=0; i<10; i++){
cout << "?\n";
cin >> a[i];
sum += a[i];
if(a[i]>=80 && a[i]<=100){l++;} else if(a[i]>=70 && a[i]<=79){m++;
} else if(a[i]>=60 && a[i]<=69){s++;} else {ss++;}
}
cout << "優:" << l << " 良:" << m << " 可:" << s << " 不可:" << ss << "\n";
cout << "平均:" << sum/10 << '\n';
return 0;
}
47 :
デフォルトの名無しさん :2007/02/09(金) 01:28:03
>>47 ステップ数がおおくなりそうなのでスルー
15日までだから、まだまだおk
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク) 10文字以内の文字列を入力し格納、表示する。 また配列の先頭アドレスを格納するポインタ変数を用意し そのポインタ変数を使って1文字ずつ画面に出力する。 for文を使用(Null文字を見つけるまでポインタをインクリメント)すること [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 無期限 [5] その他の制限: 特になし よろしくお願いします
>>50 #include <stdio.h>
int main(void)
{
char str[11];
char *p;
fgets(str, 11, stdin);
printf("%s\n", str);
for (p = str; *p != '\0'; p++){
putchar(*p);
}
puts("");
return 0;
}
>>50 #include <stdio.h>
int main(void)
{
char str[11];
char *p = str;
fgets(str, 11, stdin);
for(; putchar(*p++); );
return 0;
}
アヒャ
>>50 #include<stdio.h>
void main(){
char*p;
for(gets(p);*p!='\0';printf("%c\n",*p++));
}
gets使うなよ。 それ以前にバッファ確保してないじゃないか。 子ね
(´・ω・`)ショボーン
#include <stdio.h> void main(void) { char s[11],*p; for(fgets(p=s,sizeof(s),stdin),puts(s);*p||(exit(0),0);printf("%c\n",*p++)); } void mainにした場合はexitするのがお作法だろう
>void mainにした場合は あ り え な い
59 :
53 :2007/02/09(金) 15:39:19
void main自体があり得ない。
組み込みでは結構使うが…スレ違いだな
int main() にして return 0; でOSに正常終了を返すのがセロリー?
63 :
デフォルトの名無しさん :2007/02/09(金) 19:04:48
62 名前:デフォルトの名無しさん 投稿日:2007/02/09(金) 17:30:53 int main() にして return 0; でOSに正常終了を返すのがセロリー?
63 名前:デフォルトの名無しさん[] 投稿日:2007/02/09(金) 19:04:48 62 名前:デフォルトの名無しさん 投稿日:2007/02/09(金) 17:30:53 int main() にして return 0; でOSに正常終了を返すのがセロリー?
65 :
デフォルトの名無しさん :2007/02/09(金) 19:11:26
64 名前:デフォルトの名無しさん 投稿日:2007/02/09(金) 19:06:28 63 名前:デフォルトの名無しさん[] 投稿日:2007/02/09(金) 19:04:48 62 名前:デフォルトの名無しさん 投稿日:2007/02/09(金) 17:30:53 int main() にして return 0; でOSに正常終了を返すのがセロリー?
>セロリー? 開発環境が違うからぁ〜〜ぁ〜〜好き嫌いはイナメナイ〜♪
68 :
デフォルトの名無しさん :2007/02/09(金) 20:09:12
[1] 授業単元:卒業研究 [2] 問題文(含コード&リンク): ブロックソートによるソートを行いその後に圧縮 [3] 環境 [3.1] OS:WindowsXP [3.2] 知識足らずで分かりません。 [3.3] 言語:Cを希望 [4] 期限:2月10日朝7時くらいまでです・・・w [5] その他の制限:特に無いです。一応学校ではc c++基礎はやりました。 ただサボりすぎてて分からないです。ww これが終わらないと卒業できないんでお願いしますww
69 :
デフォルトの名無しさん :2007/02/09(金) 20:11:56
68です 追記 abcab babca ababc cabab bcabc こんなテキストファイルをソートできて圧縮できればいいので簡単にお願いしますw
>>68 良い方に考えるんだ
卒業できないってことはもう一年学べるって事じゃないか
自力でがんばれよ
71 :
68 :2007/02/09(金) 20:18:54
後一年通う事は出来ないw まー巡回シフトさせなきゃいけなくてシフトさせながら格納とか分かりません。 本当に(ry
こいつの態度が気に入らない
74 :
68 :2007/02/09(金) 20:22:01
>>72 ネトゲとスロットww
ダメ人間確定ですwww
75 :
68 :2007/02/09(金) 20:23:53
正直人に物を頼む態度でない事は分かってます。 ダメならばスルーして下さい。 まぁ今まで自分がやってきた事なので甘い考えで卒業しようとするほうが間違ってるんですけどね・・・
卒業研究って、プログラムよりその後の論文の方が大変だと思うんだ・・・
77 :
68 :2007/02/09(金) 20:34:39
>>76 なぜか知らないんですが論文が無いんです。
ただほかにも課題が山のように有りますが・・・
論文を書かなくてもいいっていうのもおかしい話だw 文系か?
大学じゃないんだろ
80 :
68 :2007/02/09(金) 21:06:02
専門です。
専門ってことはプログラミングを専門に勉強してきたんだろ? 専門で卒業できないってヤバくね?就職は決まった?
82 :
68 :2007/02/09(金) 21:13:48
卒業したら違う専門に入りなおすか バイトしながら学費をためようと思ってるのですが2年間学費出してもらったので せめて卒業する事が親孝行かなぁと・・・ この道につくのは諦めました・・・
もう相手するなよ。
基礎やって卒業?
他の専門に入り直すなら卒業する必要ないだろ
最近は親孝行のレベルも下がったんだな。 もらったもの何にも返してないじゃん。
>>86 ・・・・・・・・・・・・
か、カラダで支払えと・・・・・・・・?
その状況では、早めに辞めてその分の学費を浮かしつつ働いて稼ぐのが一番の孝行だったろうな
頼むからそういう話はよそでやってくれ。
90 :
68 :2007/02/09(金) 21:29:51
>>88 その通りですね。だらけた自分が終ってる。
今の季節は学費を稼ぐためにクマと格闘してるよ
うおっ、ここにも格差社会の風潮が!?
格差社会っていうよりゆとり教育?
ここで、
>>68 に
社会はプログラマとしての君を必要としている!
卒業後はぜひとも
「このスレにいる奴らの会社に」プログラマとして就職して
「このスレにいる奴らのプロジェクトに参加して」頑張ってくれ給え!
とか煽ったらどうなるのか・・・
[1] 授業単元:プログラミングU [2] 問題文:4×4の魔方陣を全出力するプログラムを作成しなさい。 魔方陣とは縦横斜めのどの列を足しても答えが全て同じとなるものです。 出力例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (これは魔方陣にはなってません。あくまでも出力例です) [3] 環境 [3.1] OS: Windows XP [3.2] bcc [3.3] 言語:C++ [4] 期限:2007年2月13日午後4時 [5] その他の制限: 検索時間を短縮する為に後戻り法(バックトラック)を利用する。 全パターン出力したら終了する。 同じものが2つ以上でないようにする。 よろしくお願いします。
99 :
95 :2007/02/10(土) 20:04:35
答えは880通りになるらしいです。
>>95 魔方陣ならネットに転がっていそうな気もする
みんな難しいことやってるんだな。 俺にはバックトラックとかわからないよ。
斜めを忘れてた
103 :
デフォルトの名無しさん :2007/02/10(土) 22:11:30
MFC の中でマネージコードの使い方教えてくれるリンク、キーワード、その他 何でも良いから答えてくれ 調べまくってもたどり着かない・・
>>95 1つようやく出せた。
駄目だ俺のプログラム劇おそ。
105 :
97 :2007/02/10(土) 22:35:42
>>99 鏡像でx2、回転でx4になるんだが、除外しないといかんの?
106 :
97 :2007/02/10(土) 23:35:47
>>106 # 質問者じゃないけど
それ速いね
人間がやるみたいに一つ一つ埋めていって
違ったら前のマスからやりなおしってやったら
回転の除外してないし、かなり遅い。
でもアルゴリズムはさっぱりわからん。
109 :
デフォルトの名無しさん :2007/02/11(日) 01:50:02
[1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク):5つの実数を入力して、それを昇順に表示する。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual Studio.NET [3.3] 言語: Cです [4] 期限: 2007年2月13日24時 [5] その他の制限: if文、for文から配列まで習いました。 よろしくお願いしますm(_ _)m
>109 #include <stdio.h> #define N 5 int main(void) { double temp, a[N]; int i, j, k; for(i=0; i<N; i++) { scanf("%lf", &temp); for(j=0; j<i; j++) { if(a[j]>temp) { for(k=i; k>j; k--) a[k] = a[k-1]; break; } } a[j] = temp; } for(i=0; i<N; i++) printf("%f\n", a[i]); return 0; }
【質問テンプレ】 [1] 授業単元: プログラミング言語基本/基本言語演習 [2] 問題文(含コード&リンク): 「構造体・構造体のポインタを使うことを必須として、 構造体*student[20]の中にname,age,genderというメンバを作り、それぞれの入力を求めて格納し、最終的にそれらの情報をtxtファイルに出力せよ。」 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: VC6.0 [3.3] 言語: C [4] 期限: 明日の午前9:00まで。 [5] その他の制限: 自宅のパソコンがいつのまにか修理に出されていてかなり必死ですorz レス頂けたら携帯でコピーして学校のアカウントに送信して学校でコンパイルするつもりです・・・
メンバのそれぞれの変数の型は?
114 :
112 :2007/02/11(日) 09:21:05
>>113 nameはchar[30]、ageはint, genderはchar(これはサイズ指定なし) とのことです。
肝心なところを抜かしてて申し訳ありません・・・
115 :
113 :2007/02/11(日) 09:24:25
そか。それじゃ誰か頼む。俺はこれから寝るんでw ↓
│↑ └┘ 頑張れ。
117 :
デフォルトの名無しさん :2007/02/11(日) 10:05:26
119 :
112 :2007/02/11(日) 10:26:41
>>118 こんなに早くできちゃうんですね・・・凄い・・・
本当にありがとうございます。
いつか自分もこのスレで片付ける側になってみたいものです・・・
[1] 授業単元: プログラミング言語演習 [2] 問題文(含コード&リンク): 1次元配列の中に、20人分の得点データ(0点から100点)を初期値代入し、その後、得点を10点幅の10ランクに分け、 それぞれのランクに何人いるかをカウントし、それらの人数を出力せよ。ただし、カウントには2重ループを、出力には 1重ループのfor分を用いること。また、出力した人数がどのランクか(例えば、0-9,10-9,...)が分かるように出力せよ。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: VC++6.0 [3.3] 言語: C [4] 期限: 2月12日10時まで [5] その他の制限: 特になしです。 よろしくお願いします。
>120 #include <stdio.h> int main(void) { int score[20] = { 0, 10, 10, 20, 20, 30, 30, 40, 40, 50, 50, 60, 60, 70, 70, 80, 80, 90, 90, 100}; int rank[11] = {0}; int i, j; //for(i=0; i<20; i++) rank[score[i]/10]++; for(i=0; i<11; i++) { for(j=0; j<20; j++) { if(score[j]>=i*10 && score[j]<(i+1)*10) rank[i]++; } } for(i=0; i<10; i++) printf("%2d-%2d:%2d\n", i*10, i*10+9, rank[i]); printf(" 100:%2d\n", rank[i]); return 0; }
>>120 漏れもやってみた
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 20
#define MAX 101
#define RANGE 11
int main() {
int i,a[N];
int r[RANGE];
for(i=0; i<RANGE; i++) r[i]=0;
srand(time(NULL));
for(i=0; i<N; i++) {
a[i] = rand() % MAX;
printf("%3d ",a[i]);
}
for(i=0; i<N; i++)
r[a[i]/10]++;
printf("\n");
for(i=0; i<RANGE-1; i++)
printf("%3d 〜 %3d : %d \n",i*10, i*10+9, r[i]);
printf("%3d : %3d \n",i*10,r[i]);
return 0;
}
おいおい祝日の日が締め切りなんてスパルタ教育の大学だな。
読み直してみると月曜提出多いな
126 :
デフォルトの名無しさん :2007/02/11(日) 15:08:18
【質問テンプレ】 [1] 授業単元:やさしく学べるC言語 [2] 問題文(含コード&リンク): 以下の機能を満たすプログラムを作成せよ。 ・最大20人分の名前をアルファベットによって入力することができる。 ・姓と名前を別々に入力することができる。 ・endという文字列を打ち込むと20人に満たなくても入力を終了できる。 ・入力後、アルファベットで書いたときに一番文字列が長くなる人の名前を表示する。 その際、姓と名前の最初の一文字だけを大文字に変換して表示する。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限:2007年2月13日 [5] その他の制限:プログラムを使う人が使いやすいように、適切なメッセージを表示することを忘れないように。 宜しくお願いしますm(_ _)m
127 :
95 :2007/02/11(日) 18:57:33
みなさんありがとうございました。 おかげで提出できました!
[1] 授業単元:人工知能入門 [2] 問題文:4枚麻雀ゲームの作成 マンズ1〜9まで各3枚、字牌(白、發、中)各3枚 初めに相手が4枚と自分が5枚をランダムに表示(下図) 122白 59發中中 自分の手牌から数字(左から1〜5)を入力し切る。 相手は数字が2、3のような連続の場合>2枚ペア>1,3のような1つ抜かしの数字 という優先順位で切っていく。 どちらかの手が完成するか、山の牌がなくなったら終了。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C++ [4] 期限: 2007年2月14日まで ややこしい問題ですみません。麻雀がわかる方、わからなくても私の つたない説明で作成して頂ける方、どうかよろしくおねがいします。
回答者の質落ちたなぁ 何度も同じメモリ数えるなよ・・・・・
回答以前に問題に問題がある気がする
質の高い回答希望するヤシは、質の高い回答できないのが現実 第一こんなとこに聞きにくるヤシが、そんな高品質の回答持って逝ったら 「誰にやってもらったの」って疑われるだろうが このアフォチンが
>>134 そこまで考えが及ぶわけないだろ。
自分は楽して真面目に苦労した奴よりいい評価もらえればラッキーぐらいにしか思ってないさ。
流石に十分練られて作られたものは 先生が見ればすぐに只者ではないと気がつく。 そして質問や以前の回答から こいつが自分でやったんじゃないとバレバレ
だから俺は質の低い回答をし続ける というか質問がむずかしくて俺には回答できない
>>135 授業単元が「やさしく学べるC言語」だぞ?
うまいソースなんて提出したら一発でバレると思う
回答の質なんか考えたこと無かったな おもしろそうな問題を自分の好きなように解いて気が向いたら貼る くらいの感覚だ
[1] 授業単元: プログラミング言語演習 [2] 問題文(含コード&リンク): 構造体を用い、住所録ソフトを作成せよ。 住所録には名前、住所が入力できるものとする。 また、構造体は動的配列によって確保すること [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: VC++6.0 [3.3] 言語: C [4] 期限: 2月14日10時まで [5] その他の制限: 特になしです。 動的確保のところがよくわかりません。 よろしくお願いします。
>>141 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct{
char *name;
char *address;
}ADDR;
int main(void){
char buf[512];
ADDR *temp;
if((temp = malloc(sizeof(ADDR))) == NULL)return EXIT_FAILURE;
printf("名前:");
fgets(buf, sizeof(buf), stdin);
if((temp->name = malloc(strlen(buf) +1)) == NULL)return EXIT_FAILURE;
strcpy(temp->name, buf);
printf("住所:");
fgets(buf, sizeof(buf), stdin);
if((temp->address = malloc(strlen(buf) +1)) == NULL)return EXIT_FAILURE;
strcpy(temp->address, buf);
printf("\n名前:%s住所:%s",
temp->name, temp->address
);
return EXIT_SUCCESS;
}
146 :
130 :2007/02/11(日) 21:52:31
147 :
デフォルトの名無しさん :2007/02/11(日) 23:16:17
>>146 もしかして>130の言うことホント気づいてない?それともワザとやってる?w
>>148 もしかして>148の言うことホント気づいてない?それともワザとやってる?w
150 :
デフォルトの名無しさん :2007/02/12(月) 09:02:23
このスレは>130の言うことを論議するスレッドになりました。
ぐだぐだ言ってねーで、難点を明確に指摘したら?濁して場が荒れて楽しむ基地外はお断りだよ
スレ違いだから指摘なんてしなくていいよ^^
そういうならスレ違いだから他人のソースの批判もしなくていいお^^
残ってるのあるかー?
麻雀を作れってプログラムを他人任せで提出するか・・・?w
>>128 は言ってることが分からんから俺はパス
>>111 は改造しなさいとあるが、全部の機能を持つプログラムを作ればいいんだろうか
>>141 ,
>>145 > 構造体は動的配列によって確保すること
とあるから、Cだと下のような感じになるのでは?
int main(void)
{
char buf[512]; ADDR *temp; int i, cnt; size_t size;
for(cnt=0;;cnt++) {
if (cnt==0) {
if((temp = malloc(sizeof(ADDR))) == NULL)return EXIT_FAILURE;
} else {
if((temp = realloc(temp,sizeof(ADDR)*(cnt+1))) == NULL)return EXIT_FAILURE;
}
printf("名前:"); fgets(buf, sizeof(buf), stdin);
size=strlen(buf); if (size == 1) break; buf[size-1] = '\0';
if((temp[cnt].name = malloc(size)) == NULL)return EXIT_FAILURE;
strcpy(temp[cnt].name, buf);
printf("住所:"); fgets(buf, sizeof(buf), stdin);
size=strlen(buf); if (size == 1) break; buf[size-1] = '\0';
if((temp[cnt].address = malloc(size)) == NULL)return EXIT_FAILURE;
strcpy(temp[cnt].address, buf);
}
for (i=0;i<cnt;i++) printf("\n名前:%s 住所:%s", temp[i].name, temp[i].address);
puts("");
return EXIT_SUCCESS;
}
159 :
111 :2007/02/12(月) 12:21:32
>>157 全部の機能付きで書いてくれれば
問題に合わせて削ります
160 :
128 :2007/02/12(月) 12:50:03
すみませんわかりにくかったでしょうか。 4枚麻雀プログラムを作成しなさいって宿題で 細かいところは自分で考えるんですが 難しくてわかんないんです。 たすけてください。
先週風邪で授業休んでたんで、その時に講義したプログラムを教えてもらいたいのですが・・・ 3行3列の行列を与えたとき この行列の転置行列を求め、 もとの行列と転置行列との積を計算するプログラムを 書きなさい。 これなんです、どなたかご享受ください(´・ω・`)
>>161 行列の計算をそのままCで書くだけだ
難しい事など何も無い
>128 その問題文だと振り込みなしに見えるけど、実際はどうなの?
>131 >148 入力ごとに格納位置を変えるヘタレは見たくない って事か?w 確かに1件増える毎にネチャネチャめもり触ってキモイ ま 前スレ>800さん >866さんのクォリティは稀だ 期待するな
169 :
128 :2007/02/12(月) 16:51:51
ふりこんだ時点で終了になります。 同様に相手がふりこんだ場合も終了です。 今回は相手の牌も見えることにしたので ただのツモ合戦なんです。 相手はこっちの手牌関係なく優先順位にしたがって 牌を切っていきます。
>>169 22344 の時にはどれを切る?
22334 の時にはどれを切る?
172 :
128 :2007/02/12(月) 17:51:36
22344のときは34を残すので4をきります。 22334のときも34を残すので3をきります。 連続した数字がつながっている場合は5に近いほうの連続数字をとるようにします。 11233や77899で12で待ったり89で待ったりしないようにするための処置です。
174 :
◆XMHSU76NdE :2007/02/13(火) 01:04:55
次のプログラム部分は、変数 i と j に関するある効果だけを意図したものであるが、それはどんな効果か?
int i= 1, j= 2, k, *p, *q;
p = &i; q = &k; *q = *p;
*p = j; p = &j; *p = *q;
printf("%2d,%2d\n", i, j);
上のプログラム部分をポインタ p と q なしで同じ効果が得られるように書き換えよ。
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3642.txt [3] 環境
[3.1] OS: (Windows/Linux/等々) Windows XP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 4.0.1
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2007年2月13日15:00
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
なし
よろしくお願いいたします
>>174 int i= 1, j=2, k;
k=i;
i=j;
j=i;
>>174 int i= 1, j=2, k;
k=i;
i=j;
j=k;
どこかにc++のポーカーのプログラム落ちてないですか?
落ちてないです
179 :
130 :2007/02/13(火) 06:23:16
>>167 そういうことか……
俺は何をやってんだ……
180 :
デフォルトの名無しさん :2007/02/13(火) 10:04:12
宿題ではないのですがテキストについての疑問ですのでここでお尋ねしたいと思います。
以下のプログラムの最後から3行目、mc.Usebject(someone);についてなのですが
今までポインタを渡す場合は必ず&をつけていたような気がします。
この場合はなぜsomeoneとだけ書いているのでしょうか?
http://www.za.ztv.ne.jp/yosi-h/
181 :
デフォルトの名無しさん :2007/02/13(火) 10:11:18
すいません、前スレで質問させていただいたのですが解決しなかったため質問をまたさせていただきます
[1] 授業単元: c言語学習
[2] 問題文(含コード&リンク): 構造体を利用した売上表の作成。3桁ごとに「,」を挿入すること。
[3] 環境
[3.1] OS: windows XP home edition
[3.2] コンパイラ名とバージョン: Borland C++ 5.5.1 for Win32
[3.3] 言語:C言語
[4] 期限: 本日12時まで
[5] その他の制限: 構造体とポインタを使用
自分で作ったソースはうpロダにあげておきます
http://www.uploda.org/uporg692015.c.html Passはvipになってます
>>180 すれ違いだけど、someoneがポインタ変数だから。
>>180 その本が教科書なら仕方ないが、
できることなら別の本にしたほうがいいよ
iostream.h とか
クラスメンバがすべて public とか
namespace が無いとか色々
少なくとも内容が古いので
>>180 Jugyoin * someine;
someineは、既にポインタであるから
MyClass::UseObject(Jugyoin*)に渡すとき
mc.Usebject(someone);とする。
無論その前にsomeine=〜しておかないとまずい。
もしJugyoin someine;ならば
MyClass::UseObject(Jugyoin*)に渡すとき
mc.Usebject(&someone)とする。
>>182 なんかそれで分かりました。
ポインタを受け取る関数にポインタ変数でない変数を与える場合にのみ
アドレスに変換するための&をつけるってことですね。
ありがとうございました。
>>183 ほんとですかorz
一応平成14年発行のC++クラスと継承/矢沢久雄/技術評論社という本です。
ド素人の私にはわりかし分かりやすいと思って読んでました。
>>184 詳しいご解説ありがとうございます。
それで100%納得できました。
>>186 確かに昔はiostream.h
今はiostreamになったけど
すごい変わっているわけじゃないし
その授業でのC++の勉強がまったく無駄になるってことは無い。
>>187 そうですね…このテキストを使ってやっている講義も基礎的なものなので、
本格的に勉強したくなったら183で書かれたことも留意してテキストを選びたいと思います。
今は経済的な問題もあってこれでやるしかないです^^;
190 :
デフォルトの名無しさん :2007/02/13(火) 11:31:13
>>189 申し訳ないです。テンプレのうpロダに対するアクセスが学校のPCから出来ないため他所のうpロダを使わせてもらいました。
お手数かけて申し訳ないです。
インデントに関してはうpする前に見直すべきでした。
itokは,を付ける終わった文字配列を返すつもりだったのでしたが上手にいかなくて・・・
tanは見直してみます。
それと厚かましいとは思いますが、よろしければ私と同じうpロダにうpして頂けないでしょうか?
お手数かと思いますが、ぜひお願いします。
>>テンプレのうpロダに対するアクセスが学校のPCから出来ない このスレ見られてるんじゃないか?w
192 :
デフォルトの名無しさん :2007/02/13(火) 11:38:58
>>191 スレは見れるんですけどうpロダだけ飛べないんですよ。
ちょっとこちらの方で試行錯誤してみます
194 :
デフォルトの名無しさん :2007/02/13(火) 11:49:12
>>191 暇な友人に頼んで別のうpロダに移してもらい、改めてDLさせてもらいました。
まったく理解できない領域なんですが、参考書片手に理解を深めさせてもらいます。
どうもありがとうございました。
197 :
183 :2007/02/13(火) 12:05:29
>>195 >>194 見る限り間に合ったっぽい
>>180 のテキストの内容を何度読み返しても、ダメ出ししかできない
よく知らないんだけど 矢沢久雄 の著書って大丈夫なの?
悪い例として載せてる部分なのかな?
その人の著書は「ホントに分かって書いてんのか、ちゃんと勉強してねーだろ」って箇所が結構多い。 その本にしても、最後までポインタ渡しを使ってるのには閉口する。
>>198 同じ意見の人がいてよかった
やっぱり色々とおかしいよね
亀レスで悪いが
>>106 って動かなくね?
式が必要ってエラーがでんだがc++は久しぶりだからわかんねーや
>>200 どう見てもCで組んであるが、g++ではエラーでなかったな
何行目で引っかかる?
cじゃなくて?
>>200 (環境によるけど)配列初期化で空を指定してるからじゃね?
m[16+1] = { };
明示的に 0 を1つ置けば良いかと
m[16+1] = { 0 };
204 :
128 :2007/02/13(火) 15:08:00
期限が明日までなのですがどなたか作成していただけてるのでしょうか。 4枚麻雀ゲームプログラムをくむという問題なのですが。 これができないと進級できないんです。 お願いします。本当にお願いします。
学生ってのは人生の中でもっとも実りの多い時期だからね。 もう一年やったって損することはない。
206 :
128 :2007/02/13(火) 16:08:57
そこをなんとかお願いします。人助けだと思ってお願いします。 学費あと100万も稼げないよ…進級させてください! とりあえず提出しないといけないのでみなさんのお力添えをお願いします!
まず「4枚麻雀」とやらのゲームルールを。
>>204 その課題出したヤシに文句言え
1部の人にしかわからないゲームじゃなく
トランプ、オセロ等の万人がわかるゲームを作らせろ
ってな
マンズ、字牌なんて言われてもチンプンカンプンだし
どうなったら勝ちなのかすらもわかんねぇ
エスパーの俺が思うに半熟荘の練習麻雀みたいなやつだろ、多分
セブンブリッジみたいなもんか
212 :
デフォルトの名無しさん :2007/02/13(火) 18:40:00
214 :
C :2007/02/13(火) 18:49:16
>212 答えは回答に書いてあるじゃねーか。 自分で書いたソースならすぐわかんだろ。
216 :
デフォルトの名無しさん :2007/02/13(火) 21:04:07
#include <stdio.h> main () { char i[] = "お前はキモオタ" ; for(; ;){ printf("%s\n", i); } return 0; } これをコンパイルするとどうなりますか?
オブジェクトコードができます。
>>212 #include <stdio.h>
#include <vector>
struct address_file{
char name[20];
char age[10];
char address[10];
};
void output ( const address_file &data ){ //画面出力処理するメソッド
printf( "名前=%s,年齢=%s,住所=%s\n" , data.name, data.age, data.address);
}
int main(void){
FILE *fp; //ファイル構造体ポインタ
struct address_file buf;
std::vector<struct address_file> vec;
if((fp=fopen("address.txt", "r"))==NULL){ // ファイルを開く
fprintf(stderr, "\nError: file cannot open.\n");
return 1;
}
while(!feof(fp)){
fscanf(fp, "%*[\n]");
if(fscanf(fp, "%[^,],%[^,],%[^,\n]", buf.name, buf.age, buf.address)!=3)
break;
vec.push_back(buf);
}
fclose(fp);
for(size_t i=0;i<vec.size();i++)
output(vec[i]);
return 0;
}
219 :
213 :2007/02/13(火) 21:20:33
>>128 コンピュータの実装が出来ていない他に内容が違うのなら
どこがどう違うのか書いてくれないとこれ以上進めないよ
221 :
デフォルトの名無しさん :2007/02/13(火) 22:26:28
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 「文字型配列 str1 に、"ABCDEFGHIJKLMNOPQRSTUVWXYZ" という文字列が格納されている。 ポインタを2つ用いて、文字型配列 str2 に、この文字列を逆順に格納しなさい。」 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5 [3.3] 言語: C [4] 期限:なし [5] その他の制限:興味本位でstr2を使わず文字列を逆順に表示しようとおもい、 以下のプログラムを組んでみたのですが、うまくいきませんでした。 結果、ZYXWVUTSRQPONNOPQRSTUVWXYZと表示しました。どこがまちがっているんでしょうか。 よろしくおねがいします。
222 :
221 :2007/02/13(火) 22:27:50
以下、くんだプログラムです #include <stdio.h> int main(void){ char str[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char *p1,*p2; p1=str; p2=str; while(*p1!='\0'){ p1++; } p1--; while(p1>=str){ *p2=*p1; putchar(*p2); p2++; p1--; } putchar('\n'); return 0; }
>>221 p1=str;
p2=str;
while(*p1!='\0'){
p1++;
}
の後で、それぞれがどこ見てるか考えれば結果も納得できるはず
気づけば簡単に直せるだろうから頑張ろう
224 :
221 :2007/02/13(火) 23:13:41
>>223 ありがとうございます。
p2++; が意味なく、*p2=*p1で格納したアドレスの文字のひとつ後ろの文字を指すことに気づきました。
しかも、結局while中の*p2=*p1で格納しなおした orz...
*p2++;がいらなかった。
で、消してコンパイルすると
結果は ZYXWVUTSRQPONMLKJIHGFEDCBB となりました。
Aがでない。
while(p1>=str)だと *p1='A'のときもちゃんと動くはずだと思ったんですが・・・
しかも、
>>222 の結果と異なる理由が分からないw
それにしても、
>>222 のプログラムでも意味のない動作はしているけれど、結果だけは思い通りにでるような気がします。
あと、考えているうちに、p2を使う意味がないんじゃないかと思い
while(p1>=str){
putchar(*p1);
p--;
}
と改変しましたら、とりあえず動作しました。しかし、ポインタの勉強のためにもp2をつかってやってみようと思います。
めげずにご指導ご鞭撻のほどを m(_ _)m
225 :
デフォルトの名無しさん :2007/02/13(火) 23:41:55
変数に入ってる数字を並び替えするプログラム(だと思う)ですが、いまいちうまく表示されません、どこが間違っているかも自分では判断がつかなくて、どなたか知識を貸していただけませんでしょうか。 #include<stdio.h> main() { int Ary[5]={10,5,8,2,6}; int wrk,i,j; for(i=0; i==4; i++) { j=0; if(j<=4) { if(Ary[j]>Ary[j+1]) { wrk=Ary[j]; Ary[j]=Ary[j+1]; Ary[j+1]=wrk; } j=j+1; } } printf("整列後\n"); i=0; if(i<5) { printf("%d",Ary[i]); i=i+1; } printf("\n"); }
>>224 何をして欲しいんだ?
#include <stdio.h>
int main(void){
char str[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *p1,*p2,tmp;
p1=str;
p2=str;
while(*p1!='\0'){
p1++;
}
p1--;
while(p1>p2){
tmp=*p2;
*p2=*p1;
*p1=tmp;
p2++;
p1--;
}
puts(str);
return 0;
}
>>225 先生起こらないから正直に言いなさい。
自分で弄った?
>>224 んー。文字型配列 str2にって問題文にあるから別の配列を用意して
ポインタ使って格納していくのがいいのかな
最初のがこんな感じ
p2-> <-p1
abc・・・・・・・・・・xyz これはstr1
で、たぶん目的のは
<-p1
abc・・・・・・・・・・xyz これはstr1
p2->
xyz・・・・・・・・・・cba これはstr2
みたいな
分かりづらいな…綺麗に配列書いてるのを見たことある気がするけど
どんなだったかなぁ
>>225 まずi はどこで使ってるんだ?
それと for(i=0; i==4; i++) これじゃループしない i<=4 じゃなきゃだめだ
つか、いろいろへん
とりあえず昇順で↓
int main()
{
int Ary[5]={10,5,8,2,6};
int i,j;
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(Ary[j]<Ary[i])
{
wrk=Ary[j];
Ary[j]=Ary[i];
Ary[i]=wrk;
}
}
}
230 :
221 :2007/02/13(火) 23:54:20
>>226 一言で言えば、
>>222 のプログラムの出力結果がなぜ
ZYXWVUTSRQPONNOPQRSTUVWXYZ
になるのか、理由を教えてもらえるとありがたいです。
>>230 Z〜NはちゃんとコピーしてるがA〜Mを退避してない為
自分でコピーした文字を上書きしてるから
>>225 元はバブルソートのプログラムだったんだろうと予想
#include<stdio.h>
#define ARRAY_SIZE 5
int main(void)
{
int Ary[ARRAY_SIZE]={10,5,8,2,6};
int wrk,i,j;
for(i=0;i<ARRAY_SIZE-1;i++)
{
for(j=0;j<ARRAY_SIZE-1-i;j++)
{
if(Ary[j]>Ary[j+1])
{
wrk=Ary[j];
Ary[j]=Ary[j+1];
Ary[j+1]=wrk;
}
}
}
printf("整列後\n");
for(i=0;i<ARRAY_SIZE;i++)
{
printf("%d\t",Ary[i]);
}
printf("\n");
return 0;
}
>>230 やってること
#include <stdio.h>
#include <string.h>
int main(void){
char str[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int i1, i2;
i1=strlen(str) - 1;
i2=0;
while(i1>=0){
str[i2]=str[i1];
putchar(str[i2]);
i2++;
i1--;
}
putchar('\n');
return 0;
}
つまりZをコピーした瞬間にAが無くなってZが2つあるw
235 :
221 :2007/02/14(水) 00:07:31
>>231 >>233 >>234 ありがとうございます。
す ご く よ く わ か り ま し た。納得!
だから、str2を逃げ場所として用意してたんですね・・・
>>221 これの出力結果をじっくり眺めてみるよろし
#include <stdio.h>
int main(void){
char str[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *p1,*p2;
p1=str;
p2=str;
while(*p1!='\0'){
p1++;
}
p1--;
while(p1>=str){
puts(str);
*p2=*p1;
p2++;
p1--;
}
puts(str);
return 0;
}
237 :
221 :2007/02/14(水) 00:11:16
>>236 ABCD・・・WXYZ
ZBCD・・・WXYZ
ZYCD・・・
となる!(と思う)
わざわざ理解させるために、改変してもらってありがとうございます m(_ _)m
238 :
128 :2007/02/14(水) 00:33:27
>>213 自分で操作する部分は完璧です!
あとはコンピュータと対戦という形にできれば完成です!
敵は連続数字(34、78といった連続した数字)>2枚組(22、66など)>一枚抜かし(13、57など)
といった優先順位で自動で切るというようにしたいのですが、可能でしょうか?
239 :
225 :2007/02/14(水) 00:47:35
大体解決しました、ありがとうございました
>>226 > 何をして欲しいんだ?
童貞な俺でも愛してもらいたい
マジ童貞?
おうっ、27歳にしてまだ童貞。顔は悪くないんだけどな・・・
そればっかりは手伝ってやれないが、まあ頑張れ。
ケツ貸せよ
誰がケツ掘れと言った?愛してもらいたい とは書いてあるが?
誰がケツ掘ると言った?ケツ貸せよ とは書いてあるが?
247 :
デフォルトの名無しさん :2007/02/14(水) 10:06:33
>>247 ソースコードがすべてあるんだから
実行してみれば良い
試験中なのかもしれんがw
250 :
128 :2007/02/14(水) 13:43:28
>>248 完璧です!チョンボは配慮しなくてOKです!
本当にありがとうございました!
おかげで進級できます!ありがとうございました!
251 :
デフォルトの名無しさん :2007/02/14(水) 15:37:20
[1] 授業単元:プログラミング演習 [2] 問題文: 平面上の3点(x1,y1),(x2,y2),(x3,y3)の座標値を与えて、その3点を通る二次関数 y=ax^2+bx+c あるいはy=a(x-b)^2+cの3つの係数a,b,cを計算し、極点(xp,yp)を計算するプログラムを作れ。 ただし、平面上の3点を与えたときに二次曲線にならない場合はエラーとして返す事。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:2/15 18:00まで [5] その他の制限:特にありません。 どうか、よろしくお願いします
[1] 授業単元: プログラミングU [2] 問題文(含コード&リンク): 入力ファイル in.txt に、英文が格納されている。英文は、1行が末尾の改行も含めて40字以下、全体で20行以内とする。 英文には、英字、単語の区切りの空白、語句の区切りのコンマ、文末のピリオドのみが使われている。 入力ファイルの改行を取り除き、1行に1文の形式で出力する。すなわち、ピリオドの後のみで改行し直す。 コンマでは改行せず、単語の区切りの空白は残す。文末に空白が残っていてもよい。 出力は、ファイル out.txt に書き出す。 ● 実行例 入力 inp.txt This is a pen.But I don't have eraser. 出力 out.txt This is a pen. But I don't have eraser. なお、入力ファイルと出力ファイルをオープンする。 行単位の読込みより、書式付の方が処理しやすい。 入力ファイルを字句単位で読み込み、空白を入れて出力ファイルに書き込む。 字句の最後にピリオドがあれば、改行を書き込む。 ファイル終端 EOF で終了する。 字句の最後のピリオドの有無は、文字列の長さを求めたり、文字の出現位置を返す関数で調べる。 [3] 環境 [3.1] OS: windows xp [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C [4] 期限: 本日中までです。 [5] その他の制限: 早いうちだと助かります。
>>252 #include <stdio.h>
#include <string.h>
void setup()
{
if (!freopen("in.txt", "r", stdin)) {
perror("in.txt");
exit(1);
}
if (!freopen("out.txt", "w", stdout)) {
perror("out.txt");
exit(1);
}
}
int main()
{
char buff[64], *p, *q;
setup();
while (scanf("%63s", buff) != EOF) {
for (p = buff; q = strchr(p, '.'); p = q + 1)
printf("%.*s\n", q - p + 1, p);
if (*p)
printf("%s ", p);
}
putchar('\n');
return 0;
}
254 :
252 :2007/02/14(水) 17:06:49
ありがとうございます。 警告が何個か出てますがきにしないでいいんですかね?
>>254 無視しても問題はないけど、
#include <stdlib.h>
は追加しといてくれ。
代入式をforループの条件に使っていることに関する警告は無視しても構わない
括弧で囲めばいいんじゃ無いか
257 :
252 :2007/02/14(水) 17:14:55
了解しました。 ありがとうございました。
[1] 授業単元: program 演習 [2] 問題文(含コード&リンク): typedef struct _Student Student; struct _Student { char name[10]; // 氏名 int p1; // 数学の得点 int p2; // 英語の得点 int p0; // 合計点 } 上記のような構造体で、学生の成績を格納し、構造体の配列で成績表を管理する。 最初に、データ数 num を入力する。データ数は4以上とする。 以降で、1行単位で、氏名 数学の得点 英語の得点 を入力する。 氏名と合計点を、合計点の低い方から3人だけ出力する。 同点の場合は、先に入力された方を優先する。 [3] 環境 [3.1] OS: windows xp [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C [4] 期限: 19時まで [5] その他の制限:
よろしくお願いします。m(__)m [1] 授業単元: 情報処理 [2] 問題文: toupper,strcmp,strlen を用いずにそれらと同等の動作をする自作関数を作成せよ [3] 環境 : Borland C++ 5.5 [3.1] OS: WindowsXP [3.2]言語:C [4]期限:2月15日 12時
>>260 ほい。
#include<string.h>
int mystrlen(const char*a){return strchr(a,0)-a;}
int mystrcmp(const char*a,const char*b){return strncmp(a,b,-1);}
int mytoupper(int c){return c-97<26u?c^32:c;}
>>260 int toupper( int ch ) { return ( ch += (('a'<=ch && ch <='z') ? 'A'-'a' :0) );}
int strcmp( char *a, char *b){
while( *a !=NULL && *b !=NULL && *a++ == *b++ ) ;
return ( *a - *b );}
int strlen(char *p){int cnt=0;
while ( *p++ !=NULL) cnt++;
return( cnt);
}
>263は同意 >264はウソ
代入する意味ってあるの?
ないだろ。無駄に括弧多くて読みづらいし
>>266 ch +='A'-'a'
小文字なら'A'-'a' を足す
int toupper( int ch ) { return ch + (('a'<=ch && ch <='z') ? 'A'-'a' :0);}
>>272 こう書かないと読めない?
ch = ch + ('A'-'a' );
>>274 return してるから代入する意味無いと言っている件
なんでここは未解決ほったらかしで 1つの問題に固執するんだ?
>>277 ここは回答者が腕試しをするスレだもん。
>>277 どこもそうでしょ
アイドルの話をする掲示板でも何かの話題で盛り上がると
埋もれて流れてしまう書き込みがあるし。
誰も答えていない面倒な依頼を探すより
指摘など即答できるものに盛り上がってしまう。
みんな好きでやってんだから面白い議題に集中するのは当たり前。 どっかの誰かの宿題を解く義務はない。
284 :
デフォルトの名無しさん :2007/02/15(木) 15:32:29
[1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク): プロンプト”input moji = ”に続けてgetchar()関数によりキーボードから文字を読み込み、 putchar()関数で入力された文字を画面に出力し、これをEOFが読み込まれるまで続ける。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Visual Studio [3.3] 言語: C [4] 期限: 明日AM9時 [5] その他の制限:よろしくおねがいします┏oペコリ
285 :
助けて・・・ :2007/02/15(木) 16:12:29
■プログラム課題:最小値を算出するプログラムを作る 3つの整数を入力し,その内の最小値を出力するプログラムを作成せよ. 但し,最小値を算出する関数,"min3"を自分で作成し用いなさい. また,最小値の出力はメイン文で行うこと. ------------------------------------------- "表示結果の例" 3つの整数を入力してください。 整数1:5 整数2:-4 整数3:0 最も小さい整数は-4 ------------------------------------------- <条件> 0.各自の課題であり,それぞれが自力でソースプログラムを作ること. 1.プログラム冒頭にプログラムの説明を入れる. (どうやって作ったかの説明を記述下さい.) 2.各ポイントにコメントを挿入し,内容が分かるようにしておく. 3.ソースが綺麗になるようにVCのタブ機能を使うこと. お助けください!!!!!まじできない・・・
>>285 tempalte <typename T>
T min3(T a0, T a1, T a2)
{
return std::min(std::min(a0, a1), a2);
}
287 :
デフォルトの名無しさん :2007/02/15(木) 16:26:25
ちょっとCっぽくありませんが、以下をお願いしますお(;^ω^) 課題:サイズnの配列をランダムでソートする場合、何回ソートを行うのが最適か、考えなさい。 一応作ってみたソースはこんな感じ int a[size]をこれでシャッフル void Shuffle(int a[],int size) { for(int i=0;i<size;i++) { int r=rand()%size; int temp=a[i]; a[i]=a[r]; a[r]=temp; } } よろしくお願いしますお( ^ω^ )
>>284 #include <stdio.h>
int main(void) {
int c;
printf("input moji = ");
while((c=getchar())!=EOF) putchar(c);
}
>287 CっぽくないどころかCとは無関係だろ。
>>284 #include <stdio.h>
int main(void)
{
int ch=0;
while ( EOF!=ch ) {
printf("input moji = ");
while ( EOF!=(ch=getchar()) ){
putc(ch,stdout);
if( ch=='\n')
break;
}
}
return 0;
}
>>287 この質問の意味が分からないのは俺だけ?
シャッフルしてるうちにいつかは整列される…って意味なら
配列の要素数をn、同じ要素の数をa#1, a#2・・・a#v としたら
n! / (a#1 * a#2 *・・・* a#v)
じゃね?
>>292 俺もよう分からんが、
「サイズnの配列をランダムでソートする場合、何回ソートを行うのが最適か、考えなさい。」
たとえば
「a[5]={1,2,3,4,5} を 1回ソートしても、
みすった 「a[5]={1,2,3,4,5} を 1回ソートしても、{3,2,1,4,5} みたいにランダムにはならない」 「つまり、何回くらい入れ替えればランダムっぽくなるか?」 的な問題かとオモタ ていうか、「ランダムでソートする場合」って何?
数学的にはn-1回の入れ替えでいいらしいけど、証明方法は知らん。
ソートの意味分かってないんだろ
乱数を用いて配列の要素を入れ替えるとき、何回入れ替えれば充分にランダムかってことじゃないの? ソートって言葉を間違って使ってるからわかりにくいけど。
なるほど。ソートの意味を違えていたのか。 よく気がついたな…。ム板はエスパー大杉。
課題:サイズnの配列を ランダム := 無作為な交換 でソートする場合、何回 ソート := 交換 を行うのが最適か、考えなさい。 こういうことか
>>295 「自分自身との入れ替え(つまり、実質入れ替わり無し)を含む」
やり方で n-1回 入れ替える
ってのが最小・均等なのかな?
304 :
デフォルトの名無しさん :2007/02/16(金) 01:42:23
STRING STR="32" INT I=ATOI(STR); みたいな事できないの?
できますが、スレ違いです
306 :
デフォルトの名無しさん :2007/02/16(金) 01:55:16
307 :
お願いしますm(_ _)m :2007/02/16(金) 02:15:49
[1] 授業単元: 情報処理概論 [2] 問題文(含コード&リンク):1から5000までの素数をすべて計算せよ。 計算した素数のうち、双子素数となっている組を出力せよ。 双子素数とは、連続した奇数が素数になっているものの組である。 [3] 環境 windowsXP [3.2] コンパイラ名とバージョン:VC 6.0 win32 [3.3] 言語: visualC++ [4] 期限: 2007年2月20日13:00まで [5] その他の制限: プログラム中でC++の掛け算、割り算*,/を使ってはいけない。
>>307 #include<stdio.h>
int main(void){
int i, j;
int prev_prime=1;
for(i=2;i<=5000;i++){
for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i){
if(i-prev_prime==2)
printf("%d %d\n", prev_prime, i);
prev_prime=i;
}
}
return 0;
}
>>307 言語間違えてた スマソ
#include<iostream>
int main(void){
int i, j;
int prev_prime=1;
for(i=2;i<=5000;i++){
for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i){
if(i-prev_prime==2)
std::cout << prev_prime << " " << i << std::endl;
prev_prime=i;
}
}
return 0;
}
311 :
デフォルトの名無しさん :2007/02/16(金) 04:05:11
[1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク): キーボードからgets()関数によりchar型配列a[5]に整数を文字列として読み込み、 atoi()関数を用いて文字列を整数に変換し、出力する。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Visual Studio [3.3] 言語: C [4] 期限: 本日12時 [5] その他の制限:
>>311 bcc5.5で動作確認。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char a[5];
puts("整数を入力 ※4桁以内");
gets(a);
printf("%d\n", atoi(a) );
return 0;
}
313 :
デフォルトの名無しさん :2007/02/16(金) 04:40:57
こんな遅い時間にどうもありがとうございます^^
>>315 助かりました。ありがとうございました。
>318 問題文見れない
320 :
デフォルトの名無しさん :2007/02/16(金) 11:19:55
カレンダーの仕様がわからん。
仕様が分からんカレンダーを使用しよう
またしようがない事を……
すまん、突っ込ませてくれ! lastday[1] += ((ty%4==0 && ty%100!=0) || ty%400==0); 式の評価で2月の日数に加算をしているんだろうけど、きんもぉ〜〜☆
>>324 if ((ty%4==0 && ty%100!=0) || ty%400==0)
lastday[1] ++;
ならいいのか
>>327 すまん、return 1; で終了させる条件の指定をミスったっす。面倒だから
if(year<=1582 && month<=10) return 1;
これを && month<=10 の部分は消しておいて。
1583年以降から適応ってことで if(year<=1582) にしといてちょっ。
よろしくおねがいします [1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク):4行5列の行列の要素(整数)の最小値を求め表示する。。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual Studio.NET [3.3] 言語: C [4] 期限: 2月17日12時 [5] その他の制限: if文、for文から配列まで習いました。
>>330 こういう意味で良いの?
全角スペースは痴漢してちょ
#include <stdio.h>
a[4][5] = { // 超適当
{ 4, 2, -3, 3, 5 },
{ -1, 4, 0, 8, 23 },
{ 18, 2, 7, 9, 0 },
{ 22, -8, 9, 1, 18 }
};
int main(void)
{
int i, j;
int min;
min = a[0][0];
for (i=0; i<4; i++) {
for (j=0; j<5; j++) {
min = (a[i][j] < min) ? a[i][j] : min;
}
}
printf("最小値: %d\n", min);
return 0;
}
プログラム初心者なんだが、 「a[4][5] = { 」の部分って、mainの外に出しててもいいの?
335 :
330 :2007/02/16(金) 21:23:29
>>331 ありがとうございます。しかし
min = (a[i][j] < min) ? a[i][j] : min;
の文の ? 以降がよく分りません。多分まだ教わってないと思います
>>331 グローバルな名前空間を汚染するのはどうかと思うが。
宿題だから構わないか
>>335 if(a[i][j] < min) min = a[i][j];
>>334 そうですね
>>332 *まず初期が行われるタイミングが違います
・関数内(この場合mainの中)で宣言された変数はその関数が呼ばれたときに初めて初期化されます(static宣言を除く)
関数が呼ばれるたびに初期化が行われるということになります
・関数の外で宣言された変数はコンパイル時に初期化されます
プログラムの開始時にその値になっているということです.その後は初期化されません
*その変数を扱うことが出来る範囲が違います(スコープ)
・関数内(この場合mainの中)で宣言された変数はその関数内のみで使うことが出来ます
・関数の外で宣言された変数はすべての関数から使うことが出来ます(ファイルをまたぐときはexternを使います)
・関数外で宣言された変数と関数内で宣言された変数が同じ名前の場合は関数内の変数が有効になります
339 :
330 :2007/02/16(金) 21:36:36
>>337 成る程( ゚Д゚) 大変良く分かりました
>>339 実際はこうですよ
if(a[i][j] < min) min = a[i][j];
else min=min;
>>338 分かりやすくあんがとうございました (´・ω・`)
[1] 授業単元:プログラミング演習基礎 [2] 問題文(含コード&リンク): ローテート関数 rotate_left() rotate_right()を実装しなさい。 戻り値:無し 第一引数:(void *)操作対象となる記憶領域を指すポインタ 第二引数:(unsigned int)ローテートするビット数 第三引数:(unsigned int)操作対象となる記憶領域の大きさ(バイト数) [3] 環境 [3.1] OS: 指定無し [3.2] コンパイラ名とバージョン: gcc VisualC++等 [3.3] 言語: C [4] 期限: 2月17日午前9時 [5] その他の制限: ビッグエンディアン、リトルエンディアンどちらに対応したか ソースファイル中にコメントで明記すること。
>>342 1000ビットとかローテートできなきゃいけないのかな。
大きいワークエリアが必要だな。
>>342 /* リトルエンディアン用 */
# include <limits.h>
void set_bit(unsigned char *data, unsigned which, int bit) {
int pos = which / CHAR_BIT, shift = which % CHAR_BIT;
unsigned char old = data[pos];
data[pos] = old & ~(1 << shift) | bit << shift;
}
int get_bit(unsigned char *data, unsigned which) {
return data[which / CHAR_BIT] >> which % CHAR_BIT & 1;
}
void rotate_left(void *p, unsigned amount, unsigned size) {
unsigned char *data = p;
int i, loop = 0, pos = 0;
int nbit = CHAR_BIT * size;
int save = get_bit(data, 0);
for(i = 0; i < nbit; i++) {
int next = (pos + amount) % nbit;
if(next == loop) {
set_bit(data, pos, save);
pos = ++loop;
save = get_bit(data, pos);
}
else {
set_bit(data, pos, get_bit(data, next));
pos = next;
}
}
}
void rotate_right(void *data, unsigned amount, unsigned size) {
rotate_left(data, size * CHAR_BIT - amount, size);
}
345 :
大学生です。 :2007/02/17(土) 09:11:20
こんにちは。 先日、プログラミング質問スレッドにて質問させていただきましたが、 板違いということで、ここを紹介してくださいました。 大学のレポートで出された問題ですが、どうしても解けません。 ソフトはウインドウズのビジュアルソフトというのを使ってます。 問題 キーボードから1を入力するとあなたの名前、 2を入力するとあなたの年齢、 3を入力すると、その両方を表示することができるプログラムを作成せよ。 というものです。 よろしくお願いします。
>345 #include <stdio.h> int main(void) { int c; char *name = "あなたの名前", *age = "あなたの年齢"; c = getchar(); if(c=='1' || c=='3') puts(name); if(c=='2' || c=='3') puts(age); return 0; }
>>ウインドウズのビジュアルソフト そうだな。フォトショップだな。
351 :
345 :2007/02/17(土) 16:20:22
>>ソフトはウインドウズのビジュアルソフトというのを使ってます。 ウインドウズ ビジュアル スタディオです。
352 :
345 :2007/02/17(土) 16:30:55
>>347 様
ありがとうございます。
実行してみて、感激しました。
↓なんか楽な宿題だせよ?
[1] 授業単元:暇つぶし [2] 問題文(含コード&リンク): <C/C++ソースコード整形ツール> 1.インデントができること 中括弧のない if for なども、インデントをつけて文を次の行に出力すること(; だけでも) switch 文の case の深さは switch と同じか一段下げること インデントは タブ文字 or 2文字スペース or 4文字スペースのいずれかで統一すること 2.コメント部分は残し、なるべく変更しないこと 3.一行コメント // にも対応すること 4.関数と関数の間には空行を2ついれること 5.入力ファイルは標準入力(リダイレクト)から与えられるものとし、標準出力に出力すること 6.後は自分が見やすいと判断する基準でよろしく。(中括弧を行末にいれるか、次行に中括弧だけの行を作るか等) 7.入力されるファイルは正しい構文であると仮定して良い [3] 環境 [3.1] OS: Windows and Linux [3.2] コンパイラ名とバージョン: gcc,g++ [3.3] 言語: どちらでも可 [4] 期限: [無期限] [5] その他の制限: 他の宿題を優先すること
>その他の制限: 他の宿題を優先すること ワラタw いい奴だなw
Cはともかく、C++は面倒くさそうだ。
便乗だけどこのスレからソースを切り出してくれるフィルタが欲しいな
このスレから未回答の宿題を切り出してくれるフィルタが欲しい
>>357 #include <stdlib.h>
#include <string.h>
int main(int c,char**v){return c>1&&(*v=malloc(35+strlen(v[1])))?**v='\0',strc\
at(*v,"perl -ne \"/#include/&&print;\" \""),strcat(*v,v[1]),strcat(*v,"\""),sy\
stem(*v),free(*v),0:1;}
>>354 K&Rスタイルは嫌いですか?
あれの正統スタイルはインデント幅5なんだよ・・・
[1] 授業単元:関数 [2] 問題文(含コード&リンク):2行3列の号列maと3行2列の行列mbの積を、 2行2列の行列mcに格納する関数 [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
途中で送信されてしまいました。 言語はCです、以下自分で書いたコード #include <stdio.h> void mul(const int ma[2][3],const int mb[3][2], int mc[2][2]) /* 配列maとmbの積をmcに格納*/ { int i,j,k; int tmp; for(i=0;i<2;i++) { for(j=0;j<2;j++) { tmp=0; for(k=0;k<3;k++) tmp+=ma[j][k]*mb[k][j]; mc[i][j]=tmp; } } }
>>362 tmp+=ma[j][k]*mb[k][j];
↓
tmp+=ma[i][k]*mb[k][j];
>>361 期限は無期限で良いのか?w
環境はWin/VS7or8 と勝手に予測
>>361 [3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
この部分が未入力だけど
void mul(const int ma[2][3],const int mb[3][2], int mc[2][2]){ int i, k, h; for(i=0; i<2; i++){ for(k=0; k<2; k++) mc[i][k] = 0; } for(i=0; i<2; i++){ for(k=0; k<3; k++){ for(h=0; h<2; h++){ mc[i][h] += ma[i][k] * mb[k][h]; } } } }
>>365 間違って送信されてしまってパニくってました
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC++2005Express
[3.3] 言語: C
[4] 期限: 来週中
[5] その他の制限: 特になし
です。
>>363 その部分を書き換えてみましたが結果は同じでした。
マジレスすると
何故困るのかが分からない。
>>363 で完成。
>結果は同じ
何の結果だよ。
main()晒せ
>>363 関数があってるか確認するサンプルプログラムの方に間違いがありまして
そこを訂正したら正しい答えが出るようになりました。
>>366 こちらのほうがすっきりしていて読みやすいですね。
訂正された場所が間違っているのは分かったのですが
どうしてそうなるのか分からないのでこれから熟考してみます
ありがとうございました。
>>369 mc[i][j] = Σ{ma[i][k] * mb[k][j]}
熟考も何も公式だろ。
371 :
361 :2007/02/18(日) 00:12:38
>>368 main()の部分です
/*-------以下--------*/
int main(void)
{
int i,j;
int ma [2][3] = { {1,2,3},{4,5,6} };
int mb [3][2] = { {1,2},{3,4},{5,6} };
int mc [2][2]= {0};
mul(ma,mb,mc);
for (i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%3d",mc[i][j]); // ここがprintf("%3d",i,mc[i][j])
putchar('\n');
}
return(0);
}
自分でも何でこんな間違いしてたのかサッパリ分からない
うはwまじかw 俺の試したソース↓ int ma[N][M] = { { 1, 2, 3 }, { 4, 5 ,6 } }; int mb[M][N] = { { 1, 2 }, { 3, 4 }, { 5, 6 } }; int mc[N][N] = { 0 };
373 :
361 :2007/02/18(日) 02:27:38
やっと理解した。 ついでにもう一つ気づいたこと void mul(const int ma[2][3],const int mb[3][2], int mc[2][2]) /* 配列maとmbの積をmcに格納*/ { int i,j,k; //-----ここから----- for(k=0;k<3;k++){ for(j=0;j<2;j++){ for(i=0;i<2;i++){ //-----ここまで----- //この3行はどのように入れ替えても同じ結果が出る //個人的には大発見だ //今後役に立つかはさっぱりだがw mc[i][j]+=ma[i][k]*mb[k][j]; }}}} puts("もう寝る");
374 :
デフォルトの名無しさん :2007/02/18(日) 13:17:26
よろしくお願いします! [1] 授業単元:プログラミングU [2] 問題文(含コード&リンク):下 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:BCC [3.3] 言語:C [4] 期限:友達に聞かれてるのですぐにでも [5] その他の制限:特に無し 下のプログラムは最小公倍数を求めるプログラムである。 プログラム内の@〜Fに適当な命令を入れてプログラムを完成せよ。 #include<stdio.h> int main(void) { int a,b,i; printf("2つの数の最小公倍数を求めます。数値を入力:。\n"); scanf("%d",@); scanf("%d",A); for(i=B;i<=C;D) { if(E&&F) { printf("最小公倍数は%dです。\n",i); break; } } return(0); }
>>374 もしかしてこれ
for(i=a; i<=a*b; ++i)
みたいにiを1づつ増やして
if( (i%a) == 0 && (i%b) == 0)
片っ端から全部aとbでともに割り切れるものを探す
ということなのか。
うおっ、まじか?面倒くせぇ。a*bを最大公約数で割れよw
なんか不効率っぽいけど。 @: &a A: &b B: (a > b)? a: b C: a*b D: i++ E: i%a==0 F: i%b==0
378 :
デフォルトの名無しさん :2007/02/18(日) 13:37:10
>>377 ありがとうございます!
Bはどうしてそうなるのか教えていただけませんか?
>>378 aとbの最大限公倍数は、aよりもbよりも大きいから。
大きい値から調べた方が効率いいでしょ?
よりも じゃねぇな…。 よりも→以上
しかしまぁ最小公倍数なんて絶対存在するんだからループの継続条件なんていらなくね? 問題作成者の数学能力に疑問
>>374 とりあえず友達には素直に分からないって言うべきだと思う
383 :
デフォルトの名無しさん :2007/02/18(日) 13:44:03
どうもありがとうございました。
続いてお願いします。
テンプレは
>>374 と同じ
以下のプログラムはファイル[data_in.txt]から数字(整数)を100個読み出し、[data_out.txt]に読み込んだ数値を10倍にして書き込むプログラムである。
プログラムの空白部分に適切なコードを挿入し、プログラムを完成させよ。なおファイルポインタはそれぞれ[fp1]と[fp2]を使用すること。
なお、それぞれの空白には2行ずつプログラムが入る。
#include<stdio.h>
int main(void)
{
/*ファイルポインタの宣言*/
【空白@】
int i,k;
printf("これからファイルを開きます。\n");
/*ファイルポインタと実ファイルとを結びつける*/
【空白A】
if(fp1 == NULL){
printf("ファイルが開けません。\n");
return(-1);
}
printf("ファイルからデータを読み込みます。\n");
for(i=0;i<100;i++){
【空白B】
printf("%d\n",k);
}
printf("データの読み込みを終了します。\n");
/*ファイルを閉じる*/
【空白C】
return(0);
}
Ba Di += a E1 としてみると多分処理速度的には効率化した気がする。 Eが超冗長だけど。
>>383 先生にその問題じゃ解けないって抗議してこい
お前の頭が悪いんじゃなくて、先生が悪いよ
387 :
デフォルトの名無しさん :2007/02/18(日) 13:48:08
>>384 問題には書いてないのですが、授業から考えると
100
52
98
132
60
55
・
・
・
と一行にひとつずつ数字が書いてあるテキストファイルだと思います
>>383 適当に書いてみよう
【空白@】
FILE *fp1, *fp2;
(空行)
【空白A】
fp1 = fopen("data_in.txt", "r");
fp2 = fopen("data_out.txt", "w"); // これが開けないチェックは…?
【空白B】
fscanf(fp, "%d", &k);
fprintf(fp, "%d\n", k * 100);
【空白C】
fclose(fp1);
fclose(fp2);
389 :
デフォルトの名無しさん :2007/02/18(日) 13:55:34
>>388 未定義のシンボル fp(関数 main() )
となりました
>>389 【空白B】
fscanf(fp1, "%d", &k);
fprintf(fp2, "%d\n", k * 100);
391 :
デフォルトの名無しさん :2007/02/18(日) 14:01:50
>>390 100倍になってしまいました
fprintf(fp, "%d\n", k * 10); と書き換えればOKでしょうか?
>>391 書き換えてみればいいじょのいこ?その通りだが
>>391 駄目。それだと未定義のシンボル fp(関数 main() )って出るぞ
394 :
デフォルトの名無しさん :2007/02/18(日) 14:06:45
ありがとうございました!
多分次がラストになると思います
テンプレは
>>374 と同じ
選択法により複数の数値を並び替えることを考える。
1.次に示す5つの数値を昇順に並び替える。並び変わる様子をすべて示せ。
[9,5,3,8,1]
2.数値が3個、4個、5個の場合、それぞれ数値の比較回数は何回になるか答えよ。
3.数値がn個のとき、比較回数が何回になるか答えよ。
4.選択法による数値の比較回数をオーダーで表示するとどのようになるか答えよ。
まだ問題があったのかよ・・・ 最初にいっぺんに出したら楽だとか考えなかったのか?
>>394 ソートする手法は?バブル?基本選択?基本挿入?クイック?シェル?
397 :
396 :2007/02/18(日) 14:11:23
って、選択法って書いてあったか、すまそw
399 :
デフォルトの名無しさん :2007/02/18(日) 14:12:07
>>396 よくわからないので、参考として授業で習った数値の並び替えのプログラムを載せておきますね
#include <stdio.h>
void swap(int *x, int *y); /*入れ替え関数*/
void sort(int *x, int *y, int *z); /*並び替え関数*/
int main(void)
{
int a=100,b=1,c=50;
printf("初期状態\t");
printf("a=%d b=%d c=%d\n",a,b,c);
sort(&a,&b,&c);
printf("sort終了後\t");
printf("a=%d b=%d c=%d\n",a,b,c);
return (0);
}
void sort(int *x, int *y, int *z)
{
if(*x < *y) swap(x,y);
if(*x < *z) swap(x,z);
if(*y < *z) swap(y,z);
}
void swap(int *x, int *y)
{
int z;
z=*x;
*x=*y;
*y=z;
}
return(0)って括弧つけるのどこのコーディングスタイル?
402 :
デフォルトの名無しさん :2007/02/18(日) 14:34:19
>>402 高専か。高校生なのに難しいのやってるな。(そこまででもないが)
ちなみに何年ですか?
405 :
デフォルトの名無しさん :2007/02/18(日) 14:43:26
406 :
デフォルトの名無しさん :2007/02/18(日) 14:44:07
多分それでOkです。ありがとうございます
>>399 のやり方に倣うならこうじゃない?
@ABCD
9 5 3 8 1 @とAを比較、@の方が大きいので交換
5 9 3 8 1 @とBを比較、@の方が大きいので交換
3 9 5 8 1 @とCを比較、@の方が小さいので何もしない
3 9 5 8 1 @とDを比較、@の方が大きいので交換
1 9 5 8 3 以下略
1 5 9 8 3
1 5 9 8 3
1 3 9 8 5
1 3 8 9 5
1 3 5 9 8
1 3 5 8 9
>>408 あ、選択法って指示されてるのか、よく見てなかったわすまん
>>381 おまえエンジニアじゃなくて数学者になればよかったのに
Bを0にすりゃいいだろ。
_ _
r((___)_((___))、
|ノ'────┐| |
| (r'´ ´'J | | |
ハ|ー-(ヘ)─(ヘ)-‐rヘ
`〈 c、__,.っ 〉ヽ} < あーいとぅいまてぇーん
|: : :、___: : : : ト' by マルさん
_ハ//⌒'''''`: : ::ノ_
,. ─< ./:/、: : : :.,;.イ >─ 、
/ /:::/\_/'"´ ̄_ \
/ ̄、マ> 〈 〉 (::: ヽ }
参照URL↓
ttp://www.fujitv.co.jp/dybastar/chara.html
0しか答えにならなくなるな。 Bにabのうち小さい方入れればOKかな?
深く考えすぎてた
>>377 のBの不等号を逆にして
Eをi==0||i%a==0にすればOKだった
417 :
デフォルトの名無しさん :2007/02/18(日) 17:57:35
a.txtに _A _B _C という文字が入っていてそれを1行ずつ違う変数に読みこみたい。
そうですか。
>>417 #include <stdio.h>
int main(void)
{
FILE *fp;
char a[10];
char b[10];
char c[10];
if ( NULL!=(fp=fopen("a.txt","r") ) ) {
fgets(a,sizeof(a),fp);
fgets(b,sizeof(b),fp);
fgets(c,sizeof(c),fp);
fclose(fp);
}
printf(" a:%s b:%s c:%s",a,b,c);
return 0;
}
>>385 お前あった舞いな
そこまで考えなかった世
課題でやってきて下さいと言われたのですが、C言語始めたばかりで なにから手をつけていいのかちんぷんかんぷんで みなさん助けてくださいませんでしょうか??;; よろしくお願いします。 [2] 問題文 番号、氏名、フリガナ、住所、電話番号を表示するプログラムを作成せよ。というもので ---------------------------------------------------------------------------- U学生番号U 氏名 U フリガナ U 年 U 住所 U 電話番号 U U 0001 U山崎浩高U ヤマザキヒロタカ U 20 U 香坂市3丁目 U 054-227-1468 U U 0002 U大塚高次U オツカタカツグ U 19 U 笛川市2丁目 U 055-235-7789 U U 0003 U長谷部仁U ハセベジン U 21 U 北斗市1丁目 U 0541-156-7785 U U 0004 U葛西隆行U カサイタカユキ U 20 U 東百合菜 U 0556-554-6635 U ---------------------------------------------------------------------------- ※上記のないようにて構造体を作成して、初期値として設定する。 A以下の入力により、各データをソートして表示を行う。 1 学生番号 2 氏名 3 住所 4 電話番号 5 年齢順 Bソート方法はバブルソートを用いて行う。 C使用して良い関数 printf関数 getch関数 は使っていいとあります。 また memcpy memcmp strcpy strcmp 等の関数は自作しろとあります。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5 [3.3] 言語: (C/C++/どちらでも可) [4] 期限: (2007年2月19日まで) [5] その他の制限: (printf関数 getch関数 は使っていいとあります。 また memcpy memcmp strcpy strcmp 等の関数は自作しろとあります。 最後になりますが、どうかよろしくお願いします;;
422 :
421です :2007/02/18(日) 20:19:47
ずれてしまい醜くて申し訳ないです・・・
>>421 元からズレてるやん・・・↓んじゃ、後は回答任せた。俺は寝る。
初期化が致命的にめんどくさいです><
>>421 言いたいことがあるんだが・・その条件でC言語始めたばかりとかありえないと思うんだが
もしかしてサボってたね?
>>425 {
{"0001","山崎浩高","ヤマザキヒロタカ","20","香坂市3丁目","054-227-1468"},
{"0002","大塚高次","オツカタカツグ","19","笛川市2丁目","055-235-7789"},
{"0003","長谷部仁","ハセベジン","21","北斗市1丁目","0541-156-7785"},
{"0004","葛西隆行","カサイタカユキ","20","東百合菜","0556-554-6635"},
};
はっ、半角カタカナ!?
最初に名前を入力し、次に点数を入力する。これを5回繰り返す。 そして、これを昇順に並び替え、表示するプログラムを作る。という課題なのですが、構造体から手で入力するやり方がわかりません。 という課題なのですが、 typedef struct{ char name[50]; int score; }point; int main(void){ int i; char aname,bname,cname,dname,ename; int ascore, bscore ,cscore ,dscore ,escore; printf("5人の名前と点数を入力してください\n"); printf("1人目の名前\n"); scanf("%s",&aname); printf("1人目の点数\n"); scanf("%d",&ascore); printf("2人目の名前\n"); scanf("%s",&bname); printf("2人目の点数\n"); scanf("%d",&bscore); printf("3人目の名前\n"); scanf("%s",&cname); printf("3人目の点数\n"); scanf("%d",&cscore); printf("4人目の名前\n"); scanf("%s",&dname); printf("4人目の点数\n"); scanf("%d",&dscore); printf("5人目の名前\n"); scanf("%s",&ename); printf("5人目の点数\n"); scanf("%d",&escore); point std[] = { {aname,ascore}, {bname,bscore}, {cname,cscore}, {dname,dscore}, {ename,escore}, };
431 :
429 :2007/02/18(日) 20:48:17
>429続き このソースのpoint std[]のなかに値を入れる方法がわかりません。 このソースのやり方でやると構造体にうまく値が入らないので出力結果が以上になってしまいます。 どのようにすればよいのか教えていただきたいです。
あ?
433 :
421です :2007/02/18(日) 21:08:28
>>426 WEB上でC言語の勉強しながらこの課題をやりなさい!といきなり出されたので、サボってたわけではないのです・・・
どのような感じでやったらいいのでしょうか・・・;;
435 :
デフォルトの名無しさん :2007/02/18(日) 21:29:56
在日=竹石圭佑らしいが、熊本の済々黌の弓削達也って奴も朝鮮人だろ 在日って顔が日本人とは全然違うもんな
436 :
421です :2007/02/18(日) 21:45:54
>>434 早速ですが拝見させて頂きました。 ちゃんとソートされていてびっくりです。
ありがとうございました。
それで421で説明不足だったのですが
----------------------------------------------------------------------------
U学生番号U 氏名 U フリガナ U 年 U 住所 U 電話番号 U
U 0001 U山崎浩高U ヤマザキヒロタカ U 20 U 香坂市3丁目 U 054-227-1468 U
U 0002 U大塚高次U オツカタカツグ U 19 U 笛川市2丁目 U 055-235-7789 U
U 0003 U長谷部仁U ハセベジン U 21 U 北斗市1丁目 U 0541-156-7785 U
U 0004 U葛西隆行U カサイタカユキ U 20 U 東百合菜 U 0556-554-6635 U
----------------------------------------------------------------------------
@画面内にこのデータを常に出しているにはどうしたら良いでしょうか??
Aまた 1、2、3、4のKEYを1回押す(ENTERを押さずに)とソートされた画面に切り替わるようにするにははどうやったらいいのでしょうか?
よろしくお願いします;;
たびたび上げてしまい申し訳ありません・・・
移植性の高い方法では無理 まずそんな宿題でないだろ
>>436 え〜めんどくさーい
while(1){
system("CLS");
for(i=0; i<4; i++){
printf("%s %s %s %s %s %s\n",
stud[i].number,
stud[i].name,
stud[i].kana,
stud[i].age,
stud[i].address,
stud[i].tel
);
}
flag = getch();
if(flag == '1'){
//略
}else if(flag == '2'){
//略
}else if(flag == '3'){
//略
}else if(flag == '4'){
//略
}else if(flag == '5'){
//略
}else break;
}
[1] 授業単元:プログラミング技術 [2] 問題文(含コード&リンク): 以下のアスタリスクのタワーを表示させよ * *** ***** ******* [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcc or VC++ [3.3] 言語: C言語 [4] 期限: 2月19日 [5] その他の制限: ・変数は三個〜五個使用 ・for文を三回使用 ・if文、配列等は禁止。for文のみ使用 よろしくお願いします。
441 :
440 :2007/02/18(日) 22:11:43
>>440 #include <stdio.h>
int main(void) {
int a,b,c;
puts("*\n***\n*****\n*******");
for(;0;)for(;;)for(;;);
return 0;
}
>>440 #include <stdio.h>
int main(void) {
static const int n = 4;
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++)
printf(" ");
for (j = 0; j < 2 * i + 1; j++)
printf("*");
printf("\n");
}
return 0;
}
>>441 #include <stdio.h>
int main(void){
int i, k, h;
for(i=0; i<4; i++){
for(k=0; k<3-i; k++) putchar(' ');
for(h=0; h<i*2+1; h++) putchar('*');
puts("");
}
return 0;
}
変数むりやり3つ使った
447 :
440 :2007/02/18(日) 22:22:00
448 :
デフォルトの名無しさん :2007/02/18(日) 22:44:50
[1] 授業単元:情報処理 [2] 問題文(含コード&リンク): サンプルプログラムfdivideは、割り算関数fdivideの実行速度を確かめるプログラムである。 a=34567 b=10繰り返し回数=1000とすると、実行にかなり時間がかかることが分かる。fdivideを高速化した関数 int fdivider(int a,int b);を作成し、実行速度を確かめるプログラムfdividertimeを実行せよ。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC 6.0 win32 [3.3] 言語: visualC++ [4] 期限: ([2007年2月20日17:00まで] ) [5] その他の制限: プログラム中でC++ の掛け算、割り算 *,/ を使用してはいけない。
それを自分以外が読んで意味が分かると思うか
>>439 せっかく作っていただいたのですが、434のプログラムのどこに接続したらいいのかわかりません;;
なにとぞよろしくお願いします。;;
452 :
448 :2007/02/18(日) 23:41:42
すみません。fdivide書き込み忘れてました。 あと、fdivideの実行速度を確かめるプログラムはfdividetimeで、 fdividetimeは、 #include <iostream> // 現在時刻を計測するのに使う #include <time.h> using namespace std; int fdivide(int a, int b ); int main () { int a; int b; int c; int iter; time_t t1, t2; //現在時刻を記憶するのに使う cout << "Input a ="; cin >> a; cout <<"Input b ="; cin >> b; cout <<"繰り返し回数は="; cin >> iter; cout <<"fdivide start" <<endl; time(&t1); // t1 に現在時刻を記憶 for( int i = 0; i <iter ; i++ ){ c = fdivide( a, b ); } time(&t2);// t2 に繰り返し実行後の現在時刻を記憶 cout <<"fdivide end c = "<< c<< " time " << difftime(t2,t1)<<"sec." << endl; // 掛かった秒数を表示 return 0; } int fdivide( int a, int b ) { int dv= 0; while ( a >= b ){ a -= b; dv++; } return dv; } です。fdivideは入りきらなかったので次に書き込みます。
453 :
448 :2007/02/18(日) 23:49:09
fdivideは #include<iostream> #include<iomanip> using namespace std; int fdivide(int a, int b); int main(){ int a; int b; cout <<"a="; cin >>a; cout <<"b="; cin >>b; if (b==0) { cerr<<"bには0以外の整数を入力してください"; return 1; } cout <<a<<"/"<<b<<"="<< fdivide(a,b)<<endl; return 0; }int fdivide(int a, int b){ int fdivide(int a,int b){ int count = 0; if (a>=0){ if(b>0){ while (a >=b){ a-=b; count++; } return count; } if (b<0){ while (a>=-b){ a+=b; count--; } return count; } } if (a<=0){ if (b>0){ while (-a>=b){ a+=b; count--; } return count; } if (b<0){ while (-a>=-b){ a-=b; count++; }return count; } }} です。長くなってすみません。どうかよろしくお願いします。
iterって何のためにあるの?
455 :
デフォルトの名無しさん :2007/02/19(月) 00:29:23
すみません。iterが何のためにあるのかは分かりません。 fdivideはサンプルプログラムとして与えられたプログラムです。
456 :
454 :2007/02/19(月) 00:36:35
あー、実行時間を拡大するためにあるのか。 スマソ。
>>448 #include <climits>
int fdivider(int a, int b) {
int dv=0, i=1;
if(a<0) if(b<0) return fdivider(-a,-b); else return -fdivider(-a,b);
else if(b<0) return -fdivider(a,-b);
while(b<INT_MAX
>>1 ) b<<=1,i<<=1;
do if(a>=b) a-=b,dv|=i; while(b>>=1,i>>=1);
return dv;
}
どれほど速くなってるか計ってないからわからんが。
カンマ演算子使いすぎ…
459 :
448 :2007/02/19(月) 01:01:06
こんな遅い時間にありがとうございます。
-a ← これって掛け算じゃないの? マクロ使って多重定義とかアホなことやってた・・・orz
単項-は符号反転演算子。 処理系によっては掛け算で実装されてるかもしれないが、知ったこっちゃない。
462 :
デフォルトの名無しさん :2007/02/19(月) 04:31:26
【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク): 5.8 Write a program that uses a for statement to find the smallest of several integers. Assume that the first value read specifies the number of values remaining and that the first number is not one of the integers to compare. forループを使い、4つ、5つと入力した数字の一番小さい数字をアウトプットするという問題です。 例;9, 8, 12, 10, 16と5つのintegerを入力したとするとアウトプットは8になります。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: (C++ [4] 期限: 2007年02月25日17:00まで]
英語と日本語とどっちを信じればいいんだよ
465 :
デフォルトの名無しさん :2007/02/19(月) 05:14:28
気に入らない質問やその他や発言はスルーの方向で。
466 :
デフォルトの名無しさん :2007/02/19(月) 05:17:02
気に入らない質問やその他や発言はスルーの方向で。
「forループを使い」とあるから、ループに入る前に個数を入力させて、 for (i=0; i<number; i++) でループをはじめるんじゃまいか?
英語がちゃんと訳せないんだったら英語だけにしろよ。
【質問テンプレ】 [1] 授業単元: オペレーティングシステム [2] 問題文(含コード&リンク): Linux上でfork, execなどのシステムコールを利用して簡単なコマンドインタープリターを作成せよ。 作成するコマンドインタプリターは複数のコマンドを同時に実行できるようにする必要がある。 例えば、 ls; find . ?name aaa ?print; cat abc のように、複数のコマンドを;で結合する場合はそれらのコマンドを順番に実行できるようにする必要がある。 [3] 環境 [3.1] OS: windowsXP,cygwin [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語:C言語 [4] 期限: ([2007年02月20日23:59まで] 進級かかってそうです。朝までやってましたがわかりませんでした… よろしくお願いします
ぎりぎりまでやらずにさっさと投げろよ あと1日ちょいでやる暇人は少ないと思うぞ
禿同
>>469 留年すれば?
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str[0x400], *p;
int i, q;
l:
printf("> ");
fflush(stdout);
if(fgets(str, sizeof(str), stdin)) {
for(i = q = 0, p = str; ; i++) {
switch(str[i]) {
case '\0':
case '\n':
q = 1;
case ';':
str[i] = '\0';
system(p);
p = str + i + 1;
if(q) goto l;
}
}
goto l;
}
}
やっつけ感があふれてるなw
わからないからって文句だけつけて逃げる奴らってみっともない。
答えてもらえないからって煽るヤツほどじゃねーよw
うだうだいわずかだいをとけ!
どれを解いて欲しいのかよくわからないから、 未回答のやつまとめてくれ
未回答の問題とかツールで一気に集められるように、テンプレ改正した方が良くないか? ↓仕様はお前に頼んだ。
めんどい
前日書き込んだものです。回答を頂いたみたいなのですが、よくわからなかったのでもう一度お願いします;; この宿題をおねがいします。 問題文 番号、氏名、フリガナ、住所、電話番号を表示するプログラムを作成せよ。というもので 学生番号 氏名 フリガナ 年 住所 電話番号 0001 山崎浩高 ヤマザキヒロタカ 20 香坂市3丁目 054-227-1468 0002 大塚高次 オツカタカツグ 19 笛川市2丁目 055-235-7789 0003 長谷部仁 ハセベジン 21 北斗市1丁目 0541-156-7785 0004 葛西隆行 カサイタカユキ 20 東百合菜 0556-554-6635 0005 高木修 タカギオサム 19 南高津5丁目 028-557-6682 0006 丹沢紀夫 タンザワノリオ 20 神橋田原 0784-189-6774 0007 北沢国正 キタザワクニマサ 20 大俵2丁目 0783-1152-4658 0008 新谷幸雄 シンタニユキオ 21 八代東野 0657-1215-6353 ※上記のないようにて構造体を作成して、初期値として設定する。 A以下の入力により、各データをソートして表示を行う。 1 学生番号 2 氏名 3 住所 4 電話番号 5 年齢順 0 終了 ※なにも押さないと画面には初期のデータが出ていて、1を押すと番号順に並び0を押すと終了するという感じが望ましいそうです。 Bソート方法はバブルソートを用いて行う。 C使用して良い関数 printf関数 getch関数 は使っていいとあります。 また memcpy memcmp strcpy strcmp 等の関数は自作しろとあります。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5 [3.3] 言語: (C/C++/どちらでも可) [4] 期限: (2007年2月20日まで) [5] その他の制限: (printf関数 getch関数 は使っていいとあります。 また memcpy memcmp strcpy strcmp 等の関数は自作しろとあります。 どうかよろしくお願いします;;
この板の住人、空気読めすぎw 出題者も回答者も常連ばっかりなのか?
俺タイミング読めなさ杉。鬱。
>>480 何度やっても、「よくわからなかったのでもう一度お願いします」とやるのか?
どこが分からないのかを書けよ
485 :
デフォルトの名無しさん :2007/02/19(月) 21:34:50
軽い質問なんですが struct member *createMember(); これが構造体の関数なのはわかるんですが 関数における * ってどんな存在ですか?
軽い質問なんですが、なんでこのスレに書き込むんですか?
ぽいんたあだよ
重い質問なんですが、スレタイも理解できないほどの知能でなんで生きていられるの?
おれのだいがくのがっかはちのうじょうほうがっかだよ
490 :
480 :2007/02/19(月) 21:50:39
>>483 学生番号 氏名 フリガナ 年 住所 電話番号
0001 山崎浩高 ヤマザキヒロタカ 20 香坂市3丁目 054-227-1468
0002 大塚高次 オツカタカツグ 19 笛川市2丁目 055-235-7789
0003 長谷部仁 ハセベジン 21 北斗市1丁目 0541-156-7785
0004 葛西隆行 カサイタカユキ 20 東百合菜 0556-554-6635
0005 高木修 タカギオサム 19 南高津5丁目 028-557-6682
0006 丹沢紀夫 タンザワノリオ 20 神橋田原 0784-189-6774
0007 北沢国正 キタザワクニマサ 20 大俵2丁目 0783-1152-4658
0008 新谷幸雄 シンタニユキオ 21 八代東野 0657-1215-6353
この↑のデータと 1、番号 2、氏名 3、住所 4、電話番号 5、年齢順 0、終了
といった感じに画面上に常に出し続けて各KEYを押すとソートされるという風にやりたいのです・・・。
この仕方がわかりません;;
そのデータを構造体にして線形リストにすればいいの?
おーい
>>484 アンダースコアで始まる識別子は規格で予約されてるから使っちゃダメだぞ
よろしくお願いします。 [1] 授業単元: C言語演習1 [2] 問題文: 1個のfloat型のデータを、小数点を境に2つにわけよ。 分けた値は、それぞれfloat型の変数に格納せよ。 [3] 環境 : VC 6.0 [3.1] OS: WindowsXP [3.2]言語:C [4]期限:2月21日 14時
>>493 そんなのも出来ずにC言語の授業を受けるんでつか?(・∀・)ニヤニヤ
float f, f1, f2; f1 = (int) f; f2 = f - f1; printf("%f = %f + %f\n", f, f1, f2);
496 :
493 :2007/02/20(火) 00:42:29
あ、縛りを忘れてました。キャスト禁止でした。改めて再掲しまつ。 [1] 授業単元: C言語演習1 [2] 問題文: 1個のfloat型のデータを、小数点を境に2つにわけよ。 分けた値は、それぞれfloat型の変数に格納せよ。 [3] 環境 : VC 6.0 [3.1] OS: WindowsXP [3.2]言語:C [4]期限:2月21日 14時 [5]キャスト禁止
497 :
480 :2007/02/20(火) 00:43:29
>>491 遅くなって申し訳ないです;; そゆ事です。
float f, f1, f2; int i; // 負数無視 for (i=0; f>=1.0; i++) { f -= 1.0; } f1 = (float) i; f2 = f; printf("%f = %f + %f\n", f, f1, f2);
どなたかお願いします
フローチャートは面倒くさかったら省いてもらって構いません
[1] 授業単元: 情報処理
[2] 問題文:
配布データ、kadai3.datを使用して以下のプログラムを作成し、フローチャートを書け
kadai3.datの中には学生番号、英語、数学、理科のデータが入っている。
また、データの改造は行わないこと。
kadai3.dat:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3668.lzh 各自の3科目の合計点を求めよ。
英語、数学、理科、及び3科目合計について、最高点と最低点を求めよ。
各自の学生番号、英語、数学、理科、3科目合計及び合否判定(合格不合格)を学生番号順に表示せよ。
合否判定は3科目すべての点が60点以上を合格の基準とする。合計点が180点以上でも60点未満の科目があれば不合格とせよ。
各自の学生番号、英語、数学、理科、3科目合計を合計点の大きい順に表示せよ。
ファイル名は
入力ファイル kadai3.dat
出力ファイル h23-o.dat
ソースファイル h23.cpp
フローチャート h23.doc
[3] 環境 :Microsoft Visual Studio 2003
[3.1] OS: WindowsXP
[3.2]言語:C++
[4]期限:2月22日 10時
>>496 いやさ、標準関数も調べられない奴は氏ぬべきだと思うよ
#include <math.h>
float f, f1, f2;
f1 = modff(f, &f2);
>>497 ホントに線形リストの意味分かって言ってんの?
>>484 ソート方法がバブルソートじゃない
終了は 6 じゃなくて 0
構造体のコピーは無理にstrcpy使わずそのまま代入
構造体の配列サイズをギリギリにするくらいならメンバを全てポインタにしては?
どうせなら自己参照的構造体使って先生を脅かしてやれw
505 :
484 :2007/02/20(火) 16:06:28
すいません 解答をお願いしますm(_ _)m 次のプログラムを実行した時 printf関数によって出力される値を 解答群ア〜オから選べ すべてint型 @ for(sum=1,i=1;i<10;i++) sum += i; printf("%d\n",sum); ア44 イ45 ウ46 エ55 オ56 A for(i=1,j=10;i<j;i++,j--) printf("%d\n",i); ア1 イ4 ウ5 エ6 オ11 B for(i=1,sum=0;i<10;i++) sum += i%5; printf("%d\n",sum); ア20 イ25 ウ30 エ45 オ55 C〜Eの続きは次に書きます
続き C for(i=1,sum=0;i<20;i++) if(i>5) sum++; else sum--; printf("%d\n",sum); ア9 イ10 ウ12 エ15 オ16 D for(i=16,sum=0;i;) sum += (i/=2); printf("%d\n",sum); ア4 イ5 ウ15 エ16 オ31 E for(i=10,j=5,sum=0;i>0 && j>0;i--,j-=2) sum += i; printf("%d\n",sum); ア12 イ27 ウ34 エ45 オ55 以上@〜E 解答はどうなるでしょうか? 携帯からくだらない質問ですいませんm(_ _)m
>>506 正解は全部ア、答えてやったからもうくるな
ほんとくだらない問題ですいません..m(_ _)m できれば こんな馬鹿な自分に正確な解答をお願いしますm(_ _)m 自分の解答は @から ウエアアエオ なんですが どうでしょうか...
携帯でプログラム打ち込む暇があったらコンパイルして実行した方が早いと思うんだが
>>510 問題が正確じゃないから答えようが無い。
514 :
デフォルトの名無しさん :2007/02/21(水) 00:44:06
>510 どなたかお願いします!! 解答を
517 :
499 :2007/02/21(水) 01:01:02
>>500 自宅の環境だと、modffだとコンパイルエラーになる・・・
long型のmodfやmodflだとエラーにならないのに、modffだけエラーになる・・・何故に・・・
518 :
デフォルトの名無しさん :2007/02/21(水) 01:06:57
4問正解という事でしょうか? 66.6%
>>518 お願いだからセミコロンひとつ抜けてもプログラムの動作が変わってしまうってことを理解してくれ
そして書き込んだ問題と本当の問題を見比べて間違いがないかどうかチェックしてくれ
プログラム確認しましたが 間違いはありませんでした.. 2問 どこを間違えたんだろう...
プログラム間違えてないなら3問間違ってるぞ
あんたの確認だよ
524 :
デフォルトの名無しさん :2007/02/21(水) 01:29:13
そうですか... それぞれ答え分かりますかね 教えてもらえるとありがたいんですが
だから自分でプログラムを組んで結果を見りゃ良いだろw
>>513 あー間違えてハッシュテーブルで書いてた。
修正めんどくせえ
あの、自分499で質問した者なんですけど
>>517 さんが何故か499を名乗って別の問題の件について書いてたので
閲覧者の方に「質問を破棄した」と思われる可能性があったので書き込みました
トリップつけなかった自分が悪いんですが、
>>517 さんも何かのミスだと思うので確認してみて下さい
では、スレ汚しすいませんでした
>>517 環境は VC6 じゃない?
math.h 覗いてみたけど、C++ なら inline で modff() 実装されて、
C だと、_M_ALPHA か _M_MRX000 環境のみ modff() が居るみたいね。
# C99 からなのか? modff() 要求されるの
[1] 授業単元: プログラミング技術 [2] 問題文(含コード&リンク):番号(1桁の整数値),氏名(半角英字20文字以内) 血液型を一組とした構造体配列(要素数2人分)を用意する。 キーボードから二人分のデータを入力し、構造体配列へ格納後表示。 また表示部分のみ服関数で行うこと。 表示例 No NAME BloodType 1 kawai takasi A 2 T.imai B [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [無期限] [5] その他の制限: 構造体配列、関数、ポインタを用いること よろしくお願いします。
服関数ってなに?
股関節のことじゃね?
服関数→副関数→サブルーチン か???
>>529 うむ。modff, modflはC99から標準
>>535 gb.h
とか
gotoxy()
って何?
[3.2] コンパイラ名とバージョン: GBDK ゲームボーイ用のクロスアセンブラとCコンパイラ [5] その他の制限: 関数辺りまで習っています。 gotoxy() はその座標に表示させるという感じの役割で gb.hはゲームボーイ用のファイルです。 恐らく、、
>>535 gb.hを提供してくれなきゃ解けないわけだが
540 :
535 :2007/02/21(水) 21:25:46
面倒くさいにもほどがあるなw
#include <gb/hardware.h> #include <gb/sgb.h> #include <gb/cgb.h> …… 無限ループになりそうだからやめとく。
藁 gb.hだけじゃ足りねえし
関数の説明ないと無理だな てか、それむか〜し見たことあるけど本見ながらじゃないとわからんと思うよ
問1. delay(70)の上か下に、 if((dir_x>0&&ball_x==19)||(dir_x<0&&ball_x==0) dir_x*=-1; if((dir_y>0&&ball_y==17)||(dir_y<0&&ball_y==0)) dir_y*=-1;. を追加
無期限なのか3日以内なのかどっちかはっきりしようや
>>548 どこがC/C++の宿題なのかと小一時間問い詰めたい
551 :
548 :2007/02/22(木) 00:53:54
どこで質問したらいいですか?期限はなしです。
552 :
499 :2007/02/22(木) 01:25:42
高学歴と言えるような大学くせぇぇぇぇぇ〜〜〜〜
灯台だな
灯台でもおちこぼれはいるってことか
俺も国立T大学でつよ。 近くに砂丘があるんですけどね…
もしや農学部はマシだが工学系はボンクラ揃いの鳥取?
その程度のレベルしか居ないよこのスレには、質問内容で分かる
君らは国公立大学を舐めていないか?
俺は専門学校だけど感官同率や知能の国立なんかよりC言語が上手いと自信を持って言える。
知能× 地方○ 感官同率× 関関同立○
あとマーチよりも上かなw
プログラム技術のレベルを言語ベースに考えてる時点でうんk
即戦力が専門学校の取り柄なのに、プログラムを大学生に負けてどうするw
課題をまる投げにしてる時点で、大学関係なく、ぬるぽ。 まあ、おかげで暇つぶしができるのだが。
アルゴリズムは専門に負けないようがんばれ大学生 ガッ
なんでそんな宿題が課せられているのかも分かっていないまま 学業を終えて、いざ社会に出てみると・・・そういうことだったのかと気づく。 なんてちっぽけな課題だったんだ、そんなものも出来なきゃ通用しない罠 って言える日が来るさ。だから自力でやっとけ、ってここで言うのはお門違いだがw
そう思うなら書くなよ…
いや、まぁ、書いてから気づくのもお門(ry
>>530 #include<stdio.h>
#include<stdlib.h>
typedef struct{
int no;
char name[20+1];
}Data;
void PrintData(Data data[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d\t%s\n",data[i].no,data[i].name);
}
int main()
{
Data data[2];
int i;
char no_buf[2];
for(i=0;i<2;i++){
printf("%d人目の番号:",i+1);
fgets(no_buf,2,stdin);
data[i].no=atoi(no_buf);
fflush(stdin);
printf("%d人目の氏名:",i+1);
fgets(data[i].name,20+1,stdin);
fflush(stdin);
}
PrintData(data,2);
return 0;
}
しかし見事ななげっぷり
[1]授業単元:C言語 [2]問題文: 1.構造体を使ったアドレス帳プログラムをを作成しなさい、下記の仕様を満たすこと。 ・「名前」(全角10文字以内) ・「読み(ローマ字)」(半角30文字以内) ・「メールアドレス」(半角30文字以内) ・「電話番号」(半角13文字以内) 2.データの保存、読み込みが出来るように改造しなさい(できるだけ以下の機能を追加すること) ・名前を入力して該当するデータを表示する機能(検索機能)を追加しなさい ・読みのデータが入力されたとき、名字と名前の先頭を大文字に、その他を小文字に変換して保存するように改造しなさい ・データ一覧表示を読みのアルファベット順に表示するように改造しなさい ・文字を入力して、その文字を含むメールアドレスのデータの一覧を表示する機能を追加しなさい 3.メモリーを動的に確保して、メモリーが許す限りのデータを保存できるように改造しなさい [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007/3/2 よろしくお願いします。
[1] 授業単元:プログラム演習(複雑な計算その3) [2] 問題文(含コード&リンク): 多項式の計算と()カッコの計算が可能なdentaku3.cを作成しなさい 実行例 1+2-3*4/5 エンター 0.600000 [3] 環境 Windows Xp SP2 [3.2] コンパイラ: Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland [3.3] 言語:C [4] 期限:[2007年03月01日06:00まで] [5]特に指定はありません 最終的には関数電卓を作るらしいです。先が思いやられる orz よろしくお願いします。
>>574 ほい。
#include<stdio.h>
#include<stdlib.h>
char buf[100],*src=buf;
double atm(void);
double mul(double r){return*src=='*'?++src,mul(r*atm()):*src=='/'?++src,mul(r/atm()):r;}
double add(double r){return*src=='+'?++src,add(r+mul(atm())):*src=='-'?++src,add(r-mul(atm())):r;}
double atm(void){
double r;
while(isspace(*src))++src;
if(*src == '(')++src,r = add(mul(atm())),++src;
else r = strtod(src,&src);
while(isspace(*src))++src;
return r;
}
int main(){gets(src);printf("%f\n",add(mul(atm())));}
576 :
574 :2007/02/22(木) 19:43:54
>>575 速い; ありがとうございます
自分よりかなりオーバースペックなソースなので理解と学習に勤めます
>>576 3項演算子使いまくりだし
>>575 はわざと難読化させてる感じ。
こんなソース書いちゃダメだよ。
>>577 とてもそうは見えないんだが。
この手のコードを簡潔に書くには参考演算子は必要不可欠だと思う。
本物のプログラマは if を使わない
正直、fgets(buf,sizeof(buf),stdin)とかscanf("%99[^\n]%*c",buf)とか書くのが面倒だった。 ま、こんなお遊び程度のおちゃらけプログラムならgetsでいいかなーと。 採点するやつがわざわざセキュリティホール突こうとかしねーだろーし。
>>583 本物のプログラマは理由を問いただしたりしない。オツムの弱い奴らのやることなのだ。
>>585 本物じゃないので自分は.
今後の参考のために知りたいの
本物のプログラマのジョークを知らんわけではあるまい。
>>582 そりゃまぁ、ダンディ坂野は消えていったしな・・・
>>585 >>580 < こいつ何なんだ?何を使うか言わずに勝手なことを言い出す奴っているよな。
つまらない制約の中で何かを達成して自己満足している視野の狭い奴w
>>587 じょうーだんだったのか
>>589 え〜とじゃあ別に if を使わないわけじゃないよね
ちょいと本気で考えた
んでも、
>>575 程度の条件演算子の使い方は普通じゃないかね?
七行スレ住人としての意見だけど。
593 :
デフォルトの名無しさん :2007/02/23(金) 00:04:00
お願いします。 [1]授業単元:プログラミング演習 [2]問題文:配列を応用した神経衰弱ゲームの作成 [3]:環境 [3.1]OS:WindowsXP [3.2]コンパイラ名とバージョン:Cpad for Borland C++Compiler ver 2.31 1998-2001 [3.3]言語:C言語 [4]期限:2007年2月23日 [5]制限:グラフィックスは使用しない 配列を応用する 期限ギリギリですみません… お願いしますorz
>>593 今日中かよw
AIとか搭載したりするの?
596 :
593 :2007/02/23(金) 00:48:53
AI搭載ではないです^^ 進級がかかってるとかいないとかw …orz ちなみにカキコ携帯でしかできませんw 規制のせいでパソはヲチ専用です(゚Д゚;)
>>595 それぐらいやれよ。
まあやってあげるから30分くらいまってろ。
>595 問題文は正確に写してね
602 :
596 :2007/02/23(金) 02:59:52
>>593 ありがとうございます!
でもすいません
一人用でした^^;
もしよろしければお願いしますorz
>>595 開けない気がするかもしれないと思わないこともある
608 :
595 :2007/02/23(金) 09:32:05
問題文はそっくりそのまま写したんですが・・・
609 :
595 :2007/02/23(金) 09:34:22
>>609 #include <stdio.h>
void main(){
int nisu,month;
int mdays[]={31,28,31,30,31,30,31,31,30,31,30,31};
struct data{
int day;
int month;
}today,atday;
printf("今日の日付を入力:月/日");
scanf("%d/%d",&today.month,&today.day);
printf("日数を入力");
scanf("%d",&nisu);
atday=today; /* today を atday に代入*/
atday.day+=nisu;
while(atday.day>mdays[atday.month-1]){
atday.day-=mdays[atday.month-1];
atday.month++;
}
printf("%d/%dから%d日後は",today.month,today.day,nisu);
printf("%d/%dです。\n",atday.month,atday.day);
}
#include <stdio.h> void main(){ typedef struct{ int year; int month; int day; }DATE; struct parson{ char name[50]; DATE bday; /*誕生日*/ }man={"yamada tarou",1987,1,1}; DATE today; /*今日*/ int nen,urusu=0; printf("今日の日付を入力:"); scanf("%d/%d/%d",&today.year,&today.month,&today.day); for(nen=man.bday.year;nen<=today.year;nen++) urusu+=(!(nen%4)&&nen%100||!(nen%400)) ? 1 : 0; printf("%s が誕生した年から今年までうるう年は",man.name); printf("%d回ありました。\n",urusu); }
612 :
595 :2007/02/23(金) 10:46:36
>>610 ,611
Thanks そろそろ試験なので出かけます
613 :
595 :2007/02/23(金) 12:13:53
試験の時間間違えた… 1時からでした_| ̄|○ 3 4問目わかる方ご教授願います。
_| ̄|○の使いすぎでウザイのでパス_| ̄|○_| ̄|○
試験の時間間違えるわ、宿題やらないわ、もう生活そのものがぼろぼろだな より良い場所に就職するつもりでなく、学生でいられる時間を長くして遊びたいって考えだと 後々の人生ぼろぼろになるぞ。試験に落ちてやり直した方がマシ。 それから宿題のソース、おかしい。仮に推測して穴埋めしてもコンパイル不可能。
>610 >atday.month++;
っつか、西暦1年1月1日が月曜だと分かっているからといって 日数の合計から曜日を求める課題もどうかと・・・さらっと流して もっと効率の良い手段を選べばええやん。
618 :
デフォルトの名無しさん :2007/02/23(金) 14:05:45
>>618 main2, main4, main5のうち一つを必要に応じてmainに改名して使ってくれ。
それから、入力が正しいことを前提にしている。
# include <stdio.h>
int ask(const char *prompt) {
int r = 0;
char buf[100];
printf("%s >> ", prompt);
fflush(stdout);
fgets(buf, sizeof buf, stdin);
sscanf(buf, "%d", &r);
return r;
}
int main2(void) {
int a = ask("いくら");
int tax = a / 21;
printf("%d = %d(定価) + %d(税)\n", a, a - tax, tax);
return 0;
}
int main4(void) {
int day = ask("何日 ");
int hour = ask("何時間");
int minute = ask("何分 ");
int second = ask("何秒 ");
printf("%d日%d時間%d分%d秒: %d秒\n", day, hour, minute, second, (((day * 24) + hour) * 60 + minute) * 60 + second);
return 0;
}
int main5(void) {
int year = ask("西暦何年");
printf("%s年\n", year % 4 == 0 && !(year % 100 == 0 && !(year % 400 == 0)) ? "閏" : "平");
return 0;
}
プログラム歴一ヶ月の俺が閏年判定だけ。 #include <stdio.h> int main(void){ int year; printf("西暦何年"); scanf("%d",&year); if((year%4==0) && (year%100==0) && (year%400==0)) printf("閏年"); else printf("平年"); }
プログラム歴一ヶ月の俺が閏年判定だけ。 #include <stdio.h> int main(void){ int year; printf("西暦何年"); scanf("%d",&year); if((year%4==0) && (year%100==0) && (year%400==0)) printf("閏年"); else printf("平年"); }
一ヶ月で他人の宿題に手をだすのは早すぎたようだな。
624 :
621 :2007/02/23(金) 15:06:16
連投すまそ。
>>623 勉強がてらちょっとやってみたんだけど、どっか間違ってる?
>>624 それだと例えば1996年が閏年にならない。
626 :
621 :2007/02/23(金) 15:14:55
>>625 本当だ・・・。でしゃばってスマソ・・・
ど、どんまい
>>622 > if((year%4==0) && (year%100==0) && (year%400==0))
&&だけ?やっちまったな!括弧をつける部分も不適切やし
今後C言語を続けるならとりあえずちゃんと勉強してガンガレ!
#include <stdio.h>
int main(){
int year;
printf("西暦何年");
scanf("%d",&year);
if(!(year%400) || (!(year%4)&&year%100){
printf("閏年");
return;
}
printf("平年");
}
>>628 なんでそんな意気揚々なんだよw
630 :
デフォルトの名無しさん :2007/02/23(金) 16:37:25
629 名前:デフォルトの名無しさん 投稿日:2007/02/23(金) 16:34:50
>>628 なんでそんな意気揚々なんだよw
>>628 なんでそんな意気揚々なんだよw
>>628 なんでそんな意気揚々なんだよw
>>628 なんでそんな意気揚々なんだよw
>>628 なんでそんな意気揚々なんだよw
>>629 コンパイルしてから出せよバカ、お調子者こそコケ易いってのがわかりやすいなw
悪いが俺はそんなヘマはしないぞw
>>632 意気揚々で調子ぶっこいているのは誰がどう見ても
>>629 だろw
お前こそ何意気揚々なんだよ?w
>>632 中学のときの数学の教師がさぁ、いつも括弧が足りないとこう言うのよ
かっこがつかない(=かっこ悪い)ってね。
[1] 授業単元:C/C++の宿題を片付けます [2] 問題文:200X と入力すると、世紀末救世主が現れるプログラムを書け [3] 環境 [3.1] OS: 核戦争後の荒れた世界 [3.2] コンパイラ名とバージョン: 北斗神拳 [3.3] 言語: 北斗神拳 [4] 期限:ユリアがさらわれるまで
うるう年のプログラムってやらされる人多いの? 俺もその課題がCやり始めた当初あったんだけど
素数、閏年、最大公約数、ジャンケン、数字当てとかってどこでもやってそうな ありきたりな課題じゃね?
>>628 うはっ全部やったわw。やっぱりどこも同じなのか
トリッキーなコードで教官を悩ませたもんだな
>>618 一番最初の2進、16進のやつ。
#include <stdio.h>
int d_con(unsigned n, int k) {
char a[32],d[16] = "0123456789ABCDEF";
int i;
if(n==0) {printf("0"); return 0; }
for(i=0; i<32; i++) a[i] = '0';
for(i=0; n!=0; i++,n/=k) a[i] = d[n%k];
for(i--; i>=0; i--) printf("%c",a[i]);
return 0;
}
int main() {
int x;
printf("整数を1つ入力 >> "); scanf("%d",&x);
if(x<0) { printf("負なのでそのまま表示: %d",x); return 0; }
printf("正なので%dを2倍する: ",x); x*=2;
printf("10進: %d",x);
printf(", 16進: "); d_con(x,16);
printf(", 2進: "); d_con(x,2);
return 0;
}
642 :
641 :2007/02/23(金) 17:54:13
16進数の英文字が小文字になってなかったけど、必要なら ↓の配列の英文字部分を小文字にしといてちょっ d[16] = "0123456789ABCDEF";
>>636 なんでそんな意気揚々なんだ
>>637 フィボナッチとか階乗とかその辺はプログラムの授業では
王道じゃないかな。
>>643 意気揚々ですYO!あ〜いとぅいまてぇ〜ん
↓こいつ未だにエラトステネスのふるいについて理解していないようです
俺も授業で閏年やってるんだが、
>>622 のコードってどこが間違ってるんだ?
俺には解読不可能だった。
>>629 はコンパイル出来なかったし
>>646 if( (y%4==0 && y%100!=0) || y%400==0 ) これなら
4で割り切れるが100で割り切れない または 400で割り切れるに該当するかと。
>>646 if((year%4==0) && (year%100==0) && (year%400==0))
を簡単にすると
if(year%400==0)
誤解しにくいように書いたほうがイイと思うんだが if(year%400==0) is_uruu=1; else if(year%100==0) is_uruu=0; else if(year%4==0) is_uruu=1; else is_uruu=0;
>>646 うるう年の判定は
4で割り切れる年はうるう年
4で割り切れても100で割り切れる年はうるう年ではない
if((year%4==0) && (year%100==0) && (year%400==0))
これだと
4で割り切れ、かつ100で割り切れ、かつ400で割り切れるもの となってしまう
つまり
>>648 だから間違い
651 :
646 :2007/02/23(金) 19:24:17
652 :
646 :2007/02/23(金) 19:25:13
結局400で割り切れるものが該当しちゃう
654 :
650 :2007/02/23(金) 19:25:24
あっ、100で割り切れても400で割り切れる年はうるう年 っての忘れてたので追加
言葉であらわされる仕様から、正しく論理関係を導き出すのが重要。 # 論理関係から 仕様をおこすのは比較的簡単か
656 :
650 :2007/02/23(金) 19:31:20
>>652 ぶちぶちなのでこうしとく
4で割り切れる年はうるう年 ---(1)
(1)であっても100で割り切れる年はうるう年ではない ---(2)
(2)であっても400で割り切れる年はうるう年 ---(3)
具体的に該当する年の例を出してみては? 400 800 1200 1600 2000 と400年ごと、あと4年で割り切れる4年ごとだけど ↑にあげた以外の400で割れない下2桁が00の年 1100 1500 とかはダメ。って余計わかりづらいか? ってかもうこの話はやめとくかw
>>657 経験が浅い自分には、物凄い勢いで勉強になります。
言語が分からん
とりあえずCでいいんじゃね?
ちゃんと北斗神拳で動かす場所は核戦争後の荒れた世界だぞ?
スレ違いってことだな
665 :
デフォルトの名無しさん :2007/02/23(金) 23:27:18
変数dataに格納された2進で表されたデータを10進に変換して 表示するプログラムを教えてください。 よろしくお願いします。 void disp(unsigned short data){ }
カモン!エスパー。
667 :
650 :2007/02/23(金) 23:55:31
コンピュータ上ではすべて2進数表現ですから それを10進に変換しましたよ void disp(unsigned short data){ printf("%d",data); } はいどうぞ
>>667 それ鼻からなんか出てるよ
printf("%hu",data);
低レベルな質問で悪いのですが、 プログラムがmain関数だけ(例えばHello Worldと表示のみとか)の場合、 main() void main() main(void) int main(void) とか色々な書き方がありますが、 どういった感じに使い分けていけばよろしいのでしょうか?
>>669 int main(){return 0;}
一つだけを使っていけばOK
俺は int main(void)派
>>669 void main() // 動作は未定義
void main(void) // 動作は未定義
main() // int main() に同じ
int main() // 引数の型チェックなし。main(1)のような呼び出しができてしまう
main(void) // int main(void) に同じ
int main(void) // これ推奨
int main(char *argv[], int argc) 水晶
674 :
650 :2007/02/24(土) 01:00:02
>>668 unsigned short であるの忘れてたorz
675 :
669 :2007/02/24(土) 01:00:07
スレ違いなのに、わざわざありがとうございます orz
676 :
650 :2007/02/24(土) 01:00:53
>>673 int main(int argc, char* argv[])
こっちじゃなかったっけ?
>>676 うむ。日頃使ってないからどうだったか検索して見つかったものを
コピって書いたんだけど、他を探したらそれだったみたいw
int main(void); int main(int, char *[]); int main(int, char **);
int main(int argc, char **argv)
漏れは>676だなあ
動きゃいいんだよ。
動きゃいいと言っている奴の中には 特定の環境でしか動かないものを作ってくることもあるわけで
ウリの環境が規格で、まわりが特殊ニダ
たまには環境変数のことも思い出してあげて下さい #include<stdio.h> int main(int argc, char *argv[], char **argp){ int i; for(i=0;argp[i]!=NULL;i++) printf("%s\n", argp[i]); return 0; }
それはベンダ拡張だから、一般的には未定義動作。
上で「動作は未定義」とか出てるけど、 「未定義」だと何か問題があるの?
688 :
650 :2007/02/24(土) 18:21:02
>>687 何も起きない
↑
(未定義動作)
↓
プロセスが暴走してPC壊す
コンパイラを作る人に任せるともいえるし 全てのコンパイラが同じ動作にならなくてもいいとかそういう意味と マジリアルに何が起きるかわかりませんよイヒヒヒヒヒヒヒヒヒヒヒヒヒヒヒヒヒヒヒヒヒ の区別はないのか
(未定義動作) 1) 何も起きない 2) プロセスが暴走してPC壊す 3) たまたま普通に動いた 4) エラー吐いて終了 自分の環境でたまたま3というのが最悪
なるべく仕様書の通り書くのがいいのね。
>690
>全てのコンパイラが同じ動作にならなくてもいい
全てのコンパイラが同じ動作にならないかもよ
が適切じゃないかと
>>691 たしかにw>
>>691 未定義動作から
2) プロセスが暴走してPC壊す
は省くべきだな。
破壊動作と書くべきだ。
696 :
513 :2007/02/24(土) 20:15:55
513です。今日中に何とかならないでしょうか?
>>694 「エキスパートCプログラミング」のP43のコラム読んでみな。
未定義動作が昔のモニタを発火させる可能性について
書いてあるから。
あのさ。 ここ、宿題スレだったんだけど
過去形にするなよ いまでも宿題スレだよ
>>698 宿題が来ないんだから別に構わないって。
疎開ってると落ちるし。
704 :
513 :2007/02/24(土) 23:21:04
>>703 様
提出期限が過ぎても一応受け付けてくれるみたいなので、大丈夫だと思います
お手数ですがよろしくお願いします
706 :
703 :2007/02/24(土) 23:26:45
gcc拡張を使いましたということで
すごいな作ってんのか。 問題見たけど面倒な機能を実装しなければいけないので俺には無理。 重複単語数数えてHTML作るだけで精一杯。
709 :
703 :2007/02/24(土) 23:46:15
ファイル名.cに変えたらエラー出まくりで、へこんだ…
>>513 重要単語の判定法は、各自決めろみたいな課題だけど…思いつかないんだけど。
711 :
513 :2007/02/24(土) 23:51:11
重要単語は、単純に出現頻度で判定していいそうです。他の方法だと加点するという話でした
冠詞とか主語とか数あっても重要単語に成り得ないとこ省いて考えるくらいかのう テーブル作るのめどいけど
あとは行頭にあったらポイントたくさん加算とかどうだろう
714 :
703 :2007/02/25(日) 02:27:58
715 :
513 :2007/02/25(日) 02:41:47
>>714 様
ありがとうございました!とりあえずコンパイルしてエラーチェックしてみますね
本当にありがとうございました!
このタイミングで学校に密告した俺はネ申
神 の使い方を間違っていると思う
しかし、大掛かりではないにしろ、そこまで注文が多いものになると 多少はお金が欲しいもんだな
720 :
デフォルトの名無しさん :2007/02/25(日) 15:03:56
なんか見たことあるな
俺も見たことあるなと思ったら、 ライブラリが「はじめてのアルゴリズム入門」のグラフィックライブラリ…
>>513 作ってみようと思ったんだけど
>単語数の確認はUNIX コマンドのwc を利用する.
これの意味がわからないんだけど
どういう意味かしら?
725 :
デフォルトの名無しさん :2007/02/25(日) 18:32:05
[1] 授業単元: 救済レポート [2] 問題文(含コード&リンク): そのプログラムのソースコードを出力するプログラムを書け。 ただし、実行形式ファイルそれ自体で動作すること。 [3] 環境 [3.1] OS: (Windows/Linux/等々) 特になし [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gccかcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: 2007/03/05 [5] その他の制限: C言語自体は多分大丈夫です。 追試も点が足りず、教授にお願いに行くと このレポートができれば単位がくれるとのことでした。 本試も追試も体調不良だった私に救いの手をお願いします。 教授はこれができるならやってもいいよって感じだったので かなり難しいと思います。私自身考えに考えたのですが どうしてもうまくいきません。 どなたかお願いできないでしょうか。
>>725 >このレポートができれば単位がくれる
それすら他人任せで単位を取ろうとするのはおかしい、ってここで言うのもおかしいが
無理だろ。その最後のチャンスの蜘蛛の糸も他人に引っ張ってもらうつもりかw
727 :
デフォルトの名無しさん :2007/02/25(日) 18:36:32
>>725 > そのプログラムのソースコードを出力するプログラムを書け。
> ただし、実行形式ファイルそれ自体で動作すること。
意味がわからん。現在実行しているプログラムのソースコードを逆コンパイルして
ソースを推測しろってかぁ?
cで自己出力かw 教授、嫌がらせだろw
Quineなら探せば幾らでもあるだろ
>725 試験がダメだった理由が体調不良ならここで聞かなくてもいいだろ。
ここでみんなでQuine書いてみるってのも面白そうだけどなw
>>725 単位取るの無理だから諦めろってことだなw
たしかにこれが出来たら単位なんて簡単に取れるなw
>>725 もはや宿題ってレベルじゃねーぞ・・・
今後の事も考えて自力でやった方がいいと思う
>>725 あきらめろってことだな
教授もこんな遠回しな言い方しなくてもいいのに…
>>725 単位なら来年度でも取れるからな
春休みを楽しみたまえ
>>725 中間言語ならまだしも実行ファイルからソースを予測なんて無理
「単位はやらん」って言ってるようなもんだな
738 :
デフォルトの名無しさん :2007/02/25(日) 19:02:15
>>725 教授酷いな、かぐや姫が貴族に出した試練みたいだ
何人かわかってないのがいるなぁwww
探したらcのソースあった。 まぁ、がんばれ
>>725 教授にやり方のアプローチの不安な部分を相談
出来ている部分を報告
色々やり方あると思うんだ。
出来た成果物だけで判断するような内容じゃないから、やる気や才能を見せればいいと思うよ。
コミュニケーションスキルも判断材料になるなら、合格あげてもいいと俺が教授なら思う
744 :
デフォルトの名無しさん :2007/02/25(日) 19:06:01
結局答えはどうなるの?実行プログラムのバイナリコードを吐き出すとか?w
#include<ほにゃらら> int main(){ ほにゃらら } 実行↓ #include<ほにゃらら> int main(){ ほにゃらら } こういうことだろ?
>>744 自身を解析するんじゃなくて、出力ファイル=ソースファイルになるプログラムを書けってこと
とりあえずQuineかself-reproducing codeでぐぐれ
#プリプロセッサ演算子使えば簡単だが、芸がないよなあ…
752 :
725 :2007/02/25(日) 19:26:12
753 :
725 :2007/02/25(日) 19:27:19
>>740 のはすごいと思ったのですが
解析で断念しました、何これ・・・
こんなに難しいなんて。
自力でもないのにもぎ取るとか言うなよ
>>752 そんな鼻から脳みそ出そうなコードじゃなくて、もっと素直なの探せよ
>>755 教授のコンパイラで走らなくてあぼんしそうな悪寒w
759 :
758 :2007/02/25(日) 19:41:09
すまん、
>>752 のpdfで
>>725 がHaskellerだと勝手に思ってしまった。
ぐぐっただけね。
Haskell云々は忘れてくれ。
760 :
725 :2007/02/25(日) 20:00:36
そんなん2chだとしょっちゅうあるぞ ただこの板の人数考えるとレアだな確かに
763 :
デフォルトの名無しさん :2007/02/25(日) 22:07:44
問題は提出しても、本当に自分でやったのか?と説明を求められても説明できなきゃアウトだろうな・・・
>>725 の問題ってC言語の確認にもならないし、単位のかかっている課題としては不適切じゃね?
なんか一種のパズルだろ…
>>752 お前みたいな考えの甘い低レベルは留年・仮所属で十分。
周囲の足を引っ張るような馬鹿がいるだけで
真面目な同級生に迷惑がかかる。むしろ退学しろ。
一種のパズルだから言語を理解してるかの確認になるんですよ
どうせなら15ゲームとか麻雀とか、ゲームでも作らせりゃ良いのに
>>766 クワインは考え方さえ知っていれば大抵の言語でなんの工夫もなく書ける。
ので言語の理解度の確認には不向きだと思う。
嫉妬してレスする暇あったら勉強しろ!…と自分自身に言ってやりたい。
772 :
デフォルトの名無しさん :2007/02/26(月) 05:39:11
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
以下に示すようなstudent構造体変数を宣言し、10人分のデータを格納する配列student構造体変数を宣言しなさい。
-----------------------------
typedef struct{
char number[16];
char name[64];
float height;
int tan_i;
char bikou[1024];
} student;
-----------------------------
次にあらかじめ用意されたファイル(student.dat)から10人分のデータを読み込み、キーによってソートし、ソートした結果を画面に表示する。
最後に、ソートした結果をファイル(sort_student.dat)に書き込むプログラムを作成しなさい。
ただし、student.datファイルのデータ形式は以下の通りに個人データがカンマで区切られているものとして、
各自がエディタを用いて作成すること。
キーは学籍番号の下二桁で考えて3で割ったあまりが0の学生は学籍番号、3で割ったあまりが1の学生は身長、
3で割ったあまりが2の学生は単位数をキーとして、ソートすること。
「student.dat」(左から 学籍番号,氏名,身長,単位数,備考)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3699.txt [3] 環境
[3.1] OS: WindowsXP Home
[3.2] コンパイラ名とバージョン: Visual Studio.NET C++
[3.3] 言語: Cのみ
[4] 期限: 2007年2月28日まで
[5] その他の制限:
よろしくおねがいします。
キーで抽出した結果をソートして表示するんだろうか?
774 :
デフォルトの名無しさん :2007/02/26(月) 19:11:01
>>774 仕様が曖昧すぎ
3702.txtの2なんかなんのプログラムを作ればいいかすらわからない
3702.txtの3で入力する値は何なのか?
3703.txtの3〜5の入力した数ってのは何なのか?
string.hは使ってもいいのか?
明日までってのは後4時間半しか無いのか?
776 :
デフォルトの名無しさん :2007/02/26(月) 21:30:19
>>775 入力する値っていうのは、自分で適当に考えていいそうです。
3703の3〜5も同じだそうです。
string.hはまだ習ってないので使わない方がいいです。
期限は明日の夕方5時までです。
>>776 3702.txtの2は?日付が存在するかどうか確かめるプログラムを作ればいいの?
それともカレンダーの表示?
>>774 すまん、どこの在日のための学校だ?教えてくれ。朝鮮と関係がないか調査さえていただきます。
要するに日本語でおkじゃなくて朝鮮語でにd?
[1] 授業単元: プログラミング技術 [2] 問題文:キーボードからデータを5つ入力する。 次に入力するデータは、 何番目に入力したデータと一致するか表示するプログラム。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:わからないです。 [3.3] 言語: C [4] 期限:明日
向こうで答え出てるだろ…
>>774 はテキスト(多分、翻訳書)の章末とかについてる演習問題だろ。
おそらく、本文を読めば何をさせようとしてるかわかるんだろうけど、
これだけだと、曖昧すぎる。
データについてkwsk
>>784 すいません、気付きませんでした…
ありがとうございます!
いまさらだけど、
>>725 はネタだろ。
こんなことして単位がくるのか?大学って。
行ったことないから分からんのだが、
プログラミングできれば大卒できるっていうなら
今から行ってやりたいものなんだが。(当方専門卒)
>>787 その科目一つ分の単位だけなら来るんじゃね。
卒業所要単位数は無理だけど。
教授によっては点足りなくてもレポートで許してくれたりする
>>787 日本の大学はまぁ入れたら普通は出れる。
入れるかどうかが問題なわけだが、ピンキリだ。
>>788-790 まあ、そんなもんなんだろうな。
こういう輩が上に立って
努力してる自分たちが土方として働かされてる現実が
最近になって本気で悔しくなったことがあって
なんでコーディングできるほうが給料も安いのかと怒ってるからさ。
このスレ自体が堕落の原因じゃね?
そういいながら、暇な時には回答してやってるわけなんだが。
>>791 学生時代に遊びほうけて後で苦労するか
学生時代に勉強して後で楽するかの違いじゃね
これから支那に外注増えてって土方職すら減ってくだろうから、 仕事があるだけありがたいと思わんとな。
プログラミング関連じゃないが、名前書くだけで (授業に一回も参加しないで)単位くれる先生もいたぞ そういう先生に限って授業面白いからまじめに受けたが。
救済措置にプログラムのソース書かせる試験のある授業って何だろうな
ほら…マンガとかでよくある…。
797 :
772 :2007/02/27(火) 07:13:40
[1] 授業単元: C言語入門 [2] 問題文:関数atoiと同じ動きをするプログラムを2つ以上作成せよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン :Borland C++ 5.5.1 [3.3] 言語: C [4] 期限:今日中 とりあえず一つは作ってみたんですが、もう一つが浮かびません・・・ お願いします。 #include <stdio.h> #include <string.h> int moge_atoi(char *str); void main(){ char str[256]; int num; printf("char型で読み込む :"); gets(str); num = moge_atoi(str); printf("int型に変換した :%d\n", num); } int moge_atoi(char *str){ int cnt,num=0; //読み込んだ値が0〜9以外を見つけるまでloop for (cnt = 0; (str[cnt] >= '0') && (str[cnt] <= '9') ; cnt++){ num = 10 * num + (str[cnt] - '0'); } return num; }
>>798 atoiでググったページに同じソースが出てきたんだが。
本当に作ったのか?
>>798 #include <stdio.h>
#include <string.h>
void main(){
char str[256];
int num;
printf("char:");
scanf("%s",str);
sscanf(str,"%d",&num);
printf("int:%d\n", num);
}
>> 798 どうみてもコピーにしか見えないが。
802 :
798 :2007/02/27(火) 11:26:37
ええと、コピーです。ごめんなさい。
>>800 ありがとうございました。
804 :
798 :2007/02/27(火) 13:45:58
>>803 すいません。負数も考慮して貰えるとうれしいです。
コピーの方は負数が考慮されていないので、負数も考慮したいです。
>>798 こうかな。
int atoi1(const char *n)
{
return strtol(n, NULL, 10);
}
int atoi2(const char *n)
{
int r = 0;
sscanf(n, "%d", &r);
return r;
}
806 :
798 :2007/02/27(火) 14:07:26
>>805 ありがとうございます。動作確認しました。
807 :
798 :2007/02/27(火) 14:23:59
続けざまにすいません。 質問なんですが、atoiでは int atoi1(const char *n) { return strtol(n, NULL, 10); } と記述するのはわかったのですが、 逆(itoa)などになった場合にはどう記述すればいいのでしょうか?
>>807 atoiとstrtolはエラーの扱いが違う
809 :
808 :2007/02/27(火) 14:41:47
流れが読めてなかった itoaは標準関数じゃないよspritfを使うよ
810 :
798 :2007/02/27(火) 14:56:09
1つ前のレスも読めないのか
812 :
798 :2007/02/27(火) 15:18:36
>>811 すいません。意味がわかってなかったでした。
printf("int型で読み込む :");scanf("%d",&num);
sprintf(str,"%d", num);
printf("文字列に変換した :%s\n",str);
これで大丈夫でした。ありがとうございます。
また質問で申し訳ないんですが、
sprintf以外でitoaを実現したい場合にはどうすればいいのでしょうか?
stdlib.hをインクルードすれば、標準関数ではないがitoaが使える itoa(num, str, 10); // 10進表記 しかしなぜそこまでitoaにこだわるのか
814 :
798 :2007/02/27(火) 15:44:43
>>813 sprintf自体の動きはわかったのですが、itoa自体の
構造がよくわかっていなくて、sprintf以外で
作るならばどう記述すればいいのかと思っただけです
>>814 整数を1桁ずつ取り出して、
文字にしたものをstrに入れていけばいいんじゃないかな
816 :
798 :2007/02/27(火) 16:14:39
>>815 なるほど。確かにそれならできそうな気がします。
けどint型を分解する方法がよくわからないのですが、
参照できるのは1つの塊のint型なのにどうやって分解
すればいいのでしょうか??
n mod 10^m で桁ごとの数字取り出せるでそ
818 :
デフォルトの名無しさん :2007/02/27(火) 16:20:51
>>798 %10 の解を バッファに書き 数を10で割る。
これを数が 0 になるまで繰り返して
最後にバッファをひっくり返す。
はじめから逆方向に書き出すバッファにしてもいいと思います
>>816 void my_itoa(int num, char* str) {
int i;
for (i = 0; num != 0; i++) {
str[i] = '0' + (num % 10);
num /= 10;
}
str[i] = '\0';
str = strrev(str);
}
まだやってたのか そもそも宿題なのか?
821 :
798 :2007/02/27(火) 17:16:21
>>819 なるほど。ありがとうございます。スッキリしました。
824 :
798 :2007/02/27(火) 18:02:46
>>823 課題じゃないですが、考慮して貰えるとうれしいです。
オプション問題なので・・・
825 :
819 :2007/02/27(火) 18:36:17
>>820-823 お騒がせして申し訳ありません。
>>824 これで解決すると思います。
void my_itoa(int num, char* str) {
int digit, index = 0;
if (num < 0) { str[index++] = '-'; num *= -1; }
for (digit = 1; (num / (int)pow(10, digit)) != 0; digit++);
for (; digit > 0; digit--) {
str[index++] = '0' + (num / (int)pow(10, digit - 1));
num %= (int)pow(10, digit - 1);
}
str[index] = '\0';
}
826 :
デフォルトの名無しさん :2007/02/27(火) 19:17:24
再帰的に書いてみる。 char *itoa_i( int value,char *buffer ) { char *rtn; if(value == 0) return buffer; rtn = itoa_i(value/10,buffer); *rtn = value % 10 + '0'; return ++rtn; } char *my_itoa(int value,char *buffer){ if(value < 0){ *buffer++ = '-'; value = -value; } if(buffer == itoa_i(value,buffer) ) *buffer++ = '0'; *buffer = '\0'; return buffer; } オーバーヘッド増えて遅くなるし、関数二つに増えるしいいことなし?
827 :
デフォルトの名無しさん :2007/02/27(火) 19:39:35
もう一案考えてみた… #include<string.h> void my_itoa(int value,char *buffer) { char *start_point; int size; if(value < 0){ *buffer++ = '-'; value = -value; } start_point = buffer; buffer += 5; if(value == 0){ *--buffer = value % 10 + '0'; value /= 10; } size = 5 - (buffer - start_point); if(size == 0){ *start_point++ = '0' *start_point = '\0' } else { memmove(buffer,start_point,size); *(start_point + size) = '\0'; } }
void my_itoa(int n, char *s) { char *p = s, c; if(n < 0) n = -n, *p++ = '-', ++s; do *p++ = '0' + (n % 10); while(n /= 10); *p-- = '\0'; do c = *s, *s = *p, *p = c; while(++s < --p); } こんなんでよくね?
>>828 まぁこの手のミスはありがちだから別にいいんだけど
char buf[32];
my_itoa(1<<31,buf);
printf("%s\n",buf);
とすると面白い表示になる件。
中括弧くらいつけろよ…
831 :
デフォルトの名無しさん :2007/02/27(火) 20:17:39
>> 828 細かいことかもしれないが n = 0 で呼び出すと 0 って出ないじゃないかな?
833 :
デフォルトの名無しさん :2007/02/27(火) 20:25:55
>> 832 do while 文だから問題なかった…。 自分の勘違い すいません。
>>828 if(n < 0) *p++ = '-', ++s;
do *p++ = '0' - (n < 0 ? n % 10 : -n % 10); while(n /= 10);
だな
>> 834 if(n < 0) n = -n, *p++ = '-', ++s; のとこで n は絶対値かされてますから 指摘部分では n>=0 になってます。
>>835 その考えは間違い。
if(n<0)n=-n;
と書いたからと言ってn>=0は保障されない。
既に
>>829 で指摘されている。
>>834 いや、こうしたほうがいいと思うよ。
do *p++ = '0' + (n < 0 ? -(n % 10) : n % 10); while(n /= 10);
>> 836 ごめん、相当悪い 書き込んでから気づいた…自分は馬鹿だ でも自分は 828 のように 先に絶対値化したほうが 分岐が減るのでいいと思います。
ふ、甘いわ。これで分岐なしで済む。 ifは元のままで do *p++ = '0' + (n % 10u); while(n /= 10u);
>>840 俺の環境だとn=0..9のときしか正しい結果になりませんですた
>>842 もしBCCならコンパイラのバグだと思うけどもしかしてBCC?
違ってたら俺のミスと思うけど。
いや、gcc version 3.4.2 (mingw-special)
>>844 エーまじかよ。自分のとこのgcc 3.4.4だとうまく動いてるんだよなー
念のために聞くけどこういうコードだよね?
void my_itoa(int n, char *s) {
char *p = s, c;
if(n < 0) n = -n, *p++ = '-', ++s;
do *p++ = '0' + (n % 10u); while(n /= 10u);
*p-- = '\0';
do c = *s, *s = *p, *p = c; while(++s < --p);
}
ごめん。俺のミスだった いつの間にかmy_が落ちてて標準関数使ってた…orz
>>843 BCCをバカにしないでください
ちゃんと動きましたよ
整数がオーバーフローした場合って未定義動作じゃなかったっけ? unsignedの変数を宣言して使ったほうがいいと思う
>>847 すまん、以前に符号無し整数のBCCのバグを踏んだ事があって神経質になりすぎた。
過敏すぎた。悪かった。
BCC=ブッシッシッ
Boku wo Coke ni suru yatu ha Chinpo!
BaCaCa?
Cokeをコークと読んd(ry
コーラにしたら飲めるようになるのか?
「はやく正数になりたい」
だったらマイナスを掛ければ良いじょのいこ!?
悩むことじゃない、こんとんじょのいこ。
sizeof(long long int) = sizeof(int) であっても規格を満足できる
860 :
798 :2007/02/28(水) 15:46:57
>>825-838 返事が遅くなってすいません。ありがとうございました。
itoaの方は無事に完成しました。
また質問で申し訳ないんですが、そもそもの宿題
(atoi関数を自作する)の話に戻るのですが、char型で
入力された物を変換する時に、16進数で入力した場合に、
(例えばBAと入力したら186を返す)変更するのであれば
現状からどう変更すればいいのでしょうか?
int myatoi(char *str){
int cnt,num=0;
for (cnt = 0; (str[cnt] >= '0') && (str[cnt] <= '9') ; cnt++){
num = num * 10 + (str[cnt] - '0');
}
return num;
}
atoi が ascii to integer だと気づくのにそう時間はとられませんでした あ と い なんて思っていた時期が懐かしい。
>>860 int myatoi(char *str){
int cnt,num=0;
for (cnt = 0; ; cnt++){
if((str[cnt] >= '0') && (str[cnt] <= '9'))
num = num * 0x10 + (str[cnt] - '0');
else if((str[cnt] >= 'A') && (str[cnt] <= 'F'))
num = num * 0x10 + (str[cnt] - 'A') + 0xA;
else
break;
}
return num;
}
こんな感じに改造するのが一番楽だと思う
863 :
798 :2007/02/28(水) 16:37:59
>>862 なるほど。ありがとうございます。
16進数で掛け算もしなければいけなかったんですね。
ありがとうございました。
ちょっと細かいやり取りが多いなぁ。これが完成したソースだってのを誰かまとめてくれ!
自分でやれよ
やだよ、無関係な俺に対してそれは失礼だぞ。
何だその物言いは。無関係な俺に対し無礼であろう
お、おれも無関係だかんな!!1
869 :
デフォルトの名無しさん :2007/02/28(水) 23:31:29
良いからgdgd言ってねーでとっととatoi関連のソースをまとめてレポートしろやゴルァ! 手間掛けさせんなつってんだよ!ってファビョってみるテスト
870 :
デフォルトの名無しさん :2007/02/28(水) 23:48:17
10進数から16進数に変換するプログラムなんですが、わかる方いらっしゃったらお願いします。負の10進数入力に対しても16進数を出力できるプログラムをお願いします
871 :
デフォルトの名無しさん :2007/02/28(水) 23:52:27
>>641 の↓の2行を消してやってみて
if(x<0) { printf("負なのでそのまま表示: %d",x); return 0; }
printf("正なので%dを2倍する: ",x); x*=2;
>>870 動作確認してないが
1バイトだけなら
unsigned char data = 5;
printf("%02x",data);
こんな感じじゃね。
質問が情報不足です。
>>870 宿題なら
>>1 のテンプレに従って書け
そして先生に出された全文を書け
874 :
デフォルトの名無しさん :2007/03/01(木) 09:09:20
すみません。もう少し詳しく書くと、最大11桁までの入力が可能で負の10進数を入力したときにFFF,,,と連続することをさけ一回のみFと表示させてから16進数の値を返すようなプログラムです
875 :
デフォルトの名無しさん :2007/03/01(木) 09:12:16
874>>です。例えば、−12345の場合、OXFCFCF7のような具合に
>877 else if (cond < 0) SrchNode(p->left,w,i+1); else SrchNode(p->right,w,i+1);
正解でした ありがとうございました
880 :
デフォルトの名無しさん :2007/03/02(金) 14:43:38
っしゃらぁ!レベルアップしてきた俺が帰ってきたぞ!じゃんじゃん質問しろや! って今、新学期を迎えるまで休業中か、ちっ。
たらららったったった〜♪
[1] 授業単元:プログラミング実習T [2] 問題文(含コード&リンク): 標準入力から文字列を入力、入力された文字列が整数かどうか判別し、 整数(0〜9)以外なら再入力を促すように、整数の場合、文字列を逆から表示せ よ。 [3] 環境 [3.1] OS: Windows xp sp2 [3.2] コンパイラ名とバージョン: Borland C [3.3] 言語: C [4] 期限: 07年3月9日 C習い始めて早くも挫折しそうです。。。 何卒よろしくお願いします。
>>883 #include <stdio.h>
#include <string.h>
int main()
{
char buff[0x1000];
char *p;
size_t len;
int i;
while (fgets(buff, sizeof buff, stdin)) {
if (p = strchr(buff, '\n'))
*p = 0;
if (!*buff) continue;
if ((len = strlen(buff)) != strspn(buff, "0123456789")) {
printf("Please input again\n");
continue;
}
for (i = len - 1; i >= 0; --i)
putchar(buff[i]);
putchar('\n');
}
return 0;
}
>>884 ありがとうございます。
かなりヒントいただけました。なんとか完成しそうです。お世話になりました
>>874 最大11桁というあたり
これは結構難しい問題だね
888 :
デフォルトの名無しさん :2007/03/02(金) 21:56:50
なるべくってどれくらいだよ 1日とか1週間とか1ヶ月とか
3年くらいじゃないか?
891 :
デフォルトの名無しさん :2007/03/02(金) 22:19:55
一晩でやる宿題にしちゃハードだな 漏れには無理ぽ
893 :
888,891 :2007/03/02(金) 22:24:04
895 :
888,891 :2007/03/02(金) 22:34:14
896 :
888,891 :2007/03/02(金) 22:39:26
>>896 自分で大体出来るようだから、Web上でWindows上でのOpenGLに関する情報を
検索してみると良いのではないかな。
OpenGLに関するサンプル自体は沢山見つかると思うが、Windowsで使う場合、
wglCreateContext(), wglMakeCurrent(),..等のwgl〜関数
(Windows用の、Microsoft独自のOpenGL拡張)を使うことになるので、
そういったキーワードで検索する。
グラフを表示している部分だが、枠で囲まれている部分は素直に
子Windowにして、そこにOpenGLで描画すると良い。
ウィンドウスタイルに、WS_BORDERを指定するとあのサンプルのように
枠が描かれるはずだ。
898 :
888,891 :2007/03/02(金) 23:36:16
>>897 ありがとうございます。
前回やったプロジェクトでも、グラフの表示はやった(windowsのサイズの変更はなし)のですが、
そのとき、plot.hクラスと教授が与えてくれたを使っただけで、OPENGLは使わなかったのですが・・・。
Windowのサイズを変えるとき、中のグラフの大きさも変えなければなりません。
でも、グラフの外のスペースの比率は、変えないで、中のグラフのサイズだけ変わります。
そこに、OPENGLを使うということでしょうか。。。
>>898 親ウィンドウのサイズが変わったときには、OpenGL描画用の子ウィンドウ
のサイズも変えてやる。(MoveWindow()を使う)
OpenGL描画用の子ウィンドウのWM_SIZEハンドラでは、glViewPort()を
用いてウィンドウの描画領域(クライアントエリア)のサイズを
再指定してやる。
描画自体はWM_PAINTハンドラで行うが、OpenGLの描画においては、
ウィンドウのサイズを気にする必要はない。-1.0〜1.0の範囲の
相対的な座標系になっているので、ここでは何も考えなくて良い。
901 :
デフォルトの名無しさん :2007/03/03(土) 12:03:57
[1] 授業単元:プログラミング初級 [2] 問題文(含コード&リンク): 実数xと整数nを受け取り、ベキ乗(xのn乗)を計算して返す関数を作成せよ。ただし、main関数では適当なデータをキー入力し、 関数を呼び出した後は、ベキ乗の値を出力せよ。ここでは、nが負の値である場合も考慮すること。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: VC++ 6.0 [3.3] 言語: C++ [4] 期限: 3月6日12時 よろしくお願いします。
>>901 #include<cmath>
#include<iostream>
double mypow(double x,int n){
return ::std::pow(x,static_cast<double>(n));
}
int main(){
double x;
int n;
std::cin >> x >> n;
std::cout << mypow(x,n) << std::endl;
}
ちょうおま
>>902 いや、普通に pow 使ってんじゃんw
使っちゃ駄目って書いてないからおk
>>901 #include<iostream>
using namespace std;
double mypow(double x,int n) {
int i,pw=1;
for(i=0; i<n; i++) pw*=x;
return pw;}
void main(void) {
double x; int n;
cout << "べき乗するプログラム\n";
cout << "基数を入力して下さい。 > "; cin >> x;
cout << "指数を入力して下さい。 > "; cin >> n;
cout << x << "^" << n << " = "<< mypow(x,n) << std::endl; }
あっ、指数が負の場合か、見落としてたというか勘違いしてた。
ってか、単純に 3^-3 = 1/3^3 で表記しちゃっても良いかな? それとも小数で表示?にしてもまんどくせっ。pow関数使っちまえw
んじゃこれでどうだ? #include<iostream> using namespace std; double mypow(double x,int n) { int i; double pw=1.0; for(i=0; i<abs(n); i++) pw*=x; if(n<0) pw=1.0/pw; return pw;} void main(void) { double x; int n; cout << "べき乗するプログラム\n"; cout << "基数を入力して下さい。 > "; cin >> x; cout << "指数を入力して下さい。 > "; cin >> n; cout << x << "^" << n << " = "<< mypow(x,n) << endl; }
x ^ -2147483648 が正しく計算できない件について
いや、大きすぎる値は無視してくれよぉ〜w
っつか、実装されているpowを使って 2 ^ -2147483648 をやったら 以下のエラーメッセージが出たぞな。大きい値は勘弁してくれよぉ〜w pow: OVERFLOW error +INF
まんどくせ double mypow(double x,unsigned int n,double r){ if(n == 0)return r; if(n % 2)return mypow(x*x,n/2,r*x); return mypow(x*x,n/2,r); } double mypow(double x,int n) { return n<0?mypow(1/x,-n,1):mypow(x,n,1); }
>>914 いや、あんとのプログラムだと
0^-2147483648 = 1 とかありえない結果が返ってくるから明確に間違い。
まぁこの手のミスはありがちだから別にいいんだけど
0か・・・忘れてたよ。まぁ、細かいこと気にするなってw 0なんて最初っから無視すりゃええがなw
0ってのは、あくまで例でそれ以外にも 0.53 ^-2147483648 = 1 とかありえんの出るし。 それだけ無視するってので対処は出来んが。
あ〜〜はいはい、ちうか、まんどくせっ。今日はカノージョとデートがあるから、ではっ ノシ #include<iostream> using namespace std; double mypow(double x,int n) { int i; double pw=1.0; if(x==0.0) return 0.0; for(i=0; i<abs(n); i++) pw*=x; if(n<0) pw=1.0/pw; return pw;} int main(void) { double x; int n; cout << "べき乗するプログラム\n"; cout << "基数を入力して下さい。 > "; cin >> x; cout << "指数を入力して下さい。 > "; cin >> n; cout << x << "^" << n << " = "<< mypow(x,n) << endl; return 0;}
>>921 >あ〜〜はいはい、ちうか、まんどくせっ。今日はカノージョとデートがあるから、ではっ ノシ
小学生みたいな書き方で思わず吹いた
922 名前:デフォルトの名無しさん 投稿日:2007/03/03(土) 15:15:52
>>921 >あ〜〜はいはい、ちうか、まんどくせっ。今日はカノージョとデートがあるから、ではっ ノシ
小学生みたいな書き方で思わず吹いた
小学生みたいな書き方で思わず吹いた
小学生みたいな書き方で思わず吹いた
小学生みたいな書き方で思わず吹いた
小学生みたいな書き方で思わず吹いた
小学生みたいな書き方で思わず吹いた
小学生みたいな書き方で思わず吹いた
小学生みたいな書き方で思わず吹いた
小学生みたいな書き方で思わず吹いた
小学生みたいな書き方で思わず吹いた
小学生みたいな書き方で思わず吹いた
真性だ・・・。
925 :
デフォルトの名無しさん :2007/03/03(土) 16:46:28
>>924 お前、彼女もできない顔がブーな奴か?wwwwww
よそでやれ。
928 :
デフォルトの名無しさん :2007/03/03(土) 16:50:34
>>927 彼女のいないキモヲタデヴピッツァ必死だなw
つい最近彼女ができました。 彼女いない奴叩くのが夢だったんですぅー
なんか一人酷い奴が混じってるな。
2chって彼女とかの話になると物凄い勢いで噛み付く奴が必ず出てくるよな 放置しとけばいいのに
メガネピッツァデヴでシコシコプログラミングしているだけじゃ彼女なんて出来やしない、そうだろ? リアル低学歴メガネピッツァ or ガリメガネ君。
934 :
デフォルトの名無しさん :2007/03/04(日) 00:23:25
あー、オモシレー
休み中で宿題の質問がないからってイライラするなよ、彼女いない歴生まれて今日まで(現在継続中) のあなた。いつかきっと、運命の出会いがあると思うよ。だから、あきらめずに毎日努力してイキロ。
C言語が彼女と言える香具師ぐらいまで成長しないとなおあみら。
日本語でおk
938 :
デフォルトの名無しさん :2007/03/04(日) 01:12:25
早く程度の低くないエサをよこしたまえ。
[1] 授業単元:C/C++の宿題を片付けます 83代目 [2] 問題文(含コード&リンク): 西暦で入力した年月のカレンダーを表示せよ。 例:年を入力 > 2007 月を入力 > 3 2007/3 日 月 火 水 木 金 土 1 2 3 以下最後まで日付を表示 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: BCC [3.3] 言語: C言語 [4] 期限: 彼女いない歴:生まれて今日まで(現在進行中)の俺に彼女が出来るまで [5] その他の制限: ソースはうpろだを使って示すこと。 扱う値の型はすべてint型とする。日数の表示の書式には %2d を用いて整えること。 ありえない年(0以下)、月(1〜12以外)が入力されたら return 1 にてプログラムを終了させること。 以下の条件を満たす関数を独自で定義して、適当に用いること。 ・与えられた年をもとに閏年か否かを判別して、閏年なら1、そうでないなら0を返す関数 この関数を用いて、2月の日数を制御すること。 ・与えられた年、月をもとに、西暦1年1月1日からその年、月の1日までの合計日数を返す関数。 合計日数を7で割った余り0〜6がそれぞれ日〜土曜日に該当する。 例えば、2007年3月1日までの合計日数は 732736 で、これを割った余りは4になり、 1日が木曜日だとわかるので、それをもとに入力された年、月の1日が何曜日から 始まるかが求められるようにする。 さぁ、やってみたまえ、これが私が与えるエサだ。食いついても美味くないけどなw
グハッ、
>>939 の例の曜日と日数がズレたが気にせんでくれ(^ω^;)
941 :
デフォルトの名無しさん :2007/03/04(日) 04:07:57
これはグレゴリオ暦? だとしたら西暦1年なんてナンセンスなんだが、出題者の意図は?
>>941 西暦1年1月1日が月曜日、そこからずっと今まで曜日は狂わずに続いている。わかるね?
ナンセンスなんてなんで思ったか知らんが、合計日数から曜日が算出できるからだよ。
>>942 本当にそう思っているのか…
出題適当だね。
945 :
デフォルトの名無しさん :2007/03/04(日) 04:25:07
1582年にグレゴリオ暦が発布されるまではユリウス暦が使われていたのだが。 まぁ釣りだからどうでもいいだろ。
実際に使われていなかった年月についてはともかく、その法則で今後のカレンダーは問題なく 使われるわけだし、ごちゃごちゃぬかしてね〜でこれくらいサラッと解いてみろや? メガネデヴヲタピッツァがw こんなものも解けねーで彼女を作ろうなんて、考えが甘いんだよ! 収入もねぇくせに結婚しようと思っているくらい甘いぜwwww
っと、失礼、1582年10月15日な。ってWikiに書かれているからスルーするかw
952 :
デフォルトの名無しさん :2007/03/04(日) 04:41:26
ゆとり出題w 問題に誤りがあるなら修正したらー?
[1] 授業単元:C/C++の宿題を片付けます 83代目 [2] 問題文(含コード&リンク): 西暦で入力した年月のカレンダーを表示せよ。 例:年を入力 > 2007 月を入力 > 3 2007/3 日 月 火 水 木 金 土 1 2 3 以下最後まで日付を表示 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: BCC [3.3] 言語: C言語 [4] 期限: 彼女いない歴:生まれて今日まで(現在進行中)の俺に彼女が出来るまで [5] その他の制限: ソースはうpろだを使って示すこと。 グレゴリオ暦を有効とするため、1582年11月以降のみ有効とし、それ以前の年月を入力したら無効とせよ。 ありえない年(0以下)、月(1〜12以外)が入力されたら return 1 にてプログラムを終了させること。 扱う値の型はすべてint型とする。日数の表示の書式には %2d を用いて整えること。 以下の条件を満たす関数を独自で定義して、適当に用いること。 ・与えられた年をもとに閏年か否かを判別して、閏年なら1、そうでないなら0を返す関数 この関数を用いて、2月の日数を制御すること。 ・与えられた年、月をもとに、西暦1年1月1日からその年、月の1日までの合計日数を返す関数。 合計日数を7で割った余り0〜6がそれぞれ日〜土曜日に該当する。 例えば、2007年3月1日までの合計日数は 732736 で、これを割った余りは4になり、 1日が木曜日だとわかるので、それをもとに入力された年、月の1日が何曜日から 始まるかが求められるようにする。
954 :
デフォルトの名無しさん :2007/03/04(日) 04:47:14
>>952 あれ?ゆとり世代はお前じゃね?ああ、なんだ時代遅れのオッサンかw
オッサンなのに童貞、彼女いない歴生まれて(ryなんて恥ずかしいねw
そんな細かいことを言っているから日頃からモテないんだよw
っつかこれ、釣り の課題だってこと忘れてないか?お前が必死こいて
そういう突っ込みを入れることも想定して作ったのだが、見事に釣れた。
そう、
>>938 が言ったようにエサを与えたんだが・・・釣れてくれたのは良いんだけど
お前みたいな腐った魚は鯛にもならんのでリリースするよ。頼むからもう釣れないでくれ?
エサがもったいねぇんだよw
955 :
デフォルトの名無しさん :2007/03/04(日) 04:57:40
>>954 はい、予想に漏れず不味いエサでしたよ、ゆとりちゃん(^д^)
コンプ丸出しw
西暦1年1月1日から閏年も含めて現在までの合計日数を7で割った余りが 曜日に適用できる部分はなんら問題ないんだけどね。しっかし、雑魚しか釣れないねぇ。 ズバッと答える大物が釣れなきゃつまんねぇ〜よなぁw
957 :
デフォルトの名無しさん :2007/03/04(日) 05:03:25
> [4] 期限: 彼女いない歴:生まれて今日まで(現在進行中)の俺に彼女が出来るまで ほれ、gdgd言ってねーでとっとと答えろよぉ〜〜wwwww 今日にでも俺に彼女が出来たらタイムアウトだ。釣りは俺の勝ちってことでw
959 :
デフォルトの名無しさん :2007/03/04(日) 05:06:55
そうそう、釣りだもんねー☆
961 :
デフォルトの名無しさん :2007/03/04(日) 05:20:12
>>957 釣られたことに気づいて顔真っ赤だよ、あんた?w
解けなくて悔しくてたまらない姿も目に浮かぶぜwwwwww
↓だから顔を真っ赤にして煽るくらいならとっととソースだせよwwwww
963 :
デフォルトの名無しさん :2007/03/04(日) 05:23:08
こわがりすぎー
ス○?
966 :
964 :2007/03/04(日) 05:41:39
1582年11月の判定わすれた……
ゆとりちゃん1000まで付き合ってくれるかとおもったんだけどなー
[1] 授業単元:暇つぶしネタ振りです
[2] 問題文(含コード&リンク): 西暦で入力した年月のカレンダーを表示する。
例:
年を入力 > 2007
月を入力 > 3
2007/3
日 月 火 水 木 金 土
1 2 3(以下略
[3] 環境
[3.1] OS: 特に問いません(回答者の環境で
[3.2] コンパイラ名とバージョン: 同上
[3.3] 言語: C言語
[4] 期限: 無し(暇じゃなくなるまでw)
[5] その他の制限:
※ソースはうpろだ推奨です。
・以下の条件を満たす関数を独自で定義して、適当に用いる。
1, 与えられた年をもとに閏年か否かを判別して、閏年なら1、そうでないなら0を返す関数
この関数を用いて、2月の日数を制御すること。
2, 与えられた年・月をもとに、西暦1年1月1日からその年、月の1日までの合計日数を返す関数。
合計日数を7で割った余り0〜6がそれぞれ日〜土曜日に該当する。
例えば、2007年3月1日までの合計日数は 732736 で、これを割った余りは4 → 1日は木曜日となる
それをもとに入力された年・月の1日が何曜日から始まるかが求められるようにする。
・とりあえず閏年判定が妥当であるかの確認の為、『西暦1年1月1日』が存在し 月曜日 であったと仮定する。
・ありえない年(0以下)及び月(1〜12以外)が入力されたら、再入力またはエラーを吐いて終了。
・扱う値の型はすべてint型とする。日数の表示の書式には %2d を用いる。
・次スレ又はまともな質問が来たら終了w
可哀想な
>>939 のために、ちょっと書き直してみた。
こうすると、多少はまともな問題に見えなくもないような気がしないでもない
まあもう
>>964 が回答例出しちゃったけど。。。
[1] 授業単元:ネタ [2] 問題文(含コード&リンク): 簡易ページャ(テキストブラウザ)を実装せよ。 コマンド: <space>: 1ページ進む b: 1ページ戻る <enter>/j: 1行進む <backspace>/k: 1行戻る [3] 環境 [3.1] OS: 制限なし。 [3.2] コンパイラ名とバージョン: 制限なし [3.3] 言語: C/C++ [4] 期限: 無期限 [5] その他の制限: ・端末ないしウィンドウのサイズや、入力ファイルサイズに仮定/制限は設けないこと ・巨大なファイルであってもなるべく素早く閲覧可能にすること ・ファイル、または標準入力から読み込めるようにすること
[1] 授業単元: ネタ [2] 問題文(含コード&リンク): C++ソースをhtml化するプログラムを書け。 キーワード、文字列、コメントをそれぞれ適当な色でハイライトするようにせよ。 [3] 環境 [3.1] OS: 制限なし。 [3.2] コンパイラ名とバージョン: 制限なし [3.3] 言語: C/C++ [4] 期限: 無期限 [5] その他の制限: とくになし
[1] 授業単元: ネタ [2] 問題文(含コード&リンク): 和文を与えられた桁数によって「折りたたむ」(fold)するプログラムを書け。 禁則処理をサポートすること。英単語のhyphenationは行わなくても良い。 文字エンコーディングは適当なものを仮定してよい。 [3] 環境 [3.1] OS: 制限なし。 [3.2] コンパイラ名とバージョン: 制限なし [3.3] 言語: C/C++ [4] 期限: 無期限 [5] その他の制限: とくになし
もういいよネタは……
[1] 授業単元: ネタ [2] 問題文(含コード&リンク): 辞書順にソートされた1行1レコード(非固定長)のテキストファイルがある。 このファイルを検索するプログラムを書け。 (与えられた入力に対して、ヒットしたかしないかを表示する) [3] 環境 [3.1] OS: 制限なし。 [3.2] コンパイラ名とバージョン: 制限なし [3.3] 言語: C/C++ [4] 期限: 無期限 [5] その他の制限: ・なるべく高速に動作するようにすること。 ・なるべく少ないメモリで大きいファイルも扱えるようにすること。 ・メモリマッピングは使用してはならない。
[1] 授業単元: ネタ [2] 問題文(含コード&リンク): CGI用のアクセスカウンタを書け。標準出力にアクセスカウントを出力する だけで良い。 [3] 環境 [3.1] OS: 制限なし。 [3.2] コンパイラ名とバージョン: 制限なし [3.3] 言語: C/C++ [4] 期限: 無期限 [5] その他の制限: ・なるべく移植性の高い排他制御を行うこと。
[1] 授業単元: ネタ [2] 問題文(含コード&リンク): 浮動小数点数の四則演算を実装せよ。 浮動小数点数のフォーマットはIEEE754, サイズは64bit, リトルエンディアンを 仮定してよい。 [3] 環境 [3.1] OS: 制限なし。 [3.2] コンパイラ名とバージョン: 制限なし [3.3] 言語: C/C++ [4] 期限: 無期限 [5] その他の制限:とくになし。
976 :
デフォルトの名無しさん :2007/03/04(日) 09:16:24
[1] 授業単元: ネタ [2] 問題文(含コード&リンク): Base64エンコードを行うstd::ostream/std::streambuf継承クラスを書け。 [3] 環境 [3.1] OS: 制限なし。 [3.2] コンパイラ名とバージョン: 制限なし [3.3] 言語: C++ [4] 期限: 無期限 [5] その他の制限:とくになし。
977 :
デフォルトの名無しさん :2007/03/04(日) 09:55:41
よろしくお願いしますm(_ _)m [1] 授業単元:プログラミング演習T [2] 問題文(含コード&リンク): 整数型配列のデータと、配列の大きさ(要素の数)を受け取り、配列のデータを大きい順に並び替える関数を作成せよ。 但し、main関数では、適当なデータを初期値入力し、関数を呼び出した後は、配列の中のデータを出力せよ。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC++ 6.0 [3.3] 言語: C++ [4] 期限: 3月6日12時
[1] 授業単元: ネタ [2] 問題文(含コード&リンク): CSVをTSVに変換するプログラムを書け。 クオート、クオート内のカンマ、クオート内のクオートにも対応すること。 改行を含むカラムには対応しなくても良い。 [3] 環境 [3.1] OS: 制限なし [3.2] コンパイラ名とバージョン: 制限なし [3.3] 言語: C/C++ [4] 期限: 無期限 [5] その他の制限:とくになし。
>>980 まず
OSを何にするとか
和文の文字コードだっか?
unicodeかshift jisかeuc-jpか決める必要あるだろ
改行は\r\nなのか
CなのかC++ なのか
プログラムを作るのはそれからだ
暇なのはわかるがスレ違いはほどほどにしてくれよ。
984 :
デフォルトの名無しさん :2007/03/04(日) 13:37:14
>>968 いや、お前かなりひねくれているね・・・釣りネタに向きになって
理論的に突っ込み?そんなんだから一生童貞、モテないんだよw
しかもキモメンデヴピッツァだろ?笑えるwwww
ちなみに、お前の方が墓穴堀まくりだから。
> 『西暦1年1月1日』が存在し 月曜日 であったと仮定する。
つまりそういうことを言っていたまでだが?その後1582年11月以降のみ
曜日を含めて有効とするとなっているわけだが、日本語読めますか?在日の方ですか?
祖国へ帰ったほうがモテますよ?w
985 :
デフォルトの名無しさん :2007/03/04(日) 13:42:12
>>964 っつーか、ご苦労。これで提出できるよw
実はネタとしてあげてみたが、実際のところそのプログラムを使う当てがあったのさw
さすが、大物は釣れると美味いぜ!
夜中起きてて昼間寝て、夕方またここに来た
>>941 以下へ理屈ピッツァデヴが
↓また何か必死こいて粗探しのために屁理屈を言って煽ってきます!
埋め
梅
うめる
さっさと埋まれ
991 :
デフォルトの名無しさん :2007/03/04(日) 14:39:14
童貞かつ彼女いない歴:生まれて今日(ryのピッツァデヴが必死に自分が釣りネタに対して言った 屁理屈煽りを隠したくて必死だなwwww age とこうぜ?恥さらしのためにw 誰もあのカレンダーのプログラムで1582年10月15日より前も有効として扱えとは言ってないのよ。 単に曜日を算出するための仕組みの一部に対して妙に必死こいて、自分にはグレゴリオ暦とか 知識があるぞをひけらかしたかったんだよね?そういうことやっているから、周りには相手が 知らなかったから言ったのか?知っているのに・・・って誤解を受けて嫌われるんだよ 引きこもりデヴヲタピッツァはw
http://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%AA%E3%82%A6%E3%82%B9%E6%9A%A6 そもそも、途中からおかしい?閏年を間違えた暦が使われていたのに気づいて直したものが
本来、地球の公転周期に合っていたものだったんで、過去の人間がグレゴリオ暦を
仮に過去に戻した日付、曜日で使っていなかったとしても、それは今後の未来にはどうだって良いこと。
それよりも、これからのカレンダーにも適用されるプログラムとして使えばなんら問題ない。
これにおけるコンピュータの何年問題なんて起こるわけでもなし。屁理屈厨はつまらないことで
つまづいて、前に進めなーい、うわぁ〜〜ん、単位落としたぁ〜って言って生きていくんでしょうねw
もしこれがおかしいと思うなら、そういう課題を出した人に講義して、こんなおかしな課題は
解きませんといって宿題やレポートを提出せずに授業を受けたら?w
完璧などない、そんなものはどこへ行ってもそう。そう、たとえ東大、京大、阪大だろうと・・・
梅
うめ
新学期が来てからの惨状が楽しみだな
こんな講義は受けられませんと抗議してらっしゃいwwww
西暦1年1月1日が月曜日、そこからずっと今まで曜日は狂わずに続いている。わかるね?
>>997 合計日数から割ってというのもそうだが、今の確かな法則性に則ったものでは
本来そうなるべきだったってことだが、それを間違って使っていた過去の人間が存在するだけ。
まぁ、人間にとってのカレンダー、暦ではあるが、それも宇宙での地球の動きに合わせて
作ったもんだから。もし仮に、地球の公転が著しくズレて閏年なんぞ過去に存在しなかっただの
周期が全く合わなかっただのなんて事実があろうがなかろうか、今後のカレンダーは
今の流れで続く。それを過去に帰属させたとき、こうだったということがわかるカレンダープログラム
があのソースによって作られるってこと。お前の必死さはよーーく、わかった。
ソースコードなんて相手にしてないで、リアル女を相手にしろよ、な?一生独身、童貞だぞ?w
999 :
デフォルトの名無しさん :2007/03/04(日) 15:07:50
まぁ、曜日を求めるための仮の合計日数だし、それによって過去の暦の曜日が合わなくても
どうでも良い。↓が必死こいて
>>1000 を狙っている姿が惨めで笑えるwwwwwwwwwwww
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。