[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 05/09 16:09 / Filesize : 83 KB / Number-of Response : 228
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 95代目



1 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:28:30 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 94代目
pc11.2ch.net/test/read.cgi/tech/1185452895/

31 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 19:23:57 ]
つまり、実際の曜日に関わらず月の下に1と書けば宜しいか。

32 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 19:34:52 ]
>>31 たぶん、>>28の内容からしたらそうアルよ。難しく考えないで、答えるアルよ。
けど、テンプレに則ってないんで無視しチャイナ。


33 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 20:33:59 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4873.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: c
[4] 期限: 2007年8月30日
再々ですがお願いします

34 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 20:41:32 ]
int *pstr でいいんすか?

35 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 20:47:08 ]
>>33
#include<ctype.h>
int mystrlen(int*pstr){
  char*pstr_=(char*)pstr;
  int count = 0;
  for(;*pstr_;++pstr_)
    if(isspace(*pstr_)) ++count;
  return count;
}
void mystrcpy(int*pstr,int*pans){
  char*pstr_=(char*)pstr;
  char*pans_=(char*)pans;
  do if(!isdigit(*pans_))*pstr_++ = *pans_;
  while(*pans++);
}

36 名前:デフォルトの名無しさん [2007/08/28(火) 21:52:09 ]
[1] 授業単元:C言語
[2] 問題文:
二次座標平面において,ランダムに4〜5個ほど点が与えられる.
そのような複数の点の最近傍を通る円の方程式を求めよ.
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:[2007年08月31日24:00まで]
[5] その他の制限:計算速度が速い方が好ましい.
今現在最急降下法で作ってみたのですがうまく動きません。
よろしくお願いします。

37 名前:ジャレ [2007/08/28(火) 22:05:11 ]
1] 授業単元:プログラミング
[2] 問題文: pgmファイルを読み込み、幅(width)、高さ(height)、色調(val)を
を表示する。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual C++
 [3.3] 言語:C
[4] 期限:[2007年08月29日12:00まで]
[5] 自分の実力のなさでグローバル変数を使用しないと上手くいきませんでした・・。
  ですので、グローバル変数は使わない方向でお願い致します。
  読み込んだ後フーリエ変換させる必要があるので、pgmの読み込み部分は
  関数化してくだい。では、よろしくお願い致します!!

38 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:16:32 ]
>>36
回帰直線(最小二乗法)のように数式で表現できるはずだから、それを晒してくれれば…

39 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:18:52 ]
>>27
>>1 の質問テンプレ

それと線分の交差って高校の数学でやらなかったっけ?
もう忘れてしまったけど



40 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 00:42:22 ]
>>36
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4875.c
クラメルじゃ遅いかな

入力例
4 (点の個数)
1.0 0.0 (各座標)
0.0 1.0
-1.0 0.0
0.0 -0.5

点の個数が3未満のときと全ての点が一直線上にあるときは答えが出ない

41 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 02:24:44 ]
>>37
できてるところまでうp!

42 名前:デフォルトの名無しさん [2007/08/29(水) 07:31:35 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク):
テーマ:ユーザ関数の作成
再帰関数を使って、Xのn乗を求めるプログラムを作成しなさい
プロトタイプ宣言:int power(int x, int n);
実行画面
文字列入力==>2
文字列入力==0
値:1

文字列入力==>2
文字列入力==>3
値:8

文字列入力==>6
文字列入力==>4
値:1296
[3] 環境
 [3.1] OS: (Windows/Linux/等々) XP
 [3.2] コンパイラ名とバージョン: ボーランド
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)


43 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 08:19:00 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク): 50行以上のプログラムをつくりなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VS2005
 [3.3] 言語: C
[4] 期限: 2007年8月31日
[5] その他の制限: C言語検定3級まで習いましたので、その範囲でお願いします。

44 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 09:55:36 ]
>>42
#include<stdio.h>
int result;
int power(int x,int n){
if(n==0)
return 0;
result*=x;
n<0?n++:n--;
return power(x,n);
}
int main(void){
for(;;){
int x,n;
result=1;
printf("文字列入力==");
scanf("%d",&x);
printf("文字列入力==");
scanf("%d",&n);
power(x,n);
printf("値:%s%s%d\n",result<0?"-":"",n<0&&(result<-1||result>1)?"1/":"",result<0?-result:result);
}
return 0;
}

