1 :デフォルトの名無しさん2011/11/04(金) 09:08:00.06
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。 >>2以降にあります。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
62 :デフォルトの名無しさん2011/11/07(月) 16:42:37.24
>>60
>>1
221 :デフォルトの名無しさん2011/11/12(土) 05:10:38.29
>>220
http://codepad.org/eaM3XA2N
こんな時間だから答えちゃうけど
次からは>>1-2読んでテンプレ使おうな
585 :デフォルトの名無しさん2011/11/23(水) 21:56:48.69
>>584
>>1
2 :デフォルトの名無しさん2011/11/04(金) 09:08:32.11
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
http://pastebin.com/ ←たまにテンポるので上の2つが混んでいる時以外はなるべく使わないで下さい
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 152代目
http://hibari.2ch.net/test/read.cgi/tech/1312201995/
5 :デフォルトの名無しさん2011/11/04(金) 13:59:15.40
前スレ >>994
ベタな方法で。
http://ideone.com/75gvT
14 :デフォルトの名無しさん2011/11/05(土) 04:35:44.32
>>5
プログラムへのツッコミじゃないけど40はfortyな。
あとハイフンを使ったりとか...
6 :デフォルトの名無しさん2011/11/04(金) 14:49:40.13
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):文字列st が回文(前から読んでも後ろから読んでも
同じ)であれば1 を,そうでなければ0 を返す関数
int isPalindrome(const char st[])
を作成せよ.以下の実行例のように,関数の動作を確認
例.文字列を入力してください:AKASAKA
その文字列は回文です。




できるmain 関数も作成する.

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限:11/6
[5] その他の制限:
7 :デフォルトの名無しさん2011/11/04(金) 14:54:30.56
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):文字列st が回文(前から読んでも後ろから読んでも
同じ)であれば1 を,そうでなければ0 を返す関数
int isPalindrome(const char st[])
を作成せよ.以下の実行例のように,関数の動作を確認
できるmain 関数も作成せよ.
例.文字列を入力してください:AKASAKA
その文字列は回文です.



[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限:11/6
[5] その他の制限:
8 :デフォルトの名無しさん2011/11/04(金) 15:13:10.58
>>7
int isPalindrome(const char st[])
{
char* f;
char* b;

f = b = st;
while( *b ) b++;
b--;
while( b > f ) {
if( *f != *b ) return 0;
f++;
b--;
}
return 1;
}
9 :デフォルトの名無しさん2011/11/04(金) 18:00:02.02
おや、>>6と>>7は一緒だったのか
気付かず作っちゃったのでやり方少し違うしせっかくなのでうp
http://codepad.org/6UL5hxyw
10 :デフォルトの名無しさん2011/11/05(土) 01:33:40.13
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):例に示すように、二つの整数値を読み込んで、
              小さい方の数以上で大きいほうの数以下の整数
              を全て加えた値を表示するプログラムを作成せよ。
              (例)
                 二つの整数を入力してください。
                 整数1: 37
整数2: 28
28以上37以下の全整数の和は325です。
              
[3] 環境
 [3.1] OS:windows7
 [3.2] コンパイラ名とバージョン:Visual C++ 2010 Express
 [3.3] 言語:どちらでも可
[4] 期限:11月9日
[5] その他の制限:if文とdo文を必ず使うこと。
         4月から授業ではじめたばかりですので、複雑な文は分かりません。
         よろしくお願いします。
12 :デフォルトの名無しさん2011/11/05(土) 01:54:00.69
>>10
#include<iostream>
using namespace std;
int main(void) {
int a,b;
cout << "二つの整数を入力してください。" << endl;
cout << "整数1:";
cin >> a;
cout << "整数2:";
cin >> b;

int sum=0;
for (int i=min(a,b) ; i<=max(a,b) ; i++) sum += i;
cout << min(a,b) << "以上" << max(a,b) << "以下の全整数の和は" << sum << "です。" << endl;

return 0;
}
13 :デフォルトの名無しさん2011/11/05(土) 02:00:27.20
>>10
if と do だったな。忘れてたわ。
#include<iostream>
using namespace std;
int main(void) {
int a,b;
cout << "二つの整数を入力してください。" << endl;
cout << "整数1:";
cin >> a;
cout << "整数2:";
cin >> b;

int max,min;
if (a<b) {
min = a;
max = b;
} else {
min = b;
max = a;
}
int sum=0;
int i=min;
do {
sum += i;
i++;
} while (i<=max);
cout << min << "以上" << max << "以下の全整数の和は" << sum << "です。" << endl;

return 0;
}
15 :デフォルトの名無しさん2011/11/05(土) 08:01:30.87
>forty
知らなかった
こんなところで英語の無駄知識が増えるとは
17 :デフォルトの名無しさん2011/11/05(土) 08:57:25.99
>>15
「無駄」って、日本語でいったら漢数字の表記を間違えているようなもんだぞw
18 :デフォルトの名無しさん2011/11/05(土) 09:17:13.69
>>17
何で英語はfourtyとしなかったんだ?というボヤキでしょ。
19 :デフォルトの名無しさん2011/11/05(土) 12:01:32.49
>>18
え?
24 :デフォルトの名無しさん2011/11/05(土) 22:19:17.11
>>18
そんなとこでぼやくんなら、
何で50はfivetyじゃなくてfiftyなんだ、とかもぼやいてるのか?
「いやいや14がfourteenだし4の部分は発音が同じだし」、とかいうなら
英語は綴りと発音が対応してない単語が山ほどあるがその度にぼやいているのか?

こんなもん自然言語の歴史的な経緯なんだからどうしようもないんだよ。
ちなみに昔はfourとfortyのforは発音が違ったらしいぞ。
あと言語のForth、あれはFourthとするつもりが文字数の都合でForthになった、
これぐらいが無駄知識w
20 :デフォルトの名無しさん2011/11/05(土) 12:11:17.56
外国人が多少日本語を間違えていても
意味を取り違えない程度なら正直どっちでもいい
日本人が多少英語を間違えていても(以下同
22 :デフォルトの名無しさん2011/11/05(土) 12:15:34.87
実際英語圏にいくと人種が混じってるので、間違えたら可哀想な目で見られるだけ。
23 :デフォルトの名無しさん2011/11/05(土) 20:53:42.06
"forty"の5文字はアルファベット順になっている
とかが英語の無駄知識だろう
26 :デフォルトの名無しさん2011/11/06(日) 00:04:03.33
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):3つのデータを管理するプログラム
               PDFにした問題を貼っておきます
               http://www.07ch.net/up2/src/lena6268.zip
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:特に指定はなかったです
 [3.3] 言語:C言語
[4] 期限: 11/8
[5] その他の制限: 特に無いです
よろしくお願いします

27 :デフォルトの名無しさん 2011/11/06(日) 07:23:07.35
>>26
#include <string.h>
#include <stdlib.h>
typedef struct AAA {
char usr_name[32];
char password[32];
int age
}AAA;
char* strlcpy( char* pDestination, const char* pSource, size_t Size )
{
char* pStart = pDestination;
while( --Size && ( *pDestination++ = *pSource++ ) );
*pDestination = '\0';
return pStart;
}
AAA usr; /*グローバル変数*/
void init(){

/*作成*/
memset(&usr,0,sizeof(AAA));
}
int add_user(char *usr_name,char *password,int age){
/*作成*/
strlcpy(usr.usr_name,usr_name,32);
strlcpy(usr.password,password,32);
usr.age = age;
}
28 :デフォルトの名無しさん2011/11/06(日) 07:46:54.20
>>27
add_user()は

成功:0
エラー:-1
を返すんですけど・・・
29 :デフォルトの名無しさん2011/11/06(日) 18:17:42.87
[1] 授業単元:プログラミング入門
[2] 問題文:0以上20以下の整数を入力として受け付けて,
その数から20までの整数を順に出力せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ありません
[5] その他の制限: ありません

うまくカウントできなくて困っています
宜しければお願いします
30 :デフォルトの名無しさん2011/11/06(日) 18:50:28.03
/*>>29*/
#include <stdio.h>

int main(void)
{
  int n, i;

  printf("整数(0-20): ");
  scanf("%d", &n);

  if (n < 0 || n > 20) {
    fprintf(stderr, "範囲外です");
    return 0;
  }

  for (i = n; i <= 20; i++)
    printf("%d ", i);

  printf("\n");

  return 0;
}
35 :デフォルトの名無しさん2011/11/06(日) 23:18:07.59
>>30-31
ありがとうございました
助かりました
52 :262011/11/07(月) 01:34:53.61
>>27
作成ありがとうございます
非常に助かります

宜しければもう1点お付き合いください
>>29で指摘して頂いている点なのです
今出ている処理で0を返せばいいのは分かるのですが
エラー時に-1を返す時にはどのようになるのでしょうか
お願いします
31 :デフォルトの名無しさん2011/11/06(日) 18:52:23.92
void main(){
int in;
scanf("%d",&in);
for(;in<=20;in++)printf("%d\n",in);
}
32 :デフォルトの名無しさん2011/11/06(日) 19:32:22.25
>>31
横やりだけど、負数をはじかないと
33 :デフォルトの名無しさん2011/11/06(日) 22:55:45.94
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):mのn乗 を一の位まで正確に計算するプログラムを書け。ただし、mは2以上10000未満の整数、nは0以上10000未満の整数とする。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語: C
[4] 期限: 2011年11月7日12時
[5] その他の制限: ありません

よろしくおねがいします
34 :デフォルトの名無しさん2011/11/06(日) 23:04:55.18
>>33に追加条件です。
多倍長整数を使ってください。
38 :デフォルトの名無しさん2011/11/06(日) 23:59:08.37
>>33
大してテストしてないので、十分検証してから提出してくださいな
http://ideone.com/VjhNB
46 :デフォルトの名無しさん2011/11/07(月) 00:38:19.55
>>33
#include <stdio.h>

int main(void)
{
int i, j, m, n, d, c, a[10000] = {1};

scanf("%d", &m);
scanf("%d", &n);

for(i = d = 0; i < n; i++) {
for(j = c = 0; j <= d; j++) {
a[j] = a[j] * m + c;
if(a[j] >= 10000) {
c = a[j] / 10000;
a[j] %= 10000;
}
else c = 0;
}
if(c) a[++d] = c;
}

printf("%d", a[d]);
while(--d >= 0) printf("%04d", a[d]);

return 0;
}
49 : ◆QZaw55cn4c 2011/11/07(月) 00:51:17.27
>>33
http://hibari.2ch.net/test/read.cgi/tech/1313183984/22
さすがに、10万ビットにもなると遅くて遅くて‥‥‥。
乗算ルーチンにて、乗数を上位ビットから調べているのですが、これを下位ビットから調べるようにすれば小さい数字の場合はかなりましになるかもしれません。
53 :デフォルトの名無しさん2011/11/07(月) 02:08:39.97
>>49
こんなのろいコードを提出したらさすがに怒られるだろ。
Nの値に応じてどれだけの値を計算できるか、どのぐらいの計算量が発生するか
考えた方がいい。
54 : ◆QZaw55cn4c 2011/11/07(月) 02:33:54.72
>>53
確かに >>49 は失敗作。
題意を満たすためには、15万ビット×32ビット:Ο(N)の演算でよかったところを、あらかじめ作成していた 15万 x 15万ビット:Ο(N^2) の演算器をひっつけただけの構造ですから‥‥‥。
55 :デフォルトの名無しさん2011/11/07(月) 03:19:13.43
>>54
なるほど、素晴らしいですね。今後もそちらのスレだけで頑張ってください。こちらには来ないでください。迷惑です。
67 :デフォルトの名無しさん2011/11/07(月) 18:49:56.20
>>33
10000^10000 一秒以内ででるのがでけた
http://codepad.org/kWVLtEjL
71 :デフォルトの名無しさん2011/11/07(月) 19:36:41.07
>>67
>>46の方が速くないか?
72 :デフォルトの名無しさん2011/11/07(月) 19:51:44.14
>>71
確かに >>46 の方が早い
75 :デフォルトの名無しさん2011/11/07(月) 20:55:38.59
>>71
実測してみた
出力先をすべてファイルに変更しループの回数は
void sub1() {
mpz_t a;
mpz_init_set_ui(a, 10000);
mpz_pow_ui(a, a, 10000);
mpz_out_str(fp1, 10, a);
}
が100ms前後になるぐらいの回数に調整

gmp : 103 ms
>>64 : 5856 ms
>>67 : 19211 ms
76 :デフォルトの名無しさん2011/11/07(月) 20:57:13.03
× >>64 : 5856 ms
○ >>46 : 5856 ms
77 :デフォルトの名無しさん2011/11/07(月) 21:09:40.53
>>75
コンパイラとコンパイルオプションはどんなん?
78 :デフォルトの名無しさん2011/11/07(月) 21:13:53.41
>>77
-O2付け忘れてた
cygwin gcc-4.5.3
gcc -O2 main.c -lgmp -lwinmm
gmp 101 ms
>>46 1976 ms
>>67 7105 ms

vc9 オプションはデフォ
mpir 189 ms
>>46 1978 ms
>>67 7432 ms
79 :デフォルトの名無しさん2011/11/07(月) 21:19:23.78
>>78

gmp はえー
82 :デフォルトの名無しさん2011/11/07(月) 23:02:02.44
>>79
そりゃー10000乗を素直に10000回のかけ算でやるコードとでは差はでかいかと。
とりあえずバイナリー法というやつを使えばいいんじゃないでしょうか。
36 :デフォルトの名無しさん2011/11/06(日) 23:20:21.13
[1] 授業単元:C言語
[2] 問題文:整数型の要素を最大20個格納できる配列を宣言し,先頭から10個分には2を,
後半の10個分には3を格納せよ。正しく格納されたことを出力する必要があるが,
出力する際には2を10個分空白区切りで出力し,改行した後に3を10個分空白区切りで出力すること。
[3] 環境
 [3.1] OS: Win
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 11月7日

よろしくお願いします
37 :デフォルトの名無しさん2011/11/06(日) 23:56:59.99
>>36
#include <stdio.h>
int main()
{
int a[20];
int i;
for (i = 0; i < 10; i++) {
a[i] = 2;
}
for (; i < 20; i++) {
a[i] = 3;
}
for (i = 0; i < 20; i++) {
printf("%d%c", a[i], ((i % 10) == 9)? '\n': ' ');
}
return 0;
}
39 :デフォルトの名無しさん2011/11/07(月) 00:03:17.05
/*>>36*/
#include <stdio.h>

int main(void)
{
  int a[20];
  int i;

  for (i = 0; i < 20; i++)
    a[i] = i / 10 + 2;

  for (i = 0; i < 20; i++)
    printf("%d%c", a[i], ((i + 1) % 10) ? ' ' : '\n');

  return 0;
}
40 :デフォルトの名無しさん2011/11/07(月) 00:06:25.03
>>36

#include <stdio.h>

void disp(int *a,int l)
{
 while(l--) printf("%d ",*a++);
 printf("\n");
}

int main(void)
{
 int array[20]={2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3};
 disp(array ,10);
 disp(array+10,10);

 return(1);
}
41 :デフォルトの名無しさん2011/11/07(月) 00:14:19.39
/*>>36*/
#include <stdio.h>
main(i){int a[20];for(--i;i<20;a[i]=i/10+2,printf("%d%c",a[i],((i+1)%10)?' ':'\n'),i++);}
42 :デフォルトの名無しさん2011/11/07(月) 00:23:22.99
ちょっと縮んだ
/*>>36*/
#include <stdio.h>
main(i){int a[20];for(i=0;i<20;a[i]=i/10+2,printf("%d%c",a[i],' '-(i==9)*22),i++);}
43 :デフォルトの名無しさん2011/11/07(月) 00:28:04.80
>>40
ちょw
絶対先生に合格もらえないだろwww
44 :デフォルトの名無しさん2011/11/07(月) 00:33:44.22
さらに縮んだ
100byte切れない
/*>>36*/
#include <stdio.h>
main(i){int a[20];for(i=0;i<20;a[i]=i/10+2,printf("%d \0%d\n"+(i++==9)*4,a[i]));}
45 :デフォルトの名無しさん2011/11/07(月) 00:37:32.98
と思ったら切れた
/*>>36*/
#include <stdio.h>
main(i){int a[20];for(i=0;i<20;printf("%d \0%d\n"+(i++==9)*4,a[i]=i/10+2));}
47 :デフォルトの名無しさん2011/11/07(月) 00:46:54.54
>>36
#include<stdio.h>

