[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 01/02 08:45 / Filesize : 213 KB / Number-of Response : 531
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 91代目



1 名前:デフォルトの名無しさん [2007/06/23(土) 23:03:25 BE:255611693-2BP(12)]
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 90代目
pc11.2ch.net/test/read.cgi/tech/1181802185/

446 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:28:04 ]
負の数が入ったときの動作は?

447 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:28:05 ]
>>439
もしネタだとしたら、真面目にお願いしたいのですが。

448 名前:デフォルトの名無しさん [2007/06/28(木) 16:30:52 ]
>>446

例として2の 平方根 だと 1.4142135...
ー2 の 平方根 だと -1.4142135...

となるようにです

449 名前:デフォルトの名無しさん [2007/06/28(木) 16:33:41 ]
マイミクしてください!
mixi.jp/show_friend.pl?id=3356659

450 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:00:35 ]
>>448

double exsqrt(double x)
{
if(x<0){
x=-x;
return -sqrt(x);
}
return sqrt(x);
}



451 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:01:37 ]
>>447 まじめにやってもこの程度だが
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4435.txt

452 名前:デフォルトの名無しさん [2007/06/28(木) 17:14:08 ]
あ〜〜fmod()を使って10進数を2進数に変えたいんです。C++


453 名前:デフォルトの名無しさん [2007/06/28(木) 17:17:17 ]
[1] 授業単元:多次元配列
[2] 問題文(含コード&リンク):
 以下のステップに従って,行列表示及び演算を行う関数群を作成し,3行3列の行列A,Bのかけ算を行い,結果を表示するプログラムを作成してください.なお,行列AとBは,キーボードから値を入力するようにしてください.

1.3行3列の行列を表示する関数hyoujiを作成
(メイン関数で任意の値で初期化した3行3列の行列Aを引数にしてhyoujiを呼び出し,内容を表示させ,動作確認を行う)
2.3行3列の行列A,Bの足し算を行い,結果を行列Cに代入する関数tasizanを作成
(メイン関数で任意の値で初期化した3行3列の行列A,B,Cを引数にしてtasizanを呼び出し,関数hyoujiにより行列Cを表示させ,動作確認を行う)
3.tasizanをコピー・雛形にして,3行3列の行列A,Bのかけ算を行い,結果を行列Cに代入する関数kakezanを作成
(メイン関数で任意の値で初期化した3行3列の行列A,B,Cを引数にしてkakezanを呼び出し,関数hyoujiにより行列Cを表示させ,動作確認を行う)
4.キーボードから3行3列の行列に見立てた配列に数値を入力する関数nyuryokuを作成
(メイン関数で任意の値で初期化した3行3列の行列Aを引数にしてnyuryokuを呼び出し,関数hyoujiにより行列Aを表示させ,動作確認を行う)
kakezanのヒント:3重ループにすると効率よくプログラムできます
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名:Borland
 [3.3] 言語:C
[4] 期限:7月10日まで
[5] その他の制限:多次元配列までならってます


454 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:30:44 ]
>>451
迅速な返答ありがとうございます。無事実行の確認ができました。



455 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:00:07 ]
>>453

void hyouji(int array[][3])
{
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%3d",array[i][j]);
putchar('\n');
}
}

void tasizan(int A[][3],int B[][3],int C[][3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
C[i][j]=A[i][j]+B[i][j];
}

456 名前:455 mailto:sage [2007/06/28(木) 19:04:02 ]
続き

void kakezan(int A[][3],int B[][3],int C[][3])
{
int i,j,k;
for(i=0;i<3;i++)
    for(j=0;j<3;j++)
    for(k=0;k<3;k++)
    C[i][j]+=A[i][k]*B[k][j];
}

void nyuryoku(int A[][3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++){
printf("A%d%d:",i,j);
scanf("%d",&A[i][j]);
}
}

457 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:08:04 ]
[1] 授業単元:C++
[2] 問題文:
メイン関数で整数numに0が入力されるまでキー入力を繰り返し実行する。
負の値も有効とし、0も有効な値とする。
入力が終了した時点での入力値の最大値上位3つと最小値下位3つを画面に出力する。
[3] 環境
 [3.1] OS:窓
 [3.3] 言語:C++