45 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:18:59 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク):非負整数の不定長配列 arr[] 中で、指定データ data が出現する回数を返却するプログラムを関数
arr_occur_ct() を用い作成せよ。終端番兵は、EOA(-1) とする。反復変数を用いず、ポインタのアドレス演算を用いる。
int arr_occur_ct(int *arr, int data)
システム上では、入力の先頭をdata、それ以降はarrとする。入力の終了はEOA(-1)とする。
入力例 0 2 0 0 7 0 7 1 0 -1
出力例 4
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: C
[4] 期限: 2007年8月30日



46 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:25:03 ]
unsigned arr_occur_ct(unsigned const * array, unsigned data)
{
if (array == NULL || data == EOA) return 0;
unsigned count = 0;
for (unsinged ic = 0; array[ic] != EOA; ++ic) {
if (array[ic] == data) ++count;
}
return count;
}

47 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:26:34 ]
仕様を勝手に変えるのは最悪

48 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:34:40 ]
問題が悪いな、非負整数の不定長配列と言いつつint *なんだから。
とは言え、>46は性質が悪すぎる。

49 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:48:37 ]
>>46
ソース全部書いて貰えるとうれしいのですが



50 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 11:26:02 ]
// >>45
// >46を参考に。
#include <stdio.h>
#include <stdlib.h>
#define EOA (-1)
int arr_occur_ct(int const * array, int data)
{
if (array == NULL || data == EOA) return 0;
unsigned count = 0;
for (const int * p = array; * p != EOA; ++p) {
if (* p == data) ++count;
}
return count;
}
int main()
{
int data = EOA;
scanf("%d", & data);
if (data == EOA) return 0;
unsigned cnt = 0;
int * arr = NULL;
do {
int val = EOA;
scanf("%d", & val);
arr = realloc(arr, (cnt + 1) * sizeof(* arr));
arr[cnt] = val;
} while (arr[cnt++] != EOA);
printf("%d\n", arr_occur_ct(arr, data));
return 0;
}

51 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 11:41:22 ]
数字一つごとにreallocって凄いな

52 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 11:42:39 ]
realloc()が毎回API叩く仕様だったら泣けるね。

53 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 12:03:42 ]
何個か一括して要求したらいいのに。

54 名前:デフォルトの名無しさん [2007/08/29(水) 12:25:57 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク):
問題1
テーマ:文字配列の操作
文字型の配列変数mojiに設定されている文字数を数えなさい
char moji[] = "ABCDEFG";
実行画面
文字数:7

問題2
テーマ:ユーザ関数の作成
問題1をもとに文字数を返すユーザ関数を作成しなさい
プロトタイプ宣言:int MyLen(char *s);
char moji[]="ABCDEFG";
実行画面
文字数:7
[3] 環境
 [3.1] OS: (Windows/Linux/等々) XP
 [3.2] コンパイラ名とバージョン: ボーランド
[4] 期限:
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)



55 名前:デフォルトの名無しさん [2007/08/29(水) 12:33:33 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク): 検索する文字列を入力し、その一を返すユーザ関数を作成しなさい
プロトタイプ宣言:char *MojiSearch(char *m,char *s);
引数1:検索対象文字列
引数2:検索文字列
戻り値:あった場合(一致した文字列を先頭アドレス)
    なかった場合(NULL)
char moji[] = "ABCDEFGHJABFGHSKL";

結果
検索文字列==>HS
検索位置:HSKL

[3] 環境
 [3.1] OS: (Windows/Linux/等々) XP
 [3.2] コンパイラ名とバージョン: ボーランド
[4] 期限:
[5] その他の制限:
何方かお願いします



56 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 12:54:04 ]
>>54
strlenでググれ。
それだけで解決するから。

57 名前:【4200円(定額)】 [2007/08/29(水) 13:06:24 ]
>>56
#include <stdio.h>
#include <string.h>
char *MojiSearch(char *m,char *s){
 int i = 0;
 int j = 0;
 int result = 0;
 while(i < strlen(m)-strlen(s)+1){
  for(j=0;j<strlen(s);j++){
   if(m[i+j] == s[j]){
   result++;
  }
  else{
   result = 0;
  break;
  }
 }
 if(result != 0)
  break;
  i++;
 }
 if(result == 0)
  return NULL;
 else
  return &m[i];
}

58 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 13:08:03 ]
悪い見本のようなコードだな

59 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 13:16:55 ]
>>58
BM法でやれとか書いてないからいいんじゃないかな。
いかにもって感じで。