int main(void)
{
  int a[20];
  int i;

  for(i = 0; i < 20; i++)
  {
    if(i<10)
    {
      a[i] = 2;
      printf("%d ",a[i]);

      if(i == 9)
      {
        printf("\n");
      }
    }
    else
    {
      a[i] = 3;
      printf("%d ",a[i]);
    }//3を出力した後に改行しろとは書いてないと言い訳してみる
  }

  return 0;
}
48 :デフォルトの名無しさん2011/11/07(月) 00:49:04.53
>>44
i,a[20];main(){for(;i<20;i++)printf(i==9?"%d\n":"%d ",a[i]=i/10+2);}
50 :442011/11/07(月) 01:09:25.87
>>48
素晴らしい
51 :デフォルトの名無しさん2011/11/07(月) 01:15:25.79
>>48
for文の中に入れたら少し縮んだ、連騰ゴメン、これで最後です
#include <stdio.h>
i,a[20];main(){for(;i<20;printf(i++==9?"%d\n":"%d ",a[i]=i/10+2));}
56 :デフォルトの名無しさん2011/11/07(月) 03:31:21.55
>43の言ってる事が判らん
誰か解説よろ
57 :デフォルトの名無しさん2011/11/07(月) 03:40:28.06
>>56
> 先頭から10個分には2を,
> 後半の10個分には3を格納せよ。正しく格納されたことを出力する必要が
58 :デフォルトの名無しさん2011/11/07(月) 07:00:47.55
>>56
20個の配列を宣言してから値を入れないとダメだと思うんだが・・・
宣言と同時に初期化してたら、先生から一本取ることは出来るかもだが、まず怒られる罠w
まあ、問題文も悪いんだが
73 :デフォルトの名無しさん2011/11/07(月) 20:20:09.42
>>57-58
初期化したらあかんのかw
まあ…ありがとう。
74 :デフォルトの名無しさん2011/11/07(月) 20:32:58.24
>>73
問題文をよく読めばわかるが、この問題で生徒に学ばせたいことは、ループによる配列の初期化と配列の内容を表示する際、簡単な制御をさせるのが目的。
問題文の要素数が少なすぎるんだよ。
せめて100個とかにすればループで初期化せざるを得ないのに、中途半端な数だから。
59 :デフォルトの名無しさん2011/11/07(月) 15:05:22.39
[1] 授業単元:計算機アルゴリズム?
[2] 問題文(含コード&リンク):
設問1-1
プログラム例7.3.1をswitch文を使わずにif文、else if文を使うプログラムに変更しなさい。
変数xの値をキーボードから入力するように機能変更しなさい。
プログラム例7.3.1
ttp://www.dotup.org/uploda/www.dotup.org2233167.txt.html
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2011年11月11日8:00まで]
[5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文
            繰り返し処理for文、繰り返し処理for文による総和の計算、配列変数
            条件分岐if文、要素番号idx使用の書換、データの入れ替え
            条件分岐・論理演算子を用いたif文の条件、if文、else if文
            switch文は習いました。
宜しくお願いします。
65 :デフォルトの名無しさん 2011/11/07(月) 17:58:48.63
>>59
#include <stdio.h>

int main(void)
{
int x, z;
scanf("%d",&x);
z= x % 2;
if(z == 0)
printf("x= %d は偶数です.\n",x);
else if(z == 1)
printf("x= %dは奇数です.\n",x);
else
printf("xは負の数である可能性があります.\n");

return 0;
}

125 :デフォルトの名無しさん2011/11/08(火) 23:54:51.28
>>65
有難う御座います
60 :デフォルトの名無しさん2011/11/07(月) 16:21:50.02
[1]
以下の2*2行列x, yの積 x*yを計算し、その結果を表示するプログラムを作成せよ。


x= ( 1 2 )
4 5

y= ( 1 5 )
5 3



[2]
2つの3成分ベクトル a=(3.0, 2.0, 1.0) , b=(-2.0, 1.0, 1.0)を double型配列に格納し、aとbの内積を計算するプログラムを作成せよ。


すみませんが、わからなかったのでお願いします。
61 :602011/11/07(月) 16:28:25.00
すみません。
>>60の[1]ですが、2行2列の行列でx11=1, x12=2, x21=4, x22=5で、
y11=1, y12=5, y21=5, y22=3です。
ややこしくなってしまいすみません。よろしくお願いします。
63 :デフォルトの名無しさん2011/11/07(月) 16:51:41.30
>>61

すみません。不注意でした。
64 :デフォルトの名無しさん2011/11/07(月) 17:32:34.19
66 :デフォルトの名無しさん2011/11/07(月) 18:25:59.24
>>64
ありがとうございました。
68 :デフォルトの名無しさん2011/11/07(月) 19:12:47.49
[1] 授業単元:プログラミング入門
[2] 問題文:整数型の要素を最大10個格納できる配列を宣言する。
添え字が偶数の要素として2、添え字が奇数の要素として3を格納し、
2 3 2 3 2 3 2 3 2 3の形式で出力せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 11月8日

添え字の判定がよくわかりません。
どなたかよろしくお願いします。
69 :デフォルトの名無しさん 2011/11/07(月) 19:27:06.60
>>68
#include <stdio.h>

int main()
{
int ary[10]={0};
int i,temp=0;
for(i = 0; i<(sizeof(ary)/sizeof(int));i++){
temp = i%2;
if(temp == 0)
ary[i] = 2;
else if(temp == 1)
ary[i] = 3;
}
for(i = 0; i<(sizeof(ary)/sizeof(int));i++){
printf("%d ",ary[i]);
}
putchar('\n');
return 0;
}
70 :デフォルトの名無しさん2011/11/07(月) 19:30:49.53
>>68
#include <stdio.h>

int main(void)
{
int i, j, a[10];

for(i = 0, j = 2; i < 10; i++, j ^= 1) a[i] = j;

for(i = 0; i < 10; i++) printf("%d ", a[i]);

return 0;
}
80 :デフォルトの名無しさん2011/11/07(月) 21:42:51.08
>>69-70
作成ありがとうございました
助かりました
81 :デフォルトの名無しさん2011/11/07(月) 22:57:00.18
>>68
i,a[10];main(){for(;i<10;printf("%d ",a[i++]=2|1&i));}
87 :デフォルトの名無しさん2011/11/07(月) 23:56:00.76
>>81
iの初期化忘れとる。
88 :デフォルトの名無しさん2011/11/08(火) 00:21:01.16
>>87
iはグローバル変数だから0で初期化されてる
84 :デフォルトの名無しさん2011/11/07(月) 23:30:14.75
[1] 授業単元:C言語
[2] 問題文:10個の要素が格納できる配列を2つ宣言し、それぞれ任意の整数で初期化せよ。
その後、この2つの配列の中身を入れ替えよ。
[3] 環境
 [3.1] OS: Win
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 11月8日12時

代入、参照、if(else)、for、配列は習いました。
x[10] = {1, 2, (ry};で初期化した後どうやって入れ替えたらいいか分かりません。
よろしくお願いします。
85 :デフォルトの名無しさん2011/11/07(月) 23:37:06.05
86 :デフォルトの名無しさん 2011/11/07(月) 23:41:50.83
>>84
#include <string.h>
void SwapAry10(int *Sorc1,int *Sorc2)
{
int temp[10]={0};
memcpy(&temp,Sorc1,sizeof(int)*10);
memcpy(Sorc1,Sorc2,sizeof(int)*10);
memcpy(Sorc2,&temp,sizeof(int)*10);
}
99 :デフォルトの名無しさん2011/11/08(火) 14:40:20.06
>>85-86
84です、助かりました。ありがとうございました!
89 :デフォルトの名無しさん2011/11/08(火) 02:42:42.31
>88
そりゃコンパイラ依存だな
90 :デフォルトの名無しさん2011/11/08(火) 02:44:51.27
>>89
いつの時代の人間だよw
91 : ◆QZaw55cn4c 2011/11/08(火) 02:49:40.18
>>89
K&R1の昔からstatic/extern な変数は 0 で初期化と決まっています。
92 :デフォルトの名無しさん2011/11/08(火) 05:04:44.32
[1] 授業単元:C言語
[2] 問題文:ttp://www1.axfc.net/uploader/Sc/so/290413
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2011年11月08日18:00まで
[5] その他の制限:あまり高度な記述をしないでいただけると有難いです
         その他の制限は問題文中にあるものだけです
         よろしくお願いします
93 :デフォルトの名無しさん2011/11/08(火) 07:45:55.98
94 :デフォルトの名無しさん2011/11/08(火) 08:36:55.80
>>93
ありがとうございます、助かりました
95 :デフォルトの名無しさん2011/11/08(火) 11:50:56.32
[1] 授業単元:C言語
[2] 問題文:入力した文字列aから交互に一文字ずつ抜き出し、二つの文字列b,cとして出力するプログラムを書け

文字列a:あいうえおかきくけこ
文字列b:あうおきけ
文字列c:いえかくこ
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2011年11月9日9:00まで
[5] その他の制限:特になし
97 :デフォルトの名無しさん2011/11/08(火) 12:34:16.08
>>95
MinGW 4.5.2で確認した
ttp://ideone.com/2rukX
けど課題的にcharでいい気がする・・・
98 :デフォルトの名無しさん2011/11/08(火) 13:19:12.92
>>95
全角、半角混じり対応
http://ideone.com/iB837
100 :デフォルトの名無しさん2011/11/08(火) 15:21:19.44
[1] 授業単元:C言語
[2] 問題文
整数n(>=1)を入力し,nの約数の個数を返す関数int divisor(int)を用いてnが素数かどう
かを判定し,その結果を画面表示するプログラムを作成せよ.
[3] 環境
[3.1] OS:Linux 5.2
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2011年11月14日13:00まで
[5] その他の制限:特にありません。宜しくお願いします。
 
102 :デフォルトの名無しさん2011/11/08(火) 15:58:53.12
[1] プログラミング実習応用
[2] √a(ただしaは正の実数)の近似値を求めて表示するプログラムを作成せよ。
  X(n)=1/2{X(n-1)+a/X(n-1)},X(0)=1.0 ()の文字は右下の文字。
  ・nは整数型、X(n)は実数型(float or double) ・aの値はキーボードから入力
  ・再起呼び出しによる方法、逐次的に計算する方法のいずれでもよい
[3] 環境
 [3.1] W7
 [3.2] Visual C++ 2010 Express
 [3.3] どちらでも可
[4] 2011年11月8日22:00
[5] 1.main() 以外の関数を少なくとも一つ作成して使用する
2.#include <math.h> を入れない
3.sqrt(), pow() 関数を使用しない
4.繰り返し回数 n の値は、次のいずれかの方法で決定する
A. n=20
B. xnは十分真の値に近く、かつなるべく小さいnの値
Bの場合はその根拠(実験結果や考察内容など)も示すこと。内容によってはボーナス加点する。例えば下記のような方法があるが、これに限定されることなく、他の方法でもよい
例: いくつかのaの値に対して、nを増加させながらxnの値を表示する実験を行う

よろしくお願いします。
103 :デフォルトの名無しさん2011/11/08(火) 16:18:09.76
>>102
#include <stdio.h>

double mysqrt(double a, int n)
{
double xn, xn_1;
int i;

xn=1.0;
for(i=0;i<n;i++)
{
xn_1=xn;
xn=1.0/2.0*(xn_1+a/xn_1);
}
return xn;
}

int main(void)
{
double a;

printf("Input a : ");
scanf("%lf", &a);
printf("%f\n", mysqrt(a, 20));
return 0;
}
104 :デフォルトの名無しさん2011/11/08(火) 17:03:20.99
>>102 再帰判
#include <stdio.h>

double X(double a, int n)
{
if (n < 1)
return 1.0;
return 0.5 * (X(a, n - 1) + a / X(a, n - 1));
}

int main(void)
{
int i;
double a;
printf("input a: ");
scanf("%lf", &a);
for (i = 1; i <= 20; i++) {
printf("X(%d):%f\n", i, X(a, i));
}
return 0;
107 :デフォルトの名無しさん2011/11/08(火) 17:24:55.84
108 :デフォルトの名無しさん2011/11/08(火) 17:42:51.30
>>103-104>>107
ありがとうございます
105 :デフォルトの名無しさん2011/11/08(火) 17:06:32.94
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
問題1 プリントの線形合同法により乱数を作って,200 個の値を出力しなさい。
問題2 プリントのラグ付きフィボナッチ法により乱数を作って,200 個の値を出力しなさ
い。ただし、x[0]~x[31] は、線形合同法により初期化する
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11/9 6:00
よろしくお願いします
106 :デフォルトの名無しさん2011/11/08(火) 17:09:27.36
>>105
プリントってなんぞ?
109 :デフォルトの名無しさん2011/11/08(火) 18:25:28.37
>>105
プリントの内容か、画像プリーズ。
112 :デフォルトの名無しさん2011/11/08(火) 20:19:13.11
>>105
こんなんでいい?
http://codepad.org/O4RrPX0Q
113 :デフォルトの名無しさん2011/11/08(火) 20:21:29.84
x[]はフィボナッチ法のパラメータと関係しているんだろうな
114 :デフォルトの名無しさん2011/11/08(火) 21:06:23.44
[1] 授業単元: c言語
[2] 問題文
main関数の中で char cs[] [6] = {"Turbo","NA","DOHC"};
と配列cs が設定されている 文字列を逆順にし大文字の英字を小文字に変換させ表示させるプログラム
例st[0] ==>" obrut のような感じで
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11:9 19時まで
[5] その他の制限: ポインタは無しで
よろしくおねがいします
115 :デフォルトの名無しさん2011/11/08(火) 21:21:37.29
>>114
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main(void)
{
char cs[][6] = {"Turbo", "NA", "DOHC"};
const int N = sizeof cs / sizeof cs[0];
int i, j;
for (i = 0; i < N; ++i) {
printf("cs[%d] ==> \"", i);
for (j = strlen(cs[i]) - 1; 0 <= j; --j) {
putchar(tolower(cs[i][j]));
}
printf("\"\n");
}
return 0;
}
133 :デフォルトの名無しさん2011/11/09(水) 19:02:37.00
>>132
>>114,130
116 :1142011/11/08(火) 21:29:16.95
書き忘れがありました すみません
関数 void put reverse void put_toupper put_strary を使ったのをお願いします
117 :デフォルトの名無しさん2011/11/08(火) 21:41:51.93
小文字に変換させるのに、toupperなの?
129 :1142011/11/09(水) 17:27:47.66
>>117 指摘ありがとうございます 
tolowerでしたのでこちらでおねがいします 
期限は今日中までにしますのでよろしくです
130 :デフォルトの名無しさん2011/11/09(水) 18:00:00.64
>>114 >>116 >>129
http://ideone.com/wmJKd
131 :1142011/11/09(水) 18:30:24.45
>>130
ありがとうございます
118 :デフォルトの名無しさん2011/11/08(火) 22:04:01.95
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
配列の中の文字列にいくつ単語が出てきたかをカウントする
例 a[]="バナナ リンゴ スイカ バナナ"
バナナ 2回
リンゴ 1回
スイカ 1回
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:指定なし
 [3.3] 言語:C言語
[4] 期限: 11/9
[5] その他の制限: 特に無いです
よろしくお願いします
121 :デフォルトの名無しさん2011/11/08(火) 22:49:00.35
122 :デフォルトの名無しさん2011/11/08(火) 23:05:06.04
>>118
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tag_wordlist_t{
char *word;
int count;
struct tag_wordlist_t *next;
}wordlist_t;
int main(void){
char a[]="バナナ リンゴ スイカ バナナ", *p, buf[100+1];
int n;
wordlist_t *first=NULL, *last=NULL, *list_new, *it;
for(p=a;sscanf(p, "%100s%n", buf, &n)>=1;p+=n){
for(it=first;it;it=it->next){
if(strcmp(it->word, buf)==0){
it->count++;
break;
}
}
if(it==NULL){
list_new=malloc(sizeof(wordlist_t));
list_new->word=strdup(buf);
list_new->count=1;
list_new->next=NULL;
if(last) last=last->next=list_new;
else first=last=list_new;
}
}
for(it=first;it;it=it->next) printf("%s %d\n", it->word, it->count);
return 0;
}
119 :デフォルトの名無しさん2011/11/08(火) 22:20:04.78
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
奇数で初期化した配列を動的に確保する関数
書式
int *oddalloc(size_t n);
動作
長さnのintの配列をmalloc()で確保し、最初のn個の正の奇数で初期化する。
返り値
確保した配列の先頭を指すポインタを返す。 確保できなかった場合はNULLを返す。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限: 関数を使ってください
できれば、詳しい解説もほしいです(><)
120 :デフォルトの名無しさん2011/11/08(火) 22:39:19.50
>>119
int *oddalloc(size_t n)
{
int *p;
size_t i;
p = (int *) malloc(sizeof(int) * n);
if (p)
for (i = 0; i < n; i++)
p[i] = 2 * i + 1;
return p;
}
123 :デフォルトの名無しさん2011/11/08(火) 23:09:44.76
俺>>120じゃないけど詳しい解説を追加

/* size_tは符号無しの整数型、Cなら元を辿るとただのunsigned intだけど
長ったらしいし符号無しの標準として使えるように定義されてる、
正の整数を使うのが分かってる場合はsize_tを使う場合が多い、
また、コードへの意味合いとしても役立つ、
個数という意味で名前に n を使ってるからintでいいじゃん、最大値超えるデータも扱わないし、
なんて声もたまにあるが、型に意味を持たせるのも非常に大事 */
int *oddalloc(size_t n)
{
  int *p;
  size_t i;
  p = (int *) malloc(sizeof(int) * n);
  if (p)
    for (i = 0; i < n; i++)
      p[i] = 2 * i + 1;
  /* malloc()関数は成功すると確保した配列の先頭アドレスを返すが、失敗するとNULLを返す、
    配列への代入は失敗時は通らないので問題ない、
    またコードの美しさの点でも分岐が少ない方が良い事からこのような書き方になってる、と思う。 */
  return p;
}
124 :デフォルトの名無しさん2011/11/08(火) 23:11:57.79
>>123
もっとよく調べるんだ
126 :デフォルトの名無しさん2011/11/09(水) 07:36:40.36
どなたかお願いします。

[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク): 与えられた任意の長さのアルファベットの文字列(ただし
重複する文字は含まないとする)に対して、文字を任意の順番に入れ替えてできる
文字列のパターンをすべて出力する関数permute()を作成せよ。

例:
permute("ABC");
ABC ACB BAC BCA CAB CBA

[3] 環境
 [3.1] OS:Mac OS X
 [3.2] コンパイラ名とバージョン:gcc 4.2.1
 [3.3] 言語:C
[4] 期限:不明
[5] その他の制限:
127 :デフォルトの名無しさん2011/11/09(水) 10:18:43.25
>>126
ttp://codepad.org/281U66WI
もう少しなんとかなりそうな気はするんだが....
128 :デフォルトの名無しさん2011/11/09(水) 15:38:27.96
169 :1262011/11/10(木) 22:50:15.11
>>127 >>128 さん、ありがとうございます。しかしこんなのすぐに思いつけるなんて
すごいです。過去の経験からコードのパターンのいろんな引き出しをお持ちなのか、
あるいはいきなりできてしまうものなのか...

で、一応自分に出された課題なのでw アルゴリズムを理解する努力をしてみましたw

>>127さんのは、順列組み合わせの列挙を再帰で実現する感じですかね? 既に選択した
文字を記録する配列を保持しておくと... なるほど。

>>128さんのは、進数と桁数がある値(この場合はどちらも入力した文字列の長さ)の
数字を網羅するループで、全ての桁の数が異なる場合出力する、みたいな感じですかね?
ただ、各桁の3乗の和? みたいのを比較してなぜうまくいくのかよくわからないのですが...
もしかしてこれって数学的な定理かですか? 例えば
x, y, zはそれぞれ 0,1,2のどれかで互いに異なる <=> x^3+y^3+z^3 = 0^3+1^3+2^3
みたいな?
172 :デフォルトの名無しさん2011/11/10(木) 23:09:42.17
>>169
2乗和だと、例えば05と34とが互いに区別不可。
3乗和なら、少なくとも9桁内で目的の数値間で区別出来る。
178 :デフォルトの名無しさん2011/11/11(金) 03:30:35.12
>>172
そうですかー。興味深いですね。
もしかして楕円曲線上の整数解がどうたらとかと関係あるのかなあ。
132 :デフォルトの名無しさん2011/11/09(水) 18:50:26.83
[1] 授業単元:プログラミング演習 2
[2] 問題文(含コード&リンク)
main関数の中で
char cs[] [6] = {"Turbo", "NA", "DOHC"};
と配列csが初期設定されています。このとき
$ gcc -o report3 report3.c
$ ./report3
st[0] ==> "obrut"
st[1] ==>"an"
st[2] ==>"chod"
と画面に表示するCプログラムreport3.cを書いてください。
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:11月9日(出来れば早めにお願いします)
よろしくお願いします。
134 :デフォルトの名無しさん2011/11/10(木) 00:20:48.60
[2] 問題文(含コード&リンク):
1:キーボードから自然数 m と n を読み込む. 2:0 以上 1 未満の一様乱数 n 個の平均値を計算して、実行例ように表示. 3:この 2:の操作を m 回繰り返す.
実行例
> ./ex06-3
繰り返し回数を入力: 10
乱数の個数を入力: 100
回 平均
1 0.509034
2 0.488603
3 0.485044
4 0.473806
5 0.503660
6 0.519470
7 0.477955
8 0.536236
9 0.516652
10 0.467380
>
この動作をするプログラムを作成せよ。乱数は疑似乱数発生関数 drand48 を用いる.この関数は呼び出すたびにdrand48() を 3 回呼び出すと,drand48() の生成した三つの乱数がそれぞれ変数 x, y, z に格納される.
double x, y, z; x = drand48(); y = drand48(); z = drand48();
この関数を用いるプログラムは,冒頭に #include <stdlib.h> と記述
[3] 環境
 [3.1] OS: Mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 2011年11月14日
[5] その他の制限:for文while文の範囲です。
135 :デフォルトの名無しさん2011/11/10(木) 00:26:24.28
[2] 問題文(含コード&リンク):
漸化式を考える.x_n+1 = (x_n + a / x_n) / 2
初項 x_0 = a
double 型変数 xn と xn1 を用意する.キーボードから正の実数 a と e を読み込む.初項 a の値を変数 xn に代入し,実行例のように 0 回目の繰り返しの途中経過を指数形式で小数点以下 16 桁まで表示する.漸化式に従って xn の次項を求め,
その値を変数 xn1 に代入する.x_n1 と x_n の差を調べ,漸化式が収束したかどうかを判定する.x_n1 と x_n の差の絶対値が e 以上であれば,漸化式はまだ収束していないと考える.
この場合には,x_n1 の値を x_n に代入してから以下の実行例のように繰り返しの途中経過を表示する.漸化式に従って x_n の次項を求め,その値を変数 x_n1 に代入し,5. を繰り返す.
x_n1 と x_n の差の絶対値が e よりも小さければ,漸化式は収束したものとみなす.この場合には xn1 と sqrt(a) を表示する.
実行例
> gcc -o ex06-4 ex06-4.c -lm
> ./ex06-4
正の実数を入力: 1.234567890
解の精度を入力: 1.0e-15
回 近似値
0 1.2345678899999999e+00
1 1.1172839450000001e+00
2 1.1111281580953725e+00
3 1.1111111061864010e+00
4 1.1111111060555556e+00
5 1.1111111060555556e+00
sqrt 1.1111111060555554e+00
>
この動作をするプログラムを作成せよ
[3] 環境
 [3.1] OS: Mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年11月14日
[5] その他の制限:for文while文の範囲です。
136 :デフォルトの名無しさん2011/11/10(木) 00:29:12.30
[1] 授業単元:基礎プロ
[2] 問題文(含コード&リンク):
整数型の変数 i の値を 1 から k まで順に変化させ,以下を繰り返す.
n に i の値を代入する.
n が偶数のときは n を 2 で割った値を n に代入する.
n が奇数のときは n を 3 倍して 1 を加えた値を n に代入する.
n の値が 1 になるまで b. の操作を繰り返す.
i ごとに繰り返した回数を以下の実行例のように出力する.
実行例
>./extra06-2
自然数を入力: 4
1: 0
2: 1
3: 7
4: 2
>
この動作をするプログラムを作成せよ
[3] 環境
 [3.1] OS:Mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年11月14日
[5] その他の制限:for文while文の範囲です。
138 :デフォルトの名無しさん2011/11/10(木) 00:52:43.14
>>136
#include <stdio.h>

int main(void)
{
int i, j, k, n;

printf("自然数を入力:");
scanf("%d", &k);

for(i = 1; i <= k; i++) {
for(j = 0, n = i; n != 1; j++) n = n & 1 ? n * 3 + 1 : n >> 1;
printf("%d: %d\n", i, j);
}

return 0;
}
137 :デフォルトの名無しさん2011/11/10(木) 00:30:18.39
[1] 授業単元:基礎プロ
[2] 問題文(含コード&リンク):
キーボードから自然数 n を読み込む.
読み込んだ自然数 n の階乗を計算する.
計算結果を以下の実行例のように出力する.

実行例
>./extra06-1
自然数を入力: 5
5! = 1 x 2 x 3 x 4 x 5 = 120
>./extra06-1
自然数を入力: 6
6! = 1 x 2 x 3 x 4 x 5 x 6 = 720
>

この動作をするプログラムを作成せよ
[3] 環境
 [3.1] OS:Mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年11月14日
[5] その他の制限:for文while文の範囲です。


145 :デフォルトの名無しさん2011/11/10(木) 03:56:29.23
>>137
#include<stdio.h>
int main(void)
{
int n,i;
double ret=1;
printf("自然数を入力: ");
scanf("%i",&n);
printf("%d! = 1",n);
for (i=2 ; i<=n ; i++) {
ret *= i;
printf(" x %d",i);
}
printf(" = %-14.0lf¥n",ret);
return 0;
}
139 :デフォルトの名無しさん2011/11/10(木) 01:29:20.31
【質問テンプレ】
[1] 授業単元: 授業ではないのですが学校で使用するための勉強中
[2] 問題文(含コード&リンク):
////A.h////
class A{
private: int a;
public:void set();}

void A::set(){
A A1;
a = 1; }

////B.h//////
#include "A.h"
class B{
public:void get();}

void::get(){
ここで以前宣言したクラスAのA1のa=1を呼び出したいです。}

[3] 環境
 [3.1] OS: windows7
 [3.2] コンパイラ名とバージョン: visual c++ 2010?(無料のです)
 [3.3] 言語: c++
[4] 期限: 本日中
[5] その他の制限: 特になし(なるべく簡単でお願いします)
141 :デフォルトの名無しさん2011/11/10(木) 01:44:13.72
>>139
早乙女博士にゲッターを開発してもらう
142 :デフォルトの名無しさん2011/11/10(木) 02:12:44.48
>>141
class B内で
A A1;
A1.get();
ですか?
146 :デフォルトの名無しさん2011/11/10(木) 09:58:01.38
>>139
どういう誤解をしているのか理解できない
A1.a に値はセットされていないし、A1 自体 A.set() のスコープ内にしか存在しない
何を目指しているのか判らないのでどうすれば良いかも判らない
140 :デフォルトの名無しさん2011/11/10(木) 01:33:55.33
[1] 授業単元: Cプロ
[2] 問題文(含コード&リンク):
3行3列の行列aを入力後、余因子行列で行列値|a|を求める
[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:AM6時までに。
[5] 余因子行列でお願いします
143 :デフォルトの名無しさん2011/11/10(木) 02:28:31.10
>>140
#include <stdio.h>
int main(void){
int m[3][3], i, det;
for (i = 0; i < 3; i++) {
printf("a%d1 a%d2 a%d3 = ", i + 1, i + 1, i + 1);
scanf("%d %d %d", &m[i][0], &m[i][1], &m[i][2]);

det = m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1])
- m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0])
+ m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);
printf("%d", det);
}
return 0;
}
144 :1402011/11/10(木) 03:27:30.01
>>143
ありがとうございます
150 :1402011/11/10(木) 15:05:06.74
>>140の余因子行列の計算部分を、for文で可能でしょうか?
151 :デフォルトの名無しさん2011/11/10(木) 15:20:09.53
>>150

det = m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1])
- m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0])
+ m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);



for(det = m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1])
- m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0])
+ m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);0;);
152 :デフォルトの名無しさん2011/11/10(木) 15:31:36.45
>>140,150
#include <stdio.h>
int
main(void)
{
int m[3][3] = {}, i, det = 0;
for (i = 0; i < 3; i++) {
printf("a%d1 a%d2 a%d3 = ", i + 1, i + 1, i + 1);
scanf("%d %d %d", &m[i][0], &m[i][1], &m[i][2]);
}

for (i = 0; i < 3; i++)
det += m[0][i] * (m[1][(i + 1) % 3] * m[2][(i + 2) % 3] - m[1][(i + 2) % 3] * m[2][(i + 1) % 3]);
printf("%d¥n", det);

return 0;
}
153 :デフォルトの名無しさん2011/11/10(木) 15:38:47.45
>>140,150
こっちのほうが見やすいか。
#include <stdio.h>
int main(void){
int m[3][3] = {}, i, det = 0;
for (i = 0; i < 3; i++) {
printf("a%d1 a%d2 a%d3 = ", i + 1, i + 1, i + 1);
scanf("%d %d %d", &m[i][0], &m[i][1], &m[i][2]);
}
for (i = 0; i < 3; i++) {
det += m[0][i] * (m[1][(i + 1) % 3] * m[2][(i + 2) % 3]);
det -= m[0][i] * (m[1][(i + 2) % 3] * m[2][(i + 1) % 3]);
}
printf("%d¥n", det);
return 0;
}
164 :デフォルトの名無しさん2011/11/10(木) 20:55:05.20
>>151-153
ありがとうございました。助かりました。
147 :デフォルトの名無しさん2011/11/10(木) 14:19:07.55
1] 授業単元: Cプロ
[2] 問題文(含コード&リンク):文字列st の中に含まれる文字ch の個数(含まれて
いなければ0 とする)を返す関数
int str_chnum(const char st[], int ch)
を作成せよ.
以下の実行例のように,関数の動作を確認
できるmain 関数も作成して完成させよ
【実行例】文字列を入力してください:Koukka
検索する文字を入力してください:k
その文字は2 個含まれています。
(注意)】scanf で文字列を入力させた後にgetchar 関
数で文字を入力させたい場合,getchar で文字を入力
させる前に
scanf("%*c");
などとして,バッファに残った改行コードを読み捨て
ておく必要がある.