[4] 期限:明日
[5] その他の制限:出力にはprintf、入力にはscanfの使用

習い始めなため、出来るだけ簡単な物にしてくれると助かる。
お願いします。

458 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:08:46 ]
>>453
#include <stdio.h>
void hyouji(double a[3][3]){
    int i, j;
    for(i = 0; i < 3; i++){
        for(j = 0; j < 3; j++) printf("%4.1f", a[i][j]);
        printf("\n");
    }
}
void tasizan(double a[3][3], double b[3][3], double c[3][3]){
    int i, j;
    for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) c[i][j] = a[i][j] + b[i][j];
}
void kakezan(double a[3][3], double b[3][3], double c[3][3]){
    int i, j, k;
    for(i = 0; i < 3; i++)
        for(j = 0; j < 3; j++){
            c[i][j] = 0;
            for(k = 0; k < 3; k++) c[i][j] += a[i][k]*b[k][j];
        }
}
void nyuryoku(double a[3][3]){
    int i, j;
    for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) scanf("%lf", &a[i][j]);
}
int main(void){
    double a[3][3], b[3][3], c[3][3];
    nyuryoku(a); nyuryoku(b);
    tasizan(a, b, c); hyouji(c);
    kakezan(a, b, c); hyouji(c);
    return 0;
}

459 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:46:35 ]
[1] 授業単元:C言語実習基礎
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4436.txt
数字を昇順でソートできるようにする。
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語: C
[4] 期限: 6/29正午まで
[5] その他の制限: 挿入ソート、選択ソートまで習っています。

460 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:04:14 ]
それはソースコードであって問題文ではない。

461 名前:デフォルトの名無しさん [2007/06/28(木) 20:43:32 ]
[1] 授業単元:C++研究
[2] 問題文
あるファイルの中にデータとして多くの0と1が書き込まれており、最後の1文字だけがEであるとする。
このとき、0と1の並びに着目し、データを圧縮することを考える。
ここでは、0と1のそれぞれが何個連続して並んでいるかを記録することで圧縮を行う。
たとえば、digit1.datというファイルに
111110000000000000000000000001E
というように0と1が並んでいるとき、
7 1 24 0 1 1
と圧縮できる。このとき圧縮結果に空白を挟むことに注意する。
上記の圧縮方法に従って、任意の0と1から成るデータを圧縮するプログラムを作成せよ。
ただしデータはリダイレクションを使用し、char型変数の1文字ずつ繰り返し世も困れるものとする。
最後には「圧縮完了」と表示のこと。

3] 環境
 [3.1] OS:windowsXP
 [3.2] cygwin
 [3.3] 言語:C++
[4] 期限:明日
[5] その他の制限:C++です。よろしくお願いします

462 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:51:54 ]
[1] 授業単元: プログラミング序論
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4437.txt
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 29日まで
よろしくお願いします

463 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:52:00 ]
>繰り返し世も困れる
読み込まれる?

464 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:58:31 ]
>>460
申し訳ありませんでした。
このソースコードを昇順でソートできるように直しなさい。
という問題です。




465 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:07:00 ]
>>462
(1)
#include <stdio.h>
int main(void) {
int array[7] = {4, 5, 0, 6, 2, 2, 4};
int i, sum = 0;
for(i=0;i<7;i++) sum += array[i];
printf("%d", sum);
return 0;
}

466 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:14:41 ]
>>461
#include <iostream>
using namespace std;
int main()
{
    streambuf *sb = cin.rdbuf();
    int c, cc, n;
    const char *sep = "";
    while ((c = sb->sbumpc()) >= 0 && c != 'E') {
        for (n = 1; (cc = sb->sbumpc()) >= 0 && cc == c; ++n) {}
        sb->sungetc();
        cout << sep << n << " " << static_cast<char>(c);
        sep = " ";
    }
    cout << "\n圧縮完了\n";
}

467 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:20:17 ]
>>462
(2)
#include <stdio.h>
int main(void) {
int array[7] = {4, 5, 0, 6, 2, 2, 4};
int array2[7] = {0};
int i;
for(i=0;i<7;i++) array2[i] = array[6-i];
for(i=0;i<7;i++) printf("%d", array[i]);
putchar('\n');
for(i=0;i<7;i++) printf("%d", array2[i]);
return 0;
}

