Это не проблема в том, чтобы этот вопрос вокруг не помог никому.Чтение данных в
ответ
Это должно сделать трюк. Обратите внимание, что всевозможные хаосы произойдут, если вы действительно попытались развернуть это в любом месте. Этот код очень небезопасен, потому что он не проверяет, не открывается ли файл, или формат файла, или размеры вещей, которые читаются, или действительно ... ничего.
#include <stdio.h>
#include <iostream>
struct salesman
{
char firstname[64];
char lastname[64];
char middleinitial[1];
int averagecents;
int totalcents;
};
int main()
{
const char* inputFilename = "in.txt";
int numberPeople = 0, weeksToHandlePerPerson = 0;
int workweeklength = 5;
int totalcents = 0;
FILE * fileHandle = fopen (inputFilename, "r");
fscanf (fileHandle, "%d", &numberPeople);
fscanf (fileHandle, "%d", &weeksToHandlePerPerson);
for (int i = 0; i < numberPeople; ++i)
{
salesman nextsalesman;
fscanf (fileHandle, "%s", nextsalesman.firstname);
fscanf (fileHandle, "%s", nextsalesman.middleinitial);
fscanf (fileHandle, "%s", nextsalesman.lastname);
float t1, t2, t3, t4, t5;
fscanf (fileHandle, "%f %f %f %f %f", &t1, &t2, &t3, &t4, &t5);
nextsalesman.totalcents = 100 * (t1 + t2 + t3 + t4 + t5);
nextsalesman.averagecents = nextsalesman.totalcents/workweeklength;
totalcents += nextsalesman.totalcents;
std::cout << "salesman " << i << "total: $" << nextsalesman.totalcents/100 << "." << nextsalesman.totalcents % 100
<< " and average $" << nextsalesman.averagecents/100 << "." << nextsalesman. averagecents % 100 << std::endl;
}
int averagecents = totalcents/(numberPeople * weeksToHandlePerPerson);
std::cout << "total for all: " << totalcents/100 << "." << totalcents % 100 << " and average for all $" <<
averagecents/100 << "." << averagecents % 100 << std::endl;
return 0;
}
Я собираюсь прочитать код и узнать его. Спасибо, что показал мне scanf lol. – Rekumaru
Это поможет вам в колледже и программировании для обработки файлов старых школьных предприятий. разбор файлов - это просто, но трудно сделать безопасно и быстро. Вот почему у нас есть стандартные форматы, такие как xml и json, и синтаксический анализ библиотек, которые являются супер-биткой, чтобы сделать это для нас. Использование scanf в этих множественных поплавках - это страшная вещь, кстати, обычно рекомендуется делать каждый вызов отдельно. Если вы хотите, чтобы максимальная скорость просматривалась с помощью http://www.cplusplus.com/reference/cstdio/fread/ и http://www.cplusplus.com/reference/cstdlib/atof/ – Catalyst
Кроме того, я бы 't использовать это как пример хорошей компоновки кода, но есть потенциально хуже. На самом деле я также должен был прочитать эти денежные ценности в виде ints. Деньги никогда не должны удерживаться как поплавки или удваиваются, потому что floats/doubles хранят дроби в степени 2 в свернутом виде, но не могут правильно представлять простые значения процента. – Catalyst
_'isdigit (stod (line.substr (sz))) == true'_ Что это должно делать на самом деле? –
Итак, идея состояла в том, что я проверил бы первое значение строки, а затем, если бы ее можно было преобразовать в двойную, я бы запускал функцию doMath (строка), иначе я бы запускал функцию tableWriter (строка) – Rekumaru
Возможно, сэкономить время и использовать отладчик для выполнения кода –