07/08/28 11:04:38
>>20
1
#include <stdio.h>
void exch_order(int *pa, int *pb) {
if(*pa>*pb)
{
int tmp=*pa;
*pa=*pb;
*pb=tmp;
}
}
int main(void) {
int a,b;
printf("Input > ");
scanf("%d %d",&a,&b);
exch_order(&a, &b);
printf("%d %d\n",a,b);
return 0;
}
22:デフォルトの名無しさん
07/08/28 11:55:23
>>20 2 きんもぉ~☆なクソース♪
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX 256
#define swap(type,x,y) do{type tmp=x; x=y; y=tmp;}while(0);
int main(void) {
char str[MAX];
size_t i,str_len;
printf("Input > ");
for(i=0; i<sizeof str/ sizeof str[0] -1; i++) {
str[i]=getchar();
if( !isprint(str[i]) ) break;
}
str[i]='\0';
str_len=strlen(str)-1;
for(i=0; i<=str_len/2; i++)
swap(char,str[i],str[str_len-i]);
printf("%s \n",str);
return 0;
}
23:デフォルトの名無しさん
07/08/28 13:03:00
>>21,22
ありがとうございました。
24:デフォルトの名無しさん
07/08/28 14:24:29
>>21
>20の1は、こういうことではないのか?
>整数a,bを入力とし、以下の関数を定義して、小大の順に出力するプログラムを作成せよ。区切りは空白とする。
入力:整数
出力対象:以下の関数
出力条件:小大の順に
関数を小大の順に出力ってのがどういうことかはわかりませんが。
25:デフォルトの名無しさん
07/08/28 14:25:43
しかし、京大にもまとに文章を書けない指導教官がいるんだなぁ……
26:デフォルトの名無しさん
07/08/28 15:52:35
っつか
> void exch_order(int *pa, int *pb)
> ポインタ引数を用い、大小関係により、 *pa と *pb を入れ替えて格納する。
入れ替えて格納する機能だけで十分でしょ。前文には「以下の関数を定義して」とあるんだし。
以下に該当する関数が、表示するところまでは条件に入ってない。
27:デフォルトの名無しさん
07/08/28 17:20:57
xy平面の図形の問題なのですが、
二点(xs,ys)-(xe,ye)で与えられる線分が、長方形の領域(左下コーナー(xmin,ymin)、右上コーナー(xmax,ymax))
と交わるかどうか判定したいのですが、良い方法はありますか?
細かく場合分けして、判定したら出来そうなのですが、
何か物凄くいい方法で、数行で書けるような判定方法があればうれしいのですが。
Cで書いています。
よろしく
28:デフォルトの名無しさん
07/08/28 18:21:07
月を入力したら、1日からその月の最後の日までを
日 月 火・・・
1 2・・・
・・・
と表示するプログラムを教えてください。
29:デフォルトの名無しさん
07/08/28 18:25:41
>>28
カレンダーを見た事は有りますか?
年も指定しないと無理なんですよ。
30:デフォルトの名無しさん
07/08/28 19:09:32
>>29
日本語を見たことありますか?
書かれたまんまのことを答えれば良いのですよ。
31:デフォルトの名無しさん
07/08/28 19:23:57
つまり、実際の曜日に関わらず月の下に1と書けば宜しいか。
32:デフォルトの名無しさん
07/08/28 19:34:52
>>31 たぶん、>>28の内容からしたらそうアルよ。難しく考えないで、答えるアルよ。
けど、テンプレに則ってないんで無視しチャイナ。
33:デフォルトの名無しさん
07/08/28 20:33:59
[1] 授業単元: C
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語: c
[4] 期限: 2007年8月30日
再々ですがお願いします
34:デフォルトの名無しさん
07/08/28 20:41:32
int *pstr でいいんすか?
35:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:ジャレ
07/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:デフォルトの名無しさん
07/08/28 23:16:32
>>36
回帰直線(最小二乗法)のように数式で表現できるはずだから、それを晒してくれれば…
39:デフォルトの名無しさん
07/08/28 23:18:52
>>27
>>1 の質問テンプレ
それと線分の交差って高校の数学でやらなかったっけ?
もう忘れてしまったけど
40:デフォルトの名無しさん
07/08/29 00:42:22
>>36
URLリンク(kansai2channeler.hp.infoseek.co.jp)
クラメルじゃ遅いかな
入力例
4 (点の個数)
1.0 0.0 (各座標)
0.0 1.0
-1.0 0.0
0.0 -0.5
点の個数が3未満のときと全ての点が一直線上にあるときは答えが出ない
41:デフォルトの名無しさん
07/08/29 02:24:44
>>37
できてるところまでうp!
42:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/29 10:26:34
仕様を勝手に変えるのは最悪
48:デフォルトの名無しさん
07/08/29 10:34:40
問題が悪いな、非負整数の不定長配列と言いつつint *なんだから。
とは言え、>46は性質が悪すぎる。
49:デフォルトの名無しさん
07/08/29 10:48:37
>>46
ソース全部書いて貰えるとうれしいのですが
50:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/29 11:41:22
数字一つごとにreallocって凄いな
52:デフォルトの名無しさん
07/08/29 11:42:39
realloc()が毎回API叩く仕様だったら泣けるね。
53:デフォルトの名無しさん
07/08/29 12:03:42
何個か一括して要求したらいいのに。
54:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/29 12:54:04
>>54
strlenでググれ。
それだけで解決するから。
57:【4200円(定額)】
07/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:デフォルトの名無しさん
07/08/29 13:08:03
悪い見本のようなコードだな
59:デフォルトの名無しさん
07/08/29 13:16:55
>>58
BM法でやれとか書いてないからいいんじゃないかな。
いかにもって感じで。
60:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/29 14:00:56
>>37のやつ、真面目にやろうとすると、コメント行読み飛ばしたり、
区切り文字判別したりしなきゃならないのか。
・改行が出現するまでを1行とする
・1行は70文字未満
・区切り文字は空白、タブ、改行の三種類
効率よく単語毎に切り出せるプログラムってどうやって作るの?
62:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/29 14:05:28
>>62
その条件を満たせばどんなプログラムでもいいってこと?
64:デフォルトの名無しさん
07/08/29 14:21:41
>必ずプロンプトで誰が見てもわかる対応型プログラム
物凄く難しくね?
65:62
07/08/29 14:31:50
>>63
どんなプログラムでも良いです。
66:デフォルトの名無しさん
07/08/29 14:55:26
対応型じゃなくて対話型?
67:デフォルトの名無しさん
07/08/29 15:02:22
>>64
>>66
問題文には対応型と書いてあったのですが、よくわからないので7番目の条件はどうでも良いです。
すいません。
68:デフォルトの名無しさん
07/08/29 15:07:36
7.がどうでもいいのなら無意味なコードを書き連ねて完成だなw
69:デフォルトの名無しさん
07/08/29 15:18:35
>>62
2~5の条件にある文は既に習ったんだろうけど
それぞれを学んだ時の題材として作ったのはどんなプログラム?
70:デフォルトの名無しさん
07/08/29 15:21:16
>>62なんでも良いなら、以前宿題スレであった問題に
つけた俺の答えを送ろう
「数値を螺旋状に表示するプログラム」
URLリンク(kansai2channeler.hp.infoseek.co.jp)
71:デフォルトの名無しさん
07/08/29 16:34:41
>>69
入力した数値が処理された数値として出力されるようなプログラムですかね。
平均を出したりとか。
あと、例としてはカレンダーをつくってみてはどうか?と書いてありました。
72:33
07/08/29 20:52:18
>>35
ソース全部を書いて貰えるとうれしいのです
後、2もお願いできませんか
73:ジャレ
07/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] 作成途中で、バグもありますが仕様はこんな感じになっています。
URLリンク(www8.uploader.jp)
74:デフォルトの名無しさん
07/08/30 00:23:52
>>61
pgmにはバイナリとアスキーがあって、どちらもヘッダ部(コメント含む)を読んだら後は、前者はfread()、
後者は本体部分が70文字以上の長い行のデータが多いことを鑑みてfscanf()で取り出せばいい。
問題はヘッダ部で、途中で改行されると読めないツールや逆に改行がないと読めないツールもあって、
どう解釈するかが微妙。
75:デフォルトの名無しさん
07/08/30 00:27:16
なんだ、>73を見る限りヘッダだけ読めば本体読む必要ないじゃん。
しかし、depthを色調と言われてもぴんとこないなぁ。
76:デフォルトの名無しさん
07/08/30 01:47:49
[1] 授業単元: C
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語: c
[4] 期限: 2007年8月30日
77:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/30 02:40:39
>>33
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
1と3だけきんもぉ~☆なクソースでお届けしまつ
79:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/30 04:32:39
1] 授業単元:C++
[2] 問題文(含コード&リンク):メインプログラムを参考に3次元配列を動的に確保する関数を作成せよ。
ただし、関数宣言は”void func(***)”を仕様する
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] Visual Studio 2005
[3.1] OS:Windows
[3.2] VC
[3.3] 言語: C++
[4] 期限: 無期限
[5] その他の制限: 特にありません
よろしくお願いします
83:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/30 12:27:03
こんな問題もできないのか
86:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/30 12:41:05
>>74
仕様に忠実にするなら
P5 100 100 255
P5
#hoge hoge
100 100
255
どちらも読めなきゃだめだよなあ。
88:デフォルトの名無しさん
07/08/30 13:33:48
課題というより依頼みたいなものもここでいいのでしょうか?
89:デフォルトの名無しさん
07/08/30 13:46:07
宿題・課題のみです。
90:デフォルトの名無しさん
07/08/30 13:50:48
あるC++のプログラムをC言語のプログラムに書き変えてほしいのですが
該当スレなどはありませんか?
91:デフォルトの名無しさん
07/08/30 14:01:05
何方か83 84お願いします
92:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/30 14:28:18
何方か86お願いします
98:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/30 14:59:04
[1] 授業単元: ランダム関数
[2] 問題文(含コード&リンク):20~100までのランダムな値を表示
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:BorlandC++
[3.3] 言語:C++
100:76
07/08/30 14:59:28
問題1、2、共にこれを参照と言ってました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
あと>>33の2もお願いできませんか?
101:デフォルトの名無しさん
07/08/30 15:14:23
[1] 授業単元: C
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語: c
[4] 期限: 2007年8月31日
102:デフォルトの名無しさん
07/08/30 15:22:46
>>76
あとから、これ参照してとか言うなカス
作った関数意味ねーだろうが
あと>>33の2も答え出てるだろうが
103:82
07/08/30 15:23:50
何方か82お願いします
104:デフォルトの名無しさん
07/08/30 15:26:58
[1] 授業単元:確率統計
[2] 問題文(含コード&リンク):
指定ファイルを読み込んで、
平均値と標準偏差を標準出力するプログラムを作成せよ。
(指定ファイル)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
このファイルの2列目の要素のみ(0.0732421875 0.0693359375 ・・・)の
平均値等を出せばいいようで、他の列の数値は無視して大丈夫だそうです。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 9月1日
[5] その他の制限:制限はありません。
よろしくおねがいします。
105:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/30 16:12:55
[1] 授業単元: 乱数
[2] 1~25までの数字をランダムで25個表示させる。その際同じ値がでないようにする。
[3.1] WinXP
[3.2] Borland
[3.3] C++
よろしくお願いします
111:デフォルトの名無しさん
07/08/30 16:24:11
>>104
URLリンク(kansai2channeler.hp.infoseek.co.jp)
112:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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
07/08/30 17:23:00
>>111
お早い回答ありがとうございます!!
おかげで助かりました!
116:111
07/08/30 17:48:33
久々ありがとうレスをもらった
「どういたしまして」
117:デフォルトの名無しさん
07/08/30 20:08:54
>>116
回答をしてもらったわけではない部外者だが、他の回答者として
自分よりお早く回答してくれてありがとうございました!
おかげで自分が回答せずに済みました!
118:デフォルトの名無しさん
07/08/30 20:19:47
>>114
このスレでGNUスタイルのコードは初めて見た気がする
119:デフォルトの名無しさん
07/08/30 20:48:25
残念だが C++ の標準スタイルでは引数がないなら
int main() で良いんだよ。CはISO準拠だとint main(void)ってなるが
120:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/30 23:29:58
>>109
ありがとうございます。
1,2の方もお願いできませんか
123:デフォルトの名無しさん
07/08/30 23:54:22
>>109
1はyの範囲に制限を付けないと難しいのではないかな。
例えば1900年以降でよいとか、前提はないの?
124:123
07/08/30 23:57:24
失礼、
>>109さんではなく>>101さんあてです
125:デフォルトの名無しさん
07/08/31 00:24:33
>>124
問題を確認しましたが101で書いたことしか載ってませんでした。
126:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/31 01:10:34
>>126
日本語でOk
128:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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;
}
132:デフォルトの名無しさん
07/08/31 11:46:32
[1] 授業単元: c言語
[2] 非負整数の不定長配列 arr[] 中で、全てのデータが閾値 thre 以上かどうかの真偽値(0または1)を返却する関数 arr_thre_all() を作成する。終端番兵は、EOA(-1) とする。反復変数を用いず、ポインタのアドレス演算を用いる。
システム上では、入力の先頭をthre、それ以降はarrとする。入力の終了はEOA(-1)とする。全て閾値以上の場合は 1 、そうでない場合は 0 を出力するプログラムを作れ。
入力例:1 2 3 4 1 -1
出力例:1
[3.1] WinXP
[3.2] bcc
[3.3] C
[4]8/31
133:デフォルトの名無しさん
07/08/31 12:02:54
>>131
arr_cycle(data,n);
134:デフォルトの名無しさん
07/08/31 12:39:47
>>131
ありがとうございます。
135:デフォルトの名無しさん
07/08/31 12:48:51
[1] 授業単元:
[2] 問題文:1~10までの数字を2回入力し1番目と2番目までの入力された値を足し算して表示させる
[3.1] WinXp
[3.2] Borland
[3.3] C++
[5] その他の制限:2番目に入力される値は1番目よりも小さくなるようにする。
8 4 と入力されたら
8+7+6+5+4と計算され、30と表示される感じです
136:デフォルトの名無しさん
07/08/31 12:52:11
>>33の2ですが
URLリンク(kansai2channeler.hp.infoseek.co.jp)
和がうまく求めたいのですが、どうすればいいのでしょうか?
137:デフォルトの名無しさん
07/08/31 13:00:10
>>136
> int iary[] ={0};
これだとそもそも一個しか入力できないわけだが。
入力ロジックは兎も角、積算ロジックはぱっと見良さそうだよ。
138:デフォルトの名無しさん
07/08/31 13:30:57
サイズの問題以外にも配列にEOAを入れないのはまずいだろ。
139:136
07/08/31 14:29:34
どのように入力を変えればよいのでしょうか?
140:デフォルトの名無しさん
07/08/31 14:46:34
int iary[数値] ={0};
ってやればいいんじゃない?
141:デフォルトの名無しさん
07/08/31 14:55:26
入力の終了条件を-1が入力されたらにする。
142:136
07/08/31 15:04:55
ちょっとよくわからないので書いてくれませんか?
143:デフォルトの名無しさん
07/08/31 15:23:51
>>136のソース見て、usepointersumなんて言う情けない関数名
を見て、「あれ、どっかで俺、こんな関数名の入ったソースを張ったぞ」
と思って見返したら>>81で>>33に向けて張ったソースの一部じゃねぇか
どおりで<ctype.h>が意味無くincludeされてるわ。
ファイルそのものUpしてあげる
URLリンク(kansai2channeler.hp.infoseek.co.jp)
それで、いったい何をしたいのか、事細かく質問しなよ
何が分からないのかがわからないの?まぁ、良いや。
ついでに>>33よ、まるで自分が書いたようにソースファイルをupしちゃだめだよ
144:136
07/08/31 15:31:29
>>143
すいませんでした。
ソースから数値を読み取るんじゃなくて、コンパイラから入力したいのですが
145:デフォルトの名無しさん
07/08/31 15:36:13
>>144
もう我慢ならねえ!!!!
コマンドラインから受け取るようにしろよ、この穀つぶしが!!!!!!!
146:143
07/08/31 16:06:11
「コンパイラから入力したいのですが」の意味が俺にはわからない。
147:デフォルトの名無しさん
07/08/31 16:30:45
コンパイラが対話式とみた
148:デフォルトの名無しさん
07/08/31 16:48:30
コンパイルオプションで -Dxxx=yyy とか付けるんじゃない?
149:デフォルトの名無しさん
07/08/31 17:41:01
統合開発環境で、デバッグ時に、引数を与えたいが、やり方がわからない。
こうなんじゃないか?
150:デフォルトの名無しさん
07/08/31 19:59:35
最近のコンパイラは賢いな。ESP機能がある。
151:デフォルトの名無しさん
07/09/01 01:14:10
>>132
#include <stdio.h>
#define EOA -1
#define ARRMAX 1024
int arr_thre_all(int* arr, int thre){
while(*arr != EOA) if(*(arr++) < thre) return 0;
return 1;}
int main(void){
int i; int arr[ARRMAX]; unsigned int thre;
scanf("%d", &thre);
for(i = 0; i != ARRMAX; i++){
scanf("%d", &arr[i]);
if(arr[i] == EOA) break;}
i = arr_thre_all(arr, thre);
printf("%d\n", i);
return 0;}
152:デフォルトの名無しさん
07/09/01 02:18:00
#include <stdio.h>
int main(){
int u,l;
while(1){scanf("%d",&u);if(u<11 && u>0){break;}}
while(1){scanf("%d",&l);if(l<u && l>0){break;}}
//printf("%d +%s%d = %d\n", u, (u-l>2)?" ... + ":" ", l, ( u + l )*( u - l + 1 ) / 2);
printf("%u\n", ( u + l )*( u - l + 1 ) / 2);
return 0;}
153:デフォルトの名無しさん
07/09/01 15:53:36
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
C#でクラスを用いてシューティングゲームを作れ。
スタート・中断・再開ボタン機能を必ず入れ、敵味方と弾は全てオブジェクトとする
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Windows visual studio2005
[3.3] 言語: C#
[4] 期限:9月4日
[5] その他の制限: なし
C#は駄目でしょうか。
C#のソース付きのゲームとかがあればそれを参考にやれるんですが・・・
154:デフォルトの名無しさん
07/09/01 15:54:59
C/C++のみです。C#は他言語です。
155:デフォルトの名無しさん
07/09/01 16:30:32
C#のソース付きのゲームのサンプルってテトリスぐらいしかしらんな~
156:デフォルトの名無しさん
07/09/01 19:03:05
>>153
夏休み中に何をしていたんだ
157:デフォルトの名無しさん
07/09/01 19:14:24
>>153
ガンシューにしてみたら?
158:デフォルトの名無しさん
07/09/01 19:58:00
1対1のガンマンシューティングなんてどうだ?
159:デフォルトの名無しさん
07/09/01 20:50:01
[1] 授業単元:C言語
[2] 問題文: 文字列に含まれるすべての文字を、1つ後のASCⅡコードをもつ文字に置き換えるプログラムを作成する。
例:Nurupo → Ovsvqp
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ: bcc
[3.3] 言語: C
[4] 期限: 9月4日
[5] その他の制限: 特にありません。 よろしくお願いします。
160:デフォルトの名無しさん
07/09/01 21:07:52
>>159
#include <stdio.h>
#define MAX_LENGTH 512
int main(void)
{
char str[MAX_LENGTH] = "Nurupo", buf[MAX_LENGTH];
int i;
for(i=0; str[i]; i++) buf[i] = str[i] + 1;
buf[i] = '\0';
printf("%s → %s", str, buf);
return 0;
}
161:デフォルトの名無しさん
07/09/01 21:08:52
ああ、置き換えるのか・・・仕様とは違うなorz
162:デフォルトの名無しさん
07/09/01 21:16:12
do *p+=1; while(*++p);
適当に置き換えておいてくれ
163:デフォルトの名無しさん
07/09/01 22:39:03
アスキーコード最後の文字はどうするん?
164:デフォルトの名無しさん
07/09/01 22:45:54
何も考えずに1つ後のASCⅡコードをもつ文字にするんだろ
165:デフォルトの名無しさん
07/09/01 22:56:37
[1] 授業単元:C言語
[2] 問題文: 長方形の縦と横の長さ(double型)を引数として受け取り、その長方形の面積(double型)を
返す関数Xを作り、mainから呼び出して動作を確認するプログラムの作成
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Windows visual studio2005
[3.3] 言語: C
[4] 期限: 9月3日 21時
[5] その他の制限: なし
166:デフォルトの名無しさん
07/09/01 23:02:06
#include <stdio.h>
double X(double width, double hight)
{
return width * hight;
}
int main(void)
{
printf("%g", X(10.0, 8.0));
return 0;
}
167:デフォルトの名無しさん
07/09/01 23:50:03
>>155
テトリスでもいいんで教えてもらえないでしょうか。要領さえ分かれば何とかなるんで
>>156
全然違う事の勉強です。
168:デフォルトの名無しさん
07/09/02 00:11:21
>>162
これって1文字目が\0だとPC爆発しないか?
169:デフォルトの名無しさん
07/09/02 00:21:51
しないよ
170:デフォルトの名無しさん
07/09/02 05:25:19
>>167
URLリンク(school.topposystem.co.jp)
のフリーサンプル集のどっかにあったよ。
っていうか、俺もサンプルとして見たかったからダウンしたので
それをupしますね
URLリンク(kansai2channeler.hp.infoseek.co.jp)
171:デフォルトの名無しさん
07/09/02 20:09:48
>>160
お早い回答ありがとうございます!!
おかげで助かりました!
>>162
どこを置き換えればいいかもおしえていただけると助かるのですが
おしえていただけないでしょうか?
172:デフォルトの名無しさん
07/09/02 20:53:33
>>171
void replaceFollower(char * foo)
{
for (unsigned ic = 0; foo[ic] != '\0'; ++ic) {
++foo[ic];
}
}
#include <stdio.h>
int main()
{
char str[] = "Nurupo";
printf("%s\n", str);
replaceFollower(str);
printf("%s\n", str);
return 0;
}
173:36
07/09/02 22:49:56
>>36です.
遅くなりましたが,答えてくださった方ありがとうございます.
無事に課題提出を行うことができました.
実は>>36で書いた課題にはオプション問題がありまして,
自分には全く分からなかったので手を出さなかったのですが….
どのように解答するか気になるので,
もし分かる方がいたらよろしくお願いします.
[1] 授業単元:C言語
[2] 問題文:
二次座標平面において,ランダムに4~5個ほど点が与えられる.
そのような複数の点の最近傍を通る円の方程式を求めよ.
ただし,中心座標(x_0,y_0)は
(1)一番低いy座標よりも下にある.
(2)一番低いx座標よりも左にある.または,一番高いx座標よりも右にある.
{if((x_0<=xmin||x_0<=xmax)&&y_0<=ymin) true;}
を満たすものとする.
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:期限なし
[5] その他の制限:計算速度が速い方が好ましい.
174:デフォルトの名無しさん
07/09/02 22:55:35
>>173
最近傍の評価はどうするの?
円と点 n の距離を Dn と置く時
Σ(Dn)
Σ((Dn)^2)
とかそういうのが無いと解けないっぽ
175:36
07/09/02 23:28:37
>>174
評価関数は各自で任意に設定すると言われているのですが….
今回は
Σ(Dn^2)
の最小二乗法でお願いします.
176:デフォルトの名無しさん
07/09/03 00:47:20
[1] 授業単元:C言語
[2] 問題文: 整数aと自然数nを入力してaのn乗を求める。入力は正しく行われるものとする。
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ:Win visual studio2005
[3.3] 言語: C
[4] 期限: 9月5日
[5] その他の制限: --nを使うところまではわかるのですが、どうも上手くできません。
お力を貸していただけると助かります。
177:デフォルトの名無しさん
07/09/03 01:04:59
int factorial(int a,int n){
long int buf=a;
while(n!=0){
buf *=a;
n--;
}
return buf;
}
ただし少しnを大きくしただけでオーバーフローする
178:デフォルトの名無しさん
07/09/03 07:13:30
[1] 授業単元:C言語
[2] 問題文:掛け算の九九の表をファイルprod99.txtに書き込むプログラムを作成する。
[3.1] OS:Windows
[3.2] コンパイラ:Windows visual studio2005
[3.3] 言語: C
[4] 期限: 9月5日 12時
[5] その他の制限: 特にありません
179:デフォルトの名無しさん
07/09/03 08:34:13
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
仕事は「納期 T、作業時間 W、ペナルティ C」の
三つの情報で特徴付けられるとする。
N 個の仕事が与えられる。これらの仕事を適当に並び替えて
「納期から遅れた時間×ペナルティ」の総和を最小にせよ。
なお、開始の時刻は 0 とする。
入力:
一行目は仕事の総数 N (正の整数、N ≦ 50 としてよい)
二行目から n+1 行目までは仕事の情報 T W C (すべて正の整数)
出力:
最小の「納期から遅れた時間×ペナルティ」の総和。
例:
(入力)
2
1 2 3
1 1 1
(出力)
5
(1番目の仕事をやってから2番目の仕事をやる。両方納期には遅れるが
ペナルティ 5。逆にすると2番目の仕事は納期に間に合うがペナルティ 6)
[3] 環境:特に指定なし(OS環境問わず、C/C++どちらでも可)
[4] 期限:9月10日
[5] その他の制限:特になし
180:デフォルトの名無しさん
07/09/03 08:40:41
>>173
付帯条件がよくわからんのだけど、つまり円の右上だけ(or 左上だけ)で
他の点に近い円を描けってことでよいのかね?
181:デフォルトの名無しさん
07/09/03 08:43:42
>>178
#include <stdio.h>
int main() {
int i, j;
FILE *fp = fopen("prod99.txt", "w");
for (i = 1; i <= 9; ++i) {
for (j = 1; j <= 9; ++j) {
fprintf(fp, "%2d ", i*j);
}
fprintf(fp, "\n");
}
fclose(fp);
}
182:デフォルトの名無しさん
07/09/03 08:45:10
>>178
#include <stdio.h>
int main(void){
FILE *file;
if(({file=fopen("prod99.txt","r"))==NULL){
fputs("エディタを開いて、ファイル名 prod99.txt に以下を書き込んでください\n"
" 1 2 3 4 5 6 7 8 9\n"
" 1 1 2 3 4 5 6 7 8 9\n"
" 2 2 4 6 81012141618\n"
" 3 3 6 9121518212427\n"
" 4 4 812162024283236\n"
" 5 51015202530354045\n"
" 6 61218243036424854\n"
" 7 71421283542495663\n"
" 8 81624324048566472\n"
" 9 91827364554637281\n",stderr);
return 1;
}
fputs( " 1 2 3 4 5 6 7 8 9\n"
" 1 1 2 3 4 5 6 7 8 9\n"
" 2 2 4 6 81012141618\n"
" 3 3 6 9121518212427\n"
" 4 4 812162024283236\n"
" 5 51015202530354045\n"
" 6 61218243036424854\n"
" 7 71421283542495663\n"
" 8 81624324048566472\n"
" 9 91827364554637281\n",file);
fclose(file);
return 0;
}
183:182
07/09/03 09:01:27
if(({file=fopen("prod99.txt","r"))==NULL){
→
if(({file=fopen("prod99.txt","w"))==NULL){
184:デフォルトの名無しさん
07/09/03 09:11:13
{
185:デフォルトの名無しさん
07/09/03 12:02:13
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 逆ポーランド記法に変換してから計算する四則演算の電卓プログラムを作れ
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語: c
[4] 期限: 2007年9月4日
よろしくおねがいします。
186: ◆kRtmRcQ9ak
07/09/03 12:41:26
[1] 授業単元: コンピュータプログラミング
[2] 問題文: 名前&身長&体重の入力&ファイルに記録&読み出し&BMI計算(BMI=体重kg/(身長m)^2)&身長順に並び替え
[3] 環境
[3.1] windows
[3.2] コンパイラ名とバージョン:C++Compiler5.5
[3.3] 言語: C
[4] 期限:2007 9/5まで
[5] その他の制限:無し。
よろしくお願いします。
187:デフォルトの名無しさん
07/09/03 13:35:05
>>185
エラーチェックはしていない
二桁以上の数が入力される場合にも対応していない
URLリンク(kansai2channeler.hp.infoseek.co.jp)
188:billy
07/09/03 14:58:50
構造体に入っている値を32個ずつ別のテキストファイルに出力したいのですが、どうしたらいいのですか?
189:デフォルトの名無しさん
07/09/03 16:00:11
>>188
スレ違い
190:デフォルトの名無しさん
07/09/03 16:19:38
〔1〕C言語
〔2〕問題(下記)
#include<stdio.h>
void main()
{
int ia;
printf("整数を入力してください:");
scanf("%d",&ia);
if(○○)
printf("偶数です");
else
printf(”奇数です”);
}
問
上記に示したのは、入力した整数が偶数か奇数かを判断するプログラムである。
if(○○)の○○を埋めよ。
〔3〕WinXP
9月4日〆
よろしくお願い致します。
191:デフォルトの名無しさん
07/09/03 16:23:52
>>190
(ia+191)%2
192:デフォルトの名無しさん
07/09/03 16:35:44
>>191
協力感謝です。
有難うございました!
193:デフォルトの名無しさん
07/09/03 17:47:42
[1] 授業単元:C言語
[2] 問題:引数として渡された2つの整数の小さい方の値を返す関数である。
〔 〕のを埋めて関数を完成させよ。
〔 〕imin(int ia,int ib)
{
if(ia<ib)
〔 〕
else
〔 〕
}
[3] 環境
[3.1] OS:WindowsXP
[3.3] 言語:C++
[4] 期限: 9月4日まで
[5] その他の制限: なし
葬式で1週間授業休んだらおいてかれた\(^o^)/
194:デフォルトの名無しさん
07/09/03 17:52:28
>>193
〔int〕imin(int ia,int ib)
{
if(ia<ib)
〔return ia;〕
else
〔return ib;〕
}
195:デフォルトの名無しさん
07/09/03 17:54:22
〔/* 〕imin(int ia,int ib)
{
if(ia<ib)
〔; 〕
else
〔*/int imin(int ia,int ib){return ia<ib?ia:ib;〕
}
196:デフォルトの名無しさん
07/09/03 17:55:12
>>193
馬鹿?これよんどけ。
URLリンク(www5c.biglobe.ne.jp)
URLリンク(www5c.biglobe.ne.jp)
URLリンク(www5c.biglobe.ne.jp)
int
return ia;
return ib;
197:デフォルトの名無しさん
07/09/03 17:55:22
>195の勝ち。
198:デフォルトの名無しさん
07/09/03 17:56:07
>>195
この発想はなかったわ
199:デフォルトの名無しさん
07/09/03 20:52:39
[1] 授業単元:パターン認識
[2] 問題:
問題の概要はURLリンク(www.uploda.org)にかきました。
問題は、入力データを正規分布のデータで評価し確率をもとめてほしいのです。
長くなりましたがお願いします。
計算がめんどうだったらlogで出してくれてもいいです。
[3] 環境
[3.1] OS:LINUX
[3.3] 言語:C
[4] 期限: いつでもいいです。
200:36
07/09/03 21:35:18
>>180
そうです,右上または左上となる円を描くイメージです.
もしお時間ありましたらよろしくお願いします.
201:デフォルトの名無しさん
07/09/03 21:49:05
>>199
「正規分布のデータで『評価』」ってなに?
アップローダにあるほうもグダグダかかれてて
結局問題でやるべきことがよくわからないんだが。
202:デフォルトの名無しさん
07/09/03 22:01:08
評価するっていうのは平均と分散からできる分布のグラフ
(横軸が数値で、縦軸が度数(ここでは確率))において
入力データと数値を見比べて一致したところの確率を出すことを評価するっていうんです。
1つのデータが9次元なんです。
9次元の入力データから9次元の平均をひいたものを2乗して
9次元の分散でわる。そうすると9個の値がでますからそれをたせばexpの中身になって
expの前にある変数とexpをかけると確率が出せるわけです。
それがfです。
すいませんfの式がここでかけなくて。
203:デフォルトの名無しさん
07/09/03 22:07:30
>>202
平均分散が与えられた多次元正規分布の式に、与えられた
20個のデータを突っ込んだときの値を出せと言っている?
『評価』は estimate じゃなくて evaluate だということ?
204:デフォルトの名無しさん
07/09/03 22:12:00
そうです。まさしくそうです
205:デフォルトの名無しさん
07/09/03 22:19:08
しかしこの正規分布で出した確率があまりに小さくなってあってるかどうかもわからないまま
他のアルゴリズムに用いないといけないから困る。
206:デフォルトの名無しさん
07/09/03 22:32:06
>>204
URLリンク(kansai2channeler.hp.infoseek.co.jp)
205 のいうとおり、値があまりに小さくなったがこれでいいのかね。
207:デフォルトの名無しさん
07/09/03 22:35:07
値いくらになりました?
logで表示してくれるとありがたいです。
検算させていただきます。
208:デフォルトの名無しさん
07/09/03 22:37:44
>>173
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ファイル point.dat に次のように記述し、実行ファイルを実行する
4
1.0 0.0
0.0 1.0
-0.5 0.0
0.0 -1.0
209:デフォルトの名無しさん
07/09/03 22:50:46
>>208
目的関数の性質が悪そうなんだけど、単純な降下法でうまくいくの?
210:208
07/09/04 07:23:05
>>209
多分うまくいかない
局所解にはまってしまうと思う
でも、数学はもう解けない頭になってしまった
(仕事ならやるけどね)
211:デフォルトの名無しさん
07/09/04 07:45:43
数式で表すと、適当な平行移動と反転をして
min. Σ| (x-x_i)^2 + (y-y_i)^2 - r^2 |
s.t. x ≧ 0, y ≧ 0, r ≧ 0
を解く、という問題に落ちるんだけど、この目的関数は
凸でないし、滑らかでもないので非常に面倒な問題になるはず。
ただ、関数が綺麗だから逐次二次緩和くらいで十分解けそう。
とても実装する気にはならないけど。
212:デフォルトの名無しさん
07/09/04 15:02:44
[1] 授業単元: ランダム関数
[2] 問題文(含コード&リンク): トランプをランダムで表示させる
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland
[3.3] 言語:C++
表示が○○(マーク)の○(数字)と表示させたいのです
213:デフォルトの名無しさん
07/09/04 15:58:55
>>212
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
enum {MK_HEART, MK_DIAMOND, MK_CLOVER, MK_SPADE};
int mark, num;
srand(time(NULL));
mark = rand() % 4;
num = rand() % 13 + 1;
switch(mark)
{
case MK_HEART:printf("ハート");break;
case MK_DIAMOND:printf("ダイヤ");break;
case MK_CLOVER:printf("クローバー");break;
case MK_SPADE:printf("スペード");break;
}
if(1 < num && num < 11) printf("%d", num);
else
{
switch(num)
{
case 11:putchar('J');break;
case 12:putchar('Q');break;
case 13:putchar('K');break;
case 1:putchar('A');break;
}
}
return 0;
}
214:デフォルトの名無しさん
07/09/04 21:20:09
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
以前提出した物:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows/Linux
[3.2] コンパイラ名とバージョン: MicrosoftFramework/gcc
[3.3] 言語: C
[4] 期限:なるべく早く
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
以前もこのスレで質問し、教えていただいたものを用いて形にし、
提出はしたのですが結果がおかしく再提出を求められました
フィボナッチ数(fib)の値がおかしいのですが、
提出した物の最後の print(b3); printf("\n");を直前のfor文の中に入れて確認したところ、
8+13の結果(fib(8))が21でなく121になってしまっているため以降の全ての値がおかしくなっているようです。
おそらくpaddがおかしいのだと思うのですが、いろいろ変えてみても上手くいきません
おかしい箇所の指摘や改善方法のご教授をお願いします
215:デフォルトの名無しさん
07/09/04 21:25:30
MMXでも使ってんのかと思った
216:デフォルトの名無しさん
07/09/04 21:26:26
[1] 授業単元:C言語
[2] 問題文:文字列を入力し、その文字列を縦に並べて表示するプログラムの作成。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名:Windows visual studio2005
[3.3] 言語: C
[4] 期限: 9月5日 21時
[5] その他の制限: ないです。
よろしくお願いします。
217:デフォルトの名無しさん
07/09/04 21:29:45
>>216
#include <stdio.h>
int main(void)
{
char buf[512], *p = buf;
scanf("%s", buf);
while(*p)
{
printf("%c\n", *p);
p++;
}
return 0;
}
218:デフォルトの名無しさん
07/09/04 21:37:52
>>216
2バイト文字対応は不要?
219:デフォルトの名無しさん
07/09/04 21:50:15
海栗に書き換えればいいだけ
220:214
07/09/04 22:13:01
自己解決しました。
スレ汚しすみませんでした。
221:デフォルトの名無しさん
07/09/04 23:04:34
授業単元:C
問題文(含コード&リンク):
テーマ:文字配列の操作
1問目:キーボードより表示開始文字と表示終了文字を入力開始~終了までの文字を表示しなさい
char moji[]="ABCDEF~XYZ"; /*大文字26文字*/
実行画面
moji:ABCDEF~XYZ
開始位置==>B
終了位置==>F
表示:BCDEF
moji:ABCDEF~XYZ
開始位置==>D
終了位置==>D
表示:D
moji:ABCDEF~XYZ
開始位置==>E
終了位置==>B
表示:EF~XYZAB
環境:
OS:WindowsXP
コンパイラ名とバージョン:ボーランド
言語:C
期限:
222:デフォルトの名無しさん
07/09/04 23:06:43
授業単元:C
問題文(含コード&リンク):
テーマ:文字配列の操作
問題2:文字列と検索文字、置換文字を入力し文字列中の検索文字を置換文字に置き換え
なさい
実行画面
文字列(m1)入力==>ABCDEFAABCDABC
削除文字==>A
置換文字==>*
結果文字列(m1):*BCDEF**BCD*BC
環境:
OS:WindowsXP
コンパイラ名とバージョン:ボーランド
言語:C
期限:
223:デフォルトの名無しさん
07/09/04 23:20:30
>>211
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char moji[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; /*大文字26文字*/
char start, end, *p;
printf("moji:%s\n", moji);
printf("開始位置==>");
scanf("%c", &start);
fflush(stdin);
printf("終了位置==>");
scanf("%c", &end);
fflush(stdin);
if(!isalpha((int)start) || !isalpha(end)) return 1;
start = (char)toupper(start);
end = (char)toupper(end);
p = moji + start - 'A';
for(;;)
{
putchar(*p);
if(*p == end) break;
if(*(++p) == '\0') p = moji;
}
return 0;
}
224:デフォルトの名無しさん
07/09/04 23:24:39
>>222
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char m1[512];
char del, rplc, *p = m1;
printf("文字列(m1)入力==>");
scanf("%s", m1);
fflush(stdin);
printf("削除文字==>");
scanf("%c", &del);
fflush(stdin);
printf("置換文字==>");
scanf("%c", &rplc);
fflush(stdin);
for(; *p; p++)
{
if(*p == del)
{
*p = rplc;
}
}
printf("結果文字列(m1):%s", m1);
return 0;
}
225:デフォルトの名無しさん
07/09/05 00:32:04
[1] 授業単元:C言語
[2] 問題文: 文字(char型)を引数として受け取り、その文字が英小文字ならば大文字に、英大文字なら小文字に変換して返す関数toulを作り、
mainから呼び出して動作を確認するプログラムの作成する。ただし、引数はスペース、英字、数字のみとし、スペースや字数はそのまま変更しない。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Windows visual studio2005
[3.3] 言語: C
[4] 期限: 9月6日 22時
[5] その他の制限: なし
226:デフォルトの名無しさん
07/09/05 00:46:54
>>225
mainは省略
動作確認も省略
char toul(char buf){
int dif='A'-'a';
if(buf >= 'a' && buf <='z'){
return char + dif;
}else if(buf >= 'A' && buf <='Z'){
return char - dif;
}
227:デフォルトの名無しさん
07/09/05 00:50:15
>>225
#include <stdio.h>
#include <ctype.h>
char toul(char ch)
{
if(isupper(ch))
return tolower(ch);
else if(islower(ch))
return toupper(ch);
else
return ch;
}
int main(void)
{
printf("'%c' → '%c'\n", 'a', toul('a'));
printf("'%c' → '%c'\n", 'B', toul('B'));
printf("'%c' → '%c'\n", ' ', toul(' '));
printf("'%c' → '%c'\n", '2', toul('2'));
return 0;
}