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

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

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

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

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

1908閲覧

VScodeでint double if文のときに、たまに変数に色がつかない理由、解決方法

02line6

総合スコア2

C

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

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2021/11/10 02:00

前提・実現したいこと

vscodeでc言語でプログラミングを書いているのですが、たまに
int a,b,c;やdouble a,b,c;でやったときに、いつもならa,b,cに水色で色がつくのですが、
たまに色がつかずにエラーが出てしまいます。
どうしても解決方法がわからないので、教えていただけるとありがたいです

発生している問題・エラーメッセージ

int a,b,c;
if(a>0)
などで、普段ならa,b,cに色がつくが色がつかなくなってしまうことがある。

いまつくっているのは、

  1. 任意の2つ以上の文字列を入力し,それらの文字列に

同一の文字が含まれる場合はそれら同一の文字をすべ
て出力し,同一の文字がなければ0を出力するプログ
ラムを作成せよ
2. 2次元座標上に定義される任意の座標を3つ以上入力し,
各座標と原点(0, 0)とを結ぶ直線の長さおよび直線が
なす角を算出せよ.また長さおよび角度それぞれにつ
いて最大値と,それがどの座標かも出力せよ
です。

該当のソースコード

c言語
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void sample4_1()
{
char stir1[200],stir2[200],a[200];
int j,t,i,l;
printf("任意の2つ以上の文字列を入力してください");
scanf("%s",stir1);
scanf("%s",stir2);

i=0; t=0; l=0; while(stir1[i]){ j=0; while(stir2[j]){ if(stir1[i]==stir2[j]){ a[t]=stir1[i]; l++; } j++; } t++; i++; }

if(l=0)
printf("0");
else
{
printf("重複した文字列は%sです。",a);

}

double dist (double b,double c)
{
return sqrt(bb+cc)
}

void sample4_2()
{
double b,c,d,e,f,g,h,m,n,max1,max2;
printf("任意の座標を3つ入力してください。");
printf("座標1のX座標;") scanf("%lf",&b);
printf("座標1のY座標;") scanf("%lf",&c);
printf("座標2のX座標;") scanf("%lf",&d);
printf("座標2のY座標;") scanf("%lf",&e);
printf("座標3のX座標;") scanf("%lf",&f);
printf("座標3のY座標;") scanf("%lf",&g);
printf("座標1から原点の長さは%fです",dist(b,c));
printf("座標2から原点の長さは%fです",dist(d,e));
printf("座標3から原点の長さは%fです",dist(f,g));

max1=dist(b,c);

if(max1<dist(d,e))
max1=dist(d,e);
else if(max1<dist(f,g))
max1=dist(f,g);
printf("長さの最大値は%fです。",max1);

h=c/dist(b,c);
m=e/dist(d,e):
n=g/dist(f,g);

printf("座標1となす角度は%dです",asin(h));
printf("座標2となす角度は%dです",asin(m));
printf("座標3となす角度は%dです",asin(n));
max2=asin(h);

if(max2<asin(m))
max2=asin(m);
else if(max2<asin(n))
max2=asin(n);
printf("角度の最大値は%fです。",max2);

}

int main(void)
{
int num;
do{
printf("課題番号を入力してください。"); scanf("%d", &num);
printf("\n");
switch(num) {
case 1:
sample4_1(); break;
case 2:
sample4_2(); break;

default: printf("1か2を入力してください"); break; } printf("\n"); } while(num >=1 && num <= 3); system("pause"); return 0;

}

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

jimbe

2021/11/10 02:03

コードはマークダウン記法を用いてご提示ください。 マークダウンに関しましてはヘルプを御覧ください。
jimbe

2021/11/10 02:09 編集

ご質問の文面から推測しますと、vscode の機能のお話で、タグ付けされているプログラミング言語, 文字コード, VisualC++ は関係無いように思いますが、如何でしょうか。
int32_t

2021/11/10 03:25

「たまに」というのは、同じ行でも色がつくときとつかないときがあるのでしょうか? それとも、ファイル内の行によって違うという意味でしょうか。 > 色がつかずにエラーが出てしまいます。 どんなエラーでしょうか? そのエラーの内容が原因を説明していませんか?
02line6

2021/11/11 04:14

行に規則性があるのかはわからないのですが、行によって色がつかないです。 エラーの内容が、task5.c:41:1: error: expected ‘;’ before ‘}’ token } ^ task5.c: In function ‘sample4_2’: task5.c:48:34: error: stray ‘\343’ in program printf("座標1のX座標;")scanf("%lf",&b); ^ task5.c:48:35: error: stray ‘\200’ in program printf("座標1のX座標;")scanf("%lf",&b); ^ task5.c:48:36: error: stray ‘\200’ in program printf("座標1のX座標;")scanf("%lf",&b); ^ task5.c:48:37: error: expected ‘;’ before ‘scanf’ printf("座標1のX座標;") scanf("%lf",&b); ^~~~~ task5.c:49:36: error: expected ‘;’ before ‘scanf’ printf("座標1のY座標;") scanf("%lf",&c); ^~~~~ task5.c:50:36: error: expected ‘;’ before ‘scanf’ printf("座標2のX座標;") scanf("%lf",&d); ^~~~~ task5.c:51:36: error: expected ‘;’ before ‘scanf’ printf("座標2のY座標;") scanf("%lf",&e); ^~~~~ task5.c:52:36: error: expected ‘;’ before ‘scanf’ printf("座標3のX座標;") scanf("%lf",&f); ^~~~~ task5.c:53:36: error: expected ‘;’ before ‘scanf’ printf("座標3のY座標;") scanf("%lf",&g); ^~~~~ task5.c:67:14: error: expected ‘;’ before ‘:’ token m=e/dist(d,e): ^ task5.c:70:37: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=] printf("座標1となす角度は%dです",asin(h)); ~^ ~~~~~~~ %f task5.c:71:37: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=] printf("座標2となす角度は%dです",asin(m)); ~^ ~~~~~~~ %f task5.c:72:37: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=] printf("座標3となす角度は%dです",asin(n)); ~^ ~~~~~~~ %f task5.c: In function ‘sample4_1’: task5.c:116:1: error: expected declaration or statement at end of input } です。 %lfを%dに変えても同じようなエラーでしたので、そこはあまり関与していないのかなと思います。
02line6

