927 :
デフォルトの名無しさん:2008/02/04(月) 12:35:58
>>925 まさかとは思うが、改行コードが\r\nのままLinuxでコンパイルしていないか?
5行目末のバックスラッシュが\rをエスケープしてしまい、その後の\nをエスケープできなくなるぞ。
929 :
デフォルトの名無しさん:2008/02/04(月) 14:43:27
[1] 授業単元: プログラミング入門
[2] 問題文(含コード&リンク):@0〜99の数字から異なる30個を選び、配列COM1[30]に格納せよ
(時間で初期化,乱数を使用)
A次に6個の異なる数を入力し配列COM2[6]に格納せよ
B次にCOM1、COM2の数を小さい順に並び変えよ
C次にCOM1とCOM2の両方に含まれる数の個数を求めよ
D最後にCOM1とCOM2の全数字とCの個数を出力させよ
[3] 環境
[3.1] OS:UNIX
[3.2] gcc 3.4
[3.3] 言語: C
[4] 期限:2月7日
[5] その他の制限:
宜しくお願いします。
932 :
デフォルトの名無しさん:2008/02/04(月) 15:33:49
>>931 make_com1()は
>>929の@の『0〜99の数字から異なる30個を選び』を
満たしてないような・・・(重複するんじゃないの?)
通りがかりで失礼
934 :
デフォルトの名無しさん:2008/02/04(月) 17:17:44
[1] 授業単元:C言語入門
[2] 問題文:キーボードから学籍番号を入力すると、
その学生の eメールアドレスを出力するプログラムを作成しなさい。
ただし、学籍番号は7桁の自然数とし、これ以外の文字列が打ち込まれた時には
「学籍番号は7桁の数字で入力して下さい」と出力して、終了するプログラムとすること。
例
学籍番号を入力して下さい:0032113
0032113@yahoo....など。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual studio
[3.3] 言語: C++
[4] 期限: 2月4日
[5] その他の制限:
期限ギリギリで申し訳ないですが、お願いします。
935 :
デフォルトの名無しさん:2008/02/04(月) 19:00:43
100回入れ替えなくても30回で十分なやり方あるだろ……と思ってよく見たらその交換の仕方はダメだ
937 :
935:2008/02/04(月) 20:46:34
あぁ・・・VCで作ったから_tmainのままになってら・・・
938 :
デフォルトの名無しさん:2008/02/04(月) 20:49:52
>>936 後学の為にダメな理由を詳しく教えてくれると嬉しい。
for( i = 0 ; i < sizeof(hoge)/sizeof(*hoge) ; i++ )
{ // i番目の要素と乱数(0~99)番目の要素を交換
int rnd = rand() % 100 ;
int tmp = 0 ;
tmp = hoge[i] ;
hoge[i] = hoge[rnd] ;
hoge[rnd] = tmp ;
}
これだと数値が偏るから
>>934 学籍番号とメールアドレスの関連はどうなってるんだ?
それだけじゃ、苗字を入力して、下の名前を出力するプログラムって言うぐらい、意味不明だぞ。
どうやって作ったらいいのかサッパリ分からん。
学籍番号@yahoo.co.jpでいいのか?
942 :
デフォルトの名無しさん:2008/02/04(月) 21:03:06
943 :
934:2008/02/04(月) 21:06:39
>>941 入力された学籍番号@yahoo.co.jp
と、出力されるプログラムです。
ただし、学籍番号は7桁の自然数とし、これ以外の文字列が打ち込まれた時には
「学籍番号は7桁の数字で入力して下さい」と出力して、終了するプログラムとすること。
↑ここがどのようにプログラムしたらいいのか分からないのです。
>>940 #include <stdio.h>
int main(void)
{
FILE *fp;
int i, j, a[11] = {0}, n;
if((fp=fopen("input.txt", "r"))==NULL) return 1;
while(fscanf(fp, "%d", &n)!=EOF) a[n/10]++;
for(i=0; i<11; i++) {
printf("%3d点台:", i*10);
for(j=0; j<a[i]; j++) putchar('*');
putchar('\n');
}
fclose(fp);
return 0;
}
>>942 単純化してhogeが3要素の場合を考えてみろ
この場合、rand()%3が三回計算されるから、これが完全な乱数だと近似すれば、27通りが均等な確率で出る
一方、3要素を並べ換える方法の数は3!=6通りで、27は6の倍数じゃないから、6通りが公平に出ることはありえない
948 :
デフォルトの名無しさん:2008/02/04(月) 21:41:46
>>943 #include<iostream>
using namespace std;
int main(void){
string s;
cout << "学生番号 : ";
cin >> s;
if(s.length() != 7){
cout << "7文字いれろぼけ" << endl;
return 1;
}
for(string::iterator si = s.begin(); si != s.end(); si++){
if(!isdigit(*si)){
cout << "数字以外いれんなぼけ" << endl;
return 1;
}
}
cout << s.c_str() << "@yahoo.co.jp" << endl;
return 0;
}
951 :
934:2008/02/04(月) 22:56:17
953 :
798:2008/02/05(火) 01:09:34
>>914さん
解説もつけていただき、ありがとうございました(^-^)/
954 :
デフォルトの名無しさん:2008/02/05(火) 12:22:57
文字列がランダムに入ったchar moji[i][255]があります
moji[0〜i]で何種類の文字列があるか数える方法教えてください
例えばi=5だとして
moji[0]="abc"
moji[1]="bbb"
moji[2]="abcdbbb"
moji[3]="bbb"
moji[4]="abc"
なら答えは3種類です
956 :
売国まるはん:2008/02/05(火) 13:11:47
957 :
デフォルトの名無しさん:2008/02/05(火) 15:11:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):与えられたデータに対して季節調整を行うプログラムを作成しなさい。
<調整法>
i年目、j月のデータを aij とする。
月平均 Mj
月平均の平均 M
調整のための指数 Sj = Mj / M
調整結果 aij / Sj
<input.text>
40.0 37.7 51.8 45.9 45.2 45.4 62.0 40.8 42.1 49.1 51.5 93.4
42.6 39.5 53.4 47.6 47.0 47.5 63.5 42.2 42.9 51.1 51.8 94.7
43.3 39.8 53.6 48.5 48.3 47.5 65.9 42.8 43.7 53.2 52.9 97.0
44.9 42.3 55.0 50.7 48.6 48.9 68.8 43.3 46.2 54.2 54.6 100.5
47.5 42.8 57.7 52.6 51.0 50.9 71.4 45.0 47.3 56.8 56.7 102.7
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語:C++
[4] 期限:2月7日
[5] その他の制限: 結果は、画面に表示してください。
よろしくお願いします!
[1]授業単元 C言語
[2]問題文 整数yを入力すると、y×yの正方形を描くプログラム
ex)y=4のとき
・・・・
・ ・
・ ・
・・・・
y=1のときは
・
y=2のときは
・・
・・
でOK
[3]環境 Windows、C
[4]期限 2/6 9:30まで。なるべく早めにお願いします。
//
>>959 2バイト文字にするのは自分でやってくれ。
#include <stdio.h>
int main()
{
int y;
scanf("%d", & y);
if (y >= 1) {
for (int xc = 0; xc < y; ++xc) {
printf(".");
}
printf("\n");
}
for (int yc = 0; yc < y - 2; ++yc) {
printf(".");
for (int xc = 0; xc < y - 2; ++xc) {
printf(" ");
}
printf(".\n");
}
if (y >= 2) {
for (int xc = 0; xc < y; ++xc) {
printf(".");
}
printf("\n");
}
return 0;
}
/* こんでいいじゃんw */
#include <stdio.h>
int main()
{
int y, xc, yc;
scanf("%d", & y);
for (yc = 0; yc < y; ++yc) {
for (xc = 0; xc < y; ++xc) {
printf("%s", yc == 0 || yc == y - 1 || xc == 0 || xc == y - 1 ? "・" : " ");
}
putchar('\n');
}
return 0;
}
963 :
デフォルトの名無しさん:2008/02/05(火) 18:21:06
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
・時計の長針と短針がなす角を求めるプログラム
時刻 h時 m分 (24時間制、mは整数)において、時計の長針と短針がなす角θ(0°≦θ≦180°)
を計算するプログラムを書きなさい。
ただし、h、mを入力する部分、及びなす角θを計算する部分をそれぞれ関数化しなさい。
結果の出力はh、m、θが表示されていれば細かい様式は問わない。
ヒント:時計の長針は1時間で一周するということは、1分間あたり何度動くか。
同様に、時計の短針は12時間で一周するということは1時間当たり何度動くか。
また1分間あたり何度動くか。時計の長針は短針に比べて1分間にどれだけ多く動くか。
実行例
>clock.exe
input h:22
input m:0
22:00 (60.0°)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年2月6日12:00まで
[5] その他の制限: 制限は特にありません。よろしくお願い致します
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):
http://ip.tosp.co.jp/i.asp?I=cgenger [3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語:C++
[4] 期限:2月9日
[5] その他の制限: 宜しくお願いします
>>963 #include<stdio.h>
#include<math.h>
double calc_theta(int hour, int minute){
double degree_hour, degree_minute, theta;
degree_hour=(hour+minute/60.0)*30.0;
degree_minute=minute*6.0;
theta=fmod(degree_hour-degree_minute, 360.0);
if(theta<0.0) theta+=360.0;
if(theta>180.0) theta=360.0-theta;
return theta;
}
void get_value(int *pvalue, const char *message){
printf("%s", message);
scanf("%d", pvalue);
}
void get_hour(int *phour){
get_value(phour, "input h:");
}
void get_minute(int *pminute){
get_value(pminute, "input m:");
}
int main(void){
int hour, minute;
get_hour(&hour);
get_minute(&minute);
printf("\n%02d:%02d (%.1f°)\n", hour, minute, calc_theta(hour, minute));
return 0;
}
966 :
963:2008/02/05(火) 20:50:26
>>965さん
宿題でこれだけがどうしても分からなかったので、
本当に助かりました。
コードを見て理解することができました。
ありがとうございました!
967 :
デフォルトの名無しさん:2008/02/05(火) 21:51:10
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6002.txt このプログラムにより1つのxに対して100個の誤差を含んだyが求められるので
それぞれのxについて分散S=(1/100)*((yの平均値)-(yの値))を求めて
fprintf(fp2,"%lf\t%lf\n",x,S);を使ってtxtファイルに書き出す
[3] 環境
[3.1] Windows
[3.2] Visual Studio 2005
[3.3] 言語:C
[4] 期限:2月6日正午
問題文のプログラムに付け加える形でやってもらえるとありがたいです
時間短いですがどうかよろしくお願いします
2乗が足りないな
969 :
967:2008/02/05(火) 23:10:36
あ、ほんとだ
S=(1/100)*((yの平均値)-(yの値))^2 ですね
>>967 void main()
{
double X[2];
int flag=0;
srand( (unsigned)time( NULL ) );
int i;
long double x,y, sum_y, sum_y2, s;
x=0;
FILE *fp1, *fp2;
fp1=fopen("file1.txt","w");
fp2 = fopen("file2.txt", "w");
for(x=0;x<=10;x++)
{
i=0;
sum_y = sum_y2 = 0;
while(i<100){
i=i+1;
y=x*x+AddError(&flag,X)*0.05;
sum_y+=y;
sum_y2 += pow(y, (long double)2.0);
fprintf(fp1,"%lf\t%lf\n",x,y);
}
s = -pow(sum_y, (long double)2.0)/10000 + sum_y2/100;
fprintf(fp2, "%lf\t%lf\n", x, s);
}
fclose(fp1);
fclose(fp2);
}
>>954 std::set<std::string>(moji,moji+sizeof(moji)/sizeof(*moji)).size()
972 :
デフォルトの名無しさん:2008/02/06(水) 00:14:18
>>973 !!
もう誰かが質問してたってことですか! ぐへえ
975 :
デフォルトの名無しさん:2008/02/06(水) 09:25:24
【質問テンプレ】
[1] 授業単元:C++
[2] 問題文
テトラナッチ数列の問題で。
初項と第2項は0、第3項は1の値となるが第n項(n>3)び値Tnは以下の式で
あらわせられる。
Tn=Tn-1+Tn-2+Tn-3
再起を利用した関数int tetra(int n)を作成しn=1から n=30までに各値を表示
させたい。以下の質問に答えよ
@関数tetraを以下に記述せよ
Amain関数を以下に記述せよ
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (borand5.5)
[3.3] 言語: (/C++/)
[4] 期限: 今日中
976 :
975:
追記で。
上記プログラムを何回実行したかを確認したいときどこをどのように変更したらよいか答えなさい。