60 名前:デフォルトの名無しさん [2007/08/29(水) 13:18:42 ]
>>55
char *Mystrstr(const char *m, const char *s)
{
char *cp = (char *)m;
if(*s == '\0')
return cp;

while(*cp != '\0')
{
char *tp = cp;
char *pp = (char *)s;
while(*tp == *pp)
{
if(*pp =='\0')
return cp;
tp++;
pp++;
}
if(*pp == '\0')
return cp;
cp++;
}
return NULL;
}


61 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:00:56 ]
>>37のやつ、真面目にやろうとすると、コメント行読み飛ばしたり、
区切り文字判別したりしなきゃならないのか。

・改行が出現するまでを1行とする
・1行は70文字未満
・区切り文字は空白、タブ、改行の三種類

効率よく単語毎に切り出せるプログラムってどうやって作るの?

62 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:03:26 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク): 自作プログラム作成
1.ステップは最低50文
2.1次元配列or2次元配列を使用
3.if文,while文,for文使用
4.自作関数使用
5.♯define使用
6.ヘッダファイル化
7.必ずプロンプトで誰が見てもわかる対応型プログラムにする
[3] 環境
 [3.1] OS:Windows
 [3.2] VS2005
 [3.3] 言語: C
[4] 期限: ([2007年8月31日AM8:00まで]

お願いします。

63 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:05:28 ]
>>62
その条件を満たせばどんなプログラムでもいいってこと?

64 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:21:41 ]
>必ずプロンプトで誰が見てもわかる対応型プログラム
物凄く難しくね?

65 名前:62 mailto:sage [2007/08/29(水) 14:31:50 ]
>>63
どんなプログラムでも良いです。


66 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:55:26 ]
対応型じゃなくて対話型?

67 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 15:02:22 ]
>>64
>>66
問題文には対応型と書いてあったのですが、よくわからないので7番目の条件はどうでも良いです。
すいません。


68 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 15:07:36 ]
7.がどうでもいいのなら無意味なコードを書き連ねて完成だなw

69 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 15:18:35 ]
>>62
2〜5の条件にある文は既に習ったんだろうけど
それぞれを学んだ時の題材として作ったのはどんなプログラム?



70 名前:デフォルトの名無しさん [2007/08/29(水) 15:21:16 ]
>>62なんでも良いなら、以前宿題スレであった問題に
つけた俺の答えを送ろう
「数値を螺旋状に表示するプログラム」
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4877.txt

71 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 16:34:41 ]
>>69
入力した数値が処理された数値として出力されるようなプログラムですかね。
平均を出したりとか。

あと、例としてはカレンダーをつくってみてはどうか?と書いてありました。

72 名前:33 mailto:sage [2007/08/29(水) 20:52:18 ]
>>35
ソース全部を書いて貰えるとうれしいのです
後、2もお願いできませんか

73 名前:ジャレ [2007/08/29(水) 22:51:12 ]
>>61
ファイルタイプの判別、コメントを飛ばしが必要です。
1] 授業単元:プログラミング
[2] 問題文: pgmファイルを読み込み、幅(width)、高さ(height)、色調(val)を
を表示する。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual C++
 [3.3] 言語:C
[5] 作成途中で、バグもありますが仕様はこんな感じになっています。

www8.uploader.jp/user/loaiza21/images/loaiza21_uljp00001.txt

74 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:23:52 ]
>>61
pgmにはバイナリとアスキーがあって、どちらもヘッダ部(コメント含む)を読んだら後は、前者はfread()、
後者は本体部分が70文字以上の長い行のデータが多いことを鑑みてfscanf()で取り出せばいい。
問題はヘッダ部で、途中で改行されると読めないツールや逆に改行がないと読めないツールもあって、
どう解釈するかが微妙。

75 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:27:16 ]
なんだ、>73を見る限りヘッダだけ読めば本体読む必要ないじゃん。
しかし、depthを色調と言われてもぴんとこないなぁ。

76 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 01:47:49 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4878.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: c
[4] 期限: 2007年8月30日

77 名前:デフォルトの名無しさん [2007/08/30(木) 02:29:00 ]
[1] 授業単元:C言語
[2] 問題文: int型の配列に設定されている値の中の最大値と最小値
を求めて出力するプログラム

条件1:int型配列のサイズは10とし、
あらかじめ初期リストによって値が設定されているものとする。
条件2:アルゴリズムは繰り返しで処理すること。
※初期化リストは{10,7,3,15,12,1,18,21,25,14}と設定されているものとする。

[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン: (VS 2005)
 [3.3] 言語: C
[4] 期限: (2007年9月1日まで)
[5] その他の制限:
よろしくお願いします<(_ _*)>

78 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 02:40:39 ]
>>33
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4879.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4880.c
1と3だけきんもぉ〜☆なクソースでお届けしまつ