468 名前:453 [2007/06/28(木) 21:40:36 ]
>>455さんありがとうございます

469 名前:462 mailto:sage [2007/06/28(木) 21:59:36 ]
>>465
>>467
ありがとうございます

470 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:45:46 ]
>>457
(1)
#include <iostream>
#include <math.h>
#define BUF_MAX 64
#define DATA_MAX 128

char datanum=0;
long data[DATA_MAX];

void seikei(char*);
long henkan(char*);
void touroku(long);
void sort();
void output();


471 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:47:05 ]
(2)
int main() {
char i, sign, buf[BUF_MAX];
long input;

do {
input = 0;

for(i=0; i<BUF_MAX; i++)
buf[i] = NULL;

printf("input number\n> ");
scanf("%s", buf);

if(buf[0]==45) sign = 1;
else sign = 0;

seikei(buf);
input = henkan(buf);

if(input==0) break;
else if(sign==1) input = 0-input;

touroku(input);
} while(1);

sort();
output();

return 0;
}

472 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:47:53 ]
(3)
void seikei(char *buf) {
char i, j, max, str[BUF_MAX];

for(i=0; i<BUF_MAX; i++)
str[i] = NULL;

max = (char)strlen(buf);
for(i=0, j=0; i<max; i++) {
if(!(48>buf[i] && buf[i]<57)) {
str[j] = buf[i]-48;
j++;
}
}

for(i=0; i<BUF_MAX; i++)
buf[i] = str[i];

return;
}

long henkan(char *buf) {
char i, figure;
long input=0;

figure = (char)strlen(buf)-1;
for(i=0; buf[i]!=NULL; i++)
input += buf[i] * pow((double)10, (double)figure-i);

return input;
}


473 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:49:12 ]
(4)
void touroku(long input) {

if(datanum<DATA_MAX) {
data[datanum] = input;
datanum++;
}

return;
}

void sort() {
char i, j, higher;
long tmp;

for(i=0; i<datanum; i++) {
for(j=i+1, higher=i; j<datanum; j++) {
if(data[higher]<=data[j]) higher = j;
}

tmp = data[higher];
data[higher] = data[i];
data[i] = tmp;
}

return;
}

474 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:50:56 ]
(5)
void output() {
char i;

for(i=0; i<3; i++) {
if(data[i]==NULL) break;
printf("上位%d位: %d\n", i+1, data[i]);
}

for(i=datanum-1; i>(datanum-4); i--) {
if(data[i]==NULL) break;
printf("下位%d位: %d\n", datanum-i, data[i]);
}
}

単純なデータ構造にしたつもり。
殴り書きでsorry



475 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:19:21 ]
1] 授業単元:c言語
[2] 問題文: 8個の配列データa={1,2,4,6,8,4,5,9}の和WAおよび平均値MA
を求めるプログラムを配列およびfor文を用いて作成せよ。

[3] 環境
 [3.1] OS:XP
[3.2] Visual studio.2005

 [3.3] 言語:C
[4] 期限:6月29日:3時まで
[5] その他の制限:特になし
よろしくお願いします

476 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:19:34 ]
宿題じゃないんだが
01011010みたいに
日付が4桁4桁になってる
8桁の数字を生成するのはどうするん?



477 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:24:49 ]
宿題スレじゃなくてC/C++質問スレで頼むわ

478 名前:デフォルトの名無しさん [2007/06/28(木) 23:26:16 ]
>>345
お願いします

479 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:28:41 ]
>>475

#include <stdio.h>

int main(void){
double MA;
int i, WA=0;
int a[8] = {1, 2, 4, 6, 8, 4, 5, 9};

for(i=0; i<8; i++){
WA += a[i];
}
MA = WA/8.0;

printf("和 : %d", WA);
printf("平均値 : %lf", MA);

return 0;
}

直接書いてコンパイルとかしてないからエラーでたらおせーてね☆

