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

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

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

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

492閲覧

行に対するファイル終端検知 c++

t.s_k

総合スコア61

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/03/02 11:37

編集2019/03/09 07:19

AOJ volume58

お世話になっております。
上記の問題なのですが、c++におけるファイル終端までの数値の読み込みに関する質問です。
**「各データセットが1行に与えられる」**のですが、この1行を取り扱い、最終的にファイル終端に届く際に、EOFでwhile文から抜け出す処理を記述したいのですが、どのように記述するのがよろしいでしょうか。

ご教授お願いいたします。

paizaコード共有

cpp

1#include <iostream> 2#include <stdio.h> 3 4int main(void){ 5 6 while(( ?? ) != EOF){ //<-- 7 int x_1, y_1, x_2, y_2, x_3, y_3, x_4, y_4; 8 scanf("%d %d %d %d %d %d %d %d",&x_1 ,&y_1 ,&x_2 ,&y_2 ,&x_3 ,&y_3 ,&x_4 ,&y_4); 9 printf("%d %d %d %d\n", x_1, y_1, x_2, y_2); 10 11 if(x_2 - x_1 == 0 || x_4 - x_3 == 0 || y_2 - y_1 == 0 || y_4 - y_3 == 0){ 12 printf("NO"); 13 return 0; 14 }else if( ((x_2 - x_1) / (y_2 - y_1)) * ((x_4 - x_3) / (y_4 - y_3)) == -1 ){ 15 printf("YES"); 16 return 0; 17 }else{ 18 printf("NO"); 19 return 0; 20 } 21 22 } 23 return 0; 24}

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

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

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

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

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

guest

回答3

0

ベストアンサー

解決しててアレだけど、僕なら istreamの二段構えで.

C++

1#include <iostream> 2#include <sstream> 3#include <string> 4#include <complex> 5 6int main(){ 7 using namespace std; 8 9 float xa, ya, xb, yb, xc, yc, xd, yd; 10 string line; 11 while ( getline(cin, line) ) { // lineに一行読んで 12 auto c = [](float x, float y) { return complex<float>(x,y); }; 13 istringstream stream(line); // lineからistreamを作って... 14 stream >> xa >> ya 15 >> xb >> yb 16 >> xc >> yc 17 >> xd >> yd; 18 cout << c(xa,ya) << " " 19 << c(xb,yb) << " " 20 << c(xc,yc) << " " 21 << c(xd,yd) << endl; 22 } 23}

投稿2019/03/03 00:27

episteme

総合スコア16614

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

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

0

EOFというのはファイルの終端に来たら読み出し関数が返す値、とされています。
なので、EOFは-1かなんかと定義されてます

で、あなたのコードではどうなるか考えてみたらどうでしょうか。

投稿2019/03/02 11:49

y_waiwai

総合スコア87774

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

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

0

通常ならgetline()を使って1行読んでsscanf()
//
参考:C++でファイル読込み パターン別まとめ

投稿2019/03/02 12:04

cateye

総合スコア6851

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問