C/C++の宿題を片付けます 100
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/11/22(木) 03:01:54【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう.
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 99代目
http://pc11.2ch.net/test/read.cgi/tech/1194262698/
0002デフォルトの名無しさん
2007/11/22(木) 03:06:39l三 r=ミ''‐--‐';二,_ ̄ ,三三三彡彡l_
lミ′  ̄ ー-'" '=ミニ彡彡/‐、ヽ
l;l ,_-‐ 、 __,,.. - 、 彡彡彳、.//
_______∧,、_‖ `之ヽ、, i l´ _,ィ辷ァ-、、 彡彡'r ノ/_ ______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄'`'` ̄ 1  ̄フ/l l::. ヽこ~ ̄ 彡彳~´/  ̄ ̄ ̄ ̄ ̄ ̄
ヽ ´ :l .l:::. 彡ィ-‐'′
ゝ、 / :. :r-、 彡′
/ ィ:ヘ `ヽ:__,ィ='´ 彡;ヽ、
_,,..-‐'7 /:::::::ヽ _: :_ ヽ ィ´.}::ヽ ヽ、
_,-‐'´ { ヽ:::::::::ヘ `'ー===ー-- ' /ノ /::::::ヘ, ヽー、
0003デフォルトの名無しさん
2007/11/22(木) 03:13:280004デフォルトの名無しさん
2007/11/22(木) 05:21:43#!/usr/bin/env ruby
def to_rpol(s)
a = s.reverse.split
a.each_with_index do |e, i|
if e == "("
a[i + 0] = sprintf("%s %s %s", a[i - 3], a[i - 1], a[i - 2])
a[i - 1] = nil; a[i - 2] = nil; a[i - 3] = nil; a[i - 4] = nil
end
end
a.compact!
a.each_with_index do |e, i|
if e == "*" || e == "/"
a[i + 1] = sprintf("%s %s %s", a[i - 1], a[i + 1], e)
a[i + 0] = nil; a[i - 1] = nil
end
end
a.compact!
a.each_with_index do |e, i|
if e == "+" || e == "-"
a[i + 1] = sprintf("%s %s %s", a[i - 1], a[i + 1], e)
a[i + 0] = nil; a[i - 1] = nil
end
end
a.compact!
return a.to_s
end
puts to_rpol("( 5 - 4 ) / 3 + 2 * 1")
0005デフォルトの名無しさん
2007/11/22(木) 08:36:21[2] 問題文(含コード&リンク): 名前と点数を格納するデータ部を持つ自己参照型構造体を定義し、
線形リストを実装しなさい。
・構造体の名前は struct grade とし、新たに glist 型として定義する。
・構造体のメンバは、char name[40]、int score、及びポインタnext。
・ノードは3つ作成し、それぞれキーボードからデータを入力する。
・ポインタに値を代入し、ヘッダhdと3つのノードの間を繋ぐ。
・読み出し用のポインタpを使って、リストのデータを順に画面に出力する。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: c
[4] 期限: 11/23まで
[5] その他の制限: #defineは、なしで
0006デフォルトの名無しさん
2007/11/22(木) 09:09:490007デフォルトの名無しさん
2007/11/22(木) 09:18:041つの状態で3つの数値を確保して比較して値を出してその状態の値みたいな
プログラムのほうがいいかもしれません。
[1] 授業単元:確率論
[2] 問題文(含コード&リンク):
前に>>246で宿題をださせていただきました。
これを対数で計算できるように変更していただきたいんですが。
正しい値がでるプログラム(前につくってもらった)
と今つくってるプログラムと2つのせました。
この前5回くらいの移動までの数値があってるからそのあとはいいかとおもって
できたとおもってたんですけど、7回目くらいから同じ値でとまってしまって。
図はこれです http://www.borujoa.org/upload/source/upload15106.jpg
以前つくってもらったプログラムの値をlogでだしてみたプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5311.c
移動確率を対数でだして計算していったプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5312.c
logの計算途中で-infとかnanとかでてくるので
それを調べるためにprintf文大量に使ってますけど みにくかったら消してください。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: c
[4] 期限: 23日おわるくらいまでには
[5] その他の制限: 特になし
0008デフォルトの名無しさん
2007/11/22(木) 09:47:45#include<stdio.h>
typedef struct grade{
char name[40];
int score;
struct grade *next;
}glist;
void kadai13()
{
glist a,b,*hd,*p;
hd = &a;
a.next = &b;
b.next = NULL;
sprintf(a.name,"dummy");
a.score = -1;
sprintf(b.name,"tsubasa");
b.score = 60;
p = hd;
while(p!=NULL){
printf("p->name \t%s\n", p->name);
printf("p->score\t%d\n", p->score);
printf("p->next \t%p\n", p->next);
p = p->next;
}
return 0;
}
これを改良お願いします。
0009デフォルトの名無しさん
2007/11/22(木) 10:12:35char s1[100] = "asdfghjklmarik";/*検索対象*/
char *s2 = "mariko";
char *p1 = s1;
char *p2 = s2;
while(*p1 == '\0' || *p2 == '\0'){
if(*p1 == *p2){
p1++;
p2++;
}else{
p1 = p1 - (p2 - s2 - 1);
p2 = s2;
}
}
if(*p2 == '\0') /*有*/;
else /*無*/;
0010デフォルトの名無しさん
2007/11/22(木) 10:36:59PCを使っていろいろやるのは好きなんだけど、
なにせスキルは皆無。
とりあえずC、VB、C++辺りを勉強することになった。
今はVC++を勉強しようとしてるんだけど、
初心者にお勧めなサイトとかあったら教えてほしい。
Cはかなり簡単なプログラミング(scanfとかprintfとかしか使わない程度)
しかやってない。
VBも基礎用の参考書をやった程度。
0011デフォルトの名無しさん
2007/11/22(木) 10:58:02会社で聞け。つかスレ違い
0012デフォルトの名無しさん
2007/11/22(木) 11:27:36会社で聞ければいいんだけどね。
社長以外は出向してるし、社長はソフト関係できないから。
ググっても大体Cの知識ないとダメだったし。
質問スレが見当たらなかったわけだが。
0013デフォルトの名無しさん
2007/11/22(木) 11:37:530014デフォルトの名無しさん
2007/11/22(木) 11:50:11そんなことより100おめ。
0015デフォルトの名無しさん
2007/11/22(木) 13:20:00[2] 問題文(含コード&リンク):0〜100点までの点数を乱数によって10個表示させるプログラムを作りなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:ming-bit(曖昧…)
[3.3] 言語:C++
[4] 期限:2007年11月28日12時まで
[5] その他の制限:本当に基礎的な事しかやってないので…出来れば簡単なプログラムでお願いします。
0016デフォルトの名無しさん
2007/11/22(木) 15:37:38[2] 問題文(含コード&リンク):
5人分の身長から、平均と最高と最低を求めるプログラムを作りなさい
キーボードから5人分の身長を入力する。
平均、最高、最低を表示する。
平均は、小数点第1位まで表示する。
入力処理途中で「-1」が入力されたら処理を中断し、それまでの入力済みデータを元にして以降の処理を行う。
<実行例>
身長を入力してください。
1人目は?: 165
2人目は?: 143
3人目は?: 149
4人目は?: -1
− 結果 −
平均: 152.3 cm
最高: 165 cm
最低: 143 cm
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C言語
[4] 期限:2007年11月26日13:00まで
[5] その他の制限:
テキスト「新訂 新C言語入門(ビギナー編)」の第8章(ポインタ)までやりました。
�@ 5人分の身長を格納する配列を利用すること
例) int sinchou[5];
�A 次の3つのユーザ関数を作成し、利用すること
・平均を求める関数
・最高を求める関数
・最低を求める関数
001716
2007/11/22(木) 15:42:17#include<stdio.h>
double ave (int x[],int y);
void max (int x[],int y);
void min (int x[],int y);
int main (void)
{
int i,sinchou[5];
double avdt;
printf ("身長を入力してください。\n");
for (i=0;i<5;i++){
printf("%d人目は?:",i+1);
scanf("%d",&sinchou[i]);
if (sinchou[i] == -1) break;
}
avdt = ave (sinchou,i+1);
printf("平均:%.1fcm\n",avdt);
max (sinchou,i+1);
min (sinchou,i+1);
return 0;
}
001816
2007/11/22(木) 15:42:48{
int i;
int a=0;
for (i=0;i<y;i++){
a += x[y];
}
return a/y;
}
void max (int x[],int y)
{
int i,max=x[0];
for (i=0;i<y;i++){
if (max<x[i]){
max=x[i];
}
}
printf("最高:%d点\n",max);
return;
}
void min (int x[],int y)
{
int i,min=x[0];
for (i=0;i<y;i++){
if (min>x[i]){
min=x[i];
}
}
printf("最低:%d点\n",min);
return;
}
001916
2007/11/22(木) 15:45:06NTVDM CPU は不正命令を検出しました。
と出てしまいます。
どうかお願いします。
0020>>16
2007/11/22(木) 16:41:46double ave (int x[],int y);
void max (int x[],int y);
void min (int x[],int y);
int main (void)
{
int i,sinchou[5];
double avdt;
printf ("身長を入力してください。\n");
for (i=0;i<5;i++){
printf("%d人目は?:",i+1);
scanf("%d",&sinchou[i]);
if (sinchou[i] == -1) break;
}
avdt = ave (sinchou,i);
printf("平均:%.1fcm\n",avdt);
max (sinchou,i);
min (sinchou,i);
return 0;
}
0021>>16
2007/11/22(木) 16:44:48{
int i;
int a=0;
for (i=0;i<y;i++){ a += x[i]; }
return a/y;
}
void max (int x[],int y)
{
int i,max=*x;
for (i=0;i<y;i++){
if (max<x[i]){ max=x[i]; }
}
printf("最高:%d点\n",max);
}
void min (int x[],int y)
{
int i,min=x[0];
for (i=0;i<y;i++){
if (min>x[i]){ min=x[i]; }
}
printf("最低:%d点\n",min);
}
0022デフォルトの名無しさん
2007/11/22(木) 17:18:59#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i;
srand(time(NULL));
for(i =0; i<10; i++)
printf("%d\n", (int)(rand * 100));
}
0023デフォルトの名無しさん
2007/11/22(木) 17:19:11[2] 問題文(含コード&リンク):
各節点がkey,leftchild,rightchildの値とポインタを保持する二分木において、
根のポインタを受け取り、全ての節点のkeyを表示するプログラムを作れ。節点の数はnとする
再帰を使う事、同じ節点のkeyを2回表示する事、定数個以上のメモリを使う事を禁止する
また、その実行時間はnの定数倍で抑えられなければならない
[3] 環境
[3.1] OS: win
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:無期限
[5] その他の制限: なし
お願いします
0024デフォルトの名無しさん
2007/11/22(木) 17:45:34[2] 問題文(含コード&リンク):
各教科名と点数を入力し、点数の大きい順に教科名と点数をソートして表示させなさい。
#include<stdio.h>
void main(){
char kyouka[20][10];
int tensu[20],aa,m,n,k;
printf("教科の数:");
scanf("%d",&n);
for(k=0;k<n;k++){
printf("科目名:");
scanf("%s",&kyouka[k]);
printf("点数:");
scanf("%d",&tensu[k]);
}
for(k=0;k<n;k++){
tensu[k]=0;
}
for(m=n;m>1;m--){
for(k=0;k<m;k++){
if(tensu[k]<tensu[k+1]){
aa=tensu[k];
tensu[k]=tensu[k+1];
tensu[k+1]=aa;
}
}
}
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C++
[4] 期限: 2007年11月23日
文字配列のソートがわかりません。初心者ですがよろしくおねがいします
0025デフォルトの名無しさん
2007/11/22(木) 21:31:08Cだけど
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5304.txt
前スレと同じ授業のやつか?
0026デフォルトの名無しさん
2007/11/22(木) 23:26:38[2] 問題文(含コード&リンク):最大20桁の整数を5つ入力させ、int型配列にそれぞれ格納。入力終了後
5つの数値の和を求め出力する。なお、20桁までを有効とし21桁以降は無視。負の数、整数以外
改行のみの場合はそれぞれエラー表示をし、終了する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C
[4] 期限: 11月23日09:00まで
前スレでも質問させていただきましたが、ご回答がなかったので改めて質問させて
いただきます。参考書を読んでも自力で出来ないので、わかる方はご回答よろしくお願いします。
0027デフォルトの名無しさん
2007/11/22(木) 23:32:32すいません。記入し忘れましたが前スレと同じです。
CはまったくわからないのでC++でおねがいできませんか?
0028デフォルトの名無しさん
2007/11/22(木) 23:55:41>>24の例がC++じゃなくてCなんだけれど。
0029デフォルトの名無しさん
2007/11/23(金) 00:49:59[2] 問題文(含コード&リンク):2変数非線形連立方程式の解を求めるnewton-rapson法のプログラムを作成し以下の問題を解け
�@x^2+y^2-8=0 と x+y=0 で初期点(x(x0),y(y0))∈[-4,-4]×[4,4]を10000個とり、初期点に対する収束値の関係を2次元で図示する。
収束値の関係の座標を出すこと。
�Ax^3-3xy^2-8=0 と x^3-3x^2y=0 で初期点(x(x0),y(y0))∈[-1/2,-1/2]×[1/2,1/2]を10000個以上(百万個程度を推奨する)とり、初期点に対する収束値の関係を2次元で図示する。
収束値の関係の座標を出すこと。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2007年11月25日23:00まで]
[5]その他:^は累乗を示します。たとえば、x*x=x^2です。
2問ありますが、一問だけでもといていただけると助かります。2変数ということで手も足もでません、、、
よろしくお願いします。
0030デフォルトの名無しさん
2007/11/23(金) 00:51:12演算子をオーバーロードしてるからその辺の関数を理解できないって事?
0031デフォルトの名無しさん
2007/11/23(金) 02:48:28>わかる方は
と書いてあるから、わからないながらも色々試行錯誤して作った俺は回答する資格無いな。
0032デフォルトの名無しさん
2007/11/23(金) 03:27:36ってか基本的に、CであればC++でもある。
C++でコンパイルすればいいじゃん。
0033デフォルトの名無しさん
2007/11/23(金) 03:38:200034デフォルトの名無しさん
2007/11/23(金) 04:05:20#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i , j , k;
int ans[21],tasusuji[5][20],tmp;
int ketasu[5],saidaiketa=0;
char input[50];
0035デフォルトの名無しさん
2007/11/23(金) 04:06:53for(i=0;i<5;i++){
printf("%dつ目の数字入力>",i+1);
scanf("%s",input);
for(j=1;;j++){
if(input[j]=='\0'){
ketasu[i]=j;
if(j>20){ketasu[i]=20;} //20ケタ以降切り捨て処理
if(ketasu[i]>saidaiketa){saidaiketa=ketasu[i];}
for(k=19,j=j-1;k>=20-ketasu[i];k--,j--){
if(input[j]<48 || input[j]>58){
printf("Error\n");
printf("\n\n何かキーを押してください\n");
scanf("%s",input);
return 1;
}
tasusuji[i][k]=(int)input[j]-48;
}
break;
}
}
}
0036デフォルトの名無しさん
2007/11/23(金) 04:07:42for(j=19;j>=20-ketasu[i];j--){ans[j+1]+=tasusuji[i][j];}
for(j=19;j>=20-saidaiketa;j--){ //繰り上げ処理
if(ans[j+1]>9){
tmp=ans[j+1];
ans[j+1]=tmp%10;
ans[j]=tmp/10+ans[j];
}
}
}
printf("\n");
for(i=0;i<5;i++){
if(i==4){ printf("+)"); }
for(j=0;j<25-ketasu[i];j++){
if(i==4 && j==0){j+=4;}
printf(" ");
}
for(k=20-ketasu[i];k<20;k++){
printf("%d",tasusuji[i][k]);
}
printf("\n");
}
printf(" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n");
0037デフォルトの名無しさん
2007/11/23(金) 04:08:49if(ans[20-saidaiketa]==0){printf(" ");}
for(i=20-saidaiketa;i<21;i++){
if(i==20-saidaiketa && ans[i]==0){i++;}
printf("%d",ans[i]);
}
printf("\n\n何かキーを押してください\n");
scanf("%s",input);
return 0;
}
0038デフォルトの名無しさん
2007/11/23(金) 04:53:44前スレで出させてもらったのですがスルーされましたのでもう一度お願いします。
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5291.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C++
[4] 期限: 11/25 〜10:00
[5] その他の制限: 特になし
よろしくお願いします。
0039デフォルトの名無しさん
2007/11/23(金) 12:38:02なんつーか問題に不備がたくさんあってやりにくいんだよね。
いちいち指摘するのも面倒なくらいに細かなところが不明瞭。
本当にこんな問題が出てるのなら、教官を捨てていいと思う。
0040デフォルトの名無しさん
2007/11/23(金) 12:38:28[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5307.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 11/25
[5] その他の制限: 特になし
0041デフォルトの名無しさん
2007/11/23(金) 12:44:33FletzHikariクラスはFletzAdslクラスを継承するような図に見えるんだけど
クラスの概要って所ではProviderクラスを継承するような文書に読めるし
どっちなんだろ?
0042デフォルトの名無しさん
2007/11/23(金) 12:55:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5318.c
0043デフォルトの名無しさん
2007/11/23(金) 13:12:19メモリの制約が、かなり厳しいね。
二分木を格納するために O(n) が必要だから
「定数個以上のメモリ」という制限は、普通は達成不能。
木以外の空間が O(1) と解釈しても普通は無理で、
再帰を使うと再帰の深さが木の深さと同じくらいになるから
スタック上に O(木の深さ) くらいの空間が必要になる。
俺は、この二分木の表現では O(1) の空間は不可能だと思う。
004443
2007/11/23(金) 13:17:17それでもスタック長が普通は O(木の深さ) になるから、普通は無理。
0045デフォルトの名無しさん
2007/11/23(金) 13:33:37[2] 問題文(含コード&リンク):
文字列 s[0], s[1], ..., s[n-1] が与えられる。
これらをすべて含むような最短の文字列を一つ求めよ。
例:s[0] = "abc", s[1] = "bcd" → "abcd"
s[0] = "abc", s[1] = "ac" → "abcac"
s[0] = "abc", s[1] = "cab" → "cabc"
[3] 環境
[3.1] OS:Windows (Cygwin)
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C/C++ どちらでもよし
[4] 期限: 2007/11/25 まで
[5] その他の制限:とくになし
0046デフォルトの名無しさん
2007/11/23(金) 13:41:59すみません、二分木の表現のメモリは無視して構いません。
宿題でなく研究レベルの問題だと言われて出されたんですが、手も足も出ない状態です
メモリ使用量をO(lgn)で抑えることはできるんですが・・・
0047デフォルトの名無しさん
2007/11/23(金) 13:49:42[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5320.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5
[3.3] 言語: C++
[4] 期限: 11/25 24時
[5] その他の制限:
僕には難しいので誰かよろしくお願いします。
0048デフォルトの名無しさん
2007/11/23(金) 14:07:50[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5319.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C
[4] 期限: 11/27
[5] その他の制限: 特になし
0049デフォルトの名無しさん
2007/11/23(金) 14:35:02表示順序や二分木表現を書き換えてはいけない、という制限が
無いので木を O(1) 空間でリストに変形すればいい。
void show(node *root) {
node *tail = root;
while (root) {
printf("%d ", root->key);
while (tail->leftchild)
tail = tail->leftchild;
tail->leftchild = root->rightchild;
root = root->leftchild;
}
}
0050デフォルトの名無しさん
2007/11/23(金) 14:44:51#define USER 50 /* 登録可能ユーザ数 */
#define NAME 100 /* ユーザ名の最大長 */
int main() {
int users; /* 登録されたユーザ数 */
char *user_list[USER]; /* ユーザ名のリスト */
/* ここにプログラムを書く */
char work1[NAME], work2[NAME];
int i;
printf("何名登録しますか?");
scanf("%d", &users);
for (i = 0; i < users; ++i) {
printf("ユーザNo.%d 苗字:");
user_list[i] = (char *)malloc(NAME*sizeof(char));
scanf("%s", work1);
printf("ユーザNo.%d 名前:");
scanf("%s", work2);
sprintf(user_list[i], "%s %s", work1, work2);
}
printf("登録された内容を表示します。\n");
/* ここまで */
for(i = 0; i < users; i++)
printf("ユーザ[%d]:<%s>\n", i, user_list[i]);
}
0051デフォルトの名無しさん
2007/11/23(金) 14:46:58何とか復元してからリターンしようとして頭をひねってた。
0052デフォルトの名無しさん
2007/11/23(金) 14:48:24内容はともかく、日本語が難しくて解読に疲れた。
0053デフォルトの名無しさん
2007/11/23(金) 14:50:15多分出題者の意図からは外れてるだろうな
0054デフォルトの名無しさん
2007/11/23(金) 14:53:46どっちにしても一時的に木を変形する必要はあるけど。
0055デフォルトの名無しさん
2007/11/23(金) 14:57:41あと十分大きな値を足しておくとかでも大丈夫。
まあ計算モデルを仮定しなきゃいけないから綺麗じゃないが。
0056デフォルトの名無しさん
2007/11/23(金) 15:18:39http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5321.cpp
C++を勉強中の俺がためしに書いてみた
ツッコミ歓迎
0057デフォルトの名無しさん
2007/11/23(金) 15:26:590058デフォルトの名無しさん
2007/11/23(金) 15:27:14いつのC++を使ってるの?VC6かい?
newは失敗するとnothrowバージョンでない限りstd::bad_alloc例外を
返し、NULLとか0は返しません。14882:2003
0059デフォルトの名無しさん
2007/11/23(金) 16:38:03そのコードでは、派生クラスのデスクトラクタが実行されないよ
0060デフォルトの名無しさん
2007/11/23(金) 17:48:39生産管理のアルゴリズムって、5つくらい前のスレにあったやつじゃダメなのか?
006156
2007/11/23(金) 18:09:02抽象クラスの定義方法知った。
newとmallocの違いを知った。
デストラクタをちゃんと記述しないといけないことを知った。
・・・まだまだ勉強が足りないようで
ツッコミありがとう
0062デフォルトの名無しさん
2007/11/23(金) 18:43:13全くもって技術的な話ではないが
virtual double cale(double a){}
は綴りが微妙
0063デフォルトの名無しさん
2007/11/23(金) 18:51:23親頂点に帰れるポインタがあれば、直前にいたポインタと比較することで定数メモリで木を周回できるはずだけど。
直前に親頂点にいたら、左の子供頂点に行く。
直前に左の子供頂点にいたら、自分の key を表示して、右の子供頂点に行く。
直前に右の子供頂点にいたら、親頂点に行く。
あとは親頂点親頂点に戻る方法を考えればいいんだけど。
毎回根から今の頂点を探すってできない気がするんだけど、どうなんだろう?
0064デフォルトの名無しさん
2007/11/23(金) 19:14:40そのままだと各節点を3回ずつ表示してしまう。
0065デフォルトの名無しさん
2007/11/23(金) 19:36:420066デフォルトの名無しさん
2007/11/23(金) 19:50:42[2]問題文:π(=3.14159265)を用いて入力された数値εに対して
次の不等式を満たす最小の自然数Nを求めるプログラム
をつくりなさい。
|(π^2/6)-{(k=1 N)1/k^2}|<ε
[3]環境
[3.1]OS:Unix
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限11/24まで
[5]その他の制限
・配列、数学関数は使ってはいけない
・表示は以下のようにする
εの値が:
最小のNは .
まったくわからないのでどうかお願いいたします。
0067デフォルトの名無しさん
2007/11/23(金) 19:51:15じゃあどうすれば良い?
0068デフォルトの名無しさん
2007/11/23(金) 21:24:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5322.c
貼ってから気付いたけど、なぜか<malloc.h>をincludeしてるので無視してくれ。
ポインタの付け替えで一時的に木を変形する。子が両方ともNULLであるノードを
一時領域として使う。
10万件のランダムテストに合格したから多分合ってる。
0069デフォルトの名無しさん
2007/11/23(金) 21:58:13>>59だが
>デストラクタをちゃんと記述しないといけないことを知った。
~Provider(){} //デストラクタは書いてますやん
俺が言いたかったのは、その書き方が間違いだってことだよ
「知った」ではなくなぜそうなのか理解できてないと、後で苦しむよ
Effective C++ 第3版の7項にきちんと、俺が指摘した理由が説明されている。
図書館で借りるか、本屋で立ち読みしてごらん。
さすがメイヤー先生、初学者が犯しやすい間違いをズバリ書いているので
びっくりした。
偉そうにかいてごめんね、ガンガッテ
0070デフォルトの名無しさん
2007/11/23(金) 22:06:45大ヒント : 仮想関数を持つならばデストラクタは仮想にすべき
0071デフォルトの名無しさん
2007/11/23(金) 22:08:49Javaの @Override アノテーションとかあればいいのにな
0072デフォルトの名無しさん
2007/11/23(金) 22:33:15ttp://pc11.2ch.net/test/read.cgi/tech/1194262698/962
ttp://pc11.2ch.net/test/read.cgi/tech/1194262698/971
0073デフォルトの名無しさん
2007/11/23(金) 22:34:37baseクラスのデストラクタはvirtualにしとけ、でいいじゃん。
0074デフォルトの名無しさん
2007/11/23(金) 22:41:550075 ◆S2Crp49aOM
2007/11/23(金) 22:52:04[2] 問題文(含コード&リンク):
1〜10000の範囲の乱数値を持つ要素数10000の配列から、キーボードで入力した1〜10000値を探索し、
同じ値をもつ配列要素の数を表示するプログラムを二分探索を用いて作成せよ。
[3] 環境
[3.1] O:Linux
[3.3] 言語:C
[4] 期限: 2007年11月24日01:30まで
[5] その他の制限:
0076デフォルトの名無しさん
2007/11/23(金) 23:00:03あと二時間半www
0077デフォルトの名無しさん
2007/11/23(金) 23:15:25[2] 問題文(含コード&リンク):演習10-2
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:.net 2003
[3.3] 言語:C++
[4] 期限:無期限
[5] その他の制限:明解C++で独学しています。単純なクラス作成まで終了。最後の演習問題でつまずいています。
0078デフォルトの名無しさん
2007/11/23(金) 23:15:31こういう鵜呑みにしているヤツに限って肝心な箇所があやふやなんだよなぁ
オレの職場にもこういうヤツが一人いたよ
0079デフォルトの名無しさん
2007/11/23(金) 23:17:04「明解C++」の演習10-2だと思われる。
でも、その本を持っていない人間には問題すら分からない。
0080デフォルトの名無しさん
2007/11/23(金) 23:19:40お前のようなうざい奴はどこにでもいるけどな
[4] 期限: 2007年11月24日11:30まで
打ち間違えました。
申し訳ないです。
0082デフォルトの名無しさん
2007/11/23(金) 23:24:25図星なので○け犬の遠吠え
0083デフォルトの名無しさん
2007/11/23(金) 23:28:060084デフォルトの名無しさん
2007/11/23(金) 23:28:090086デフォルトの名無しさん
2007/11/23(金) 23:34:46問題書く気はないの?
0087デフォルトの名無しさん
2007/11/23(金) 23:35:500088デフォルトの名無しさん
2007/11/23(金) 23:37:580089デフォルトの名無しさん
2007/11/23(金) 23:38:190090デフォルトの名無しさん
2007/11/23(金) 23:40:270091デフォルトの名無しさん
2007/11/23(金) 23:40:55著者人格権はあるけど学校の課題なんだkら複製権くらいあるだろ
0092デフォルトの名無しさん
2007/11/23(金) 23:42:16クラスDate第2版に抽出子を追加せよ。
問題の意味もいまいちわからなくて考えられることは
1.抽出子の定義(演算子>>の多重定義)を使用してDateオブジェクトを作成する。
2.抽出子の定義(演算子>>の多重定義)を使用してDateオブジェクトの内容を変更する。
だと思います。
しかし、わたしにはどちらであっても解答がわかりません。
クラスDate第2版ソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5323.txt
0093デフォルトの名無しさん
2007/11/23(金) 23:42:500094デフォルトの名無しさん
2007/11/23(金) 23:44:050096デフォルトの名無しさん
2007/11/24(土) 00:48:36学校の課題なら特別扱いされるという根拠は?
0097デフォルトの名無しさん
2007/11/24(土) 00:52:40先生=著者
0098デフォルトの名無しさん
2007/11/24(土) 00:58:290099デフォルトの名無しさん
2007/11/24(土) 00:59:030100デフォルトの名無しさん
2007/11/24(土) 00:59:42プログラミングに関係の深い法律だぞ
0101デフォルトの名無しさん
2007/11/24(土) 00:59:43█ ████████▆
█ ████████
▃▂ ▓▓▓▓▓▓▓▓▓
▀██▇███████████▇▅
▼▀█▀██▀▀▀▀■█■▀
▍ ▋ ▲▃ ▀▅▃▌ ▌▌
▐◣ ▐▂▅▀ ▀▅▃▀█ ▍▍
▐▃▀▂▃◢◤ ◥◣▃▂▌ ▎▌
◥▋ ▐◥▃▆◤ ◥▃▆◤▍ ▋
▊ ▐◣ ◢▌ ▼
◢▀▌▀◣ ▆▅ ▃▲ ▋
▼ ▀▇◣▃◢▇▀ ▼
▂▃◢◤▀ ▃▅▃▅▃▅
▐▲▃ ▅▀ ▌▌ ▀█
◢████▅▀▅▀▋▐▅▀▼
▅█████ ▊ ▊ ▌
0102デフォルトの名無しさん
2007/11/24(土) 01:00:30先生が著作者だから実質的な問題は発生しないと言いたいわけか
複製権関係ねぇ
0103デフォルトの名無しさん
2007/11/24(土) 01:08:01参考にさせていただきます。
ありがとうございました。
0104デフォルトの名無しさん
2007/11/24(土) 01:39:300105デフォルトの名無しさん
2007/11/24(土) 01:47:470106デフォルトの名無しさん
2007/11/24(土) 01:56:19ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5324.c
0107デフォルトの名無しさん
2007/11/24(土) 01:59:13小学校の教科書だか教材に使われてた詩が、著作権者がクレームつけて使えなくなったって話は聞いたことがあるけど。
0108デフォルトの名無しさん
2007/11/24(土) 02:12:50それは三十三条のことか?
0109デフォルトの名無しさん
2007/11/24(土) 03:00:430110デフォルトの名無しさん
2007/11/24(土) 03:03:260111デフォルトの名無しさん
2007/11/24(土) 03:26:560112デフォルトの名無しさん
2007/11/24(土) 04:05:520113デフォルトの名無しさん
2007/11/24(土) 11:12:58>>95
少し、もちつけ
コードだけ貼って、問題が全然ナイジャマイカ
モマイの貼った↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5323.txt
これを、どうしろというんだ?
エスパー君だったら分かるのかな?
漏れには全然理解できん
0114デフォルトの名無しさん
2007/11/24(土) 13:43:11エスパー
ostream& operator<<(ostream& s, const Date& x);
を
ostream& operator<<(ostream& s, const Date& x){s << x.Year() << x.Month() << x.Day();return s;}
こう?
0115デフォルトの名無しさん
2007/11/24(土) 14:52:56[2] 問題文:CD−Rは1枚〜10枚で1枚が100円、11枚から100枚で1枚が90円、101枚以上で1枚が70円とする。
枚数nに対する金額を計算するプログラムを作成しなさい。終了時にはCtrl+Z(Enter)と入力する。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン:Fujitsu Fortran & C
[3.3] 言語: C
[4] 期限: 11/24
[5] その他の制限: なし
どうかよろしくお願いします。
0116デフォルトの名無しさん
2007/11/24(土) 15:07:13[2] 問題文(含コード&リンク):2変数非線形連立方程式の解を求めるnewton-rapson法のプログラムを作成し以下の問題を解け
�@x^2+y^2-8=0 と x+y=0 で初期点(x(x0),y(y0))∈[-4,-4]×[4,4]を10000個とり、初期点に対する収束値の関係を2次元で図示する。
収束値の関係の座標を出すこと。
�Ax^3-3xy^2-8=0 と x^3-3x^2y=0 で初期点(x(x0),y(y0))∈[-1/2,-1/2]×[1/2,1/2]を10000個以上(百万個程度を推奨する)とり、初期点に対する収束値の関係を2次元で図示する。
収束値の関係の座標を出すこと。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2007年11月25日23:00まで]
[5]その他:^は累乗を示します。たとえば、x*x=x^2です。
2問ありますが、一問だけでもといていただけると助かります。2変数ということで手も足もでません、、、
よろしくお願いします。
0117デフォルトの名無しさん
2007/11/24(土) 15:27:56#include <stdio.h>
int main()
{
int i,n,price,pricelist[]={1,10,100, 11,100,90, 101,2147483647, 70};
while (scanf("%d", &n) != EOF)
{
for (i=0 ; i<3 ; i++)
{
if (pricelist[i*3]<=n && pricelist[i*3+1]>=n)
{
price=pricelist[i*3+2]*n;
printf("%d円\n", price);
}
}
}
return 0;
}
0118デフォルトの名無しさん
2007/11/24(土) 16:07:51ありがとうございます。
やってみます。
0119デフォルトの名無しさん
2007/11/24(土) 17:11:28[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5325.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C++
[4] 期限: 11/26 〜10:00
[5] その他の制限: 特になし
よろしくお願いします。
0120デフォルトの名無しさん
2007/11/24(土) 17:24:42ぎりぎり間に合いました。本当にありがとうございます。
0121デフォルトの名無しさん
2007/11/24(土) 20:02:02>>22じゃないけど
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i;
srand(time(NULL));
for(i =0; i<10; i++)
printf("%d\n", (int)(rand()%100));
}
0122デフォルトの名無しさん
2007/11/24(土) 23:17:48当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5326.txt
0123デフォルトの名無しさん
2007/11/25(日) 00:28:38ここまで問題を無視できるのもすばらしい.
0124デフォルトの名無しさん
2007/11/25(日) 00:46:51これだな
012526
2007/11/25(日) 01:02:17ありがとうございました。
0127デフォルトの名無しさん
2007/11/25(日) 01:57:17#include <stdio.h>
typedef struct grade{
char name[40];
int score;
struct grade *next;
}glist;
int main(void){
glist header={"", 0, NULL}, node[3], *p;
int i;
p = &header;
for(i=0; i<3; i++){
printf("name->");
scanf("%s", node[i].name);
printf("score->");
scanf("%d", &node[i].score);
node[i].next = NULL;
p->next = &node[i];
p = p->next;
}
p = header.next;
while(p != NULL){
printf("p->name \t%s\n", p->name);
printf("p->score\t%d\n", p->score);
printf("p->next \t%p\n", p->next);
p = p->next;
}
return 0;
}
0128デフォルトの名無しさん
2007/11/25(日) 02:51:10[2]あるファイル(※)を読み込み、数列の中の0の個数と1の個数、
数列の周期を求めるプログラムを作成せよ。
※ファイルの中身は0と1の文字が約20万文字と、改行文字\nで終わるものである。
文字列を01の数列としてみたとき、2周期以上の周期系列となっているのがわかっている。
ファイルに保存されている数字は文字として保存されているので、-'0'をして文字から数字に変換すること。
ファイル名は任意(○○.dat)でよい。
[3] 環境
[3.1]Windows XP
[3.2]gcc
[3.3]C
[4] 2007年11月26日(月)12:00まで
[5] 0と1が書いてあるファイルを用意できないのですが出来ますでしょうか?
よろしくお願いいたします。
0129デフォルトの名無しさん
2007/11/25(日) 05:38:26ありがとうございます
ですが、ええええ!?
0130デフォルトの名無しさん
2007/11/25(日) 05:52:163,4個でいいから、入力データの性質を簡単に全て現したサンプルくらい書けるだろ
かけなきゃまずは問題を理解してここに投下しろ
0131デフォルトの名無しさん
2007/11/25(日) 07:54:28まずファイルをてきとーに作る
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define SIZE 20*10000
#define WAVLEN_MAX 10000
int main()
{
int p,t,i,m,n,s=SIZE;
char *buf,fname[]="test.dat";
FILE *fp;
srand(time(NULL));
t = (double)rand()/(RAND_MAX+1)*WAVLEN_MAX+1;
p = (double)rand()/(RAND_MAX+1)*t;
buf = (char*)malloc(t);
m=0;for(i=0;i<t;i++){buf[i] = rand()&1;m+=buf[i];}
if((fp=fopen(fname,"wt"))==NULL)exit(1);
n=0;for(i=0;i<s;i++){fprintf(fp,"%d",buf[(p+i)%t]);n+=buf[(p+i)%t];}
fprintf(fp,"\n");
fclose(fp);
free(buf);
printf("Total = %d (0:%d 1:%d) / T = %d (0:%d 1:%d)\n",s,s-n,n,t,t-m,m,p);
return 0;
}
0132131
2007/11/25(日) 08:01:02次に作ったファイルを読み込んで処理する
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
long s,t,i,m,n,*tbl;
char *buf,fname[]="test.dat";
FILE *fp;
if((fp=fopen(fname,"rt"))==NULL)exit(1);
fseek(fp,0,SEEK_END);s=ftell(fp);fseek(fp,0,SEEK_SET);
if((buf=(char*)malloc(s))==NULL)exit(1);
for(s=0;(m=fgetc(fp))>='0';s++)
buf[s]=m-'0';
fclose(fp);
tbl=(long*)malloc(s/2*sizeof(long));
tbl[0]=tbl[1]=0;
for(t=2;t<s/2;t++){
tbl[t]=0;
for(i=t;i<s-t;i++)
tbl[t]+=buf[i] & buf[i+t];
}
n=0;for(i=0;i<s;i++)n+=buf[i];
m=0;for(i=0;i<s/2;i++)if(tbl[i]>m){m=tbl[i];t=i;}
m=0;for(i=t;i<t*2;i++)m+=buf[i];
free(tbl);free(buf);
printf("Total = %d (0:%d 1:%d) / T = %d (0:%d 1:%d)\n",s,s-n,n,t,t-m,m);
return 0;
}
0133デフォルトの名無しさん
2007/11/25(日) 09:50:24#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct grade
{
char name[40];
int score;
struct grade *next;
} glist;
glist *cons(glist car, glist *cdr)
{
glist *l;
if( (l = malloc(sizeof(glist))) == NULL ) exit( EXIT_FAILURE );
sprintf(l->name, car.name);
l->score = car.score;
l->next = cdr;
return l;
}
void printList(glist *ptr)
{
if(ptr == NULL) return;
printf("p->name \t%s\n", ptr->name);
printf("p->score\t%d\n", ptr->score);
printf("p->next \t%p\n", ptr->next);
printList(ptr->next);
return;
}
0134デフォルトの名無しさん
2007/11/25(日) 09:51:38int main(void)
{
glist a,b;
glist *ptr;
sprintf(a.name, "dummy");
a.score = -1;
sprintf(b.name, "tsubasa");
b.score = 60;
ptr = cons(b, NULL);
ptr = cons(a, ptr);
printList(ptr);
return 0;
}
0135128
2007/11/25(日) 11:00:53よく読みなおしたら日本語おかしかった。ごめんなさい。
ファイルはもう.datファイルであるんですが、そこから0と1の数を数えて、
周期探し出すのがわからんのです。
お手数おかけしてすいません。
0136デフォルトの名無しさん
2007/11/25(日) 11:26:280137デフォルトの名無しさん
2007/11/25(日) 11:30:02圧縮したら対してサイズおおきくならないからうp
0138デフォルトの名無しさん
2007/11/25(日) 11:51:20[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5327.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 11/26
[5] その他の制限: 特になし
0139デフォルトの名無しさん
2007/11/25(日) 12:29:50なんであだちゆみ?
0140デフォルトの名無しさん
2007/11/25(日) 12:31:40[2] 問題文(含コード&リンク):
直交座標系の2点A, B のx 座標とy 座標をキーボードから入力し,
三角形OAB の面積を求めるプログラムを作成せよ.ただし点O は
原点(0, 0) とする.
点の名前,x 座標,y 座標を構造体のメンバとせよ.
ポインタによる表現を使うこと.
面積を求めるには以下の公式を使うこと.
2点A (x1, y1),B (x2, y2) に対して,三角形の面積S は
S =1/2|x1*y2 - x2*y1|
[3] 環境
[3.1] OS:Unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cのみ
[4] 期限: 2007/11/26 18:00
よろしくお願いします。
0141デフォルトの名無しさん
2007/11/25(日) 12:33:55#include <stdio.h>
#include <string.h>
#define USER 5
#define NAME 100
int main() {
int c,i,found=0;
char m[NAME],n[NAME];
char a_name[USER][NAME]={"Takeuchi Yuko",
"Yada Akiko",
"Ogura Yuko",
"Adachi Yumi",
"Yumi Adachi"}; /* 登録済みのユーザのリスト */
/* ここにプログラムを書く */
while(1){
do{
printf("検索?(Y or N):");
fflush(stdin);
}while((c=getchar())!='y'&&c!='Y'&&c!='n'&&c!='N');
if(c=='n'||c=='N')
break;
printf("名字:");
scanf("%s",m);
printf("名前:");
scanf("%s",n);
0142デフォルトの名無しさん
2007/11/25(日) 12:34:27for(i=0;i<USER;i++){
if(strstr(a_name[i],m)!=NULL&&strstr(a_name[i],n)!=NULL){
printf("Hit! User#%d:[%s]\n",i,a_name[i]);
found++;
}
}
if(found==0)
printf("入力されたユーザは登録されていません。\n");
else
printf("%d件ユーザが見つかりました。\n",found);
found=0;
}
printf("検索を終わります。\n");
return 0;
}
0143デフォルトの名無しさん
2007/11/25(日) 12:35:020144デフォルトの名無しさん
2007/11/25(日) 12:53:33>プログラミング�U
進化したプログラミングか
0145デフォルトの名無しさん
2007/11/25(日) 14:28:59[2] 問題文(含コード&リンク):
素数p.qに対してn=p*qが与えられている。
中国人剰余定理を応用して
任意のCとdに対して、modnでのC^dを求めるプログラムを作成せよ。
ヒント
C^d mod n ≡ (C^d mod p,C^d mod q)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明後日
[5] その他の制限:ポインタは習ってない
お願いします。
0146128
2007/11/25(日) 15:00:08圧縮してupすれば大丈夫でしたね・・・。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5328.zip
この中の0と1の個数と、数列の周期を求めるプログラムをお願いします。
0147コーンポタージュ
2007/11/25(日) 16:21:51[1] 授業単元:グラフ彩色問題
[2] 問題文
[2.1]グラフ彩色問題に対する近似解法SEQを作成せよ
[2.2].頂点を次数の降順にソートした後にSEQを適用するプログラムを作成せよ
[2.3]グラフ彩色問題に対する近似解法RLFを作成せよ
※検索エンジンで“グラフ彩色問題 SEQ”と入力して頂ければ、更に理解が深まるページが見つかるかと思います。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2007年12月7日
[5] その他の制限:特にありません。
よろしくお願いします。
0148もりもっこり
2007/11/25(日) 16:32:381.数値を順番に読み込んで二次元の配列に格納する。
2.その配列を画面に出力する。
3.次に、2つの整数を読み込む。
4.二次元配列のうち、読み込んだ整数に対応する二つの行(あるいは列)の内容を交換する。
配列の内容を画面に出力する。
5.配列の読み込み、交換、出力はそれぞれ関数にすること。
0149KSCN
2007/11/25(日) 16:41:11っていう課題がでたのですが質問の意味からわかりません。どなたか質問の意味だけでも教えてください。
0150デフォルトの名無しさん
2007/11/25(日) 16:43:430151デフォルトの名無しさん
2007/11/25(日) 16:49:49つhttp://www.google.co.jp/
0152デフォルトの名無しさん
2007/11/25(日) 16:50:15何がわからないのかがわからない。
1.クラスで使っているMathematicaというソフトを使って数式を処理してグラフ表示、グラフの画像をEPS形式のファイルに保存。
2.いつもやっているようにLatexでレポート作成。EPS形式ファイルの埋め込みに関しては、配布したテキストを参照の事。
3.pdflatexをつかってPDF形式のファイルを出力。
一通り説明されてるはずなのに、なんで分からないとか言ってんの?
ずっとサボってたのか?
0153デフォルトの名無しさん
2007/11/25(日) 18:01:02マルチ?( http://science6.2ch.net/test/read.cgi/math/1195081289/156 )
0154デフォルトの名無しさん
2007/11/25(日) 18:24:20http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5329.c
結果があってるかはわからんよ。
あと、文字列を数列に直すのは無駄だったから省略しちゃった。
どうしても直したければ、適当にやってくんろ。
0155131
2007/11/25(日) 19:42:04自分の環境ではfscanfで32767文字までしか取得できなかったわけだが・・・
ファイルサイズは228793バイトあるわけで
>>128
>>132で答えたつもりだったんだけど間違ってたかな?
0156デフォルトの名無しさん
2007/11/25(日) 20:30:38こっちの環境では問題なく scanf で取れたよ。
それ以上に、>>132 は O(n^2) だから、とても終わらないと思うけれど。
0157156=154
2007/11/25(日) 20:33:55質問者の環境で、これでうまくいかないようなら対処する。
0158デフォルトの名無しさん
2007/11/25(日) 20:48:56プログラムがかけないのでお願いします
0159デフォルトの名無しさん
2007/11/25(日) 20:56:38C, d, n, p, q として想定している桁数は?
任意桁なら、GMP の使用の可否は?
0160デフォルトの名無しさん
2007/11/25(日) 20:59:51マルチ?って聞かれてそう答えるのって日本語不自由な人だよね。
0161デフォルトの名無しさん
2007/11/25(日) 21:04:14留学生です
0162デフォルトの名無しさん
2007/11/25(日) 21:14:03[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5330.txt
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限: 11月26日0時まで
よろしくおねがいします
0163デフォルトの名無しさん
2007/11/25(日) 21:14:370164デフォルトの名無しさん
2007/11/25(日) 21:24:45int dom[] = {-1,31,28,31,30,31,30,31,31,30,31,30,31};
void yesterday(int *y, int *m, int *d) {
--*d;
if (*d <= 0) *d = dom[--*m];
if (*m <= 0) --*y, *m = 12;
}
void tomorrow(int *y, int *m, int *d) {
++*d;
if (*d > dom[*m]) *d = 1, ++*m;
if (*m > 12) ++*y, *m = 1;
}
void sort3(int *n1, int *n2, int *n3) {
int tmp;
if (*n1 > *n2) tmp = *n1, *n1 = *n2, *n2 = tmp;
if (*n2 > *n3) tmp = *n2, *n2 = *n3, *n3 = tmp;
if (*n1 > *n2) tmp = *n1, *n1 = *n2, *n2 = tmp;
}
0165デフォルトの名無しさん
2007/11/25(日) 21:47:29当方で確認した環境は WindowsXP, 処理系は gcc 3.4.4 です。
(1) だけでもやってみました。とにかく初期値と収束解を出すだけのプログラムです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5331.txt
この結果をつらつら眺めると、次の関係があると推測できます。
初期値を x0, y0 とするとき、
1) y0 > x0 ならば、収束値は (x, y) = (-2, 2)
2) y0 < x0 ならば、収束値は (x, y) = (2, -2)
3) x0 = y0 ならば、ヤコビ行列の行列式が 0 となるので、収束しない。
初期値から近い方の解に収束するようです。
なお、問題の(2) は、どうもフラクタル図形を描くかと思われます。
0166デフォルトの名無しさん
2007/11/25(日) 22:04:40M教授の課題だろ
0167デフォルトの名無しさん
2007/11/25(日) 22:08:05[2] 問題文(含コード&リンク):(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5332.txt)
[3] 環境
[3.1] OS: WindowsXP
[3.3] 言語: C言語
[4] 期限: 明後日
[5] その他の制限: 今は配列のところを習っています。制限は特にないです。
お願いします
0168デフォルトの名無しさん
2007/11/25(日) 22:13:59404
0169デフォルトの名無しさん
2007/11/25(日) 22:24:46#difineで50を定義するってのが条件です
お願いします
0170デフォルトの名無しさん
2007/11/25(日) 22:33:04M教授の課題だろ。俺もわかんねえんだおしえてくれ
0171デフォルトの名無しさん
2007/11/25(日) 22:34:48#include <stdio.h>
#define 50
int main(void)
{
printf("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47");
return 0;
}
0172>>169
2007/11/25(日) 22:35:19書き直します
[1] C言語:
[2] 1から50までの数のうち、素数を表示するプログラムを作成せよ。
#difineで50を定義せよ
[3] 環境
[3.1] WindowsXP
[3.2] Visual C++2005
[3.3] C
[4] 期限:無期限
[5] 関数は使ってはいけない
0173デフォルトの名無しさん
2007/11/25(日) 22:37:23>関数は使ってはいけない
本当にこう言われたのか?
0175デフォルトの名無しさん
2007/11/25(日) 22:40:050176デフォルトの名無しさん
2007/11/25(日) 22:40:570177173
2007/11/25(日) 22:41:37ありがとうございます。こんなやりかたもあるんですね
0178173
2007/11/25(日) 22:43:440179デフォルトの名無しさん
2007/11/25(日) 22:44:59#define N 50
main() {
int i, j;
int primes[N];
for (i = 0; i < N; ++i) {
primes[i] = i;
}
primes[1] = 0;
for (i = 2; i*i < N; ++i)
if (primes[i]) {
for (j = i*i; j < N; j+=i) {
primes[j] = 0;
}
}
}
for (i = 0; i < N; ++i) {
if (primes[i]) {
printf("%d ", primes[i]);
}
}
}
0180デフォルトの名無しさん
2007/11/25(日) 22:47:39最悪な方法に比べればましだけどまだしょっぱい。
0181デフォルトの名無しさん
2007/11/25(日) 22:47:48#include <stdio.h>
int main()
{
printf("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47\n");
return 0;
}
0182173
2007/11/25(日) 22:48:170183デフォルトの名無しさん
2007/11/25(日) 22:51:09改善点があったら教えてください
0184デフォルトの名無しさん
2007/11/25(日) 22:52:10#include <stdio.h>
#include <stdlib.h>
#define N 50
int main(void){
int border, i, k;
char *num;
border = N/2;
if((num = malloc( N+1 )) == NULL)return -1;
for(i=0; i<N; i++)num[i] = 1;
i = 2;
while(i <= border){
for(k=i*2; k<=N; k+=i)num[k] = 0;
while(1){
i++;
if(num[i])break;
}
}
for(i=2; i<=N; i++)if(num[i])printf("%d ", i);
free(num);
return 0;
}
0185122
2007/11/25(日) 22:53:42>>129
ごめんなさい。訂正いたします。
なお、厳密には「有効桁数 4 桁で表示」っていうのは、このやり方ではうまくないです。
SEED に与える定数で、具合のいいものしか表示しないようにしています。すみません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5333.txt
0186デフォルトの名無しさん
2007/11/25(日) 22:59:55#include <stdio.h>
int main()
{
int i,j,num[51]={0};
for (i=2 ; i<51 ; i++)
{
if (num[i]==0)
{
printf("%d\n", i);
for (j=i ; j<51 ; j+=i)
{
num[j]=1;
}
}
}
return 0;
}
0188デフォルトの名無しさん
2007/11/25(日) 23:04:03//ちょっとだけ高速化
#include <stdio.h>
int main()
{
int i,j,num[51]={0};
for (i=2 ; i*i<51 ; i++)
{
if (num[i]==0)
{
printf("%d\n", i);
for (j=i ; j<51 ; j+=i)
{
num[j]=1;
}
}
}
for (i=2 ; i<51 ; i++)
{
if (num[i]==0)
{
printf("%d\n", i);
}
}
return 0;
}
0189コーンポタージュ
2007/11/26(月) 00:15:01ちなみにサンプルプログラムは以下の通りです。
/* グラフ彩色問題に対する近似解法(サンプルプログラム) */
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX_N 2000 /* 最大の頂点数 */
int n; /* 頂点数 */
int m; /* 辺数 */
double x[MAX_N], y[MAX_N]; /* 各頂点の座標 */
int a[MAX_N][MAX_N]; /* 隣接行列 */
int color[MAX_N]; /* 色 */
int max_color; /* 最大の色番号 */
/* アルゴリズム本体 */
void sample(){
int i;
for(i = 0; i < n; i++){
color[i] = i % 6;
}
}
0190コーンポタージュ
2007/11/26(月) 00:15:42int main(int argc, char *argv[]){
FILE *input_file, *output_file;
double start_time, search_time;
int i,j,k1,k2;
/* 引数のチェック */
if(argc <= 1){
fprintf(stderr,"Please input the name of data file!\n");
exit(1);
}
/* 入力データの読み込み */
input_file = fopen(argv[1],"r");
fscanf(input_file, "%d %d\n",&n, &m);
for(i = 0; i < n; i++){
fscanf(input_file,"%lf %lf\n",&(x[i]),&(y[i]));
}
for(i = 0; i < n; i++){ /* 隣接行列の初期化 */
for(j = 0; j < n; j++){
a[i][j] = 0;
}
}
for(i = 0; i < m; i++){
fscanf(input_file,"%d %d\n",&k1,&k2);
a[k1][k2] = a[k2][k1] = 1;
}
0191コーンポタージュ
2007/11/26(月) 00:16:16for(i = 0; i < n; i++){
color[i] = -1;
}
/* 入力データの表示 */
printf("n= %d\n",n);
printf("m= %d\n",m);
/* for(i = 0; i < n; i++){
printf("%f\t%f\n",x[i],y[i]);
}
for(i = 0; i < n; i++){
for(j = i+1; j < n; j++){
if(a[i][j] == TRUE){
printf("%d\t%d\n",i,j);
}
}
} */
/* 開始時刻の設定 */
start_time = (double)clock()/CLOCKS_PER_SEC;
/* アルゴリズム本体 */
sample();
0192コーンポタージュ
2007/11/26(月) 00:16:50search_time = (double)clock()/CLOCKS_PER_SEC - start_time;
/* 制約条件のチェック */
for(i = 0; i < n; i++){
if(color[i] == -1){
printf("No color is assigned!: %d\n",i);
}
}
for(i = 0; i < n; i++){
for(j = i+1; j < n; j++){
if(a[i][j] == 1 && color[i] == color[j]){
printf("%d and %d have the same color %d!\n",i,j,color[i]);
}
}
}
0193コーンポタージュ
2007/11/26(月) 00:17:23output_file = fopen("result.txt","w");
fprintf(output_file,"%d\t%d\n",n,m);
for(i = 0; i < n; i++){
fprintf(output_file,"%f\t%f\n",x[i],y[i]);
}
for(i = 0; i < n; i++){
for(j = i+1; j < n; j++){
if(a[i][j] == 1){
fprintf(output_file,"%d\t%d\n",i,j);
}
}
}
for(i = 0; i < n; i++){
fprintf(output_file, "%d\n",color[i]);
}
0194デフォルトの名無しさん
2007/11/26(月) 00:18:480195デフォルトの名無しさん
2007/11/26(月) 00:26:220196デフォルトの名無しさん
2007/11/26(月) 00:30:380197デフォルトの名無しさん
2007/11/26(月) 00:36:13私は基本的にはみません。だってめんどくさいから。
0198デフォルトの名無しさん
2007/11/26(月) 00:41:440199デフォルトの名無しさん
2007/11/26(月) 00:51:450200デフォルトの名無しさん
2007/11/26(月) 00:56:280201デフォルトの名無しさん
2007/11/26(月) 02:15:24[2] 問題文(含コード&リンク):()
===memo.txt===
DATA52/a
DATA52/u
DATA52/chi
=============
とかかれたmemo.txtのファイルがあるとして
そのファイルを読み込み"DATA52/"という
文字列を取り除く.
次にa,u,chiをくっつけてauchiとして表示せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11/26 12:00
[5] その他の制限:
ちなみに構造体配列を使い、struct tfield tdata[1]を宣言し
tdata[0].filenameに"memo.txt"を格納しているとする。
そのmemo.txtをよみこみ処理してtdata[0].wordとして"auchi"を表示してほしいです。
メンバのfilename,wordはchar型です
0202デフォルトの名無しさん
2007/11/26(月) 02:17:18これは不思議。
アルゴリズムの名前とかある?
0203デフォルトの名無しさん
2007/11/26(月) 02:20:40エラトステネスのふるい
0204デフォルトの名無しさん
2007/11/26(月) 02:26:06まじか……。
調べる数をリストとして扱うと、こういう処理になるのか。
0205デフォルトの名無しさん
2007/11/26(月) 07:30:510206デフォルトの名無しさん
2007/11/26(月) 08:16:47ただ単に素数を求めるプログラムを作れって言われたら、
エラトステネスを思いつかなければ、別の手段を使うだろ。
0207デフォルトの名無しさん
2007/11/26(月) 08:20:35教養なんて高尚なもんでもない。常識だ。
0208デフォルトの名無しさん
2007/11/26(月) 08:21:07[2] 問題文(含コード&リンク):sinx は
x - x**3/3! + x**5/5! -x**7/7! + ---- (1)
と級数展開される.
式(1)で7項まで取った場合と組み込み関数で求めたsinxの値の差を,
0度から360度まで,プログラムを作成して求めろ
注意1:式(1)をプログラム化する際に,定義関数を利用し,項数と角度を渡すと値を返すような関数
を作成のこと.
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン: bcpad
[3.3] 言語: C++
[4] 期限: 11月26日12:00
[5] その他の制限: 特にありませんが定義関数を使うようです
お願いします
0209デフォルトの名無しさん
2007/11/26(月) 08:37:54ごめん俺、確率的判定アルゴリズムしか知らない・・・
こういう演習で確率的アルゴリズム書いて提出するとどうなるんだろうな
0210デフォルトの名無しさん
2007/11/26(月) 08:56:55double series_sin(double degree,int num){
double radian=degree * Pi/180;
double tmp=0;
for(int i=1;i<=num;i++ ){
tmp+=Pow(-1,i+1)*Pow(radian,i*2-1)/Factorial(i*2-1);
}
return tmp;
}
テストも糞も無いけどこれを修正してmath.hのSinと比べればOK
factorialの演算子がC++にあるかどうかは分からんので。
0211デフォルトの名無しさん
2007/11/26(月) 09:15:06何を求める問題なのかがさっぱり分からないから
問題を書き直したほうがいい
0212デフォルトの名無しさん
2007/11/26(月) 10:28:06>47お願いします。
0213デフォルトの名無しさん
2007/11/26(月) 11:51:43なんで謝るの?
0214デフォルトの名無しさん
2007/11/26(月) 14:12:00[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5335.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: なし
[5] その他の制限:なし
0215デフォルトの名無しさん
2007/11/26(月) 15:42:30#include <stdio.h>
#include <time.h>
void gput(const char *s, int speed)
{
clock_t c;
while(*s) {
putchar(*s++);
c = clock();
while(clock() - c < speed);
}
}
0216デフォルトの名無しさん
2007/11/26(月) 15:53:26[2] 問題文 数字の点数を読んで、クラスの平均点、最低点と最高点を求めるプログラムを書け
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語: C#なんだけど、ほかのスレタイ調べても頼めないからみんなたのむ。
[4] 期限: 今週の金曜
[5] その他の制限:結構レベルが低いので複雑なプログラムはご遠慮願います。
0217デフォルトの名無しさん
2007/11/26(月) 16:20:24int main(){
int n;
printf("数字の点数を入力してください ",n);
scanf("%d",&n);
printf("平均点 %d\n",n);
printf("最低点 %d\n",n);
printf("最高点 %d\n",n);
return 0;
}
0218デフォルトの名無しさん
2007/11/26(月) 16:28:010219デフォルトの名無しさん
2007/11/26(月) 16:48:02while(clock() - c < speed); → while(1000*(clock() - c) / CLOCK_PER_SEC < speed);
0220学生
2007/11/26(月) 16:50:23お願いします。自分は全くの初心者ですお願いします。
【C言語・質問】 以下、課題です。
�@課題内容
駐車場のシュミュレーション・課題先リンク
http://www.trpt.cst.nihon-u.ac.jp/processing/2006/parking.html
※貴方自身がコンビニやパチンコ店の管理者となり、
イメージして以下の条件は各自自由な値としてよい。
・駐車場の台数 ・平均駐車時間(s)
・駐車時間の標準偏差(s)・駐車車両発生条件(開始時間 s )
・その時間における発生確率(台/s)・駐車車両発生条件(中間時間 s )
・その時間における発生確率(台/s)
例:パチンコ店
駐車場の台数=200台
来店頻度=400秒に1台
平均駐車時間=120分 等
上記の設定で、グラフも出る様にすること。
�A課題の参考場所
http://www.trpt.cst.nihon-u.ac.jp/processing/parkingsim.c
上記の言語がベースになる様です。
0221デフォルトの名無しさん
2007/11/26(月) 16:53:28ログインできないのでユーザー名とパスワードを教えてください。
0222デフォルトの名無しさん
2007/11/26(月) 16:54:27>>1のテンプレに則ってください
0224デフォルトの名無しさん
2007/11/26(月) 16:57:39>>219
ありがとう!助かります!
0225学生
2007/11/26(月) 17:08:27[1] 授業単元:情報処理
[2] 問題文:上記に掲載しました。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: bcPad
[3.3] 言語: C言語
[4] 期限:本日中
[5] その他の制限: 自分はプログラミング素人です。各文字の意味は知っています
0226デフォルトの名無しさん
2007/11/26(月) 17:08:48[2] 問題文(含コード&リンク):
10から0までの整数を1秒ごとに表示する親プロセスと子プロセスを生成しなさい。
備考
・fork() を用いること
・getpid() を用いて、親プロセスと子プロセスのプロセスIDを表示すること
・wait() を親プロセスで用いない場合と用いた場合を作成すること
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: なし
[5] その他の制限: なし
0227デフォルトの名無しさん
2007/11/26(月) 17:10:30大学の鯖に入れって事だろ?
なんか、ギリギリアウトな気がするんだが・・・w
0228学生
2007/11/26(月) 17:12:26大丈夫です。過去にも依頼した事がありあす。
このページ作っているのは大学院生です。見ていません
0229デフォルトの名無しさん
2007/11/26(月) 17:18:010230デフォルトの名無しさん
2007/11/26(月) 17:19:110231デフォルトの名無しさん
2007/11/26(月) 17:25:440232学生
2007/11/26(月) 17:26:50多分不二家ですねw
大学の鯖は、情報処理を履修している学生200名が利用していますよ
0233デフォルトの名無し
2007/11/26(月) 17:44:19[2] 問題文:入力された正の2整数の最大公約数と最小公倍数を算出する。 1(異常)
・キーボードからの入力が空の場合は処理を終了する。
・キーボードからの最大入力桁数は4バイトとする。
・キーボードからの入力が4バイトを超える場合は処理を終了する。
・キーボードからの入力が正の整数に変換できない場合は処理を終了する
エラーメッセージ
未入力 :入力されていません、桁あふれ:4文字以下で入力してください、数値以外:半角数字以外入力できません、ゼロ入力:0は入力できません
文字列を正数に変換する関数はatoiを使用。
引数 char data[] 文字列
戻り値 : 正数 エラー値 -1 未入力 -2 桁あふれ -3 数値以外-4 ゼロ入力
最大公約数を算出の関数名はgcdでユークリッドの互除法を使用。
引数 int data1 データ1 int data2 データ2
戻り値 : 最大公約数
最小公倍数を算出する関数名はlcm。最小公倍数を算出する際、最大公約数の関数を使用する。
引数 int data1 データ1 int data2 データ2
戻り値 : 最小公倍数
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 11・27まで
[5] その他の制限: なし
0234デフォルトの名無しさん
2007/11/26(月) 18:34:03利用者は関係なくてだね
アクセス制限してる以上、君が公開したところで罪になるのは見た人なんだよ
0235デフォルトの名無しさん
2007/11/26(月) 19:27:260236デフォルトの名無し
2007/11/26(月) 19:36:51[2] 問題文:入力された「対象文字列(s)」の中から、「検索文字列(t)」を検索し、
該当した「対象文字列」の添字を戻り値とする関数「search(s,t)」を作成しなさい。
ただし、「対象文字列」が「検索文字列」を含まない場合には「-1」を戻り値とする。
なお、関数「search(s,t)」は別ファイルに分け(main関数とそれ以外の関数)、
分割コンパイルできるように作成しなさい。
このとき、main関数以外の関数宣言が記述されたヘッダファイルを作成し、
main関数のソースファイルにて利用すること。
(例) 以下の値で動作した場合は、「3」を返す。
文字列s = “aababcbaa”
文字列t = “abc”
入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限:11月27日まで
[5] その他の制限: なし
0237デフォルトの名無し
2007/11/26(月) 19:44:50[2] 問題文:与えられた数字文字列を数値(int型)へ変換する関数 AsciiToIntを、ポインタを使用して作成せよ。
さらに、この関数を使用し、入力された文字列が実際に数値変換されたことを確認するプログラムを作成せよ。
引数 char *s 文字列のポインタ int *value 変換結果
戻り値 : 結果
文字列が空または8桁以上の場合はエラー値を返す。
文字列が数値に変換できない場合はエラー値を返す。
処理手順
文字列が空または8桁以上の場合はエラー値を返す。
先頭の文字列が符号+/-の場合、それを取り除いた文字列をチェック対象とする。
文字列の桁数を取得。
文字列を読み込んで、以下の処理を行う。
先頭文字列が+/-の場合は、符号情報を保持しておく。また、桁数が1の場合は、エラー値を返す。
ASCIIコードを使用し文字列をチェックし、数値以外であった場合はエラー値を返す。
取得した入力文字列の桁数、読み込んだ数値とその桁数より、数値計算を行う。
計算した結果を合計値に加算する。
入力値がマイナスであった場合、合計値に符号を付加する。
合計値を返す。場合は、エラー値を返す。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C言語
[4] 期限: 11/27
[5] その他の制限:なし
0238デフォルトの名無しさん
2007/11/26(月) 21:16:55「読む」の意味がいまいちわからないけどこんなんかな
using System;
class Sample{
public static void Main(){
int[] point = new int[5];
int max=int.MinValue, min=int.MaxValue;
double avg=0.0;
try{
for(int i=0; i<5; i++){
Console.Write("{0}人目の得点->", i+1);
point[i] = int.Parse(Console.ReadLine());
}
for(int i=0; i<5; i++){
if(max < point[i]) max = point[i];
if(min > point[i]) min = point[i];
avg += point[i];
}
Console.WriteLine("最高点:{0}点\n最低点:{1}点\n平均点:{2}点", max, min, avg/5);
}
catch{
Console.WriteLine("なんか例外");
}
}
}
0239デフォルトの名無しさん
2007/11/26(月) 21:18:15[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5336.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 11/27
[5] その他の制限: 特になし
0240デフォルトの名無しさん
2007/11/26(月) 21:25:29(2)問題
・与えられた個数の正の整数を格納している配列のうち、最大となる値を検出して、その値を
格納している配列要素の値を0に書き換える。すると新しい配列においては、もとの配列で
大きい方から数えて2番目の数値が最大値となっている。さらにもう一度、この新しい配列
における最大値を格納している配列要素の値を0に書き換える。するとこの時点でのさらに
新しい配列では、最初の配列において大きい方から数えて3番目の数値が最大となってい
る。このことを利用して、下記のプログラムを作成せよ。
(ここで示した方法は、いわゆる整列(ソーティング)問題の1つの解法となり得るが、効率的
な方法ではない)
まずメイン関数において、キーボードから正の整数の個数(100以内)を入力し、次いで実
際の数値を配列に入力する。そしてメイン関数はサブ関数に、入力した個数と配列を引数とし
て渡す。
サブ関数は、これらの配列から、まず1番目に大きい数を見つけて、それを別途設けた配列
の先頭の要素に格納し、次に2番目に大きい数を見つけてこれをこの配列の先頭から数えて
2番目の要素に格納し、という処理を最後の数に至るまで繰り返す。これにより新しい配列に
は大きい数から順に並んでいることになるので、これを引数を利用してメイン関数に渡す。(す
なわちサブ関数は引数を3つ持つことになる。1つはデータの個数を示す変数、1つは入力デ
ータを格納する配列、残りの1つはサブ関数で計算した結果を格納する配列である)
最後にメイン関数はサブ関数で計算された新配列の値を若い方の要素から順に(即ち大き
い数から順に)画面に表示する。またこの数列の中央値を表示する(中央値に小数が含まれ
る場合は、その小数を切り捨てた整数を表示することとする)。
(3)環境
(3.1) OS:Windows
(3.2)コンパイラ名とバージョン: 不明
(3.3)
(3.4)C言語
(4)期限 :11月30日
(5)基礎的なことしか習っていないのですがよろしくお願いします。
0241デフォルトの名無しさん
2007/11/26(月) 21:35:49関数だけ作った
#include <string.h>
int search(const char *s, const char *t);
int search(const char *s, const char *t){
char *p;
p = strstr(s, t);
if(p == NULL)return -1;
return p-s;
}
0242デフォルトの名無しさん
2007/11/26(月) 21:41:55>入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する
この部分の仕様を満たしてなくね?
if ( strlen( s ) > 128 ) exit( 0 );とか追加すればいいだけど。
0243デフォルトの名無しさん
2007/11/26(月) 21:44:04何ぃ!その部分はmain側だと思ってた!
じゃあそれつけといて下さい
0244デフォルトの名無しさん
2007/11/26(月) 22:08:23関数だけ作った
valueの使い道がわからなかった
#include <stdio.h>
#include <string.h>
#define ERROR_INT 100000000
int AsciiToInt(char *s, int *value){
int calc = 1, cnt, i, ans=0;
cnt = strlen(s);
if(cnt > 8 || cnt <= 0)return ERROR_INT;
if(*s=='+' || *s=='-'){
calc = *s=='+' ? 1 : -1;
s++; cnt--;
}
if(cnt <= 0)return ERROR_INT;
for(i=0; i<cnt; i++){
if(strchr("0123456789", s[i]) == NULL)return ERROR_INT;
ans = ans*10 + s[i]-'0';
}
return ans * calc;
}
0245デフォルトの名無しさん
2007/11/26(月) 22:20:15valueに値を格納して返す値は正常or変換結果じゃないか?
「変換結果を返す」ってあるけど、普通は正常or異常を返して
正常ならvalueに変換された値が格納されているって感じだな。
0246デフォルトの名無しさん
2007/11/26(月) 22:25:25#include <stdio.h>
#define N 10
void subfunc(int cnt, int *num, int *ans){
int i, k, pos;
for(i=0; i<cnt; i++){
for(k=1, pos=0; k<cnt; k++){
if(num[pos] < num[k])pos = k;
}
ans[i] = num[pos];
num[pos] = 0;
}
}
int main(void){
int i, num[N], ans[N], sum=0;
for(i=0; i<N; i++){
printf("%d個目->", i+1);
scanf("%d", &num[i]);
}
subfunc(N, num, ans);
for(i=0; i<N; i++){
printf("%d ", ans[i]);
sum += ans[i];
}
printf("\n中央値:%d\n", sum/N);
return 0;
}
0247デフォルトの名無しさん
2007/11/26(月) 22:39:13[2] 問題文(含コード&リンク):
http://www.vipper.org/vip677010.txt "sample.txt"というファイルを読み込み、グラフにしたとき山になる点を順番と大きさを"result.txt"に出力するプログラムを書け。
ファイルオープンに失敗した場合は失敗した旨を表示させること。
※[3, 10] [6, 6] [9, 9] をresult.txtに出力できるようになればいいみたいです。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: VisualC++2005ExpressEdition
[3.3] 言語: C
[4] 期限: 11/27
[5] その他の制限:とくになし
よろしくお願いします。
0248デフォルトの名無しさん
2007/11/26(月) 23:24:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5339.txt
0249デフォルトの名無しさん
2007/11/26(月) 23:25:04[2] 問題文(含コード&リンク):
(1)malloc()を用いて元のリストの構造をコピーしたリストを返すプログラム
※再帰的なプログラムをすること。以下を使用。
MyList *cpMyList(MyList *ptr);
(2)malloc()を用いて元のリストの先頭からn個のnodeをコピーしたリストを
返すプログラム
※nがリスト長より長いときにはそこまでの長さんのリストを返せばよい
※再帰的なプログラムにすること。
MyList *cpnMyList(MyList *ptr, int n);
(3)malloc()を用いて与えられた二つのリストをつなげたリストを返すプログラム
MyList *mergeMyList(MyList *ptr1, MyList *ptr2);
-----------------------------------------
冒頭は以下を使用
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct node
{
int data;
struct node *next;
} MyList;
[3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語 [4] 期限: 11/28
なにとぞ、よろしくお願いします。。
0250デフォルトの名無しさん
2007/11/26(月) 23:29:37http://www.nicovideo.jp/watch/sm1493205
はっきりいって糞暴力動画
これでいいのか?ニコニコ動画!??
0251128
2007/11/26(月) 23:47:54>>132のでは実行してもなぜか何も表示されませんでした。
自分の環境では>>154のプログラムで正しい答えが出ました。
ありがとうございました。
あと数列に直すために色々試したのですができません・・・
これもお願いしていいでしょうか?
0252デフォルトの名無しさん
2007/11/26(月) 23:52:100253コーンポタージュ
2007/11/27(火) 00:40:29追加・変更があるので、改めて掲載します。
【質問テンプレ】
[1] 授業単元:グラフ彩色問題
[2] 問題文
[2.1]グラフ彩色問題に対する近似解法SEQを作成せよ
[2.2].頂点を次数の降順にソートした後にSEQを適用するプログラムを作成せよ
[2.3]グラフ彩色問題に対する近似解法RLFを作成せよ
問題の詳細(pdfなので少々重いです。最後の方のプログラミング課題です)
http://www-2ch.net:8080/up/download/1196004537765593.vEHtcV
サンプルプログラム(これを参考にプログラムを解くそうです)
http://www-2ch.net:8080/up/download/1196004323585273.o4l1bm
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2007年12月7日
[5] その他の制限:特にありません。
よろしくお願いします。
0254デフォルトの名無しさん
2007/11/27(火) 00:42:17はいよっと、一応条件満たしてると思うけど
MyList *cpMyList(MyList *ptr)
{
MyList* pRet;
if(!ptr) return NULL;
pRet = malloc(sizeof(MyList));
memcpy(pRet, ptr, sizeof(MyList));
pRet->next = cpMyList(pRet->next);
return pRet;
}
MyList *cpnMyList(MyList *ptr, int n)
{
MyList* pRet;
if(!ptr || n==0) return NULL;
pRet = malloc(sizeof(MyList));
memcpy(pRet, ptr, sizeof(MyList));
pRet->next = cpnMyList(pRet->next, n-1);
return pRet;
}
0255デフォルトの名無しさん
2007/11/27(火) 00:42:58マージする部分ね
MyList *mergeMyList(MyList *ptr1, MyList *ptr2)
{
MyList* pRet;
MyList* pIdx;
if(!ptr1) return cpMyList(ptr2);
pRet = cpMyList(ptr1);
pIdx = pRet;
while(pIdx->next)
pIdx = pIdx->next;
pIdx->next = cpMyList(ptr2);
return pRet;
}
0256デフォルトの名無しさん
2007/11/27(火) 00:51:55うっぷろーだがあったんだ、こっちに上げといた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5340.txt
0257216
2007/11/27(火) 01:33:08すまない・・・せっかくといてもらったんだけど、CじゃなくてC#なんだ・・・。
スレッド自体はCかC++なんだけど、
C#のスレッドがなくてここの住人に頼るしかなくてね・・・。
0258デフォルトの名無しさん
2007/11/27(火) 01:45:34#include <stdio.h>
main()
{
int x , y, old_x = 0, old_y = 0, a = 0;
char line[1000];
FILE *fin,*fout;
if((fin=fopen("sample.txt","r"))==NULL){
printf("sample.txt can't open.\n");
exit(1);
}
if((fout=fopen("result.txt","w"))==NULL){
printf("result.txt can't open.\n");
exit(1);
}
while(fgets(line,1000,fin)!=NULL){
sscanf(line,"%d,%d",&x,&y);
if(y - old_y >= 0){
old_x = x; old_y = y;
a = 1;
}else{
if (a == 1){
fprintf(fout,"[%d,%d]\n",old_x,old_y);
}
old_x = x; old_y = y;
a = 0;
}
}
fclose(fin);
fclose(fout);
}
0259デフォルトの名無しさん
2007/11/27(火) 01:59:18大丈夫か?>>238はcscでコンパイル・実行可能だぞ?
0260デフォルトの名無しさん
2007/11/27(火) 02:04:02むしろ、C/C++じゃコンパイルすら通らないと思うんだが
0262デフォルトの名無しさん
2007/11/27(火) 02:48:590263デフォルトの名無しさん
2007/11/27(火) 03:05:38ありがとうございました。
0264デフォルトの名無しさん
2007/11/27(火) 09:17:17これは善意の人間を犯罪者にするかのような誘導。
不正アクセスに繋がるから、このページに行く必要は全く無い。
0265デフォルトの名無しさん
2007/11/27(火) 09:38:45正規の利用者からパスワード教えられてアクセスする場合って
不正アクセスになるんだっけ?法律にはうといからよくわからん・・・
0266デフォルトの名無しさん
2007/11/27(火) 09:51:00そもそも>>220が正規利用者だという確証は一つも無い。
下手をするとhackingを行った犯罪者だということすら考えられる。
そしてそのhackerからpassを教えてもらってアクセスすれば、
我々は立派な犯罪者になってしまう。
0267デフォルトの名無しさん
2007/11/27(火) 10:02:58まぁアクセスしないのが一番確実だけど。
0268デフォルトの名無しさん
2007/11/27(火) 10:17:33不正アクセス行為の禁止等に関する法律
http://law.e-gov.go.jp/htmldata/H11/H11HO128.html
第四条に該当し"許可を得た"ということになるんだが、本人であるという証明がなされていない。
2ちゃんねるにパスワードを掲載する=Web検索のロボットにキャッシュされる。
それと、ログインした人間のIPや環境情報はサーバーログを見ればすぐに判る。
管理していないとしても、しっかり残るので後で掘り返すことが可能。
逮捕者の実例
News:速報:“2ちゃんねらー”6人逮捕,不正アクセスで
http://www.itmedia.co.jp/news/bursts/0109/27/2ch.html
第3者が"権利者の許可なく"そのパスワードでログインした場合は不正アクセス。
0269デフォルトの名無しさん
2007/11/27(火) 10:42:40この条件を使ってラグランジュ補間のプログラムを作れって問題なんですけどさっぱりです。ちなみにC言語です
0270デフォルトの名無しさん
2007/11/27(火) 10:44:38とりあえず>>1にテンプレートという便利なモノがあるからそれを大いに活用したほうが良い
0271デフォルトの名無しさん
2007/11/27(火) 11:16:08せめて問題例データくらい作って置いたらどうかな
頂点10で辺数27でしょ、PG作ってデータまで作るとなると、相当な暇人でもやらんと思う
0272デフォルトの名無しさん
2007/11/27(火) 11:16:32OSはLinux 知識はCとC++なら多少は分かる とにかく提出したらいいので多少自己流で解かれても大丈夫です
0273デフォルトの名無しさん
2007/11/27(火) 11:17:46質問の仕方も自己流にこだわるのかw
0274デフォルトの名無しさん
2007/11/27(火) 11:31:340275デフォルトの名無しさん
2007/11/27(火) 11:48:09ラグランジュ補間は、本来、N点のデータが与えられた時、
それらの点を繋ぐことのできるxの多項式の係数を求めるという方法です。
プログラミング以前に、数学的な理解がおろそかだと思われます。
もっと言うと、補間に関するソースは至る所に掲載されています。
それを用いれば簡単に目的は達成できます。
0276デフォルトの名無しさん
2007/11/27(火) 11:48:56俺は解かないけど。
0277デフォルトの名無しさん
2007/11/27(火) 11:53:03そこまで言ったら解いてやれよw
0278デフォルトの名無しさん
2007/11/27(火) 12:02:55どこがわかんないか質問してくれれば、その回答はするよ
0279デフォルトの名無しさん
2007/11/27(火) 12:12:410280デフォルトの名無しさん
2007/11/27(火) 12:30:530281デフォルトの名無しさん
2007/11/27(火) 12:35:37その生成された点からラグランジュ補間を行うxの多項式の係数を求め、
元のfxと比較しろという問題なのか?
0282デフォルトの名無しさん
2007/11/27(火) 12:37:24[問題文]
#include <stdio.h>
#include <math.h>
#define EPS 1e-7 /* 収束判定の許容誤差ε */
/* ★ 関数 f(x) とその導関数 df(x) を定義する*/
int main()
{
int n;
double x, y;
printf("n x f(x)\n");
printf("--- ---------- ----------\n");
n = 0;
x = /* ★ 初期値を設定 */
y = f(x);
printf("%3d %10.7f %10.7f\n", n, x, y);
while (/* ★ |f(x)|<ε となったとき終了 */) {
/* ★ 途中の計算結果も出力するように、適切な位置に printf 文を追加せよ */
n++;
x = /* ★ ニュートン・ラフソン法の漸化式 */
y = f(x);
}
return 0;
}
/* end of kadai_8_sample.c */
方程式 x^3 = 2 の解をニュートンラフソン法で求めよ。
収束判定は |x^3 - 2|<10^-7 とする。
初期値は各自で決める
[os] linux
[言語] c
[期限]本日14:00
宜しくお願いします
0283デフォルトの名無しさん
2007/11/27(火) 12:44:230284デフォルトの名無しさん
2007/11/27(火) 12:52:30ただし、/や%や10回以上のループは使えない
0285デフォルトの名無しさん
2007/11/27(火) 12:54:59mの因数分解表をあらかじめ作っておいて判定する
0286デフォルトの名無しさん
2007/11/27(火) 12:55:16m < 30000 、n< 16 が与えられたとき、mがnで割り切れるか調べるプログラム
ただし、/や%や16回以上のループは使えない
0287デフォルトの名無しさん
2007/11/27(火) 12:57:280288デフォルトの名無しさん
2007/11/27(火) 12:59:472 ・・・ 一の位が2の倍数
3 ・・・ 各位の数の和が3の倍数
4 ・・・ ・ 下二桁が4の倍数
・ 一の位を2で割った数を十の位に足した数が偶数
5 ・・・ 一の位が5の倍数
6 ・・・ 2かつ3の倍数
7 ・・・ 3桁毎に交互に足したり引いたりしてできた数が7の倍数
8 ・・・ ・ 下3桁が8の倍数
・ 一の位を2で割り十の位に足して2で割った数を百の位に足した数が偶数
9 ・・・ 各位の数の和が9の倍数
10 ・・・ 一の位が0
11 ・・・ 各位の数を交互に足したり引いたりしてできた数が11の倍数
12 ・・・ 3かつ4の倍数
13 ・・・ 7の倍数の判定と同じ
14 ・・・ 2かつ7の倍数
15 ・・・ 3かつ5の倍数
16 ・・・ 下4桁を2で割った数が8の倍数(下4桁を4で割った数が4の倍数
ttp://www004.upp.so-net.ne.jp/s_honma/number/multiple.htm
0289デフォルトの名無しさん
2007/11/27(火) 13:01:44各位って10進数ですよね どうやってその値をゲットするんですか
0290デフォルトの名無しさん
2007/11/27(火) 13:04:47Cの文字列で一文字ずつmを取得する
0291デフォルトの名無しさん
2007/11/27(火) 13:07:32整数を文字列に変換する関数とかは使わないで下さい
0292デフォルトの名無しさん
2007/11/27(火) 13:10:01は?後付してんじゃねえよ
0293デフォルトの名無しさん
2007/11/27(火) 13:12:38問題に対する疑問に答える過程で条件を追加するのは当然のことだと思うが。
0294デフォルトの名無しさん
2007/11/27(火) 13:13:23たとえば、tasu('A', 'B')の戻り値が'C'になるとか、
kakeru('A', 'B')は'B'とか。
0295デフォルトの名無しさん
2007/11/27(火) 13:13:51とっとと帰れ帰れ
0296デフォルトの名無しさん
2007/11/27(火) 13:16:36そもそも、答えたくないならお前が黙って帰れよ。
0297デフォルトの名無しさん
2007/11/27(火) 13:20:28例えば tasu(char a, char b) なら、
if ((a=='A' && a=='B') || (a=='B' && a=='A'))
return 'C';
っていう式を延々と書けば、これは10進数の演算と全く同じになる。
0298デフォルトの名無しさん
2007/11/27(火) 13:21:20int mod(int m, int n)
{
int i, num[16]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
if(m<0 || n<0) return -1;
for(i=16-1;i>=0;i--)
if(m>=num[i]*n)
m-=num[i]*n;
return m;
}
int main(void)
{
mod(20000, 15);
return 0;
}
0299デフォルトの名無しさん
2007/11/27(火) 13:26:530300デフォルトの名無しさん
2007/11/27(火) 13:33:250301デフォルトの名無しさん
2007/11/27(火) 13:50:54残念、>>296だけ俺だ。
0302コーンポタージュ
2007/11/27(火) 15:11:18問題例
頂点i に色i mod 6 を割当てるプログラム
•ランダム幾何グラフUn,d を作成
•頂点数n,パラメータd を入力とし,単位正方形[0,1]2内に一様かつ独立にn 個の頂点をランダムに分布させ,距離がd
以下の2頂点間に辺を結ぶ
•各頂点の平均次数がnπd2となることが知られている
問題例のプログラム
http://www-2ch.net:8080/up/download/1196004323585273.o4l1bm
0303デフォルトの名無しさん
2007/11/27(火) 15:26:14ニート風情が偉そうにε−(´・`)
0304デフォルトの名無しさん
2007/11/27(火) 15:31:12[1] 授業単元:プログラム言語2
[2] 問題文:課題A で作成したプログラムを以下のように修正する.
* gcc kadai08b.c でコンパイルすると5パーセントの商品価格だけ表示される.
* gcc -DZEI=*** kadai08b.c でコンパイルすると***パーセントの商品価格だけ表示される.
* gcc -DDEBUG kadai08b.c でコンパイルすると5パーセントの消費税と商品価格が表示される
#include <stdio.h>
#include <stdlib.h>
#define a 5
#define TAX(x,y) (x+y)*a/100
#define PRICE(x,y) (x+y)+(x+y)*a/100
int main(void)
{
int x,y;
printf("tax of x+y %d \n", TAX(x,y));
scanf("%d",&x);
printf("lnput an integer y:");
scanf("%d",&x);
printf("tax of x+y: %d \n",);
printf("price of x+y %d \n", PRICE(x,y));
return0;
}
[3] 環境
[3.1] OS: (Linux/)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: ([2007年11月28日まで]
[5] その他の制限: (Cプリプロセッサぐらいまで)
課題Aはなんとか出来ましたが、課題Bがわからないので、宣しくお願いします。
貼りつけたプログラムは、課題Aが完成したものです。
0305デフォルトの名無しさん
2007/11/27(火) 15:40:23ついでにいろいろ修正した。
#include <stdio.h>
#include <stdlib.h>
#ifdef ZEI
# define a ZEI
#else
# define a 5
#endif
#define TAX(x,y) (x+y)*a/100
#define PRICE(x,y) (x+y)+(x+y)*a/100
int main(void)
{
int x,y;
printf("lnput an integer x:");
scanf("%d",&x);
printf("lnput an integer y:");
scanf("%d",&y);
#ifdef DEBUG
printf("tax of x+y %d \n", TAX(x,y));
#endif
printf("price of x+y %d \n", PRICE(x,y));
return 0;
}
0306デフォルトの名無しさん
2007/11/27(火) 15:54:20本当に助かりました。
またの機会がありましたら、よろしくお願いします。
0307デフォルトの名無しさん
2007/11/27(火) 16:08:10[2] 問題文: 1.正三角形の面積を求めるマクロ定義を作る。一辺の長さをaとする
2.課題1で作ったマクロを使って、1辺の長さが5mの正三角形の面積を求めるプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++2005
[3.3] 言語:C
[4] 期限:11月28日午後10時まで
[5] その他の制限:特にありません。
よろしくお願いします
0308デフォルトの名無しさん
2007/11/27(火) 16:23:12[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):色々な整数値a,bに対してtを媒介変数として、
座標がx=cos(2πat)、y=sin(2πbt)であらわされる曲線を描くリサージュ関数を作成しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] Astex(?)
[3.3] 言語:C
[4] 期限: 2007/11/29 19時
[5] その他の制限: 配列・ポインタの使い方、簡単な数式の入力まで習いました。
どこから手をつけてよいか分かりません。お力添え頂ければと思います。
0309デフォルトの名無しさん
2007/11/27(火) 16:24:47#include <stdio.h>
#define TRI(a) ((a)*(a)*1.7320508/4.0)
int main( ){ return printf( "%lf\n", TRI(5)); }
0310デフォルトの名無しさん
2007/11/27(火) 16:32:04[2] 問題文:入力された文字列のそれぞれの文字をカウントし、出現回数と生起確率を表示させよ。
またそのエントロピーも表示させよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++ 6.0
[3.3] 言語:C
[4] 期限:11月28日午前2時まで。
[5] その他の制限:特にありません。
以前ご教示頂いたのですが、データが壊れてしまいました。
0311310
2007/11/27(火) 16:32:53何卒よろしくお願いいたします・・・。
0312デフォルトの名無しさん
2007/11/27(火) 17:20:20ソース
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5343.txt
csvを表計算ソフトで描画した図形
ttp://www15.axfc.net/uploader/90/so/l/119615151025982656815/Img_5482.jpg
0313デフォルトの名無しさん
2007/11/27(火) 17:59:13[2] 問題文(含コード&リンク):
メイン関数において、キーボードから正の整数の個数(100以内)を入力し、次いで実
際の数値を配列に入力する。そしてメイン関数はサブ関数に、入力した個数と配列を引数とし
て渡す。
サブ関数は、これらの配列から、まず1番目に大きい数を見つけて、それを別途設けた配列
の先頭の要素に格納し、次に2番目に大きい数を見つけてこれをこの配列の先頭から数えて
2番目の要素に格納し、という処理を最後の数に至るまで繰り返す。これにより新しい配列に
は大きい数から順に並んでいることになるので、これを引数を利用してメイン関数に渡す。(す
なわちサブ関数は引数を3つ持つことになる。1つはデータの個数を示す変数、1つは入力デ
ータを格納する配列、残りの1つはサブ関数で計算した結果を格納する配列である)
最後にメイン関数はサブ関数で計算された新配列の値を若い方の要素から順に(即ち大き
い数から順に)画面に表示する。またこの数列の中央値を表示する(中央値に小数が含まれ
る場合は、その小数を切り捨てた整数を表示することとする)。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio .NET 2003
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 12月3日
[5] その他の制限:
現在、関数・ポインターについて学んでるところです。
よろしくお願いします。
0314デフォルトの名無し
2007/11/27(火) 18:03:09ポインタではなく配列でお願いしたいのですが、もう一度お願いできないでしょうか。
できればmainもお願いします。
[1] 授業単元: プログラム演習
[2] 問題文:入力された「対象文字列(s)」の中から、「検索文字列(t)」を検索し、
該当した「対象文字列」の添字を戻り値とする関数「search(s,t)」を作成しなさい。
ただし、「対象文字列」が「検索文字列」を含まない場合には「-1」を戻り値とする。
なお、関数「search(s,t)」は別ファイルに分け(main関数とそれ以外の関数)、
分割コンパイルできるように作成しなさい。
このとき、main関数以外の関数宣言が記述されたヘッダファイルを作成し、
main関数のソースファイルにて利用すること。
引数 char s[] 対象文字列
char t[] 検索文字列
(例) 以下の値で動作した場合は、「3」を返す。
文字列s = “aababcbaa”
文字列t = “abc”
入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限:11月27日まで
[5] その他の制限: なし
0315デフォルトの名無し
2007/11/27(火) 18:04:22[2] 問題文:入力された正の2整数の最大公約数と最小公倍数を算出する。
・キーボードからの入力が空の場合は処理を終了する。
・キーボードからの最大入力桁数は4バイトとする。
・キーボードからの入力が4バイトを超える場合は処理を終了する。
・キーボードからの入力が正の整数に変換できない場合は処理を終了する
エラーメッセージ
未入力 :入力されていません、桁あふれ:4文字以下で入力してください、数値以外:半角数字以外入力できません、ゼロ入力:0は入力できません
文字列を正数に変換する関数はatoiを使用。
引数 char data[] 文字列
戻り値 : 正数 エラー値 -1 未入力 -2 桁あふれ -3 数値以外-4 ゼロ入力
最大公約数を算出の関数名はgcdでユークリッドの互除法を使用。
引数 int data1 データ1 int data2 データ2
戻り値 : 最大公約数
最小公倍数を算出する関数名はlcm。最小公倍数を算出する際、最大公約数の関数を使用する。
引数 int data1 データ1 int data2 データ2
戻り値 : 最小公倍数
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 11・28まで
[5] その他の制限: なし
0316デフォルトの名無しさん
2007/11/27(火) 18:06:06#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int i=0,l,c[256]={0};
char buf[256];
double h=0,p;
scanf("%s",buf);
l=strlen(buf);
for(i=0;i<l;i++)
c[buf[i]]++;
for(i=0;i<256;i++)
if(c[i]>0) {
p=(double)c[i]/l;
printf("\"%c\" %lf\n",i,p);
h-=p*log(p);
}
printf("H = %lf\n",h);
return 0;
}
0317デフォルトの名無し
2007/11/27(火) 18:14:32[2] 問題文:
入力された整数0〜9のn個の文字列に対応したヒストグラムを出力するプログラムを作成せよ。
例:(n個の整数文字列=0050011050)
数値0が6個、1が2個、5が2個の場合、以下のように出力する。
<出力例>
a[0] = 6 ******
a[1] = 2 **
a[2] = 0
a[3] = 0
a[4] = 0
a[5] = 5 **
a[6] = 0
a[7] = 0
a[8] = 0
a[9] = 0
ただしキーボードからの入力は最大128バイトとし、それを超える場合129バイト以降のデータはカウントしない。
入力データは半角数字のみとし、全角数字の入力は考えない。
文字列カウント関数 count
引数 char inputdata[] 入力データ
int outputdata[] 出力データ
算出結果をヒストグラムで描写する関数名 hist
引数 int outputdata[]
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C言語
[4] 期限: 11月28日まで
[5] その他の制限: なし
0318デフォルトの名無しさん
2007/11/27(火) 19:46:01あなたのいう「さぶ関数」というのは、ひょっとすると「ソート」を行う関数ではありませんか?
ちなみに、c++にはアルゴリズムでsortそのものが存在します。
0319デフォルトの名無しさん
2007/11/27(火) 19:51:29たぶんそれだと思います。
問題文が長かったので半分にしてしまったのがいけませんでした。
問題の前半分↓
与えられた個数の正の整数を格納している配列のうち、最大となる値を検出して、その値を
格納している配列要素の値を0に書き換える。すると新しい配列においては、もとの配列で
大きい方から数えて2番目の数値が最大値となっている。さらにもう一度、この新しい配列
における最大値を格納している配列要素の値を0に書き換える。するとこの時点でのさらに
新しい配列では、最初の配列において大きい方から数えて3番目の数値が最大となってい
る。このことを利用して、下記のプログラムを作成せよ。
(ここで示した方法は、いわゆる整列(ソーティング)問題の1つの解法となり得るが、効率的
な方法ではない)
わかるかたお願いします。
0320デフォルトの名無しさん
2007/11/27(火) 19:56:51#include <stdio.h>
#define N 100
void sub_func(int n, int num1[], int num2[])
{
int i, j, k, max_index;
for(i = 0, k = 0; i < n; i++){
for(j = 0, max_index = 0; j < n; j++)
if(num1[max_index] < num1[j])
max_index = j;
num2[k++] = num1[max_index];
num1[max_index] = -1;
}
}
int main(void)
{
int num1[N], num2[N], i, n;
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &num1[i]);
sub_func(n, num1, num2);
for(i = 0; i < n; i++)
printf("%d ", num2[i]);
printf("\n");
printf("median = %d\n", (num2[(n - 1)/2] + num2[n/2])/2);
return 0;
}
0321デフォルトの名無しさん
2007/11/27(火) 20:34:00>>246
0322デフォルトの名無しさん
2007/11/27(火) 20:51:34[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5336.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 11/27
[5] その他の制限: 特になし
0323デフォルトの名無しさん
2007/11/27(火) 20:56:29#include <stdio.h>
#include <string.h>
#include <ctype.h>
int gcd(int data1, int data2){
int r;
while(data2 != 0) r = data1%data2, data1 = data2, data2 = r;
return data1;
}
int lcm(int data1, int data2){ return data1*data2/gcd(data1, data2);}
int atoi(char data[]){
int i = 0, ret = 0, len = strlen(data);
if(len == 0) return -1;
if(len > 4) return -2;
if(!isdigit(data[0])) return -3;
if(data[0] == '0') return -4;
while(isdigit(data[i])) ret = 10*ret + data[i++] - '0';
return ret;
}
int main(void){
int data1, data2;
char data[128];
scanf("%127s", data);
data1 = atoi(data);
scanf("%127s", data);
data2 = atoi(data);
if(data1 == -1 || data2 == -1) return printf("未入力 :入力されていません\n"), 1;
if(data1 == -2 || data2 == -2) return printf("桁あふれ:4文字以下で入力してください\n"), 1;
if(data1 == -3 || data2 == -3) return printf("数値以外:半角数字以外入力できません\n"), 1;
if(data1 == -4 || data2 == -4) return printf("ゼロ入力:0は入力できません\n"), 1;
return printf("最大公約数 : %d\n最小公倍数 : %d\n", gcd(data1, data2), lcm(data1, data2)), 0;
}
0324デフォルトの名無しさん
2007/11/27(火) 20:57:02my_atoiに直して
0325デフォルトの名無しさん
2007/11/27(火) 21:07:28#include <stdio.h>
void count(char inputdata[], int outputdata[])
{
char number[] = "0123456789", *p = inputdata, *q;
while(*p != '\0')
if((q = strchr(number, *p++)) != NULL)
outputdata[q - number]++;
}
void hist(int outputdata[])
{
int i, j;
for(i = 0; i< 10; i++){
printf("a[%d] = %d ", i, outputdata[i]);
for(j = 0; j < outputdata[i]; j++)
putchar('*');
putchar('\n');
}
}
int main(void)
{
int cnt[10] = {0};
char buf[129];
scanf("%128s", buf);
count(buf, cnt);
hist(cnt);
return 0;
}
0326デフォルトの名無しさん
2007/11/27(火) 21:55:26http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5345.txt
0327デフォルトの名無しさん
2007/11/27(火) 22:06:24[2] 問題文(含コード&リンク):
int型の配列要素について、
線形探索を実行する関数を作成しなさい。
結果を確認するmain関数も作成すること。
「ヒント」
int linear_search(int *key, int n, int target)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: c
[4] 期限: 11/29まで
[5] その他の制限: #defineは、なしで
0328デフォルトの名無しさん
2007/11/27(火) 22:12:01もったいない
0329デフォルトの名無しさん
2007/11/27(火) 22:26:010330デフォルトの名無しさん
2007/11/27(火) 22:29:470331デフォルトの名無しさん
2007/11/27(火) 22:35:23プゲラwwww
0332デフォルトの名無しさん
2007/11/27(火) 22:41:54ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5346.c
0333デフォルトの名無しさん
2007/11/27(火) 23:28:530334デフォルトの名無しさん
2007/11/27(火) 23:36:27世の中BIOSの設定ができないプログラマも多いし、別にDOS窓使えなくてもいいと思う
(さすがに開き方がわからないのはまずいと思うが)
0335デフォルトの名無しさん
2007/11/27(火) 23:41:33>■ ←こんな感じで点滅してるやつのこと
コンソール
大型のコンピュータ(汎用機あるいはメインフレーム)やミニコンピュータに直結され、
運用(運転)目的で操作をするための装置で、コンピュータ・コンソールあるいは単にコンソールともいう。
wikipediaより引用
0336デフォルトの名無しさん
2007/11/27(火) 23:42:22プゲラwwww
0337デフォルトの名無しさん
2007/11/27(火) 23:43:19あいつそれしか言えんのかw
0338デフォルトの名無しさん
2007/11/27(火) 23:47:59わかりにくい一部だけをコピペしてくるくらいなら、リンク貼れよ
0339デフォルトの名無しさん
2007/11/27(火) 23:49:070340デフォルトの名無しさん
2007/11/28(水) 00:09:07[2] ファイルからデータを読み込む
[3] 環境
[3.1] OS: MacOSX
[3.2] gcc
[3.3] 言語: C
[4] 期限:28日中にお願いします。
http://www.uploda.net/cgi/uploader2/index.php?file_id=0000045083.udn
0341デフォルトの名無しさん
2007/11/28(水) 00:23:34#include<stdio.h>
#include<stdlib.h>
int main(void){
double (*first)[3];
int (*second)[4];
long i, first_num, second_num;
FILE *fp=stdin;
fscanf(fp, "%ld", &first_num);
fscanf(fp, "%ld", &second_num);
first=malloc(sizeof(*first)*first_num);
second=malloc(sizeof(*second)*second_num);
if(first==NULL || second==NULL) return 1;
for(i=0;i<first_num;i++)
fscanf(fp, "%lf %lf %lf", &first[i][0], &first[i][1], &first[i][2]);
for(i=0;i<second_num;i++)
fscanf(fp, "%d %d %d %d", &second[i][0], &second[i][1], &second[i][2], &second[i][3]);
/*
printf("%ld\n%ld\n", first_num, second_num);
for(i=0;i<first_num;i++)
printf("%.6f %.6f %.6f \n", first[i][0], first[i][1], first[i][2]);
for(i=0;i<second_num;i++)
printf("%d %d %d %d \n", second[i][0], second[i][1], second[i][2], second[i][3]);
*/
free(first);
free(second);
return 0;
}
0342デフォルトの名無しさん
2007/11/28(水) 00:44:42本当にありがとうございました。
それにしても、同じ大学の奴がいるみたいで2重カキコみたいになってしまった・・・
軽く確認したつもりだったんだけど・・・以後気を付けます、つか自分で頑張ります。
0343デフォルトの名無しさん
2007/11/28(水) 00:55:061.番号を保持するint型のno、氏名を保持するchar型配列(19文字入力できるこ と)nameを持つ構造体dateを作成する。
2.data構造体へのポインタを10個保持する配列をmain関数内に作成する(今回は10個でよいが将来的には増える可能性を考慮してほしい)。
3.push関数により、main関数が持つdata構造体へのポインタを10個保持する配列へ指定された内容を保持したdate構造体を作成(メモリアロケートmalloc関数を利用して動的にメモリ確保)して保持する。ただし、no、nameの入力処理に関してはmain関数で行うことにする。
4.pop関数により、main関数が持つdata構造体へのポインタを10個保持する配列からdata構造体のポインタを取得する。ただし、取得したdata構造体のポインタの指す各メンバno、nameの出力処理に関してはmain関数で行うことにする。
5.main関数内で、1.入力、2.出力、3.終了のメニューを作成し、各番号を入力することにより処理を行うものとする。
6.push関数を行ったときに配列が一杯であれば、データが一杯で入力できないことを伝える。また、pop関数を行ったときに配列が空であれば、データが無いことを伝える。
コンパイラはVC++でC言語の課題です。
問題の意図すら分かりません。
0344デフォルトの名無しさん
2007/11/28(水) 01:12:210345デフォルトの名無しさん
2007/11/28(水) 01:15:31その課題出した奴はったおしていいかも
記述が曖昧&過剰、明確に指示して欲しいところが曖昧で具体的なものがない、ついでに冗長すぎる説明で分かりづらくしている
やるきがなくなる
0346デフォルトの名無しさん
2007/11/28(水) 01:20:05freeをしないし、よく分からんな。
0347デフォルトの名無しさん
2007/11/28(水) 01:21:01とりあえず>>1読んで先にそっち理解しようぜ
#include <stdio.h>
#define size (20)
int sm=0;
struct data{ int no; char name[20]; };
void push(struct data **p, struct data v){
if(sm<size){ *(p[sm])=v; sm++; }
else printf("Cannot push data\n");
}
struct data *pop(struct data **p){
if(sm>0){ sm--; return p[sm]; }
else{ printf("No pop data\n"); return NULL; }
}
... つづく ...
int i, k;
struct data *d[size], t, *p;
for(i=0; i<size; i++)
d[i]=(struct data*)malloc(sizeof(struct data));
for(;;){
printf("-----\n1. input\n2. output\n3. exit\ninput number: ");
scanf("%d", &k);
switch(k){
case 1:
printf("number, name: ");
scanf("%d,%19s", &t.no, t.name);
push(d, t);
break;
case 2:
p=pop(d);
if(p!=NULL)
printf("number=%d, name=%s\n", p->no, p->name);
break;
case 3:
return;
}
}
}
0351デフォルトの名無しさん
2007/11/28(水) 01:37:01http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5347.txt
0352デフォルトの名無しさん
2007/11/28(水) 01:38:360353デフォルトの名無しさん
2007/11/28(水) 01:43:05たぶん構造体のchar[]をコピーし忘れてるとかだと思いたいんだが
構造体ってメモリコピーでなかったっけ?
仕様と違うとかは正直スマン買った
0354デフォルトの名無しさん
2007/11/28(水) 01:45:12皆さんのソースコードを参考にもう少し頭を捻ってみます。
スタックってもっと簡潔に書けるものだと思ってた・・・。
0355デフォルトの名無しさん
2007/11/28(水) 02:03:18今日はもう寝よう
0356デフォルトの名無しさん
2007/11/28(水) 02:05:470357デフォルトの名無しさん
2007/11/28(水) 02:14:13何かヒントとかあったら教えてください。お願いします。
0358デフォルトの名無しさん
2007/11/28(水) 02:19:01c言語でhttpとかを扱って、それをテキスト解析すればいい。
1.セットしたURLのhtmlファイルを取得する
2.取得したhtmlファイルを解析し、特定の番号の直前を抜き出す(テキスト解析)。
3.特定の番号の直前が不適切なら1.に戻る。
4.目的の番号ならば書き込み動作を行う(たぶんここが面倒くさい)
やることの半分はテキスト解析。
0359デフォルトの名無しさん
2007/11/28(水) 03:02:09[2] 問題文(含コード&リンク):
課題1に追加して、リストの先頭ポインタを渡すと、
IDと名前を入力させてリストの適切な位置に挿入する
関数void insert_person(PERSON *)を作成せよ。
・メイン関数から呼び出して、動きを確かめる。
このとき、clear_personよりも前にinsert_person
を呼び出すように注意すること。
・IDは重複せず、リストをたどるごとに必ず増加する
ものとする。また、先頭のIDより小さいIDは挿入
されないものとする。
(実行例)
ID:5
Name:Mary
ID:24
Name:Alice
ID:-1
1:Jhon
5:Mary
24:Alice
insert_ID:20
Name:Fred
5:Mary
20:Fred
24:Alice
課題1「http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5342.txt」
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C
[4] 期限:29日 PM:12時
0360デフォルトの名無しさん
2007/11/28(水) 03:03:58構造体を用いて作成したものです。
0361デフォルトの名無しさん
2007/11/28(水) 03:39:23レスありがとうございます。
できればソースコードなんかいただけないでしょうか?
すみません....
0362デフォルトの名無しさん
2007/11/28(水) 03:46:06ここら辺を参考に。
ttp://x68000.q-e-d.net/~68user/net/c-open.html
0363デフォルトの名無しさん
2007/11/28(水) 03:57:14これvoid insert_person(PERSON *)であってる?
void insert_person(PERSON **)とか、
PERSON *insert_person(PERSON *)とかじゃない?
0364デフォルトの名無しさん
2007/11/28(水) 09:23:34[1] 授業単元: C言語
[2] 問題文(含コード&リンク):初項と交差と表示する素数の順番目を入力しその指定した番目の素数を出す。
例
初項2、交差3、素数の順番目4
A,17
[3] 環境
[3.1] OS:vineLinux4.1
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)C言語
[4] 期限: 今日の昼2時まで
どうかお願いします。
0365デフォルトの名無しさん
2007/11/28(水) 09:24:40[1] 授業単元: C言語
[2] 問題文(含コード&リンク):初項と交差と表示する素数の順番目を入力しその指定した番目の素数を出す。
例
初項2、交差3、素数の順番目4
A,17
[3] 環境
[3.1] OS:vineLinux4.1
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)C言語
[4] 期限: 今日の昼2時まで
どうかお願いします。
0366デフォルトの名無しさん
2007/11/28(水) 09:25:12[1] 授業単元: C言語
[2] 問題文(含コード&リンク):初項と交差と表示する素数の順番目を入力しその指定した番目の素数を出す。
例
初項2、交差3、素数の順番目4
A,17
[3] 環境
[3.1] OS:vineLinux4.1
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)C言語
[4] 期限: 今日の昼2時まで
どうかお願いします。
0367デフォルトの名無しさん
2007/11/28(水) 09:31:510368デフォルトの名無しさん
2007/11/28(水) 09:33:180369デフォルトの名無しさん
2007/11/28(水) 09:33:11違うか。言うならテンプレ厨?
0370310
2007/11/28(水) 09:34:06…が、各出現回数が表示されてないと再提出を喰らってしまいましたorz
このプログラムにどう追加すれば良いのでしょう。
0371デフォルトの名無しさん
2007/11/28(水) 09:41:09初項と公差によっては解なしになるんだけど、その場合の処理はどうすんの?
0372364
2007/11/28(水) 09:48:21すみません、問題文が抜けてました。
初項<=9307、公差<=346、素数の順番目<=210です。
なんか連投されていてすみません。
0373デフォルトの名無しさん
2007/11/28(水) 09:58:110374デフォルトの名無しさん
2007/11/28(水) 10:08:500375デフォルトの名無しさん
2007/11/28(水) 10:56:21また新たな課題を出されたのですが、これはどうすれば良いのでしょうorz
[1] 授業単元: C言語
[2] 問題文:以下のプログラムに、エントロピーを計算し表示させる行を追加しなさい。
int main(void)
{
char buffer[1024];
unsigned int cnt[256];unsigned int all;
int i;
for(i = 0;i < 256;++i) cnt[i] = 0;
gets(buffer);
for(i = 0;buffer[i]!='\0';++i){
++cnt[(unsigned char)buffer[i]];
}
all = i;
printf("文字 出現数 出現確率\n");
for(i = 0;i < 256;++i)
if(isprint(i)&&cnt[i])
printf(" \"%c\" %4u %7.3f\n\%",(unsigned char)i,cnt[i],cnt[i]*100.0/all);
return 0;
}
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++ 6.0
[3.3] 言語:C
[4] 期限:11月28日午後17時まで。
[5] その他の制限:特にありません。
0376デフォルトの名無しさん
2007/11/28(水) 11:26:32これからあとはなんとかがんばるよ。
ありがと!
0377デフォルトの名無しさん
2007/11/28(水) 11:43:52[1] 授業単元: C言語
[2] 問題文: テキストファイルを読み込んで16進数で表示させる
コマンドプロンプトから、コマンド名とテキストファイル名、
1行あたりに表示するバイト数を渡せる事
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C++
[4] 期限:11月28日
[5] その他の制限: 特に無し
よろしくおねがいします
0378デフォルトの名無しさん
2007/11/28(水) 13:31:08[2] 問題文(含コード&リンク):いろいろな整数値a,bに対してtを媒介変数として、
座標がx=cos(2πat)、y=sin(2πbt)で表される曲線を描くlisajous関数を作成しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] Astex
[3.3] 言語:C
[4] 期限: 2007/11/30 15時
[5] その他の制限:特にありません。お願いします。
0379デフォルトの名無しさん
2007/11/28(水) 15:11:05[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5348.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: 2007年11月28日(今日)まで(明日の朝までなら大丈夫かも)
[5] その他の制限:
できれば自分が考えたコードを直して作ってもらいたいです。
基本if文やfor文だけで作っていただけるとありがたいです。
0380デフォルトの名無しさん
2007/11/28(水) 15:28:021-3:
for (i = 0; i < N/2; i++) {
if (a[i] == a[N-1-i]) {
printf("a[%d] = %d\n",i, a[i]);
}
}
0381デフォルトの名無しさん
2007/11/28(水) 15:32:52偶数、奇数は次のようにして判断できる。
if (n % 2 == 0) {
//偶数
} else {
// 奇数
}
0382デフォルトの名無しさん
2007/11/28(水) 15:37:00なので大学のネットからです
>>363
課題1はただのポインタで大丈夫です。(当方の環境では動作確認してあります。)
359を作る上でポインタのポインタにした方が良い場合、変えてもらって大丈夫です。
0383デフォルトの名無しさん
2007/11/28(水) 15:37:06あと結果を参照するときの配列のindexがおかしい。
n = 5の場合は、a[0]〜a[4]まであって、中央値はa[2]。
n = 6の場合は、a[0]〜a[5]まであって、中央値は(a[2] + a[3])/2.。
一般化すると、
nが奇数の場合は、a[(n-1)/2]。
nが偶数の場合は、(a[(n-1)/2-1] + a[(n-1)/2])/2。
n/2の結果が整数に丸められることを利用すれば、
nが奇数の場合は、a[n/2]。
nが偶数の場合は、(a[n/2-1] + a[n/2])/2。
0384383
2007/11/28(水) 15:38:210385デフォルトの名無しさん
2007/11/28(水) 15:40:19前半はおまいさんのコードにこれを追加すればいいんでないかな。
/* 1-3 */
for(i=0;i<(N+1)/2;i++){ /* 配列の真中まで */
if(a[i]==a[N-i-1])printf(" %d",i);
}
後半は…結構いいところまで行ってるけど
「つまった」の意味がよくわからん。
とりあえず…
・nasi ってなくても while 抜けてから if(n==0) でいいんじゃ?
・if 文の中の比較のつもりだろうけど全部 = になってる。正しくは ==
・l=1; にしたなら l 使ってあげようよ
・m = n/2 多分これ剰余だよね? % 演算子。
0386366
2007/11/28(水) 16:20:333の方のアドバイスをいただいたところや最初の入力された要素での繰り返し判定を直してみました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5349.txt
これで今Windows環境下でコマンドプロンプトでコンパイルして実行したのですが、
負の値を入力するとEnterを押した直後にプログラムのウィンドウが消えてしまいます
0387×366→○379
2007/11/28(水) 16:22:32とりあえず学内のLinuxのPCでも試してみます
0388デフォルトの名無しさん
2007/11/28(水) 16:48:49>>383は間違ってるってば・・・。正しくは、
一般化すると、
nが奇数の場合は、a[(n-1)/2]。
nが偶数の場合は、(a[n/2-1] + a[n/2])/2。
n/2の結果が整数に丸められることを利用すれば、
nが奇数の場合は、a[n/2]。
0389デフォルトの名無しさん
2007/11/28(水) 17:24:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5350.txt
0390389
2007/11/28(水) 17:33:53(head->next)->id = id;
strcpy((head->next)->name, name);
の下に
(head->next)->next = NULL
を追加
0391デフォルトの名無しさん
2007/11/28(水) 19:32:54ありがとうございます。
ID、名前の挿入は出来てたのですが、適切な位置の検索がやり方が
わからなくてずっと悩んでいました。
実際のプログラム見て納得がいきました、重ねてありがとうございます。
0392デフォルトの名無しさん
2007/11/28(水) 19:55:05>>312じゃダメなの?
0393デフォルトの名無しさん
2007/11/28(水) 21:31:53#include<math.h>
main()
{
int x1,x2,x3,y1,y2,y3,pq,qr,rp;
printf("点pの座標を入力して下さい----> ");
scanf("%d %d", &x1, y1);
printf("点qの座標を入力して下さい----> ");
scanf("%d %d", &x2, y2);
printf("点rの座標を入力して下さい----> ");
scanf("%d %d", &x3, y3);
pq=sqrt((x2-x1)^2+(y2-y1)^2);
qr=sqrt((x3-x2)^2+(y3-y2)^2);
rp=sqrt((x3-x1)^2+(y3-y1)^2);
if(((pq^2+qr^2)>rp^2)||((pq^2+rp^2)>qr^2)||((qr^2+rp^2)>pq^2))
printf("鋭角三角形\n");
else{
if(((pq^2+qr^2)=rp^2)||((pq^2+rp^2)=qr^2)||((qr^2+rp^2)=pq^2))
printf("直角三角形\n");
else
printf("鈍角三角形\n");
}
printf("pq=%e\n",qr=%e\n",rp=%e\n");
return(0);
}
ここまで一応自力でやってみたんですけど間違っているようで、課題がまったく進まず困っています。
よろしくよろしくお願いします。
0394393
2007/11/28(水) 21:37:54[1] 授業単元:プログラミング
[2] 問題文(1.平面に点P、点Q、点Rが有ります。この3点
のX座標値とY座標値をキーボードから入力して
下さい。
2.辺PQ、辺QR、辺RPの長さを求め表示して下
さい。
3.鋭角三角形、直角三角形、鈍角三角形かを
判別して下さい。
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (Cでお願いします)
[4] 期限: (2007/11/28まで)
よろしくお願いします。
0395デフォルトの名無しさん
2007/11/28(水) 21:42:18階乗の計算はpow関数を使う。
x^2がしたいならpow(x,2)だ。
0396デフォルトの名無しさん
2007/11/28(水) 22:28:45[2] 問題文(含コード&リンク):めいろをとくプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5353.zip
処理するファイルがあるのでうpしました。
問題も一緒に入れてあります。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C言語
[4] 期限:30日まで
[5] その他の制限:
経路を埋めると、めいろが壊れてしまってさっぱりです。
よろしくお願いします
0397デフォルトの名無しさん
2007/11/28(水) 22:35:00[2] 問題文(含コード&リンク):
1.要素の表示、挿入、削除、線形探索を行う関数を作成しなさい。
2.リストの先頭(ダミー要素の次)に、3つ以上値を追加し、
キーボードからターゲットを入力して、線形探索を実行しなさい。
3.また探索に成功した要素は先頭に移動し、
表示の関数を使ってリストの内容を確認しなさい。
【ヒント】
・構造体の名前は struct grade とし、新たに glist 型として定義する。
・構造体のメンバは、char name[40]、int score、及びポインタnext。
・動的なメモリの確保を使う、要素の挿入の関数を実行して、値を格納する。
・キーボードからターゲット(点数)を入力し、探索を実行する。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: c
[4] 期限: 11/29まで
[5] その他の制限: #defineは、なしで
お願いします
0398デフォルトの名無しさん
2007/11/28(水) 22:49:21[2] 問題文(含コード&リンク):1(1から90まで適当に、二次元配列に格納されている数値を小さい順に並べ替えなさい。)
2(scanf で取得した数値を 2 ・8 ・16 進数で出力する関数を含んだプログラムを製作しなさい。
条件 出力する際の変換指定子は「s」とする。(文字列として出力すること。)
)
[3] 環境
[3.1] OS: Windows XP SP2
[3.2] コンパイラ名とバージョン: Borland C++ Compiler
[3.3] 言語: C言語
[4] 期限: 急ぎで申し訳ないのですが11月30日までよろしくお願いいたします。
[5] その他の制限:初心者です。ポインタはまだ習っていません。できれば簡単なものでお願いいたします。
注文が多くてすいません。
よろしくお願いいたします。
0399デフォルトの名無しさん
2007/11/29(木) 00:13:06あれ?何も出ない、止まらない。
0400デフォルトの名無しさん
2007/11/29(木) 00:41:44このあたりを参考にすると、たぶん課題の意図に従ったアルゴリズムになる。
(リストへの追加)
「Node *n1」*next⇒「Node *n〜」
↑追加「Node *n2」
n2->next = n1->next;
n1->next = n2;
片方向リストではある要素のポインタが分かっているとき
その後にしか挿入できない。
(リストの検索)
*head ⇒n「value=1」*next⇒「value=5」⇒...⇒「value=2」⇒NULL
Node *n;
for(n=head; n!=NULL; n=n->next){
if(n->value==5) printf("見つかった\n");
}
0401デフォルトの名無しさん
2007/11/29(木) 01:06:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5354.txt
0402デフォルトの名無しさん
2007/11/29(木) 01:37:38改造元の課題1の説明が不十分でした。
課題1の仕様はIDと名前を読み込んでいってIDに「-1」が入力されたら、
IDと名前を読み込み終えて結果をリスト表示する仕様です。
>>359のはIDに「-1」が入力されたら、IDと名前を読み込み終え、追加したいIDと名前の入力を求めてそれを挿入するアルゴリズムです。
ID:1
Name:kawada
ID:3
Name:sozawa
ID:8
Name:ichigo
ID:-1 (ここでID:に-1を入れるとループを抜けてリストを表示。)
1:kawata
3:ozawa
8:ichigo
>>400
自分にはそのコードの内容が良く分からないので、組み込むのは難しいです。
0403デフォルトの名無しさん
2007/11/29(木) 01:45:45[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):
コマンドラインから入力された文字列に小文字のアルファベットが含まれていた場合にはすべて大文字に変換し、その文字列を昇順にソートして表示するプログラムを作りなさい。
また、パラメータ文字数が2つ以上入力されなかった場合には、エラーメッセージを表示させ、終了させること。
-----例1------------------------
program ringo apple Ringo
*** data1 ***
ringoA
apple
ringoB
*** data2 ***
APPLE
RINGOA
RINGOB
--------------------------------
---例2--------------------------
program One
Usage : program STR1 STR2 [STR3 ... ]
--------------------------------
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:VisualC++2005ExpressEdition
[3.3] 言語:C
[4] 期限:2007年11月30日23:59まで
[5] その他の制限: 制御文、配列、構造体、関数、ポインタ
よろしくお願いします。
0404デフォルトの名無しさん
2007/11/29(木) 04:32:21> ringoA
> apple
> ringoB
ringoAとringoBはどっからでてきたwwwwwwwwwww
# ringoが2回出てきたからです
→アルファベットで足りない場合はどーすんだろなwwwwwww
0405403
2007/11/29(木) 05:27:46正しくは
program ringoA apple ringoB
*** data1 ***
ringoA
apple
ringoB
でやんすm(_ _)m
0406デフォルトの名無しさん
2007/11/29(木) 06:02:29[2] 問題文(含コード&リンク):
課題1-1
99999 以下の整数の引数をとり、受験番号を C00001 から順に C00002 の ように引数の数だけ発生させ、 さらに各受験番号に対して乱数で発生させ た点数を組み合わせたテストファイルを作るプログラムを作りなさい。
但し、点数は、 0 点から 5 点までを乱数で 20 回発生させ和を取ること で求めなさい。 引数のとりかた、乱数の発生の仕方は付録(http://edu.net.c.dendai.ac.jp/ad/1/2007/huroku.html)を参照のこと。
次に、作成したプログラムを利用して、 100 人分のテストファイルを作成 しなさい。
課題1-2
作成した点数表に対して、手作業で合格最低人数を 20人、40人、60人とし たときの合格最低点と合格人数をそれぞれ求めなさい。
但し、合格最低点とは合格最低人数 20 人であれば、 20 位の点数のことである。また、合格人数とは合格最低点以上を得点している人数のこととする。
なお、手作業の代わりに、表計算ソフトを使用しても良い。但し、表計算ソフトを使用した際は、必ず表の使用方法や、使用した関数の説明を行なうこと。
課題1-3
点数表を読み込み、点数の高い順に出力するプログラムを作成しなさい。プログラムにおいて点数表の容量を制限してはいけない。
コンピュータのメモリが許す限り大きな点数表も表示できること。
次に、作成した点数表に対し、実行した結果を示しなさい。
0407デフォルトの名無しさん
2007/11/29(木) 06:03:52そして、プログラムに対して、作成した点数表と、合格最低人数として、 20 人、40人、60人をそれぞれ与え、合格最低点を求めなさい。
課題1-5合格最低点を引数に取り、受験番号順に合格者リストを表示するプログラムを作りなさい。
そして、 1-4 で得られた 3 種類の合格最低点をそれぞれ与え、合格者リストを作成しなさい。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:mingw-jp
[3.3] 言語:C++
[4] 期限:2007年12月5日20:00
[5] その他の制限: ファイルの入出力は標準入出力でも、ファイルの入出力でもどちらを使用しても良い。
但し、ファイルの入出力を使う際は、ファイルの非存在などのエラー処理は必ず行うこと。
一文字の処理に、文字列の文字数に比例した時間かかったり、一行の処理に全体の行数分の時間がかかるようなプログラムは大幅に減点します。
よろしくお願いします。
0408デフォルトの名無しさん
2007/11/29(木) 06:27:43[2] 問題文:次のデータに対して0≦x≦1.4の範囲で、台形公式により面積を求めよ。
データ http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5355.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: 2007年12月1日まで
[5] その他の制限:1.入力はテキストファイルからやると楽
2.出力はディスプレイ上でOK
お願いします。
0409デフォルトの名無しさん
2007/11/29(木) 07:00:01やりたいのはこういうことじゃない?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5356.txt
0410翔 ◆dkJI/P7Y32
2007/11/29(木) 12:07:13[2] 問題文 C言語を使ったAタイプスロットマシンの作成。
ベル リプレイ スイカ チェリー
枚数 15枚 最遊戯OR3枚 8枚 2枚(角4)
確率 1/5 1/10 1/45 1/8
ボーナス確率
BIG 1/150 REG 1/90
ボーナス中確率と払い出し枚数
ベル リプレイ
枚数 15枚 15枚+JACIN
確率 1/5 4/5
リール配列 be=ベル re=リプレイ su=スイカ ch=チェリー 7=big図柄 3=reg図柄
左 re,7 ,3 ,be,re,su,3 ,ch,be,re,su,3 ,ch,be,re,su,ch,su,be,re,su
中 3 ,7 ,3 ,re,be,ch,ch,re,be,7 ,3 ,re,be,ch,7 ,ch,su,re,be,ch,be
右 3 ,7 ,re,be,su,ch,be,re,su,re,ch,7 ,be,su,re,3 ,re,be,su,be,re
操作方法 矢印↑でベット&レバーオン、←、↓、→で左、中、右リール停止
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限: ([2007年12月14日まで]
[5] その他の制限:WINAPIを使って画像を表示する。リール図柄はこちらで用意してあります。
通常ゲーム、確定から終了まで、JAC中にモジュール分割する。
通常時は3枚掛け、JAC中のみ1枚掛け。
これができないと学校卒業できません。本当にお願いします。
0411デフォルトの名無しさん
2007/11/29(木) 17:32:08#include <stdio.h>
#include <string.h>
void upper(char *str){
for(;*str != '\0';++str) if(*str >= 'a' && *str <= 'z') *str += 'A' - 'a';
}
int main(int argc , char **argv){
int i,j;
char *tmp;
if(argc < 1+2){
puts("Usage : program STR1 STR2 [STR3 ... ]");
return 1;
}
puts("*** data1 ***");
for(i=1;i<argc;++i){
puts(argv[i]);
upper(argv[i]);
for(j=i;j>1&&strcmp(argv[j-1],argv[j])>0;--j){
tmp = argv[j-1];
argv[j-1] = argv[j];
argv[j] = tmp;
}
}
puts("*** data2 ***");
for(i=1;i<argc;++i) puts(argv[i]);
return 0;
}
0412デフォルトの名無しさん
2007/11/29(木) 17:34:22[2] 問題文(含コード&リンク):
任意の個数の点のx座標をxという配列に、y座標をyという配列に格納する。
同じ点があったら、その旨を出力せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 配列まで習ってます
0413デフォルトの名無しさん
2007/11/29(木) 21:58:22http://edu.net.c.dendai.ac.jp/ad/1/2007/kadai.html
なお、この問題は早々に 2ch に投稿され、既に解答も寄せられています。同じ掲示板に何度も同じ問題を投稿するのはマナー違反ですので、もう新たに 2ch にこの問題を投稿しないようにして下さい。
前スレに書いてあるだろ
何回も聞くな糞が
[2] 問題文(含コード&リンク):
次のような構造体struct PRICEがある時,3個の商品名と値段を入力する.
その後,商品名を入力するとその値段を出力するプログラムを作成しなさい.
また,商品名にendと入力するとプログラムを終了するようにしなさい.
struct PRICE{
char *name;
int price;
};
[3] 環境
[3.1] OS: WindowsXP
[3.2] VC6.0
[3.3] 言語: C++
[4] 期限: 2007年11月30日23:59
[5] その他の制限:
使用する関数は
malloc()
free()
strcpy()
strcmp()
strlen()
printf(), scanf()
0415デフォルトの名無しさん
2007/11/30(金) 01:30:42[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5362.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2007年11月30日18:00まで
[5] その他の制限:リスト構造の単元なので、リスト(単方向、双方向はどちらでも可能)の制作〜活用が条件となっています
0416デフォルトの名無しさん
2007/11/30(金) 02:24:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5363.txt
双方向リストで作った。が、投稿してからミスに気づいたorz
case'd':内 Delnode(root,num); => root=Delnode(root,num);
case'a':内 Addnode(root,line); => root=Addnode(root,line);
以上を変更してください。
0417416
2007/11/30(金) 02:38:28if(num==1){
p=p->next;
free(p->prev);
return p;
}
Delnodeのfor文の前にこのコードを挿入してください。
0418デフォルトの名無しさん
2007/11/30(金) 11:45:14[1] 授業単元: c
[2] 問題文:一定の文字からなる列sを読み込み、以下の条件を満たす同じ個数の文字からなる列tを出力するプログラムを作りなさい。
ただし、以下で単語とは、空白以外の文字からなる列のこととする。
1、s中の単語は同じ順番でtに現れる。
2、t中では単語は1つの空白に区切られる。
3、t中に最初の単語の最初の文字から最後の単語の文字までは列全体の中央に位置し、前後は空白である。
例えば、文字の列
○This○○○is○○a○○○○good○○○program○○○
を入力すると
○○○○○○This○is○a○good○program○○○○○○
が出力される。
ここで、○は空白をあらわすものとする。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: ASTEC-X 6.0
[3.3] 言語: c
[4] 期限: 12/13まで
0419デフォルトの名無しさん
2007/11/30(金) 12:46:51ぬあに、半分以上やっちまった
けっこうショックですなw
0420デフォルトの名無しさん
2007/11/30(金) 15:05:50[2] 問題文(含コード&リンク):下記のURLを参照してください。課題0、1,2です。
[3] 環境
[3.1] OS: Linux
[3.2] gcc 3.2.2-5 Red Hat Linux (Borland C/C++)
[3.3] 言語: できるだけC++でお願いします
[4] 期限: 2007/12/3(月)
[5] その他の制限: コンストラクタ/デストラクタ、継承などはまだ全然習ってないです
非線形方程式についての問題です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5365.zip
期限は12/3(月)ですが過ぎても募集してますのでどうぞよろしくお願いします
0421デフォルトの名無しさん
2007/11/30(金) 21:18:44[2] 問題文(含コード&リンク):
3つの数値が配列a[0],a[1],a[2]に入っている。ただし負の値はない。
この中から一番小さい数値の配列の添え字を返す int minimum(double x, double y, double z)を定義せよ。
ただし一番小さい値が0の場合は、0でないもので、最小の添え字を返す。
たとえば a[0]=3.0 a[1]=0.0 a[2]=20.0 とすれば、a[0]が最小となるので、0を返す。
もし3つの値がすべて0だったなら-1を返せ
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2007/12/1
[5] その他の制限:
0422デフォルトの名無しさん
2007/11/30(金) 21:23:390423デフォルトの名無しさん
2007/11/30(金) 21:25:420424デフォルトの名無しさん
2007/11/30(金) 21:55:460425デフォルトの名無しさん
2007/11/30(金) 22:13:24[2] 問題文(含コード&リンク):
char型の文字列で'/'が多数含まれているとする。
その文字列の一番右の'/'のあとにかかれている文字列を表示するプログラムを作れ。
つまり'/home/2th/Cpro/kadai2-1/work2/sando.txt'ならsando.txt
'/home/1th/working/prog.c'ならばprog.c
みたいな感じで。
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2007/12/1の12時まで
[5] その他の制限:
0426デフォルトの名無しさん
2007/11/30(金) 22:32:27#include <stdio.h>
#include <float.h> /* DBL_MAXを使う場合だけ */
#define EPS 1e-12 /* double型を==で評価したらだめ。*/
/*
* 全部が0なら-1、そうでなければ前から0,1,2番を返す
*/
int minimum(double x,double y,double z)
{
double min = x+y+z; /* x,y,zは非負なのでそれぞれはx+y+zを超過しない*/
/* なんでもありなら float.hでDBLの最大値をゲットするんだ!!
http://www.cc.kyoto-su.ac.jp/~yamada/programming/float.html
double min = DBL_MAX;
*/
int id = -1;
if( (min >= x) && (x >= EPS) ) { min = x; id = 0;}
if( (min >= y) && (y >= EPS) ) { min = y; id = 1;}
if( (min >= z) && (z >= EPS) ) { min = z; id = 2;}
return id;
}
int main(){
double a[3]={3.0 , 0.0 ,20.0};
/* double a[3]={0.0,0.0,0.0}; */
/* double a[3]={3.0,0.01,20.0}; */
printf ("minimun index = %d", minimum(a[0],a[1],a[2]));
}
0427デフォルトの名無しさん
2007/11/30(金) 22:42:59#include <stdio.h>
int main(){
char buf[]="/home/2th/Cpro/kadai2-1/work2/sando.txt";
int n;
for(n=strlen(buf);n>=0;n--){
if(buf[n]=='/') break;
}
if(n<0) {
printf("/が含まれない");
}else{
/* 次の一行意味わかる?*/
printf("最後の/以降は『%s』です\n",&buf[n+1]);
/* for文を使って地道に表示しても良い…*/
printf("最後の/以降は『");
for(n=n+1;n<strlen(buf);n++){
printf("%c" , buf[n]);
}
printf("』");
}
}
0428デフォルトの名無しさん
2007/11/30(金) 22:50:21#include <stdio.h>
#define EPS 1e-6
int main(){
double x[]={1.0 , 1.0 , 3.0 , 1.0 , 1.0};
double y[]={1.0 , 2.0 , 1.0 , 1.0 , 1.0};
int n = 5; /* データ件数 */
int i,j;
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if( ( fabs(x[i]-x[j]) < EPS ) && ( fabs(y[i] - y[j]) < EPS) )
printf("id=%dとid=%dは同じ座標\n",i,j);
}
}
}
0429デフォルトの名無しさん
2007/11/30(金) 23:32:31ある座標系が2つ(x1,y1),(x2,y2)が存在して、その座標系に
それぞれ10個の要素があったとします。各要素のx1,もしくはx2座標
とy1,y2座標に重複はないものとします。
要素 1 2 3 10
ex 座標系1・・・(x1,y1)={(4,3),(2,6),(5,9),,,,(10,1)}
座標系2・・・(x2,y2)={(1,5),(7,5),(9,8),,,,(3,4)}
この2つの座標系において要素間の位置関係が等しくなっている全ての要素の
のなかで一番要素数が多いものを割り出す。プログラミングは
どのように組めばいいのでしょうか?よろしく願いします。
0430デフォルトの名無しさん
2007/11/30(金) 23:35:38C、C++どちらでもかまいません。
0431デフォルトの名無しさん
2007/11/30(金) 23:38:40[2] 問題文(含コード&リンク):
算術演算子を用いずに、引数x,yの和を返す int add(int x,int y)を定義せよ。
同様に、引数x,yの差を返す int subtract(int x,int y)定義せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland C++ Compiler
[3.3] 言語:C
[4] 期限:12/1 02:00まで
[5] その他の制限:
0432デフォルトの名無しさん
2007/11/30(金) 23:43:16#include <stdio.h>
int main(){
#if 1
int h = 7, w = 11;char buf[7][12] = {
"+-+-+-+-+-+","S | |","+-+ + +-+ +","| | |","+-+ + +-+ +","| | | | |","+-+-+-+-+G+",};
#else
int h = 201, w = 81;char buf[][82] = {
"+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+",
"S | | | | | | | | | | | | | | | |",
: ちゃんと書いてね。秀丸エディタの置換で正規表現選択+\nを"\n,"にするといい感じ。
"+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+G+",
};
#endif
int i,j,s=1,old_s = -1,wall;char c;
while(s != old_s){
int i,j;old_s = s;
s = 0;
for(i=1;i<h-1;i++){for(j=1;j<w-1;j++){if(buf[i][j] == ' '){
wall = 0; s++;
c = buf[i-1][j];if(c != ' ' && (c != 'S' && c != 'G') ) wall++;
c = buf[i+1][j];if(c != ' ' && (c != 'S' && c != 'G') ) wall++;
c = buf[i][j-1];if(c != ' ' && (c != 'S' && c != 'G') ) wall++;
c = buf[i][j+1];if(c != ' ' && (c != 'S' && c != 'G') ) wall++;
if(wall >=3 ) buf[i][j]='#';
}}}
}
for(i=0;i<h;i++){for(j=0;j<w;j++){printf("%c",buf[i][j]);}printf("\n");}
}
0433デフォルトの名無しさん
2007/12/01(土) 00:08:48当方で確認した環境は WindowsXP(32bit) / gcc 3.4.4 です。
問題 (0), (1) は使う関数は自由とのことですので、ごく簡単なもので
行いました。 (2) は共通接線を求めるのが難しいのでパスしました。
すみません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5366.txt
0434デフォルトの名無しさん
2007/12/01(土) 00:27:12当方で確認した環境は、WindowsXP / gcc 3.4.4 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5367.txt
0435デフォルトの名無しさん
2007/12/01(土) 01:34:53#include <stdio.h>
#include <string.h>
#define MAXLINE 80
main()
{
int i=0,j=0,len,spclen;
char *l,line[MAXLINE+1],str1[MAXLINE+1],str2[MAXLINE+1];
printf("文字列入力>");
fgets(line,MAXLINE,stdin);
len = strlen(line);
for(i=0;line[i]!='\0';i++){
if(line[i]!=' ')
str1[j++]=line[i];
if(i>0&&line[i-1]!=' '&&line[i]==' ')
str1[j++]='_';
}
str1[j-2]='\0';
spclen = len - strlen(str1);
for(i=0;i<spclen/2;i++)
str2[i]='_';
str2[i]='\0';
strcat(str2,str1);
for(i=0;str2[i]!='\0';i++);
for(j=0;j<spclen/2;j++)
str2[i++]='_';
str2[i]='\0';
printf("列s=%s列t=%s\n",line,str2);
}
0436デフォルトの名無しさん
2007/12/01(土) 01:47:22[2] 問題文(含コード&リンク):2変数非線形連立方程式の解を求めるnewton-rapson法のプログラムを作成し以下の問題を解け
�@x^2+y^2-4=0 と x+y=0 で初期点(x(x0),y(y0))∈[-4,-4]×[4,4]を10000個とり、初期点に対する収束値の関係を2次元で図示する。
収束値の関係の座標を出すこと。
�Ax^3-3xy^2-8=0 と x^3-3x^2y=0 で初期点(x(x0),y(y0))∈[-1/2,-1/2]×[1/2,1/2]を10000個以上(百万個程度を推奨する)とり、初期点に対する収束値の関係を2次元で図示する。
収束値の関係の座標を出すこと。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2007年12月1日23:00まで]
[5]その他:^は累乗を示します。たとえば、x*x=x^2です。
0437デフォルトの名無しさん
2007/12/01(土) 01:56:53#include <stdio.h>
int add(int x,int y)
{
int w;
do{
w=x;
x=x^y;
y=(w&y)<<1;
}while(y);
return x;
}
int subtract(int x,int y)
{
int w;
do{
w=x;
x=x^y;
y=((~w)&y)<<1;
}while(y);
return x;
}
int main()
{
int a=7,b=-3;
printf("%d + %d = %d\n",a,b,add(a,b));
printf("%d - %d = %d\n",a,b,subtract(a,b));
return 0;
}
0438デフォルトの名無しさん
2007/12/01(土) 03:44:14(2)問題
・与えられた個数の正の整数を格納している配列のうち、最大となる値を検出して、その値を
格納している配列要素の値を0に書き換える。すると新しい配列においては、もとの配列で
大きい方から数えて2番目の数値が最大値となっている。さらにもう一度、この新しい配列
における最大値を格納している配列要素の値を0に書き換える。するとこの時点でのさらに
新しい配列では、最初の配列において大きい方から数えて3番目の数値が最大となってい
る。このことを利用して、下記のプログラムを作成せよ。
まずメイン関数において、キーボードから正の整数の個数(100以内)を入力し、次いで実
際の数値を配列に入力する。そしてメイン関数はサブ関数に、入力した個数と配列を引数とし
て渡す。
サブ関数は、これらの配列から、まず1番目に大きい数を見つけて、それを別途設けた配列
の先頭の要素に格納し、次に2番目に大きい数を見つけてこれをこの配列の先頭から数えて
2番目の要素に格納し、という処理を最後の数に至るまで繰り返す。これにより新しい配列に
は大きい数から順に並んでいることになるので、これを引数を利用してメイン関数に渡す。(す
なわちサブ関数は引数を3つ持つことになる。1つはデータの個数を示す変数、1つは入力デ
ータを格納する配列、残りの1つはサブ関数で計算した結果を格納する配列である)
最後にメイン関数はサブ関数で計算された新配列の値を若い方の要素から順に(即ち大き
い数から順に)画面に表示する。またこの数列の中央値を表示する(中央値に小数が含まれ
る場合は、その小数を切り捨てた整数を表示することとする)。
(註)中央値とは数列を大きさの順に並べたときの中央に位置する数の値のことである。ここ
で、もし数列のサイズが偶数であったら、中央の2つの平均値をとって中央値とする。
例:15 80 34 8 48 34 11 28 23 56 19→80 56 48 34 34 28 23 19 15 11 8
(3)環境
(3.1) OS:Windows
(3.2)コンパイラ名とバージョン: 不明
(3.4)C言語
(4)期限 :12月2日
(5)基礎的なことしか習っていないのですがよろしくお願いします。できれば細かい説明もよろしくお願いします。
0439デフォルトの名無しさん
2007/12/01(土) 08:58:460440デフォルトの名無しさん
2007/12/01(土) 09:01:48[2] 問題文(含コード&リンク):
組み合わせの数nCrを定義するプログラムを作成する。
/* combination.c : nCr */
#include <stdio.h>
long factorial (int x)
{ int i;
long f;
i = 0; f = 1;
while (i < x) {
++i; f = f * i; }
printf("factorial called, %3d!=%12ld\n", x, f);
return(f); }
main() {
int n, r;
long ncr;
if (scanf("%d %d", &n, &r) != 2) {
printf("Input 2 intergers\n"); exit(1); }
if (n > 12) {
printf("Too large n=%d > 12\n", n); exit(1); }
if (n < r) {
printf("Invalid inputs: n=%d < r=%d < r=%d\n", n, r); exit(1); }
ncr = factorial(n) / (factorial(r) * factorial(n-r));
printf("n=%d, r=%d, nCr=%ld\n", n, r, ncr); }
これを参考にしてポインタを利用して値を返さないでつくる。
ヒントは変数を追加、値を返さないのでreturnを使わない。
考えてみたけどわかりません。お願いします。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (不明)
[4] 期限: (12月4日)
[5] その他の制限: ポインタは最近習いました。
0441デフォルトの名無しさん
2007/12/01(土) 09:26:35c++でpermutationを使って終り
0442デフォルトの名無しさん
2007/12/01(土) 09:38:25>>116 と同じですね。�@だけなら >>165 が回答です。
�Aは計算結果はでしてみたのですが、なんだか答えようのない感じです。
0443デフォルトの名無しさん
2007/12/01(土) 09:56:45ようするに変数のポインタを引数に追加し、そこのアドレスの値を直接書き換えろ、という問題。
void factorial(int x, long *ret){
:
*ret = f;
return;
}
long t1,t2,t3;
t1 = factorial(n);
t2 = factorial(r);
t3 = factorial(n-r);
ncr = t1 / t2 * t3;
なわけだが、これを
long t1,t2,t3;
factorial(n,&t1);
factorial(r,&t2);
factorial(n-r,&t3);
ncr = t1 / t2 * t3;
にする。
0444デフォルトの名無しさん
2007/12/01(土) 10:25:51[2] 問題文(含コード&リンク):doublyll.cpp中の cell_insert関数を完成せよ
cell_insertはデータを小さい順を保持し、新しいセルを挿入する関数
doublyll.cpp:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5368.txt
[3] 環境
[3.1] OS:win xp
[3.2] Microsoft Visual Studio .NET 2005
[3.3] 言語:c++
[4] 期限:2007年12月1日11:30まで
[5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで
よろしくおねがいします。
0445デフォルトの名無しさん
2007/12/01(土) 11:43:05[2] 文字列探索の方法である「Boyer-Moore法(BM法)」をプログラム上で実現する。
[3] 環境
[3.1] Linux
[3.2] 不明
[3.3] C
[4] 12月 1日 18時
[5] 特になし。
BM法参考
ttp://www2.starcat.ne.jp/~fussy/algo/algo7-4.htm
よろしくお願いします。
0446デフォルトの名無しさん
2007/12/01(土) 11:52:56そのページをコピペすればいいんじゃないの?
0448デフォルトの名無しさん
2007/12/01(土) 12:39:48自演で別人演じて解答催促はたまにする人いるみたいだけど。
0449デフォルトの名無しさん
2007/12/01(土) 14:52:31[2] 問題文 平行四辺形の2辺a,bとそのなす角θを引数として
その面積を返却値とする関数areaを作成せよ
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 12月5日
[5] その他の制限: 特に無し
お願いします
0450デフォルトの名無しさん
2007/12/01(土) 15:03:07double area(double a, double b, double theta)
{
return a * b * sin(theta);
}
0451デフォルトの名無しさん
2007/12/01(土) 15:12:38{
return 0.5 * a * b * sin(rad);
}
0452デフォルトの名無しさん
2007/12/01(土) 15:19:220453449
2007/12/01(土) 15:28:481] 授業単元:プログラミング言語
[2] 問題文 乱数を発生するrandを用いて-1から1までの範囲の
乱数100個を生成するプログラムを作成し、正の数の個数
負の数の個数、総数の3つをディスプレイに表示させなさい。
ただし、乱数はsrand関数を用いて毎回異なる種を用意しなさい。
なお関数randの戻り値は0〜RAND_MAXであることを利用しなさい
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 12月5日
[5] その他の制限: 特に無し
出来ればこちらもお願いします
0454デフォルトの名無しさん
2007/12/01(土) 15:33:260456デフォルトの名無しさん
2007/12/01(土) 15:46:16#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, p = 0, n = 0;
double d;
srand(time(NULL));
for(i=0; i<100; i++) {
d = 2.0 * rand() / RAND_MAX - 1.0;
if(d> 0) p++;
else if(d<0) n++;
}
printf("正の数:%d 負の数%d 総数:100", p, n);
return 0;
}
0457445
2007/12/01(土) 15:55:33「Boyer−Moore法による文字列の探索で、ヒットした回数を出力するプログラム」
です。
0459デフォルトの名無しさん
2007/12/01(土) 19:45:33難しくて、自分だけが知っていそうな質問を出して、
回答者が間違う様、解けない様を見て喜ぶ。
さらに、自分で正解を書き込んで自分の優秀さをアピールし、悦に入る。
0460デフォルトの名無しさん
2007/12/01(土) 19:48:370461デフォルトの名無しさん
2007/12/01(土) 19:53:33それもう締め切りすぎたろwww
M先生乙!
0462デフォルトの名無しさん
2007/12/01(土) 19:55:53自演でも別に構わない
0463デフォルトの名無しさん
2007/12/01(土) 20:07:38[2] 問題文(含コード&リンク):
a からスタートし、乗算のみを用いて a^n を高速に計算したい。
(たとえば a^8 ならば
a^1 * a^1 = a^2、a^2 * a^2 = a^4、 a^4 * a^4 = a^8
と計算することで、3回の乗算で計算することができる。)
n ≦ 4000 が与えられたとき、a^n を計算する最小の乗算回数を求めよ。
[3] 環境
[3.1] OS: Windows (cygwin)
[3.2] コンパイラ名とバージョン: gcc4
[3.3] 言語: どちらでも可
[4] 期限: 12月3日
[5] その他の制限: 特になし
0464420
2007/12/01(土) 20:07:43超ありがとうございます!
一応自分でも作ってはみたのですがあってるかどうか・・・
>>462
もしよければ>>420の課題2をお願いできませんか?
参考、もしくは改変だけでできそうなら以下のものをお使いください
>>433の方から解いてもらった課題0、1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5366.txt
以下は自作です
課題0
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5370.txt
課題1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5371.txt
0465デフォルトの名無しさん
2007/12/01(土) 20:32:34#include <stdio.h>
int main(void)
{
int i, j, cnt, n;
scanf("%d", &n);
for(i=0, j=1, cnt=0; j<=n; i++, j<<=1) if(j&n) cnt++;
cnt += i - 2;
printf("%d", cnt);
return 0;
}
0466デフォルトの名無しさん
2007/12/01(土) 20:47:17#include <stdio.h>
int main(void){
int i, n;
scanf("%d", &n);
for(i=0,n--;n>0;i++,n>>=1);
printf("%d", i);
return 0;
}
0467デフォルトの名無しさん
2007/12/01(土) 21:11:35n = 7 のとき 3 と出力されますが、間違っています。
正しくは 4 のはずで、以下がその手順です。
a * a = a^2,
a^2 * a^2 = a^4,
a^4 * a^2 = a^6
a^6 * a = a^7
>>465
n = 63 のとき 10 と出力されますが、間違っています。
正しくは 8 のはずで、以下がその手順です。
a * a = a^2
a^2 * a^2 = a^4
a^4 * a^4 = a^8
a^8 * a^8 = a^16
a^16 * a^4 = a^20
a^20 * a^1 = a^21
a^21 * a^21 = a^42
a^42 * a^21 = a^61
0468デフォルトの名無しさん
2007/12/01(土) 21:12:220469デフォルトの名無しさん
2007/12/01(土) 22:08:55別に自演でもいいけど、
お前は気持ち悪いな。
0470デフォルトの名無しさん
2007/12/01(土) 23:09:22「ある金額Aを日本の硬貨・紙幣を使って支払うときに
硬貨・紙幣の枚数が最小になる支払い方を計算せよ。
ただし、再帰やループは使用禁止」
とかいう宿題があったな。
絶対無理だと思ったけど、
結局、誰かが回答出してきて、
世の中、すごいやつはいるなあ、と思った記憶がある。
0471デフォルトの名無しさん
2007/12/01(土) 23:17:07全然似てないしかなり簡単
昔解いた事があるけど1分も掛からなかった
違う問題じゃない?
#include<stdio.h>
#include<math.h>
int main()
{
int x500,x100,x10;
int money_buf=0;
scanf("%d",&money_buf);
x500=money_buf / 500;
money_buf = money_buf % 500;
x100=money_buf / 100;
money_buf = money_buf % 100;
x10 =money_buf / 10;
if(x500) printf("500円硬貨は%d枚\n",x500);
if(x500) printf("100円硬貨は%d枚\n",x100);
if(x500) printf("10円硬貨は%d枚\n",x10);
return 0;
}
0472デフォルトの名無しさん
2007/12/01(土) 23:36:01ああ、じゃあ、違う問題なんだろうね。
0473デフォルトの名無しさん
2007/12/02(日) 00:34:40>絶対無理だと思ったけど
プッ
0474デフォルトの名無しさん
2007/12/02(日) 01:00:16[1] 授業単元:C/C++
[2] 問題文
テキストファイルを読みこませて
指定された行にある文字列を持ってきて表示する。
例:20行目指定
20行目:A034 59
[3] 環境
[3.1] OS: WindowsXP
[3.2] mingw-jp
[3.3] 言語:C/C++/どちらでも可できればC++
[4]期限:12月4日まで
[その他]なし
よろしくお願いします。
0475デフォルトの名無しさん
2007/12/02(日) 01:03:36int main()
{
char buf[1000];
FILE * fp = fopen("テキストファイル", "r");
for (int ic = 0; ic < 20; ++ic) fgets(buf, sizeof(buf), fp);
fputs(buf, fp);
return 0;
}
0476デフォルトの名無しさん
2007/12/02(日) 01:41:17http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5375.txt
0477デフォルトの名無しさん
2007/12/02(日) 02:20:47n = 9 のとき 5 と出力されますが、間違っています。
正しくは 4 のはずで、以下がその手順です。
a^1 * a^1 = a^2
a^2 * a^2 = a^4
a^4 * a^4 = a^8
a^8 * a^1 = a^9
0478デフォルトの名無しさん
2007/12/02(日) 05:59:19#include <stdio.h>
int f(int n)
{
int i, j, cnt;
for(i=0, j=1, cnt=0; j<=n; i++, j<<=1) if(j&n) cnt++;
return cnt + i -2;
}
int main(void)
{
int n, cnt, d = 0;
scanf("%d", &n);
cnt = f(n);
while(n%3==0) {
d += 2;
n/=3;
if(d + f(n) < cnt) cnt = d + f(n);
}
printf("%d", cnt);
return 0;
}
0479デフォルトの名無しさん
2007/12/02(日) 07:22:30a^1 * a^1 = a^2
a^1 * a^2 = a^3
a^3 * a^3 = a^9
おい、てめーが間違ってんぞ
0480デフォルトの名無しさん
2007/12/02(日) 07:39:340481デフォルトの名無しさん
2007/12/02(日) 08:56:04硬貨・紙幣なら簡単
不規則な数字群だと面倒になる
0482デフォルトの名無しさん
2007/12/02(日) 09:25:44>a^3 * a^3 = a^9
?
0483デフォルトの名無しさん
2007/12/02(日) 09:50:53逝ってよし
0484デフォルトの名無しさん
2007/12/02(日) 10:41:01n = 23 のとき 7 と出力されますが、間違っています。
正しくは 6 のはずで、以下がその手順です。
a^1 * a^1 = a^2
a^2 * a^2 = a^4
a^4 * a^1 = a^5
a^5 * a^4 = a^9
a^9 * a^9 = a^18
a^18 * a^5 = a^23
0485デフォルトの名無しさん
2007/12/02(日) 11:01:47[2] 問題文(含コード&リンク):
単語のファイルword_1.txt
niconico
video
smile
単語のファイルword_2.txt
caps
shift
の2つの使って次のようなファイルを作るプログラムを作れ
1 niconico caps
2 niconico shift
3 video caps
4 video shift
5 smile caps
6 smile shift
単語と単語の間は\tです。一番左の数字は1からスタートしてください。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2007年12月2日23:00まで]
[5]その他:
0486デフォルトの名無しさん
2007/12/02(日) 11:22:56#include <stdio.h>
#define N 3
#define L 10
int main() {
char dic1[N][L], dic2[N][L];
int i, j, k = 0, n = 0, m = 0;
FILE *fp1 = fopen("word_1.txt", "r");
FILE *fp2 = fopen("word_2.txt", "r");
for (; fscanf(fp1, "%s", dic1[n]) == 1; ++n);
for (; fscanf(fp2, "%s", dic2[m]) == 1; ++m);
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j)
printf("%d\t%s\t%s\n", ++k, dic1[i], dic2[j]);
}
0487デフォルトの名無しさん
2007/12/02(日) 12:15:23馬鹿だろお前
0488デフォルトの名無しさん
2007/12/02(日) 12:17:13よく言われる
0489デフォルトの名無しさん
2007/12/02(日) 12:20:58[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5376.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 12/4
[5] その他の制限: 特になし
0490デフォルトの名無しさん
2007/12/02(日) 13:19:39void print_mytime(struct mytime now) { printf(" %d 時間 %d 分 %d 秒", now.hour, now.minute, now.second); }
printf("時間:");
scanf("%d", &ti.hour);
printf("分:");
scanf("%d", &ti.minute);
printf("秒:");
scanf("%d", &ti.second);
0491デフォルトの名無しさん
2007/12/02(日) 14:38:53軽犯罪のにおいがプンプン漂ってくる
0492デフォルトの名無しさん
2007/12/02(日) 14:42:13新ジャンル『アルゴリズム女』
http://yutori.2ch.net/test/read.cgi/news4vip/1196506706/
サンプル、稚拙でスマン
/*------------------------------------------------------------------------------*/
男「御昼何食べる?」
女「:end; if ( FALSE == errlavele ) { GOTO step1; } else { GOTO step2; } 」
男「スパゲッティでいいか?」
/*------------------------------------------------------------------------------*/
女「while ( sub() ) { sex(); sex(); sex(); sex(); sex(); sex(); }」
男「くはっこのスキモノめ、オレ体力もつかな♪」
女「sub(){ exit(-1); } 」
0493デフォルトの名無しさん
2007/12/02(日) 14:46:44……
0494デフォルトの名無しさん
2007/12/02(日) 15:10:340495デフォルトの名無しさん
2007/12/02(日) 16:37:49計算量に関する制限はある?
0496デフォルトの名無しさん
2007/12/02(日) 17:24:25[2] 問題文:(度、ラジアン、Asin、Acos、Asin+Acosの関
数表を2次元配列を用いて作成
Aの値は100
計算する角度は0度から360度で、角度の
増加分は30度
[3] 環境
[3.1] OS: (Windowsxp)
[3.2] コンパイラ名とバージョン: (gcc 3.4 )
[3.3] 言語: (C)
[4] 期限: (12月6日まで)
[5] その他の制限: (配列名 f_t[ ] [ ]
度、ラジアン、Asin、Acos、Asin+Acosの値
を画面に表示
)
よろしくお願いします。
0497463
2007/12/02(日) 17:25:02なんだか回答を知っているように見える書き込みになってしまっていますが、
この問題は演習の問題として出たもので、質問者は正解を知りません。
なので、n ≦ 4000 を現実的に解ければ計算量はどうでもよいです。
多項式ないしは非常に小さな数のべき乗ならうれしいですが。
0498デフォルトの名無しさん
2007/12/02(日) 19:15:32誰か↓の関数を作っていただけないでしょうか?。お願いします
char nextChar(char line[], int *lineindex)
{
char ch=line[*lineindex];
if ((ch=='\n') || (ch==0XD) || (ch=='\0')) return('\0');
else {
(*lineindex)++;
return(ch);
}
}
/* char getToken(char line[], int *lineindex, char *str)
文字列lineからトークンを1つ読み出して,文字列strに書き込む.
トークンは' '(空白)または','(カンマ)または'\t'(タブ))で区切られた文字列である.
トークンの文字列の最大値はTOKENSIZE
戻り値 文字数
0(文字列が空(先頭が\0)の場合) */
//
(* ここに解答を書き加える *)
/* int tokenizer(char line[], token token[])
文字列lineをトークンに分解して,各token[]のdataに格納する.
トークンは' '(空白)または','(カンマ)で区切られた文字列である.
トークンの文字列の最大値はTOKENSIZE
戻り値 トークンの数(非負)
-1(エラーの場合) */
//
(* ここに解答を書き加える *)
0499デフォルトの名無しさん
2007/12/02(日) 19:36:07テンプレ(>>1を参照)に従って書いていただけないでしょうか?。お願いします
0500デフォルトの名無しさん
2007/12/02(日) 19:43:07[1] 授業単元:プログラミング
[2] 問題文:字句解析のプログラムの一部分の関数を完成させよ
#include <stdio.h>
#include "token.h"
char nextChar(char line[], int *lineindex)
{
char ch=line[*lineindex];
if ((ch=='\n') || (ch==0XD) || (ch=='\0')) return('\0');
else {
(*lineindex)++;
return(ch);
}
}
/* char getToken(char line[], int *lineindex, char *str)
文字列lineからトークンを1つ読み出して,文字列strに書き込む.
トークンは' '(空白)または','(カンマ)または'\t'(タブ))で区切られた文字列である.
トークンの文字列の最大値はTOKENSIZE
戻り値 文字数
0(文字列が空(先頭が\0)の場合) */
//
(* ここに解答を書き加える *)
0501デフォルトの名無しさん
2007/12/02(日) 19:43:38文字列lineをトークンに分解して,各token[]のdataに格納する.
トークンは' '(空白)または','(カンマ)で区切られた文字列である.
トークンの文字列の最大値はTOKENSIZE
戻り値 トークンの数(非負)
-1(エラーの場合) */
//
(* ここに解答を書き加える *)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 特になし
0502 ◆pgRmgTWjLw
2007/12/02(日) 20:43:50[2] 問題文(含コード&リンク):1〜10の範囲の乱数値を持つ要素数20の配列を、基本交換法(バブルソート)を用いて、
小さい値に整列するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C言語
[4] 期限:2007年12月02日22:30まで
[5] その他の制限:
0503デフォルトの名無しさん
2007/12/02(日) 20:51:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5379.cpp
とりあえず反復深化+枝刈り。
計算量は多分O(n^(k*log log n))くらいで、実質多項式時間だと思うけど、
n=3583で30秒くらい掛かる。もっとマシな方法があるかも。
0504デフォルトの名無しさん
2007/12/02(日) 21:25:18n=4000を試さないのは、止まらないからかなー?
0505デフォルトの名無しさん
2007/12/02(日) 21:26:18女の子をナンパしたいなら、まずはネットナンパから!
出会いやすいサイトから攻めていきましょう。
↓↓↓
【即会いサイト in ブログ】
http://deaigets.blog97.fc2.com/
〜管理人が実際に出会えている完全無料サイトのみ紹介しています〜
「最近の出会い系サイトの短期攻略方法」
・自分にあったサイトを2〜3個ぐらい選ぶ。
・30〜50通のメールを拡散発射!
・返信メールの振り分け作業。(サクラ排除)
・候補女の子と携帯メアド交換
・女の子と面接
この作業をしているだけで一週間で2〜3人と会えます。
0506デフォルトの名無しさん
2007/12/02(日) 21:26:26n=4000は0.004秒で返ってくる
0507デフォルトの名無しさん
2007/12/02(日) 21:34:19こんな感じ・・・だと思う、変数名は適当・・・
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX_SIZE 20
#define MAX_RAND 10
#define MIN_RAND 1
int main(){
int randList[MAX_SIZE];
srand((unsigned int)time(NULL));
for(int i = 0; i < MAX_SIZE; i++ ){
randList[i] = rand() % MAX_RAND + MIN_RAND;
}
for(int i = 0 ; i < MAX_SIZE; i++ ){
for(int j = MAX_SIZE - 1;j > i ; j-- ){
if( randList[i] > randList[j]){
int tempData = randList[i];
randList[i] = randList[j];
randList[j] = tempData;
}
}
}
for(int i = 0; i < MAX_SIZE; i++ ){
printf("randList[%d] = %d\n", i, randList[i]);
}
return 0;
}
0508デフォルトの名無しさん
2007/12/02(日) 21:50:21a=&data1[0]; でよろしいのでしょうか?
これをするとエラーが出てしまうのですが・・・
0509デフォルトの名無しさん
2007/12/02(日) 21:54:24a=(int)&data1[0];
0510デフォルトの名無しさん
2007/12/02(日) 21:55:56a=reinterprit_cast<int>(&data1[0]); かな?
0511デフォルトの名無しさん
2007/12/02(日) 21:58:31ここ質問スレじゃないよ
0512 ◆pgRmgTWjLw
2007/12/02(日) 22:00:03ありがとうございます。
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):1〜100,000の範囲の乱数値を持つ要素数100,000の配列を、基本挿入法を用いて、
小さい順に整列する各プログラムの実行時間を計測し、表示するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C言語
[4] 期限:2007年12月03日00:00まで
[5] その他の制限:
0513デフォルトの名無しさん
2007/12/02(日) 22:14:43下のような木を作ればいい。
i番目の深さのノードを作るには、
・i-1の値を2倍し、1つのノードの値とする
・0からi-2のノードを辿り、その値をi-1のノードの値とそれぞれ足し、i-1個のノードのそれぞれの値とする
・作成したノードの値を検索し、既出ならそのノードは削除する
0 1 2 3 4
1─2┬4┬8┬16
│ │ ├12
│ │ ├8
│ │ └9
│ ├6┬(12)
│ │ ├10
│ │ ├(8)
│ │ └7
│ └5┬(10)
│ ├(9)
│ ├(8)
│ └(7)
└3┬(6)
├(5)
└(4)
0514デフォルトの名無しさん
2007/12/02(日) 22:17:420515デフォルトの名無しさん
2007/12/02(日) 22:30:08時間かかるから100, 100でしかデバッグしてないけど
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX_SIZE 100000
#define MAX_RAND 100000
#define MIN_RAND 1
int main(){
int randList[MAX_SIZE];
srand((unsigned int)time(NULL));
for(int i = 0; i < MAX_SIZE; i++ ){
randList[i] = rand() % MAX_RAND + MIN_RAND;
}
for(int i = 0 ; i < MAX_SIZE; i++ ){
for(int j = i; j > 0 && randList[j - 1] > randList[j]; j-- ){
int tempData = randList[j];
randList[j] = randList[j - 1];
randList[j - 1] = tempData;
printf("readLine[%d] : time: %d, readLine[j - 1] = %d, readLine[j] = %d\n", i, clock(), randList[j - 1], randList[j] );
}
}
printf("**************************************************************\n");
for(int i = 0; i < MAX_SIZE; i++ ){
printf("randList[%d] = %d\n", i, randList[i]);
}
return 0;
}
0516デフォルトの名無しさん
2007/12/02(日) 22:34:06うだうだ言わずに実装してごらん
0517デフォルトの名無しさん
2007/12/02(日) 22:34:590回目の乗算で作れるのが1種類、
1回目の乗算でも1種類
2回目では2種類、
3回目では3種類、
4回目では5種類、
5回目では8種類。
ということで、a回目で作れる数字の種類は 1, 1, 2, 3, 5, 8, ... という激しく既出の数列になってる
0518デフォルトの名無しさん
2007/12/02(日) 22:42:08まあそうあわてるな
一刻も早く完成品を見たい気持ちはわかるが、
アルゴリズムを考えてから30分だけじゃ
実装の完成はオレには無理だ
しばし待て
0519デフォルトの名無しさん
2007/12/02(日) 22:42:22実装してみたがダメだった
値が既出だからと言って切って良いとは限らない
例えばn=15のときは1-2-4-5-10のルートが必要
0520デフォルトの名無しさん
2007/12/02(日) 22:42:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5380.cpp
503 とほとんど同じ(ID+枝刈り)。ただし、入れてる枝刈りが違う。
0521デフォルトの名無しさん
2007/12/02(日) 23:23:02感謝です。
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):1〜100,000の範囲の乱数値を持つ要素数100,000の配列を、基本交換法(バブルソート)、基本挿入法、
基本選択法を用いて、小さい順に整列する各プログラムの整列必要な実行時間を計測し、表示するプログラムを作成せよ。
[3] 環境
[3.1] OS:LINUX
[3.3] 言語:C言語
[4] 期限:2007年12月03日01:00まで
[5] その他の制限:
0522デフォルトの名無しさん
2007/12/02(日) 23:44:340523デフォルトの名無しさん
2007/12/03(月) 00:22:38#include <iostream>
#include <iterator>
#include <string>
#include <vector>
#include <algorithm>
#include <stdexcept>
using namespace std;
struct Line { string str; };
istream& operator >> (istream& is, Line& line) {
return getline(is, line.str);
}
ostream& operator << (ostream& os, const Line& line) {
return os << line.str;
}
int main() {
vector<Line> lines;
copy(istream_iterator<Line>(cin), istream_iterator<Line>(), back_inserter(lines));
try {
cout << lines.at(19) << endl;
}
catch (out_of_range&) {
cout << "none" << endl;
}
}
0525デフォルトの名無しさん
2007/12/03(月) 02:19:16main(){
char a[]={78,85,76,76,80,79,10};
printf("%s",a);
}
の実行結果を答えよ
0526デフォルトの名無しさん
2007/12/03(月) 02:21:20[2] 出席番号と点数を読み込ませるプログラムを書いてみたのですが
プログラムにおいて点数表の容量を制限はなし。
コンピュータのメモリが許す限り大きな点数表も表示。
という条件ができません。
どういうこと書き足せばいいかお願いします。
↓書いたプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5386.txt
[3] 環境
[3.1] OS: (WindowsXP
[3.2] mingw-jp
[3.3] 言語: (C/C++/どちらでも可
0527デフォルトの名無しさん
2007/12/03(月) 02:35:440528デフォルトの名無しさん
2007/12/03(月) 02:52:000529デフォルトの名無しさん
2007/12/03(月) 03:44:01error C2275: 'FILE' : この型は演算子として使用できません
: 'FILE' の宣言を確認してください。
error C2065: 'fpin' : 定義されていない識別子です。
っていうエラーがでてしまいます。どなたか解決策を教えてください。
#include <stdio.h>
int main()
{int i, j;
double S, h;
double x[15], y[15];
char c;
h = 0.1;
printf("入力\n");
FILE *fpin;
fpin=fopen("in.txt", "r");
while(fscanf(fpin, "%c", &c) != EOF)
for(i=0; i<15; i++)
{fscanf(fpin, "%lf", &x[i]);
fscanf(fpin, "%lf", &y[i]);
printf("x[%d] = %lf y[%d] = %lf \n", i, x[i], i, y[i]);
}
printf("面積\n");
S = 0.0;
for(i=0; i<14; ++i)
{
S += h*(y[i] + y[i+1])/2.0;
}
printf("S=%15.10lf \n", S);
getchar();
}
入力データ→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5388.txt
0531529
2007/12/03(月) 04:23:45ありがとうございました。
0532デフォルトの名無しさん
2007/12/03(月) 05:35:28でも6回目では15種類だな。
0533デフォルトの名無しさん
2007/12/03(月) 06:20:36ここ参考にならんかな?
ttp://akademeia.info/index.php?%B3%DD%A4%B1%BB%BB%BD%E8%CD%FD#zb9cdf81
0534デフォルトの名無しさん
2007/12/03(月) 06:32:26それ>>465で既出
0535デフォルトの名無しさん
2007/12/03(月) 07:18:03[2] 問題文:
数字を12個入力して、3番目に大きな数値を求める
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:visual studio.net
[3.3] 言語:C
[4] 期限:12月3日 24:00
[5] その他の制限:
出来る限りシンプルなものがいいです
0536デフォルトの名無しさん
2007/12/03(月) 08:36:59#include <iostream>
#include <iterator>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Score {
string id;
double value;
};
istream& operator >> (istream& is, Score& score) {
return is >> score.id >> score.value;
}
ostream& operator << (ostream& os, const Score& score) {
return os << score.id << " => " << score.value;
}
bool operator < (const Score& lhs, const Score& rhs) {
return lhs.value < rhs.value;
}
int main() {
vector<Score> scores;
copy(istream_iterator<Score>(cin), istream_iterator<Score>(), back_inserter(scores));
sort(scores.begin(), scores.end());
copy(scores.begin(), scores.end(), ostream_iterator<Score>(cout, "\n"));
}
0537デフォルトの名無しさん
2007/12/03(月) 09:42:31[2] 問題文(含コード&リンク)要素数6のint型配列datを用意し、適当に初期化する。要素の値が正の値の合計を求めるプログラムを作成しなさい
int dat[6] = {3,-2,8,2,-1,10}
実行例
正の合計=23
0538573の者です
2007/12/03(月) 09:56:34問2:要素数20のchar型配列mojiを用意し、文字を適当に入力する。大文字と小文字の文字数を求めるプログラムを作成しなさい
実行例
文字列入力=>aBCaaCbBaCc
大文字:5
小文字:6
0539デフォルトの名無しさん
2007/12/03(月) 11:51:21[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
2つの整数(x、y)(xが分子、yが分母)を引数として与えると、x/yを
標準形にするpプログラムを作成します。ただし、標準化とは以下のような
規則をもちます。
�@y=0(分母がゼロ)のときはエラーを返す。
�A�@以外で、x=0のときは、(0,1)を返す。
�Bx/yが負のときはxに−(マイナス)を付けて返す。
�Cx、yは最大公約数で割った値を返す。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 2007年12月4日
[5] その他の制限:特になし
0540デフォルトの名無しさん
2007/12/03(月) 11:56:33#include <iostream>
#include <algorithm>
using namespace std;
struct Sum_positive {
void operator () (int i) {
if (0 > i)
return;
result += i;
}
static int result;
};
int Sum_positive::result;
int main() {
int dat[6]= { 3, -2, 8, 2, -1, 10};
Sum_positive sum;
for_each(&dat[0], &dat[6], sum);
cout << sum.result << endl;
}
0541デフォルトの名無しさん
2007/12/03(月) 12:03:40#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <cctype>
using namespace std;
struct Is_upper : unary_function<char, bool> {
bool operator () (char c) {
return isupper(c);
}
};
int main() {
string str;
cout << "文字列入力=>"; cin >> str;
cout << count_if(str.begin(), str.end(), Is_upper());
}
0542デフォルトの名無しさん
2007/12/03(月) 12:05:39#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <cctype>
using namespace std;
struct Is_upper : unary_function<char, bool> {
bool operator () (char c) { return isupper(c); }
};
struct Is_lower : unary_function<char, bool> {
bool operator () (char c) { return islower(c); }
};
int main() {
string str;
cout << "文字列入力=>"; cin >> str;
cout << "大文字数:" << count_if(str.begin(), str.end(), Is_upper()) << endl;
cout << "小文字数:" << count_if(str.begin(), str.end(), Is_lower()) << endl;
}
0543デフォルトの名無しさん
2007/12/03(月) 12:08:33// ごめん。問題文よく読んでなかった orz
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <cctype>
#include <cstring>
using namespace std;
struct Is_upper : unary_function<char, bool> {
bool operator () (char c) { return isupper(c); }
};
struct Is_lower : unary_function<char, bool> {
bool operator () (char c) { return islower(c); }
};
int main() {
char moji[20];
cout << "文字列入力=>"; cin >> moji;
cout << "大文字数:" << count_if(&moji[0], &moji[strlen(moji)], Is_upper()) << endl;
cout << "小文字数:" << count_if(&moji[0], &moji[strlen(moji)], Is_lower()) << endl;
}
0544デフォルトの名無しさん
2007/12/03(月) 12:32:590545デフォルトの名無しさん
2007/12/03(月) 13:49:020546デフォルトの名無しさん
2007/12/03(月) 13:54:25#include <stack>
0547デフォルトの名無しさん
2007/12/03(月) 15:00:43[1] 授業単元:プログラム言語2
[2] 問題文:下記に書きます.
[3] 環境[3.1] OS: (Linux/)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: ([2007年12月4日まで]
[5] その他の制限: (Cプリプロセッサ,分割コンパイルぐらいまで)コメント等も入れて頂けるとありがたいです。どうかよろしくお願い致します。
0548デフォルトの名無しさん
2007/12/03(月) 15:02:23プログラムにはコメントを追加すること. * ヘッダファイル kadai09a.h を作成し,NUM と関数hyoujiを定義する.
-------------------------------------------------------------
#define NUM 5
extern void hyouji(int, int);
-------------------------------------------------------------
* 以下のプログラムをもとに,main関数の部分をソースファイル kadai09a.c に,関数 hyouji の部分をソースファイル kadai09a1.c に分割する.
-------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
void hyouji(int, int);
int main(void)
{
int i, n;
int sum = 0;
printf("Input non-negative integer: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
sum += i;
}
hyouji(n, sum);
return 0;
}
void hyouji(int k, int m)
{
printf("The sum of 0 to %d : %d\n", k, m);
}
-------------------------------------------------------------
* 作成した kadai09a.c, kadai09a1.c, kadai09a.h をコンパイルして実行する.
コンパイルと実行の手順もレポートに記述すること.
* NUM の値の変更を行う場合のコンパイルの仕方をレポートに記述すること
0549デフォルトの名無しさん
2007/12/03(月) 15:03:34よろしくお願いします
0550デフォルトの名無しさん
2007/12/03(月) 16:02:58>>548がモロに答じゃないのか。
それ以上なにを書けと。
0551デフォルトの名無しさん
2007/12/03(月) 16:18:07エディタやらコンパイラの使い方を教えるための課題か?
それだとスレ違い、というか物足りなくて書く気にならん。
0552デフォルトの名無しさん
2007/12/03(月) 16:20:17#include<stdio.h>
main(){
int x[12];
int i,j,temp;
for(i=0;i<12;i++){
scanf("%d",&x[i]);
}
for (i=0;i<11;i++){
for (j=11;j>i;j--){
if(x[j-1]<x[j]){
temp=x[j];
x[j]=x[j-1];
x[j-1]=temp;
}
}
}
printf("3番目は%dです\n",x[2]);
}
0553デフォルトの名無しさん
2007/12/03(月) 16:36:45#include<stdio.h>
main(){
char moji[20];
int i,komoji=0,oomoji=0;
scanf("%s",moji);
for(i=0;i<20;i++){
if('a'<=moji[i] && moji[i]<='z')
komoji++;
else if('A'<=moji[i] && moji[i]<='Z')
oomoji++;
else if(moji[i]=='\0')
break;
}
printf("大文字;%d\n",oomoji);
printf("小文字;%d\n",komoji);
}
0554デフォルトの名無しさん
2007/12/03(月) 16:37:04顔にしか見えない
0555デフォルトの名無しさん
2007/12/03(月) 16:45:44[2] 問題文:整数nを入力として受け付けて、1からnまでのn個の整数をファイルに保存せよ。数字の区切りには空白を使用すること。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4]期限: (2007年12月4日09:00まで)
[5]その他: (特になし)
よろしくお願いします。
0556デフォルトの名無しさん
2007/12/03(月) 16:53:50#include<stdio.h>
main(){
FILE *fp;
int n,i;
fp = fopen("filename","w");
scanf("%d",&n);
for(i=0;i<n;i++){
fprintf(fp,"%d ",i+1);
}
fclose(fp);
}
0557デフォルトの名無しさん
2007/12/03(月) 18:07:500558デフォルトの名無しさん
2007/12/03(月) 18:51:40入力電圧を加えたときの出力電圧をオイラー法によって求め、
そのグラフをgnuplot で書け。刻み幅は0.1 と細かくしてみる。
提出物:ソースファイル、実行結果のグラフ出力(png ファイル)
/* 入力電圧 u(t) */
if (t >= 0)
return 1;
return 0;
}
double f(double t, double y)
{
return /* ★ 微分方程式 y'=f(t,y) の右辺を計算 */;
}
int main(void)
{
double t, y, h;
y = /* ★ 初期値 */;
t = /* ★ 初期値 */;
h = /* ★ 刻み幅 */;
do {
printf("%10.7f %10.7f\n", t, y);
y = /* ★ オイラー法の漸化式を計算 */;
t = /* ★ オイラー法の漸化式を計算 */;
} while (t <= 5);
return 0;
}
[3.1] linux [3.2] 不明 [3.3] c言語
[4] 12月4日16時まで
0559デフォルトの名無しさん
2007/12/03(月) 18:52:390560デフォルトの名無しさん
2007/12/03(月) 19:43:18[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5396.txt
[3] 環境
[3.1] OS: XPpro2
[3.2] visual studio 2005
[3.3] 言語: C++
[4] 期限: 12/5 〜10:00
[5] その他の制限: 特になし
よろしくお願いします。
0561デフォルトの名無しさん
2007/12/03(月) 20:02:58ありがとうございます
0562デフォルトの名無しさん
2007/12/03(月) 22:17:52[2] 問題文(含コード&リンク):
多倍長精度の計算をするためにgmpライブラリを使用して、
ボールウェイン(Bolwein)の4次式で円周率を求めるプログラムを作成せよ。
アルゴリズム
1. 初期化 a=6 - 4√2 ,y=√2 - 1 ,x=2
2. yが0にならない間以下を繰り返す
(1) u = √ { √(1-y^4) }
(2) y =(1-u)/(1+u)
(3) v =(1+y)
(4) w =v*v*v*v
(5) x = x*4
(6) a=a*w - y*(1+y+y*y)*x
3. 円周率π = 1/a
この長精度整数用アルゴリズムを構成するには、上記公式の中の「定数1」に対応する整数Mを設定しなければならない。
このMを基準として、各値を計算する。
長精度型の変数をA,Y,U,V,W, 通常の整数型の変数をxとおくとき、Mで上の公式を書き直し、テキストに記せ。
ヒント:aの初期化では A=6・M-4・√(M・M・2) となる。
[3] 環境
[3.1] OS: XP pro
[3.2] gcc
[3.3] 言語: C
[4] 期限: 12月6日
[5] その他の制限: 特になし
よろしくお願いします。
0563デフォルトの名無しさん
2007/12/03(月) 22:54:310564デフォルトの名無しさん
2007/12/03(月) 23:55:22#include<iostream>
#include<cstring>
#include <time.h>
using namespace std;
class my_err{
public:
int data;
int errnbr;
char msg[160];
public:
my_err( int dt, int err, char *ss ){
data = dt;
errnbr = err;
if( strlen(ss) < 160 ){
strcpy_s( msg, ss );
}else{
strncpy_s( msg, ss, 159 );
msg[159] = '\0';
}
}
};
int square( int dt ){
if( dt < 0 ){ throw my_err( dt, 1, "負数"); }
if( dt > 100 ){ throw my_err( dt, 2, "Over" ); }
return dt * dt;
}
0565デフォルトの名無しさん
2007/12/03(月) 23:59:41int main( int argc, char **argv )
{
try{
srand((unsigned int)time(NULL));
for(;;){
int X = (rand() / static_cast<double>(RAND_MAX) * 200) - 100;
cout << square( X ) << endl;
if ( 0 == X ){ break; }
}
cout << square( 50 ) << endl;
cout << square( 120 ) << endl;
}catch( my_err e ){
cout << "エラーデータ=" << e.data << endl;
cout << "エラー番号=" << e.errnbr << endl;
cout << "エラー情報=" << e.msg << endl;
}
return 0;
}
0566デフォルトの名無しさん
2007/12/04(火) 00:09:57[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5399.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:VisualC++2005ExpressEdition
[3.3] 言語:C
[4] 期限:2007年12月4日23:59まで
[5] その他の制限: 制御文、配列、構造体、関数、ポインタ、ダブルポインタ
改行の入れ方は特に気にしなくてもおk。
よろしくお願いします。
0567デフォルトの名無しさん
2007/12/04(火) 00:50:48■最近流行りのSM系サイトを知っていますか?
それは「SMプレイをすること」を最終目的とした人達が集まる出会い系サイトのことです。
普通の出会い系サイトと一味違った、熱い出会いが全国各地で繰り広げられています。
《ブログ SM系サイトが会える訳》
http://smsite.blog123.fc2.com/
ブログでは管理人一押しのSM系サイトを紹介しています。
是非ご利用下さい。
0568デフォルトの名無しさん
2007/12/04(火) 05:58:57fileがexitしちゃってちゃいかんよなw
0569デフォルトの名無しさん
2007/12/04(火) 12:28:49>ダブルポインタ
何?
0570デフォルトの名無しさん
2007/12/04(火) 12:30:280571デフォルトの名無しさん
2007/12/04(火) 13:27:45[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5400.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2007年12月5日24:00まで
[5] その他の制限:
まだポインタやリストを学び始めてあまり経っておらず、そこまで理解していないため、
プログラムが長くなっても構わないので基本的な操作の組み合わせでお願いします。
可能であれば何をしているかの簡単なコメントもつけてくださると助かります。
0572デフォルトの名無しさん
2007/12/04(火) 16:58:14[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):ttp://edu.net.c.dendai.ac.jp/ad/1/2007/kadai.html
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:mingw-jp.bat
[3.3] 言語:C++
[4] 期限:2007年12月5日20:00まで
[5] その他の制限:Windows の API は使用しない,基本的な文法はわかります(For文等)
での回答をまとめたのが
ttp://www.uploda.org/uporg1143008.txt
なのですが、自分のやり方が悪いのか実行してもうまくできなかったり、途中の部分しかなかったりで困っております。
やっていただける方(プログラムの説明も)にウェブマネー3000円分お支払いしますのでどなかたお願いします。
やっていただける方はメール欄まで連絡お願いします。
0573デフォルトの名無しさん
2007/12/04(火) 17:01:120574566
2007/12/04(火) 17:01:28int **data
↑↑↑
こういうの
0575デフォルトの名無しさん
2007/12/04(火) 17:01:55[2] 問題文(含コード&リンク):RDBの射影、選択、結合を実行するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: どちらでも可
[4] 期限: 2007年12月8日
[5] その他の制限:なし
0576デフォルトの名無しさん
2007/12/04(火) 17:17:37[2] 問題文(含コード&リンク):
文字型配列の先頭アドレスを受け取り、文字列内の文字を昇順にソートする関数void sort_ch()を作成します。
main()で文字列(最大255文字)を入力させてその先頭アドレスをsort_ch()に渡し、結果を表示するプログラムを作成してください。
表示処理はすべてmain()で行ってください。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VisualC++2005ExpressEdition
[3.3] 言語:C
[4] 期限:特になし
[5] その他の制限:ソートもポインタを使ってください。
よろしくお願いします。
0577デフォルトの名無しさん
2007/12/04(火) 17:18:040578デフォルトの名無しさん
2007/12/04(火) 18:35:51バカ発見
0579デフォルトの名無しさん
2007/12/04(火) 19:03:29[2] 問題文(含コード&リンク): 配列を使ってスタックを実装し、
以下の操作を行った結果取り出された値を画面に出力しなさい。
1 を追加 2 を追加 3 を追加 4 を追加 取り出し
取り出し 5 を追加 6 を追加 7 を追加 取り出し
8 を追加 取り出し 9 を追加 10 を追加 取り出し
取り出し 取り出し 取り出し 取り出し 取り出し (終了)
スタックを格納する配列、スタックポインタは
ローカル変数で用意しなさい。
(難しければ、グローバル変数で作成してもよい)
作成する関数は、初期化、プッシュ、ポップの3種類とし、
ポップの際に取り出された値を画面に出力すればよい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: c
[4] 期限: 12/6まで
[5] その他の制限: マクロはできる限り無しで
ローカル変数とグローバル変数の両方をお願いします。
0580デフォルトの名無しさん
2007/12/04(火) 19:06:16[2] 問題文(含コード&リンク): 自己参照型構造体(リスト)を使ってスタックを実装し、
以下の操作を行った結果取り出された値を画面に出力しなさい。
1 を追加 2 を追加 3 を追加 4 を追加 取り出し 取り出し
5 を追加 6 を追加 7 を追加 取り出し 8 を追加 取り出し
9 を追加 10 を追加 取り出し 取り出し 取り出し 取り出し
取り出し 取り出し (終了)
【ヒント】
作成した構造体型はtypedefを使って
新しいデータ型として定義しなさい。
スタックポインタは
グローバル変数で用意するとやや簡単である。
余力があれば、ローカル変数で作成してもよい。
作成する関数は、初期化、プッシュ、ポップの3種類とする。
ポップの際に取り出された値を画面に出力すること
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: c
[4] 期限: 12/6まで
[5] その他の制限: マクロはできる限り無しで
グローバル変数だけでいいです。
2問続けてですが、よろしくお願いします。
0581デフォルトの名無しさん
2007/12/04(火) 19:14:467まで出来た。
コメントとかは後で追加するわ
あとは8だけ、できれば自力でやれ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5401.txt
0582デフォルトの名無しさん
2007/12/04(火) 19:19:51#include <stdio.h>
void sort_ch(char *buf) {
int i, j;
char key;
for (i=1; buf[i] != '\0'; ++i) {
for (j=i; j>=1; --j) {
if (buf[j] < buf[j-1] ){
key = buf[j];
buf[j] = buf[j-1];
buf[j-1] = key;
}
}
}
}
int main() {
char buf[256] = {'\0'};
fgets(buf, sizeof(buf), stdin);
sort_ch(buf);
printf("%s\n", buf);
return 0;
}
0583デフォルトの名無しさん
2007/12/04(火) 21:27:47つ ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5402.cpp
0584デフォルトの名無しさん
2007/12/04(火) 21:58:45ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5403.c
0585デフォルトの名無しさん
2007/12/04(火) 21:59:47[2] 問題文(含コード&リンク):C言語でプログラムを作ってgnuplotで立方体を描く
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc3.4
[3.3] 言語: C言語
[4] 期限: 2007年12月5日
[5] その他の制限: 特に無し
よろしくお願いします
0586デフォルトの名無しさん
2007/12/04(火) 22:04:43[2] 問題文 最初に行列の次元nの値を入力し、配列を使って次の計算をするプログラムを作りなさい。
ただし、nは100以内で、n次の正方行列とする。
行列Aを入力すると、その転置行列tAを計算するプログラム
[3] 環境
[3.1] OS:Windows
[3.2] gcc
[3.3] 言語:C
[4] 期限: 12月6日00:00まで
0587デフォルトの名無しさん
2007/12/04(火) 22:17:49[2] 問題文(含コード&リンク):()
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5396.txt
[3] 環境
[3.1] OS: XPpro2
[3.2] visual studio 2005
[3.3] 言語: C++
[4] 期限: 12/5 〜10:00
[5] その他の制限: 特になし
よろしくお願いします。
[3] 環境
[3.1] OS: Windows XP
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: 今週中
[5] その他の制限: 特になし
よろしくお願いします。
0588デフォルトの名無しさん
2007/12/04(火) 22:24:10間違えたorz
[1] 授業単元:プログラミング�U
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5404.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: 今週中
[5] その他の制限: 特になし
0589デフォルトの名無しさん
2007/12/04(火) 23:04:58>>240,246
同一人物でないとしたらひどい学校だな
0590デフォルトの名無しさん
2007/12/04(火) 23:22:14プログラムはどのように書けばよいのでしょうか。
0592デフォルトの名無しさん
2007/12/04(火) 23:41:49#include <stdio.h>
#include <stdlib.h>
void sub(int count, int *array, int *sorted) {
int i, max, j, index;
for (i = 0; i < count; i++) {
max = 0;
for (j = 0; j < count; j++) if (*(array + j) > max) { max = *(array + j); index = j; }
*(sorted + i) = max;
*(array + index) = 0;
}
}
int main(int argc, char *argv[]) {
int count, *array, i, *sorted, sum;
scanf("%d", &count);
array = (int *)malloc(sizeof(int) * count);
for (i = 0; i < count; i++) scanf("%d", &array[i]);
sorted = (int *)malloc(sizeof(int) * count);
sub(count, array, sorted);
sum = 0;
for (i = 0; i < count; i++) { printf("%d ", sorted[i]); sum += sorted[i]; }
printf("\n%d\n", sum / count);
free(sorted);
free(array);
return 0;
}
0593デフォルトの名無しさん
2007/12/04(火) 23:49:24[2] 問題文(含コード&リンク):
unsigned char 型の変数を用意し、その変数の第何ビットを変化
させるかを入力させて、次にそのビットを0にするのか1にするか
を入力させて、その変数のビットを変化させ、表示するプログラム
を作成しなさい。
第何ビットを変化させるかを入力させる時に、0〜7以外であれ
ばエラーメッセージを表示させ、「.」であれば終了させるように
しなさい。
unsigned char 型の変数の値は最初に0に初期化すること。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:VisualC++2005ExpressEdition
[3.3] 言語:C++
[4] 期限:2007年12月9日23:59まで
[5] その他の制限: 制御文、配列、構造体、関数、ポインタ、ポイ
ンタのポインタ、ファイル、ビット
よろしくお願いします。
0594デフォルトの名無しさん
2007/12/05(水) 00:14:07- for (i = 0; i < count; i++) scanf("%d", &array[i]);
+ for (i = 0; i < count; i++) scanf("%d", array + i);
- for (i = 0; i < count; i++) { printf("%d ", sorted[i]); sum += sorted[i]; }
+ for (i = 0; i < count; i++) { printf("%d ", *(sorted + i)); sum += *(sorted + i); }
0597デフォルトの名無しさん
2007/12/05(水) 00:30:54#include<stdio.h>
int main(void){
unsigned int b = 0;
int n, i;
char c;
while(1){
printf("第何ビットを変化させるかを入力させる\n");
scanf("%s",&c);
if(c == '.') break;
if(c < '0' || '7' < c) printf("エラーメッセージ\n");
else{
n = c - '0';
printf("そのビットを0にするのか1にするかを入力させる\n");
scanf("%s",&c);
if(c == '0') b &= ~( 1 << n );
if(c == '1') b |= 1 << n;
for(i=7; i>=0; --i) printf("%d", !!(b&1<<i) );
printf("\n");
}
}
return 0;
}
入力周りがテキトーなのは仕様。
0598デフォルトの名無しさん
2007/12/05(水) 01:34:11当方で確認した環境は WindowsXP, 処理系は gcc 3.4.4 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5405.txt
0599デフォルトの名無しさん
2007/12/05(水) 02:22:28[2] 問題文
int型の変数bで受け取り、次の演算を行う add_num関数を作成しなさい
【add_num関数の処理】
今回の得点は60点満点で何点ですか?と画面表示した後、キーボードからint型変数cに値を入力する
続いて、変数bにcの値を加算し、その結果を「総合得点:」とともに表示する
次に、main関数でint型変数nを値25でで初期化し、nの値を「現在の得点:」とともに表示した後、add_num関数にnの値を渡すプログラムを作成しなさい
[3] 環境
[3.1] OS: Windows XP
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: 12月5日11時
実行結果例
現在の得点:25
今回の得点は60点満点で何点ですか?
48
総合得点:73
よろしくお願いします
0600585
2007/12/05(水) 02:24:510601デフォルトの名無しさん
2007/12/05(水) 02:35:03[2] 問題文
まず、次のメンバを持つ構造体をtypedef宣言を使用し、data型として準備しなさい。ただし、typedef宣言において構造体タグ名は正雀しなさい
char型の配列変換id(配列サイズ:8)、int型の変数n
main関数では、このdata型の変数personを宣言する。
続いて、実行結果を示すようにキーボードによりpersonのメンバidに「学籍番号」を入力、また、キーボードによりメンバnに「前回までの得点」を入力し、personのメンバnのみの値をadd_num関数に渡すプログラムを作成しなさい
ただし、add_num関数は、int型の変数bに受け取った値を格納し、「今回の得点は60点満点で難点ですか?」の質問とともにキーボードによりint型変数cに得点を入力した後、変数bにcの値を加算し、「総合得点:」とともにその結果を表示するように作成しなさい
[3] 環境
[3.1] OS: Windows XP
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: 12月5日11時
実行結果例
学籍番号を入力してください。
0123456
前回までの得点を入力してください。
25
今回の得点は60点満点で何点ですか?
51
総合得点:76
よろしくお願いします
0602588
2007/12/05(水) 03:01:28ありがとうございます
というか既出だったのか…
よく調べもせず申し訳ない
>>240とは同一人物ではないので同じ講義受けてる誰か、ですかね
0603デフォルトの名無しさん
2007/12/05(水) 05:37:260604デフォルトの名無し
2007/12/05(水) 06:19:43[2] 問題文(含コード&リンク):ttp://edu.net.c.dendai.ac.jp/ad/1/2007/kadai.html
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:mingw-jp.bat
[3.3] 言語:C++
[4] 期限:2007年12月5日20:00まで
[5] その他の制限:Windows の API は使用しない,基本的な文法はわかります(For文等)
どうしても分からないのでお願いします。
0605デフォルトの名無しさん
2007/12/05(水) 07:48:34[2] 問題文(含コード&リンク):DOM操作可能なhtmlパーサを組みなさい。
[3] 環境
[3.1] OS: Linux(kernel v2.6.x)
[3.2] gcc 4.0.2 or gcc 3.3.6
[3.3] 言語: C/C++のどちらでも可能
[4] 期限: 2008年01月01日
[5] その他の制限:
ぐぐった結果、firefoxのhtmlパーサをjavaのラッパからDOM操作可能なxmlパーサに流し込むとか、
phyton用のhtml5lib v0.10をバグフィクスしながらDOMに流し込むとか色々あるんですが、
C/C++で使えるDOM操作可能なhtmlパーサはありませんでした。
環境についてなんですが、実装するマシンが旧式(Pen3-800,256M)でして
できるだけネイティブに実行したいのですが何か手はありませんか?
個人的にはオープンソースのxmlパーサにhtml部分の要素だけ付け加えるのが
一番良いのではないかと思うのですが、
簡単に要素を付け加えれるxmlパーサを知りませんか?
後、壊れたhtmlも例外処理でかけれる機能を付いてるのが好ましいです。
0606デフォルトの名無しさん
2007/12/05(水) 07:52:47お前それ宿題じゃなくて仕事だろ?
http://www.ibm.com/developerworks/xml/library/x-ctlbx.html
とりあえずここから好きなの選ぶがよろし。
0607デフォルトの名無しさん
2007/12/05(水) 08:18:01batファイル作ればおk。
0608デフォルトの名無しさん
2007/12/05(水) 08:43:53[2] 問題文 スタックの問題ですPURSHを入力したら文字を入力してくださいとでて一文字入力して格納されPOPと入力したらその入力された文字がでてきますENDと入力したらプログラム終了するプログラムをつくりなさい条件として Void Stk_Push(Char a)と
Char stk_PoP(void)を使ってください
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C/C++
[4] 期限:12月7日
[5] その他の制限: (標準ライブラリは使ってはいけない
宜しくお願い致します
0609デフォルトの名無しさん
2007/12/05(水) 09:41:16お願いしますこれm(_ _)m
↓↓↓
>>566
0610デフォルトの名無しさん
2007/12/05(水) 12:24:29[2] 問題文:
2x+y+3z=11
4x+3y+10z=28
2x+4y;17z=31
Gaussの消去法とLU分解法のプログラムをつくりなさい。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限:12月11日
0611デフォルトの名無しさん
2007/12/05(水) 12:32:33なお、この問題は早々に 2ch に投稿され、既に解答も寄せられています。
同じ掲示板に何度も同じ問題を投稿するのはマナー違反ですので、
もう新たに 2ch にこの問題を投稿しないようにして下さい。
ちょwwwww
0612デフォルトの名無しさん
2007/12/05(水) 13:43:28もしかして、真性のアホ?
0613デフォルトの名無しさん
2007/12/05(水) 13:57:08[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
ここの "C/C++の宿題を片付けます 100代目"スレの5406.cです。
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:配列とforとifなど、簡単な方法を用いて作成せよとのことです。
0614デフォルトの名無しさん
2007/12/05(水) 14:10:32#include <stdio.h>
int bunpu[10];
int main()
{
static const char * const nth[] = {
"1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th",
};
for (unsigned ic = 0; ic < sizeof(nth) / sizeof(* nth); ++ic) {
printf("Input %s data >> ", nth[ic]);
int val;
scanf("%d", & val);
++bunpu[val / 10];
}
for (unsigned ic = 0; ic < sizeof(bunpu) / sizeof(* bunpu); ++ic) {
printf("\n %2d - %2d: ", ic * 10, ic * 10 + 9);
for (unsigned cc = 0; cc < bunpu[ic]; ++cc) putchar('*');
}
return 0;
}
0615デフォルトの名無しさん
2007/12/05(水) 14:32:240616デフォルトの名無しさん
2007/12/05(水) 14:34:21#include<stdio.h>
main(){
int bunpu[10]={0};
int i,j,score;
for(i=0;i<10;i++){
printf("Input %d th data >> ",i+1);
scanf("%d",&score);
if(score>=0 && score<10) bunpu[0]++;
else if(score>=10 && score<20) bunpu[1]++;
else if(score>=20 && score<30) bunpu[2]++;
else if(score>=30 && score<40) bunpu[3]++;
else if(score>=40 && score<50) bunpu[4]++;
else if(score>=50 && score<60) bunpu[5]++;
else if(score>=60 && score<70) bunpu[6]++;
else if(score>=70 && score<80) bunpu[7]++;
else if(score>=80 && score<90) bunpu[8]++;
else if(score>=90 && score<100) bunpu[9]++;
}
printf("\n");
for(i=0;i<100;i+=10){
printf("%2d - %2d: ",i,i+9);
for(j=0;j<bunpu[i/10];j++) printf("*");
printf("\n");
}
}
なんかスマートじゃないけど、簡単な方法って書いてたからこんな感じでw
0617デフォルトの名無しさん
2007/12/05(水) 14:40:16ちょwif文多すぎwww
for(j=0;j<10;j++){
if(score>=i*10 && score<(i+1)*10) bunpu[i]++;
}
くらいにしとけよww
0618616
2007/12/05(水) 14:40:30main(){
int bunpu[10]={0};
int i,j,score;
for(i=0;i<10;i++){
printf("Input %d th data >> ",i+1);
scanf("%d",&score);
for(j=0;j<100;j+=10) if(score>=j && score <j+10) bunpu[j/10]++;
}
printf("\n");
for(i=0;i<100;i+=10){
printf("%2d - %2d: ",i,i+9);
for(j=0;j<bunpu[i/10];j++) printf("*");
printf("\n");
}
}
if文のとこはこう書いた方がよかったかな?
これ以上は俺の力じゃ無理ですorz
0619デフォルトの名無しさん
2007/12/05(水) 14:41:46for(j=0;j<10;j++){
if(score>=j*10 && score<(j+1)*10) bunpu[j]++;
}
0620デフォルトの名無しさん
2007/12/05(水) 14:42:54>>617みたいにjの増加量はインクリメントにして
条件文を工夫した方が分かりやすいな
0621デフォルトの名無しさん
2007/12/05(水) 14:55:19>614は見えない? if文なんて要らんのよ。
# 実際にはエラー処理用に必要だけどね。それでもループは要らんわけだし。
0622デフォルトの名無しさん
2007/12/05(水) 15:09:45あ〜そうか…点数を10で割った値を使えば
格納する場所の値を増やせるのか
配列とforとifなどって書いてたからif文は必須なんだと思い込んでた…恥ずかしいorz
0623デフォルトの名無しさん
2007/12/05(水) 15:20:530624デフォルトの名無しさん
2007/12/05(水) 15:57:09static const char * const nth[] = {
"1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th",
};
って
char *nth[] = {
"1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th",
};
って書いちゃダメかな?
0625デフォルトの名無しさん
2007/12/05(水) 16:05:53staticにしないと実行時にコピーするコードの分、効率が悪いくらいの違い。
0626デフォルトの名無しさん
2007/12/05(水) 17:19:240627デフォルトの名無しさん
2007/12/05(水) 17:40:310628デフォルトの名無しさん
2007/12/05(水) 17:46:160629デフォルトの名無しさん
2007/12/05(水) 18:08:04つまり金の無駄
0630デフォルトの名無しさん
2007/12/05(水) 19:22:50[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5407.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 12/7
[5] その他の制限: 特になし
0631デフォルトの名無しさん
2007/12/05(水) 19:48:38[2] 問題文 スタックの問題ですPURSHを入力したら文字を入力してくださいとでて一文字入力して格納されPOPと入力したらその入力された文字がでてきますENDと入力したらプログラム終了するプログラムをつくりなさい条件として Void Stk_Push(Char a)と
Char stk_PoP(void)を使ってください
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C/C++
[4] 期限:12月7日
[5] その他の制限: (標準ライブラリは使ってはいけない
宜しくお願い致します
0632デフォルトの名無しさん
2007/12/05(水) 19:56:59つーかそんな制限ありえなくねえ?アセンブラ使った方がよっぽどましな状況だろ
0633デフォルトの名無しさん
2007/12/05(水) 20:00:08どなたかお願いします。
0634デフォルトの名無しさん
2007/12/05(水) 21:38:24#include <stdio.h>
#include <stdlib.h>
struct element_st{
int val;
struct element_st *next;
};
typedef struct element_st element;
element *list_head;
void init(){
list_head = NULL; /* 終端記号 */
}
void push(int n){
element *new_element;
new_element = malloc(sizeof(element)); /* 新しい要素作成 */
new_element->val = n;
new_element->next = list_head;
list_head = new_element; /* [新しい要素]->[古い要素]->[もっと古い要素] */
}
void pop(){
element *next_head = list_head->next; /* freeして消すのでここで退避 */
if(list_head == NULL) return;
printf("poped -> %d\n",list_head->val);
free(list_head);
list_head = next_head;
}
int main(){init();
push(1);push(2);push(3);push(4);pop();pop();
push(5);push(6);push(7);pop();push(8);pop();
push(9);push(10);pop();pop();pop();pop();
pop();pop();
}
0635デフォルトの名無しさん
2007/12/05(水) 21:41:38コード圧縮しすぎてバグってるw
element *next_head;
if(list_head == NULL) return;
next_head = list_head->next; /* freeして消すのでここで退避 */
こうでないとlist_head==NULLのときに阿呆なメモリにアクセスする。
0636562
2007/12/05(水) 21:45:34式の書き換え部分だけでもやっていただければ、プログラムはなんとかできそうです!
0637デフォルトの名無しさん
2007/12/05(水) 21:59:49ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5408.c
0638デフォルトの名無しさん
2007/12/05(水) 22:03:47[2] 問題文(含コード&リンク):
文字型配列の先頭アドレスと文字を受け取り、文字列中に文字が含まれる個数を返す関数search_chを作成します。
main()で文字列(最大255文字)と文字を入力させ、文字型配列の先頭アドレスと文字をsearch_ch()に渡して処理を行わせ、結果を出力するプログラムを作成してください。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VisualC++2005ExpressEdition
[3.3] 言語:C
[4] 期限:特になし
[5] その他の制限:配列[]を使わずポインタを使ってください。
よろしくお願いします。
0639デフォルトの名無しさん
2007/12/05(水) 22:11:21ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5409.c
0640デフォルトの名無しさん
2007/12/05(水) 22:11:35グローバル変数を使って、どなたかお願いします。
#include <stdio.h>
#define SIZE 6
#define ERROR_NUM 9999
int stk[SIZE];
int sp;
void init(void);
void push(int dt);
int pop(void);
void show(void);
これを使ってお願いします。
0641デフォルトの名無しさん
2007/12/05(水) 22:13:17ちっとは頭使えよカス
0642638
2007/12/05(水) 22:26:030643デフォルトの名無しさん
2007/12/05(水) 22:31:37#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#define SIZE 6
#define ERROR_NUM 9999
int stk[SIZE];
int sp;
void init(void);
void push(int dt);
int pop(void);
void show(void);
void init(){
sp=0;
}
void push(int n){ stk[sp++]=n; }
int pop(){
if(sp==0) return ERROR_NUM;
printf("poped -> %d\n",stk[sp-1]);
return stk[--sp];
}
int main(){init();
push(1);push(2);push(3);push(4);pop();pop();
push(5);push(6);push(7);pop();push(8);pop();
push(9);push(10);pop();pop();pop();pop();
pop();pop();
}
0644デフォルトの名無しさん
2007/12/05(水) 22:32:220645デフォルトの名無しさん
2007/12/05(水) 22:35:48もちろんGUIで^^
0646デフォルトの名無しさん
2007/12/05(水) 22:39:230647デフォルトの名無しさん
2007/12/05(水) 22:43:23>>562をお願いします。
0648デフォルトの名無しさん
2007/12/05(水) 23:08:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5410.txt
0649デフォルトの名無しさん
2007/12/05(水) 23:13:58ありがとうございます。
長精度整数用アルゴリズムを構成するには、上記公式の中の「定数1」に対応する整数Mを設定しなければならない。
このMを基準として、各値を計算する。
長精度型の変数をA,Y,U,V,W, 通常の整数型の変数をxとおくとき、Mで上の公式を書き直す っていうのはどうしてますか?
Mの値を10^10000とか10^40000とかに設定して計算実験をするんですが
0650デフォルトの名無しさん
2007/12/05(水) 23:37:01http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5411.txt
コンパイルした実行ファイルの引数に
1とか、1e10とか1e1000000とかいれとけ。
./a.exe 1
でもあんまり面白くないぞ。PI=M/Aなら0.28...に収束するけどな。
0651デフォルトの名無しさん
2007/12/05(水) 23:46:05具体的に書き換えた式も書かないといけないので、
A=6・M-4・√(M・M・2)みたいに書いて欲しいです。
ちなみに例として、Gauss-Legendreの公式
初期化 a=1, b=1/√2 , t=1/4, x=1
反復
(1) y=a
(2) a=(a+b)/2
(3) b=√(b×y)
(4) t=t-(y-a)^2 ×x
(5) x=x×2
π=(A+B)^2 /4t
のアルゴリズムがあり、
プログラムでは、
A=M;
B=sqrt(M*M/2)
T=T-(Y-A)*(Y-A)/M*x
x=x*2
みたいになってます。
0652デフォルトの名無しさん
2007/12/05(水) 23:51:34/ ヽ
巳________________|二-
| l_/_jニニコ_iニニ!.
i~^' fエ:エi fエエ)Fi
ヽr > V / ̄ ̄ ̄ ̄ ̄ ̄ ̄
l !ー―‐r l < お前の態度が気に食わない
__,.r-‐人 `ー―' ノ_ \_______
ノ ! ! ゙ー‐-- ̄--‐'"ハ ~^i
ヽ ! ヽ、_ _.ノ i \
ヾV / ! /.入
0653デフォルトの名無しさん
2007/12/05(水) 23:54:350654デフォルトの名無しさん
2007/12/06(木) 00:03:540655デフォルトの名無しさん
2007/12/06(木) 00:09:39申し訳ありません
0656デフォルトの名無しさん
2007/12/06(木) 00:52:32[2] 問題文(含コード&リンク):
次のプログラム部分に必要な内容を追加して、プログラムを完成させ結果を調べなさい。
また、どうしてそのような結果になったか、その理由を考えなさい。
どうすれば意図どおりに処理できるかを考え、プログラムを修正しなさい。
void sub(int,int);
void main(void){ void sub(int a,int b){
int a=2; b=3; a=a+5; b=a*b;
sub(a,b); return;
printf("a=%d\tb=%d\n",a,b); }
}
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:visual studio 2005
[3.3] 言語:C
[4] 期限:2007年12月11日まで
[5] その他の制限:
[2]のプログラムが問題です。分かりにくいと思いますがよろしくお願いいたします。
0657デフォルトの名無しさん
2007/12/06(木) 00:56:510658デフォルトの名無しさん
2007/12/06(木) 01:31:41#include<stdio.h>
void sub(int,int);
int main(void){
int a=2,b=3;
sub(a,b);
return 0;
}
void sub(int a,int b){
a=a+5; b=a*b;
printf("a=%d\tb=%d\n",a,b);
}
0659デフォルトの名無しさん
2007/12/06(木) 01:51:45すみません。問題にはこのようにしか書いてないんです。
多分あいている部分を埋めるような感じだと思うのですが・・・
問題用紙には先ほど書いた通りにしか書いてないです。
0660デフォルトの名無しさん
2007/12/06(木) 01:58:570661デフォルトの名無しさん
2007/12/06(木) 02:13:44void main(void){ から void sub(int a,int b){ の所
int a=2; からb=3; の所
b=3; から a=a+5; b=a*b; の所
sub(a,b); から return; の所
printf("a=%d\tb=%d\n",a,b); から }の所
以上が空白の部分ですです。
0662デフォルトの名無しさん
2007/12/06(木) 02:16:02せいぜいa=2;とb=3;の間にintを入れるくらいじゃないか?
0663デフォルトの名無しさん
2007/12/06(木) 02:36:41void main(void){
int a=2,b=3;
sub(a,b);
printf("a=%d\tb=%d\n",a,b);
return;
}
void sub(int a,int b){
a=a+5; b=a*b;
}
0664デフォルトの名無しさん
2007/12/06(木) 02:39:51ローカル変数の値渡しなのでmain関数ないのaとbは変更されないため
0665デフォルトの名無しさん
2007/12/06(木) 03:45:54[2] 問題文
int型の値を変数bで受け取り、次の演算を行ってbの値を返すadd_num関数を作成しなさい。
[add_num関数内の処理]
「今回の得点は60点満点で何点ですか?」と画面表示した後、キーボードからint型変数cに値を入力する。
続いて、変数bにcの値を加算し、bの値を返す。
次に、main関数でint型変数nを値25で初期化し、nの値を「現在の得点:」とともに表示した後、add_num関数にnの値を渡す。そしてadd_num関数が返した値を再び変数nに格納し、nの値を「総合得点:」とともに右のように表示するプログラムを作成しなさい。
[3] 環境
[3.1] OS: Windows XP
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: 12月6日9:30
実行結果例
現在の得点:25
今回の得点は60点満点で何点ですか?
(48)
総合得点:73
()はキーボード入力
よろしくお願いします
0666デフォルトの名無しさん
2007/12/06(木) 03:47:45[2] 問題文
まず、次のメンバを持つ構造体をtypedef宣言を使用し、data型として準備しなさい。
ただし、typedef宣言において構造体タグ名は省略しなさい。
char型の配列変数id(配列サイズ:8)、int型の変数n
main関数では、このdata型の変数personを宣言し、そのメンバidを 012345、nを25として初期化する。
続いて、実行結果に示すように「学籍番号・・・の現在の得点:」とともにpersonのメンバidとnを表示した後、personのメンバnのみの値をadd_num関数に渡す。
さらにadd_num関数から戻る値をpersonのメンバnに格納し、「学籍番号・・・の総合得点:」とともにpersonのメンバidとnを右のように表示するプログラムを作成しなさい。
ただし、add_num関数は、int型の変数bに受取った値を格納し、「今回の得点は60点満点で何点ですか?」の質問とともにキーボードによりint型変数cに得点を入力した後、変数bにcの値を加算し、bの値を返すように作成しなさい。
[3] 環境
[3.1] OS: Windows XP
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: 12月6日9:30
実行結果例
学籍番号012345の現在の得点:25
今回の得点は60点満点で何点ですか?
(45)
学籍番号012345の総合得点:70
()はキーボード入力
よろしくお願いします
0667デフォルトの名無しさん
2007/12/06(木) 03:48:47[2] 問題文
まず、次のメンバを持つ構造体をtypedef宣言を使用し、data型として準備しなさい。
ただし、typedef宣言において構造体タグ名は省略しなさい。
char型の配列変数id(配列サイズ:8)、int型の変数n
main関数では、このdata型の変数personを宣言し、そのメンバidを 012345、nを25として初期化する。
続いて、実行結果に示すように「学籍番号・・・の現在の得点:」とともにpersonのメンバidとnを表示した後、personをadd_num関数に渡す。
さらにadd_num関数から戻る値をpersonに格納し、「学籍番号・・・の総合得点:」とともにpersonのメンバidとnを表示するプログラムを作成しなさい。
ただし、add_num関数は、data型の構造体person2に受取った内容を格納し、「今回の得点は60点満点で何点ですか?」の質問とともにキーボードによりint型変数cに得点を入力した後、person2のメンバnにcの値を加算し、person2の内容を返すように作成しなさい。
[3] 環境
[3.1] OS: Windows XP
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: 12月6日9:30
実行結果例
学籍番号012345の現在の得点:25
今回の得点は60点満点で何点ですか?
45
学籍番号012345の総合得点:70
よろしくお願いします
0668デフォルトの名無しさん
2007/12/06(木) 03:56:51[2] 問題文
まず、次のメンバを持つ構造体をtypedef宣言を使用し、data型として準備しなさい。
ただし、typedef宣言において構造体タグ名は省略しなさい。
char型の配列変数id(配列サイズ:8)、int型の変数n
main関数では、このdata型の配列変数personを配列サイズ5で宣言する。
続いて、person[0]、person[1]、person[3]、person[3]、person[5]の順にこれらの内容を一つずつadd_num関数に渡し、その都度add_num関数から戻る内容をperson[0]、person[2]・・・に格納する。
その後、5つのperson[i]のメンバidとnを「学籍番号・・・の得点」として表示するプログラムを作成しなさい。
ただし、add_num関数は、data型の構造体person2に受取った内容を格納し、「学籍番号7桁を入力してください。」の質問とともにキーボードによりperson2のメンバidに学籍番号を入力、
また、「今回の得点は何点ですか?」の質問とともにキーボードによりperson2のメンバnに得点を入力し、person2の内容を返すように作成しなさい。
[3] 環境
[3.1] OS: Windows XP
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: 12月6日9:30
実行結果例
学籍番号7桁を入力してください。
0123456
今回の得点は何点ですか?
70
学籍番号7桁を入力してください。
0124680
今回の得点は何点ですか?
80
学籍番号0123456の得点:70
学籍番号0124680の得点:80
よろしくお願いします
0669デフォルトの名無しさん
2007/12/06(木) 04:45:21#include<stdio.h>
int add_num(int b){
int c;
printf("今回の得点は60点満点で何点ですか?\n");
scanf("%d",&c);
b += c;
return b;
}
main(){
int n=25;
printf("現在の得点:%d\n",n);
n = add_num(n);
printf("総合得点:%d",n);
}
0670デフォルトの名無しさん
2007/12/06(木) 05:38:31一度、ウイザードを使用してexeのスケルトンで作ったプロジェクトを
ウイザードでdllのスケルトンを作成したプロジェクトに変更することは可能なのでしょうか。
0671デフォルトの名無しさん
2007/12/06(木) 07:39:54コードだけちゃっちゃとコピペしたら?
というかここで悩んで相談するより実際にやったほうがずっと早い
0672デフォルトの名無しさん
2007/12/06(木) 08:44:55グローバル変数を使って、どなたかお願いします。
#include <stdio.h>
#define SIZE 6
#define ERROR_NUM 9999
void init(void);
void push(int dt);
int pop(void);
void show(void);
これを使ってお願いします。 なお、必要のないものは
使わなくて結構です。よろしくお願いします
0673デフォルトの名無しさん
2007/12/06(木) 09:29:01【質問テンプレ】
[1] 授業単元: DirectX
[2] 問題文(含コード&リンク):サンプルソースを元に入力クラスを作成して、表示させた画像を動かす。
(車を動かすので、可能ならアクセルとブレーキを再現)
サンプルソースを下記にうpします。(mainとヘッダーがあるためzipファイルです。)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5415.zip
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: どちらでも可
[4] 期限: 2007年12月6日 17時
[5] その他の制限: 制限はなし
すっかり課題を忘れてて手をつけていない
よろしくお願いします
0674デフォルトの名無しさん
2007/12/06(木) 09:30:01後出しするな
しかもグローバル変数は使ってるだろ
0675デフォルトの名無しさん
2007/12/06(木) 10:54:05>>626
>>629
東京電気大学なんてねぇよw
×電気→○電機
漢字すら書けない喪前らの方がよっぽど阿呆だw
0676デフォルトの名無しさん
2007/12/06(木) 10:56:410677デフォルトの名無しさん
2007/12/06(木) 11:02:08[1] 授業単元: C言語
[2] 問題文(含コード&リンク):コマンドライン引数から半角アルファベットで構成されている
テキストファイルを元に暗号化する,半角アルファベット以外はそのまま出力する。
↓のfile.txtを読み込んで
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
↓のようにファイルを出力する
zxywvutsrqponmlkjihgfedcba
ZXYWVUTSRQPONMLKJIHGFEDCBA
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C
[3.3] 言語:C
[4] 期限:今日中
お願いします
0678デフォルトの名無しさん
2007/12/06(木) 11:47:54なんで電機を庇うの?
あ、ひょっとして件の大学の方ですか?w
0679デフォルトの名無しさん
2007/12/06(木) 12:13:04小テストで if(a==10) とするところをif(a=10)としていてうまくいかずに悩んでたやついた
(電大知らない人は電気だと思うだろうね、普通は)
0680デフォルトの名無しさん
2007/12/06(木) 12:20:47>>679
そのミスは得意な人もたまにうっかりやるミス
0681デフォルトの名無しさん
2007/12/06(木) 12:44:55ランクってのはよく知らない(気にしたこともない)
自分も先生から聞かされるまで知らなかったし
でも最近(1〜2年前)駅付近の広告(駅のホームとかだったか?)で見るようになった気がする
知名度はその程度
0682デフォルトの名無しさん
2007/12/06(木) 12:54:22[2.1]1から200までの乱数をつくって、100未満なら3引き、100以上なら5を足す。100回やる。
[2.2]生まれた月と日を入力し、星座が何であるかを出力するプログラムを作成せよ。
[2.3]入力された文字列に同じ文字が複数個あるとき、最初に現れた文字以外を@に置き換える。
[3.1]Windows XP
[3.2]Visual Studio.NET 2003
[3.3]C
[4]2007年12月07日12時まで
[5]2.2において誤ったデータが入力された場合は、再度入力させる仕様とし、また各月ともに31日まであるものとする。
どうかよろしくお願いします。
0683デフォルトの名無しさん
2007/12/06(木) 14:01:44[2.3]
#include<stdio.h>
main(){
char s[100],s2[100];
int i,c[128];
for(i=0;i<128;i++){
c[i]=0;
}
scanf("%s",s);
for(i=0;s[i]!='\0';i++){
if(c[s[i]]!=0){
s[i]='@';
}
c[s[i]]++;
}
printf("%s",s);
}
0684デフォルトの名無しさん
2007/12/06(木) 14:02:260685デフォルトの名無しさん
2007/12/06(木) 14:17:33m 番の石を最初に取り除く.直前に除いた石から時計回りに石をたどって k 個目を取り除く作業を,残り 1個になるまで繰り返すとする.
標準入力から,n, m, k の 3つの整数値が与えられたとき,最後に残る石の番号を答えるプログラムを書きなさい.
普通の継子立てとおなじく考えてたら全然ダメでした。。。ソースお願いします><
0686デフォルトの名無しさん
2007/12/06(木) 14:25:05>>680
>>681
一般常識だろ。FAX開発者が初代学長。中学、高校共にlv高いし。国立大合格者毎年出すし。
大学の就職率もそんじょそこらの大学よりぜんぜんいい。
0687デフォルトの名無しさん
2007/12/06(木) 14:27:38テンプレに習え。
あとリングバッファでぐぐれ。
>>686
>国立大合格者毎年出すし
これ笑うとこですよね?
0688デフォルトの名無しさん
2007/12/06(木) 14:37:24ん? 電機大高校から国立合格者を出すって意味だけど…?
大学から大学合格者出したらそりゃ笑うわw
0689工大生
2007/12/06(木) 14:47:08条件は制御文はif(if−else、else−if)文、switch文、繰り返し制御(while,do-while,for文)
を一回以上使い、関数は三種類以上作ります。あと配列およびポインタ変数をそれぞれ一つ以上使う。です。
誰か得意な方教えてください。
0690デフォルトの名無しさん
2007/12/06(木) 15:01:50大学生にもなって>>1も読めませんか?
0691デフォルトの名無しさん
2007/12/06(木) 16:30:39ふつーの高校は、いちいちそんなこと言いませんが。
0692デフォルトの名無しさん
2007/12/06(木) 16:30:42[2] 問題文(含コード&リンク):二次方程式のa b cをキーボードから入力して解を求めるプログラムの作成
a=0を入力するまで繰り返し計算するものとする、入力するa b cの組は5個程度、3種類のすべての解を含むように選ぶこと
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語:C++
[4] 期限:12/8 12:00まで
[5] その他の制限:今まで習った関数はprintf、scanf、if、else、whileあたりの基本関数
平方根の計算はsqrt()を使う、#include"stdio.h"のあとに#include"math.h"をつける
前回は解の判別までやりました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5416.txt
よろしくお願いします
0694デフォルトの名無しさん
2007/12/06(木) 17:10:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5417.txt
0696デフォルトの名無しさん
2007/12/06(木) 18:23:260697デフォルトの名無しさん
2007/12/06(木) 19:02:34ホントにお願いします!
0698デフォルトの名無しさん
2007/12/06(木) 19:27:230699デフォルトの名無しさん
2007/12/06(木) 20:45:16ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5418.c
0700デフォルトの名無しさん
2007/12/06(木) 20:47:06[2] 問題文
要素数がnoであるint型の配列v2の並びを逆順にしたものを配列v1に格納する関数、
void intary_rcpy(int v1[],const int v2[],int no) {/…/}
を作成せよ
[3] 環境
[3.1] OS:Windows XP
[3.2] VS2005
[3.3] 言語:C++
[4] 期限: 12月7日(金)の午前中まで
よろしくお願いします
0701デフォルトの名無しさん
2007/12/06(木) 20:56:47ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5420.c
0702デフォルトの名無しさん
2007/12/06(木) 21:00:46#include <algorithm>
void intary_rcpy(int v1[],const int v2[],int no){std::reverse_copy(v2, v2+no, v1);}
0703デフォルトの名無しさん
2007/12/06(木) 21:06:31間違ってはいないが酷いな
0704デフォルトの名無しさん
2007/12/06(木) 21:14:03いや、俺はそうあるべきだと思う。
あ、たしかに課題の回答としてはどうかと思うがw
0705デフォルトの名無しさん
2007/12/06(木) 21:16:31ついでにC++もちょっとしか知らない
0706デフォルトの名無しさん
2007/12/06(木) 21:20:37理解してるか見るためとはいえ
0707デフォルトの名無しさん
2007/12/06(木) 21:25:17アホですか・・・?
0708700
2007/12/06(木) 21:34:32ありがとうございます
ですが、sizeofはまだ習っていないので、宿題の提出には使えないと思います。前回の講義で配列の要素を0にする
#include <stdio.h>
void int_set(int vc[],int no)
{
int i;
for(i=0;i<no;i++)
vc[i]=0;
}
int main(void)
{
int i;
int ary1[] = {1,2,3,4,5};
int ary2[] = {3,2,1};
int_set(ary1,5);
int_set(ary2,3);
for(i=0;i<5;i++) printf("ary1[%d]"=%d\n",i,ary1[i]);
for(i=0;i<3;i++) printf("ary2[%d]"=%d\n",i,ary2[i]);
return (0);
}
0709700
2007/12/06(木) 21:36:33というプログラムを組んだので、これと似た感じのプログラミングで、
>>700の内容を組めないでしょうか?
上の内容のプログラムとmax_ofなどから必要なものを持ち出して、
組んでみろと先生は言っていました。
すみません、アホな質問だとは思いますが、どうかお願いします
0710デフォルトの名無しさん
2007/12/06(木) 21:42:39{
int i;
for(i=0; i<no; i++) v1[i] = v2[no-1-i];
}
0711デフォルトの名無しさん
2007/12/06(木) 21:49:08情報の後出しは良くないから気をつけてね
0712デフォルトの名無しさん
2007/12/06(木) 22:02:58[2] 問題文(含コード&リンク):
虫食い算
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5425.zip
シンプソン
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5424.zip
以前このスレで上記のプログラミングをやっていただいたのですが、
課題でこの2つのプログラムについて『 (1) 問題をどのように理解し、どのようなアルゴリズム(算法)で処理を進めるか。
(2) それをフローチャート(流れ図)で表せ。』という課題が出されました。
[3] 環境
[3.1] OS: WindowsXP
[3.3] 言語: c
[4] 期限: 12/14まで
リンク先に問題文とプログラムを載せましたが、やはり他人が作成したプログラミングのフローチャートを作ることはこのスレの方でも難しいことなのでしょうか?
面倒かもしれませんが、よろしくお願いします。
0713デフォルトの名無しさん
2007/12/06(木) 22:06:230714デフォルトの名無しさん
2007/12/06(木) 22:27:44>>643にもう答え書いたけど?
0715デフォルトの名無しさん
2007/12/06(木) 22:31:040716デフォルトの名無しさん
2007/12/06(木) 22:35:400717デフォルトの名無しさん
2007/12/06(木) 22:36:280718デフォルトの名無しさん
2007/12/06(木) 22:40:070719デフォルトの名無しさん
2007/12/06(木) 22:42:460720デフォルトの名無しさん
2007/12/06(木) 22:51:51[2] 問題文(含コード&リンク):
3次方程式を解くプログラムをニュートン法を用いて作成せよ。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限: 12月23日
[5] その他の制限 特にありません。
0722デフォルトの名無しさん
2007/12/06(木) 23:07:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5426.zip
0723デフォルトの名無しさん
2007/12/06(木) 23:15:00まさか、こんな早くやっていただけるとは思いませんでした!
シンプソンだけでも感謝です!
本当にありがとうございました。たすかります。
0724デフォルトの名無しさん
2007/12/06(木) 23:22:24あと10分まて
0725デフォルトの名無しさん
2007/12/06(木) 23:36:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5427.zip
すまん、画像にすんのなかなか面倒でな。
0726デフォルトの名無しさん
2007/12/06(木) 23:47:40時間を使わせてしまって申し訳ありません。
>>725さん本当にありがとうございました!
0727デフォルトの名無しさん
2007/12/06(木) 23:49:36きにすんなー♪申し訳ないと思うなら、次はもっと面白い課題もってこーいw
気が向いたらやるんで。
0728デフォルトの名無しさん
2007/12/06(木) 23:55:43http://updas.net/up/download/1196919710.zip
このテキストの暗号及び複合化のソースを教えてください
このテキストファイルはXOR暗号されており16進数になっています
KEYは215です
[email protected]
0729デフォルトの名無しさん
2007/12/06(木) 23:58:34いやそれ以前にスレ違いだろ
0730デフォルトの名無しさん
2007/12/07(金) 01:43:42せめてテンプレに載せて書いてくれたらやってあげたのに・・・
0731デフォルトの名無しさん
2007/12/07(金) 03:00:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5428.txt
ニュートン法を知らなかったんで、ニュートン方を解説してるサイトを元にして手探りで作ってみたw
自分が見た例題通りに収束したし、他の場合でもxを代入したら0に限りなく近づいてたんで多分できてるはず。
0732デフォルトの名無しさん
2007/12/07(金) 03:10:060733デフォルトの名無しさん
2007/12/07(金) 03:49:150734デフォルトの名無しさん
2007/12/07(金) 06:33:52サンクスです。
めちゃくちゃ助かりました。
0735デフォルトの名無しさん
2007/12/07(金) 08:59:060736デフォルトの名無しさん
2007/12/07(金) 13:52:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5429.c
0737デフォルトの名無しさん
2007/12/07(金) 14:04:15[2] 問題文(含コード&リンク):
以下のプログラムを改良し次の機能を追加せよ
a.選ばれる数字は1000〜9999の4桁であること
b.ユーザの入力した数字が選ばれた数字と異なる場合その数字が選ばれた数字よりも大きいか小さいかというヒントを表示する
c.n回目で当てた場合ユーザの得点を−n点として表示する
d.10回以上繰り返し入力できないようにし、そのときにはポイントと選ばれた数字を表示する
e.何度も繰り返し実行しポイントを加算(−n点なのでどんどんマイナスになるはずである)していく
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio.NET 2003
[3.3] 言語:C
[4] 期限:2007年12月9日20:00前後を希望
[5] その他の制限:if文、swich文、while文等繰り返し処理の初歩段階まで。下の文(課題文)で出てる程度までです。
#include<stdio.h> #include<stdlib.h> #include<time.h>
int main(void) { int secret_number; int guess_number; srand(time(NULL));
secret_number = rand() % 9 + 1; while (1) {
printf("Make a guess the number: "); scanf("%d", &guess_number);
if (guess_number != secret_number) { printf("You missed.\n");
} else { printf("Bingo!\n");
break; } } exit(0); }
どうかひとつお願いします。。
0738デフォルトの名無しさん
2007/12/07(金) 15:16:16[2] 問題文:ガウスの消去法を用いて連立一次方程式を解くプログラムを作りなさい。
次の方程式を解きなさい。
�@4X1 + X2 - 3X3 + 10X4 = 6
�A2X1 + 3X2 + X3 +4X4 = 5
�B5X1 - 4X2 - 2X3 + 2X4 =0.5
�C-2X1 + 2X2 + 8X3 + 4X4 = 6
***Xの前にある数字は係数。後の数字は小文字の数字でお願いします***
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C言語(C++!?)
[4] 期限: [2007年12月19日21:00まで]
[5] その他の制限: 特になし。
0739デフォルトの名無しさん
2007/12/07(金) 15:17:41ずれてる
0740737
2007/12/07(金) 15:53:51#include<stdlib.h>
#include<time.h>
int main(void)
{
int secret_number;
int guess_number;
srand(time(NULL));
secret_number = rand() % 9 + 1;
while (1) {
printf("Make a guess the number: ");
scanf("%d", &guess_number);
if (guess_number != secret_number) {
printf("You missed.\n");
} else {
printf("Bingo!\n");
break;
}
}
exit(0);
}
これでずれ修正できたでしょうか
改めてお願いします
0741デフォルトの名無しさん
2007/12/07(金) 16:31:200742デフォルトの名無しさん
2007/12/07(金) 16:57:31#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int gcd(int a, int b){
int c;
while((c=a%b)) a=b,b=c;
return b;
}
char *p(int x, int y){
char buf[100];
int abs_x, abs_y;
if(y==0) return strdup("エラー");
if(x==0) return strdup("(0,1)");
abs_x=abs(x);
abs_y=abs(y);
x/=gcd(abs_x, abs_y);
y/=gcd(abs_x, abs_y);
if(y<0) x=-x,y=-y;
sprintf(buf, "(%d,%d)", x, y);
return strdup(buf);
}
int main(void){
printf("%s\n", p(12,0));
printf("%s\n", p(34,56));
printf("%s\n", p(78,-90));
return 0;
}
0743デフォルトの名無しさん
2007/12/07(金) 19:47:21ごみくそーす
int main(void){
int secret_number;
int guess_number;
int i, score=0;
srand(time(NULL));
while (1) {
printf("New game!\n");
secret_number = rand() % 9000 + 1000;
for(i=0; i<9; i++){
printf("Make a guess the number: ");
scanf("%d", &guess_number);
if (guess_number < secret_number){
printf("You missed.\n");
printf("guess number < secret number\n\n");
}
else if(guess_number > secret_number){
printf("You missed.\n");
printf("guess number > secret number\n\n");
}
else{
printf("Bingo!\n");
score -= i;
break;
}
}
printf("Secret number was %d.\n", secret_number);
printf("Your score is %d.\n\n", score);
}
exit(0);
}
0744デフォルトの名無しさん
2007/12/07(金) 20:30:160745デフォルトの名無しさん
2007/12/07(金) 20:57:54> return strdup(buf);
これ、free() で解放する必要はないでしょうか?
0747デフォルトの名無しさん
2007/12/07(金) 21:58:59解放しなくて良いよ。
0748デフォルトの名無しさん
2007/12/07(金) 22:25:16では、strdup() の返す値は、スタック上にあるのでしょうか?ヒープ領域でしょうか?
前者なら strdup() の呼び出された関数から抜けると、その返り値は無効になりそうですし、l
後者ならば、やっぱり free() しないと、と考えるのですが。
ANSI の関数じゃないので、挙動がよくわからないのです。
0749デフォルトの名無しさん
2007/12/07(金) 22:45:43[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5407.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 12/7
[5] その他の制限: 特になし
0750デフォルトの名無しさん
2007/12/07(金) 22:57:20strdupの文字列はmallocされた領域だから、freeしないとダメ
0751デフォルトの名無しさん
2007/12/07(金) 23:05:17今日までじゃねーかwwww
0752682
2007/12/07(金) 23:16:060753デフォルトの名無しさん
2007/12/07(金) 23:32:46#include <stdio.h>
#include <memory.h>
/* struct mytime定義 省略 */
struct mytime sec2time(int sec)
{
struct mytime time;
memset(&time, 0x00, sizeof(time));
time.hour = sec/(60*60);
sec %= (60*60);
time.minute = sec/60;
sec %= 60;
time.second = sec;
return time;
}
/* time2sex省略 */
struct mytime add_time(struct mytime s1, struct mytime s2)
{
return sec2time(time2sec(s1) + time2sec(s2));
}
/* print_mytime 省略 */
int main()
{
struct mytime s1 = sec2time(4000);
struct mytime s2 = sec2time(9800);
print_mytime( add_time(s1, s2) );
return 0;
}
0754デフォルトの名無しさん
2007/12/07(金) 23:39:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5430.txt
0755デフォルトの名無しさん
2007/12/08(土) 00:25:20[2] 問題文(含コード&リンク):1-2+3-4+・・・-100の和
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:?
[3.3] 言語:C
[4] 期限:2007年12月8日23時
[5] その他の制限:本当に基礎的な事しかやってないので、
出来れば簡単なプログラムでお願いします。
0756デフォルトの名無しさん
2007/12/08(土) 00:29:43#include <stdio.h>
main(void){ return puts("-50") >= 0; }
0757デフォルトの名無しさん
2007/12/08(土) 00:40:510758デフォルトの名無しさん
2007/12/08(土) 00:53:43ありがとうございます。
ちなみに、for文を使ったらどうなるんでしょうか。
0759デフォルトの名無しさん
2007/12/08(土) 00:58:30#include <stdio.h>
int main() { int i = 0; for (; i < 1; i++) puts("-50\n"); }
0760デフォルトの名無しさん
2007/12/08(土) 00:59:38int main(void){ int i; for(i=0;i<1;i++)puts("-50"); return 0; }
かぶった orz
0761デフォルトの名無しさん
2007/12/08(土) 01:02:42#include <stdio.h>
main(void){
int i;
for(i=0;i<1;i++) printf("-50");
}
0762デフォルトの名無しさん
2007/12/08(土) 01:11:19#include <stdio.h>
main(void){
int i;
for(i=-50; i>-51; i--) printf("%d", i);
}
0763デフォルトの名無しさん
2007/12/08(土) 01:14:380764デフォルトの名無しさん
2007/12/08(土) 01:19:54puts(-50)ってw
int i;
int sum=0;
for(i=1; i++; i<=100) sum = (i%2 == 0) ? (sum-i) : (sum+i);
printf("1-2+3-4+・・・-100の和 = %d\n", sum);
0765デフォルトの名無しさん
2007/12/08(土) 01:22:37× for(i=1; i++; i<=100)
○ for(i=1; i<=100; i++)
0766デフォルトの名無しさん
2007/12/08(土) 03:35:21[2] 問題文(含コード&リンク):読み込んだ2つの整数の割り算の答えを小数点以下100桁まで表示するプログラムを作りなさい。
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C
[4] 期限:2007年12月9日9:00
0767デフォルトの名無しさん
2007/12/08(土) 03:36:400768デフォルトの名無しさん
2007/12/08(土) 05:58:56#include <stdio.h>
int main(void)
{
int n1, n2, i;
scanf("%d%d", &n1, &n2);
printf("%d.", n1/n2);
n1 = (n1%n2)*10;
for(i = 0; i < 100; i++){
printf("%d", n1/n2);
if(n1%n2 == 0)
break;
n1 = (n1%n2)*10;
}
return 0;
}
0769デフォルトの名無しさん
2007/12/08(土) 09:59:27#include <stdio.h>
int main(void)
{
int n1, n2, i;
scanf("%d%d", &n1, &n2);
printf("%f...", (float)n1/n2);
printf("(省略されました・・全てを読むにはここを押してください)\n");
return 0;
}
0770デフォルトの名無しさん
2007/12/08(土) 11:26:13プログラム終了時に malloc した領域が OS に帰りますか。また、そうとして、それは処理系の仕事?それともOSの仕事?いずれにしても malloc() した領域を free() しないソースはきれいとは思えませんね、個人的には。
0771デフォルトの名無しさん
2007/12/08(土) 11:30:38メモリが解放されていないなら、実行中のはずだ
freeが必要なのは、サブルーチンから戻るときだ
0772デフォルトの名無しさん
2007/12/08(土) 11:51:45また、仕様にも無頓着だ。
0773デフォルトの名無しさん
2007/12/08(土) 11:57:15つい忘れがちになるし
0774デフォルトの名無しさん
2007/12/08(土) 12:00:09長時間起動するアプリでメモリリークが起こったら疑えばよい
0775デフォルトの名無しさん
2007/12/08(土) 12:02:150776デフォルトの名無しさん
2007/12/08(土) 12:05:07少なくとも俺の開発している環境ではアプリ終了後も
確保したメモリ領域は残ってる
安西先生、MMUが欲しいです
0777デフォルトの名無しさん
2007/12/08(土) 12:05:28「起こってから」とか悠長なこというのは自分一人でプログラム組む人だけにして欲しい
いや宿題スレに来るような人はそもそも将来プログラム組んで欲しくないけど
0778デフォルトの名無しさん
2007/12/08(土) 12:05:460779デフォルトの名無しさん
2007/12/08(土) 12:07:53また、仕様にも無頓着だwwwwwwwwwwwww
自分の環境がwwwすべてだとwwww思うなよwww
バーヤwwwwwwwwwwwwwwwwwwwww
0780デフォルトの名無しさん
2007/12/08(土) 12:09:53どういう環境なのか、どういうソースだと残るのか書いてみ
0781デフォルトの名無しさん
2007/12/08(土) 12:11:47か、回答者もですか……?
0782デフォルトの名無しさん
2007/12/08(土) 12:13:50メモリリークとかに気をつければいいんじゃね?w
まぁ趣味で組むなら関係ないことだけどね
たとえ起動するたびにランダムでファイルが消えようと仕様の一言で済むし。
0783デフォルトの名無しさん
2007/12/08(土) 12:29:45組み込みの某RTOS。
mallocでもnewでも確保したやつは明示的に解放するまでは
システムをリブートするまで消えない。
0784デフォルトの名無しさん
2007/12/08(土) 12:35:15ほんとかよ?freeしないと消えない暗示にかかっているんじゃないだろうな?
たとえば200M確保して終了するプログラム作ったらその200Mにはアクセスできなくなるのか?
0785デフォルトの名無しさん
2007/12/08(土) 12:36:19それは環境依存の現象だね
一般化するのは危険
C言語の仕様ではプログラム終了時のメモリについて規定は無い
つまり、freeしたからといって、もしくはしなかったからといって
確保したメモリがどうなるかは完全に環境依存だ
windows、UNIX、Linuxについてはメモリリークは発生しない(ということになっている)
組み込みに関しては一般論で語るのは愚の骨頂
(組み込みにおいて安易に命令を増やしてよいわけがない)
つまり、理由もなくfreeを追加してよい場面は無いし
理由もなくfreeを書かないといったことも許されるわけがない
ただ、一つだけ言えることは安易に理由もなくfreeを記述することは
バグを増やす原因となりうることを意識しておかなければならないということだ
0786デフォルトの名無しさん
2007/12/08(土) 12:37:560787デフォルトの名無しさん
2007/12/08(土) 12:38:51プログラムを終了しても、アクセス出来なくなる領域を残すとは、そのOSのバグでは?
キャッシュに残るとかなら正常だけど、終了してもアクセス不可はやばいよ
0788デフォルトの名無しさん
2007/12/08(土) 12:38:570789デフォルトの名無しさん
2007/12/08(土) 12:42:330790デフォルトの名無しさん
2007/12/08(土) 12:47:240791デフォルトの名無しさん
2007/12/08(土) 12:49:31そもそもfreeをOSまかせにする奴は
メモリやらオブジェクトの生存期間を管理
できてない素人。
プログラム終了時にメモリが解放されると
言い張る奴はOSの仕様と言語仕様を勘違い
しているアホ
0792デフォルトの名無しさん
2007/12/08(土) 12:52:090793デフォルトの名無しさん
2007/12/08(土) 12:54:04OSの仕様を考えずに、なんでもかんでもfreeするほうがよっぽど素人。
0794デフォルトの名無しさん
2007/12/08(土) 12:55:37確保したら別のソフト、OSからアクセスできるかどうかしか違わないはずだろう
アクセスしていたプログラムが終了しても解放されないのはおかしいだろ
0795デフォルトの名無しさん
2007/12/08(土) 12:56:440796デフォルトの名無しさん
2007/12/08(土) 12:59:25とりあえずfreeした方がいいのかそれともOSに任せた方がいいのかって話題じゃないのか?
玄人さんは自分の好きなように管理してくださいよ
0797デフォルトの名無しさん
2007/12/08(土) 13:03:060798デフォルトの名無しさん
2007/12/08(土) 13:03:12つ [移植性]
別のOSで動かす時に全部に対応するfreeを書かないといけないんだぜ?
いっぺんオープンソースのライブラリとか見てみろ
それなりの経験者が書いているコードを
まあどうみても>>793は顔真っ赤にして
恥の上塗りしてるだけにしか見えないが
0799デフォルトの名無しさん
2007/12/08(土) 13:04:450800デフォルトの名無しさん
2007/12/08(土) 13:07:12>>793みたいに勘違いしてる奴が現場にくると
周りが迷惑する
なのできちんと理解できない初心者のうちは
黙ってfreeしとくのがいいと思います
0801デフォルトの名無しさん
2007/12/08(土) 13:07:46??
個人のスタンスなんてどうでもいいけど、
処理系依存を出来るだけ避けて、
規格合致なCのコードを書こうとするスタンスの何が素人?
0802デフォルトの名無しさん
2007/12/08(土) 13:08:540803デフォルトの名無しさん
2007/12/08(土) 13:09:010804デフォルトの名無しさん
2007/12/08(土) 13:10:550805デフォルトの名無しさん
2007/12/08(土) 13:12:510806デフォルトの名無しさん
2007/12/08(土) 13:14:30プログラムが終了しているにもかかわらず、アクセス不可のままにしておくOSは壊れている
0807デフォルトの名無しさん
2007/12/08(土) 13:15:30だめでした!\(^_^)/
OSもがめてるから3回目でmalloc失敗!
0808デフォルトの名無しさん
2007/12/08(土) 13:16:45OSあるだけ幸せ。
0809デフォルトの名無しさん
2007/12/08(土) 13:16:51続けてじゃなくて5M確保したら、解放無しで終了するプログラムを4回実行
0810デフォルトの名無しさん
2007/12/08(土) 13:17:150811デフォルトの名無しさん
2007/12/08(土) 13:19:27そうやりました!
だめでした!
0812デフォルトの名無しさん
2007/12/08(土) 13:21:060813デフォルトの名無しさん
2007/12/08(土) 13:28:25お前らが使ってる携帯にも使われてますが何か?
0814デフォルトの名無しさん
2007/12/08(土) 13:31:00freeをしなかった場合にメモリリークになるのか
環境依存です。
0815デフォルトの名無しさん
2007/12/08(土) 13:32:01OSの仕事とかいうに、ちゃんとプログラム内でfreeさせなきゃいけない
でないとメモリリークになる
スレッドモデルでfreeし忘れたら、プロセスが終了するまで、大量にリークしたままの状態になる
もちろん、プロセス終了時に解放されるから、分かってやってるんならいいけど、作法としてはNG
0816デフォルトの名無しさん
2007/12/08(土) 13:32:19freeをした場合の不都合については無知なんだね
移植性を考慮した場合、freeはdefineしておくのが常道
0817デフォルトの名無しさん
2007/12/08(土) 13:32:30OSは正しくプログラムが終了している事を知っているのに、アクセスできないままにしておくのはバグだと思うよ
0818デフォルトの名無しさん
2007/12/08(土) 13:34:11言語仕様には書かれていません
0819デフォルトの名無しさん
2007/12/08(土) 13:35:24そんな風に考えていた時期もありました
0820デフォルトの名無しさん
2007/12/08(土) 13:38:41それを解放するか、しないかはOSが決めることだ
しかし、しなかった場合、プログラムが終了しているのにそのままにしておくのはおかしい
0821デフォルトの名無しさん
2007/12/08(土) 13:39:34プログラム内でmallocした領域をfreeしちゃいけないって何だ?
解放済みの領域をfreeしたとか、そんなマヌケな話?
0822デフォルトの名無しさん
2007/12/08(土) 13:40:050823デフォルトの名無しさん
2007/12/08(土) 13:41:590824デフォルトの名無しさん
2007/12/08(土) 13:42:07そういう周辺事項を含めて、宿題が出ているのかもしれない
俺も昔、Unixのメモリ管理のレポートを書かされた気がする
上位アドレスからメモリを確保するか、下位アドレスからメモリを確保するのか、とかそんな話だったかな・・・忘れた
0825デフォルトの名無しさん
2007/12/08(土) 13:49:470826デフォルトの名無しさん
2007/12/08(土) 13:51:27・きれいとは思えませんね派(感情派)
・サブルーチンから戻るときは必要派(不穏分子?)
・習慣づけておくのはいいことだよ派(みんながそう言ってたよ派)
・俺の環境では確保したメモリ領域は残ってる派(目の前の環境がすべてだよ派)
・趣味で組むなら関係ない派(仕様です系過激派)
free不必要だよ派
・長時間起動するアプリでメモリリークが起こったら疑えばよい(どうせ日次リブートやるんだよ派?)
・windows、UNIX、Linuxでメモリリークは発生しない派(ファンタジー派)
・mallocは使わない派(石橋を叩いてみたけどやっぱり渡らない派)
0827デフォルトの名無しさん
2007/12/08(土) 13:51:44それなら質問者と対話しろ
おきざりにするなw
0828デフォルトの名無しさん
2007/12/08(土) 13:55:13OS仕様や言語仕様は全然みてないってことだよな?
対する立場の奴は仕様で規定されてないから確認しろっていう当たり前のことを言ってるだけ
0829デフォルトの名無しさん
2007/12/08(土) 13:56:180830デフォルトの名無しさん
2007/12/08(土) 13:56:560831デフォルトの名無しさん
2007/12/08(土) 13:58:18宿題スレに来るような人にOS仕様や言語仕様を見ろだの確認しろって言う方が無茶だろ
0832デフォルトの名無しさん
2007/12/08(土) 13:59:00だから、その仕様ってなんだ?
メモリリークになる仕様じゃないのか?
free反対派が何をいいたいのかさっぱりわからない
もっと技術的根拠を明確にして
0833デフォルトの名無しさん
2007/12/08(土) 14:00:250834デフォルトの名無しさん
2007/12/08(土) 14:00:57それを解放するか、しないかはOSが決めることだ
しかし、プログラムが正しく終了しているのにメモリアクセス不可にしておくのはおかしい
0835デフォルトの名無しさん
2007/12/08(土) 14:03:13http://www2s.biglobe.ne.jp/~hig/q_a/Programing_QA03.html
0836デフォルトの名無しさん
2007/12/08(土) 14:04:38同じにおいがするってんだよ
とっととガベコレのある言語にでも行っちまえばいいのさ
0837デフォルトの名無しさん
2007/12/08(土) 14:05:24-------------------
C言語の本をにはたいてい
mallocしたメモリーをもう使わないなら放っておけば
終了時に自動的に解放されるので明示的にfreeしなくても良い
と書いてあるのですが、先日ある雑誌を見ると
明示的にfreeしないとメモリーリークになる
と書かれていました。どちらが正しいのでしょうか。
-------------------
って書き込みがあって、「いやそんなことはない。Free すべきだ」
「環境によってはほっておいても良いよ」って話が続いているだけ。
元々の「free をしなくてもよい」と書かれた文献に関しては
元質問者は返答なし。たぶんびびって逃げたんだろう。
0838デフォルトの名無しさん
2007/12/08(土) 14:05:560839デフォルトの名無しさん
2007/12/08(土) 14:07:04UNIX、MS-DOS、Windows95/98/NTならメモリーリークは起きない
ANSI Cならメモリーリークは起きない
(malloc()/free() という関数仕様から) まともな OS とまともな言語処理系の組み合わせならメモリーリークは起きないと期待してよい
上記のいずれでもない環境ではメモリーリークを起こす可能性がある (しかし free() したからといってメモリーリークが起きないとは保証できない)
0840デフォルトの名無しさん
2007/12/08(土) 14:08:06この環境で free() 相当の関数を呼び忘れるとメモリーリークが起きるだろうが、これも用意されている関数は
malloc()/free() である可能性は低いと思われる。
0841デフォルトの名無しさん
2007/12/08(土) 14:09:21とりあえずしておくのが無難
0842デフォルトの名無しさん
2007/12/08(土) 14:10:420843デフォルトの名無しさん
2007/12/08(土) 14:11:08・組み込み(携帯?)の某OSではプログラム終了時にメモリ解放されない
解放したほうが良い理由はこの2つだけ?
0844デフォルトの名無しさん
2007/12/08(土) 14:12:080845デフォルトの名無しさん
2007/12/08(土) 14:12:12常駐物なら解放しないとまずい
0846デフォルトの名無しさん
2007/12/08(土) 14:13:23プログラムの途中でもfreeするの忘れたりするから、習慣づけしておいた方がいいと思う
みんなプログラム終了するの前提だろ?
そういうレベルで言えば組み込みだって電源抜けばメモリリークは解消されるから無視していいだろ
0847デフォルトの名無しさん
2007/12/08(土) 14:13:39・移植性に優れる
2. freeした時のデメリット
・?
3. freeしなかった時のメリット
・?
4. freeしなかった時のデメリット
・特定環境でメモリリークの原因
0848デフォルトの名無しさん
2007/12/08(土) 14:13:47?
もしかしてfree反対ってことを主張している?
反論としては弱いよ
まず、メモリ管理しているのはOSだけじゃなくて、プログラムでもやっている(もちろん物理アドレスの管理なんて出来ないけど)
1プロセスあたりの最大メモリはOSの設定によって定められてるし、(たとえば4GB)
実際の物理メモリの容量だって制限はある
制限が厳しい環境なら当然、メモリは潤沢に使えない
1プロセスあたりに、たかだか数MBのリークを起こしたとしても、
そのプロセスを大量に同時起動しなきゃいけない場合があったら、無視できない値になる
それに、自分で確保した領域は、自分で片付けないとね
あと、メモリアクセス不可にしておくのはおかしい、と言ってる時点で、OSに欠陥がある可能性も考慮しないといけないんだから、
やっぱりfreeはしなきゃ
0849デフォルトの名無しさん
2007/12/08(土) 14:14:52プログラムの「終了」時のfreeの話をしている。
0850デフォルトの名無しさん
2007/12/08(土) 14:15:53メモリリークはどんな環境でも起こるよw
>>839のいってることはメモリリークした場合に、OSが掃除してくれるかどうかでしょ
0851デフォルトの名無しさん
2007/12/08(土) 14:16:27インライン展開されていないルーチンは毎回自動で解放されるんだろうか
0852デフォルトの名無しさん
2007/12/08(土) 14:16:382. freeした時のデメリット
終了時のfreeに備えるために、プログラムが不必要に複雑になる場合がある。
0853デフォルトの名無しさん
2007/12/08(土) 14:17:03ちゃんと終了しない可能性があるとしたらどうするんだ??
0854デフォルトの名無しさん
2007/12/08(土) 14:23:10たかだかfreeするだけで複雑になる場合、プログラムの設計から見直した方がいいと思うけど?
別にfreeするしないは関係なく。
0855デフォルトの名無しさん
2007/12/08(土) 14:24:360856デフォルトの名無しさん
2007/12/08(土) 14:24:53アプリケーションがmallocで確保したメモリを
アプリケーション終了後に使用不可能になることを指す
定義厨が現れる前に定義してやったぜ!
0857デフォルトの名無しさん
2007/12/08(土) 14:26:060858デフォルトの名無しさん
2007/12/08(土) 14:26:22これただのバグだろ?特定環境でのバグ回避の手法を一般化する理由はなに?
0859デフォルトの名無しさん
2007/12/08(土) 14:27:33そんなOSなら、freeしたってメモリリークが発生するだろう。
0860デフォルトの名無しさん
2007/12/08(土) 14:27:37>ANSI Cならメモリーリークは起きない
ごめん。
否定する気は無いんだけど、これ、規格のどの辺?
良く分からん。
>>846
>そういうレベルで言えば組み込みだって電源抜けばメモリリークは解消されるから無視していいだろ
電源抜けば、とかソレは論外じゃねぇ?
どんな環境でも電源抜けばメモリリークは解消するだろ。
0861デフォルトの名無しさん
2007/12/08(土) 14:27:470862デフォルトの名無しさん
2007/12/08(土) 14:29:080863デフォルトの名無しさん
2007/12/08(土) 14:29:25メモリリーク云々以前にゾンビ化してプロセスごとリークする可能性がある。
0864デフォルトの名無しさん
2007/12/08(土) 14:29:34えー・・・引いたわ
無理やりすぎるなぁ、そんなこといったら大抵のOSはメモリリークなしってことになる
一気にテンション下がった('A`)
テンションあげるためにオナヌーでもしてくるか
0865デフォルトの名無しさん
2007/12/08(土) 14:31:48タイミングにシビアな環境で宿題やらせるなよw
0866デフォルトの名無しさん
2007/12/08(土) 14:32:03なるほど!そういう状況があるわけか、勉強になるなぁ
free反対派の意見としては一番しっくりくる
0867デフォルトの名無しさん
2007/12/08(土) 14:32:24シビアなら動的に何度も確保せずはじめに必要な分とっておけばよい
0868デフォルトの名無しさん
2007/12/08(土) 14:33:250869デフォルトの名無しさん
2007/12/08(土) 14:33:46関数内の変数は解放されるけど、newとかは解放されないの? これがメモリーリークってことなの?
0870デフォルトの名無しさん
2007/12/08(土) 14:34:360871デフォルトの名無しさん
2007/12/08(土) 14:37:52プログラム終了時とかそういう話でなく?
丸投げならテンプレ守れ。
0872デフォルトの名無しさん
2007/12/08(土) 14:39:380873デフォルトの名無しさん
2007/12/08(土) 14:42:430874デフォルトの名無しさん
2007/12/08(土) 14:44:340875デフォルトの名無しさん
2007/12/08(土) 14:47:52メモリリークの種類
アドレスの上書きによるリーク
このエラーが発生するのは、動的に割り当てられたメモリ ブロックが解放できなくなるような
ポインタの再設定が行われたときです。特に、動的割り当てブロックを指す唯一のポインタが
上書きされたときに、このエラーが発生します。
メモリ領域の解放にともなうリーク
解放したメモリ ブロックの中に、ほかのメモリ ブロックへのポインタが含まれている場合に発生します。
戻り値が無視されたために発生するメモリ リーク
メモリ ブロックを指すポインタを呼び出し元に関数が返した場合に、そのポインタが呼び出し元で無視されたときに発生します。
自動変数の喪失にともなうリーク
あるメモリ ブロックを指すローカル変数 (ポインタ) を関数が持っている場合に、
ポインタをグローバル変数に保存せずに関数が終了したとき、またはポインタを
戻り値として返さずに関数が終了したときに発生します。
http://www.techmatrix.co.jp/products/quality/insure/feature/error_sample3.html
0876デフォルトの名無しさん
2007/12/08(土) 14:49:52メモリ領域にはヒープ領域とスタック領域がある
スタック領域に確保されたメモリはスコープ(例えば関数や{}で囲まれた範囲)を抜けると解放される
ヒープ領域はスコープを抜けても解放されない
mallocやnewはヒープ領域に確保されるのでスコープを抜けても解放されない
0877デフォルトの名無しさん
2007/12/08(土) 14:51:57どれも、終了時にfreeしなかったために起きるものではない。
- アドレスの上書きによるリーク
char *p = malloc(10);
p = malloc(10);
- メモリ領域の解放にともなうリーク
char **p = (char**)malloc(sizeof(char*));
*p = malloc(10);
free(p);
- 戻り値が無視されたために発生するメモリ リーク
char *foo() { return malloc(10); }
void bar() { foo(); }
0878デフォルトの名無しさん
2007/12/08(土) 14:53:08void foo() { char* p = malloc(10); }
0879デフォルトの名無しさん
2007/12/08(土) 14:55:23#include <stdlib.h>
int main()
{
char *buf;
buf=(char *)malloc(10);
printf("<<<%p>>>\n", buf);
return 0;
}
メモリリーク(環境依存)だぜ!ぃゃっはー!!
0880 ◆3HioLDbjnQ
2007/12/08(土) 14:55:50[1] 授業単元: 新人研修
[2] 問題文(含コード&リンク):
Test.DllからAの関数を呼び出しなさい。
Aの関数は戻り値はBOOL型で、
引数がTRUEならFALSEを返してFALSEならTRUEを返します。
HMODULE hTest = NULL;
hTest = LoadLibrary(_TEXT("Test.dll"));
( ここが宿題です )
[3] 環境
[3.1] OS: WindowsXP
[3.2] VS2005
[3.3] 言語:C++
[4] 期限: ([2007年12月08日17:30まで]
[5] その他の制限: なし
0881デフォルトの名無しさん
2007/12/08(土) 14:59:020882デフォルトの名無しさん
2007/12/08(土) 15:00:590883デフォルトの名無しさん
2007/12/08(土) 15:01:55[2] 問題文:1日目はn円、2日目はn*2円、と前日の倍額を貯金したら何日で1000万円を超えるか?
貯金の合計金額は?を計算するプログラムを作成しなさい。ただし、利子は考えないものとする。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン:Fujitsu Fortran & C
[3.3] 言語: C
[4] 期限: 12/8
[5] その他の制限: なし
よろしくお願いします。
0884デフォルトの名無しさん
2007/12/08(土) 15:03:25VERIFY(((BOOL(*)(BOOL))GetProcAddress(hTest, "A"))(TRUE) == FALSE);
VERIFY(((BOOL(*)(BOOL))GetProcAddress(hTest, "A"))(FALSE) == TRUE);
0885デフォルトの名無しさん
2007/12/08(土) 15:05:54#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *hello_project()
{
const char * member[16]={
"福田明日香","石黒彩","市井紗耶香",
"中澤裕子","後藤真希","保田圭",
"安倍なつみ","辻希美","加護亜依",
"飯田圭織","矢口真里","石川梨華",
"紺野あさ美","小川麻琴","吉澤ひとみ",
"藤本美貴"
};
char *buf;
buf=(char *)malloc(10000);
strcpy(buf, member[rand()%16]);
return buf;
}
int main()
{
int i;
for (i=0 ; i<100 ; i++)
printf("%s\n", hello_project());
getch();
return 0;
}
0886 ◆3HioLDbjnQ
2007/12/08(土) 15:13:40先月までは、サポート業務してました。
>884
ありがとうございます。
0887デフォルトの名無しさん
2007/12/08(土) 15:21:53839 じゃないが、ISO/IEC 9899:1999
6.4.2 Storage durations of objects.
1. An object has a storage duration that determines its lifetime. ...
2. The lifetime of an object is the portion of program execution
during which storage is guaranteed to be reserved for it. ...
オブジェクトの生存時間はプログラムの実行時間の内側だけなので,
プログラムが終了したらオブジェクトも死なないといけない.
0888デフォルトの名無しさん
2007/12/08(土) 15:25:07[2] 問題文:リンクリスト、スタック、キュー、2分探索木を使って、ファイルから入力した数字を逆順に表示するプログラムを作成
<実行例>
ファイルmath.c
1
5
3
2
4
作成したプログラム使用後
4
2
3
5
1
と表示させる
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 12月10日まで
[5] その他の制限: よろしくお願いします
0889デフォルトの名無しさん
2007/12/08(土) 15:26:03#include<stdio.h>
#include<math.h>
main(){
int money=0,i=0,n;
printf("一日目の金額:");
scanf("%d",&n);
while(money<=10000000){
money += n*pow(2,i);
printf("%d日目:%d円\n",i+1,money);
i++;
}
}
0890デフォルトの名無しさん
2007/12/08(土) 15:26:22>リンクリスト、スタック、キュー、2分探索木
これ全部使わなきゃいけないのか?
0891889
2007/12/08(土) 15:27:190892デフォルトの名無しさん
2007/12/08(土) 15:28:120893デフォルトの名無しさん
2007/12/08(土) 15:29:35スタックの実装にリンクトリストは使えるけど、
キューや二分探索木の出番を考えるのは難しいぞ。
0894デフォルトの名無しさん
2007/12/08(土) 15:30:18#define TARGET 10000000
#include <stdio.h>
int tyotikunissuu(long *base, long add)
{
(*base)+=add;
if (*base > TARGET)
return 1;
return 1+tyotikunissuu(base, add*2);
}
int main()
{
long n;
long chokin=0;
int nissuu;
scanf("%d", &n);
nissuu=tyotikunissuu(&chokin, n);
printf("%d日で%d円の貯金\n", nissuu, chokin);
return 0;
}
0895デフォルトの名無しさん
2007/12/08(土) 15:33:490896デフォルトの名無しさん
2007/12/08(土) 15:36:480897デフォルトの名無しさん
2007/12/08(土) 15:39:496.4.2 Identifiers
(;゚д゚)・・・
6.2.4でした。
マジメにthx!
0898デフォルトの名無しさん
2007/12/08(土) 15:46:01ファイルから読み込む一時領域としてキューを使えば、キューはまだ何とか。
二分探索木ってどこで使うんだ?
0899888
2007/12/08(土) 15:46:17>>896
おそらくキューは外していいのかなと自分では思っているのですが
今までずっと、キューもリンクリストも!?っと思い、混乱しておりました
0900デフォルトの名無しさん
2007/12/08(土) 15:49:490901デフォルトの名無しさん
2007/12/08(土) 15:50:26キューがあるのは、キューがこれにまるで向いていないことを理解させるためじゃないの?
0902デフォルトの名無しさん
2007/12/08(土) 15:51:01二分探索木って二分木とどこが違うんですか?
0903デフォルトの名無しさん
2007/12/08(土) 15:51:100904デフォルトの名無しさん
2007/12/08(土) 15:53:330905デフォルトの名無しさん
2007/12/08(土) 15:54:410906デフォルトの名無しさん
2007/12/08(土) 15:56:560907デフォルトの名無しさん
2007/12/08(土) 16:07:090908デフォルトの名無しさん
2007/12/08(土) 16:09:14壮大な無駄だな
0909デフォルトの名無しさん
2007/12/08(土) 16:09:49最後の行から番号を減らしながら取り出せば良いじゃん
0910デフォルトの名無しさん
2007/12/08(土) 16:13:47ああ、そうか。
キューに全部放り込んだあと、別のキューに入れていって、
最後の要素だけ表示して追加はしない、を繰り返せばいいのか。
0911デフォルトの名無しさん
2007/12/08(土) 16:16:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5431.c
0912デフォルトの名無しさん
2007/12/08(土) 16:20:210913デフォルトの名無しさん
2007/12/08(土) 16:22:25終了時にfreeしないと怒るやつがいるぞ。
こんなプログラムで、freeするやつはバカだが。
0914デフォルトの名無しさん
2007/12/08(土) 16:22:590915デフォルトの名無しさん
2007/12/08(土) 16:29:140916デフォルトの名無しさん
2007/12/08(土) 16:31:01いやいやそこはfreeしないでおいて初心者臭さを出すのですよ
0917デフォルトの名無しさん
2007/12/08(土) 17:53:13OSのバグとか言い張ってる池沼がいたみたいだが
そもそもプロセスの概念がないOSもあるんだよな
もうちょっといろいろな世界を見た方がいいと思った
freeで遅延終了?
たぶんfreeの実装を一度も見たことないんだな
ぬるぽ
0918デフォルトの名無しさん
2007/12/08(土) 18:00:020919デフォルトの名無しさん
2007/12/08(土) 18:01:220920デフォルトの名無しさん
2007/12/08(土) 18:07:09関数コールそのもののオーバーヘッドが気になるような環境で
nsecオーダーのタイミングと戦ったことが無いのは、
それはそれで幸せなんで、いーんじゃないかね。
0921デフォルトの名無しさん
2007/12/08(土) 18:08:11遅延終了なんたら言ってる奴は自分の所の
環境でどういう処理が行われてるのか
調べたこともないんだと思う
ぬるぽ
0922デフォルトの名無しさん
2007/12/08(土) 18:13:11割込ハンドラとかかな?
そんなシビアな環境ならmalloc系関数は自殺行為です!
0923デフォルトの名無しさん
2007/12/08(土) 18:13:350924デフォルトの名無しさん
2007/12/08(土) 18:17:08プログラムの開始、終了の定義についてkwsk
0925デフォルトの名無しさん
2007/12/08(土) 18:26:12こちらへドゾー
http://pc11.2ch.net/test/read.cgi/tech/1179394713/l50
0927デフォルトの名無しさん
2007/12/08(土) 18:43:210928デフォルトの名無しさん
2007/12/08(土) 19:20:40[2] 問題文(含コード&リンク):()
相異なるサイコロを N 個振ったとき、合計が K となる
パターンの個数を表示せよ。ただし N ≦ 50, K ≦ 300 としてよい。
例:
N = 2, K = 4 → 1+3, 2+2, 3+1 の 3 個
N = 3, K = 4 → 1+1+2, 1+2+1, 2+1+1 の 3 個
[3] 環境
[3.1] OS: 問わず
[3.2] コンパイラ名とバージョン: 問わず
[3.3] 言語: どちらでも可
[4] 期限: 12月09日まで
[5] その他の制限: とくになし
0929デフォルトの名無しさん
2007/12/08(土) 19:39:42#include<stdio.h>
int dice_sum_pattern(unsigned n, unsigned k){
if (n == 1){
if(k <= 6) return 1;
else return 0;
} else {
int p = 0 , i;
for(i = k-1; k-i <= 6 && i > 0; --i) p += dice_sum_pattern(n-1,i);
return p;
}
}
int main(){
int n,k;
printf("The number of dices:");
scanf("%d",&n);
printf("The sum of numbers:");
scanf("%d",&k);
printf("The number of the pattern:%d",dice_sum_pattern(n,k));
return 0;
}
0930929
2007/12/08(土) 19:45:40真面目に作りなおします
0931デフォルトの名無しさん
2007/12/08(土) 19:59:58long long使って良い?
0932デフォルトの名無しさん
2007/12/08(土) 20:13:450933デフォルトの名無しさん
2007/12/08(土) 20:22:480934デフォルトの名無しさん
2007/12/08(土) 21:01:27http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5434.txt
おまけでパターンも表示している。いらなかったら
- int dmy[50];
- int total_n;
if(k>=1) return 1;
- /* パターン表示 */
- printf("(");
- for(i=0;i<total_n;i++){
- printf("%d",dmy[i]);
- }
- printf(")\n");
- /* ここまで */
return 0;
/* まだダイスが残っていれば、チェックを続ける */
ret = 0;
for(i=1;i<=6;i++){
- dmy[total_n-n] = i; /* total_n-n番目の数値を1〜6に変更 */
ret += dice_sum_pattern(n-1 , k-i);
}
return ret;
0935デフォルトの名無しさん
2007/12/08(土) 21:04:35#include <iostream>
//typedef long long num_t;
typedef double num_t;
num_t t[51][301];
num_t solve(int n, int k)
{
if(t[n][k] != -1)
return t[n][k];
if(n == 1)
return t[n][k] = (k <= 6 ? 1 : 0);
num_t sum = 0;
for(int i=1;i<k&&i<=6;i++)
sum += solve(n-1, k-i);
return t[n][k] = sum;
}
int main()
{
int n, k;
std::cin >> n >> k;
for(int i=0;i<50;i++)
for(int j=0;j<300;j++)
t[i][j] = -1;
std::cout << solve(n, k) << std::endl;
return 0;
}
0936デフォルトの名無しさん
2007/12/08(土) 21:08:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5436.txt
パターン表示しない版ね。
0937デフォルトの名無しさん
2007/12/08(土) 21:09:131,1を入れたら0と表示されましたが。
0938デフォルトの名無しさん
2007/12/08(土) 21:11:24でも再帰以外で解けなさそうだし・・・
0939デフォルトの名無しさん
2007/12/08(土) 21:12:10ちょwww
doubleを==で比較するなんて恐ろしい子、って言ってもいい?
配列やlonglongを使う意味がわからん……
0940デフォルトの名無しさん
2007/12/08(土) 21:13:310941デフォルトの名無しさん
2007/12/08(土) 21:14:44ワロタw
if(n==0){
if(k>=1) return 0; // ここと
/* パターン表示 */
printf("(");
for(i=0;i<total_n;i++){
printf("%d",dmy[i]);
}
printf(")\n");
/* ここまで */
return 1; //ここ
}
orz
0942デフォルトの名無しさん
2007/12/08(土) 21:17:30直観的だが、[1,2,3,4,5,6]の平均3.5 * ダイスの数が一番パターン多いんじゃないかな?
n=50ならk=175
0943デフォルトの名無しさん
2007/12/08(土) 21:20:26あ、しまったw
最初long longで作ってて、桁が足りないからdoubleに変えただけでチェックしてなかった。
でもこの場合-1代入して、-1と比較するだけだから問題なさそうな気もするけど、その辺はわからないです。
0944デフォルトの名無しさん
2007/12/08(土) 21:20:2850、300を入れたら1と表示されましたが。
0945デフォルトの名無しさん
2007/12/08(土) 21:22:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5437.txt
なおした。ついでにチェックもいれた。
>>944
50個のダイスが全部6になっている状態以外で300になる?
0946デフォルトの名無しさん
2007/12/08(土) 21:22:18不真面目に多倍長計算。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5438.cpp
>>939
配列でメモ化しないと計算量が爆発するし、
普通の整数ではオーバーフローする。
0947デフォルトの名無しさん
2007/12/08(土) 21:22:50>>935は結果を保存してるっぽいから多分速い
doubleとかいい加減だが
あと、再帰はループに直せるはずだから再帰以外で解けないというのは違う…かな?
0948デフォルトの名無しさん
2007/12/08(土) 21:28:47128ビット整数があれば足りるな
0949デフォルトの名無しさん
2007/12/08(土) 21:31:53はじめに全て1にして余りがあったら分配していけばよいだろう
0950デフォルトの名無しさん
2007/12/08(土) 21:32:520951929
2007/12/08(土) 21:36:54http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5439.txt
mallocで二次元作るのめんどくて一次元にしたら、添え字の計算でミスして余計に時間かかりまくったorz
再帰未使用です
0952デフォルトの名無しさん
2007/12/08(土) 21:39:590953デフォルトの名無しさん
2007/12/08(土) 21:41:400954デフォルトの名無しさん
2007/12/08(土) 21:42:59合計が K となるサイコロのパターンの個数を表示せよ。ただし K ≦ 3000 とする
0955デフォルトの名無しさん
2007/12/08(土) 21:44:592^(k-1)
0956デフォルトの名無しさん
2007/12/08(土) 21:45:50今思ったがコンビネションのC(m,n)と関係ないか?
0957デフォルトの名無しさん
2007/12/08(土) 21:49:020958デフォルトの名無しさん
2007/12/08(土) 21:49:25最初コンビネで解こうと思ったら、一つの最大値6ってのをどうすればいいか分からなかったorz
俺の貧弱数学脳によればこれは組み合わせでは解けない、と思う(自信ないが)
0960デフォルトの名無しさん
2007/12/08(土) 21:54:380961デフォルトの名無しさん
2007/12/08(土) 21:57:08#include<stdio.h>
#define MAX_N_DICE (50)
#define MAX_N_SUM (300)
float result[MAX_N_DICE][MAX_N_SUM];
void prepare(int n_dice)
{
int i, k, sum;
for (k = 0; k < MAX_N_SUM; k++) {
result[n_dice][k] = 0.0;
for (i = 1; i <= 6; i++) {
sum = k+1-i;
if (sum >= (n_dice-1) && sum <= 6*(n_dice-1) && sum < MAX_N_SUM) {
result[n_dice-1][k] += result[n_dice-2][sum-1];
}
}
}
}
0962デフォルトの名無しさん
2007/12/08(土) 21:57:43int main()
{
int n, k;
for (k = 0; k < MAX_N_SUM; k++) { result[0][k] = k < 6 ? 1.0f : 0.0f; }
for (n = 1; n <= MAX_N_DICE; n++) { prepare(n); }
printf("The number of dices:");scanf("%d",&n);
printf("The sum of numbers:");scanf("%d",&k);
printf("The number of the pattern: %f", result[n-1][k-1]);
return 0;
}
0963デフォルトの名無しさん
2007/12/08(土) 21:59:270964デフォルトの名無しさん
2007/12/08(土) 22:01:53遅い
0965デフォルトの名無しさん
2007/12/08(土) 22:04:261566666
2466666
3366666
2556666
3456666
という列が生成できればいいと思う
0967デフォルトの名無しさん
2007/12/08(土) 22:17:40k=4000で二分くらい掛かる
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5440.cpp
0968デフォルトの名無しさん
2007/12/08(土) 22:53:09ん?double型の有効桁数超えてない?気のせい?
0969デフォルトの名無しさん
2007/12/08(土) 23:53:33[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5432.txt
[3] 環境
[3.1] XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 12/11
[5] その他の制限: 特になし
0970デフォルトの名無しさん
2007/12/08(土) 23:54:01うん、有効桁数全然足りてないね
そのプログラムだと n = 50, k = 170 のとき
24456539641287986023030807574303735808
と表示されるけど、正解は
24456535588845712147456213502130798435
のはず。
0971デフォルトの名無しさん
2007/12/08(土) 23:59:210972デフォルトの名無しさん
2007/12/09(日) 00:42:24マルチプロセッサ対応とかSSEとか機械語とか
0973デフォルトの名無しさん
2007/12/09(日) 00:47:34だが、アルゴルだけは正しそうなんで、あとは多倍長ライブラリに移植すれば、O(n*k)で計算可能?
0974デフォルトの名無しさん
2007/12/09(日) 00:50:060975デフォルトの名無しさん
2007/12/09(日) 01:38:44[2] 問題文(含コード&リンク):1. 以下のような、関数形式マクロで値が負、零、正で、-1、0、1を返すsign()を定義するように、()の中に文字を入れなさい。
# define sign(x)( )
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C
[4] 期限:2007年12月10日15:00まで
[5] その他の制限:特になし
0976デフォルトの名無しさん
2007/12/09(日) 01:41:40たぶんこんな感じだと思うけど確認してない
0977デフォルトの名無しさん
2007/12/09(日) 01:52:17C/C++の宿題を片付けます 101代目
http://pc11.2ch.net/test/read.cgi/tech/1197132472/
0978デフォルトの名無しさん
2007/12/09(日) 02:26:46#define sign(x) ((0<x)-(x<0))
0979デフォルトの名無しさん
2007/12/09(日) 04:16:21#define sign(x) ((x)==0 ? 0 : ((x)<0 ? -1 : 1))
0980デフォルトの名無しさん
2007/12/09(日) 10:37:540981告知 ・・・ 2ch サーバーダウン(鯖落ち)情報 part177
2007/12/09(日) 13:25:44749 名前:マァヴ ◆jxAYUMI09s [] 投稿日:2007/12/08(土) 17:56:40 ID:mzzKkj6v0 ?PLT(25001)
2007年12月11日の 午前11時00分より 正午まで
サーバセンターでスイッチのメンテナンスを行うんだけど
そのスイッチにぶら下がってるサーバはほとんど2chのサーバだったりする(^_^;)
たぶん、大量に繋がらないサーバが出るはず(^_^;)
752 名前:マァヴ ◆jxAYUMI09s [] 投稿日:2007/12/08(土) 18:05:32 ID:mzzKkj6v0 ?PLT(25001)
>749
日本時間です(^_^;)
0982デフォルトの名無しさん
2007/12/09(日) 14:25:14[2] 問題文(含コード&リンク):
名前、身長、体重、視力(視力構造体)これらのデータをメンバとする構造体を定義し、入力と表示を行うプログラムを作成してください。
入力件数は最大5件で、名前は19文字までの入力とし、範囲外だったならばエラーメッセージを表示し再入力させてください。
名前に”END”が入力された時は入力終了とします。
表示は身長で昇順にソートして出力してください。
また身長、体重は、小数点以下第一位までの表示とします。視力は、小数点以下第三位までの表示とします。
出力の幅は、名前が19文字分、そのほかは5文字分で指定してください。
視力は右、左をメンバとする構造体で扱ってください。
1件分の入力はinput_data()で、表示はdisplay_data()で、ソートはsort_data()でと処理を関数に分けて行ってください。
名前入力の最初に”END”が入力された場合は、その旨のメッセージを出力してください。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VisualC++2005ExpressEdition
[3.3] 言語:C
[4] 期限:特になし
[5] その他の制限:よろしくお願いします。
0983デフォルトの名無しさん
2007/12/09(日) 16:27:55やってみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5447.txt
0984デフォルトの名無しさん
2007/12/09(日) 16:31:0542行目をbreak;からputs("ENDが入力されたので、入力処理を終了します。") break;に書き直しだ。
0985デフォルトの名無しさん
2007/12/09(日) 17:00:57まぁ、課題だから色々あるんだろうけど…
0986デフォルトの名無しさん
2007/12/09(日) 18:18:510987デフォルトの名無しさん
2007/12/09(日) 19:10:43むしろ小数点以下要らない。
0988デフォルトの名無しさん
2007/12/09(日) 20:52:24ありがとうございます
ただENDを入力しても入力処理が終了しないような気がするんですが・・・
0989デフォルトの名無しさん
2007/12/09(日) 20:57:36気がするだけ
0990デフォルトの名無しさん
2007/12/09(日) 20:59:04これはひどいw
0991デフォルトの名無しさん
2007/12/09(日) 20:59:46ありがとうございます
0992991
2007/12/09(日) 21:06:23頑張って自分なりにも作ってみたんですが
どうしてもendで入力終了させることが出来ません
それ以外でもおかしい所があれば
スレ違いかもしれませんが教えてくれませんか?
0993デフォルトの名無しさん
2007/12/09(日) 21:14:13inputdataの戻り値をmainでチェックする
0995デフォルトの名無しさん
2007/12/09(日) 22:36:230996デフォルトの名無しさん
2007/12/09(日) 22:48:000997デフォルトの名無しさん
2007/12/09(日) 22:48:380998デフォルトの名無しさん
2007/12/09(日) 22:49:500999デフォルトの名無しさん
2007/12/09(日) 22:50:45来年は大学でハーレム形成する
1000デフォルトの名無しさん
2007/12/09(日) 22:51:13来年は大学でハーレム形成する
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。