79 名前:デフォルトの名無しさん [2007/08/30(木) 03:13:12 ]
>>76
#include <string.h> #include <stdlib.h> #include <stdio.h> #define EOA 0.0
void arr_cycle(int *arr, int len){ int *temp = malloc((sizeof(int))*len); memcpy(temp,arr,((sizeof(int))*len));
memcpy(arr+1,temp,((sizeof(int))*(len-1))); memcpy(arr,temp+len-1,((sizeof(int))));
free(temp);}
int arr_positive(double *arr1, double *arr2)
{double *temp;int i;
for(temp = arr1,i = 0; *temp != EOA; temp++){
if(*temp > 0.0){arr2[i] = *temp;i++;
}
}
arr2[i] = EOA;
return i;
}
int main()
{
int ary[] = {1,2,3,4,5,6};
int i,positive;
double arr1[] = {1.2, -0.8, 2.3, 3.4, -1.1, EOA};
double arr2[sizeof(arr1)/sizeof(double)] = {0};
double *temp;
arr_cycle(ary,6);
for(i = 0; i < 6; i++)
printf("%d ",ary[i]);
putchar('\n');
positive = arr_positive(arr1,arr2);
for(temp = arr2; *temp != EOA; temp++)
printf("%lf ",*temp);
putchar('\n');
return 0;
}



80 名前:デフォルトの名無しさん [2007/08/30(木) 03:25:38 ]
>>77
#include <stdio.h>
#define N 10
void bubble_sort(int sort[], int elements)
{
int i,j,temp;
for(i=0; i < elements-1; i++){
for(j=i+1; j < elements; j++){
if(sort[i] > sort[j]){
temp = sort[i];
sort[i] = sort[j];
sort[j] = temp;
}

}
}
}
int main()
{
int ary[N] ={10,7,3,15,12,1,18,21,25,14};
bubble_sort(ary, N);
printf("MAX %d MIN %d \n",ary[9],ary[0]);
return 0;
}

81 名前:デフォルトの名無しさん [2007/08/30(木) 03:45:09 ]
>>33
#include <stdio.h> #include <ctype.h> #define EOA -1
int mystrlen(int *pstr); int usepointersum(int *ary); void mystrcpy(char *pstr,char *pans);
int main()
{ char ary1[] = "Kyoto"; char ary2[] = "Kyoto Univ"; int iary[] ={ 1,3,5,7,9,2,10,4,8,6,EOA};
char ary3[] = "m04d12t5"; char ary4[20] ={'\0'}; int i;
printf("%s\t%d\n",ary1,mystrlen(ary1)); printf("%s\t%d\n",ary2,mystrlen(ary2));
for(i = 0; i < sizeof(iary)/sizeof(int);i++) printf("%d ",iary[i]);
putchar('\n'); printf("%d \n",usepointersum(iary)); printf("%s \n",ary3);
mystrcpy(ary3,ary4); for(i = 0; ary4[i] != '\0';i++) putchar(ary4[i]);
putchar('\n'); return 0; }
int mystrlen(int *pstr)
{ char *temp=NULL; int num = 0; int i = 0; for(temp = (char *)pstr; *temp!='\0';temp++){
if(*temp > ' '){ num++; } } return num; } int usepointersum(int *ary) {
int sum = 0; int *temp; for(temp = ary; *temp != EOA;temp++) sum += *temp;
return sum; }
void mystrcpy(char *pstr,char *pans)
{
char *tstr;
int i,j=0;
for(tstr = pstr; *tstr != '\0'; tstr++)
if(!(isdigit(*tstr))){
pans[j] = *tstr;
j++;
}
pans[j]='\0';
}

82 名前:デフォルトの名無しさん [2007/08/30(木) 04:32:39 ]
1] 授業単元:C++
[2] 問題文(含コード&リンク):メインプログラムを参考に3次元配列を動的に確保する関数を作成せよ。
ただし、関数宣言は”void func(***)”を仕様する
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4882.txt
[3] Visual Studio 2005
 [3.1] OS:Windows
 [3.2] VC
 [3.3] 言語: C++
[4] 期限: 無期限
[5] その他の制限: 特にありません

よろしくお願いします


83 名前:デフォルトの名無しさん [2007/08/30(木) 12:08:13 ]
授業単元: C
[2] 問題文(含コード&リンク):
テーマ:文字列配列の操作
問題1:文字列を入力して偶数番目の要素と奇数番目の要素を別の配列に格納し、文字列として表示しなさい
実行画面
文字列入力==>ABC123def
偶数要素:AC2df
奇数要素:B13e

