C/C++の宿題片付けま ..
[2ch|▼Menu]
829:デフォルトの名無しさん
09/07/09 21:46:36
>>826
switch文で判定するとか問題がカス過ぎるだろ

#include <stdio.h>
int main(){
int n;
printf("input number > ");
scanf("%d",&n);

switch(n){
default: printf("%s",n&1 ? "odd" : "even");
}

return 0;
}

830:デフォルトの名無しさん
09/07/09 21:51:11
#include <stdio.h>
int main(){
int n;
printf("input number > ");scanf("%d",&n);
switch(n%2){
case 0: printf("even¥n");break;
case 1: printf("odd¥n");break;
default: printf("Bug of processor??¥n");break;
}
return 0;
}
としたらBug of processorと表示されることは内と言える?


831:デフォルトの名無しさん
09/07/09 22:07:22
>>829
ひどい奴だなwww もっとこう出題者の意向をくんでやれよ。いいよ俺が答えてやる

>>826
#include <stdio.h>
int main(){
int n;
printf("input number > ");
scanf("%d",&n);

switch(n){
case 0: case 2: printf("偶数です!\n"); break;
case 1: case 3: printf("奇数です!\n"); break;
default: printf("わかりません!\n"); break;
}

return 0;
}

832:デフォルトの名無しさん
09/07/09 22:32:39
>>831
「わかりません」ってなんだよ

>>826
下のプログラムを実行したら、ちゃんとintの範囲なら全部判定できるプログラムができるからやってみなw

#include <stdio.h>
#include <limits.h>

int main(){
  int i;
  printf("#include <stdio.h>\n"
    "int main(){\n"
    "\tint n;\n"
    "\tprintf(\"input number > \");\n"
    "\tscanf(\"%%d\",&n);\n"
    "\tswitch(n){\n"
    "\tcase %d:\n", INT_MIN);
  for(i = INT_MIN + 2; i > INT_MIN + 1; i+=2) printf("\tcase %d:\n", i);
  printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1);
  for(i = INT_MIN + 3; i > INT_MIN + 1; i+=2) printf("\tcase %d:\n", i);
  printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n", INT_MIN % 2 ? "偶数" : "奇数");
  printf("\t}\n"
    "\treturn 0;\n"
    "}\n");
  return 0;
}

833:832
09/07/09 22:41:20
わりぃ、1箇所ばぐっとった

printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1);
  ↓
printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d:\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1);

これで完璧。
期限までに間に合わんかったらごめんな。

834:デフォルトの名無しさん
09/07/09 22:48:06
2009/7/9 24:00 締め切り埋め祭り
>>830 &yen;以外で文字化け
#include <stdio.h>
int main(){
  int n;

  printf("input number > ");
  scanf("%d",&n);
  switch( (n&1) == 0 ) { // 最下位ビットは0か
    case 0: printf("奇数です!\n"); break; // いいえ
    case 1: printf("偶数です!\n"); break; // はい
  }
  switch( (n&1) != 0) { // 最下位ビットは1か
    case 0: printf("偶数です!\n"); break; // いいえ
    case 1: printf("奇数です!\n"); break; // はい
  }
  return 0;
}

835:デフォルトの名無しさん
09/07/09 22:49:40
パスカルの三角形を出力するのに
#include <stdio.h>
#define N 10

int main(void){
int i, j = 1, x, y;
int d[N][N]={};

/* 三角形を作成 */
for (i = 1 ; i < N ; i++){
d[i][0] = 1;
while (j <= i - 1){

d[i][j] = d[i-1][j-1] + d[i-1][j];
j ++;
}
}

/* 三角形の表示 */
for (y = 0; y < N; y++) {
for (x = 0; x < N-y; x++)
printf(" ");
for (x = 0; x < y; x++)
printf("%3d ", d[x][y]);
printf("\n");
}
return 0;
}
と書きましたが、すべての要素がゼロになってしまいます。
どこがまちがっているのでしょうか??


836:デフォルトの名無しさん
09/07/09 22:58:02
>>835
while文の前にj=1の初期化が抜けてる
表示部分でd[x][y]のxとyが逆

