C/C++の宿題片付けま ..
883:デフォルトの名無しさん
09/07/10 11:10:12
すいません、どなたか>>825をお願いします
厚かましくて申し訳ありません・・・
884:デフォルトの名無しさん
09/07/10 11:32:07
>>883
課題1
#include <stdio.h>
int main(int argc, char **argv)
{
if (argc < 3) { fprintf(stderr, "Error: too few arguments\n"); return 1; }
if (argc > 3) { fprintf(stderr, "Error: too many arguments\n"); return 1; }
printf("My name is %s %s\n", argv[1], argv[2]);
return 0;
}
885:デフォルトの名無しさん
09/07/10 11:37:46
>>883
課題2
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, char **argv)
{
int s = 0;
int i;
if (argc < 3) { fprintf(stderr, "Error: too few arguments\n"); return 1; }
for (i = 1; i < argc; i++) {
char *c;
for (c = argv[i]; *c; c++) {
if (!isdigit(*c)) {
fprintf(stderr, "Error: %s is illegal arguments\n", argv[i]);
return 1;
}
}
s += atoi(argv[i]);
}
printf("%d\n", s);
return 0;
}
886:デフォルトの名無しさん
09/07/10 11:37:59
>>882
ありがとう、それ入れたらコンパイルできた。
>>881
コンパイルできる状態のプログラムが見たかったんだ。
887:デフォルトの名無しさん
09/07/10 11:42:37
>>883
課題3
実行例3の結果は4になるんじゃないかな
#include <stdio.h>
int sum(int n, int m)
{
return (n >= m)? n: n + sum(n + 1, m);
}
int main(int argc, char **argv)
{
int n, m;
printf("n m: "); scanf("%d %d", &n, &m);
if (n > m) { fprintf(stderr, "n should be smaller than m.\n"); return 1; }
printf("%d\n", sum(n, m));
return 0;
}
888: ◆/91kCCQXBo
09/07/10 11:50:27
3連続投球終わったか?
//>>863 >>848の先生は、なんで火曜から月曜が1日なんて常識はずれな。
enum Day {Sun,Mon,Tue,Wed,Thr,Fri,Sat}; // Sun=0
int day_load[7][7] = {{0,1,2,3,3,2,1},{1,0,1,2,3,3,2},{2,1,0,1,2,3,3},{3,2,1,0,1,2,3},{3,3,2,1,0,1,2},{2,3,3,2,1,0,1},{1,2,3,3,2,1,0}};
int table[]={0,1,2,3,3,2,1};
int day_distance(enum Day st, enum Day en){
 int work,a=st,b=en;
 switch(0) { /* ここには 1 から 4 の数字を入れる。どれでも同じ結果になる。 */
 case 1: /* compact cost > speed cost */
   work = st<en?en-st:st-en;
   return work<=3?work:7-work;
 case 2: /* compact cost < speed cost */
   return day_load[st][en];
 case 3: /* >>853 */
   return  (a > b) ?
       (  (a - b > 7 - (a - b)) ?
           (7 - (a - b)) :
           (a - b)
       ):( (b - a > 7 - (b - a)) ?
           (7 - (b - a)) :
           (b - a)
       );
 case 4: /* >>854 */
   work = st<en?en-st:st-en;
   return table[work%7];
 default: /* NORMAL */
   return (en-st+7)%7;
 }
}
889:デフォルトの名無しさん
09/07/10 12:00:07
>>762
これもできればよろしくお願いします。
890:デフォルトの名無しさん
09/07/10 12:35:51
>>889
よくわからんけどなんとなくそれっぽいものを書いてみた
#include <stdio.h>
#define A 3
#define M 65535
#define N 128
#define S 17
int main(void)
{
int a[N];
int x0, x1;
int i;
x0 = S;
for (i = 0; i < N; ++i) {
x1 = (A * x0) % M; a[i] = x1; x0 = x1;
}
for (i = 0; i < N; ++i) {
printf(" %8d", a[i]);
if ((i + 1) % 8 == 0) puts("");
}
return 0;
}
891:デフォルトの名無しさん
09/07/10 14:54:16
>>890
ありがとうございます。助かります。
892:デフォルトの名無しさん
09/07/10 17:01:55
yaccとlexですがどなたか>>747よろしくお願いします。
893:デフォルトの名無しさん
09/07/10 18:14:31
>>892
fabs,cosはlogを参考にすればいいし。
キャストは簡単だよね。
894:デフォルトの名無しさん
09/07/10 18:21:51
>>893
すいません、やってもらうことはできませんか?
895:505
09/07/10 19:44:39
未解決問題
>>847 LLLアルゴリズムをCでプログラミング 7月17日
>>827(9720) コマンドの引数xxxxで指定したファイルが更新されたら直ちにメッセージを表示する 7月13日正午
>>824>>822 何人かの学生の3教科(数学、国語、英語)の得点を2次元配列を用いて処理する 7月9日 19:10
>>820 3入力のクワイン・マクラスキー法のプログラム 7月13日
>>799 指定された点x,yを含む指定された境界色C2で囲まれた平面領域を指定された色C1で塗りつぶす 7月17日 正午
>>791(9708,9709,DLL_BMP_C) 歌詞を暗号鍵Kとして読み込み、画像 NewYear2003.bmpを暗号化した画像Cを生成する。 7月15日
>>790 入力したtxtファイルをFFT、IFFTせよ 7月8日 24:00
>>772 2問。4次のルンゲ−クッタ法を用いて連立微分方程式を解く 7月28日
>>749 配列を用いた計算機のプログラム 7月12日
>>747(9696)>>892 yacc,lex 7月14日
>>681(down11.ddo/1246872574) DirectX マップチップ 7月9日
>>660(fukushima.jp) パソコン甲子園 2008 予選問題 問7 ふしぎな虫 7月6日
>>607 簡単なデータベース機能を持つプログラム 7月13日
>>451(9656)>>504(9661,9662) 最短路問題を解くアルゴリズムとしてベルマンフォード法がある。 7月6日
896:デフォルトの名無しさん
09/07/10 22:36:21
[1] 授業単元: プログラミングW
[2] 問題文(含コード&リンク): オブジェクト指向を使って何でも良いのでプログラム
を書け
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C++
[4] 期限: 7月17日(金)
[5] その他の制限: メソッドを5個以上使う 変数はpublicとprivateを使いわける
897:デフォルトの名無しさん
09/07/10 23:02:41
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):この続きからC言語でベルマンフォードをお願いしたいです。
#include <stdio.h>
#include <stdlib.h>
main(void)
{
int n, s; /*頂点数、始点*/
int M; /*辺のないところを指定する数*/
int i, j, k;
int W[100][100] /*重みを指定した行列*/
FILE *infile; /*入力ファイル*/
infile = fopen("data1.txt", "r"); /*入力ファイル名はdata1.txt*/
fscanf(infile, "%d %d", &n, &s); /*頂点数、始点の読み込み*/
for ( i=1 ; i<=n ; i++ ){
for ( j=1; j<=n; j++){
fscanf(infile,"%d\n",&W[i][j]); /*読み込み部分*/
}
}
fclose(infile); /*ファイルを閉じる*/
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c
[4] 期限: 2009年7月31日
[5] その他の制限:一番簡潔な書き方でお願いします@@;
898:デフォルトの名無しさん
09/07/10 23:17:25
コンパイルしてアスタリスクがダイヤ形になるプログラムを教えてください。
899:デフォルトの名無しさん
09/07/10 23:35:21
>>897
・問題文は、出題されたまま全文を書いてください。
900:デフォルトの名無しさん
09/07/10 23:42:12
>>886
文字列まで習ったって書いてあったから。。。
901:デフォルトの名無しさん
09/07/10 23:50:52
[1] 授業単元: C言語プログラミング演習
[2] 問題文(含コード&リンク): プログラムを実行すると
行列1:
1,2,3
4,5,6
7,8,9
行列2:
3,4,5
6,7,8
9,10,11
と表示する。最後に行列1と行列2の積を計算し、以下のように表示
するプログラム。
[行列1と行列2の積は
?,?,?
?,?,?
?,?,?]
課題2
配列のサイズを大きくして、時間を計測する。配列の内容は、各自指定すること。1から順に値を入れていってもよい
[3] 環境
[3.1] OS: Windows/vista
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C++
[4] 期限: ([2009年7月15日まで]
[5] その他の制限: この流れの通りにやること
URLリンク(kansai2channeler.hp.infoseek.co.jp)
お願いします。
902:デフォルトの名無しさん
09/07/10 23:51:59
>>827
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#define SLEEP_TIME 1
int main(int argc, char *argv[])
{
struct stat file;
time_t prev_mtime;
if (argc != 2) {
printf("Usage: exp7 file1 file2\n");
exit(1);
}
if (stat(argv[1], &file) != 0) {
printf("%s not found\n", argv[1]);
exit(1);
}
prev_mtime = file.st_mtime;
while (1) {
stat(argv[1], &file);
if (file.st_mtime != prev_mtime) {
printf("\nModified %s %s", argv[1],
asctime(localtime(&file.st_mtime)));
prev_mtime = file.st_mtime;
}
sleep(SLEEP_TIME);
}
}
903:デフォルトの名無しさん
09/07/10 23:53:35
>>897
すみません
>>896
問題:与えられた重みつき有向グラフGと指定された頂点sに対してベルマンフォード法を実行するプログラムをC言語を用いて作りなさい。
・入力は以下の形式で記述されたテキストファイルによるものとする。
Gの頂点数、頂点s(番号)
Gの各辺の重みを指定した行列(辺のないところは値を100とする)
例
5 1
100 2 1 100 100
100 100 100 -1 100
100 -1 100 100 1
100 100 3 4 100
100 100 100 100 100
・頂点数は最大100まで対応できるようにする
・入力ファイルから読み込む形式にする
904:デフォルトの名無しさん
09/07/11 00:12:47
>>901 課題1
#include <stdio.h>
int main(void)
{
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int b[3][3] = {{3, 4, 5}, {6, 7, 8}, {9, 10, 11}};
int ans[3][3];
int i, j, k;
puts("行列1:");
for (i = 0; i < 3; ++i) {
for (j = 0; j < 2; ++j) printf("%d,", a[i][j]);
printf("%d\n", a[i][j]);
}
puts("行列2:");
for (i = 0; i < 3; ++i) {
for (j = 0; j < 2; ++j) printf("%d,", b[i][j]);
printf("%d\n", b[i][j]);
}
for (i = 0; i < 3; ++i) for (j = 0; j < 3; ++j) ans[i][j] = 0;
for (i = 0; i < 3; ++i)
for (j = 0; j < 3; ++j)
for (k = 0; k < 3; ++k) ans[i][j] += a[i][k] * b[k][j];
puts("[行列1と行列2の積は");
for (i = 0; i < 2; ++i) {
for (j = 0; j < 2; ++j) printf("%d,", ans[i][j]);
printf("%d\n", ans[i][j]);
}
for (j = 0; j < 2; ++j) printf("%d,", ans[i][j]);
printf("%d]\n", ans[i][j]);
return 0;
}
905:デフォルトの名無しさん
09/07/11 00:34:56
>>903
アンカミス?だよね
906:デフォルトの名無しさん
09/07/11 00:47:17
>>898
#include <stdio.h>
int main(int argc, char **argv)
{
if (argc > 1) {
char *c;
for (c = argv[1]; *c; c++)
if (*c == '*') printf("◇");
else putchar(*c);
}
return 0;
}
907:デフォルトの名無しさん
09/07/11 01:00:04
わざと誤読すんなw
908:デフォルトの名無しさん
09/07/11 01:00:49
>>896
オブジェクト指向?それっておいしいの??と思ってる人間が書いたソース。
継承しないで委譲って感じになってると思う。
あと、動作は保障しない。うちの環境はVC9EEだ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
909:デフォルトの名無しさん
09/07/11 01:41:23
>>896
>>908さんとかぶったが一応やってみた
俺はC++本当にど素人なので何も保障できない
参考までに使ってくれ
URLリンク(jbbs.livedoor.jp)
910:デフォルトの名無しさん
09/07/11 03:37:06
901ですが>>904 ありがとうございます
じつは自分でもやっていたのですがURLリンク(kansai2channeler.hp.infoseek.co.jp)
この文の最初のfor(j=0;j<3;j++)の後ろにfor(l=0;l<3;l++)
main文の中のj=0;j<3;j++)の後ろにfor(l=0;l<3;l++)をつけたい
場合(答えはつける前と同じで)各 ans[i][j]=○○をどうやって書いたらいいのでしょうか?
911:デフォルトの名無しさん
09/07/11 03:40:06
>>910
>>904見ればわかるだろ
912:デフォルトの名無しさん
09/07/11 03:52:28
と突き放しつつ
ans[i][j]=ans[i][j]+a[i][l]*b[l][j];
913:デフォルトの名無しさん
09/07/11 03:56:22
>>911
>>912
911のコメントの後、作ったらできました。ありがとうございました!またそのあとのフォローのコメントもうれしかったです!
914:デフォルトの名無しさん
09/07/11 05:51:46
>>905
間違えました!すみませぬ。。。
>>903は>>897の修正です。よろしくお願いします。
915:デフォルトの名無しさん
09/07/11 11:17:40
>>898 ダイヤマークは周囲だけ?つまりダイヤマークの中は半角空白?
問題 >>前953(9534) 解答 >>014(9548)
916:デフォルトの名無しさん
09/07/11 14:08:29
【質問テンプレ】
[1] 授業単元:情報基礎B
[2] 問題文(含コード&リンク):(1) 平均、標準偏差
(2) 得点の高い順の点数のリスト
[3] 環境
[3.1] OS:Linux
[3.2] 不明です
[3.3] 言語: C++
[4] 期限: 7・18まで
[5] その他の制限:基本的なやつでお願いします。(2)はバブルソート
917:デフォルトの名無しさん
09/07/11 14:09:57
連投すいません
問題文に「試験の点数10人分をキーボードから入力」が抜けていました
918:デフォルトの名無しさん
09/07/11 14:10:35
>>916
丸投げもできないのか?
919:デフォルトの名無しさん
09/07/11 14:13:29
>916
しね
920:デフォルトの名無しさん
09/07/11 14:16:40
>>916
おまえはカスだ
921:デフォルトの名無しさん
09/07/11 14:17:33
>>916
sageろカス
922:デフォルトの名無しさん
09/07/11 14:32:29
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
if文を使って、月数に応じてコメントを表示するプログラム(1月ならばwinter、3月ならspringといった具合に)を作る。
月は1月〜12月までなので、13月以上の数値を打ち込んだ場合はerrorと表示させること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc 3.4…?
[3.3] 言語:C
[4] 期限: 2009年7月25日
[5] その他の制限:全くの初心者です。コメントつけてくれるとさいわいです
923:デフォルトの名無しさん
09/07/11 14:37:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):下に示すように,最初に整数を読み込み,その後,その個数だけ整数を読み込んでいき,そ
の合計と平均を表示するプログラムを作成せよ。
整数は何個ですか: 6
No.1 : 65
No.2 : 23
No.3 : 47
No.4 : 9
No.5 : 153
No.6 : 777
合計値: 1074
平均値: 179.00
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年07月30日
[5] その他の制限:どうかよろしくお願いします。
924:デフォルトの名無しさん
09/07/11 14:38:34
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
多数のファイルをクローズせずに何個もオープンするとどうなるか実験せよ.
実験用プログラム fopen.c のソースと実験結果と考察をレポートすること.
% ./fopen
入力ファイル:fopen.c
オープン 1 回目
オープン 2 回目
オープン 3 回目
...
オープン ??? 回目
これ以上オープンできません!
注意:「○○回までオープンできた」とかでは,現象・結果の説明にすぎず,考察とは言えない. その結果から何が理解できるのか?推理せよ. 換言:実験結果(具体例)から一般規則を導き出せ.
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:09/07/20
[5] その他の制限: 特になし
925:デフォルトの名無しさん
09/07/11 14:59:22
>>916 LinuxならコンパイラはgccだろJK
926:LOG参考まで
09/07/11 14:59:29
>>922 if文を使って、月数に応じてコメントを表示する
問題>>019 解答>>022(CODE)>>025(CODE)
>>923 最初に整数を読み込み,その後,その個数だけ整数を読み込んでいき,合計と平均を表示する
問題>>050 解答>>052(CODE)
>>924 多数のファイルをクローズせずに何個もオープンするとどうなるか実験せよ
問題>>688-689(9693) 回答>>696(9695)>>709(CODE)>>716(CODE)
927:デフォルトの名無しさん
09/07/11 15:04:46
>>916
トンぺ─乙wwwww
928:デフォルトの名無しさん
09/07/11 15:20:19
>>922 URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>923 URLリンク(kansai2channeler.hp.infoseek.co.jp)
929:デフォルトの名無しさん
09/07/11 22:21:40
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
主語、目的語、述部が入ったデータファイルを読み込み、それらをランダムに組み合わせて生成した短文を20個ファイルに出力するプログラムの作成。
短文の構文は必ず、「(主語)は、(目的語)(述部)。」となるようにする。
出力例:俺は、カレーが大好きだ。
データファイルは以下を使用すること。
主語: 俺 私 あなた 彼 彼女 先生 犬のポチ 猫のタマ ライオン その人 政治家 ネズミ の12個
目的語: カレー ご飯 肉 授業 男 女 すごいもの アレ アンパン お金 の10個
述部: が大好きだ が大嫌いだ を作った をなくした が欲しい に全力を尽くす を新しいものに交換した ?なにそれ美味いの? について深く考えた を捨てた に塩をふりかけた の11個
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限: 2009年7月20日
930:デフォルトの名無しさん
09/07/12 01:02:34
全角空白' '区切り、1項目目は(主語などの)タイトルでいいのか?
931:デフォルトの名無しさん
09/07/12 01:07:48
むしろ>>930が何を言ってるのか分からない
タイトルって何だ
932:デフォルトの名無しさん
09/07/12 01:10:43
>>931
なんで分からないのかが分からない
933:デフォルトの名無しさん
09/07/12 01:11:23
つまりレコードの第1フィールドと各フィールドの区切り文字の話をしたいんじゃろ。
まったくもって>>930の考えているとおりでいいんじゃないか?
>データファイルは以下を使用すること。
ってなってるんだから、この形のまま記録されてるってことになる。
934:デフォルトの名無しさん
09/07/12 01:12:44
当然 " の12個" とかも含まれるんだろうね
935:デフォルトの名無しさん
09/07/12 01:12:48
ちなみに最終フィールドは「の12個」のように
全角でそのレコードの総単語数が記録されているということに・・・
936:デフォルトの名無しさん
09/07/12 01:28:41
「の12個」などは含みません!
「の12個を使用すること」 という意味です。
分かりやすいようにつけたつもりだったんですが、逆にわかりづらくしてしまいました。
ごめんなさい。
937:931
09/07/12 02:07:36
ああ、おk
>>930がネタだと気づかなかった
938:デフォルトの名無しさん
09/07/12 02:30:17
どういう思考をしたらネタになるんだよ
文字ごとの区切りは本当に全角スペースでいいのか
各行の始まりに本当にXX: があるのかは重要なポイントだろ
てかサンプルファイルをロダに上げろよ
939:デフォルトの名無しさん
09/07/12 03:10:30
>>929
一応作ってみた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
元々用意しておくファイルは、test2.txtとなってるから、そこは自分で名前変えて
あと、あまり自信はないから間違ってたらごめん
他にも作ってる人いるっぽいからそっち参考にした方が良いと思う
test2.txtはノートパッドに↓を貼り付け、実行ファイルと一緒のフォルダに保存
URLリンク(kansai2channeler.hp.infoseek.co.jp)
940:デフォルトの名無しさん
09/07/12 04:59:18
>>897
URLリンク(kansai2channeler.hp.infoseek.co.jp) (ベルマンフォード法)
941:デフォルトの名無しさん
09/07/12 12:19:08
以下のプログラムを、C++で動作させるにはどうしたらよいでしょうか
#include <stdio.h>
#include "gauss.h"
#define LL 10
int main(void)
{
double a[LL] [LL+1] ,x[LL],esp10.e-19;
int i, j, n;
int ipivot;
int sw=1;
scanf("%d",&n);
for (i=0; i<n; i++)
for(j=0; j<=n; j++)
scanf(" %lf",&a[i] [j]);
ipivot=gauss(*a,x,LL,n,esp,sw);
if(ipivot== 1)
for(i=0;i<n;i++)
printf("x %d=%lf\n",i+1,x[i]);
else{
printf("ピボット値が小さすぎるので");
printf("計算を中断、終了させました");
}
return(0);
}
942:デフォルトの名無しさん
09/07/12 12:42:56
>>941
1.#include <stdio.h>
を
#include <cstdio>
にかえる
2.C++のコンパイラでコンパイルする
以上
943:デフォルトの名無しさん
09/07/12 12:43:15
>>941
gauss.h を見せて
944:デフォルトの名無しさん
09/07/12 14:00:00
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(www.dotup.org)
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限:7/16 18:00 〆
[5] その他の制限:2つあります よろしくお願いします
945:デフォルトの名無しさん
09/07/12 14:14:04
>>940
助かりました!ありがとうございましたー
946:デフォルトの名無しさん
09/07/12 15:34:11
【質問テンプレ】
[1] 授業単元 C言語
[2] 問題文(含コード&リンク):
二つのバイナリファイルの中身を比較して等しいか、等しくないかを比較して結果を返す関数を作る
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン Visual Studio 2005
[3.3] 言語: C
[4] 期限:7月13日
[5] その他の制限 ヒントにはバイトを比べると書いてありました
947:デフォルトの名無しさん
09/07/12 16:22:12
>>944 文字列strの中に、文字chが含まれている個数を返す関数
問題>>332(9629) 解答>>338(9632)>>341(1246384344/6)
>>944 文字列を左右逆に並び替える関数
問題>>150 解答>>153(9574)
948:デフォルトの名無しさん
09/07/12 16:56:04
>>941 >>1 これでOKならC++じゃなくてCのミス。
イプシロンの後にイコールを1つ入れる。
double a[LL] [LL+1] ,x[LL],esp=10.e-19;
D:\>type gauss.h
int gauss(double*,double*,int,int,double,double);
int gauss(double *a,double *b,int c,int d,double e,double f){
printf("%lf %lf %lf %lf\n",a[0],a[1],a[2],a[3]);
}
ファイル名を、任意.cで保存する。
D:\>gcc mondai.c
D:\>a
2
11
12
13
14
15
16
11.000000 12.000000 13.000000 nan
ピボット値が小さすぎるので計算を中断、終了させました
949:デフォルトの名無しさん
09/07/12 18:15:29
【質問テンプレ】
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: windows XP
[3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
[3.3] 言語: C
[4] 期限: 7月14日 00:00まで
[5] その他の制限: テキストに記載してあります。C言語の基本的なことは大方学びました。
よろしくお願い致します。
950:デフォルトの名無しさん
09/07/12 19:15:07
【質問テンプレ】
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
下に示すように,要素数が7 でint 型の配列に読み込んだ全要素を逆順に並べ替えるプログ
ラムを作成せよ.
vx[ 0] : 58
vx[ 1] : 32
vx[ 2] : 17
vx[ 3] : 46
vx[ 4] : 22
vx[ 5] : 73
vx[ 6] : 69
vx[ 0] = 69
vx[ 1] = 73
vx[ 2] = 22
vx[ 3] = 46
vx[ 4] = 17
vx[ 5] = 32
vx[ 6] = 58
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 7月14日まで
[5] その他の制限:
951:デフォルトの名無しさん
09/07/12 19:31:40
>>950
#include <stdio.h>
void rev(int* a,int size){
int i,temp;
for(i = 0;i < size/2;i++){
temp = a[i];
a[i] = a[size-i-1];
a[size-i-1] = temp;
}
}
int main(){
int i;
int vx[] = {58,32,17,46,22,73,69};
printf("before\n");
for(i = 0;i < sizeof(vx)/sizeof(vx[0]);i++){
printf("vx[%d] = %d\n",i,vx[i]);
}
rev(vx,sizeof(vx)/sizeof(vx[0]));
printf("after\n");
for(i = 0;i < sizeof(vx)/sizeof(vx[0]);i++){
printf("vx[%d] = %d\n",i,vx[i]);
}
return 0;
}
952:デフォルトの名無しさん
09/07/12 19:35:58
>>950
#include <stdio.h>
#define MAX_COUNT 7
int main() {
int i, t, vx[MAX_COUNT];
for(i=0; i<MAX_COUNT; i++) { /* 入力 */
printf("vx[%2d] : ", i);
if(scanf("%d", &vx[i]) != 1) {
scanf("%*s"); i--;
}
}
for(i=0; i<MAX_COUNT/2; i++) { /* 入れ替え */
t = vx[i], vx[i] = vx[MAX_COUNT-1-i], vx[MAX_COUNT-1-i] = t;
}
for(i=0; i<MAX_COUNT; i++) { /* 表示 */
printf("vx[%2d] = %d\n", i, vx[i]);
}
return 0;
}
953:デフォルトの名無しさん
09/07/12 20:05:19
誰か>>946をお願いいたします。
954:デフォルトの名無しさん
09/07/12 20:18:51
>>946
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
FILE *fp1, *fp2;
if(argc != 3) {printf("Usage : %s file1 file2\n", argv[0]); return 1;}
if(strcmp(argv[1], argv[2]) == 0) {puts("同じファイルです"); return 0;}
fp1 = fopen(argv[1], "rb");
if(fp1 == NULL) {printf("%s file open error!\n", argv[1]); return 1;}
fp2 = fopen(argv[2], "rb");
if(fp2 == NULL) {printf("%s file open error!\n", argv[2]); fclose(fp1); return 1;}
while(getc(fp1) != getc(fp2)) {
puts("異なります");
fclose(fp2);
fclose(fp1);
return 2;
}
puts("同じです");
fclose(fp2);
fclose(fp1);
return 0;
}
955:デフォルトの名無しさん
09/07/12 20:56:03
>>954
ありがとうございます
956:デフォルトの名無しさん
09/07/12 22:07:29
どなたか>>949お願い出来ませんか?
一つのプログラムにまとめて頂いても結構ですので、よろしくお願いいたします。
957:デフォルトの名無しさん
09/07/12 22:55:27
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
100個の乱数を発生させ最大値、最小値、平均を求める
また最大値、最小値それぞれ何番目にあるか答えよ
(最初に読み込んだデータを1番目とする)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7月20日まで
[5]基本的なのでお願いします
958:デフォルトの名無しさん
09/07/12 23:13:34
>>957
URLリンク(kansai2channeler.hp.infoseek.co.jp)
959:デフォルトの名無しさん
09/07/12 23:54:24
>>958
ありがとうございました!
960:デフォルトの名無しさん
09/07/13 00:34:48
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
下に示すように,要素数が5 でint 型の配列に、5 人の学生の身長を読み込んで、その平均
身長を求めるプログラムを作成せよ。
身長を入力してください
1 番: 178
2 番: 175
3 番: 165
4 番: 179
5 番: 172
平均身長: 173.8vx[ 0] : 58
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 7月15日まで
[5] その他の制限: まだ基礎しか習ってません。
よろしくお願いします。
961:960
09/07/13 00:36:39
訂正です
誤
平均身長: 173.8vx[ 0] : 58
正
平均身長: 173.8
962:デフォルトの名無しさん
09/07/13 01:09:27
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
URLリンク(www.dotup.org)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限: 090714
[5]特になし
お願いします
963:デフォルトの名無しさん
09/07/13 01:40:40
>>949 >>956
はいよ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
964:デフォルトの名無しさん
09/07/13 01:59:52
[1] 授業単元: プログラミング演習2
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux CentOS5
[3.2] コンパイラ名とバージョン: gcc 3.4.1
[3.3] 言語: C
[4] 期限: 2009年07月14日10:00
[5] その他の制限: じpに入っているk1.cを書き換えて完成させろという課題です。
よろしくお願いいたします。
965:デフォルトの名無しさん
09/07/13 02:00:02
>>960
#include <stdio.h>
int main(void)
{
double ave = 0;
int a[5];
int i;
for (i = 0; i < 5; i++) { printf("%d番: ", i + 1); scanf("%d", &a[i]); }
for (i = 0; i < 5; i++) ave += a[i];
printf("平均身長: %.1f\n", ave / 5);
return 0;
}
966:デフォルトの名無しさん
09/07/13 02:12:45
>>964
最初から自分で書くなら兎も角、他人の書いた途中なソースに加筆して完成させるというのは
それ以上の高度なスキルが必要でこのスレでそれが出来そうなのは麻呂(ry
967:デフォルトの名無しさん
09/07/13 02:21:10
分子=1
分母=1063
1/1063=(0.000940733772342)
0.
[
0009407337723424270931326434619002822201317027281279397930385700846660( 70)
3951081843838193791157102539981185324553151458137347130761994355597365( 140)
9454374412041392285983066792097836312323612417685794920037629350893697( 210)
0837253057384760112888052681091251175917215428033866415804327375352775( 280)
1646284101599247412982126058325493885230479774223894637817497648165569( 350)
1439322671683913452492944496707431796801505174035747883349012229539040( 420)
4515522107243650047036688617121354656632173095014111006585136406396989( 490)
6519285042333019755409219190968955785512699905926622765757290686735653( 560)
8099717779868297271872060206961429915333960489181561618062088428974600( 630)
1881467544684854186265286923800564440263405456255879586077140169332079( 700)
0216368767638758231420507996237064910630291627469426152398871119473189( 770)
0874882408278457196613358419567262464722483537158984007525870178739416( 840)
7450611476952022577610536218250235183443085606773283160865475070555032( 910)
9256820319849482596425211665098777046095954844778927563499529633113828( 980)
7864534336782690498588899341486359360301034807149576669802445907808090( 1050)
310442144873]( 1062)
968:デフォルトの名無しさん
09/07/13 02:30:59
下手の横好きってやつなんだけど、>>954のプログラムについて聞きたい
getc関数は一文字しか返さないから、その文字がたまたま一緒だった場合、
別の内容だったとしても同じだと判断してしまう危険性とかはないんだろうか?
バイナリファイル自体がよく解ってない初心者なので、
誰かちょっと解説してもらえると助かる
969:デフォルトの名無しさん
09/07/13 03:04:25
>>968
その通り、getc,fgetcは使用すべきではないし、
ロジックもあなたの言う通り間違ってる。
コードを加筆修正して正しいコードを書いてみそ
とでも>>954は言いたげな漢字
970:デフォルトの名無しさん
09/07/13 05:13:09
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C
[4] 期限:7/16/
[5] その他の制限:
問題文の通りにやっていただければ結構です。
宜しくお願いします。
971:デフォルトの名無しさん
09/07/13 05:51:03
>>970
/* */
len = (int)str_length(st);
for(i=0;i<len/2;i++) {
temp = *(st+i);
*(st+i) = *(st+len-i-1);
*(st+len-i-1) = temp;
}
/* */
rev_str(str);
972:デフォルトの名無しさん
09/07/13 06:03:57
>>949
#include <stdio.h>
#define LEN 8192
int findrepeat(int r[], int *head, int *tail)
{
int i, j;
for (i = 0; r[i]; ++i)
for (j = i + 1; r[j]; ++j)
if (r[i] == r[j]) { *head = i; *tail = j; return 1; }
return 0;
}
int main(void)
{
int q[LEN], r[LEN];
int n, head, tail, i;
printf("n? "); scanf("%d", &n);
if (n == 1) { printf("1 / 1 = 1"); return 0; }
for (i = 0; i < LEN; ++i) q[i] = r[i] = 0;
head = tail = -1;
q[0] = 1 / n; r[0] = 1 % n;
for (i = 1; i < LEN && r[i - 1] != 0; ++i) {
q[i] = 10 * r[i - 1] / n; r[i] = 10 * r[i - 1] % n;
if (findrepeat(r, &head, &tail)) break;
}
printf("1 / %d = %d.", n, q[0]);
for (i = 1; q[i] || r[i]; ++i) { if (i - 1 == head) printf("("); printf("%d", q[i]); if (i == tail) printf(")"); }
return 0;
}
973:デフォルトの名無しさん
09/07/13 06:42:36
おはようございます>>678 です。
結局>>686をCに変換できませんでした…
どなたか、Cに書き換えてはいただけないでしょうか。
974:デフォルトの名無しさん
09/07/13 06:47:12
最初からCって書いて置けよ
C++もはいってるじゃねーか
975:デフォルトの名無しさん
09/07/13 06:50:32
>>973
どうみてもC++じゃなくてCで書かれてるんだが
976:デフォルトの名無しさん
09/07/13 06:53:10
>>975
拡張子がtxtのままとかどうせレベルの低い話なんだろうけどなw
977:デフォルトの名無しさん
09/07/13 06:54:32
>>976
それプラス
・課題(11_1)はmain_11_1をmainに書き換えてコンパイル
・課題(11_2)はmain_11_2をmainに(ry
ってのがわかってないんだと思う
978:デフォルトの名無しさん
09/07/13 06:56:50
ああ、あまりにもあほらしくて中みてなかったが課題をまとめてくれてるのかw
ほんとにて取り足取りでないとできないのかw
979:デフォルトの名無しさん
09/07/13 07:36:42
これはいいツンデレ
980:デフォルトの名無しさん
09/07/13 07:47:26 BE:511223696-DIA(287979)
次スレ立てました
C/C++の宿題片付けます 129代目
スレリンク(tech板)
981:デフォルトの名無しさん
09/07/13 08:28:03
>>968
getcでもファイルの最後まで比較しながら読み込んでいけばいいんだけどね。
あなたの言うとおり、>>954は最初の1文字でしか判定してないから思いっきり間違ってる。
本人はwhile使ってるあたり、最後まで比較したつもりなんだろうけど。
982:デフォルトの名無しさん
09/07/13 08:50:46
>>954 をいじるとこうなるのかな
do {
char c1, c2;
c1 = getc(fp1);
c2 = getc(fp2);
if (c1 != c2) { puts("異なります"); return 2; }
} while (c1 != EOF);
puts("同じです");
return 0;
983:デフォルトの名無しさん
09/07/13 08:51:41
char じゃなくて int じゃないとまずいか
984:デフォルトの名無しさん
09/07/13 09:01:24
初心者のころcharで受けて、ファイルの途中で読み込み終了して困ったことがあったなぁ。
985:デフォルトの名無しさん
09/07/13 10:00:54
>>966
そこで麻呂はない
986:デフォルトの名無しさん
09/07/13 10:29:46
>>975 >>736
987:デフォルトの名無しさん
09/07/13 10:45:07
>>986
「どうみても」といいつつちゃんと見てなかったw
こいつは失礼した
988: ◆jG/Re6aTC.
09/07/13 12:48:55
[1] 授業単元:アルゴリズム論演習
[2] 問題文(含コード&リンク):
(1)3つ以上の整数の階層的プログラミングを行うプログラムを
作成せよ。ただし、整数間の距離は差、クラスタ間の距離はそ
れぞれの要素間の距離のうち最小のものとする。出力は、クラ
スタか、あるいは整数a,bを足して得られるクラスタをa,bとし、
これを帰納的に適用する表現で表せ。たとえば、1,2,5に対す
る出力は((1,2),5)である。
(2)3つ以上の2次元ベクトルの階層的プログラミングを行うプ
ログラムを作成せよ。ただし、ベクトル(u1,u2)と(v1,v2)の間
の距離をsqrt(u1*v1 + u2*v2)とし、クラスタ間の距離はそれ
ぞれの要素間の距離の平均とする。出力は(1)の表現を用いよ。
[3] 環境
[3.1] OS:Windows
[3.2] VisualStudio2008EE
[3.3] 言語:C/C++のどちらでも可
(できれば後学のためC++でお願いします。)
[4] 期限: [2009年07月23日まで]
[5] その他の制限:特に制限はありません。
989: ◆jG/Re6aTC.
09/07/13 12:50:09
>988
よろしくお願いいたします><;
990: ◆/91kCCQXBo
09/07/13 13:00:51
>>982 お世話になった。
>>953 の時は作業中だったのに無理してしまった。
>>955 line 12 : while(getc(fp1) != getc(fp2)) {
↓
int c1=0,c2;
/* do if((c1 = getc(fp1)) != (c2 = getc(fp2))) {
puts("異なります");
fclose(fp2);
fclose(fp1);
return 2;
} while (c1 != EOF);
*/
while (c1 != EOF) if((c1 = getc(fp1)) != (c2 = getc(fp2))) {
991:デフォルトの名無しさん
09/07/13 13:17:08
>>678
g++ でコンパイルしてみること。
エラーが出たらエラーメッセージを貼り付けること。
992: ◆jG/Re6aTC.
09/07/13 14:14:37
>988
(誤)階層的プログラミング
(正)階層的クラスタリング
でした^^;
よろしくです。
993:デフォルトの名無しさん
09/07/13 14:35:11
>>971
ありがとうございます。
994:デフォルトの名無しさん
09/07/13 15:20:18
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン: VC 2009
[3.3] 言語: C言語
[4] 期限: 7/14 15時
[5] その他の制限: define,for文など
よろしくお願いします
995:デフォルトの名無しさん
09/07/13 15:27:54
>>994 連立1次方程式の解をガウスの消去法用いて解く
問題>>162 解答>>174(9580)>>183(9582)
996:デフォルトの名無しさん
09/07/13 16:18:31
たとえば
3481
という数字(4桁/0含む)が与えられたとき
0 = 3 + 4 - 8 + 1
1 = 3 + 4 - 8 * -1
2 = -(3 + 4 - 8 - 1)
3 = 3 * 4 - 8 - 1
4 = (3 / (4 + 8))^-1
...
のように加減乗除のみで整数を順に造っていってください
997:デフォルトの名無しさん
09/07/13 16:24:11
最後の例で思いっきり加減乗除を使っていない件
998:794
09/07/13 19:34:47
ここ2日ほど熱があり寝込んでました
先生に相談すると今週の間だけ待ってくれるとのこと
まだ未解決なので再度宜しくお願いします
999:デフォルトの名無しさん
09/07/13 19:47:01
>>998
なんかのギャグですか?
1000:デフォルトの名無しさん
09/07/13 20:39:34
ume
1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4976日前に更新/375 KB
担当:undef