C/C++の宿題を片付けます 102代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/01/05(土) 15:48:48【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう.
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【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++の宿題を片付けます 101代目
http://pc11.2ch.net/test/read.cgi/tech/1197132472/
0153デフォルトの名無しさん
2008/01/07(月) 11:36:01期限が早いものからガンガル
0154デフォルトの名無しさん
2008/01/07(月) 11:36:37一応張ってみます
#include <stdio.h>
int main()
{
int a, b;
for(a = 2; a <= 100; a++){
for(b = 2; b < a; b++){
if(a % b == 0)break;
}
if (a == b) printf("%d \n", a);
}
return 0;
}
0155デフォルトの名無しさん
2008/01/07(月) 11:40:02using namespace std;
#define N 1000
main(){
int n,k, sosu[N+1];
for(n=0;n<=N;n++)sosu[n]=1;
for(n=2;n*n<=N;n++)
for(k=2*n;k<=N;k+=n)sosu[k]=0;
for(n=2;n<=N;n++)if(sosu[n])cout<<n<<endl;
}
0156デフォルトの名無しさん
2008/01/07(月) 11:40:46#include <stdio.h>
#define N 1024
int main(void)
{
int i, j, k = 2, prime[N] = {2, 3};
for(i = 5; i <= 1000; i += 2){
for(j = 0; j < k && i%prime[j] != 0; j++);
if(j == k) prime[k++] = i;
}
for(i = 0; i < k; i++) printf("%5d", prime[i]);
putchar('\n');
return 0;
}
0157デフォルトの名無しさん
2008/01/07(月) 11:42:46それだと数が多い場合に時間がかかる エネ***の篩が定番
0158デフォルトの名無しさん
2008/01/07(月) 11:43:37l三`ー 、_;:;:;:;:;:;:j;:;:;:;:;:;:_;:;:;_;:��-三三三三三l
l三 r=ミ''‐--‐';二,_ ̄ ,三三三彡彡l_ この感じ・・・・
lミ′  ̄ ー-'" '=ミニ彡彡/‐、ヽ
l;l ,_-‐ 、 __,,.. - 、 彡彡彳、.// ZIPか・・・・
_______∧,、_‖ `之ヽ、, i l´ _,ィ辷ァ-、、 彡彡'r ノ/_ ______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄'`'` ̄ 1  ̄フ/l l::. ヽこ~ ̄ 彡彳~´/  ̄ ̄ ̄ ̄ ̄ ̄
ヽ ´ :l .l:::. 彡ィ-‐'′
ゝ、 / :. :r-、 彡′
/ ィ:ヘ `ヽ:__,ィ='´ 彡;ヽ、
_,,..-‐'7 /:::::::ヽ _: :_ ヽ ィ´.}::ヽ ヽ、
_,-‐'´ { ヽ:::::::::ヘ `'ー===ー-- ' /ノ /::::::ヘ, ヽー、
0159デフォルトの名無しさん
2008/01/07(月) 11:47:07ありがとうございます、こんな早くレスがもらえるものなんですね。
参考にさせてもらます
0161デフォルトの名無しさん
2008/01/07(月) 12:19:28if(a % b == 0)break;
の部分でで何で2以外の時も抜けられるのか教えてくれ
0162デフォルトの名無しさん
2008/01/07(月) 12:22:15a/bであまりがでない場合、つまり割り切れる場合は抜けるって構造だろう
0163デフォルトの名無しさん
2008/01/07(月) 12:46:18[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5653.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual studio 2005
[3.3] 言語: C言語
[4] 期限:
[5] その他:よろしくおねがいします。
0164デフォルトの名無しさん
2008/01/07(月) 12:47:44[2] 問題:5を入力して以下の表示をするプログラム
____*
___*_*
__*_*_*
_*_*_*_*
*_*_*_*_*
(_はスペースです)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c
[4] 期限:2008年1月8日
[5] その他の制限:for文でお願いします
0165デフォルトの名無しさん
2008/01/07(月) 12:55:13#include<stdio.h>
int main(void){
int a;
scanf("%d",&a);
if(a==5){
printf(" *\n * *\n * * *\n * * * *\n* * * * *\n");
}
return(0);
}
0166デフォルトの名無しさん
2008/01/07(月) 13:06:49#include <stdio.h>
int main() {
int i, ch, num;
scanf("%d", &num);
for (i = 1; i < num+1; ++i) {
for (ch = num - i; ch > 0; --ch) printf(" ");
for (ch = i; ch > 0; --ch) printf("* ");
printf("\n");
}
return 0;
}
0167デフォルトの名無しさん
2008/01/07(月) 14:19:06[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5655.txt
[3] 環境
[3.1] OS:Windows
[3.3] 言語:c
[4] 期限:2008年1月8日
よろしくおねがいします。
0168デフォルトの名無しさん
2008/01/07(月) 14:24:31#include <stdio.h>
int main(){
while(getchar() != '5');
puts(" *\n * *\n * * *\n * * * *\n* * * * *");
return 0;
}
0169デフォルトの名無しさん
2008/01/07(月) 14:29:32[2] 問題文 複数の数値に対する最大公約数を求める関数を作成し、それを利用するプログラムを作成せよ。関数は下記の通りとする。
int gcm(int *in,int num)
in 入力値が格納された配列の(先頭)ポインタ
num 入力値の最大公約数
入力に関して
キーボードから、入力値がスペース1つ開けて1行で入力する。この時、入力を促す文字等は決して表示しないこと。
出力に関して
結果+改行のみ出力。指定した数値・改行以外の文字等の出力は一切行わないこと。
[3] 環境
[3.1] OS: windows XP
[3.2] コンパイラ名とバージョン:stady C
[3.3] 言語: C言語
[4] 期限: 2008/01/08(月)(〜22:00)
[5] その他の制限:簡単にお願いします
0170デフォルトの名無しさん
2008/01/07(月) 14:32:12適当、http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5656.txt
0171ぽぴぴおぷ
2008/01/07(月) 14:36:18ただし sin cosはmath.h(算術計算用ヘッダー)をインクルードすること。
また、角度は弧度(ラジアン)で入力すること
値=sin(角度/360.0+2.0*3.14);
[3.1]OS:windows XP
[3.2]C++Builder
言語:C言語
期限:いますぐお願いします
0172デフォルトの名無しさん
2008/01/07(月) 15:06:03問題よく読めよ
0173デフォルトの名無しさん
2008/01/07(月) 15:06:24#include <stdio.h>
#include <float.h>
#include <math.h>
#define PI (3.14)
#define Rad(x) ( (x)/180 * PI )
int main()
{
double i = 0;
for (i = 0; i <= 180; i += 10) {
if ( (0 != i) && (180 != i) ) {
printf("sin(%3g) = %.*f\n",
i, DBL_DIG, sin(Rad(i)) );
} else {
printf("sin(%3g) = 0\n", i, DBL_DIG);
}
}
for (i = 0; i <= 180; i += 10) {
if ( 90 != i ) {
printf("cos(%3g) = %.*f\n",
i, DBL_DIG, cos(Rad(i)) );
} else {
printf("cos(%3g) = 0\n", i, DBL_DIG);
}
}
return 0;
}
0174ぽぴぴおぷ
2008/01/07(月) 15:11:190度から180度までのsin cosの値を10度ずつ表形式で表示せよ。
ただし sin cosはmath.h(算術計算用ヘッダー)をインクルードすること。
また、角度は弧度(ラジアン)で入力すること
値=sin(角度/360.0+2.0*3.14);
[3.1]OS:windows XP
[3.2]C++Builder
言語:C言語
期限:いますぐお願いします
for文でお願いします
まだ1年生なので
0175デフォルトの名無しさん
2008/01/07(月) 15:12:42#include <stdio.h>
int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i = n; i >= 0; i--){
for(j=0;j <=i-1; j++)
putchar(' ');
for(k =n- j; k>0;k--)
printf("%c%c",'`*',' ');
putchar('\n');
}
}
0176175
2008/01/07(月) 15:17:58を忘れてた。
0177デフォルトの名無しさん
2008/01/07(月) 15:19:26#include <float.h> /* DBL_DIG */
#include <math.h>
#define PI (3.14)
#define Rad(x) ( (x)/180 * PI )
int main()
{
double i = 0;
for (i = 0; i <= 180; i += 10) {
if ( (0 != i) && (180 != i) ) { /* かなり適当 */
printf("sin(%3g) = %.*f\n",
i, DBL_DIG, sin(Rad(i)) );
} else {
printf("sin(%3g) = 0\n", i);
}
}
for (i = 0; i <= 180; i += 10) {
if ( 90 != i ) { /* ここも */
printf("cos(%3g) = %.*f\n",
i, DBL_DIG, cos(Rad(i)) );
} else {
printf("cos(%3g) = 0\n", i);
}
}
return 0;
}
0178デフォルトの名無しさん
2008/01/07(月) 15:20:150179デフォルトの名無しさん
2008/01/07(月) 15:21:02[2] 問題文 コマンドラインから与えられた整数の引数をひとつ受け取って,その数と等しい個数のベクトルからなる配列を作成し,各ベクトルのx成分・y成分を読み込み,各ベクトルの長さを出力するプログラムを完成しなさい.
[3] 環境
[3.1] OS: windows XP
[3.2] コンパイラ名とバージョン:任意
[3.3] 言語: C言語
[4] 期限: 2008/01/08 15時まで
0180デフォルトの名無しさん
2008/01/07(月) 15:26:20#include <stdlib.h>
#include <math.h>
??????? struct {
double x;
double y;
} ???????;
void InputVector(Vector *v)
{scanf("%lf", ???????);
scanf("%lf", ???????);
}double LengthVector(Vector v)
{return sqrt(???????);}
int main(int argc, char **argv)
{
int i;
int num;
Vector *varray;
if(argc !=2){
return 1;
}
num = atoi(???????);
if(num < 0){
return 1;
}
varray = (???????)malloc(???????);
0181デフォルトの名無しさん
2008/01/07(月) 15:26:53if(!varray){
return 1;
}
for(i = 0; i < num; i++){
InputVector(???????);
}
for(i = 0; i < num; i++){
printf("%lf\n", ???????);
}
???????;
return 0;
}
0182デフォルトの名無しさん
2008/01/07(月) 15:31:15そのファイルの中から与えられた整数の引数をひとつ受け取って,その数と等しい個数のベクトルからなる配列を作成し,各ベクトルのx成分・y成分を読み込み,
コマンドラインから入力ファイルが存在しなければ,
コマンドラインから与えられた整数の引数をひとつ受け取って,その数と等しい個数のベクトルからなる配列を作成し,各ベクトルのx成分・y成分を読み込む.
コマンドラインから与えられた出力ファイルが存在すれば,
各ベクトルの長さをそのファイルに出力し,
コマンドラインから与えられた出力ファイルが存在しなければ,
コマンドラインに出力する.
0183デフォルトの名無しさん
2008/01/07(月) 15:32:53#include <stdio.h>
#include <stdlib.h>
#include <math.h>
??????? struct {
double x;
double y;
} ???????;
int InputVector(FILE *stream, Vector *v)
{
int result = fscanf(stream, "%lf", ???????);
if(result < 0) return result;
result = fscanf(stream, "%lf", ???????);
return result;}
double LengthVector(Vector v)
{return sqrt(???????);
}int main(int argc, char **argv)
{int i, num, checker;
Vector *varray;
FILE* inputstream;
FILE* outputstream = stdout;
//set input
if(argc < 2) {
fprintf(stderr, "input data from stdin\n");
inputstream = stdin;
}else
{inputstream = fopen(???????, ???????);
if(!inputstream)
{fprintf(stderr, "input file open error\n");
return 1;
0184デフォルトの名無しさん
2008/01/07(月) 15:34:52#include <stdio.h>
#include <stdlib.h>
struct point{
double x;
double y;
};
int main()
{
struct point *cdl,*tmp;
int i, n;
printf("データの数は?: ");
scanf("%d", &n);
if((cdl = (struct point *)malloc(n * sizeof(struct point))) == NULL){
printf("メモリ確保に失敗しました。終了します。\n");
return 0;
}
0185デフォルトの名無しさん
2008/01/07(月) 15:35:35tmp = cdl;
for(i=0;i<n;i++){
tmp->x = 0.0;
tmp->y = 0.0;
tmp++;
}
/*好きな作業しろ*/
tmp = cdl;
for(i=0;i<n;i++){
printf("point%d(%.2f,%.2f)\n",i,tmp->x,tmp->y);
tmp++;
}
free(cdl);
return 0;
}
0186デフォルトの名無しさん
2008/01/07(月) 15:36:02それならろだ使うなりしてほしい。
あとそのソース改変義務はあり?
0189 ◆vLIz8KOkPM
2008/01/07(月) 15:41:250190デフォルトの名無しさん
2008/01/07(月) 15:42:48zipでまとめてUploaderにあげるといいよ。
0191デフォルトの名無しさん
2008/01/07(月) 15:45:24for (i = 0; i < n; ++i) {
cdl[i].x = 0.0;
cdl[i].y = 0.0;
printf("point%d(%.2f,%.2f)\n", i, cdl[i].x, cdl[i].y);
}
free(cdl);
じゃだめなん?
0192デフォルトの名無しさん
2008/01/07(月) 15:45:35木構造そのものはできてるけど、何が欲しいのかわからない。
0193デフォルトの名無しさん
2008/01/07(月) 15:48:47たぶん大丈夫だけど、初期化だけなのか、
その後データを扱うのかわからなかったから
拡張性を持たせてみた。
必要なきゃ、>>191のほうがすっきりしていいはず。
0194デフォルトの名無しさん
2008/01/07(月) 15:56:23#include <stdio.h>
#include <stdlib.h>
int gcm_(int l, int g){
return l == 0 ? g : gcm_(g % l, l);
}
int gcm(int *in, int num){
if (num == 2) return gcm_(in[0], in[1]);
if (num > 2) return gcm_(*in, gcm(in + 1, num - 1));
return *in;
}
int main(){
int *p, n = 1;
p = malloc(sizeof(int));
if (p == NULL) return 1;
while (scanf("%d", p + n - 1) == 1) {
int *tmp = realloc(p, sizeof(int) * ++n);
if (tmp == NULL) {
free(p);
return 1;
}
p = tmp;
}
printf("%d\n", gcm(p, n - 1));
free(p);
return 0;
}
0195 ◆vLIz8KOkPM
2008/01/07(月) 16:00:21使い方がイマイチわからないのですが、ちょっと試してみます。
>192
課題に対して解答のプログラムが欲しいんです…よろしければメール頂けませんか?
0196194
2008/01/07(月) 16:01:55int gcm(int *in, int num){
if (num == 1) return *in;
else return gcm_(*in, gcm(in + 1, num - 1));
}
0197デフォルトの名無しさん
2008/01/07(月) 16:08:57うpろだ使った方がみんなに聞けていいと思いますよ。
自分も木構造は作ってありますが、問題見るまでできるかわからないので。。
0199デフォルトの名無しさん
2008/01/07(月) 17:02:060200デフォルトの名無しさん
2008/01/07(月) 17:13:35お願いします。
0202 ◆vLIz8KOkPM
2008/01/07(月) 17:22:37うpろだに投稿できたのですが、URLとかはどうやって貼るのですか?
0203163
2008/01/07(月) 17:23:35[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5653.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual studio 2005
[3.3] 言語: C言語
[4] 期限:
[5] その他:よろしくおねがいします。
もう一度書きます。。。
よろしくお願いします。
0205デフォルトの名無しさん
2008/01/07(月) 18:00:54[2] 問題文(含コード&リンク):
#include<stdio.h>
#include<string.h>/*必要ならば使う。*/
int main(void){
char buf[200]={"0 2 4 5 12"};
printf("buf=%s\n",buf);
char a[100]={0};
/*ここから下のプログラムを完成させたい*/
/*bufから空白文字(スペース)を取り除いた、
0,2,4,5,12のみを配列aの先頭から順に格納する
つまり
a[0]=0,a[1]=2,a[2]=4,a[3]=5,a[4]=12,a[5]='\0'
となるように配列aに格納する。
ただし、bufは今"0 2 4 5 12"と整数5個で初期化してあるが、
実際は、整数が何個であっても(1つ以上100個以下)、動作するようにしたい。
(必ず整数の間には空白文字が入って初期化されているとする。)
*/
printf("a=%s\n",a);
return 0;
}
[3] 環境
[3.1] OS:Mac Os X
[3.2] gcc
[3.3] 言語: C
[4] 期限:明日まで、至急お願いします
[5] その他の制限:なし
たぶん簡単な問題だと思います。
どなたかお願いします。
0207デフォルトの名無しさん
2008/01/07(月) 18:22:13#include<stdio.h>
#include<stdlib.h>
#define MAX 3
int main()
{
int i,j,k;
double matrix1[MAX][MAX],matrix2[MAX][MAX],matrix3[MAX][MAX];
double tmp;
/**** Format matrix ****/
for(i=0; i<MAX; i++)
for(j=0; j<MAX; j++){
matrix1[i][j] = ((double)rand() / ((double)RAND_MAX+1)*(double)MAX);
matrix2[i][j] = ((double)rand() / ((double)RAND_MAX+1)*(double)MAX);
matrix3[i][j] = 0.0;
}
0208デフォルトの名無しさん
2008/01/07(月) 18:23:150209デフォルトの名無しさん
2008/01/07(月) 18:23:28/**** Transposed matrix
for(i=0;i<MAX;i++)
for(j=i+1;j<MAX;j++){
temp = matrix2[i][j];
matrix2[i][j] = matrix1[j][i];
matrix1[j][i] = temp;
}
****/
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++){
tmp = 0.0;
for(k=0;k<MAX;k++)
tmp += matrix1[i][k] * matrix2[j][k];
matrix3[i][j] = tmp;
}
/*後は好きに表示しな*/
return 0;
}
0210デフォルトの名無しさん
2008/01/07(月) 18:24:50すまん、doubleで作ってしまった・・・
douboleをintに変換してくれ。
間のtrans・・・は転置行列用だから必要になったら使ってみてくれ。
0211デフォルトの名無しさん
2008/01/07(月) 18:33:37>a[0]=0,a[1]=2,a[2]=4,a[3]=5,a[4]=12,a[5]='\0'
こうかいてあるけど、この通りに作るとしたら最後の出力の表示バグるよ
a[0]=0,a[1]=2,a[2]=4,a[3]=5,a[4]=1,a[5]='2',a[6]'\0'
ならできるけど
0212デフォルトの名無しさん
2008/01/07(月) 18:40:08#include<stdio.h>
#define DEBUG
int main(void){
char buf[200]={"5 2 4 5 12"};
printf("buf=%s\n",buf);
char a[100]={0};
int i = 0, j = 0;
for ( ; i < 200 && buf[i] != '\0'; ++i) {
if (buf[i] == ' ') continue;
if (buf[i+1] != ' ') {
a[j] = a[j]*10 + buf[i];
} else {
a[j] += buf[i] - '0';
++j;
}
}
#ifdef DEBUG
for (i = 0; a[i] != '\0'; ++i) {
printf("a[%d]=%x\n", i, a[i]);
}
#endif
printf("a=%s\n",a);
return 0;
}
0213212
2008/01/07(月) 18:41:54出力がいきなり終わるから、確認できるように5に置き換えてある。
0214212
2008/01/07(月) 18:44:43誤 a[j] = a[j]*10 + buf[i];
正 a[j] = a[j]*10 + buf[i] - '0';
0215デフォルトの名無しさん
2008/01/07(月) 18:47:190216デフォルトの名無しさん
2008/01/07(月) 19:45:52[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5663.txt
[3] 環境
[3.1] XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 1/9
[5] その他の制限:なし
0217デフォルトの名無しさん
2008/01/07(月) 19:46:18もちろん、課題関連です
0218デフォルトの名無しさん
2008/01/07(月) 19:48:00[2] 問題文(含コード&リンク)
1〜12までの数字をそれぞれ3回ずつ使いランダムな数列を作る。
ただし、それぞれの数字は
Aグループ:12、2、10、7
Bグループ:4、3、1、11
Cグループ:9、8、6、5
のようにグループ分けされていて、同じグループの数字は最低1つ空けないといけない。
つまり、「… 9 4 3 …」などの並びを許さないが、「… 9 4 2 3 …」は可となる。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008/01/14
[5] その他の制限: 特になし
よろしくお願いします。
0219デフォルトの名無しさん
2008/01/07(月) 19:52:23一応書いたぞ
(ファイルが存在する場合ループにしたほうがよさげ。
そこは自分で変えてね。めんどくさいので無理矢理上書きする処理
にしてあるから。)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5664.txt
0220デフォルトの名無しさん
2008/01/07(月) 19:54:52http://www.pen2so.com/upload/
0221デフォルトの名無しさん
2008/01/07(月) 19:58:28ありがとうございます
0222デフォルトの名無しさん
2008/01/07(月) 20:13:44444や919みたいなことは許されるの?
問題が難関だとおもわれるため、できる限り早めにやっていただけたら幸いです…
どうかよろしくお願いしますm(_ _)m
[1] 授業単元: プログラミング演習(木構造)
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5665.txt
[3] 環境
[3.1] OS: Linux
[3.2] GNOME端末
[3.3] 言語: C言語
[4] 期限: 1月12日正午
[5] 習った範囲
if文、switch文、for文、while文、関数、配列、構造体、ポインタ、ファイル操作
リスト、スタックとキュー、探索、木構造
いかにも初心者が作りましたって感じでお願いします。
0224デフォルトの名無しさん
2008/01/07(月) 20:25:48#include <stdio.h>
#include <stdlib.h>
#define FMAX 100 /* ファイル名最大値 */
#define LMAX 300 /* 1文の最大値 */
int main() {
FILE *fp;
char filename[FMAX], line[LMAX];
int count=1;
/* ここにプログラムを書く */
scanf("%s", filename);
if ((fp = fopen(filename, "r")) == NULL) {
printf("file not found");
return -1;
}
while (fgets(line, LMAX, fp) != NULL) {
printf("%3d : %s", count, line);
++count;
}
fclose(fp);
return 0;
}
0225218
2008/01/07(月) 20:27:07「4 4 4」は同じグループなのでアウトで
「9 1 9」は同じグループは連続していないのでOKです。
説明へたくそですいません。
0226デフォルトの名無しさん
2008/01/07(月) 20:34:37[2] 問題文(含コード&リンク):()下記の画像("t.bmp")を読み込み、その画像を1/3に縮小した画像を、縦3個、横3個並べた画像"s.bmp"を出力するプログラムを作成せよ。
なお、s.bmpのヘッダファイルに書き込むべき値は、 ファイルサイズ、画像サイズ、幅、高さ以外は元のファイルすなわちt.bmpのヘッダファイルの内容と同じで良い。 1/3に縮小した物を並べているので、ファイルサイズ、画像サイズ、幅、高さは微妙に変わる場合がある。
#元の幅、高さが3の倍数であれば同じであるが。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5667.txt このプログラム元におねがいします。中に指針的なものを書いてあります
ttp://ccfa.info/cgi-bin/up/src/up12831.bmp 元の画像です("t.bmp")
ttp://ccfa.info/cgi-bin/up/src/up12833.bmp 出力後の画像です"s.bmp
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: cc、gcc
[3.3] 言語: C
[4] 期限: 1月10日までです
[5] その他の制限: 特にありません。よろしくお願いします
0227デフォルトの名無しさん
2008/01/07(月) 21:01:22[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5668.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年1月8日
[5] その他の制限:できれば上級者が使うようなポインタや構造体、デストラクタなどの関数は使用せずにお願いします
原文をうpできないので問題文は自分でまとめたのですが不備があれば聞いてください
よろしくお願いします!
0228デフォルトの名無しさん
2008/01/07(月) 21:11:39#include<stdio.h>
#include<stdlib.h>
typedef struct tag_group{
int num, rest[4*3];
}group_t;
group_t group[]={
{12,{12,12,12, 2, 2, 2,10,10,10, 7, 7, 7}},
{12,{ 4, 4, 4, 3, 3, 3, 1, 1, 1,11,11,11}},
{12,{ 9, 9, 9, 8, 8, 8, 6, 6, 6, 5, 5, 5}}
};
int main(void){
int i, j, wholenum=0, prev=-1, cur, group_num=3, idx;
for(i=0;i<group_num;i++) wholenum+=group[i].num;
while(wholenum){
if(prev<0) cur=rand()%group_num;
else cur=(prev+1+(rand()%(group_num-1)))%group_num;
for(j=0;j<group_num;j++) if(group[j].num*2>wholenum) cur=j;
if(group[cur].num<=0){
group[cur]=group[--group_num];
if(prev==cur) prev=-1;
if(prev==group_num) prev=cur;
continue;
}
idx=rand()%group[cur].num;
printf(" %2d", group[cur].rest[idx]);
group[cur].rest[idx]=group[cur].rest[--group[cur].num];
wholenum--;
prev=cur;
}
return 0;
}
0229デフォルトの名無しさん
2008/01/07(月) 21:15:48[2] 問題文(含コード&リンク):
2つのn次元のベクトルa,bに対して、
内積はc=Σa[i]b[i]で定義される。
a,bの各要素が一様な確率p(0~1)で0でない値を取る時、
np^2回の乗算で内積を計算する方法は存在するか?
存在するならその方法でプログラムを書き、しないならそれを証明せよ
計算前に計算量及び記憶容量をO(n)だけ使用してa,bを改変してよい。
ただしその操作でaとbを同時に扱ってはならない。(例えば、その操作で先に各要素の積を計算してはならない)
if文などによるa,bの要素の比較は乗算と同じコストを持つとみなされ、乗算回数に含まれる
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: C++
[4] 期限:2008年1月31日
[5] その他の制限: 無し
お願いします。
0230デフォルトの名無しさん
2008/01/07(月) 21:30:42ありがとうございました!!!
0231デフォルトの名無しさん
2008/01/07(月) 21:34:55[2]
(1)
次の学生の成績表を元に,出力結果のように合計点と平均点を出力するプログラムを作成せよ。ただし,for文を使うこと。
(成績表)
学籍番号 5001 5002 5003
数学 62 45 76
英語 75 65 93
国語 54 82 63
(出力結果)
数学の合計点=177点,数学の平均点=59.0点
英語の合計点=233点,英語の平均点=77.7点
国語の合計点=199点,国語の平均点=66.3点
(2)
(1)で作成したプログラムを元に,学生別の合計点を出力するプログラムを作成せよ
(出力結果)
学籍番号5001の合計点は,191点です。
学籍番号5002の合計点は,192点です。
学籍番号5003の合計点は,226点です。
(3)
(1)で作成したプログラムを元に,科目別の最高得点を表示するプログラムを作成せよ。
(出力結果)
数学の最高得点は70点です。
英語の最高得点は93点です。
国語の最高得点は82点です。
0232デフォルトの名無しさん
2008/01/07(月) 21:35:22(1)で作成したプログラムを元に,70点以上を得点した学生の人数を科目別に表示するプログラムを作成せよ。
(出力結果)
数学:1人
英語:2人
国語:1人
[3]環境
[3.1]XP
[3.2]visual studio 2005
[3.3]C++
[4]1/26
[5]なし
試行錯誤やりましたが、どうもうまくいきません。
よろしくお願いいたします。
0233デフォルトの名無しさん
2008/01/07(月) 21:35:45ありがとうございました!!!
0234219
2008/01/07(月) 21:41:10あんなソースでもありがとうございましたの言葉
もらえたぜ〜 /
---\/-----------------------------
'`,、('∀`) '`,、
0235デフォルトの名無しさん
2008/01/07(月) 21:45:02ニュートン・ラフソン法を理解することに必死になってしまったがこんな感じでいいと思う
#include<stdio.h>
#include<math.h>
double f(double x, double a, double b, double c){
return a * x * x + b * x + c;
}
double df(double x, double a, double b, double c){
return 2 * a * x + b;
}
int main(void){
double x = 1.0;
double maxerror = 0.00000001;
double a = 3, b = 4, c = 1; /* x = -1/3 */
double EPS = f(x, a, b, c) / df(x, a, b, c);
int N;
for(N = 0; fabs(EPS) > maxerror; N++){
x -= EPS;
EPS = f(x, a, b, c) / df(x, a, b, c);
}
printf("X = %10.24f\n", x);
printf("N = %d\n", N);
printf("EPS = %3.24f\n", EPS);
return 0;
}
0236デフォルトの名無しさん
2008/01/07(月) 21:51:09>>194>>196はお気に召さないか?
0237デフォルトの名無しさん
2008/01/07(月) 22:03:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5669.c
動作チェックがまだ不十分だけど、こんな感じでどうかな
0238237
2008/01/07(月) 22:07:1017行目の日本って部分が化けてるな
もし化けてたら日本ってかえておいて。
0239デフォルトの名無しさん
2008/01/07(月) 22:08:37すいません、せっかくニュートンラフソン法まで理解していただいて作っていただいたのですが・・・
問題は以下のリンク先の冒頭にあるように3次方程式なんです・・・
3次方程式は任意で良い の部分は
3次方程式の各係数は任意で良い の方が正しいですね・・・
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5668.txt
ニュートン・ラフソン法と以下のヒントを用いて3次方程式の解を求めるプログラムを作成しなさい
3次方程式は任意で良い
0240デフォルトの名無しさん
2008/01/07(月) 22:16:18ああ、申し訳ない。何を考えていたんだろう。
mainでdouble a,b,c,dを定義して
fはax^3+bx^2+cx+d
dfは3ax^2+2bx+c
をreturnするように書き換えればおk
0241デフォルトの名無しさん
2008/01/07(月) 22:21:01index.php_cmd=kgg&cmds=displaytxt&kid=0
0242デフォルトの名無しさん
2008/01/07(月) 22:23:38日本語でおk
0243デフォルトの名無しさん
2008/01/07(月) 22:24:45スレ違い.>>1読め
0244デフォルトの名無しさん
2008/01/07(月) 22:29:59[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5670.txt
[3] 環境
[3.1] OS:Windows
[3.3] 言語:c
[4] 期限:2008年1月8日
もう一度書き込みました。必死ですみません…。
どなたか宜しくお願いします。
0245237
2008/01/07(月) 22:33:12問題文のメニューにノード削除コマンドが書いていなかったからすっかり忘れてたけど
削除コマンドも必要なのね・・・
というわけでデリートコマンド実装した。
あと書式が一部間違っていたり、メモリ解放してなかったり、色々まずい部分も修正済み。
>>237の訂正版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5671.c
0246デフォルトの名無しさん
2008/01/07(月) 22:41:09[2] 問題文(含コード&リンク):
マクロ#ifdefなどを使い、条件コンパイルできるようなソースを書け。
なお#ifdefは
#ifdef 名前
//実行本体
#else //なくてもよい
//実行本体
#ifdef //#ifdefの終了
という使い方をする。
[3.1] OS:Linux
[3.3] 言語:C
[4] 期限:2008年01月09日10:20まで
[5] その他の制限: なしです
あけましておめでとうございます。
よろしくお願いします。。
0247デフォルトの名無しさん
2008/01/07(月) 22:43:13実行本体のところは何でもいいってこと?
0248デフォルトの名無しさん
2008/01/07(月) 22:58:46[2] 問題文(含コード&リンク):年月日計算
問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5649.txt
サンプルプログラム:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5648.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年1月8日9:00まで
[5] その他の制限:
サンプルプログラムに「日付を一年ずらす関数」を付け加えるだけでよくなりました。
他の処理はなんとか自分でできました。
恐縮ですがもう一度カキコさせて頂きます。私も必死ですみません...。
心やさしいお方宜しくお願いいたします。
0249デフォルトの名無しさん
2008/01/07(月) 23:10:29/* 一年前の日付を求める */
void day_prev(int *y){
(*y)--;
}
0250デフォルトの名無しさん
2008/01/07(月) 23:12:43[1] 授業単元:C言語演習〜3次元グラフィック〜
[2] 問題文(含コード&リンク):
最終課題としてオリジナル作品を制作する。
以下の仕様を満たすように作成すること。
・3次元オブジェクトを作成する。(基本なんでも良い)
・アニメーションを入れること。(自動アニメーションなど)
・シェーディングを用いること。(グローシェーディングなど)
・プログラムの説明をプログラム中に記載すること。
自分の希望は球体を3D描画し、光源を1つ用意し、グローシェーディングで球体表面に影を付け
自動アニメーションで360度光源が球体の周りを回転して、「月の満ち欠け」再現するようなプログラムを希望します。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: cygwin gcc (Devel, Libs, Graphicsをインストール)
[3.3] 言語: C言語
[4] 期限: 2008/1/13(日)
[5] その他の制限:
cygwinでインストール時にDevel,Libs,Graphicsをインストールしてある環境で動作するものをお願いします。
コンパイル:-DWIN32 -lglut32 -lopengl32 -lglu32
GLUT,GLUIはインストールされています。
0251219
2008/01/07(月) 23:14:37(2)だけやった
#include <stdio.h>
double Simpson(int range)
{
double one_r = 1/(double)range;
double s,e = 0.0;
for(s = 1.0; s < 2.0; s += one_r)
e += (((1/(s + one_r))-1/s)/2 + (1/(s + one_r)))*one_r;
return e;
}
int main()
{
printf("区切りの数は5で%lf \n",Simpson(5));
printf("区切りの数は10で%lf \n",Simpson(10));
printf("区切りの数は20で%lf \n",Simpson(20));
printf("区切りの数は40で%lf \n",Simpson(40));
printf("区切りの数は100で%lf \n",Simpson(100));
printf("区切りの数は1000で%lf \n",Simpson(1000));
printf("区切りの数は5000で%lf \n",Simpson(5000));
return 0;
}
0252デフォルトの名無しさん
2008/01/07(月) 23:15:18これは欲張りすぎだろう・・・
■ このスレッドは過去ログ倉庫に格納されています