Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <string>
- #include <stdio.h>
- using namespace std;
- //Возвращает кол-во пробелов в строке
- size_t sizeSpaceInString(char* str, size_t size) {
- size_t space = 0;
- for (size_t i = 0; i < size; i++)
- if (str[i] == ' ')
- space++;
- return space+1;
- }
- //Вычленяет слова из строки и возвращает их в виде списка (двумерного массива)
- char** apartWord(char* inStr, size_t sizeInStr , size_t spaceInStr) {
- char** wordMas = new char*[spaceInStr];
- cout << "new char** done" << endl;
- size_t spaceSelector = 0, i= 0, j = 0, lenWord = 0;
- cout << sizeInStr << endl;
- while ((spaceSelector < spaceInStr) || (i <= sizeInStr)) {
- while (1) {
- if (inStr[i] != ' ' && i < sizeInStr) {
- lenWord++;
- i++;
- }
- else{
- i -= lenWord;
- break;
- }
- }
- wordMas[spaceSelector] = new char[lenWord];
- for (size_t z = 0; z < lenWord; i++, z++) {
- wordMas[spaceSelector][z] = inStr[i];
- }
- cout << "wordMas[" << spaceSelector << "] = " << wordMas[spaceSelector] << endl;
- i++; //Перешагиваем пробел
- lenWord = 0;
- spaceSelector++;
- }
- return wordMas;
- }
- //Вывод слов из массива слов
- void coutWordMas(char** inWordMas, size_t size){
- for(size_t i = 0; i < size; i++)
- cout << inWordMas[i] << endl;
- }
- //Удаление двумерного массива
- void delWordMas(char** inWordMas, size_t size) {
- for(size_t i = 0; i < size; i++)
- delete inWordMas[i];
- delete []inWordMas;
- }
- //Проверка на совпадение с последним словом
- void coincidenceLatter(char** inWordMas, size_t size) {
- cout << "Слова, не совпадающие с последним словом:" << endl;
- for (size_t z = 0; z < size; z++)
- if ((strcmp(inWordMas[size-1], inWordMas[z])))
- cout << inWordMas[z] << " ";
- cout << endl;
- }
- int main() {
- setlocale(0, "");
- const int length = 79;
- char s[length];
- cout << "Введите строку:\n";
- cin.getline(s, 79);
- size_t sizeS = strlen(s);
- cout << "Write done, strlen = " << sizeS << endl;
- size_t spaceInS = sizeSpaceInString(s, sizeS);
- cout << "spaceInS = " << spaceInS << endl;
- char **wordMas = apartWord(s, sizeS, spaceInS);
- cout << "apartWord done" << endl;
- coutWordMas(wordMas, spaceInS);
- coincidenceLatter(wordMas, spaceInS);
- delWordMas(wordMas, spaceInS);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement