トップページ⇒tech
1001コメント402KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG?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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
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
0751デフォルトの名無しさん2006/12/01(金) 03:47:39
下手糞なコードを書くのは、まぁ初心者だろうから仕方ないが、
同じ答えが出ればいいだろと言って技術を向上させる意思が皆無なのは救いようがないな
0752デフォルトの名無しさん2006/12/01(金) 03:53:21
何が上手なコードで何が下手なコードなのか最近わからなくなってきたよ

ホーナー法なんて常識だろと思ってたんだがこのスレでは知らない人が二人ほどいたようだった。
ただコードの実行速度を速くしたいって、もう数値解析とかCGとか暗号の分野だけの気がするんだよな

普通にanx^n+a(n-i)x^(n-1)+…+a0 で計算した方が読みやすくていいコードなんじゃないかって
気がしてきた
0753デフォルトの名無しさん2006/12/01(金) 04:44:00
宿題丸投げするスレでコードの実行速度がどうこう言っても仕方ないんじゃない?
0754デフォルトの名無しさん2006/12/01(金) 04:56:40
問いから外れてないかぎりは作る側の勝手だろ
0755デフォルトの名無しさん2006/12/01(金) 04:56:48
>>753
受け取る側はどんなもの受け取っても自分で作ったものより良ければそれでいいだろうけど
解答する側はそれなりにテーマ決めて臨んでるんじゃないかねえ
07567072006/12/01(金) 06:55:13
なんか叩かれてるなぁ...別に良いけど。
>>750
懸命になってとか決め付けるなよ。
3分も掛かってないしコンパイルもしてないんだから。
>>751
下手と言われる筋合いは無いよ。
何らかの式を提示された場合、式の演算内容を f() としてまぁバカ正直に書くのは職業上の習慣だから。
まぁ問題をちゃんと読んで無いのは認めるけどね。
>>753
暇潰しだからなぁ...テーマとか言われても...
0757デフォルトの名無しさん2006/12/01(金) 07:03:34
>>756
たいした事言われてないのに一々レスするから必死に見える
ほっとけばいいのに
07587072006/12/01(金) 07:07:37
付け足し。
>>752
ホーナー法って言うんだ。常識なの?知らんかったよ。
けど、これってただの漸化式処理の事だよね。
応用範囲が狭そうだから名前付ける様なもんかなぁ..

コード速度の話はホーナー法?の方が早いでしょ。
上で書いたけど3分で書いたコードだからあんまり責めないでね。
速度を早くする作業は結構あるよ。画像解析とかだとちょっとした工夫で数10倍早くなるから。.

0759デフォルトの名無しさん2006/12/01(金) 07:26:29
ううむ・・・(^ω^;)
0760デフォルトの名無しさん2006/12/01(金) 07:32:14
[1] 授業単元: プログラミング入門
[2] 問題文(含コード&リンク): 整数配列dataにnum個のデータが「小さい順に整列
済みで」格納されている。(data[0]〜data[num-1])。目的とする整数(target)を入力したときに、
整数配列内の何番目にあるか出力せよ。(二分探索)
[3] 環境
 [3.1] OS: (Windows xp)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)
[4] 期限: (12/4/2006 までです。)
[5] その他の制限: (二分探索で求め、変数としてlow,high,midをつかっていただけると幸いです)
0761デフォルトの名無しさん2006/12/01(金) 07:41:40
変数名まで指定するのかよw
0762デフォルトの名無しさん2006/12/01(金) 07:48:16
言い訳する時間を勉強に費やして技術力上げればいいのにw
だからこういう奴は救いようがないんだよ。
0763デフォルトの名無しさん2006/12/01(金) 07:55:31
>>758
ホーナー法はアルゴリズム論では常識。これを知らないと、
ちゃんとした勉強してきてないんだなあと一発で分かる。


応用範囲が狭そうというのは視野が狭い。
ホーナー法は、+ と * を一般の二項演算としたとき、これらが分配的
すなわち a * (b + c) = (a * b) + (a * c) を満たすなら適用可能。
たとえば + と min、max と min、などでも使える。

これを意識して、プログラムの自動変換の分野では、ホーナー法が
適用できるように、演算子を分配的にする手法などが研究されている。
0764デフォルトの名無しさん2006/12/01(金) 07:56:00
見つからなかった時の処理について書いていないので
絶対見つかるものとする(unkunk
a[num]に数列は格納済み
nに探す数字を入れる

int low=0,high=num-1,mid=(low+high)/2;
while(a[mid]!=n){
if(a[mid]<n) low=mid;
else high=mid;
mid=(low+high)/2;
}
printf("%d",mid);
0765デフォルトの名無しさん2006/12/01(金) 07:59:21
配列のdata[0]って何番目っていうのかな。
0766デフォルトの名無しさん2006/12/01(金) 08:02:47
0番目
0767デフォルトの名無しさん2006/12/01(金) 08:05:59
>>765
ああそうか

printf("%d",mid+1);
0768デフォルトの名無しさん2006/12/01(金) 08:32:01
isalhaと
isgraph
それぞれを使ったらどうなりますか?
0769デフォルトの名無しさん2006/12/01(金) 08:33:54
0かそれ以外が返ってくる
0770デフォルトの名無しさん2006/12/01(金) 09:02:11
我ながらひどいなww書き直すか
>>760
mainは検証用だから適当に書き直す


#include <stdio.h>

int nibuntansaku(int n,int data[],int low, int high){
int mid=(low+high)/2;
if(data[mid]==n) return mid;
else if(high-low==1){
if(data[high]==n) return high;
else return -1;
}
else if(data[mid]<n) return nibuntansaku(n,data,mid+1,high);
else return nibuntansaku(n,data,low,high-1);

}

void main(){
int data[]={1,2,3,5,6,7,8,9};
int low=0,high=8,n;
scanf("%d",&n);
int tmp=nibuntansaku(n,data,low,high);
if(tmp!=-1) printf("%d番目\",tmp+1);
else printf("notfound\n");
}
0771デフォルトの名無しさん2006/12/01(金) 09:04:09
>>745
すいません。これです。

ttp://www.geocities.jp/c_prog2011/struct3.ppt
0772デフォルトの名無しさん2006/12/01(金) 09:15:10
やっぱこうしといて
×else if(high-low==1){
○else if(high-low<=1){
0773デフォルトの名無しさん2006/12/01(金) 09:26:18
寝ぼけてる時に書くもんじゃないな
失礼した

×else return nibuntansaku(n,data,low,high-1);
○else return nibuntansaku(n,data,low,mid-1);
0774デフォルトの名無しさん2006/12/01(金) 09:30:52
>>760 適当に作ったから動作保証は無しで。
#include<stdio.h>
int bs(int *data,int target,int low,int high){
int mid=(high+low)/2;
if(high<low)return -1;
if(data[mid]==target)return mid;
else if(target<data[mid])return bs(data,target,low,mid-1);
else return bs(data,target,mid+1,high);}
int main(){
int data[] = {1,2,3,4,6,7,8,9,10,11};
int num = 10,target,ans;
scanf("%d",&target);
ans = bs(data,target,0,num-1);
if(ans!=-1)printf("%d番目\n",ans+1);
else printf("見つかりませんでした\n");return 0;}
0775デフォルトの名無しさん2006/12/01(金) 10:34:28
[1] 授業単元: プログラミング
[2] 問題文: 別に用意したファイルdata.txt
       (5人分の名前、身長、年齢が入力されたファイル。こちらを参照http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3061.txt)から
       データを読み取り、年齢順に並べ替えて表示する。また表示した内容をファイルに書き直す。
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 12/2/2006 7:00 までです。
[5] その他の制限: 特になし
自分でここまでできました。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3062.txt
しかし、実行するとエラーメッセージが出て強制終了っぽくなります。
どうしてでしょうか?
また、29行目のs[0]=a;を実行するとx[4]=12となってしまうみたいなのですが、
これも理由がわかりません。

お願いします。
0776デフォルトの名無しさん2006/12/01(金) 10:37:27
>>775
struct person s[4];
int x[4];
↓
struct person s[5];
int x[5];
0777デフォルトの名無しさん2006/12/01(金) 10:40:14
>>775
このソースは冗談だろ?
冗談だと言ってくれ!
0778デフォルトの名無しさん2006/12/01(金) 10:58:39
>>775
鼻からコーヒーふきだしちゃったじゃないか!!!1111111
どうしてくれるんだ!!!!!!!11
0779デフォルトの名無しさん2006/12/01(金) 11:03:50
なんだか小学生がプログラミングしたみたいだなぁ。
でも何も分からなかったらこんなもんなのかもね…
0780デフォルトの名無しさん2006/12/01(金) 11:05:41
配列を信用してないことだけは分かった
0781デフォルトの名無しさん2006/12/01(金) 11:09:20

               -― ̄ ̄ ` ―--  _          だめぽ・・・・・
          , ´  ......... . .   ,    ~  ̄" ー  _
        _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、
       , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
    ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
   と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
  (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
       ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: : ●::::::::::::::::::::::: : : :_>
          ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
        (__  ̄~" __ , --‐一~ ̄ ̄ ̄
           ̄ ̄ ̄
0782デフォルトの名無しさん2006/12/01(金) 11:19:24
人数が増えて(ry
0783デフォルトの名無しさん2006/12/01(金) 11:50:52
これ以上何も言うまい。
駄作ではあるがこれでも持って帰って今まで悪い夢でも見ていたんだろうとみんなで思おうじゃないか。
そう、全て悪い夢だったのさ。

#include <stdio.h>
#include <stdlib.h>
#define FILENAME_READ "data.txt"
#define FILENAME_WRITE "data_new.txt"
#define NAMESIZE 40
#define REALLOC_UNIT 10
struct person{int age;float height;char name[NAMESIZE];};
int main(){int i,j,k,n;FILE *fp;struct person *s,tmp;
if((fp=fopen(FILENAME_READ,"r"))==NULL){fprintf(stderr,"Fileopen failed (read:"FILENAME_READ").\n");return 1;}
n=0;s=(struct person*)malloc(sizeof(struct person)*REALLOC_UNIT);
while(fscanf(fp,"%d %f %s",&(s[n].age),&(s[n].height),s[n].name)!=EOF)
{n++;if(n%REALLOC_UNIT==0)s=(struct person*)realloc(s,sizeof(struct person)*(n+REALLOC_UNIT));}fclose(fp);
for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(s[k].age>s[j].age)k=j;if(k!=i){tmp=s[i];s[i]=s[k];s[k]=tmp;}}
for(i=0;i<n;i++)printf("%d %f %s\n",s[i].age,s[i].height,s[i].name);
if((fp=fopen(FILENAME_WRITE,"w"))==NULL){fprintf(stderr,"Fileopen failed (write:"FILENAME_WRITE").\n");return 1;}
for(i=0;i<n;i++)fprintf(fp,"%d %f %s\n",s[i].age,s[i].height,s[i].name);fclose(fp);return 0;}
0784デフォルトの名無しさん2006/12/01(金) 11:54:12
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):10個の倍精度実数型データをキーボードから入力し、
それらのデータを小さい順に並べ替えて画面表示するプログラムを作成しなさい。ただし、
次に示すステップを満たす事とし、入力するデータの中に必ず1種類以上の同じ数値を含むこと
(1)入力されたデータを1次配列double data[10]に格納する
(2)すべての入力が終了した後で、配列を操作してデータの並べ替えを行う
(3)データの並べ替えが終了した後で、画面表示を行う
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月3日まで
[5] その他の制限: なし

よろしくお願いします
0785デフォルトの名無しさん2006/12/01(金) 12:56:17
>>784
#include <stdio.h>
#include <stdlib.h>
#define N 10
int div(double *pa, int l, int r){
int pv = r--;
double tmp;
while(1){
while(pa[l] < pa[pv]){ l++; }
while(pa[r] > pa[pv] && l < r){ r--; }
if(l >= r){ break; }
tmp = pa[l]; pa[l] = pa[r]; pa[r] = tmp;
}
tmp = pa[l]; pa[l] = pa[pv]; pa[pv] = tmp;
return l;
}
int sort(double *pa, int min, int max){
int pv;
if(min >= max){ return 0; }
pv = div(pa, min, max);
sort(pa, min, pv - 1); sort(pa, pv + 1, max);
return 1;
}
int main(void){
double data[N];
int i;
for(i = 0; i < N; ++i){ printf("num%d... ", i + 1); scanf("%lf", &data[i]); }
sort(data, 0, N - 1);
for(i = 0; i < N; ++i){ printf("%lf ", data[i]); }
return 0;
}
07867832006/12/01(金) 13:07:03
>>783
free(s);を忘れた。
0787デフォルトの名無しさんNGNG?2BP(202)
>>784
http://c-kadai.sakura.ne.jp/index.php?itemid=5&catid=6
07887142006/12/01(金) 14:00:52
あの〜〜

完全にスルーされているのですが・・・・・・




よろしくおねがいします。
0789デフォルトの名無しさん2006/12/01(金) 14:09:44
>>739
それは無いだろ。
実際には屑揃いの中に割とマシな奴が居ると見て貰える。
0790デフォルトの名無しさん2006/12/01(金) 14:16:54
>>789
だから、教わるほうが屑なら教えるほうも屑という設定を勝手に作って
>>701の心境をエスパーするという冗談なのさ。
0791デフォルトの名無しさん2006/12/01(金) 14:58:47
>>788
そりゃ締め切り書かなきゃスルーされる確率も上がるだろ
常識的に考えて…

また解答側は全ての問題に答える義務があるわけではない
つまらなそうと思えば当然スルーされる

BM法 cでググれば答えがいくらでも出てくるものをわざわざ
やるのはめんどくさいんだよ
0792デフォルトの名無しさん2006/12/01(金) 15:36:21
>>789
割とマシだと思われてたのに、次の授業では宿題でやったことと同じ事が出来なかったら
悲惨じゃん
0793デフォルトの名無しさん2006/12/01(金) 15:47:43
やらないのならイチイチ文句言うな
07947522006/12/01(金) 16:14:35
>>754,758
別にホーナー法使ってないプログラムにケチをつけたわけじゃないよ
俺自身も752に書いてるようにホーナー法とか最適化手法なんて
もうバッドノウハウなのかなあと思いかけてるくらいだし

ホーナー法使ったプログラムを書いたらホーナー法知らない人にケチをつけられたってだけ

>>763
なるほど 勉強になったわ
トンクス
0795デフォルトの名無しさん2006/12/01(金) 18:17:36
つまりアレか
片方が必死なのかと思ったらもう一方も必死なんだな
0796デフォルトの名無しさん2006/12/01(金) 18:53:51
1] 授業単元:Cプログラミング演習
[2] 問題文:
以下の要求(1)〜(6)を満たすクイックソートのプログラムを実現しなさい.
(1)軸要素の選び方については,以下の3方法が利用できるようにすること.
  (a) ランダムに一つを選ぶ. (b) データの先頭,最後,真中の位置の3要素の中央値を選ぶ.
  (c) データの先頭から見て最初に得られた2つの異なる値の大きいほうをとる.
(2)軸要素で分割した部分配列のサイズ(要素数)が小さくなった場合には, 基本的なソート方法を用いて並び替えること.
(3)プログラム終了時にデータ総数と比較回数を表示すること. また,分割の回数および基本的ソート方法が用いられた回数も表示すること.
   いずれも「分かりやすく」表示するように工夫すること.
(5)プログラム実行は,次のような引数付きで行えること.
  (ここでは,プログラムファイル名をquick81.cとし,
  これをコンパイルしてquick81という実行形式ファイルを作成したとする.)
  % quick81 inputfile outputfile pivot_selection basic_sort small_number debug_mode
  inputfile : ソートするデータが入ったファイルの名前. outputfile : ソート後のデータを出力するファイルの名前
  pivot_selection : a,b,c のいずれかの文字で上の軸要素の選び方に対応する.
  basic_sort : b,s,i のいずれかの文字.それぞれ,バブル,選択,挿入ソートに
      相当する.分割した部分配列のサイズが小さくなった場合に用いるソート方法を設定する.
small_number : 正の整数.この数字より部分配列のサイズが小さくなったら,上で指定した基本的なソート方法を用いる.
  debug_mode : vあるいはnの文字。vの場合は,データの分割の仕方が分かりやすいように、軸要素とそれにより分割された部分配列のサイズを
逐次出力させるようにすること. n の場合は上の出力はしない.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月3日
0797デフォルトの名無しさん2006/12/01(金) 19:05:02
[1] 授業単元:プログラミング基礎
[2]  2 3
 1 2

 1 1
 2 2 のような正方行列のデータを読み込んで上の行列をA、下の行列をBとしてA*BとA+Bを求めよ。

[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] C
[4] 期限: 12/2
[5] mallocを用いる事。今回のデータは2行2列ですが、行列のサイズはどの数字でも対応できるものでお願いします。
0798デフォルトの名無しさん2006/12/01(金) 19:09:38
>>796
inputfileの仕様
0799デフォルトの名無しさん2006/12/01(金) 19:19:20
inputfile : ソートするデータが入ったファイルの名前.
      ファイル中のデータの並べ方は問わない.データ数は1000個です
  outputfile : ソート後のデータを出力するファイルの名前
      ファイル中のデータの並べ方は,inputfileと同じにすること.
  pivot_selection : a,b,c のいずれかの文字
  上の軸要素の選び方に対応する.
  basic_sort : b,s,i のいずれかの文字.それぞれ,バブル,選択,挿入ソートに
      相当する.分割した部分配列のサイズが小さくなった場合に用いるソート方法を
      設定する.
small_number : 正の整数.この数字より部分配列のサイズが小さくなったら,
          上で指定した基本的なソート方法を用いる.
  debug_mode : v あるいは n の文字
      vの場合は,データの分割の仕方が分かりやすいように,
軸要素とそれにより分割された部分配列のサイズを
逐次出力させるようにすること.
n の場合は上の出力はしない.
0800デフォルトの名無しさん2006/12/01(金) 19:59:48
>797
//mallocでの正方行列の確保
int i;
int **p;
p = (int **)malloc(n*sizeof(int *));
for(i=0; i<n; i++) p[i] = (int *)malloc(n*sizeof(int));
//和
int i, j;
int **a, **b, **c;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) c[i][j] = a[i][j] + b[i][j];
}
//積
int i, j, k;
int **a, **b, **c;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
c[i][j] = 0;
for(k=0; k<n; k++) c[i][j] += a[i][k] * b[k][j];
}
}

後は適当になんとかして。
0801デフォルトの名無しさん2006/12/01(金) 20:25:07
>>799
言い方が悪かった

inputfileの区切り文字は何?
0802デフォルトの名無しさん2006/12/01(金) 20:55:51
区切り文字は空白だと思います
0803デフォルトの名無しさん2006/12/01(金) 21:38:20
 大学の講義の[C言語」という時間の課題として
{1〜10までの乱数を10個発生させて表示させる。ただし、1度出た数字は除外する。} という課題を出されたのですが、教科書を見ながら解いても 同じ数字が重複して表示されてしまうプログラムになってしまいどうしていいかわかりません。
 どなたか手ほどきをおねがいします
0804デフォルトの名無しさん2006/12/01(金) 21:42:38
>>803
教科書を見ながら解いた結果を貼るか、>>1を読んで書き直して丸投げするか
好きな方を選べ
0805デフォルトの名無しさん2006/12/01(金) 21:58:45
>>803 こんなんじゃねぇ?
int data[10];
int i, cnt = 0;

while( cnt < 10 ) {
data[cnt] = rand() % 10 + 1;
for( i = 0; i < cnt; i++ )
if( data[i] == data[cnt] )
break;
if( cnt == i ) cnt++;
}
0806デフォルトの名無しさん2006/12/01(金) 22:13:14
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3051.txt
この整数値の昇順リストを作成するプログラムを、指定データ(下記deletedata)と同じデータを持つセルをすべて
消去し、消去するデータがあったときはdata foundと1回表示し、ないときにはno such data
と1回表示するvoid DeleteAlist(struct LIST **ptr, int deletedata)を再帰を用いることによって作成せよ。

指定データを持つセルの先頭のものを消去する関数を参考にせよ。

void Deletelist(struct LIST **ptr, int deletedata){

if((*ptr)==NULL){
printf("no such data \n");
}else if((*ptr)->data == deletedata){
struct LIST *tmp;
printf("data found\n");
tmp=(*ptr)->nextptr;
free(*ptr);
*ptr=tmp;
}else DeleteList(&((*ptr)->nextptr),deletedata);
}
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:
昨日も聞いたんですが、
また条件を言われました。void型は変えずに、関数のなかで、deletedataとnosuchdataを表示しないといけないと言われました。
何度もすいませんが、お願いします
0807デフォルトの名無しさん2006/12/01(金) 22:21:47
>void型は変えずに
?
0808デフォルトの名無しさん2006/12/01(金) 22:27:27
ソートとリストで腹の中がパンパンだぜ
0809デフォルトの名無しさん2006/12/01(金) 22:38:32
>>806
return の変わりに条件判定とprintf文を書けば良いだけでないの?
0810デフォルトの名無しさん2006/12/02(土) 00:23:33
[1] 授業単元:Cプログラミング演習
[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
>>803
#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]);
}
}
08127152006/12/02(土) 00:49:31
>>718
レス遅くなってスミマセン。ありがとうございました!
0813デフォルトの名無しさん2006/12/02(土) 01:22:03
>>803
int 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:13
shuffle
0816デフォルトの名無しさん2006/12/02(土) 05:25:56
>>803
int 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
>813
なんか色々とおかしくない?
08188132006/12/02(土) 06:26:50
おかしいね
何も見ずに書き込んだらやっぱだめだね
0819デフォルトの名無しさん2006/12/02(土) 07:34:43
>>810
コンパイルはしてないけどな。あと、データ読むところは書いてない。

#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:00
パスカルの法則で
1
11
121
1331
14641
のように出力されるようにするにはどのように作ればいいですか。
0821デフォルトの名無しさん2006/12/02(土) 11:33:54
>>820
どのようにって

・n段目の左からm番目の数字が(n-1)段目の(m-1)番目とm番目の数字和 (n>=3, 2<=m<=n-1)
・n段目の左端(m=1)と右端(m=n)の数字が1

になるように作ればいいと思うよ
08227012006/12/02(土) 12:06:39
>>707
>>744
ありがとうございます。なにしろC言語を習い始めて
まだ二ヶ月もたってない初心者なもので・・

0823デフォルトの名無しさん2006/12/02(土) 12:08:30
1年なら普通だろ
0824デフォルトの名無しさん2006/12/02(土) 12:12:51
二ヶ月やって>>701ができないなら、これからの課題も全部ここに丸投げだな
0825デフォルトの名無しさん2006/12/02(土) 12:22:34
へへん。
プログラミングだけが人生じゃないさ。
難問奇問な宿題はさっさと丸投げして人生を楽しもう。
0826デフォルトの名無しさん2006/12/02(土) 13:56:03
プログラマを顎で使って今までごめんなさい orz
自分で勉強してみて難しさが分かりました orz
これからは期限守らなくても大目に見ますね。
0827デフォルトの名無しさん2006/12/02(土) 14:01:12
>>826
当たり前だカス
0828デフォルトの名無しさん2006/12/02(土) 14:15:57
>>827
ニートは黙ってろ
0829デフォルトの名無しさん2006/12/02(土) 14:34:35
>810
多分題意に反すると思うけど
#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:52
#define N 5 →#define N 50
0831デフォルトの名無しさん2006/12/02(土) 15:26:00
796の問題難しくないですか?
0832デフォルトの名無しさん2006/12/02(土) 15:27:09
796の問題難しくないですよ!
0833デフォルトの名無しさん2006/12/02(土) 15:33:04
難しくは無いがめんどくさい
inputfile : ソートするデータが入ったファイルの名前.
      ファイル中のデータの並べ方は問わない.データ数は1000個です
outputfile : ソート後のデータを出力するファイルの名前
      ファイル中のデータの並べ方は,inputfileと同じにすること.

これを見る限り区切り文字がスペースだろうとコンマだろうと改行記号だろうと
対応しなくてはならないようだ
どうも質問者は分かってなかったみたいだが

とりあえず関数は全部書いたけどmain作るのがめんどくさくて絶賛放置中
0834デフォルトの名無しさん2006/12/02(土) 15:47:12
区切り文字はスペースで統一するらしいです。さきほど先生にうかがいました
08358322006/12/02(土) 15:49:09
833さん、頭いいですね!
0836デフォルトの名無しさん2006/12/02(土) 15:49:58
>>834
>ファイル中のデータの並べ方は,inputfileと同じにすること.
じゃあこれは何を意味するの?
あとファイル内のデータは数値?文字列?
0837デフォルトの名無しさん2006/12/02(土) 15:54:19
あと比較回数を表示することってあるけど軸選びに使う比較も回数に含めるの?
0838デフォルトの名無しさん2006/12/02(土) 16:01:26
それは含めないらしいです。あとファイル中のデータの並べ方は,inputfileと同じにすること.
ていうのは、inputfileに入っているデータと同じ数字が入っているならいいらしいです。あとファイル内のデータは数字です
0839デフォルトの名無しさん2006/12/02(土) 16:15:32
あと何を伝えて無いんだ?
0840デフォルトの名無しさん2006/12/02(土) 16:19:08
これで全部伝えました。遅くなってすみませんでした
0841デフォルトの名無しさん2006/12/02(土) 16:19:50
そうか。では先生をここに呼んで来い。
0842デフォルトの名無しさん2006/12/02(土) 16:27:22
すみません。先生はもういないです
0843デフォルトの名無しさん2006/12/02(土) 16:32:17
泣いた
0844デフォルトの名無しさん2006/12/02(土) 16:34:27
自分はC言語が苦手で796の問題がぜんぜんわからないのでぜひお願いします
0845デフォルトの名無しさん2006/12/02(土) 16:38:25
[1] 授業単元: プログラミング
[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
>>845
またお前か
0847デフォルトの名無しさん2006/12/02(土) 17:26:51
>>796
今からやるから期待しないで待ってろ
21時までに書き込み無かったら俺からの回答は諦めろ
08488312006/12/02(土) 17:38:22
833さん、僕も今さっき関数ができたんですけどmainがどうしてもできません。
できそうですか?
0849デフォルトの名無しさん2006/12/02(土) 17:38:58
847さん、ぜひお願いします
0850デフォルトの名無しさん2006/12/02(土) 17:43:49
>>848
その関数を晒してもらおうか
■ このスレッドは過去ログ倉庫に格納されています