09/03/18 19:19:17
>>396 ん?んんんっ?
401:デフォルトの名無しさん
09/03/18 21:04:01
struct{int hairetu; int rank;} data[10];
rankには0を初期値として入れておいて、dataをhairetuでソートして、
次にrankに0~9をセットして、もう一度、dataをrankでソート。
これは、「バブルソート」という名前。
#include <stdlib.h>
#include <time.h>
int main(void)
{
int hairetsu[10], rank[10], i, j, temp;
srand(time(NULL));
for(i=0; i<10; i++)
rank[i] = i, hairetsu[i] = rand() % 100;
for(i=0; i<9; i++) {
for(j=9; j>i; j--) {
if(hairetsu[j] < hairetsu[j-1]) {
temp = rank[j], rank[j] = rank[j-1], rank[j-1] = temp;
temp = hairetsu[j], hairetsu[j] = hairetsu[j-1], hairetsu[j-1] = temp;
} } }
for(i=0; i<10; i++)
printf("hairetsu[%d] = %2d, rank[%d] = %d\n", rank[i], hairetsu[i], rank[i], i);
return 0;
}
402:デフォルトの名無しさん
09/03/18 21:18:19
stdio.h
同じ値でもrankの中の値が違う
403:392
09/03/18 23:24:12
適当な聞き方をしてしまってすみません。
ただ配列の値がでかい順や小さい順で順位をつけられないかなと思ったので。
ありがとうございました。
404:デフォルトの名無しさん
09/03/18 23:37:12
[1] 授業単元:プログラミング実習
[2] 問題 ガウス・ジョルダン法+ピボット選択法を用いて以下の連立1次方程式を解くプログラムを作成しなさい。
2x+3y+z=4
4x+y-3z=-2
-x+2y+2z=2
[3] 環境
[3.1] OS: (UNIX)
[3.2] : (gcc)
[3.3] 言語: (C)
[4] 期限: ([09年3月19日12:00まで] )
[5] その他の制限: (なし)
よろしくおねがいします。
405:デフォルトの名無しさん
09/03/18 23:50:24
[1] 授業単元: アルゴリズム
[2] 問題文:ハッシュ探索(チェイン法)のプログラムを作成しなさい。
1・データファイル「j2」を読み込みなさい。
2・任意の語彙がいくつ使われているか調べなさい。
3.データの追加、削除、表示ができるようにしなさい。
データはyahooのtopページをテキスト化したものとする。
検索文字列:任意の文字(列)、(例として「配信」など)の使用回数を
調べなさい。
画面の表示例は、
1:表示 2:検索(任意の文字検索&任意の文字の個数) 3:追加 4:削除 5:終了
以上のことをふまえたプログラムをサンプルを変更して作りなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 3月19日夕方まで
[5] その他の制限: ライブラリ関数はサンプル以外使用しない。
406:デフォルトの名無しさん
09/03/18 23:51:43
>>405
サンプルはこれです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
407:デフォルトの名無しさん
09/03/18 23:58:15
よろしくお願いします。
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):タグ名をpricetype,メンバ名をteika,waribikiとする構造体kakakuとタグ名goodstype,
メンバ名をname[30],kakaku(←構造体)とする要素数10個の構造体配列goodsを作成し、商品名と定価を入力すると商品名、
定価、割り引き価格の一覧が表示されるプログラムを作成しなさい。」ただし、割引価格は、定価が1000円以上の場合は
定価の2割引、それ以外は1割引とする。また、表示するときはポインタを使用すること。
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
408:407
09/03/19 00:04:18
すいません環境等書き忘れていましたosはUNIX、コンパイラはgcc期限無期限その他制限なしでお願いします。
409:デフォルトの名無しさん
09/03/19 00:56:43
>>399何を?
410:デフォルトの名無しさん
09/03/19 01:56:56
>>392 >>396への追加。
#include <stdio.h>
#include <time.h>
int main(void)
{
int hairetsu[10], rank[10], index[10], i, j, temp;
srand(time(NULL));
for(i=0; i<10; i++)
rank[i] = i, hairetsu[i] = rand() % 100;
for(i=0; i<9; i++) {
for(j=9; j>i; j--) {
if(hairetsu[rank[j]] < hairetsu[rank[j-1]]) {
temp = rank[j];
rank[j] = rank[j-1];
rank[j-1] = temp;
} } }
for(i=0; i<10; i++) {
printf("hairetsu[%d] = %2d, index[%d] = %d\n", i, hairetsu[i], i, rank[i]);
index[i] = i;
}
for(i=0; i<9; i++) {
for(j=9; j>i; j--) {
if(rank[index[j]] < rank[index[j-1]]) {
temp = index[j];
index[j] = index[j-1];
index[j-1] = temp;
} } }
for(i=0; i<10; i++) printf("rank[%d] = %d\n", i, index[i]);
return 0;
}
411:デフォルトの名無しさん
09/03/19 04:17:31
>>410
人のコードに無駄なもの付け足すなw
for(i=0; i<10; i++) index[rank[i]] = i;
で十分だろうが
412:デフォルトの名無しさん
09/03/19 07:01:36
ありがとうございます。それで、2回もソートする必要ないですね。
やってみます。
413:407
09/03/19 07:59:06
すみません言語c言語で期限は今日のお昼までにお願いします!
414:デフォルトの名無しさん
09/03/19 08:42:42
>>407
#include<stdio.h>
#include<string.h>
#include<math.h>
typedef struct pricetype{int teika, waribiki;}kakaku;
typedef struct goodstype{char name[30];kakaku kakaku;}goods;
int get_waribiki(int price){
return (price>=1000)?round(price*0.8):round(price*0.9);
}
void print_goods(goods *p){
printf("name:%s teika:%d waribiki:%d\n", p->name, p->kakaku.teika, p->kakaku.waribiki);
}
int main(void){
goods goods[10];
int i, price, goods_num;
char buf[30], *p;
for(i=0;i<10;i++){
printf("Input name : ");
if(fgets(buf, sizeof(buf), stdin)==NULL) break;
if((p=strchr(buf, '\n'))) *p='\0';
strcpy(goods[i].name, buf);
input_price:
printf("Input price : ");
if(fgets(buf, sizeof(buf), stdin)==NULL) break;
if(sscanf(buf, "%d", &price)!=1) goto input_price;
goods[i].kakaku.teika=price;
goods[i].kakaku.waribiki=get_waribiki(price);
}
goods_num=i;
for(i=0;i<goods_num;i++) print_goods(goods+i);
return 0;
}
415:デフォルトの名無しさん
09/03/19 09:21:23
#include <stdio.h>
#define N 10
struct goodstype {
char name[30]; /* 商品名 */
struct pricetype {
int teika; /* 定価 */
int waribiki; /* 割り引き価格 */
} kakaku;
} goods[N];
int main(void)
{
int i, num;
struct goodstype *work;
for(i=0; i<N; i++) {
work = &goods[i];
printf("商品名[%d/%d]?",i+1,N); fgets(work->name, 30, stdin);
work->name[strlen(work->name)-1] = '\0';
do {
printf("定価[%d/%d]?",i+1,N); num = scanf("%d", &work->kakaku.teika); getchar();
} while(num == 0);
if(work->kakaku.teika >= 1000)
work->kakaku.waribiki = work->kakaku.teika * (1-0.2);
else
work->kakaku.waribiki = work->kakaku.teika * (1-0.1);
}
printf("商品名,定価,割り引き価格\n");
for(i=0; i<N; i++) {
work = &goods[i];
printf("\"%s\",%d,%d\n",work->name, work->kakaku.teika, work->kakaku.waribiki);
}
return 0;
} >>407
416:407
09/03/19 16:23:45
>>415さんありがとうございます
417:デフォルトの名無しさん
09/03/20 01:16:32
>>405
こうか?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
サンプルにファイルを読む関数がないんだが、「読み込みなさい」とか「調べなさい」は手作業?
探索や削除が間違っとる気がして変えたが、間違ってなかったらマクロを両方とも100に戻しといてくれ。
418:417
09/03/20 01:48:36
ごめん。寝付けん暇つぶしでやっとったら、期限見落としとったorz
419:デフォルトの名無しさん
09/03/20 17:59:26
ネタ投下キボン
420:デフォルトの名無しさん
09/03/20 19:57:17
問題出す方も大変だ。
[1] 授業単元:
[2] 問題文(含コード&リンク): スレリンク(tech板:211番)
【 課題 】
課題1.
以下のような賭をすることを考えます.
1. 開始時の所持金をA円とします.
2. 目標とする金額をB円とします.
3. さいころを投げて偶数の場合は1円を獲得,奇数の場合は1円を失います.
4. 所持金が目標額のB円に到達すれば賭は終了,また所持金が0になった場合は破産で終了とします.
数学的な考察をすると,この賭の期待値はA円となります.つまり,何回もこの賭を続けていると,成功したり破産したりしますが,平均すると元の所持金しか得られないということです.
また,勝ち負けまでに投げるさいころの回数の平均は,(B-A)×Aとなります.
たとえば,開始時の所持金をA=8円,目標額をB=10円とすると,勝つ確率は8割,1ゲームあたり平均すると(10-8)×8=16回,さいころを投げることになります.
このことは,賭をしても儲からない,ことを意味していますね.
このことを確かめるプログラムを作成しなさい.
421:デフォルトの名無しさん
09/03/20 21:02:31
入力した文字に対応するモールス信号を出力するプログラム、お願いします
422:デフォルトの名無しさん
09/03/20 21:12:20
>>1
423:デフォルトの名無しさん
09/03/20 21:14:19
>>421テンプレ嫁
424:デフォルトの名無しさん
09/03/20 21:17:15
読んだけど課題じゃないし書くのめんどくさい
頼んだぜ
425:デフォルトの名無しさん
09/03/20 23:06:55
>>424
・・・---・・・
426:デフォルトの名無しさん
09/03/21 00:39:28
>このことは,賭をしても儲からない,ことを意味していますね.
ダウト。一部の人間が損をし(破産し)、一部の人間が儲かることを意味している。
427:デフォルトの名無しさん
09/03/21 00:46:19
分散と試行回数による
428:デフォルトの名無しさん
09/03/21 00:51:43
問題の問題点を指摘するルートに入ってるw
>問題出す方も大変だ。
本人も問題を出すつもりだったのだから,本望かw
429:デフォルトの名無しさん
09/03/21 00:54:33
>また,勝ち負けまでに投げるさいころの回数の平均は,(B-A)×Aとなります.
マジで?
430:デフォルトの名無しさん
09/03/21 02:21:08
[1] 授業単元:C言語
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1]OS:Win
[3.2] VC 6.0
[3.3]言語:C
[4]期限:3月24日
[5]その他の制限:main関数以外に自作の関数を利用する
どなたかよろしくお願いします。
431:デフォルトの名無しさん
09/03/21 02:39:02
>>430
最高に間抜けだな
432:デフォルトの名無しさん
09/03/21 02:41:04
前スレにあった気がする
433:デフォルトの名無しさん
09/03/21 02:42:14
スレと時刻的に8992だろ?
434:デフォルトの名無しさん
09/03/21 02:57:50
>>430
8992で合ってんなら
URLリンク(kansai2channeler.hp.infoseek.co.jp)
435:デフォルトの名無しさん
09/03/21 03:38:25
>>420
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, j, targetMoney, startMoney, currentMoney;
int totalGame = 10000, totalDice = 0, totalWin = 0;
srand(time(NULL));
printf("所持金を入力してください:");
scanf("%d", &startMoney);
printf("目標額を入力してください:");
scanf("%d", &targetMoney);
for(i=0; i<totalGame; i++) {
for(j=1, currentMoney = startMoney; ; j++) {
if((int)(rand() / (RAND_MAX + 1.0) * 6) & 1 ) currentMoney++;
else currentMoney--;
if(currentMoney == targetMoney) { totalWin++; break; }
if(currentMoney == 0) break;
}
totalDice += j;
}
printf("勝率%.2f%% 平均回数%.2f\n", 100.0 * totalWin / totalGame, (double)totalDice / totalGame);
return 0;
}
436:デフォルトの名無しさん
09/03/21 12:08:02
>>434
すみません、8992です
ありがとうございました
437:デフォルトの名無しさん
09/03/22 02:29:33
[1] 授業単元:基礎演習
[2] 問題文:URLリンク(www.pref.fukushima.jp)
10ページ目の6問目です
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
考えれば考えるほどわからなくなっていましました…
良ければよろしくお願いします。
438:437
09/03/22 02:38:00
437です。
[4]期限:4月1日12:00
[5]その他制限:特になし
改めてお願いします。
439:デフォルトの名無しさん
09/03/22 02:56:56
>>437
URLリンク(kansai2channeler.hp.infoseek.co.jp)
440:デフォルトの名無しさん
09/03/22 02:58:58
あ、printfに\n入れるの忘れてた
441:デフォルトの名無しさん
09/03/22 03:05:55
>>437
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, *data, key, begin, end, mid, i;
while(1){
scanf("%d", &n);
if(n <= 0) break;
data = (int *)malloc(sizeof(int) * n);
for(i = 0; i < n; i++) scanf("%d", &(data[i]));
scanf("%d", &key);
begin = 0; end = n - 1;
for(i = 0; begin <= end; i++){
mid = (begin + end) / 2;
if(data[mid] == key){
i++;
break;
}
if(data[mid] < key) begin = mid + 1;
else end = mid - 1;
}
printf("%d\n", i);
free(data);
}
return 0;
}
442:デフォルトの名無しさん
09/03/22 03:06:27
速いなorz
443:デフォルトの名無しさん
09/03/22 03:11:59
i++を二箇所に書くくらいならi=1からはじめればいいのに。
444:デフォルトの名無しさん
09/03/22 03:23:14
begin > endで抜けることを考えてi++2つとしたが、非常に頭悪いことをしてる気がする。
445:デフォルトの名無しさん
09/03/22 03:53:53
こんなプログラムメンテしたくない。というか、プログラミングのセンスないね、チミ。
446:デフォルトの名無しさん
09/03/22 03:54:54
>>445
先生のセンスをこのスレの奴らに見せ付けてやってください!
447:デフォルトの名無しさん
09/03/22 09:22:37
>>445
うん、ないよ。でも、趣味でしかないし、1人でのんびりやれればいいから
下手の横好きでもいいかなー。
448:デフォルトの名無しさん
09/03/22 10:03:53
>>445
メンテじゃなくて、先輩社員が作ったプログラムを触る仕事しかさせてもらえないんだろ?