[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:AM7時までに。
[5] ポインタはなしでお願いします
148 :デフォルトの名無しさん2011/11/10(木) 14:42:59.75
149 :デフォルトの名無しさん2011/11/10(木) 14:44:24.11
>>147
前スレくらいにやったな

#include <stdio.h>
#include <string.h>
int str_chnum(const char *st,int ch){
int index=0, count=0;char *p = 0;
do{p = strchr(&st[index],ch);}while
(p&&(count++,index=p-st+1));return count;}
int main(void){char buf1[100];int buf2;
printf("文字列を入力してください:");fgets(buf1,100,stdin);putchar('\n');
printf("検索する文字を入力してください");buf2 = getc(stdin);putchar('\n');
printf("その文字は%d個含まれています。\n",str_chnum(buf1,buf2));
}
154 :デフォルトの名無しさん2011/11/10(木) 15:51:44.21
[1]
int型整数 x に対して、その3乗の値 x3 を返す関数 int cube(int x) を作成せよ。
そしてcubeを用いて、1から10までの整数の3乗値を出力するプログラムを作成せよ。


[2]
一つの行に、n個の “ “(空白)に続いてm個の “*”を順番に出力する関数 void putzs(int n, int m)を作成せよ。
更にこれを用いて no段のピラミッドを描くプログラムを作成せよ。


no=3の場合

*
***
*****




よろしくお願いします。
155 :デフォルトの名無しさん2011/11/10(木) 16:18:09.06
156 :デフォルトの名無しさん2011/11/10(木) 16:26:10.39
>>154
[1]
#include <iostream>
int cube(int x){return x*x*x;}
main(){for(int x=1;x<=10;x++){std::cout << cube(x) <<std::endl;}}

[2]
#include <string>
#include <iostream>
void putzs(int n,int m){n&&std::string s;s.append(n,' ');m&&s.append(m,'*');
std::cout << s << endl;}
main(){int no=3;for(int m=1;m<=no*2-1;m+=2){putzs(0,m);}}
157 : ◆SCJwtK.IhE 2011/11/10(木) 19:31:50.61
[1] 授業単元: 文字列
[2] 問題文(含コード&リンク):
char str[] = "Hello!\n";
と宣言している状態で、
printf(&str[i]);
(iは0〜8)のようにprintf関数を使用した際の&strは何を意味しているか
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c
[4] 期限:11/10 22:00までに
[5] その他の制限:出来るだけ具体的に
160 :デフォルトの名無しさん2011/11/10(木) 19:47:36.20
>>157
&str[8]は悪魔を召喚するコード
158 : ◆SCJwtK.IhE 2011/11/10(木) 19:34:41.53
[1] 授業単元:文字列
[2] 問題文(含コード&リンク):C言語プログラムにおける「文字列」の
実態は何か答えよ。

[4] 期限: 11/10 22:00
[5] その他の制限:具体的に
159 :デフォルトの名無しさん2011/11/10(木) 19:40:33.13
>>158
文字列
161 :デフォルトの名無しさん2011/11/10(木) 19:48:24.88
>>158
文字の配列
ってか、入門書に載ってるだろ
165 :デフォルトの名無しさん2011/11/10(木) 21:58:57.86
>>161
別に配列である必要もないだろ
166 :デフォルトの名無しさん2011/11/10(木) 22:10:13.85
>>165
教師の求めてる答えとしては、これが妥当だと思うが…
代わりに答えてくれろ
167 :デフォルトの名無しさん2011/11/10(木) 22:29:04.37
>>166
文字が連続したメモリ領域
203 :デフォルトの名無しさん2011/11/11(金) 13:18:35.09
>>202
>>158
ずっと宿題の話ですよ
162 : ◆SCJwtK.IhE 2011/11/10(木) 19:48:30.77
[1] 授業単元:文字列
[2] 問題文(含コード&リンク):
char str[] = "Hello!\n";
と宣言している状態で、
printf("Hello!\n");
printf("%s",str);
printf(str);
とprintf関数を使用した際の結果を、類推されるprintf関数の処理の流れに基づいて説明せよ。
(全て Hello! と出力された)

[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 今日中
[5] その他の制限:具体的に
163 :デフォルトの名無しさん2011/11/10(木) 19:51:40.13
>>162
マルチすると嫌われるぞ
170 :デフォルトの名無しさん2011/11/10(木) 22:55:06.72
>>162
「K&R第二版p.189可変引数リスト」の内容そのまんま答えればOK。
第二引数移行は可変引数として一括したバイト列として取得され、
第一引数の文字列内に現れる変換仕様に従って
1変数とみなされるバイトサイズとその型ごとに切り刻まれる。
取り出された値は文字に変換され、変換仕様と置換された後、
標準ストリームに出力される。

printf("Hello!\n");は第一引数のみなので
文字列がそのまま標準ストリームに出力される。

printf("%s",str);は第一引数の変換仕様%sにより
第二引数(以降)の最初のデータは終端文字を持つ文字の配列とみなされ、
文字列に変換され%sと置換された後、標準ストリームとやらないか。

printf(str);は str が第一引数であり、変換使用をふくまないため、
そのまま文字列として標準ストリームに出力されまみた。
207 :デフォルトの名無しさん2011/11/11(金) 13:33:16.96
>>205
>>157と>>162もセットで考えたら
NULL終端文字列についてで正解だろうな
168 :デフォルトの名無しさん2011/11/10(木) 22:39:09.86
1文字でも文字列だし、null 終端のことも。
179 :デフォルトの名無しさん2011/11/11(金) 11:15:00.50
>>168
電文なんかの固定長データに含まれる文字列は NULL 終端である必要も無い
NullTerminated strings は文字列の一種に過ぎない
180 :デフォルトの名無しさん2011/11/11(金) 11:21:41.78
>>179
設問は、
>C言語プログラムにおける「文字列」の実態は何か答えよ。
184 :デフォルトの名無しさん2011/11/11(金) 11:58:24.84
>>180
電文を扱うプログラム等では NULL 止めではない文字領域も文字列として扱ってるって話なんだけど?
185 :デフォルトの名無しさん2011/11/11(金) 12:03:54.18
>>184
標準関数が、電文の事を考慮して作ってあるなら、それでいいよ
187 :デフォルトの名無しさん2011/11/11(金) 12:06:41.67
>>180
Str255だってC言語プログラムにおける「文字列」だな
Null終端だけがCの文字列ってのは思い違いじゃね?
189 :デフォルトの名無しさん2011/11/11(金) 12:08:43.38
>>185
やっぱり思い違いだな
190 :デフォルトの名無しさん2011/11/11(金) 12:09:11.88
>>187

約束事を決めれば、どう言う形式でも文字列としては処理できるけど、

文字列を処理する標準関数で、そういうフォーマットを扱っているかどうかでしょ
192 :デフォルトの名無しさん2011/11/11(金) 12:14:12.73
>>190
面倒だからcharの配列でいんじゃね?
198 :デフォルトの名無しさん2011/11/11(金) 12:57:37.51
>>190
標準関数になんて束縛されないだろ
199 :デフォルトの名無しさん2011/11/11(金) 13:00:08.37
>>198
ここは宿題スレ
200 :デフォルトの名無しさん2011/11/11(金) 13:11:28.27
>>199
そんなこと関係ないぞ
201 :デフォルトの名無しさん2011/11/11(金) 13:13:31.92
>>199
てか、自分の思い違いを「世間ではそう教えてる」みたいな言い訳でごまかそうという方がおかしいだろ。
ちょっと齧ればNull終端じゃない文字列なんてあちこちのライブラリで使われてるぞ。
Null終端だけがCの文字列なんて教える講師はいないだろ。
206 :デフォルトの名無しさん2011/11/11(金) 13:26:08.38
>>204
>>180に言えよ。事の発端だろ。
171 :デフォルトの名無しさん2011/11/10(木) 23:04:43.34
そんな中途半端なことせずにJISなりISOなりの規格を参照しろ
173 :デフォルトの名無しさん2011/11/10(木) 23:13:52.22
>>171
JISのサイト、最新のAdobe Readerだと見られないんだもん。
あとは英語で書くしかない。俺は英語ぺらぺーラだけど三流大学の教授なんて
日本語もあやしかろ? つかどうせ教授じゃなくて臨時講師とか。ワロス
174 :デフォルトの名無しさん2011/11/11(金) 00:09:48.65
[1] 授業単元:文字列
[2] 問題文(含コード&リンク):
入力した時間と分を長針と短針で示す
アナログ時計を作れ。
[3] 環境
 [3.1] OS: windows7
 [3.2] コンパイラ名とバージョン: bcc5.11
 [3.3] 言語: c
[4] 期限: 11月14日
[5] その他の制限:windouwsAPIなどは使わずに、
普通のC言語でお願いします。
175 :デフォルトの名無しさん2011/11/11(金) 01:24:42.17
177 :デフォルトの名無しさん2011/11/11(金) 01:39:18.62
>>174
丸時計を50×50位のAAで出力?
214 :デフォルトの名無しさん2011/11/12(土) 00:15:58.15
215 :デフォルトの名無しさん2011/11/12(土) 00:36:41.54
>>214
ありがとうございます><
ところでどうして長針を@、短針を*にされたのですか?
217 :デフォルトの名無しさん2011/11/12(土) 00:41:38.89
>>215
その話を聞きたくば1000万円用意しろ
用意が出来たら写真うp!
218 :デフォルトの名無しさん2011/11/12(土) 00:44:00.91
>>217
嫌です(^q^)
176 :デフォルトの名無しさん2011/11/11(金) 01:33:44.98
>174

まともにやったら、すげー手間かかると思うのだが、なんか間違ってないか?
213 :デフォルトの名無しさん2011/11/12(土) 00:01:18.29
>>177
30×30くらいでお願いします><

>>176
間違ってませんよ
181 :デフォルトの名無しさん2011/11/11(金) 11:33:28.68
[1] 授業単元:
[2] 問題文(含コード&リンク):
ファジィ推論のプログラム
[3] 環境
 [3.1] OS: (Windows7 32bit)
 [3.2] コンパイラ名とバージョン: Ms Visual Web Developer 2010)
 [3.3] 言語: (C++)
[4] 期限: 無期限)
[5] その他の制限:

http://www.sist.ac.jp/~suganuma/cpp/3-bu/18-sho/18-sho.htm#e-18-5
こちらのプログラムをビルドしたら以下のエラーが出ました。

1>fz.obj : error LNK2019: 未解決の外部シンボル "public: __thiscall Fuzzy::~Fuzzy(void)" (??1Fuzzy@@QAE@XZ) が関数 _main で参照されました。
1>fz.obj : error LNK2019: 未解決の外部シンボル "public: __thiscall Fuzzy::Fuzzy(char *)" (??0Fuzzy@@QAE@PAD@Z) が関数 _main で参照されました。
1>C:\Users\2ch\Documents\Visual Studio 2010\Projects\fuzzy\Debug\fuzzy.exe : fatal error LNK1120: 外部参照 2 が未解決です。

main関数でエラーが出たのは分かるんですが・・・ソースは次レスにて
宜しくお願いします
191 :デフォルトの名無しさん2011/11/11(金) 12:12:39.97
>>181
コンストラクタとデストラクタをリンクしてないんだろ
193 :デフォルトの名無しさん2011/11/11(金) 12:21:28.44
>>181
VSにソースファイルをD&Dしてビルドしようとしていたのが原因だったみたいです。
ファイルをプロジェクトフォルダに移動したらエラーは解消しました。
レス有難う御座います。
194 :1812011/11/11(金) 12:24:39.86
申し訳ない・・・>>191さんでした。有難う御座います
195 :デフォルトの名無しさん2011/11/11(金) 12:24:52.22
>>193
どうでもいいけど、ここで聞く前に隣の人に聞くとかできなかったん?
196 :1812011/11/11(金) 12:34:51.56
>>195
質問できるような友人がいないんですよ・・・
察して下さい
197 :デフォルトの名無しさん2011/11/11(金) 12:46:35.54
>>196
C言語なら俺に聞け(入門編)Part 92
http://hibari.2ch.net/test/read.cgi/tech/1320933306/
182 :デフォルトの名無しさん2011/11/11(金) 11:37:19.47
#include <stdio.h>
#include <stdlib.h>
#include "fuzzy.h"

int main(int argc, char *argv[])
{
double *x, **xx, y; int i1, i2, n_d, n_val;
FILE *in, *out;
if (argc == 4) {Fuzzy fz(argv[1]);
in = fopen(argv[2], "r");
fscanf(in, "%*s %d %*s %d", &n_val, &n_d);
x = new double [n_val]; xx = new double * [n_val];
for (i1 = 0; i1 < n_val; i1++) {fscanf(in, "%*s");
xx[i1] = new double [n_d];
for (i2 = 0; i2 < n_d; i2++)
fscanf(in, "%lf", &xx[i1][i2]);}
fclose(in);
out = fopen(argv[3], "w");
for (i1 = 0; i1 < n_d; i1++) {for (i2 = 0; i2 < n_val; i2++) {
x[i2] = xx[i2][i1]; fprintf(out, "%f ", x[i2]);}
y = fz.Inf(x); // 推論
fprintf(out, "%f\n", y);}
fclose(out);}

else {printf("***error 入力データファイル名を指定して下さい\n");
exit(1);}
return 0;}
188 :デフォルトの名無しさん2011/11/11(金) 12:08:03.88
事故解決しました。
ソースファイルをプロジェクトフォルダ内に移動したところ
無事にビルド出来ました。
スレ汚しみません。
202 :デフォルトの名無しさん2011/11/11(金) 13:15:16.59
スレ違い。他所でやれ。
204 :デフォルトの名無しさん2011/11/11(金) 13:23:38.56
「思い」だけぶちまけられても質問者には迷惑。
結論と根拠を明示すればいいだけの事。
205 :デフォルトの名無しさん2011/11/11(金) 13:25:38.75
設問が大雑把過ぎるんだな。
「実態」という言葉の解釈で答えに幅が出る。
208 :デフォルトの名無しさん2011/11/11(金) 14:03:18.24
strncpy() は NULL 終端を前提としてないよ

問題が大雑把だし、講師がちゃんと理解してるんだろうかって思う
ちゃんと『実態』を理解してたらこんな設問しないだろ
209 :デフォルトの名無しさん2011/11/11(金) 14:11:44.99
試験問題というのは設問者が求めている答えは何かを探るものであって
気の利いた解答を考えるものではないって、ワンバーグちゃんがいってただろ^^

ここはナル文字終端を持つchar配列って答えとけばいいんだよ
そして心のなかで「設問がクソだなぁ、ああこの人に学んでも何もエルモのないんだろうなぁ。セントエルモ」
って思っときゃいーんだよ。
210 :デフォルトの名無しさん2011/11/11(金) 14:13:19.30
宿題スレは、出題者のレベルに合わせて解答すれば、100点。
211 :デフォルトの名無しさん2011/11/11(金) 14:16:13.58
[1] 授業単元:プログラミング入門
[2] 問題文:秒数を与えると,それが何日何時間何分何秒にあた
るかを計算する関数
calctime(long sec, int *dp, int *hp, int *mp,
int *sp);
を作成せよ.例えば
calctime(100000, &d, &h, &m, &s);
として呼び出すとd=1, h=3,m=46,s=40 となる
(100,000 秒=1 日3 時間46 分40 秒).以下の実行例の
ように,関数の動作を確認できるmain 関数も作成しろ
実行例.秒数を入力してください:100000
100000 秒= 1 日3 時間46 分40 秒
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 11月14日 18:00
[5] その他の制限:

216 :デフォルトの名無しさん2011/11/12(土) 00:39:19.40
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):sinカーブを縦に描画するプログラムを作れ。0度から360度までの範囲を描画し、
縦軸と横軸も描画すること。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gccなのは確かなのですが、具体的には分かりません
 [3.3] 言語: C
[4] 期限:2011年11月16日まで
[5]その他の制限:ポインタ使用不可
よろしくお願いします
219 :デフォルトの名無しさん2011/11/12(土) 01:13:37.71
>>216
main(){
puts("--*--");
puts(" | *");
puts("--*--");
puts("* | ");
puts("--*--");
}
222 :デフォルトの名無しさん 2011/11/12(土) 13:06:03.64
>>216
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
#define DEG_RAD(x) (((x)*PI)/(180))
int main()
{
double d;
const int p = 30;
double s;
puts(" --------------------------------------------");
for(d = 0; d<370;d+=10){
s = sin(DEG_RAD(d));
s *=10;
if(d<=180){
if(d == 0 || d == 180)
printf("%*c%*c%c\n",p,' ',(int)s,' ','*');
else
printf("%*c%c%*c%c\n",p,' ','|',(int)s,' ','*');
}else if(180 < d ){

s = fabs(s);
if(d == 360)
printf("%*c%*c%c\n",p-(int)s,' ',(int)s,' ','*');
else
printf("%*c%c%*c\n",p-(int)s,' ','*',(int)s,'|');
}

}
return 0;
}
223 :デフォルトの名無しさん2011/11/12(土) 13:49:23.38
>>222
ありがとうございます!
224 :デフォルトの名無しさん2011/11/12(土) 13:55:24.64
>>219
出題の条件は満たしてる
出題の不備を問う意味で提出するのは面白いかもしれない
220 :デフォルトの名無しさん2011/11/12(土) 04:47:04.02
1-3+5-7•••っていうのを20回繰り返すというプログラムを教えて下さい。
あれを20回繰り返すと答えは-20になります。それで式もちゃんと表示させなくては
いけないんです・・・つまり1-3+5-7•••=-20ってかんじです。出来れば<stdio.h>でfor
とifで組んでください。
225 :デフォルトの名無しさん2011/11/12(土) 16:30:41.41
依頼者が問題の条件を見落としているか、書き忘れていそうな気がする。
226 :デフォルトの名無しさん2011/11/12(土) 22:48:21.79
[1] 授業単元:アルゴリズム
[2] 問題文:
重複順列についてです。
A〜Gなどの7つ以上の要素から、6つ取り出して並べるときの、全ての組み合わせを出す。
例)AAAAAA,
AAAAAB,
AAAAAC,...
AAAABA,...
(実際に全て出さなくても、出すことができるコードが出来ていれば可)
              
[3] 環境
 [3.1] OS:windows7
 [3.2] コンパイラ名とバージョン:Visual C++ 2010 Express
 [3.3] 言語:どちらでも可
[4] 期限:11月16日
[5] その他の制限:特にありません。

問題文として文章があったわけではないので、説明が分かりにくい部分がありましたら申し訳ありません。
よろしくお願いします。
227 :デフォルトの名無しさん2011/11/12(土) 23:10:26.88
>>226
#include <iostream>
#include <string>

using namespace std;

const string X("ABCDEFG");
const size_t L = 6;

void rep_perm(string &s)
{
if (s.length() == L) {
cout << s << endl;
} else {
for (size_t i = 0; i < X.length(); ++i) {
s += X[i];
rep_perm(s);
s.erase(s.end() - 1);
}
}
}

int main()
{
string s;
rep_perm(s);
return 0;
}
228 :デフォルトの名無しさん2011/11/12(土) 23:27:00.58
>>226
#define PATT 7
#define KETA 6
int main()
{
int n = 0;
int a[KETA+1] ={0};
while (1) {
int i;
int x;
n++; x = n;
for (i=0;i<KETA+1;i++){
a[i] = x % PATT;
x -= a[i]; x /= PATT;
}
if (a[KETA] == 1) break;
for (i=KETA-1;i>=0;i--) printf("%c",'A' + a[i]);
printf("\n");
}
return 0;
}
229 :デフォルトの名無しさん2011/11/12(土) 23:53:04.81
>>226
#include <stdio.h>

int main(void)
{
int i;
char str[] = "AAAAAAA";

for( ; ; ) {
printf("%s\n", str);
for(i = sizeof str - 2; ; i--) {
if(++str[i] <= 'F') break;
str[i] = 'A';
if(i == 0) return 0;
}
}
}
236 :デフォルトの名無しさん2011/11/13(日) 05:27:45.69
>>226
#include <stdio.h>

int main(void)
{
int i, j, k, l, m, n;
char str[7] = {0};

for(i = 'A'; i <= 'G'; i++) {
str[0] = i;
for(j = 'A'; j <= 'G'; j++) {
str[1] = j;
for(k = 'A'; k <= 'G'; k++) {
str[2] = k;
for(l = 'A'; l <= 'G'; l++) {
str[3] = l;
for(m = 'A'; m <= 'G'; m++) {
str[4] = m;
for(n = 'A'; n <= 'G'; n++) {
str[5] = n;
printf("%s\n", str);
} } } } } }

return 0;
}
237 :デフォルトの名無しさん2011/11/13(日) 06:51:45.30
>>229
要素数と並べる数逆になってた

#include <stdio.h>

int main(void)
{
int i;
char str[] = "AAAAAA";

for( ; ; ) {
printf("%s\n", str);
for(i = sizeof str - 2; ; i--) {
if(++str[i] <= 'G') break;
str[i] = 'A';
if(i == 0) return 0;
}
}
}
238 :デフォルトの名無しさん2011/11/13(日) 07:00:14.93
>>226,236
どうせなら、
#include <stdio.h>

int main(void)
{
char str[7] = {0};

for(str[0] = 'A'; str[0] <= 'G'; str[0]++) {
for(str[1] = 'A'; str[1] <= 'G'; str[1]++) {
for(str[2] = 'A'; str[2] <= 'G'; str[2]++) {
for(str[3] = 'A'; str[3] <= 'G'; str[3]++) {
for(str[4] = 'A'; str[4] <= 'G'; str[4]++) {
for(str[5] = 'A'; str[5] <= 'G'; str[5]++) {
printf("%s¥n", str);
}}}}}}

return 0;
}
240 :デフォルトの名無しさん2011/11/13(日) 07:17:10.56
>>226
再帰で。
#include <stdio.h>

void func(char*s)
{
if(!*s) {
printf("%s¥n",s-6);
return;
}
for(*s='A'; *s<='G'; (*s)++)
func(s+1);
}

int main(void)
{
char s[]="AAAAAA";
func(s);
return 0;
}
243 :デフォルトの名無しさん2011/11/13(日) 08:03:51.59
>>226,241
これならOKか?
#include <stdio.h>

void func(char *s, int i)
{
static char x[20] = {};
char *p;

if (i < 6)
for (p = s; *p; p++) {
x[i] = *p;
func(s, i + 1);
}
else
printf("%s¥n", x);
}

int main(void){
char s[20];

printf("input = ");
scanf("%s", s);
func(s, 0);

return 0;
}
244 :2262011/11/13(日) 12:47:17.09
>>227,>>228,>>229,>>236,>>237,>>238,>>240,>>243
みなさんありがとうございます。

ちなみに、後付になってしまい申し訳ないのですが、
更にこれの結果をテキストファイルなどで、1パターン1行として
出力するにはどういったコードを追加すれば良いか、教えていたいてもよろしいでしょうか。
よろしくお願い致します。
245 :デフォルトの名無しさん2011/11/13(日) 12:49:14.33
>>244
このまま、出力をファイルにリダイレクト
248 :2262011/11/13(日) 19:51:56.70
>>245
出来ました。
ありがとうございました。
230 :デフォルトの名無しさん2011/11/13(日) 00:21:48.57
Boostのnext_combinationみたいに、
関数を呼び出す度に組み合わせを順に作り出す関数を設計して欲しい^o^
この関数、予めソートされた集合に対して適用すると、
ぐるっと一周した時点で戻り値が false となる。すごい^^
231 :デフォルトの名無しさん2011/11/13(日) 00:36:40.57
>>230
あるなら使えば?
233 :デフォルトの名無しさん2011/11/13(日) 01:41:45.83
このスレの住人程度には実装は無理。
っていうか、Boostライブラリの中身を見てさえ理解出来ない。
234 :デフォルトの名無しさん2011/11/13(日) 01:43:38.89
>>233
中身を見て絶望しろ
239 :デフォルトの名無しさん2011/11/13(日) 07:13:50.52
直接やると添え字の関係で誤差レベルだけどほんのちょっとだけ遅くなるかも
241 :デフォルトの名無しさん2011/11/13(日) 07:29:14.09
>A〜Gなどの7つ以上の要素から
などの
とある以上要素をどう入力するかの問題を含むのではないか。
242 :デフォルトの名無しさん2011/11/13(日) 07:55:47.24
>>241
どんな要素をだね。
246 :デフォルトの名無しさん2011/11/13(日) 14:09:41.63
[1] 授業単元:プログラミングと実習2
[2] 五目並べの石を並べる関数を作りる
条件
1.読み込み部分を関数化する。場所の指定は、行(row,大文字)、
列(column,小文字)の順として連続した半角アルファベットとする。
例:Aa↓,Gg↓(↓はEnter)とする。
読み込んだ結果はA〜Zが0〜25,a〜zが0〜25とする
 出力例Bg
