これが、Cでの最初の超初心者のコンピュータープログラミングの質問です。
誰かが入力にフルネームを入力できるように設定する必要があります。これが仕様の一部です-
「印刷された名前を他のすべての列と並べる方法を理解するには、少し考える必要があります。最初のヒントは、文字列を結合することです。これは連結と呼ばれます。試してみてください。理解できません。このフォルダ内の次のドキュメントを見てください。追加のヒントが含まれています。この割り当ての目的の一部は、暗黙的に連結を教えることです。タブ(\ t)を使用しないでください。また、C /C++を確認してください。エディターはタブ文字を生成しません。
このプログラムではgets()を使用しないでください。インタラクティブ情報を入力するには、scanf()を使用します。get()を使おうとすると、非常にイライラすることがあります。
基本的に、レポートに表示されるすべての数値は、右寄せで小数点以下の桁数に揃える必要があります。要約に表示されるすべての番号は、先頭にスペースを付けずに表示する必要があります(通常、番号を前の単語から区切る番号を除く)。時給は10.00未満になる可能性があるため、フォーマットには十分注意してください。サンプル出力は正しく表示される場合がありますが、10.00ドル未満の時給と適切に一致しない場合でも、ハーフポイントにドッキングできます。」追加のヒント:
従業員名は常に、スペースで区切られた名と姓の2つの名前であると想定できます。また、名または姓の中にスペースがないことを前提としています。これにより、1つのgets()呼び出しの代わりに、2つのscanf()呼び出しを使用できます。get()は、後で物事が正しく機能しないようにするいくつかの奇妙なことをもたらします。
また、どちらの名前も10文字を超えないと想定することもできます。
プロセスからの入力別の従業員?質問は1文字にする必要があります。Nまたはnはループを停止しますが、他の文字はループを継続するとします。
誰もがこれを行う方法を知っていますか?私がgetsを使用すると(彼はそうしないと言っています)、ループは2回目にねじ込まれ、名前と給与をすべて1行で要求します。また、2つのscanfステートメントを使用しようとすると、クラッシュするか、名前の1つだけが入力されます。
名前をテキストファイルに出力して、もう一度読み込むのが唯一の方法だと思っていました。しかし、他の方法はありますか?個別に名前を尋ねることは許可されていません。仕様に記載されているように、ユーザーは1つのスペースでフルネームを入力する場合があります。
これが私がこれまでに書いたコードです。また、総時間、残業時間、通常時間の合計も必要です。
//stupid program
#include <stdio.h>
#include <strings.h>
#include <math.h>
//global variables
FILE *reportfile; //output file
char department[21];
int count;
char name[21];
float hoursworked;
float hourlywage;
float overtimehoursworked;
float overtimehourlywage;
float gross;
char again;
char firstname;
char lastname;
float tothoursworked;
float totovertimehoursworked;
float totgross;
const float overtimerate = 1.5;
const float overtimethreshold = 40; //hours needed to get overtime
//function prototypes
void GetInfo(void);
void Finalreport(void);
//main
int main(void)
{
reportfile = fopen("c:\\class\\kpaul-pay.txt","w"); //open output file
//////////////////////////////////////////////////
// initialize accumulating variables
/////////////////////////////////////////////////
count = 0;
tothoursworked = 0;
totovertimehoursworked = 0;
totgross = 0;
GetInfo();
fclose(reportfile); //close output file
return 0;
}
void GetInfo (void)
{
printf("Mountain Pacific Corporation\n");
printf("Department Salary Program\n\n");
printf("Please enter the name of the department: ");
gets(department);
fprintf(reportfile, "Mountain Pacific Corporation\n");
fprintf(reportfile, "Department Salary Program\n\n");
fprintf(reportfile, "%s\n\n", department);
fprintf(reportfile, "Employee Reg Hrs Overtime Hrs Gross\n");
fprintf(reportfile, "-----------------------------------------------------------------\n");
do {
printf("\nEnter employee #1: ");
gets(name);
printf("Enter the hourly wage of %s", name);
scanf("%f", &hourlywage);
printf("\nEnter total number of hours: ");
scanf("%f", &hoursworked);
if (hoursworked<=overtimethreshold)
overtimehoursworked = 0;
else if (hoursworked > overtimethreshold)
overtimehoursworked = hoursworked - overtimethreshold;
gross = (hoursworked*hourlywage) + (overtimehoursworked*overtimehourlywage);
fprintf(reportfile, "%s%16.2f(%4.2f)%12.2f(%4.2f) $%7.2f", name, hoursworked, hourlywage, overtimehoursworked, hourlywage * overtimerate, gross);
tothoursworked = tothoursworked + hoursworked;
totovertimehoursworked = totovertimehoursworked +overtimehoursworked;
totgross = totgross + gross;
printf("\n");
printf("Would you like another conversion? ");
scanf ("%s", &again);
printf("\n\n");
} while (again!='N' && again!='n');
}