C/C++の宿題を片付けます 77代目
レス数が900を超えています。1000を超えると表示できなくなるよ。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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
【前スレ】
C/C++の宿題を片付けます 76代目
http://pc8.2ch.net/test/read.cgi/tech/1162771475/
【過去スレ一覧】
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
0809デフォルトの名無しさん
2006/12/01(金) 22:38:32return の変わりに条件判定とprintf文を書けば良いだけでないの?
0810デフォルトの名無しさん
2006/12/02(土) 00:23:33[2] 問題文:50個の整数データを読み込み、それらを小さい順に出力する
cプログラムを作成せよ。バブル整列法は使ってはいけない。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cのみ
[4] 期限: 2006年12月23日12:00まで
よろしくお願いします。
0811デフォルトの名無しさん
2006/12/02(土) 00:41:03#include<stdio.h>
#include<stdlib.h>
int main(void){
int i,j;
int a[10];
srand(time(NULL));
printf("0-10:\n");
for(i=0;i<10;i++){
a[i] = 0;
}
j=1;
while(j<=10){
i = rand() % 10;
if(a[i]==0){
a[i] = j;
j++;
}
}
for(i=0;i<10;i++){
printf("%d\n",a[i]);
}
}
0813デフォルトの名無しさん
2006/12/02(土) 01:22:03int i,k=0,shaffle;
int rar[10];
for(i = 0; i< 9; i++)
rar[i] = i+1;
scanf("%d",&shaffle);
srand((unsigned)time(NULL));
while(k <= shaffle){
i = rand() % 10;
if(i>=0){
temp = Value[i];
Value[i] = Value[i-1];
Value[i-1] = temp;
}
k++;
}
適当にこんな感じでも良いでしょ
0814デフォルトの名無しさん
2006/12/02(土) 01:23:52びっくりだ
0815デフォルトの名無しさん
2006/12/02(土) 03:34:130816デフォルトの名無しさん
2006/12/02(土) 05:25:56int d[10];
int r,w;
int i;
srand((unsigned)time(NULL));
for( i=0; i < 10; i++)
d[i] = i + 1;
for( i = 0 ; i < 10; i++){
r = i + rand() % (10 - i);
w = d[i];
d[i] = d[r];
d[r] = w;
}
0817デフォルトの名無しさん
2006/12/02(土) 06:17:56なんか色々とおかしくない?
0818813
2006/12/02(土) 06:26:50何も見ずに書き込んだらやっぱだめだね
0819デフォルトの名無しさん
2006/12/02(土) 07:34:43コンパイルはしてないけどな。あと、データ読むところは書いてない。
#include <stdlib.h>
int compare(const int *a, const int *b);
int main(void)
{
int data[50];
int i;
/* ここいらでデータを読む */
/* ソート */
qsort(data, 50, sizeof(int), (int (*)(const void*, const void*))compare);
/* 表示 */
for (i = 0; i < 50; i++) {
printf("%d\n", data[i]);
}
}
int compare(const int *a, const int *b)
{
return *a - *b;
}
0820デフォルトの名無しさん
2006/12/02(土) 10:39:001
11
121
1331
14641
のように出力されるようにするにはどのように作ればいいですか。
0821デフォルトの名無しさん
2006/12/02(土) 11:33:54どのようにって
・n段目の左からm番目の数字が(n-1)段目の(m-1)番目とm番目の数字和 (n>=3, 2<=m<=n-1)
・n段目の左端(m=1)と右端(m=n)の数字が1
になるように作ればいいと思うよ
0823デフォルトの名無しさん
2006/12/02(土) 12:08:300824デフォルトの名無しさん
2006/12/02(土) 12:12:510825デフォルトの名無しさん
2006/12/02(土) 12:22:34プログラミングだけが人生じゃないさ。
難問奇問な宿題はさっさと丸投げして人生を楽しもう。
0826デフォルトの名無しさん
2006/12/02(土) 13:56:03自分で勉強してみて難しさが分かりました orz
これからは期限守らなくても大目に見ますね。
0827デフォルトの名無しさん
2006/12/02(土) 14:01:12当たり前だカス
0828デフォルトの名無しさん
2006/12/02(土) 14:15:57ニートは黙ってろ
0829デフォルトの名無しさん
2006/12/02(土) 14:34:35多分題意に反すると思うけど
#include <stdio.h>
#define N 5
int main(void)
{
int i, j, k, n,, a[N];
for(i=0; i<N; i++) {
scanf("%d", &n);
for(j=0; j<i; j++) {
if(a[j]>n) {
for(k=i; k>j; k--) a[k] = a[k-1];
break;
}
}
a[j] = n;
}
for(i=0; i<N; i++) printf("%d ", a[i]);
return 0;
}
0830デフォルトの名無しさん
2006/12/02(土) 14:35:520831デフォルトの名無しさん
2006/12/02(土) 15:26:000832デフォルトの名無しさん
2006/12/02(土) 15:27:090833デフォルトの名無しさん
2006/12/02(土) 15:33:04inputfile : ソートするデータが入ったファイルの名前.
ファイル中のデータの並べ方は問わない.データ数は1000個です
outputfile : ソート後のデータを出力するファイルの名前
ファイル中のデータの並べ方は,inputfileと同じにすること.
これを見る限り区切り文字がスペースだろうとコンマだろうと改行記号だろうと
対応しなくてはならないようだ
どうも質問者は分かってなかったみたいだが
とりあえず関数は全部書いたけどmain作るのがめんどくさくて絶賛放置中
0834デフォルトの名無しさん
2006/12/02(土) 15:47:120835832
2006/12/02(土) 15:49:090836デフォルトの名無しさん
2006/12/02(土) 15:49:58>ファイル中のデータの並べ方は,inputfileと同じにすること.
じゃあこれは何を意味するの?
あとファイル内のデータは数値?文字列?
0837デフォルトの名無しさん
2006/12/02(土) 15:54:190838デフォルトの名無しさん
2006/12/02(土) 16:01:26ていうのは、inputfileに入っているデータと同じ数字が入っているならいいらしいです。あとファイル内のデータは数字です
0839デフォルトの名無しさん
2006/12/02(土) 16:15:320840デフォルトの名無しさん
2006/12/02(土) 16:19:080841デフォルトの名無しさん
2006/12/02(土) 16:19:500842デフォルトの名無しさん
2006/12/02(土) 16:27:220843デフォルトの名無しさん
2006/12/02(土) 16:32:170844デフォルトの名無しさん
2006/12/02(土) 16:34:270845デフォルトの名無しさん
2006/12/02(土) 16:38:25[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3063.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: 12月7日
[5] その他の制限: よろしくお願いします。
0846デフォルトの名無しさん
2006/12/02(土) 16:58:53またお前か
0847デフォルトの名無しさん
2006/12/02(土) 17:26:51今からやるから期待しないで待ってろ
21時までに書き込み無かったら俺からの回答は諦めろ
0848831
2006/12/02(土) 17:38:22できそうですか?
0849デフォルトの名無しさん
2006/12/02(土) 17:38:580850デフォルトの名無しさん
2006/12/02(土) 17:43:49その関数を晒してもらおうか
0851848
2006/12/02(土) 17:49:03{
int i, j;
int test; /* test==1; すでに整列済み */
for(i=h; i<k; i++) /* バブル操作の反復 */
{
test=1;
for(j=k; j>=i+1; j--)
if(A[j]<A[j-1]) {swap(j, j-1, A); test=0;}
if(test==1) return;
}
return;
}
まだバブルソートしかできてません
0852847
2006/12/02(土) 17:49:37それを晒してくれよ。Mainなら書くよ
0854デフォルトの名無しさん
2006/12/02(土) 17:52:100855848
2006/12/02(土) 17:53:500856デフォルトの名無しさん
2006/12/02(土) 17:57:440857デフォルトの名無しさん
2006/12/02(土) 17:57:58大変だwww無限ループにwww
0858デフォルトの名無しさん
2006/12/02(土) 18:09:330859デフォルトの名無しさん
2006/12/02(土) 18:13:18締め切り日曜みたいだし847からの解答が無ければ俺がのんびり解こう
0860796
2006/12/02(土) 19:05:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3064.txt
0861デフォルトの名無しさん
2006/12/02(土) 19:06:530862847
2006/12/02(土) 19:32:29これは面倒くさいな。とりあえず前言撤回。俺はやってないことにしておいてくれ。
ということで、>>859にまかせた。
0863デフォルトの名無しさん
2006/12/02(土) 19:56:540864796
2006/12/02(土) 20:04:440865デフォルトの名無しさん
2006/12/02(土) 20:05:42) だ .き .を れ(
( お て .疑 以 )
) ! い .い 上(
,, -──- 、._ ( く .な )
-"´ \ .) .の .が (
/ ヽ.( .は .ら .)
/ ヽ〜、_ _(
| _ノ ヽ、_ .| `,〜〜〜´
l o゚⌒ ⌒゚o l
` 、 (__人__) /
`ー 、_. ` ⌒´ /
/`''ー─‐┬''´
/ 丶. i |
./ 丶、_)|_ノ|_
.|  ̄ヽ._ ´ ヽ
ヽ、 _/´`ヽ /
 ̄  ̄ ̄
0866デフォルトの名無しさん
2006/12/02(土) 20:07:070867デフォルトの名無しさん
2006/12/02(土) 20:12:19他に方法がないからと言って判断を完全に預けてしまうのは
独立した個人としての人格の尊厳に関わるのではないだろうか。
0868デフォルトの名無しさん
2006/12/02(土) 20:22:26./ _/ / / / / / / / / ∧_ヽ \ ヽ. ヽ
// /! / .l l /,.-‐'フフヽ.// / /´ヽヽ `>.、 .! ',`ヽ 〉
/ / |/ | l// // /.: / ノ /. :.:.ヽ \\ `ト、 | | /
{ ./ || l/ /ン-‐<、 ://:/ ./: :,ィ─ヽ-\ヽ. | | | |′
\、.--|l-‐''"_,. -‐''",. =,=¬ミ、/: : :/ /: : : ノ゙,ニ==ミ、 | | | |
/  ̄|| ̄ {: :く ト-' } : : / ./: : : : : ト-' } // / j l !
/ .!', \:.` ゝ -‐' .// ー-- ./ / /j | /
/ ', ヽ \ゝ、 ノ : : ! ノ/ .//ノ'
./ .∧ \ \ -┐ ∠ -‐''" /
/ /,ハ = ゝヘ、_ ゝ、 __ノ) /〃/
/ // ヽ〃 ヾ ヽ ̄ ̄ 、_,.. -−'' ´ ̄ / /</ ケヒヒッ
/ ,r'"´ ̄了ゝ、rー、 ヽ ` ー──‐ '' ´ /liヾ/ 人生は裏切りの連続ですぅ
/ / ゝ, -‐'7`ーイ__.」、 \ ー / |
/ , f´ ̄/ / ノ/ヽゝン‐.、V丶、 /| |
/ 之/ / / ヽ ヽノ1ヽ-、.`丶、 _,. -‐'"´ /|ヾ 「l〃|
/ 「 / / / ', ��| ヽ \  ̄ / / |= =l
/ .ゝ/ // .i l , -イ ヽ. ヽ ,イヽ / |〃il ヾl
,r/ / || L.、| l `丶、 f | `ヽ、 | !
/./ / || ヽjヾ||〃l ,. ‐-、ヽl _ \| ヽ
/ / / || ノj= =|/ , --ヘ}⌒}´_\ \ 、 ヾ r ヽ
0869デフォルトの名無しさん
2006/12/02(土) 20:26:350870デフォルトの名無しさん
2006/12/02(土) 20:49:25ちゃんと動作確かめてないけど、こんなんでいいのかな?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3066.c
0871デフォルトの名無しさん
2006/12/02(土) 21:02:57信じていたのに
この言葉はお約束ですな
0872796
2006/12/02(土) 21:10:27はい、ありがとうございました。おかげで助かりました。
0873デフォルトの名無しさん
2006/12/02(土) 21:13:43/\ /\
/ \ / \
/ ゙'----''"´ ヾ
/ `:、
/ `:
| i
| ノ ' |
| .,___., .,___., i
、 ''"´`:、 υ / キミ達のこと 信じてたのに........クスン
`丶,:' 、. . )___Д____,,.,_,,.;''"
/ / ο
0874デフォルトの名無しさん
2006/12/02(土) 21:37:122ch閉鎖か
0875デフォルトの名無しさん
2006/12/02(土) 22:24:45[2] 問題文:
配列に格納されたデータをソートするプログラムを作成するにあたり、
以下の機能を持つ関数を作成しなさい。
乱数を生成し配列要素に格納する
init_array(int *pa, int n)
配列要素を1行で画面に出力する
output_array(int *pa, int n)
指定された2つアドレスのデータを交換する
swap(int *x, int *y)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C
[4] 期限: 2006年12月4日09:00まで
0876デフォルトの名無しさん
2006/12/02(土) 22:50:07# include <stdio.h>
# include <stdlib.h>
void init_array(int *pa, int n)
{
while(--n >= 0) pa[n] = rand();
}
void output_array(int *pa, int n)
{
int i;
for(i = 0; i < n; i++)
printf("%d ", pa[i]);
printf("\n");
}
void swap(int *x, int *y)
{
int t = *x;
*x = *y;
*y = t;
}
0877 ◆s2cIPM3PTs
2006/12/02(土) 23:05:15[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3067.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限: 明後日
[5] その他の制限: 配列を利用する
関数を利用しない
つい最近習い始めたばかりの初心者です。
宜しくお願いします
0878デフォルトの名無しさん
2006/12/02(土) 23:25:19問題文の読み込むってファイルから?
ファイルから読むんなら関数使っちゃうよね?
0879デフォルトの名無しさん
2006/12/02(土) 23:32:270880 ◆s2cIPM3PTs
2006/12/02(土) 23:38:13>>879
すいません。879さんの言うとおりです。
0881デフォルトの名無しさん
2006/12/03(日) 00:06:48[2]問題文:入力した年月日が、その年の1月1日から通算何日目かを表示するプログラムを
閏年を判別する関数、通算を求める関数、main関数に分けて作成せよ。
[3]環境
[3-1]OS:Windows XP
[3-2]コンパイラ名とバージョン:Visual Studio.NET2003
[3-3]言語:C++
[4]期限:12月7日
0882デフォルトの名無しさん
2006/12/03(日) 00:14:00[2]問題文:44,44と-0,1111×(10の2乗)を足した値をscanf関数を用いずに
表示するプログラムを作成せよ。ただし、数値は入力すること。
[3]環境
[3-1]OS:Windows XP
[3-2]コンパイラ名とバージョン:Visual Studio.NET2003
[3-3]言語:C++
[4]期限:12月7日
0883デフォルトの名無しさん
2006/12/03(日) 00:26:09#include <stdio.h>
int main(void){
float a,b;
char buf[1024];
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%f %f",&a,&b);
printf("%.2f\n",a+b);
return 0;
}
0884デフォルトの名無しさん
2006/12/03(日) 00:59:05>44,44と-0,1111×(10の2乗)
俺の脳がコンパイルエラーを返した
0885デフォルトの名無しさん
2006/12/03(日) 01:07:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3068.c
0886デフォルトの名無しさん
2006/12/03(日) 01:08:470887デフォルトの名無しさん
2006/12/03(日) 01:16:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3069.cpp
0888デフォルトの名無しさん
2006/12/03(日) 01:20:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3070.cpp
すまそ、細かいが念のためにちょい修正
0889デフォルトの名無しさん
2006/12/03(日) 03:06:06これはひどい・・・
0890デフォルトの名無しさん
2006/12/03(日) 03:17:450891デフォルトの名無しさん
2006/12/03(日) 03:49:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3071.txt
最低限題意は満たしたつもり。
0892デフォルトの名無しさん
2006/12/03(日) 04:09:361.平均と等しい数値が平均より小さい数になる。
2.sa_maxが初期化されてない
0893デフォルトの名無しさん
2006/12/03(日) 04:22:25thx
訂正
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3072.txt
0894デフォルトの名無しさん
2006/12/03(日) 05:59:27Q1
while ((c = getc(fp)) != EOF) {
putchar(c);
}
これ↑だとEOFを検出したらすぐ終了するのに
while (feof(fp)==0) {
c = getc(fp);
putchar(c);
}
これ↑だとEOFを出力してしまうのはなぜ…?
Q2.ファイルの終わりに'\0'を書き込む必要はないのですか?
基本的な質問でごめん、誰か教えてくれないかな…。
0895デフォルトの名無しさん
2006/12/03(日) 06:06:300896デフォルトの名無しさん
2006/12/03(日) 06:36:27int a[600][600];
とかって確保しようとしたら実行してもすぐ終了してしまう。
大きな領域の二次元配列を確保することは出来ないのでしょうか?
0897デフォルトの名無しさん
2006/12/03(日) 06:43:48600*600*4バイト以上だよね
スタック上じゃなくヒープ上に確保した方がいいのでは
0898デフォルトの名無しさん
2006/12/03(日) 06:48:15feofはファイルの終端を越えて読み出しを行った場合にゼロ以外を返す。
なので、最後の一文字を読んだ時点ではまだゼロ。
他の言語じゃ終端でEOFになるのが多いから間違えやすい。
ファイルシステムがファイルの長さの情報を持ってるから不要。
むかしCP/MというOSがファイルの長さの情報をブロック単位でしか持っていなかったので
テキストファイルの場合終端に ^Z(0x1a)を付けていたことがあるがこれは例外。
MS-DOSにもこの風習が残っていた。
0899デフォルトの名無しさん
2006/12/03(日) 06:57:21Windows上の場合は変数を保存出来る領域に制限があるんですか。
UNIXマシンだと問題なかったような…。
>>898
なるほど…。
よく分かりました。サンクス!
0900デフォルトの名無しさん
2006/12/03(日) 07:42:51「やさしいC 高橋 麻奈」
0901デフォルトの名無しさん
2006/12/03(日) 08:06:43コンパイルオプションにスタックサイズを与えればいいけど
そこまで考えているようじゃないのでヒープって言っちゃった
0902デフォルトの名無しさん
2006/12/03(日) 08:14:54麻奈って名前がいいだけだろw
0903デフォルトの名無しさん
2006/12/03(日) 08:40:050904デフォルトの名無しさん
2006/12/03(日) 08:45:560905デフォルトの名無しさん
2006/12/03(日) 08:54:080906デフォルトの名無しさん
2006/12/03(日) 08:55:360908 ◆s2cIPM3PTs
2006/12/03(日) 12:57:08[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3076.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限: 明日 17:00
[5] その他の制限: 特にありません
連続ですいません。
宜しくお願いします。
0909デフォルトの名無しさん
2006/12/03(日) 13:19:20オーバーフローとか気にしてないけど、
初級レベルならこの程度書いとけば充分だろう。
脳内コンパイルしかしてないから不備があっても勘弁な。
int countbetween(int data[],int n,int a,int b) {
int count=0;
for(int* p=&data[n-1]; p>=data; p--)
if(a<=*p && b>=*p) count++;
return count;
}
double avragearray(double data[],int n) {
double total=0;
for(int i=0; i<n; i++) total+=data[n];
return total/n;
}
int uruu(int year) {
return
year%400==0 ? 1 :
year%100==0 ? 0 :
year%4 ==0 ? 1 : 0;
}
レス数が900を超えています。1000を超えると表示できなくなるよ。