私はC++の初心者で、各ウェイターがバーで働く製品を追跡するプログラムを作成しようとしています。その一部は、テキストファイルから価格を読むことです。C++でファイルの特定の行から数値(浮動小数点数)を抽出する方法は?
各行は特定の製品の価格です。
ユーザーは実際に提供された製品の行である製品 "コード"を入力することになっています(これは多くの製品が提供されるためループします)。
ユーザーが数字を入力すると、5としましょう。テキストの5行目の価格を取得するにはどうすればよいですか。
多分、プログラムが起動したときにファイルを配列にインポートする方法がありますが、その方法はわかりません。
更新: 私は最終的にコードのエラーを修正しましたが、私のプログラムには本当に不満です。私が特別価格でY/Nを尋ねたときでさえ、私はちょうど特別価格を入力し、それは「いいえ」と解釈します。また、各ウェイターが獲得したお金の合計を把握し、それぞれのウェイターが他の人に似たテキストファイルに名前を付けるようにしたいとします(たとえば、最初のウェイター名がwaiters.txtの最初の行にあり、 ...)しかし、その日に応じて4-5人のウェイターしかいないでしょう。一から始めることなくプログラムを拡張するにはどうすればよいですか?
私はそれを自分で解決しました。ファイルの使用からラインここでは、この
char product_names[101][15];
fstream file("prices.txt");
for(int i = 1; i <= 100; ++i)
{
file >> product_prices[i];
}
fstream file2("names.txt");
for(int i = 1; i <= 100; ++i)
{
file >> product_names[i];
}
は、プログラム全体の最終的なコードであるを取得するには、可能な改善に関するコメントは歓迎されています。
#include <iostream>
#include<windows.h>
#include<iostream>
#include<fstream>
#include<iomanip>
#include <string>
using namespace std;
int main()
{
float sum[9]={0,0,0,0,0,0,0,0,0};
float product_prices[101];
int code;
float total;
char waiter_name[9][15];
float price;
int wc;
cout <<"How many waiters are there? \n";
int w; // Maximum 9 waiters
cin >> w;
for (int i=1; i<=w; ++i)
{cin >>waiter_name[i];}
string a;
char product_names[101][15];
fstream file("prices.txt");
for(int i = 1; i <= 100; ++i)
{
file >> product_prices[i];
}
fstream file2("names.txt");
for(int i = 1; i <= 100; ++i)
{
file >> product_names[i];
}
ST:
while (true)
{ cout << "Please give product code or type -1 when you're done. \n";
cin >> code;
if (code==-1) break;
cout << "Please give the waiter's code. \n";
cin >> wc;
price=product_prices[code];
cout <<"Default price is " << price << " . Type Y/N if you want to make a special price or A to chose another product or waiter\n";
cin >> a;
if (a=="Y"||a=="y") { cin >> price; }
else if (a=="A" || a=="a") {goto ST;}
sum[wc]+=price;
cout << waiter_name[wc] <<" : " <<sum[wc] <<"\n";
}
for (int i=1; i<=w; ++i)
{
cout << waiter_name[i] <<" : " <<sum[i] <<"\n";
total+= sum[i];
}
return 0;
}
また@ArchbishopOfBanterbury私はあなたがこのためにこの全体のプログラムを書くことを期待しませんでした。しかし、私はバッファが何を理解することはできません、私はちょうど1つのproduct_prices.txtとproduct_names.txtを持って、製品コードは、行の番号です。テストされていないコードについては、それは私の知識レベルをはるかに上回っています。私はマップの使い方を知らない。それにもかかわらずありがとう。
製品価格は、ファイルの下に1つずつ表示されます。名前もこの方法で保存されます。たとえば、最初の商品の名前はproduct_names.txtの最初の行にあり、商品の価格はproduct_prices.txtの1行目です。
ユーザーに入力を求める前に、ファイルを解析します。すべての価格を 'std :: vector'に保存します。 – StoryTeller
あなたの質問は非常に幅広く、試行したコードやあなたが特に悩んでいる場所を投稿してください。 –
フォーマットがひどいです。そしてなぜあなたには「goto」のないラベルがありますか? –