480 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:35:04 ]
>>478
345の結果ってさ、準決勝で早稲田が下になってるやんか、
あれって逆にしてもええのん?
あかんのやったらあかんでええけど、

481 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:36:28 ]
ああごめんよく読んでなかったわ
得点と失点を記録するんやね

482 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:06:37 ]
>>478
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4438.txt

483 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:08:44 ]
defineにこだわってる所為で汚くなってるじゃんとか言わないでね


484 名前:デフォルトの名無しさん [2007/06/29(金) 01:02:03 ]
わからねえよボケ!去ね!



485 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:06:28 ]
>>470-474
サンクス。
ただ、素人がここまで書いてしまうと逆に相手に怪しまれると思うのですよ。
問題文を多少屁理屈で変えてもいいので、もう少し短く簡単にして頂ければ幸いです。

加えてもう一問。

[1] 授業単元:C++
[2] 問題文:
メイン関数a,bに任意の値を入力する。
変数aと変数bで加算と乗算を行い計算結果を表示する。
整数の範囲(-2147483648〜2147483648)で正常な計算が行えることを確認する。
実数(float,double)は変数やキャスト等で一切使用しない。
[3] 環境
 [3.1] OS:窓
 [3.3] 言語:C++
[4] 期限:明日の午後
[5] その他の制限:出力にはprintf、入力にはscanfの使用

図々しいことは百も承知ですが、よろしくお願いします。

486 名前:デフォルトの名無しさん [2007/06/29(金) 01:10:38 ]
お願いします。
[1]C言語
[2]ファイルを読み込む
I am C.
CAT and ...
を別のファイルに下のように書き込む
1: I am C.
2: CAT and ...
 [3.1] OS:Linux
 [3.2] gcc 3.4
 [3.3] 言語: C
[4]今日の午前中

487 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:20:49 ]
>>486
#include <stdio.h>

int main(void) {
FILE *fop,*fsv;
char buf[32];
int ch;

printf("読み込むファイル名を入力 > ");
scanf("%s",buf);
fop=fopen(buf,"r");
if( fop==NULL ) return 1;

printf("書き込むファイル名を入力 > ");
scanf("%s",buf);
fsv=fopen(buf,"w");
if( fsv==NULL ) { fclose(fop); return 1; }

while( (ch=fgetc(fop))!=EOF ) {
fprintf(stdout,"%c",ch);
fprintf(fsv,"%c",ch);
}

fclose(fop);
fclose(fsv);

return 0;
}

488 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:26:08 ]
[1] 授業単元:情報系ゼミ
[2] 問題文:www.ipsj.or.jp/07editj/promenade/4407.pdf
 上記URLの文中「逆方向のスキャンによる枝刈り(P759)」「ビット列の長さによる枝刈り」
 の二項を聞いてる素人にも判る様に説明、解説する。という課題を受けました
 しかし今まで習った内容とは明らかにレベルが違いすぎるため、
 また、周りが自分を含めプログラムはズブの素人ばかりなので全く理解できず、
 一同困惑しています
 お時間のある方、この範囲のプログラム文の一行一行がどういう機能を果たしているのかを
 馬鹿にも判るように解説して頂けないでしょうか?
 よろしくお願いします
[3] 環境
 [3.1] OS:Windows 
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語:C++
[4] 期限:[2007年07月01日まで
[5] その他の制限: まったく習っていない段階

489 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:29:47 ]
あ、書き込むときに
1: 〜
2: 〜
のように数字をつけたいんです、3行とか4行とかにも対応できるように…。
もしよければおねがいします

490 名前:デフォルトの名無しさん [2007/06/29(金) 01:34:37 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4439.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: borland
 [3.3] 言語: どちらでも可
[4] 期限: 2007年07月01日23:00まで
[5] その他の制限: なし

491 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:41:48 ]
>>489>>487さんへのレスです。

492 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:53:19 ]
491です。解決しました。あともう一門わからないのがあるので
もしよければお願いします
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
テキストファイルをよみこんでたとえばファイルに
cccchaa
というのがかいてあったら下のような感じで画面とテキストファイルに表示する
c→4h→1a→2
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限:明日

493 名前:492 mailto:sage [2007/06/29(金) 01:59:20 ]
[2]の例追加
abdcdoddooffffoo

