1 :
デフォルトの名無しさん :
2005/05/11(水) 15:59:44 printf("%s\n","あんたの宿題片づけます");
――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか
[5] その他の制限:
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【歴代スレは
>>2-13 】
6 :
985 :2005/05/11(水) 16:10:56
1さんお疲れ様でした。 前スレ埋まってしまったのでもう一度質問します 【質問テンプレ】 [1] 授業単元: プログラミング演習 [2] 問題文: kg→gの変換プログラムを作る。 xkgのxをキーボードから入力すると xkgはyyyygです。 と答えるプログラムを作成しなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:明日まで [5] その他の制限: まだ授業始まったばかりなので演算を習ったところです。 初歩的な質問ですいませんが、よろしくお願いします。
>>6 int main(int argc, char* argv[])
{
printf( "kg→gの変換プログラムを作る。\n" );
printf( "xkgのxをキーボードから入力すると\n" );
printf( "\n" );
printf( "xkgはyyyygです。\n" );
printf( "\n" );
return ( 0 );
}
>>6 #include<stdio.h>
int main(){
int x;
scanf("%d",&x);
printf("%dkgは%dgです。\n",x,x*1024);
return 0;
}
//要修正。
10 :
985 :2005/05/11(水) 16:28:22
>>7 ,8
早速のお返事ありがとうございます。
問題文わかりにくくてすいません。
後で早速試してみますね。
どうもありがとうございました。
>>1 自分好みのスレタイに変えてんじゃねーよバカ
こうかな? #include<stdio.h> int main(void) { char buf[256]; double x; while(printf("重さを入力してください:"), fgets(buf, sizeof(buf), stdin) != NULL) if(sscanf(buf, "%lf", &x) == 1) break; printf("%.0lf kg は %.0lf gです。\n", x, x * 1000.0); return 0; }
>>11 1代目を見てみろ
好きに変えたのはぼるじょあの方だ
[1] 授業単元:C 言語 [2] 問題文(含コード&リンク): プログラムの実行が初めてであれば,その旨のメッセージを表示し,実行が2 回目以降であれば,1回前に実行したときの日付と時刻と「気分」を表示する プログラムを作成せよ.すなわち,前回の時刻を表示した後に「feeling:」と 入力を促して,キーボードから文字列を読み込んで,ファイルに書き込む. 例えば,「good」と入力した場合,次回に実行したときには, 「9999-99-99-99:99:99 good」と表示すること. [3] 環境 [3.1] OS:iMac [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限 :無期限 [5] その他の制限: よろしくお願いします。
15 :
デフォルトの名無しさん :2005/05/11(水) 16:56:59
あげ忘れ
16 :
デフォルトの名無しさん :2005/05/11(水) 16:59:57
乱数を初期化した後で、x=rnd(1)とするとどんな数をでたらめに発生させてxに代入するのですか?
17 :
デフォルトの名無しさん :2005/05/11(水) 17:01:13
お願いします。 [1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): 静的記憶域期間が与えられたオブ ジェクトのアドレスを表示するプログラム を作成せよ. [3] 環境 [3.1] OS:windows xp [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限 :2005/05/13 [5] その他の制限:なし
18 :
デフォルトの名無しさん :2005/05/11(水) 17:10:20
[1] 授業単元:基礎プログラミング [2] 問題文(含コード&リンク): Rnd()やIntを用いて1以上12以下の整数を乱数として発生させ 1が出たらA、2が出たらBみたいなプログラムを作る。VBコードを示せ [3] 環境 [3.1] OS: 98 [3.2] コンパイラ(バージョン): [3.3] 言語: [4] 期限:明日まで[5] その他の制限: お願いしますです
>>14 #include <stdio.h>
#include <string.h>
#include <time.h>
#define DATE_FILE "date.txt"
int main(void)
{
char buf[256], *p = "プログラムの実行が初めてです。";
time_t t;
struct tm *tm;
FILE *fp = fopen(DATE_FILE, "r");
if(fp)
{
fgets(buf, sizeof(buf), fp);
fclose(fp);
p = buf;
}
puts(p);
printf("feeling:");
fgets(buf, sizeof(buf), stdin);
p = strchr(buf, '\n'); if(p) *p = '\0';
time(&t); tm = localtime(&t);
fp = fopen(DATE_FILE, "w");
if(fp)
{
fprintf(fp, "%04d-%02d-%02d-%02d:%02d:%02d %s", tm->tm_year + 1900, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, buf);
fclose(fp);
}
else
printf("ファイル %s が書き込み用に開けません。\n", DATE_FILE);
return 0;
}
>>17 #include <stdio.h>
int main(void)
{
static int i;
printf("%p\n", &i);
return 0;
}
>>18 Option Explicit
Sub Main()
Dim I As Integer, C As String
Randomize
I = Int(Rnd * 12) + 1
C = Chr(Asc("A") + I - 1)
MsgBox C
End Sub
24 :
デフォルトの名無しさん :2005/05/11(水) 17:29:00
>>20 >printf("ファイル %s が書き込み用に開けません。\n", DATE_FILE);
fprintf(stderr, "ファイル " DATE_FILE " が書き込み用に開けません。\n");
1] 授業単元:プログラミング技術 [2] 問題文:最初に総人数、その後n人目の点数を入力し、 そのデータを並び替えて降順および昇順で表示するプログラムを作成しなさい [3] 環境 [3.1] OS WindosXP [3.2] コンパイラ(バージョン): [3.3] 言語:C/C++ [4] 期限:6月11日 [5] その他の制限:
27 :
デフォルトの名無しさん :2005/05/11(水) 18:19:31
>>26 > [4] 期限:6月11日
一月後でいいのか。
>>26 #include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int GeSizeT(const char *itemname, size_t max) {
char buf[256]; size_t i;
for(; ; ) {
printf("%sを入力してください: ", itemname);
fgets(buf, sizeof(buf), stdin);
if(sscanf(buf, "%u", &i) == 1 && i <= max) break;
puts("エラーです。");
}
return i;
}
int cmp_asc(const void *elem1, const void *elem2) { return *(int *)elem1 - *(int *)elem2; }
int cmp_desc(const void *elem1, const void *elem2) { return *(int *)elem2 - *(int *)elem1; }
int main(void) {
char buf[256];
size_t i, sw, num = GeSizeT("総人数", (size_t)-1);
size_t *scores = malloc(sizeof(int) * num);
if(!scores) { fputs("メモリが足りません。\n", stderr); return -1; }
for(i = 0; i < num; i++) {
sprintf(buf, "%u 人目の点数", i + 1);
scores[i] = GeSizeT(buf, 100);
}
sw = GeSizeT("昇順に表示するなら 0 を、降順なら 1 ", 1);
qsort(scores, num, sizeof(size_t), sw? cmp_desc: cmp_asc);
for(i = 0; i < num; i++)
printf("%u: %u\n", i + 1, scores[i]);
free(scores);
return 0;
}
30 :
>>26 :2005/05/11(水) 18:51:29
間違えましたorz 5月です…すいません
31 :
29 :2005/05/11(水) 18:58:17
#include <limits.h> 要らなかった ○| ̄|_
32 :
デフォルトの名無しさん :2005/05/11(水) 19:26:34
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): プログラムの実行が初めてであれば,その旨のメッセージを表示し,実行が2 回目以降であれば, 1回前に実行したときの日付と時刻と「気分」を表示するプ ログラムを作成せよ. 日付・時刻を struct tm型の値として,直接バイナリに 読み書きすること. [3] 環境 [3.1] OS win xp [3.2] コンパイラ(バージョン): [3.3] 言語:C言語 [4] 期限 :なし [5] その他の制限:
33 :
デフォルトの名無しさん :2005/05/11(水) 20:20:14
[1] 授業単元:C [2] 問題文(含コード&リンク): 要素型がdouble型で要素数が10 である配列の全要素の値を読み書きするプログ ラムを作成せよ. [3] 環境 [3.1] OS:win xp [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限 :無期限 [5] その他の制限:
どういう風に読み書きしたらいいのだろうか・・・
35 :
33 :2005/05/11(水) 20:31:55
>>33 任意に読み書きできる、という意味だと思います。
36 :
33 :2005/05/11(水) 20:32:28
>>34 任意に読み書きできる、という意味だと思います。
前スレが埋まったのでもう一度… [1] 授業単元:プログラミング [2] 問題文 英文をファイル入力で読み込み、7文字以上の英単語は大文字に変換して標準出力せよ。 なお、入力にはfscanfを、出力にはprintfを用いること。 [3] 環境 [3.1] OS:winxp [3.2] コンパイラ(バージョン):gcc [3.3] 言語C 期限 今週末 例えば、 This problem is inportant. という英文が書かれたファイルを読み込んだときに This PROBLEM is INPORTANT. という風に変換して標準出力したいのです。 よろしくお願いします。
>>37 #include<ctype.h>の中にint toupper(int c)とint tolower(int c)って関数がある。
前者は小文字を大文字に、後者は大文字を小文字にする。
>>32 >14 と似ているな
#include <stdio.h>
#include <string.h>
#include <time.h>
#define DATE_FILE "date.txt"
int main(void)
{
char buf[256] = { 0 }, *p;
time_t t;
FILE *fp = fopen(DATE_FILE, "r");
if(fp) {
struct tm tm;
fread(&tm, sizeof(struct tm), 1, fp); fgets(buf, sizeof(buf), fp);
fclose(fp);
printf("%04d-%02d-%02d-%02d:%02d:%02d %s\n", tm.tm_year + 1900, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, buf);
}
else
puts("プログラムの実行が初めてです。");
printf("feeling:");
fgets(buf, sizeof(buf), stdin);
p = strchr(buf, '\n'); if(p) *p = '\0';
fp = fopen(DATE_FILE, "w");
if(fp) {
struct tm *tm; time(&t); tm = localtime(&t);
fwrite(tm, sizeof(struct tm), 1, fp); fputs(buf, fp);
fclose(fp);
}
else
printf("ファイル %s が書き込み用に開けません。\n", DATE_FILE);
return 0;
}
40 :
39 :2005/05/11(水) 21:27:57
ちなみに 「struct tm型の値として,直接バイナリに」 は本来やっちゃいけないこと。 出題したやつ祭れ。
41 :
デフォルトの名無しさん :2005/05/11(水) 21:35:46
[1] 授業単元:データ構造 [2] 問題文(含コード&リンク): 以下のメンバーを持つ構造体"player"をC言語で宣言せよ. ・背番号 ・名前 そして、「赤星(53),藤本(9),シーツ(4),金本(6),今岡(7)」 の5名の名前と背番号をC言語で静的に宣言せよ. [3] 環境 [3.1] OS:linux [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C [4] 期限 :明日12日 [5] その他の制限: タイガース初心者ですが、よろしくお願いします。
>>33 期待通りの動作かは知らないが要件は一応満たしてるぞ
#include <stdio.h>
#define VALUES_FILE "values.dat"
#define VALUES_NUM 10
void Input(const char *itemname, const char *format, void *data) {
char buf[256];
for(; ; ) {
printf("%sを入力してください: ", itemname);
clearerr(stdin); *buf = '\0'; fgets(buf, sizeof(buf), stdin);
if(sscanf(buf, format, data) == 1) break;
puts("エラーです。");
}
}
int GetSizeT(const char *itemname) { size_t i; Input(itemname, "%u", &i); return i; }
double GetDouble(const char *itemname) { double d; Input(itemname, "%lf", &d); return d; }
int main(void)
{
double values[VALUES_NUM];
int i;
FILE *fp = fopen(VALUES_FILE, "r");
if(fp) { fread(values, sizeof(values), 1, fp); fclose(fp); }
else for(i = 0; i < VALUES_NUM; i++) values[i] = 0.0;
for(; ; ) {
for(i = 0; i < VALUES_NUM; i++) printf("%d: %f\n", i, values[i]);
while((i = GetSizeT("書き換える数値の番号")) >= VALUES_NUM) puts("エラーです。");;
values[i] = GetDouble("置き換える値");
fp = fopen(VALUES_FILE, "w");
if(fp) { fwrite(values, sizeof(values), 1, fp); fclose(fp); }
else fprintf(stderr, "ファイル " VALUES_FILE " が書き込み用に開けません。\n");
}
return 0;
}
>>41 typedef struct _player {
unsigned int jersey_number;
const char* name;
} player;
static player players[] = {
{ 4, "シーツ" },
{ 6, "金本" },
{ 7, "今岡" },
{ 8, "山本浩二" },
{ 9, "藤本" },
{ 53, "赤星" }
};
>>37 一応動くけど、fscanf() じゃ改行みんな消えちゃうよ。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define ENGLISH_FILE "english.txt"
#define BORDER 7
int main() {
char buf[256];
FILE *fp = fopen(ENGLISH_FILE, "r");
if(!fp) { fprintf(stderr, "ファイル " ENGLISH_FILE " が読み込み用に開けません。\n"); return -1; }
while(fscanf(fp, "%s", buf) != EOF) {
if(strlen(buf) > BORDER) {
char *p = buf;
while(*p) {*p = toupper(*p); p++; }
}
printf("%s ", buf);
}
fclose(fp);
getchar();
return 0;
}
45 :
44 :2005/05/11(水) 22:06:53
ここ間違いだった。 > if(strlen(buf) > BORDER) { if(strlen(buf) >= BORDER) {
>>33 申し訳ないが、任意に読み書きできるという仕様は成立しないのです。
もっと具体的な動作を示す必要があります。
>直接バイナリに」 は本来やっちゃいけない はあ? なんで?
>>47 あんたが具体的な動作を日本語で示しなさい。
>>49 じゃ、「何もしないで終了するプログラム」ということで
******* 終了 ********:
>>44 ありがとうございます。
でも、この場合最後の単語が
xxxxxx.
と、ドットを伴っているとドットもアルファベットと認識されてしまうので
XXXXXX.
という風に6文字の英単語でも大文字に変換されてしまうのですが、どうしたらよいでしょうか?
52 :
デフォルトの名無しさん :2005/05/12(木) 00:47:46
[1] 授業単元: プログラミングとその応用 [2] 問題文(含コード&リンク): 1以上の整数kに関して、kのkより小さい約数の合計がkに等しい時、 kを完全数という。整数nを入力して、1以上n以下の完全数を全て求めるプログラムを作成せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C/C++/どちらでも可 のいずれか :C [4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか :来週まで [5] その他の制限: 初心者向けのプログラムでお願いします。 条件分岐習いたてレベルで。
>51 : while(fscanf(fp, "%s", buf) != EOF) { char *p; int cnt=0; for(p=buf; *p; ++p) if(isalpha(*p)) ++cnt; else break; if(cnt >= BORDER) for(p=buf; *p; ++p) if(isalpha(*p)) *p=toupper(*p); printf("%s ", buf); } 改行みんな消えちゃうね
>>52 #include<stdio.h>
int is_perfect_number(unsigned int n) {
unsigned int i, sum = 0;
for (i = 1; i < n; i++)
if (n / i * i == n)
sum += i;
return n == sum;
}
int main(void) {
unsigned int i, n;
printf("input n:");
scanf("%u", &n);
for (i = 1; i < n; i++)
if (is_perfect_number(i))
printf("%d is a perfect number.\n", i);
return 0;
}
>53 abcdef.abcdef → abcdef.abcdef abcdefg.abcdefg → ABCDEFG.ABCDEFG これでいいの?
56 :
デフォルトの名無しさん :2005/05/12(木) 01:37:15
>>52 #include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char inbuf[256], outbuf[1024], tmp[256];
int i, j, k, sum;
fputs("1以上の整数を入力 > ", stdout);
k = atoi(fgets(inbuf, sizeof(inbuf), stdin));
for(i = 1; i <= k; i++)
{
sum = 0; outbuf[0] = '\0';
sprintf(outbuf, "%d ( ", i);
for(j = 1; j < i; j++)
{
if( i % j == 0 )
{
sum += j;
sprintf(tmp, "%d ", j);
strcat(outbuf, tmp);
if( sum > i ) break;
}
}
if( sum == i ) printf("%s)\n", outbuf );
}
return 0;
}
57 :
54 :2005/05/12(木) 01:40:15
>>52 剰余演算子を忘れてた…恥ずかしい。
ということで、一部修正。
int is_perfect_number(unsigned int n) {
unsigned int i, sum = 0;
for (i = 1; i < n; i++)
if (n % i == 0)
sum += i;
return n == sum;
}
58 :
デフォルトの名無しさん :2005/05/12(木) 01:43:42
>> fputs("1以上の整数を入力 > ", stdout); 最近f系関数がはやってるけど、これは素直にputsにしても良いともう。 以上、チラシの裏からお伝えしました。
puts は改行しちゃうからだめ
60 :
デフォルトの名無しさん :2005/05/12(木) 02:01:16
[1] 授業単元: プログラム基礎 [2] 問題文(含コード&リンク): VBコードを記述して四則演算を行うプログラムを作成せよ。 VBコードのみも記述せよ [3] 環境 [3.1] OS: 98 [3.2] コンパイラ(バージョン): [3.3] 言語:C/C++/どちらでも可 のいずれか [4] 期限:今日 [5] その他の制限:
>>58 行頭プロンプトを表示したいんだろ。
puts() では改行してしまう。
[1] 授業単元:応用プログラミング
[2] 問題文(含コード&リンク):
英文が書かれたファイルを読み込み、ある条件の下に暗号文を作る。
その条件とは
・アルファベットは2つ後のアルファベットに変換する(例:a→c、test→vguv)
・アルファベット以外の文字(記号や漢字など)が書かれていた場合はそのままにする。
・ファイルはfscanfで読み込み、出力はfprintfまたはprintfで行う。
[3] 環境
[3.1] OS:winXP
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限: 5月13日
一応、標準入力→標準出力は不完全ながらできました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/378.txt よろしくお願いします。
>>64 漢字ってのはShiftJIS前提でいいのか?
>>64 漢字には対応してない。
#include <stdio.h>
#include <ctype.h>
static const char *fin_name = "data.txt", *fout_name = "result.txt";
int shift_char(int c) {
if (isupper(c)) return (c - 'A' + 2) % ('Z' - 'A' + 1) + 'A';
else if (islower(c)) return (c - 'a' + 2) % ('z' - 'a' + 1) + 'a';
else return c;
}
int main(void) {
char c;
FILE *fin, *fout;
if ((fin = fopen(fin_name, "r")) == NULL) {
printf("Can't open %s.\n", fin_name);
return 1;
}
else if ((fout = fopen(fout_name, "w")) == NULL){
fclose(fin);
printf("Can't open %s.\n", fout_name);
return 1;
}
while (fscanf(fin, "%c", &c) != EOF)
fprintf(fout, "%c", shift_char(c));
fclose(fout);
fclose(fin);
return 0;
}
%cで読むのか、苦しすぎw fscanfのしばりはきついね
68 :
66 :2005/05/12(木) 05:03:17
>>67 他のconversion specifiersも考えてみたけど、どうしてもwhite spacesの
考慮が難しくなるから諦めた。
69 :
41 :2005/05/12(木) 12:31:36
[1] 授業単元:データ構造 [2] 問題文(含コード&リンク): 以下のメンバーを持つ構造体"player"をC言語で宣言せよ. ・背番号 ・名前 そして、「赤星(53),藤本(9),シーツ(4),金本(6),今岡(7)」 の5名の名前と背番号をC言語で静的に宣言せよ. [3] 環境 [3.1] OS:linux [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C [4] 期限 :後1時間後 [5] その他の制限: タイガース初心者ですが、よろしくお願いします。 これを答えてもらったのですが、続きがありました。 (2)背番号を入力すると線形探索により名前を出力するプログラムをC言語で実装せよ. お願いします。 答え、サンクスです。
>>64 漢字には対応してない
#include <stdio.h>
int main(void)
{
FILE *fp = fopen(__FILE__, "r");
if (fp == NULL) {
fprintf(stderr, "can't open %s\n", __FILE__);
return 1;
}
for (;;) {
char ch[2];
if (fscanf(fp, "%1[a-xA-X]", ch) == 1) {
printf("%c", ch[0] + 2);
} else if (fscanf(fp, "%1[yzYZ]", ch) == 1) {
printf("%c", ch[0] - 24);
} else if (fscanf(fp, "%c", ch) == 1) {
printf("%c", ch[0]);
} else
break;
}
fclose(fp);
return 0;
}
71 :
デフォルトの名無しさん :2005/05/12(木) 17:49:41
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): int86x、int86を用いて、マシン内のHDDの容量を取得、表示しなさい [3] 環境 [3.1] OS: WIN系 [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:2005年05月13日12:00 [5] その他の制限:拡張INT13Hの有無等も含め、容量を正しく表示すること HDDの台数は最大4台と想定する。 シリアルATAやSCSIには対応できなくても良い。 誰か助けて下さいorz
74 :
71 :2005/05/12(木) 17:55:55
>>72 コンパイラはTurboC++1.01です。
>>73 駄目ですか…申し訳ない
76 :
71 :2005/05/12(木) 18:11:37
>>75 いろいろサイト探したのですが、ここは初めて見ました。
助かります。有難う御座いました。
>>69 俺は
>>43 ではないが、引用。
#include <stdio.h>
typedef struct _player {
unsigned int jersey_number;
const char* name;
} player;
static player players[] = {
{ 4, "シーツ" },
{ 6, "金本" },
{ 7, "今岡" },
{ 8, "山本浩二" },
{ 9, "藤本" },
{ 53, "赤星" }
};
int main(void) {
int num, i, pos = -1;
printf("背番号:");
scanf("%d", &num);
for (i = 0; i < sizeof(players) / sizeof(players[0]); i++)
if (players[i].jersey_number == num) {
pos = i;
break;
}
if (pos != -1)
printf("背番号%d:%s", num, players[i].name);
else
printf("背番号%dは見つかりませんでした", num);
return 0;
}
79 :
デフォルトの名無しさん :2005/05/12(木) 18:23:08
1から100までの数字を出力して、10行ごとに次の行に行きたいのですが、 100を出力した時には次の行にいかない処理にしたいのですが、 次のコードを書くと100を出力した時に次の行にいってしまいます。 これを100を出力した時に次の行にはどうやっていかないようにすればいいとですか? #include <stdio.h> int main(){int n;for (n = 1; n <=100; n++){printf("%4d", n);if (!(n % 10)) printf("\n");}return 0;}
>>79 #include <stdio.h>
int main(void) {
int n;
for (n = 1; n <= 100; n++)
{
if (n != 1 && n % 10 == 1) printf("\n");
printf("%4d", n);
}
return 0;
}
81 :
80 :2005/05/12(木) 19:03:51
>>79 やり直し
#include <stdio.h>
int main(void) {
int n;
for (n = 1; n <= 100; n++)
{
if (n % 10 == 1 && n != 1) printf("\n");
printf("%4d", n);
}
return 0;
}
>>79 #include <stdio.h>
int main(){int n;for (n = 1; n <=100; n++){printf("%4d", n);if (!(n % 10) %% n % 100) printf("\n");}return 0;}
83 :
82 :2005/05/12(木) 19:14:02
ミスった、訂正。 #include <stdio.h> int main(){int n;for (n = 1; n <=100; n++){printf("%4d", n);if (!(n % 10) && n % 100) printf("\n");}return 0;}
84 :
デフォルトの名無しさん :2005/05/12(木) 19:52:20
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): キーボードから実数を読み込み、その最大値MAXと最小値minを求める。 いくつかのデータを入力した後、Ctrl+Zを押してデータの入力を終わらせる ようにすること。また、必ず入力した数値もすべて出力すること。 配列は使わない。 [3] 環境 [3.1] OS:WINXP [3.2] コンパイラ(バージョン):VisualC++6.0 [3.3] 言語:C [4] 期限:5月12日22時まで [5] その他の制限: printf("data ?"); scanf("%f", &num); printf("data No. %d = %f\n", i++, num); min = num; max = num; と while (printf("data ? "), scanf("%f", &num)!=EOF){ printf("data No. %d = %f\n", i++, num); if(何か入れる) min = 何か入れる; else if(何か入れる) max = 何か入れる; } を使うそうです
フルスクラッチで作らせてくれない問題は詰まらん。 何の発展性もない。
( ´,_ゝ`)プッ だれもお前にタノンデネーヨ すっこんでろ
87 :
84 :2005/05/12(木) 20:20:30
自己解決しました。
88 :
デフォルトの名無しさん :2005/05/12(木) 20:42:26
常駐プログラムを作りたいから教えて。 WinMainで作成して、Windowは非表示でOK? 常駐トレイにはどうやって表示させる? 俺のでよかったら貸してやるから教えろよ
90 :
デフォルトの名無しさん :2005/05/12(木) 21:03:38
【質問テンプレ】
[1] Win32API
[2] 常駐プログラムを作りたいから教えて
詳しくは
>>88 [3] 環境
[3.1] OS: WinXP PRO
[3.2] コンパイラ(バージョン): VC++6.0
[3.3] 言語:C
[4] 期限:無期限
[5] その他の制限: 失礼しましたorz
>>88 おまいはどういうプログラムを常駐プログラムと定義するのか。
そこから書け。そしてテンプレ使え。
92 :
デフォルトの名無しさん :2005/05/12(木) 21:13:42
>>91 外的因子なしに終了するプログラムこそが正しいから。
>>90 タスクトレイに追加するにはShell_NotifyIcon()を使う。
ウィンドウは非表示にするか(ShowWindow()でSW_HIDE)、CreateWindowEx()で
hWndParentにHWND_MESSAGEを指定してメッセージ専用ウィンドウにする。
94 :
93 :2005/05/12(木) 21:17:10
96 :
88、90 :2005/05/12(木) 21:20:00
>>91 タスクトレイに常駐するタスク
>>92 ごもっともです。右クリックでメニューを付けようかと思う。
>>93 ありがとう!調べてみる!
97 :
デフォルトの名無しさん :2005/05/12(木) 21:26:37
>>95 ∞ループしちゃってるじゃん。そんなの正しいプログラムじゃないよ。
98 :
デフォルトの名無しさん :2005/05/12(木) 21:27:27
e-wordは間違いだらけな辞書だね。
【質問テンプレ】 [1] 授業単元: C実務入門(新人教育) [2] 問題文(含コード&リンク): n個の外部から入力された数値の、合計を計算して表示せよ。 一番最初に入力された値は、 nを示し、これから入力される値の個数 を意味する。(つまり、実際の入力する個数はn + 1個である) 2番目に入力する値、 すなわち加算する数値の最初には、加算する値 がまだ入力されていないため、 0を加算するものと考えてプログラム を作る。 3番目以降の入力は、前回の計算結果を足して表示する。 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ(バージョン): VC++6.0 [3.3] 言語:C [4] 期限:今日中 [5] その他の制限: -を記入するとエラーで暴走してしまいます。 これを直すのはどうすれば良いのでしょうか?
100 :
99 :2005/05/12(木) 21:30:00
#include <stdio.h> int main(void) { float n=0; float no=0; short kazu=0; float ans=0; puts("計算する回数を入力してください" ); scanf("%d", &kazu); while(n < kazu) { puts("計算する数字を入力してください" ); scanf("%d", &no); n ++; ans += no; } printf("%d回計算しました。",kazu); printf("計算結果は%dです。",ans); return(0); }
>>99 "%d"は整数型(intなど)。floatなら"%f"
>>99 新人教育をカンニングされると、後々評価が狂ってお互いのためにならないからできれば担当者に質問してくれ。
それと、scanf()の使い方が間違っている。fgets()とsscanf()(もしくはatoi()かatof())を組み合わせるのが常道。
>>101 そう言う大誤解を書かないでくれ。%dが使えるのはintのみだ。その他の型には使えない。
( ゚д゚) …
%hdでshortだったっけ。(scanf)
106 :
99 :2005/05/12(木) 22:38:23
>>103 教材として使っている会社にある本には整数の場合%dとなっていたの
ですが、使い方が違っているということですか?
後、scanfは2箇所とも、fgets()で書くのが正解ということですか?
連投スマソ
scanfは希望の入力が無いとバッファそのままにするから 簡単にループするぞ
そこでgetsですよ
>>106 %dはint型を受ける。つまり整数型。
floatは、単精度浮動小数点型だ。整数型じゃない。
そしておまいはなぜ「回数」を表現するのに
浮動小数点数を使う?普通は整数使うだろ。
入力にはバッファオーバフロー等のセキュリティ上の問題を
防止するためにもfgets()とstrtod()を使うのが定石。
110 :
103 :2005/05/12(木) 22:59:49
>>99 だからぁ、会社の担当者に聞けってば。
scanf()使えなんて言わないとは思うが、もし言うようならそれに従うべきだし。
で、整数といっても、intではなくてshortを使っているじゃないか。shortの場合は>105だ。
>>108 面白がって変なもん薦めるな。
111 :
103 :2005/05/12(木) 23:01:25
>>109 兄ちゃん兄ちゃん、回数であるkazuはshortですぜ。
もうちっとコードよく見てや。
#女性だったらゴメン。
>>99 書き換えてみた。
#include <stdio.h>
int main(void) {
double i, d, ans = 0;
int n;
printf("計算する回数を入力してください:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("計算する数字を入力してください:");
scanf("%lf", &d);
ans += d;
}
printf("%d回計算しました。\n計算結果は%fです。", n, ans);
return 0;
}
113 :
84 :2005/05/13(金) 01:44:38
>>87 おめーは誰だYO(・3・)
誰か解いてください
>>84 #include <stdio.h>
int main( void )
{
double num, min, max;
int i = 0;
while (printf("data ? "), scanf("%lf", &num)!=EOF){
printf("data No. %d = %lf\n", i++, num);
if( i == 1 ){
min = num;
max = num;
}
else{
min = (min>num ? num : min ) ;
max = (max<num ? num : max ) ;
}
}
if( i > 0 )
printf( "min = %lf max = %lf\n", min, max );
return 0;
}
116 :
84 :2005/05/13(金) 02:40:37
117 :
デフォルトの名無しさん :2005/05/13(金) 06:27:12
【質問テンプレ】
[1] 授業単元: Data Structure
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/379.txt [3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン): MSVC++
[3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:
問題文
//accumulator classを使用。
//(a)6つの数字をインプットして、平均をアウトプット。
//(b)10のaccumulatorbjectsのvectorを宣言。
//vector<accumulator<int> > count(10);
//100万のランダム数(範囲0から9)を作る。
//それぞれの値に対して、count[value]をincrementする。
//vector countにおいて、それぞれのelementの値をアウトプットする。
途中まで自分でやったのですが、
vector<accumulator<int> > count(10);の扱いがわかりません。
【質問テンプレ】 [1] 授業単元: C実習 [2] 問題文(含コード&リンク): 200人分の児童の、国語、算数、理科、社会の4科目に関するテストの結果が存 在する。そこで、 「平均を求める関数を作成し、それを用いて各科目の平均を求めて表示せよ」[3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ(バージョン): VC++ [3.3] 言語: [4] 期限:15時迄 [5] その他の制限:・作成する関数の定義は、次のようにする。 double mean(int a[], int size); ・テスト結果の表は、出題者からファイルを提供する。 ・ファイルをプログラムに読み込ませるには、リダイレクトと呼ばれる方法を 用いる
119 :
42代目 962の友人 :2005/05/13(金) 12:50:01
解答ありがとうございました。助かりました。 それで… 新たな条件として分割コンパイルしてくださいと言われました。(-_-;) 分割コンパイルすると、変数をどう渡したらいいのか分からないのです。 2度も聞くのは失礼だと思ったのですが… 助けてください。m(_ _)m 【質問テンプレ】 [1] 授業単元: C言語応用 [2] 問題文(含コード&リンク): ファイルnumber.datから0~255の自然数Nと0~255の自然数kを読み取り (number.datにはNとkの間に半角スペース1個間隔開けたものが 縦に列挙されているものとする) Nをk組以下の自然数の平方和で表現可能か、 また表現可能ならばその平方和の表現の仕方および何通りあるかを 出力するプログラムを作成せよ。 (ex) N=25,k=3 (5,0,0) (4,3,0) N=25,k=3,ans=2 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C/C++/どちらでも可 のいずれか:C [4] 期限:出来るだけ早めにお願いします。m(_ _)m [5] その他の制限:3つのファイルに分割すること。 (ファイルからの読み取り部・計算部・出力部)
あ、それと、namespace stdには同名のSTL用アルゴリズム accumulatorが あり、関数のオーバーロードで解決されているが、一応注意。
>>121 標準にあるのはstd::accumulate。
それから、型と関数名の間にオーバーロードは働かない。(関数名が優先され、classなどのキーワードをつけると型扱い)
123 :
118 :2005/05/13(金) 14:24:22
言語はCです。遅レスごめんなさい
>>122 あーボケてました。スマソ。何書いてたんだろ。
>>121 は無かった事にして
下さい。(/ω\)ハズカシーィ
>>118 >(5,0,0)
0って自然数だったんだ
>>126 それは集合論での考え方
0を自然数と考えるか考えないかの議論は数学板行き
>>125 すいません^^; 0というのはあくまでも数合わせのためです。
25 = 5^{2} というふうに解釈してください。(-_-;)
k個以下ということを表現したかったのですが、
逆効果になってしまい申し訳ありません。m(__)m
130 :
デフォルトの名無しさん :2005/05/13(金) 23:03:50
宿題 チン☆⌒ 凵\(\・∀・) まだぁ?
131 :
デフォルトの名無しさん :2005/05/13(金) 23:16:06
[1] 授業単元: 演習 [2] 問題文(含コード&リンク): 「引数prefixで与えられる括弧つきの 前置記法の式を後置記法に変換し、引数postfixが示すキューに格納する関数 を作成せよ」という問題でプロトタイプ宣言が void getexp(char *prefix,strut queue *postfix); となっているとなっているのです。char *prefixはメイン関数の前置記法の式を代入するこ とは分かっているんですけどstrut queue *postfixはいったいどういう意味な のでしょうか?postfixのままポインタとして使えないし、それ以前にメイン 関数でポインタを作成して代入しなきゃならないのか? [3] 環境 [3.1] OS: Linux [3.2] コンパイラ(バージョン): 分からない [3.3] 言語:C [4] 期限:できれば早く
133 :
デフォルトの名無しさん :2005/05/13(金) 23:23:23
134 :
デフォルトの名無しさん :2005/05/13(金) 23:26:51
別に面白くない
【質問テンプレ】 [1] 授業単元: C実務入門 [2] 問題文(含コード&リンク): 200人分の、国語、算数、理科、社会の4科目に関するテストの結果が存 在する。平均を求める関数を作成し、それを用いて各科目の平均を求めて表示せよ [3] 環境 [3.1] OS: Win2KPro [3.2] コンパイラ(バージョン): VC6.0 [3.3] 言語:C [4] 期限:5/14 12:00迄 [5] その他の制限:取り込みはfgets()使用。scanf()使用禁止。 関数定義:double mean(int a[], int size); テスト結果の表は、1行が1人分データをあらわし、次のように各科目の点数が TABで区切られている。 国語 算数 理科 社会 出力データの表示形式は自由。 (ここまで出来た。) (次のレスに続く
136 :
135 :2005/05/13(金) 23:40:34
#include <stdio.h> #define MAX_NUM 200//人数200 #define STR_BUFSIZE 20//文字列受信用バッファサイズ #define KAMOKU 4//科目数(4) double mean(int a[], int size); double ave[KAMOKU]; long sum[KAMOKU]; int main(void) { int a[KAMOKU][MAX_NUM]; char str[STR_BUFSIZE]; char num[STR_BUFSIZE]; short i = 0; fgets( str, STR_BUFSIZE, stdin); printf ("%s\n", str); for(i = 0; i >= num; i++) while( (fgets( str, STR_BUFSIZE, stdin)) && (i < MAX_NUM)) { i++; num = a; } printf("** %d人分の平均点**\n", MAX_NUM); printf ("%s\n", str); return 0; }
137 :
デフォルトの名無しさん :2005/05/13(金) 23:58:54
>>127 はsscanf()使ってるからだめなのか?
atoiでも使うしかないか。めんどい。
>>137 sscanf()とやったら、それじゃあなくてfgetsでやってくれと言われたので
改良してみたのですが・・・
(やり方は136で良いらしい)
動かなくなってしまいまして・・・
よろしくお願いします
>>138 >sscanf()とやったら、それじゃあなくてfgetsでやってくれと言われたので
fgets()したからこそのsscanf()だと思うが?
scanf()で駄目と言うのであれば分からん事はないが…
>>138 fgets()で得られるのはあくまでもchar型の配列データだから、それを
数字に変換しないと計算できない(無理とは言わないが、普通はしない)。
で、char型の配列データを数字に変換するには大抵atoi()、atof()、sscanf()
などを使うわけであるが、sscanf()が禁止らしいので、atoi()を使う事になる。
但し、ポインタを知っていなければならず、見た目も汚くなるぞ。
>>131 >strut queue *postfixはいったいどういう意味な
のでしょうか?
構造体 queue のポインタという意味です。
関数getexp内で変数postfixは構造体queueのポインタ
として使用できます。なお呼び出し元から渡されている
ものはアドレスだけなので、実体は呼び出し元で定義さ
れいてる必要があります。
>>postfixのままポインタとして使えないし、それ以前にメイン
関数でポインタを作成して代入しなきゃならないのか?
関数getexpを呼ぶ側では構造体queueのアドレスを指定する
必要があります。
(例)
struct queue post, *pt;
char pre[1000];
....
getexp( pre, &post );
または
pt = ⪯
getexp( pre, pt );
てな感じ。
ポインタがまだ理解できていないようですね。
ポインタ変数に格納できるのは”ポインタ”ではなくて
”アドレス”です。
”アドレス”は"&"演算子を使って取得することができます。
がんがれ
143 :
デフォルトの名無しさん :2005/05/14(土) 11:54:16
キーボードから入力される100個の整数のうち、 2桁の数がいくつあるかを数えて、その個数を表示する。 こんな問題があったのですが、さっぱり分かりません。 どなたか実際にプログラムを書いて教えてもらえませんか?
>>143 #include <stdio.h>
int main(int argc, char *argv[])
{
int tmp, num;
num = 0;
for(int i = 0; i < 5; i++)
{
scanf("%d", &tmp);
if(10 <= tmp && tmp <= 99)
{
num++;
}
}
printf("num = %d\n", num);
return 0;
}
すまん for(int i = 0; i < 5; i++)じゃなくて for(int i = 0; i < 100; i++)だった
146 :
143 :2005/05/14(土) 12:24:56
エラーが7個、警告が1個出てくるんですが・・・
148 :
143 :2005/05/14(土) 12:32:12
Z:\プログラミング実習\レポート\レポート4.c(8) : error C2143: 構文エラー : ';' が 'type' の前に必要です。 Z:\プログラミング実習\レポート\レポート4.c(8) : error C2143: 構文エラー : ';' が 'type' の前に必要です。 Z:\プログラミング実習\レポート\レポート4.c(8) : error C2143: 構文エラー : ')' が 'type' の前に必要です。 Z:\プログラミング実習\レポート\レポート4.c(8) : error C2143: 構文エラー : ';' が 'type' の前に必要です。 Z:\プログラミング実習\レポート\レポート4.c(8) : error C2065: 'i' : 定義されていない識別子です。 Z:\プログラミング実習\レポート\レポート4.c(8) : warning C4552: '<' : 演算子にプログラム上の作用がありません。作用を持つ演算子を使用してください Z:\プログラミング実習\レポート\レポート4.c(8) : error C2059: 構文エラー : ')' Z:\プログラミング実習\レポート\レポート4.c(9) : error C2143: 構文エラー : ';' が '{' の前に必要です。
for(int i = 0; i < 5; i++) ↓ int i; for ( i = 0; i < 100; ++i )
150 :
144 :2005/05/14(土) 12:45:18
全部Cで書いたつもりだったのに...orz VCTKだとコンパイル通っちまって気づかなかった。
151 :
143 :2005/05/14(土) 12:52:10
ありがとうございました! これに少し手を加えたらできるようになりました
[1] 授業単元: 実習 [2] 問題文(含コード&リンク): 文字列strの中に、文字cが含まれていれば (複数ある場合は、最も先頭側とする)、 その文字へのポインタを返し、含まれてなければNULLを返す関数 char *str_chr(const char *str, int c) を作成せよ。 [3] 環境 [3.1] OS: win2000Pro [3.2] コンパイラ(バージョン): Visual C++ (Ver7.1) [3.3] 言語:C++ [4] 期限:5月15日 [5] その他の制限: 文字列strと文字cへの入力は標準入力により行う。 よろしくお願いします。
>>152 #include <iostream>
#include <cstring>
#include <string>
char * str_chr(const char * str, int c) { return std::strchr(str, c);}
int main()
{
std::string s;
char c;
std::cout << "文字列>";
std::cin >> s;
std::cout << "文字";
std::cin >> c;
std::cout << str_chr(s.c_str(), c) << endl;
}
154 :
152 :2005/05/14(土) 16:03:09
>>153 ごめんなさい!C++じゃなくてCでした・・・
ホントすいません。
C言語で書いてくれる方いらっしゃらないでしょうか・・・
Cってconst使えたっけ?
c89以降ならね
>>154 #include <stdio.h>
#include <string.h>
char * str_chr(const char * str, int c)
{
for (; *str != '\0' && *str != c; str++)
;
return *str == '\0' ? NULL : (char*)str;
}
int main(void)
{
char str[256];
char ch;
char *ptr;
printf("文字列>");
scanf("%255s", str);
scanf("%*[^\n]");
printf("文字>");
scanf(" %c", &ch);
ptr = str_chr(str, ch);
printf("%s\n", ptr ? ptr : "(null)");
return 0;
}
とりあえず書いてみたが、初心者が書いたコードだからあんまり信用するなよ。 char *str_chr(const char *str, int c) { unsigned int i; for(i = 0; i < strlen(str); i++) { if(str[i] == c) { return &str[i]; } } return NULL; }
159 :
152 :2005/05/14(土) 16:57:21
>>153 >>157 >>158 ありがとう!かなり参考になりました。
どうやら基本的な間違いで
関数でのreturnにおいて(char*)を付けていなかった為に動かなかったようです。
constの扱いに慣れないとダメですね。
どうもありがとうございました。
>>152 #include <string.h>
char*str_chr(const char*str, int c){return strchr(str,c);}
char* str_chr(char* str,char c){ while((*str) != '\0' && (*str) != c) { str++; } if( (*str)==c){ return str; }else{ return NULL; } }
char *str_char(const char *str,char c) { return *str?*str-c?str_char(str+1,c):(char*)str:NULL; }
#define str_chr strchr
>>164 不可能。
標準入力には文字数の制限があるから。
そんなのあったっけ?
制限があるのはシェルだろう。リダイレクトでやれば制限ない。
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) キーボードから全て小文字の文字列を入力し、 その文字列の先頭の文字を 大文字に変更して表示するプログラムを作成せよ。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ(バージョン):分かりません・・・ [3.3] 言語:C++ [4] 期限:2005年05月17日まで プログラミング始めたばっかりでさっぱり分かりません。 よろしくお願いします。
↑に追加です。申し訳ありません。 注釈に 「ASCIIコード表を見て、大文字と小文字のコード番号の規則性に 注目すると、上位バイトが2バイト違うだけである」 と書いてありました。
やっつけ #include <iostream> #include <string> using namespace std; int main(int argc, char* argv[]) { char str[32 + 1]; cin >> str; cout << char(toupper(str[0])) << &(str[1]) << endl; return 0; }
[1] 授業単元:C++実務 [2] 問題文(含コード&リンク) 50名分の4科目のテストの結果が存在する。 「ヒストグラムを求める関数を作成し、それを用いて各科目ごとのヒストグラムを求めて表示せよ」 今回求めるヒストグラムは、次のとおりである。 0 ~ 10ある科目が 0点~10点だった人の人数 11 ~ 20ある科目が11点~20点だった人の人数 21 ~ 30... 31 ~ 40 41 ~ 50 51 ~ 60 61 ~ 70 71 ~ 80 81 ~ 90 91 ~ 100ある科目が91点~100点だった人の人数
173 :
172 :2005/05/15(日) 19:50:22
[3] 環境 [3.1] OS: WinXP [3.2] コンパイラ(バージョン):VC++6.0 [3.3] 言語:C [4] 期限:5月15日中 [5] その他の制限:sscanf()・scanf()使用禁止。入力はfgets()のみ使用。 作成する関数の定義は、次のようにする。 int histgram1(int points[], int nchild, int low, int high); points:各児童の、ある科目に関する点数が入って いる配列。 nchild:児童の人数。 low:点数の範囲の最小値 high:点数の範囲の最大値 返り値はintで、lowとhighで指定された範囲の点数を取っている児童 の人数である。 ・main()とhistgram1()は別々のファイルに作成する。 (分割コンパイルの練習)
>>172-173 [1] 授業単元:C++実務 なのに [3.3] 言語:C なのか。
それはいいとして、「50名分の4科目のテストの結果」 はどこから入力する?
プログラミングの知識が乏しいので、不備があるかもしれません。 以下の2問が分かりません。助力を願いたいです。どなたか宜しくお願いします。 [1] 授業単元:プログラミング基礎 [2] 問題文1: 変数a、b、cの値が、三角形の3辺の長さとして正しいかどうか判定する条件式を書け。 三角形のどの2辺の和も残りの1辺より小さくないという性質を用いること。 問題文2: n人分(n>10、最初に入力データで指定する)の試験の点数(0点以上100点以下)を入力し A、B、C、Dの成績評価を行うプログラムを作り実行せよ。 (D:0点~59点 C:60点~69点 B:70点~79点 A:80点~100点) プログラムはif…else if文を用いて表現すること。 範囲外の数字に対してはエラーの表示を行うこと。 [3] 環境 [3.1] OS:XP [3.2] コンパイラ(バージョン):分かりません [3.3] 言語:C [4] 期限:明日(5月16日)の正午まで [5] その他の制限: 授業で習った範囲(if,switch,do,while,for,配列)を使ってお願いします。
>>175 解1
if(a>0&&b>0&&c>0&&a<b+c&&b<c+a&&c<a+b)
178 :
172 :2005/05/15(日) 22:03:29
自己解決できました。
179 :
172 :2005/05/15(日) 22:21:23
取り込みは、別ファイルからの入力です。 (今出題者に聞いてみたらそう言ってました) 自分では別コンパイルとか調べてみたけど判らなかったのでよろしくお願いします
180 :
デフォルトの名無しさん :2005/05/15(日) 22:47:43
>>179 /* main.c */
#include "sub.h"
int main(void)
{
sub();
return 0;
}
/* sub.h */
void sub(void);
/* sub.c */
#include <stdio.h>
#include "sub.h"
void sub(void)
{
printf("sub\n");
}
cl /c main.c
cl /c sub.c
cl main.obj sub.obj
...こんな感じだろーか。
181 :
179 :2005/05/15(日) 23:05:10
ありがとうございました。
>>182 60行:for(i=0;i=num-1;i++){
i<=num-1か、i<num-1の間違いか?
84行:60行でnum-1を代入しているので、直前のi=0が無視されている
185 :
182 :2005/05/15(日) 23:19:25
186 :
デフォルトの名無しさん :2005/05/15(日) 23:36:39
授業 C言語必須2単位 OS ウィンドウズxp 改行までが空白なら削除するプログラムをつくりたいのですが うまくいきません。途中までつくったのですが・・・ どなたかご教授お願いします。 int hyozi(char string_check[SIZE]) { int n; int status = OK; for(n = 0; string_check[n] == '\n';n++) { if(string_check[0] == '\n') return NG; else if(string_check[n] == ' ') status = NG; else return OK; } return(status); }
187 :
デフォルトの名無しさん :2005/05/15(日) 23:38:32
[1] 授業単元: プログラミング論 [2] 問題文(含コード&リンク): 次のプログラムを2つのファイルに分割して実行できるようにせよ。 (複数モジュールにしろ) [3] 環境 [3.1] OS:WinXP [3.2] コンパイラ(バージョン): [3.3] 言語:C/C++/どちらでも可 [4] 期限:2005年5月16日の朝
188 :
187 :2005/05/15(日) 23:38:58
#include<stdio.h> #include<process.h> /*例題11-1:法王の名前 */ static int count; main() { int generation; for(;;) { printf("\n>何代目ですか? "); scanf("%d",&generation); count = 0; if ( generation==0 ) exit(1); pope(generation); printf("\n関数popeは%d回呼ばれました。",count); } }/* End of main */ pope(n) int n; { count++; if ( n==1 ) printf("ヨハネ "); else if ( n==2 ) printf("パウロ "); else pope(n-2),pope(n-1); }/* End of pope */
189 :
デフォルトの名無しさん :2005/05/15(日) 23:49:18
>2つのファイルに分割して実行 何一店の? a.exeファイルとdllファイルの2つにする b.分割コンパイルの話? (ほにゃらら.c と ちょめちょめ.c の2つに分割) c.ヘッダファイルとソースに分割? (ぺけぺけ.h と ほげほげ.c の2つに分割) どれかなのか?あるいは別のなにかなのか?
190 :
187 :2005/05/15(日) 23:50:23
分割コンパイルの話です。
191 :
187 :2005/05/15(日) 23:53:23
「~.c」「****.c」をつくり、実行する際には、個々にコンパイルして オブジェクトファイルを作成し、最後にリンカで実行可能プログラムにするらしいです。 とりあえず、「~.c」「****.c」ができれば良いのですが・・・。
192 :
デフォルトの名無しさん :2005/05/15(日) 23:55:13
>改行までが空白なら削除するプログラム 意味が不明だが、 string_checkが改行までが空白なら NG を返す。 string_checkが改行までに空白以外の文字があるなら OK を返す、という int hyozi(char *string_check) を作ればよいのか? int hyozi(char *string_check) { while(*string_check==' ') ++string_check; if(*string_check!='\n') return NG; return OK; }
194 :
デフォルトの名無しさん :2005/05/15(日) 23:58:11
>187 countをpope()の引数に追加してはダメ? グローバル変数を使わなければならないのか?
195 :
187 :2005/05/16(月) 00:03:49
>>194 すみません。知識不足の為、質問の内容が分かりません。
しかし自分なりに書き直してよいと書いてありました。
>187 >194 おそらくグローバルでないとダメなんだろう -----[main.c]----- : /* static int count; */ int count; main() { int generation; for(;;) { printf("\n>何代目ですか? "); scanf("%d",&generation); count = 0; if ( generation==0 ) exit(1); pope(generation); printf("\n関数popeは%d回呼ばれました。",count); } }/* End of main */ ----- -----[sub.c]----- : /* static int count; */ extern int count; pope(n) int n; { count++; if ( n==1 ) printf("ヨハネ "); else if ( n==2 ) printf("パウロ "); else pope(n-2),pope(n-1); }/* End of pope */ -----
>>187-188 /* main.c */
#include <stdio.h>
int count = 0;
main()
{
/* 元のmain関数をそのまま使用 */
}
/* pope.c */
#include <stdio.h>
extern int count;
pope(n)
int n;
{
/* 元のpope関数をそのまま使用 */
}
よろしくお願いします [1] 授業単元:C言語 [2] 問題文(含コード&リンク):「基数ソート法」により int 型配列をソートするプログラムを作成せよ [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:2005/5/19 [5] その他の制限: * プログラムは,標準入力から任意個の整数を受け取り,ソートして出力する. * プログラムは,コマンドライン引数において基数のビット数 k が指定された場合, 2^k 進数の基数ソートを行うものとする.指定のない場合は,16 進数の基数ソートを行うこと. 例: 2^6 = 64 進数の基数ソートを実行する % ./radix_sort 6 * ソートを行う関数名は radix_sort とする. o 引数は,整数配列 array と要素数 num と基数のビット数 radix_bits とする. o 戻り値はなし * プログラムは,コマンドライン引数においてデバッグ用のオプション -d が指定された場合, ソートの経過を標準エラー出力に出力すること
199 :
187 :2005/05/16(月) 00:31:44
>>196-197 お2人様ありがとうございます
かなり複雑に考えてしまいました・・・
externとか変なところにつけていましたし・・・
ぜひ参考にさせていただきます
[1] 授業単元:ポインタ [2] 問題文(含コード&リンク): 1.a="sample",b="program"の文字列をポインタ変数を使って結合し、配列moji[14]に入れる(a,bはポインタ変数) 2.一次元配列a[8]="sample",b[8]="program"の文字列をポインタ変数を使って入れ替える [3] 環境 [3.1] OS:NT [3.2] コンパイラ(バージョン):95か98 [3.3] 言語:C [4] 明日(今日) [5] その他の制限: よろしくおねがいします。
>[3.2] コンパイラ(バージョン):95か98 ハァ?
>>200 共通
void Strcpy ( char *a, char *b ) {
while ( ( *a = *b ) != '\0' ) a++, b++ ; }
void Strcat ( char *a, char *b ) {
while ( *a != '\0' ) a++ ;
Strcpy ( a, b ) ; }
1
char *a="sample" ;
char *b="program" ;
char moji[14] ;
Strcpy(moji,a) ;
Strcat(moji,b) ;
2
char a[8]="sample" ;
char b[8]="program" ;
char c[8] ;
Strcpy ( c, a ) ;
Strcpy ( a, b ) ;
Strcpy ( b, c ) ;
204 :
デフォルトの名無しさん :2005/05/16(月) 02:41:39
試験の成績、合計の高い順に並び替える。 明日中にお願いします C++です。 int i,j,temp; int na[A][B]={1,17,43,30}; /*番号1番の学生 数学 理科 英語*/ int nb[A][B]={2,38,39,55}; /*2番*/ int nc[A][B]={3,100,86,58}; /*3番*/ int nd[A][B]={4,95,88,63}; /*4番*/ int ne[A][B]={5,23,52,72}; /*5番*/ int nf[A][B]={6,62,49,58}; /*6番*/ int ng[A][B]={7,77,80,84}; /*7番*/ int nh[A][B]={8,45,25,62}; /*8番*/ int ni[A][B]={9,69,73,48}; /*9番*/ int nj[A][B]={10,81,77,95}; /*10番*/ int nk[A][B]={11,83,64,55}; /*11番*/ int nl[A][B]={12,51,47,47}; /*12番*/ int nm[A][B]={13,42,62,85}; /*13番*/ int nn[A][B]={14,36,50,64]; /*14番*/ int no[A][B]={15,60,76,38}; /*15番*/
>>204 配列として間違ってるし、添字ではなくn*みたいな形式で
書かれている場合にスマートなソートのプログラムは
書けない。
208 :
183 :2005/05/16(月) 07:04:52
210 :
175 :2005/05/16(月) 09:20:33
>>177 解答をありがとうございました。感謝します。
問題文2ですが、自分でも挑戦してるのですが中々うまくいきません。
どなたか大まかなヒントでも頂けないでしょうか?
>>175 if(point>100 && point<0){/* エラー処理 */}
else if(point<60){/* 評価D */}
else if(point<70){/* 評価C */}
else if(point<80){/* 評価B */}
else {/* 評価A */}
point>100 && point<0 じゃない point>100 || point<0 だorz
214 :
210 :2005/05/16(月) 10:23:56
>>212 解答ありがとうございます。
しかしサッパリ理解できませんでした (;´Д`)
完璧に動作するだけに勿体無い…
せっかく作成して頂いて申し訳ないですが、もうちょい自分で頑張ってみます。
>>214 自分で 「大まかなヒントでも」 と言ってるのに 211 はスルーかよ
216 :
210 :2005/05/16(月) 10:56:28
>>211 下のレスに気を取られてて指摘されるまで気付きませんでした…ゴメソ
参考にします。配列は使わないみたいですね。見当違いなことをやってたかも…
[1]授業単元:アルゴリズム論 [2]rand関数を使って0~99の乱数を発生させる。 ハッシュ関数としてキーの値の1/2を使う。***に当てはまるものを入れよ。 [3]環境 [3.1]OS:WinXP [3.2]コンパイラ(バージョン): [3.3]言語:C言語 [4]期限:2005/05/20まで プログラミング始めたばかりでさっぱりわかりません。 先輩方教えてください。 #include <stdio.h> #include <stdlib.h> int hash(int); int main(void) { int ran; ran = rand(); ran = ran % 100; data[*****] =***; } int hash(int x){ return ***; }
> ran = rand(); > ran = ran % 100; こんな使い方初めて見た・・・。 まぁ、確かに動くけどさ・・・。 > data[*****] =***; 宣言されて無いのですが、良いの?
>>217 data がどこにも宣言されてないが、
> data[*****] =***;
data[hash(ran)] = ran;
> return ***;
return x / 2;
でいいんでねーの?
・・・何がやりたいんだかようわからん
課題を2つだされたのですがさっぱりわかりません、よろしくお願いします。 [1]授業単元:プログラミング論 [2]線形探索を応用して挿入しようとするデータの場所を特定する(iとする) 最後から前に向かってdata[k+1]=data[k]を実行し、一つ後ろにずらす。これをk=iになるまで繰り返す data[i]にキーを挿入する。空欄をうめてプログラムを完成させよ。 [3]環境 [3.1]OS:WinXP [3.2]コンパイラ(バージョン): [3.3]言語:C言語 [4]期限:2005/05/23の夕方5時まで #include <stdio.h> int main(void) { int i,k,key, data[101]; /*配列に偶数をつめる*/ /*keyをキーボードから読み込む*/ /*線形探索で先頭より探して挿入位置をiとする*/ for (; k < *** ; ***) { /*データを後ろにずらす*/ } /*結果を印字*/ return 0; }
221 :
220 :2005/05/16(月) 14:50:19
[1]授業単元:プログラミング論 [2]先頭をl、最後をhとすると、中間mは(1+h)/2となる 繰り返しの終了条件はlとm、あるいはmとhが等しいときとなる。 空欄をうめてプログラムを完成させよ。 [3]環境 [3.1]OS:WinXP [3.2]コンパイラ(バージョン): [3.3]言語:C言語 [4]期限:2005/05/23の夕方5時まで #define N_DATA 100 #include <stdio.h> int main(void) { int l,m,h,key, data[101],result =0; /*配列に要素をつめる(0~100)*/ /*keyをキーボードから読み込む*/ l = 0; h = N_DATA; m = (1+h)/2; for (; ***||*** ; ***) { /*データを後ろにずらす*/ /*data[m]をキーを比較して等しければ見つかったのでresultを1として抜け出す。 さもなければ大小関係により1かhを変更する*/ } /*結果を印字*/ return 0; }
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):(1)配列 studentGrades を宣言し、下記の値(点数)をキーボードより入力し初期値した後、一覧表示せよ。 (#define文を使用して学生数を STUDENTS,科目数を EXAMS,とすること。) 学科名 [A] [B] [C] [D] 学生1 77 68 86 73 学生2 96 87 89 78 学生3 70 90 86 81 (2)最低点を表示するプログラムを作成せよ(実行結果→最低点:68) (3)最高点を表示するプログラムを作成せよ (4)各学生毎の平均点表示機能を追加せよ (5)全機能を同時に実行し、実行結果を確認せよ [3] 環境 [3.1] OS: Linux 3.1 [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:2005年5月18日19:00まで [5] その他の制限:関数を使用せずに作成せよ。for文を用いて作成せよ すいません、問題が多いのでめんどうな場合は上記のいずれかだけでも構いません よろしくお願いしますm(_ _)m
>>222 [2](5)同時に実行とは? まさか、並列処理しろとでも?
[5]関数を使用せずにとは? まさか、表示も全て関数を利用せずに行なうのか?
揚げ足はおいしい
[1] 授業単元:プログラミング言語演習2 [2] 問題文(含コード&リンク): 1.int型の配列data「500×300」がある。 このデータの配列を逆(上下・左右)にするプログラムをclass arrayの下に作り、 class ex1(メイン)から起動するようなプログラムを作れ。 2.1で反転したdataに対して、以下の演算を施した結果の配列EDGE[500×300]を求めて、 data+EDGE(加算)を行った結果をdata配列に入れるプログラムを作れ。 2 2 data[i][j]= Σ Σdata[i+k][j+l]*W[R][l] k=0 l=0 考え方はW[3×3]のラプラシアンフィルタを使う。 [3] 環境 [3.1] OS:unix [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:2005年05月11日15:00まで [5] その他の制限: 1のほうは何とかできそうなんですが、 2のラプラシアンフィルタのやり方が良くわかりません。 よろしくお願いします。
227 :
222 :2005/05/16(月) 16:04:35
>>223 [2](5)に関しては(1)~(4)の実行結果を同時に表示するようなプログラムを作成しろとの事です
わかりずらくてすいません;
[5]はよくわからないんですがプリントにそう書いてあるんですよね・・
なんかややこしいので「関数を使用せずに~」というのは無視してください
>>225 classの下にプログラムを作るとか、classから起動するプログラムとか、
もっと一般的な言葉で解説するか具体例を挙げてくれ。
つーか、何とかできそうなら書いて味噌。
230 :
222 :2005/05/16(月) 16:44:54
>>228 ありがとうございます!
見たところそれで全部できそうですね
すごく参考になりました
どうもです^^
231 :
220 :2005/05/16(月) 16:54:41
すいません、期日が明日になったのを忘れてました; 単位落とすと学校辞めないといけなくなるので何卒よろしくお願いいたします;;
232 :
183 :2005/05/16(月) 17:17:49
233 :
151 :2005/05/16(月) 17:27:03
>>220 #include <stdio.h>
int main(void) {
int i,k,key, data[101];
/*配列に偶数をつめる*/
for(i = 0; i < 100; i++)
data[i] = i * 2;
/*keyをキーボードから読み込む*/
printf("keyを入力してください: ");
scanf("%d*\n*", &key);
/*線形探索で先頭より探して挿入位置をiとする*/
for(i = 0; i < 100; i++) {
if(data[i] >= key)
break;
}
for (k = 99; k >= i ; k--) {
/*データを後ろにずらす*/
data[k + 1] = data[k];
}
data[i] = key;
/*結果を印字*/
for(i = 0; i < 101; i += 5) {
for(k = 0; k < 5 && i + k <= 100; k++)
printf("data[%3d]=%3d ", i + k, data[i + k]);
putchar('\n');
}
return 0;
}
>>221 問題文があいまいで回答できなかった。
[1] 授業単元: プログラム1 [2] 問題文(含コード&リンク): ■■ソケットの生成■■ 2台のマシン(tokiとkenshirou)でソケットを用いた通信を行ってもらいます. 以下に送信側と受信側の動作を説明します. ・送信側 文字列が書き込まれたファイル(前回のプログラムで書き込んだファイル等)か ら 文字列を読み込み,文字列を適当な文字数ごとに分割して,ソケットを用いて受信 側 に送信する. ・受信側 受信した文字列を出力する. ファイルから読み込んだ文字列を分割せずに送信する場合からやってみてくださ い. 通信には,UDPを用い,ポート番号は1万+学籍番号の下3桁(10771など)を使って ください. [3] 環境 [3.1] OS: Linux 3.1 [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:2005年05月18日まで [5] その他の制限: よろしくお願いします。
235 :
デフォルトの名無しさん :2005/05/16(月) 19:20:46
#include<stdio.h> int *sisoku(int,int); void main(void) { int *result; result=sisoku(3,2); printf("\n TASU=%d HIKU=%d KAKERU=%d WARU=%d\n", *result,*(result+1),*(result+2),*(result+3)); } int *sisoku(int i,int j) { static intref[4]; ref[0]=i+j; ref[1]=i-j; ref[2]=i*j; ref[3]=i/j; return(ref); } 長くてすみません。このプログラムはグローバル関数宣言らしいんです けど、ローカル関数宣言にするには、どーしたらいいんですか?
ローカル関数宣言て何かしら? 2行目の宣言をmain関数内に入れるか、staticを付けるか、 多分どっちかなんだろうな。
>>235 ローカル関数宣言って他からexternで関数を読めないって事で良いのかな?
#include<stdio.h>
static int *sisoku(int i,int j);
void main(void)
{
int *result;
result=sisoku(3,2);
printf("\n TASU=%d HIKU=%d KAKERU=%d WARU=%d\n",
*result,*(result+1),*(result+2),*(result+3));
}
static int *sisoku(int i,int j)
{
static int ref[4];
ref[0]=i+j;
ref[1]=i-j;
ref[2]=i*j;
ref[3]=i/j;
return(ref);
}
238 :
デフォルトの名無しさん :2005/05/16(月) 19:33:34
>>235 main関数内に入れたいんですけど、どーやればいいんですか?
>>238 そんなん文字通り
#include<stdio.h>
void main(void)
{
int *result;
int *sisoku(int,int);
result=sisoku(3,2);
printf("\n TASU=%d HIKU=%d KAKERU=%d WARU=%d\n",
*result,*(result+1),*(result+2),*(result+3));
}
int *sisoku(int i,int j)
{
static intref[4];
ref[0]=i+j;
ref[1]=i-j;
ref[2]=i*j;
ref[3]=i/j;
return(ref);
}
240 :
デフォルトの名無しさん :2005/05/16(月) 19:47:22
>>239 エラーがいっぱいでたんですけど…
ちゃんと動くようにお願いします。
>>240 それならコンパイラのバージョンを明記しいや。
VC++6.0なら通ったで?
242 :
デフォルトの名無しさん :2005/05/16(月) 19:52:41
[1] 授業単元:プログラミング言語 [2] 問題文(含コード&リンク): ユーザーからの入力nを読み込み、n個の配列を作りなさい。 配列の中はa[0]=0 , a[1]=1 のように要素数?の数字を入れること。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ(バージョン):VisualStudio.NET [3.3] 言語:C [4] 期限:今日中にお願いします。 [5] その他の制限:特になし。今まで入力から配列を確保したことが無くて混乱しています…誰か助けてください…
243 :
デフォルトの名無しさん :2005/05/16(月) 19:56:10
>>241 下から7段目の static intref[4];のやつが
intとref[4];の間にスペースが開いてなかったみたいです。
ちゃんと動きました。ありがとうございます^^
244 :
デフォルトの名無しさん :2005/05/16(月) 20:01:42
>>242 #include <stdio.h>
#include <malloc.h>
int main( int argc, char* argv[] )
{
int *a;
int n;
int i;
/* n の入力 */
printf( "n = ?" );
scanf( "%d", &n );
/* memory 確保 */
a = ( int * )malloc( sizeof( int ) * n );
if ( a == NULL ) return 1;
/* 配列の初期化 */
for ( i = 0; i < n; i++ ) a[ i ] = i;
/* 配列を処理するコードをここに書く */
/* memory 解放 */
free( ( void * )a );
return ( 0 );
}
246 :
242 :2005/05/16(月) 20:09:28
>>245 ポインタが出てきますね。ちょっと難しそうですが頑張ってみます。助かりました。ありがとうございました。
247 :
Be名無しさん :2005/05/16(月) 21:17:59
250 :
193 :2005/05/16(月) 22:13:17
>>203 なるべく流量を増やさないように増大路を増やせばいいというのはわかるのですが、
どのあたりで条件判定を入れて処理させればいいのやら・・・色々考えてるけどわからないです。
>>250 経路をリストアップし、評価関数を使い、もっとも得点の高い(低い)経路を選択する。
評価基準はあなたの言うように、流量でよいのでわなかろーか。
なんか、A*(エースター)探索アルゴリズムの逆バージョンだな。
252 :
デフォルトの名無しさん :2005/05/16(月) 23:19:46
253 :
デフォルトの名無しさん :2005/05/16(月) 23:35:05
単元:C言語 問題文は以下の通りです。英語の問題を翻訳したんで少し分かりにくいかもです。 既存する配列に対して挿入、削除、検索をし、また配列要素を表示させるプログラムを作りなさい。 main関数: 1 数列の定義 int a[100]={5,20,50,100}, n=4; /* nを数列の長さとする */ 2 下のメニューを表示させる (1)配列要素の挿入(2)配列要素の削除 (3)配列要素の検索 (4)全ての要素の表示 (5)終了 3 上記の入力に基づき、相応の関数を用いさせる 4 挿入の場合:もし戻り値が0ならば、「この数は既に存在しています。挿入できません」 と表示させる。戻り値が1の場合、n+1をし且つ4「全ての要素の表示」の関数を使い挿入後の要素値を表示させる 5 削除の場合:戻り値が0の場合「この数は数列の中に存在しません。削除できません」 戻り値が1の場合n-1をし且つ4と同じく要素値を表示させる 6 検索の場合:戻り値が-1の場合「見つかりません」と表示 戻り値が負数の場合、検索した要素のアドレス(?)を表示 7 プログラムは5終了を実行するまで繰り返し行うことができる 挿入関数: 1 既に数値が存在するため挿入不可の場合、戻り値を0とする 2 挿入後の戻り値を1とする 削除関数 1 削除不可の場合、戻り値を0とする 2 正常に削除できた場合、戻り値を1とする 検索関数 1 見つけた場合戻り値は対応するアドレス(?)とする 2 見つけれない場合は戻り値を-1とする 全ての要素の表示 1 配列の長さによって、順次に要素の値を表示させる
254 :
225 :2005/05/16(月) 23:38:31
>>226 間違ってました。スマソ。
ラプラシアンフィルタでググってそのページも見たんだが、いまいちピンとこないんです。
画像処理をCでやるのが間違っているんですかね。
>>229 classというのは関数の名前です。
1のほうは
#include <stdio.h>
int main(void) {
int i,j,temp,data[500][300];
for(i = 1; i < 500; i++) {
printf("%d\n",data[i][j]);
}
retuen 0:
}
int class array(int data[i][j])
{
int temp,i,j;
for(i = 1; i <= 500; i++){
for(j = 1; j <= 300; j++){
temp = data[500-i][300-j];
data[500-i][300-j] = data[i][j];
data[i][j] = temp;
}
}
return;
}
こんなカンジかと。
255 :
253 :2005/05/16(月) 23:38:41
配列の定義 int a[100]={5,20,50,100}, n=4; /* nを配列の長さとする */ の間違いです。すんません。
257 :
256 :2005/05/17(火) 01:41:30
そうそう、デバッグは甘く作ったから、要デバッグ。
258 :
253 :2005/05/17(火) 02:26:10
>>256 スマソ。なんでか分からないけど、見ることができませぬ。
できればコピペでここにお願いします。
260 :
253 :2005/05/17(火) 03:20:34
急いでいるので早くしてもらえませんか?
261 :
253 :2005/05/17(火) 03:20:48
262 :
253 :2005/05/17(火) 03:21:02
本当に急いでるんです!!!
263 :
デフォルトの名無しさん :2005/05/17(火) 03:21:02
264 :
253 :2005/05/17(火) 03:21:16
とっとと教えてくださいよ。馬鹿なんですか?
265 :
デフォルトの名無しさん :2005/05/17(火) 03:21:33
266 :
253 :2005/05/17(火) 03:21:34
ああーもう。 書き込むのおっせえなぁもう
267 :
デフォルトの名無しさん :2005/05/17(火) 03:21:47
はえーよww
268 :
デフォルトの名無しさん :2005/05/17(火) 03:21:55
269 :
デフォルトの名無しさん :2005/05/17(火) 03:22:00
>>253 ちょっと待て!!それが人に聞く態度か!!
270 :
253 :2005/05/17(火) 03:22:03
とっととうp汁!
271 :
デフォルトの名無しさん :2005/05/17(火) 03:22:17
272 :
デフォルトの名無しさん :2005/05/17(火) 03:22:28
273 :
デフォルトの名無しさん :2005/05/17(火) 03:22:31
>>253 いい加減にしてください!!!
訴えますよ!!!
275 :
256 :2005/05/17(火) 03:22:40
276 :
253 :2005/05/17(火) 03:22:54
この程度の問題も出来ないのに本当にあんたCプログラマ?
277 :
デフォルトの名無しさん :2005/05/17(火) 03:23:40
私は西洋梨が大好きです。
お店でよく売られているのはラ・フランスです。
興味があったので調べてみたら代表的なものは
「ラ・フランス」「バートレット」「ル・レクチェ」の3種だそうです。
私は「ラ・フランス」しか知りません。
「ラ・フランス」は100%外国から来たモノだと思っていたのですが
フランスの梨苗を 山形に植え改良を重ねて出来たのがラ・フランスなんだそうです。
こんな話をしていたら食べたくなってきました。
/\___/ヽ
/'''''' '''''':::::::\
. |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::|
. | `-=ニ=- ' .:::::::|
\ `ニニ´ .:::::/
,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i | それがVIPクオリティ
> ヽ. ハ | ||
http://ex10.2ch.net/news4vip/
278 :
253 :2005/05/17(火) 03:23:54
私の時間返してもらえませんか???
279 :
256 :2005/05/17(火) 03:24:02
280 :
253 :2005/05/17(火) 03:25:07
そんなことよりオレの歌を聴いてください お魚くわえたドラネコー♪
281 :
253 :2005/05/17(火) 03:25:23
本物は私です。お願いですからとっとと答えろ。
282 :
253 :2005/05/17(火) 03:26:06
いや違くはないですよ それよりあんたの技術力の低さが問題だ。 カルボナーラでも食ってろデブ
283 :
253 :2005/05/17(火) 03:26:38
本当に急いでるんです。 偽者は無視して質問に答えてください。
284 :
253 :2005/05/17(火) 03:27:06
それではアンコールにお答えしまして はしれーこうそくのてーいーこーくかげきだんー♪
285 :
デフォルトの名無しさん :2005/05/17(火) 03:27:12
286 :
253 :2005/05/17(火) 03:27:59
さらにアンコールにお答えして あしたは~晴れるねジャンポール♪
287 :
256 :2005/05/17(火) 03:28:36
288 :
778 :2005/05/17(火) 03:29:06
すみません、自己解決しました。
289 :
デフォルトの名無しさん :2005/05/17(火) 03:29:57
すみません。僕のせいでだいぶスレが荒れてしまいました… 今更謝って済む問題ではないですよね…反省してます。 本当に申し訳ありませんでした。
290 :
デフォルトの名無しさん :2005/05/17(火) 03:30:04
291 :
デフォルトの名無しさん :2005/05/17(火) 03:30:18
>>288 おまwwwww
スレまちがえてるwwwwwwww
スゲー横柄な質問者ってのは、昔から居るよなぁ。(溜息)
293 :
デフォルトの名無しさん :2005/05/17(火) 03:33:40
またラウンコか・・・
オモシロカッタヨ
なに? ラウンジって何なの?
>>295 2ch内の荒らしの集団
初心者をオフに誘ってレイプとかするらしいよ
皆さん気をつけてください
297 :
253 :2005/05/17(火) 03:55:33
ラウンジの人たちだね・・・
299 :
デフォルトの名無しさん :2005/05/17(火) 03:57:38
答えてやるから質問を3行にまとめろ
302 :
デフォルトの名無しさん :2005/05/17(火) 03:58:19
303 :
デフォルトの名無しさん :2005/05/17(火) 04:02:19
きさま えがしら ろっぷんだろ
304 :
193 :2005/05/17(火) 06:27:06
305 :
デフォルトの名無しさん :2005/05/17(火) 06:36:44
[1] 授業単元:繰り返し文・配列 [2] 問題文 1・適当な2つの3行×3列の行列a,bを定め、両者の和行列cを計算するプログラムを書け。 ヒント:2次元配列a[3][3] b[3][3]を定め、2重ループを使ってi,j成分をc[i][j]=a[i][j]+b[i][j]とすればよい 2・行列a,bの積行列cを求めるプログラムを書け。 ヒント:制御変数kを使った3重ループとし、c[i][j]=a[i][j]×b[i][j]とすればよい。 [3] 環境 [3.1] OS: WINDOWS XP [3.3] 言語:C お願いします。
期限書いてないから急ぎかわからないので大まかに int i,j,k,tmpは初めに宣言しておくこと 複数の計算をforにやらせたいときは{}でまとめないと 積ではforのあとの1つtmp=0しかやってくれないことに注意 逆に和のように1つの時は{}を省略できる 積で{}を取るとどうなるか提出後に考えてみるのも一興 和 for(i=0;i<3;i++) for(j=0;j<3;j++) c[i][j]=a[i][j]+b[i][j]; 積 for(i=0;i<3;i++) for(j=0;j<3;j++) { tmp=0; for(k=0;k<3;k++) tmp+=a[i][k]*b[k][j]; c[i][j]=tmp: }
>>254 いやそれ、未だ全然わかんないから。
つーか、コンパイルとおらねぇだろよ。
ついでに言えば、反転処理も間違ってる。
[1] 授業単元
宿題ではないのですが初心者スレで
こちらのスレを薦められたので来ました
[2] 問題文
文字列をクイックソートを使って昇順にソートしたい
(qsort()は使わずに)
[3] 環境
[3.1] OS: WINDOWS XP
[3.3] 言語:C/C++
[4] 期限:無期限
作りかけのもの
ttp://vip-et.ddo.jp/vipet/cgi-bin/img/405.zip Ignore.txtを行ごとに読み込んで、行をソートして上書きするプログラムです。
悩んでいるのはsort.cppの部分です。よろしくお願いします。
1]授業単元:プログラミング論I [2]2分探索のプログラムを作成せよ [3]環境 [3.1]OS:WinXP [3.2]コンパイラ(バージョン): [3.3]言語:C言語 [4]期限:2005年5月18日まで 期限せまってるのですがさっぱりわかりません、よろしくお願いいたします。
>>259 ありがとうございます!
ソース見て勉強します。
>>311 早速読んでみます
ありがとうございました
314 :
309 :2005/05/17(火) 12:38:47
なんかこの続きを作れって感じなのですが、さっぱり、、 ヒントをだされても何がなにやら、、 ・先頭をl、最後をhとすると、中間mは(1+h)/2となる ・繰り返しの終了条件はlとm、あるいはmとhが等しい時となる。 #define N_DATA 100 #include <stdio.h> int main(void){ int l, m, h, key, data[101], result=0;
> #define N_DATA 100 > int l, m, h, key, data[101], result=0; こんなコードを問題で出すから生徒は育たないのだと思う。
些細なことだけど ・先頭をl、最後をnとすると、中間mは(l+n)/2となる ・繰り返しの終了条件はlとm、あるいはmとnが等しい時となる。 #define N_DATA 100 #include <stdio.h> int main(void){ int l, m, n, key, data[101], result=0; なきがする
>>314 >>1 > ・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
318 :
309 :2005/05/17(火) 13:09:10
大変失礼しました。期限がせまっててあせってるのでつい、、
>>309 期限って明日やん。この程度の問題でそんなん迫っているとは言わん。
こんなもんで良いんか?
#include <stdio.h>
#define N_DATA 100
#define DATA_COUNT ( N_DATA + 1 )
int main( void )
{
int i, l, m, n, key, data[ DATA_COUNT ], result = 0;
l = 0;
n = N_DATA;
for ( i = 0; i < DATA_COUNT; i++ ) data[ i ] = i + 1;
printf( "key ? " );
scanf( "%d", &key );
m = ( l + n ) / 2;
while ( 1 ) {
printf( "l = %d n = %d data[ %d ] = %d\n", l, n, m, data[ m ] );
if ( m == l || m == n || data[ m ] == key ) break;
else if ( data[ m ] > key ) { n = m; m = ( l + n ) / 2; }
else { l = m; m = ( l + n ) / 2 + 1; }
}
if ( data[ m ] == key ) printf( "Found data[ %d ] = %d\n", m, data[ m ] );
return ( result );
}
うん、汚ねぇソース。
322 :
321 :2005/05/17(火) 14:31:48
あ、一カ所間違ってら。まぁ、理解して修正してくれ。
323 :
193 :2005/05/17(火) 16:37:09
>>323 故意に計算速度を遅くしているからじゃないか?
寝たあと、すごいことになってたんだな。 偽者出現したり、やっぱここも2chだな。(笑
>>323 そんなときこそ、デバッグプリントを活用するんだ。
たとえば、forで今、何番目を処理してるか?とかコンソールに出すと、視覚的に良くわかる。
でも、ソースが汚くなる諸刃の剣。と。
>>326 オマエ、諸刃の剣いってみたかったんちゃうかと。
328 :
193 :2005/05/17(火) 17:03:54
330 :
デフォルトの名無しさん :2005/05/17(火) 18:44:22
一生のお願いです。助けてください!!
【質問テンプレ】
[1] 授業単元: バイオインフォマティックス
[2] 問題文(含コード&リンク):
http://www.geocities.jp/arerenore1357/HW.zip この中に途中までのコードと問題文が含まれています。
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ(バージョン): MSVC
[3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:
コードはだいたい出来ていて、あとは、align 関数を完成させるだけです。
本当、窮地なんです。
助けてください。お願いします!!
オレも探しちったぜ あの暗号が問題文かと んなわきゃねー
[1] 情報処理 [2] 問題文 キーボードから入力した数値を小さい値の順に並べるプログラム。 ただし、関数を作る) [3] 環境 [3.1] OS: WINDOWS XP [3.3] 言語:C [4] 期限:無期限 初歩的な質問ですがお願いします。
[1] 授業単元:C++応用 [2] 問題文(含コード&リンク): 200人分の、4科目のデータが存在する。これをヒストグラムを表示する関数を 使用し、表示せよ ヒストグラムの表示方法 0 ~ 10ある科目が 0点~10点だったの人数 11 ~ 20ある科目が11点~20点だったの人数 21 ~ 30... 31 ~ 40 41 ~ 50 51 ~ 60 61 ~ 70 71 ~ 80 81 ~ 90 91 ~ 100ある科目が91点~100点だったの人数 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ(バージョン):VC++6.0Pro [3.3] 言語:C++ [4] 期限:今日中にお願いします。 [5] その他の制限:データは別ファイルから参照。↓の関数を必ず使う /* 構造体の定義 */ struct HistgramRange { int low; int high; };
337 :
336 :2005/05/17(火) 20:48:29
/* 構造体を用いた変数の宣言と初期化 */ struct HistgramRange ranges[] = { { 0, 10 }, { 11, 20 }, { 21, 30 }, { 31, 40 }, { 41, 50 }, { 51, 60 }, { 61, 70 }, { 71, 80 }, { 81, 90 }, { 91, 100 } } 作成する関数の定義は、次のようにする。 void histgram2(int points[], int nchild, struct HistgramRange hist[], int nhist, int results[]); (ここまで出来ました。ロダ使えないので長レスごめんなさい)
338 :
336 :2005/05/17(火) 20:50:50
#include <stdio.h> #define NINZUU 200//処理する人数(200) #define STR_BUFSIZE 30//文字列受信用バッファサイズ #define KAMOKU 4//科目数(4) #define KOKUGO0//国語 #define SANSUU1//算数 #define RIKA2//理科 #define SYAKAI3//社会 int atoi_c(char buf[]); char *skipws(char *str); int histgram1(int points[], int nchild, int low, int high); int main(void) {char buf[STR_BUFSIZE];//文字列受信用バッファ int a[KAMOKU][NINZUU];//科目x人数別の点数情報 int i = 0; struct HistgramRange {int low; int high;}; while (fgets(buf, STR_BUFSIZE, stdin) != NULL) { char *p = buf; a[KOKUGO][i] = atoi_c(p); p = skipws(p); a[SANSUU][i] = atoi_c(p); p = skipws(p); a[RIKA][i] = atoi_c(p); p = skipws(p); a[SYAKAI][i] = atoi_c(p); printf("%d人 国語 : %d,算数 : %d,理科 : %d,社会 : %d\n", i, a[KOKUGO][i], a[SANSUU][i], a[RIKA][i], a[SYAKAI][i]); i++; if (i == NINZUU)//処理可能な上限人数に達した場合も、集計を終了する break;}
339 :
336 :2005/05/17(火) 20:52:47
int xa1_1 = histgram1(a[KOKUGO], i, 0, 10); int xb1_2 = histgram1(a[SANSUU], i, 0, 10); int xc1_3 = histgram1(a[RIKA], i, 0, 10); int xd1_4 = histgram1(a[SYAKAI], i, 0, 10); printf ("0-10 国語 : %d 人, 算数 : %d 人,理科 : %d 人,社会 : %d 人\n", xa1_1,xb1_2,xc1_3,xd1_4); int xa2_1 = histgram1(a[KOKUGO], i, 11, 20); int xb2_2 = histgram1(a[SANSUU], i, 11, 20); int xc2_3 = histgram1(a[RIKA], i, 11, 20); int xd2_4 = histgram1(a[SYAKAI], i, 11, 20); printf ("11-20 国語 : %d 人, 算数 : %d 人,理科 : %d 人,社会 : %d 人\n", xa2_1,xb2_2,xc2_3,xd2_4); (100まで続く) return 0; } int histgram1(int points[], int nchild, int low, int high) { int i = 0; short count = 0; for (i = 0; i < nchild; i++) {if ( (low <= points[i]) && (points[i] <= high) ) count++; } return count; }int atoi_c(char buf[])
340 :
336 :2005/05/17(火) 20:54:00
{ int x = 0;//変換中の数値 short i = 0;//現在処理中の桁(要素番号) while ( ('0' <= buf[i]) && (buf[i] <= '9') )//bufの中身は数字か? { x *= 10;//下の桁が見つかったので1桁大きくする x += buf[i] - '0';//bufのi桁目を数字に変換 i ++;//一つ下の桁を見に行く } return x; }char *skipws(char *str) { while (('0' <= *str) && (*str <= '9'))//読み終わった数字 str++; while (!(('0' <= *str) && (*str <= '9')) && *str != '\0')//次の数字に当たるまでポインタを進める str++; return str; } 以上になります。長レスごめんなさい。 構造体での表示方法がどうしてもわかりません。よろしくお願いします
341 :
193 ◆vVe.Z3fuuw :2005/05/17(火) 21:25:01
まだ
>>323 から進展がない件
もう締め切りが過ぎてしまった件
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): マシンイプシロンを計算するプログラムを作成せよ(floatの場合とdoubleの場合の2種類) [3] 環境 [3.1] OS: linux [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:明後日 [5] その他の制限: 1.0にある変数aを足したときPCが1.0+a>1.0と認識できなくなる瞬間がある。aの値をa=a/2のように各ループで計算し、不等式で判断するとよい。但し、認識できなくなる直前のaがマシンインプロシオンであることに注意せよ。 との事ですがいまいち分かりません;;どなたかご教授宜しくお願い致します。
344 :
340 :2005/05/17(火) 21:59:48
>>342 ありがとうございました。助かりました。
[1] 授業単元:基礎プログラミング [2] 問題文(含コード&リンク): n個の乱数(整数)を発生させ、そのn個の整数が素数であるかどうかを判別するプログラムを作成せよ。但し、整数の上限は1000とする。 [3] 環境 [3.1] OS:linux [3.2] コンパイラ(バージョン): [3.3] 言語: [4] 期限:明日 お願いしますです
346 :
345 :2005/05/17(火) 22:07:57
すいません言語Cです
>>343 んで、答えはこんなんだ。
double a = 1.0;
double old_a;
while (a + 1.0 > a) {
old_a = a;
a /= 2;
}
printf("%f\n", a);
でもなぁ。i386系のCの浮動小数点演算は、これで正確にでるかはわからんなぁ。
[1] 授業単元: C言語基礎 [2] 問題文(含コード&リンク):数列int a[10]={1,2,3}に入力した数値を加え、小さい方から大きい方へと並び替え、表示させる [3] 環境 [3.1] OS: windows XP [3.2] コンパイラ(バージョン): [3.3] 言語:C/C++/どちらでも可 [4] 期限:できれば今日中に・・・
>>345 /* 1以上n以下の乱数を返す */
int random(int n) {return rand() % n + 1}
/* 素数なら真を返す */
int is_prime(int n) {
int i;
for (i = 2; i <= n; i++)
if (n % i == 0)
return 1;
return 0;
}
main(void) { /* 力尽きた */}
ソートは食傷気味。
352 :
デフォルトの名無しさん :2005/05/17(火) 22:27:50
[1] 授業単元:C言語基礎 [2] 問題文(含コード&リンク): 与えられた文章から最も文字数の多い行を表示しなさい 例)今日は とても良い天気なので 公園に行きました 解)とても良い天気なので [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): [3.3] 言語:C 皆さんなら、朝飯前ですか?
>>348 #include <stdio.h>
int main() {
char buf[256];
int i, j, tmp, a[10] = { 1, 2, 3 };
const int size = sizeof(a) / sizeof(*a);
for(i = 0; i < size; i++) {
for(; ; ) {
printf("%d 番目に加える数値を入力してください: ", i + 1);
*buf = '\0';
fgets(buf, sizeof(buf), stdin);
if(sscanf(buf, "%d", &tmp))
break;
fputs("エラー: 数値として認識できません。\n", stderr);
}
a[i] += tmp;
}
for(i = 1; i < size; i++) {
for(j = i; j < size; j++)
{
if(a[j - 1] > a[j])
{
tmp = a[j - 1];
a[j - 1] = a[j];
a[j] = tmp;
}
}
}
for(i = 1; i < size; i++)
printf("%d: %d\n", i + 1, a[i]);
return 0;
}
>>352 >皆さんなら、朝飯前ですか?
なんかムカツク。
朝飯まで時間があるから自分でやれ。
>>353 ありがとうがざいます。これで明日からちゃんと学校に通えれます。
356 :
352 :2005/05/17(火) 22:34:06
>>354 すみません・・・一言多かったです m(_ _)m
反省してます。
357 :
デフォルトの名無しさん :2005/05/17(火) 22:36:43
>>348 #include <stdio.h>
#include <stdlib.h>
#define ArrayMax (10)
int func(const void* a,const void* b){
int aa= (*(int*) a);
int bb= (*(int*) b);
if(aa>bb) return 1;
if(aa == bb) return 0;
if(aa<bb) return -1;
return 0;
}
int main(void)
{
int a[ArrayMax];
for(int i=0;i<ArrayMax;i++){
printf("%d-",i+1);
scanf("%d",&a[i]);
}
for(int i=0;i<ArrayMax;i++){
printf("%d ",a[i]);
}
puts("\n*start sort*\n");
qsort(a,ArrayMax,sizeof(int),func);
for(int i=0;i<ArrayMax;i++){
printf("%d ",a[i]);
}
return 0;
}
>>352 #include <stdio.h>
#include <string.h>
#define BUF_SIZE 256
int main()
{
char buf[BUF_SIZE], longest[BUF_SIZE] = "";
size_t len, maxlen = 0;
while(fgets(buf, sizeof(buf), stdin) != NULL)
{
len = strlen(buf);
if(len && buf[len - 1] == '\n')
buf[--len] = '\0';
if(len > maxlen)
{
maxlen = len;
strcpy(longest, buf);
}
}
puts("最も長い行:");
puts(longest);
getchar();
return 0;
}
359 :
デフォルトの名無しさん :2005/05/17(火) 22:39:14
[1]授業単元:データ構造 [2] ダミー節点を使わないリスト構造を用いて,挿入整列の プログラムを作成せよ ・リスト構造は,ポインタによるリンクリストを用いること ・整列前のリスト内の各要素,整列後のリスト内の各要素を 表示するようにすること [3]環境 [3.1]OS:WinXP [3.2]コンパイラ(バージョン): cygwin [3.3]言語:C言語 [4]期限:2005/05/23 結構考えたつもりなんですがさっぱりわかりません。 どうかよろしくお願いします。
360 :
デフォルトの名無しさん :2005/05/17(火) 22:42:49
>>357 int func(const void* a,const void* b){
return *(int*)a - *(int*)b;
}
一行ですむものを。
>>349 #includeから書いていただけると嬉しいです;
>>361 おお、そんな方法が。
勉強になります。
さんきゅー。
>>360 色々な参考書読んだのですが、プログラムを作るとなると手が出ません^^;
つまり、手付かずの状態です。全く分かりません^^;
問題が2つ出たのですがさっぱり解りません。 先輩方宜しくお願いします。 [1] 授業単元:アルゴリズムとデータ構造 [2] 問題文(含コード&リンク):ダミー節点を使わないリスト構造を用いて,挿入整列のプログラムを作成せよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):bcc [3.3] 言語:C [4] 期限:5月22日まで [5] その他の制限: リスト構造は,ポインタによるリンクリストを用いること 整列前のリスト内の各要素,整列後のリスト内の各要素を表示するようにすること
366 :
352 :2005/05/17(火) 22:48:32
>>364 本を読んでいるだけではプログラミングなんて身につかない。
自然言語にも言えることだけど。
368 :
365 :2005/05/17(火) 22:54:12
[2] 問題文(含コード&リンク):配列によるリストを用いて,Josephusの問題を解法するプログラムを作成せよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):bcc [3.3] 言語:C [4] 期限:5月22日まで [5] その他の制限:無し 宜しくお願いします。
>>367 はい、すみません。でも今回は本当にわからなかったんです。
どうかよろしくお願いしますm(__)m
[1] 情報処理 [2] 問題文 テストの点数を入力していき、最高点、最低点、平均点を計算するプログラムを作成せよ 入力の値が負になったとき、入力は終了とする [3] 環境 [3.1] OS:linux [3.3] 言語:C [4] 期限:明日 [5] その他の制限:入力値を用いて判定式を作成し、while分に応用する よろしくお願いします
激しくちゃぶ台ひっくり返したい。
372 :
デフォルトの名無しさん :2005/05/17(火) 23:20:27
[1] 授業単元:C [2] 問題文(含コード&リンク):ガウスの消去法。入力、前進代入、後進代入、出力の関数を使う。 [3] 環境 [3.1] OS: WinXp [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:5月18日 [5] その他の制限: 数学系のプログラミングがまったくできません。 よろしくお願いします。
>>372 数学系でないプログラミングを教えて欲しい。
言語処理とか数学系じゃない・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ような気がちょっとする。
>>361 aが指してる値がINT_MINで、bが指してる値が正だと
ヘンなことになるな。
377 :
デフォルトの名無しさん :2005/05/17(火) 23:50:57
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):ポインタ変数の配列 char*a[5]; に 英単語を5個入力し、逆順に出力するプログラムをつくれ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C/C++/どちらでも可 のいずれか C [4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか 5月18日 [5] その他の制限: 特にありません。 どなたかよろしくお願いします。
>>370 #include<stdio.h>
int main(){
int min,max,sum=0,num=0,point=0;
printf("点数を入力して下さい。\n負の数を入力すれば終了します。\n");
scanf("%d",&point);
min = max = point;
while(point>=0)
{
++num;
if(min > point)min = point;
if(max < point)max = point;
sum += point;
scanf("%d",&point);
}
if(num != 0) printf("最高点は%d点です。\n最低点は%d点です。\n平均点は%d点です。\n",max,min,sum/num);
else printf("得点が入力されていません");
}
>>379 359ですが365と重複していたので解決しました。
ありがとうございました。
>>252 問題の情報が十分に与えられていない。無理。
>>377 #include <stdio.h>
#include <string.h>
#define BUF_SIZE 256
int main()
{
const char *seps = " ,\t\n";
static char inbuf[BUF_SIZE], abuf[BUF_SIZE];
char *a[5], *str, *writepos = abuf;
const size_t size = sizeof(a) / sizeof(*a);
size_t num = 0, i;
while(num < size)
{
*inbuf = '\0';
fgets(inbuf, sizeof(inbuf), stdin);
str = strtok(inbuf, seps);
while(str)
{
a[num] = writepos;
writepos += sprintf(writepos, "%s%c", str, '\0');
if(++num == size)
break;
str = strtok(NULL, seps);
}
}
for(i = size; i; )
printf("%s ", a[--i]);
return 0;
}
>>382 いや、あれ以上与えようが・・・。
サーバーとクライアントのチャットができるプログラムを、395.txtのゲームができるように、
少し変えてもらうだけでいいんですが。
>>385 情報も環境もないのに出来るわけ無いだろ。
自分に出来ないことを 「だけ」 って言うな。
387 :
377 :2005/05/18(水) 01:39:37
>>383 ありがとうございます。とても助かりました。
388 :
デフォルトの名無しさん :2005/05/18(水) 02:46:25
389 :
デフォルトの名無しさん :2005/05/18(水) 02:59:40
xはforループの変数だろ。
392 :
389 :2005/05/18(水) 03:42:03
すいません。 とりあえずaとnは自分で入力する変数ということで。 xは入れなくてもΣで動くと思います。
>>392 藁った。
ところで、呼量がaで、回線容量がnだな。
Bは呼損率だが、それを求めてほしーよーだ。
リンク先では、aとBを与えてnを求めるプログラムだから混乱するわな。
あと、0の階乗は1な。
数学ライブラリを使うときは、-lm忘れんなよ。
>>306 ありがとうございます。
遅くなってすいません。
>>343 float版は自分でやんなさい
#include <stdio.h>
#define ONE 1.0
double deps(void)
{
double eps = ONE;
do {
eps *= 0.5;
} while( eps+ONE != ONE );
eps *= 2;
return eps;
}
int main( void )
{
printf( "%e\n", deps() );
return 0;
}
396 :
デフォルトの名無しさん :2005/05/18(水) 07:50:09
[1] プログラミング演習 [2] 簡単なモグラたたきゲームを作れ [3] 環境 [3.1] OS: linux [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C/C++/どちらでも可 [4] 期限:今日のお昼まで 今日中に外部構造、内部構造くらい作らないといけないのですが、全くわかりませぬ。 使用するグラフィックは素材集から流用しまつ。
398 :
デフォルトの名無しさん :2005/05/18(水) 07:58:50
宿題の提出時には #include <2c.h> を忘れるな
399 :
396 :2005/05/18(水) 08:03:44
ちょっとプログラムが長く?なりそうだと思うので、使うべき関数だけでも教えてもらえると幸いです(;´Д`) あとこの文献が参考になる!ってのありませんでしょうか?ネト通販でいろいろ探してますがみつからんとです・・
400 :
193 ◆vVe.Z3fuuw :2005/05/18(水) 08:03:56
401 :
デフォルトの名無しさん :2005/05/18(水) 08:28:00
>>389 #include <stdio.h>
int main( void )
{
double a, b, val1, val2, val3, val4;
int n;
printf( "呼量:" );
scanf( "%lf", &a );
printf( "損失率:" );
scanf( "%lf", &b );
val1 = val2 = val3 = 1;
n = 0;
do {
n++;
val1 *= n;
val2 *= a;
val3 += val2 / val1;
val4 = val2 / val1 / val3;
} while( b < val4 );
printf( "回線数:%d\n", n );
return 0;
}
403 :
デフォルトの名無しさん :2005/05/18(水) 09:57:02
[1] 授業単元: プログラミング演習 [2] 問題文: ユーザーに 実数 a, b, c を代入してもらい、a * x * x + b * x + c = 0 の解を求めるプログラムを作成する。ただし a != 0.0 かどうかは考えなくても良いとする。 a, b, c の値によって、2個の実数解、重解、2個の虚数解、が求まる。 それぞれの場合について 実数解ならば、 入力パラメータは a = 1.0, b = 4.0, c = 3.0 です。 2個の実数解を持ちます。答えは x1 = -1.0000000 です。 x2 = -3.0000000 です。 重解ならば、 入力パラメータは a = 1.0, b = 4.0, c = 4.0 です。 1個の重解を持ちます。答えは x1 = -2.0000000 です。 虚数解ならば、 入力パラメータは a = 1.0, b = -2.0, c = 5.0 です。 2個の虚数解を持ちます。答えは x1 = 1.00000 + 2.00000 i です。 x1 = 1.00000 - 2.00000 i です
404 :
403 :2005/05/18(水) 09:57:30
と表示するプログラムを作成せよ。実数解と重解を求める場合には、平方根を用いなければ ならないが、これは sqrt() 関数をもちいること。また、C言語には虚数型という型は存在しないので、 虚数解を求める場合は、実数部分 reと、虚数部分 imとを個別に求め、 printf( "x1 = %lf + %lf i です。\n", re, im ); のように表示せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:明日まで [5] その他の制限: なし どなたかご教授お願いしますm(_ _)m
#include<stdio.h> #include<math.h> int main(int argc,char **argv){ double a,b,c,d; scanf("%lf %lf %lf",&a,&b,&c);/* 入力 */ d=b*b-4.0*a*c;/* 判別式 */ printf("入力パラメータは\n a = %f, b = %f, c = %f です。\n\n",a,b,c); if(d>0){/* 異なる2実数解 */ printf("2個の実数解を持ちます。答えは\n"); printf("x1 = %f です。\n",(-b+sqrt(d))/(2.0*a)); printf("x2 = %f です。\n",(-b-sqrt(d))/(2.0*a)); }else if(d<0){/* 異なる2非実数解 */ printf("2個の虚数解を持ちます 。答えは\n"); printf("x1 = %f + %f i です。\n",-b/(2.0*a),sqrt(-d)/(2.0*a)); printf("x1 = %f - %f i です\n", -b/(2.0*a),sqrt(-d)/(2.0*a)); }else{/* 重解 */ printf("1個の重解を持ちます。答えは\n"); printf("x1 = %f です。\n",-b/(2.0*a)); } return 0; } -lm オプションを忘れずに 虚数解の誤植もあえてそのままにしてみた。気になるようだったら直すように
406 :
デフォルトの名無しさん :2005/05/18(水) 12:33:46
>>402 損失率が解のを求めてほしいんじゃなかったっけ?
と言うやってもいない人間の俺ガイル
407 :
デフォルトの名無しさん :2005/05/18(水) 12:40:26
また重複すいません。
【質問テンプレ】
[1] 授業単元: バイオインフォマティックス
[2] 問題文(含コード&リンク):
http://www.geocities.jp/arerenore1357/HW.cab この中に途中までのコードと問題文が含まれています。
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ(バージョン): MSVC
[3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:
コードはだいたい出来ていて、あとは、align 関数を完成させるだけです。
本当、窮地なんです。
助けてください。お願いします!!
408 :
だだ :2005/05/18(水) 12:45:36
[1] オブジェクト指向論 [2] keybd_event を使って一番上のウインドウ(テキストファイルやコンソールウインドウ)に 1\n 2\n・・・・・・・ 10\n 11\n と表示させるようにプログラムを組む [3] 環境 [3.1] OS: Windows XP SP2 [3.2] コンパイラ(バージョン):Visual C++ 6.0 SP5 [3.3] 言語:C++ [4] 期限:2005年05月19日まで [5] その他の制限: 関数化していただけるとうれしいです。
410 :
デフォルトの名無しさん :2005/05/18(水) 14:35:41
[1] 授業単元: 情報 [2] 問題文(含コード&リンク):適当な範囲で値をとる整数の乱数を発生させ、 それを 365 で割った余りを計算する作業を繰り返す。余りとして0から364 までが考えられるが、 それぞれ何回出現したかを数えておくプログラムをお願いします。 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C/C++/どちらでも可 のいずれか Cでお願いします。 [4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか 5月19まで
[1] 授業単元: アルゴリズムI [2] 問題文(含コード&リンク):データとして0から100までの整数を配列の先頭から順に繰り返し文を使って詰める。 その後、2つ目の繰り返し文で全データを表示する(数値のみでよい) このプログラムを書きなさい。 [3] 環境 [3.1] OS:WinXP [3.2] コンパイラ(バージョン): [3.3] 言語:C言語 [4] 期限:2005年5月19日の朝9時まで 先輩方、ご教授お願いします。
412 :
403 :2005/05/18(水) 15:20:23
>>405 さん
丁寧な解答ありがとうございます。
おかげで助かりました。
>>410 #include<stdio.h>
#include<stdlib.h>
int main(int argc,char **argv){
int a[365]={0},b,i;
for(i=0;i<10000;i++)
{
b=rand() % 365;
a[b]++;
}
for(i=0;i<365;i++)
{
printf("%3d-%03d ",i,a[i]);
}
return 0;
}
やっつけで作ってみたけど
・乱数に関して制限はないか(stdlib.hのものでokなのか、自分で作ってこいとか)
・乱数を365で割った余りを計算するがどこで終了するか(上のは10000回で打ち切り)
・余りkがいくつ出たかとか記憶はするが結果を表示するのかどうか
そのへんがわからないので勝手に設定した。
>>411 #include<stdio.h>
int main(int argc,char *argv[]){
int a[101],i;
for(i=0;i<101;i++)a[i]=i;
for(i=0;i<101;i++)printf("%d ",a[i]);
return 0;
}
ホントニコレデイインダロウカ…
415 :
デフォルトの名無しさん :2005/05/18(水) 15:47:39
>411 #include <stdio.h> #defineMAX_INTEGER 100 int main() { int i_array[ MAX_INTEGER + 1 ], i; for( i = 0; i <= MAX_INTEGER; i++ ) i_array[ i ] = i; for( i = 0; i <= MAX_INTEGER; i++ ) printf( "%3d ", i_array[ i ] ); return 0; } 問題を誤解していたらスンマソン
【質問テンプレ】 [1] 授業単元:アルゴリズム演習1 [2] 問題文(含コード&リンク): ①二つの整数を入れて、その公約数をすべて表示せよ ②はじめに人数を入力、その人数分、交通費を入力。 するとお金の種別ごと(一万円、五千円、千円、五百円、百円、五十円、十円、一円) に何枚用意する必要があるか表示してくれるプログラムを作成せよ。 例:2人で530円と380円の場合 はじめに、”2”次に”530””380”といれたら、 五百円玉 1枚、百円玉 3枚、 五十円玉 1枚、十円玉 6枚 と表示される。 [3] 環境 [3.1] OS:WinXP [3.2] コンパイラ(バージョン):VC++ .NET (7.1) [3.3] 言語:C言語 [4] 期限:5月19日早朝まで よろしくお願いします。
417 :
デフォルトの名無しさん :2005/05/18(水) 16:50:57
整数のデータを線形リストに格納しているとする。リストは次のように 定義され、空はマクロNULLで表す。 struct ListNode{ int value; struct ListNode* next; }; リストと正の整数nを受け取り、nよりも大きな値を持つ要素の位置と 値を出力する、次のような名前と型を持つC言語の関数を定義せよ。 void printLargerList(struct ListNode* data,int n); ただし最初の要素の位置を0番目と数えることにする。 お願いします。
そんな金種計算ここでやるなよ
>>395 できました!ありがとうございました
・・・が、floatがわからないですorz
>>416 (1)
#include <stdio.h>
int main(void) {
int a, b, i, m;
printf("a?:"); scanf("%d", &a);
printf("b?:"); scanf("%d", &b);
m = a < b ? a : b;
for (i = 1; i <= m; i++) if (!(a % i) && !(b % i)) printf("%d\n", i);
return 0;
}
>>417 デバッグしてないけど、こんな感じか??
void printLargerList(struct ListNode* data,int n){
struct Node* N=data;
int i=0;
while(N != NULL){
if(N->value >n){
printf("%d-%d\n"i,N->value);
}
i++;
N = N->next;
}
return;
}
>>416 (2) 枚数を全角で表示していない。枚数を読点で区切って表示していない。
#include <stdio.h>
int main(void) {
int i, count, fare, yen[9] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1}, need[9] = {0};
char yen_notation[9][9] = {"一万円札", "五千円札", "千円札", "五百円玉", "百円玉", "五十円玉", "十円玉", "五円玉", "一円玉"};
printf("人数は?:"); scanf("%d", &count);
while(count-- > 0)
{
printf("交通費は?:"); scanf("%d", &fare);
for (i = 0; i < 9; i++)
{
while(fare >= 0) {fare -= yen[i]; need[i]++;}
fare += yen[i]; need[i]--;
}
}
for (i = 0; i < 9; i++) if (need[i]) printf("%s %d枚 ", yen_notation[i], need[i]);
}
425 :
416 :2005/05/18(水) 17:56:37
>>421 さん、えっと、特に問題文に書いた以上の指示はなかったんで、どちらでもいいとおもいます。
すみません。
>>420 ありがとうございました。
たすかりました。
426 :
416 :2005/05/18(水) 18:02:50
>>426 さん
ありがとうございます。
考えたとき、さっぱりわからなかったんで、
ちょっと、これを参考にやり直してみようとおもいます。
返信をくれた方々、本当にありがとうございました。
感謝です。
[1] 授業単元:プログラミング応用課題 [2] 問題文:入力1~10000までの任意の整数を例のように正規化せよ ただし、条件分岐命令は使用禁止 例: 入力 出力 1~ 8 8 9~16 16 17~32 32 33~64 64 以下出力が2乗で増えていく [3] 環境 [3.1] OS:windows xp [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限 :2005/05/31 [5] その他の制限:なし これ、if無しでどうやって作ればいいのか・・・orz おねがいします。
>>422 >struct Node* N=data;
struct ListNode* N=data;
の間違い。コンパイル位するんだった。
>>427 1引いて8で割り、その結果に1を足して8掛ける。
>>424 ちょっと待て、入力も全角になってないぞ。
[1] 授業単元: プログラミング技術 [2] 問題文(含コード&リンク):借入金の返済シミュレーションを行うプログラムを作成せよ [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C [4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか 明日(できれば今日中) [5] その他の制限: 実行例 借入金を入力してください:1000 毎月の返済額を入力してください:300 金利/月率(%)を入力してください:5 1ヶ月目:返済額=1050円、償還額=300円、残額705円 2ヶ月目:返済額=740.25円、償還額=300円、残額440.25円 3ヶ月目:返済額=462.2625円、償還額=300円、残額162.2625円 4ヶ月目:返済額=170.375625円、償還額=171円、残額0円 ※最後は小数だとおかしいので繰上げで整数になります どうか宜しくお願いしますm(_ _)m
433 :
427 :2005/05/18(水) 18:17:57
>>429 即レスありがとうございます。
若干結果が変わるようですが、大変参考になりました。
がんばってみます。
>>433 >>427 ではだめだと思うぞ。for文の条件式はさすがにいいだろうと
思い、次のようなプログラムを作った。でもこれ入力に対応してない
んだよね。もう少しいじれば何とかなると思うんだが・・・・
#include <stdio.h>
int main(void)
{
int i = 1, k;
for (k = 8; k < 256; k *= 2)
for (; i <= k; i++) {
int j = (i - 1) / k + 1;
printf("%d %d, ", i, j * k);
}
return 0;
}
[1] 授業単元: アルゴリズム論 [2] 問題文(含コード&リンク):キーボードから任意の整数(これをキーという)を入力する。 データの入った配列を前から順に調べてキーと一致するデータをもつ要素の 添字を表示する。一致しない時はー1を表示する。 このプログラムを作りなさい。 [3] 環境 [3.1] OS:WinXP [3.2] コンパイラ(バージョン): [3.3] 言語:C言語 [4] 期限:2005年5月19日13時まで 明日のテストに必ずでるそうなんですがさっぱりわかりません、先輩方助けてください。
437 :
デフォルトの名無しさん :2005/05/18(水) 18:36:23
>>427 多分これでいいはず。
ポイントは、正規化する数字が2乗されていること。
普段あんまり使わないというか、古のテクニックが役に立ったというところか。
void main(){
int i;
int j=0,k=0;
puts("Input...");
scanf("%d",&i);
while(j<i){
j=8*(1<<k-1);
k++;
}
printf("%d",j);
}
438 :
437 :2005/05/18(水) 18:39:47
>>437 >j=8*(1<<k-1);
j=8*(1<<k);
の間違い。
-1しても意味ない。
>>436 馬鹿丸出しで申し訳ないが、添字って何を指しているの?
要素の中身を表示すればいいのかな?
a[n]ならnが添字
>>436 データの入った配列がどんなのかは知らんから適当に作った。
#include <stdio.h>
#define NUM 4
int main(int argc, char *argv[])
{
int a[NUM] = {2, 4, 8, 16};
int i, key;
scanf("%d", &key);
for(i = 0; i < NUM; i++)
{
if(a[i] == key)
{
printf("%d\n", i);
return 0;
}
}
printf("-1\n");
return 0;
}
>>440 ああ、そっちか。
サンキュー。勉強になった。
>>437 シフトを使わないで、必要ない所も削ったら次のようになった。
どちらにしろ、for()やwhile()の条件式が使えないと無理そう。
int main(void)
{
int i = 1, j, k, l;
scanf("%d", &l);
for (k = 8; k < l; k *= 2)
i = k;
j = (i - 1) / k + 1;
printf("%d\n", j * k);
return 0;
}
>>436 #include <stdio.h>
#define DataMax (10)
int Find(int* data,int key,int n){
int i=0;
for(i=0;i<n;i++){
if(data[i] == key){
return i;
}
}
return -1;
}
int main(void)
{
int data[DataMax];
int key=0,i=0,ret=0;
for(i=0;i<DataMax;i++){
data[i]=i;
}
puts("Input Key...");
scanf("%d",&key);
ret=Find(data,key,DataMax);
printf("Result:%d",ret);
return 0;
}
>>427 完全に条件判断削除
bit演算使うの久しぶりだったよ
#include<stdio.h>
int main(){
int i;
puts("Input...");
scanf("%d",&i);
--i;
i |= (i
>>8 );
i |= (i
>>4 );
i |= (i
>>2 );
i |= (i
>>1 );
i+= 8;
i&=~7;
printf("%d",i);
}
いやいいのか、すまん
448 :
437 :2005/05/18(水) 19:08:16
>>445 うえー、まじで条件分岐ないし。
なにやってんだかわからNEEEEE。
>>446 回答ください。
10000までというのがミソだったな
ハイ、次々。
451 :
445 :2005/05/18(水) 19:20:20
簡単に説明。
簡単に説明するため基本的に2進数で書きます
出力が100000になるためには10001 <= i <= 100000が条件
ここでi = i-1を代入すると
10000 <= i <= 11111
ここからi-1の立っている最上位ビットの一つ左のbitだけ立った数が目的の数とわかります
でi|(i
>>8 )と似た形の連続の式は立っている最上位ビットを最下位ビットまで普遍させるための式
これで数は11111になるので1を最後に加えることによって目的の数を作る。
ただ、1<=i<=8の時だけはi=8になるという制約があるので7を足して~7とのandをとって強制的に繰上げを行っている。
ただし65536を超えると動作しないの注意。
452 :
427 :2005/05/18(水) 19:20:28
うへぁ!!!神!!!! 何やってるかわからないけど完璧でした! 問題がおかしいと思って今問い合わせていましたが 赤っ恥かきそう・・・ 勉強させてもらいます ありがとうございました。
453 :
◆u2YjtUz8MU :2005/05/18(水) 20:00:51
[1] 授業単元: プログラミング課題 [2] 問題:0~19までの中からランダムにすべて異なる数5個を作りたいです。 2個だったら1個目と2個目を比べて異なる数だったら終わりにすれば簡単にできるのですが 5個の場合も同じように全部比べて異なる数が出るまで乱数作り続けるしかないでしょうか? [3] 環境 : C,C++どちらでも可 [4] 期限:無期限 [5] その他の制限:
>>453 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXN 20
void random_shuffle(int a[], int n)
{
int i, j;
srand((unsigned)time(NULL));
for (i = n - 1; i > 1; i--) {
int t;
j = rand() % i;
t = a[i], a[i] = a[j], a[j] = t;
}
}
int main(void)
{
int i, a[MAXN];
for (i = 0; i < MAXN; i++)
a[i] = i;
random_shuffle(a, MAXN);
for (i = 0; i < 5; i++)
printf("%d%s", a[i], (i == 4) ? "\n" : ", ");
return 0;
}
>>453 C++だったら、std::random_shuffle()というアルゴリズムを使えばいい。
>>453 C++ならこうする。
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
std::srand((unsigned int)(std::time(0)));
std::vector<int> v(20);
for (int i = 0; i < v.size(); ++i) v[i] = i;
std::random_shuffle(v.begin(), v.end());
v.resize(5);
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
}
457 :
デフォルトの名無しさん :2005/05/18(水) 20:27:37
[1] 授業単元: 関数の扱い [2] 問題文(含コード&リンク): 1:適当な角度(x)を引数とし、戻り値としてsin^2(x)+cos^2(x)を与える関数プログラムをかけ。 2:1で使ったプログラムを使い、0°~90°の間で10°刻みに計算した結果を表示するプログラムを書け。 だたし、プロトタイプ宣言を省略してはいけない。 [3] 環境 [3.1] OS:XP [3.3] 言語:C/ [4] 期限:2005年05月20日まで。 [5] その他: 1の問題はこんなプログラムを考えてみたのですが、これだと問題が要求しているプログラムとは違いますよね・・・ 宜しくお願いします。 #include <stdio.h> #include <math.h> int main (void) { float a,b,c,x; printf("xの角度を入力してください\nx="); scanf("%f", &x); a=sin(x/180); b=cos(x/180); c=a*a+b*b; printf("sin^2(x)+cos^2(x)=%f\n",c); return 0; }
別関数にしろって事だろ。 double sincos(double x) { return pow(sin(x), 2) + pow(cos(x), 2); }
459 :
デフォルトの名無しさん :2005/05/18(水) 20:37:19
>>457 >プロトタイプ宣言を省略してはいけない。
main関数とは別に関数をつくらなきゃいけない。
>>458 のように。
#include <stdio.h>
#include <math.h>
double sincos(double x){ return pow(sin(x), 2) + pow(cos(x), 2); }
int main (void)
{
double c,x;
printf("xの角度を入力してください x=");
scanf("%lf", &x);
c = sincos(x)
printf("sin^2(x)+cos^2(x)=%lf\n",c);
return 0;
}
久々に人に対して教えるんで、自信ないけど、まあこんな感じだw
460 :
453 ◆u2YjtUz8MU :2005/05/18(水) 20:37:44
>>457 あーそれと、Cのsin()、cos()はradianを引数に取るので、入力する
角度の指定が必要。
弧度法ならそのままでいいが、degreeなら、2π/360=π/180を掛けとけ。
>>453 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int n = 5;
int i;
srand((unsigned)time(NULL));
for (i = 0; n > 0; i++) {
if (rand() % (20 - i) < n) {
printf("%d\n", i);
n--;
}
}
return 0;
}
[1]授業単元:アルゴリズム論I [2]キーボードから0から100までの偶数をランダムに入力し、配列に納めていく。その際、入力した 値の1/2の値の添字をもつ配列要素に入力するデータを納めるものとする。その後、別のグループで入力された 配列要素の値のみを表示する。このプラグラムを書け。実行時には20個のデータを入力しなさい。 [3]環境 [3.1]OS:WinXP [3.2]コンパイラ(バージョン): [3.3]言語:C言語 [4]期限:2005/05/20まで 問題文を読んでもさっぱり、、、ご教授お願いします;
464 :
365 :2005/05/18(水) 21:02:13
466 :
345 :2005/05/18(水) 22:10:45
[1] 授業単元:基礎プログラミング [2] 問題文(含コード&リンク): n個の乱数(整数)を発生させ、そのn個の整数が素数であるかどうかを判別するプログラムを作成せよ。但し、整数の上限は1000とする。 [3] 環境 [3.1] OS:linux [3.2] コンパイラ(バージョン): [3.3] 言語: [4] 期限:今日中 すいません明日提出なので宜しくお願いします;;
>>466 0も正数だっけ?わすれた!
#include <stdio.h>
#include <stdlib.h>
int issosu( long int val )
{
long int i;
for( i = 2; i<val ; i++ )
if( val % i == 0 ) return 0;
return 1;
}
int main( int argc, char *argv[] )
{
long int val, n, count;
for( count=0; count<atoi( argv[1] );count++ ) {
do {
val = random();
} while( ! ( val > 0 && val <=1000) );
if( issosu( val ) ) {
printf( "%ld は素数である\n", val );
}
else {
printf( "%ld は素数でない\n", val );
}
}
return 0;
}
整数だが正の数ではない
469 :
デフォルトの名無しさん :2005/05/18(水) 22:41:37
>>466 せめて、言語がCかC++かくらいは書こうや。
#include <stdlib.h>
#include &math.h>
/* 0以上x未満の乱数を返す */
double random(int x)
{
return rand() / ((double) MAX_RAND + 1) * x;
}
/* nが素数なら真を返す */
int is_prime(int n)
{
int i, last;
if (n < 2)
return 0;
if (n == 2)
return 1;
last = sqrt(n);
for (i = 3; i <= last; i += 2)
if (n % i == 0)
return 1;
return 0;
}
471 :
345 :2005/05/18(水) 22:53:38
>>470 すいませんCです・・m(_ _)m
やってみたのですがエラーがでてしまいました
472 :
デフォルトの名無しさん :2005/05/18(水) 22:55:50
>>471 ×&math.h>
○<math.h>
474 :
345 :2005/05/18(水) 23:02:45
>>473 そこは直してあるのですが
だめみたいです・・・printfで素数を表示するのもどうしたらいいのでしょうか
おう。<と書こうとしたんだが、セミコロン忘れてたよ-だわ。
>>466 折角作ったからうp。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define PrimeMax (1000)
#define TRUE (1)
#define FALSE (0)
int IsPrime[PrimeMax];
void hurui(int *p,int n){
int i,j;
for(i =2;i<n;i++){for(j=2;(i*j)<n;j++){
p[i*j]=TRUE;
}}}
int PrimeCheck(int *p,int cmp){
if(cmp>=PrimeMax) return -1;
return p[cmp] ? FALSE:TRUE;
}
int main(void)
{int i,n,pri;
srand(time(NULL));
memset(IsPrime,0x00,sizeof(int)*PrimeMax);
hurui(IsPrime,PrimeMax);
for(i=0;i<PrimeMax;i++) if(PrimeCheck(IsPrime,i) == TRUE) printf("%d ",i);
puts("\n");
puts("Input N...");scanf("%d",&n);
for(i=0;i<n;i++){
if(PrimeCheck(IsPrime,pri=(rand()%PrimeMax)) == TRUE){
printf("%d is prime! \n",pri);
}else{
printf("%d is Not prime! \n",pri);
}}return 0;}
>>476 今日はミスが多いな。
#include <memory.h>
を追加。
後は、全角スペースを旨く取り除いてくれ。
480 :
デフォルトの名無しさん :2005/05/18(水) 23:23:56
[2] 問題文(含コード&リンク): ファイルを読み込みソート(選択ソート法)してファイル出力する [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):VisualStudio.NET [3.3] 言語:C++ [4] 期限:2005年5月19日21:00まで 構造体配列を使用した時の文字列の扱いかたがわかりません。 エラー: error C2106: '=' : 左のオペランドが、左辺値になっていません。 SubTable[k+1].name=SubTable[k].name; SubTable[k].name=name; このような代入はできないようです。どうすればいいのでしょうか structSUBJECT { intcode;// 科目コード charname[ SUBNAME_LEN + 1 ];// 科目名 (+1はNULLの分) intdayCode;// 曜日 (+1はNULLの分) inthour;// 時限 }; struct SUBJECTSubTable[ max ];// 科目データ構造体配列の定義 //途中省略// voidSelSort( int no, SUBJECT* SubTable ) { int n,k,w1,w3,w4; char name[ SUBNAME_LEN + 1 ]; for(n=1;n<no;n++){ w1=SubTable[n].code; name=SubTable[n].name; w3=SubTable[n].dayCode; w4=SubTable[n].hour; for(k=n-1;k>=0;k--){ if(SubTable[k].code>w1){ SubTable[k+1].code=SubTable[k].code; SubTable[k].code=w1; *この部分がわかりません-> SubTable[k+1].name=SubTable[k].name; -> SubTable[k].name=name; //以下省略
>>479 俺も酒飲みながら片手間に書いてるとよく間違う(^_^;)
趣味の時間だしな。
>>480 char[]型の代入はサポートされてないがな。
memcpy or strcpy使うか、そもそもstd::stringに変えてしまうかしたほうが良いと思う。
>>480 strcpy()
C/C++には配列のコピー演算子はない。C++でクラスなら代入演算子や
コピーコンストラクタを定義する事はできる。またPODでも構造体なら
operator=がデフォルトで存在する。
>>481 酒を飲んでるわけじゃないんだけど、しらふでもこの有様で。:)
コンパイル位は通すべきだった。
VC2003のコンソールプロジェクト使ってるんだけど、
開いたときに最初から書いてあるコードを削除するときにポカしまくりで。
いや、まいった。何でブランクプロジェクトがなくなったんだろ。スッゴイ不便。
愚痴になっちゃった。
今後精進します。
>>484 あるよ。
ウィザードのダイアログの左側メニューで
「アプリケーションの設定」を選択後、
「空のプロジェクト」チェックボックスを選択汁。
487 :
デフォルトの名無しさん :2005/05/18(水) 23:59:31
>>485 ありがとうございます。少し理解に苦しむところもありますが、きちんと実行できました。ただ、私はまだ初心者なので私の作った物の推敲をしてくれればと思います。よろしくおねがいします
>>486 あ''~~~ぁ!!!!
背景と同化してて選択できるなんて全く思いつかなかった。
ありがとう、一個賢くなったよ。
[1] 授業単元: アルゴリズムとデータ構造 [2] 問題文(含コード&リンク): 与えられた配列Xについて、35以上かつ95未満の要素の数を求めよ。 それをユーザ関数を使ってあらわせ。 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ(バージョン):bcc [3.3] 言語:C [4] 期限:今日中 [5] その他の制限: 例題に上記の処理を追加する問題でした。 ユーザ関数にする前までは出来たので、書いておきます。 よろしくお願いします。 #include <stdio.h> int main(void) { int x[16]={53,21,34,31,25,129,12,80,28,98,7,24,92,51,54,5}, count[11],i,d,n,a; n=16; a=0; for(i=0;i<=10;i++) count[i]=0; for(i=0;i<=n-1;i++) { d=x[i]/10; if(d>10) d=10; count[d]++; } for(i=0;i<=9;i++) printf("%5d台 :%2d\n",i*10,count[i]); printf("100以上 :%2d\n",count[10]); for(i=0;i<=n-1;i++) if(35<=x[i] && x[i]<95) a++; printf("35以上95未満の要素の数は%d\n",a); return 0; }
>>for(i=0;i<=n-1;i++) if(35<=x[i] && x[i]<95) a++; for(i=0;i<=n-1;i++) if(IsMatch(x[i])) a++; /*----IsMatch-----------*/ int IsMatch(int val){ if(35<=val && val<95){ return 1; }else{ return 0; } } /*----------------------*/ こんな感じか?
491 :
489 :2005/05/19(木) 00:45:23
>490 ありがとうございます。 voidでやってつまづいたので、intでやってみます。 自分でやってみたのは下記のものなのですが、 ユーザ関数とポインタがいまいち理解できていないため エラーが出てしまいます。 もしよければvoidでのやり方もお願いします。 youso(n); void youso(int *x) { int i,n,a; for(i=0;i<=n-1;i++) if(35<=x[i] && x[i]<95) a++; printf("35以上95未満の要素の数は%d\n",a); }
492 :
デフォルトの名無しさん :2005/05/19(木) 00:54:31
>>407 です。
すいません。
どなたか助けていただけないでしょうか。
これが出来ないと、次の実験でも使えなくて、
これから先の課題が出来ないのです。
ほんと、お願いします。
align関数を埋めるだけだと思うのですが・・・。
お願いします。
>>491 こんな感じか??
#include <stdio.h>
void youso(int *x,int n) {
int i,a=0;
for(i=0;i<=n-1;i++) if(35<=x[i] && x[i]<95) a++;
printf("35以上95未満の要素の数は%d\n",a);
}
int main(void) {
int x[16]={53,21,34,31,25,129,12,80,28,98,7,24,92,51,54,5},
count[11],i,d,n,a;
n=16;
a=0;
for(i=0;i<=10;i++) count[i]=0;
for(i=0;i<=n-1;i++) {
d=x[i]/10;
if(d>10) d=10;
count[d]++;
}
for(i=0;i<=9;i++) printf("%5d台 :%2d\n",i*10,count[i]);
printf("100以上 :%2d\n",count[10]);
/*
for(i=0;i<=n-1;i++) if(35<=x[i] && x[i]<95) a++;
printf("35以上95未満の要素の数は%d\n",a);
*/
youso(x,n);
return 0;
}
494 :
489 :2005/05/19(木) 01:18:00
>493 ありがとうございます! すごく悩んでたのですっきりしました。 C言語の授業もっとマジメに受けておくべきでしたorz 勉強しなおさなくては。
495 :
デフォルトの名無しさん :2005/05/19(木) 01:24:11
>>ALL おやすみ~。
497 :
463 :2005/05/19(木) 06:14:09
[1]授業単元:アルゴリズム論I [2]キーボードから0から100までの偶数をランダムに入力し、配列に納めていく。その際、入力した 値の1/2の値の添字をもつ配列要素に入力するデータを納めるものとする。その後、別のグループで入力された 配列要素の値のみを表示する。このプラグラムを書け。実行時には20個のデータを入力しなさい。 [3]環境 [3.1]OS:WinXP [3.2]コンパイラ(バージョン): [3.3]言語:C言語 [4]期限:2005/05/20まで 今日中に出さないとまずいので、何卒よろそくおねがいします;;
>>497 問題正しい?
「入力された回数を配列要素に代入する」なら判るけど...
"別のグループで入力された配列要素の値のみを表示"の意味がわからない...orz
500 :
デフォルトの名無しさん :2005/05/19(木) 08:21:54
要素数3(全部char型)の構造体にファイルから文字列を読み込んで格納したいのですが、 ファイルの中身と実際格納する文は何と書いたらいいのでしょうか? テキストがファイルの入出力まで記述されておらず、調べてもいまいち分かりませんでした。 例えば、以下のように格納したいと思います。 main関数で実際そう宣言してもいいのですが、以下のように3×3では済まずとても大きくなるもので… structure std[] = { {"aaa","bbb","ccc"}, {"ddd","eee","fff"}, {"ggg","hhh","iii"}, }
>>500 typedef struct str_tag
{
char hoge[32 + 1];
char hogehoge[32 + 1];
char hogehogehoge[32 + 1];
}STR;
ならば
STR str;
FILE *fp = fopen("hoge.dat", "r");
fscanf(fp, "%s%s%s", str.hoge, str.hogehoge, str.hogehogehoge);
502 :
463 :2005/05/19(木) 08:48:24
[1]授業単元:アルゴリズム論I [2]キーボードから0から100までの偶数をランダムに入力し、配列に納めていく。その際、入力した 値の1/2の値の添字をもつ配列要素に入力データを納めるものとする。その後、別のループで入力された 配列要素の値のみを表示する。このプラグラムを書け。実行時には20個のデータを入力しなさい。 [3]環境 [3.1]OS:WinXP [3.2]コンパイラ(バージョン): [3.3]言語:C言語 [4]期限:2005/05/20まで すいません、問題文を一部間違っていました、大変申し訳ありません。
#include<stdio.h> #define INPUTVAL_MAX 100 int main( int argc, char* argv[] ) { int data[ INPUTVAL_MAX / 2 ]; int v; int i; for ( i = 0; i < INPUTVAL_MAX / 2; i++ ) data[ i ] = -1; printf( "Please do data input.\n" ); printf( "'Ctrl + Z' key for end.\n" ); while ( 1 ) { printf( "data = ?" ); if ( scanf( "%d", &v ) == EOF ) break; if ( 0 <= v && v <= INPUTVAL_MAX && v % 2 == 0 ) { data[ v / 2 ] = v; } else { printf( "Illegal data.\n" ); } } printf( "Inputted data.\n" ); for ( i = 0; i < INPUTVAL_MAX / 2; i++ ) if ( data[ i ] >= 0 ) printf( "%d\n", data[ i ] ); return ( 0 ); }
504 :
デフォルトの名無しさん :2005/05/19(木) 13:39:58
>>13 違う。
もっと前からタイトルは
>>1 の好きなようにしていた。
[1]アルゴリズム論I [2]配列に0から100までの偶数を先頭から順に間を空けずに詰める。キーボードから1から99の間の奇数を入力し その数と要素の値を順次比較する。そしてその数を順序関数を維持して配列に納める。その後、全データを表示する。 [3]環境 [3.1]OS:WinXP [3.2]コンパイラ(バージョン): [3.3]言語:C言語 [4]期限:2005年5月20日17時まで 今年の4月からC言語を学び始めたのですがさっぱり、、、先輩方ご教授お願い致します。
#include<stdio.h> #define INPUTVAL_MAX 100 int main( int argc, char* argv[] ) { int data_even[ INPUTVAL_MAX / 2 + 1 ]; int data_odd[ INPUTVAL_MAX / 2 ]; int v; int i; for ( i = 0; i <= INPUTVAL_MAX / 2; i++ ) data_even[ i ] = i * 2; for ( i = 0; i < INPUTVAL_MAX / 2; i++ ) data_odd[ i ] = -1; printf( "Please do data input.\n" ); while ( 1 ) { printf( "'Ctrl + Z' key for end.\n" ); printf( "data = ?" ); if ( scanf( "%d", &v ) == EOF ) break; if ( 0 <= v && v <= INPUTVAL_MAX && v % 2 == 1 ) { data_odd[ v / 2 ] = v; printf( "All data.\n" ); for ( i = 0; i <= INPUTVAL_MAX; i++ ) { switch ( i % 2 ) { case 0 : printf( "%d\t", data_even[ i / 2 ] ); break; case 1 : if ( data_odd[ i / 2 ] >= 0 ) printf( "%d\t", data_odd[ i / 2 ] ); break; } } printf( "\n" ); } else { printf( "Illegal data.\n" ); } } return ( 0 ); }
[1] 授業単元:データ構造 [2] 問題文(含コード&リンク):ろだのC/C++宿題スレ42代目3のNo.423です。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:明日の午前八時まで [5] その他の制限:特にないです。 どうかよろしくおねがいします。ごめんなさい
ステレオ16bitWAVEファイルの左右個別の平均音量をdBで取得したいです。 short型で左右別の配列にデータを格納までは出来たのですが、計算方法が分かりません。 dB=20*log(A1/A2) A1とA2の振幅が、この場合何を意味しているのでしょうか?
512 :
デフォルトの名無しさん :2005/05/19(木) 18:20:21
>>402 の損失率と呼量を求めるものもどなたか教えてください。
>>510 デシベルは相対的な単位だから、wavファイルから直接デシベル
単位で音圧を求めることは出来ない。
>>511 あ、あ、ありがとうございます。
もっとCの練習します。
>>510 A1: 入力音量
A2: 基準音量(1Vrms だったっけ)
入力信号は 16bit だと, 折れ線とか対数とかで圧縮してあると思うぞ.
>>389 #include <stdio.h>
int main( void )
{
double a, b, val1, val2, val3;
int n, count;
printf( "呼量:" );
scanf( "%lf", &a );
printf( "回線数:" );
scanf( "%d", &n );
val1 = val2 = val3 = 1;
for( count=1; count<=n; count++ ){
val1 *= n;
val2 *= a;
val3 += val2 / val1;
}
b = val2 / val1 / val3;
printf( "損失率:%lf\n", b );
return 0;
}
517 :
デフォルトの名無しさん :2005/05/19(木) 19:45:12
以下URLにあるプログラムなのですが、コンパイル時に
002.c: In function `main':
002.c:105: error: incompatible type for argument 1 of `search'
と表示されてしまいます。
どこがどう違うのかかれこれ小一時間色々やってますがさっぱりです…
main関数のsearch文のstrが悪いってことですよね?
ファイル操作や型宣言のどこかでしょうか?
http://www.za.ztv.ne.jp/yosi-h/
>>517 searchの第1引数はDICの配列なのに、mainではSTRを
入れているから。
520 :
519 :2005/05/19(木) 20:11:52
521 :
517 :2005/05/19(木) 20:16:18
>>518 ありがとうございます!確認してみます。
>>516 見て理解します。
ありがとうございました。
524 :
519 :2005/05/19(木) 21:14:49
>>523 始めはC++で作成していたのですが、出題者に数回添削されていたら
何時の間にかC++なのにCっぽく(汗
エラーの原因がわからなくなってしまいまして・・・よろしくお願いします
>>524 >j = (int)argv[num]; //argvから数値を読み込み、jに代入する
この行何?普通atoi()かsscanf()だと思うが・・・・
526 :
524 :2005/05/19(木) 21:33:50
>>525 あ、本当だ・・・何時の間にか直されている(汗
(元はatoi()で作っていました)
よろしくお願いします。
>>526 これさあ、全部C++で作り直して、一発で合格させてもらった方がいいよ。
多分担当の教官は、頭が古くてC++がわからず、C風にどんどん直すも、
間違いだらけの添削やってるみたいだから。
529 :
524 :2005/05/19(木) 22:23:33
なるほどです。 *数値が足りない *0による割り算が発生する *全てに当てはまらない場合 の場合の条件はどのようにすればいいのか教えてもらってよいでしょうか? 条件がわからなくなってしまいましたので・・・(汗
[1] 授業単元: 3DCGプログラミング [2] 問題文(含コード&リンク):(1)「Vector3D」型に対し、内積値を返す関数 innerProdを作成せよ。引数は以下の構成とする。 double innerProd(struct Vector3D v1, struct Vector3D v2); (2)「Vector3D」型に対し正規化を行う関数vecNormalizeを作成せよ。引数は 以下のような構成とする。ただし、引数に0ベクトルが与えられた場合はなにも しないものとする。 void vecNormalize(struct Vector3D *v); [3] 環境 [3.1] OS:Win XP [3.2] コンパイラ(バージョン): [3.3] 言語:C++ [4] 期限:明日の午前6時までです [5] その他の制限: お力添えをいただければと思います。 どうかよろしくお願いします。
>>530 Vector3D型とはどんな型か分からないと、プログラムは書けないぞ。
>530 (1)はこんな感じかな。 ぐぐるさん見ながらだけどね。 何に使えるかわからない。 double innerProd(struct Vector3D v1, struct Vector3D v2){ return (v1.x*v2.x)+(v1.y*v2.y)+(v1.z*v2.z); }
>>530 double innerProd(struct Vector3D v1, struct Vector3D v2)
{
return (v1.x * v2.x + v1.y * v2.y + v1.z * v2.z);
}
void vecNormalize(struct Vector3D *v)
{
double norm = v->x * v->x + v->y * v->y + v->z * v->z;
if(norm != 0.0) {
v->x /= norm;
v->y /= norm;
v->z /= norm;
}
}
作るだけ作ったけど、
>>534 の忠告は正しい。
537 :
デフォルトの名無しさん :2005/05/19(木) 23:34:19
数学の素養が無いので以下を見て作った。
http://hakuhin.hp.infoseek.co.jp/main/as/vec3d.html#VEC3D_07 /*---------------------------------------------------------*/
#include <cmath>
void vecNormalize(struct Vector3D *v){
if(v == NULL) return;
double length = (v->x*v->x) + (v->y*v->y) + (v->z*v->z);
if(length == 0.0) return;
length = std::sqrt(length);
if(length > 0) length= (1/length);
v->x = v->x*length;
v->y = v->y*length;
v->z = v->z*length;
return;
}
538 :
537 :2005/05/19(木) 23:35:52
おっと遅かったか。
539 :
530 :2005/05/19(木) 23:39:39
すみませんでした。 Vector3D型なんですけど、 struct Vector3D{ double x; double y; double z; }; です。 構造体を使った問題なんですが 構造体の作り方や宣言の仕方、それをメイン関数にどう反映させていいものなのかが よくわかりません・・・ 二つのベクトルにそれぞれ数値を入れて内積値を出力させるというものに したいのです。 自分でも今現在いろいろ検索してみて調べてるのですが 一つのプログラムにまとめようとすると混乱してしまって・・・
[1] 授業単元: C言語 [2] 問題文(含コード&リンク):for文を用いて1~nまでの二乗の積算値を求めるプログラム (1+2^2+3~2+4~2+5~2+・・・・)を作成せよ [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:明日中 [5] その他の制限:特になしです。よろしくお願いします。
上の(1+2^2+3~2+4~2+5~2+・・・・)は (1+2^2+3^2+4^2+5^2+・・・・)の間違いです。すいません。
int main(void){ int n,s=0; scanf("%d",&n); for(;n>0;n--) s += n*n; printf("%d\n",s); return 0; }
>>530 こんな感じかい?
数字は好きにいじってちょ。
#include <iostream>
double innerProd(struct Vector3D v1, struct Vector3D v2){
return (v1.x*v2.x)+(v1.y*v2.y)+(v1.z*v2.z);
}
int main(){
struct Vector3D v1,v2;
v1.x=1;v1.y=1;v1.z=1;
v2.x=1;v2.y=1;v2.z=1;
double ip=innerProd(v1,v2);
std::cout<<ip<<std::endl;
}
>>540 #include <stdio.h>
int main( int argc, char *argv[] )
{
int n, sum;
n = atoi( argv[1] );
sum = 0;
for( ;n > 0; n-- )
sum += n*n;
printf( "%d\n", sum );
return 0;
}
545 :
530 :2005/05/20(金) 00:02:11
多くのかたがたにお答えいただきまことにありがとうございました。 また質問の内容に不明な点があったことについてお詫びします。 みなさんからお答えいただいたものをもとに頑張ってみようと思います。
546 :
543 :2005/05/20(金) 00:19:17
>>543 はちょっとおせっかいだったかな。すまぬ。
547 :
540 :2005/05/20(金) 00:22:13
ありがとうございました。
548 :
デフォルトの名無しさん :2005/05/20(金) 08:48:06
>>407 です。
どなたか助けてもらえないでしょうか。
明日までなのですが、自分にはお手上げです。
Matrixの1スペースを決める際に、上を-1したものか、下を-1したものか、
ななめを表の数字で足したものかのどれかの一番大きいものを取るのです。
もし、問題がよく分からなかったら説明しなおします。
たぶん、struct AminoAcidAlignmentの中で、
vector<vector<int> >
vector<vector<Move>>を使って
for(int i=1;i<=length1;i++)
for(int j=1;j<=length2;j++)
const int some = kscoreMatrix[s1.AAnums[i=1][s2.AAnums[j-1]];
本当、よろしくお願いします。
549 :
デフォルトの名無しさん :2005/05/20(金) 09:33:15
山田改?
>>548 問題文の
「右、左、斜め上で一番大きい数字を取る。左右と同じ数字の場合は斜め上優先。」
がわかんね~。どういう事?どこを基準で考えているの?
552 :
デフォルトの名無しさん :2005/05/20(金) 12:18:11
>>551 ありがとうございます。 わたしの書いた問題文の後半の後ろから直線的に辿っていくっていうのは、 たぶんどうでもいいと思う。 ただ表を完成させて、一番右下の数字がどれだけ似かよっているかを 表すから、それを返せばいいんだと思う。 >>右、左、斜め上で一番大きい数字を取る。左右と同じ数字の場合は斜め上優先。 右じゃなくて、上でした。 一つマスを埋めるたびに、左の数を-1した数と、上の数を-1した数と その埋めなければならない場所に相当した数を表から取って来て、 その数と斜め上の数を足したものを比べて、 一番大きい数をそこに埋めていくとやります。 それをやって出来上がった表の一番下の数がどれだけ似通っているかを 示す数です。
553 :
551 :2005/05/20(金) 13:20:33
554 :
デフォルトの名無しさん :2005/05/20(金) 13:40:23
>>551 ありがとうございます。
でも、vector<vector<int> >
vector<vector<Move>>を使って
あのプログラムに埋め込まなきゃいけないんです・・・。
>>554 アホか。そういうのは先に「その他の条件」に書いておけ。
その為のテンプレだろうが。
556 :
551 :2005/05/20(金) 14:18:55
オレ C++ 分らないんだよね・・・。
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):身長(cm,センチメートル)と体重(kg,キログラム)をヤードポンド法に換算するプログラムを作成せよ. [3] 環境 [3.1] OS: linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:5月23日 [5] その他の制限: グローバル変数は使用しない. 以下の関数を作ること 身長(cm)と体重(kg)を入力する関数(身長,体重が戻り値) 身長を計算する関数(身長(cm)を引数,変換結果を戻り値) 体重を計算する関数(体重(kg)を引数,変換結果を戻り値) 結果を表示する関数. 身長は○フィート○インチと表示すること. 体重は○ポンドと計算すること. cm, kgとヤードポンド法の間には以下のような関係がある. 1ヤード(yd)=3フィート(ft)=91.44cm 1フィート(ft)=12インチ(in)=30.48cm 1インチ(in)=2.54cm 1ポンド(lb)=0.45359237kg 宜しくお願いします!
>>557 それくらい自分の脳みそで考えてできないとまずいだろ。
[1] 授業単元:C言語 [2] 問題文:if文を用いてジャンケンプログラムを作れ。 [3] 環境 [3.1] OS:WindowsXP Pro SP2 [3.2] コンパイラ(バージョン): [3.3] 言語:C++ [4] 期限:5月23日 [5] その他の制限:グーの入力…'G' チョキの入力…'T' パーの入力…'P' ※「あいこ」も判定せよ…「あいこです」表示 ※'G'、'T'、'P'以外の入力は「入力エラー」と表示 マジ勘弁してください先生orz 宜しくお願いします。
>>559 単元がC言語なのに、プログラム言語がC++とはこれ如何に
>>557 #include <stdio.h>
#include <math.h>
struct HW{float cm,ft,in,kg,lb;};
HW input(){HW ret={0};printf("Height(cm),Weight(kg)= ");scanf("%f,%f",&ret.cm,&ret.kg);return ret;}
float cm2in(float *ft,float *in,float cm){*ft=floorf(cm/30.48f);*in=(cm-*ft*30.48f)/2.54f;return *in;}
float kg2lb(float *lb,float kg){*lb=kg/0.45359237f;return *lb;}
void output(HW hw){printf("Height= %.3f ft %.3f in\nWeight= %.3f lb\n",hw.ft,hw.in,hw.lb);}
int main(){
HW hw=input();
cm2in(&hw.ft,&hw.in,hw.cm);
kg2lb(&hw.lb,hw.kg);
output(hw);
return 0;}
>>557 最近算数やってないので出力を確認すること。
#include <stdio.h>
#include <math.h>
#define INCH ((double)(2.54))
#define FEET (12*INCH)
#define POND ((double)( 0.45359237))
typedef struct Pair_{
double fst,snd;
}Pair;
Pair Input(){
Pair p;
puts("Input 身長(cm)");
scanf("%lf",&p.fst);
puts("Input 体重(kg)");
scanf("%lf",&p.snd);
return p;
}
double cmToin(Pair* p ){return p->fst/INCH;}
double kgTold(Pair* p){return p->snd/POND;}
void Output(Pair* p){
int feet=p->fst/FEET; int inch=fmod(p->fst,FEET);int pond=p->snd;
printf("身長:%dフィート%dインチ\n体重:%dポンド",feet,inch,pond);
return;}
int main(){
Pair p,p2;
p=Input();
p2.fst=cmToin(&p);
p2.snd=kgTold(&p);
Output(&p2);
}
>>559 #include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(static_cast<unsigned int>(time(0)));
char c, cpu;
cpu = static_cast<char>(rand() % 3);
cout << "ジャンケンを入力してください (グー='G'、チョキ='T'、パー='P'): ";
cin >> c;
if(cpu == 0) { cpu = 'G'; cout << "CPU: グー" << endl; }
else if(cpu == 1) { cpu = 'T'; cout << "CPU: チョキ" << endl; }
else { cpu = 'P'; cout << "CPU: パー" << endl; }
if(c == cpu)
cout << "あいこです" << endl;
else if(c == 'G' && cpu == 'T' || c == 'T' && cpu == 'P' || c == 'P' && cpu == 'G')
cout << "あなたの勝ちです" << endl;
else if(c == 'G' && cpu == 'P' || c == 'T' && cpu == 'G' || c == 'P' && cpu == 'T')
cout << "あなたの負けです" << endl;
else
cout << "入力エラー" << endl;
return 0;
}
565 :
デフォルトの名無しさん :2005/05/20(金) 16:08:21
>>555 すいません。書き直します。
【質問テンプレ】
[1] 授業単元: バイオインフォマティックス
[2] 問題文(含コード&リンク):
http://www.geocities.jp/arerenore1357/HW.cab この中に途中までのコードと問題文が含まれています。
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ(バージョン): MSVC
[3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:
たぶん、struct AminoAcidAlignmentの中で、
vector<vector<int> >
vector<vector<Move>>を使って
for(int i=1;i<=length1;i++)
for(int j=1;j<=length2;j++)
const int some = kscoreMatrix[s1.AAnums[i=1][s2.AAnums[j-1]];
ってやるんだと思います。
コードはだいたい出来ていて、あとは、align 関数を完成させるだけです。
本当、窮地なんです。
どなたかC++できる方、助けてください。お願いします!!
566 :
デフォルトの名無しさん :2005/05/20(金) 16:16:05
>>567 ジャンケンの手をエコーバックさせればもうちょっとフレンドリーになるが、忘れていた。
独自にやる気があったらやってくれ。
569 :
559 :2005/05/20(金) 16:30:12
>>560 C言語という授業なんですが、C++をやってるんです・・・
>>563 ありがとうございます。学校で盛り上がりましたw
まだ習っていない文法があったのでもうちょっと簡単にできないでしょうか?
それと、書き忘れていたことがありました・・・ 訂正します。
[1] 授業単元:C言語
[2] 問題文:if文を用いてジャンケンプログラムを作れ。
[3] 環境
[3.1] OS:WindowsXP Pro SP2
[3.2] コンパイラ(バージョン):
[3.3] 言語:C++
[4] 期限:5月23日
[5] その他の制限:グーの入力…'G' チョキの入力…'T' パーの入力…'P'
※「あいこ」も判定せよ…「あいこです」表示
※'G'、'T'、'P'以外の入力は「入力エラー」と表示
【実行画面例】
Aさんの手は? G
Bさんの手は? P
Bさんの勝ちです
↑こんな感じで表示できるようにお願いします。
>>569 ジャンケンでもそうだけど、後だし禁止。
>>570 中出しは・・・・してもいいのか?ハァハァ
>>571 突っ込むための穴が無いのでできません。残念!!
そこでコレの出番です。 つ「セキュリティーホール」
574 :
デフォルトの名無しさん :2005/05/20(金) 16:58:51
すみません、ほかの所で聞いたらスレ違いと言われてしまったので、ここで質問させていただきます。 [1] 授業単元:情報実験 [2] 問題文(含コード&リンク): 下のプログラムを実行すると以下の出力が得られた。値(1)、(2)、(3)を求めよ。 #include<stdio.h> int main(void){ int ai[3]={(1), (2), (3)}; int n; for(n=0;n<5;n++) printf("%d,%d\n", n, *(int *)(((char *)(ai+1))-n)); for(n=0;n<2;n++) printf("%d, %d\n", n, *((short *)(&ai[sizeof(ai)/sizeof(int)-1])+n)); } 出力結果 0, 1 1, 256 2, 65536 3, 16777216 4, 0 0, -9 1, 9 [3] 環境 [3.1] OS: Win XP [3.2] コンパイラ(バージョン): わかりません・・ [3.3] 言語:C [4] 期限:来週の火曜日まで [5] その他の制限: どうしてそうなるのかを考察すること (1)=0, (2)=1, (3)=-9 とすると最後の行以外は出るのですが、0から4の値と、最後の9がどうして出るのかがわかりません。どなたか教えてください。9は配列の外側に行ってるような気がするのですが・・。
そんなとこはみ出させちゃって、 これが良いのか!? ん?これがいいのか!!
ああ、入ってくるぅ~ トロイ入ってくるぅ~~!! トロイ「俺の(バックドア)でガバガバにしてやるぜ!」
>>574 (1) 0
(2) 1
(3) 655351
どうしてそうなるのかを考察すること
ああっ!エネマグラによるドライオーガズムで、一時間以上も逝きっぱなしよ!
>>574 これでわかるか?
<- ai[0]-> <- ai[1]-> <- ai[2]->
xx xx xx xx xx xx xx xx xx xx xx xx
0: 01 00 00 00
1: 00 01 00 00
2: 00 00 01 00
3: 00 00 00 01
4:00 00 00 00
0: f7 ff
1: 09 00
>>569 このプログラムには不備がかなりある。
つまりエラーチェックをもう少し進めよ。
#include <iostream>
int main(){
char Hund[2];
std::cout<<"Aさんの手は?";
std::cin>>Hund[0];
std::cout<<"Bさんの手は?";
std::cin>>Hund[1];
if(Hund[0] == Hund[1]){
std::cout<<"あいこです"<<std::endl;
return 0;
}
if(Hund[0] == 'P')
if(Hund[1] == 'G')std::cout<<"Aさんの勝ち。";
else std::cout<<"Bさんの勝ち。";
if(Hund[0] == 'T')
if(Hund[1] == 'P')std::cout<<"Aさんの勝ち。";
else std::cout<<"Bさんの勝ち。";
if(Hund[0] == 'G')
if(Hund[1] == 'T')std::cout<<"Aさんの勝ち。";
else std::cout<<"Bさんの勝ち。";
std::cout<<std::endl<<"End"<<std::endl;
}
584 :
デフォルトの名無しさん :2005/05/20(金) 18:24:11
以下のように4つのchar型の要素を持った構造体にファイルから文字列を読み込みたいのですが、 最後の文がおかしいらしくきちんと格納されません。 ファイルの中身と格納する文はどう書けばいいのでしょうか? とりあえずコンパイラを通すためにstr[0]のみに入れようとしたのですが、 例えばfor文で回しても変えられるのはstr[i]の部分だけですよね? ファイルの中身を str[0]のAAAに入れる文 ; str[0]のBBBに入れる文 ; str[0]のCCCに入れる文 ; str[0]のDDDに入れる文 str[1]のAAAに入れる文 ; str[1]のBBBに入れる文 ; str[1]のCCCに入れる文 ; str[1]のDDDに入れる文 としたとして、for文の2周目で2行目の文を入れる方法もよく分かりませんでした。 テキストがファイルの処理まで扱ってないためググって頑張ったのですが限界です('A`) typedef struct{ char AAA[20]; char BBB[20]; char CCC[20]; char DDD[20]; } STR; STR str[50] = {'\0'}; FILE *fp = fopen("001.dat", "r"); fscanf(fp, "%s%s%s%s", str[0].AAA, str[0].BBB, str[0].CCC,str[0].DDD);
>for文の2周目で2行目の文を入れる方法 入力関数はストリームの先頭から文字を「取り出す」(いい加減な説明だけど、最初はそういう理解で十分) だから、1周目で1行目の文を入れたら、(ストリームに1行目は残ってないので)自動的に2周目で2行目の文が入る。 (残ってない は実は嘘だけど気にすんな)
586 :
584 :2005/05/20(金) 18:39:30
>>585 アナルヘソ(・∀・)
指定しなくてもとにかく順番に入れてくれるってことですね。
ただファイルの中身とfscanf文は上記のようにしてあるのですが、
BBBに入れたい文がAAAに続けて入っていたりします。
きちんと区切って入れるにはどうしたらいいのでしょうか?
>>585 では無いが、区切り文字を入れると良いよ。
一般的なのは、ホワイトスペース、またはコンマかな。
本文に出てこない文字を区切り文字にするといい。
>>587 584のテキストはセミコロンで区切られているように見えるが。
おっと、見落としてた。 fscanf("%s;%s;%s;%s",str[0].AAA, str[0].BBB, str[0].CCC,str[0].DDD); でどうだろう??
fscanf(fp..... fpわすれてた。
591 :
584 :2005/05/20(金) 19:05:27
>>587 区切り文字はfscanf側ですね。
一応
>>584 のような記述で実行しての不具合だったので、
ファイル側は一応まともに区切られてはいるってことですよね。
今は自宅にいて試せる環境にないのですが、後日fscanf側を変更してやってみます。
>>585-590 みなさまありがとうございました。
592 :
デフォルトの名無しさん :2005/05/20(金) 19:06:43
うまく動きません。二分探索です。 #include <stdio.h> #define MAX 10 struct student { int key; char name[10]; }; struct student Student[MAX]={{8,"Hanada"},{5,"Goto"},{24,"Nishida"},{10,"Toh"},{3,"Sasaki"}}; int Num=5;
593 :
デフォルトの名無しさん :2005/05/20(金) 19:07:47
main() { int i; int tgt_key; while(1) { printf("Please input the key.\n"); if (scanf("%d", &tgt_key)==EOF) break; if((i=bi_search(tgt_key))!=-1) printf("Found! key=%d, Name=%s \n", Student[i].key, Student[i].name); else printf("Not found.\n"); } }
594 :
デフォルトの名無しさん :2005/05/20(金) 19:09:30
int bi_search(int target) { int hi, lo, mid; lo=0; hi=MAX-1; /* nは配列の大きさ */ while(lo <= hi) { /* この条件が成立しなければ,データは無い */ mid=(lo+hi)/2; /* 中央のデータのインデックス */ if (target==Student[mid].key) return mid; else if(target<Student[mid].key) hi=mid-1; /* 左半分を再探索 */ else lo=mid+1; /* 右半分を再探索 */ } return -1; /* 見つからなかった */ }
595 :
デフォルトの名無しさん :2005/05/20(金) 19:11:48
【質問テンプレ】 [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): ポーランド記法を逆ポーランド記法に変換するプログラムを作成せよ。 ただし、逆ポーランド記法は以下のトークンの列で表現する。 struct token{ enum{NUM,ADD,SUB,MUL,DIV}type; int value; }; NUMは数値を示し、ほかは演算記号です。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:なるべく早く [5] その他の制限: できればキューに格納してほしい
596 :
デフォルトの名無しさん :2005/05/20(金) 19:18:30
>>592 2分探索はソート済みのデータじゃないと無理。
hi=MAX-1;
でなく
hi= Num-1;
でないか?
>599 なんか変な仕様だな。 とりあえず、一つのListのvalueが一桁の数値を持つようだな。 これを踏まえてだな。 intに変換する関数。 int DisitToInt(disit *data); をつくって、intでごにょごにょして、 disit* IntToDisit(int val); を作ってというのが一つの案なんだが、 読み直してみると、結構面倒だな。 あっさりINT32分超えそう。 すまん、やくにたってないな。
えっと、やっぱり
>>252 >>477 は難しいんでしょうか。
さっぱり分からないので、「こーすればいいんじゃないの?」みたいなアドバイスでもいいのでご指南よろしくお願いします・・・
>>601 ご回答ありがとうございます。
・・・が,9999と1を入力しても10000にならないです・・・
>604 わざわざご丁寧に有難うございました。 考え方一つでここまで単純にすることができるんですね・・・
>>602 興味が無いわけではないけど、僕はWindows使いなので手が出ません。
まーソケットは扱ったこと無いから元々手が出ないかもしれんが。
608 :
デフォルトの名無しさん :2005/05/20(金) 22:31:33
>598 595のものですが関数のプロトタイプ宣言が 例)void change(char *pre,struct queue *postfix) な感じになればいいんです。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 1. 2つの整数を読み込み、最大公約数と最小公倍数を計算するプログラムを作成せよ.但し,main関数の他に以下の関数を必ず使用すること. 整数の読み込み(読み込んだ整数を戻り値とする関数) 最大公約数の計算(2つの整数を引数,結果を戻り値) 最小公倍数の計算(2つの整数を引数,結果を戻り値) 結果を表示する関数(最大公約数,最小公倍数を引数) 2. フェボナッチ数列{a_n}の要素,a_1, a_2, ..., a_20の中で素数である要素をカウントし,それらを表示するプログラムを作成せよ.但し,main関数以外に関数として以下の関数を作成すること. 数列を計算する(nを引数とし,a_nを戻り値) 素数を判別する(整数aを引数とし,素数の場合1,素数でない場合0を戻り値とする関数) 表示(1)(素数を引数とし,結果を表示) 表示(2)(カウントした数を引数とし,結果を表示) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:5月22日まで [5] その他の制限:あまり難しい事は習っていないので簡単?なプログラムで。。。 あつかましいですが宜しくお願いします。
610 :
デフォルトの名無しさん :2005/05/20(金) 23:56:32
>>565 やばい。あとしめきりまで、6時間しかありません。
必死なんです。どなたか手伝ってください。
ほんと、お願いします!!!!!!!
>>609 1個目
#include <stdio.h>
int gcd(int a, int b)
{ /* 最大公約数。アルゴリズムはユークリッドの互除法 */
if(b == 0) return a;
return gcd(b, a % b);
}
int lcm(int a, int b)
{ /* 最小公約数。アルゴリズムは…特になし。 */
int ggcd = gcd(a, b);
return a * (b / gcd(a,b));
}
int main(void)
{
int a, b;
printf("a=?"); scanf("%d", &a);
printf("b=?"); scanf("%d", &b);
printf("GCD(%d,%d)=%d\n", a, b, gcd(a, b));
printf("LCM(%d,%d)=%d\n", a, b, lcm(a, b));
return 0;
}
>>610 仕方ないから大雑把にアルゴリズムだけ。実際には自分で組め。
まずは表作り。詳しい書き方は(C++を)知らん。
vector<vector<int> > table; // 左端、上端の初期化を忘れずに
for(int i=1;i<=length1;i++)
for(int j=1;j<=length2;j++) {
int fromleft = table[i-1][j]-1;
int fromup = table[i][j-1]-1; // upは文法的におかしい?
int fromdiagonal=table[i-1][j-1]+Matrix[Indexof[s1[i]]][Indexof[s2[j]]]; // ここは適宜直せるだろう
table[i][j] = max(fromleft, fromup, fromdiagonal); // ここもif等で書き換える必要有り
}
これを貴様がC++に移行している間に次を書いとく。
>>610 Move vector の作成
vector<Move> 変数名を指定されていた気がするけど忘れた。ここでは v にしておく。
for(int i = length1-1, j = length2-1; i != 0 || j != 0; ) {
int left, up, diag;
left = table[i-1][j];
up = table[i][j-1];
diag = table[i-1][j-1];
if(diag >= left && diag >= up) {
v.push_back(斜め); // enum 忘れた
i--;
j--
} else if(left >= up) {
v.push_back(1にブランク); // 同上
i--;
} else {
v.push_back(2にブランク); // 同上。もしかしたら「1にブランク」「2にブランク」は逆かも。
j--;
}
}
scoreの計算方法は示されてなかったが、おそらく
score=table[length1-1][length2-1];
あとは5時間半がんばれ。
614 :
デフォルトの名無しさん :2005/05/21(土) 00:23:09
>>609 素数の判定だけ
int IsPrime(int n)
{
int i;
if(n < 2) return 0;
if(n==2) return 1;
if(n % 2 == 0) return 0;
for(i = 3; i <= sqrt(n); i += 2)
if(n % i == 0) return 0;
return 1;
}
615 :
デフォルトの名無しさん :2005/05/21(土) 00:25:30
>>614 素数判定するんだったらもっとマシなアルゴリズム使えよwww
616 :
611 :2005/05/21(土) 00:33:26
>>609 2個目。表示に関して(1)と(2)の区別の意味が分からんのでそこは放置してる
改行が多い関係で省いたけどisprimeに関しては
>>614 といっしょ。
#include <stdio.h>
int fibo(int n)
{
int i, a, b, c;
if(n < 1) return 0;
if(n < 3) return 1;
a = b = c = 1;
for(i = 2; i < n; i++) { a = b; b = c; c = a + b; }
return c;
}
int main(void) {
int i, n, fib, count = 0;
printf("n=?"); scanf("%d", &n);
for(i = 1; i < n; i++) {
fib = fibo(i);
if(isprime(fib) == 1) { printf("%d\n", fib); count++; }
}
printf("The number of prime numbers is %d\n", count);
return 0;
}
>>615 AKSですか?
作りおきだが。 int *sieve_of_eratosthenes(int upper) { int i, notprime, *integers = (int*)malloc(sizeof(int) * (upper + 1)); for (i = 2; i <= upper; i++) integers[i] = 1; integers[0] = integers[1] = 0; for (i = 2; i <= upper / 2; i++) { notprime = i; while ((notprime += i) <= upper) integers[notprime] = 0; } return integers; } int is_prime(int n) { int *sieve = sieve_of_eratosthenes(n), ret = sieve[n]; free(sieve); return ret; }
618 :
609 :2005/05/21(土) 01:23:57
皆さんありがとうございます 1番はできたのですが2番の616さんのプログラムがエラー出てしまいます・・
フェボナッチ数自体があってるか謎。 数学の素養がないとこういうときつらいな~。 #include <stdio.h> #include <stdlib.h> #define TRUE (1) int F(int n){ if(n==1) return 1; if(n==2) return 1; return F(n-2)+F(n-1); } int EratosthenesSieve(char *p,int n){/*エラトステネスの篩*/ int i,j; for(i =2;i<n;i++){ if(p[i]==TRUE) continue; for(j=2;(i*j)<n;j++){ p[i*j]=TRUE; } } return 0; } int main(){ int n,f;char *buf; puts("Input N...");scanf("%d",&n); f=F(n); printf("%d",f); buf = (char*)calloc(f+1,sizeof(char)); EratosthenesSieve(buf,f+1); if(buf[f] != TRUE)puts("Prime!!"); else puts("Not Prime!!"); free(buf); return 0; }
620 :
616 :2005/05/21(土) 01:37:28
>>618 isprime関数を
>>614 のから
int isprime(int n)
{
int i;
if(n < 2) return 0;
if(n==2) return 1;
if(n % 2 == 0) return 0;
for(i = 3; i * i <= n; i += 2) /* ここが違う */
if(n % i == 0) return 0;
return 1;
}
にしてみ?表示用の関数2つ作らなきゃならんらしい(それぞれ何を出力するのか問題文からはよく分からん)
からそのままだとアウトだが。
>>ALL おやすみ~。
エラーが出るときはエラーメッセージをコピペ。
>>620 ありがとうございます!できました。
自分も問題文がよくわかりませんorz
>表示(1)(素数を引数とし,結果を表示) >表示(2)(カウントした数を引数とし,結果を表示) void put_1(int n){ printf("%d は素数です\n",n); } void put_2(int n){ printf("素数である要素は %d あります\n", n); }
625 :
デフォルトの名無しさん :2005/05/21(土) 03:23:44
>>612 ,613
ありがとうございます。
私も、やることのアルゴリズムはわかるんですよ。
でも、このもとあるコードが理解できてないんですね。。。
これだけでもRunするんですよ。
それらを、どういうふうにこのコードにそって
書いたらいいのかが、全くわからないんですね。。。
すいません。
もし、C++が分かる方がいたら、教えてください。
ほんと、お願いします。
626 :
625 :2005/05/21(土) 03:55:29
628 :
625 :2005/05/21(土) 04:11:39
これができないと、次の課題もできなくて、 このクラス、パスできないかもしれないのです。 お願いです。助けてください。
>>628 お金払って、それなりの人にやってもらえば?
大事な単位なんでしょ。そんな問題をタダでやってもらおうなんて虫が良すぎる。
お金払ってやってもらう価値があるんでしょ?
それにいい加減ウザイ。
630 :
625 :2005/05/21(土) 04:26:46
>>629 テメエには言ってねえよ(゚Д゚ )ゴルァ!!余計な茶々入れるんじゃねーよ。
私は解いて下さるだけにお願いしているのです。
どうかお願いしますm(_ _)m
>625って明確に落ちこぼれてきてるよな。
633 :
デフォルトの名無しさん :2005/05/21(土) 06:27:47
age
634 :
625 :2005/05/21(土) 06:31:46
やってくれた方にはお礼します。 あと2時間しかないです。 630は私ではありません。
>>630 はネタだと思うが。
>>625 よ、学校にお友達いないのか?
回答者にとってここは人助けのためにあるのではなくって、
暇つぶし程度だとおもう・・・そんなに期待しないよーに。
それと、FAQかなぁ。
Q.解けないと単位もらえない。
A.知ったこっちゃない。
Q.急いでください。
A.回答者は急ぐ義理はない。
(とか書くと、やさしいおせっかいさんが、プログラム書いてくれるハズ)
荒れてるなー。
>>634 問題どこ? リンク貼っといて。
それと、お礼はなんですか? いくら出せますか?
637 :
625 :2005/05/21(土) 06:41:17
>>635 無理に急いでくださいとは言える立場ではないのは分かってます。
締め切りすぎた後でもこれは必要なので、お願いします。
638 :
625 :2005/05/21(土) 06:47:16
・・・んー・・・yahooメールの人は信用してないんで。 ごめんねー。
640 :
625 :2005/05/21(土) 06:52:17
>>636 もう一度張ります。
【質問テンプレ】
[1] 授業単元: バイオインフォマティックス
[2] 問題文(含コード&リンク):
http://www.geocities.jp/arerenore1357/HW.cab この中に途中までのコードと問題文が含まれています。
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ(バージョン): MSVC
[3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:
たぶん、struct AminoAcidAlignmentの中で、
vector<vector<int> >
vector<vector<Move>>を使って
for(int i=1;i<=length1;i++)
for(int j=1;j<=length2;j++)
const int some = kscoreMatrix[s1.AAnums[i=1][s2.AAnums[j-1]];
ってやるんだと思います。
他にもやり方があれば、別にかまいません。
コードはだいたい出来ていて、あとは、align 関数を完成させるだけです。
641 :
625 :2005/05/21(土) 06:53:04
どこのメールだったらいいのですか? 家のメアドはここには張りたくないのですが・・・。
フリーメール系はダメなんじゃない? プロバイダのメールとか学校のメールとかか?