問題2:文字列と削除文字列を入力し文字列中から削除文字を排除しなさい
実行画面
文字列入力(m1)==>ABCDEFAABCDABC
削除文字==>A
結果文字列(m2):BCDEFBCDBC
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:ボーランド
 [3.3] 言語: C
[4] 期限:
[5] その他の制限:

84 名前:デフォルトの名無しさん [2007/08/30(木) 12:18:53 ]
授業単元: C
[2] 問題文(含コード&リンク):
テーマ:ポインタの利用
問題1: ポインタ変数を利用して、2つの合計を求めなさい
int a=10,b=5,g;
int *pa,*pb;
実行画面
g:15

問題2:ポインタ変数を利用して、文字型の配列変数mojiの値を実行画面のように表示させなさい
char moji[]="ABCD";
char *mp;
実行画面
A
B
C
D

問題3:文字列を入力し、文字列中の数字のみを別の配列に格納し表示しなさい
実行画面
文字列入力==>AB1CDE23FG4
数字文字列:1234
実行画面

実行画面
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:ボーランド
 [3.3] 言語: C
[4] 期限:
[5] その他の制限:


85 名前:デフォルトの名無しさん [2007/08/30(木) 12:27:03 ]
こんな問題もできないのか

86 名前:デフォルトの名無しさん [2007/08/30(木) 12:27:56 ]
授業単元: C
[2] 問題文(含コード&リンク):
テーマ:文字列配列の操作
問題1:2値を小さい順に表示するユーザ関数を作成しなさい
プロトタイプ宣言:void SortDisp(int dt1,int dt2);
実行画面
数値1入力==>10
数値2入力==>15
数値1:10
数値2:15

数値1入力==>15
数値2入力==>10
数値1:10
数値2:15

問題2:2値の合計を返すユーザ関数を作成しなさい
プロトタイプ宣言:int Add(int aa,int bb);
実行画面
変数a入力==>3
実数b入力==>8
合計:11
数値1入力==>15
数値2入力==>
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:ボーランド
 [3.3] 言語: C
[4] 期限:
[5] その他の制限:


87 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:41:05 ]
>>74
仕様に忠実にするなら
P5 100 100 255

P5
#hoge hoge
100 100
255

どちらも読めなきゃだめだよなあ。

88 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:33:48 ]
課題というより依頼みたいなものもここでいいのでしょうか?

89 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:46:07 ]
宿題・課題のみです。



90 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:50:48 ]
あるC++のプログラムをC言語のプログラムに書き変えてほしいのですが
該当スレなどはありませんか?

91 名前:デフォルトの名無しさん [2007/08/30(木) 14:01:05 ]
何方か83 84お願いします

92 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:12:40 ]
>>83の問題1
#include <stdio.h>
#define MAX_NUM 128

int main()
{
char str[MAX_NUM], even[MAX_NUM/2], odd[MAX_NUM/2];
int i, j, k;
printf("文字列入力==>");
scanf("%s", str);

for(i=0, j=0, k=0; str[i]; i++)
{
if(i%2) {odd[j] = str[i];j++;}
else {even[k] = str[i];k++;}
}
odd[j] = even[k] = '\0';

printf("偶数要素:%s\n", even);
printf("奇数要素:%s\n", odd);

return 0;
}


93 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:20:22 ]
>>83の問題2
#include <stdio.h>
#define MAX_NUM 128

int main()
{
char m1[MAX_NUM], m2[MAX_NUM], delchr;
int i, j;
printf("文字列入力(m1)==>");
scanf("%s", m1);
fflush(stdin);
printf("削除文字==>");
delchr = (char)getchar();
for(i=0, j=0; m1[i]; i++)
{
if(m1[i] != delchr) {m2[j] = m1[i]; j++;}
}
m2[j] = '\0';
printf("結果文字列(m2):%s", m2);
return 0;
}


94 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:23:07 ]
>>84の問題1
#include <stdio.h>
int main()
{
int a=10, b=5, g;
int *pa, *pb;
pa = &a;
pb = &b;
g = *pa + *pb;
printf("g:%d", g);
return 0;
}



95 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:24:32 ]
>>84の問題2
#include <stdio.h>

int main()
{
char moji[]="ABCD";
char *mp;
mp = moji;
while(*mp) putchar(*mp++);
return 0;
}


96 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:28:06 ]
>>84の問題3
#include <stdio.h>
#include <ctype.h>
#define MAX_NUM 128
int main()
{
char moji[MAX_NUM], digit[MAX_NUM];
int i, j;
printf("文字列入力==>");
scanf("%s", moji);

for(i=0, j=0; moji[i]; i++)
{
if(!isdigit(moji[i]) == 0) {digit[j] = moji[i]; j++;}
}
digit[j] = '\0';
printf("数字文字列:%s", digit);

return 0;
}


97 名前:デフォルトの名無しさん [2007/08/30(木) 14:28:18 ]
何方か86お願いします

98 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:32:18 ]
>>86の問題1
void SortDisp(int dt1,int dt2)
{
printf("数値1:%d\n数値2:%d\n", dt1<dt2 ? dt1 : dt2, dt1<dt2 ? dt2 : dt1);
}

>>86の問題2
int Add(int aa,int bb)
{
return aa+bb;
}

99 名前:デフォルトの名無しさん [2007/08/30(木) 14:59:04 ]
[1] 授業単元: ランダム関数
[2] 問題文(含コード&リンク):20〜100までのランダムな値を表示
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:BorlandC++
 [3.3] 言語:C++



100 名前:76 mailto:sage [2007/08/30(木) 14:59:28 ]
問題1、2、共にこれを参照と言ってました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4884.c
あと>>33の2もお願いできませんか?

101 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 15:14:23 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4885.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: c
[4] 期限: 2007年8月31日


102 名前:デフォルトの名無しさん [2007/08/30(木) 15:22:46 ]
>>76
あとから、これ参照してとか言うなカス
作った関数意味ねーだろうが
あと>>33の2も答え出てるだろうが

103 名前:82 [2007/08/30(木) 15:23:50 ]
何方か82お願いします

104 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 15:26:58 ]
[1] 授業単元:確率統計
[2] 問題文(含コード&リンク):
指定ファイルを読み込んで、
平均値と標準偏差を標準出力するプログラムを作成せよ。

(指定ファイル)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4886.txt
このファイルの2列目の要素のみ(0.0732421875 0.0693359375 ・・・)の
平均値等を出せばいいようで、他の列の数値は無視して大丈夫だそうです。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 9月1日
[5] その他の制限:制限はありません。
よろしくおねがいします。

105 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 15:30:08 ]
>>99
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
printf("%d", rand()%81 + 20);
return 0;
}


106 名前:デフォルトの名無しさん [2007/08/30(木) 15:45:54 ]
[1] 授業単元: 配列
[2] 2次元配列の中に1~100までの連続した数字を格納し、表示させる
 [3.1] WinXP
 [3.2] Borland
 [3.3] C++
[5] 1 2 3 4 5 6 7 8 910
11121314151617181920
21222324252627282930
…こんな感じで100まで表示させたいのです。

107 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 15:56:27 ]
#include <stdio.h>

int main(void)
{
int array[100], i;

for (i = 1; i <= 100; i++)
array[i-1] = i;
for (i = 0; i < 100; i++) {
printf("%2d", array[i]);
if (array[i] % 10 == 0)
putchar('\n');
}
}

108 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 15:59:20 ]
#include <stdio.h>

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

for(i=0; i<10; i++){
for(j=0; j<10; j++){
num[i][j] = i*10 + j + 1;
printf("%2d", num[i][j]);
}
putchar('\n');
}

return(0);
}

109 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 16:05:47 ]
>>101
3番めこんなのでどうでしょう?
/*
xの昇順階乗を計算する。
fact_pow(10,3) = 10*11*12 = 1320
fact_pow(0,3) = 0*1*2 = 0
fact_pow(3,0) = 1;
fact_pow(-3,3) = -3*-2*-1 = -6
*/
#include <stdio.h>
#include <stdlib.h>
int fact_pow(int x,int p);
int main(void) {
int x, p;

printf("整数[x]を入力してください:");
scanf("%d",&x);
printf("整数[p]を入力してください:");
scanf("%d",&p);
printf("%d^[%d] = %d\n",x,p,fact_pow(x,p));
return 0;
}
int fact_pow(int x,int p) {
int value = 1;
int i;
if(p == 0)
return 1;
for(i = 0; i < p; i++)
value *= (x + i);
return value;
}



110 名前:デフォルトの名無しさん [2007/08/30(木) 16:12:55 ]
[1] 授業単元: 乱数
[2] 1~25までの数字をランダムで25個表示させる。その際同じ値がでないようにする。
 [3.1] WinXP
 [3.2] Borland
 [3.3] C++
よろしくお願いします


