Сортировка предложения с использованием массивов и строк

Извините, ребята, предупреждаю, что я отстой в кодировании, но у меня большой проект и мне нужна помощь!

Вход: полное предложение.

Вывод: отсортированный порядок (ASCii Chart Order) предложения (игнорировать регистр.)

Выведите гистограмму для следующих категорий:
1) гласные
2) согласные
3) Пунктуация
4) Заглавные буквы
5) Буквы нижнего регистра

Я понятия не имею, что делать

-4

Решение

Поскольку вы расплывчаты в своей проблеме, я рекомендую следующий процесс:

Требования к обзору

Всегда пересматривайте требования (задания). Если есть вещи, которые вы не понимаете или понимаете так же, как ваш клиент (инструктор), обсудите их с вашим клиентом.

Напишите простой main программа.

Напишите простой main или «Привет, мир!» Программа для проверки вашей IDE и других инструментов. Получите это, прежде чем двигаться дальше. Будь проще.

Вот пример:

#include <iostream>
#include <cstdlib>  // Maybe necessary for EXIT_SUCCESS.

int main()
{
std::cout << "Hello World!\n";
return EXIT_SUCCESS;
}

Обновить программу для ввода текста & проверки.

Добавьте код, чтобы выполнить ввод, подтвердите ввод и отзовитесь на консоль.

#include <iostream>
#include <cstdlib>  // Maybe necessary for EXIT_SUCCESS.
#include <string>

int main()
{
std::string sentence;
do
{
std::cout << "Enter a sentence: ";
std::getline(cin, sentence);
if (sentence.empty())
{
std::cout << "\nEmpty sentence, try again.\n\n"}
} while (sentence.empty());
std::cout << "\nYou entered: " << sentence << "\n";

// Keep the console window open until Enter key is pressed.
std::cout << "\n\nPaused. Press Enter to finish.\n";
std::cin.ignore(100000, '\n');

return EXIT_SUCCESS;
}

Добавьте функциональность, по одному предмету за раз и протестируйте.

Добавьте код для одного простого требования, скомпилируйте и протестируйте.
После того, как это работает, сделайте резервную копию.
Повторяйте, пока все требования не будут выполнены.

0

Другие решения

Для упорядочивания строки вы можете использовать стандартную функцию c qsort. Для подсчета гласных, согласных, знаков препинания … вам нужен простой цикл for.

Вот рабочий пример:

#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

int cmp(const void* pc1, const void* pc2)
{
if(*(char*)pc1 < *(char*)pc2) return -1;
if(*(char*)pc1 > *(char*)pc2) return  1;
return 0;
}

void main(int argc, char* argv[])
{
char pczInput[2000] = "A complete sentence.";

cout << endl << "Input: '" << pczInput << "'";

qsort(pczInput, strlen(pczInput), sizeof(char), cmp);

cout << endl << "Result: '" << pczInput << "'";

int iCapital     = 0;
int iLowerCase   = 0;
int iPunctuation = 0;
int iVowels      = 0;
int iConsonants  = 0;

for(unsigned int ui = 0; ui < strlen(pczInput); ++ui)
{
if(isupper(pczInput[ui])) ++iCapital;
if(islower(pczInput[ui])) ++iLowerCase;
if(ispunct(pczInput[ui])) ++iPunctuation;
if(strchr("aeiouAEIOU", pczInput[ui]) != NULL) ++iVowels;
if(strchr("bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ", pczInput[ui]) != NULL) ++iConsonants;
}

cout << endl << "Capital chars: "     << iCapital;
cout << endl << "Lower case chars: "  << iLowerCase;
cout << endl << "Punctuation chars: " << iPunctuation;
cout << endl << "Vowels chars: "      << iVowels;
cout << endl << "Consonants chars: "  << iConsonants;
cout << endl;
}

Обратите внимание, что я использовал стандартные функции C для подсчета заглавных букв, строчных букв и знаков препинания, и мне пришлось использовать функцию strchr для подсчета гласных и согласных, потому что такие функции отсутствуют в стандартной библиотеке C.

Выход программы:

Input: 'A complete sentence.'
Result: '  .Acceeeeelmnnopstt'
Capital chars: 1
Lower case chars: 16
Punctuation chars: 1
Vowels chars: 7
Consonants chars: 10
0