Строка: во вводимом с клавиатуры тексте выбрать слова, заканчивающиеся согласной буквой, и вывести их на экран - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть задание : Написать программу, которая во вводимом с клавиатуры тексте выберет слова, заканчивающиеся согласной буквой, и выведет их на экран. Написал код, но при запуске, после введения строки программа зависает
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <vector>
#include <string>
#include <cmath>
#include <queue>
#include <deque>
#include <set>
#include <map>
 
int main () {
    char* s[10000];
    int i,n = 0, k = 0;
    scanf("%c", &s);
    while (*s[i] != '/0'){
        
        if  (int(*s[i]) == 32){
            if ((*s[i-1] != 'A') || (*s[i-1] != 'E') || (*s[i-1] != 'I') || (*s[i-1] != 'O') ||
            (*s[i-1] != 'U') || (*s[i-1] != 'a') || (*s[i-1] != 'e') || (*s[i-1] != 'i') || 
            (*s[i-1] != 'o') || (*s[i-1] != 'u')) {
                for (int j = k; j = i-1; j++){
                    printf("%s", *s[i]);    
                }               
            }
            k = i + 1;  
        }
        i++ ;
    }
    printf("%d", &n);
    system("pause");
    return 0;
}

Решение задачи: «Строка: во вводимом с клавиатуры тексте выбрать слова, заканчивающиеся согласной буквой, и вывести их на экран»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define VAL 100
 
void fill_arr(char[], int, int);
void print_consend(char[]);
 
int main(void) {
    char arr[VAL] = {0};
    fill_arr(arr, VAL, '\n');
    print_consend(arr);
 
    return 0;
}
 
void fill_arr(char arr[], int number, int mark) {
    int i;
    for (i=0; mark != (arr[i]=getchar()) && i < number-1; i++)
        ;
    arr[i]=0;
}
 
void print_consend(char arr[]) {
    char *runner, *saver;
    int rc;
    char str[] = "bcdfghjklmnpqrstvwxz";
    runner = saver = arr;
    rc = 0;
    while (1) {
        switch (*(runner+rc)) {
            case '.':
            case ',':
            case '?':
            case '!':
            case ':':
            case ';':
            case ' ':
                if (strchr( str, tolower(*(runner+rc-1)))) {
                    saver = runner+rc-1;
                    while (runner<=saver)
                        putchar(*(runner++));
                putchar('\n');
                }
                rc = 0;
                runner++;
                break;
            case '\0':
                if (strchr( str, tolower(*(runner+rc-1)))) {
                    saver = runner+rc-1;
                    while (runner<saver)
                        putchar(*(runner++));
                }
                return;
            default :
                rc++;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы