C/C++の宿題を片付け ..
596:デフォルトの名無しさん
08/06/24 19:53:19
>>594
#include<iostream>
#include<vector>
class stack{
public:
void push(int data){ if(m_data.size()<m_datanummax) m_data.push_back(data); }
int pop(){
int ret=-1;
if(m_data.size()>0){
ret=m_data[m_data.size()-1];
m_data.pop_back();
}
return ret;
}
void display(){ for(unsigned i=0;i<m_data.size();i++) std::cout << m_data[i] << std::endl; }
stack(){m_datanummax=10;}
stack(int datanummax):m_datanummax(datanummax){};
private:
std::vector<int> m_data;
unsigned m_datanummax;
};
int main(void){
stack a, b(5);
for(int i=0;i<20;i++){
a.push(i);
b.push(i);
}
a.display();
std::cout<<"-----"<<std::endl;
b.display();
return 0;
}
597:デフォルトの名無しさん
08/06/24 20:02:32
添削屋が虫作ってどーすんだよw
598:デフォルトの名無しさん
08/06/24 21:23:54
麻呂のクソースはいらんかえぇ〜
599:デフォルトの名無しさん
08/06/24 21:32:00
>>589
main関数はヘッダで宣言したらダメ
sumValue関数はヘッダで宣言してもいい
bitree.hを作ってincludeさせてるのは勉強のためじゃない?
main関数と同じファイルに関数を定義してるなら普通はわざわざ宣言部をヘッダに分けない
main関数以外をbitree.cとかいうファイルにでも定義するならbitree.hを作る必要がある
分割コンパイルについて知りたいなら、ググるか他のC言語質問スレに質問しましょう
600:デフォルトの名無しさん
08/06/24 21:40:24
>>590
完全2分木って書いてあるけど、綺麗な形の木じゃない場合ってことは
完全2分木ではない場合を考えろってこと?
601:デフォルトの名無しさん
08/06/24 21:40:44
>>599
わかりました、ありがとうございました!
602:デフォルトの名無しさん
08/06/24 22:06:29
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:XP
[3.3] 言語: C++
[4] 期限: 08年06月30日
[5] その他の制限:もしやっていただけるなら出来るだけ簡単に、分かりやすく(初心者でも理解できる構成)
603:デフォルトの名無しさん
08/06/24 22:10:31
問1
A : [] B : 0 C : * D : * E : * F : 0 G : vc
604:デフォルトの名無しさん
08/06/24 22:21:00
>>603
エスパーいないなー
605:デフォルトの名無しさん
08/06/24 22:21:45
問3
A : d B : d C : s
606:デフォルトの名無しさん
08/06/24 22:50:35
1
607:デフォルトの名無しさん
08/06/24 22:53:53
[1] 授業単元:Cプログラミング
[2] 問題文(リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2008年06月25日いっぱい
608:デフォルトの名無しさん
08/06/24 23:03:35
[1] 授業単元:数学演習3
[2] 問題文(含コード&リンク):
3a-2b+ - d= 7
. 2b+2c+ d= 5
.a-2b-3c-2d=-1
. b+2c+ d= 6
上の行列をピポット選択を使い前進消去法で解くプログラムを作る。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語:C
[4] 期限:2008年06月25日07:00まで
[5] その他の制限:特に制限はありません
以下が作っては見たもののアルゴリズムエラーでどこが悪いのかもわからない自作プログラム。
URLリンク(nijibox.ohflip.com)
609:608 ◆k4INPBPZ3E
08/06/24 23:04:30
トリップ忘れてた
610:デフォルトの名無しさん
08/06/24 23:11:40
1] 授業単元:基礎プログラミング
[2] 問題文
(1)標準入力からint 型引数に文字コード (ASCII) を読み込むと, その文字が小文字 (a〜z) であれば大文字のコードを返し
そうでないならば受け取ったコードをそのまま返す関数を設計し, その関数を利用するプログラムを作成しなさい
(2)char 型の配列の名前を引数として受け取ると, その配列に記憶されている文字列の逆順に 並べか替えた文字列を表示し
何も返さない関数を設計し, その関数を利用するプログラムを作成しなさい.
(3)char 型の配列の名前を2つ引数 P, R に受け取ると, P に記憶されている文字列を逆順に並べか替えた文字列を R に記憶して
何も返さない関数を設計し, その関数を利用するプログラムを作成しなさい.
(4)char 型の配列の名前を引数として受け取ると, その配列に記憶されている文字列が回文ならば 1 を, そうでなければ 0 を返す関数を設計し
その関数を利用するプログラムを作成しなさい. ただし,前問の関数を利用すること.
(5)char 型の配列の名前を引数として受け取ると, その配列に記憶されている文字列が回文ならば 1 を, そうでなければ 0 を返す関数を設計し
その関数を利用するプログラムを作成しなさい. ただし,前々問の関数を利用せず, 直接,文字列中の文字を先頭と末尾から比較する方針を用いること.
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン:(cygwin)
[3.3] 言語:C
[4] 期限:(明日の15時まで)
[5] その他の制限:
611:デフォルトの名無しさん
08/06/24 23:12:48
>>607
#include <stdio.h>
int main(void)
{
int i, j, sum;
for(i=1, sum=0; i<=100; i++) sum += i;
printf("1から100までの整数の和は%d\n", sum);
for(i=1, sum=0; i<=100; i+=2) sum += i;
printf("1から100までの奇数の和は%d\n", sum);
for(i=1; i<=20; i++) {
if(i<10) for(j=0; j<i; j++) putchar(' ');
else for(j=20; j>i; j--) putchar(' ');
printf("%d\n", i);
}
return 0;
}
612:607
08/06/24 23:26:48
>>611
ありがとうございます
613:デフォルトの名無しさん
08/06/24 23:34:49
2進数変換の問題を出されました。。。基本的な部分は作ってみたのですが、完璧にできません…小数変換の工程などは手ではできるのですが…
どなたかご助力宜しくお願いします。
[1] 授業単元:実験
[2] 問題文(含コード&リンク):
10進数を2進数に変換するプログラムを作成せよ。
その際、入力する10進数が小数点ありの数値(例:2.56)でも変換可能なものとする。
[3] 環境
[3.1] OS:XP
[3.3] 言語: C
[4] 期限: 08年06月27日
[5] その他の制限:
基本的に習ったことの利用がメインなので、特殊な関数などは使えません。原始的なアルゴリズムでないとだめなようです。
もちろん、構造体、配列、ポインタなどの基本は習いました。
614:デフォルトの名無しさん
08/06/24 23:35:34
作ってみたプログラムです。(また、どうしてもMSBに0が羅列してしまって…変換した数値のみを表示させたいのですが…。つまり、000000000000000000010110とかではなく10110と。)
#include <stdio.h>
const int BitSize = sizeof(int) * 8; // 整数型のビットサイズを算出
void dtob(int x) {
int bit = 1,
i;
char c[BitSize];
for (i = 0; i < BitSize; i++) {
if (x & bit)
c[i] = '1';
else
c[i] = '0';
bit <<= 1;
} // 計算結果の表示
printf("2進数: ");
for ( i = BitSize - 1; i >= 0; i-- ) {
putchar(c[i]);
}
printf("\n");
}
int main(){
int x = 0;
do {
printf("10進数を2進数に変換します(0で終了)\n");
printf("xの値: ");
scanf("%d", &x);
dtob(x);
} while (x != 0);
return 0;}
615:デフォルトの名無しさん
08/06/24 23:36:38
あ、すみません、
>613 = >614
です。
616:デフォルトの名無しさん
08/06/24 23:44:06
for(i=BitSize-1; c[i]=='0'; i--); //最初に1が出るまでスルー
for( ; i>=0; i--) putchar(c[i]); //後は普通に表示
617:デフォルトの名無しさん
08/06/24 23:55:50
>616
レスありがとうございます!
なるほど〜ちょっと改良してみます。
あとは小数点が問題ですね。。。
やっぱりとりあえず、整数部分と小数点以下をわけてスキャンしなきゃだめですよね
618:デフォルトの名無しさん
08/06/25 00:01:46
>>604
ん?>>603間違えてる?
619:デフォルトの名無しさん
08/06/25 00:05:49
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
登録番号(int no)と名前(char *name)と年齢(int age)を含む構造体person型のポインタ変数を宣言し、登録人数分だけの動的メモリ確保をせよ。そして、データをファイルから入力せよ。
ファイルの形式は、先頭に登録する人数とし、そのあとに人数分のデータを登録番号、名前、年齢の順に書いていく(下の例を参照。登録番号は入力順に1,2,3,4,5,・・・とする。そして、入力した全員データを表示せよ。)
(ファイルの例)
3
1 田中 20
2 太田 40
3 井上 35
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語:C
[4] 期限: できるだけ早くお願いします。
[5]問題文でわかりにくいところがありましたら、聞いてください。
620:デフォルトの名無しさん
08/06/25 00:14:27
>>614
んー?その課題ってそういう解き方を期待してるのかな。
それでもいいんだけど、初歩的な段階ということを考慮すると
整数部なら2で割ったあまりをせっせと詰めていくように思えた。
小数部は2倍したものの整数部を詰める、みたいな。
その段階でビット演算でできるという発想をしたなら優秀な
生徒さん(もしくは経験者)なんだなあって思う。
// 皮肉じゃないです。念のため
621:デフォルトの名無しさん
08/06/25 00:20:03
何を習ったのかお前知ってるのかよw
622:デフォルトの名無しさん
08/06/25 00:25:57
[1] 授業単元:基礎プログラミング
[2] 問題文
キーボードから2つの自然数を入力し、入力した値が10以下で2の倍数なら足し算
それ以外はかけ算させた結果を表示させるプログラムを作成せよ。
但し、if文を用いて自然数以外を入力したらエラー文を表示させる。
[3] 環境
[3.1] OS: Windows/linux
[3.2] コンパイラ名とバージョン:VC++ 6.0/gcc
[3.3] 言語: C
[4] 期限:6/27
[5] その他の制限:入力はscanf、出力はprintf stdio.h
よろしくお願いしますorz
623:デフォルトの名無しさん
08/06/25 00:26:37
>>621
あーもーそういう煽りが欲しいわけじゃなくてな。
関数、ポインタ習いました。とか原始的なアルゴリズムで、とか前置きしなきゃならない段階でしょ?
その段階でビット演算を直感的に理解できる子は少ないでしょ。
わかんないかなー。
学生の頃周りがどうだったか、自分がどうだったか思い出しなよ。
学校では習ってません独学です、ならビット演算をスムーズに理解できたのはいつのことだった?
624:デフォルトの名無しさん
08/06/25 00:29:33
>基本的に習ったことの利用がメイン
って書いてあるのに、ビット演算を習ってないと思うほうがおかしいだろ。
625:デフォルトの名無しさん
08/06/25 00:37:27
ってか>>613にアドバイスしたらどうなん?
>>622
URLリンク(kansai2channeler.hp.infoseek.co.jp)
626:デフォルトの名無しさん
08/06/25 00:38:02
>623 >624 さん方
お二人ともすみません(汗)
自分の書き方がまぎらわしかったです・・・
ビット演算は習っていません。
柴田先生の本を読みまして、
内部表現とビット などの説明あたりを読んでいるときに
先生が以前ビット演算でやればサマートなんだけどな・・・ブツブツと
ボソっといってたのを思い出して、
それから少し自分で勉強してみました。
ですが、挫折しかけてこのサイトに、、です。(汗)
というか途中で疑問に思ったのですが、なんでC言語には2進数で表示する機能がないのでしょうか・・・?
627:デフォルトの名無しさん
08/06/25 00:40:40
>>623
相手するだけ無駄
>>624
宿題解いてもらえなくて涙目なんですよね、わかります。
催促していいよw
628:613
08/06/25 00:41:18
あ、ちなみに
原始的なアルゴリズム とはありますが、
たぶんビット演算くらいはOKかと思います。
先生は期待してはいないと思いますが…。
その、手計算でやるときのアルゴリズムと
まったくそのままのほうが、わかりやすいのだとは思うのですが、
違う方向性でやりはじめてしまったので…。
最終的にダメそうなら、ホントに原始的な方向でいくつもりですが。
629:デフォルトの名無しさん
08/06/25 00:51:30
[1] 授業単元:プログラミング実験
[2] 問題文(含コード&リンク):
2題あります。
片方でも構いません。
上については、ソースに記載されてるpartitionって関数を使って、再帰でクイックソートです。
下については、ソースに記載されているmergeって関数を使って、再帰でマージソートです。
それぞれ、作成する部分にコメントがあるので、大体それと同じ行数でできるらしいです。
でも長くなっても構いません。
ifとforかwhileでできるみたいなことも言ってました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: CPad for Borland C++Compiler Version 2.31
[3.3] 言語:C
[4] 期限: 2008年6月25日17:00まで できるだけ早く完成させたいです。提出は明日の夕方です。
[5] その他の制限: ポインタは使わない感じで授業やってます。再帰必須です。あとは上に書いた通りです。
よろしくお願いします。
630:608 ◆k4INPBPZ3E
08/06/25 01:03:52
ヘルプ!ヘールプ!!!
631:デフォルトの名無しさん
08/06/25 01:06:35
>>629
void quicksort(int left, int right)
{
int i=0;
if(left >= right) return;
i = partition(left, right);
quicksort(left, i-1);
quicksort(i+1, right);
}
void mergesort(int l, int r)
{
int m;
if(l>=r) return;
m = (l + r) / 2;
mergesort(l, m);
mergesort(m+1, r);
merge(l, m, r);
}
632:デフォルトの名無しさん
08/06/25 01:11:17
>>628
→>>316
633:デフォルトの名無しさん
08/06/25 01:20:45
>>631
あなたが神か
ありがとうございます!
超絶感謝!!!
634:デフォルトの名無しさん
08/06/25 01:20:49
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
(1)1つの整数を2進数に変換表示する関数convert(a)を作成せよ。そして、キーボードより任意の正の整数を入力し、
その整数の2進数が表示されるプログラムを作れ。
(2)1つの正の整数を素因数分解し表示する関数bunkai(a)を作成せよ。そして、キーボードから任意の正の整数を入力し、
その整数の素因数分解を表示するプログラムを作れ。
------表示例------
整数を入力: 50
50=2x25
25=5x5
5=5
5*5*2
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:関数についての演習です。実は(1)に関しては十分な実行結果は得られました。
蛇足があれば指摘していただきたいです。
635:デフォルトの名無しさん
08/06/25 01:21:56
(1)の作成したプログラムです。(2)の参考になればよいのですが。
#include <stdio.h>
void convert(int n)
{
if(n>1)
convert(n/2);
if(n==1)
printf("1");
else
printf("%d",n%2);
}
void main()
{
int n;
printf("10進数を入力してください:");
scanf("%d",&n);
printf("2進数に変換すると\n");
convert(n);
}
636:デフォルトの名無しさん
08/06/25 01:45:23
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
アスキーコードにより文字操作を行い、暗号化された文字列を解読するプログラム
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cyagwin gcc
[3.3] 言語: C
[4] 期限: 6/26 午後3時まで
暗号文(アスキーコードをずらしただけ)を解読するプログラムを作成する課題です。
よく見る課題ですが、プログラム仕様が特殊で過去ログに該当するものがなかったので
どなたかお願いします。
637:デフォルトの名無しさん
08/06/25 01:54:37
>>628
手作業で小数を2進数に変換することができることに加え、浮動小数点のビット列が
どのように構成されてるかを理解する必要があるよ
それでもビット演算しますか?(y/n)
638:デフォルトの名無しさん
08/06/25 02:12:06
前回教えてくださったありがとうございます!!
以下のようなプログラミングはどのようにすればよいのでしょうか?
「組み合わせ」を求める数学の公式にコンビネーションがあります。このコンビネーションのプログラミングを教えてください!
nとrをscanf()で読み、nCrの値を計算して表示させます。
条件として、nとrの値はマイナスでなく、またゼロでなく、さらにここではn<=10であることを確認させて、正しい数値を入力させる。もし誤った数値を入力したら「入力ミスです」と表示させる。
0!=1も扱えるようにすることを忘れない。
これもよろしくお願いします
639:613
08/06/25 02:12:31
>637
はい…そこなんですよ…。
それが頭いっぱいになって、ここにたどり着きました。。。
1年間アセンブリ言語をやっていたことがあって、
そのとき浮動小数点に苦労しました。。。
でも原始的なアルゴリズムよりもスマートに、短くできるんだったら
大変興味があります。なのでとりあえずやりたいと考えます。
640:613
08/06/25 02:23:50
ちなみに
丸め誤差については特にいわれてないのですが、
4ビット程度表示できればいいかなぁと考えています。
641:デフォルトの名無しさん
08/06/25 02:24:42
[1] 授業単元:数値解析
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: WindowsXP SP2
[3.2] コンパイラ名とバージョン: visual Studio NEt2003
[3.3] 言語: C/C++/どちらでも可
[4] 期限:今週土曜まで
[5] その他の制限: 大域変数(グローバル変数)を使う。
今あるプログラムを改善した形で書き換えてくれるとありがたい。
(プログラムの授業ではなく数値解析なので変な形にはなっていると思うが
なるべくこのような形にしてもらいたい。)自分が理解しやすいのもあるが
642:デフォルトの名無しさん
08/06/25 02:32:20
前スレの人?
643:デフォルトの名無しさん
08/06/25 02:36:55
>>641
yを求めた時のiの値とxn[i],xn[i+1]とxの関係を考えてみろ。
っていうか前スレのヤツならなんできちんと写さない?
644:613
08/06/25 02:37:40
>642
え、自分でしょうか??
自分はこのスレ、はじめてです。(検索で見つけました)
645:デフォルトの名無しさん
08/06/25 02:38:14
いや641のこと。
646:613
08/06/25 02:38:42
あ、すみません m()m
647:デフォルトの名無しさん
08/06/25 02:41:48
東京高価万歳
凄いぞ東京高価
648:デフォルトの名無しさん
08/06/25 03:28:21
>>611
(・∀・)ニヤニヤ
649:デフォルトの名無しさん
08/06/25 03:32:55
ニヤニヤするぐらいならどこがおかしいか指摘ぐらいしたら?
650:デフォルトの名無しさん
08/06/25 03:38:15
おかしくなんかないよ、ただ、おそらく等差数列の差を使うとか
一番最後は工夫すりゃif else 不要
651:デフォルトの名無しさん
08/06/25 03:41:48
ループの中にムダな分岐つっこんで効率と可読性下げるより、あのままで十分だと思うけど。
652:デフォルトの名無しさん
08/06/25 04:12:17
>>619 お願いします。
653:デフォルトの名無しさん
08/06/25 05:17:34
>>650
これでいいですか><?
for(i=1;i<=20;i++)
printf("%*s%d\n",i<=10?i:20-i,"",i);
654:590
08/06/25 06:42:59
>>600
えっと・・・完全2分木っていうのは葉以外の全てのノードが枝を2つ持っている事が必要十分条件ではないのですか?
それならば一部のパスだけが長いという場合も考えられますよね。
それとも左右対称の三角形みたいな形の木になることを意味しているんでしょうか。
655:デフォルトの名無しさん
08/06/25 06:49:09
完全二分木は、「すべての葉の深さが等しい二分木」という定義が普通だと思う
656:デフォルトの名無しさん
08/06/25 06:51:23
AVL木とか赤黒木なら回転を伴うが常にバランスした二分木が作れる
何も考えずに昇順に挿入したりするとリスト構造の高価なシミュレーションになる
657:デフォルトの名無しさん
08/06/25 06:54:56
あ、質問の意図を誤解してたかも
NlogNじゃねーの?
658:デフォルトの名無しさん
08/06/25 07:01:24
>親ノードから左右の
>子ノードの中身を比較することで、完全2分木中の任意のノードの探索が行えるとする
この意味が分からん
「左右の子ノードの中身を比較」ってどういうことだろう
普通の二分探索木なら簡単に解ける
完全二分木の高さをhとすると、N=2^h-1だから、h=log2(N+1)
比較回数の最大値は高さと同じだから、log2(N+1)回
659:デフォルトの名無しさん
08/06/25 08:39:21
>>619
URLリンク(kansai2channeler.hp.infoseek.co.jp)
660:デフォルトの名無しさん
08/06/25 08:45:17
>fscanf(fp, "%s", p->name);
661:デフォルトの名無しさん
08/06/25 08:55:49
#include<stdlib.h>いれろよ
662:デフォルトの名無しさん
08/06/25 10:38:17
[1] 授業単元: プロC演習
[2] 問題文(含コード&リンク):()
# 下記のようにキーボードから4桁の10進数の入力を2回受付ける.
Input the 1st value > 6479
Input the 2nd value > 1497
但し,4桁の各位の数は必ず互いに異なるものが入力されるとする.
# 入力された数値に対して,次のようにに定義する「ヒット数」と「ホームラン数」を求める.
* ホームラン数: 二つの数字を同じ位ごとに比較した場合,何ヶ所の位について一致してるかを表す.
* ヒット数: 二つの数字を異なる位同士で比較した場合,一致している組み合わせの数を表す.
例
1234と1234のとき,0ヒット4ホームラン
1234と4321のとき,4ヒット0ホームラン
6479と1497のとき,2ヒット1ホームラン
# ヒット数とホームラン数を下記のように表示する.
2 hit(s) 1 home run(s)
[3] 環境
[3.1] OS: WindowsVista
[3.2] コンパイラ名とバージョン:Cygwin gcc
[3.3] 言語: C
[4] 期限: 6月26日正午
[5] 現時点で習ってるのは、条件分岐、繰り返し、配列、ソート、ポインタまでです。
よろしくお願いします。
663:デフォルトの名無しさん
08/06/25 10:54:32
memcpy(n1,n1,sizeof(int)*2*3);
memcpy(n1+(2*3),n2,sizeof(int)*2*3);
これって何やってるの?
調べたんだけどよくわからないです…
664:デフォルトの名無しさん
08/06/25 11:12:06
だれか610を助けて…
665:デフォルトの名無しさん
08/06/25 11:53:36
>>663
どうすれば調べきれないのかよくわからないです…
URLリンク(www.google.co.jp)
666:デフォルトの名無しさん
08/06/25 12:30:32
>>610
#include <stdio.h>
#include <string.h>
/*1)*/ int getUpper(){ int r=getchar(); return 'a'<=r && r<='z' ? (r-'a'+'A') : r; }
/*2)*/ void showReverse(char *s){ int i; for(i=strlen(s)-1; i>=0; putchar(s[i--])); putchar('\n'); }
/*3)*/ void letReverse(char *P, char *R){ int i,k; for(k=0, i=strlen(P)-1; i>=0; R[k++]=P[i--]); R[k]='\0';}
/*4)*/ int isCircular(char *s){ char *r=(char*)malloc(sizeof(char)*(strlen(s)+1)); int ret; letReverse(s,r); ret=strcmp(s,r)==0; free(r); return ret; }
/*5)*/
static int isCircular2s(char *s1, char *s2){ if(s1>=s2) return 1; else{if(*s1==*s2) return isCircular2s(s1+1, s2-1); else return 0; } }
int isCircular2(char *s){ return isCircular2s(s,s+strlen(s)-1); }
// なんか色々関数を利用するプログラム
void checkCircular(char *s){ printf("%s is %scircular string.\n", s, isCircular(s) ? " " : "not ");
int main(void){
char rev[10];
printf("Hit keyboard: ");fflush(stdout);
printf("getUpper() is .. %c\n", getUpper());
showReverse("abcde");
letReverse("a1b2c3", rev);
printf("reverse a1b2c3 = %s\n", rev);
checkCircular("abcba"); checkCircular("12321");
printf("12321 is %scircular string.\n", isCircular2("123321") ? " " : "not ");
}
667:デフォルトの名無しさん
08/06/25 12:56:24
>>666
神様ありがとう!
でも分けかからんww 勉強せねば…
668:デフォルトの名無しさん
08/06/25 14:11:11
>>662
#include <stdio.h>
int main(void)
{
char value[2][5];
int i, j, hit = 0, homerun = 0;
printf("Input the 1st value > ");
scanf("%s", value[0]);
printf("Input the 2nd value > ");
scanf("%s", value[1]);
for(i=0; i<4; i++) {
for(j=0; j<4; j++) {
if(value[0][i] == value[1][j]) {
if(i == j) homerun++;
else hit++;
}
}
}
printf("%d hit(s) %d home run(s)\n", hit, homerun);
return 0;
}
669:デフォルトの名無しさん
08/06/25 14:53:44
[1] 授業単元:計算機システム
[2] 問題文(含コード&リンク):擬似シェル(UNIX上で動く)を作る
必要な機能
・リダイレクト(>>、>、<)
・パイプ(|)
・パイプは複数つなげるように
・できればcdやaliaseも。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc 3.4.6
[3.3] 言語: C
[4] 期限:明日の午前中
[5] その他の制限:
リダイレクトとパイプの実装ができません。
お願いします。
670:デフォルトの名無しさん
08/06/25 15:05:01
【質問テンプレ】
[1] 授業単元:コンピュータアーキテクチャー
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C
[4] 期限: 六月二十九日
[5] その他の制限: 特にありません
よろしくお願いします
671:デフォルトの名無しさん
08/06/25 15:11:16
> 1.gettimeofday関数を用いて、サイズ5000の配列を用い、 それを100000回程度繰り返して、 倍精度浮動小数乗算の演算性能を測定し、それをMFLOPSで求めよ。
> また、使用したプログラムも提出せよ。
におんごでおk
672:670
08/06/25 15:25:06
>>671
すみません
URLリンク(kansai2channeler.hp.infoseek.co.jp)
↑のようにサイズ5000の配列を用いて、それを100000回程度繰り返して、 倍精度浮動小数乗算の演算性能を測定し、それをMFLOPSで求めることです。
673: ◆DuoCt8/SKk
08/06/25 15:41:19
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++ 6.0
[3.3] 言語:C言語
[4] 期限:2008/06/28
[5] その他の制限:ポインタ,構造体は習っています.
全く分からないので,よろしくお願いします!
674:デフォルトの名無しさん
08/06/25 17:53:14
>>625
if (a <= 10 && a % 2 == 0 && b <= 10 && b % 2 == 0)
(・∀・)ニヤニヤ
675:634
08/06/25 17:55:45
一応途中まで作ってみました。
問題は最後の一行(素因数展開の表示:ex.「5*5*2」)なんですけど・・・
配列作って素数を入れてかないと駄目ですかね?
#include <stdio.h>
void bunkai(int n,int i)
{
if(i==n){
printf("%d=%d\n",n,n);
}
else if(n%i==0){
printf("%d=%dx%d\n",n,i,n/i);
bunkai(n/i,i);
}
else
bunkai(n,i+1);
}
void main()
{
int n,i=2;
printf("整数:");
scanf("%d",&n);
bunkai(n,i);
}
676:デフォルトの名無しさん
08/06/25 17:58:21
うpロダー使えYO!
677:デフォルトの名無しさん
08/06/25 18:01:48
>>676
すいませんでした。。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
678:634
08/06/25 18:07:06
すいません、自己解決しました。
679:デフォルトの名無しさん
08/06/25 18:09:12
[1] 授業単元:C 文字の処理
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Cygnus
[3.3] 言語: C
[4] 期限: 明日の17:00まで
[5] その他の制限: 2問同時で申し訳ありませんが、なるべくシンプルなものをお願いします。
680:デフォルトの名無しさん
08/06/25 18:09:13
いや、もうおせーYO!w
681:637
08/06/25 18:22:06
>>613
>>639
URLリンク(kansai2channeler.hp.infoseek.co.jp)
きれいではなくて申し訳ないんだけど、double型の構造を元に2進変換したつもりです。
負の場合どうするのか分からなかったので、とりあえず符号だけつけてます。
Windowsならリトルエンディアンきめうちで処理をしてもいいのかもしれないけれど、一応。
682:637
08/06/25 18:25:58
補足で、doubleが8byteであることを期待したコードになってる箇所がいくつかあります。
sizeof(double)やってたりやってなかったりで汚いんですが、
そもそも8byte以外だった場合にビット構造がどうなるのか知らないので8byteな環境
以外でどうなるかわかりませんです。
誰か教えてくれるとありがたいです。
683:デフォルトの名無しさん
08/06/25 18:27:22
637をテンプレに沿って清書すると
[1]回答レベル:検証済み?
[2] コード:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境 Linux?/Gcc/C
[4]コメント
きれいではなくて申し訳ないんだけど、double型の構造を元に2進変換したつもりです。
負の場合どうするのか分からなかったので、とりあえず符号だけつけてます。
Windowsならリトルエンディアンきめうちで処理をしてもいいのかもしれないけれど、一応。
684:637
08/06/25 18:38:29
>>683
そうか、テンプレがw
>>613
[1]回答レベル:ある程度検証済み
[2] コード:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境 Windows/VC7/C およびLinux/gcc4.1.2
[4]コメント
きれいではなくて申し訳ないんだけど、double型の構造を元に2進変換したつもりです。
負の場合どうするのか分からなかったので、とりあえず符号だけつけてます。
Windowsならリトルエンディアンきめうちで処理をしてもいいのかもしれないけれど、一応。
正の整数についてはWindowsの電卓を使って検証しました。
小数についてもある程度検証してそれらしい結果を確認しています。
負数については、ごめんなさい><
685:デフォルトの名無しさん
08/06/25 18:48:08
累計
50 49 48 47 46
45 44 43 42 41
35 34 33 32 31
30 29 28 27 26
25 24 23 22 21
20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
累計
を一次元配列のみを使ってどうやって書けますか?
686:デフォルトの名無しさん
08/06/25 18:49:07
>>685
ずれてすみません
縦累計と横累計ということです><
687:デフォルトの名無しさん
08/06/25 18:57:14
>>685
これと同じかな
スレリンク(tech板:850番)
スレリンク(tech板:920番)
このレスをしたの俺なんだが、ネタレスのつもりだったのに
感謝されて非常に困惑した記憶がある
688:デフォルトの名無しさん
08/06/25 18:59:59
URLリンク(x68000.q-e-d.net)
をみてCでftpクライアントのプログラムを作成しましたが
サンプルソースの224行目が実行されて
「150 Opening ASCII mode data connection」がサーバから返却された後
226行目が実行されて
「226 Transfer complete」がサーバから返却されるまで180秒かかってしまいます。
何故でしょうか?
サーバはredhatlinux上でProFTPD 1.3.1が動いています。
クライアントは上記サーバと兼ねています。下記のようなログがでます。
<-- 220 ProFTPD 1.3.1 Server (ProFTPD Default Installation) [127.0.0.1]
--> USER ユーザ名
<-- 331 Password required for ユーザ名
--> PASS パスワード
<-- 230 User ユーザ名 logged in
--> PORT 127,0,0,1,229,242
<-- 200 PORT command successful
--> RETR ファイル名のフルパス
ファイルの中身
<-- 150 Opening ASCII mode data connection for ファイル名のフルパス (13 bytes)
<-- 226 Transfer complete(これが出るのは1つ上の行が出力されてから180秒後)
--> QUIT
<-- 221 Goodbye.
689:デフォルトの名無しさん
08/06/25 19:05:26
>>688
なぜここに?
とりあえずサーバのログおよびパケットキャプチャをしてみて原因探るしか。
690:デフォルトの名無しさん
08/06/25 19:07:50
>>687
あ、同じですね><
明日提出なんですがさっぱりなんです
691:デフォルトの名無しさん
08/06/25 20:14:21
>>690
>>685
URLリンク(kansai2channeler.hp.infoseek.co.jp)
692:デフォルトの名無しさん
08/06/25 20:24:00
>>691
ありがとうございます
まだ入門編なので、複雑でよく分かりません><
これ以上簡単に表現できないのですか?
693:デフォルトの名無しさん
08/06/25 20:30:17
>>692
理解しようとする気があるならちゃんと授業中に理解しようね
教員には「沢山勉強してわかるようになりました」って言っておけばなんとかなる
694:デフォルトの名無しさん
08/06/25 20:33:53
>>693
すみません
自力でやってみます
ありがとうございました><
695:デフォルトの名無しさん
08/06/25 20:38:57
#define が見慣れないだけか?ROWを10にCOLを5に書き換えれば良いが
もちろんそれが分かっていれば、そんなことせんでROW と COL で定義し
後はそれらを変更することでそれに応じて結果を出すソースのままにしときゃええがな
696:デフォルトの名無しさん
08/06/25 20:41:00
[1] 授業単元:プログラミングT
[2] 問題: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3.1] OS: WindowsXp
[3.2] コンパイラ名とバージョン:visualstdio 2008
[3.3] 言語:C
[4] 期限:6月29日
[5] その他の制限:なし。
よろしくお願いします.
697:デフォルトの名無しさん
08/06/25 20:45:22
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:無期限
698:デフォルトの名無しさん
08/06/25 20:48:41
>>695
#defineは分かります!
tr,tcというのはトータルという事ですね。事故解決しました!
ありがとうございました
699:デフォルトの名無しさん
08/06/25 20:52:03
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
構造体person型を自己参照的構造体(下の例を参照)にし、配列に入力していたデータを単方向連結リスト構造に入力せよ。
ファイルからデータを入力したリストの先頭を引数として、入力した年齢と一致する人物をリスト内から検索し、該当人物がいれば表示するプログラムを作れ。
自己参照的構造体とは、構造体のメンバの中に自分と同じ型の構造体のポインタ変数を持つ構造体のことである。
単方向連結リスト構造とは、自己参照的構造体で次の要素をポインタを使って一定の方向に辿るデータ構造である。
(読む込むファイルの例)
入力するリストの先頭
1 20 田中
2 40 大田
3 35 井上
7 60 斉藤
4 23 佐藤
(自己参照的構造体)
struct person{
int no,age;
char name[40];
struct person *next;
}
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語:C
[4] 期限: できるだけ早くお願いします。
700:デフォルトの名無しさん
08/06/25 21:36:28
>>699
URLリンク(kansai2channeler.hp.infoseek.co.jp)
701:デフォルトの名無しさん
08/06/25 21:37:40
>>699
URLリンク(kansai2channeler.hp.infoseek.co.jp)
702:デフォルトの名無しさん
08/06/25 21:42:07
>>699
[1]コード品質:模範解答(丸写ししても、独力で同じ品質のコード
書いても提出すると心証悪くします。)
[2]コード
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]普通の C処理系でコンパイルできます。
[4]品質を落としたコードを提出して下さいね。(難しいですけど)
703:デフォルトの名無しさん
08/06/25 21:45:49
>>699
URLリンク(kansai2channeler.hp.infoseek.co.jp)
704:デフォルトの名無しさん
08/06/25 21:47:56
>>700-703
なんでロダあらしてんの?ここのログも。
もうちょっと落ち着こw
705:デフォルトの名無しさん
08/06/25 21:52:02
>>704
>[4] 期限: できるだけ早くお願いします。
じゃね?w
706:デフォルトの名無しさん
08/06/25 21:55:54
>>704
意味が分からんけど >>702 は無関係
707:デフォルトの名無しさん
08/06/25 21:59:38
>>704
ちょこちょこみてるけど>>700-703が同じソースだったので。
消しては次消しては次、と。なんじゃろ?
>>702は無関係なのですか。
708:デフォルトの名無しさん
08/06/25 22:06:50
どなたか>>572お願いします
709:デフォルトの名無しさん
08/06/25 22:10:02
[1] 授業単元: Cプログラミング演習
[2] 問題文(含コード&リンク)
2^nの計算
n=0〜30に対して、2~nを計算して出力する。結果の最大桁数は10進数10桁であるので、
long int型の変数をしようすること。
なお、再帰法を用いてもよい
実行例
2** 0=1
2** 1=2
2** 2=4
・
・
・
2**30=1073741824
[3] 環境
[3.1] OS: (Windows vista)
[3.2] コンパイラ名とバージョン: (visual studio 2005 )
[3.3] 言語: (C言語)
[4] 期限:明日まで
[5] その他の制限: (シンプルなプログラムでお願いします)
710:613
08/06/25 22:15:54
>>637
(>>684)
ありがとーございますっ!
自分もcygwin(windows)でコンパイルして、
それなりに検証しましたが、十分機能しているようです!
あとは自分で一文ずつ動きを見て、内部表現を書き出し、
改良していこうかと思います。
えっと、doubleは64bitの8byteであっていたかと思います。
なんにせよ、ありがとうございました!!
711:デフォルトの名無しさん
08/06/25 22:15:57
>>709
#include <stdio.h>
int main()
{
int i;
long int n = 1;
for (i = 0; i<=30; i++)
{
printf("2** %d=%d\n", i, n);
n *= 2;
}
return 0;
}
712:637
08/06/25 22:18:35
>>710
きれいじゃなくてごめんね。
やったことない内容だったのでこちらも楽しめました。
こちらこそありがとうw
713:デフォルトの名無しさん
08/06/25 22:19:51
>>711
ビットシフトの方がスマート
714:デフォルトの名無しさん
08/06/25 22:22:34
>>713
シンプルなプログラムだから
これでいいのだ
715:デフォルトの名無しさん
08/06/25 22:22:36
>>713
他人にケチつける前にソース書け
716:711
08/06/25 22:23:38
>>713
言うのは勝手だが、せめてパッチぐらいおいてって欲しかった。
9,10c9
< printf("2** %d=%d\n", i, n);
< n *= 2;
---
> printf("2** %d=%d\n", i, 1 << i);
717:デフォルトの名無しさん
08/06/25 22:24:34
>>713
勝手に自分基準でスマートとかぬかしてんじゃねーよw
718:711
08/06/25 22:24:40
ちょw擁護されてたwありがとうwww
719:デフォルトの名無しさん
08/06/25 22:25:31
>>713 の人気にぃ〜〜 shit!
720:709
08/06/25 22:26:55
うお、早いですねw
ありがとうございます。
721:デフォルトの名無しさん
08/06/25 22:28:47
まるで日本語、C言語トランスレータ君だなw
722:636
08/06/25 22:38:06
どなたか636をお願いします。
期限は後日6/26午後3時です。
課題の追加・補足はありません。
723:デフォルトの名無しさん
08/06/25 22:40:05
>>636 暗号文でおk
724:709
08/06/25 22:50:21
すいません、あと2問分からないのがあるので
できればお願いします。
[1] 授業単元: Cプログラミング演習
[2] 問題文(含コード&リンク)
2つの正の整数a,bを入力して、ユークリッドの互除法により最大公約数(GCM)を
求める。ユークリッドの互除法は次の手順により最大公約数を求める方法である。
(1)a,bの大きい方をa、小さい方bとする。
(2)aをbで割った余りをcとする。c=0ならばbが最大公約数となる。
(3)c≠0ならば
a←b
b←c
として、(2)に戻る。
実行例
入力データ:a = 88
b = 256
GCM = 8
[3] 環境
[3.1] OS: (Windows vista)
[3.2] コンパイラ名とバージョン: (visual studio 2005 )
[3.3] 言語: (C言語)
[4] 期限:明日まで
[5] その他の制限: (シンプルなプログラムでお願いします、ポインタなどはまだ使えません)
725:デフォルトの名無しさん
08/06/25 22:52:17
失礼します
(1)階乗を再帰を用いずに表示
という問題なんですが教えてください。
726:デフォルトの名無しさん
08/06/25 22:53:28
printf("階乗");
727:デフォルトの名無しさん
08/06/25 22:55:10
ワロタ
728:636
08/06/25 22:56:16
>>723
いえ、内容は指定の暗号文を復号するプログラムを作成せよです。
課題内容で仕様など不明な箇所があったら言ってください。
729:デフォルトの名無しさん
08/06/25 22:59:16
>>728
ようするに "KOUKA" がどこに隠れてるか探せばいいんですよね?
730:709
08/06/25 23:12:49
もう1問。 すいません、よろしくお願いします。
[1] 授業単元: Cプログラミング演習
[2] 問題文(含コード&リンク)
直角三角形の斜辺の長さをc、ほかの二辺の長さをa、bとしたとき、
a^2 + b^2 = c^2
が成り立つ。これを三平方の定理という。
2以上100以下の整数a,b、cに対して
a^2 + b^2 = c^2
を満たす組(a、b、c)をすべて求める。ただし、a≦b≦cとする。
max(a^2、b^2)≦ a^2+b^2
であるから、aとbの値を先に設定して、cの値をmax(a、b)から1ずつ増やし
a^2 + b^2 = c^2 (解あり)
または
a^2 + b^2 < c^2 (解なし)
となるまで変化させて求めればよい。
なお、cの値を先に設定して、aとbを求める方法もある。
実行例
a=3 b=4 c=5
a=5 b=12 c=13
a=6 b=8 c=10
[3] 環境
[3.1] OS: (Windows vista)
[3.2] コンパイラ名とバージョン: (visual studio 2005 )
[3.3] 言語: (C言語)
[4] 期限:明日まで
[5] その他の制限: (シンプルなプログラムでお願いします、ポインタなどはまだ使えません)
731:デフォルトの名無しさん
08/06/25 23:14:00
>>636
[1]回答レベル:検証済み
[2] コード:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境 Windows/VC7/C およびLinux/gcc4.1.2
[4]コメント
ずらす方向の指定とかローテーションの必要性が明記されていなかったので
解が出た方法だけ。
すごいぞ!東京工科万歳!
732:636
08/06/25 23:14:43
>>729
はい、そうですお願いします。
(例え)
暗号文:huisdfhnauid
アスキーコード1行ずらし:oujafkadmioafa これは×
アスキーコード1行ずらし:KOUKAkiasdfkao これは「KOUKA」が含まれているので複合化成功
この段階でアスキーコードをずらす処理を終了して、複合化結果の「KOUKAkiasdfkao」を表示する。
という題意です。
733:デフォルトの名無しさん
08/06/25 23:17:09
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows vista
[3.2] コンパイラ名とバージョン:CPad for Borland C++Compiler
[3.3] C++
[4] 期限:6/27
[5] その他の制限:始めたばかりですが特に制限はありません。すみません、どうか宜しくお願いします
734:トランスレータ?ないない
08/06/25 23:20:41
>>730
ばかしょうじきに。
#include <stdio.h>
int main()
{
int a, b, c;
for (a = 1; a <= 100; a++)
{
for (b = a; b <= 100; b++)
{
for (c = b; c <= 100; c++)
{
if (a*a + b*b == c*c)
{
printf ("a=%d b=%d c=%d\n", a, b, c);
}
}
}
}
return 0;
}
735:636
08/06/25 23:21:18
>>731
ありがとうございます!!
それにしても動作させてみて笑いました、バレバレですねwww
まさかこんな痛い内容とは思いませんでした。
736:デフォルトの名無しさん
08/06/25 23:23:05
>>636
> 例えば「ABC]という文をアスキーコードを1つ後にずらすと「BCD」となる。
> このずらした数を総当りで探索すればよい。
KOUKA というなら Kが2つあるわけだから、当然ずらす前も
その該当の5文字には同じ文字が1文字目と4文字目にあるわけだが
暗号文:huisdfhnauid
ん〜〜〜・・・、小文字と大文字両方含まれる?
737:731
08/06/25 23:23:56
>>732
その例を見ると俺が作ったの全然ダメかもしれない。
1行ずらしとやらを行うと文字数増えるの?
あと問題付属のソースコードが構文エラーありまくりでした。
>>735
とおもったらこれでいいのかよ!
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4264日前に更新/251 KB
担当:undef