다음 코드에서는 다이어트 계획에 따라 어떤 저녁 식사를 먹어야하는지 알아 보았습니다. 나는식이 요법, 점심 식사, 아침 식사를 입력으로 통과시키고 저녁 식사를 결과물로 돌려 보내야한다. 다이어트에는 내가 오늘 먹어야하는 것이 들어 있습니다. 각 편지는 음식입니다. 아침과 점심에는 내가 이미 먹은 음식이 들어 있습니다.string을 main 함수로 반환 할 수 없습니까?
는 아침이나 점심 다이어트에 존재하지 않는 모든 요소를 포함하는 경우에, 나는 "사기"를 반환해야합니다. 그렇지 않으면 나는 다이어트에 있지만 아침과 점심에는없는 요소를 찾아야합니다.
내 코드는 Dinner가 성공적으로 계산되었음을 보여줍니다. 그러나 그것은 저녁 식사를 반환하지 않습니다.
#include <iostream>
#include <string>
using namespace std;
class DietPlan
{
public:
string chooseDinner(string diet, string breakfast, string lunch)
{
int lim1 = breakfast.length(), lim2 = lunch.length();
int flag1 = 1, lim0 = diet.length();
//Sort diet.
for(int k = 1; k < lim0; k++)
for(int x=0;x < lim0-k; x++)
if(diet[x]>diet[x+1])
{
char temp = diet[x];
diet[x] = diet[x+1];
diet[x+1]=temp;
}
cout<<"Diet: "<<diet<<endl;
//Sort breakfast.
if(lim1>0)
for(int k = 1; k < lim1; k++)
for(int x=0;x < lim1-k; x++)
if(breakfast[x]>breakfast[x+1])
{
char temp1 = breakfast[x];
breakfast[x] = breakfast[x+1];
breakfast[x+1]=temp1;
}
cout<<"Breakfast: "<<breakfast<<endl;
//Sort lunch.
if(lim2>0)
for(int k = 1; k < lim2; k++)
for(int x=0;x < lim2-k; x++)
if(lunch[x]>lunch[x+1])
{
char temp2 = lunch[x];
lunch[x] = lunch[x+1];
lunch[x+1]=temp2;
}
cout<<"Lunch: "<<lunch<<endl;
//compare breakfast and diet. as soon as there is a difference flag 0.
for(int l = 0; l < lim1; l++)
{
for(int m = 0; m<lim0; m++)
if(breakfast[l]!=diet[m])
flag1 = 0;
else
{
flag1 = 1;
cout<<diet[m];
diet[m] = '0'; cout<<" ho "<<endl;
break;
}
if(flag1 == 0)
{
cout<<"Hicheater"<<endl;
return "CHEATER";
}
}
cout<<"Diet: "<<diet<<endl;
//compare lunch and diet. as soon as there is a difference flag 0.
for(int l = 0; l < lim2; l++)
{
for(int m = 0; m<lim0; m++)
if(lunch[l]!=diet[m])
flag1 = 0;
else
{
flag1 = 1;
diet[m] = '0';
break;
}
if(flag1 == 0)
return "CHEATER";
}
cout<<"Diet: "<<diet<<endl;
string dinner;
int i = 0;
// put the remaining characters from diet in dinner.
for(int k = 0; k<lim0; k++)
if(diet[k]!='0') {
cout<<diet[k];
dinner[i] = diet[k];
cout<<i<<" "<<dinner[i]<<endl;
i++;
}
cout<<i<<endl;
dinner[i]='\0';
cout<<"Dinner: "<<dinner<<endl;
return dinner;
}
};
int main()
{
string diet = "ABCD";
string bf = "AB", lu = "C";
DietPlan d;
string din = d.chooseDinner(diet, bf, lu);
cout<<"Dinner: "<<din<<endl;
}
출력 :
Diet: ABCD
Breakfast: AB
Lunch: C
A ho
B ho
Diet: 00CD
Diet: 000D
D0 D
1
Dinner:
Dinner:
저녁 식사 아무것도 표시되지 않습니다. 진심으로 감사드립니다.
문자열을 처리 할 때'\ 0' 물건을 직접 다루어서는 안됩니다. – Borgleader
문자열 연산이 언제 그렇게 복잡해 집니까? – billz