837:836
09/07/09 23:01:01
>>835
おま、Cなら俺に聞けスレとのマルチポストじゃねえか!
しかもあっちで答もらってんじゃんよ!
>>836は取り消す。答えなかったことにする

838:デフォルトの名無しさん
09/07/09 23:02:35
やっぱテンプレ守れんやつは
守れんやつだけのことはあるってことか

ご愁傷様

839:デフォルトの名無しさん
09/07/09 23:06:16
>>835
マルチポスト乙。

マルチポスト - Wikipedia
Wikipedia項目リンク


840:デフォルトの名無しさん
09/07/09 23:07:56
>>830
CPUにバグなんてあるわけないだろ
プログラムが仕込まれているわけでもあるまいし


841:デフォルトの名無しさん
09/07/09 23:09:11
>>840
CPUの場合はバグとはいわずエラッタという言葉で予定してない動きをさすのはあるよ

インテルとかAMDもたまにやらかしてる

842:デフォルトの名無しさん
09/07/09 23:09:16
いやいやwww

843:842
09/07/09 23:10:15
>>842>>840にっすよ念のため

844:デフォルトの名無しさん
09/07/09 23:34:09
>>835
別のスレに回答しておいた。
出力結果のサンプルはこんな感じ。
                           
                            1 
                         1     1 
                      1     2     1 
                   1     3     3     1 

845:デフォルトの名無しさん
09/07/09 23:36:07
・3・3・3・3・3・3・)v

846:842
09/07/09 23:39:12
ネタにマジレスして恥ずかしいので軽く吊ってくる

847:デフォルトの名無しさん
09/07/09 23:43:14
デフォルトの名無しさん:2009/07/09(木) 20:13:56
1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク): LLLアルゴリズムをCでプログラミング
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: C言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2009年7月17日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

Webや本を見ているのですが、
二次行列で書いてあったり一次行列で書いてあったりしてよく分かりません。
よろしくお願いします


848:デフォルトの名無しさん
09/07/10 00:19:21
[1] 授業単元:C++
[2] 問題文(含コード&リンク):日曜日から土曜日までの曜日を表す列挙型Dayが定義されている.このとき,2つの曜日を引数として与えると,その曜日間の最短距離を計測する関数day_distanceを作成せよ.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:C++
 [3.3] 言語: C++
[4] 期限: 2009年7月10日午前9時半 なので午前5時ぐらいまでにやっていただければ・・・
[5] その他の制限:

関数distanceの呼び出しは↓
#include <iostream>
using namespace std;
enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat};
int main(){
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される
return 0;
}

以下,続きへ

849:デフォルトの名無しさん
09/07/10 00:21:47
>>848の続きです

#include <iostream>
using namespace std;
enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat};//曜日を表す列挙型の定義
void day_load(Day a, Day b){
if(a<b){
Day temp;
temp=a,a=b,b=temp;}
switch(a-b){
case 1:
cout << "1" << endl;
break;
case 2:
cout << "2" << endl;
break;
case 3:
cout << "3" << endl;
break;
}
}
int main(){
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される
return 0;
}

のように作ったら,day_distanceが宣言されないと言われます
どうすればいいでしょうか?

850:デフォルトの名無しさん
09/07/10 00:25:35
day_loadじゃないの?

851:デフォルトの名無しさん
09/07/10 00:27:35
voidの横をday_distanceにすると,voidとcoutの3つにエラーが出てしまいます
ちなみにEclipseでやってます

852:デフォルトの名無しさん
09/07/10 00:38:58
>>849
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される



day_load(Sun, Tue);
day_load(Mon, Fri);
day_load(Sun, Sat);

に変える

853:デフォルトの名無しさん
09/07/10 00:40:17
とりあえず答えだけ。いろいろアレ過ぎるんで、ネットじゃなくリアルで指導してもらった方が良い。

int day_distance(Day a, Day b){
  return a > b ? a - b > 7 - a + b ? 7 - a + b : a - b : b - a > 7 - b + a ? 7 - b + a : b - a;
}


