C/C++の宿題を片付けます 58代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/01/18(水) 03:35:45【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 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
【前スレ】
C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/l50#tag993
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0075デフォルトの名無しさん
2006/01/18(水) 20:11:370076デフォルトの名無しさん
2006/01/18(水) 20:14:46[2] 問題文:CGIを使ったプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C
[4] 期限: 1月23日
[5] その他の制限: CGIを使っていればどういうプログラムでもいいです。
よく分からないので、お願いいたします。
0077デフォルトの名無しさん
2006/01/18(水) 20:17:03http://www.kumei.ne.jp/c_lang/intro/no_80.htm
0078デフォルトの名無しさん
2006/01/18(水) 20:18:38ありがとうございます
0079デフォルトの名無しさん
2006/01/18(水) 20:21:11もう少し複雑なプログラムとかもありますか?
>>76に書き忘れたのですが、あと2つCGIプログラムを作らない
といけないらしいです
0080デフォルトの名無しさん
2006/01/18(水) 20:28:140081デフォルトの名無しさん
2006/01/18(水) 21:08:16C++?
Cじゃないの?
本当にC++?
ウソじゃない?
0082デフォルトの名無しさん
2006/01/18(水) 21:14:58>>46
ありがとうございました、助かりました
0083デフォルトの名無しさん
2006/01/18(水) 21:43:27ウソではないですよ??
C++です
0084デフォルトの名無しさん
2006/01/18(水) 21:44:25C と C++ の区別が出来てますか、ということね。
文字を出力するのに使うのは printf と習ったか、cout と習ったか、どっち?
0085デフォルトの名無しさん
2006/01/18(水) 21:51:25coutと習いましたよ
0086デフォルトの名無しさん
2006/01/18(水) 21:54:02と習いましたか?
#include <iostream>
と習いましたか?
0087デフォルトの名無しさん
2006/01/18(水) 21:54:05この問題を解くのに、
そんなにCとC++の違いが影響するのか?
0088デフォルトの名無しさん
2006/01/18(水) 21:55:120089デフォルトの名無しさん
2006/01/18(水) 21:55:49やっぱりCで書いてって言われたことある。
0090デフォルトの名無しさん
2006/01/18(水) 21:57:12#include<iostream.h>と習いました
0091デフォルトの名無しさん
2006/01/18(水) 22:03:30標準C(C89)はけっこう普及しとるようだが。
0092前スレ920
2006/01/18(水) 22:10:10なんのお礼も出来ませんが、とりあえずぬこ置いてきます
ttp://www.uploda.org/uporg289807.jpg
0093デフォルトの名無しさん
2006/01/18(水) 22:11:042分探索 真面目に書くのメンドクセ。
#include<stdio.h>
unsigned ulog2(unsigned int n){
unsigned r=0,i=16;
do if(n>>i)n>>=i,r+=i;while(i>>=1);
return r;
}
int main(void){
int i;
printf("数列の要素数 最悪の比較回数\n");
for(i=1;i<=100000;++i)printf("%12d%16d\n",i,ulog2(i)+1);
return 0;
}
0094デフォルトの名無しさん
2006/01/18(水) 22:42:17EUCコードでひらがな「あ」は(164,162)の2バイトです。
文字→EUCコード数値への変換プログラムはできたのですが、
逆(EUCコード数値→文字)ができません・・・
つまり
(164,162) を入力して「あ」に変換するにはどうすればいいのでしょうか?
お願いします。
0095デフォルトの名無しさん
2006/01/18(水) 22:45:52ありがとうございます
助かりました
0096デフォルトの名無しさん
2006/01/18(水) 22:50:47いわれのない非難だが、コラっぽい笑顔がムカつく_| ̄|○
名前忘れた関西系の大御所漫才師みたい
0097デフォルトの名無しさん
2006/01/18(水) 22:53:19これでいいのかな?
int main(void)
{
int a,b;
::printf("code1 code2->");
::scanf("%d%d",&a,&b);
char s[3] = {(char)a,(char)b,0};
::printf("->");
::printf(s);
::system("pause");
return 0;
}
0098デフォルトの名無しさん
2006/01/18(水) 22:55:36#include <stdio.h>
int main( void )
{
char a = 164, b = 162;
printf("%c%c\n", a, b );
return 0;
}
>>96
気になるから是が非でも名前を思い出してくれ。
てゆかこの画像有名だよね。
0099デフォルトの名無しさん
2006/01/18(水) 22:56:16C++でCを書くなよw
0100デフォルトの名無しさん
2006/01/18(水) 22:58:000101デフォルトの名無しさん
2006/01/18(水) 23:01:09って、DOS プロンプトで EUC でるかよ
「これでいい?」とかいって、いいわけない
0102デフォルトの名無しさん
2006/01/18(水) 23:06:25つるべ?
0103デフォルトの名無しさん
2006/01/18(水) 23:08:020104デフォルトの名無しさん
2006/01/18(水) 23:10:02systemは消して。
0105デフォルトの名無しさん
2006/01/18(水) 23:11:51今や鶴瓶も.NETですよw
0106デフォルトの名無しさん
2006/01/18(水) 23:23:12[2] 問題文(含コード&リンク):
list<int> 型の要素全ての和を求める関数 int sumlist(list<int>&) を定義して下さい.
#include <iostream>
#include <list>
using namespace std;
int main(){
list<int> lst;
for(int i=0 ; i < 10 ; i++)lst.push_back(i);
cout << "size =" << lst.size() << endl;
for(list<int>::iterator it = lst.begin(); it != lst.end() ; ++it)
cout << *it << ' ';
cout << endl;
for(list<int>::iterator it = lst.begin(); it != lst.end() ;){
if((*it) % 3 == 0){
it = lst.erase(it);
}
else {
++it; } }
for(list<int>::iterator it = lst.begin(); it != lst.end() ; ++it)
cout << *it << ' ';
cout << endl;
return 0;}
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: マイクロソフトビジュアルスタジオ
[3.3] 言語: C++
[4] 期限: 1月23日
[5] その他の制限:
0107むう
2006/01/18(水) 23:26:54すいません。スルーされそうなのでどなたか
お願いします。
自分では何やっていいか全くわからずです…。
友達は「幅優先探索」使えばいーんじゃねー?とか言ってたんですが
それも意味不明です・・。
0108デフォルトの名無しさん
2006/01/18(水) 23:41:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1496.zip
いや、まず謝っておく。すまない。
2科目をまとめて構造体に突っ込んだのが失敗だった。
おかげで複雑になってしまった。
問題文にポインタ変数を扱い〜って書いてあるけど、直接は扱ってない。
iteratorがポインタだと言い張ればOK。
理解するより自分で書いた方が早そうな予感。
0109デフォルトの名無しさん
2006/01/18(水) 23:41:35幅優先探索ってのはある地点(A)から1回で移動可能な全ての場所に行ってみて
その中でゴールがあれば終了。この時点でA→どこかってのが全部探索できた
次にゴールにどれも達してなければ、それぞれの地点(Bn)からまた1回で移動できる
全ての地点へ行ってみて同様の判定をする。これでA→Bn→どっかを探索終了
これを繰り返していくのが幅優先探索
対照的なのに深さ優先ってのがあるが、これはとりあえずA→Bと決めたら
後はそれをひたすら終端まで探った上で、ダメなら一段戻ってまた最後まで
ってのをひたすら繰り返す
無期限ならとりあえず自力で思うように作ってみれ
そっちの方が自分のためにもなる
>>106
前スレで俺が答えた
あれで不満なら氏ね
0110デフォルトの名無しさん
2006/01/18(水) 23:44:08[2] 問題文(含コード&リンク):
学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)。
なお,データは,学籍番号順に入力されるわけではない。
このとき,試験の点数の上位11人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け。
ただし,同じ点数の学生がいた場合は,最初に入力されたデータを優先するものとする。
結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特になし。よろしくお願いします。
0111デフォルトの名無しさん
2006/01/19(木) 00:02:19[2] 問題文(含コード&リンク):
文字列(空白含まない)の子音だけを取り出す関数getconsntを作成せよ。
getconsntの引数は2つ。第1引数は対象の文字列、
第2引数は作成される(子音だけの)文字列を入れる配列とせよ。
例
char ans[100];
.....
getconsnt("Doraemon",ans);
printf("%s\n",ans)
↓
Drmnと表示される
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:borland
[3.3] 言語:C
[4] 期限:1月23日まで
[5] その他の制限:
初心者にも分かるような簡単なプログラムでお願いします。
出来れば解説コメントがあるととても助かります。_(._.)_
0112デフォルトの名無しさん
2006/01/19(木) 00:09:47#include <list>
#include <numeric>
int sumlist(std::list<int>& src) {
return std::accumulate(src.begin(), src.end(), 0);
}
C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/761
のどこが不満だったのかが書かれない限り君の求める答えは
出ない。
0113デフォルトの名無しさん
2006/01/19(木) 00:11:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1497.txt
>>109
ありゃガイシュツだったかスマソ。
>>69
ついに名前50人分のリストは上がらなかったな。もう寝るぞ。プログラムは完成
してて、後は名前を入れるだけだったんだが。
0114デフォルトの名無しさん
2006/01/19(木) 00:12:28そいつは俺もすぐに思いついたが、一応ループにしたのが>>113。
確かに出題条件を読むと、アルゴリズムを使ってはいけないとは
どこにも書いてないもんな。
0115デフォルトの名無しさん
2006/01/19(木) 00:15:59できるかぎり分かりやすく書いた
#include <stdio.h>
int isvowel( char c )
{
const char vowels[] = "aeiouAEIOU", *p;
for ( p = vowels; *p; ++p )
if ( *p == c ) return 1;
return 0;
}
void getconsnt( const char *str, char *ret )
{
for ( ; *str; ++str ) {
if ( isvowel( *str ) ) continue;
*ret++ = *str;
}
*ret = 0;
}
int main( void )
{
char ans[100];
getconsnt("Doraemon",ans);
printf("%s\n",ans);
return 0;
}
0116デフォルトの名無しさん
2006/01/19(木) 00:23:23俺もわかりやすく書いたつもり
#include <stdio.h>
void getconsnt(const char* src, char* dest) {
/* srcのそれぞれの文字に対して処理を順番に行う。 */
do {
switch(*src) {
case 'a': case 'i': case 'u': case 'e': case 'o':
case 'A': case 'I': case 'U': case 'E': case 'O':
/* aiueoのいずれかなら何もしない */
break;
default:
/* aiueo以外ならsrcからdestに文字をコピーし、destを1文字進める */
*dest = *src; dest++;
break;
}
} while (*src++ != '\0'); /* いずれにせよ、srcを1文字進める */
}
int main(void) {
char ans[100];
getconsnt("Doraemon", ans);
printf("%s\n", ans);
return 0;
}
0117デフォルトの名無しさん
2006/01/19(木) 00:30:09(C++がわかっていれば)わかりやすく書いたつもり
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1498.txt
0118デフォルトの名無しさん
2006/01/19(木) 00:33:22011927 ◆oHb7yqS7OQ
2006/01/19(木) 00:41:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1500.txt
よろしくお願いいたします。
0120110
2006/01/19(木) 00:52:05ありがとうございます。
マヌケな質問とは思いますが出力する数字を左詰めにするにはどうすれば良いでしょうか?
大学に送信すると自動的に適当な数字を入力して正否を確認してくれるのですが
どうやら出力する答えは左詰めで
番号 点数
番号 点数
となっていないとないと間違い扱いになるみたいです。
私には>>117のプログラムは難しくてほとんど手を付けれ無いのでよろしくお願いします。
0121デフォルトの名無しさん
2006/01/19(木) 01:01:47operator<の動きが直感に反するので、
通常の比較にして、stable_sortにはrbegin(),rend()を渡すほうがよいかと。
0122デフォルトの名無しさん
2006/01/19(木) 01:05:01単純に出力する方法
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1501.txt
短いコードだけど、これを完璧に理解するのは大変だと思うので、
理解してもらわなくてヨシ。
0123デフォルトの名無しさん
2006/01/19(木) 01:07:09そういわれれば。気をつけるよ。
0124デフォルトの名無しさん
2006/01/19(木) 01:09:53[2] 問題文(含コード&リンク):
打ち込んだ式を計算する、* / ( )等の優先順位を含む四則演算のプログラムを作れ。
ただし、イコールキー(=)を押下した時点で答えをイコールの右に表示させること。
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 2006年01月27日09:00まで
[5] その他の制限: 特になし。よろしくお願いします
0125デフォルトの名無しさん
2006/01/19(木) 01:13:500126デフォルトの名無しさん
2006/01/19(木) 01:19:40[2] 問題文(含コード&リンク):
次のintの配列に格納されている整数がある、キーボードから整数値を入力。
入力した整数が配列にあるかをディスプレイに表示するプログラムを作成せよ。
int a[] = {15 10 5 1 8 21 5 18 ];
[3] 環境
[3.1] OS: Windows
[3.2] VC
[3.3] 言語:C
[4] 期限: ([2006年01月19日12:00まで]
[5] その他の制限: サーチにちょっと触れた所までです。
サーチの授業の予習として出されたのですが分かりません。
どうかよろしくお願いいたします。
0127デフォルトの名無しさん
2006/01/19(木) 01:24:31#include<stdio.h>
int main(void){
int a[] = {15,10,5,1,8,21,5,18};
int x,i;
scanf("%d",&x);
for(i=0;i<8;i++)
if(a[i]==x){
printf("%d番目に%dはある\n",i+1,x);
return 0;
}
puts("無いな");
return 0;
}
0129デフォルトの名無しさん
2006/01/19(木) 01:35:37別解。
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
struct student {
int student_num, score;
};
std::ostream& operator<<(std::ostream& ost, const student& rhs) {
ost << rhs.student_num << ' ' << rhs.score;
return ost;
}
std::istream& operator>>(std::istream& ist, student& rhs) {
ist >> rhs.student_num >> rhs.score;
return ist;
}
bool operator<(const student& lhs, const student& rhs) {
return lhs.score < rhs.score;
}
int main() {
std::vector<student> container;
for (int count = 0; count < 100; ++count) {
student input;
std::cin >> input;
if (input.student_num == 0 && input.score == 0) break;
container.push_back(input);
}
std::stable_sort(container.rbegin(), container.rend());
std::copy(container.begin(), container.begin() + std::min(std::vector<student>::size_type(11), container.size()), std::ostream_iterator<student>(std::cout, "\n"));
return 0;
}
0130デフォルトの名無しさん
2006/01/19(木) 01:39:26それは環境依存な内容で、与えられた環境のコンソールを使って
標準Cを使っては実現できない。参考までに以前出した電卓をどぞ。
#include <stdio.h>
int error_code; double expr(FILE *fp); double term(FILE *fp); double fact(FILE *fp);
double expr(FILE *fp) {
double ret = term(fp); int ope;
while ((ope = fgetc(fp)) == '+' || ope == '-') if (ope == '+') ret += term(fp); else ret -= term(fp);
ungetc(ope, fp);
return ret;
}
double term(FILE *fp) {
double ret = fact(fp), temp; int ope;
while ((ope = fgetc(fp)) == '*'|| ope == '/' || ope == '%') if (ope == '*') ret *= term(fp); else if ((temp = term(fp)) != 0.) if (ope == '/') ret /= temp; else ret = (int)ret % (int)temp; else ret = error_code = 1;
ungetc(ope, fp);
return ret;
}
double fact(FILE *fp) {
double d; int parenthesis;
if (fscanf(fp, "%lf", &d) == 1) return d;
else if ((parenthesis = fgetc(fp)) =='(') {
d = expr(fp);
if ((parenthesis = fgetc(fp)) != ')') return error_code = 2; else return d;
}
else return error_code = 3;
}
int main(void) {
double d; error_code = 0; d = expr(stdin);
if (!error_code) printf("result:%lf", d);
else printf("error code:%d", error_code);
}
0132デフォルトの名無しさん
2006/01/19(木) 01:49:21横から。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1502.txt
ポインタが理解できないと言われても困るが・・・・・
何とか頑張って理解してくれ。
0133デフォルトの名無しさん
2006/01/19(木) 07:40:070134デフォルトの名無しさん
2006/01/19(木) 08:24:32ありがとうございました!!
iteratorがポインタだと言い張り提出しました
0135デフォルトの名無しさん
2006/01/19(木) 09:52:09[2] 問題文(含コード&リンク):
キーボードからファイル名を読み込み、そのファイル中の数字、文字の個数を
カウントして画面に表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] borland
[3.3] C
[4] 期限: 2006年1月20日16:00まで
[5] その他の制限: 特になし
これ出さないと単位がやばいのに、さっぱり分かりません。
お願いします。
0136デフォルトの名無しさん
2006/01/19(木) 09:54:280137デフォルトの名無しさん
2006/01/19(木) 10:07:01文字コードはアスキーコードです。
0138デフォルトの名無しさん
2006/01/19(木) 10:57:18#include <stdio.h>
#include <ctype.h>
int main()
{
long ch[256] = {0};
char fn[256];
int in;
FILE *fp;
printf("INPUT FILENAME>>");scanf("%s",fn);
if ((fp = fopen(fn, "r")) != NULL) {
while ((in = getc(fp)) != EOF) ch[in]++;
for (in = 0; in <= 255; in++) if(isalnum(in) && ch[in] != 0) printf("%c %ld\n",in,ch[in]);
fclose(fp);
}
return 0;
}
こんなもんかな?あまりチェックしてないからバグあったら自分でなんとかしてくれ。
0139デフォルトの名無しさん
2006/01/19(木) 11:15:33ありがとうございます。ちゃんと動きました。
ただ、文字数の合計を表示するには、どうすればいいのでしょうか?
0140デフォルトの名無しさん
2006/01/19(木) 11:17:11・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
0141デフォルトの名無しさん
2006/01/19(木) 11:19:230142デフォルトの名無しさん
2006/01/19(木) 11:23:47long ch = 0;
char fn[256];
int in;
FILE *fp;
printf("INPUT FILENAME>>");scanf("%s",fn);
if ((fp = fopen(fn, "r")) != NULL) {
while ((in = getc(fp)) != EOF) if(isalnum(in)) ch++;
printf("数字、文字の個数=%ld\n",ch);
fclose(fp);
}
return 0;
0143デフォルトの名無しさん
2006/01/19(木) 11:29:45#include <stdio.h>
int main(void)
{
int i;
char name[256];
printf("名前を入力 < ");
gets(name);
printf("回数を入力 < ");
scanf("%d",&i);
for (;i>0;i--){
printf("%s君、大好き\n",name);
}
return 0;
}
これでどうだ?
後は自分の想像力でw
0144デフォルトの名無しさん
2006/01/19(木) 11:50:35ありがとうございます。
何とか進級できそうです。
0145デフォルトの名無しさん
2006/01/19(木) 14:25:01難しいと退屈だな。
誰か初心者向けの問題だしてくれ。
スレ違いだったらスマン
0146デフォルトの名無しさん
2006/01/19(木) 14:28:43過去スレにいくらでもあるだろ
かってに探してやれよ
0147デフォルトの名無しさん
2006/01/19(木) 14:36:48[2] 問題文(含コード&リンク): http://omegaterritory.fc2web.com/
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 早ければ早いほど嬉しいです。遅くて1月22日まで
[5] その他の制限: できるだけ分かりやすいプログラムでお願いしますm(__)m
プログラムはメールにてお願いします。[email protected] へ
0148デフォルトの名無しさん
2006/01/19(木) 14:34:43ダイアログベースで別ウインドウを開いてグラフを表示させたいんですけど
ウインドウを開くコマンドってなんですか?
0149デフォルトの名無しさん
2006/01/19(木) 14:47:57int main( int argc, char **argv )
{
Gtk::Main kit( argc, argv );
Gtk::Window window;
Gtk::Main::run( window );
return 0;
}
0150デフォルトの名無しさん
2006/01/19(木) 14:51:56きしゅつ
0151デフォルトの名無しさん
2006/01/19(木) 15:33:29想像力使っていいならこれで十分だな.
#include <stdio.h>
void main(){puts("んっ…ぅ…ぁん…");}
0152デフォルトの名無しさん
2006/01/19(木) 15:39:35>>118の宿題は片付いたw
0154デフォルトの名無しさん
2006/01/19(木) 16:19:19[2] 問題文(含コード&リンク):
九九を
1×1=1
1×2=2
1×3=3
・
・
・
と言うように9の段まで、1〜9の間で入力された数字の九九を表示させたいです。
始めて1週間も経っていない超初心者なので、
お手柔らかにお願いします。
for文を使って九九は出来ましたが、うまく
6×5=30
と言う形にできません。
よろしくお願いします。
[3] 環境
[3.1] OS: Windows
[3.2] VisualC++ 6.0
[3.3] 言語: C++
[4] 期限: 今日中
[5] その他の制限: 関数をちょっとかじった辺りまでです。
0155デフォルトの名無しさん
2006/01/19(木) 16:29:06{
int i, j;
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
printf("%d*%d=%d\r\n", i, j, i * j);
}
}
return 0;
}
だれか、未解決の宿題まとめて。
0156ヘタレ ◆bNzmQqyF1I
2006/01/19(木) 16:30:09[1] 授業単元:プログラミングおよび演習
[2] 問題文(含コード&リンク): 培風館の「VisualC++で学ぶプログラミング」よりP93問題18
配列のデータを昇順(小さい順)に並び替える関数を作りなさい。
ただし、次の誕生日をデータとし、月と日を2つの配列に入力してから、関数を呼び出して並べ替えなさい
なお、入力形式は月/日とし、/をデータの区切りとして、以下の5件の誕生日データを入力しなさい
誕生日データ:09/15 03/21 12/31 05/05 04/29
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual C++と言うソフト使ってますがよくわからないです
[3.3] 言語: C++?
[4] 期限: 2006年01月20日 明日提出です。前日にやればいいとかなめてました…orz
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1504.txt
行先頭がQの行以外はヒントとして先に提示され
Qの部分が課題で、一応自分なりに入れてみたけれども動かないです
0157デフォルトの名無しさん
2006/01/19(木) 16:30:11自己解決しました。
お騒がせしましたm(_ _)m
0158デフォルトの名無しさん
2006/01/19(木) 16:33:360159デフォルトの名無しさん
2006/01/19(木) 16:34:25どんまい
>>157
ちゃんと謝れよ。非常識なヤツだ。
0160デフォルトの名無しさん
2006/01/19(木) 16:42:18関数そのものを作れって?
ソートのアルゴリズムは?
何でも良いならバブルソートなら超簡単だからぐぐって自分でやってみ
マージソートやクイックソートはちと複雑だがな
0161156
2006/01/19(木) 16:57:59今回もそれでいいと思います。
今自分でもどこがダメなのか考えてるので、とりあえずソートの部分調べて作ってきます
0162デフォルトの名無しさん
2006/01/19(木) 16:59:280163デフォルトの名無しさん
2006/01/19(木) 17:00:12ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1505.c
コンパイルしていないけど大丈夫だと思う。
0164デフォルトの名無しさん
2006/01/19(木) 17:13:260165デフォルトの名無しさん
2006/01/19(木) 17:18:060166156
2006/01/19(木) 17:18:11ありがとうございます
やってみたところ
順番は並び変わっていたのですが、結果が
3/-858993460
4/-858993460
5/-858993460
9/-858993460
12/-858993460
と、全部の日付が-858993460とかなっちゃって…ショボン(´・ω・`)
問題で出されたQの部分で書き換えていただいた所は自分で理解できたと思うのですが…日付の表示の原因がわからないです
もしかして、どこか先にヒントとして提示されていた部分のコピペが間違っていたのでしょうか…?
0167デフォルトの名無しさん
2006/01/19(木) 17:19:450168デフォルトの名無しさん
2006/01/19(木) 17:20:240169デフォルトの名無しさん
2006/01/19(木) 17:22:23×for(i=0;i<5;++i) printf("%02d/%02d\n",mm[i],dd[j]);
~~
○for(i=0;i<5;++i) printf("%02d/%02d\n",mm[i],dd[i]);
[j]と[i]の違いです。
0170156
2006/01/19(木) 17:28:59!! ありがとうございます 明日文句言ってきます
てかなんで自分で気づかなかったんだろう…
ともかくこれで完成のはず(`・ω・´)
結果
3/15
4/21
5/31
9/ 5
12/29
日付の方だけが何故か入力した順番そのまま出てきてるようです…ナズェダ(´・ω;;:;,.
0171デフォルトの名無しさん
2006/01/19(木) 17:33:01scanf("%s",str);
として日付を文字列として受け取って
sscanf(str,"%d%c%d",&month,&temp,&date);
みたいな使い方をすればコードが簡単になると思う
いやごめんね
0172デフォルトの名無しさん
2006/01/19(木) 17:35:01私にもわけ和漢ね。教授にも間違いはあったんだし文句はいわんだろ。
0173デフォルトの名無しさん
2006/01/19(木) 17:43:41Q部分以外は変えてないはず
最後を除いてw
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1507.txt
原因は多分sort()の同じ月のとこ
0174156
2006/01/19(木) 17:44:23えと…スイマセン、sscanfとか多分習ってないです。持ってるテキストにも載ってなかったですorz
もっと勉強してやり方がわかってから使わせていただきます。ありがとうございます
>>172
了解です。このまま出して、あとは質問してきます
自分ひとりでは、どこが間違っているかわからなかったのでとても助かりました。本当にありがとうございます
また演習でどうしてもわからなかったときは質問に来るかもしれないので
そのときはよろしくお願いします
■ このスレッドは過去ログ倉庫に格納されています