yama5140 の回答履歴
![](https://gazo.okwave.jp/okwave/images/avatar/1010000/1018666/avatar_l.jpg?0)
- 空気吸うことは悪い事ですか
将来は二酸化炭素の排出させないにするには、空気も有料になりますか、 言い方変えると、CO2排出料金、宜しくお願いします。
- ベストアンサー
- habataki6
- 自然環境・エネルギー
- 回答数5
- c言語 パスカルの三角形
c言語でパスカルの三角形を出力するプログラムを作りたいのですが、上手くいきません。 何を直せばいいのか教えてください。 #include <stdio.h> #define N 10 int main(void){ int i, j = 1, x, y; int d[N][N]; /* 三角形を作成 */ for (i = 1 ; i < N ; i++){ d[i][0] = 1; while (j <= i - 1){ d[i][j] = d[i-1][j-1] + d[i-1][j]; j ++; } } /* 三角形の表示 */ for (y = 0; y < N; y++) { for (x = 0; x < N-y; x++) printf(" "); for (x = 0; x < y; x++) printf("%3d ", d[x][y]); printf("\n"); } return 0; } 実行結果 -2147417616 2665208 1629976532 1627572249 1629101723 1 1629982744 2665256 2665548 3407923 1629345053 1627571017 0 3538997 1629739051 10 1629345053 2665368 3670071 2665384 1629739040 1627927140 2665244 1628040295 57 1628810863 1629476960 1628602749 2665560 2665304 1629345053 0 1629739040 1629740576 1628992224 2 4411498 1628040588 -2147417600 0 1629476960 1629740664 1629739040 1 267574 0
- 数字の double 型 を int型 にする時
仮に double 型 の ある数字を 12.6 とします。 printf関数を使って .0f で表示する時は 小数点を四捨五入されて 、整数地が1繰り上がり13と表示されます。 ここである数字をキャスト演算子を使ってprintfで表示すると小数点を切り捨てられるので12と表示されます。 これはdouble型では 12.6 がはいっていて int型では12がはいっているから起こる現象ですね。 前置きは長く長くなりましたがdouble型で四捨五入される数字を、int型にした時に1繰り上げる簡単な方法はないものでしょうか? double a = 12.6; int b = ( int ) a; if( a - ( double ) b > 0.4444444444 ){ b++; } printf( "%d\n" , b ); こういう方法なら一応出来ない事はないですがもっと簡単な方法はありませんか? 後、私は時間が余りないので時間内に回答がなければ返信が来週になります。 申し訳ありません。 答えていただいた方はありがとうございます。
- 行列の積を計算するプログラムがうまくいきません
どこが間違っているのかわかる方お願いします ・行列A,Bはファイルから読み込む ・行列A,Bの積Cの計算には関数を用いる #include<stdio.h> #define ROW 10 #define COL 10 void MatrixProduct(int a[][COL],int b[][ROW],int c[][ROW],int n,int m ) { int i,j,k; for(i=0;i<n;i++){ for(j=0;j<n;j++){ c[i][j]=0; } } for(i=0;i<n;i++){ for(j=0;j<n;j++){ for(k=0;k<m;k++){ c[i][j]=c[i][j]+a[i][k]*b[k][j]; } } } } int main(void) { FILE *fp1,*fp2; char fname1[64],fname2[64]; int a[ROW][COL],b[ROW][COL],c[ROW][COL],n,m; int i,j,k; printf("Input file name ?"); scanf("%s",fname1); printf("Output file name ?"); scanf("%s",fname2); fp1=fopen(fname1,"r"); fp2=fopen(fname2,"w"); fscanf(fp1,"%d %d",&n,&m); MatrixProduct(a,b,c,n,m); for(i=0;i<n;i++){ for(j=0;j<n;j++){ fprintf(fp2,"%3d",c[i][j]); } fprintf(fp2,"\n"); } fclose(fp1); fclose(fp2); return(0); } fp1 3 4 1 2 3 4 2 3 4 5 3 4 5 6 1 2 3 2 3 4 3 4 5 4 5 6
- 文字列の中から1~5桁の数字を抜き出したい
ある命令プログラムを作っているのですが、文字列の中に命令語を書いてその後に続く数字を抜き出したいのですがうまくいきません ソースを見ていただきたいのですが @ke の命令語の後で1~5桁の数字を記載しているのですが 数字の部分を文字から数字に変えたいのです。 その後 @ke 数字 を正式な命令文として扱いたいのですがソースを見ていただけるとわかると思いますが問題があります。 ・文字をatoiで数字に変換できない(キャスト演算子を変えてもだめだった) ・ソースのプログラムの書き方ではやたらと長々しくなってしまう。 どのようにしたら問題が解決できますか? ----以下ソース---- #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> int main(){ char kei[100]="abc@ke 4567def@ke 789"; int i=0; int g=NULL; while(i<15){ if(kei[i]=='@'){ i++; if(strnicmp(&kei[i],"ke ",3)==0){ i+=3; //後に続く数字を抜き出して処理したい if(isdigit(kei[i])){ if(isdigit(kei[i+1])){ if(isdigit(kei[i+2])){ //・・・・以下全部で5桁分の数字を判定していく けど正直こんなややこしい方法をとらなくてもスマートにできるはず } else{ g=(atoi(kei[i])) * 10 +atoi(kei[i]); //型名が違うからatoiに入らないといわれる } } else{ g=atoi(kei[i]); //型名が違うからatoiに入らないといわれる } } else{ printf("\n命令の仕方が間違っています\n"); } } } else{ printf("%c",kei[i]); i++; } } return 0; }
- ベストアンサー
- nanaka2223
- C・C++・C#
- 回答数1
- C言語でのtxt検索
C言語でtxtファイルを読み込みその中で単語を検索してその単語がある行の先頭だけを表示させるというのは可能なのでしょうか? 例えばtxtの中身が A ok B no C ok D no のときにokを検索して、AとCを表示させたいです。txtの読み込みと、単語を検索するのはできるのですが、先頭を表示させる方法が思いつきません・・・。 また今回はA~Dまでしかないですがこれをtxtの行が増えたり減ったりしても対応できる方法はないでしょうか?
- C言語のプログラムを作るのに困っています。
C言語で、4次のルンゲクッタ法を用いて微分方程式を解くプログラムを作成したいのですが、始めたばかりの初心者で分からないところだらけなので教えてください。 わからないなりに、下のプログラムを作ってみましたがエラーになります。どうすればうまくいくのでしょうか。本当に始めたばかりなので、文?の組立もよくわかりません。できればわかりやすくお願いします。 このプログラムでは微分方程式dy/dx=x^3+4xy+y+2の解を求めようとしています(自分で適当に作った方程式なので、あるのかどうかわかりません)。 そのほかにもy'=2x^2+3xy-1や、y'=sinxcosy, y'=e^xなどいろいろな微分方程式でできるようにしたいのですが、どうやるのでしょうか。 #include <stdio.h> double f(double x,double y); int main() { double x,y,dx,xmax; double k1,k2,k3,k4; FILE *fp; if ((fp=fopen("result.txt","w"))==NULL) { printf("Cannot open result.txt \n"); return 0; } dx=0.1; //刻み幅 xmax=100.0; //繰り返し最大 x=1.0; //xの初期値 y=1.0; //yの初期値 f(x,y)=x^3+4xy+y+2;; //関数f(x,y)の定義 for(x=1.0;x<xmax;x+=0.1) { k1=dx*f(x,y); k2=dx*f(x+dx/2.0,y+k1/2.0); k3=dx*f(x+dx/2.0,y+k2/2.0); k4=dx*f(x+dx,y+k3); y=y+(k1+2.0*k2+2.0*k3+k4)/6.0; printf(" %f %lf \n",x,y); fprintf(fp," %f %lf \n",x ,y); } return 0; }
- ベストアンサー
- happy_lucky3368
- C・C++・C#
- 回答数2
- ファイル入力方法(C言語)
C言語のファイル入力について教えてください。 入力ファイルinput.txtが以下である時、 *********** abcdefg *********** 2 3 5 6 3 8 1 7 ●最初の3行を無視する ●4行目以降の数値を配列に格納し、表示する (4行目以降は2列で固定、行数は最大100列) 以上の条件でプログラムを作成したいのです。 最初の3行がない入力ファイルinput2.txt 2 3 5 6 3 8 1 7 を入力し、表示するソースコードは以下のように作成できましたが、「最初の3行を無視する」方法が分かりません。 お手数ですが、ご存じの方教えてください。 よろしくお願いいたします。 #include <stdio.h> #include <stdlib.h> int main() { int i,N,a[100],b[100]; FILE *fpi; if((fpi=fopen("input2.txt","r"))==NULL) { fprintf(stderr,"ファイルを開けません\n"); exit(1); } for (N=0; N<100 && fscanf(fpi,"%d %d",&a[N],&b[N]) != EOF; N++); printf("データ行数:%d\n\n",N); for(i=0;i<N;i++) { printf("%d %d\n",a[i],b[i]); } fclose(fpi); return 0; }
- ベストアンサー
- eliteyoshi
- C・C++・C#
- 回答数6
- C言語でのプログラミングについて
キーボードから入力された文字列に含まれる各文字の個数を出力するプログラムを作成せよ。 条件 ・対象とする文字は英字の小文字のみでよい ・文字列の長さは100文字まで対応できるようにせよ 例 $ ./a.out input:aaabtzz a:3 b:1 t:1 z:2 という問がわかりません。 プログラムの例(C言語)と出来れば解説もご教授ください。 ※大学で一年c言語をやった程度なので難しいことや高度なテクニックはわかりません。多少面倒でも初歩的な知識だけで理解できるようにお願いします。 #include<stdio.h>内でできるものでお願いします。 以下、自分なりに考えたものです。 #include<stdio.h> int main(void) { char a[100]; printf("input:"); scanf("%100s",a); (ここからがわかりません) return 0; } 本当に困っています。ご教授お願いします。
- 大規模エコ冷暖房システムの効果について
3.11地震の影響で電力事情は逼迫しています。そこで図のような大規模エコ冷暖房を考えました。 夏はゲートA、Bを閉じ黒潮を日本の遥か南に遠ざけます。 冬はゲートAを開き(ゲートBは閉)黒潮の大部分を日本海に入れます。 こうすることにより日本列島は夏涼しく、冬暖かくなります。 【質問】 東京付近で8月の平均気温は何度下がり、2月の平均気温は何度上がりますか? (注意)実際に建設となれば建設費、漁業補償等色々問題はありますが、それらは無視して下さい。
- ベストアンサー
- mandegansu
- 地学
- 回答数3
- C言語にてXMLファイルから任意部分抽出
C言語にてXMLファイルからタブで囲まれた任意部分の文字列だけを抽出したいのですが、どうやればいいでしょうか? サンプルなどありましたらありがたいです。 <aaa> <bbb>123/bbb> <ccc>あああ</ccc> <bbb>456</bbb> <ccc>いいい</ccc> </aaa> ・抽出したいのは、<bbb></bbb>と<ccc></ccc>で囲まれた文字列。 ・大量データの場合もあるので抽出性能は考慮したい。(基本はメモリ上で操作したい。)
- builder5とvisual C++の違い
builder5で2次元の配列にそれぞれr,g,bの変数が存在するという宣言を以下のように作っていたのですが、これと同じ宣言をvisual C++で書こうとしているのですが、上手くできません。 struct{ Byte r; Byte g; Byte b; }rgb[10][10],rgb2[10][10]; //マス数は10×10までとする visual C++では、どう書けばいいのでしょうか? 回答よろしくお願いします。
- 太陽活動と地球の気温の関係
太陽活動が弱まると地球の気温が下がり寒冷期に入るという話を聞きました。 太陽から地球に到達する熱エネルギーは一定のはずなのに太陽の活動の影響で周期的に寒冷期が訪れるというのはどういうメカニズムなのでしょうか?
- ベストアンサー
- madausa
- 自然環境・エネルギー
- 回答数5
- C言語で複数列のデータを1列のみ読み込みたい
行m列の任意のデータの処理を行うプログラムで, 列ごとの統計を行うためにm列目のデータを取り出したいのですが,うまくいきません. どのようなコードを書けばいいでしょうか? 自分で作ってみたのは以下のようなプログラムです(ファイルを開いて→m列目の読み込みの部分) EOFを使っているためか,行数のiには全データ数が入ってしまいます. void main (void) { FILE* fp; int i, j; i=0, j=0; char FilePath[500]; char Folder[100]; char File[50]; printf("Folder Name:"); scanf("%s",&Folder); printf("File Name:"); scanf("%s",&File); sprintf(FilePath,"%s/%s",Folder,File); if(( fp = fopen (FilePath,"r")) == NULL){ printf("cannot open '%s'\n", FilePath); exit(1); } //ここまではうまく動きます while (fscanf(fp, "%lf", &A[i][0]) != EOF{ i++; } while (fscanf(fp, "%lf", &A[0][j]) != EOF){ j++; } printf("A[%d][%d]", i, j); int n, m; //n,mはこの後for文で使いたいので登場してもらいました printf("input 'n':"); scanf("%d", &n); printf("input 'm':"); scanf("%d", &m); }
- ベストアンサー
- satorigusa
- C・C++・C#
- 回答数5
- C言語での配列初期化について
int a ,b; int wk[100][100]; for(a = 0 ; a < 100 ; a++){ for(b = 0 ; b < 100 ; b++){ wk[a][b] = 0; } } を行うと、処理がフリーズしてしまいます。 wk[a][b] の行を外すとフリーズは起こらなくなるようです。 printfで中身がどこで止まっているかを調べて見ましたが、 aは0のままで、bは80くらいまでは動いているようです。 コンパイラはlccを使用しています。 原因のわかる方、教えていただけないでしょうか。
- 最新 InstallShield CAB の編集
既存の InstallShield キャビネット形式書庫を展開し、編集して再書庫化したいのですが、できる道具に巡り会えません。 検索すると同様の問題を抱えていた人も多く、紹介されていた複数の道具を試してみたのですが、「この InstallShield バージョンには対応していません」など、ことごとく失敗に終わりました。 最新の InstallShield スイートなどではうまくいくのかもしれませんが、ビューワしかないとも聞きおよび、またこの作業のためにそんな高価な道具を購入するのは躊躇します。 以上、お願いします。