abc→1 df→4 o→5

494 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:01:36 ]
>>491 >>489
>>487 の一部だけ変更。変更部分は↓の一番上と下が一致するところの中
if( fsv==NULL ) { fclose(fop); return 1; }

i=1;
fprintf(stdout,"%d:",i);
fprintf(fsv,"%d:",ch);
while( (ch=fgetc(fop))!=EOF ) {
fprintf(stdout,"%c",ch);
fprintf(fsv,"%c",ch);
if( ch=='\n' ) {
i++;
fprintf(stdout,"%d:",i);
fprintf(fsv,"%d:",ch);
}
}
fclose(fop);




495 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:06:46 ]
>>494 訂正
fprintf(fsv,"%d:",ch);  < の2箇所を
fprintf(fsv,"%d:",i);  < ,i に変更

496 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:07:39 ]
>>495 じゃなくて、2箇所ある
fprintf(fsv,"%d:",ch);  < これを って意味ね。出力結果がおかしいから分かるだろうけど。

497 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:31:05 ]
[1] 授業単元: プログラミング基礎A
[2] 問題文(含コード&リンク):
奇数かどうか判定する関数および,偶数かどうか判定する関数を作成しなさい.
  ◎以下を参考の事
奇数判定: int isOdd(int i)
数字iが奇数の場合1,
偶数の場合0を返す関数

偶数判定: int isEven(int i)
数字iが偶数の場合1,
奇数の場合0を返す関数

main関数ではif文を使って正しく動いているかどうか
チェックしてください.
※戻り値にはboolを利用してもOKです


[3]
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
 [3.3] 言語:C++
[4] 期限:2007年6月29日10時30分
[5] その他の制限:出来るだけ複雑ではなく簡単(初歩的)なものにすること。

よろしくおねがいします。

498 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:33:07 ]
>>497
int isOdd(int i){return i%2;}
int isEven(int i){return i%2==0;}

499 名前:492 mailto:sage [2007/06/29(金) 05:10:44 ]
テンプレわかりづらかったので、もっかい質問します
是非、教えてください、お願いします。

[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
テキストファイルをよみこんでたとえばファイルに
cccchaa
というのがかいてあったら下のような感じで画面とテキストファイルに表示する
c→4h→1a→2
ほかの例は
abdcdoddooffffoo
の場合
abc→1 df→4 o→5
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限:5時間後くらい


500 名前:492 mailto:sage [2007/06/29(金) 05:13:41 ]
>>494-496さん本当にありがとうございます!!

501 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 06:03:57 ]
>>499
#include <stdio.h>

int main(void)
{
  int c, nc[256] = {0}, nmax = 0, n, found;

  while ((c = getchar()) != EOF) {
    nc[c]++;
    if (nc[c] > nmax)
      nmax = nc[c];
  }
  for (n = 1; n <= nmax; n++) {
    found = 0;
    for (c = 0; c < 256; c++) {
      if (nc[c] == n) {
        putchar(c);
        found = 1;
      }
    }
    if (found)
      printf("→%d", n);
  }
  printf("\n");
  return 0;
}

502 名前:492 mailto:sage [2007/06/29(金) 06:27:59 ]
>>501さんありがとうございます。
けどコンパイルしてみたらエラーがたくさん表示されて…。
あとファイルから読み込んで結果を画面に表示してファイルに書き込む
プログラムをつくりたいです。またもしよければアドバイスおねがいします

503 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:02:16 ]
>>500 そういや、int i; も追加だったっけ・・・ってできた?ようだから良いか。

504 名前:492 mailto:sage [2007/06/29(金) 07:07:45 ]
>>503さんのをアレンジしたらできました!ありがとうございました!!
もしよければ>>499を教えてほしいです…何度もすいません。



505 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:24:24 ]
>>501は全角スペースが入っているからでそ
#include <stdio.h>

int main(void)
{
 int c, nc[256] = {0}, nmax = 0, n, found;

 while ((c = getchar()) != EOF) {
  nc[c]++;
  if (nc[c] > nmax)
   nmax = nc[c];
 }
 for (n = 1; n <= nmax; n++) {
  found = 0;
  for (c = 0; c < 256; c++) {
   if (nc[c] == n) {
    putchar(c);
    found = 1;
   }
  }
  if (found)
   printf("→%d", n);
 }
 printf("\n");
 return 0;
}