854:デフォルトの名無しさん
09/07/10 00:42:05
>>849
>のように作ったら,day_distanceが宣言されないと言われます
>どうすればいいでしょうか?
day_distanceを宣言する

#include <iostream>
#include <cmath>
using namespace std;
enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat};

int day_distance(Day d1,Day d2){
int table[]={0,1,2,3,3,2,1};//,{1,0,1,2,3,3,2},
return table[abs(d2-(d1-Sun))%7];
}

int main(){
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される
return 0;
}

そのswitch-case

855:デフォルトの名無しさん
09/07/10 00:43:17
は汎用性無いからやめた方がいい

途中で書き込んでしまったorz

856:デフォルトの名無しさん
09/07/10 00:47:39
>>854
すみません,includeの<cmath>って何でしょうか・・・?
<iostream>しか使ったこと無いので・・・

857:デフォルトの名無しさん
09/07/10 01:09:13
math.hのC++版。数学関連の関数を使うために入れてる。ここではabs

858:デフォルトの名無しさん
09/07/10 01:10:36
追記
iostreamをなぜ使っているかを理解してれば、そのような疑問は出てこないと思うんだけどね。
おまじないの犠牲者じゃないことを祈る。

859:デフォルトの名無しさん
09/07/10 01:25:55
>>857
すみません,習ってないので分からないです・・・
もしswitchでやる場合は,どこをいじればいいでしょうか?

860:デフォルトの名無しさん
09/07/10 01:30:25
>>857だけど、>>854は別人ね。

iostreamは習ったから使ってるという認識でいいのかな。
何のためにiostream使ってるの?

861:デフォルトの名無しさん
09/07/10 01:33:10
>>860
すみません、恥ずかしながら分からないです・・・
ただ「プログラミング演習」という授業で、プリントなどに最初からinclude<iostream>と書いていたので・・・

862:デフォルトの名無しさん
09/07/10 01:34:23
問題点1
 ・day_load関数を定義した
 ・day_distance関数を呼び出した
 という名前の矛盾
問題点2
 day_(load|distance)関数の戻り値がvoidであるにも関わらず、
 main関数で cout に放り込んでしまっていること

switchがどうとかよりも、根本的な問題点はここなので、
そこを解決すればとりあえずは動くようになると思うし、
これまで通りロジックを考えることに専念できると思う

863:デフォルトの名無しさん
09/07/10 01:39:40
#include <iostream>
using namespace std;
enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat}



int main(){
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される
return 0;
}
は最初から問題で定義されているので,この状況でswitchを使う場合はどうすればいいでしょうか?

864:デフォルトの名無しさん
09/07/10 01:40:03
問題点1について>>850が解決方法を提案し
>>851で問題点1を解決した結果、問題点2が表面化した。
>>852は問題点2の解決方法を提案してくれたが>>849はそれを無視している。

問題解決は目前であるにも関わらず、全く別の解決方法である>>854に目を向けて
cmathがなんであるかなどと悩んでいる。

865:デフォルトの名無しさん
09/07/10 01:42:21
day_distance関数が数値を返すようにすればいい。

866:デフォルトの名無しさん
09/07/10 01:44:41
>>864
あ、すみません
coutの3つをday_loadに変更してもエラーが発生したもので・・・

>>865
すみません、分かりません・・・
本当に無知で申し訳ないです・・・

867:デフォルトの名無しさん
09/07/10 01:53:15
>>866
int day_distance(Day a, Day b){ // 戻り値をintに変えた
中略
case 1:
return 1; // コンソール出力をするのではなく、数値を返却するように変えた
case 2:
return 2; // コンソール出力をするのではなく、数値を返却するように変えた
case 3:
return 3; // コンソール出力をするのではなく、数値を返却するように変えた
}
return -1; // どれにも当てはまらない場合は不正とみなして-1を返却するようにした
}

そもそも、main関数の記述が指定されている以上、>>852の提案をはねつけるべき。

868:デフォルトの名無しさん
09/07/10 01:59:25
>>867
共に3と1が出力されるはずの2行目と3行目で-1が出力されてしまいます・・・

