01/10/2018, 11:55

Mấy anh xem dùm code của em sai chỗ nào với

em mới học viết hàm con,gv ra đề là hiển thị menu và cho user nhập vào lệnh họ muốn và in ra màn hình kết quả tương ứng với lệnh đã nhập, source code phải tách ra làm 3 file:main.cpp,source.cpp và header.h. Em ko hiểu là code sai cái gì mà cứ bị báo lỗi thế này


đây là code của e

//file header.h
#ifndef __HEADER_H__ 
#define __HEADER_H__

#include <stdio.h>  
#include <conio.h>
#include <math.h>
#include <iostream>
using namespace std;
void KTChanLe(int n);   
void KTSoNguyenTo(int n);
void KTSoChinhPhuong(int n);
void KTSoHoanHao(int n);


int Menu(int n);
void GoiHam(int &x, int &n);

#endif

//file source.cpp

#include "Header.h" 

int Menu(int n)  
{
	printf("1. Kiem tra chan le.
2. Kiem tra n co phai la so nguyen to.
3. Kiem tra n co phai la so chinh phuong.
4. Kiem tra n co phai la so hoan hao.
5. Thoat.
");
	printf("Nhap n: ");
	scanf("%d", &n);
	int x;
	printf("Chon cong viec ban muon thuc hien: ");
	scanf_s("%d", &x);
	return x;

}

void GoiHam(int x, int n)   
{
	switch (x)
	{
	case 1:
		KTChanLe(n);
		break;
	case 2:
		KTSoNguyenTo(n);
		break;
	case 3:
		KTSoChinhPhuong(n);
		break;
	case 4:
		KTSoHoanHao(n);
		break;
	}
	void KTChanLe(int n)
	{
		if (n % 2 == 0)
		{
			printf("so chan");
		}
		else
		{
			printf("so le");
		}
		getch();
	}
	void KTSoNguyenTo(int n)
	{
		int SoNguyenTo = 0;
		for (int i = 2; i <= n / 2; i++)
		{
			if (n % i == 0)
			{
				SoNguyenTo = 1;
				break;
			}
		}
		if (SoNguyenTo == 1)
			printf("la so nguyen to");
		else printf("ko la so nguyen to");
		getch();
	}
	void KTSoChinhPhuong(int n)
	{
		int SoChinhPhuong = 0;
		for (int i = 2; i <= n / 2; i++)
		{
			if (i*i == n)
			{
				SoChinhPhuong = 1;
				break;
			}
		}
		if (SoChinhPhuong == 1)
			printf("la so cp");
		else printf("ko la so cp");
		getch();
	}
	void KTSoHoanHao(int n)
	{
		int i;
		int s = 0;
		for (i = 2; i < n; i++)
		{
			if (n % i == 0)
			{
				s = s + i;
			}
		}
		if (s == n)
		{
			printf("la so hoan hao");
		}
		else
			printf("ko la so hoan hao");
		getch();
	}
}

file main.cpp

#include "Header.h" 

void main()
{
	int x, n;
	do
	{
		system("cls");     
	    x= Menu(n);
		GoiHam(x, n);
		system("pause"); 
	} while (x != 5);

      getch();
}
HK boy viết 14:06 ngày 01/10/2018
#include "Header.h" 
!= 
#include "header.h" 
KDNN viết 13:59 ngày 01/10/2018

em không hiểu anh ơi

HK boy viết 13:59 ngày 01/10/2018

Có gì đâu mà không hiểu.
Sửa ở file main

#include "Header.h" 

thành

#include "header.h"

OMG, ở file source.cpp bạn viết hàm trong hàm hay là viết thiếu ngoặc vậy?

KDNN viết 14:00 ngày 01/10/2018

thiếu ngoặc chỗ nào anh, à với em sửa lại header.h rồi mà vẫn bị lỗi như vậy

KDNN viết 14:07 ngày 01/10/2018

em đã ktra rất kĩ các dấu ngoặc rồi ạ

HK boy viết 13:59 ngày 01/10/2018

Đọc lại file source.cpp, đọc kĩ void GoiHam. Không được viết hàm trong hàm trong C++.

KDNN viết 14:01 ngày 01/10/2018

em sửa lại như vầy

void GoiHam(int x, int n)
{
	switch (x)
	{
	case 1:
		KTChanLe(n);
		break;
	case 2:
		KTSoNguyenTo(n);
		break;
	case 3:
		KTSoChinhPhuong(n);
		break;
	case 4:
		KTSoHoanHao(n);
		break;
	}
}
KDNN viết 14:02 ngày 01/10/2018

mấy hàm con kia em viết để ngoài

HK boy viết 13:58 ngày 01/10/2018

Bạn chạy thử đi rồi tự biết đúng hay sai.

KDNN viết 14:09 ngày 01/10/2018

lỗi gê hơn anh ơi

HK boy viết 14:11 ngày 01/10/2018

ghê chứ không phải gê.

Mấy cái warning là do getch()scanf(). Làm theo hướng dẫn của nó.

Mấy cái error thì mình chịu.

KDNN viết 14:02 ngày 01/10/2018

code của e anh ko lo chú ý, lo bắt lỗi chính tả của e

KDNN viết 14:07 ngày 01/10/2018

thật sự là ko có cách nào để sửa ạ

HK boy viết 13:55 ngày 01/10/2018

code của e anh ko lo chú ý

Code của bạn mình cũng chỉ nhìn được 1 phần thôi. Mình đâu phải là watcher của IDE của bạn mà phải nhìn kĩ quá làm gì?

lo bắt lỗi chính tả của e

Cái này là nghề rồi =))

thật sự là ko có cách nào để sửa ạ

Đợi người khác vào sửa thôi =))

Minh Nguyen viết 14:02 ngày 01/10/2018

Bạn định nghĩa trong header là :

void GoiHam(int &x, int &n);

mà trong source.cpp lại là:

void GoiHam(int x, int n)  {
 .........
}
KDNN viết 13:57 ngày 01/10/2018

cám ơn mấy anh, em đã sửa đc code, cám ơn mọi người đã giúp đỡ em ạ

Bài liên quan
0