row=1
columnp=6
3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン: Visual C++ 2008 Express
 [3.3] 言語:C言語
[4] 期限:11月15日
[5]その他の制限:アルファベットを整数値に変換して*rowp,*columnpに
        格納し*rowo,*columnpの値を評価するプルグラムを作る

どうかよろしくお願いします 
251 :デフォルトの名無しさん2011/11/14(月) 00:29:42.21
>>246
おまっとさんでした
http://codepad.org/4IS3H70G
252 :デフォルトの名無しさん2011/11/14(月) 00:32:39.29
>>251
[2]
258 :2462011/11/14(月) 05:02:04.57
>>251
大変参考になりました
ありがとうございます
247 :デフォルトの名無しさん2011/11/13(日) 19:19:06.60
>246
rowp, columnpってポインタにする必要ある?
249 :デフォルトの名無しさん2011/11/13(日) 20:18:11.15
>>247
そういう課題なんだろ
得てして、そういう制限された課題は急に難易度が上がりがち

253 :デフォルトの名無しさん2011/11/14(月) 01:45:16.38
[1] 授業単元:計算機アルゴリズム?
[2] 問題文(含コード&リンク):
設問1-1
変数iとポインタ変数p(「int i=8;int *p;p=&i;」のように宣言と代入する)に対し「printf("変数iの?は%X\n",p);printf("変数?の値は%d\n",*p);」を実行して値を表示するプログラムを作成しなさい。
但し「?」を適切な文字(列)に置換すること。ただし、%Xは16進数で表示を、%uは符号なし整数で表示を意味する。

設問1-2
2つの変数n1,n2(「int n1=24, n2=45;」と宣言する)の値を、それぞれを指すポインタnp1,np2(「int *np1=&n1, *np2=&n2;」と宣言する)を用いて交換した後、「printf("n1=%d,n2=%d\n",n1,n2);」で交換後のn1とn2の値を表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2011年11月18日8:00まで]
[5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文
            繰り返し処理for文、繰り返し処理for文による総和の計算、配列変数
            条件分岐if文、要素番号idx使用の書換、データの入れ替え
            条件分岐・論理演算子を用いたif文の条件、if文、else if文
            switch文、ポインタ変数・演算子*と&は習いました。
宜しくお願いします。
256 :デフォルトの名無しさん2011/11/14(月) 02:41:30.94
>>253
設問1-2

http://codepad.org/EafccM3B
257 :デフォルトの名無しさん2011/11/14(月) 02:48:32.86
>>256
設問1-1もお願いします。
259 :デフォルトの名無しさん2011/11/14(月) 05:06:07.27
>>253
設問1-1
http://ideone.com/4srZT
263 :デフォルトの名無しさん2011/11/14(月) 19:13:54.88
>>256
>>259
有難う御座います
254 :デフォルトの名無しさん2011/11/14(月) 02:15:28.47
>> 2つの変数n1,n2の値を、それぞれを指すポインタnp1,np2を用いて交換

謎の仕様だ
255 :デフォルトの名無しさん2011/11/14(月) 02:22:31.80
>>254
変数n1はポインタnp1を使って交換する
変数n2はポインタnp2を使って交換するって事だと思います。
260 :デフォルトの名無しさん2011/11/14(月) 11:59:23.36
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
sinのグラフを次のように描くプログラムを作成せよ
ただしsin90°とsin270°に対するアスタリスクの数は20個とする。
http://beebee2see.appspot.com/i/azuYk7KSBQw.jpg
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: visual studio 2010
 [3.3] 言語: C
[4] 期限: [2011.11.3]
[5] その他の制限:

よろしくお願いいたします。
261 :デフォルトの名無しさん2011/11/14(月) 12:26:14.30
>>260
#include <stdio.h>
#include <math.h>

int main(void)
{
int i, j;
int x, zero=20;

for(i=0;i<=360;i+=15)
{
x=20.001*sin(i*M_PI/180);
x+=zero;
for(j=0;j<zero && j<x;j++) printf(" ");
for(;j<zero || j<x;j++) printf("*");
printf("\n");
}

return 0;
}
264 :デフォルトの名無しさん2011/11/15(火) 12:59:42.31
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):斜め上方に初速度v0(=50),入射角theta(=60)で小球を投射した。
小球の軌道(x,y)を計算してください。ただし、y<0になったとき計算を停止してください。
なお、軌道(x,y)の計算部分を一つの関数(ユーザ定義関数)で計算し、
計算結果二つをmain関数に返すようにしてください。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:11月19日まで
[5] その他の制限:x,yにはアドレスを用いるそうです。