2021/11/11 04:16

行に規則性があるのかはわからないのですが、行によって色がつかないです。 エラーの内容が、task5.c:41:1: error: expected ‘;’ before ‘}’ token } ^ task5.c: In function ‘sample4_2’: task5.c:48:34: error: stray ‘\343’ in program printf("座標1のX座標;")scanf("%lf",&b); ^ task5.c:48:35: error: stray ‘\200’ in program printf("座標1のX座標;")scanf("%lf",&b); ^ task5.c:48:36: error: stray ‘\200’ in program printf("座標1のX座標;")scanf("%lf",&b); ^ task5.c:48:37: error: expected ‘;’ before ‘scanf’ printf("座標1のX座標;") scanf("%lf",&b); ^~~~~ task5.c:49:36: error: expected ‘;’ before ‘scanf’ printf("座標1のY座標;") scanf("%lf",&c); ^~~~~ task5.c:50:36: error: expected ‘;’ before ‘scanf’ printf("座標2のX座標;") scanf("%lf",&d); ^~~~~ task5.c:51:36: error: expected ‘;’ before ‘scanf’ printf("座標2のY座標;") scanf("%lf",&e); ^~~~~ task5.c:52:36: error: expected ‘;’ before ‘scanf’ printf("座標3のX座標;") scanf("%lf",&f); ^~~~~ task5.c:53:36: error: expected ‘;’ before ‘scanf’ printf("座標3のY座標;") scanf("%lf",&g); ^~~~~ task5.c:67:14: error: expected ‘;’ before ‘:’ token m=e/dist(d,e): ^ task5.c:70:37: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=] printf("座標1となす角度は%dです",asin(h)); ~^ ~~~~~~~ %f task5.c:71:37: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=] printf("座標2となす角度は%dです",asin(m)); ~^ ~~~~~~~ %f task5.c:72:37: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=] printf("座標3となす角度は%dです",asin(n)); ~^ ~~~~~~~ %f task5.c: In function ‘sample4_1’: task5.c:116:1: error: expected declaration or statement at end of input } です。 %lfを%dに変えても同じようなエラーでしたので、そこはあまり関与していないのかなと思います。
02line6

2021/11/11 04:17

追記 printfに波線があると見えるのですが、全て%lfに波線があります
jimbe

2021/11/11 04:23 編集

> expected ‘;’ before ‘scanf’ コードをよく見直してください。printf と scanf を区切るはずの ";" がありません。 ツールがどういう時にどんな表示をしてくるのかは、ツールのドキュメントに書いてあるのではないでしょうか。
guest

回答1

0

ベストアンサー

おそらく、文法エラーがあるからパーズできなくて色が付かないのでしょう。エラーをぜんぶ直しましょう。

  • expected ‘;’ というのは、その場所の前に ; を入れる必要があるということです。
  • stray ‘\343’ stray ‘\200’ は、その付近に全角空白があるので、消しましょう
  • format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ は、フォーマット中の %d%f などに直しましょう

投稿2021/11/11 04:24

int32_t

総合スコア21016

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問