30/09/2018, 17:07

Vấn đề truyền tham số argv vào hàm!

Mình đang làm một chương trình về chuyển đổi ngày trong năm và ngày trong tháng. Chương trình như sau:

#include <iostream>
using namespace std;

static char* name[] = { "Invavlid month", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
static int daytab[][13] = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };
int day_of_year(int year, int month, int day)
{
	int leap = (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) ? 1 : 0;
	for (int i = 1; i < month; i++)
		day += daytab[leap][i];
	return day;
}

void day_of_month(int year, int day_of_year, int &month, int &day)
{
	month = 1;
	int leap = (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) ? 1 : 0;
	while (day_of_year > daytab[leap][month])
	{
		day_of_year -= daytab[leap][month++];
	}
	day = day_of_year;
}

int month_search(char **argv)
{
	cout << *argv;
	for (int i = 1; i < 13; i++)
		if (strcmp(*argv, name[i])==0)
			return i;
}

int main(int argc, char* argv[])
{
	//Specify Command-line
	if (!strcmp(*++argv,"day_of_year"))
	{
		//Form: day_of_year 2015 May 12
		int day = day_of_year(atoi(*++argv), month_search(*++argv), atoi(*++argv));
		cout << "This is the " << day << "-th day of year.";
	}
	else if (!strcmp(*argv,"day_of_month"))
	{
		//Form: day_of_month 2015 36
		int month, day;
		day_of_month(atoi(*++argv), atoi(*++argv), month, day);
		cout << "The day is " << day << " of " << name[month];
	}
	else
		cout << "Invalid command";
	cout << endl;
	system("pause");
} 

Nhưng không hiểu sao ở hàm day_of_month thì việc truyền tham số argv (ở đây mình định truyền tên tháng vào vd: “May” vào hàm month_search) bị lỗi. Mong mọi người giúp mình tìm vấn đề ở bài này với. Cảm ơn mọi người.
P/s: Mọi người thông cảm vì mình viết hơi khó hiểu chút nhưng mình thực sự cần giúp đỡ!

Itachi Citus viết 19:14 ngày 30/09/2018

lỗi là lỗi gì vậy bạn, dòng nào, cột nào v.v…

Gió viết 19:21 ngày 30/09/2018

Hàm month_search của bạn khi dùng thử bỏ dấu * trước đi. Vì tham số là char **

Nguyen Cuong viết 19:13 ngày 30/09/2018

Mình còn chưa tìm ra lỗi mà bạn

Nguyen Cuong viết 19:20 ngày 30/09/2018

Khi sửa lại như thế thì cú pháp thì đúng nhưng mà vẫn bị sai bạn ah. Mình có sửa lại như bạn nói thì kết quả vẫn sai.
Mình có in ra tham số truyền vào ở hàm month_search ấy. Command line của mình như ở form ở phần chú thích. thì nó lại in ra 12 thay vì xâu “May”.

Bài liên quan
0