C/C++の宿題を片付け ..
327:デフォルトの名無しさん
08/07/01 11:53:20
>>320
URLリンク(kansai2channeler.hp.infoseek.co.jp)
328:デフォルトの名無しさん
08/07/01 11:55:33
>>326
あってるけど、なんか違和感がw
自分ならこんな感じ
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int j;
int pullcard[3] = {-1,-1,-1};
char *s[] = {"S","H","D","C"}, *num[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
srand(time(NULL));
for(int i = 0;i < 3;i++) {
do {
j = rand() % 52;
} while((pullcard[0] == j || pullcard[1] == j));
pullcard[i] = j;
printf("%s%s\n",s[j/13],num[j%13]);
}
}
329:デフォルトの名無しさん
08/07/01 11:58:03
こりゃ・・・やるしかねぇ。
くせぇくせぇ、○ンコの臭いがプソプソしてきそうな
クソースだぜ、○物は消毒だ〜〜
330:デフォルトの名無しさん
08/07/01 12:01:57
>>328
> } while((pullcard[0] == j || pullcard[1] == j));
だからそういうやり方は(ry
これの方が明らかに違和感を感じる人が多いぞw
331:デフォルトの名無しさん
08/07/01 12:07:52
方法としては直感的だが、糞過ぎて違和感があるのは確かだな
332:デフォルトの名無しさん
08/07/01 12:20:14
>>320
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, tmp, card[4][13]={0}, alpha[4] = {'H','S','C','D'};
char *num[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
srand((unsigned)time(NULL));
for(i=0;i<3;i++) {
do {
tmp = rand()%52;
} while(card[tmp/13][tmp%13] == 1);
card[tmp/13][tmp%13] = 1;
printf("%c%s\n", alpha[tmp/13], num[tmp%13]);
}
return 0;
}
333:デフォルトの名無しさん
08/07/01 12:25:14
ケチつける前にソース書けボケ
334:デフォルトの名無しさん
08/07/01 12:27:11
>>320
URLリンク(kansai2channeler.hp.infoseek.co.jp)
335:デフォルトの名無しさん
08/07/01 12:27:48
>>333
ケチつけられて、しかもそれが明らかに糞と指摘された本人乙
336:デフォルトの名無しさん
08/07/01 12:28:46
ここID表示ないから、誰が誰だかわかりにくいよなぁ
337:デフォルトの名無しさん
08/07/01 12:30:12
最終的に選ぶのは質問者だしグダグダ言うなボケ
338:デフォルトの名無しさん
08/07/01 12:34:53
>>333 = >>328 = 他人に感じる違和感は自分の感覚がおかしいと気づかない
視野の狭い井の中の蛙
こういうタイプは、客観的な意見で批判されても、批判する奴を
叩き潰せば自分が正当化される、認められると勘違いして
間違った方向へ向かうタイプ。少なくとも、乱数発生において
重複しないものを求める場合に、すでに出たものと一致しないものを
求め続けるというのは、効率が悪いのは分かりきっている。
限られた範囲内で通用すりゃ良いだろって考えだろうけど、
数を増やせば、その場合そう多くなくても数を増やすと
明らかに時間が掛かる効率が悪い手法だというのは分かりきっている。
とりあえず、そんなコードを書いて野放しにしているようなら
この業界には向いてないよ。今すぐ進路を変更しな。
適性のない進路をとると、人生そのものを無駄にするよ。
選んじゃったから、まぁとりあえず評価が低くても学校さえ
卒業すりゃって考えなのかもしれないが、社会はそんな
甘いものを認めるほど温くはないし、不適切なものを取り込むと
いずれ重大なミスや、他者からのクレーム、あるいは無視されるよ。
339:デフォルトの名無しさん
08/07/01 12:37:19
333は俺で328とは別w
340:デフォルトの名無しさん
08/07/01 12:41:28
>>338
もちろん>>338の文章も他人に違和感を感じていることが発端なわけですよね
色々わかります><
341:デフォルトの名無しさん
08/07/01 12:41:33
ただまあ、この問題の範囲では別に何の問題も無いコードだからな。
線形合同法でknuthも「乱数で最下位ビットなんて大した意味が無いから、それを使うプログラマーが十分注意深ければ最下位ビットの規則性は取り除かなくていい」
とも言ってる。
342:デフォルトの名無しさん
08/07/01 12:42:11
>>337 = >>333
あぁ、出たね、必ず 罵倒レス をしないと気がすまない基地外。
人間性も崩れている終わっている奴か。以後放置よろ。
自分が批判されれば、お前のやれ!みたいな圧力、押し付けをするタイプ。
批判されるのが嫌ならあほな行動をとらなきゃ良いよ。
本当にお前は人間社会を知らなさすぎ。謙虚さがない奴は
絶対に成功しない。間違った方向へ突き進んで、誰も止めてくれないだろうね。
せいぜい冷ややかな目で見る奴がいたら、常にそいつを叩いてろ。
お前の成長するチャンスを潰すだけで終わるから。
343:デフォルトの名無しさん
08/07/01 12:42:21
自己言及のパラドックスとか再帰的定義すると矛盾孕みやすいな
344:デフォルトの名無しさん
08/07/01 12:44:00
シャッフルして最初の3枚を表示させればいい
345:デフォルトの名無しさん
08/07/01 12:45:29
>>342
・道徳主義の誤謬
・多数論証
・脅迫論証
・早まった一般化
・ストローマン
・充填された語
とりあえず詭弁家はどんなに叫んでも詭弁家
346:デフォルトの名無しさん
08/07/01 12:50:00
>>342
お前がスルーできてない
お前も>>337,333をレスしないと気がすまなかったんですねわかります
347:デフォルトの名無しさん
08/07/01 12:52:04
>>344
すると全てのカードが一回はシャッフルされるのに平均52*ln(52)/2 回のスワップが必要だが、
これをしたとして十分ランダムと言えるか?
348:デフォルトの名無しさん
08/07/01 13:08:49
>>347
ランダムかどうかは知らん
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char card[52], *s[] = {"S","H","D","C"}, *num[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
int temp;
int i, j;
srand(time(NULL));
// 初期化
for(i=0; i<52; i++) card[i] = i;
// シャッフル
for (i = 0; i < 52; i++) {
j = rand() % 52;
temp = card[i];
card[i] = card[j];
card[j] = temp;
}
for(i=0; i<52; i++) {
printf("%s%s\n", s[card[i]/13], num[card[i]%13]);
}
return 0;
}
349:デフォルトの名無しさん
08/07/01 13:09:56
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
大きさ10のint型の配列a[10]を宣言し、以下の処理を順に実行するプログラムを書きなさい。
i番目の要素a[i]にiを格納する(iは0〜9)
a[i] = i;
配列要素の内容を出力する
i番目の要素a[i]について、1つ前と2つ前の要素の合計とする。(iは2から)
a[i] = a[i-1] + a[i-2];
配列要素の内容を出力する
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C++
[4] 期限: 7月8日
[5] その他の制限: なし
350:デフォルトの名無しさん
08/07/01 13:21:02
>>329,330,331
ではどのようなソースが最適だと考えているのですか?
351:デフォルトの名無しさん
08/07/01 13:31:57
煽り目的のレスは目障りにしかならん
煽る奴はソース示せ
352:デフォルトの名無しさん
08/07/01 13:39:43
だな
煽りばかりして糞ソースしか書けない奴とか乙
353:デフォルトの名無しさん
08/07/01 13:41:41
パフォーマンス的に一番悪いのが>>328のソースなのは明白なんだがな。
>>348でも>>326でも好きな方を使えばいい。最適かは知らんが
354:デフォルトの名無しさん
08/07/01 13:47:08
>>353
だが、348はあまりお勧めではないな
>>326の方がいいと思うが、質問者が選ぶから
どちらでもいいかもな
355:デフォルトの名無しさん
08/07/01 13:52:42
>>349
#include <iostream>
using namespace std;
void main()
{
int a[10];
for(int i = 0; i < 10; i++){
a[i] = i;
cout << a[i] << endl;
}
for(int i = 2; i < 10; i++){
a[i] = a[i-1] + a[i-2];
}
for(int i = 0; i < 10; i++){
cout << a[i] << endl;
}
}
356:デフォルトの名無しさん
08/07/01 13:56:02
[2] 問題文: このプログラムを「for文」や「do-while文」を追加して、
NMAXの値を変えた数値積分の結果を一遍に調べる事ができるように
改良してください。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows)
[3.3] 言語: (C)
357:デフォルトの名無しさん
08/07/01 14:00:22
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
キーボードから100点満点のテストの点数を入力し(-1で終了)、
10点ごとの人数を int型の配列 count[11]に数えるプログラムを
作成せよ。 テストは100点満点とし、それ以外の入力はエラーとし
て無視する。ただし -1 はデータの終了を表すものとする。 点数の
入力が終了したら、度数分布を画面に出力して終了する。出力は人
数と,*(アスタリスク)によるグラフとする。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語:C++
[4] 期限:
[5] その他の制限:
358:デフォルトの名無しさん
08/07/01 14:29:30
>>357
#include <stdio.h>
void main()
{
int count[11];
int test,cont=0;
for(int i = 0; i < 11; i++){
count[i] = 0;
}
while(1){
scanf("%d",&test);
if(test == -1){
break;
}
else if(test >= 0 && test <= 100){
count[test/10]++;
cont++;
}
}
printf("点数 人数\n");
for(int i = 0; i < 11; i++){
printf("%3d〜%3d %3d\n",i*10,i*10+9,count[i]);
}
}
359:デフォルトの名無しさん
08/07/01 15:06:26
>>326のって、2枚目以降にクローバーのキングが出ることあるの?
360:デフォルトの名無しさん
08/07/01 15:08:38
あ、ごめんよめてなかった。
納得しました。
361:デフォルトの名無しさん
08/07/01 15:48:42
ちっちゃくて固いのがいいとか、おっきいが柔らかいのはダメとかは一概に言えないことだ。
適用されるものとの関係で決まること。乱用することを慎めばそれでよし
362:デフォルトの名無しさん
08/07/01 15:49:12
誰か>>216をお願いします
363:デフォルトの名無しさん
08/07/01 15:58:54
>>315
授業単元ワロタwww
364:デフォルトの名無しさん
08/07/01 16:25:09
>>315
ピラミッドアートてwww
マジバロスwww
365:デフォルトの名無しさん
08/07/01 16:47:46
お前ら笑うなよ、ピラミッドパワーってのはマジですごいんだぜ?
お前らも一度やってみろ?お前らのC言語のプログラミング能力が
数段アップするかもしれないぞ?
366:デフォルトの名無しさん
08/07/01 16:50:14
ピラミッドパワー調べたらすげぇwww
漏れにピラミッドクレw
367:デフォルトの名無しさん
08/07/01 17:08:37
328:小さい。堅い。正しい。早い。
348:正しい。柔らかい。ちょっと遅い
326:ちょっと怪しいがまぁ早い。それなりに柔らかい。
(柔らかい=思い(出し)つき易い)
(堅い=意外に思いつきにくい。)
368:デフォルトの名無しさん
08/07/01 18:13:25
326を怪しいって言うアホがこのスレでなにやってんだw
369:デフォルトの名無しさん
08/07/01 18:17:39
しかも348は正しくないしw
370:デフォルトの名無しさん
08/07/01 18:23:09
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
以下を逆ポーランド記法で答えなさい
char a[] = "3245**+";
関数はスタックのpopとpushを使いなさい
[3] 環境
[3.1] OS: Windowsxp
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:7月6日
[5] その他の制限:関数やポインタなどは習いました
よろしくお願いします
371:デフォルトの名無しさん
08/07/01 18:25:30
良問ダ
372:デフォルトの名無しさん
08/07/01 18:28:47
良門だか○門だか知らんが、ラーメン、イケメン、僕漬け麺ですが何か?
373:デフォルトの名無しさん
08/07/01 18:46:56
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
構造体binarytree_nodeを次のように定義する。
typedef struct binarytree_node{
int value;
struct binarytree_node *ltree,*rtree;
} *binarytree;
このとき、aが本当の木構造である(合流点をもたない)とき1を、
合流点を1つ以上持つ時0を返す関数_Bool t_tree(binarytree a);を定義せよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
〜7/15 18:00
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特になし
よろしくお願いします。
374:デフォルトの名無しさん
08/07/01 18:56:19
[1] 授業単元:情報実験
[2] 問題文(含コード&リンク):
「フィルオミノ」と呼ばれるパズルを解くプログラムを作成せよ。
詳細:URLリンク(kansai2channeler.hp.infoseek.co.jp)
フィルオミノ詳細:URLリンク(www.nikoli.co.jp)
[3] 環境
[3.1] OS: Mac OS X
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:7月9日
[5] その他の制限:特になし
自分で解くには簡単ですが、プログラムにやらせるとなると何をどうしていいやら…
ご助力お願い致します。
375:デフォルトの名無しさん
08/07/01 18:59:26
#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;
}
376:デフォルトの名無しさん
08/07/01 19:02:23
上のプログラムを参考にして下さい。
(1) 継承
上のプログラムで作成したスタックを実現するクラスを継承し,スタックの先頭(最後にpushされたデータ)を返す操作(メンバ関数)を追加したクラスを定義せよ.
新たに定義されたクラスの名称はstack2とする.
(2) 仮想クラスと多相性
cryという操作(メンバ関数)を持つクラスanimalを定義する.
cryは仮想関数(virtual属性をもつ)とする.メンバ変数は不要.
以下のプログラムを用い,animalクラスを継承して,dogクラスとcatクラスを定義せよ.また実行させてその結果をみる.(報告は不要)
dogクラスで関数cryを実装し,文字列"bowwow"を表示させる.
catクラスで関数cryを実装し,文字列"mew"を表示させる.
#include <stdio.h>
class animal{
};
class cat {
};
class dog {
};
void main() {
animal *ap;
cat *cp;
dog *dp;
cp = new cat();
dp = new dog;
ap = (animal *)cp;
ap->cry();
ap = (animal *)dp;
ap->cry();
}
377:デフォルトの名無しさん
08/07/01 19:09:31
[1] 授業単元:OS
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp) 問題文
URLリンク(kansai2channeler.hp.infoseek.co.jp) copy.c
URLリンク(kansai2channeler.hp.infoseek.co.jp) fork.c
URLリンク(kansai2channeler.hp.infoseek.co.jp) sample.c
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7/5
[5] その他の制限: 特にありません
上記3つのプログラムは課題で使用するものです
コンパイルはprompt> gcc copy.c -o copy prompt> gcc fork.c -o fork gcc sample.c -o sample です
宜しくお願いします
378: ◆A9mDCzGw5I
08/07/01 19:15:12
どなたか>>286-287お願いします
379:デフォルトの名無しさん
08/07/01 19:42:05
[1] 授業単元:
[2] 問題文(含コード&リンク):()
下記をグローバル変数を使わず、3つの係数を引数にしたプログラムに書き換えてください。
#include<stdio.h>
#include<math.h>
float a,b,c;
void kai(void)
{
float a1,a2,d;
d=b*b-4.0*a*c;
a1=(-b+sqrt(d))/(2.0*a);
a2=(-b-sqrt(d))/(2.0*a);
printf("解1=%f\n解2=%f\n",a1,a2);
}
int main(void)
{
printf("係数aを入力してください");
scanf("%f",&a);
printf("係数bを入力してください");
scanf("%f",&b);
printf("係数cを入力してください");
scanf("%f",&c);
if(b*b-4.0*a*c>0)kai();
else printf("解はありません\n");
}
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:今日
[5] その他の制限:
380:デフォルトの名無しさん
08/07/01 19:46:21
#include<stdio.h>
#include<math.h>
void kai(float a, float b, float c)
{
float a1,a2,d;
d=b*b-4.0*a*c;
a1=(-b+sqrt(d))/(2.0*a);
a2=(-b-sqrt(d))/(2.0*a);
printf("解1=%f\n解2=%f\n",a1,a2);
}
int main(void)
{
float a,b,c;
printf("係数aを入力してください");
scanf("%f",&a);
printf("係数bを入力してください");
scanf("%f",&b);
printf("係数cを入力してください");
scanf("%f",&c);
if(b*b-4.0*a*c>0)kai(a, b, c);
else printf("解はありません\n");
}
381:デフォルトの名無しさん
08/07/01 19:48:49
書き換えただけ コンパイルも実行もしていない
#include<stdio.h>
#include<math.h>
void kai(float a, float b, float c)
{
float a1,a2,d;
d=b*b-4.0*a*c;
a1=(-b+sqrt(d))/(2.0*a);
a2=(-b-sqrt(d))/(2.0*a);
printf("解1=%f\n解2=%f\n",a1,a2);
}
int main(void)
{
float a,b,c;
printf("係数aを入力してください");
scanf("%f",&a);
printf("係数bを入力してください");
scanf("%f",&b);
printf("係数cを入力してください");
scanf("%f",&c);
if(b*b-4.0*a*c>0)kai(a,b,c);
else printf("解はありません\n");
}
382:デフォルトの名無しさん
08/07/01 19:51:19
>>378
>>288
383:デフォルトの名無しさん
08/07/01 19:54:13
>>382
>>289
384:デフォルトの名無しさん
08/07/01 19:54:30
>>381
>>382
迅速な対応ありがとうございます。
385:デフォルトの名無しさん
08/07/01 19:55:35
安価ミスです。
>>380
>>381
ありがとうございました。スレ汚しすみません。
386:デフォルトの名無しさん
08/07/01 20:33:00
[1] 授業単元: cプログラミング
[2] 問題文(含コード&リンク):20円玉、25円玉を加えた通貨体系(500,100,50,25,20,10,5,1)
で、与えられたおつりの金額に対して貨幣の総数が最小になるように
それぞれの貨幣の枚数を計算するプログラムを作成する
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2008年7月5日24:00まで
[5] その他の制限: for,if,ポインタ、構造体あたりまで
少し前に同じ質問をしたんですが、その他の制限を書くのを忘れ
回答が全然理解できませんでした。
勝手ですがもう一度お願いします
387:デフォルトの名無しさん
08/07/01 20:37:38
分からないならCを勉強するという選択肢が無いのがあれだな。
388: ◆A9mDCzGw5I
08/07/01 20:43:50
>>383
すいません、回帰直線もちょっとわかりません…
ファイル、上げなおしました
[1] 授業単元:Cプログラミング入門
[2] 問題文:elemental.dat(ワードパッドで開けます)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
には
原子番号、元素記号、名前、融点 、電気伝導率、熱伝導率が記されている。
この電気伝導と熱伝導の間には比例関係y=ax+bが見込まれます。
以下の要求にしたがって、この定数a、bを求めるプログラムを作成しなさい。
@全てをmain関数の中で行うことをせず、2つのデータ配列x[N]、y[N]を引数にとり、
a、bを計算する関数linfit(...)を必ず作成しなさい。
Aシェルのリダイレクト入力によりelemental.datを読み込ませる。
element.datの内容
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: [2008年7月10日hh:mmまで]
[5] その他の制限:構造体の代入までやりました。
389:デフォルトの名無しさん
08/07/01 20:44:04
>>386
制限後つけしたら回答得られる率は0に近い
390:デフォルトの名無しさん
08/07/01 20:58:04
>>388
まえに回帰直線もとめるやつのときに上げたやつをその課題用に修正した
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ちなみに
a:5.898959e-06
b:8.068013e+00
プロットしてみたけどそれっぽい値になっているから多分あってるとおもうが
回帰直線わかんなかったらこれみてもなにやってるかまったくわからんだろうから
ちゃんと調べた方がいいですぞ
あと変数名適当だったりデータ領域動的に確保してなかったりするのでその辺は好きなように直して
391:デフォルトの名無しさん
08/07/01 21:16:56
[1] 授業単元: C言語基礎演習
[2] 問題文(含コード&リンク):
n個の文字列を読み込み、読み込んだ文字列を縦に読む
プログラムを作成せよ。
(空白、スペースを含む場合は空白、スペースを飛ばして表示)
但し、”ポインタのポインタ”をどこかに用いてプログラムすること。
「プログラムの動作」
何個の文字列を読み込みますか?:3
1番目の文字列:World
2番目の文字列:Cup
3番目の文字列:Soccer
1列目:WCS
2列目:ouo
3列目:rpc
4列目:lc
5列目:de
6列目:r
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限:7/2 午後5時まで
392:デフォルトの名無しさん
08/07/01 21:21:42
>>391
i=0;
すべてがNULLになるまでループ {
1番目の文字列のi番目を表示
2番目の文字列のi番目を表示
3番目の文字列のi番目を表示
i++;
}
393:デフォルトの名無しさん
08/07/01 21:28:49
>>392
先週の水曜日から考えていて、同じ仕様を考えたのですがプログラムの実装が自分には難しい
なにより「”ポインタのポインタ”をどこかに用いて」が使用するところが思いつかないので
そこを含めて丸投げでお願いしています。
394:デフォルトの名無しさん
08/07/01 21:43:58
>>388
>>390
EXCELで検証した
A=0.000005898958923
B=8.068012926992042
数字は合ってると思う
395:デフォルトの名無しさん
08/07/01 21:50:35
[1] 授業単元: CプログラミングU
[2] 問題文(含コード&リンク):()
URLリンク(kansai2channeler.hp.infoseek.co.jp)
初期盤面の設定はなくてもいいです
問題文中の最善の手というのは一番相手をひっくり返すことのできる手のことです
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限:7月8日まで
[5] その他の制限: 特殊な関数はならってないので使えないです
前回答えてくださった方がいたのですが(URLリンク(kansai2channeler.hp.infoseek.co.jp))
sizeofやatoi関数等をつかうのはまずいとのことです。
もしよかったらそのような関数をつかうことなく作っていただけたら嬉しいです。
作ってもらっておいてあつかましい要求をしているとは思うのですがどなたかお願いします
396:デフォルトの名無しさん
08/07/01 21:52:28
>>391
#include <stdio.h>
#include <stdlib.h>
#define N 5000
void main(){
int n,i,j,k=0;
char **str=NULL;
printf("何個の文字列を読み込みますか?:");
scanf("%d",&n);
str=(char**)malloc(sizeof(char**)*n);
for(i=0;i<n;i++)
{
printf("%d番目の文字列:",i+1);
str[i]=(char*)malloc(sizeof(char*)*N);
scanf("%s",str[i]);
}
for(i=0;;i++)
{
printf("%d列目",i+1);
for(j=0;j<n;j++)
{
if(str[j][i]!=NULL)
printf("%c",str[j][i]);
else
k++;
}
printf("\n");
if(k==n) break;
}
}
文字がnullになった後の処理面倒なんで後よろしく。
397:395
08/07/01 22:04:10
>>395に付け加えなんですが前に作ってもらったものだと
盤面が8×8じゃなくて6×6になってしまうのと自分を先手にすると続行できなくなるのですが
その原因をいくら考えてもわからなかったので教えていただきたいです
398:デフォルトの名無しさん
08/07/01 22:04:46
期限過ぎてしまいましたが、もう一度>>304お願いします…
399:>>391
08/07/01 22:16:15
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char **p;
int *len, max, i, j, n, ch;
printf("何個の文字列を読み込みますか?:");
scanf("%d%*c", &n);
p = (char**)malloc(sizeof(char*)*n);
for(i = 0; i < n; i++){
printf("%d番目の文字列:", i);
p[i] = (char*)malloc(sizeof(char));
for(j = 0; (ch = getchar()) != '\n'; j++){
p[i][j] = ch;
p[i] = (char*)realloc(p[i],sizeof(char)*(j + 2));
}
p[i][j] = '\0';
}
len = (int*)malloc(sizeof(int)*n);
for(i = 0; i < n; i++) len[i] = strlen(p[i]);
max = len[0];
for(i = 1; i < n; i++) if(max < len[i]) max = len[i];
for(i = 0; i < max; i++){
printf("%3d列目", i);
for(j = 0; j < n;j++)
if(i < len[j]) putchar( p[j][i] );
else putchar( ' ' );
putchar( '\n' );
}
for(i = 0; i < n; i++) free( p[i] );
return free(p), free(len), 0;
}
400:デフォルトの名無しさん
08/07/01 22:22:35
>>395
どう考えてもNextTurnがだるいぞ
401:デフォルトの名無しさん
08/07/01 22:22:51
[1] 授業単元:情報技術実験
[2] 問題文(含コード&リンク):
二問あります。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
上については、
n: 5
1 1 1 1 1
1 1 1 2
1 1 3
1 2 2
1 4
2 3
5
total number = 7
といったように途中経過を表示させるように修正する課題です。
下については、8クイーン問題を解決するプログラムで、関数solveを完成させる課題です。
コメントの行数でできるようですが、多少長くなっても構いません。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: C Pad for Borlad
[3.3] 言語: Cのみ
[4] 期限: 2008年7月2日17:00までで、なるべく早いほうがありがたいです。
逆に、遅れてもそれはそれでどうにかなります。
[5] その他の制限:授業ではポインタはやってないです。。
for if whileといった基礎的なものを使う感じです。
よろしくお願いいたします。
402: ◆DuoCt8/SKk
08/07/01 22:26:42
[1] 授業単元:情報処理演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C言語
[4] 期限:7/02 AM 9:00
[5] その他の制限:特になし
わからない場所は問題文に書いてあるので,よろしくお願いします.
403:デフォルトの名無しさん
08/07/01 22:34:31
>>396 >>399
両方ありがとうございます。
しかし、今回は>>399のものを使わせていただきます。
完成していて、ポインタの利用がとても良いので。
404:デフォルトの名無しさん
08/07/01 22:45:36
質問者が回答者の回答を評価するのは何だか一言多いという気がしないでもない。
405:デフォルトの名無しさん
08/07/01 22:47:24
確かに後半余計だな
406: ◆nikSZog9tM
08/07/01 22:50:44
すいません>>401です
酉忘れましたので今つけます
二問のうち一問でもいいのでどうかよろしくお願いします。
407:デフォルトの名無しさん
08/07/01 22:59:56
しかし、今回は>>399のものを使わせていただきます。
完成していて、ポインタの利用がとても良いので。
これを
>>396のものは微妙なので今回は使いませんが、
回答していただきありがとうございました。
こうすれば微妙ブームが再燃するかもしれない
408:デフォルトの名無しさん
08/07/01 23:04:15
その場合「>>396のものry」はいらないってなるw
409:デフォルトの名無しさん
08/07/01 23:08:30
>>402
// 表示だけ
void ShowAll(void)
{
int i, j;
void hogehoge(int*);
putchar(' ');
for(i = 0; i < OX; i++) printf(" %2d", i+1);
printf("\n ┏━┯━┯━┯━┯━┓\n");
for(j = 0; j < OX; j++){
printf("%2d┃", j+1);
for(i = 0; i < OX; i++){
hogehoge( &Data[j][i] );
if(i < OX-1) printf("|");
else printf("┃");
}
if(j < OX-1) printf("\n ┠─┼─┼─┼─┼─┨\n");
else printf("\n ┗━━━━━┛");
}
}
void hogehoge(int *hoge)
{
switch(*hoge){
case 0: printf(" "); break;
case 1: printf("●"); break;
case 2: printf("○"); break;
case 9: printf("※"); break;
default: break;
}
}
410:デフォルトの名無しさん
08/07/01 23:12:47
>>407
効率を下げる試みですか?
411: ◆DuoCt8/SKk
08/07/01 23:14:29
>>409
回答ありがとうございました.
412:390
08/07/01 23:24:01
さて兄弟よ
いまさら気づいたが0除算の可能性をまったく考慮してなかったがどうしようか
1.あきらめる
2.linfit内でエラー吐いてそこで終了
3.a or b に それぞれHUGE_VAL ,mxを返してmainで処理
4.このスレに丸投げ
この問題について言えばエラーにはならんから無視してもいいだろうが...
3番っぽいので書いてみたがあんまり自信がないんだよな
413:デフォルトの名無しさん
08/07/01 23:45:15
>>389
>>386ですが、すみませんでした。
今回は自分で頑張ってみようと思います。またわからない問題があればよらせていただきます
414: ◆cSsNy1w6Kk
08/07/01 23:50:08
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
Shift-JIS形式で保存しています
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7月2日23時
[5] その他の制限: 制限はありません。
よろしくお願いします。
415:325
08/07/01 23:55:01
[1] 授業単元:C言語実習
[2] SJISからJISへの変換処理を作成してます。コード変換処理は出来てます。が変換前後の処理がわかりません。変換コード前後に何かコードを付け加えなければいけないのでしょうか?
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] コンパイラ名とバージョン: (VC2005EX)
[3.3] 言語: (C)
[4] 期限: なるべく早く
[5] unsigned char cSJbuff [256];unsigned char cJbuff [256];unsigned int i = 0;unsigned int iLen = 0;
memset(cSJbuff,0,256);
memset(cJbuff,0,256);
iLen = strlen((const char*)cSJbuff0);
for(i = 0; i<iLen; i+=2){
if(cSJbuff[i] >= 0xE0){
cSJbuff[i]=cSJbuff[i]-0x40;
}
if(cSJbuff[i] >= 0x80){
cSJbuff[i+1]=cSJbuff[i+1]-1;
}
if(cSJbuff[i+1] >= 0x9E){
cSJbuff[i]=(cSJbuff[i+1]-0x70)*2;
cSJbuff[i+1]=(cSJbuff[i+1]-0x70;
}else{
cSJbuff[i]=((cSJbuff[i+1]-0x70)*2)-1;
cSJbuff[i+1]=cSJbuff[i+1]-0x1F;
}
}
memcpy(cJbuff,cSJbuff,iLen);
ここまで出来ています。
416:デフォルトの名無しさん
08/07/01 23:59:47
【質問テンプレ】
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows)
[3.2] Borland C++ Compiler 5.5
[3.3] 言語: C++
[4] 期限: 2008年7月5日23時59分
[5] その他の制限: fgets/fputs/fread/fwrite関数を使用し作成すること
よろしくお願いします。
417:デフォルトの名無しさん
08/07/02 00:39:03
[1] 授業単元:Cプログラミング
[2] 問題文(リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C言語
[4] 期限:2008年7月3日 5:00
何卒よろしくお願いいたします。
418:デフォルトの名無しさん
08/07/02 01:21:46
01乙
419: ◆2bmoujqRHk
08/07/02 01:33:36
>>281
返答ありがとうございます
すいませんがポインタがわからないのでポインタなしのソースを書いてもらえないでしょうか?
420:デフォルトの名無しさん
08/07/02 01:37:35
内容:
[1] 授業単元: 線形システム
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: borland C++ Compiler 5.5
[3.3] 言語: C言語
[4] 期限: 7/2 18時まで
[5] その他の制限:ポインタまで既習です。
本当に困っているので、出来る方いらっしゃいましたらよろしくお願い致します!
421:395
08/07/02 01:40:45
>>400
確かにそうですね。無理な要求してすいませんでした。自分で頑張ってやってみます
>>397に書いてある質問はどなたかわかる人いませんか?
422:デフォルトの名無しさん
08/07/02 02:16:21
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):(URLリンク(pxycms.ict.nitech.ac.jp))
問題文は最後にのっています。
教科書のソースプログラムです
URLリンク(www.ma.is.saga-u.ac.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 2008年07月03日00:00まで
[5] その他の制限: とくになし
台形公式で分割数n=64まで面積を求めるプログラムは自分でやってみたのですが
URLリンク(kansai2channeler.hp.infoseek.co.jp)
そのあとの誤差の推定の方法のところからよくわかりません、
423:デフォルトの名無しさん
08/07/02 02:22:25
>419
知らんけど、こんな感じじゃねーの。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char str[256], enc[] = "dliyuwvrjnsqxatgfzbkcmoehp";int i;
fgets(str, sizeof str, stdin);
for(i=0;str[i]&&str[i]!='\n'; i++) {
if(islower(str[i])) str[i] = enc[str[i]-'a'];
else if(isupper(str[i])) str[i] = 'A' - 'a' + enc[str[i] - 'A'];
}
str[i] = 0;
puts(str);
return 0;
}
424:デフォルトの名無しさん
08/07/02 03:14:20
【質問テンプレ】
[1] 授業単元:C++言語実習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語:C++
[4] 期限:
[5] その他の制限:ソース上部に記載しています
困っています。よろしくおねがいします
425:デフォルトの名無しさん
08/07/02 05:14:29
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
変数の下位16ビット中の1のビット数を数える関数 int bit_count(intx)を作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:visual stdio2005
[3.3] 言語:C++
[4] 期限:出来るだけ早くお願いします。
426:デフォルトの名無しさん
08/07/02 05:17:31
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
変数xの下位16ビットを2進数で表示する関数 void bit_print(intx)を作成せよ。
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン:visualstdio2005
[3.3] 言語:C++
[5]その他制限:よろしくお願いします。
427:デフォルトの名無しさん
08/07/02 05:26:39
int bit_count(int x)
{
int i, cnt;
for(i=cnt=0; i<16; i++) cnt += (x >> i) & 1;
return cnt;
}
void bit_print(int x)
{
int i;
for(i=15; i>=0; i++) printf("%d", (x >> i) & 1);
putchar('\n');
}
428:デフォルトの名無しさん
08/07/02 05:27:14
違った
for(i=15; i>=0; i++) → for(i=15; i>=0; i--)
429:デフォルトの名無しさん
08/07/02 05:40:11
またそれか、おっちょこちょい。だから落ち着いて動作チェックをして
うpロダ使っとけって言われるんだよw
うpロダ使っときゃ、訂正にしても間違ったものを残さず済むだろ。
430:デフォルトの名無しさん
08/07/02 06:05:07
間違えた事実を受け止められずにこそこそ消すようなカスが何言ってんだw
431:デフォルトの名無しさん
08/07/02 06:50:44
>>414
#include <stdio.h>
#include <math.h>
double dist(int x1, int y1, int x2, int y2)
{
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main(void)
{
int i, j, n, *x, *y;
FILE *fp;
if((fp=fopen("dat.txt", "r"))==NULL) return 0;
fscanf(fp, "%d", &n);
x = malloc(sizeof(int)*n);
y = malloc(sizeof(int)*n);
for(i=0; i<n; i++) fscanf(fp, "%d%d", x + i, y + i);
fclose(fp);
for(i=0; i<n; i++) {
for(j=0; j<n; j++) printf("%4.1f ", dist(x[i], y[i], x[j], y[j]));
putchar('\n');
}
free(x);
free(y);
return 0;
}
432:デフォルトの名無しさん
08/07/02 06:52:25
>>417
T
#include <stdio.h>
int main(void)
{
int n, i, a[8];
do {
printf("0〜255の整数を入力:");
scanf("%d", &n);
}while(n<0||255<n);
for(i=0; i<8; i++) {
a[7-i] = n % 2;
n /= 2;
}
for(i=0; i<8; i++) printf("%d", a[i]);
return 0;
}
433:デフォルトの名無しさん
08/07/02 06:53:18
>>417
U
#include <stdio.h>
int main(void)
{
int i, n, a[4], sum, mul;
do {
printf("4桁の整数を入力:");
scanf("%d", &n);
}while(n < 1000 || 9999 < n);
for(i=0; i<4; i++) {
a[3-i] = n % 10;
n /= 10;
}
for(i=0, sum=0; i<3; i++) {
printf("%d+", a[i]);
sum += a[i];
}
printf("%d = %d\n", a[i], a[i] + sum);
for(i=0, mul=1; i<3; i++) {
printf("%d*", a[i]);
mul *= a[i];
}
printf("%d = %d\n", a[i], a[i] * mul);
return 0;
}
434:デフォルトの名無しさん
08/07/02 07:38:39
>>422
問題見られないからユーザ名とパスワード教えろ
435:デフォルトの名無しさん
08/07/02 07:41:01
>>430
言い訳に聞こえてみっともない。最近必死になっている基地外か?
痛すぎ・・・お前、自分が思ったことを言えば言うほど、周りから
馬鹿だと思われて孤立したタイプだろ・・・負けは負け、認めろって言われるぞ。
間違いは間違い、隠すとかじゃなくて、汚いソースをこのスレに
延々と残すのがうざいだけ。それよりも、質問者に対してわざわざレスしてんだろ?
質問者のことなんてどーでも良い、俺はやりたいからやっているだけというにしても
このスレには他にも回答者がいるから、ちったぁ考えろ、低脳。
それから、指摘された通り、間違っても残さずに済むという点以外にも、
わざわざソースの中からここを訂正という面倒な手間も残る。
だったら修正したのを1つのファイルとして提供した方が楽だろ。
頭が悪い馬鹿は、自分のミスさえも相手に都合よく捉えろだの
都合を図れだの威圧するから干されるんだよw
436:デフォルトの名無しさん
08/07/02 07:43:46
>>434
ID、パスワードが必要なサービスにおいて、わざわざ第三者に
勝手に使われるようなことをするわけねーじゃん、JK。
だからお前は発言すればするほど身勝手な馬鹿だって思われてんだよw
437:デフォルトの名無しさん
08/07/02 07:47:12
この罵倒レスをする、新学期から常駐している奴は何歳だ?
何か言われると、何かしら反論というより罵倒してくるな。
しかも、言い訳がみっともない。うpロダ使えといわれて
ギャーギャーガーガー必死にわめいていた奴か?
このスレがかなり前から存在しているが、お前みたいなKYで
幼稚なソースを書く奴が、必ず新学期を境に新しく参入してくるよな。
まぁ、2ちゃん慣れしていないのもバレバレだし、とりあえず
放置よろ>基地外以外のまともな回答者
438:デフォルトの名無しさん
08/07/02 07:53:40
以上、基地外の寝言でした。
439:デフォルトの名無しさん
08/07/02 08:00:17
どなたか>>377お願いします
440:デフォルトの名無しさん
08/07/02 08:08:09
キチ外は一人だが、彼が噛み付く相手は彼の脳内では一人だが実際には一人じゃないって現実。
441:デフォルトの名無しさん
08/07/02 08:20:18
>>299
保存しようとしたらもう見れないorz
442:デフォルトの名無しさん
08/07/02 08:25:57
>>441
>>302
他人のコードの猿真似だけどなw
443:デフォルトの名無しさん
08/07/02 08:30:55
>>374お願いします
せめて方針だけでも…
444:デフォルトの名無しさん
08/07/02 09:32:29
>>425
お願いします
445:デフォルトの名無しさん
08/07/02 09:39:18
どなたか>>373についてお願い致します。
446:デフォルトの名無しさん
08/07/02 09:41:45
>>318
お願いします
447:デフォルトの名無しさん
08/07/02 10:16:33
>>425
>>444
#include <stdio.h>
int bit_count(int);
void main()
{
int a;
scanf("%d",&a);
a = bit_count(a);
printf("%d",a);
}
int bit_count(int x)
{
int count=0;
for(int i = 0; i < 16; i++){
if(x & (1 << i)){
count++;
}
}
return count;
}
448:ちゃんぷる
08/07/02 10:32:31
次のようにキーボードから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)
参考
各位の数を求めるには,剰余を用いたり,整数同士の割り算が切り捨てになることを利用するとよい.
ヒット数やホームラン数を数えるやり方は以下を参考にすること. int hits; /* ヒット数を数えるための変数を用意する */
...
hits = 0; /* 変数を0に初期化しておく */
/* if 文を用いて ヒットを満たすような条件を考え,もしこの条件を満たすならば */
hits = hits + 1; /* ヒットのカウントを1つ増やしてやる. */
/* 第6回目で習うが,hits++; (インクリメント演算子と呼ぶ)としても良い. */
449:デフォルトの名無しさん
08/07/02 10:32:57
>>395
うわ、致命的なバグ残しててすまんです。
NextTurn()呼び出す二重ループ前にlist = NULL; が抜けてるのが原因です。
/* 次に置ける場所を調べる */
memcpy(board, game_board, sizeof(board));
list = NULL; // ←これが抜けてる
for(y = 0; y < OX; y++){
それとマス数変更は#define OX のとこの数字を変えて下さいな。
ところでポインタやsizeof等使わない方は駄目だったのかな?
うpした後見直してないから分からんけど、不具合ありました?
450:デフォルトの名無しさん
08/07/02 10:44:52
>>448
#include <stdio.h>
int main(void)
{
int i, j, homerun = 0, hits = 0, value1, value2, v1[4], v2[4];
printf("Input the 1st value > ");
scanf("%d", &value1);
printf("Input the 2nd value > ");
scanf("%d", &value2);
for(i=0; i<4; i++) {
v1[i] = value1 % 10;
v2[i] = value2 % 10;
value1 /= 10;
value2 /= 10;
}
for(i=0; i<4; i++) {
for(j=0; j<4; j++) {
if(v1[i] == v2[j]) {
if(i==j) homerun++;
else hits++;
}
}
}
printf("%d hit(s) %d home run(s)\n", hits, homerun);
return 0;
}
451:デフォルトの名無しさん
08/07/02 10:57:39
>>449
いろいろありがとうございますすいません
sizeofやポインタ使ってないファイルうpしていただいたのに貰いわすれてしまいました
どのファイルか教えていただけませんか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5399日前に更新/196 KB
担当:undef