01/10/2018, 11:49

Làm thế nào để 2 hàm tự viết hoạt động?

Đây là code của mình ạ.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//void ctnmenu(int select, int contmenu);
void num_ngau_nhien(int Max, int Min);//truy van them ham void vao chuong trinh
void sosanh();

int main()
{
    int SoBiMat = 0, SoHienTai = 0;
    int luachon = 0;
    {
        printf("Bang Cap Do
");
        printf("1.Easy. 1 - 100
");
        printf("2.normal. 1 - 1000
");
        printf("3.hard. 1 - 10000
");
        printf("ban chon cap do nao
");
        scanf("%d", &luachon);
    }
    switch(luachon)
    {
    case 1:
        printf("ban da chon cap do ease. bat dau nao
");
        break;
    case 2:
        printf("ban da chon cap do normal. chien thoi
");
        break;
    case 3:
        printf("ban da chon cap do hard. chuan bi an hanh nao
");
        break;
    default:
        printf("Eror
");
        exit(EXIT_SUCCESS);//dieu kien nay cho phep chuong trinh tro ve 0 khi nguoi choi chon mot so khac ngoai nhung so da cho.
    }
void num_ngau_nhien(luachon); //trieu hoi ham void vao ham main.
    {
        if(luachon==1)
        {
            const int Max = 100, Min = 1;
            SoBiMat = (rand()%(Max - Min + 1) + Min);//vong lap cua chuong trinh. no se lap laij cho toi khi tim duoc so bi mat.
            srand(time(0));
        }
        else if(luachon==2)
        {
            const int Max = 1000, Min = 1;
            SoBiMat = (rand()%(Max - Min + 1) + Min);//vong lap cua chuong trinh. no se lap laij cho toi khi tim duoc so bi mat.
            srand(time(0));
        }
        else
        {
            const int Max = 10000, Min = 1;
            SoBiMat = (rand()%(Max - Min + 1) + Min);//vong lap cua chuong trinh. no se lap laij cho toi khi tim duoc so bi mat.
            srand(time(0));
        }
    }
void sosanh()
    {
        do
        {
            //yeu cau doan so bi mat
            printf("So bi mat la bao nhieu?
");
            scanf("%d",&SoHienTai);
            if(SoBiMat>SoHienTai)
                printf("Lon Hon
");
            else if(SoBiMat<SoHienTai)
                printf("Nho Hon
");
            else
                printf("Chuc mung, ban da doan dung.
");
        }while(SoHienTai!=SoBiMat);
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}

kết quả hiển thị không như mong muốn . Các bro cho mình xin ý kiến.

Trần Hoàn viết 14:03 ngày 01/10/2018

Ai dạy bạn xây dựng hàm trong hàm như vậy? Kể cả hàm main cũng không xây dựng như thế.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void num_ngau_nhien(int LuaChon, int &SoBiMat)
{
	if (LuaChon == 1)
	{
		const int Max = 100, Min = 1;
		SoBiMat = (rand() % (Max - Min + 1) + Min);
		srand(time(0));
	}
	else if (LuaChon == 2)
	{
		const int Max = 1000, Min = 1;
		SoBiMat = (rand() % (Max - Min + 1) + Min);
		srand(time(0));
	}
	else
	{
		const int Max = 10000, Min = 1;
		SoBiMat = (rand() % (Max - Min + 1) + Min);
		srand(time(0));
	}
}

void sosanh(int SoBiMat, int &SoHienTai)
{
	do
	{
		printf("So bi mat la bao nhieu?\n");
		scanf_s("%d", &SoHienTai);
		if (SoBiMat > SoHienTai)
			printf("Lon Hon\n");
		else if (SoBiMat < SoHienTai)
			printf("Nho Hon\n");
		else
			printf("Chuc mung, ban da doan dung.\n");
	} while (SoHienTai != SoBiMat);
}
int main()
{
	int SoBiMat = 0, SoHienTai = 0;
	int luachon = 0;
	{
		printf("Bang Cap Do\n");
		printf("1.Easy. 1 - 100\n");
		printf("2.normal. 1 - 1000\n");
		printf("3.hard. 1 - 10000\n");
		printf("ban chon cap do nao\n");
		scanf_s("%d", &luachon);
	}
	switch (luachon)
	{
	case 1:
		printf("ban da chon cap do ease. bat dau nao\n");
		break;
	case 2:
		printf("ban da chon cap do normal. chien thoi\n");
		break;
	case 3:
		printf("ban da chon cap do hard. chuan bi an hanh nao\n");
		break;
	default:
		printf("Error\n");
		exit(EXIT_SUCCESS);
	}
	num_ngau_nhien(luachon, SoBiMat);
	sosanh(SoBiMat, SoHienTai);
	system("PAUSE");
	return EXIT_SUCCESS;
}
Trần Hoàn viết 14:05 ngày 01/10/2018

Hoặc bạn có thể chọn cách khai báo biến ngoài hàm main, khi đó, các biến sẽ có cùng cấp độ với khai báo hàm, bạn sẽ không cần dùng đến tham số hàm nữa:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int luachon = 0, SoBiMat = 0, SoHienTai = 0;
void num_ngau_nhien()
{
	if (luachon == 1)
	{
		const int Max = 100, Min = 1;
		SoBiMat = (rand() % (Max - Min + 1) + Min);
		srand(time(0));
	}
	else if (luachon == 2)
	{
		const int Max = 1000, Min = 1;
		SoBiMat = (rand() % (Max - Min + 1) + Min);
		srand(time(0));
	}
	else
	{
		const int Max = 10000, Min = 1;
		SoBiMat = (rand() % (Max - Min + 1) + Min);
		srand(time(0));
	}
}

void sosanh()
{
	do
	{
		printf("So bi mat la bao nhieu?\n");
		scanf_s("%d", &SoHienTai);
		if (SoBiMat > SoHienTai)
			printf("Lon Hon\n");
		else if (SoBiMat < SoHienTai)
			printf("Nho Hon\n");
		else
			printf("Chuc mung, ban da doan dung.\n");
	} while (SoHienTai != SoBiMat);
}
int main()
{
	{
		printf("Bang Cap Do\n");
		printf("1.Easy. 1 - 100\n");
		printf("2.normal. 1 - 1000\n");
		printf("3.hard. 1 - 10000\n");
		printf("ban chon cap do nao\n");
		scanf_s("%d", &luachon);
	}
	switch (luachon)
	{
	case 1:
		printf("ban da chon cap do ease. bat dau nao\n");
		break;
	case 2:
		printf("ban da chon cap do normal. chien thoi\n");
		break;
	case 3:
		printf("ban da chon cap do hard. chuan bi an hanh nao\n");
		break;
	default:
		printf("Error\n");
		exit(EXIT_SUCCESS);
	}
	num_ngau_nhien();
	sosanh();
	system("PAUSE");
	return EXIT_SUCCESS;
}
Hắc Tịch viết 13:57 ngày 01/10/2018

a, mình hiểu rồi, cảm ơn bạn nhiều ạ

Bài liên quan
0