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

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

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

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

0回答

855閲覧

C言語のループ処理について

tamura0425

総合スコア37

C

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2021/04/24 06:42

編集2021/04/24 07:36

大学の講義で以下の課題を与えらられましたが、配列に入れた加減算の扱い(アルゴリズム)が
わからず困っております。

どなたかご教示お願いします。

標準入力に与えられたテキストをすべて読み取り、その中に現れた数値表現全てについてその表す値の総計を計算してその値を最小限の桁数で1行として標準出力に書き出すプログラムを作れ。

ここで数値表現とは、数字だけが並んだもので、その前後には数字が現れていず、前には記号 + または - があってもよいとする。数値表現は、十進表現で値を表していて、その前について + または - があればそれは表す値の符号を示しているとする。

実行例
標準入力

Calculate:
+12-34+0.25

標準出力
3

標準入力

Videos will be made opened on 2019-04-10, 12:00:00.

標準出力
2017

実行例から見て取れるように、この課題では、例えば「(12.34)」と書いてあれば二つの数値表現 12 と 34 を読み取ることになる。

#include <stdio.h> #include <stdint.h> #include <inttypes.h> #include <math.h> #include <string.h> #include <stdio.h> #include <stdlib.h> //char型からint型への変換用関数 int ctoi(char c) { switch (c) { case '0': return 0; case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; case '5': return 5; case '6': return 6; case '7': return 7; case '8': return 8; case '9': return 9; default: return 0; } } //プログラム開始 int main(void) { //変数定義 char str[256]; int IntList[1000]; char c; //int Change = 0; int i=0; int j=1; int x=0; int num1=0; int num2=0; //int num3=0; //char purasu='+'; //char mainasu='-'; i = 0; //標準入力値を全て配列に入れる while( (c = getchar()) != EOF ){ //入力値から余分なものを取り除く //printf("%c\n",c); if((c=='0'||c=='1'||c=='2'||c=='3'||c=='4'||c=='5'|| c=='6'||c=='7'||c=='8'||c=='9'||c=='+'||c=='-' ||c=='.' )){ str[i]=c; //printf("%c\n",str[i]); i++; } } ※以下の部分がどのように処理をしたらよいかわからないです。 //配列データがなくなるまでループを行う i = 0; x = 0; while(str[i] != '\0'){ if(str[i] != '+' && str[i] != '-'){ IntList[x] = ctoi(str[i]); printf("%d\n",IntList[x]); } else if(str[i] == '+'){ x=0; while(IntList[x] != '\0'){ num1 = num1 + (IntList[x]*j); j=j*10; x++; //printf("%d\n",IntList[x]); } } else{ while(IntList[x] != '\0'){ num2 = num2 + (IntList[x] * (-j)); j=j*10; x++; //printf("%d\n",IntList[x]); } } i++; } printf("%d\n",num1); //プログラム終了 return 0; } コード

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

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

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

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

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

m.ts10806

2021/04/24 07:06

CとC++は別物です。
dodox86

2021/04/24 08:19

こちらの質問に限りませんが、このようなもの(マルチポスト)ばっかりですね。ネットリテラシーも最初に学ぶべき。
BeatStar

2021/04/24 08:24 編集

別のサイトでも同じ質問をしていませんか? そういうのって、あまり好まれませんよ。 仮に別のサイトに書いたものを再投稿するなら、せめて『なぜ再投稿をするのか』とか、 どのようにやったとかそういうのを提示すべきじゃないかなと。 (まあ、人に言えないけど)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問