質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

Q&A

3回答

4113閲覧

初歩的なC言語のプログラムをつくったみたいのですが教えてください

0126mina

総合スコア8

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

0グッド

0クリップ

投稿2016/07/26 03:11

###前提・実現したいこと
C言語emacsをつかった授業で簡単なプログラムを作りたいと思っています。
わたしのアイデアでは、4桁の誕生日を2人分かけて、2桁の数字が出るまでわっていくという初歩的なプログラムです。

たとえば 1月23日のひとと、12月30日のひとだったら

0123×1230でそれを2で二桁になるまで割ります
すると、73.87となるので。2人の相性は73%

みたいなかんじのプログラムをつくってみたいです笑

わたしは初心者でプログラミングがまったくわからないのでどういうプログラムをかけばこのようなプログラムができるでしょうか??教えてください
Printfとscanfなどを使うのはわかります

###該当のソースコード
int main(void){
int n;

###試したこと
まったくプログラミングがわからないのに、つくってみたいプログラムをどうやったら作れるのか知りたかった

###補足情報(言語/FW/ツール等のバージョンなど)C言語 emacs

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

「段階的詳細化」というステップで、やりたいことを「○○するとは、○○して○○すること」のように分解していき、プログラムの一行一行にまで落とし込んでいきましょう。
やってみます。

相性占いをする ―誕生日を二つ入力させる ―相性計算をする ―相性値を表示する

一番上の段階はこんな感じ。入力させるのと、表示するのはやり方わかるんですよね。だからここはもうこれ以上詳細化しなくていいでしょう。

相性計算をする ―誕生日の掛け合わせを作る。これを仮相性値と呼ぶ。 ―仮相性値から相性値を求める ―仮相性値が100未満なら、それが相性値。計算終了。 ―仮相性値を2で割って、それを新しい仮相性値とし、計算を繰り返す。

だいぶ、コンピュータにわかる言葉になってきました。

これをプログラムに書き下ろすわけです。

int main(void) { int birthdate1, birthdate2; // 誕生日 scanf("%d", &birthdate1); scanf("%d", &birthdate2); int result = birthdate1 * birthdate2; while ( result >= 100) { result = result / 2; } printf("%d\n", result); }

段階的詳細化では「仮相性値」「相性値」と呼んでいたのを変数resultにまとめてしまっているなど違いはありますが、プログラムを書くときはこのように考えて書いています。

whileという構文は初見でしょうかね。

投稿2016/07/26 03:42

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0126mina

2016/07/26 08:37

詳しい回答ありがとうございます!!
guest

0

誕生日の合計を表示するサンプルを置いておきます。

C

1void main(void) 2{ 3 int birthday1, birthday2; 4 printf("誕生日を半角数字で二回入力してください。(例: 12 月 29 日の場合 1229)\n"); 5 scanf("%d", &birthday1); 6 scanf("%d", &birthday2); 7 printf("%d\n", birthday1 + birthday2); 8}

###追記
ついでに文字列入力のサンプルです。

C

1void main(void) 2{ 3 char name[30]; 4 name[0] = '\0'; 5 printf("お名前を教えてください。\n"); 6 scanf("%29s*[^\n]", name); 7 printf("こんにちは、%sさん。\n", name); 8}

投稿2016/07/26 03:21

編集2016/07/26 03:52
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

関数化すると後々使いやすいかな

C

1#include <stdio.h> 2#include <stdlib.h> 3#include <time.h> 4 5/** 6相性取得 7@param birth1 誕生日1 8@param birth2 誕生日2 9@return 相性 10*/ 11double getAisho(char* birth1, char* birth2) { 12 double ret = (double)( atof( birth1 ) * atof( birth2 ) ); 13 while( ret >= 100.0 ) { 14 ret /= 2.0; 15 } 16 return ret; 17} 18 19int main() { 20 printf( "%f\n", getAisho("0123", "1230") ); 21 return 0; 22}

投稿2016/07/30 02:45

編集2016/07/30 06:40
otaks

総合スコア223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問