C/C++の宿題を片付けます 95代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/08/24(金) 17:28:30【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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/
【前スレ】
C/C++の宿題を片付けます 94代目
http://pc11.2ch.net/test/read.cgi/tech/1185452895/
0232デフォルトの名無しさん
2007/09/05(水) 08:06:40入力の改行文字を取り除いていない。
0233デフォルトの名無しさん
2007/09/05(水) 08:18:570234デフォルトの名無しさん
2007/09/05(水) 08:42:130235デフォルトの名無しさん
2007/09/05(水) 08:47:47いや、バカは知ったかのお前。何が問題かが分かってないな。
MAXで指定した以上の文字列を入力した場合の問題だよ、アホ。
失せろ、初心者。なんか、去年このスレで世話になったのか知らんが
今年はおかしな知ったか無知初心者が回答者に紛れ込んで大嘘ついて恥さらしをしているよな・・・
失せろガキ
0236自信過剰のアホの極み発言
2007/09/05(水) 08:48:41>>231
入力の改行文字を取り除いていない。
入力の改行文字を取り除いていない。
入力の改行文字を取り除いていない。
入力の改行文字を取り除いていない。
入力の改行文字を取り除いていない。
0237デフォルトの名無しさん
2007/09/05(水) 08:49:57うわっ、なんだお前ら、きめぇ。何様?アホ丸出しw
0238デフォルトの名無しさん
2007/09/05(水) 08:51:53お前笑えるw
0239デフォルトの名無しさん
2007/09/05(水) 08:57:29おいっリアル馬鹿、何か言えよ?知ったか君よぉ(プッ
0240デフォルトの名無しさん
2007/09/05(水) 09:10:01調子ぶっこいて恥さらしをするくらいなら >>230 にでも答えてやれよ、知ったか初心者w
0241デフォルトの名無しさん
2007/09/05(水) 11:11:56問題2
#include<stdio.h>
#include<string.h>
int main(void)
{
char T_T[256], orz[256];
int ml,o,lm =0;
printf("文字列1入力==>");
fgets(T_T, sizeof(T_T), stdin);
printf("文字列2入力==>");
fgets(orz, sizeof(orz), stdin);
ml=strcmp(T_T, orz);
if( ml^0^lm ) printf("結果:2つの文字列は違います\n");
else printf("結果:2つの文字列は同じです。\n");
return 0;
}
0242デフォルトの名無しさん
2007/09/05(水) 12:28:42問題文(含コード&リンク):
問題:ポインタで操作しなさい
char moji[] ="ABCDEF〜XYZ"; /*最大文字26文字*/
char *pc;
pc=moji;
結果
moji:ABCDEF〜XYZ
開始位置==>B
終了位置==>F
表示:BCDEF
moji:ABCEF〜XYZ
開始位置==>D
終了位置==>D
表示:D
moji:ABCDEF〜XYZ
開始位置==>E
終了位置==>B
表示:EF〜XYZAB
環境:
OS:WindowsXP
コンパイラ名とバージョン:ボーランド
言語:C
期限:
0243デフォルトの名無しさん
2007/09/05(水) 12:47:08// 実験してないからバグるかも
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void print(char* s, char* e)
{
printf("表示:");
for( ; s <= e ; s++ ) putchar(*s);
puts("");
}
int main(void)
{
char moji[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *pc = moji, *pcstart, *pcend, start, end;
while(1) {
printf("moji:%s\n開始位置==>", moji); scanf("%c", &start);
printf("終了位置==>"); scanf("%c", &end);
pcstart = strchr(moji, start);
pcend = strchr(moji, end);
if( pcstart == NULL || pcend == NULL ) break;
if( pcstart <= pcend ) print(pcstart, pcend);
else print(pcend, pcstart);
}
return 0;
}
0244デフォルトの名無しさん
2007/09/05(水) 14:34:14[2] 問題文(含コード&リンク):
http://proxy.f3.ymdb.yahoofs.jp/bc/468e498f_1f09/bc/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8/img3008.jpg?bc.Ok3GBENNLjNP1
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: ボーランド
[3.3] 言語: C言語
[4] 期限: 9月20日12時
[5] その他の制限: 関数、ポインタ、構造体を用いる
0245デフォルトの名無しさん
2007/09/05(水) 15:57:55問題が読めない
『bcvrf.yahoo.com というサーバが見つかりませんでした。』だって…
問題文がテキストなら>>1のろだに上げてよ
0246デフォルトの名無しさん
2007/09/05(水) 16:25:01[2] 問題文(含コード&リンク): トランプをランダムで表示させる
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland
[3.3] 言語:C++
212の発展で今度は5枚表示させたいのです。
ハート6ダイアAクラブ4スペード5クラブ4 みたいな感じです
0247デフォルトの名無しさん
2007/09/05(水) 16:40:180248デフォルトの名無しさん
2007/09/05(水) 17:05:330249デフォルトの名無しさん
2007/09/05(水) 18:22:410250デフォルトの名無しさん
2007/09/05(水) 18:25:08Cだけど。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int myrand(void) { return (int)(rand() / (RAND_MAX + 1.0) * 52); }
int main(void)
{
char *suit[4] = {"スペード", "ハート", "クラブ", "ダイア"};
char *num[13] = {"A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2"};
int i;
srand(time(NULL));
for(i=0; i<5; i++) {
int temp = myrand();
printf("%s%s ", suit[temp/13], num[temp%13]);
}
return 0;
}
0251デフォルトの名無しさん
2007/09/05(水) 20:20:36[2] 問題文(含コード&リンク):簡単な機能をもったアドレス帳の作成
[3] 環境
[3.1] OS:Linux
[3.3] 言語:C言語
[4] 期限:2007年9月5日24時まで
[5] その他の制限:
実行結果
アドレス管理です。今日は何をしますか?
入力:1 表示:2 終了:0
<入力の場合>
氏名をローマ字で入力してください
satou
電話番号を入力してください
090-0000-0000
メールアドレスを入力してください
aaaa@aaa.com
メモ、備考があれば入力してください、なければEnterを押してください
memo
作業を続けますか?
入力:1 表示:2 終了:0
<表示の場合>
****アドレス一覧****
[no1]
name satou
tel 090-0000-0000
mail aaaa@aaa.com
memo memo
[2]
name・・・
見にくくてすいません、宜しくお願いします
0252251
2007/09/05(水) 20:21:39お疲れ様でした、終了します。
の一文でプログラムを終了させるようにしたいです。
長くなりましたがお願いします。
0253デフォルトの名無しさん
2007/09/05(水) 21:59:40[2] 問題文: 0とは異なる二つの実数(double型)を入力し、それらの和差積商を求めるプログラム
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ:Win visual studio2005
[3.3] 言語: C
[4] 期限: 9月7日
[5] その他の制限: なし
0254デフォルトの名無しさん
2007/09/05(水) 22:02:22236 名前:自信過剰のアホの極み発言[] 投稿日:2007/09/05(水) 08:48:41
237 名前:デフォルトの名無しさん[sage] 投稿日:2007/09/05(水) 08:49:57
238 名前:デフォルトの名無しさん[sage] 投稿日:2007/09/05(水) 08:51:53
239 名前:デフォルトの名無しさん[sage] 投稿日:2007/09/05(水) 08:57:29
240 名前:デフォルトの名無しさん[sage] 投稿日:2007/09/05(水) 09:10:01
--
なるほど、5回連続書き込みで規制が入ったのか。
0255デフォルトの名無しさん
2007/09/05(水) 22:04:08回数を数えると、6回のようだが・・・
0256デフォルトの名無しさん
2007/09/05(水) 22:05:04238 名前:デフォルトの名無しさん[sage] 投稿日:2007/09/05(水) 08:51:53
239 名前:デフォルトの名無しさん[sage] 投稿日:2007/09/05(水) 08:57:29
0257デフォルトの名無しさん
2007/09/05(水) 22:18:41その5回目も規制後かも知らんが。
0258244
2007/09/06(木) 00:26:11[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4899.zip
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: ボーランド
[3.3] 言語: C言語
[4] 期限: 9月20日12時
[5] その他の制限: 関数、ポインタ、構造体を用いる
0259たなか
2007/09/06(木) 00:32:25[1] 授業単元: 数理計画法
[2] 問題文(含コード&リンク): シンプレックス法をC言語で作る
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: 9月6日 9時
[5] その他の制限: ないです。
0260デフォルトの名無しさん
2007/09/06(木) 07:17:48問題文(含コード&リンク):
テーマ:標準関数の利用
文字列と検索文字列を入力し、文字列中の検索文字の検索文字列と一致する位置を表示しなさい
使用する標準関数:strncmp(),strlen()
実行画面
文字列入力==>ABCDEABCAABCDEFABC
検索文字列入力==>ABC
一致場所:0
一致場所:5
一致場所:9
一致場所:15
OS:WindowsXP
コンパイラ名とバージョン:ボーランド
言語:C
期限:
問題:
0261デフォルトの名無しさん
2007/09/06(木) 07:28:07strstr()使っちゃいけないの?
0262デフォルトの名無しさん
2007/09/06(木) 09:18:040263デフォルトの名無しさん
2007/09/06(木) 09:20:200264デフォルトの名無しさん
2007/09/06(木) 09:22:37ちょ〜〜〜っと入力受付のところできんもぉ〜☆なソースかもしれんがw
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4901.c
0265デフォルトの名無しさん
2007/09/06(木) 09:29:030266デフォルトの名無しさん
2007/09/06(木) 09:29:50上の方にある↓の部分を消しておいて
> printf("%d / %d \n",str_sz,search_sz);
0267デフォルトの名無しさん
2007/09/06(木) 09:32:28お前みたいな理解力のない奴に意味を説明しても分からんだろうけど
今年になってからよく知らない初心者が要らぬ発言をしているみたいでうざいんだが?
黙ってろよ、分からないなら。お前みたいな固有の環境でしかプログラムを作らない奴には
一生分からない。
配列の要素の数をMAXで指定しているだけであって、実際のところはMAXでなくても
指定が可能だろ。そのときにも対処できるようにしてあるんだよ。
まぁ、そういうときはMAXを変えれば良いんだが、それでも 理屈 からして
配列の要素の数をああいう形で導くのが適切。大学くらい出ろよ、低学歴
0268デフォルトの名無しさん
2007/09/06(木) 09:34:26char str[MAX]="\0",search[MAX]="\0",ch;
ここのMAXの部分をMAX以外で指定した場合に対処できるだろ?
そうする必要があるのかって言う必要性については一個人の主観でしかないから
理屈からして筋が通るんであればそれに対して要らぬ指摘をするなよ、バカ初心者
0269昨日もいたクソガキ
2007/09/06(木) 09:35:27>>231
入力の改行文字を取り除いていない。
234 名前:デフォルトの名無しさん 投稿日:2007/09/05(水) 08:42:13
何この馬鹿。
265 名前:デフォルトの名無しさん 投稿日:2007/09/06(木) 09:29:03
配列のサイズをMAXで定義してるのに、sizeof使ってsize_tで求める意味がわからん。
0270デフォルトの名無しさん
2007/09/06(木) 09:36:40あっ、俺は上の人とは別の人だから、同じ人が連続投稿していると思わないでねw
0271デフォルトの名無しさん
2007/09/06(木) 09:48:49できました
#define STRMAX (1024)
void test(int ofs, char *s, char *c, int clen){
char t;
if(s[ofs]=='\0') return;
t=s[ofs+clen];
s[ofs+clen]='\0';
if(strcmp(s+ofs,c)==0)
printf("matched at %d\n", ofs);
s[ofs+clen]=t;
test(ofs+1, s, c, clen);
return;
}
int main(void){
char s[STRMAX], c[STRMAX];
printf("input str:"); scanf("%s",s);
printf("check str:"); scanf("%s",c);
test(0, s, c, strlen(c));
}
>>260じゃないけど。
0272デフォルトの名無しさん
2007/09/06(木) 09:55:54MAXと同じ数値を無駄な計算で出すんじゃなくて、文字列の長さを入れて条件判定部や引数に
strlen()使わないようにするとかさ。
0273デフォルトの名無しさん
2007/09/06(木) 09:58:16って問題の趣旨を理解する頭もないアホ
0274デフォルトの名無しさん
2007/09/06(木) 10:07:45大学いける見込みもない引きこもりには理解できなかったかなw
0275デフォルトの名無しさん
2007/09/06(木) 10:22:10ここまで悪意の塊なのはみたことがない
0276デフォルトの名無しさん
2007/09/06(木) 10:23:34問題文(含コード&リンク):
テーマ:ユーザー関数の作成
問題:2値を小さい順に表示するユーザー関数を作成しなさい
プロトタイプ宣言:void SortDisp(int dt1,int dt2);
実行画面
数値1入力==>10
数値2入力==>15
数値1:10
数値2:15
数値1入力==>10
数値2入力==>15
数値1:10
数値2:15
OS:WindowsXP
コンパイラ名とバージョン:ボーランド
言語:C
期限:
0277デフォルトの名無しさん
2007/09/06(木) 10:46:15なんというか、命名もキモいし、動作説明もキモいな…
void SortDisp(int dt1, int dt2);
void SortDisp(int dt1, int dt2){
printf("数値1:%d\n数値2:%d\n", dt1<dt2?dt1:dt2, dt1<dt2?dt2:dt1);
}
0278デフォルトの名無しさん
2007/09/06(木) 10:53:23なんか前に解いた気がするぞwww
0279デフォルトの名無しさん
2007/09/06(木) 12:12:56問題文(含コード&リンク):
問題1:文字列1と文字列2を入力し比較を行い、結果を表示しなさい
使用する標準関数:strcmp()
実行画面
文字列1==>ABC
文字列2==>ABC
結果:2つの文字列は同じです
文字列1==>ABC
文字列2==>DEF
結果:2つの文字列は違います
問題2:文字列を入力し、文字列中の英字と数字の文字数をカウントしなさい
使用する標準関数:isdigit()
実行画面
文字列入力==>AB123CDEF45G
英字:7
数字:5
問題3:文字列を入力し、英字とそれ以外を格納する配列に振り分けなさい
使用する標準関数:isalpha()など
実行画面
文字列入力==>A12H&jfTy8uz3#
英字:AHjfTyuZ
その他:12&83
OS:WindowsXP
コンパイラ名とバージョン:ボーランド
言語:C
期限:
0280デフォルトの名無しさん
2007/09/06(木) 12:25:46問題文(含コード&リンク): 配列データの平均を求めるユーザ関数を作成しなさい
プロトタイプ宣言:double Average(int *p);
引数:数字が格納された配列アドレス
戻り値:平均
実行画面
整数[0]==>100
整数[1]==>80
整数[2]==>60
整数[3]==>75
整数[4]==>89
整数[5]==>62
整数[6]==>71
整数[7]==>50
整数[8]==>49
整数[9]==>90
平均:72.6
整数[0]==>100
整数[1]==>80
整数[2]==>60
整数[3]==>75
整数[4]==>89
整数[5]==>64
整数[6]==>-1
平均:78.0
0281デフォルトの名無しさん
2007/09/06(木) 13:50:570282デフォルトの名無しさん
2007/09/06(木) 15:23:21[2] 問題文(含コード&リンク):
ウィンドウに、
・「正解は?」と表示したラベル、
・入力用のテキストボックス、
・回答用のボタン、
・「正解」or「残念」と表示するラベル
を作成する。
ある文字列が入力されて一致した場合は「正解」と表示する。
なお、正解の文字列や各種コントロールの配置は任意とする
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: c++
[4] 期限: 2007年9月7日
ウィンドウズプログラムのGUIがよくわかりません。
よろしくお願いします。
0283デフォルトの名無しさん
2007/09/06(木) 19:11:480284デフォルトの名無しさん
2007/09/06(木) 19:38:19比較的エスパーレベルが低くても対応は出来そうだけどな。
0285デフォルトの名無しさん
2007/09/06(木) 19:40:21配列が最大10個、-1が出てきたら終了とすると、こんな感じ。
表示するところが必要なら適当に作って。
あと、コンパイルはしてないので、動くかはわかりません。
double Average(int *p){
double sum = 0;
int i;
for( i=0 ; i<10 ; i++ ){
if( p[i] != -1 ) break;
sum += p[i];
}
if( i==0 )return 0.0;
return ( sum / i );
}
0286デフォルトの名無しさん
2007/09/06(木) 19:59:28> 無意味で無駄な計算乙
すでに理屈と説明がされているのだが、それについて理解できないお前が
勝手に無意味とか無駄にしているだけ、だから知ったか初心者は口を出さずに
間違っていないことに対して口を出すなって言ってんだよ。
お前みたいな浅はかな考えの未熟者はいつまでたってもまともなソースの記述は出来ない。
下手に手間を惜しむ奴は、横着がバグの横行の原因となる
とにかくお前みたいな低学歴は黙ってろ、うぜぇ
お前の場合主観ばかりで何の説明にもなってないだろ。
0287相当な思い込み勘違いのアホ
2007/09/06(木) 20:02:52最近size_t覚えて嬉しくってはしゃいでるのはわかるけど、もうちょっと使いどころ考えろよw
↑最近ってなんだよ?もうかなり前から知っているしどこをどう見たら
うれしくてはしゃいでいるように見える????気持ち悪い。これもお前の思い込みか
お前がキャッキャ言いながらはしゃいでsize_tを使ってんだろw
MAXと同じ数値を無駄な計算で出すんじゃなくて、文字列の長さを入れて条件判定部や引数に
↑説明したことを理解していない証拠
strlen()使わないようにするとかさ。
↑>>260の問題読めてますか?w
> 使用する標準関数:strncmp(),strlen()
0288デフォルトの名無しさん
2007/09/06(木) 20:05:06これはバカだな。文字列の長さの条件って、まだ入力されていない
文字列の長さなんて算出できねーよ。そもそも文字列の長さじゃなくて
size_tには配列の要素数の算出がされているんだが?
文字の終端を意味するNULL文字を入れた文字列の長さだったら
文字列を格納した配列の要素数じゃなくてstrlenを使うだろw
初心者は黙ってなさい。
0289デフォルトの名無しさん
2007/09/06(木) 20:17:12場合のトラブルは、そう過去ではないすぐ上に問題として出ているはず。
だから入力された文字列の最後までgetchar()で読み込み、その中で文字列を入れるのに
指定した配列に格納できる範囲内で入力を受け付けている仕組みが理解できなかったか。
だからわざわざ きんもぉ〜☆ なソースだといっておいたのにw
その辺の問題解決が出来ているなら示してくれんかね?
俺、専門でプログラミングやってないんでw
とにかく、目的の処理が果たせている以上、つまらぬ言いがかりをせずに
お前がソースを書いて、物申す自分でも出来るぞって証拠を示せ。
まぁ口出しするだけで、あの関数は使っちゃダメなのか?とか実装すりゃ良いとか
口先だけで終わって実際にソースが書けないようじゃ話にならないけどなw
あとな、この世には多種様々な考えの人間がいるんだよ。自分と意見が合わない奴なんて
この世にどんだけいると思ってんだ?しかし、それはおまえ自身の理解力がないが故に
不適切なものを信じてしまい、適切なものを無視してしまうんだよ。
幸い、俺は聞く耳は持っているんで、あしからず。
さぁ、あんたのソースを示せ!論より証拠って言うだろ?
0290デフォルトの名無しさん
2007/09/06(木) 20:37:020291デフォルトの名無しさん
2007/09/06(木) 20:50:420292デフォルトの名無しさん
2007/09/06(木) 21:07:25> if( !strncmp(&str[i],search,strlen(search)) )
> printf("一致場所:%d\n",i);
> }
何回strlen()呼び出しゃ気が済むんだよw
>条件判定部や引数に strlen()使わないようにするとかさ
ってのは、この無駄なstrlenの呼び出しをやめろってことだろ。
0293デフォルトの名無しさん
2007/09/06(木) 21:54:330294デフォルトの名無しさん
2007/09/06(木) 21:57:160295デフォルトの名無しさん
2007/09/06(木) 22:02:470296デフォルトの名無しさん
2007/09/06(木) 22:08:44聞き方次第では回答にケチ付けやがったと思われてウザイ目にあうのでそのへんを考慮しておいた方がいいかも
それとここが宿題スレってことも念頭において
0297デフォルトの名無しさん
2007/09/06(木) 22:16:580298デフォルトの名無しさん
2007/09/06(木) 22:34:06[2] 問題文: 0とは異なる二つの実数(double型)を入力し、それらの和差積商を求めるプログラム
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ:Win visual studio2005
[3.3] 言語: C
[4] 期限: 9月7日
[5] その他の制限: どうしてもわかんないんですけど、教えてもらえませんか?
0299デフォルトの名無しさん
2007/09/06(木) 22:35:29何も勉強しようとすらしないからわからないんだよ
0300デフォルトの名無しさん
2007/09/06(木) 22:36:53#include<stdio.h>
int main(void)
{
double x, y;
scanf("%lf %lf", &x, &y);
printf("%g + %g = %g\n", x, y, x+y);
printf("%g - %g = %g\n", x, y, x-y);
printf("%g * %g = %g\n", x, y, x*y);
printf("%g / %g = %g\n", x, y, x/y);
return 0;
}
0301デフォルトの名無しさん
2007/09/07(金) 01:11:28質問なら良いかもしれんが、どこぞの知ったか無知初心者みたいに
なんでそうするんだよ?だのなんで自分が思う通りにしなかったの?
みたいな言いがかりをつけると、下手すりゃ自分の理解力のなさを露呈して
逆に答えてもらえない可能性あり。とりあえず最近、知ったかの詰まらんちゃちを入れる
上級者ぶっている初心者が一匹いるみたいで・・・
0303デフォルトの名無しさん
2007/09/07(金) 07:26:05条件逆
0304デフォルトの名無しさん
2007/09/07(金) 09:26:27http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4902.txt
0305304
2007/09/07(金) 09:28:130306デフォルトの名無しさん
2007/09/07(金) 17:54:52[2] 問題文:グラフを作成するプログラムを作成せよ。
例えば、プログラムを実行すると、0〜10分間時間が計測され
その間に、使用者が↑キーを押すと1、↓キーなら2、→キーなら3、
←キーなら4という数値が入力される。
10分経過後、横軸は時間(秒)、縦軸は使用者が入力した数値
の棒グラフを出力するというようなプログラムです。
お願いします!!
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ:Win visual studio2003
[3.3] 言語: C
[4] 期限: できるだけ早めでお願いします。
0307デフォルトの名無しさん
2007/09/07(金) 21:15:57ないない、エロゲヲタなんてこのスレにはほとんどおらんやろw
まぁ俺ならサイドポケットだが
0308デフォルトの名無しさん
2007/09/08(土) 01:29:45コンソールベース?
ウインドウベース?
マルチスレッド?
ポーリング?
0309デフォルトの名無しさん
2007/09/08(土) 02:45:39↑を押したら1
↓を押したら2
・・・は理解できた.
↑を1秒押した”後に”↓を2秒押したらどうなる?
↑を1秒押した”後に”↓を2秒押した後に→を3秒押したらどうなる?
↑を1秒押した”後に”↓を2秒押した後に→を3秒押した後に・・・ならどうなる?
あと,「できるだけ早め」って言うけど,コレって無期限ってことだから.
0310デフォルトの名無しさん
2007/09/08(土) 03:21:200311デフォルトの名無しさん
2007/09/08(土) 04:06:01C言語で定められた標準関数の範囲では無理
kbhit とか ReadConsoleInput とかでできるけどね
0312デフォルトの名無しさん
2007/09/08(土) 08:09:54そうそう、日本語だけではあんたの文章を理解できないのと似たようなもんだ。
0313デフォルトの名無しさん
2007/09/08(土) 08:40:110314306
2007/09/08(土) 10:01:20そのあたりの指定はないのでやりやすい方でお願いします。
>>309
↑を1秒押しつづけたら、1の数値が1秒間入力されつづけ
そのあとに、すぐ↓を2秒押した場合は2の数値を2秒間入力し続ける。
キーをおしつづけた時間だけその数値を入力しつづけるといった形です。
質問の答えになってますか??勘違いしてたらごめんなさい・・
あと期限ですが、来週中でお願います!!
0315デフォルトの名無しさん
2007/09/08(土) 12:06:58よーく読み返してみろ・・・
> ↑を1秒押しつづけたら、1の数値が1秒間入力されつづけ
> そのあとに、すぐ↓を2秒押した場合は2の数値を2秒間入力し続ける
何の説明にもなってないぞ
0316デフォルトの名無しさん
2007/09/08(土) 13:19:25押した時から離した時の時間を積算すればいいんじゃないの?
というか、グラフを作成するプログラムならなんでもいいのか、例えば〜のプログラムを作るのか、どっちなの?
0317デフォルトの名無しさん
2007/09/08(土) 14:07:560318デフォルトの名無しさん
2007/09/08(土) 14:22:55[2] 問題文(含コード&リンク):
下のデータをマージソートを使ってp[i]/w[i]を大きい順にソートし、それを元にアイテムに並べ替えよ』
item 1 2 3 4 5 6 7 8 9 10
p[i] 12 15 22 88 43 55 23 91 15 78
w[i] 3 4 7 41 32 18 12 64 7 33
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 9月9日2400まで
[5] その他の制限: 特に無し
宜しくお願いします。
0319デフォルトの名無しさん
2007/09/08(土) 15:15:56すまんが俺の悪い頭ではその問題文は理解できん。
0320デフォルトの名無しさん
2007/09/08(土) 16:01:16例えばですね、
itemの5項目目はp[5]=43,w[5]=18になります。
でp[5]/w[5]=43/18となります。
このような値を大きい順に並べ替えるようなプログラムを作る問題です。
説明が足らずすいませんでした。
0321デフォルトの名無しさん
2007/09/08(土) 16:05:210322デフォルトの名無しさん
2007/09/08(土) 16:13:07p[i]/w[i]入れる配列作って放り込めばいいんじゃないか
0323デフォルトの名無しさん
2007/09/08(土) 16:19:290324デフォルトの名無しさん
2007/09/08(土) 16:22:560325デフォルトの名無しさん
2007/09/08(土) 16:45:06[2] 問題文(含コード&リンク):
課題9
ファイルun.txtから文字を読み込み、大文字と小文字を区別しないでアルファベット
26文字の出現頻度をカウントし度数分布表を作るプログラムを作れ。
un.txtは大文字と小文字のアルファベットが縦に26文字書いてある自分で作った
ファイル。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
できれば、早めにお願いします.....
0326デフォルトの名無しさん
2007/09/08(土) 17:00:42表示するのはアイテムだけ。
#include <stdio.h>
typedef struct {
double div;
int item;
} st;
void mergesort(st *p, st *temp, int left, int right)
{
int i, j, k, mid = (left + right) / 2;
if(left >= right) return;
mergesort(p, temp, left, mid);
mergesort(p, temp, mid + 1, right);
for(i=left; i<=mid; i++) temp[i] = p[i];
for(j=right; i<=right; i++, j--) temp[i] = p[j];
i = left;
j = right;
for(k=left; k<=right; k++) p[k] = temp[i].div < temp[j].div ? temp[i++] : temp[j--];
}
int main(void)
{
int i, p[10] = {12,15,22,88,43,55,23,91,15,78}, w[10] = {3,4,7,41,32,18,12,64,7,33};
st data[10], temp[10];
for(i=0; i<10; i++) {
data[i].item = i + 1;
data[i].div = (double)p[i] / w[i];
}
mergesort(data, temp, 0, 9);
for(i=0; i<10; i++) printf("%d ", data[i].item);
return 0;
}
0327デフォルトの名無しさん
2007/09/08(土) 17:02:56CかC++か判らないから、とりあえずCで。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int ch, i, alpha[26] = {0};
FILE *fp;
fp = fopen("un.txt", "r");
if(fp==NULL) return 0;
while((ch=fgetc(fp))!=EOF) {
if(islower(ch)) alpha[ch-'a']++;
else if(isupper(ch)) alpha[ch-'A']++;
}
for(i=0; i<26; i++) printf("%c:%d\n", 'a'+i, alpha[i]);
return 0;
}
0328デフォルトの名無しさん
2007/09/08(土) 17:04:18[2] 問題文(含コード&リンク):
ある自然数nを引数として受け取り、その自然数nが素数かどうか判定し素数の時は
1、でないときは0を値として返す関数prime()を作成する。そして、その関数を
利用して、ある自然数をキーボートから入力すると1からその自然数までの素数を列
挙し、その素数の統計を出力するプログラムを作れ。
実行例
自然数を入れろ
30
1〜30までの素数は、
2,3,5,7,11,13,17,19,23,29
個数は十個です。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
お願いします。。
0329デフォルトの名無しさん
2007/09/08(土) 17:14:190330デフォルトの名無しさん
2007/09/08(土) 17:15:53本当に助かりました。ありがとうございます。
0331デフォルトの名無しさん
2007/09/08(土) 17:16:55#include <iostream>
int prime(int num)
{
int div;
if(num < 2) return 0;
for(div=2; div<=num/2 && num%div!=0; div++);
return (div>num/2) ? 1 : 0;
}
int main()
{
int n, sum = 0;
std::cout << "自然数を入れろ" << std::endl;
std::cin >> n;
std::cout << "1〜" << n << "までの素数は、" << std::endl;
for(int i=1; i<=n; i++)
{
if(prime(i))
{
std::cout << (sum?",":"") << i;
sum++;
}
}
std::cout << "\n個数は" << sum << "個です。" << std::endl;
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています