First, your symbolic translations of Bart’s and Zed’s statements are incorrect. Bart actually said $$\text{Ma}\land\text{Ze}\;,$$ and Zed said $$\text{Bo}\land\text{Ma}\;.$$
A quick way to solve it is to suppose that Bart is a knight. Then he’s telling the truth, so Marge and Zed are also knights. But that’s impossible, because Marge said that Zed is a knave: if she’s a knight, she’s telling the truth, and Zed isn’t knight. Thus, Bart cannot be a knight and must therefore be a knave. Can you finish it from there?
Yes, your solution is correct (and the one you read is not); my guess is that the original puzzle was authored by someone who had your solution in mind, and the source you read it from lazily mistranscribed the original (correct) solution without thinking through whether their phrasing of it made sense.
As an extension of this problem, we might ask when you can determine the identities of a collection of $k$ knights, $v$ knaves, and $n$ normals.
By your argument, we will fail if $n\ge k+v$; $k+v$ of the normals can pretend like their roles are reversed with the knights and knaves, and the remaining normals (if any) can just answer "yes" to all questions asked of them.
But is it possible when $n < k + v$? I'll provide an answer below, but feel free to stop here if you want to ponder it yourself.
The answer is that it is indeed possible to root out the normals in this case. For each person $P$, we ask everyone present the following question:
"If I asked you if $P$ were normal, would you say yes?"
If $P$ is normal, knights will truthfully inform you that they would tell you so and say "yes", while knaves will lie about the fact that they would have said no, and so also say "yes". Conversely, knights and knaves will both say "no" to this question if $P$ is not normal. So every knight and knave's answer will line up with whether $P$ is normal or not. Then to figure out if $P$ is normal or not, just take the majority response - since the knights and knaves always concur and outnumber the normals, their answer will be the correct one, and there aren't enough normals to overthrow the vote no matter what they say.
By repeating this procedure for each person $P$, we obtain an answer for everyone present (and we can do it again with "knight" instead of "normal" if we want to specify things further). In fact this algorithm works so long as you know that $n<k+v$ - you don't have to know their exact values to correctly identify everyone present.
Best Answer
For part (a), the answer is yes. If the natives are both knights or both knaves, they will both answer "yes" to the question. If one of the natives is a knight and the other one is a knave, they will both answer no to the question.
For part (b), there is always an odd number of knights. If A is a knight, then the other two are both knights or both knaves, because they are the same. If A is a knave, the other two are one knight and one knave, because the knave is lying. In both cases, there is an odd number of knights.
For part (c), you can use the question in part (b). "Are the other two the same type?" Using this question, if you get yes, no matter if the one you asked is a knight or a knave, there are an odd number of knights, which answers the question. If the person says no, then there are two knights.
For part (d), B is a knave, and A could either be a knight or a knave. The statement "B is a knight is the same as I am a knave" sounds confusing. Just split the statement into two parts: "B is a knight" and "I am a knave". The words "is the same as" tells you that the true/false component of each of these is the same. If one is false, the other is false. If one is true, the other is true. Therefore, if A is a knight, both parts of the statement are false, and the middle words "is the same as" makes the statement as a whole true. If A is a knave, the true/false component of each of the statements is different. "I am a knave" must be true and "B is a knight" must be false. Therefore, A can either be a knave or a knight, and B is always a knave.