C/C++の宿題を片付けます 43代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/05/11(水) 15:59:44――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑な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】
0002デフォルトの名無しさん
2005/05/11(水) 16:02:5041代目: http://pc8.2ch.net/test/read.cgi/tech/1109542053/
40代目: http://pc5.2ch.net/test/read.cgi/tech/1107625122/
39代目: http://pc5.2ch.net/test/read.cgi/tech/1106650397/
38代目: http://pc5.2ch.net/test/read.cgi/tech/1105541524/
37代目: http://pc5.2ch.net/test/read.cgi/tech/1103913840/
36代目: http://pc5.2ch.net/test/read.cgi/tech/1102753497/
35代目: http://pc5.2ch.net/test/read.cgi/tech/1101568895/
34代目: http://pc5.2ch.net/test/read.cgi/tech/1100530682/
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
0003デフォルトの名無しさん
2005/05/11(水) 16:03:1828代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
0004デフォルトの名無しさん
2005/05/11(水) 16:03:4213代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
09代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
08代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
07代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
06代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
05代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
04代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
03代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
02代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
01代目: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
0005デフォルトの名無しさん
2005/05/11(水) 16:05:01乙
0006985
2005/05/11(水) 16:10:56前スレ埋まってしまったのでもう一度質問します
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文:
kg→gの変換プログラムを作る。
xkgのxをキーボードから入力すると
xkgはyyyygです。
と答えるプログラムを作成しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限: まだ授業始まったばかりなので演算を習ったところです。
初歩的な質問ですいませんが、よろしくお願いします。
0007デフォルトの名無しさん
2005/05/11(水) 16:15:40int main(int argc, char* argv[])
{
printf( "kg→gの変換プログラムを作る。\n" );
printf( "xkgのxをキーボードから入力すると\n" );
printf( "\n" );
printf( "xkgはyyyygです。\n" );
printf( "\n" );
return ( 0 );
}
0008デフォルトの名無しさん
2005/05/11(水) 16:17:35#include<stdio.h>
int main(){
int x;
scanf("%d",&x);
printf("%dkgは%dgです。\n",x,x*1024);
return 0;
}
//要修正。
0009デフォルトの名無しさん
2005/05/11(水) 16:24:32warota
0010985
2005/05/11(水) 16:28:22早速のお返事ありがとうございます。
問題文わかりにくくてすいません。
後で早速試してみますね。
どうもありがとうございました。
0011デフォルトの名無しさん
2005/05/11(水) 16:40:16自分好みのスレタイに変えてんじゃねーよバカ
0012デフォルトの名無しさん
2005/05/11(水) 16:49:41#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;
}
0013デフォルトの名無しさん
2005/05/11(水) 16:51:091代目を見てみろ
好きに変えたのはぼるじょあの方だ
0014デフォルトの名無しさん
2005/05/11(水) 16:56:14[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] その他の制限:
よろしくお願いします。
0015デフォルトの名無しさん
2005/05/11(水) 16:56:590016デフォルトの名無しさん
2005/05/11(水) 16:59:570017デフォルトの名無しさん
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] その他の制限:なし
0018デフォルトの名無しさん
2005/05/11(水) 17:10:20[2] 問題文(含コード&リンク): Rnd()やIntを用いて1以上12以下の整数を乱数として発生させ
1が出たらA、2が出たらBみたいなプログラムを作る。VBコードを示せ
[3] 環境
[3.1] OS: 98
[3.2] コンパイラ(バージョン):
[3.3] 言語:
[4] 期限:明日まで[5] その他の制限:
お願いしますです
0019デフォルトの名無しさん
2005/05/11(水) 17:12:14VBかよ!!!!!
0020デフォルトの名無しさん
2005/05/11(水) 17:17:22#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;
}
0021デフォルトの名無しさん
2005/05/11(水) 17:18:28質問の意味が不明というかスレ違い
0022デフォルトの名無しさん
2005/05/11(水) 17:19:35#include <stdio.h>
int main(void)
{
static int i;
printf("%p\n", &i);
return 0;
}
0023デフォルトの名無しさん
2005/05/11(水) 17:27:03Option 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
0024デフォルトの名無しさん
2005/05/11(水) 17:29:00どうもです。
0025デフォルトの名無しさん
2005/05/11(水) 17:59:00>printf("ファイル %s が書き込み用に開けません。\n", DATE_FILE);
fprintf(stderr, "ファイル " DATE_FILE " が書き込み用に開けません。\n");
0026デフォルトの名無しさん
2005/05/11(水) 18:07:04[2] 問題文:最初に総人数、その後n人目の点数を入力し、
そのデータを並び替えて降順および昇順で表示するプログラムを作成しなさい
[3] 環境
[3.1] OS WindosXP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++
[4] 期限:6月11日
[5] その他の制限:
0027デフォルトの名無しさん
2005/05/11(水) 18:19:310028デフォルトの名無しさん
2005/05/11(水) 18:22:04> [4] 期限:6月11日
一月後でいいのか。
0029デフォルトの名無しさん
2005/05/11(水) 18:50:23#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;
}
0030>>26
2005/05/11(水) 18:51:295月です…すいません
003129
2005/05/11(水) 18:58:170032デフォルトの名無しさん
2005/05/11(水) 19:26:34[2] 問題文(含コード&リンク):
プログラムの実行が初めてであれば,その旨のメッセージを表示し,実行が2 回目以降であれば,
1回前に実行したときの日付と時刻と「気分」を表示するプ ログラムを作成せよ.
日付・時刻を struct tm型の値として,直接バイナリに 読み書きすること.
[3] 環境
[3.1] OS win xp
[3.2] コンパイラ(バージョン):
[3.3] 言語:C言語
[4] 期限 :なし
[5] その他の制限:
0033デフォルトの名無しさん
2005/05/11(水) 20:20:14[2] 問題文(含コード&リンク): 要素型がdouble型で要素数が10
である配列の全要素の値を読み書きするプログ ラムを作成せよ.
[3] 環境
[3.1] OS:win xp
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限 :無期限
[5] その他の制限:
0034デフォルトの名無しさん
2005/05/11(水) 20:29:21003533
2005/05/11(水) 20:31:55任意に読み書きできる、という意味だと思います。
003633
2005/05/11(水) 20:32:28任意に読み書きできる、という意味だと思います。
0037デフォルトの名無しさん
2005/05/11(水) 20:35:47[1] 授業単元:プログラミング
[2] 問題文
英文をファイル入力で読み込み、7文字以上の英単語は大文字に変換して標準出力せよ。
なお、入力にはfscanfを、出力にはprintfを用いること。
[3] 環境
[3.1] OS:winxp
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語C
期限 今週末
例えば、
This problem is inportant.
という英文が書かれたファイルを読み込んだときに
This PROBLEM is INPORTANT.
という風に変換して標準出力したいのです。
よろしくお願いします。
0038デフォルトの名無しさん
2005/05/11(水) 21:25:30#include<ctype.h>の中にint toupper(int c)とint tolower(int c)って関数がある。
前者は小文字を大文字に、後者は大文字を小文字にする。
0039デフォルトの名無しさん
2005/05/11(水) 21:26:53#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;
}
004039
2005/05/11(水) 21:27:57出題したやつ祭れ。
0041デフォルトの名無しさん
2005/05/11(水) 21:35:46[2] 問題文(含コード&リンク): 以下のメンバーを持つ構造体"player"をC言語で宣言せよ.
・背番号
・名前
そして、「赤星(53),藤本(9),シーツ(4),金本(6),今岡(7)」
の5名の名前と背番号をC言語で静的に宣言せよ.
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限 :明日12日
[5] その他の制限:
タイガース初心者ですが、よろしくお願いします。
0042デフォルトの名無しさん
2005/05/11(水) 21:50:41#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;
}
0043デフォルトの名無しさん
2005/05/11(水) 22:01:48typedef struct _player {
unsigned int jersey_number;
const char* name;
} player;
static player players[] = {
{ 4, "シーツ" },
{ 6, "金本" },
{ 7, "今岡" },
{ 8, "山本浩二" },
{ 9, "藤本" },
{ 53, "赤星" }
};
0044デフォルトの名無しさん
2005/05/11(水) 22:04:40一応動くけど、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;
}
004544
2005/05/11(水) 22:06:53> if(strlen(buf) > BORDER) {
if(strlen(buf) >= BORDER) {
0046デフォルトの名無しさん
2005/05/11(水) 22:19:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/377.c
0047デフォルトの名無しさん
2005/05/11(水) 22:44:37申し訳ないが、任意に読み書きできるという仕様は成立しないのです。
もっと具体的な動作を示す必要があります。
0048デフォルトの名無しさん
2005/05/12(木) 00:25:58はあ?
なんで?
0049デフォルトの名無しさん
2005/05/12(木) 00:29:57あんたが具体的な動作を日本語で示しなさい。
0050デフォルトの名無しさん
2005/05/12(木) 00:35:55じゃ、「何もしないで終了するプログラム」ということで
******* 終了 ********:
0051デフォルトの名無しさん
2005/05/12(木) 00:40:45ありがとうございます。
でも、この場合最後の単語が
xxxxxx.
と、ドットを伴っているとドットもアルファベットと認識されてしまうので
XXXXXX.
という風に6文字の英単語でも大文字に変換されてしまうのですが、どうしたらよいでしょうか?
0052デフォルトの名無しさん
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] その他の制限: 初心者向けのプログラムでお願いします。
条件分岐習いたてレベルで。
0053デフォルトの名無しさん
2005/05/12(木) 01:12:19:
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);
}
改行みんな消えちゃうね
0054デフォルトの名無しさん
2005/05/12(木) 01:17:23#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;
}
0055デフォルトの名無しさん
2005/05/12(木) 01:25:29abcdef.abcdef → abcdef.abcdef
abcdefg.abcdefg → ABCDEFG.ABCDEFG
これでいいの?
0056デフォルトの名無しさん
2005/05/12(木) 01:37:15#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;
}
005754
2005/05/12(木) 01:40:15剰余演算子を忘れてた…恥ずかしい。
ということで、一部修正。
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;
}
0058デフォルトの名無しさん
2005/05/12(木) 01:43:42最近f系関数がはやってるけど、これは素直にputsにしても良いともう。
以上、チラシの裏からお伝えしました。
0059デフォルトの名無しさん
2005/05/12(木) 01:44:570060デフォルトの名無しさん
2005/05/12(木) 02:01:16[2] 問題文(含コード&リンク): VBコードを記述して四則演算を行うプログラムを作成せよ。
VBコードのみも記述せよ
[3] 環境
[3.1] OS: 98
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:今日
[5] その他の制限:
0061デフォルトの名無しさん
2005/05/12(木) 02:03:31スレ違い
0062デフォルトの名無しさん
2005/05/12(木) 02:21:25行頭プロンプトを表示したいんだろ。
puts() では改行してしまう。
0063デフォルトの名無しさん
2005/05/12(木) 02:40:40スレの名前を百編声に出して読んでみる。
C++は議論あるけど暫定で「しーぷらぷら」で
あとこっちで聞いた方がいいかと思う
VBプログラマ質問スレ(6.0以前) Part41
http://pc8.2ch.net/test/read.cgi/tech/1112414085/l50
VB.NETは別物なので、基本的に質問はこちらへ
VB.NET質問スレ (Part11)
http://pc8.2ch.net/test/read.cgi/tech/1114217190/l50
0064デフォルトの名無しさん
2005/05/12(木) 03:19:02[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
よろしくお願いします。
0065デフォルトの名無しさん
2005/05/12(木) 04:12:17漢字ってのはShiftJIS前提でいいのか?
0066デフォルトの名無しさん
2005/05/12(木) 04:35:48漢字には対応してない。
#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;
}
0067デフォルトの名無しさん
2005/05/12(木) 04:55:11fscanfのしばりはきついね
006941
2005/05/12(木) 12:31:36[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言語で実装せよ.
お願いします。
答え、サンクスです。
0070デフォルトの名無しさん
2005/05/12(木) 14:51:13漢字には対応してない
#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;
}
0071デフォルトの名無しさん
2005/05/12(木) 17:49:41[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
0072デフォルトの名無しさん
2005/05/12(木) 17:52:00何のコンパイラ使ってるのかを書けよ。
0073デフォルトの名無しさん
2005/05/12(木) 17:52:16それはC言語の範囲じゃないなぁ
0075デフォルトの名無しさん
2005/05/12(木) 17:59:52ttp://hp.vector.co.jp/authors/VA003720/lpproj/dostools.htm
ttp://www.vector.co.jp/soft/dl/dos/util/se103907.html
この辺参考にしてガンガレ
0077デフォルトの名無しさん
2005/05/12(木) 18:16:15それは探し方が悪い。
ググって1番上に来ただけ。
http://www.google.com/search?hl=ja&q=int86x&lr=lang_ja
0078デフォルトの名無しさん
2005/05/12(木) 18:20:31俺は>>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;
}
0079デフォルトの名無しさん
2005/05/12(木) 18:23:08100を出力した時には次の行にいかない処理にしたいのですが、
次のコードを書くと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;}
0080デフォルトの名無しさん
2005/05/12(木) 18:27:59#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;
}
008180
2005/05/12(木) 19:03:51やり直し
#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;
}
0082デフォルトの名無しさん
2005/05/12(木) 19:13:25#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;}
008382
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;}
0084デフォルトの名無しさん
2005/05/12(木) 19:52:20[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 = 何か入れる;
}
を使うそうです
0085デフォルトの名無しさん
2005/05/12(木) 19:57:22何の発展性もない。
0086デフォルトの名無しさん
2005/05/12(木) 20:18:51008784
2005/05/12(木) 20:20:300088デフォルトの名無しさん
2005/05/12(木) 20:42:26WinMainで作成して、Windowは非表示でOK?
常駐トレイにはどうやって表示させる?
俺のでよかったら貸してやるから教えろよ
0089デフォルトの名無しさん
2005/05/12(木) 20:55:22テンプレ使え
0090デフォルトの名無しさん
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
0091デフォルトの名無しさん
2005/05/12(木) 21:07:27おまいはどういうプログラムを常駐プログラムと定義するのか。
そこから書け。そしてテンプレ使え。
0092デフォルトの名無しさん
2005/05/12(木) 21:13:42外的因子なしに終了するプログラムこそが正しいから。
0093デフォルトの名無しさん
2005/05/12(木) 21:15:47タスクトレイに追加するにはShell_NotifyIcon()を使う。
ウィンドウは非表示にするか(ShowWindow()でSW_HIDE)、CreateWindowEx()で
hWndParentにHWND_MESSAGEを指定してメッセージ専用ウィンドウにする。
009493
2005/05/12(木) 21:17:10これ以上はこっちで
Win32API質問箱 Build31
http://pc8.2ch.net/test/read.cgi/tech/1114762194/
0095デフォルトの名無しさん
2005/05/12(木) 21:17:14なら、WordもExcelもIEも全部常駐プログラムかよ・・・。
http://e-words.jp/w/E5B8B8E9A790E38397E383ADE382B0E383A9E383A0.html
009688、90
2005/05/12(木) 21:20:00>>92 ごもっともです。右クリックでメニューを付けようかと思う。
>>93 ありがとう!調べてみる!
0097デフォルトの名無しさん
2005/05/12(木) 21:26:37∞ループしちゃってるじゃん。そんなの正しいプログラムじゃないよ。
0098デフォルトの名無しさん
2005/05/12(木) 21:27:270099デフォルトの名無しさん
2005/05/12(木) 21:28:11[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] その他の制限: -を記入するとエラーで暴走してしまいます。
これを直すのはどうすれば良いのでしょうか?
010099
2005/05/12(木) 21:30:00int 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);
}
0101デフォルトの名無しさん
2005/05/12(木) 21:38:01"%d"は整数型(intなど)。floatなら"%f"
0102デフォルトの名無しさん
2005/05/12(木) 21:44:30新人教育をカンニングされると、後々評価が狂ってお互いのためにならないからできれば担当者に質問してくれ。
それと、scanf()の使い方が間違っている。fgets()とsscanf()(もしくはatoi()かatof())を組み合わせるのが常道。
0103デフォルトの名無しさん
2005/05/12(木) 21:45:55そう言う大誤解を書かないでくれ。%dが使えるのはintのみだ。その他の型には使えない。
0104デフォルトの名無しさん
2005/05/12(木) 22:26:160105デフォルトの名無しさん
2005/05/12(木) 22:37:01010699
2005/05/12(木) 22:38:23教材として使っている会社にある本には整数の場合%dとなっていたの
ですが、使い方が違っているということですか?
後、scanfは2箇所とも、fgets()で書くのが正解ということですか?
連投スマソ
0107デフォルトの名無しさん
2005/05/12(木) 22:53:59簡単にループするぞ
0108デフォルトの名無しさん
2005/05/12(木) 22:55:460109デフォルトの名無しさん
2005/05/12(木) 22:56:57%dはint型を受ける。つまり整数型。
floatは、単精度浮動小数点型だ。整数型じゃない。
そしておまいはなぜ「回数」を表現するのに
浮動小数点数を使う?普通は整数使うだろ。
入力にはバッファオーバフロー等のセキュリティ上の問題を
防止するためにもfgets()とstrtod()を使うのが定石。
0110103
2005/05/12(木) 22:59:49だからぁ、会社の担当者に聞けってば。
scanf()使えなんて言わないとは思うが、もし言うようならそれに従うべきだし。
で、整数といっても、intではなくてshortを使っているじゃないか。shortの場合は>105だ。
>>108
面白がって変なもん薦めるな。
0112デフォルトの名無しさん
2005/05/13(金) 01:26:42書き換えてみた。
#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;
}
011384
2005/05/13(金) 01:44:38おめーは誰だYO(・3・)
誰か解いてください
0114デフォルトの名無しさん
2005/05/13(金) 01:46:02根本的な問題が解決されていない。
0115デフォルトの名無しさん
2005/05/13(金) 02:04:13#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;
}
0117デフォルトの名無しさん
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);の扱いがわかりません。
0118デフォルトの名無しさん
2005/05/13(金) 11:54:32[1] 授業単元: C実習
[2] 問題文(含コード&リンク):
200人分の児童の、国語、算数、理科、社会の4科目に関するテストの結果が存
在する。そこで、
「平均を求める関数を作成し、それを用いて各科目の平均を求めて表示せよ」[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン): VC++
[3.3] 言語:
[4] 期限:15時迄
[5] その他の制限:・作成する関数の定義は、次のようにする。
double mean(int a[], int size);
・テスト結果の表は、出題者からファイルを提供する。
・ファイルをプログラムに読み込ませるには、リダイレクトと呼ばれる方法を
用いる
011942代目 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つのファイルに分割すること。
(ファイルからの読み取り部・計算部・出力部)
0120デフォルトの名無しさん
2005/05/13(金) 14:02:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/380.txt
accumulatorクラスをどこにも手を加えずに書くとこのようになるだろう。
intとwriteVector()、average()を共用すると、暗黙の型変換演算子が
呼び出されてプログラムの見通しが悪くなるので、explicit specialization
を行っておいた。
0121デフォルトの名無しさん
2005/05/13(金) 14:07:04あり、関数のオーバーロードで解決されているが、一応注意。
0122デフォルトの名無しさん
2005/05/13(金) 14:14:55標準にあるのはstd::accumulate。
それから、型と関数名の間にオーバーロードは働かない。(関数名が優先され、classなどのキーワードをつけると型扱い)
0123118
2005/05/13(金) 14:24:220124デフォルトの名無しさん
2005/05/13(金) 14:31:44あーボケてました。スマソ。何書いてたんだろ。>>121は無かった事にして
下さい。(/ω\)ハズカシーィ
0125デフォルトの名無しさん
2005/05/13(金) 14:43:03>(5,0,0)
0って自然数だったんだ
0126デフォルトの名無しさん
2005/05/13(金) 14:50:55ttp://www.ss.u-tokai.ac.jp/~itai/column/three.html
0127デフォルトの名無しさん
2005/05/13(金) 14:51:58ほらよ。やっつけ仕事だけどな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/381.txt
0128デフォルトの名無しさん
2005/05/13(金) 15:08:30それは集合論での考え方
0を自然数と考えるか考えないかの議論は数学板行き
0129デフォルトの名無しさん
2005/05/13(金) 15:41:49すいません^^; 0というのはあくまでも数合わせのためです。
25 = 5^{2} というふうに解釈してください。(-_-;)
k個以下ということを表現したかったのですが、
逆効果になってしまい申し訳ありません。m(__)m
0130デフォルトの名無しさん
2005/05/13(金) 23:03:500131デフォルトの名無しさん
2005/05/13(金) 23:16:06[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] 期限:できれば早く
0132デフォルトの名無しさん
2005/05/13(金) 23:19:47ばかだなお前は。
0133デフォルトの名無しさん
2005/05/13(金) 23:23:230134デフォルトの名無しさん
2005/05/13(金) 23:26:510135デフォルトの名無しさん
2005/05/13(金) 23:38:01[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で区切られている。
国語 算数 理科 社会
出力データの表示形式は自由。
(ここまで出来た。) (次のレスに続く
0136135
2005/05/13(金) 23:40:34#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;
}
0137デフォルトの名無しさん
2005/05/13(金) 23:58:54atoiでも使うしかないか。めんどい。
0138デフォルトの名無しさん
2005/05/14(土) 00:19:14sscanf()とやったら、それじゃあなくてfgetsでやってくれと言われたので
改良してみたのですが・・・
(やり方は136で良いらしい)
動かなくなってしまいまして・・・
よろしくお願いします
0139デフォルトの名無しさん
2005/05/14(土) 00:49:10>sscanf()とやったら、それじゃあなくてfgetsでやってくれと言われたので
fgets()したからこそのsscanf()だと思うが?
scanf()で駄目と言うのであれば分からん事はないが…
0140デフォルトの名無しさん
2005/05/14(土) 00:59:37fgets()で得られるのはあくまでもchar型の配列データだから、それを
数字に変換しないと計算できない(無理とは言わないが、普通はしない)。
で、char型の配列データを数字に変換するには大抵atoi()、atof()、sscanf()
などを使うわけであるが、sscanf()が禁止らしいので、atoi()を使う事になる。
但し、ポインタを知っていなければならず、見た目も汚くなるぞ。
0141デフォルトの名無しさん
2005/05/14(土) 01:09:39http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/383.txt
例えばこんな感じになる。エラーチェックは全くやってないので、入力データ形式が
間違っていると即あぼんの可能性あり。
0142デフォルトの名無しさん
2005/05/14(土) 11:51:23>strut queue *postfixはいったいどういう意味な
のでしょうか?
構造体 queue のポインタという意味です。
関数getexp内で変数postfixは構造体queueのポインタ
として使用できます。なお呼び出し元から渡されている
ものはアドレスだけなので、実体は呼び出し元で定義さ
れいてる必要があります。
>>postfixのままポインタとして使えないし、それ以前にメイン
関数でポインタを作成して代入しなきゃならないのか?
関数getexpを呼ぶ側では構造体queueのアドレスを指定する
必要があります。
(例)
struct queue post, *pt;
char pre[1000];
....
getexp( pre, &post );
または
pt = ⪯
getexp( pre, pt );
てな感じ。
ポインタがまだ理解できていないようですね。
ポインタ変数に格納できるのは”ポインタ”ではなくて
”アドレス”です。
”アドレス”は"&"演算子を使って取得することができます。
がんがれ
0143デフォルトの名無しさん
2005/05/14(土) 11:54:162桁の数がいくつあるかを数えて、その個数を表示する。
こんな問題があったのですが、さっぱり分かりません。
どなたか実際にプログラムを書いて教えてもらえませんか?
0144デフォルトの名無しさん
2005/05/14(土) 12:06:51#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;
}
0145デフォルトの名無しさん
2005/05/14(土) 12:08:31for(int i = 0; i < 5; i++)じゃなくて
for(int i = 0; i < 100; i++)だった
0146143
2005/05/14(土) 12:24:560147デフォルトの名無しさん
2005/05/14(土) 12:28:47>1を読め
0148143
2005/05/14(土) 12:32:12Z:\プログラミング実習\レポート\レポート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: 構文エラー : ';' が '{' の前に必要です。
0149デフォルトの名無しさん
2005/05/14(土) 12:40:17↓
int i;
for ( i = 0; i < 100; ++i )
0150144
2005/05/14(土) 12:45:18VCTKだとコンパイル通っちまって気づかなかった。
0151143
2005/05/14(土) 12:52:10これに少し手を加えたらできるようになりました
0152デフォルトの名無しさん
2005/05/14(土) 15:23:25[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への入力は標準入力により行う。
よろしくお願いします。
0153デフォルトの名無しさん
2005/05/14(土) 15:41:10#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;
}
0155デフォルトの名無しさん
2005/05/14(土) 16:12:200156デフォルトの名無しさん
2005/05/14(土) 16:20:240157デフォルトの名無しさん
2005/05/14(土) 16:23:50#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;
}
0158デフォルトの名無しさん
2005/05/14(土) 16:25:54char *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;
}
0159152
2005/05/14(土) 16:57:21ありがとう!かなり参考になりました。
どうやら基本的な間違いで
関数でのreturnにおいて(char*)を付けていなかった為に動かなかったようです。
constの扱いに慣れないとダメですね。
どうもありがとうございました。
0160デフォルトの名無しさん
2005/05/14(土) 18:59:16#include <string.h>
char*str_chr(const char*str, int c){return strchr(str,c);}
0161デフォルトの名無しさん
2005/05/14(土) 23:23:03while((*str) != '\0' && (*str) != c) {
str++;
}
if( (*str)==c){
return str;
}else{
return NULL;
}
}
0162デフォルトの名無しさん
2005/05/14(土) 23:36:01return *str?*str-c?str_char(str+1,c):(char*)str:NULL; }
0163デフォルトの名無しさん
2005/05/15(日) 09:23:010164デフォルトの名無しさん
2005/05/15(日) 10:51:30[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/384.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:5月19日
[5] その他の制限: 無し
考えても考えてもさっぱり・・orz
ご指南よろしく御願いします。
0165デフォルトの名無しさん
2005/05/15(日) 11:04:18不可能。
標準入力には文字数の制限があるから。
0166デフォルトの名無しさん
2005/05/15(日) 11:17:460167デフォルトの名無しさん
2005/05/15(日) 11:45:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/385.c
0168デフォルトの名無しさん
2005/05/15(日) 12:39:160169デフォルトの名無しさん
2005/05/15(日) 14:54:37[2] 問題文(含コード&リンク)
キーボードから全て小文字の文字列を入力し、 その文字列の先頭の文字を
大文字に変更して表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン):分かりません・・・
[3.3] 言語:C++
[4] 期限:2005年05月17日まで
プログラミング始めたばっかりでさっぱり分かりません。
よろしくお願いします。
0170デフォルトの名無しさん
2005/05/15(日) 15:28:44注釈に
「ASCIIコード表を見て、大文字と小文字のコード番号の規則性に
注目すると、上位バイトが2バイト違うだけである」
と書いてありました。
0171デフォルトの名無しさん
2005/05/15(日) 15:30:44#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;
}
0172デフォルトの名無しさん
2005/05/15(日) 19:46:55[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点だった人の人数
0173172
2005/05/15(日) 19:50:22[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()は別々のファイルに作成する。
(分割コンパイルの練習)
0174デフォルトの名無しさん
2005/05/15(日) 20:37:55[1] 授業単元:C++実務 なのに [3.3] 言語:C なのか。
それはいいとして、「50名分の4科目のテストの結果」 はどこから入力する?
0175デフォルトの名無しさん
2005/05/15(日) 20:48:27以下の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,配列)を使ってお願いします。
0176デフォルトの名無しさん
2005/05/15(日) 20:48:48また例によってリダイレクトによる入力か。明記してくれ。
0177デフォルトの名無しさん
2005/05/15(日) 21:27:08解1
if(a>0&&b>0&&c>0&&a<b+c&&b<c+a&&c<a+b)
0178172
2005/05/15(日) 22:03:290179172
2005/05/15(日) 22:21:23(今出題者に聞いてみたらそう言ってました)
自分では別コンパイルとか調べてみたけど判らなかったのでよろしくお願いします
0180デフォルトの名無しさん
2005/05/15(日) 22:47:43/* 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
...こんな感じだろーか。
0181179
2005/05/15(日) 23:05:100182デフォルトの名無しさん
2005/05/15(日) 23:07:16Warning W8060 9-1.c 60: Possibly incorrect assignment in function main
Warning W8004 9-1.c 84: 'i' is assigned a value that is never used in function m
ain
とエラーがでてしまいました。どの部分が間違えているのでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/386.c
0183デフォルトの名無しさん
2005/05/15(日) 23:12:02>>1を嫁
0184デフォルトの名無しさん
2005/05/15(日) 23:16:3160行:for(i=0;i=num-1;i++){
i<=num-1か、i<num-1の間違いか?
84行:60行でnum-1を代入しているので、直前のi=0が無視されている
0185182
2005/05/15(日) 23:19:25[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):入力された数を昇順(CASE4の部分)に並べ替えるという課題です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/386.c
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ(バージョン):Borand C
[3.3] 言語:C
[4] 期限:2005年05月16日08:15
よろしくお願いいたします。
0186デフォルトの名無しさん
2005/05/15(日) 23:36:39OS ウィンドウズ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);
}
0187デフォルトの名無しさん
2005/05/15(日) 23:38:32[2] 問題文(含コード&リンク): 次のプログラムを2つのファイルに分割して実行できるようにせよ。
(複数モジュールにしろ)
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可
[4] 期限:2005年5月16日の朝
0188187
2005/05/15(日) 23:38:58#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 */
0189デフォルトの名無しさん
2005/05/15(日) 23:49:18何一店の?
a.exeファイルとdllファイルの2つにする
b.分割コンパイルの話? (ほにゃらら.c と ちょめちょめ.c の2つに分割)
c.ヘッダファイルとソースに分割? (ぺけぺけ.h と ほげほげ.c の2つに分割)
どれかなのか?あるいは別のなにかなのか?
0190187
2005/05/15(日) 23:50:230191187
2005/05/15(日) 23:53:23オブジェクトファイルを作成し、最後にリンカで実行可能プログラムにするらしいです。
とりあえず、「〜.c」「****.c」ができれば良いのですが・・・。
0192デフォルトの名無しさん
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;
}
0193デフォルトの名無しさん
2005/05/15(日) 23:55:24[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
「Ford-Fulkersonアルゴリズムに対して、
故意に計算速度が遅くなるよう増大路を選択させるようなプログラムをつくりなさい。」
ソースは改悪前のものです。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/387.txt
[3] 環境
[3.1] OS: Windows98
[3.2] コンパイラ(バージョン): Borland C++ Compiler
[3.3] 言語:C
[4] 期限:2005年5月17日17:30まで
0194デフォルトの名無しさん
2005/05/15(日) 23:58:11countをpope()の引数に追加してはダメ?
グローバル変数を使わなければならないのか?
0195187
2005/05/16(月) 00:03:49すみません。知識不足の為、質問の内容が分かりません。
しかし自分なりに書き直してよいと書いてありました。
0196デフォルトの名無しさん
2005/05/16(月) 00:21:20>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 */
-----
0197デフォルトの名無しさん
2005/05/16(月) 00:25:31/* main.c */
#include <stdio.h>
int count = 0;
main()
{
/* 元のmain関数をそのまま使用 */
}
/* pope.c */
#include <stdio.h>
extern int count;
pope(n)
int n;
{
/* 元のpope関数をそのまま使用 */
}
0198デフォルトの名無しさん
2005/05/16(月) 00:28:53[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 が指定された場合,
ソートの経過を標準エラー出力に出力すること
0199187
2005/05/16(月) 00:31:44お2人様ありがとうございます
かなり複雑に考えてしまいました・・・
externとか変なところにつけていましたし・・・
ぜひ参考にさせていただきます
0200デフォルトの名無しさん
2005/05/16(月) 00:52:17[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] その他の制限:
よろしくおねがいします。
0201デフォルトの名無しさん
2005/05/16(月) 00:57:24ハァ?
0202デフォルトの名無しさん
2005/05/16(月) 01:01:39共通
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 ) ;
0203デフォルトの名無しさん
2005/05/16(月) 01:43:42たぶん、データファイルもいじらんと無理だと思う。
ttp://www-or.amp.i.kyoto-u.ac.jp/members/yagiura/graph-th/LA0102-040708.pdf を参照。
順列生成に関しては、奥村センセのソースを読むべし。
(ちゅーか、気合のあるヒト、プログラムは任せた)
0204デフォルトの名無しさん
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番*/
0205デフォルトの名無しさん
2005/05/16(月) 02:52:49配列として間違ってるし、添字ではなくn*みたいな形式で
書かれている場合にスマートなソートのプログラムは
書けない。
0206デフォルトの名無しさん
2005/05/16(月) 03:11:56テンプレ(>>1)使え。
それと、問題文はデータも含めて全部書け。
0207デフォルトの名無しさん
2005/05/16(月) 03:35:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/388.txt
ビット数 20 あたりでディスクスワップ始まると思う
0208183
2005/05/16(月) 07:04:52ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/389.txt
0209デフォルトの名無しさん
2005/05/16(月) 08:47:48なぜ h 抜きで?
0210175
2005/05/16(月) 09:20:33解答をありがとうございました。感謝します。
問題文2ですが、自分でも挑戦してるのですが中々うまくいきません。
どなたか大まかなヒントでも頂けないでしょうか?
0211デフォルトの名無しさん
2005/05/16(月) 10:12:23if(point>100 && point<0){/* エラー処理 */}
else if(point<60){/* 評価D */}
else if(point<70){/* 評価C */}
else if(point<80){/* 評価B */}
else {/* 評価A */}
0212デフォルトの名無しさん
2005/05/16(月) 10:12:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/390.txt
あなたの言う 「授業で習った範囲」 がどの程度かわからないので使えるもの使った。
ダウングレードくらいは自分でやれ。
0213デフォルトの名無しさん
2005/05/16(月) 10:14:30じゃない
point>100 || point<0
だorz
0214210
2005/05/16(月) 10:23:56解答ありがとうございます。
しかしサッパリ理解できませんでした (;´Д`)
完璧に動作するだけに勿体無い…
せっかく作成して頂いて申し訳ないですが、もうちょい自分で頑張ってみます。
0215デフォルトの名無しさん
2005/05/16(月) 10:41:00自分で 「大まかなヒントでも」 と言ってるのに 211 はスルーかよ
0216210
2005/05/16(月) 10:56:28下のレスに気を取られてて指摘されるまで気付きませんでした…ゴメソ
参考にします。配列は使わないみたいですね。見当違いなことをやってたかも…
0217デフォルトの名無しさん
2005/05/16(月) 13:53:10[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 ***;
}
0218デフォルトの名無しさん
2005/05/16(月) 14:11:31> ran = ran % 100;
こんな使い方初めて見た・・・。
まぁ、確かに動くけどさ・・・。
> data[*****] =***;
宣言されて無いのですが、良いの?
0219デフォルトの名無しさん
2005/05/16(月) 14:13:29data がどこにも宣言されてないが、
> data[*****] =***;
data[hash(ran)] = ran;
> return ***;
return x / 2;
でいいんでねーの?
・・・何がやりたいんだかようわからん
0220デフォルトの名無しさん
2005/05/16(月) 14:49:40[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;
}
0221220
2005/05/16(月) 14:50:19[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;
}
0222デフォルトの名無しさん
2005/05/16(月) 15:16:24[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
0223デフォルトの名無しさん
2005/05/16(月) 15:38:01[2](5)同時に実行とは? まさか、並列処理しろとでも?
[5]関数を使用せずにとは? まさか、表示も全て関数を利用せずに行なうのか?
0224デフォルトの名無しさん
2005/05/16(月) 15:43:540225デフォルトの名無しさん
2005/05/16(月) 15:50:57[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のラプラシアンフィルタのやり方が良くわかりません。
よろしくお願いします。
0226デフォルトの名無しさん
2005/05/16(月) 16:00:01W[R][l]じゃなくてW[k][l]だろ?
で、ラプラシアンフィルタについてはこの辺を参考に。
ttp://www.mis.med.akita-u.ac.jp/~kata/image/lap8.html
0227222
2005/05/16(月) 16:04:35[2](5)に関しては(1)〜(4)の実行結果を同時に表示するようなプログラムを作成しろとの事です
わかりずらくてすいません;
[5]はよくわからないんですがプリントにそう書いてあるんですよね・・
なんかややこしいので「関数を使用せずに〜」というのは無視してください
0228デフォルトの名無しさん
2005/05/16(月) 16:19:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/391.c
0229デフォルトの名無しさん
2005/05/16(月) 16:39:49classの下にプログラムを作るとか、classから起動するプログラムとか、
もっと一般的な言葉で解説するか具体例を挙げてくれ。
つーか、何とかできそうなら書いて味噌。
0231220
2005/05/16(月) 16:54:41単位落とすと学校辞めないといけなくなるので何卒よろしくお願いいたします;;
0233151
2005/05/16(月) 17:27:03#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
問題文があいまいで回答できなかった。
0234デフォルトの名無しさん
2005/05/16(月) 19:06:17[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] その他の制限:
よろしくお願いします。
0235デフォルトの名無しさん
2005/05/16(月) 19:20:46int *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);
}
長くてすみません。このプログラムはグローバル関数宣言らしいんです
けど、ローカル関数宣言にするには、どーしたらいいんですか?
0236デフォルトの名無しさん
2005/05/16(月) 19:27:382行目の宣言をmain関数内に入れるか、staticを付けるか、
多分どっちかなんだろうな。
0237デフォルトの名無しさん
2005/05/16(月) 19:29:09ローカル関数宣言って他から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);
}
0238デフォルトの名無しさん
2005/05/16(月) 19:33:34main関数内に入れたいんですけど、どーやればいいんですか?
0239デフォルトの名無しさん
2005/05/16(月) 19:42:54そんなん文字通り
#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);
}
0240デフォルトの名無しさん
2005/05/16(月) 19:47:22エラーがいっぱいでたんですけど…
ちゃんと動くようにお願いします。
0241デフォルトの名無しさん
2005/05/16(月) 19:49:26それならコンパイラのバージョンを明記しいや。
VC++6.0なら通ったで?
0242デフォルトの名無しさん
2005/05/16(月) 19:52:41[2] 問題文(含コード&リンク):
ユーザーからの入力nを読み込み、n個の配列を作りなさい。
配列の中はa[0]=0 , a[1]=1 のように要素数?の数字を入れること。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):VisualStudio.NET
[3.3] 言語:C
[4] 期限:今日中にお願いします。
[5] その他の制限:特になし。今まで入力から配列を確保したことが無くて混乱しています…誰か助けてください…
0243デフォルトの名無しさん
2005/05/16(月) 19:56:10下から7段目の static intref[4];のやつが
intとref[4];の間にスペースが開いてなかったみたいです。
ちゃんと動きました。ありがとうございます^^
0244デフォルトの名無しさん
2005/05/16(月) 20:01:42これは酷い…
0245デフォルトの名無しさん
2005/05/16(月) 20:07:27#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 );
}
0247Be名無しさん
2005/05/16(月) 21:17:59ここのスレ住人が速攻で回答してくれます
皆さん書き込みしましょう
0248デフォルトの名無しさん
2005/05/16(月) 21:53:300249デフォルトの名無しさん
2005/05/16(月) 22:02:53正直面倒くせえ
0250193
2005/05/16(月) 22:13:17なるべく流量を増やさないように増大路を増やせばいいというのはわかるのですが、
どのあたりで条件判定を入れて処理させればいいのやら・・・色々考えてるけどわからないです。
0251デフォルトの名無しさん
2005/05/16(月) 23:10:39経路をリストアップし、評価関数を使い、もっとも得点の高い(低い)経路を選択する。
評価基準はあなたの言うように、流量でよいのでわなかろーか。
なんか、A*(エースター)探索アルゴリズムの逆バージョンだな。
0252デフォルトの名無しさん
2005/05/16(月) 23:19:46[2] 問題文(含コード&リンク):
サーバー→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/393.txt
クライアント→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/394.txt
ゲームサンプルプログラム→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/395.txt
問題→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/396.txt
上の「問題」の「6. キーボード版 Network対戦用ゲーム 作成」をやってほしいのですが…。
[3] 環境
[3.1] OS:Red Hat Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:2005/5/25 12:00まで
[5] その他の制限:
0253デフォルトの名無しさん
2005/05/16(月) 23:35:05既存する配列に対して挿入、削除、検索をし、また配列要素を表示させるプログラムを作りなさい。
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 配列の長さによって、順次に要素の値を表示させる
0254225
2005/05/16(月) 23:38:31間違ってました。スマソ。
ラプラシアンフィルタでググってそのページも見たんだが、いまいちピンとこないんです。
画像処理を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;
}
こんなカンジかと。
0255253
2005/05/16(月) 23:38:41の間違いです。すんません。
0256デフォルトの名無しさん
2005/05/17(火) 01:36:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/398.txt
久しぶりにまずいカルボナーラを作ったよ。
味わってくれ。(汗。
0257256
2005/05/17(火) 01:41:300258253
2005/05/17(火) 02:26:10スマソ。なんでか分からないけど、見ることができませぬ。
できればコピペでここにお願いします。
0259デフォルトの名無しさん
2005/05/17(火) 02:45:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/400.zip
とりあえず動いた。
Linux3.1って何だよ!
0260253
2005/05/17(火) 03:20:340261253
2005/05/17(火) 03:20:48急いでるんで早くしてもらえます?
0262253
2005/05/17(火) 03:21:020263デフォルトの名無しさん
2005/05/17(火) 03:21:02http://ex10.2ch.net/test/read.cgi/news4vip/1116266649/
0264253
2005/05/17(火) 03:21:160265デフォルトの名無しさん
2005/05/17(火) 03:21:33なんだいきなりそのたいどわwwwww
0266253
2005/05/17(火) 03:21:34書き込むのおっせえなぁもう
0267デフォルトの名無しさん
2005/05/17(火) 03:21:470268デフォルトの名無しさん
2005/05/17(火) 03:21:55VIPのせいにすんなよラウンコ
0269デフォルトの名無しさん
2005/05/17(火) 03:22:00ちょっと待て!!それが人に聞く態度か!!
0270253
2005/05/17(火) 03:22:030271デフォルトの名無しさん
2005/05/17(火) 03:22:17は?しねよ
0272デフォルトの名無しさん
2005/05/17(火) 03:22:28VIPにへんなスレ建てんなラウンコ
0273デフォルトの名無しさん
2005/05/17(火) 03:22:31いい加減にしてください!!!
訴えますよ!!!
0274デフォルトの名無しさん
2005/05/17(火) 03:22:36急に態度が変わったね
0275256
2005/05/17(火) 03:22:40なんだ?頭くるっちゃたのか?
0276253
2005/05/17(火) 03:22:540277デフォルトの名無しさん
2005/05/17(火) 03:23:40お店でよく売られているのはラ・フランスです。
興味があったので調べてみたら代表的なものは
「ラ・フランス」「バートレット」「ル・レクチェ」の3種だそうです。
私は「ラ・フランス」しか知りません。
「ラ・フランス」は100%外国から来たモノだと思っていたのですが
フランスの梨苗を 山形に植え改良を重ねて出来たのがラ・フランスなんだそうです。
こんな話をしていたら食べたくなってきました。
/\___/ヽ
/'''''' '''''':::::::\
. |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::|
. | `-=ニ=- ' .:::::::|
\ `ニニ´ .:::::/
,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i | それがVIPクオリティ
> ヽ. ハ | || http://ex10.2ch.net/news4vip/
0278253
2005/05/17(火) 03:23:540279256
2005/05/17(火) 03:24:020280253
2005/05/17(火) 03:25:07お魚くわえたドラネコー♪
0281253
2005/05/17(火) 03:25:230282253
2005/05/17(火) 03:26:06それよりあんたの技術力の低さが問題だ。
カルボナーラでも食ってろデブ
0283253
2005/05/17(火) 03:26:38偽者は無視して質問に答えてください。
0284253
2005/05/17(火) 03:27:06はしれーこうそくのてーいーこーくかげきだんー♪
0285デフォルトの名無しさん
2005/05/17(火) 03:27:12あんたにはガッカリだ・・・
0286253
2005/05/17(火) 03:27:59あしたは〜晴れるねジャンポール♪
0287256
2005/05/17(火) 03:28:36待ってました!
0288778
2005/05/17(火) 03:29:060289デフォルトの名無しさん
2005/05/17(火) 03:29:57今更謝って済む問題ではないですよね…反省してます。
本当に申し訳ありませんでした。
0290デフォルトの名無しさん
2005/05/17(火) 03:30:04半年romってろ!
0291デフォルトの名無しさん
2005/05/17(火) 03:30:18おまwwwww
スレまちがえてるwwwwwwww
0292デフォルトの名無しさん
2005/05/17(火) 03:31:050293デフォルトの名無しさん
2005/05/17(火) 03:33:400294デフォルトの名無しさん
2005/05/17(火) 03:36:330295デフォルトの名無しさん
2005/05/17(火) 03:41:56ラウンジって何なの?
0296デフォルトの名無しさん
2005/05/17(火) 03:47:442ch内の荒らしの集団
初心者をオフに誘ってレイプとかするらしいよ
皆さん気をつけてください
0297253
2005/05/17(火) 03:55:33の253はニュー速VIPの悪戯ですので勘違いせぬようお願いします。
0298デフォルトの名無しさん
2005/05/17(火) 03:57:000299デフォルトの名無しさん
2005/05/17(火) 03:57:380300デフォルトの名無しさん
2005/05/17(火) 03:57:54最悪だなラウンジって
0301デフォルトの名無しさん
2005/05/17(火) 03:58:06お兄ちゃんの
おちんちん
何センチ?
0302デフォルトの名無しさん
2005/05/17(火) 03:58:19き
え
ろ
0303デフォルトの名無しさん
2005/05/17(火) 04:02:19えがしら
ろっぷんだろ
0304193
2005/05/17(火) 06:27:06つくって、コンパイルが通ったけど、何にも結果が出力されてこない・・・
もう限界だ、寝るorz
0305デフォルトの名無しさん
2005/05/17(火) 06:36:44[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
お願いします。
0306デフォルトの名無しさん
2005/05/17(火) 07:16:31int 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:
}
0307デフォルトの名無しさん
2005/05/17(火) 08:35:41いやそれ、未だ全然わかんないから。
つーか、コンパイルとおらねぇだろよ。
ついでに言えば、反転処理も間違ってる。
0308デフォルトの名無しさん
2005/05/17(火) 09:59:18宿題ではないのですが初心者スレで
こちらのスレを薦められたので来ました
[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の部分です。よろしくお願いします。
0309デフォルトの名無しさん
2005/05/17(火) 10:18:16[2]2分探索のプログラムを作成せよ
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005年5月18日まで
期限せまってるのですがさっぱりわかりません、よろしくお願いいたします。
0310デフォルトの名無しさん
2005/05/17(火) 11:18:48ありがとうございます!
ソース見て勉強します。
0311デフォルトの名無しさん
2005/05/17(火) 11:23:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=31
0312デフォルトの名無しさん
2005/05/17(火) 11:49:42問題が抽象的すぎます。
0313デフォルトの名無しさん
2005/05/17(火) 11:56:03早速読んでみます
ありがとうございました
0314309
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;
0315デフォルトの名無しさん
2005/05/17(火) 12:44:16> int l, m, h, key, data[101], result=0;
こんなコードを問題で出すから生徒は育たないのだと思う。
0316デフォルトの名無しさん
2005/05/17(火) 12:50:01・先頭を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;
なきがする
0317デフォルトの名無しさん
2005/05/17(火) 12:50:07>>1
> ・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
0318309
2005/05/17(火) 13:09:100319デフォルトの名無しさん
2005/05/17(火) 13:09:21はあ?何をとちくるってんだこのボケは
0320デフォルトの名無しさん
2005/05/17(火) 13:32:46情報を小出しにするなって事だろ
0321デフォルトの名無しさん
2005/05/17(火) 14:07:17期限って明日やん。この程度の問題でそんなん迫っているとは言わん。
こんなもんで良いんか?
#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 );
}
うん、汚ねぇソース。
0322321
2005/05/17(火) 14:31:480323193
2005/05/17(火) 16:37:09実行してしばらく経っても全然結果が出てこないんですよね。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/401.txt
あと1時間で出さなきゃいけないのに何も思いつかないorz
0324デフォルトの名無しさん
2005/05/17(火) 16:40:35故意に計算速度を遅くしているからじゃないか?
0325デフォルトの名無しさん
2005/05/17(火) 16:40:37偽者出現したり、やっぱここも2chだな。(笑
0326デフォルトの名無しさん
2005/05/17(火) 16:52:56そんなときこそ、デバッグプリントを活用するんだ。
たとえば、forで今、何番目を処理してるか?とかコンソールに出すと、視覚的に良くわかる。
でも、ソースが汚くなる諸刃の剣。と。
0327デフォルトの名無しさん
2005/05/17(火) 16:57:37オマエ、諸刃の剣いってみたかったんちゃうかと。
0328193
2005/05/17(火) 17:03:54だって、それが目的ですもの
0329デフォルトの名無しさん
2005/05/17(火) 18:08:02だって、それが目的ですもの
0330デフォルトの名無しさん
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 関数を完成させるだけです。
本当、窮地なんです。
助けてください。お願いします!!
0331デフォルトの名無しさん
2005/05/17(火) 19:00:08問題文はどこ?
0332デフォルトの名無しさん
2005/05/17(火) 19:04:45問題文ないよね?
0333デフォルトの名無しさん
2005/05/17(火) 19:09:14あの暗号が問題文かと
んなわきゃねー
0334デフォルトの名無しさん
2005/05/17(火) 19:10:32[2] 問題文
キーボードから入力した数値を小さい値の順に並べるプログラム。
ただし、関数を作る)
[3] 環境
[3.1] OS: WINDOWS XP
[3.3] 言語:C
[4] 期限:無期限
初歩的な質問ですがお願いします。
0335デフォルトの名無しさん
2005/05/17(火) 20:07:11http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/403.txt
0336デフォルトの名無しさん
2005/05/17(火) 20:45:18[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;
};
0337336
2005/05/17(火) 20:48:29struct 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[]);
(ここまで出来ました。ロダ使えないので長レスごめんなさい)
0338336
2005/05/17(火) 20:50:50#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;}
0339336
2005/05/17(火) 20:52:47int 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[])
0340336
2005/05/17(火) 20:54:00int 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;
}
以上になります。長レスごめんなさい。
構造体での表示方法がどうしてもわかりません。よろしくお願いします
0341193 ◆vVe.Z3fuuw
2005/05/17(火) 21:25:01もう締め切りが過ぎてしまった件
0342デフォルトの名無しさん
2005/05/17(火) 21:44:13http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/404.txt
> 作成する関数の定義は、次のようにする。
> void histgram2(int points[],
> int nchild,
> struct HistgramRange hist[],
> int nhist,
> int results[]);
クソなプロトタイプだな。
0343デフォルトの名無しさん
2005/05/17(火) 21:56:49[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がマシンインプロシオンであることに注意せよ。
との事ですがいまいち分かりません;;どなたかご教授宜しくお願い致します。
0345デフォルトの名無しさん
2005/05/17(火) 22:07:00[2] 問題文(含コード&リンク): n個の乱数(整数)を発生させ、そのn個の整数が素数であるかどうかを判別するプログラムを作成せよ。但し、整数の上限は1000とする。
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:
[4] 期限:明日
お願いしますです
0346345
2005/05/17(火) 22:07:570347デフォルトの名無しさん
2005/05/17(火) 22:11:13んで、答えはこんなんだ。
double a = 1.0;
double old_a;
while (a + 1.0 > a) {
  old_a = a;
  a /= 2;
}
printf("%f\n", a);
でもなぁ。i386系のCの浮動小数点演算は、これで正確にでるかはわからんなぁ。
0348デフォルトの名無しさん
2005/05/17(火) 22:12:09[2] 問題文(含コード&リンク):数列int a[10]={1,2,3}に入力した数値を加え、小さい方から大きい方へと並び替え、表示させる
[3] 環境
[3.1] OS: windows XP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可
[4] 期限:できれば今日中に・・・
0349デフォルトの名無しさん
2005/05/17(火) 22:16:50/* 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) { /* 力尽きた */}
0350デフォルトの名無しさん
2005/05/17(火) 22:18:400351デフォルトの名無しさん
2005/05/17(火) 22:22:43なぜか動きません・・・orz
0352デフォルトの名無しさん
2005/05/17(火) 22:27:50[2] 問題文(含コード&リンク):
与えられた文章から最も文字数の多い行を表示しなさい
例)今日は
とても良い天気なので
公園に行きました
解)とても良い天気なので
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
皆さんなら、朝飯前ですか?
0353デフォルトの名無しさん
2005/05/17(火) 22:31:57#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;
}
0354デフォルトの名無しさん
2005/05/17(火) 22:31:58>皆さんなら、朝飯前ですか?
なんかムカツク。
朝飯まで時間があるから自分でやれ。
0355デフォルトの名無しさん
2005/05/17(火) 22:33:42ありがとうがざいます。これで明日からちゃんと学校に通えれます。
0356352
2005/05/17(火) 22:34:06すみません・・・一言多かったです m(_ _)m
反省してます。
0357デフォルトの名無しさん
2005/05/17(火) 22:36:43#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;
}
0358デフォルトの名無しさん
2005/05/17(火) 22:39:09#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;
}
0359デフォルトの名無しさん
2005/05/17(火) 22:39:14[2] ダミー節点を使わないリスト構造を用いて,挿入整列の
プログラムを作成せよ
・リスト構造は,ポインタによるリンクリストを用いること
・整列前のリスト内の各要素,整列後のリスト内の各要素を
表示するようにすること
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン): cygwin
[3.3]言語:C言語
[4]期限:2005/05/23
結構考えたつもりなんですがさっぱりわかりません。
どうかよろしくお願いします。
0360デフォルトの名無しさん
2005/05/17(火) 22:42:49どこまで考えたんだ?
0361デフォルトの名無しさん
2005/05/17(火) 22:44:11int func(const void* a,const void* b){
return *(int*)a - *(int*)b;
}
一行ですむものを。
0362デフォルトの名無しさん
2005/05/17(火) 22:46:15#includeから書いていただけると嬉しいです;
0363デフォルトの名無しさん
2005/05/17(火) 22:48:14おお、そんな方法が。
勉強になります。
さんきゅー。
0364デフォルトの名無しさん
2005/05/17(火) 22:48:22色々な参考書読んだのですが、プログラムを作るとなると手が出ません^^;
つまり、手付かずの状態です。全く分かりません^^;
0365デフォルトの名無しさん
2005/05/17(火) 22:48:22先輩方宜しくお願いします。
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):ダミー節点を使わないリスト構造を用いて,挿入整列のプログラムを作成せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):bcc
[3.3] 言語:C
[4] 期限:5月22日まで
[5] その他の制限:
リスト構造は,ポインタによるリンクリストを用いること
整列前のリスト内の各要素,整列後のリスト内の各要素を表示するようにすること
0366352
2005/05/17(火) 22:48:32ありがとうございました
助かりました
0367デフォルトの名無しさん
2005/05/17(火) 22:53:24本を読んでいるだけではプログラミングなんて身につかない。
自然言語にも言えることだけど。
0368365
2005/05/17(火) 22:54:12[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):bcc
[3.3] 言語:C
[4] 期限:5月22日まで
[5] その他の制限:無し
宜しくお願いします。
0369デフォルトの名無しさん
2005/05/17(火) 23:14:06はい、すみません。でも今回は本当にわからなかったんです。
どうかよろしくお願いしますm(__)m
0370デフォルトの名無しさん
2005/05/17(火) 23:17:15[2] 問題文
テストの点数を入力していき、最高点、最低点、平均点を計算するプログラムを作成せよ
入力の値が負になったとき、入力は終了とする
[3] 環境
[3.1] OS:linux
[3.3] 言語:C
[4] 期限:明日
[5] その他の制限:入力値を用いて判定式を作成し、while分に応用する
よろしくお願いします
0371デフォルトの名無しさん
2005/05/17(火) 23:20:140372デフォルトの名無しさん
2005/05/17(火) 23:20:27[2] 問題文(含コード&リンク):ガウスの消去法。入力、前進代入、後進代入、出力の関数を使う。
[3] 環境
[3.1] OS: WinXp
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:5月18日
[5] その他の制限:
数学系のプログラミングがまったくできません。
よろしくお願いします。
0373デフォルトの名無しさん
2005/05/17(火) 23:25:03数学系でないプログラミングを教えて欲しい。
0374デフォルトの名無しさん
2005/05/17(火) 23:26:310375デフォルトの名無しさん
2005/05/17(火) 23:42:290376デフォルトの名無しさん
2005/05/17(火) 23:46:25aが指してる値がINT_MINで、bが指してる値が正だと
ヘンなことになるな。
0377デフォルトの名無しさん
2005/05/17(火) 23:50:57[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] その他の制限: 特にありません。
どなたかよろしくお願いします。
0378デフォルトの名無しさん
2005/05/17(火) 23:52:43#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("得点が入力されていません");
}
0379デフォルトの名無しさん
2005/05/18(水) 00:00:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/405.txt
希望通りのものかどうか知らんが
0380デフォルトの名無しさん
2005/05/18(水) 00:17:54359ですが365と重複していたので解決しました。
ありがとうございました。
0381デフォルトの名無しさん
2005/05/18(水) 00:19:38ありがとうございます!助かりました
0382デフォルトの名無しさん
2005/05/18(水) 00:25:59問題の情報が十分に与えられていない。無理。
0383デフォルトの名無しさん
2005/05/18(水) 00:59:43#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;
}
0384デフォルトの名無しさん
2005/05/18(水) 01:04:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/406.txt
0385デフォルトの名無しさん
2005/05/18(水) 01:22:01いや、あれ以上与えようが・・・。
サーバーとクライアントのチャットができるプログラムを、395.txtのゲームができるように、
少し変えてもらうだけでいいんですが。
0386デフォルトの名無しさん
2005/05/18(水) 01:33:28情報も環境もないのに出来るわけ無いだろ。
自分に出来ないことを 「だけ」 って言うな。
0387377
2005/05/18(水) 01:39:37ありがとうございます。とても助かりました。
0388デフォルトの名無しさん
2005/05/18(水) 02:46:25desu. suimasen. koredesu.
http://www.geocities.jp/arerenore1357/HW.cab
honto, onegai simasu!!
0389デフォルトの名無しさん
2005/05/18(水) 02:59:40[1] 情報通信:
[2] ttp://www.musication.to/prog/erl.html のBを求める計算のプログラム:
[3] 環境
[3.1] OS:linux
[3.3] 言語:C
[4] 期限:18日 13:00まで
[5] なし
計算式がわかっているのにどうにもできません。
どうかよろしくおねがいします。
0390デフォルトの名無しさん
2005/05/18(水) 03:23:36a は何で n は何で x は何だ?
0391デフォルトの名無しさん
2005/05/18(水) 03:31:130392389
2005/05/18(水) 03:42:03とりあえずaとnは自分で入力する変数ということで。
xは入れなくてもΣで動くと思います。
0393デフォルトの名無しさん
2005/05/18(水) 04:15:48ところで、呼量がaで、回線容量がnだな。
Bは呼損率だが、それを求めてほしーよーだ。
リンク先では、aとBを与えてnを求めるプログラムだから混乱するわな。
あと、0の階乗は1な。
数学ライブラリを使うときは、-lm忘れんなよ。
0394デフォルトの名無しさん
2005/05/18(水) 05:42:54ありがとうございます。
遅くなってすいません。
0395デフォルトの名無しさん
2005/05/18(水) 07:15:21float版は自分でやんなさい
#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;
}
0396デフォルトの名無しさん
2005/05/18(水) 07:50:09[2] 簡単なモグラたたきゲームを作れ
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C/C++/どちらでも可
[4] 期限:今日のお昼まで
今日中に外部構造、内部構造くらい作らないといけないのですが、全くわかりませぬ。
使用するグラフィックは素材集から流用しまつ。
0397デフォルトの名無しさん
2005/05/18(水) 07:58:160398デフォルトの名無しさん
2005/05/18(水) 07:58:50#include <2c.h>
を忘れるな
0399396
2005/05/18(水) 08:03:44あとこの文献が参考になる!ってのありませんでしょうか?ネト通販でいろいろ探してますがみつからんとです・・
0400193 ◆vVe.Z3fuuw
2005/05/18(水) 08:03:56Pick_up_Next_Node()で計算回数を減らしてやろうと思っていじってみたものの
全くへっていない・・・
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/409.txt
* Flow augmented by 1 through 4 + 3 + 2 + 1
* Flow augmented by 1 through 4 + 2 + 3 + 1
を交互に出させるにはどうすればいいのでしょうか。
やっぱり↓を修正していくしかないのでしょうか。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/401.txt
0401デフォルトの名無しさん
2005/05/18(水) 08:28:00[1] 授業単元:Data structure
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/410.txt
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ(バージョン):MSVC
[3.3] 言語:C++
[4] 期限:なるべくはやく。
[5] その他の制限:
mainとsum関数はあたえられたものです。
自分なりにやってみたのですが、エラーが出ます。
よろしくお願いします。
0402デフォルトの名無しさん
2005/05/18(水) 09:04:54#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;
}
0403デフォルトの名無しさん
2005/05/18(水) 09:57:02[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 です
0404403
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
0405デフォルトの名無しさん
2005/05/18(水) 11:09:01#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 オプションを忘れずに
虚数解の誤植もあえてそのままにしてみた。気になるようだったら直すように
0406デフォルトの名無しさん
2005/05/18(水) 12:33:46損失率が解のを求めてほしいんじゃなかったっけ?
と言うやってもいない人間の俺ガイル
0407デフォルトの名無しさん
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 関数を完成させるだけです。
本当、窮地なんです。
助けてください。お願いします!!
0408だだ
2005/05/18(水) 12:45:36[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] その他の制限: 関数化していただけるとうれしいです。
0409デフォルトの名無しさん
2005/05/18(水) 14:35:12[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/411.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):bcc 5.5
[3.3] 言語:C
[4] 期限:2005年05月20日まで
[5] その他の制限:構造体を使っていただけると助かります。
0410デフォルトの名無しさん
2005/05/18(水) 14:35:41[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まで
0411デフォルトの名無しさん
2005/05/18(水) 14:58:06[2] 問題文(含コード&リンク):データとして0から100までの整数を配列の先頭から順に繰り返し文を使って詰める。
その後、2つ目の繰り返し文で全データを表示する(数値のみでよい)
このプログラムを書きなさい。
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C言語
[4] 期限:2005年5月19日の朝9時まで
先輩方、ご教授お願いします。
0412403
2005/05/18(水) 15:20:23丁寧な解答ありがとうございます。
おかげで助かりました。
0413デフォルトの名無しさん
2005/05/18(水) 15:34:19#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がいくつ出たかとか記憶はするが結果を表示するのかどうか
そのへんがわからないので勝手に設定した。
0414デフォルトの名無しさん
2005/05/18(水) 15:46:06#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;
}
ホントニコレデイインダロウカ…
0415デフォルトの名無しさん
2005/05/18(水) 15:47:39#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;
}
問題を誤解していたらスンマソン
0416デフォルトの名無しさん
2005/05/18(水) 16:45:35[1] 授業単元:アルゴリズム演習1
[2] 問題文(含コード&リンク):
�@二つの整数を入れて、その公約数をすべて表示せよ
�Aはじめに人数を入力、その人数分、交通費を入力。
するとお金の種別ごと(一万円、五千円、千円、五百円、百円、五十円、十円、一円)
に何枚用意する必要があるか表示してくれるプログラムを作成せよ。
例: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日早朝まで
よろしくお願いします。
0417デフォルトの名無しさん
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番目と数えることにする。
お願いします。
0418デフォルトの名無しさん
2005/05/18(水) 16:51:320419デフォルトの名無しさん
2005/05/18(水) 16:59:40できました!ありがとうございました
・・・が、floatがわからないですorz
0420デフォルトの名無しさん
2005/05/18(水) 17:32:00(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;
}
0421デフォルトの名無しさん
2005/05/18(水) 17:34:23二千円は?
0422デフォルトの名無しさん
2005/05/18(水) 17:51:34デバッグしてないけど、こんな感じか??
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;
}
0423デフォルトの名無しさん
2005/05/18(水) 17:52:20銀行で寝てて誰も知らないんだよ。(笑
0424デフォルトの名無しさん
2005/05/18(水) 17:53:50(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]);
}
0425416
2005/05/18(水) 17:56:37すみません。
>>420
ありがとうございました。
たすかりました。
0426416
2005/05/18(水) 18:02:50ありがとうございます。
考えたとき、さっぱりわからなかったんで、
ちょっと、これを参考にやり直してみようとおもいます。
返信をくれた方々、本当にありがとうございました。
感謝です。
0427デフォルトの名無しさん
2005/05/18(水) 18:03:04[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
おねがいします。
0428デフォルトの名無しさん
2005/05/18(水) 18:04:14>struct Node* N=data;
struct ListNode* N=data;
の間違い。コンパイル位するんだった。
0429デフォルトの名無しさん
2005/05/18(水) 18:05:401引いて8で割り、その結果に1を足して8掛ける。
0430デフォルトの名無しさん
2005/05/18(水) 18:07:51ちょっと待て、入力も全角になってないぞ。
0431デフォルトの名無しさん
2005/05/18(水) 18:08:44冗長ロジック乙。
0432デフォルトの名無しさん
2005/05/18(水) 18:12:01[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
0434デフォルトの名無しさん
2005/05/18(水) 18:24:22>>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;
}
0435デフォルトの名無しさん
2005/05/18(水) 18:24:58whileは使ってもいいの??
0436デフォルトの名無しさん
2005/05/18(水) 18:28:40[2] 問題文(含コード&リンク):キーボードから任意の整数(これをキーという)を入力する。
データの入った配列を前から順に調べてキーと一致するデータをもつ要素の
添字を表示する。一致しない時はー1を表示する。
このプログラムを作りなさい。
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C言語
[4] 期限:2005年5月19日13時まで
明日のテストに必ずでるそうなんですがさっぱりわかりません、先輩方助けてください。
0437デフォルトの名無しさん
2005/05/18(水) 18:36:23多分これでいいはず。
ポイントは、正規化する数字が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);
}
0439デフォルトの名無しさん
2005/05/18(水) 18:41:21馬鹿丸出しで申し訳ないが、添字って何を指しているの?
要素の中身を表示すればいいのかな?
0440デフォルトの名無しさん
2005/05/18(水) 18:44:270441デフォルトの名無しさん
2005/05/18(水) 18:44:59データの入った配列がどんなのかは知らんから適当に作った。
#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;
}
0442デフォルトの名無しさん
2005/05/18(水) 18:45:37ああ、そっちか。
サンキュー。勉強になった。
0443デフォルトの名無しさん
2005/05/18(水) 18:52:43シフトを使わないで、必要ない所も削ったら次のようになった。
どちらにしろ、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;
}
0444デフォルトの名無しさん
2005/05/18(水) 18:53:23#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;
}
0445デフォルトの名無しさん
2005/05/18(水) 18:56:00完全に条件判断削除
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);
}
0446デフォルトの名無しさん
2005/05/18(水) 19:02:45おしい
0447デフォルトの名無しさん
2005/05/18(水) 19:06:460449デフォルトの名無しさん
2005/05/18(水) 19:11:270450デフォルトの名無しさん
2005/05/18(水) 19:19:040451445
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を超えると動作しないの注意。
0452427
2005/05/18(水) 19:20:28何やってるかわからないけど完璧でした!
問題がおかしいと思って今問い合わせていましたが
赤っ恥かきそう・・・
勉強させてもらいます
ありがとうございました。
0453 ◆u2YjtUz8MU
2005/05/18(水) 20:00:51[2] 問題:0〜19までの中からランダムにすべて異なる数5個を作りたいです。
2個だったら1個目と2個目を比べて異なる数だったら終わりにすれば簡単にできるのですが
5個の場合も同じように全部比べて異なる数が出るまで乱数作り続けるしかないでしょうか?
[3] 環境 : C,C++どちらでも可
[4] 期限:無期限
[5] その他の制限:
0454デフォルトの名無しさん
2005/05/18(水) 20:08:41#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;
}
0455デフォルトの名無しさん
2005/05/18(水) 20:09:32C++だったら、std::random_shuffle()というアルゴリズムを使えばいい。
0456デフォルトの名無しさん
2005/05/18(水) 20:17:49C++ならこうする。
#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, " "));
}
0457デフォルトの名無しさん
2005/05/18(水) 20:27:37[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;
}
0458デフォルトの名無しさん
2005/05/18(水) 20:29:51double sincos(double x)
{
return pow(sin(x), 2) + pow(cos(x), 2);
}
0459デフォルトの名無しさん
2005/05/18(水) 20:37:19>プロトタイプ宣言を省略してはいけない。
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
0460453 ◆u2YjtUz8MU
2005/05/18(水) 20:37:44ありがとうございました。
0461デフォルトの名無しさん
2005/05/18(水) 20:39:20あーそれと、Cのsin()、cos()はradianを引数に取るので、入力する
角度の指定が必要。
弧度法ならそのままでいいが、degreeなら、2π/360=π/180を掛けとけ。
0462デフォルトの名無しさん
2005/05/18(水) 20:42:43#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;
}
0463デフォルトの名無しさん
2005/05/18(水) 20:55:15[2]キーボードから0から100までの偶数をランダムに入力し、配列に納めていく。その際、入力した
値の1/2の値の添字をもつ配列要素に入力するデータを納めるものとする。その後、別のグループで入力された
配列要素の値のみを表示する。このプラグラムを書け。実行時には20個のデータを入力しなさい。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/20まで
問題文を読んでもさっぱり、、、ご教授お願いします;
0464365
2005/05/18(水) 21:02:13コードを参考にしながらそれっぽい物を作成しいましたが、実行時にエラーが発生してしまいます。
よろしければ添削お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/415.txt
0465デフォルトの名無しさん
2005/05/18(水) 21:06:10>>459
>>461
ありがとうございます。
0466345
2005/05/18(水) 22:10:45[2] 問題文(含コード&リンク): n個の乱数(整数)を発生させ、そのn個の整数が素数であるかどうかを判別するプログラムを作成せよ。但し、整数の上限は1000とする。
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:
[4] 期限:今日中
すいません明日提出なので宜しくお願いします;;
0467デフォルトの名無しさん
2005/05/18(水) 22:36:360も正数だっけ?わすれた!
#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;
}
0468デフォルトの名無しさん
2005/05/18(水) 22:39:110469デフォルトの名無しさん
2005/05/18(水) 22:41:37言葉が入る 例えば、「亀,カメ,0010」のようなカンジなものが約10万語つ
まり約10万行ほどある。)を配列に読み込み、表記・読み・品詞(品詞は4桁の
数字で表す)を指定すると、その情報を標準出力に出力するプログラムの作成。
《流れ》
�@単語の個数を数える �Aメモリ確保 �B辞書を読み込み �C検索情報入力 �D出力する。失敗の場合、失敗メッセージを出力。
[3.1.]linux
[3.3.]
[4]至急
ここに一応ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/416.txtに私のものを置いておきました。ただ、「セグメントエラー」がおきます。指摘など宜しくお願いいたします。
0470デフォルトの名無しさん
2005/05/18(水) 22:43:17#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;
}
0472デフォルトの名無しさん
2005/05/18(水) 22:55:500473デフォルトの名無しさん
2005/05/18(水) 23:01:28×&math.h>
○<math.h>
0475デフォルトの名無しさん
2005/05/18(水) 23:02:590476デフォルトの名無しさん
2005/05/18(水) 23:20:23折角作ったからう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;}
0477デフォルトの名無しさん
2005/05/18(水) 23:21:10すいませんでした。情報と環境を全部うpしました。
http://uppp.ath.cx/src/uppp1483.zip
>>252をどうかよろしくお願いします。
0478デフォルトの名無しさん
2005/05/18(水) 23:23:21そだな。main()がないわな。
0479デフォルトの名無しさん
2005/05/18(水) 23:23:45今日はミスが多いな。
#include <memory.h>
を追加。
後は、全角スペースを旨く取り除いてくれ。
0480デフォルトの名無しさん
2005/05/18(水) 23:23:56[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;
//以下省略
0481デフォルトの名無しさん
2005/05/18(水) 23:28:54俺も酒飲みながら片手間に書いてるとよく間違う(^_^;)
趣味の時間だしな。
0482デフォルトの名無しさん
2005/05/18(水) 23:29:42char[]型の代入はサポートされてないがな。
memcpy or strcpy使うか、そもそもstd::stringに変えてしまうかしたほうが良いと思う。
0483デフォルトの名無しさん
2005/05/18(水) 23:30:26strcpy()
C/C++には配列のコピー演算子はない。C++でクラスなら代入演算子や
コピーコンストラクタを定義する事はできる。またPODでも構造体なら
operator=がデフォルトで存在する。
0484デフォルトの名無しさん
2005/05/18(水) 23:41:28酒を飲んでるわけじゃないんだけど、しらふでもこの有様で。:)
コンパイル位は通すべきだった。
VC2003のコンソールプロジェクト使ってるんだけど、
開いたときに最初から書いてあるコードを削除するときにポカしまくりで。
いや、まいった。何でブランクプロジェクトがなくなったんだろ。スッゴイ不便。
愚痴になっちゃった。
今後精進します。
0485デフォルトの名無しさん
2005/05/18(水) 23:42:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/419.c
0486デフォルトの名無しさん
2005/05/18(水) 23:53:41あるよ。
ウィザードのダイアログの左側メニューで
「アプリケーションの設定」を選択後、
「空のプロジェクト」チェックボックスを選択汁。
0487デフォルトの名無しさん
2005/05/18(水) 23:59:31ありがとうございます。少し理解に苦しむところもありますが、きちんと実行できました。ただ、私はまだ初心者なので私の作った物の推敲をしてくれればと思います。よろしくおねがいします
0488デフォルトの名無しさん
2005/05/19(木) 00:04:03あ''〜〜〜ぁ!!!!
背景と同化してて選択できるなんて全く思いつかなかった。
ありがとう、一個賢くなったよ。
0489デフォルトの名無しさん
2005/05/19(木) 00:08:05[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;
}
0490デフォルトの名無しさん
2005/05/19(木) 00:22:05for(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;
}
}
/*----------------------*/
こんな感じか?
0491489
2005/05/19(木) 00:45:23ありがとうございます。
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);
}
0492デフォルトの名無しさん
2005/05/19(木) 00:54:31です。
すいません。
どなたか助けていただけないでしょうか。
これが出来ないと、次の実験でも使えなくて、
これから先の課題が出来ないのです。
ほんと、お願いします。
align関数を埋めるだけだと思うのですが・・・。
お願いします。
0493デフォルトの名無しさん
2005/05/19(木) 01:04:35こんな感じか??
#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;
}
0494489
2005/05/19(木) 01:18:00ありがとうございます!
すごく悩んでたのですっきりしました。
C言語の授業もっとマジメに受けておくべきでしたorz
勉強しなおさなくては。
0495デフォルトの名無しさん
2005/05/19(木) 01:24:11がんがれ。
0496デフォルトの名無しさん
2005/05/19(木) 01:27:20おやすみ〜。
0497463
2005/05/19(木) 06:14:09[2]キーボードから0から100までの偶数をランダムに入力し、配列に納めていく。その際、入力した
値の1/2の値の添字をもつ配列要素に入力するデータを納めるものとする。その後、別のグループで入力された
配列要素の値のみを表示する。このプラグラムを書け。実行時には20個のデータを入力しなさい。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/20まで
今日中に出さないとまずいので、何卒よろそくおねがいします;;
0498デフォルトの名無しさん
2005/05/19(木) 06:56:22問題正しい?
「入力された回数を配列要素に代入する」なら判るけど...
0499デフォルトの名無しさん
2005/05/19(木) 07:08:160500デフォルトの名無しさん
2005/05/19(木) 08:21:54ファイルの中身と実際格納する文は何と書いたらいいのでしょうか?
テキストがファイルの入出力まで記述されておらず、調べてもいまいち分かりませんでした。
例えば、以下のように格納したいと思います。
main関数で実際そう宣言してもいいのですが、以下のように3×3では済まずとても大きくなるもので…
structure std[] = {
{"aaa","bbb","ccc"},
{"ddd","eee","fff"},
{"ggg","hhh","iii"}, }
0501デフォルトの名無しさん
2005/05/19(木) 08:40:01typedef 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);
0502463
2005/05/19(木) 08:48:24[2]キーボードから0から100までの偶数をランダムに入力し、配列に納めていく。その際、入力した
値の1/2の値の添字をもつ配列要素に入力データを納めるものとする。その後、別のループで入力された
配列要素の値のみを表示する。このプラグラムを書け。実行時には20個のデータを入力しなさい。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/20まで
すいません、問題文を一部間違っていました、大変申し訳ありません。
0503デフォルトの名無しさん
2005/05/19(木) 09:32:17#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 );
}
0505デフォルトの名無しさん
2005/05/19(木) 14:13:49[2]配列に0から100までの偶数を先頭から順に間を空けずに詰める。キーボードから1から99の間の奇数を入力し
その数と要素の値を順次比較する。そしてその数を順序関数を維持して配列に納める。その後、全データを表示する。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005年5月20日17時まで
今年の4月からC言語を学び始めたのですがさっぱり、、、先輩方ご教授お願い致します。
0506デフォルトの名無しさん
2005/05/19(木) 14:38:08#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 );
}
0507デフォルトの名無しさん
2005/05/19(木) 15:54:15[2] 問題文(含コード&リンク):ろだのC/C++宿題スレ42代目3のNo.423です。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:明日の午前八時まで
[5] その他の制限:特にないです。
どうかよろしくおねがいします。ごめんなさい
0508デフォルトの名無しさん
2005/05/19(木) 15:59:49リンクくらい貼れや。
0509デフォルトの名無しさん
2005/05/19(木) 16:11:05ご指摘ありがとうございます
[1] 授業単元:データ構造
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/423.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:明日の午前八時まで
[5] その他の制限:特にないです。
こうですか。ごめんなさい。迷惑かけました
0510デフォルトの名無しさん
2005/05/19(木) 16:21:31short型で左右別の配列にデータを格納までは出来たのですが、計算方法が分かりません。
dB=20*log(A1/A2)
A1とA2の振幅が、この場合何を意味しているのでしょうか?
0511デフォルトの名無しさん
2005/05/19(木) 17:39:04C++で書きたくなるのをうずうずとこらえながらCで書いた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/424.txt
0512デフォルトの名無しさん
2005/05/19(木) 18:20:210513デフォルトの名無しさん
2005/05/19(木) 18:28:29デシベルは相対的な単位だから、wavファイルから直接デシベル
単位で音圧を求めることは出来ない。
0514デフォルトの名無しさん
2005/05/19(木) 18:33:32あ、あ、ありがとうございます。
もっとCの練習します。
0515デフォルトの名無しさん
2005/05/19(木) 18:43:58A1: 入力音量
A2: 基準音量(1Vrms だったっけ)
入力信号は 16bit だと, 折れ線とか対数とかで圧縮してあると思うぞ.
0516デフォルトの名無しさん
2005/05/19(木) 19:03:11#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;
}
0517デフォルトの名無しさん
2005/05/19(木) 19:45:12002.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/
0518デフォルトの名無しさん
2005/05/19(木) 19:59:19searchの第1引数はDICの配列なのに、mainではSTRを
入れているから。
0519デフォルトの名無しさん
2005/05/19(木) 20:04:52[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/423.txt
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ(バージョン): VC6.0
[3.3] 言語:C++
[4] 期限:本日中
[5] その他の制限:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/425.cpp
この部分まで出来ましたが、この後がわかりません。よろしくお願いします。
0520519
2005/05/19(木) 20:11:52http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/426.txt
よろしくお願いします
0522デフォルトの名無しさん
2005/05/19(木) 20:27:11見て理解します。
ありがとうございました。
0523デフォルトの名無しさん
2005/05/19(木) 20:35:27C++には見えないのですが…
0524519
2005/05/19(木) 21:14:49始めはC++で作成していたのですが、出題者に数回添削されていたら
何時の間にかC++なのにCっぽく(汗
エラーの原因がわからなくなってしまいまして・・・よろしくお願いします
0525デフォルトの名無しさん
2005/05/19(木) 21:24:35>j = (int)argv[num]; //argvから数値を読み込み、jに代入する
この行何?普通atoi()かsscanf()だと思うが・・・・
0527デフォルトの名無しさん
2005/05/19(木) 21:38:22これさあ、全部C++で作り直して、一発で合格させてもらった方がいいよ。
多分担当の教官は、頭が古くてC++がわからず、C風にどんどん直すも、
間違いだらけの添削やってるみたいだから。
0528デフォルトの名無しさん
2005/05/19(木) 22:21:20>>252>>477
をやってくれる神を待っています
0529524
2005/05/19(木) 22:23:33*数値が足りない
*0による割り算が発生する
*全てに当てはまらない場合
の場合の条件はどのようにすればいいのか教えてもらってよいでしょうか?
条件がわからなくなってしまいましたので・・・(汗
0530デフォルトの名無しさん
2005/05/19(木) 22:43:56[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] その他の制限:
お力添えをいただければと思います。
どうかよろしくお願いします。
0531デフォルトの名無しさん
2005/05/19(木) 23:11:35それは作ったけど、「数値の形式が不正」ってのは、atof()だけでは
判断できない。多分小数点が2個あるとか、符号が連続して付いて
いるとかだと思うが、その場合sscanf()で、戻り値を見たい。
しかし問題文の条件にはsscanf()を使っていいような場所が見あたらない
ので、作れない。それで、今回は「数値の形式が不正」のエラーを省略
している。ここは自分で直して欲しい。
後はだいたい動くようだ。
それから、インクルード・ヘッダもC形式の指定になっているので、あえてC++
独自の機能を使う事を避けた。強いて言えばvoidとreturn 0;を省略している
事くらい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/427.txt
0532デフォルトの名無しさん
2005/05/19(木) 23:15:32スマソ。間違いがあったので修正した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/428.txt
0533デフォルトの名無しさん
2005/05/19(木) 23:20:10http://www.comm.musashi-tech.ac.jp/~kyomuka/sylb/2004/26/2605300.htm
これか?
"プログラミングスキルが足りないと感じた学生は早めに申し出れば指導を行う"
とあるじゃないか。いい先生じゃないか。逝ってきなさい。
0534デフォルトの名無しさん
2005/05/19(木) 23:25:04Vector3D型とはどんな型か分からないと、プログラムは書けないぞ。
0535デフォルトの名無しさん
2005/05/19(木) 23:25:58(1)はこんな感じかな。
ぐぐるさん見ながらだけどね。
何に使えるかわからない。
double innerProd(struct Vector3D v1, struct Vector3D v2){
return (v1.x*v2.x)+(v1.y*v2.y)+(v1.z*v2.z);
}
0536デフォルトの名無しさん
2005/05/19(木) 23:30:38double 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の忠告は正しい。
0537デフォルトの名無しさん
2005/05/19(木) 23:34:19http://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;
}
0538537
2005/05/19(木) 23:35:520539530
2005/05/19(木) 23:39:39Vector3D型なんですけど、
struct Vector3D{
double x;
double y;
double z;
};
です。
構造体を使った問題なんですが
構造体の作り方や宣言の仕方、それをメイン関数にどう反映させていいものなのかが
よくわかりません・・・
二つのベクトルにそれぞれ数値を入れて内積値を出力させるというものに
したいのです。
自分でも今現在いろいろ検索してみて調べてるのですが
一つのプログラムにまとめようとすると混乱してしまって・・・
0540デフォルトの名無しさん
2005/05/19(木) 23:42:40[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] その他の制限:特になしです。よろしくお願いします。
0541デフォルトの名無しさん
2005/05/19(木) 23:49:07(1+2^2+3^2+4^2+5^2+・・・・)の間違いです。すいません。
0542デフォルトの名無しさん
2005/05/19(木) 23:49:37int n,s=0;
scanf("%d",&n);
for(;n>0;n--)
s += n*n;
printf("%d\n",s);
return 0;
}
0543デフォルトの名無しさん
2005/05/19(木) 23:49:49こんな感じかい?
数字は好きにいじってちょ。
#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;
}
0544デフォルトの名無しさん
2005/05/19(木) 23:52:14#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;
}
0545530
2005/05/20(金) 00:02:11また質問の内容に不明な点があったことについてお詫びします。
みなさんからお答えいただいたものをもとに頑張ってみようと思います。
0547540
2005/05/20(金) 00:22:130548デフォルトの名無しさん
2005/05/20(金) 08:48:06です。
どなたか助けてもらえないでしょうか。
明日までなのですが、自分にはお手上げです。
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]];
本当、よろしくお願いします。
0549デフォルトの名無しさん
2005/05/20(金) 09:33:15http://ppp209;-162.yomogi.or.jpうへへ。
0550デフォルトの名無しさん
2005/05/20(金) 10:48:590551デフォルトの名無しさん
2005/05/20(金) 10:59:40問題文の
「右、左、斜め上で一番大きい数字を取る。左右と同じ数字の場合は斜め上優先。」
がわかんね〜。どういう事?どこを基準で考えているの?
0552デフォルトの名無しさん
2005/05/20(金) 12:18:11ありがとうございます。
わたしの書いた問題文の後半の後ろから直線的に辿っていくっていうのは、
たぶんどうでもいいと思う。
ただ表を完成させて、一番右下の数字がどれだけ似かよっているかを
表すから、それを返せばいいんだと思う。
>>右、左、斜め上で一番大きい数字を取る。左右と同じ数字の場合は斜め上優先。
右じゃなくて、上でした。
一つマスを埋めるたびに、左の数を−1した数と、上の数を−1した数と
その埋めなければならない場所に相当した数を表から取って来て、
その数と斜め上の数を足したものを比べて、
一番大きい数をそこに埋めていくとやります。
それをやって出来上がった表の一番下の数がどれだけ似通っているかを
示す数です。
0553551
2005/05/20(金) 13:20:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=31
Cだけど、こんなんで良いの?
C++への変換は自分でやって。
0554デフォルトの名無しさん
2005/05/20(金) 13:40:23ありがとうございます。
でも、vector<vector<int> >
vector<vector<Move>>を使って
あのプログラムに埋め込まなきゃいけないんです・・・。
0555デフォルトの名無しさん
2005/05/20(金) 14:05:30アホか。そういうのは先に「その他の条件」に書いておけ。
その為のテンプレだろうが。
0556551
2005/05/20(金) 14:18:550557デフォルトの名無しさん
2005/05/20(金) 14:43:59[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
宜しくお願いします!
0558デフォルトの名無しさん
2005/05/20(金) 15:09:11それくらい自分の脳みそで考えてできないとまずいだろ。
0559デフォルトの名無しさん
2005/05/20(金) 15:18:52[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
宜しくお願いします。
0560デフォルトの名無しさん
2005/05/20(金) 15:22:58単元がC言語なのに、プログラム言語がC++とはこれ如何に
0561デフォルトの名無しさん
2005/05/20(金) 15:34:33#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;}
0562デフォルトの名無しさん
2005/05/20(金) 15:43:20最近算数やってないので出力を確認すること。
#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);
}
0563デフォルトの名無しさん
2005/05/20(金) 15:43:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/430.txt
0564デフォルトの名無しさん
2005/05/20(金) 15:59:52#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;
}
0565デフォルトの名無しさん
2005/05/20(金) 16:08:21すいません。書き直します。
【質問テンプレ】
[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++できる方、助けてください。お願いします!!
0566デフォルトの名無しさん
2005/05/20(金) 16:16:05http://YahooBB2191;99159114.bbtec.netうへへ。
0567デフォルトの名無しさん
2005/05/20(金) 16:23:40久々にゲームっぽいものを作った。結構楽しかったよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=31
の102またはNo.431
0568デフォルトの名無しさん
2005/05/20(金) 16:28:43ジャンケンの手をエコーバックさせればもうちょっとフレンドリーになるが、忘れていた。
独自にやる気があったらやってくれ。
0569559
2005/05/20(金) 16:30:12C言語という授業なんですが、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さんの勝ちです
↑こんな感じで表示できるようにお願いします。
0570デフォルトの名無しさん
2005/05/20(金) 16:43:22ジャンケンでもそうだけど、後だし禁止。
0571デフォルトの名無しさん
2005/05/20(金) 16:46:43中出しは・・・・してもいいのか?ハァハァ
0572デフォルトの名無しさん
2005/05/20(金) 16:50:34突っ込むための穴が無いのでできません。残念!!
0573デフォルトの名無しさん
2005/05/20(金) 16:58:10つ「セキュリティーホール」
0574デフォルトの名無しさん
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は配列の外側に行ってるような気がするのですが・・。
0575デフォルトの名無しさん
2005/05/20(金) 17:06:43これが良いのか!?
ん?これがいいのか!!
0576デフォルトの名無しさん
2005/05/20(金) 17:10:34トロイ入ってくるぅ〜〜!!
トロイ「俺の(バックドア)でガバガバにしてやるぜ!」
0577デフォルトの名無しさん
2005/05/20(金) 17:12:03(1) 0
(2) 1
(3) 655351
0578デフォルトの名無しさん
2005/05/20(金) 17:19:070579デフォルトの名無しさん
2005/05/20(金) 17:20:210580デフォルトの名無しさん
2005/05/20(金) 17:41:39これでわかるか?
<- 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
0581デフォルトの名無しさん
2005/05/20(金) 17:47:13このプログラムには不備がかなりある。
つまりエラーチェックをもう少し進めよ。
#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;
}
0582デフォルトの名無しさん
2005/05/20(金) 17:49:42いいなー。
0583デフォルトの名無しさん
2005/05/20(金) 18:22:46見たけどやる気が起きない。
0584デフォルトの名無しさん
2005/05/20(金) 18:24:11最後の文がおかしいらしくきちんと格納されません。
ファイルの中身と格納する文はどう書けばいいのでしょうか?
とりあえずコンパイラを通すために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);
0585デフォルトの名無しさん
2005/05/20(金) 18:35:46入力関数はストリームの先頭から文字を「取り出す」(いい加減な説明だけど、最初はそういう理解で十分)
だから、1周目で1行目の文を入れたら、(ストリームに1行目は残ってないので)自動的に2周目で2行目の文が入る。
(残ってない は実は嘘だけど気にすんな)
0586584
2005/05/20(金) 18:39:30アナルヘソ(・∀・)
指定しなくてもとにかく順番に入れてくれるってことですね。
ただファイルの中身とfscanf文は上記のようにしてあるのですが、
BBBに入れたい文がAAAに続けて入っていたりします。
きちんと区切って入れるにはどうしたらいいのでしょうか?
0587デフォルトの名無しさん
2005/05/20(金) 18:53:02一般的なのは、ホワイトスペース、またはコンマかな。
本文に出てこない文字を区切り文字にするといい。
0588デフォルトの名無しさん
2005/05/20(金) 18:55:10584のテキストはセミコロンで区切られているように見えるが。
0589デフォルトの名無しさん
2005/05/20(金) 18:57:22fscanf("%s;%s;%s;%s",str[0].AAA, str[0].BBB, str[0].CCC,str[0].DDD);
でどうだろう??
0590デフォルトの名無しさん
2005/05/20(金) 18:58:07fpわすれてた。
0591584
2005/05/20(金) 19:05:27区切り文字はfscanf側ですね。
一応>>584のような記述で実行しての不具合だったので、
ファイル側は一応まともに区切られてはいるってことですよね。
今は自宅にいて試せる環境にないのですが、後日fscanf側を変更してやってみます。
>>585-590 みなさまありがとうございました。
0592デフォルトの名無しさん
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;
0593デフォルトの名無しさん
2005/05/20(金) 19:07:47{
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");
}
}
0594デフォルトの名無しさん
2005/05/20(金) 19:09:30{
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; /* 見つからなかった */
}
0595デフォルトの名無しさん
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] その他の制限: できればキューに格納してほしい
0596デフォルトの名無しさん
2005/05/20(金) 19:18:30テンプレつかっておくれ。
0597デフォルトの名無しさん
2005/05/20(金) 19:26:512分探索はソート済みのデータじゃないと無理。
hi=MAX-1;
でなく
hi= Num-1;
でないか?
0598デフォルトの名無しさん
2005/05/20(金) 19:31:14スタックではなく?
0599デフォルトの名無しさん
2005/05/20(金) 19:51:03[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/432.txt
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:2005/5/23
[5] その他の制限:特に無し
ご指南よろしくおねがいします。
考えれば考えるほど頭がこんがらがってくる・・・OTZ
0600デフォルトの名無しさん
2005/05/20(金) 20:58:42なんか変な仕様だな。
とりあえず、一つのListのvalueが一桁の数値を持つようだな。
これを踏まえてだな。
intに変換する関数。
int DisitToInt(disit *data);
をつくって、intでごにょごにょして、
disit* IntToDisit(int val);
を作ってというのが一つの案なんだが、
読み直してみると、結構面倒だな。
あっさりINT32分超えそう。
すまん、やくにたってないな。
0601デフォルトの名無しさん
2005/05/20(金) 21:04:24http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/433.c
0602デフォルトの名無しさん
2005/05/20(金) 21:17:01さっぱり分からないので、「こーすればいいんじゃないの?」みたいなアドバイスでもいいのでご指南よろしくお願いします・・・
0603デフォルトの名無しさん
2005/05/20(金) 21:26:15ご回答ありがとうございます。
・・・が,9999と1を入力しても10000にならないです・・・
0604デフォルトの名無しさん
2005/05/20(金) 21:38:06じゃ、これ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/434.c
0605デフォルトの名無しさん
2005/05/20(金) 21:56:36わざわざご丁寧に有難うございました。
考え方一つでここまで単純にすることができるんですね・・・
0606デフォルトの名無しさん
2005/05/20(金) 22:07:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/435.txt
0607デフォルトの名無しさん
2005/05/20(金) 22:14:52興味が無いわけではないけど、僕はWindows使いなので手が出ません。
まーソケットは扱ったこと無いから元々手が出ないかもしれんが。
0608デフォルトの名無しさん
2005/05/20(金) 22:31:33595のものですが関数のプロトタイプ宣言が
例)void change(char *pre,struct queue *postfix)
な感じになればいいんです。
0609デフォルトの名無しさん
2005/05/20(金) 23:18:57[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] その他の制限:あまり難しい事は習っていないので簡単?なプログラムで。。。
あつかましいですが宜しくお願いします。
0610デフォルトの名無しさん
2005/05/20(金) 23:56:32やばい。あとしめきりまで、6時間しかありません。
必死なんです。どなたか手伝ってください。
ほんと、お願いします!!!!!!!
0611デフォルトの名無しさん
2005/05/20(金) 23:59:54#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;
}
0612デフォルトの名無しさん
2005/05/21(土) 00:06:10仕方ないから大雑把にアルゴリズムだけ。実際には自分で組め。
まずは表作り。詳しい書き方は(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++に移行している間に次を書いとく。
0613デフォルトの名無しさん
2005/05/21(土) 00:15:59vector<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時間半がんばれ。
0614デフォルトの名無しさん
2005/05/21(土) 00:23:09素数の判定だけ
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;
}
0615デフォルトの名無しさん
2005/05/21(土) 00:25:30素数判定するんだったらもっとマシなアルゴリズム使えよwww
0616611
2005/05/21(土) 00:33:26改行が多い関係で省いたけど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ですか?
0617Me != 615
2005/05/21(土) 01:03:20int *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;
}
0618609
2005/05/21(土) 01:23:571番はできたのですが2番の616さんのプログラムがエラー出てしまいます・・
0619ME->NewFace
2005/05/21(土) 01:26:23数学の素養がないとこういうときつらいな〜。
#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;
}
0620616
2005/05/21(土) 01:37:28isprime関数を>>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つ作らなきゃならんらしい(それぞれ何を出力するのか問題文からはよく分からん)
からそのままだとアウトだが。
0621デフォルトの名無しさん
2005/05/21(土) 02:14:17おやすみ〜。
0622デフォルトの名無しさん
2005/05/21(土) 02:18:410623デフォルトの名無しさん
2005/05/21(土) 02:26:46ありがとうございます!できました。
自分も問題文がよくわかりませんorz
0624デフォルトの名無しさん
2005/05/21(土) 02:50:00>表示(2)(カウントした数を引数とし,結果を表示)
void put_1(int n){ printf("%d は素数です\n",n); }
void put_2(int n){ printf("素数である要素は %d あります\n", n); }
0625デフォルトの名無しさん
2005/05/21(土) 03:23:44ありがとうございます。
私も、やることのアルゴリズムはわかるんですよ。
でも、このもとあるコードが理解できてないんですね。。。
これだけでもRunするんですよ。
それらを、どういうふうにこのコードにそって
書いたらいいのかが、全くわからないんですね。。。
すいません。
もし、C++が分かる方がいたら、教えてください。
ほんと、お願いします。
0626625
2005/05/21(土) 03:55:29koreto niterun dato omoimasu.
0627デフォルトの名無しさん
2005/05/21(土) 03:57:39回答ありがとうございました。
習っていない文法があったので、もう少し簡単目なのではできないのでしょうか?
ttp://www.media.osaka-cu.ac.jp/~k-abe/2001-JS-OSAKA-U/C.html
↑ここの最初からbreak文あたりまでしかまだ習っていないので・・・
0628625
2005/05/21(土) 04:11:39このクラス、パスできないかもしれないのです。
お願いです。助けてください。
0629デフォルトの名無しさん
2005/05/21(土) 04:22:22お金払って、それなりの人にやってもらえば?
大事な単位なんでしょ。そんな問題をタダでやってもらおうなんて虫が良すぎる。
お金払ってやってもらう価値があるんでしょ?
それにいい加減ウザイ。
0630625
2005/05/21(土) 04:26:46テメエには言ってねえよ(゚Д゚ )ゴルァ!!余計な茶々入れるんじゃねーよ。
私は解いて下さるだけにお願いしているのです。
どうかお願いしますm(_ _)m
0631デフォルトの名無しさん
2005/05/21(土) 04:28:230632デフォルトの名無しさん
2005/05/21(土) 04:29:44諦めろ。
0633デフォルトの名無しさん
2005/05/21(土) 06:27:470634625
2005/05/21(土) 06:31:46あと2時間しかないです。
630は私ではありません。
0635デフォルトの名無しさん
2005/05/21(土) 06:32:09>>625 よ、学校にお友達いないのか?
回答者にとってここは人助けのためにあるのではなくって、
暇つぶし程度だとおもう・・・そんなに期待しないよーに。
それと、FAQかなぁ。
Q.解けないと単位もらえない。
A.知ったこっちゃない。
Q.急いでください。
A.回答者は急ぐ義理はない。
(とか書くと、やさしいおせっかいさんが、プログラム書いてくれるハズ)
0636デフォルトの名無しさん
2005/05/21(土) 06:41:01>>634
問題どこ? リンク貼っといて。
それと、お礼はなんですか? いくら出せますか?
0637625
2005/05/21(土) 06:41:17無理に急いでくださいとは言える立場ではないのは分かってます。
締め切りすぎた後でもこれは必要なので、お願いします。
0639デフォルトの名無しさん
2005/05/21(土) 06:50:49ごめんねー。
0640625
2005/05/21(土) 06:52:17もう一度張ります。
【質問テンプレ】
[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 関数を完成させるだけです。
0641625
2005/05/21(土) 06:53:04家のメアドはここには張りたくないのですが・・・。
0642デフォルトの名無しさん
2005/05/21(土) 07:08:14プロバイダのメールとか学校のメールとかか?
0644デフォルトの名無しさん
2005/05/21(土) 08:17:320645デフォルトの名無しさん
2005/05/21(土) 08:36:41最後の矢印を辿るところがよく分からないので適当に。
scoreの求め方も書いてないからやってない。
AminoAcidAlignment align(const AminoAcidSequence &s1, // it is ok if
const AminoAcidSequence &s2) { // &s1 == &s2
struct matrix {
int row, col;
std::vector <int> v;
matrix(int r, int c) : row(r), col(c), v(row * col) {}
int *operator[](int r) {return &v[r * col];}
};
AminoAcidAlignment aln; aln.seq1=s1; aln.seq2=s2; aln.score=-654321;
const int len1=s1.AAnums.size(), len2=s2.AAnums.size();
matrix m(len2 + 1, len1 + 1);
int i, j, gap = -1;
for (j = 0; j < len2; j++)
for (i = 0; i < len1; i++)
m[j + 1][i + 1] = max(max(m[j + 1][i] + gap, m[j][i + 1] + gap),
m[j][i] + kScoreMatrix[s2.AAnums[j]][s1.AAnums[i]]);
0646645
2005/05/21(土) 08:37:13for (i = j = 1; i < len1 || j < len2;)
if (i == len1)
aln.moves.push_back(GAPIN1), j++;
else if (j == len2)
aln.moves.push_back(GAPIN2), i++;
else if (m[j][i + 1] >= m[j + 1][i] && m[j][i + 1] >= m[j + 1][i + 1])
aln.moves.push_back(GAPIN2), i++;
else if (m[j + 1][i + 1] >= m[j + 1][i])
aln.moves.push_back(NOTGAP), i++, j++;
else
aln.moves.push_back(GAPIN1), j++;
aln.moves.push_back(NOTGAP);
return aln;
}
0647625
2005/05/21(土) 09:52:36スコアーは、一番右下のものになります。
その数値が大きいほど、2つの配列が似ているということです。
640はねたではありません。
cab落せないですか?私は落せますが・・・。
0648625
2005/05/21(土) 12:00:190649625
2005/05/21(土) 12:04:260650デフォルトの名無しさん
2005/05/21(土) 12:15:510651デフォルトの名無しさん
2005/05/21(土) 12:20:200652625
2005/05/21(土) 12:26:04出来ねーからって、がたがた言うな。
能力のある方にお願いしてるのです。
どうかお願いしますm(_ _)m
0653デフォルトの名無しさん
2005/05/21(土) 12:47:35>出来ねーからって、がたがた言うな。
>>625に該当
0654625
2005/05/21(土) 12:54:160655デフォルトの名無しさん
2005/05/21(土) 12:59:500656625
2005/05/21(土) 13:02:03ここ最近で私が書いたのは、
>>638 >>634 >>637 >>640 >>641 >>647 >>649
0657625
2005/05/21(土) 13:14:57卒業がかかってるんです。不況なので早めに就職活動始めたいので、
是 非 お 願 い し ま す 。
0658作ってみた>627
2005/05/21(土) 13:16:26printf("Aさんの手は?"); ta=getchar();
if( ! (ta=='G' || ta=='T' || ta=='P')) printf("入力エラー\n");
tb=getchar(); /*←なぜかENTERの分を読まないといけないらしい*/
printf("Bさんの手は?"); tb=getchar();
if( ! (tb=='G' || tb=='T' || tb=='P')) printf("入力エラー\n");
if(ta==tb) printf("\nあいこです\n");
if((ta=='G' && tb=='T') || (ta=='T' && tb=='P') || (ta=='P' && tb=='G')) printf("\nAさんの勝ちです\n");
if((ta=='G' && tb=='P') || (ta=='T' && tb=='G') || (ta=='P' && tb=='T')) printf("\nBさんの勝ちです\n");
0659625
2005/05/21(土) 13:19:31わかったらとっとと答え出しやがれ無能が。
0660デフォルトの名無しさん
2005/05/21(土) 13:22:58うはwwwwおkwwwwうっうぇっうぇwwww
0661デフォルトの名無しさん
2005/05/21(土) 13:41:32ネタだとしたら、金城センセ並み。
本物だとしたら、イタイ。
0662デフォルトの名無しさん
2005/05/21(土) 13:44:44本物であればトリップかフシアナ使ってからソースを上げなおせ
0663fusianasan
2005/05/21(土) 13:54:500664 ◆tr.t4dJfuU
2005/05/21(土) 14:13:03せめて、これくらいじゃないとね
0665pool-71-106-99-28.lsanca.dsl-w.verizon.net
2005/05/21(土) 14:20:57>>638 >>634 >>637 >>640 >>641 >>647 >>649 >>656
0666pool-71-106-99-28.lsanca.dsl-w.verizon.net
2005/05/21(土) 14:27:54[1] 授業単元: バイオインフォマティックス
[2] 問題文(含コード&リンク):
http://www.geocities.jp/cplushelphelp/HW.cab
この中に途中までのコードと問題文が含まれています。
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ(バージョン): MSVC
[3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:
0667デフォルトの名無しさん
2005/05/21(土) 15:15:08,:::-、 __
,,r 〈:::::::::) ィ::::::ヽ
〃 ,::::;r‐'´ ヽ::ノ
,'::;' /::/ __
l:::l l::::l /:::::) ,:::::、 ji
|::::ヽ j::::l、ゝ‐′ ゙:;;:ノ ,j:l
}:::::::ヽ!::::::::ゝ、 <:::.ァ __ノ::;! パンダー!
. {::::::::::::::::::::::::::::`='=‐'´:::::::::/
';::::::::::::ト、::::::::::::::i^i::::::::::::/
`ー--' ヽ:::::::::::l l;;;;::::ノ
`ー-"
【ラッキーレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です。
0668デフォルトの名無しさん
2005/05/21(土) 18:35:08C++やってたんじゃないのか??
情報は正確にたのむよ〜。
0669デフォルトの名無しさん
2005/05/21(土) 18:53:02[2] 問題文(含コード&リンク):
キューのプログラムを作成したい。
ただし注意点がある。
大きさは0-9までの配列を用いる。
head=0,tail=-1で初期化を行う。
0-999の任意の値の追加、取り出しと表示、キュー全体の表示を行うプログラムを作成せよ。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ(バージョン):microsoft visual c++
[3.3] 言語:C言語
[4] 期限:2005年05月23日0:00まで
どなたか御願いします。
0670デフォルトの名無しさん
2005/05/21(土) 18:59:15STL使う。終了。
0671デフォルトの名無しさん
2005/05/21(土) 19:44:000672デフォルトの名無しさん
2005/05/21(土) 19:55:19手を抜くためにグローバル変数を使った。
特に反省はしていない。
改造するなら構造体にすると複数でつかえるよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/438.txt
なお、tailの初期化値が-1だとエラーが出たので0で初期化した。
0673デフォルトの名無しさん
2005/05/21(土) 19:57:570674デフォルトの名無しさん
2005/05/21(土) 20:06:080675デフォルトの名無しさん
2005/05/21(土) 21:06:30LIFO はキューじゃなくてスタック
0676デフォルトの名無しさん
2005/05/21(土) 21:14:20レスthx
0677デフォルトの名無しさん
2005/05/21(土) 21:52:210678デフォルトの名無しさん
2005/05/21(土) 22:03:29ノシ
0679デフォルトの名無しさん
2005/05/21(土) 22:11:41[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/439.txt
問題文と自分で解いたプログラムを載せてます
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ(バージョン):
[3.3] C
[4] 期限:5月26日迄
[5] その他の制限:なしっす
どこが間違っているの指摘だけでも結構です、よろしくお願いします。
0680デフォルトの名無しさん
2005/05/21(土) 22:17:09[2] 問題文(含コード&リンク):
米ドルの換金レートを入力し,円をドルまたはドルを円に計算するプログラムを作成せよ.但し,以下の仕様にすること.
* 入力は換金レート(1ドル=x円のx)を入力.
* 円→ドルまたは,ドル→円を選択させる.
* ドル→円は四捨五入
* 以下の関数を作ること
1. レートを入力する関数(レートの値を戻り値)
2. 円→ドルを計算する関数(円とレートを引数,ドルを戻り値)
3. ドル→円を計算する関数(ドルとレートを引数,円を戻り値)
4. 結果を表示する関数(結果を引数)
* マイナスの円またはドルを入力すると終了.
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C言語
[4] 期限:2005年05月24日
ご教授よろしくお願いします。
0681デフォルトの名無しさん
2005/05/21(土) 22:30:09文法がCじゃないところがある。
C++として進めて見るよ。
0683デフォルトの名無しさん
2005/05/21(土) 22:33:27コンパイラのエラーはちゃんと無理ない方法で対処してほしい。
でないと、初期値不定の変数にアクセスしちゃったりするよ。
0684デフォルトの名無しさん
2005/05/21(土) 22:56:08そうですか・・・レスありがとうございます。
えっと、いちおうまだ時間はあるので、>>252>>477をやってくださる神を待っています
0685デフォルトの名無しさん
2005/05/21(土) 22:57:03hashtable[x].・・・x=-2
前方参照してるがな。アンダーフローっていうのかな。
0686デフォルトの名無しさん
2005/05/21(土) 22:59:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/440.txt
0687デフォルトの名無しさん
2005/05/21(土) 23:01:06sum=31*sum+c[i];この計算だ。あっさり振りきっとる。
0688デフォルトの名無しさん
2005/05/21(土) 23:05:30数値はしっかり把握してちょ。
うんじゃまた。
>>686
仕事が速いですな。関心します。
0689デフォルトの名無しさん
2005/05/21(土) 23:10:21>>685-688
詳しくアリガトウございました。
確かに振り切ってましたね。
>>686
ご丁寧にありがとうございました。
こんなに速くとは思ってなかったのでありがたいです。
0690デフォルトの名無しさん
2005/05/21(土) 23:30:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/441.txt
0691690
2005/05/21(土) 23:32:280692デフォルトの名無しさん
2005/05/21(土) 23:32:46微妙にC++?
0693デフォルトの名無しさん
2005/05/21(土) 23:37:15continueね。
0694679
2005/05/21(土) 23:48:10>>686さんのプログラムを参考にして
書き換えてみました。
ファイルから入力する時、1000行分のは実行できましたが
100,000行分のファイルを持ってくるとエラーになってしまいます。
原因としてどのような事が考えられるでしょうか?
0695デフォルトの名無しさん
2005/05/22(日) 00:02:26> ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
0697デフォルトの名無しさん
2005/05/22(日) 00:12:39学校のUNIXに家のWINDOWSから入って作業しています。
>>696
デバッガは無いので分からないですね。
0698デフォルトの名無しさん
2005/05/22(日) 00:15:22その Windows にデバッグ環境は無いのか?
無ければ Visual C++ 2005 Express Beta でもインストールしたら?
0699デフォルトの名無しさん
2005/05/22(日) 00:19:03VCがあっても意味無いだろ
0700デフォルトの名無しさん
2005/05/22(日) 00:22:01[2] 問題文(含コード&リンク):
次の実行結果になるようにプログラムを作成しなさい。
abc + cba = 1333となるa,b,cを求めるプログラム。
三重for文を使用すること。
変数は下記を使用すること。
int a,b,c; ← カウンタ
<実行結果>
419 + 914 = 1333
518 + 815 = 1333
617 + 716 = 1333
716 + 615 = 1333
815 + 514 = 1333
914 + 419 = 1333
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C++
[4] 期限:日曜日まで。
[5] その他の制限:
検索で色々調べたのですが二重for文までしか調べられませんでした。
ろだにも書き込みしました。よろしくおねがいします。
0701デフォルトの名無しさん
2005/05/22(日) 00:28:40デバッグ環境の話をしているのになぜ意味無いと思ったんだ?
0702デフォルトの名無しさん
2005/05/22(日) 00:34:40検索するまでも無いだろ。
#include <stdio.h>
int main(int argc, char *argv[])
{
int a, b, c, x, y;
for(a = 1; a <= 9; a++)
{
for(b = 1; b <= 9; b++)
{
for(c = 1; c <= 9; c++)
{
x = a * 100 + b * 10 + c;
y = c * 100 + b * 10 + a;
if(x + y == 1333)
printf("%d + %d = 133\n", x, y);
}
}
}
return 0;
}
0703デフォルトの名無しさん
2005/05/22(日) 00:35:14VC++はコンパイラだからじゃない?
>>697
UNIXならgdbとかあるんじゃない?
せめてどこでセグフォが起きるか分からんと。
というか、そのエラーが出たプログラムを上げ直しなよ。
0704デフォルトの名無しさん
2005/05/22(日) 00:35:25あと、ろだに書いたならリンクぐらい貼ろうな。
0705デフォルトの名無しさん
2005/05/22(日) 00:36:47{
int a,b,c;
for(a=0;a<10;++a)
for(b=0;b<10;++b)
for(c=0;c<10;++c)
if((a*100+b*10+c + c*100+b*10+a )==1333)
printf("%d + %d = 1333\n", a*100+b*10+c ,c*100+b*10+c);
}
0706697
2005/05/22(日) 00:44:59セグフォは削除のところで起きてました!
追加と探索は出来ていましたので・・・。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/442.txt
プログラムあげました。たびたびすみません。
0707デフォルトの名無しさん
2005/05/22(日) 00:45:43VC++ はコンパイラじゃなくて開発環境。
デバッグ環境も含まれる。
ちなみに VC8b2 に含まれるコンパイラの名称は Microsoft (R) 32-bit C/C++
Optimizing Compiler Version 14.00.50215.44。
コマンド名は CL.exe。
0708デフォルトの名無しさん
2005/05/22(日) 00:46:32m9(・∀・)ソレダ!!
ありがとうございました。getcharだったのか・・・
0709デフォルトの名無しさん
2005/05/22(日) 00:50:21だから、UNIX上で動かすプログラムをVCでデバッグしてどうすんの。馬鹿?
0710デフォルトの名無しさん
2005/05/22(日) 00:50:27> char *keys[100000];
> int n,i,z=0;
> int len;
> char line[256];
> for(n=0;fgets(line,256,stdin)!=NULL;n++){
> len=strlen(line);
> line[len-1]='\0';
> keys[n]=(char*)malloc(len);
> strcpy(keys[n],line);
> }
何コレ。
こんな事したら 100001 行入力した時にバッファオーバーフローするのわからない?
malloc() で領域確保して realloc() で調整すべし。
0711デフォルトの名無しさん
2005/05/22(日) 00:51:39C の標準機能しか使っていないソースを VC でデバッグできないと思ってんの? 馬鹿?
0712デフォルトの名無しさん
2005/05/22(日) 00:53:02泣くなよwww
0713デフォルトの名無しさん
2005/05/22(日) 00:54:000714デフォルトの名無しさん
2005/05/22(日) 00:55:29>>711
0715デフォルトの名無しさん
2005/05/22(日) 00:56:57答えになってない。
0716デフォルトの名無しさん
2005/05/22(日) 00:58:47UNIXでのデバッグができないアフォなんだろwww
そっとしておいてやれwwww
0717デフォルトの名無しさん
2005/05/22(日) 01:01:16>>697 が目に入らないのか?
0718デフォルトの名無しさん
2005/05/22(日) 01:02:240719デフォルトの名無しさん
2005/05/22(日) 01:03:19見苦しいのでもうやめ
0720デフォルトの名無しさん
2005/05/22(日) 01:05:01プププ
0721デフォルトの名無しさん
2005/05/22(日) 01:09:25CODEVIEWの頃から使ってるとつい
unixのプログラムもこっちでデバッグしてしまう
おかげでWinのHDDに\usr\local\xxx やら \var\xxx やらいろいろできてる・・
syslogもね
0722デフォルトの名無しさん
2005/05/22(日) 01:12:41realloc使ったこと無かったのでぐぐってみましたが
いまいちピンと来ませんでした。具体的には
どんな感じなんでしょうか・・・。
0724デフォルトの名無しさん
2005/05/22(日) 01:28:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/443.txt
煽るだけ煽って情報提供もせず回答もしない香具師は逝ってよし。
ちなみにこのソースは VC6 でデバッグしますた。
0725デフォルトの名無しさん
2005/05/22(日) 01:29:47自分に都合の悪い事は煽りにしたいんだろうな。
見苦しい。
0726デフォルトの名無しさん
2005/05/22(日) 01:30:56「情報提供もせず回答もしない香具師は」 の部分読めてるか?
0727デフォルトの名無しさん
2005/05/22(日) 01:31:48そんな決まりは無い。
0728デフォルトの名無しさん
2005/05/22(日) 01:34:29決まり? (゚Д゚)ハァ?
0729デフォルトの名無しさん
2005/05/22(日) 01:35:39最後に書いたほうが負け。
0730デフォルトの名無しさん
2005/05/22(日) 01:37:00そんな決まりは無い。
0731デフォルトの名無しさん
2005/05/22(日) 01:37:37本当にありがとうございます。
なんとか出来そうな感じです。
感謝です。
0732デフォルトの名無しさん
2005/05/22(日) 02:04:51眺めていて浮かんだ疑問なんだが。「ARNDCQEGHILKMFPSTWYVBZX」って
アミノ酸の一文字表記だよな?
問題文中の「S(G,G)=6なので」や「S(G,A)=0なので」に出てくる「ATCG」は塩基
だよな?
一緒にしてしまっていいのか?
0733デフォルトの名無しさん
2005/05/22(日) 02:06:430734デフォルトの名無しさん
2005/05/22(日) 02:06:56助かりました。ありがとうございました!
0735pool-71-106-99-28.lsanca.dsl-w.verizon.net
2005/05/22(日) 03:04:23ありがとうございます。
ここでの問題は、どれだけ2つの配列が似通っているかを調べるもので、
一番の焦点は、どこに、ギャップを入れると一番大きい数字を得ることが
できるかというものです。
その配列はなんなのかとかには、プログラムをする際には、
あまり気を使わなくていいと思います。
0736デフォルトの名無しさん
2005/05/22(日) 06:09:46[2]キーボードから、0から1000の間の整数をランダムに入力する。その数を100で割った余りを添字とする配列要素に
その入力データを格納する。この方法では入力データが異なっても同じ添字になる可能性がある。(これを衝突という)
データ入力中に衝突が起こったら、添字を+1した要素に納める。そこにもすでにデータが入っていたら、さらに添字を
+1して空き要素を探して格納する。その後入力されたデータが入っている配列の添字と要素の値を表示しなさい。なお
あらかじめ全配列要素に-1を詰めておくこと。このプログラムを書きなさい。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/23の夕方5時まで
4月からアルゴリズムを習い始めたのですが、いくら考えてもわかりません。
先輩方助けてください、よろしくおねがいします。
0737デフォルトの名無しさん
2005/05/22(日) 06:27:23クローズドハッシュでぐぐれ。
0738デフォルトの名無しさん
2005/05/22(日) 09:33:44ここは宿題を片付けるスレじゃなかったか?
0739デフォルトの名無しさん
2005/05/22(日) 09:40:16やっぱりVisual Studio使うのかな?
プログラミングの演習なんてみんなUnixを使うものだと思ってたよ。
0740デフォルトの名無しさん
2005/05/22(日) 10:28:06今や、ここはネタの場所だ。
0741デフォルトの名無しさん
2005/05/22(日) 10:40:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/444.txt
>>737
何から何まで問題文に書いてあるのにぐぐる必要があるのか?
0742デフォルトの名無しさん
2005/05/22(日) 11:12:47[2] 問題文(含コード&リンク):
Aghdsfh A 123
Mgfdhfh B345
Cgfdgfd A678
このようなファイルを、読み込み、
123 Aghdsfh A
345 Mgfdhfh B
678 Cgfdgfd A
このように出力せよ。(区切りはタブ、スペース、改行)
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:できれば今日中。
[5] その他の制限: scanf系、is系、str系の標準ライブラリ関数を、
使わないものとする。
教授が、根本から理解してほしいとの理由で、関数を使わせてくれません。
いくら考えても、できません。
よろしくお願いします!
0743デフォルトの名無しさん
2005/05/22(日) 11:18:03> Mgfdhfh B345
> Cgfdgfd A678
~~~~~
これを分解しなきゃいけないのか?
0744デフォルトの名無しさん
2005/05/22(日) 11:26:39すみません。各単語の間はタブやスペースです。
Aghdsfh (タブ) A (タブ) 123
書き込んだらおかしくなってました。
0745デフォルトの名無しさん
2005/05/22(日) 11:30:01getchar()使え
あとはifで
0746デフォルトの名無しさん
2005/05/22(日) 11:59:41ここは宿題を片付けるスレじゃなかったか?
0747デフォルトの名無しさん
2005/05/22(日) 12:00:19>double rate = InputRate();
C99ならおけなのか?
0748デフォルトの名無しさん
2005/05/22(日) 12:01:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/445.txt
0749デフォルトの名無しさん
2005/05/22(日) 12:02:29#include <stdio.h>
int is_space(int c)
{
return c == '\n' || c == '\t' || c == ' ';
}
void skipspace(void)
{
int c;
while (is_space(c = getchar()))
;
ungetc(c, stdio);
}
char *getstr(char *buf, size_t size)
{
size_t len = 0;
int c;
skipspace();
while ((c = getchar()) != EOF && !is_space(c)) {
if (len < size - 1)
buf[len++] = c;
}
buf[len] = '\n';
return (c == EOF && len == 0) ? NULL : buf;
}
0750デフォルトの名無しさん
2005/05/22(日) 12:02:45C99 じゃない C でも OK ですが何か?
0751デフォルトの名無しさん
2005/05/22(日) 12:03:18int main(void)
{
char field1[100], field2[100], field3[100];
while (getstr(field1, sizeof(field1)) {
getstr(field2, sizeof(field2));
getstr(field3, sizeof(field3));
printf("%s %s %s\n", field3, field1, field2);
}
return 0;
}
0752デフォルトの名無しさん
2005/05/22(日) 12:05:511 レスに収まらないならろだに貼れよ・・・。
それと、1 カラムに 100 文字以上書かれたらどうするんだ?
0753デフォルトの名無しさん
2005/05/22(日) 12:12:14コメント欄にソース張るとじゃますぎ!
0754524
2005/05/22(日) 12:12:32http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/446.cpp
これだとダメだから全部if・for文に変えろとか言われて・・・orz
これでも一応動いていたのですが。
環境等は変更ありません。
[4] 期限:2005年05月23日 AM8:00
申し訳ありませんがよろしくお願いします。
0755デフォルトの名無しさん
2005/05/22(日) 12:18:04何が 「ダメ」 なのかわからないと直すべき場所がわからない。
0756デフォルトの名無しさん
2005/05/22(日) 12:19:07ネタ? 一応動くけど
0757デフォルトの名無しさん
2005/05/22(日) 12:19:14>警告 W8065 test.c 49: プロトタイプ宣言のない関数 'InputRate' の呼び出し(関数 main )
0758デフォルトの名無しさん
2005/05/22(日) 12:25:42どんなクソなコンパイラ使ってるんだ?
0759デフォルトの名無しさん
2005/05/22(日) 12:29:35クソだな
何がプロトタイプ宣言のない関数、やねん
0760デフォルトの名無しさん
2005/05/22(日) 12:35:420761デフォルトの名無しさん
2005/05/22(日) 12:36:320762デフォルトの名無しさん
2005/05/22(日) 12:42:00printf("変換方法を選択してください (円→ドル='D'、ドル→円='Y'): ", dollar, yen);
の
, dollar, yenってやっぱり必要ですか?
0763デフォルトの名無しさん
2005/05/22(日) 12:47:220764デフォルトの名無しさん
2005/05/22(日) 12:55:27[2]あるファイルを読み込み、羅列している単語を抜き出して、
抜き出した単語を、辞書順にして画面に表示させるプログラムを作成せよ。
あるファイルというのは、自分で適当に作成するものとする。
例:Car Apple Dog
Cat windows2000 MBA
Beef Milk Mild
Dust Mac Enter Y
Can Statue Hang
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/23まで
よろしくお願いします。
0765デフォルトの名無しさん
2005/05/22(日) 12:59:22スペースorタブor改行で区切られているもの、という解釈でよいのか?
0766765
2005/05/22(日) 13:06:21int main(void)
{
int c;
while((c=getchar())!=EOF)
if(c==' ' || c=='\t' || c=='\n') putchar('\n');
else putchar(c);
return 0;
}
使い方: 実行プログラム < 読み込むあるファイル | sort
0767765
2005/05/22(日) 13:08:49のところのスペースがいなくなって見えますな
0768デフォルトの名無しさん
2005/05/22(日) 13:15:12文字コード順なら楽だが。
0769765
2005/05/22(日) 13:20:170770デフォルトの名無しさん
2005/05/22(日) 13:20:28そうとも限らないでしょ
つー訳で>>764は辞書を晒してね
0771TK
2005/05/22(日) 14:16:40答えはCHAR配列に格納。
お願いします。
0772デフォルトの名無しさん
2005/05/22(日) 14:19:45[2] 問題文(含コード&リンク):
多くの整数値が1行ずつ書かれたテキストファイルをリダイレクションで入力して、行数を数えて表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:できれば今日中。
[5] その他の制限: do-whileでお願いします。
途中までやってみましたが、これ以上無理でした。最後の行に999を入力して終了するようにしています。
#include <stdio.h>
int main(void)
{
int i,count;
count=0;
do{
scanf("%d",&i);
if (i == '\n') {
count = count + 1;
}
}while(i!='999');
printf("行数:%d",count-1);
return 0;
}
0773デフォルトの名無しさん
2005/05/22(日) 14:20:030774デフォルトの名無しさん
2005/05/22(日) 14:29:04>scanf("%d",&i);
>if (i == '\n') {
何処から教えれば良いのか…
取り合えず、fgets()使いましょう
行数は簡単に分かるはずなので…
0775デフォルトの名無しさん
2005/05/22(日) 14:38:08ここは宿題を片付けるスレじゃなかったか?
0776デフォルトの名無しさん
2005/05/22(日) 14:38:23そのプログラムを持って先生のところへ行け。
ここは宿題スレでC言語を教えるスレじゃない。
0777デフォルトの名無しさん
2005/05/22(日) 14:38:43スレ勘違いスマソ
0778デフォルトの名無しさん
2005/05/22(日) 14:38:50そのまま使用してみてちょうど10万行のデータのファイルを読み込んで見ましたが
やはりremove_itemの箇所でセグメントエラーとなってしまいます。
どのようにしたらよいのか全く分かりません。
0779デフォルトの名無しさん
2005/05/22(日) 14:42:13void n2h(char *buf, int n){
if(0<=n%16 && n%16<=9) *buf=n%16 +'0';
if(n%16==10) *buf='a';
if(n%16==11) *buf='b';
if(n%16==12) *buf='c';
if(n%16==13) *buf='d';
if(n%16==14) *buf='e';
if(n%16==15) *buf='f';
if(n/16) n2h(buf-1, n/16);
}
memset(buf,' ',sizeof(buf)); buf[4]='\0';
n2h(&buf[3],a);
0781デフォルトの名無しさん
2005/05/22(日) 14:47:23#include <stdio.h>
int main(void)
{
int i, count = 0;
while((i = getchar()) != EOF)
if (i == '\n')
count++;
printf("行数:%d", count);
return 0;
}
>>774
fgets() 使うまでもなかろ。
0782デフォルトの名無しさん
2005/05/22(日) 14:49:11int main(void)
{
int i = '\n', count = 0;
while((i = getchar()) != EOF)
if (i == '\n')
count++;
if (i != '\n')
count++;
printf("行数:%d", count);
return 0;
}
だったorz
0783デフォルトの名無しさん
2005/05/22(日) 14:50:05これでどう?
#include <stdio.h>
int main(void)
{
unsigned long line=0;
int c;
while((c=getchar())!=EOF) if(c=='\n') ++line;
printf("%lu\n", line);
return 0;
}
0784782
2005/05/22(日) 14:50:10逝ってくる
0785デフォルトの名無しさん
2005/05/22(日) 14:50:28>999を入力して終了
0786デフォルトの名無しさん
2005/05/22(日) 14:51:44最後の行が改行無しだと数えないね
0787782
2005/05/22(日) 14:51:52int main(void)
{
int i, last = '\n', count = 0;
while((i = getchar()) != EOF)
if ((last = i) == '\n')
count++;
if (i != '\n')
count++;
printf("行数:%d", count);
return 0;
}
こうだった
スレ汚しすまき
0788デフォルトの名無しさん
2005/05/22(日) 14:52:44問題文を見る限りそのアプローチは間違っている。
0789デフォルトの名無しさん
2005/05/22(日) 14:53:07lastは何に使ってんのと小一時間(r
0790デフォルトの名無しさん
2005/05/22(日) 14:53:24999を入力して終了なんだってば
0792デフォルトの名無しさん
2005/05/22(日) 14:54:29これか!
0793782
2005/05/22(日) 14:55:03int main(void)
{
int i, last = '\n', count = 0;
while((i = getchar()) != EOF)
if ((last = i) == '\n')
count++;
if (last != '\n')
count++;
printf("行数:%d", count);
return 0;
}
直せばいいんだろ (T∀T)
0794デフォルトの名無しさん
2005/05/22(日) 14:56:06問題文を見る限りそのアプローチは間違っている。
0796デフォルトの名無しさん
2005/05/22(日) 14:58:09そうか?
俺はてっきり最後の行が999で無ければエラーを吐く仕様かと…
0797デフォルトの名無しさん
2005/05/22(日) 15:00:00なんで?
while((i = getchar()) != EOF)
if ((last = i) == '\n')
count++;
↓
i=0;
do{
if (i == '\n')
count++;
}while((i = getchar()) != EOF);
でええやん
0798デフォルトの名無しさん
2005/05/22(日) 15:01:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/447.c
0799772
2005/05/22(日) 15:02:11私の場合はそれしか思いつかなかったので、それは強制していません。
ファイルの最後に999を入力して、無理やり終了させています。
すいません。
EOFの事をまだ習っていませんので、それを使用せずに作れないでしょうか?
0800デフォルトの名無しさん
2005/05/22(日) 15:02:54do { count += ( last == '\n' ) ; } while ( ( last = getchar() ) != EOF ) ;
0801デフォルトの名無しさん
2005/05/22(日) 15:05:42scanfだって
>入力の失敗が生じた場合には EOF が返される
ですけど?
0802デフォルトの名無しさん
2005/05/22(日) 15:06:36数字以外や空行が出たら終了でOK?
0803デフォルトの名無しさん
2005/05/22(日) 15:08:33漏れのところではセグフォは発生しなかった。
0805772
2005/05/22(日) 15:12:32#include <stdio.h>
int main(void)
{
int i, last = '\n', count = 0;
do{
if ((last = i) == '\n')
count++;
if (last != '\n')
count++;
}while((i = getchar()) != EOF)
printf("行数:%d", count);
return 0;
}
で一度やってみます。
ありがとうございます。
0806デフォルトの名無しさん
2005/05/22(日) 15:14:39そいつじゃだめだ
if (last != '\n')
count++;
をループの外に出せ
(下手にlast変数なんか導入するからw)
0807デフォルトの名無しさん
2005/05/22(日) 15:18:19先越されたけど一応参考までに
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/448.c
アップしてから気づいたけどdec2hex内のif文を短くできるorz
*s++=b[a & 0xF];
if(a>0xF) dec2hex(a>>4,s);
else *s=0;
0808デフォルトの名無しさん
2005/05/22(日) 15:22:49で、aが負の時の処理は?
さらに言えば>>773
0809524
2005/05/22(日) 15:33:19ダメなところ
・swichとforが混同してるからFORに統一
・多次元配列で判りやすく記述する
・1つのメイン関数で1つの処理
にしろということらしです.
例は、一番上にかいてある処理のやり方みたいです
0810779
2005/05/22(日) 15:34:46memset(buf,' ',sizeof(buf));
if(a<0){
buf[0]='-';
buf[5]='\0';
n2h(&buf[4],-a);
}else{
...
0811デフォルトの名無しさん
2005/05/22(日) 15:38:59ありえねー
0812デフォルトの名無しさん
2005/05/22(日) 15:40:51{
if (n > 16)
s = to_hex(s, n / 16);
*s++ = "0123456789abcef"[n % 16];
*s = '\0';
return s;
}
あんまし考えてない。
えらい人に質問。ここでマジックナンバー使ってるんだけれど、この場合OK? HEXって名前じゃあんましだし。
0813デフォルトの名無しさん
2005/05/22(日) 15:41:30まだswichを習ってないとかでは無いかと…
ありえないけど…
>>809
>例は、一番上にかいてある処理のやり方みたいです
って何?
0814デフォルトの名無しさん
2005/05/22(日) 15:43:23あとで意味がわからないような謎の数値を指す。
16進数へ変換する'16'なのだからマジックナンバーとはいえないな
0815デフォルトの名無しさん
2005/05/22(日) 15:48:59どうでも良いが'd'が無い
0816デフォルトの名無しさん
2005/05/22(日) 15:51:43負の数って補数表現? それとも頭に'-'付けるタイプ?
またあとで質問だらけになってしまうかもしれないけど
まずこれだけ確認したい
0817デフォルトの名無しさん
2005/05/22(日) 15:59:56細かく言えば、ヘッダを作ってあげて、
そこでdefineしてやるべきではあるが、
この程度なら、分からなくなる事はありえないのでOK
但し、簡単なコメントはつけるべき
/* unsigned -> HEX(文字列s)に変換 例 0 -> "0" 273 -> "111" */
0818デフォルトの名無しさん
2005/05/22(日) 16:08:16この手の問題で、負(int)の値や、hex(char[])を扱う時には、色々な問題があるでしょ?
だから、まず>>773を見れと「>>771と回答者に」言ってるの
0819デフォルトの名無しさん
2005/05/22(日) 16:12:37>/* unsigned -> HEX(文字列s)に変換 例 0 -> "0" 273 -> "111" */
モジックナソバーとは何の関係も無いが、概ね同意
0820809
2005/05/22(日) 16:58:47それはこちらが聞きたいです。
swich使った方が楽なんですが・・・
>>813
1個目のメイン及びその次の処理のように、ifelseで掛けということらしいです。
又はfor文らしい…
0821デフォルトの名無しさん
2005/05/22(日) 18:06:47[2] 問題文(含コード&リンク):
2次元配列配列A[][]にn個の1と0の組み合わせ全てを格納するプログラム
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):VisualStudio.NET
[3.3] 言語:C
[4] 期限:できれば今日中にお願いします
n=4のとき
A[16][4]={
{0,0,0,1},
{0,0,1,0},
:
:
{1,1,1,1},
}
という風になるようにしたいです。よろしくお願いします。
0822デフォルトの名無しさん
2005/05/22(日) 18:09:46こんな感じでどう?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/449.txt
0823デフォルトの名無しさん
2005/05/22(日) 18:12:50それだと15個しかない罠
0824デフォルトの名無しさん
2005/05/22(日) 18:15:35あ、{0,0,0,0}もです。ごめんなさい。
0825デフォルトの名無しさん
2005/05/22(日) 18:20:57int i;
for ( x = 0; i < 16; i++ ) {
A[ i ][ 0 ] = ( i & 0x08 ) ? 1 : 0;
A[ i ][ 1 ] = ( i & 0x04 ) ? 1 : 0;
A[ i ][ 2 ] = ( i & 0x02 ) ? 1 : 0;
A[ i ][ 3 ] = ( i & 0x01 ) ? 1 : 0;
}
0826デフォルトの名無しさん
2005/05/22(日) 18:21:47int A[ 16 ][ 4 ];
int i;
for ( i = 0; i < 16; i++ ) {
A[ i ][ 0 ] = ( i & 0x08 ) ? 1 : 0;
A[ i ][ 1 ] = ( i & 0x04 ) ? 1 : 0;
A[ i ][ 2 ] = ( i & 0x02 ) ? 1 : 0;
A[ i ][ 3 ] = ( i & 0x01 ) ? 1 : 0;
}
0827デフォルトの名無しさん
2005/05/22(日) 18:23:13[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): ttp://bal4u.dip.jp/mt/program/archives/2004/10/gap.html
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/450.zip
上が最終目標、下が今回の課題の問題文です。作りかけのソースも入れてあります
[3] 環境
[3.1] OS:VineLinux3.3.2(kernel2.4.27)
[3.2] コンパイラ(バージョン): gcc 3.3.2
[3.3] 言語:C
[4] 期限:2005年05月23日まで
[5] その他の制限:特になし
行き詰まったときに戻ってくるために各ノードの状態を記録しておく
必要があると思うんですが、どうやったらいいのか見当がつきません。
よろしくお願いします
0828デフォルトの名無しさん
2005/05/22(日) 19:05:19意外と面倒そうやね…
基本的には再帰で行けそうな気はするが…
0829821
2005/05/22(日) 19:42:52分かりづらくしてすいません。
0830デフォルトの名無しさん
2005/05/22(日) 20:08:41int A[ _N * _N ][ _N ];
int i;
int j;
int b;
for ( i = 0; i < _N * _N; i++ ) for ( b = 0x00000001, j = 0; j < _N; b <<= 1,j++ ) A[ i ][ _N - j - 1 ] = ( i & b ) ? 1 : 0;
0833821
2005/05/22(日) 21:34:120834デフォルトの名無しさん
2005/05/22(日) 21:37:08[2] 問題文(含コード&リンク):
無数の整数値が1行ずつ書かれたテキストファイルがる。
その個数よりも大きな整数型1次元配列変数int date[???]を用意し、これを読み込んだデータを大きい順に格納せよ。
さらに、時間反転した1次元配列を作成し、配列変数の中身をprintf文で出力せよ。
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:できれば早く。
よろしくお願いします。
0835デフォルトの名無しさん
2005/05/22(日) 22:18:440836デフォルトの名無しさん
2005/05/22(日) 22:48:18簡単じゃん。一瞬で出来た。でもあげない。
0837デフォルトの名無しさん
2005/05/22(日) 23:49:030838デフォルトの名無しさん
2005/05/22(日) 23:59:17[2] 問題文(含コード&リンク):
aとnをに適当な値を代入してEn(a)=aE(n-1)(a)/n+aE(n-1)(a)を計算するプログラムを作成せよ。
(n-1)となっているのは、分子のほうも分母のほうもEの下付き文字です。
表示方法がわかりませんでした。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:できるだけ早くお願いします。
[5] その他の制限:
0839デフォルトの名無しさん
2005/05/23(月) 00:08:38> aとnをに適当な値を代入してEn(a)=aE(n-1)(a)/n+aE(n-1)(a)を計算するプログラムを作成せよ。
> (n-1)となっているのは、分子のほうも分母のほうもEの下付き文字です。
下付文字? 添字のことか? そういうときは[]で囲んで表示しろ。
その書き方ではどこがそうなのかわからん。
0840デフォルトの名無しさん
2005/05/23(月) 00:13:56あと、nの部分は
n→n-1→n-2→…→1→0→-1→-2
とどこまでも行くわけじゃないだろ?どこで止まって
どういう定義になってるか書いてくれなきゃ。
0841デフォルトの名無しさん
2005/05/23(月) 00:15:24>時間反転した1次元配列
これ、読み込み順と逆順に、って意味かな?
とりあえず、前に行数を数える、ってのでてたからそれの応用でよいと思うんだが、
mallocとか使っていいのかな?
0842デフォルトの名無しさん
2005/05/23(月) 00:18:11*もちゃんと書け。添え字は[]にして()でしっかりと演算の順序を示せ。
0843デフォルトの名無しさん
2005/05/23(月) 00:26:39↑のプログラムはFord-Fulkersonのアルゴリズムで、
(http://coconut.sys.eng.shizuoka.ac.jp/gn/resume11.pdf 参照)
幅優先探索を利用して最大フローを求めているものなのですが、
これを深さ優先探索を利用したプログラムに変更するには
どう変更すればいいのでしょうか?
評価する関数を作って最小の増大路を求めるプログラムに
しようとしたんだけど、結果が出てこなくてうまくいかず・・・
http://tool-ya.ddo.jp/2ch/trash-box/file/20050518233531212.txt
0844デフォルトの名無しさん
2005/05/23(月) 00:30:050845デフォルトの名無しさん
2005/05/23(月) 00:32:20こんなんでいいのか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/451.c
0846デフォルトの名無しさん
2005/05/23(月) 00:33:39マルチはやめてください
0848デフォルトの名無しさん
2005/05/23(月) 00:39:45だとすると、行数の上限とか決まってるか?(問題文を全てさらせやゴルァ)
何行あるか調べてから配列を確保するためにはmalloc使うしか
0849デフォルトの名無しさん
2005/05/23(月) 00:41:14この式は(n-1)の場合のBが求められれば、nの場合のBが求められることを意味している。
nが0ならBは1であるからE[0](a)=1となり、これを初期条件として順次nまで殖やして行けば
B=E[n](a)が計算できる。
となっています。
他のところではE[0](a)=1を初期条件にして、順次nを増加していけばよい。
とも書いてありました。
書き方が汚くてすいませんでした。
0850デフォルトの名無しさん
2005/05/23(月) 00:41:180851デフォルトの名無しさん
2005/05/23(月) 00:43:410852デフォルトの名無しさん
2005/05/23(月) 00:46:40C99って
int sz;
szに値をセット
int buffer[sz];
みたいな事ができるのか。。。
0853デフォルトの名無しさん
2005/05/23(月) 00:48:11aとnは適当な値なんだろ?
aE[n-1](a)ってなんだよ。
a*a*E[n-1]ってことか?それともa*E[(n-1)*a]ってことか?
0855デフォルトの名無しさん
2005/05/23(月) 00:57:410856デフォルトの名無しさん
2005/05/23(月) 01:04:17エラー E2313 test.c 8: 定数式が必要
だって。。。orz
0857デフォルトの名無しさん
2005/05/23(月) 01:06:34はあ?C99でやってもか?
0858デフォルトの名無しさん
2005/05/23(月) 01:10:090859デフォルトの名無しさん
2005/05/23(月) 01:25:08行数を数えてから、Cのソースを吐き
system()を使ってコンパイル後、出来たファイルを実行
0860368
2005/05/23(月) 01:33:18ありがとうございました。
完成に近づけそうなんですが、うまくコンパイルできずに
warning:assignment makes pointer from integer without a cast
というエラーが出るんですが・・・。
どう対処すればいいでしょうか?
0861368
2005/05/23(月) 01:46:140862デフォルトの名無しさん
2005/05/23(月) 01:47:53エラーメッセージに行数は出てない?
0863デフォルトの名無しさん
2005/05/23(月) 01:50:35分かった。恐らく、
mat = malloc( sizeof(*mat) * num );
が原因なので、最初の行に以下を追加でOK
#include <stdlib.>
0864デフォルトの名無しさん
2005/05/23(月) 01:50:510865デフォルトの名無しさん
2005/05/23(月) 01:52:16つーわけで、
#include <stdlib.h>
0866デフォルトの名無しさん
2005/05/23(月) 02:06:540867デフォルトの名無しさん
2005/05/23(月) 02:32:160868デフォルトの名無しさん
2005/05/23(月) 03:09:27.が入ってるよ
0869デフォルトの名無しさん
2005/05/23(月) 03:23:48やろうとおもったんだが、aの増加法則が良くわからない。
nはn++またはn--を繰り返すことだと思うんだが。
数学苦手なんで数式が読めない。
0870デフォルトの名無しさん
2005/05/23(月) 03:50:43暇なのでこういうものを作ってみた。
穴埋め形式にしてみた、関数EまたはEnを書き換えて旨いことやってください。
数学苦手だから、全く間違ってることも無きにしも非ず。
#include <stdio.h>
double E(int n,double a){
/*
穴埋めだよ。
このコメントは消しても支障ありません。
*関数Eの中身を全て書き換えよう。
ここから,
*/
return 1;
/*ここまで。*/
}
double En(int n,double a){
return (a*E(n-1,a))/(n+a*E(n-1,a));
}
int main(){
int n;
double B,a;
puts("Input n(as integer)");
scanf("%d",&n);
puts("Input a(as double)");
scanf("%lf",&a);
B=En(n,a);
puts("B=En(a)=aE[n-1](a)/n+aE[n-1](a)");
printf("%lf=B=E%d(%lf)\n",B,n,a);
return 0;
}
0871デフォルトの名無しさん
2005/05/23(月) 11:48:05struct pencil{
int hardness;
char maker[10];
int number;};
void input(struct pencil[]);
void printout(struct pencil[]);
void main(void){
struct pencil p[3],q[3];
input(p);
q=p;
printout(q);}
void input(struct pencil p[]){
int i;
for(i=0;i<3;++i){
printf("\n input-hardness(int)=");
scanf("%d",&p[i].hardness);
printf("\n input-maker(char=1)=");
scanf("%s",&p[i].maker);
printf("\n input-number(int)=");
scanf("%d",&p[i].number);}
}
void printout(struct pencil q[]){
int i;
for(i=0;i<3;++i){
printf("\n input-hardness=%d",q[i].hardness);
printf("\n input-maker=%s",q[i].maker);
printf("\n input-number=%d\n",q[i].number);}
}
長くてすみません。このプログラムを動かすには、どう直せば動きますか?
0872デフォルトの名無しさん
2005/05/23(月) 11:57:32>q=p;
↓
for (int i = 0; i < 3; ++i) {
q[i] = p[i];
}
0873デフォルトの名無しさん
2005/05/23(月) 12:00:07q=p;
を
#include <memory.h>
memcpy(q,p,sizeof(q));
0874デフォルトの名無しさん
2005/05/23(月) 12:00:09q=p;
↓
int i;
input(p);
for(i=0;i<3;i++)
q[i]=p[i];
構造体自体のコピーは = のみでできるが配列に関しては
for文を使った方がいい。無論iの宣言も忘れない
scanf("%s",&p[i].maker);
↓
scanf("%s",p[i].maker);
自分も不勉強なのでアレだがポインタとアドレスを学び直せ
0875デフォルトの名無しさん
2005/05/23(月) 12:01:54ありがとうございますm(_ _)m
0876デフォルトの名無しさん
2005/05/23(月) 12:27:08[2] 問題文(含コード&リンク):
1:
刻みを利用して0〜1の範囲でx^2の積分をせよ。
刻み101001000
台形
長方形1
長方形2
長方形3
1<2<3
台形:
Si=(Yi-1+Yi)*ΔX/2
Yi=pow(Xi,2)
Xi=Xi-1+ΔX
ΔX=1/n (n:刻みの数)
2:
半径1の四分円の面積を積分で導出し、πの値を近似せよ。
y=√(1-x^2)
%6.3f = インデント6文字、小数点以下3文字 " 0.357"(コンマ含め6字)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン): VisualStudio.NET
[3.3] 言語:C
[4] 期限:あさってまで
[5] その他の制限: 授業でやったサンプルうpしときます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/452.txt
0877デフォルトの名無しさん
2005/05/23(月) 12:37:44台形公式 でぐぐれ。
0878デフォルトの名無しさん
2005/05/23(月) 12:49:34struct pencil{
char namae[20];
int toshi;
int taijyuu;};
void input(struct pencil[]);
void printout(struct pencil[]);
void main(void){
struct pencil p[3],q[3];
int i;
input(p);
for (i=0;i<3;++i){
q[i] = p[i];}
printout(q);}
void input(struct pencil p[]){
int i;
for(i=0;i<3;++i){
printf("\n 名前=");
scanf("%s",&p[i].namae);
printf("\n 年齢=");
scanf("%d",&p[i].toshi);
printf("\n 体重=");
scanf("%d",&p[i].taijyuu);}
}
void printout(struct pencil q[]){
int i;
for(i=0;i<3;++i){
printf("\n 名前=%s",q[i].namae);
printf("\n 年齢=%d",q[i].toshi);
printf("\n 体重=%d\n",q[i].taijyuu);}
}
体重のところを実数でよみこむには、どうしたらいいんですか?
0879デフォルトの名無しさん
2005/05/23(月) 13:02:13実数(というか浮動小数)を読み込むときは%fでなくて%lf あと>>874
それと>>1くらい読め
struct pencil{
char namae[20];
int toshi;
double taijyuu;};/* ここ */
printf("\n 名前=");
scanf("%s",p[i].namae);/* ここ */
printf("\n 年齢=");
scanf("%d",&p[i].toshi);
printf("\n 体重=");
scanf("%lf",&p[i].taijyuu);/* ここ */
0881584
2005/05/23(月) 17:42:06584のファイルの状態で、
fscanf(fp,"%s%s%s%s", str[0].AAA, str[0].BBB, str[0].CCC,str[0].DDD);
を実行すると、
str[0]のAAA〜DDDそれぞれに入れるべき文字列が;も含めて全てstr[0].AAAに入ってしまいます。
そしてstr[1]に入れたいファイル2行目の文字列がstr[0].BBBに入っていくという具合です。
助言の通り
fscanf(fp,"%s;%s;%s;%s", str[0].AAA, str[0].BBB, str[0].CCC,str[0].DDD);
としてみますとやはりstr[0].AAAにファイルの1行目が全て入ってしまっています。
そしてこの場合str[0].BBB以下には何も格納されていませんでした。
あと文字列にスペースを含みたい場合があるのですが、
本来;のみで切りたいのですがそのスペースで格納場所が切れてしまうようです。
例えばaa a;bbb;ccc;dddとファイルに入れておくと4行目の実行文だと
str[0].AAAにaaが、str[0].BBBにa;bbb;ccc;dddが入ってしまうことになります。
かなり期限が迫ってきてあせっています…どうすれば正確に格納できるのでしょうか?
0882デフォルトの名無しさん
2005/05/23(月) 17:58:28fscanf(fp, "%[^;];%[^;];%[^;];%[^;]", ...);
0883デフォルトの名無しさん
2005/05/23(月) 18:00:370884882
2005/05/23(月) 18:02:580885584
2005/05/23(月) 18:07:00早速のお返事、ありがとうございます!
疑問ばっかりで申し訳ないのですが、文字列指定のsはいらないのでしょうか?
また、スペースで勝手に区切られてしまうことも疑問として残っています。
あとこれからもc言語は使っていく予定ですので>>884の19の意味も教えていただけると幸いです。
0886デフォルトの名無しさん
2005/05/23(月) 18:14:54ここは丸投げスレであって質問スレではない。
ちなみに、「scanf 書式指定」でググるといいと思う。
0887デフォルトの名無しさん
2005/05/23(月) 19:53:01そんなこと言わずに教えてあげればいいじゃないか
0888809
2005/05/23(月) 20:27:32データの処理を正確に行ってくれません。
分割コンパイルの練習だと言われ、関数を細かく区切ってみたのですが、
sub指定の部分の分割方法が少し判らなくなってしまいました。
どのようにすれば良いのかお願いします。
[4] 期限:本日中
手直し版のコードはこれです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/453.cpp
0889デフォルトの名無しさん
2005/05/23(月) 20:50:44分割コンパイルの例は>>180な
0891デフォルトの名無しさん
2005/05/23(月) 22:30:02#include <stdio.h>
double e(int n,double a);
int main(){
int n;
double a;
puts("Input n(as integer)");
scanf("%d",&n);
puts("Input a(as double)");
scanf("%lf",&a);
printf("B=E[%d](%lf)\n",n,a, e(n, a));
return 0;
}
double e(int n,double a){ // 再起版
double before;
if(n == 0) return 1.0;
before = e(n-1,a);
return (a*before/(n+a*before));
}/*
double e(int n,double a){ // ループ版
int i;
double before;
before = 1.0;
for(i = 0; i < n; i++) {
before = a*before/((i+1)+a*before);
}
return before;
} */
>>870 穴埋めだとしても、それは酷い。(アドバイスではなくソースが)
0892デフォルトの名無しさん
2005/05/23(月) 22:33:45[2] 問題文(含コード&リンク):
ファイルから読み込んだデータを、
if文を用いて、行数、文字数、単語数をカウントせよ。
文字や単語の区切りはスペース、タブ、改行。
(ASCIIコード表を参考にしなさい。)
[3] 環境 unix
[3.1] OS: windows2000
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/
[4] 期限:2005年5月24日まで
[5] その他の制限:標準関数は使えません。
if文の組み合わせが分かりません。
ご教授お願いします。
0893デフォルトの名無しさん
2005/05/23(月) 22:42:44[3] 環境 unix
[3.1] OS: windows2000
[5] その他の制限:標準関数は使えません。
0894デフォルトの名無しさん
2005/05/23(月) 22:44:35[3.1] OS: windows2000 .←┘
環境の組み合わせが分かりません。
ご教授お願いします。
0895892
2005/05/23(月) 22:47:26すみません間違えました!
お願いします!
0896デフォルトの名無しさん
2005/05/23(月) 22:50:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/454.txt
0899893
2005/05/23(月) 22:56:46だったら間違いを訂正しろよ
どうやって標準関数無しでファイルから読み込むんだよ?
Unix なのか? Windows なのか?コンパイラは何だよ?
それにさっき気が付かずにスルーしちまったけど
[3.3] 言語:C/
もおかしい
新しい言語ジャン!
0900デフォルトの名無しさん
2005/05/23(月) 22:58:00僕じゃありません。
お願いします!(何を?
0901892
2005/05/23(月) 23:01:47[2] 問題文(含コード&リンク):
ファイルから読み込んだデータを、
if文を用いて、行数、文字数、単語数をカウントせよ。
文字や単語の区切りはスペース、タブ、改行。
(ASCIIコード表を参考にしなさい。)
[3] 環境
[3.1] OS:unix
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:2005年5月24日まで
[5] その他の制限:
if文の組み合わせが分かりません。
ご教授お願いします。
何度もすみません。
これでお願いします。
0906デフォルトの名無しさん
2005/05/23(月) 23:47:260907デフォルトの名無しさん
2005/05/23(月) 23:50:280908デフォルトの名無しさん
2005/05/23(月) 23:51:29テンプレの変更を提案したいのだが。
>・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
>・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
「後から問題に付け足しする必要が無いよう、最初から全ての条件を書きましょう。」
みたいに纏められんかね?まぁこれは纏めないでも構わないんだが
>[1] 授業単元:
不要じゃね?
>[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか
んで1番のテーマはこれ。「できるだけ早く」とかを禁止にしないか?
人に物を頼む態度とは思えん。締め切りとは別に急いでほしければ
締め切りを偽ればいい(ということに気づかないアホ)だけじゃないか。
0909デフォルトの名無しさん
2005/05/24(火) 00:08:14入力は標準入力から
文字数に関しては、アルファベットと数字だけカウント
文字と空白以外は、無かった事になるので
必要な記号等はisLetter()に付け足してね
#include <stdio.h>
#include <ctype.h>
int isLetter ( int c ) {
return isalnum ( c ) ; } /* 必要な文字を付け足す */
int isLine ( int c ) {
return ( c == '\n' ) ; }
int isSpace ( int c ) {
return ( c == ' ' ) || ( c == '\t' ) || ( c == '\n' ) ; }
int main() {
int c, Line, Word, Letter, Sflag ;
Line = Word = Letter = 0, Sflag = 1 ;
while ( ( c = fgetc ( stdin ) ) != EOF ) {
if ( isLine ( c ) ) Line ++ ;
if ( isSpace ( c ) ) Sflag = 1 ;
if ( isLetter ( c ) ) Wrod += Sflag, Sflag = 0, Letter ++ ; } }
printf ( "Line: %d\nWord: %d\nLetter: %d\n", Line, Word, Letter ) ;
return 0 ; }
0910デフォルトの名無しさん
2005/05/24(火) 00:11:25>人に物を頼む態度とは思えん。
別に構わんと思うけどね。
解きたい奴が勝手に解いてるだけで、頼むも何もないだろ。
0912デフォルトの名無しさん
2005/05/24(火) 00:14:59かな入力のテンキー派?
0914デフォルトの名無しさん
2005/05/24(火) 00:18:25問題文があいまいだから・・・なんとも言えませんが
行の先頭にスペースや改行やタブがくること考えなくてよいのかな?
0915デフォルトの名無しさん
2005/05/24(火) 00:19:59自己レスで、
改行・スペース・タブが2連続とか
0916デフォルトの名無しさん
2005/05/24(火) 00:20:41[2] 問題文:1から100までの整数の内、素数をすべて表示し、かつその個数も表示するプログラムを作成せよ。
[3] 環境
[3.1] OS:Win(MinGW)
[3.2] コンパイラ(バージョン):gcc 3.4.2
[3.3] 言語:C
[4] 期限:5月30日
[5] その他の制限:特になし
0917892
2005/05/24(火) 00:20:43行の頭にはスペース、改行、タブはありません。
本当何かすみません。
0918デフォルトの名無しさん
2005/05/24(火) 00:21:501)質問するときのマナー(2chで言うのもなんだが)
回答してくれる人にチャチャ入れるのは、やめましょう。
回答する人はエスパーではないので、問題文は、全文書きましょう。
初見の人にもわかるよう必要なら補足を入れましょう。
2)こういう質問は別スレでは?
Windowsのプログラム、Unixのプログラム。グラフィック、通信、マルチスレッドなどの処理。
「どういう理由で動いているのですか?」「どうしてそうなるのですか?」
「xxxの処理をするにはどうしたらいいですか?」
3)あれば幸せになるかもしれない情報
使っている教科書と進度。・・・まだ習ってません、やさしく書き直してください。っちゅーのはちっとね。
0919デフォルトの名無しさん
2005/05/24(火) 00:37:34[2] 問題文(含コード&リンク): 自分の姓名(例 "Tarou Yamada")を表示せよ。ただし配列a[]を用いてこれを文字列で初期化し、1文字ずつ出力せよ。さらにポインタpを用いて、同様に1文字ずつ出力せよ。
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C言語
[4] 期限:無期限
わからなくて困ってます皆さんお願いします。
0920デフォルトの名無しさん
2005/05/24(火) 00:38:40#include <stdio.h>
int main(int argc, char *argv[])
{
puts("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97");
puts("25 個");
return 0;
}
0921デフォルトの名無しさん
2005/05/24(火) 00:41:37お前は単位落とせ。
いくらなんでも基本杉だろ。
0922デフォルトの名無しさん
2005/05/24(火) 00:43:28[2] 問題文(含コード&リンク):
1.p="hellow"をmain()関数で行い、関数void disp(char *moji,int kaisu)で5回表示するプログラム(pはポインタ関数で、因数はアドレスと回数とする)
2.要素数100の配列TBLの先頭アドレスと要素数を因数にして、関数void init_data(int *hyo,int kosu)でゼロクリアする。(結果はmain関数で出力)
3.関数void swap(int *a,int *b)で値を入れ替える。結果はmain関数にて出力.
[3] 環境
[3.1] OS:NT
[3.2] コンパイラ(バージョン):c++5
[3.3] 言語:C言語
[4] 期限:2.3日以内
よろしくおねがいします
0923デフォルトの名無しさん
2005/05/24(火) 00:43:31それが現実的だね
0924デフォルトの名無しさん
2005/05/24(火) 00:45:42#include <stdio.h>
int main(int argc, char *argv[])
{
char a[] = "Tarou Yamada";
char *p = a;
while(*p)
putchar(*p++);
putchar('\n');
return 0;
}
0925デフォルトの名無しさん
2005/05/24(火) 00:46:36その問題文はそれで合ってるのか?
0926デフォルトの名無しさん
2005/05/24(火) 00:47:57配列 a からの直接出力が抜けてた。
#include <stdio.h>
int main(int argc, char *argv[])
{
char a[] = "Tarou Yamada";
char *p = a;
int i;
for(i = 0; i < sizeof(a) / sizeof(*a); i++)
putchar(a[i]);
putchar('\n');
while(*p)
putchar(*p++);
putchar('\n');
return 0;
}
0927デフォルトの名無しさん
2005/05/24(火) 00:48:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/455.txt
-----で区切って投稿して下さい。最後のは愚痴なのでのせるかどうかが次スレの>>1に任せます
あと次スレ立てとかも(>>950以降最初の依頼者以外の人とか)テンプレに入れた方がいいかなぁ
0928デフォルトの名無しさん
2005/05/24(火) 00:50:16( ゚д゚)
> [3.2] コンパイラ(バージョン):c++5
( ゚д゚)…
0929デフォルトの名無しさん
2005/05/24(火) 00:51:40> ぼるじょあ
( ゚д゚)・・・
0930デフォルトの名無しさん
2005/05/24(火) 01:07:46>ひきすう 【引き数】
>〔argument,引数とも書く〕
>⇒パラメーター
>いんすう 【因数】
>整式が、幾つかの整式の積の形で表されているとき、その各構成要素をいう。また、整数の約数のこともいう。
0931デフォルトの名無しさん
2005/05/24(火) 01:12:550932デフォルトの名無しさん
2005/05/24(火) 01:23:270933922
2005/05/24(火) 01:32:22問題文はあってます。hellowって書いてあるのでいいかと思いますw多分ミスタイプの印刷だと思うんですが
コンパイラはどうかけばいいのかわかんないですが ビジュアルスタジオデベロッパーのC++ 5.0だったとおもいます
0934デフォルトの名無しさん
2005/05/24(火) 01:46:50[2] 問題文:
キーボードから正の整数nを入力して、1辺の長さがn以下の直角三角形の組を全て求めよ。(三重forループを使うこと。)
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ(バージョン):VC++
[3.3] 言語:C
[4] 期限:今日中におねがいします。
0935デフォルトの名無しさん
2005/05/24(火) 01:48:28問題文が怪しいので出題者の意に沿っているかどうかは知らない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/456.txt
0936デフォルトの名無しさん
2005/05/24(火) 01:53:371.
#include <stdio.h>
void disp(char *moji,int kaisu)
{
while(kaisu--)puts(moji);
}
int main(void)
{
char *p = "hellow";
disp(p,5);
return 0;
}
0937デフォルトの名無しさん
2005/05/24(火) 01:57:18#include <stdio.h>
int main( void )
{
int n;
int count1, count2, count3;
printf( "長さ:");
scanf( "%d", &n );
for( count1=1; count1<=n; count1++ )
for( count2=count1; count2<=n; count2++ )
for( count3=count2; count3<=n; count3++ )
if( count3*count3 == count1*count1 + count2*count2 )
printf( "%d %d %d\n", count1, count2, count3 );
return 0;
}
0938デフォルトの名無しさん
2005/05/24(火) 01:59:42>キーボードから正の整数nを入力して、1辺の長さがn以下の直角三角形の組
無数に存在しますが…
0939デフォルトの名無しさん
2005/05/24(火) 02:00:54C++なら問題文の通りのものが作れるんだけどなぁ
#include <cstdio>
struct foo {
char* m_text;
char* operator ()() {
return m_text;
}
void operator =(char* text) {
m_text = text;
}
} p;
void disp(char *moji,int kaisu) {
int i;
if (!moji) return;
for (i = 0; i < kaisu; i++) std::printf(moji);
}
int main(int argc, char** argv) {
p = "hellow";
disp(p(), 5);
return 0;
}
0940デフォルトの名無しさん
2005/05/24(火) 02:03:040941デフォルトの名無しさん
2005/05/24(火) 02:08:122.
#include <stdio.h>
#define N 100
void init_data(int *hyo,int kosu)
{
while(kosu)hyo[--kosu]=0;
}
int main(void)
{
int i,TBL[N];
/* ゼロクリアする前 */
for(i=0;i<N;i++){
printf("%d",TBL[i]);
if(i%10==9)printf("\n");/* 適当に改行 */
}
printf("\n");
init_data(TBL,N);
/* ゼロクリアした後 */
for(i=0;i<N;i++){
printf("%d",TBL[i]);
if(i%10==9)printf("\n");/* 適当に改行 */
}
return 0;
}
0942デフォルトの名無しさん
2005/05/24(火) 02:11:423.
#include <stdio.h>
void swap(int *a,int *b)
{
int tmp;
tmp = *a;*a = *b;*b = tmp;
}
int main(void)
{
int a=3,b=4;
printf("a=%d b=%d\n",a,b);
swap(&a,&b);
printf("a=%d b=%d\n",a,b);
return 0;
}
0944デフォルトの名無しさん
2005/05/24(火) 02:15:260945934
2005/05/24(火) 02:28:54あとそれを関数にするとどうなりますかね?
なんか警告がやたら出て結果が出ないんですが・・
0946デフォルトの名無しさん
2005/05/24(火) 02:34:40関数化を要求されていますか?
警告が出るなら、そのコピペを書きましょうね。
0947デフォルトの名無しさん
2005/05/24(火) 02:41:051文字変数ばかり使うセンコーはクズと思って間違いない
0949934
2005/05/24(火) 02:53:23C:\Documents and Settings\Owner\デスクトップ\Cpp3.cpp(11) : warning C4700: 値が割り当てられていないローカルな変数 'count2' に対して参照が行われました。
C:\Documents and Settings\Owner\デスクトップ\Cpp3.cpp(11) : warning C4700: 値が割り当てられていないローカルな変数 'count1' に対して参照が行われました。
C:\Documents and Settings\Owner\デスクトップ\Cpp3.cpp(18) : warning C4700: 値が割り当てられていないローカルな変数 'n' に対して参照が行われました。
0950デフォルトの名無しさん
2005/05/24(火) 02:56:450951デフォルトの名無しさん
2005/05/24(火) 02:58:53自分で改造したプログラムで出た警告じゃないのか?
0952934
2005/05/24(火) 03:00:53#include <stdio.h>
void san(int, int, int, int);
int main(void)
{
int n;
int count1, count2, count3;
printf("n -> ");
scanf("%d", &n);
printf("1辺の長さが%d以下の直角三角形の組は\n", n);
san(n, count1, count2, count3);
return 0;
}
void san(int n, int count1, int count2, int count3)
{
for(count1=1; count1<=n; count1++ )
for(count2=count1; count2<=n; count2++ )
for(count3=count2; count3<=n; count3++ )
if(count3*count3 == count1*count1 + count2*count2 )
printf("%d %d %d\n", count1, count2, count3);
}
0953デフォルトの名無しさん
2005/05/24(火) 03:04:24sanに渡してるcount1, count2, count3は何のつもり?
0955デフォルトの名無しさん
2005/05/24(火) 11:47:302 --> 0 1 ( 0 1 0 でもよい )
3 --> 1 1 ( 1 1 0 でもよい )
4 --> 0 0 1 ( 0 0 1 0 でもよい )
5 --> 1 0 1 ( 1 0 1 0 でもよい )
おねがいします
0956デフォルトの名無しさん
2005/05/24(火) 12:08:27#include <stdio.h>
int main( void );
{
int val, bin;
scanf( "%d", &val );
while( val ){
(int)1 & val ? putchar( '1' ): putchar( '0' );
val = val >> 1;
}
puts("");
return 0;
}
0957デフォルトの名無しさん
2005/05/24(火) 12:15:240958デフォルトの名無しさん
2005/05/24(火) 12:18:04[1] 授業単元: プログラミング1
[2] 問題文:
■■ネットワークプログラミング■■
2台のマシン(tokiとken)でソケットを用いた通信を行ってもらいます.
以下に送信側と受信側の動作を説明します.
・送信側
アルファベットのみで構成された文字列を1文字ずつ読み込みます(任意のファ
イルから文字列を読み込んでもよい).
そして,シーケンス番号と共に構造体に格納し,ソケットを用いて受信側に
送信する.
・受信側
受信したデータををAckとして,シーケンス番号と受信した文字を変換した
小文字なら大文字に,大文字なら小文字に)文字を構造体に格納し,送信側へ
送信する.
送信側では,受信用プロセスと,送信用プロセスを用意してください.
通信には,UDPを用い,ポート番号は1万+学籍番号の下3桁(10111など)と
2万+学籍番号の下3桁(20111など)を使ってください.
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:5月26日まで
よろしくお願いします。
0959デフォルトの名無しさん
2005/05/24(火) 12:18:540960デフォルトの名無しさん
2005/05/24(火) 12:32:500961デフォルトの名無しさん
2005/05/24(火) 12:37:49int main()
{
char out[33];
int indx=0,bi=0;
printf("input :");
scanf("%d",&bi);
if(bi==0)
out[indx++]='0';
else
for(int i=0;i<32;++i,bi>>=1)
if(bi & 0x00000001)
out[indx++]='1';
else if( bi & 0xFFFFFFFE)
out[indx++]='0';
out[indx]='\0';
printf("%s\n",out);
return 0;
}
0962デフォルトの名無しさん
2005/05/24(火) 12:52:040963デフォルトの名無しさん
2005/05/24(火) 13:39:11void main()
{
int i,j,k;
k=0;
for(i=2;100;i++){
for(j=2;i;j++){
if((i%j)==0){
print(i," ");
k++
}
}
}
print(\n);
print("there are ",k, " prime numbers");
}
>>916
文法はちがってるかも試練
Cなんて5年いじょうしてないし
0964デフォルトの名無しさん
2005/05/24(火) 13:41:04これだけ作るのに半日かかったのか。もうやめとけ。お前はよく頑張った。
0965デフォルトの名無しさん
2005/05/24(火) 13:44:10void main()
{
int i,j,k;
k=0;
for(i=2;100;i++){
for(j=2;i;j++){
if((i%j)==0){
printf("%d ",i);
k++;
}
}
}
printf("\n");
printf("there are %d prime numbers",k);
}
多分こっちかな
0966デフォルトの名無しさん
2005/05/24(火) 13:45:33五分だけど?
アルゴリズム自体は30秒か
何で反日?
0967デフォルトの名無しさん
2005/05/24(火) 13:48:49おねがいします
0968デフォルトの名無しさん
2005/05/24(火) 13:49:40出題が半日前だから、>>964はそう思ったんじゃ?
>>963が間違っているしね。>>965で直ってるけど。
0969デフォルトの名無しさん
2005/05/24(火) 13:51:47なるほど
さすがに5年以上触ってない言語の文法は
覚えられん、、、
一応HPみてなおしてみた
間違ってるだろうと思ったんで
0970デフォルトの名無しさん
2005/05/24(火) 13:54:19なんでそんな曖昧な状態で解答しようと思ったんだ
0971デフォルトの名無しさん
2005/05/24(火) 13:59:28いいじゃん、べつに、>>916
が可哀想だろ
俺も5年ぐらい前におなじことされて傷ついたからな
アルゴリズムが分からないなら
文法少々間違ってても分かるだろ
0972デフォルトの名無しさん
2005/05/24(火) 14:08:090973デフォルトの名無しさん
2005/05/24(火) 14:13:17それに、「文法は間違ってるかも知れない」と
「これが答えです」は違う。
まあ主論はそんな事よりも、「俺が気にくわない奴である」って
事だろうから、
(まあ俺も>>920のような真似は気にくわないと言う動機だけど)
ごちゃごちゃ言うのはやめておく、サラバ
0974デフォルトの名無しさん
2005/05/24(火) 14:14:52あんな問題ができないままだと、これからも>>916は人に聞き続けることになる
中途半端な助けは相手のためにならない
それに>>965のコードも直しきれてない
まあ漏れもあほな質問して叩かれたことあるけど
0975デフォルトの名無しさん
2005/05/24(火) 14:26:19なんですが以下のように作って実行したら
printf("学生番号,氏名,点数=");
scanf("%d,%s,%d",&no,&name, &score);
printf("私の名前は%sです\n",name);
printf("%d,%d\n",no,score);
scoreの値が文字列として認識されてしまうのですが区別して
もらうにはどうすればよいのでしょうか?
0976デフォルトの名無しさん
2005/05/24(火) 14:29:350977デフォルトの名無しさん
2005/05/24(火) 14:33:22scanf("%d %s %d",&no,&name,&score);
0981デフォルトの名無しさん
2005/05/24(火) 14:48:57#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define IDNUM 100
#define false 0
#define true 1
#define HOST1 "toki"
#define HOST2 "ken"
struct data { int seq; char ch; };
enum role { SENDER = 1, RECEIVER = 2, REFLECTOR = 3 };
in_addr_t get_dstaddr(int role)
{
struct hostent* hent = gethostbyname(role == REFLECTOR ? HOST1 : HOST2);
return hent ? *(in_addr_t*)hent->h_addr_list[0] : 0;
}
void init_sin(struct sockaddr_in* sin, in_addr_t addr, int port)
{
sin->sin_family = AF_INET;
sin->sin_addr.s_addr = addr;
sin->sin_port = htons(port);
}
0982976=977
2005/05/24(火) 14:49:200983デフォルトの名無しさん
2005/05/24(火) 14:49:25できました!ありがとうございました!!
0984デフォルトの名無しさん
2005/05/24(火) 14:49:59int main(int ac, char** av)
{
int role, sock, value;
struct sockaddr_in sin1, sin2;
struct data data = {0};
role = SENDER;
if (strstr(av[0], "reflector")) role = REFLECTOR;
else if (strstr(av[0], "receiver")) role = RECEIVER;
sock = socket(AF_INET, SOCK_DGRAM, 0);
value = true;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
init_sin(&sin1, get_dstaddr(role), 10000 * (role/3+1) +IDNUM);
init_sin(&sin2, INADDR_ANY, 10000*(2-role/3) + IDNUM);
if (role & 2)
bind(sock, (struct sockaddr*)&sin2, sizeof(sin2));
0985デフォルトの名無しさん
2005/05/24(火) 14:51:36scanf( "%d,%[^,],%d", &no, name, &score );
カンマ区切りで文字列を取得する時はこうだろ。
0986デフォルトの名無しさん
2005/05/24(火) 14:51:42while (true) {
(role&2) ? recv(sock, &data, sizeof(data), 0) : (data.ch = getchar());
if (role == SENDER)
data.seq = htonl(ntohl(data.seq)+1);
else if (role == REFLECTOR)
data.ch = islower(data.ch) ? toupper(data.ch) : tolower(data.ch);
else if (role == RECEIVER)
printf("%d %c\n", ntohl(data.seq), data.ch);
if (role & 1)
sendto(sock, &data, sizeof(data), 0,
(struct sockaddr*)&sin1, sizeof(sin1));
}
return 0;
}
適当にコンパイルして、
実行形式をsender, receiver, reflectorにlnして実行。
sender, seceiverがtoki, reflectorがkenな。
0987デフォルトの名無しさん
2005/05/24(火) 14:57:01http://pc8.2ch.net/test/read.cgi/tech/1116914132/
0988デフォルトの名無しさん
2005/05/24(火) 15:08:35#include<stdio.h>
int main(void)
{
int i,j,k,l;
k=0;
l=0;
for(i=2;i<100;i++){
for(j=1;j<i;j++){
if((i%j)!=0){
l++;
}
}
if(l==(i-2)){
printf(" %d",i);
}
l=0;
}
printf("\n");
printf("there are %d prime numbers",k);
return 0;
}
全然違ったわOrz
やはり>>974の言う通り一度コンパイルしてみるべきだな
まあ、一理あるが、教えた場合が効率がよい場合と
ある程度突き放すべき場合とあるが
馬鹿にしてやる気無くさせるのは余り効率として良くないと思う。
0989デフォルトの名無しさん
2005/05/24(火) 15:11:520990デフォルトの名無しさん
2005/05/24(火) 15:16:10そして、そんな事はオレの知った事じゃない。
0991デフォルトの名無しさん
2005/05/24(火) 15:16:450992デフォルトの名無しさん
2005/05/24(火) 16:29:37みたいになるだけだぞ。
0993デフォルトの名無しさん
2005/05/24(火) 16:35:310994デフォルトの名無しさん
2005/05/24(火) 16:35:590995デフォルトの名無しさん
2005/05/24(火) 16:36:370996デフォルトの名無しさん
2005/05/24(火) 16:41:590997デフォルトの名無しさん
2005/05/24(火) 16:43:460998デフォルトの名無しさん
2005/05/24(火) 16:44:030999デフォルトの名無しさん
2005/05/24(火) 16:44:321000デフォルトの名無しさん
2005/05/24(火) 16:46:1510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。