869:デフォルトの名無しさん
09/07/10 02:02:05
>>848 >>849
に質問があるけど
>>859
switchを使うのは必須なの?
題意を満たすプログラムの制約をちゃんと示さないと無駄な回答が増えるだろ

>>868
よくわかんないけど今まで言ってた条件満たしたプログラム書いてやるから待ってろ

870:デフォルトの名無しさん
09/07/10 02:03:38
>>868
それはあなたがこだわっていたswitchのロジックがおかしいだけ。
>>862の、
> これまで通りロジックを考えることに専念できると思う
はそれを指しているんじゃないの。

871:デフォルトの名無しさん
09/07/10 02:04:55
>>869
作ってくれなんて言われてないのに親切なお方

872:デフォルトの名無しさん
09/07/10 02:05:12
>>869
学校で友人に聞いたプログラミングの中にswitchが入っていたのですが、時間の都合上途中までしか聞けなかったもので・・・

873:デフォルトの名無しさん
09/07/10 02:08:25
#include <iostream>
using namespace std;
enum Day{Sun, Mon, Tue, Wed, Thu, Fri, Sat};

int day_distance(Day d1,Day d2){
int table[]={0,1,2,3,3,2,1};//,{1,0,1,2,3,3,2},
int distance=d2-(d1-Sun);
distance=(distance<0)?-distance:distance;
return table[distance%7];
}

int main(){
cout << day_distance(Sun, Tue) << endl;//2が出力される
cout << day_distance(Mon, Fri) << endl;//3が出力される
cout << day_distance(Sun, Sat) << endl;//1が出力される
return 0;
}

874:デフォルトの名無しさん
09/07/10 02:13:25
>>873
ありがとうございます! ちゃんと出力されました!

他の皆さんも多大な迷惑をかけて申し訳ないです・・・

875:デフォルトの名無しさん
09/07/10 02:24:10
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
文字列xに文字列yが含まれるかどうかを判定する関数str_comp(char[],char[])を作成せよ.

出力例:

文字列x(64字まで)? University
文字列y(64字まで)? sity
"University"に"sity"は含まれます。

文字列x(64字まで)? University
文字列y(64字まで)? city
"University"に"city"は含まれません。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 7/17
[5] その他の制限:文字列まで.

お願いします

876:デフォルトの名無しさん
09/07/10 02:36:23
>>875
/* 含まれる場合は1 含まれない場合は0を返却 */
int str_comp(char src[],char dst[])
{
return (strstr(src, dst) != NULL);
}


877:デフォルトの名無しさん
09/07/10 02:38:31
変数名がおかしすぎた。

/* 含まれる場合は1 含まれない場合は0を返却 */
int str_comp(char target[],char search[])
{
return (strstr(target, search) != NULL);
}

878:デフォルトの名無しさん
09/07/10 03:13:47
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
char型配列xに格納された文字列を一文字ごとに空白を開けて逆順に出力する関数
reverse_array(char[])を以下のように出力されるよう作成せよ。

処理前:Tokyo
関数reverse_array()を呼び出しました
処理後:"o y k o T"


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 7/14
[5] その他の制限:おねがいします。

879:デフォルトの名無しさん
09/07/10 03:49:22
>>878
void reverse_array(char s[])
{
int i, len = strlen(s);
printf("処理前:%s\n", s);
puts("関数reverse_array()を呼び出しました");
printf("処理後:\"");
for(i=len-1; i>=0; --i){
putchar(s[i]);
if(i) putchar(' ');
}
puts("\"");
}

880:デフォルトの名無しさん
09/07/10 04:20:26
>>877
ありがとう
それ使って書いてみたんだけどエラーが出てしまう・・・。
関数勉強し直します……。
誰か暇だったらでいいので例をつくってください。

881:デフォルトの名無しさん
09/07/10 04:47:24
>>880
877じゃないけどどんなエラーがでたのか書こうぜ

例ってなにを作って欲しいんだ?

882: ◆/91kCCQXBo
09/07/10 07:20:19
エラーはこれを定義すれば直ると思う。
#include <string.h>

main(スタブ)からは、関数パラメータを2個付けて呼び出すだけでいいだろう。

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] その他の制限:


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4970日前に更新/375 KB
担当:undef