07/11/22 03:06:39
l三`ー 、_;:;:;:;:;:;:j;:;:;:;:;:;:_;:;:;_;:〟-三三三三三l
l三 r=ミ''‐--‐';二,_ ̄ ,三三三彡彡l_
lミ′  ̄ ー-'" '=ミニ彡彡/‐、ヽ
l;l ,_-‐ 、 __,,.. - 、 彡彡彳、.//
_______∧,、_∥ `之ヽ、, i l´ _,ィ辷ァ-、、 彡彡'r ノ/_ ______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄'`'` ̄ 1  ̄フ/l l::. ヽこ~ ̄ 彡彳~´/  ̄ ̄ ̄ ̄ ̄ ̄
ヽ ´ :l .l:::. 彡ィ-‐'′
ゝ、 / :. :r-、 彡′
/ ィ:ヘ `ヽ:__,ィ='´ 彡;ヽ、
_,,..-‐'7 /:::::::ヽ _: :_ ヽ ィ´.}::ヽ ヽ、
_,-‐'´ { ヽ:::::::::ヘ `'ー===ー-- ' /ノ /::::::ヘ, ヽー、
3:デフォルトの名無しさん
07/11/22 03:13:28
URLリンク(cmonet.s58.xrea.com)
4:デフォルトの名無しさん
07/11/22 05:21:43
>>902
#!/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")
5:デフォルトの名無しさん
07/11/22 08:36:21
[1] 授業単元: c
[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は、なしで
6:デフォルトの名無しさん
07/11/22 09:09:49
100オメ!!
7:デフォルトの名無しさん
07/11/22 09:18:04
前スレで流れましたが,お願いします。
1つの状態で3つの数値を確保して比較して値を出してその状態の値みたいな
プログラムのほうがいいかもしれません。
[1] 授業単元:確率論
[2] 問題文(含コード&リンク):
前に>>246で宿題をださせていただきました。
これを対数で計算できるように変更していただきたいんですが。
正しい値がでるプログラム(前につくってもらった)
と今つくってるプログラムと2つのせました。
この前5回くらいの移動までの数値があってるからそのあとはいいかとおもって
できたとおもってたんですけど、7回目くらいから同じ値でとまってしまって。
図はこれです URLリンク(www.borujoa.org)
以前つくってもらったプログラムの値をlogでだしてみたプログラム
URLリンク(kansai2channeler.hp.infoseek.co.jp)
移動確率を対数でだして計算していったプログラム
URLリンク(kansai2channeler.hp.infoseek.co.jp)
logの計算途中で-infとかnanとかでてくるので
それを調べるためにprintf文大量に使ってますけど みにくかったら消してください。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: c
[4] 期限: 23日おわるくらいまでには
[5] その他の制限: 特になし
8:デフォルトの名無しさん
07/11/22 09:47:45
>>5
#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;
}
これを改良お願いします。
9:デフォルトの名無しさん
07/11/22 10:12:35
前993
char 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 /*無*/;
10:デフォルトの名無しさん
07/11/22 10:36:59
最近プログラム開発系の会社に就職した。
PCを使っていろいろやるのは好きなんだけど、
なにせスキルは皆無。
とりあえずC、VB、C++辺りを勉強することになった。
今はVC++を勉強しようとしてるんだけど、
初心者にお勧めなサイトとかあったら教えてほしい。
Cはかなり簡単なプログラミング(scanfとかprintfとかしか使わない程度)
しかやってない。
VBも基礎用の参考書をやった程度。
11:デフォルトの名無しさん
07/11/22 10:58:02
>>10
会社で聞け。つかスレ違い
12:デフォルトの名無しさん
07/11/22 11:27:36
>>11
会社で聞ければいいんだけどね。
社長以外は出向してるし、社長はソフト関係できないから。
ググっても大体Cの知識ないとダメだったし。
質問スレが見当たらなかったわけだが。
13:デフォルトの名無しさん
07/11/22 11:37:53
そんな無能を雇う会社はさっさとつぶれてしまえ
14:デフォルトの名無しさん
07/11/22 11:50:11
社長以外は出向、に突っ込むべきだとは思うんだが。
そんなことより100おめ。
15:デフォルトの名無しさん
07/11/22 13:20:00
[1] 授業単元:C++基礎
[2] 問題文(含コード&リンク):0~100点までの点数を乱数によって10個表示させるプログラムを作りなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:ming-bit(曖昧…)
[3.3] 言語:C++
[4] 期限:2007年11月28日12時まで
[5] その他の制限:本当に基礎的な事しかやってないので…出来れば簡単なプログラムでお願いします。
16:デフォルトの名無しさん
07/11/22 15:37:38
[1] 授業単元:C言語プログラミング
[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];
② 次の3つのユーザ関数を作成し、利用すること
・平均を求める関数
・最高を求める関数
・最低を求める関数
17:16
07/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;
}
18:16
07/11/22 15:42:48
double ave (int x[],int y)
{
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;
}
19:16
07/11/22 15:45:06
コンパイルはできたんですが、実行すると
NTVDM CPU は不正命令を検出しました。
と出てしまいます。
どうかお願いします。
20:>>16
07/11/22 16:41:46
#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);
printf("平均:%.1fcm\n",avdt);
max (sinchou,i);
min (sinchou,i);
return 0;
}
21:>>16
07/11/22 16:44:48
double ave (int x[],int y)
{
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);
}
22:デフォルトの名無しさん
07/11/22 17:18:59
>>15
#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));
}
23:デフォルトの名無しさん
07/11/22 17:19:11
[1] 授業単元:アルゴリズム演習
[2] 問題文(含コード&リンク):
各節点がkey,leftchild,rightchildの値とポインタを保持する二分木において、
根のポインタを受け取り、全ての節点のkeyを表示するプログラムを作れ。節点の数はnとする
再帰を使う事、同じ節点のkeyを2回表示する事、定数個以上のメモリを使う事を禁止する
また、その実行時間はnの定数倍で抑えられなければならない
[3] 環境
[3.1] OS: win
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:無期限
[5] その他の制限: なし
お願いします
24:デフォルトの名無しさん
07/11/22 17:45:34
[1] 授業単元:プログラミング
[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日
文字配列のソートがわかりません。初心者ですがよろしくおねがいします
25:デフォルトの名無しさん
07/11/22 21:31:08
>>24
Cだけど
URLリンク(kansai2channeler.hp.infoseek.co.jp)
前スレと同じ授業のやつか?
26:デフォルトの名無しさん
07/11/22 23:26:38
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):最大20桁の整数を5つ入力させ、int型配列にそれぞれ格納。入力終了後
5つの数値の和を求め出力する。なお、20桁までを有効とし21桁以降は無視。負の数、整数以外
改行のみの場合はそれぞれエラー表示をし、終了する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C
[4] 期限: 11月23日09:00まで
前スレでも質問させていただきましたが、ご回答がなかったので改めて質問させて
いただきます。参考書を読んでも自力で出来ないので、わかる方はご回答よろしくお願いします。
27:デフォルトの名無しさん
07/11/22 23:32:32
>>25
すいません。記入し忘れましたが前スレと同じです。
CはまったくわからないのでC++でおねがいできませんか?
28:デフォルトの名無しさん
07/11/22 23:55:41
>>27
>>24の例がC++じゃなくてCなんだけれど。
29:デフォルトの名無しさん
07/11/23 00:49:59
[1] 授業単元: システム解析
[2] 問題文(含コード&リンク):2変数非線形連立方程式の解を求めるnewton-rapson法のプログラムを作成し以下の問題を解け
①x^2+y^2-8=0 と x+y=0 で初期点(x(x0),y(y0))∈[-4,-4]×[4,4]を10000個とり、初期点に対する収束値の関係を2次元で図示する。
収束値の関係の座標を出すこと。
②x^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変数ということで手も足もでません、、、
よろしくお願いします。
30:デフォルトの名無しさん
07/11/23 00:51:12
C++が理解できてCが理解できないってどういう事だ?
演算子をオーバーロードしてるからその辺の関数を理解できないって事?
31:デフォルトの名無しさん
07/11/23 02:48:28
>>26を作ってみたけど、
>わかる方は
と書いてあるから、わからないながらも色々試行錯誤して作った俺は回答する資格無いな。
32:デフォルトの名無しさん
07/11/23 03:27:36
>>27
ってか基本的に、CであればC++でもある。
C++でコンパイルすればいいじゃん。
33:デフォルトの名無しさん
07/11/23 03:38:20
34:デフォルトの名無しさん
07/11/23 04:05:20
>>26
#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];
35:デフォルトの名無しさん
07/11/23 04:06:53
for(i=0;i<21;i++){ans[i]=0;}
for(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;
}
}
}
36:デフォルトの名無しさん
07/11/23 04:07:42
for(i=0;i<5;i++){
for(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");
37:デフォルトの名無しさん
07/11/23 04:08:49
for(i=0;i<24-saidaiketa;i++){printf(" "); }
if(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;
}
38:デフォルトの名無しさん
07/11/23 04:53:44
[1] 授業単元:C++実習
前スレで出させてもらったのですがスルーされましたのでもう一度お願いします。
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C++
[4] 期限: 11/25 ~10:00
[5] その他の制限: 特になし
よろしくお願いします。
39:デフォルトの名無しさん
07/11/23 12:38:02
>>38
なんつーか問題に不備がたくさんあってやりにくいんだよね。
いちいち指摘するのも面倒なくらいに細かなところが不明瞭。
本当にこんな問題が出てるのなら、教官を捨てていいと思う。
40:デフォルトの名無しさん
07/11/23 12:38:28
1] 授業単元プログラミング2
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 11/25
[5] その他の制限: 特になし
41:デフォルトの名無しさん
07/11/23 12:44:33
>>38
FletzHikariクラスはFletzAdslクラスを継承するような図に見えるんだけど
クラスの概要って所ではProviderクラスを継承するような文書に読めるし
どっちなんだろ?
42:デフォルトの名無しさん
07/11/23 12:55:55
>>40
URLリンク(kansai2channeler.hp.infoseek.co.jp)
43:デフォルトの名無しさん
07/11/23 13:12:19
>>23
メモリの制約が、かなり厳しいね。
二分木を格納するために O(n) が必要だから
「定数個以上のメモリ」という制限は、普通は達成不能。
木以外の空間が O(1) と解釈しても普通は無理で、
再帰を使うと再帰の深さが木の深さと同じくらいになるから
スタック上に O(木の深さ) くらいの空間が必要になる。
俺は、この二分木の表現では O(1) の空間は不可能だと思う。
44:43
07/11/23 13:17:17
ごめん日本語読み間違えた。再帰を使うことも禁止なんだね。
それでもスタック長が普通は O(木の深さ) になるから、普通は無理。
45:デフォルトの名無しさん
07/11/23 13:33:37
[1] 授業単元: プログラム演習
[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] その他の制限:とくになし
46:デフォルトの名無しさん
07/11/23 13:41:59
>>43
すみません、二分木の表現のメモリは無視して構いません。
宿題でなく研究レベルの問題だと言われて出されたんですが、手も足も出ない状態です
メモリ使用量をO(lgn)で抑えることはできるんですが・・・
47:デフォルトの名無しさん
07/11/23 13:49:42
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5
[3.3] 言語: C++
[4] 期限: 11/25 24時
[5] その他の制限:
僕には難しいので誰かよろしくお願いします。
48:デフォルトの名無しさん
07/11/23 14:07:50
[1] 授業単元プログラミング2
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C
[4] 期限: 11/27
[5] その他の制限: 特になし
49:デフォルトの名無しさん
07/11/23 14:35:02
>>46
表示順序や二分木表現を書き換えてはいけない、という制限が
無いので木を 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;
}
}
50:デフォルトの名無しさん
07/11/23 14:44:51
>>48
#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]);
}
51:デフォルトの名無しさん
07/11/23 14:46:58
木を壊したままでも良いのか。
何とか復元してからリターンしようとして頭をひねってた。
52:デフォルトの名無しさん
07/11/23 14:48:24
>>47
内容はともかく、日本語が難しくて解読に疲れた。
53:デフォルトの名無しさん
07/11/23 14:50:15
木を変形するのはありなのか?確かに制限には書かれてないが
多分出題者の意図からは外れてるだろうな
54:デフォルトの名無しさん
07/11/23 14:53:46
ポインタの値が常に偶数だという仮定を置ければ復元もできそうだ。
どっちにしても一時的に木を変形する必要はあるけど。
55:デフォルトの名無しさん
07/11/23 14:57:41
削除の変わりに最下位ビットを立てるとかだね。
あと十分大きな値を足しておくとかでも大丈夫。
まあ計算モデルを仮定しなきゃいけないから綺麗じゃないが。
56:デフォルトの名無しさん
07/11/23 15:18:39
>>38
URLリンク(kansai2channeler.hp.infoseek.co.jp)
C++を勉強中の俺がためしに書いてみた
ツッコミ歓迎
57:デフォルトの名無しさん
07/11/23 15:26:59
Providerクラスが抽象クラスになってなくね?
58:デフォルトの名無しさん
07/11/23 15:27:14
>>56
いつのC++を使ってるの?VC6かい?
newは失敗するとnothrowバージョンでない限りstd::bad_alloc例外を
返し、NULLとか0は返しません。14882:2003
59:デフォルトの名無しさん
07/11/23 16:38:03
>>56
そのコードでは、派生クラスのデスクトラクタが実行されないよ
60:デフォルトの名無しさん
07/11/23 17:48:39
>>47
生産管理のアルゴリズムって、5つくらい前のスレにあったやつじゃダメなのか?
61:56
07/11/23 18:09:02
いまここで
抽象クラスの定義方法知った。
newとmallocの違いを知った。
デストラクタをちゃんと記述しないといけないことを知った。
・・・まだまだ勉強が足りないようで
ツッコミありがとう
62:デフォルトの名無しさん
07/11/23 18:43:13
>>56, 61
全くもって技術的な話ではないが
virtual double cale(double a){}
は綴りが微妙
63:デフォルトの名無しさん
07/11/23 18:51:23
>>23
親頂点に帰れるポインタがあれば、直前にいたポインタと比較することで定数メモリで木を周回できるはずだけど。
直前に親頂点にいたら、左の子供頂点に行く。
直前に左の子供頂点にいたら、自分の key を表示して、右の子供頂点に行く。
直前に右の子供頂点にいたら、親頂点に行く。
あとは親頂点親頂点に戻る方法を考えればいいんだけど。
毎回根から今の頂点を探すってできない気がするんだけど、どうなんだろう?
64:デフォルトの名無しさん
07/11/23 19:14:40
ポインタの付け替え(pointer reversalっていうらしい)を使えば巡回自体はできるんだけど、
そのままだと各節点を3回ずつ表示してしまう。
65:デフォルトの名無しさん
07/11/23 19:36:42
そりゃ単にやり方が悪いだけだ
66:デフォルトの名無しさん
07/11/23 19:50:42
[1]授業単元:Cプログラミング入門
[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は .
まったくわからないのでどうかお願いいたします。
67:デフォルトの名無しさん
07/11/23 19:51:15
>>65
じゃあどうすれば良い?
68:デフォルトの名無しさん
07/11/23 21:24:59
>>23
URLリンク(kansai2channeler.hp.infoseek.co.jp)
貼ってから気付いたけど、なぜか<malloc.h>をincludeしてるので無視してくれ。
ポインタの付け替えで一時的に木を変形する。子が両方ともNULLであるノードを
一時領域として使う。
10万件のランダムテストに合格したから多分合ってる。
69:デフォルトの名無しさん
07/11/23 21:58:13
>>61
>>59だが
>デストラクタをちゃんと記述しないといけないことを知った。
~Provider(){} //デストラクタは書いてますやん
俺が言いたかったのは、その書き方が間違いだってことだよ
「知った」ではなくなぜそうなのか理解できてないと、後で苦しむよ
Effective C++ 第3版の7項にきちんと、俺が指摘した理由が説明されている。
図書館で借りるか、本屋で立ち読みしてごらん。
さすがメイヤー先生、初学者が犯しやすい間違いをズバリ書いているので
びっくりした。
偉そうにかいてごめんね、ガンガッテ
70:デフォルトの名無しさん
07/11/23 22:06:45
>>61
大ヒント : 仮想関数を持つならばデストラクタは仮想にすべき
71:デフォルトの名無しさん
07/11/23 22:08:49
>>70
Javaの @Override アノテーションとかあればいいのにな
72:デフォルトの名無しさん
07/11/23 22:33:15
>>66
スレリンク(tech板:962番)
スレリンク(tech板:971番)
73:デフォルトの名無しさん
07/11/23 22:34:37
うざいわ。
baseクラスのデストラクタはvirtualにしとけ、でいいじゃん。
74:デフォルトの名無しさん
07/11/23 22:41:55
C++にはその名のとおりの必殺技 "死のダイヤモンド" が存在するからなぁ……
75: ◆S2Crp49aOM
07/11/23 22:52:04
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
1~10000の範囲の乱数値を持つ要素数10000の配列から、キーボードで入力した1~10000値を探索し、
同じ値をもつ配列要素の数を表示するプログラムを二分探索を用いて作成せよ。
[3] 環境
[3.1] O:Linux
[3.3] 言語:C
[4] 期限: 2007年11月24日01:30まで
[5] その他の制限:
76:デフォルトの名無しさん
07/11/23 23:00:03
>>75
あと二時間半www
77:デフォルトの名無しさん
07/11/23 23:15:25
[1] 授業単元:明解C++
[2] 問題文(含コード&リンク):演習10-2
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:.net 2003
[3.3] 言語:C++
[4] 期限:無期限
[5] その他の制限:明解C++で独学しています。単純なクラス作成まで終了。最後の演習問題でつまずいています。
78:デフォルトの名無しさん
07/11/23 23:15:31
>>73
こういう鵜呑みにしているヤツに限って肝心な箇所があやふやなんだよなぁ
オレの職場にもこういうヤツが一人いたよ
79:デフォルトの名無しさん
07/11/23 23:17:04
>>77
「明解C++」の演習10-2だと思われる。
でも、その本を持っていない人間には問題すら分からない。
80:デフォルトの名無しさん
07/11/23 23:19:40
>>78
お前のようなうざい奴はどこにでもいるけどな
81: ◆S2Crp49aOM
07/11/23 23:23:32
>>75
[4] 期限: 2007年11月24日11:30まで
打ち間違えました。
申し訳ないです。
82:デフォルトの名無しさん
07/11/23 23:24:25
80=73
図星なので○け犬の遠吠え
83:デフォルトの名無しさん
07/11/23 23:28:06
うざい上に粘着質
84:デフォルトの名無しさん
07/11/23 23:28:09
その本に答えないの?
85:77
07/11/23 23:32:00
>>84
ありません。
86:デフォルトの名無しさん
07/11/23 23:34:46
>>85
問題書く気はないの?
87:デフォルトの名無しさん
07/11/23 23:35:50
問題を書くのは著作権的にどうよ?
88:デフォルトの名無しさん
07/11/23 23:37:58
学校で先生が出題する問題にも著作権は発生するんだが……。
89:デフォルトの名無しさん
07/11/23 23:38:19
つーか、宿題じゃないでしょ、それ。
90:デフォルトの名無しさん
07/11/23 23:40:27
教科書に市販品使うなんて珍しくもない
91:デフォルトの名無しさん
07/11/23 23:40:55
>>88
著者人格権はあるけど学校の課題なんだkら複製権くらいあるだろ
92:デフォルトの名無しさん
07/11/23 23:42:16
>>79
クラスDate第2版に抽出子を追加せよ。
問題の意味もいまいちわからなくて考えられることは
1.抽出子の定義(演算子>>の多重定義)を使用してDateオブジェクトを作成する。
2.抽出子の定義(演算子>>の多重定義)を使用してDateオブジェクトの内容を変更する。
だと思います。
しかし、わたしにはどちらであっても解答がわかりません。
クラスDate第2版ソース
URLリンク(kansai2channeler.hp.infoseek.co.jp)
93:デフォルトの名無しさん
07/11/23 23:42:50
著作権=COPY RIGHT=複製権
94:デフォルトの名無しさん
07/11/23 23:44:05
イコールじゃないよ
95:77
07/11/23 23:44:13
>>86
>>92に問題を書きました。
よろしくお願いします。
96:デフォルトの名無しさん
07/11/24 00:48:36
>>91
学校の課題なら特別扱いされるという根拠は?
97:デフォルトの名無しさん
07/11/24 00:52:40
>>96
先生=著者
98:デフォルトの名無しさん
07/11/24 00:58:29
2
99:デフォルトの名無しさん
07/11/24 00:59:03
1
100:デフォルトの名無しさん
07/11/24 00:59:42
お前ら著作権法くらい読めよ
プログラミングに関係の深い法律だぞ
101:デフォルトの名無しさん
07/11/24 00:59:43
▃▅▆▇██▇▅▃
█ ████████▆
█ ████████
▃▂ ▓▓▓▓▓▓▓▓▓
▀██▇███████████▇▅
▼▀█▀██▀▀▀▀■█■▀
▍ ▋ ▲▃ ▀▅▃▌ ▌▌
▐◣ ▐▂▅▀ ▀▅▃▀█ ▍▍
▐▃▀▂▃◢◤ ◥◣▃▂▌ ▎▌
◥▋ ▐◥▃▆◤ ◥▃▆◤▍ ▋
▊ ▐◣ ◢▌ ▼
◢▀▌▀◣ ▆▅ ▃▲ ▋
▼ ▀▇◣▃◢▇▀ ▼
▂▃◢◤▀ ▃▅▃▅▃▅
▐▲▃ ▅▀ ▌▌ ▀█
◢████▅▀▅▀▋▐▅▀▼
▅█████ ▊ ▊ ▌
102:デフォルトの名無しさん
07/11/24 01:00:30
>>97
先生が著作者だから実質的な問題は発生しないと言いたいわけか
複製権関係ねぇ
103:デフォルトの名無しさん
07/11/24 01:08:01
>>72 同志がいたのか・・。
参考にさせていただきます。
ありがとうございました。
104:デフォルトの名無しさん
07/11/24 01:39:30
つうか教育目的の場合、著作権は無視されるんじゃなかったか?
105:デフォルトの名無しさん
07/11/24 01:47:47
三十五条のことか?
106:デフォルトの名無しさん
07/11/24 01:56:19
>>75
URLリンク(kansai2channeler.hp.infoseek.co.jp)
107:デフォルトの名無しさん
07/11/24 01:59:13
>>104
小学校の教科書だか教材に使われてた詩が、著作権者がクレームつけて使えなくなったって話は聞いたことがあるけど。
108:デフォルトの名無しさん
07/11/24 02:12:50
>>104
それは三十三条のことか?
109:デフォルトの名無しさん
07/11/24 03:00:43
ここって教育の場なん?
110:デフォルトの名無しさん
07/11/24 03:03:26
うん
111:デフォルトの名無しさん
07/11/24 03:26:56
丸投げスレも出世したもんだな
112:デフォルトの名無しさん
07/11/24 04:05:52
でしょ
113:デフォルトの名無しさん
07/11/24 11:12:58
>>77
>>95
少し、もちつけ
コードだけ貼って、問題が全然ナイジャマイカ
モマイの貼った↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)
これを、どうしろというんだ?
エスパー君だったら分かるのかな?
漏れには全然理解できん
114:デフォルトの名無しさん
07/11/24 13:43:11
>>77
エスパー
ostream& operator<<(ostream& s, const Date& x);
を
ostream& operator<<(ostream& s, const Date& x){s << x.Year() << x.Month() << x.Day();return s;}
こう?
115:デフォルトの名無しさん
07/11/24 14:52:56
1] 授業単元:コンピュータプログラミング1
[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] その他の制限: なし
どうかよろしくお願いします。
116:デフォルトの名無しさん
07/11/24 15:07:13
[1] 授業単元: システム解析
[2] 問題文(含コード&リンク):2変数非線形連立方程式の解を求めるnewton-rapson法のプログラムを作成し以下の問題を解け
①x^2+y^2-8=0 と x+y=0 で初期点(x(x0),y(y0))∈[-4,-4]×[4,4]を10000個とり、初期点に対する収束値の関係を2次元で図示する。
収束値の関係の座標を出すこと。
②x^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変数ということで手も足もでません、、、
よろしくお願いします。
117:デフォルトの名無しさん
07/11/24 15:27:56
>>115
#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;
}
118:デフォルトの名無しさん
07/11/24 16:07:51
>>22
ありがとうございます。
やってみます。
119:デフォルトの名無しさん
07/11/24 17:11:28
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C++
[4] 期限: 11/26 ~10:00
[5] その他の制限: 特になし
よろしくお願いします。
120:デフォルトの名無しさん
07/11/24 17:24:42
>>117
ぎりぎり間に合いました。本当にありがとうございます。
121:デフォルトの名無しさん
07/11/24 20:02:02
>>118
>>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));
}
122:デフォルトの名無しさん
07/11/24 23:17:48
>>119
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
123:デフォルトの名無しさん
07/11/25 00:28:38
>>122
ここまで問題を無視できるのもすばらしい.
124:デフォルトの名無しさん
07/11/25 00:46:51
URLリンク(www.nicovideo.jp)
これだな
125:26
07/11/25 01:02:17
>>34
ありがとうございました。
126:デフォルトの名無しさん
07/11/25 01:38:31
>>5
>>8
どなたかお願いします。
127:デフォルトの名無しさん
07/11/25 01:57:17
>>126
#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;
}
128:デフォルトの名無しさん
07/11/25 02:51:10
[1] コンピュータ実験
[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が書いてあるファイルを用意できないのですが出来ますでしょうか?
よろしくお願いいたします。
129:デフォルトの名無しさん
07/11/25 05:38:26
>>122
ありがとうございます
ですが、ええええ!?
130:デフォルトの名無しさん
07/11/25 05:52:16
>>128
3,4個でいいから、入力データの性質を簡単に全て現したサンプルくらい書けるだろ
かけなきゃまずは問題を理解してここに投下しろ
131:デフォルトの名無しさん
07/11/25 07:54:28
>>128
まずファイルをてきとーに作る
#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;
}
132:131
07/11/25 08:01:02
>>128
次に作ったファイルを読み込んで処理する
#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;
}
133:デフォルトの名無しさん
07/11/25 09:50:24
>>5
#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;
}
134:デフォルトの名無しさん
07/11/25 09:51:38
つづき
int 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;
}
135:128
07/11/25 11:00:53
>>130>>131
よく読みなおしたら日本語おかしかった。ごめんなさい。
ファイルはもう.datファイルであるんですが、そこから0と1の数を数えて、
周期探し出すのがわからんのです。
お手数おかけしてすいません。
136:デフォルトの名無しさん
07/11/25 11:26:28
そのファイルがなければ探しようがないよ
137:デフォルトの名無しさん
07/11/25 11:30:02
>>135
圧縮したら対してサイズおおきくならないからうp
138:デフォルトの名無しさん
07/11/25 11:51:20
[1] 授業単元プログラミングⅡ
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 11/26
[5] その他の制限: 特になし
139:デフォルトの名無しさん
07/11/25 12:29:50
>>138
なんであだちゆみ?
140:デフォルトの名無しさん
07/11/25 12:31:40
[1] 授業単元: プログラミング
[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
よろしくお願いします。
141:デフォルトの名無しさん
07/11/25 12:33:55
>>138
#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);
142:デフォルトの名無しさん
07/11/25 12:34:27
>>140の続き
for(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;
}
143:デフォルトの名無しさん
07/11/25 12:35:02
>>142は>>141の続きの間違い。
144:デフォルトの名無しさん
07/11/25 12:53:33
>>138
>プログラミングⅡ
進化したプログラミングか
145:デフォルトの名無しさん
07/11/25 14:28:59
[1] 授業単元:暗号理論
[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] その他の制限:ポインタは習ってない
お願いします。
146:128
07/11/25 15:00:08
>>136>>137
圧縮してupすれば大丈夫でしたね・・・。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
この中の0と1の個数と、数列の周期を求めるプログラムをお願いします。
147:コーンポタージュ
07/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] その他の制限:特にありません。
よろしくお願いします。
148:もりもっこり
07/11/25 16:32:38
基本的なプログラムだと思うのですが、自分でやってみてもうまくいきません。また他にも課題が多く、非常に困っています。詳しい方よろしくお願いします。
1.数値を順番に読み込んで二次元の配列に格納する。
2.その配列を画面に出力する。
3.次に、2つの整数を読み込む。
4.二次元配列のうち、読み込んだ整数に対応する二つの行(あるいは列)の内容を交換する。
配列の内容を画面に出力する。
5.配列の読み込み、交換、出力はそれぞれ関数にすること。
149:KSCN
07/11/25 16:41:11
Mathematica でグラフを描き、EPS 形式で保存する。LaTeX を使ってレポートを作成してその中にグラフを挿入し、PDF ファイルに変換したものを提出すること。
っていう課題がでたのですが質問の意味からわかりません。どなたか質問の意味だけでも教えてください。
150:デフォルトの名無しさん
07/11/25 16:43:43
どうでもいいけど、名前を出す人の方が少ないんだから別人に見せようとしても逆効果だぞ
151:デフォルトの名無しさん
07/11/25 16:49:49
>>149
つURLリンク(www.google.co.jp)
152:デフォルトの名無しさん
07/11/25 16:50:15
>>149
何がわからないのかがわからない。
1.クラスで使っているMathematicaというソフトを使って数式を処理してグラフ表示、グラフの画像をEPS形式のファイルに保存。
2.いつもやっているようにLatexでレポート作成。EPS形式ファイルの埋め込みに関しては、配布したテキストを参照の事。
3.pdflatexをつかってPDF形式のファイルを出力。
一通り説明されてるはずなのに、なんで分からないとか言ってんの?
ずっとサボってたのか?
153:デフォルトの名無しさん
07/11/25 18:01:02
>>145
マルチ?( スレリンク(math板:156番) )
154:デフォルトの名無しさん
07/11/25 18:24:20
>>128 >>146
URLリンク(kansai2channeler.hp.infoseek.co.jp)
結果があってるかはわからんよ。
あと、文字列を数列に直すのは無駄だったから省略しちゃった。
どうしても直したければ、適当にやってくんろ。
155:131
07/11/25 19:42:04
>>154
自分の環境ではfscanfで32767文字までしか取得できなかったわけだが・・・
ファイルサイズは228793バイトあるわけで
>>128
>>132で答えたつもりだったんだけど間違ってたかな?
156:デフォルトの名無しさん
07/11/25 20:30:38
>>155
こっちの環境では問題なく scanf で取れたよ。
それ以上に、>>132 は O(n^2) だから、とても終わらないと思うけれど。
157:156=154
07/11/25 20:33:55
あ、こちらの環境は質問者にあわせて WindowsXP (cygwin) の gcc 。
質問者の環境で、これでうまくいかないようなら対処する。
158:デフォルトの名無しさん
07/11/25 20:48:56
>>153
プログラムがかけないのでお願いします
159:デフォルトの名無しさん
07/11/25 20:56:38
>>158
C, d, n, p, q として想定している桁数は?
任意桁なら、GMP の使用の可否は?
160:デフォルトの名無しさん
07/11/25 20:59:51
>>158
マルチ?って聞かれてそう答えるのって日本語不自由な人だよね。
161:デフォルトの名無しさん
07/11/25 21:04:14
>>160
留学生です
162:デフォルトの名無しさん
07/11/25 21:14:03
[1] 授業単元: C言語基礎
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限: 11月26日0時まで
よろしくおねがいします
163:デフォルトの名無しさん
07/11/25 21:14:37
帰れ
164:デフォルトの名無しさん
07/11/25 21:24:45
>>162
int 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;
}
165:デフォルトの名無しさん
07/11/25 21:47:29
>>116
当方で確認した環境は WindowsXP, 処理系は gcc 3.4.4 です。
(1) だけでもやってみました。とにかく初期値と収束解を出すだけのプログラムです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
この結果をつらつら眺めると、次の関係があると推測できます。
初期値を x0, y0 とするとき、
1) y0 > x0 ならば、収束値は (x, y) = (-2, 2)
2) y0 < x0 ならば、収束値は (x, y) = (2, -2)
3) x0 = y0 ならば、ヤコビ行列の行列式が 0 となるので、収束しない。
初期値から近い方の解に収束するようです。
なお、問題の(2) は、どうもフラクタル図形を描くかと思われます。
166:デフォルトの名無しさん
07/11/25 22:04:40
>>116
M教授の課題だろ
167:デフォルトの名無しさん
07/11/25 22:08:05
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):(URLリンク(kansai2channeler.hp.infoseek.co.jp))
[3] 環境
[3.1] OS: WindowsXP
[3.3] 言語: C言語
[4] 期限: 明後日
[5] その他の制限: 今は配列のところを習っています。制限は特にないです。
お願いします
168:デフォルトの名無しさん
07/11/25 22:13:59
>>167
404
169:デフォルトの名無しさん
07/11/25 22:24:46
1から50までの数のうち、素数を表示するプログラムを教えてください。
#difineで50を定義するってのが条件です
お願いします
170:デフォルトの名無しさん
07/11/25 22:33:04
>>148
M教授の課題だろ。俺もわかんねえんだおしえてくれ
171:デフォルトの名無しさん
07/11/25 22:34:48
>>169
#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;
}
172:>>169
07/11/25 22:35:19
すみません。>>1読んでませんでした
書き直します
[1] C言語:
[2] 1から50までの数のうち、素数を表示するプログラムを作成せよ。
#difineで50を定義せよ
[3] 環境
[3.1] WindowsXP
[3.2] Visual C++2005
[3.3] C
[4] 期限:無期限
[5] 関数は使ってはいけない
173:デフォルトの名無しさん
07/11/25 22:37:23
>>172
>関数は使ってはいけない
本当にこう言われたのか?
174:173
07/11/25 22:39:11
>>173
すみません。違います
関数は使わなかったらできませんね(汗
175:デフォルトの名無しさん
07/11/25 22:40:05
ところで >>171 はスルーかね
176:デフォルトの名無しさん
07/11/25 22:40:57
あっ!#difineを使うのか!
177:173
07/11/25 22:41:37
あ、すまんです;;
ありがとうございます。こんなやりかたもあるんですね
178:173
07/11/25 22:43:44
あとdefineですね。間違いだらけですみません
179:デフォルトの名無しさん
07/11/25 22:44:59
>>172
#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]);
}
}
}
180:デフォルトの名無しさん
07/11/25 22:47:39
>>179
最悪な方法に比べればましだけどまだしょっぱい。
181:デフォルトの名無しさん
07/11/25 22:47:48
>>172
#include <stdio.h>
int main()
{
printf("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47\n");
return 0;
}
182:173
07/11/25 22:48:17
(汗
183:デフォルトの名無しさん
07/11/25 22:51:09
>>180
改善点があったら教えてください
184:デフォルトの名無しさん
07/11/25 22:52:10
>>172
#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;
}
185:122
07/11/25 22:53:42
>>119
>>129
ごめんなさい。訂正いたします。
なお、厳密には「有効桁数 4 桁で表示」っていうのは、このやり方ではうまくないです。
SEED に与える定数で、具合のいいものしか表示しないようにしています。すみません。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
186:デフォルトの名無しさん
07/11/25 22:59:55
>>172
#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;
}
187:122
07/11/25 23:00:07
>>119 >>129
訂正:具合のいいものを表示するように SEED の値を変えてください。
重ね重ねすみません。
188:デフォルトの名無しさん
07/11/25 23:04:03
>>186
//ちょっとだけ高速化
#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;
}
189:コーンポタージュ
07/11/26 00:15:01
>>147
ちなみにサンプルプログラムは以下の通りです。
/* グラフ彩色問題に対する近似解法(サンプルプログラム) */
#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;
}
}
190:コーンポタージュ
07/11/26 00:15:42
/* メインプログラム */
int 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;
}
191:コーンポタージュ
07/11/26 00:16:16
/* 解の初期化 */
for(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();
192:コーンポタージュ
07/11/26 00:16:50
/* 実行時間の測定 */
search_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]);
}
}
}
193:コーンポタージュ
07/11/26 00:17:23
/* 入力データおよび解をファイルに出力 */
output_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]);
}
194:デフォルトの名無しさん
07/11/26 00:18:48
レスを跨るようならアップローダを使ってくれないかな。
195:デフォルトの名無しさん
07/11/26 00:26:22
アップローダなら半角スペースが残るので、カットアンドペーストできれいなソースが手元にわたりますし。
196:デフォルトの名無しさん
07/11/26 00:30:38
どこの誰が管理してるかわからないようなものを使えるか!
197:デフォルトの名無しさん
07/11/26 00:36:13
ん、それもそうですね。でもアップローダ経由じゃないソースは
私は基本的にはみません。だってめんどくさいから。
198:デフォルトの名無しさん
07/11/26 00:41:44
1レス内に自然に入るなら入れて欲しいけどね。空白を 置換して。
199:デフォルトの名無しさん
07/11/26 00:51:45
新しい宿題のネタになりますでしょうーか。< 変換
200:デフォルトの名無しさん
07/11/26 00:56:28
sed -e 's/&/\&/g' -e 's/^ /\ /g' -e 's/ / \ /g' -e 's/</\</g' -e 's/>/\>/g'
201:デフォルトの名無しさん
07/11/26 02:15:24
[1] 授業単元:プログラミング
[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型です
202:デフォルトの名無しさん
07/11/26 02:17:18
>>184
これは不思議。
アルゴリズムの名前とかある?
203:デフォルトの名無しさん
07/11/26 02:20:40
>>202
エラトステネスのふるい
204:デフォルトの名無しさん
07/11/26 02:26:06
>>203
まじか……。
調べる数をリストとして扱うと、こういう処理になるのか。
205:デフォルトの名無しさん
07/11/26 07:30:51
ちょ、ふるいってプログラムで素数求めるときに必ずやるもんだろw
206:デフォルトの名無しさん
07/11/26 08:16:47
確かに出てくる確率は多いけど、
ただ単に素数を求めるプログラムを作れって言われたら、
エラトステネスを思いつかなければ、別の手段を使うだろ。
207:デフォルトの名無しさん
07/11/26 08:20:35
可能性ではなく、教養として知っておくべきだろうな。
教養なんて高尚なもんでもない。常識だ。
208:デフォルトの名無しさん
07/11/26 08:21:07
[1] 授業単元: プログラム数学
[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] その他の制限: 特にありませんが定義関数を使うようです
お願いします
209:デフォルトの名無しさん
07/11/26 08:37:54
>>205
ごめん俺、確率的判定アルゴリズムしか知らない・・・
こういう演習で確率的アルゴリズム書いて提出するとどうなるんだろうな
210:デフォルトの名無しさん
07/11/26 08:56:55
#Define Pi 3.14
double 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++にあるかどうかは分からんので。
211:デフォルトの名無しさん
07/11/26 09:15:06
>>145
何を求める問題なのかがさっぱり分からないから
問題を書き直したほうがいい
212:デフォルトの名無しさん
07/11/26 10:28:06
期限過ぎちゃいましたけど、
>47お願いします。
213:デフォルトの名無しさん
07/11/26 11:51:43
>>209
なんで謝るの?
214:デフォルトの名無しさん
07/11/26 14:12:00
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: なし
[5] その他の制限:なし
215:デフォルトの名無しさん
07/11/26 15:42:30
>>214
#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);
}
}
216:デフォルトの名無しさん
07/11/26 15:53:26
[1] 授業単元: プログラミング
[2] 問題文 数字の点数を読んで、クラスの平均点、最低点と最高点を求めるプログラムを書け
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語: C#なんだけど、ほかのスレタイ調べても頼めないからみんなたのむ。
[4] 期限: 今週の金曜
[5] その他の制限:結構レベルが低いので複雑なプログラムはご遠慮願います。
217:デフォルトの名無しさん
07/11/26 16:20:24
#include<stdio.h>
int main(){
int n;
printf("数字の点数を入力してください ",n);
scanf("%d",&n);
printf("平均点 %d\n",n);
printf("最低点 %d\n",n);
printf("最高点 %d\n",n);
return 0;
}
218:デフォルトの名無しさん
07/11/26 16:28:01
int ClassMenberNum = 1;
219:デフォルトの名無しさん
07/11/26 16:48:02
>>214
while(clock() - c < speed); → while(1000*(clock() - c) / CLOCK_PER_SEC < speed);
220:学生
07/11/26 16:50:23
大学の授業で課題が出ました。初めてプログラミングやるので分かりません。
お願いします。自分は全くの初心者ですお願いします。
【C言語・質問】 以下、課題です。
①課題内容
駐車場のシュミュレーション・課題先リンク
URLリンク(www.trpt.cst.nihon-u.ac.jp)
※貴方自身がコンビニやパチンコ店の管理者となり、
イメージして以下の条件は各自自由な値としてよい。
・駐車場の台数 ・平均駐車時間(s)
・駐車時間の標準偏差(s)・駐車車両発生条件(開始時間 s )
・その時間における発生確率(台/s)・駐車車両発生条件(中間時間 s )
・その時間における発生確率(台/s)
例:パチンコ店
駐車場の台数=200台
来店頻度=400秒に1台
平均駐車時間=120分 等
上記の設定で、グラフも出る様にすること。
②課題の参考場所
URLリンク(www.trpt.cst.nihon-u.ac.jp)
上記の言語がベースになる様です。
221:デフォルトの名無しさん
07/11/26 16:53:28
>>220
ログインできないのでユーザー名とパスワードを教えてください。
222:デフォルトの名無しさん
07/11/26 16:54:27
>>220
>>1のテンプレに則ってください
223:学生
07/11/26 16:57:21
>>221
すみません
ユーザー:1424
PASS:1424
両方同じです。
>>222
すみませんでした。以後注意します
224:デフォルトの名無しさん
07/11/26 16:57:39
>>215
>>219
ありがとう!助かります!
225:学生
07/11/26 17:08:27
テンプレに沿って書き直しました。
[1] 授業単元:情報処理
[2] 問題文:上記に掲載しました。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: bcPad
[3.3] 言語: C言語
[4] 期限:本日中
[5] その他の制限: 自分はプログラミング素人です。各文字の意味は知っています
226:デフォルトの名無しさん
07/11/26 17:08:48
[1] 授業単元:C言語(システムコール)
[2] 問題文(含コード&リンク):
10から0までの整数を1秒ごとに表示する親プロセスと子プロセスを生成しなさい。
備考
・fork() を用いること
・getpid() を用いて、親プロセスと子プロセスのプロセスIDを表示すること
・wait() を親プロセスで用いない場合と用いた場合を作成すること
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: なし
[5] その他の制限: なし
227:デフォルトの名無しさん
07/11/26 17:10:30
>>223
大学の鯖に入れって事だろ?
なんか、ギリギリアウトな気がするんだが・・・w
228:学生
07/11/26 17:12:26
>>227
大丈夫です。過去にも依頼した事がありあす。
このページ作っているのは大学院生です。見ていません
229:デフォルトの名無しさん
07/11/26 17:18:01
すげぇなぁ、おいw
230:デフォルトの名無しさん
07/11/26 17:19:11
基本技術者試験とかの設問で、不正アクセスになるのはどれか? という選択肢にありそうだなw
231:デフォルトの名無しさん
07/11/26 17:25:44
不正アクセスでタイーホ
232:学生
07/11/26 17:26:50
>>230
多分不二家ですねw
大学の鯖は、情報処理を履修している学生200名が利用していますよ
233:デフォルトの名無し
07/11/26 17:44:19
[1] 授業単元: プログラム演習
[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] その他の制限: なし
234:デフォルトの名無しさん
07/11/26 18:34:03
>>232
利用者は関係なくてだね
アクセス制限してる以上、君が公開したところで罪になるのは見た人なんだよ
235:デフォルトの名無しさん
07/11/26 19:27:26
好奇心から侵入してしまった俺は2chの歴史に刻まれるのか
236:デフォルトの名無し
07/11/26 19:36:51
1] 授業単元: ぷろぐらむ
[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] その他の制限: なし
237:デフォルトの名無し
07/11/26 19:44:50
1] 授業単元: プログラミング言語
[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] その他の制限:なし
238:デフォルトの名無しさん
07/11/26 21:16:55
>>216
「読む」の意味がいまいちわからないけどこんなんかな
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("なんか例外");
}
}
}
239:デフォルトの名無しさん
07/11/26 21:18:15
[1] 授業単元プログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 11/27
[5] その他の制限: 特になし
240:デフォルトの名無しさん
07/11/26 21:25:29
(1)C言語
(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)基礎的なことしか習っていないのですがよろしくお願いします。
241:デフォルトの名無しさん
07/11/26 21:35:49
>>236
関数だけ作った
#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;
}
242:デフォルトの名無しさん
07/11/26 21:41:55
>>241
>入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する
この部分の仕様を満たしてなくね?
if ( strlen( s ) > 128 ) exit( 0 );とか追加すればいいだけど。
243:デフォルトの名無しさん
07/11/26 21:44:04
>>242
何ぃ!その部分はmain側だと思ってた!
じゃあそれつけといて下さい
244:デフォルトの名無しさん
07/11/26 22:08:23
>>237
関数だけ作った
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;
}
245:デフォルトの名無しさん
07/11/26 22:20:15
>>244
valueに値を格納して返す値は正常or変換結果じゃないか?
「変換結果を返す」ってあるけど、普通は正常or異常を返して
正常ならvalueに変換された値が格納されているって感じだな。
246:デフォルトの名無しさん
07/11/26 22:25:25
>>240
#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;
}
247:デフォルトの名無しさん
07/11/26 22:39:13
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
URLリンク(www.vipper.org) "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] その他の制限:とくになし
よろしくお願いします。
248:デフォルトの名無しさん
07/11/26 23:24:31
>>233
URLリンク(kansai2channeler.hp.infoseek.co.jp)
249:デフォルトの名無しさん
07/11/26 23:25:04
[1] 授業単元: プログラミング
[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
なにとぞ、よろしくお願いします。。
250:デフォルトの名無しさん
07/11/26 23:29:37
↓第1回、国際ニコニコ映画祭 大賞作品
URLリンク(www.nicovideo.jp)
はっきりいって糞暴力動画
これでいいのか?ニコニコ動画!??
251:128
07/11/26 23:47:54
>>131>>154
>>132のでは実行してもなぜか何も表示されませんでした。
自分の環境では>>154のプログラムで正しい答えが出ました。
ありがとうございました。
あと数列に直すために色々試したのですができません・・・
これもお願いしていいでしょうか?
252:デフォルトの名無しさん
07/11/26 23:52:10
よくあんな巨大配列で動いたもんだ
253:コーンポタージュ
07/11/27 00:40:29
>>147
追加・変更があるので、改めて掲載します。
【質問テンプレ】
[1] 授業単元:グラフ彩色問題
[2] 問題文
[2.1]グラフ彩色問題に対する近似解法SEQを作成せよ
[2.2].頂点を次数の降順にソートした後にSEQを適用するプログラムを作成せよ
[2.3]グラフ彩色問題に対する近似解法RLFを作成せよ
問題の詳細(pdfなので少々重いです。最後の方のプログラミング課題です)
URLリンク(www-2ch.net:8080)
サンプルプログラム(これを参考にプログラムを解くそうです)
URLリンク(www-2ch.net:8080)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2007年12月7日
[5] その他の制限:特にありません。
よろしくお願いします。
254:デフォルトの名無しさん
07/11/27 00:42:17
>>249
はいよっと、一応条件満たしてると思うけど
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;
}
255:デフォルトの名無しさん
07/11/27 00:42:58
>>249
マージする部分ね
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;
}
256:デフォルトの名無しさん
07/11/27 00:51:55
>>249
うっぷろーだがあったんだ、こっちに上げといた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
257:216
07/11/27 01:33:08
>>238
すまない・・・せっかくといてもらったんだけど、CじゃなくてC#なんだ・・・。
スレッド自体はCかC++なんだけど、
C#のスレッドがなくてここの住人に頼るしかなくてね・・・。
258:デフォルトの名無しさん
07/11/27 01:45:34
>>247
#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);
}
259:デフォルトの名無しさん
07/11/27 01:59:18
>>257
大丈夫か?>>238はcscでコンパイル・実行可能だぞ?
260:デフォルトの名無しさん
07/11/27 02:04:02
>>257
むしろ、C/C++じゃコンパイルすら通らないと思うんだが
261:デフォルトの名無しさん
07/11/27 02:43:36
>>254>>255>>256さん
ありがとー!!助かります!
262:デフォルトの名無しさん
07/11/27 02:48:59
次スレからはスレタイにC#も入れとこう。
263:デフォルトの名無しさん
07/11/27 03:05:38
>>258
ありがとうございました。
264:デフォルトの名無しさん
07/11/27 09:17:17
>>220
これは善意の人間を犯罪者にするかのような誘導。
不正アクセスに繋がるから、このページに行く必要は全く無い。
265:デフォルトの名無しさん
07/11/27 09:38:45
>当該アクセス管理者若しくは当該利用権者の承諾を得てする場合は、この限りでない。
正規の利用者からパスワード教えられてアクセスする場合って
不正アクセスになるんだっけ?法律にはうといからよくわからん・・・
266:デフォルトの名無しさん
07/11/27 09:51:00
>>265
そもそも>>220が正規利用者だという確証は一つも無い。
下手をするとhackingを行った犯罪者だということすら考えられる。
そしてそのhackerからpassを教えてもらってアクセスすれば、
我々は立派な犯罪者になってしまう。
267:デフォルトの名無しさん
07/11/27 10:02:58
故意かどうかって関係ないんだっけ?
まぁアクセスしないのが一番確実だけど。
268:デフォルトの名無しさん
07/11/27 10:17:33
>>220が、そのIDとパスワードの所持者"本人"であれば、以下の法律
不正アクセス行為の禁止等に関する法律
URLリンク(law.e-gov.go.jp)
第四条に該当し"許可を得た"ということになるんだが、本人であるという証明がなされていない。
2ちゃんねるにパスワードを掲載する=Web検索のロボットにキャッシュされる。
それと、ログインした人間のIPや環境情報はサーバーログを見ればすぐに判る。
管理していないとしても、しっかり残るので後で掘り返すことが可能。
逮捕者の実例
News:速報:“2ちゃんねらー”6人逮捕,不正アクセスで
URLリンク(www.itmedia.co.jp)
第3者が"権利者の許可なく"そのパスワードでログインした場合は不正アクセス。
269:デフォルトの名無しさん
07/11/27 10:42:40
[-3、3] fx=1/(1+5X^2) 分点10 (n=9)
この条件を使ってラグランジュ補間のプログラムを作れって問題なんですけどさっぱりです。ちなみにC言語です
270:デフォルトの名無しさん
07/11/27 10:44:38
>>269
とりあえず>>1にテンプレートという便利なモノがあるからそれを大いに活用したほうが良い
271:デフォルトの名無しさん
07/11/27 11:16:08
>>253
せめて問題例データくらい作って置いたらどうかな
頂点10で辺数27でしょ、PG作ってデータまで作るとなると、相当な暇人でもやらんと思う
272:デフォルトの名無しさん
07/11/27 11:16:32
>>270
OSはLinux 知識はCとC++なら多少は分かる とにかく提出したらいいので多少自己流で解かれても大丈夫です
273:デフォルトの名無しさん
07/11/27 11:17:46
>>272
質問の仕方も自己流にこだわるのかw