111 名前:デフォルトの名無しさん [2007/08/30(木) 16:24:11 ]
>>104
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4887.txt

112 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 16:24:20 ]
>>110
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int num[25];
int i, index, tmp;

for(i=0; i<25; i++) num[i] = i+1;

srand(time(NULL));
for(i=0; i<25; i++)
{
index = rand() % (i + 1);
tmp = num[i];
num[i] = num[index];
num[index] = tmp;
}

for(i=0; i<25; i++) printf("%d\n", num[i]);

return 0;
}

113 名前:デフォルトの名無しさん [2007/08/30(木) 16:47:21 ]
>>110
#include <iostream>
#include <cstdlib>
#include <ctime>
const int N = 25;
int main()
{

int rnd[N] = {0};
int i,r,r1,r2,temp;
srand((unsigned)time(NULL));
for(i = 0; i < N; i++)
rnd[i] = i + 1;
r = rand();
for(i = 0; i < r; i++){
r1 =rand()%N;
r2 =rand()%N;
temp = rnd[r1];
rnd[r1] = rnd[r2];
rnd[r2] = temp;
}
for(i = 0; i < N; i++)
std::cout << rnd[i] << ' ';
std::cout << '\n';
return 0;
}

114 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 17:06:12 ]
>>110
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <deque>
using namespace std;
int main(void)
{
const int NUM = 25; //定数宣言
srand((unsigned)time(NULL)); //乱数初期化
//配列qiの宣言と初期化
deque<int> qi;
for(int i = 0; i != NUM; i++)
{
qi.push_back(i+1); //1〜NUMまでの数値を並べる
}
//乱数を使って数値をランダムに取り出す
for(int i = NUM; i != 0; i--)
{
int n = rand() % i; //0〜(i-1)までの乱数を取り出す
cout << qi.at(n) << endl; // n番目の数値を表示
qi.erase(qi.begin()+n); // n番目の数値を配列から削除
}
return 0;
}


115 名前:104 mailto:sage [2007/08/30(木) 17:23:00 ]
>>111
お早い回答ありがとうございます!!
おかげで助かりました!

116 名前:111 [2007/08/30(木) 17:48:33 ]
久々ありがとうレスをもらった
「どういたしまして」

117 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 20:08:54 ]
>>116
回答をしてもらったわけではない部外者だが、他の回答者として
自分よりお早く回答してくれてありがとうございました!
おかげで自分が回答せずに済みました!

118 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 20:19:47 ]
>>114
このスレでGNUスタイルのコードは初めて見た気がする

119 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 20:48:25 ]
残念だが C++ の標準スタイルでは引数がないなら
int main() で良いんだよ。CはISO準拠だとint main(void)ってなるが



120 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:05:03 ]
>>73 こんなもんでおk?後々P5 を読む気が無いコードだけど…
#include<stdio.h>

FILE *comment_remove(const char *filename){ // P5 の時はデータ領域が不正になります
FILE *fp_src, *fp_work;
int moji, is_comment=0;

if((fp_src=fopen(filename, "r"))==NULL) return NULL;
if((fp_work=tmpfile())!=NULL){
while((moji=fgetc(fp_src))!=EOF){
if(moji=='#') is_comment=1;
if(moji=='\n') is_comment=0;
if(!is_comment) fputc(moji, fp_work);
}
fseek(fp_work, 0L, SEEK_SET);
}
fclose(fp_src);
return fp_work;
}

int pgm_info(const char *filename, char *pformat, int *pwidth, int *pheight, int *pdepth){
FILE *fp;
char buf[3+1];
int width, height, depth;

fp=comment_remove(filename);
if(fp!=NULL){
if(fscanf(fp, "%3s%d%d%d", buf, &width, &height, &depth)==4) sprintf(pformat, "%s", buf),*pwidth=width,*pheight=height,*pdepth=depth;
fclose(fp);
}
return 0;
}

121 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:12:07 ]
>>73
>>120 の訂正と使い方 (関数 pgm_info の返り値で成否を判定できるようにした)
int pgm_info(const char *filename, char *pformat, int *pwidth, int *pheight, int *pdepth){
FILE *fp;
char buf[3+1];
int width, height, depth, ret=0;

fp=comment_remove(filename);
if(fp!=NULL){
if(fscanf(fp, "%3s%d%d%d", buf, &width, &height, &depth)==4){
sprintf(pformat, "%s", buf),*pwidth=width,*pheight=height,*pdepth=depth,ret=1;
}
fclose(fp);
}
return ret;
}

int main(void){
char format[3+1];
int width, height, depth;
pgm_info("a.pgm", format, &width, &height, &depth);
printf("format : %s\nwidth : %d\nheight : %d\ndepth : %d\n", format, width, height, depth);
return 0;
}

122 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:29:58 ]
>>109
ありがとうございます。
1,2の方もお願いできませんか

123 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:54:22 ]
>>109
1はyの範囲に制限を付けないと難しいのではないかな。
例えば1900年以降でよいとか、前提はないの?

124 名前:123 mailto:sage [2007/08/30(木) 23:57:24 ]
失礼、
>>109さんではなく>>101さんあてです

125 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 00:24:33 ]
>>124
問題を確認しましたが101で書いたことしか載ってませんでした。

126 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 00:56:07 ]
76の1で
void arr_cycle(int *arr, int len)
{
int i, temp;
temp = a[len-1];
for(i=len-1;i>0;i--) arr[i] = arr[i-1];
a[0] = temp:
}
でソースをかいてくれませんか

127 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 01:10:34 ]
>>126
日本語でOk

128 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 02:01:56 ]
>>101
日付チェックはしてない。グレゴリオ暦が使われた年以降。
int leap(int y)
{
return (y%4==0)?(y%100==0)?(y%400==0)?1:0:1:0;
}
int days(int y,int m,int d)
{
int dom[2][12]=
{{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
int day=0,i,j;
j=leap(y);
for(i=0;i<m-1;i++) day+=dom[j][i];
day+=d;
return day;
}
main()
{
int y,m,d;
scanf("%d %d %d",&y,&m,&d);
printf("days=%d\n",days(y,m,d));
}

129 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 07:51:47 ]
>>101
#include<stdio.h>
int f(int y,int m,int d){
if(m<3)
y--,m+=12;
return y*365+y/4-y/100+y/400+(m+1)*306/10+d-428;
}
int leap(int y){
return f(y,3,1)-f(y,2,29);
}
int days(int y,int m,int d){
return f(y,m,d)-f(y,1,0);
}
int main(void){
int ymd;
printf("yyyymmdd="); scanf("%d",&ymd); printf("leap=%d\ndays=%d\n",leap(ymd/10000),days(ymd/10000,ymd%10000/100,ymd%100));
return 0;
}

#include<stdio.h>
#define PI 3.1415926535897932384626433832795
double rad(double s){
return s*PI/180;
}
double deg(double r){
return r*180/PI;
}
int main(void){
double s;
printf("s="); scanf("%lf",&s); printf("rad(s)=%.9f\ndeg(rad(s))=%.9f\n",rad(s),deg(rad(s)));
return 0;
}



130 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 09:41:06 ]
>>73 バイナリフォーマットにも対応できるように作りなおしてみた
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int pgm_get_word(FILE *fp, char buf[], int buf_size){
int i=0, moji;
while(i<buf_size-1 && (moji=getc(fp))!=EOF){
if(isspace(moji)){ if(i>0) break; }
else if(moji=='#'){
fscanf(fp, "%*[^\n]");
if(i>0) break;
}else{ buf[i++]=moji; }
}
buf[i]='\0';
if(i>=buf_size-1) while((moji=getc(fp))!=EOF && !isspace(moji)) ;
return (i>0);
}
int pgm_info(const char *filename, char *pformat, int *pwidth, int *pheight, int *pdepth){
FILE *fp;
char format[3+1], width[10+1], height[10+1], depth[4+1];
int ret=0;
fp=fopen(filename, "rb");
if(fp!=NULL){
if(pgm_get_word(fp, format, sizeof(format)) && pgm_get_word(fp, width, sizeof(width)) &&
pgm_get_word(fp, height, sizeof(height)) && pgm_get_word(fp, depth, sizeof(depth)) ){
sprintf(pformat, "%s", format); *pwidth=atoi(width); *pheight=atoi(height); *pdepth=atoi(depth);
ret=1;
}
fclose(fp);
}
return ret;
}

131 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 11:01:58 ]
これを76の1のようにずらしたいのですが
#include <stdio.h>

void arr_cycle(int arr[], int len)
{
int i, temp;
temp = arr[len-1];
for(i=len-1;i>0;--i)
arr[i] = arr[i-1];
arr[0] = temp;
}
int main(void) {
int i;
int n;
int data[10];

scanf("%d", &n);
for(i = 0;i < n;i++)
scanf("%d",&data[i]);

arr_cycle(&data[i], n);
for(i=0;i<n;i++)
printf("%d ",data[i]);

return 0;
}






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<83KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef