Я просматриваю два дня и не могу найти решение, которое соответствует моему решению.
Я пытаюсь написать функцию Pangram. Я пробовал много способов, но не смог добиться успеха.
Моя функция IsPangram всегда дает it is not Pangram
предложи мне несколько способов.
void isPangram()
{
int i;
int count = 0;
char str[26];
cout << "Enter a string to check if its Pangram or not: ";
for (i = 0; i < 26; i++) {
cin >> str[i];
if (i >= 97 && i <= 122) {
cout << "It is Pangram" << endl;
break;
} else {
cout << "it is not Pangram" << endl;
break;
}
}
}
int main()
{
isPangram();
system("pause");
}
В вашем коде 3 проблемы —
(i) Вы пытаетесь проверить, является ли каждый символ панграммой, что неправильно.
(ii) Для проверки вы проверяете по индексу i
вместо того, чтобы читать символ, который str[i]
,
(iii) Это заявление if ( i >= 97 && i <= 122 )
всегда буду оценивать false
поскольку значение i
может быть только между 0 и 26. Следовательно, вы всегда получаете не панграмму.
Попробуй это —
void isPangram() {
int i;
int count = 0;
char str[27];
cout << "Enter a string to check if its Pangram or not: ";
// Read the string
cin >> str;
short flagArr[26]; // Array to flag the characters used
memset(flagArr, 0, sizeof(flagArr));
bool panGramFlag = true;
// Loop through the string and mark the characters read
for (int i = 0; i < 27; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') {
flagArr[str[i]-'A'] = 1;
}
}
// Loop through flag array and check if any character is not used.
for (int i = 0; i < 26; i++) {
if (flagArr[i] == 0) {
panGramFlag = false;
cout << "It is not Pangram" << endl;
break;
}
}
if (panGramFlag)
cout << "it is Pangram" << endl;
}
int main() {
isPangram();
system("pause");
}
Это простой, подумайте логически
#include<iostream.h>
#include<string.h>
#include<conio.h>
void isPangram()
{
int i;
char str[26];
cout << "Enter a string to check if its Pangram or not: ";
for (i = 0; i < 26; i++) {
cin >> str[i];
if ((str[i] >= 97 && str[i] <= 122)||((str[i] >= 65 && str[i] <= 91))
{
cout << "It is Pangram" << endl;
break;
} else {
cout << "it is not Pangram" << endl;
break;
}
}
}
int main()
{
isPangram();
getch();
return 0;
}
#include<iostream>
using namespace std;
bool chkpangram(string &str)
{
int m[26] = {0}, i, index;
for(i = 0; i < str.length(); i++)
{
if (str[i] >= 65 && str[i] <= 90)
index = str[i] - 65;
else if(str[i] >= 97 && str[i] <= 122)
index = str[i] - 97;
m[index] = m[index]++;
}
for (int i=0; i<=25; i++)
if (m[i] == 0)
return (false);
return true;
}
int main()
{
string str = "The quick brown fox jumps over the lazy dog";
if(str.length() < 26)
cout<<"Not a Pangram";
else
{
if(chkpangram(str) == true)
cout<<"Is a Pangram";
else
cout<<"Not a Pangram";
}
return 0;
}