問題文がわかりにくいかもしれませんがよろしくお願いします。
265 :デフォルトの名無しさん2011/11/15(火) 13:23:24.38
>>264
明日でいいならやってみようと思います。
266 :デフォルトの名無しさん2011/11/15(火) 13:23:58.75
>>264
問題文を端折ってねぇか?
重力加速度gはどうすんの?
軌道を計算しろっていうのはグラフとして軌道を表示しろってことか?
与えられた時刻tにおける小球の位置(x、y)を計算して表示しろってことだと思うけど、
計算結果二つってどういう意味?
計算結果はx座標、y座標の組(x、y)一つしかないように思うけど。
268 :デフォルトの名無しさん2011/11/15(火) 13:39:17.47
>>264
できたよ
http://codepad.org/9C6ZWSPl
272 :デフォルトの名無しさん2011/11/15(火) 14:27:51.49
初速v0をx方向の成分とy方向の成分に分けるのは確かにそうだけど。
問題文にない重力加速度Gを勝手に定義して使っちゃってるし。
問題文がアレな>>264の質問にも問題あるけど。
273 :デフォルトの名無しさん2011/11/15(火) 14:41:22.94
>>264
修正しました
http://codepad.org/wJLUYAeE
274 :デフォルトの名無しさん2011/11/15(火) 14:54:59.40
>>264
http://ideone.com/MH6fk
適当に作ったやつ。
というか、これで合っているのか不安になってきた。
物理なんて高校卒業して以来ほとんど勉強してない(;´Д`)
問題文に重力加速度gについて書かれていないのがおかしい。
どこかに「重力加速度gはXXXXとする」等の文があるはず。
276 :デフォルトの名無しさん2011/11/15(火) 15:14:42.57
y = v0t + 1/2gt^2 であることを忘れていた。
>>273は double vy = vy0 - 1 / 2 * G * t; のように修正で。
279 :デフォルトの名無しさん2011/11/15(火) 15:40:49.18
>>276
横槍すまんけど -1 / 2 ってゼロになってしまわね?

-1.0 / 2.0ならわかるけど
確か乗算演算子と除算演算子の評価順は左から右だよね?
もちろん - は優先度が低いので後回しにされる
285 :デフォルトの名無しさん2011/11/15(火) 16:42:29.99
>>283
ごめんなさい。

>>274は無かった事にして下さい。
291 :デフォルトの名無しさん2011/11/15(火) 17:57:17.65
>>285
合ってると思うが?
292 :デフォルトの名無しさん2011/11/15(火) 17:59:28.48
>>291
合ってますか。どうもありがとう!

人の答えと違っていると自分が間違っているんじゃないかと思う今日この頃。
293 :デフォルトの名無しさん2011/11/15(火) 18:11:37.68
>>292
初速50m/secとすると、(問題には単位がないので勝手に想定)
概算で初速の垂直方向は、50*sin60°≒43.3m/sec
G=9.8として滞空時間は、2*43.3/9.8≒8.84sec
水平方向には、8.84*50*cos60°≒221m
垂直方向には最高、G*(8.84/2)*(8.84/2)/2≒95m
294 :デフォルトの名無しさん2011/11/15(火) 18:15:24.99
>>293
大体は合ってるっぽいですね。
わざわざ計算してくれてどうもありがとうございます。
298 :デフォルトの名無しさん2011/11/15(火) 19:09:01.54
>>294
数値積分ではないのでその手の誤差はないけど、時間刻みが0.01だから、
水平到達距離とかはおおざっぱに初速度×時間刻み = 50 *.0.01 = 0.5(m)
程度は値がずれる可能性があるよね。

しかし初速度50m/sって、例えばテニスのサーブとかそんな感じ?
空気抵抗がない状態で割と上向きに打ったら200mぐらいは飛ぶとw
267 :デフォルトの名無しさん2011/11/15(火) 13:35:40.59
19日まで時間があります。

1、回答者が試作を公開する。
2、質問者が悪い部分を指摘する。
3、完全な製品が完成する。

1と2を繰り返すことで3に到達できるのではないでしょうか?
269 :デフォルトの名無しさん2011/11/15(火) 13:39:35.46
じゃあ関数プロトタイプ
int hoge(double *x, double *y, double t);
270 :デフォルトの名無しさん2011/11/15(火) 13:53:26.58
>>268
仕事早いな。
というか、それでいいのか?

Message = ((>>264 == >>267 || >>264 == >>269 ) ? ("情報は小出しにしない方が・・・") : ("(#^ω^)"));
275 :デフォルトの名無しさん2011/11/15(火) 15:08:43.93
g=9.80665m/s^2じゃだめなん

書いてない場合は勝手に常識から外れない範囲内で決めていいって事だろ
277 :デフォルトの名無しさん2011/11/15(火) 15:15:15.82
まあ、勝手に決めていいと思うけど。
というか、この場合勝手に決めないと問題解けないけど。
いやらしい講師なら「おいお前、勝手に決めるんじゃねぇ!」というのもありえる。
278 :デフォルトの名無しさん2011/11/15(火) 15:40:47.14
ふと疑問に思ったんだけど、math.h の cos/sin って単位はラジアンですよね?

double vx0 = v0 * cos( θ * 2 / π ); は double vx0 = v0 * cos( θ * π / 180);

の誤りでは? ・・・あれ????俺の方が間違ってる?うーん????
282 :デフォルトの名無しさん2011/11/15(火) 16:08:59.53
プログラムも物理も駄目とは... これ本気で駄目出ししたら何か所ぐらいあるかなw
283 :デフォルトの名無しさん2011/11/15(火) 16:29:31.05
こういう簡単な問題ならプログラムの実行結果の一部と
自分で手計算した結果を比較してみてからうpするのが筋だな
間違った答えを出すプログラムをうpする位なら何もしない方がいい
迷惑を掛けるだけだ
284 :デフォルトの名無しさん2011/11/15(火) 16:38:12.61
どもども、ダメだし勉強になります^^

>迷惑を掛けるだけだ

迷惑かかるのは質問者だけだからいいでしょw
286 :デフォルトの名無しさん2011/11/15(火) 16:42:30.15
>>284
良くねーよ
他のスレならまだしも、このスレの存在意義を考えてみろ
287 :デフォルトの名無しさん2011/11/15(火) 16:44:21.31
>>286
しらねw

他の人がどんなつもりでこのスレにいるのかは知らないけど
自分は自分の勉強のために回答しているわけだし^^
いやならスルーすればぁ?
290 :デフォルトの名無しさん2011/11/15(火) 17:34:44.51
>>287
お前みたいな奴はこのスレに来るなカス
295 :デフォルトの名無しさん2011/11/15(火) 18:41:23.23
>>290
はいはい、カスカス^^
じゃあお前が答えてやればぁ?w

平日の昼間から勉強にもならない問題を解いて何が楽しいのだw
288 :デフォルトの名無しさん2011/11/15(火) 16:45:37.08
このスレに投稿する連中は宿題めんどうだから丸投げしてきてるだけだしな。
289 :デフォルトの名無しさん2011/11/15(火) 17:08:53.82
講師がわからない場合掲示板で聞くことって言うからここで聞いただけだよ。
296 :デフォルトの名無しさん2011/11/15(火) 18:43:45.17
ここはニートと仕事のない派遣が
上から目線で問題を解いて自己満足に浸るスレですよ?
297 :デフォルトの名無しさん2011/11/15(火) 18:58:01.01
ここで誰も解かなくても問題丸投げにしたやつの単位が落ちる程度で誰も困らないんだから
つまらないことで喧嘩するなよ
299 :デフォルトの名無しさん2011/11/15(火) 19:29:45.22
[1] 授業単元:newとdeleteの確認
[2] 問題文(含コード&リンク):仕様:newとdeleteの確認 下記の基底クラスから、3パターンの別クラスを派生させ、Action関数などをオーバーライドし、各クラス独自の振る舞いができるようにする。
・CBaseMonsterクラス
プロパティprotected 整数型 m_atk
メソッド コンストラクタ  //m_atkを適宣初期化void Action(void) //行動制御関数
・void CBaseMonster::Action(void)のアルゴリズム50%の確率で「攻撃した!ダメージは99」と表示。99にはm_atkを表示。50%の確率で「防御した!」と表示。
アクション関数をオーバーライドなお、プログラム起動後、どのクラスのモンスターを生成するのかをメニューから選択できるようにし、生成したモンスターのAction()を20〜30回程度繰り返し呼び出しし、想定した行動をしているか確認する。
派生したクラスについては、Action()のアルゴリズムを含めて、全て自由に追加修正して構わない。プログラムを終了する前に、newで生成したインスタンスを吐きすることを忘れないように。
動作イメージ
------------------------------------------------------------
|プログラムスタート
|1:基本モンスター
|2:ゴブリン
|3;スライム
|4:ドラゴン
|>>どのモンスターを生成しますか?
|>>4 ←選択されたインスタンスをnewで生成し、Actionを繰り返し呼び出す。
|ドラゴンは炎を吐いた!ダメージ540
|ドラゴンはじっと身構えている
|ドラゴンは炎を吐いた!ダメージ540
|ドラゴンは攻撃した!ダメージ540       
|       :
|       :
|プログラム終了。
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2008
[3.3] 言語: C++
[4] 期限: 2011年11月19日13:00まで
[5] その他の制限:お手数ですが、コメントのほうお願いします。
306 :デフォルトの名無しさん2011/11/15(火) 23:55:03.52
>>299
これ、基底クラスに何かを追加して良いとは書いてないけど、
最低ゲイ、virtual ~CBaseMonster() がないと、
new した派生クラスを delete する時に面白いことになりかねなくない?
まあ、派生クラスにデータメンバ持たせなければいいんだけど…。
332 :デフォルトの名無しさん2011/11/16(水) 13:15:49.94
>>306
299です。すいませんよろしくお願いします。
338 :デフォルトの名無しさん2011/11/16(水) 16:18:37.14
>>299
どちらでもお好きな方でどうぞ。
http://codepad.org/RYTPLotN
http://codepad.org/Qwj9AuPK
347 :デフォルトの名無しさん2011/11/16(水) 21:16:38.36
>>338
2個目はC++11だろ
コンパイルエラーだらけ
351 :デフォルトの名無しさん2011/11/16(水) 23:00:39.45
>>347
うん。もともと二個目は出題の要求に従ってない部分があるし。
無理やり従わせたためにCBaseMonsterクラスの派生クラスにおけるAction関数が無意味だし、
スマポ使えばすむところをこれまた無理やり従わせるために new delete にしてるし
あと、UML図書かないで鼻ほじりながら脳内仕様で作ったから設計があやしいw

どっちにしても二個目は宿題としては提出できないので一個目で。
こっちは出題の要求通り(のはず)。
370 :3682011/11/18(金) 02:59:54.66
コードから新規データのみと解釈したんだけどね。どーでしょうねぇ。
てか、データ構造も大事だけど先に関数を習いたいねぇ・・・。

>>299 解答がないのは資料不足。エスパーではないので情報は全部だしてもらわんと。
基本モンスタのクラスがあるはずだが(^^;;
300 :デフォルトの名無しさん2011/11/15(火) 21:55:36.22
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):符号無し整数x を右にn ビット回転した値を返す関
数rrotate と,左にn ビット回転した値を返す関数
lrotate
unsigned rrotate(unsigned x, int n)
unsigned lrotate(unsigned x, int n)
を作成せよ
*関数はprint_bits 関数を利用すること


<実行例>
非負の整数を入力してください:34567
何ビット回転しますか:4
回転前= 1000011100000111
右回転= 0111100001110000
左回転= 0111000001111000
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:11月16日まで
[5]
301 :デフォルトの名無しさん2011/11/15(火) 22:53:23.99
>>300
#include <stdio.h>
void print_bits(const char *msg, const int val)
{
 int i;
 printf("%s", msg);
 for(i = siezof(int); i; i--) printf("%d", val & i);
 printf("\n");
}

unsigned int rrotate(unsigned x, int n){return((x >> (sizeof(int) - n)|(x << n));}
unsigned int lrotate(unsigned x, int n){return((x << (sizeof(int) - n)|(x >> n));}

int main(void)
{
 unsigned int val,lr;
 printf("非負の整数を入力してください:"); scanf("%d", val);
 printf("何ビット回転しますか:");     scanf("%d", lr);
 print_bits("回転前=", val));
 print_bits("回転前=", rrotate(val, lr)));
 print_bits("回転前=", lrotate(val, lr)));
 return(1);
}

こんな感じかな?
エラーあったら直しておいて。
302 :デフォルトの名無しさん2011/11/15(火) 23:08:37.78
>>301
全部が 回転前 だった。
2回目の回転前→右回転
3回目の回転前→左回転
にそれぞれ変更しといて。
308 :デフォルトの名無しさん2011/11/16(水) 01:26:25.37
>>301
sizeof(int) * 8
309 :デフォルトの名無しさん2011/11/16(水) 01:36:47.88
>>308
…ビット数に変更し忘れとるw
指摘thx
310 :デフォルトの名無しさん2011/11/16(水) 01:40:38.53
>>301
ゴミすぎる
質問者にはふさわしいのかもしれんがw
311 :デフォルトの名無しさん2011/11/16(水) 01:43:29.35
>>310
コードの提示してみたら?
312 :デフォルトの名無しさん2011/11/16(水) 01:45:06.68
>>311
>>301 の要訂正箇所数えてみなよ
319 :デフォルトの名無しさん2011/11/16(水) 05:26:06.06
>>301
ゴミみたいなソース書くな
実行結果も間違ってるし

>エラーあったら直しておいて。

エラーだらけじゃボケ

>>300
http://codepad.org/EF5yOofu

intの大きさは環境依存なので出題とは違う出力結果になるかもしれんが
少なくともビットの出力は正しい
303 :デフォルトの名無しさん2011/11/15(火) 23:13:33.20
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://iup.2ch-library.com/i/i0478317-1321365328.jpg
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2011年11月17日
[5] 問題に書いてある通りです。

よろしくお願いします。
304 :デフォルトの名無しさん2011/11/15(火) 23:40:24.76
>>303
delByName() も findByName() も削除関数って書いてるなw
findByName() が検索関数ならば戻り値が void じゃ駄目だし...
305 :デフォルトの名無しさん2011/11/15(火) 23:52:34.66
>>304
100万回読んで恋
307 :3032011/11/15(火) 23:56:02.93
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://iup.2ch-library.com/i/i0478374-1321368771.jpg
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2011年11月17日
[5] 問題に書いてある通りです。

問題文にミスがありましたので訂正版をうpしました。
よろしくお願いします。
313 :デフォルトの名無しさん2011/11/16(水) 01:49:26.71
314 :デフォルトの名無しさん2011/11/16(水) 02:01:29.90
>>313
ビット操作を使用する理由が判らん
320 :3072011/11/16(水) 06:06:32.97
>>313
ありがとうございます。
できればビット操作を使用しない方法を教えてほしいです。
321 :デフォルトの名無しさん2011/11/16(水) 06:48:09.86
>>314
findNameやらを作りたかっただけ
戻り値で複数の組み合わせの意味を持たせる方法ってビット以外でどうすればいいかなあ
322 :デフォルトの名無しさん2011/11/16(水) 07:20:16.77
>>307
住所録に何故住所データがないんだ。
323 :デフォルトの名無しさん2011/11/16(水) 07:47:43.42
>>322
ファンレターなら学校宛でお願いします
350 :デフォルトの名無しさん2011/11/16(水) 22:49:14.14
352 :デフォルトの名無しさん2011/11/17(木) 00:48:48.87
>>350
ありがとうございます!
317 :デフォルトの名無しさん2011/11/16(水) 03:29:39.32
それで実行してみろw
318 :デフォルトの名無しさん2011/11/16(水) 03:31:22.34
>>317
ああ、そうだね。間違ってるね。俺もアホだw
324 :デフォルトの名無しさん2011/11/16(水) 08:53:01.88
符号付きintのシフトは

§6.5.7.3 The integer promotions are performed on each of the operands. The type of the result is
that of the promoted left operand. If the value of the right operand is negative or is
greater than or equal to the width of the promoted left operand, the behavior is undefined.

つまり負の数をシフトしたりintの幅以上シフトした場合の動作は未定義、つまり鼻から悪魔
でもこれを気にするとプログラムが組めなくなってしまう
326 :デフォルトの名無しさん2011/11/16(水) 09:06:47.42
引用するならこっちだよね

§6.5.7.5 The result of E1 >> E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type
or if E1 has a signed type and a nonnegative value, the value of the result is the integral
part of the quotient of E1 / 2E2. If E1 has a signed type and a negative value, the
resulting value is implementation-defined.

環境依存って事で
328 :デフォルトの名無しさん2011/11/16(水) 12:17:16.88
【質問テンプレ】
[1] 授業単元:多次元配列
[2] 問題文(含コード&リンク): 要素が整数からなる3x3の表データを scanf()関数を用いて読み込み、対角線を軸と して要素を入れ替えた表を表示するプログラ ムを作りなさい。[3] 環境
 [3.1] OS: MaxOS
 [3.2] コンパイラ名とバージョン: egg 10.6.8
 [3.3] 言語: C
[4] 期限:2011年11月19日(土)
[5] その他の制限: while, if, for, 配列まで

(例)
1 2 3 1 4 7 9 6 3
4 5 6 → 2 5 8 と 8 5 2
7 8 9 3 6 9 7 4 1
329 :デフォルトの名無しさん2011/11/16(水) 12:49:20.93
>>328
#include<stdio.h>
int main(void)
{
int i,j;
int a[3][3];
scanf("%d",&a[0][0]); scanf("%d",&a[0][1]); scanf("%d",&a[0][2]);
scanf("%d",&a[1][0]); scanf("%d",&a[1][1]); scanf("%d",&a[1][2]);
scanf("%d",&a[2][0]); scanf("%d",&a[2][1]); scanf("%d",&a[2][2]);
printf("%d ", a[0][0]); printf("%d ", a[1][0]); printf("%d¥n",a[2][0]);
printf("%d ", a[0][1]); printf("%d ", a[1][1]); printf("%d¥n",a[2][1]);
printf("%d ", a[0][2]); printf("%d ", a[1][2]); printf("%d¥n",a[2][2]);
printf("¥n");
printf("%d ", a[2][2]); printf("%d ", a[1][2]); printf("%d¥n",a[0][2]);
printf("%d ", a[2][1]); printf("%d ", a[1][1]); printf("%d¥n",a[0][1]);
printf("%d ", a[2][0]); printf("%d ", a[1][0]); printf("%d¥n",a[0][0]);
return 0;
}
330 :デフォルトの名無しさん2011/11/16(水) 12:50:30.94
374 :デフォルトの名無しさん2011/11/18(金) 09:50:21.60
>>329>>330
遅れたがありがとう
あとこれをコンピュータ側が自動的に反転させてくれるように出来ないかな?
375 :デフォルトの名無しさん2011/11/18(金) 10:56:57.75
>>374
??? 自動的に反転とは? 何を求めているのか分からない。なんか例を出してよ。
376 :デフォルトの名無しさん2011/11/18(金) 12:36:02.25
>>374
上下、左右反転だとエスパーしてみた。
http://codepad.org/5Ja0STCQ
334 :デフォルトの名無しさん2011/11/16(水) 15:06:38.44
PHP使ったらすぐに解けそうな問題だな
regex使えるから結構簡単に行けるかも
335 :デフォルトの名無しさん2011/11/16(水) 15:51:40.76
[1] 授業単元:楽しいプログラミング
[2] 問題文(含コード&リンク): 以下の実行例のように,三角形の2 辺の長さとその2
辺のなす角(0〜180[deg])を入力すると,もう1 辺の
長さと,三角形の面積を表示するプログラムを作成せ
よ.π = 3.14159265 とする.
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:2011年11月17日 9:00まで
[5] その他の制限: while, if, for, 配列まで


 三角形の2 辺の長さを入力してください。
辺1:-3.0
正の値を入力してください。辺1:3.0
辺2:6.0
2 辺のなす角度[deg] を入力してください:200.0
0<角度[deg]<180 の値を入力してください。30.0
もう1 辺の長さ= 3.717941
三角形の面積= 4.500000
337 :デフォルトの名無しさん2011/11/16(水) 16:17:53.83
343 :デフォルトの名無しさん2011/11/16(水) 18:38:46.71
>>342
>>335-337
336 :デフォルトの名無しさん2011/11/16(水) 16:14:54.59
#include <stdio.h>
#include <math.h>
int main(void) {
double a, b, deg, pi = 3.14159265;

printf(" 三角形の2 辺の長さを入力してください。\n");

for( ; ; ) {
printf("辺1:");
scanf("%lf", &a);
if(a > 0) break;
printf("正の値を入力してください。"); }

for( ; ; ) {
printf("辺2:");
scanf("%lf", &b);
if(b > 0) break;
printf("正の値を入力してください。"); }

printf("2 辺のなす角度[deg] を入力してください:");

for( ; ; ) {
scanf("%lf", °);
if(0 < deg && deg < 180) break;
printf("0<角度[deg]<180 の値を入力してください。"); }

printf("もう1 辺の長さ= %f\n", sqrt(a * a + b * b - 2 * a * b * cos(deg / 180 * pi)));
printf("三角形の面積= %f\n", a * b * sin(deg / 180 * pi) / 2);

return 0;
}
342 :デフォルトの名無しさん2011/11/16(水) 17:23:28.24
[1] 授業単元:楽しいプログラミング
[2] 問題文(含コード&リンク): 以下の実行例のように,三角形の2 辺の長さとその2
辺のなす角(0〜180[deg])を入力すると,もう1 辺の
長さと,三角形の面積を表示するプログラムを作成せ
よ.π = 3.14159265 とする.
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:2011年11月17日 9:00まで
[5] その他の制限: while, if, for, 配列まで


 三角形の2 辺の長さを入力してください。
辺1:-3.0
正の値を入力してください。辺1:3.0
辺2:6.0
2 辺のなす角度[deg] を入力してください:200.0
0<角度[deg]<180 の値を入力してください。30.0
もう1 辺の長さ= 3.717941
三角形の面積= 4.500000
344 :デフォルトの名無しさん2011/11/16(水) 19:35:25.71
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク): 3問 http://ideone.com/kXOZ8
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 今日午後8:15まで
[5] その他の制限: 基礎の基礎なので、難しいプログラミングは含まれていないと思います。ついでに説明も付け加えてくださると助かります。
時間がないですが、よろしくお願いします。
345 :デフォルトの名無しさん2011/11/16(水) 20:28:00.06
>>344
帰納じゃなくて再帰じゃね?
346 :デフォルトの名無しさん2011/11/16(水) 20:33:48.99
>>345
再帰、だと思います。
英語をそのまま日本語にしたので、正確な呼称がわからなくて、帰納と訳してました。
ありがとうございます。
348 :3452011/11/16(水) 21:51:31.38
>>344
遅れちゃいるけど、
http://ideone.com/Zf96U

入力値のチェックは入れてないので、適宜修正してくださいな。
349 :デフォルトの名無しさん2011/11/16(水) 21:53:33.90
>>344
出遅れたけど。
http://ideone.com/dz41U
353 :デフォルトの名無しさん2011/11/17(木) 04:42:32.57
>>346
もしかして外国の学校に通ってる人? だったら大変だね。
一般的には recursion -> 再帰 induction -> 帰納 かなと。
あと偶数と奇数が逆? odd -> おかしい、奇妙な
355 :デフォルトの名無しさん2011/11/17(木) 17:41:06.65
[1] 授業単元: プログラミング基礎 (ポインタと関数)
[2] 問題文(含コード&リンク): nxが指す整数の値を2乗する関数
void sqr(int *nx)を作成せよ
例えば、num =3 に対して関数sqrを呼び出すと、num=9となる。
関数の動作を確認出来るmain関数も作成すること
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11月18日9:00まで
[5] その他の制限:
実行例,
整数を入力してください:3
その値の2乗しました :9
356 :デフォルトの名無しさん2011/11/17(木) 17:59:43.63
378 :デフォルトの名無しさん2011/11/18(金) 13:55:25.95
>>375>>356
例えば
123
456
789
という3×3の行列をscant()で読み取ると
対照線を軸に反転出来たらいいんだ
上の例でいくと
987
654
321
みたいな感じになればおk
380 :デフォルトの名無しさん2011/11/18(金) 15:27:48.74
>>378
#include<stdio.h>
int main(void)
{
int i,j;
int a[3][3];
scanf("%d",&a[0][0]); scanf("%d",&a[0][1]); scanf("%d",&a[0][2]);
scanf("%d",&a[1][0]); scanf("%d",&a[1][1]); scanf("%d",&a[1][2]);
scanf("%d",&a[2][0]); scanf("%d",&a[2][1]); scanf("%d",&a[2][2]);
printf("%d ", a[0][0]); printf("%d ", a[1][0]); printf("%d¥n",a[2][0]);
printf("%d ", a[0][1]); printf("%d ", a[1][1]); printf("%d¥n",a[2][1]);
printf("%d ", a[0][2]); printf("%d ", a[1][2]); printf("%d¥n",a[2][2]);
printf("¥n");
printf("%d ", a[2][2]); printf("%d ", a[1][2]); printf("%d¥n",a[0][2]);
printf("%d ", a[2][1]); printf("%d ", a[1][1]); printf("%d¥n",a[0][1]);
printf("%d ", a[2][0]); printf("%d ", a[1][0]); printf("%d¥n",a[0][0]);
printf("¥n");
printf("%d ", a[2][2]); printf("%d ", a[2][1]); printf("%d¥n",a[2][0]);
printf("%d ", a[1][2]); printf("%d ", a[1][1]); printf("%d¥n",a[1][0]);
printf("%d ", a[0][2]); printf("%d ", a[0][1]); printf("%d¥n",a[0][0]);
return 0;
}
357 :デフォルトの名無しさん2011/11/17(木) 19:52:54.65
[1] 授業単元: 実数型変数の精度
[2] 問題文(含コード&リンク):
以下の部分の処理(意味)の把握
*((unsigned int *)&a)・・・・・・・・aはfloat型変数
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 11月17日 22:00 まで
360 :デフォルトの名無しさん2011/11/17(木) 20:54:15.62
>>357
aへのポインタをunsigned int型変数へのポインタだと解釈した時の値 = aのバイト表現をunsigned int型の表現だとキャストせずに解釈した時の値
で大丈夫かな
358 :デフォルトの名無しさん2011/11/17(木) 20:16:31.83
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): アルファベットと空白からなる文字列を処理する以下のような関数を作成せよ。なお各関数は処理が成功したときに1、失敗したときに0を返すものとする。

(1) 先頭からインデックスpで指定される文字までを反転させる関数int reverse(char *s, int p)を作成せよ。例:
char s[] = "abc defg";
reverse(s, 3);
printf("%s¥n", s); // -> " cbadefg"

(2) インデックスpとqで指定される範囲の文字を反転させる関数int reverse2(char *s, int p, int q)を作成せよ。例:
char s[] = "ab cdefg";
reverse2(s, 4, 7);
printf("%s¥n", s); // -> "ab cgfed"
(ヒント: (1)で作った関数が応用できる?)

(3) 単語(空白で区切られた文字)の順序を反転する関数int reverse_word(char *s)を作成せよ。例:
char s[] = "abc de f ghi";
reverse_word(s);
printf("%s¥n", s); // -> "ghi f de abc"
(ヒント: (1)や(2)で作った関数が応用できる?)

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:
[5] その他の制限:どれもできるだけ引数で与えられた文字列の上で処理をするようにして無駄なメモリを使わないように心がけよ(よって関数の引数には常に編集可能な文字列を渡すこととする)。
364 :デフォルトの名無しさん2011/11/17(木) 22:17:50.64
>>358
失敗の条件が無いので適当に組んだ。
http://ideone.com/F7RJy
365 :デフォルトの名無しさん2011/11/17(木) 22:24:48.17
>>358
http://codepad.org/y113LZPc

Joel on Software の試験問題みたいなやつじゃな… xor 交換法使えってやつ
366 :デフォルトの名無しさん2011/11/17(木) 23:31:30.50
>>364
C99か
395 :デフォルトの名無しさん2011/11/19(土) 06:57:01.70
>>394
>>392は>>364のコードのことです。
359 :デフォルトの名無しさん2011/11/17(木) 20:20:42.61
char *s = "abc de f ghi";
こういう渡され方はしないという前提かな?
362 :デフォルトの名無しさん2011/11/17(木) 20:56:29.84
>>359
なんでそう思うんだ?
363 :デフォルトの名無しさん2011/11/17(木) 20:58:49.06
>>362
書き換えが発生するからだろ
361 :デフォルトの名無しさん2011/11/17(木) 20:55:34.05
ポインタだと解釈した時の値→ポインタだと解釈した時のポインタが示す値
こうか
367 :デフォルトの名無しさん2011/11/18(金) 01:32:33.72
[1] 授業単元:
[2] 問題文(含コード&リンク):
http://codepad.org/4cU7vXcT
リンク先のコードを新規データをリストの最初にする
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:VS2008
 [3.3] 言語:C
[4] 期限:早めにお願いします
368 :デフォルトの名無しさん2011/11/18(金) 02:02:37.58
>>367 確認していないが。
67-78行を以下に変更でいいような?
pointer_student = (struct student *)malloc( sizeof(struct student) );
pointer_student->next = root;
pointer_student->number = in_number;
strcpy(pointer_student->name, in_name);
372 :デフォルトの名無しさん2011/11/18(金) 05:13:55.78
>>367
データの登録先を全てリストの先頭にするということだと解釈した。
http://ideone.com/GRvzx
371 :デフォルトの名無しさん2011/11/18(金) 03:14:47.98
リファクタリングも宿題の内ということでわざと冗長に書いてあるのかと思った
関数習う前にlinked listを宿題で出すかね
373 :デフォルトの名無しさん2011/11/18(金) 08:44:46.32
> 【質問テンプレ】
> [1] 授業単元:実数型変数の精度
> [2] 問題文(含コード&リンク):実数型変数の形式は以下のものとする。
符号部(1ビット)、指数部(nビット)、仮数部(mビット)

?指数部を符号なし整数としてオフセットを用いて表現する方法の調査

?以下のコードによるプログラムの実行結果から実数型変数の形式を類推する方法の検討
http://codepad.org/wFSNTRCM
> [3] 環境
>  [3.1] OS:unix
>  [3.2] コンパイラ名とバージョン: gcc
>  [3.3] 言語: C
> [4] 期限: (11月18日13:00まで
582 :デフォルトの名無しさん2011/11/23(水) 20:26:29.99
>>580
>>373,382
583 :デフォルトの名無しさん2011/11/23(水) 21:47:07.73
>>582
ありがとうございます

あと、指数部を符号なし整数としてオフセットを用いて
表現する方法を教えてください。
615 :デフォルトの名無しさん2011/11/24(木) 06:01:53.55
>>587
>>373のコードだけではわかりにくいと思うので自分の勉強も兼ねて以下のような
コードを書いてみた
http://ideone.com/aAWMf

(dec)はdecimal(10進数)、(bin)はbinary(2進数)の意味なのでよろしく
619 :デフォルトの名無しさん2011/11/24(木) 10:30:42.17
>>615
なんか例外吐いて落ちるんですけど(Windows XP + VC)
621 :デフォルトの名無しさん2011/11/24(木) 11:33:34.44
>>619
どんな例外かわかる? 数値があふれるのを放置してあるからかなあ?
ループの範囲を小さくしてあふれない程度でやってみるとか...
623 :デフォルトの名無しさん2011/11/24(木) 11:49:19.50
>>621
CodeGuardのログ貼ってみますね

Error 00001. 0x400000 (Thread 0x0780):
Exception 0xC0000091:
| dai52.c line 75:
| printf("%.1f => frac (bin) 1+.%s, exp (dec) %d-127=%d\n",
| x, fracstr, ie3f.ff.exp, decexp);
|> printf("((dec) %.1f = (bin) 1.%s*10^%s)\n\n", x, fracstr, expstr);
| }
|
Call Tree:
0x00401378(=dai52.exe:0x01:000378) dai52.c#75
0x32C9C8AA(=CC32120MT.DLL:0x01:09B8AA)

Exception 0xC0000091というのは浮動小数点オーバーフロー
637 :デフォルトの名無しさん2011/11/24(木) 22:38:05.90
>>622
>例外ハンドラーを組み込むとかすれば良いんじゃね?

確かにそうなんだがかなり環境依存っぽいので、やる気なくしたw
詳しい人がいたら、例外処理を加えていただけるとw

>>623
なんか行数が変わってるw Winでコンパイルするのに#includeとか足してある?
もしprintfを呼んだ時点で死んでるなら、FLT_MAXと比較してprintfを呼ばないように
すればいいかも?
377 :デフォルトの名無しさん2011/11/18(金) 12:58:06.53
776 名前:名無しさん@涙目です。(東日本)[] 投稿日:2011/11/18(金) 12:50:14.89 ID:E2JpCOtJ0
朝鮮人出身の孫正義に対し、日本人として産まれ育った皆さんが何か勝てる要素あります?
ないですよねえ(笑)

とすると、、
…あれあれ〜?
「日本人の方が朝鮮人より優れている!」というネトウヨの主張、矛盾が生じますよ?(笑)

▼ 781 名前:名無しさん@涙目です。(WiMAX)[sage] 投稿日:2011/11/18(金) 12:51:05.55 ID:kdvVz5BV0
>>776
ネトウヨというレッテル貼り付ける時点で議論を放棄した馬鹿になるぞ

▼ 798 名前:名無しさん@涙目です。(神奈川県)[sage] 投稿日:2011/11/18(金) 12:55:36.12 ID:B2VXzqAn0
>>776
逆に金と朝鮮コネクション以外になにかあるのですか?
ネットにある彼のプレゼンを注意深くきいてみると「詐欺師」という印象しか受けませんが?
印象に残るようなフレーズを連呼しながら、時に感情的にその場限りの嘘を吐き続けるだけの男
こんな男に騙されるほうも騙されるほうですがw
379 :デフォルトの名無しさん2011/11/18(金) 14:12:13.75
転置行列の逆みたいな感じか
左右反転してから上下反転すれば出来るな
381 :デフォルトの名無しさん2011/11/18(金) 15:28:40.70
半分ネタなんだが、こうやって書いても出来ないもんは出来ないんだな
382 :デフォルトの名無しさん2011/11/18(金) 18:47:50.77
>> 373
(1) 参考:http://ja.wikipedia.org/wiki/IEEE_754
(2) ヒント:出力の2つめのフィールドが偶数になっているときに、情報落ちしている。
これで仮数部が表現できるビット数がわかる。注意:けち表現も考慮に入れよ。

・・・というか出題のコードが悪いよ。
383 :デフォルトの名無しさん2011/11/18(金) 19:32:43.34

[1] 授業単元:プログラミング演習

[2] 問題文(含コード&リンク):


http://codepad.org/bMCs37CD

[3] 環境
 [3.1] OS:Linux Ubuntu 10.04
 [3.2] コンパイラ名とバージョン:不明ですが恐らくgccだと思います。
 [3.3] 言語:C

[4] 期限:11/25
386 :デフォルトの名無しさん2011/11/18(金) 20:58:29.77
>>383
採草地w ちゃんと写せよ
384 :デフォルトの名無しさん2011/11/18(金) 19:46:58.93
>364
ごめん。>358じゃないんだけど、reverse_wordってちゃんと動く?
少なくとも俺の環境だとダメ。VC2010(に入ってるcl.exe)とMinGWのgccの両方で試したけどダメ。
>366の発言が関係してる?
385 :デフォルトの名無しさん2011/11/18(金) 20:07:37.69
>>384
VC2010のC++はC89なのでC99はコンパイル通らないよ
gccならバージョンにも寄るがだいたい通る
つーか宿題にC99書くなって

Linux上のgccならC99でもいいっていう考えだろうけど、使うなよ
こんなクソ言語
388 :デフォルトの名無しさん2011/11/18(金) 21:14:54.23
>>384
変数宣言を移動しても、s3の処理で落ちる
392 :デフォルトの名無しさん2011/11/19(土) 02:44:15.53
>>384
うーんreverse_word()の中でqがオーバーランしてるかな。
最後のreverse(s, q - 2 - s)で壊す。
389 :デフォルトの名無しさん2011/11/19(土) 00:28:11.38
[1] 授業単元:計算機アルゴリズム?
[2] 問題文(含コード&リンク):
設問1-1
プログラム例9.4.4で「a_p=&a[0]; b_p=&b[0]; c_p=&c[0];」を「a_p=&a[4]; b_p=&b[4]; c_p=&c[4];」に置き換えた場合、同じ表示となるようにfor(・・・){・・・}を書換えなさい。
プログラム例9.4.4
ttp://www.dotup.org/uploda/www.dotup.org2278003.txt.html

設問1-2
配列
float a[7] = {2.10, 3.21, 5.43, 6.54, 7.65, 8.76, 9.87}について、

(1)ポインタ変数を用いて、すべての要素を表示するプログラムを作成せよ。

(2)ポインタ変数を用いて、奇数の添字の要素を表示するプログラムを作成せよ。
  (a_p+=2を使用すること。)

(3)ポインタ変数を用いて、すべての要素を逆の順に、a[6]からa[0]まで表示するプログラムを作成せよ。
ただし、ポインタ変数には最初a[6]のアドレスを記憶させるようにする。
  (--a_pまたはa_p--を使用すること。)
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:visual studio 2008
 [3.3] 言語:C
[4] 期限:[2011年11月25日8:00まで]
[5] その他の制限:変数、算術演算、printf、scanf、繰り返し処理while文、do-while文
            繰り返し処理for文、繰り返し処理for文による総和の計算、配列変数
            条件分岐if文、要素番号idx使用の書換、データの入れ替え
            条件分岐・論理演算子を用いたif文の条件、if文、else if文
            switch文、ポインタ変数・演算子*と&は習いました。
宜しくお願いします。
391 :デフォルトの名無しさん2011/11/19(土) 00:59:42.73
404 :デフォルトの名無しさん2011/11/20(日) 00:15:58.06
>>391
有難う御座います
390 :3842011/11/19(土) 00:37:32.01
>358,364,385,388
reverse_wordだけ自分で書いてみた。stdioだけしか使わないようにしてみた。
ttp://ideone.com/dgWQN
Cはほぼ初心者に近いけど、この問題はポインタとかアルゴリズムとかの勉強になって良いね。
無駄な部分が多分あると思うから、それは是非指摘してほしい。
394 :384, 3902011/11/19(土) 06:00:57.11
>392
確認なんだけど、
このレスはあくまでも>384へのレスであって、>390へのレスじゃないよね?
398 :デフォルトの名無しさん2011/11/19(土) 19:02:06.45
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):
アフィン変換で画像を変換せよ。ただし回転の中心は画像の中心であるである
http://codepad.org/i8K01zBM
ここまでできたのですが画像の中心で回転してくれません。
[3] 環境
 [3.1] OS:windowsxp
 [3.2] コンパイラ名とバージョン:windows visual studio 2008
 [3.3] 言語:c
[4] 期限:11/20
[5] その他の制限:見づらいプログラムですいません。画像を中心に回転するようにしたいです
399 :デフォルトの名無しさん2011/11/19(土) 21:59:36.82
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):http://i.imgur.com/UwzPZ.jpg
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11/15 10:00
[5] その他の制限: そこまで複雑な関数は習ってません

詰んでます
お願いします
412 :デフォルトの名無しさん2011/11/20(日) 02:05:23.27
>>399誰かたのんます・・・
413 :デフォルトの名無しさん2011/11/20(日) 02:22:04.60
>>412
放置されたら諦めろ。
http://codepad.org/DnUikRHF
417 : ◆QZaw55cn4c 2011/11/20(日) 04:58:29.46
>>412
>>399
残念。
http://codepad.org/lZ0MtrPM
419 :デフォルトの名無しさん2011/11/20(日) 05:03:56.45
>>417
413 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/08(水) 04:58:51
典型的な自己愛性人格障害だな
治療不能
就職も出来ず一生ニート

416 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/08(水) 12:32:05
>>413
同属嫌悪ってやつか、自己紹介乙。
叩いているお前も十分基地外、池沼だよ。
そんなことしている暇があるんだろ?

便利な詭弁だよな
そうやって自分の問題から逃げていれば楽だもんだなあ

468 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/13(月) 21:08:24
Pen III 500MHz を2003年の夏まで使用していましたが
今はC2D、C2Qのを使用してますです!
Core iシリーズはVistaのごとくスルーしてます ><;

スクリーンショットマダァ?(・∀・ )っ/凵⌒☆チンチン
432 :デフォルトの名無しさん2011/11/20(日) 07:48:27.24
>>399 >>412
http://codepad.org/h8G8ODH3
妥当な短さで汚いコードどうぞ。
436 :デフォルトの名無しさん2011/11/20(日) 09:15:49.91
>>432
出力結果が変だぞ

tensu ::::
8001 78 64 88 90
8004 34 40 52 67
8013 83 77 89 93
8025 98 81 69 77
8062 56 63 47 23

Student Average::::
8001 : 80.00
8004 : 48.00
8013 : 85.00
8025 : 81.00
8062 : 47.00

Subject Average::::
Mat : 69.8
Phys : 1.034023498044222881300000000000000000000e+291
Chem : +NAN
Eng : 70.0
438 :デフォルトの名無しさん2011/11/20(日) 09:21:00.62
>>432
>>436の原因が分かった

sumSubjectの初期化がされていない

double sumSubject[4] = {0.0, 0.0, 0.0, 0.0};
400 :デフォルトの名無しさん2011/11/19(土) 23:23:18.68
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
 入力された数値が素数か否かを判定し,結果を画面に出力せよ.ただし

 ?ループ命令を使う方法
 ?再帰処理を使う方法
 ?上記のどちらも使わない方法

 のいずれについても解答する事.
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11/27 23:00
[5] その他の制限: 初心者向けにお願いします
401 :デフォルトの名無しさん2011/11/19(土) 23:51:01.44
402 : ◆QZaw55cn4c 2011/11/19(土) 23:51:26.08
>>400
? http://ideone.com/bj1AE
? http://ideone.com/favuB
? うーん、困りました。わかりません。
403 :デフォルトの名無しさん2011/11/20(日) 00:13:49.80
>>400
>>401 を縮めた
http://codepad.org/4JFt7VJ5
406 :デフォルトの名無しさん2011/11/20(日) 01:35:45.40
>>403
奇数だけチェックするようにしてビットパターンの方も間引いたわけですか
408 :デフォルトの名無しさん2011/11/20(日) 01:41:20.74
>>403
5以上の素数は 6n±1 に限られるから、もっと少なくできるんじゃない?
409 : ◆QZaw55cn4c 2011/11/20(日) 01:42:07.62
>>403
>>401
んーんーなるほど。
410 :デフォルトの名無しさん2011/11/20(日) 01:46:53.92
>>409
死んでもgoto使いたくないのか
411 : ◆QZaw55cn4c 2011/11/20(日) 02:05:06.43
>>410
そんなことはないんですけど、今回はやめときました。
http://hibari.2ch.net/tech/kako/1289/12897/1289715349.html >>479
http://codepad.org/RMU1H5jZ
415 :デフォルトの名無しさん2011/11/20(日) 04:40:23.12
>>400
main(i,n){scanf("%d",&n);_:if(n*(n>1)%++i)goto _;puts("not prime"+(i==n)*4);}
416 :デフォルトの名無しさん2011/11/20(日) 04:53:30.16
>>415
トリッキー過ぎるだろw
418 : ◆QZaw55cn4c 2011/11/20(日) 05:03:18.15
>>415
>(n>1)
細やかな心遣いですね。
405 :デフォルトの名無しさん2011/11/20(日) 00:31:18.16
398ですがコメント文が間違ってたので投稿し直します
1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):
アフィン変換で画像を変換せよ。ただし回転の中心は画像の中心であるである
http://codepad.org/7p9bZmsA
ここまでできたのですが画像の中心で回転してくれません。
[3] 環境
 [3.1] OS:windowsxp
 [3.2] コンパイラ名とバージョン:windows visual studio 2008
 [3.3] 言語:c
[4] 期限:11/21 20:00
[5] その他の制限:見づらいプログラムですいません。画像を中心に回転するようにしたいです
407 :デフォルトの名無しさん2011/11/20(日) 01:41:02.34
>>405
src_x=(dest_x-dest_width/2)*cos(-theta)-(dest_y-dest_height/2)*sin(-theta)+src_width/2;
src_y=(dest_x-dest_width/2)*sin(-theta)+(dest_y-dest_height/2)*cos(-theta)+src_height/2;
でおk
439 :デフォルトの名無しさん2011/11/20(日) 18:05:09.98
>>407
for(i =0; i < x; i++){
for(j =0; j < y; j++){
v=i/2*cos(-15*PI/180)-j/2-*sin(-15*PI/180)+x/2;
w=-i/2*sin(-15*PI/180)+j/2*cos(-15*PI/180)+y/2;
image_out4[v][w] =image1[i][j];}}
一応こんな感じにやって見ましたが大丈夫でしょうか?
441 :デフォルトの名無しさん2011/11/20(日) 18:53:36.30
>>439
逆にしないと絵に穴が開くのと
有効範囲かどうかのチェックが必要
442 :デフォルトの名無しさん2011/11/20(日) 19:01:35.94
>>439
>>407 で -theta にしてるのは dest を基準に考えると逆回転になるよって意味だからね
444 :デフォルトの名無しさん2011/11/20(日) 22:14:59.92
>>442
ありがとうございます。理解しました
465 :デフォルトの名無しさん2011/11/21(月) 13:54:05.05
>>442
理解したと思っていましたが出できた画像が回転でなくせん断された画像なんですがこのdestっていうのはなんですか?
466 :デフォルトの名無しさん2011/11/21(月) 14:45:31.32
>>465
dest は destination の略
式に変なアレンジしなければ大丈夫
467 :デフォルトの名無しさん2011/11/21(月) 15:20:30.58
>>466
変にアレンジしてました。今度こそ大丈夫です。ありがとうございました
414 :デフォルトの名無しさん2011/11/20(日) 03:48:44.47
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
整数nを入力、2以上nイカの全ての素数およびその素数の累積を表示(while文を使用)
例) n=15の時:
素数:2,3,5,7,11,13 累積:41
[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:今日の22時まで
[5] while文使用でお願いします
443 :デフォルトの名無しさん2011/11/20(日) 22:04:08.54
>>414は「nイカ」は「n以下」です。すいません
445 :デフォルトの名無しさん2011/11/20(日) 23:20:51.73
>>414

#include <stdio.h>
int main(){
int n, sum = 2, i = 2, j;
printf("n = ");
scanf("%d", &n);

printf("素数:");
while (i++ < n) {
j = 2;
while ((i % j) && j * j <= i)
j++;
if (i % j) {
printf("%d,", i);
sum += i;
}
}
printf(" 累積:%d¥n", sum);

return 0;
}
446 :デフォルトの名無しさん2011/11/20(日) 23:54:05.16
>>445
そういう処理ならエラトステネスのふるいを使ってみるとか
447 :デフォルトの名無しさん2011/11/21(月) 00:06:21.94
>>445
累積が間違ってるな
448 :デフォルトの名無しさん2011/11/21(月) 00:16:15.20
>>445
とってもありがとうございます
>>447
多分合ってると思います。15入力してちゃんと41とでるので
450 :デフォルトの名無しさん2011/11/21(月) 00:34:49.52
>>448
X printf("素数:");
O printf("素数:2 ");
452 :デフォルトの名無しさん2011/11/21(月) 01:34:13.40
>>414
エラトステネスのふるいで。
http://ideone.com/7CjRm
453 :デフォルトの名無しさん2011/11/21(月) 02:19:10.47
>>452
ありがとうございます!
421 : ◆EiEUm/qHNk 2011/11/20(日) 06:18:42.24
[1] 授業単元:C言語
[2] 問題文:ガウスの消去法を使ってn元連立方程式を解け
http://ideone.com/2GwBp
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限:11月21日まで
[5] その他の制限:math.h や #difine などは習っていないので使えません。
アップロダに初めてソースを上げてみたのですが、学校では値が出ました、
あとは、ゼロを入力した場合、値がおかしくなるので、行交換?などをしたいのですが
どうすればいいのかわかりません。
423 :デフォルトの名無しさん2011/11/20(日) 06:34:32.94
>>421
例えばこんな感じ

http://ideone.com/Hr2yj
433 :デフォルトの名無しさん2011/11/20(日) 09:09:40.18
やっと作業終わった・・・

>>421
http://ideone.com/VPNB0

c99でかつfabs()を使わない部分ピボット選択ならこんな感じになるよ
434 : ◆EiEUm/qHNk 2011/11/20(日) 09:14:05.77
>>433
作業お疲れ様です。
学校で試してみます!
本当にありがとうございました
424 :デフォルトの名無しさん2011/11/20(日) 06:36:11.32
math.hを習ってないという事はfabs()を自作しないといかんね
それから#defineが使えないならC99の可変長配列を使わないといけない
425 : ◆EiEUm/qHNk 2011/11/20(日) 06:48:19.27
fabs?などというのも習っていません、自作というのもしてわいけないと思います。
配列ぐらいまでの範囲しか習っていませんので、、、
友人はif文を使うなどと言っているのですが、どこに入れれば良いのかもわかりません。
426 :デフォルトの名無しさん2011/11/20(日) 07:05:27.87
>>425
いや、

>あとは、ゼロを入力した場合、値がおかしくなるので、行交換?などをしたいのですが
>どうすればいいのかわかりません。

なんでしょ?じゃピボット選択をするしかない

fabsの自作をしてはいけないというのなら三項演算子でも使ってプログラム内でやるよ
if文でもいいけど
427 :デフォルトの名無しさん2011/11/20(日) 07:11:29.83
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%82%A6%E3%82%B9%E3%81%AE%E6%B6%88%E5%8E%BB%E6%B3%95

>対角成分が 0 になる場合には、枢軸選択(ピボット選択)という式の交換を行う必要がある。
>対角成分が 0 になる場合以外でも、対角成分が絶対値が最大の係数になるように枢軸選択を
>行ったほうが、解の丸め誤差が少なくなる。ただし、これは行列要素の絶対値が同程度の大きさの
>場合のみ成り立ち、スケーリングを行わずに枢軸選択を行うとむしろ精度が悪化する場合もあるため、
>注意が必要である

つまり絶対値が最大の係数になるようにピボット選択をしなければならない
そのためにはfabs()が必要不可欠であるが、使用不可、自作も不可というのならプログラム内に
関数ではなく直書きするしかない
428 : ◆EiEUm/qHNk 2011/11/20(日) 07:20:28.79
ピポッド選択をするのにif文、for文だけで対処できないのでしょうか?
先ほど私がロダにあげたソースに付け足していただけるとありがたいのですが、、

429 :デフォルトの名無しさん2011/11/20(日) 07:23:42.07
>>428
いやできるよ
ちょっと待って今他の作業をしてるもんで
他の人があげてくれるかもしれんし

それより心配なのはC99の可変長配列を関数間で受け渡し出来るのかという問題だ
可変長配列はalloca()の糖衣構文だと聞いているので、受け渡した時の書き方が
よくわからん

C89/C++ばかりやってるもんで
431 : ◆EiEUm/qHNk 2011/11/20(日) 07:44:36.16
>>429
うーん、よくわからないですけど
C言語ならったばっかりの学生に
作らせているので、main()のなかまでは
干渉しないとは思うのですが、、
すいません、よくわからないことをいって
しまって
430 :デフォルトの名無しさん2011/11/20(日) 07:29:00.82
http://seclan.dll.jp/c99d/c99d04.htm

(3) 関数引数での使用
 関数ブロックの中に、可変長配列を宣言することができますが、もちろん関数の引数にも
使うことができます。例えば、(1)のようにして使用します。可変長配列の中に使う変数は、
そこで使用する以前に他で宣言されていて、コンパイラに対して可視になっている必要が
あります。したがって、void sumup(int data[m][n], int m, int n){ ... } のような関数定義は、
ファイルスコープレベルで m や n という整数変数が宣言されていない限りエラーになります。

なんじゃこりゃ
使えんなー

全部main()内に書くか
435 :デフォルトの名無しさん2011/11/20(日) 09:15:02.50
>>430
書いてあるようにvoid sumup(int m, int n, int data[m][n])ならおkって意味だろ
437 :デフォルトの名無しさん2011/11/20(日) 09:18:42.28
>>435
void sumup(int data[*][*]. int m, int n);

プロトタイプ宣言で先に可変長配列を持ってきたい時はこう書く必要があるみたいだな
451 :デフォルトの名無しさん2011/11/21(月) 01:01:05.52
雑談すまん。
小さいコードなんで処理を追えるから勉強になります。
454 :デフォルトの名無しさん2011/11/21(月) 02:32:02.30
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
線形リスト構造で、整数を1つ入れる度にソートし、出力するプログラムを作成せよ
配列はitem[11]とnext[11]を用意する。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限:22日まで
[5] その他の制限:構造体はなるべく分かりやすくお願いします
よろしくお願いします
455 :デフォルトの名無しさん2011/11/21(月) 02:58:47.20
>>454
問題に書き写し間違いは無い?

>配列はitem[11]とnext[11]を用意する。
なら
int item[11];
int next[11];

>[5] その他の制限:構造体はなるべく分かりやすくお願いします
だと
struct list{
int item;
strruct list *next;
}data[11];

のように、やり方が互いに違うと思うんだが。
456 :デフォルトの名無しさん2011/11/21(月) 03:06:24.45
>>454
structとポインタ習ってます?
457 :デフォルトの名無しさん2011/11/21(月) 08:40:13.50
>>455-456
すみません。構造体云々は間違えてす
ポインタでした。
構造体はまだ習ってないです。
459 :デフォルトの名無しさん2011/11/21(月) 09:04:00.57
>>457
それだと配列nextの扱いはどうなるんだ?
配列itemと内容が同じになりそうなんだが。
460 :デフォルトの名無しさん2011/11/21(月) 09:13:04.92
>>459
勘違いした。
463 :デフォルトの名無しさん2011/11/21(月) 10:39:56.99
>>454
ポインター(int *p など)は使っていない。
http://ideone.com/bBX9r
475 :4542011/11/21(月) 21:32:43.27
>>463
ありがとうございます。
諸事情で今はWinVCしか使用出来ないのですが、
これだとiとjとnextが定義されないのですが、iとjとnextを初期化してもエラーになるのはどうしてでしょうかね?
458 :デフォルトの名無しさん2011/11/21(月) 08:56:51.98
え、ポインタ?構造体を使わずにポインタを使う線形リスト?
461 :デフォルトの名無しさん2011/11/21(月) 09:15:29.05
item[]はただのコンテナで、next[]に次のitemの要素のインデックスを
保持するとかなするんじゃ?
とにかくリストのデータ構造が実現されていれば別に構造体じゃなくてもいい。
462 :4542011/11/21(月) 10:12:33.80
わかりづらくてホントにすみません。
言いたいことは、>>461さんのであってると思います。
464 :デフォルトの名無しさん2011/11/21(月) 11:12:33.86
挿入ソートかなこれ
C99じゃないとコンパイルエラーが出るな
468 :デフォルトの名無しさん2011/11/21(月) 16:20:09.76
>>464
gcc -std=c89
でコンパイル通るけど、エラーメッセージは?
469 :デフォルトの名無しさん2011/11/21(月) 18:08:42.75
gccじゃなくてbcc32を使ってた
初期化の部分で最低一個データを入れないとエラーになった
Eclipse CDTからMinGWで -std=c89 でやると確かにエラーが出ない
bcc32が間違ってるのか
470 :デフォルトの名無しさん2011/11/21(月) 18:25:16.15
[2]つぎの関数をつくる
void zeroSuppress(char *src, char *dst, char pos, char flg)
posは小数点を挿入する位置で1なら1桁目と2桁目の間に
小数点があるものとしてゼロサプレスします。
文字数<=posの場合処理しない。
動きの例
src = "0123456"、 pos = 1 →dst = "123456"
src = "0012500" pos = 2 →dst ="12500"
src = "0000001" pos = 3 →dst ="0001"
src = "000B12" pos = 2 →dst ="000"(Bとそれ以降は無視)
flg = 1だと\0でうめる
src = "0000001" pos = 3 →dst = "\0\0\00001"
472 :デフォルトの名無しさん2011/11/21(月) 20:11:39.05
>>470 宿題じゃなさげな・・・
引数にchar使うよーなのは・・・・かなり特殊な環境に思うんだが。
flg=1だと・・・"\0" "\0" "\000" "01"と解釈でいいんかしら?
476 :デフォルトの名無しさん2011/11/21(月) 21:50:35.50
>>470
Bがある場合と、0埋めが判らないので、作りかけ。
http://ideone.com/ntI1q
513 :デフォルトの名無しさん2011/11/22(火) 12:08:22.93
>>470,511
'Bとそれ以降は無視'が不明なので作りかけ。
・英字が含まれていたらpos,flg無効?
http://ideone.com/30Kn3
514 :デフォルトの名無しさん2011/11/22(火) 12:17:09.18
>>513
数字以外だとその文字とそれ以降を無視します。
たとえば
"0234YB00"だと"0234"の文字数4として扱います。
flgは有効です。このときposが1なら"234"
posが3なら"0234"となります。
515 :デフォルトの名無しさん2011/11/22(火) 12:59:18.96
>>514
もしかしたら、'n桁目'というのは右から数えてる?
516 :デフォルトの名無しさん2011/11/22(火) 13:06:07.92
>>515
yes
517 :デフォルトの名無しさん2011/11/22(火) 13:09:30.49
>>516
了解。
>>数字以外だとその文字とそれ以降を無視します。
これで左からだと解釈してた。
519 :デフォルトの名無しさん2011/11/22(火) 16:10:22.23
520 :デフォルトの名無しさん2011/11/22(火) 16:39:34.64
>>>470,516,519
バグ修正
http://ideone.com/YquJW
522 :デフォルトの名無しさん2011/11/22(火) 17:21:51.36
>>519
ありがとう。
524 :デフォルトの名無しさん2011/11/22(火) 18:13:37.81
>>519
おーいバグってるぞ
ポインタがさかのぼりすぎ

Error 00001. 0x140300 (Thread 0x04D8):
Pointer arithmetic underrun: 0x0012FF1F-4, that is at offset 3-4 in local
block 0x0012FF1C(=[ebp-0x70] @dai45.exe:0x01:00040A) (size 100).
| dai45.c line 36:
| *pd++ = *ps++;
| *pd = '\0';
|> pd -= (pos - '0'+2);
|
| while (pd >= dst) { /* 不要な0をnullにする */
Call Tree:
0x004012AA(=dai45.exe:0x01:0002AA) dai45.c#36
0x0040140A(=dai45.exe:0x01:00040A) dai45.c#63
0x32C9C8AA(=CC32120MT.DLL:0x01:09B8AA)

------------------------------------------
Error 00002. 0x140300 (r) (Thread 0x04D8):
Pointer arithmetic underrun: 0x0012FF1F-4, that is at offset 3-4 in local
block 0x0012FF1C(=[ebp-0x70] @dai45.exe:0x01:00048A) (size 100).
| dai45.c line 36:
| *pd++ = *ps++;
| *pd = '\0';
|> pd -= (pos - '0'+2);
|
| while (pd >= dst) { /* 不要な0をnullにする */
Call Tree:
0x004012AA(=dai45.exe:0x01:0002AA) dai45.c#36
0x0040148A(=dai45.exe:0x01:00048A) dai45.c#72
0x32C9C8AA(=CC32120MT.DLL:0x01:09B8AA)
471 :デフォルトの名無しさん2011/11/21(月) 18:55:57.69
何がしたいのか良く判らんのだけど
src = "0012500" pos = 3 の場合は?
473 :デフォルトの名無しさん2011/11/21(月) 20:20:05.80
>>472
宿題ではなさそうってのは同意だが、NULLで埋めて右詰って用途が謎だ
nullnullnull0001 って話だと思うよ

でもなんか仕様が良く判らんな、 >>471 への回答も無いし flg による動作に一貫性が無い
上司に要求仕様をちゃんと確認した方が良い
474 :デフォルトの名無しさん2011/11/21(月) 20:39:29.03
んー。エスパーしてみるが。
7セグメントLED(小数点付き)の出力用。。。
nulは非表示・・・。
文字数固定。
507 :デフォルトの名無しさん2011/11/22(火) 08:48:51.75
>>471
src = "0012500" pos = 3 → dst = "12500"
flg = 1なら"\0\012500"

>>474
すごいです。当たりです。
508 :デフォルトの名無しさん2011/11/22(火) 08:51:53.71
>>507
posが何を意味しているのかわからない。
509 :5082011/11/22(火) 08:53:04.46
>>507
言葉で説明して下さい。
510 :デフォルトの名無しさん2011/11/22(火) 09:13:37.55
>>507
クイズかよw
511 :デフォルトの名無しさん2011/11/22(火) 09:36:01.49
>>508
posは小数点が挿入される位置です。

src = "0012500" pos = 3 → dst = "12500"
これだと12.500となるため頭の02つは消えます。
flg=1だと\0でうめるので0が\0になります。
512 :5082011/11/22(火) 09:43:01.14
>>511
ごめんなさい。わかりました。
477 : ◆EiEUm/qHNk 2011/11/21(月) 22:30:36.83
[1] 授業単元:C言語
[2] 問題文:3*3の逆行列Aをもとめよ
http://ideone.com/erZBk
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラとバージョン: gcc
 [3.3] 言語:C言語
[4] 期限:11月22日まで
[5] その他の制限:math.h や #difine などは習っていないので使えません。
アップロダにてソースを上げてみたのですが、学校では値が出ました、
あとは、ゼロを入力した場合、値がおかしくなるので、行交換?などをしたいのですが
どうすればいいのかわかりません。
先日、ガウスの消去法で、行交換のしかたを教えてもらったのですが、上記にあげた
ソースにも行交換をしていただけるとありがたいです
478 :デフォルトの名無しさん2011/11/21(月) 22:54:28.63
>>477
3x3 の逆行列なら公式を使うという手もあるぞ
使っちゃダメかもしれないがw
505 :デフォルトの名無しさん2011/11/22(火) 07:42:39.22
>>477
http://ideone.com/OeQkS

一応行列Aが潰れていないか(正則であるか)のチェックを入れた
不要だったらカットして下さい
518 : ◆EiEUm/qHNk 2011/11/22(火) 14:15:05.99
>>505
ありがとうございます
480 :デフォルトの名無しさん2011/11/21(月) 23:31:31.09
[1] 授業単元:プログラミング技法、配列とポインタ
[2] 問題文(含コード&リンク):整数型配列a[10]とb[10]を宣言し、a[10]に任意で数値を10個入力する。
b[10]は初期値として0を代入しておく。
任意で入力された10個の整数のうち、奇数のみ抜き出してb[0]から順番に代入する。
最後に配列bの中身を出力し終了する。このとき0は表示されないようにすること。
[3] 環境
 [3.1] OS:win764bit
 [3.2] コンパイラ名とバージョン:cpad ver2.31
 [3.3] 言語:c
[4] 期限:11月22日18:00
[5] その他の制限:お願いします
484 :デフォルトの名無しさん2011/11/22(火) 01:46:05.56
>>480
#include <stdio.h>
#include <memory.h> //だっけ?

int main(void)
{
 int a[10],b[10];
 int i,j;
 memset(b,0,10);
 for(i=0;i<10;i++){scanf("%d",a[i]);}
 for(i=j=0;i<10;i++,j++){
  if(a[i]&1)b[j]=a[i]);
  printf("%d\n",b[j]);
 }
 return(0);
}
523 :デフォルトの名無しさん2011/11/22(火) 18:04:19.44
>>482
>>484
ありがとうございました
481 :デフォルトの名無しさん2011/11/22(火) 00:21:56.67

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):(1,10,5) (1,20,10)...というテキストデータを読み込み、一番左の数字(ここでいう1と1)を一つの配列として表示と書きこみをするプログラム。(真ん中も右の数字も同じように処理する)
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) c言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 11月23日 15時
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 何でもおk
482 :デフォルトの名無しさん2011/11/22(火) 00:53:34.84
>>480
http://ideone.com/JDaXT

>>481
テキストの仕様は一行なのか、複数行なのか、また数字は必ず3つの組?
一つの配列として表示とはどのように? 書きこみとはどこに?
483 :デフォルトの名無しさん2011/11/22(火) 00:59:30.49
>>482
すみません。

数字は必ず三つの組で、テキストは(1,10,5)改行(1,20,10)と続いていきます。
一つの配列として表示とは、「1,1,1,1,1,1,1,1...]みたいな感じだと思います。
書きこみ先は、新規のファイルにだと思います。
485 :デフォルトの名無しさん2011/11/22(火) 03:21:57.86
>>481
まさかこんなに手間取るとは思わなかった…。
http://ideone.com/2tvoW
486 :デフォルトの名無しさん2011/11/22(火) 03:31:32.09
>>481
すまない。>>485はバグ有り。
http://ideone.com/Vd969
487 :デフォルトの名無しさん2011/11/22(火) 03:41:11.76
>>481
http://ideone.com/IyhAO
./a.out <input で画面出力
./a.out <input >output でファイル出力
テケトーですまん。
488 :デフォルトの名無しさん2011/11/22(火) 04:03:58.50
>>486
本当にありがとうございます。
すみませんが、./a.out [infile] [outfile]で実行しても、outfileに書きこまれないのですがやり方が悪いのでしょうか?
489 :デフォルトの名無しさん2011/11/22(火) 04:05:37.40
>>487
本当にありがとうございます。
申し訳ないのですが、配列の表示の仕方は縦ではなくて横が良かったのですが変更はできますか?
490 :デフォルトの名無しさん2011/11/22(火) 04:08:39.61
>>481ですが
付けたしになってしまって本当に申し訳ないのですが、書きこみは左、真ん中、右と一つずつ分けてそれぞれ3つのファイルに出力しないといけないみたいです。すみません。
491 :デフォルトの名無しさん2011/11/22(火) 04:16:00.35
>>490
http://ideone.com/U8KVy
ファイル開けない理由はよくわからない。
残念ながらこっちの環境では成功してる。
492 :デフォルトの名無しさん2011/11/22(火) 04:18:56.73
>>491 バグ有り。またやってしまった。
初期化部分修正。
http://ideone.com/jnTTi
493 :デフォルトの名無しさん2011/11/22(火) 04:25:23.29
>>491
ありがとうございます!
空のテキストファイルをoutfileにしてるのですが、実行しても何も書きこまれません。
環境は同じはずなのに何でだろう・・・
495 :デフォルトの名無しさん2011/11/22(火) 04:35:28.81
498 :4952011/11/22(火) 04:40:25.34
500 :デフォルトの名無しさん2011/11/22(火) 05:27:12.86
>>481
これでダメならもうお手上げです…。
http://ideone.com/feTX0

485=486=491=492=494=497でした。
501 :デフォルトの名無しさん2011/11/22(火) 05:36:36.47
>>500
何度もありがとうございます。
ただ、上手くいきません・・・
自分で変える部分は、13行目のfilenameとmodeの部分だけですよね?
503 :デフォルトの名無しさん2011/11/22(火) 05:55:11.87
>>501
fcloseをfix。
http://ideone.com/C01UB

何も変更せずにそのままコンパイルしてください。
コンパイル後の使用方法 (読み込みファイルがtest.txtの場合)

./a.out text.txt test1.txt test2.txt test3.txt
521 :4812011/11/22(火) 16:41:15.63
>>503
ありがとうございます!
何も変更しなかったら成功しました!本当にありがとうございました。
494 :デフォルトの名無しさん2011/11/22(火) 04:35:10.99
#include<stdio.h>
int main(int a,char** b){
FILE* fp;
if(a>1&&fp=fopen(b[1],"w")){ fprintf(fp,"test\n"); fclose(fp); }
return 0;
}

これ
./a.out outfile
で文字は入ります?
497 :デフォルトの名無しさん2011/11/22(火) 04:38:10.24
間違えました。ごめんなさい。

#include<stdio.h>
int main(int a,char** b){
FILE* fp;
if(a>0){
if(fp=fopen(b[1],"w")){ fprintf(fp,"test\n"); fclose(fp); }}
return 0;
}
499 :デフォルトの名無しさん2011/11/22(火) 04:51:13.82
>>497
文字入りました!
502 : ◆EiEUm/qHNk 2011/11/22(火) 05:46:49.54
だ、だれか逆行列のピボット選択のしかたを教えてください、、、
506 :デフォルトの名無しさん2011/11/22(火) 07:44:39.27
>>502
遅れてすみません
昨晩早く寝たもんで
504 :デフォルトの名無しさん2011/11/22(火) 05:56:03.12
致命的なtypo

コンパイル後の使用方法 (読み込みファイルがtest.txtの場合)
./a.out test.txt test1.txt test2.txt test3.txt
525 :デフォルトの名無しさん2011/11/22(火) 18:18:09.52
http://codepad.org/Ufh9JE03の実数の出力が上手くいきません
どうしても「5」ではなく「0」と出力されてしまいます
教えて下さい
526 :デフォルトの名無しさん2011/11/22(火) 18:49:35.28
>>525
X Jissu(double j) : Fukusosu() {}
O Jissu(double j) : Fukusosu(j,0) {}
527 :デフォルトの名無しさん2011/11/22(火) 19:52:24.02
>>526
なるほど!そういうことでしたか
ありがとうございます
528 :デフォルトの名無しさん2011/11/22(火) 20:06:47.97
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://iup.2ch-library.com/i/i0484725-1321959355.jpg
http://iup.2ch-library.com/i/i0484726-1321959355.jpg
http://iup.2ch-library.com/i/i0484737-1321959884.jpg
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2011年11月24日
[5] 解答例がある課題はそれをそのまま使っていただけたらと思います。

よろしくお願いします。
529 :デフォルトの名無しさん2011/11/22(火) 20:20:47.32
>>528 できれば、画像ファイルじゃなくて文字でくださいな。
530 :デフォルトの名無しさん2011/11/22(火) 20:46:07.43
>>528
そのまま使っていただけたらって、打ち込めって事?
533 :5282011/11/22(火) 20:54:47.30
>>529 >>530
すいません!訂正しました。よろしくお願いします。

[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://iup.2ch-library.com/i/i0484725-1321959355.jpg
http://iup.2ch-library.com/i/i0484726-1321959355.jpg
解答例等>>534
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2011年11月24日
[5] 解答例がある課題はそれをそのまま使っていただけたらと思います。
557 :デフォルトの名無しさん2011/11/22(火) 23:10:52.76
570 :デフォルトの名無しさん2011/11/23(水) 11:55:56.47
>>557
ありがとうございます!
531 :デフォルトの名無しさん2011/11/22(火) 20:48:23.68
[1] 授業単元:プログラミングI
[2] 問題文(含コード&リンク):角度0度から90度までのsin(x)の値を1度刻みで表示する
プログラムを作りなさい。
πの値は3.141592ではなく、M_PIを用いること。
[3] 環境
 [3.1] OS: (Windows/Linux/等々) windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) c言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)  2011年11月22日 23:50まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) for文またはwhile文を用いて答える。

プログラミング初心者です。いろいろ調べたのですが、答えが出ないので教えてください。お願いします。
537 :デフォルトの名無しさん2011/11/22(火) 20:58:22.39
>>531
こういうこと?
http://ideone.com/Rjktr
538 :デフォルトの名無しさん2011/11/22(火) 21:06:46.15
>>537
はい!これを探してました!
助かりました、ありがとうございます。
540 :デフォルトの名無しさん2011/11/22(火) 21:11:39.21
>>538
出遅れた orz
一応貼っておく。 http://ideone.com/0x4zz
542 :デフォルトの名無しさん2011/11/22(火) 21:44:21.02
>>531
#include <math.h>

#ifndef M_PI
#define M_PI 3.1415926
#endif

int main(void)
{
int i;
for (i = 0; i <= 90; i++)
printf("%d %f\n", i, sin(i / 180.0 * M_PI);
return 0;
}

コンパイルはgcc a.c -o a.out -lm
実行は./a.outで。
534 :5282011/11/22(火) 20:55:47.56
課題2 解答例
struct cell *makeNullList(void)
{
struct cell *list;

list = (struct cell*)malloc(sizeof(struct cell));
if (list == (struct cell*)NULL) {
fprintf(stderr, "makeNullList: can not allocate memory for new list.\n");
exit(1);
}

list->next = (struct cell*)NULL;

return list;
}

課題3 解答例
struct cell *nextCell(struct cell *target, struct cell *list)
{
struct cell *next = (struct cell*)NULL;

if (target != (struct cell*)NULL) {
next = target->next;
}

return next;
}
536 :5282011/11/22(火) 20:56:42.46
>>534の続き
課題9 解答例
struct cell *locateCell(int data, struct cell *list)
{
struct cell *current;

current = firstCell(list);

while ((current != (struct cell*)NULL)
&& (retrieveCell(current, list) != data)) {
current = nextCell(current, list);
}

return current;
}

プロトタイプ宣言
struct cell *makeNullList(void);
struct cell *nextCell(struct cell *, struct cell *);
struct cell *firstCell(struct cell *);
struct cell *endCell(struct cell *);
struct cell *previousCell(struct cell *, struct cell *);
struct cell *insertCell(int, struct cell *, struct cell *);
struct cell *deleteCell(struct cell *, struct cell *);
int retrieveCell(struct cell *, struct cell *);
struct cell *locateCell(int, struct cell *);
void deletelist(struct cell *);
void printlist(struct cell *);
535 :デフォルトの名無しさん2011/11/22(火) 20:55:52.15
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):
逆アフィン変換で幾何学変換を行うプログラムを作成せよ。2つの補間法(バイリニア,バイキュービック)を使用すること
http://codepad.org/W47NMmWq
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン: windows visual studio2008
 [3.3] 言語: c++
[4] 期限:2011年11月24日 13:00
[5] バイリニアはなんとか作成ができたのですがバイキュービックが全然理解できません。
貼ってあるのはバイリニアのプログラムです。

541 :デフォルトの名無しさん2011/11/22(火) 21:28:37.68
[1] プログラミング応用
[2]問1 キーボードからUser構造体の情報(ID、ニックネーム、生年月日)を1名分入力し、
    その内容を表示するプログラムを作成せよ
 注:ニックネームにスペースを含めてはいけない
   scanf()中の文字列変数の指定方法に注意
指定方法
User A;
scanf("%s %s %d/%d/%d",
A.ID, A.name,
&A.year, &A.month, &A.day);
問2  問1のプログラムを改造し、複数名のユーザー情報をキーボードから入力し、
    最初のユーザーと同じ誕生月のユーザーの、「生年月」とニックネーム
    の一覧を出力するプログラムを作成せよ
  注:入力するユーザー数は固定値でよい(5名程度)
     入力する情報はダミーでよい
[3] 環境
 [3.1] W7
 [3.2] Visual C++ 2010 Express
 [3.3] どちらでも可
[4] 2011年11月25日22:00

よろしくお願いします。
547 :デフォルトの名無しさん2011/11/22(火) 22:03:42.97
>>541
値チェック無し。
1. http://ideone.com/xw2qm
2. http://ideone.com/JQLbB
544 :デフォルトの名無しさん2011/11/22(火) 21:55:34.15
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):5 つの要素を持つdouble 型配列vx[] に対し
て,その各要素の正負を反転するプログラムを,
ポインタ演算を用いて作成せよ.例えばvx[] が
{1.1, 2.2, -3.3, 4.4, -5.5}であったとき,プログ
ラムの結果vx[] は{-1.1, -2.2, 3.3, -4.4, 5.5}
となる.ただし,プログラムは以下の要件を満たすこと
とする.

解答例等
5 つの実数を入力してください
vx[0] = 1.1
vx[1] = 2.2
vx[2] = -3.3
vx[3] = 4.4
vx[4] = -5.5
正負を反転させました。
vx[0] = -1.100000
vx[1] = -2.200000
vx[2] = 3.300000
vx[3] = -4.400000
vx[4] = 5.500000
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2011年11月24日 9:00
[5] double 型配列vx[] はmain 関数内で宣言し,以下
の実行例のように各要素の値をユーザに入力させよ
545 :デフォルトの名無しさん2011/11/22(火) 21:56:30.19
>>544
続き
[5]
• main 関数内でポインタ変数vxp を宣言し,vxp を
用いたポインタ演算によって配列vx[] の各要素の
値を書きかえること.
• ポインタ演算で正負を反転させる際には,添字演
算子[] は使用しないこと.
• vx[] の5 つの要素すべてを書きかえてから,最後
にその結果を表示すること
550 :デフォルトの名無しさん2011/11/22(火) 22:15:56.77
>>544
こんな感じでどうでしょう?

http://ideone.com/z9cu3
551 :デフォルトの名無しさん2011/11/22(火) 22:28:27.17
>>>544付け加えときます。すいませんポインタの問題です
553 :デフォルトの名無しさん2011/11/22(火) 22:35:54.81
554 :デフォルトの名無しさん2011/11/22(火) 22:36:46.02
555 :デフォルトの名無しさん2011/11/22(火) 22:38:21.08
546 :デフォルトの名無しさん2011/11/22(火) 21:58:59.18
なんで今日はこんなに宿題おおいん
549 :デフォルトの名無しさん2011/11/22(火) 22:08:00.42
>>546
明日休みだからじゃね?
561 :デフォルトの名無しさん2011/11/23(水) 00:46:12.24
>>546
いや、嫌がらせだよ。
548 :デフォルトの名無しさん2011/11/22(火) 22:07:29.00
1] 授業単元:画像処理
[2] 問題文(含コード&リンク):
text.txtを読み取って0なら空白を、1なら*を表示するプログラム(test.c)がある。
これを改良してtest.txtをtext.bmpに変換するプログラムを作れ。
(ただし、0を白色、1を黒色とする。)
test.c
http://codepad.org/Xk3b2CZq

/********test.txtの中身**********
11 6
0 1 1 1 1 1 0 0 0 0 0
0 1 0 1 1 0 1 0 0 0 1
0 1 1 1 1 1 0 0 0 0 0
0 1 0 0 1 1 0 1 0 0 1
0 1 1 1 0 1 0 0 0 0 0
0 1 1 0 0 1 0 0 0 0 0
******************************/

[3] 環境
 [3.1] OS:windows7 32bit
 [3.2] コンパイラ名とバージョン: Borland5.51
 [3.3] 言語: c
[4] 期限:2011年11月27日 17:00
[5] windouwsAPIなど、複雑なものは使わずにお願いします。
552 :デフォルトの名無しさん2011/11/22(火) 22:34:44.64
>>548
bmpのフォーマットは?
556 :デフォルトの名無しさん2011/11/22(火) 22:41:05.68
>>552
4bitでお願いします
558 :デフォルトの名無しさん2011/11/22(火) 23:15:30.35
>>556
構造体は自前?ヘッダ?
559 :デフォルトの名無しさん2011/11/23(水) 00:03:06.03
>>558
borland5.11にあるヘッダファイルなら使ってもいいと思います
560 :デフォルトの名無しさん2011/11/23(水) 00:04:33.19
>>558
自前で簡単にできそうなら、できればそれでお願いします
562 :デフォルトの名無しさん2011/11/23(水) 01:26:51.10
>>560
一応聞いておくけどbmpのフォーマットはwindows用でいいんだよね…?
563 :デフォルトの名無しさん2011/11/23(水) 01:41:41.66
>>562
はい、windowsでお願いします
564 :デフォルトの名無しさん2011/11/23(水) 04:30:34.72
>>563
http://ideone.com/V1cI0
bcc32コンパイル動作確認済み。
565 :デフォルトの名無しさん2011/11/23(水) 04:44:13.43
>>564
すまない、白と黒が逆だった
http://ideone.com/jXvdI
567 :デフォルトの名無しさん2011/11/23(水) 10:54:47.22
>>565
ありがとうございます!
でもそのプログラムはどうやって使えばいいのでしょうか?
test.txtと同じディレクトリでコンパイルして実行しても
usage: program.exe file-IN file-OUTと出るだけです。
571 :デフォルトの名無しさん2011/11/23(水) 14:46:23.20
>>567
変えました…。これでいけるはずです…。
http://ideone.com/hScrG

ちなみに前のは、cmd.exeから、

cd [プログラムの入ってるフォルダの絶対パス]
[プログラムの名前] test.txt test.bmp

とやることで入力、出力を指定できます。
572 :デフォルトの名無しさん2011/11/23(水) 15:17:02.93
>>571
できました、ありがとうございます!
ちなみにwindef.hを使えばもっと簡単にできるのですか?
566 :デフォルトの名無しさん2011/11/23(水) 09:05:42.47
[1] 授業単元:プログラミング演習 2
[2] 問題文(含コード&リンク)
行列の積を計算する関数multの関数プロトタイプ宣言が以下のように記述されている
void mult(double *ma, double *mb, double *mc, int n);
いま、定数Nの値がmain関数の外で#define N 3 と定義されている。N×Nの正方行列maとmb,そしてmcはmain関数の中で
double ma[N][N];
double mb[N][N];
double mc[N][N] = { 0.0 } ;
と定義されている。このとき関数multを次のように呼び出して行列の積mc=ma • mb を計算したい。
mult((double *)ma, (double *)mb, (double *)mc, N);
関数multをブラケット演算子[]なしで書き上げなさい。
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:11月23日(出来れば早めにお願いします)
568 :デフォルトの名無しさん2011/11/23(水) 11:41:40.55
569 :デフォルトの名無しさん2011/11/23(水) 11:50:38.44
>>566
>>568さんのとは少し違う方法で

http://codepad.org/zc9gRFSd
579 :5662011/11/23(水) 19:54:21.48
>>568の方のwarningを消すにはどうすればいいでしょうか?
581 :デフォルトの名無しさん2011/11/23(水) 20:09:52.13
573 :デフォルトの名無しさん2011/11/23(水) 15:23:35.21
すべての環境でビットマップ用にヘッダ群が用意されてるわけじゃないだろうからねぇ・・・
WindowsSDKが入ってるならWingdi.hにBITMAPINFOHEADER等が用意されているけど。
574 :デフォルトの名無しさん2011/11/23(水) 16:30:43.65
>>573
そうなんですか、ありがとうございました!
575 :デフォルトの名無しさん2011/11/23(水) 17:39:05.18
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):変数内の文字列変換
     http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi?mode=downld&no=4878
[3] 環境
 [3.1] OS:指定なし
 [3.2] コンパイラ名とバージョン:指定なし
 [3.3] 言語:C
[4] 期限:2011年11月24日
[5] その他の制限:

よろしくお願いします

576 :デフォルトの名無しさん2011/11/23(水) 17:54:22.29
>>575
こういうこと? http://codepad.org/f5RIxMUG
577 :デフォルトの名無しさん2011/11/23(水) 17:55:04.04
>>575
解いてみようと思ったけど、shift-JIS?みたいで読めないな。
テンプレにあるアップローダーならokだと思うが。
578 :デフォルトの名無しさん2011/11/23(水) 19:49:44.56
>>577
>解いてみようと思ったけど、shift-JIS?みたいで読めないな。
んなこたぁない
611 :5752011/11/24(木) 02:37:26.92
>>576
作成ありがとうございました

でもこれって型を変えて表示しているだけですよね
ASCIIコードから対応する文字に変換ってできませんかね?


620 :デフォルトの名無しさん2011/11/24(木) 11:04:01.58
>>611
snprintfとprintfを使う問題ですよね?
ASCIIコードから対応する文字に直接変換出来ないこともないけど、
それだとsnprintfを使う必要性がないと思います。
問題の趣旨がsnprintfを使って変換することなので、これでいいのではないのですか?
580 :デフォルトの名無しさん2011/11/23(水) 20:04:22.37
[1] 授業単元: 実数型変数の精度
[2] 問題文(含コード&リンク): 実数型の形式は以下のものとする
符号部(1ビット)   指数部(nビット)    仮数部(mビット)

以下のプログラムの実行結果から実数型変数の形式を類推する方法の検討
http://ideone.com/cLgGK
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: c
[4] 期限:
591 :デフォルトの名無しさん2011/11/23(水) 23:36:01.60
>>590
ありがとうございます

あと、
>>580
のfloatをlong doubleに変えた場合も同じやり方でいいんでしょうか?
592 :デフォルトの名無しさん2011/11/23(水) 23:56:39.38
>>591
あたり前だけど、試してから質問すればいいんでないかい?

593 :デフォルトの名無しさん2011/11/24(木) 00:05:41.71
>>592

試してみたら、仮数部が63ビットとかになったんですが。


多分合ってないと思うんですけど、どうでしょうか?
584 :デフォルトの名無しさん2011/11/23(水) 21:55:45.61
初心者です、お願いします。


新規にフォームアプリケーションプロジェクトを作成すると
左のソリューションエクスプローラーの中に、
「ソースファイル」と「ヘッダーファイル」があります。

map関数を使いたいのですが、
#include <map>は「stdafx.h」に書けばいいですか?

また、
「Debug::WriteLine」を使いたいので「using namespace System::Diagnostics;」と書きたいのですが、
「stdafx.h」に書けばいいですか?
587 :5832011/11/23(水) 22:08:10.25
追記:wikiではよく分からなかったので、噛み砕いて教えて下さい
588 :デフォルトの名無しさん2011/11/23(水) 23:02:02.66
>>587 1)Wikipediaの当該箇所をコピペ
(宿題を提出する上では理解する必要なない)

2)奇数から偶数になるときの値から-1〜+1で提出すればよし。

だいぶ噛み砕いたつもり。

589 :デフォルトの名無しさん2011/11/23(水) 23:15:45.09
>>588

wikiのだとオフセットを用いて表現する、という条件が満たされていないような・・・
594 :デフォルトの名無しさん2011/11/24(木) 00:14:38.70
>>587
X wiki
O Wikipedia
590 :デフォルトの名無しさん2011/11/23(水) 23:17:50.19
オフセット=バイアスね。
595 :デフォルトの名無しさん2011/11/24(木) 00:26:01.85
sizeof(long double)
がおいらの環境で16(128ビット)なんでアリなんじゃないですかねぇ。
596 :デフォルトの名無しさん2011/11/24(木) 00:32:53.27
ああ、宿題の範囲こえてるからどーでもいーんじゃw?
printf("%Lf", long_double_value);
ってしないと正しく表示しないかも。
598 :デフォルトの名無しさん2011/11/24(木) 00:40:22.85
>>595
色々と調べたら仮数部は113ビットらしいんですが・・・


>>596
どういうことですか?
597 :デフォルトの名無しさん2011/11/24(木) 00:33:59.93
[1]データ構造とアルゴリズム
[2]
以下の関数を作成しなさい。

llist_t reverse(const llist_t ls);
連結リストlsの要素を逆順に並べ替えた連結リストを新たに作成して返す。

補足:
typedef struct node {
int data;
struct node *next;
} node_t;

typedef node_t *llist_t;
[3] Windows
[3.1]windows 7
[3.2] EasyIDEC Ver 0.0.9.0
[3.3] C言語
[4] 11月25日
[5] 再帰呼び出しを必ず用いる。

599 :デフォルトの名無しさん2011/11/24(木) 00:41:48.28
>>597
多分、ノード作成用の関数を教わっているはずなので教えてくださいな。
600 :デフォルトの名無しさん2011/11/24(木) 00:43:33.70
>>599 
すみません書き忘れてました。

int *allocInt(void){
return (int *)malloc(sizeof(int));
}
です。
602 :デフォルトの名無しさん2011/11/24(木) 00:49:48.21
>>599
ごめんなさい

node_t *allocNode(){
return (node_t *)malloc(sizeof(node_t));
}

でした。
613 :デフォルトの名無しさん2011/11/24(木) 03:25:54.90
>>597
ttp://ideone.com/rojQm
なんか美しくない
614 :デフォルトの名無しさん2011/11/24(木) 03:36:23.35
>>613
こんな夜中までありがとうございます
参考にさせてもらいます
601 :デフォルトの名無しさん2011/11/24(木) 00:44:02.73
printf("%d", [charからint]);
printf("%f", [floatかdouble]);
printf("%Lf", [long double]);
ということ。
603 :デフォルトの名無しさん2011/11/24(木) 00:54:38.19
>>601

%Lf でやっても変わりませんでした。
604 :デフォルトの名無しさん2011/11/24(木) 00:57:50.54
>>603
コードの良し悪しの場合はコード全部UPすべし
609 :デフォルトの名無しさん2011/11/24(木) 01:26:14.15
>>604

http://ideone.com/vfLZJ

ちなみにunixで実行したらsizeofは16ビットでした
605 :デフォルトの名無しさん2011/11/24(木) 01:01:44.88
【質問テンプレ】
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):標準出力から文字型の配列str[3][20]に3つの文字列を入力し入力した順番に標準出力する。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語: C
[4] 期限: 2011年11月4日8時まで
[5] その他の制限: 入力ではscanfでなくfgetsとsscanfを利用しないといけないみたいです。

それでは宜しくお願いします
606 :デフォルトの名無しさん2011/11/24(木) 01:05:18.97
607 :デフォルトの名無しさん2011/11/24(木) 01:06:17.35
ごめん、sscanf使ってないから>>606は無かったことにして下さい。
608 :デフォルトの名無しさん2011/11/24(木) 01:22:09.73
>>605
マルチ?

C言語なら俺に聞け(入門編)Part 92
http://hibari.2ch.net/test/read.cgi/tech/1320933306/
#545,557
617 :デフォルトの名無しさん2011/11/24(木) 10:06:41.81
>>605
こういう事?
#include <stdio.h>

int main(void){
char str[3][20], s[100];
int i, w;

printf("3つの文字列を入力して下さい(例:abc defgh ijkl)¥n");
fgets(s, sizeof(str[i]), stdin);

w = sscanf(s, "%s %s %s", str[0], str[1], str[2]);

printf("¥n");
for (i = 0; i < 3 && i < w; i++)
printf("入力した文字列の%d番目は%sです¥n", i, str[i]);

return 0;
}
644 : ◆QZaw55cn4c 2011/11/25(金) 08:31:46.59
>>617
>printf("3つの文字列を入力して下さい(例:abc defgh ijkl)¥n");
>fgets(s, sizeof(str[i]), stdin);

i が未初期化。
というかループに書くのわすれたんですね。
610 :デフォルトの名無しさん2011/11/24(木) 01:50:27.64
【質問テンプレ】
[1] 授業単元:情報技術?
[2] 問題文(含コード&リンク):
以下の2つの要件を満たす、3行3列の行列の積を計算し、表示するプログラムmultiply.cを作成せよ。

(1)整数型の行列A,Bおよびそれらの行列積A*Bを、以下の配列名で宣言する(A,Bの値は各個人で自由に設定)。

int matrix_a[3][3]={{1,2,3},{4,5,6},{7,8,9}};/*行列A*/
int matrix_b[3][3]={{10,11,12},{13,14,15},{16,17,18}};/*行列B*/
int matrix_multiply_a_by_b[3][3]={{0,0,0},{0,0,0},{0,0,0}};/*計算結果代入用の行列*/

(2)行列の積A*Bのi行j列目の要素の計算を、for文を用いて行うこと。

[3] 環境
 [3.1] OS: Wiンdows Vista
 [3.2] 不明
 [3.3] 言語: C
[4] 期限: 11月25日

お願いします
612 :デフォルトの名無しさん2011/11/24(木) 03:13:22.18
>>610
#include <stdio.h>
#define f(x) for (x = 0; x < 3; x++) {
int main(void)
{
int matrix_a[3][3]={{1,2,3},{4,5,6},{7,8,9}};/*行列A*/
int matrix_b[3][3]={{10,11,12},{13,14,15},{16,17,18}};/*行列B*/
int matrix_multiply_a_by_b[3][3]={{0,0,0},{0,0,0},{0,0,0}};/*計算結果代入用の行列*/
int i,j,k;
f(i)f(j)f(k)
matrix_multiply_a_by_b[i][j] = matrix_a[i][k] * matrix_b[k][j];
}}}
f(j)f(i)printf("%5d", matrix_multiply_a_by_b[i][j]);}
printf("\n");}
}
645 : ◆QZaw55cn4c 2011/11/25(金) 08:35:24.39
>>612
>printf("\n");
普通 putchar('\n'); とかく。
というか、なんだかすごいマクロの使い方ですね。せめて { の数をあわさないと、うちのくそエディタが狂うんですけど。
616 :デフォルトの名無しさん2011/11/24(木) 07:28:18.76
ちょっと前のほうのレスを見て
宿題片付けますwiki なんてものが存在するのかと一瞬勘違いした
622 :デフォルトの名無しさん2011/11/24(木) 11:35:08.39
何処でオーバーフローするかを確認する宿題なんじゃねぇの?
例外ハンドラーを組み込むとかすれば良いんじゃね?
624 :デフォルトの名無しさん2011/11/24(木) 17:52:48.94
[1] 授業単元:リスト構造体
[2] 問題文(含コード&リンク):
enqueue()とdequeue()を用いて実行結果が

Please input E(登録) or D(削除): E
Input number and name: 8 Nakamura
Please input E(登録) or D(削除): E
Input number and name: 3 Saito
Please input E(登録) or D(削除): D
Number=8 Name=Nakamura
Please input E(登録) or D(削除): D
Number=3 Name=Saito
Please input E(登録) or D(削除): D
No Data!
Please input E(登録) or D(削除): E



のように動作するプログラムを作成せよ
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:VC2008
 [3.3] 言語:C
[4] 期限:11月25日
[5] その他の制限:
628 :デフォルトの名無しさん2011/11/24(木) 19:55:21.14
>>624
FIFOだな
・ポインタリンクで書くべきか配列のリングバッファで書くべきか判断できる?
・名前の文字数は無制限?
629 :デフォルトの名無しさん2011/11/24(木) 20:18:55.27
>>628
ポインタリンクで
名前の文字数は半角10文字までです

リスト構造体って難しい

632 :デフォルトの名無しさん2011/11/24(木) 22:06:39.78
>>629
見ての通りFIFOのルートをグローバル変数としている
回避するには enqueue() と dequeue() に node** pptop を渡せば良い、お勉強する気が有るなら書き直すのも良いだろう
ttp://codepad.org/bSCAqAQ7
633 : ◆QZaw55cn4c 2011/11/24(木) 22:16:03.67
634 :デフォルトの名無しさん2011/11/24(木) 22:23:40.74
>>632
なるほど
さて、明日参考書を買ってくるか
625 :デフォルトの名無しさん2011/11/24(木) 17:55:25.48
[1] 授業単元:C言語
[2] 問題文:123, 1.23, 1.2.3という数字を入力したとき、
       整数、小数、使用できない数字という分類に分けよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語: C言語
[4] 期限:[2011/12/5]

よろしくお願いいたします
626 :デフォルトの名無しさん2011/11/24(木) 18:40:10.39
627 :デフォルトの名無しさん2011/11/24(木) 19:53:51.73
>>626
ありがとうございます!

ちなみに、もしC++の場合だとどう変更になりますでしょうか?
出来たらやるという課題としてC++の場合があるのですが……
630 :デフォルトの名無しさん2011/11/24(木) 21:58:51.42
631 :デフォルトの名無しさん2011/11/24(木) 21:59:41.37
>>630
重ね重ね感謝いたします
ありがとうございました!
635 :デフォルトの名無しさん2011/11/24(木) 22:25:41.16


処理系によってはdoubleとlong double(さらに、処理系によってはfloatとdoubleとlong double)の形式が同一のものがあるが、そのようにするメリットについて述べよ。
636 :デフォルトの名無しさん2011/11/24(木) 22:28:26.92
>>635 コンパイラ作るときに楽だから。
638 :6352011/11/25(金) 00:10:19.22
>>636

レポートにまとめるんで、出来れば具体的にお願いします。
640 :デフォルトの名無しさん2011/11/25(金) 01:17:29.83
>>635 質問テンプレでそーゆーのは書こうね。
1)C言語は処理系依存
2)処理系が自然に扱える不動小数点数が限られている場合がある。
3)C言語処理系の作成者は環境にな形式を選択できる。

4)コンパイラ製作者が楽をでき、処理系も素直になる。
5)どーしても特定のフォーマットが欲しければプログラマが作ればよい。
具体的に書いた。プログラム書く以外はあまりコメしたくないのん。
まとめるのは>>638さんがやるよーに受け取った。
「処理系依存」とか「未定義」がなぜC言語に存在するかも調べると、
理解深まるよ。
641 :デフォルトの名無しさん2011/11/25(金) 03:22:56.80
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
半径5cmの円の面積[cm^2]を求めるプログラムを作成し、
小数点以下5桁まで解を求めよ。
[3] 環境
 [3.1] OS: Windows7
 [3.2] gcc
 [3.3] 言語:C

プログラミング初心者です。よろしくお願いいたします。
642 :デフォルトの名無しさん2011/11/25(金) 04:00:13.58
>>641
#include <stdio.h>

#define PI 3.14159265358979323846
#define menseki(r) ((PI)*r*r)

int main()
{
double r = 5;
printf("半径5cmの円の面積 = %.5lf\n",menseki(r));
return 0;
}
643 : ◆QZaw55cn4c 2011/11/25(金) 08:28:40.46
>>642
>%.5lf\n
l は不要。
646 :デフォルトの名無しさん2011/11/25(金) 10:15:23.24
c言語の自由課題でトランプゲームやろうと思うんですけどいい案ないですか?
648 :デフォルトの名無しさん2011/11/25(金) 10:28:52.98
>>646
・ポーカーの点数計算
・七並べで、複数プレーヤーが最善手を選択した時の順位
・神経衰弱で、3手前しか覚えてないPCとの対戦
650 :デフォルトの名無しさん2011/11/25(金) 10:31:09.31
>>648
その中だったら七並べやりたいんですけど初心者で。詳しく教えてください。
651 :デフォルトの名無しさん2011/11/25(金) 10:34:28.82
>>650
【初心者歓迎】C/C++室 Ver.76【環境依存OK
http://hibari.2ch.net/test/read.cgi/tech/1312621728/
652 :デフォルトの名無しさん2011/11/25(金) 10:41:11.26
>>646
C言語でトランプゲームを作りたい
http://hibari.2ch.net/test/read.cgi/tech/1189892773/
647 :デフォルトの名無しさん2011/11/25(金) 10:25:45.13
戦争
649 :デフォルトの名無しさん2011/11/25(金) 10:29:19.46
>>647
どうやればうまくいきます?
653 :デフォルトの名無しさん2011/11/25(金) 11:14:40.01
643 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん


644 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん


645 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
654 : ◆QZaw55cn4c 2011/11/25(金) 12:28:05.59
>>653
へー、そういう書き込みでレス削除されたことになる専用ブラウザがあるんだ?
657 :デフォルトの名無しさん2011/11/25(金) 12:49:05.54
>>653,655-656
餌をやるな
659 :デフォルトの名無しさん2011/11/25(金) 13:58:28.16
[1] 授業単元:(文字列)
[2] 問題文(含コード&リンク):文字列st の中に含まれる文字ch の個数(含まれて
いなければ0 とする)を返す関数
int str_chnum(const char st[], int ch)
を作成せよ.以下の実行例のように,関数の動作を確認
できるmain 関数も作成すること.
【注意】scanf で文字列を入力させた後にgetchar 関
数で文字を入力させたい場合,getchar で文字を入力
させる前に
scanf("%*c");
などとして,バッファに残った改行コードを読み捨て
ておく必要がある.

のように動作するプログラムを作成せよ
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月25日 17:00
[5]例 文字列を入力してください:KoKo
検索する文字を入力してください:o
その文字は2 個含まれています。
その他の制限: ポインタは習っていません
661 :デフォルトの名無しさん2011/11/25(金) 15:23:02.55
>>659
問題張る前にスレの中読まないの?
660 :デフォルトの名無しさん2011/11/25(金) 14:06:32.01
#include <stdio.h>

int str_chnum(const char st[], int ch)
{
int i, num;
for(i = num = 0; st[i]; i++) if(st[i] == ch) num++;
return num;
}

int main(void)
{
char st[256];
int num, ch;

printf("文字列を入力してください:");
scanf("%s", st);
scanf("%*c");
printf("検索する文字を入力してください:");
ch = getchar();

num = str_chnum(st, ch);

printf("その文字は");
if(num) printf("%d 個含まれています。\n", num);
else printf("含まれていません。\n");

return 0;
}
662 :デフォルトの名無しさん2011/11/25(金) 15:59:16.98
【質問テンプレ】
[1] 授業単元:プログラミング入門(C)
[2] 問題文(含コード&リンク):
無限ループを用い、 1〜100までの数値を任意に10回分だけ入力し、その度数分布を求めよ。
ただし、for文は用いず、while文で。度数分布は5等分して表示せよ。(例えば1~20に4個 21~40に3個 41~60に2個 61~80に1個 81~100に0個)
[3] 環境
 [3.1] OS:(Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 今週末
[5] その他の制限:for文を使わずwhile文でやれと言われています。度数分布は5等分で
始めたばかりなので、初心者同然の知識しかなく、プログラミング入門レベルです。
よろしくお願いします。
664 :デフォルトの名無しさん2011/11/25(金) 16:50:21.43
667 :デフォルトの名無しさん2011/11/26(土) 00:04:26.81
>>662

#include <stdio.h>
#include <string.h>

const int kParameter = 100;
const int kRange = 20;

#define NELEMS(array) (sizeof(array) / sizeof(array[0]))

int main() {
int i;
int count = 0;
int dist[kParameter / kRange];
memset(dist, 0, sizeof(dist));
while (1) {
int n = rand() % kParameter;
printf("%d\n", n + 1);
++dist[n / kRange];
if (++count >= 10) break;
}
for (i = 0; i < NELEMS(dist); ++i) {
printf("%3d - %3d: %d\n", kRange * i + 1, kRange * (i + 1), dist[i]);
}
return 0;
}
663 :デフォルトの名無しさん2011/11/25(金) 16:00:50.48
もうしわけありません記入漏れがありました
OS環境はおそらくLinuxではないかと思うのですが、よくわかりません
よろしくお願いします。
665 :デフォルトの名無しさん2011/11/25(金) 19:08:07.59
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
図のように33個の節点が抵抗で繋がれた電気回路がある。 ただし、全ての抵抗の抵抗値は同じである。
ここで、AB間に5Vの電源を接続し、Aの電位を5V、Bの電位の0Vとしたとき、残りの31点の電位を計算せよ。

ttp://iup.2ch-library.com/i/i0487130-1322215626.jpg

(注)
回答は、
V0=ww
V1=xx
V2=yy
V3=zz
...
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011/12/01
[5] その他の制限: キルヒホッフの法則・ガウスの消去法を使う
666 :デフォルトの名無しさん2011/11/25(金) 22:38:13.87
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
為替レート(rate)、円(yen)、ドル(doll)、セント(cent)(いずれも整数)からなる構造体moneyの
ポインタを引数とし円からドルへの変換を行う関数exchangeを作成せよ.

関数exchangeのプロトタイプ宣言
void exchange(struct money *mp);

上の関数を使ってrateが80円のときの25800円のドルとセントを求めるプログラムを作成せよ。
なお、メインプログラム内に以下のような初期値つきの構造体変数宣言を使うこと.

struct money m = { 80, 25800, 0, 0 };

実行例
$./kadai1
322 doll 50 cent

ヒント

struct money {
// メンバー
};

exchange(&m); // 擬似的参照渡しになるので,結果はmoneyに返る

[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2011年11月27日まで
[5] その他の制限:
問題文で使われている宣言とヒントとして提示されているものを使っての解答をよろしくお願いします。
668 :デフォルトの名無しさん2011/11/26(土) 00:04:41.67
>>666

#include <stdio.h>

struct money {
int rate;
int yen;
int doll;
int cent;
};

void exchange(struct money *mp) {
mp->doll = mp->yen / mp->rate;
mp->cent = 100 * (mp->yen % mp->rate) / mp->rate;
}

void print(struct money *mp) {
printf("%d doll %d cent\n", mp->doll, mp->cent);
}

int main() {
struct money m = { 80, 25800, 0, 0 };
exchange(&m);
print(&m);
return 0;
}
669 :デフォルトの名無しさん2011/11/26(土) 00:43:55.98
[1] 授業単元:PIC制御
[2] 問題文(含コード&リンク):16f819にてAD変換せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] 不明(PicKit2でPICに書き込みしてます)
 [3.3] 言語: C
[4] 期限: 11/28
[5] その他の制限
#include<16f819.h>
#device ADC=10
#use delay (clock=8000000)
#define A_ANALOG 0x80
void port_ini(void);
float data;
void main()
{
#byte OSCCON=0x8f
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(A_ANALOG);
port_ini();
while(1)
{
省略
}
void port_ini(void)
{
set_tris_a(0b00000110);
set_tris_b(0b00000000);
}

コンパイルしたら成功しますがPICに書き込み成功後、AD変換できてません。
プログラム上の間違いがありましたら指摘お願いします。
670 :デフォルトの名無しさん2011/11/26(土) 00:49:19.04
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
#include<stdio.h>
int main(void)
{
int i=0;
char *ptr;
char str[128];

ptr = str;

scanf("%s",&str);

while(*ptr++){
i++;
}

printf("%d\n",i);
}

上記の入力したテキストの文字数を表示するプログラムの読み込み部分をファイル処理に変更せよ。
fgetc() 関数を使用し、コマンドラインにファイル名が指定できるようにすること。
ただし、ファイル名を指定しない場合は標準入力とする。
ファイルが見つからなかった時はエラーメッセージを出し、プログラムを終了する。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ:gcc
 [3.3] 言語:C言語
[4] 期限:2011年11月27日(日曜) 23:59
[5] その他の制限:読み込むテキストファイル数は1つです。よろしくお願いします。
671 :デフォルトの名無しさん2011/11/26(土) 01:28:58.74
>>670


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
int i = 0;
char *ptr;
char str[128];
FILE *fin;

if (argc == 1) {
ptr = str;
scanf("%s", str);
while (*ptr++) i++;
} else {
if ((fin = fopen(argv[1], "r")) == NULL) {
fprintf(stderr, "Input file open error\n");
exit(EXIT_FAILURE);
}
while (fgetc(fin) != EOF) i++;
fclose(fin);
}
printf("%d\n", i);

return 0;
}
672 :デフォルトの名無しさん2011/11/26(土) 10:36:19.21
[1] 授業単元: C言語プログラミング(文字列生成・操作)
[2] 問題文(含コード&リンク):
以下の実行例のように,姓と名を入力すると,2 つの
間にスペースを入れて連結した文字列を生成するプロ
グラムを作成せよ.姓と名はそれぞれ配列family[] と
first[] に,連結した文字列は配列fullname[] に格納
すること.入力できる姓と名の長さはそれぞれ30 字ま
でとする.

実行例.
Family name: Roku
First name: Dai
Roku Dai

[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2011年11月27日まで
[5] その他の制限:
問題文で使われている宣言とヒントとして提示されているものを使っての解答でお願いします
ポインタは習っていません
673 :デフォルトの名無しさん2011/11/26(土) 10:50:35.35
674 :デフォルトの名無しさん2011/11/26(土) 11:58:04.62
>>673
scanf で30文字以上入力されたらどうなる?
675 :デフォルトの名無しさん2011/11/26(土) 12:27:39.48
>>674
30文字以上入れた奴が悪い
676 : ◆QZaw55cn4c 2011/11/26(土) 12:28:43.56
>>674
それをいうと、題意から一歩踏み出してポインタを使わざるを得ない。
http://ideone.com/OyyrC
678 :デフォルトの名無しさん2011/11/26(土) 12:51:46.10
681 :デフォルトの名無しさん2011/11/26(土) 13:09:48.96
677 :デフォルトの名無しさん2011/11/26(土) 12:48:08.85
fgetsでやればいいんじゃないの?
679 :デフォルトの名無しさん2011/11/26(土) 12:57:59.65
>>677
fgets() でもバッファサイズは有限だよ
680 :デフォルトの名無しさん2011/11/26(土) 13:03:52.87
>>679
サイズをはみ出してるかをチェックして、捨てればいい。
682 :デフォルトの名無しさん2011/11/26(土) 15:44:28.74
>>680
そういう意味じゃなくてバッファより入力文字数が多かったらストリームにゴミが残るからって話なんだけど...
fflush() すれば良いだけの話だなw
683 :デフォルトの名無しさん2011/11/26(土) 15:45:19.56
>>682
バカは手に負えないな
685 : ◆QZaw55cn4c 2011/11/26(土) 15:57:57.90
>>682
fflush() では入力ストリームに対しては未定義。
ISO/IEC 9899:1999 7.19.5.2.2
686 :デフォルトの名無しさん2011/11/26(土) 16:05:07.02
>>685
そうだっけ?
ttp://msdn.microsoft.com/ja-jp/library/9yky46tz.aspx
stdin からの入力なんて滅多に使わないから細かい仕様に興味がないもんでねw
697 : ◆QZaw55cn4c 2011/11/26(土) 18:18:28.91
>>694
ま、C++ の考え方に慣れきったものでして、string クラスやvector/deque/map コンテナの思想くらいは、C で書くときも心がけているだけだけどね。
これは業務に携わっている方にお聞きしたいのではあるが、固定長のプロトコルを前提にコードを製造することは、今でもあるものだろうか?

>>695
fflush(stdin) のまずさを指摘された >>682 が逆切れしているだけなのでは?
699 :デフォルトの名無しさん2011/11/26(土) 18:52:46.55
>>697
C/Sなら可変長電文の方が少ないよ
IP電話の制御電文や音声データも固定長だ
データファイルも構造体をバイナリで出力することが多いから固定長が多い、レコード数は可変だけどね

687 :6862011/11/26(土) 16:12:07.34
もし fflush() が望む機能を実現できない環境で有れば、バッファ中に \n が出現するまで fgets() を繰り返せば良い
少なくとも捨てて良いデータの為に realloc() を繰り返す様なコードは書きたくないなw
689 : ◆QZaw55cn4c 2011/11/26(土) 17:01:14.56
>>687
realloc() の繰り返しを避けたいのであれば、避けたいというその気持ちの強さに応じて、static char 配列のサイズを大きめにすればよい、そういう風には作ったつもり。

http://ideone.com/OyyrC
#define BUFFSIZE 65536 /* >= 2 */
char *mygetline(FILE *fp) {
static char inbuff[BUFFSIZE];
690 :デフォルトの名無しさん2011/11/26(土) 17:44:30.69
>>689
とはいえ malloc() も realloc() も使う必要が無い処理であることには変わりない
691 : ◆QZaw55cn4c 2011/11/26(土) 17:49:50.13
>>690
不定長に対応するつもりがないのなら、ね。
>>689 は不定長に対応することを目的とした汎用コード。
694 :デフォルトの名無しさん2011/11/26(土) 18:03:12.92
>>691
不定長に対応する必要が無い処理に使うのは無駄だと言っている
自己満足のコードはサンデープログラマの特権だけど現場では迷惑
688 :デフォルトの名無しさん2011/11/26(土) 16:22:21.62
依頼者は、「コンパイラ名とバージョン:gcc」と書いてるんだから、
その環境で大丈夫かどうか、だな
692 :デフォルトの名無しさん2011/11/26(土) 17:54:45.48
何これあぼーんだらけ
693 :デフォルトの名無しさん2011/11/26(土) 17:57:34.69
>>692
興味があるなら、あぼーん設定を外してみれ
695 :デフォルトの名無しさん2011/11/26(土) 18:03:14.25
>>693
ああ、またQか
こいつ文句を垂れ始めたな
696 :デフォルトの名無しさん2011/11/26(土) 18:14:10.63
>>692-693,695
餌やんな
700 :デフォルトの名無しさん2011/11/26(土) 19:20:23.14
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):
問題1で作成したプログラムに、スライド番号8にあるトーンカーブ(ネガポジ)を、画像の濃度値を変換する関数としてを追加し、任意の画素数をもつpgm画像のコントラストを変更するプログラムを作成せよ.コントラスト変換後の画像はpgm画像として保存すること.
http://codepad.org/76qGL5Cb
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:windows visual studio2008
 [3.3] 言語:C++
[4] 期限:2011年11月28日まで
[5] その他の制限:
よろしくお願いします

マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006
マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006