506 名前:492 mailto:sage [2007/06/29(金) 07:32:56 ]
これにファイルポインタとか使いしていけばいいんですかね?
これだけだと動きませんでしたので・・・

507 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:38:07 ]
>>506
題意が良くわからないんだが、要するに文字列の中の各アルファベットの数を数えろってことかね?

508 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:39:33 ]
492と493の例だと表示順がわからないんだけど。
出てきた順番でもないし、アルファベット順でも個数順でもない。

509 名前:492 mailto:sage [2007/06/29(金) 07:44:45 ]
>>507さん、そうですねアルファベット順にしたいです。
cccchaaの例はちょっと間違って書いてましたすいません…。
もうひとつ例としては
aaabcddddee
の場合は
a→3 bcd→4 e→2
です。何度もすいません…アルゴリズムがいまいち思いつかないので…。

510 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 08:01:13 ]
アルファベットの数を数える部分はできたが、同じ数のものを並べてってのが面倒やな・・・
もう少しで出来そうだが、そこんとこで手詰まり中。まぁ、なんとかなるさ。

511 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 08:09:25 ]
>>459
ソースコードを昇順ソートできるようにするという問題です。
何度もすみません。

512 名前:デフォルトの名無しさん [2007/06/29(金) 08:23:46 ]
>>381お願いします

513 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:13:21 ]
>>509 >>506 >>504 >>499 >>492
汚いソースだが我慢せい
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4441.c

514 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:15:32 ]
>>509 >>506 >>504 >>499 >>492  訂正
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4442.c



515 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:27:10 ]
>>509 >>506 >>504 >>499 >>492  さらにマクロでシェイプアップ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4443.c

516 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:27:58 ]
>>515 っつか str[1024], <これ要らなかった、削除プリーズ

517 名前:459 mailto:sage [2007/06/29(金) 12:12:43 ]
時間延長してもらいました。
順を追って試してるんですがうまくいかないです・・・

518 名前:デフォルトの名無しさん [2007/06/29(金) 12:41:20 ]
[1] 授業単元:プロC
[2] 問題文(含コード&リンク):
↓*ndPtrPtr が指すリストの n 番目のノード(ノード番号は 0 番から始まる)を削除する.
削除したノードに割り当てられていたメモリは解放される.ただし,リスト中のノード数が
n 以下で,n番目のノードがない場合には,何もしない.
戻り値は,n番目のノードが削除できたときには SUCCESS,
n番目のノードが存在せず,削除できなかったときには FAILURE を返す.
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4444.c

上のnodeInsertを改良して,指定された挿入場所のインデックス n が負のときには,
新しく挿入されたノードがリストの末尾から数えて -n 番目になるようにせよ.
(たとえば,n == -1 のときには,末尾に挿入される)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:月曜日まで
[5] その他の制限: なし

よろしくお願いします。

519 名前:デフォルトの名無しさん [2007/06/29(金) 12:43:12 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
  3d^2x/dt^2+dx/dt+2x=4
x(t=0)=0
dx/dt(t=0)=0

上記の微分方程式をルンゲークッタ法を用いて解け
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C言語
[4] 期限: ([2007年7月1日まで
[5] その他の制限: なし

お願いします



520 名前:デフォルトの名無しさん [2007/06/29(金) 12:58:22 ]
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):ふたつあります。
@文字列strをno回だけ連続して表示する関数
void put_stringn(const char str[], int no){/*…*/}を作成せよ。
A以下に示した関数をもとにして、文字列を後ろから逆に表示する("SEC"を受けたら"CES"と表示する)関数put_rstringを作成せよ。
#include <stdio.h>
void put_string(const char str[])
{
unsigned i = 0;
while(str[i])
putchar(str[i++]);
}
int main(void)
{
char str[100];
printf("文字列を入力してください:");
scanf("%s", str);
put_string(str);
putchar(!\n!);
return(0);
}
[3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限:今日中なるべく早く
[5] その他の制限: 明解C言語入門編テキスト使用
お手数おかけしますがどうかよろしくお願いします。


521 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:03:46 ]
明解C言語入門編
ttp://www.bohyoh.com/Books/MeikaiA01/
これか?

522 名前:デフォルトの名無しさん [2007/06/29(金) 13:04:27 ]
>>521さん
そうです。

523 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:04:39 ]
[1] 授業単元:C++研究
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4262.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4381.txt
上記2つのプログラムのクラス(設計図)のインスタンス生成部分をnew演算子を用いた
ものに修正しなさい(すべての個所)。もちろんこのインスタンスをdelete演算子
で削除することを忘れないこと。

[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語: C++
[4] 期限: ([2007年7月1日12:00まで]
[5] その他の制限:特になし

よろしくお願いします。


524 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:06:42 ]
>>520
#include <string.h>
void put_string(const char str[])
{
unsigned i = strlen(str)-1;
while(str[i])
putchar(str[i--]);
}



525 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:09:21 ]
>>520 なんか全角が入ってたり putchar の括弧の中がおかしいから全部書くわ
#include <stdio.h>
#include <string.h>
void put_string(const char str[]) {
unsigned i = strlen(str)-1;
while(str[i])
putchar(str[i--]);
}

int main(void) {
char str[100];
printf("文字列を入力してください:");
scanf("%s", str);
put_string(str);
putchar('\n');
return(0);
}

526 名前:デフォルトの名無しさん [2007/06/29(金) 13:15:04 ]
>>525さん
ありがとうございます。
void put_stringをvoid put_rstringにすればいいんですかね?#include <string.h>て
習っていないのですが…
もしよろしければ問題@のほうもよろしくお願いします


527 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:23:43 ]
内容:
[1] 授業単元:C++
[2] 問題文:
#include <stdio.h>
#define NUM4
#define NAME_LENGTH 20
struct seiseki{
char name[NAME_LENGTH];
int jpn;
int eng;
int math;
/*A*/
}
int main(void){
struct seiseki i06[NUM];
double max;
int max_i;
int i;
for(i=0;i<NUM;i++){
printf("%d番目の名前を入れてください",i);
scanf("%s",i06[i].name);
printf("%d番目の国語の成績を入れてください",i);
scanf("%d",i06[i].jpn);
printf("%d番目の英語の成績を入れてください",i);
scanf("%d",i06[i].eng);
printf("%d番目の数学の成績を入れてください",i);
scanf("%d",i06[i].math);
}
/*B*/
}


528 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:31:36 ]
>>520
#include <stdio.h>
void put_stringn(const char str[], int no) {
int i;
for(i=0; i<no; i++)
printf("%s \n",str);
}
void put_string(const char str[]) {
int i = 0;
while(str[i]!='\0') i++;
while(i-->0)
putchar(str[i]);
}

int main(void) {
char str[100];
int no;

printf("文字列を入力してください:");
scanf("%s", str);

printf("@文字列strをno回だけ連続して表示する関数 no > ");
scanf("%d",&no);
put_stringn(str,no);

printf("A以下に示した関数をもとにして、文字列を後ろから逆に表示\n");
put_string(str);
putchar('\n');
return(0);
}

529 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:31:59 ]
以下のプログラムに構造体を各人の名前と合計点を格納できるように拡張し、最終的には合計点が一番よい学生の名前を出力するプログラムを作成せよ。/*A*/ /*B*/に入れよ
また、成績のAランク(成績が80以上100以下)の個数を格納する変数に変更して、Aランクの数が一番多い学生の名前を出力するプログラムを作成せよ。/*A*/にAランクの数
[3] 環境
[3.1] OS:窓
[3.3] 言語:C++
[4] 期限:明日
[5] その他:制限 構造体 他にはとくになかったです。
よろしくお願いします。


530 名前:デフォルトの名無しさん [2007/06/29(金) 13:34:25 ]
>>528さん
ありがとうございます。
すみません、@とAの問題は別物なんです
ややこしくかいてしまってすみません
>>528にかいていただいたものをどうわければいいのでしょうか…
本当にすみませんorz






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<213KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef