Задать вопрос
Ответы пользователя по тегу C
  • Как вывести символы из строки?

    @Wundarshular
    Прежде всего настоятельно рекомендую сначала ознакомиться с основами языка, а также используемыми вами функциями ввода вывода. Язык С очень прост: если вы хотите выстрелить себе в ногу, вы стреляете.

    Беглый просмотр вашего кода показывает, что вы не заботитесь о входных данных. Например, вот эта конструкция хоть и позволяет вам считать строку, но не даёт никаких гарантий, что она не превысит размер в 21 символ.

    #define N 21
    ...
    char str[N];
    printf("Enter a string no more than 20 symbols :\n\n");
    gets(str);


    А вот здесь вы наивно надеетесь, что у строки точно есть конец.
    for (int i=0; str[i] != '\0'; i++)

    Язык С очень прост: если вы хотите считать строку, вы её считаете. Но какой вы её получите - это ваша проблема.

    Что до вашей задачи, то, полагаю, самым простым способом в вашем случае будет цикл в цикле: главным циклом вы проходитесь по полученной строке, побочными циклами ищите совпадения в ваших справочниках (массивы vovels и тд) и при нахождении оного либо выводите сразу, либо копируете символ куда-либо для вывода позже.
    Вы значительно упростите код в этой части, если посмотрите таблицу ASCII.
    Задача ограничения длины решается, например, чтением справочника языка - all-ht.ru/inf/prog/c/func/fgets.html - или просто бесцеремонным обрубанием введённой строки. Для принуждения повторного ввода, думаю, вам подойдёт while либо do while - что больше нравится.
    Ответ написан
    Комментировать
  • Функция gets() в C?

    @Wundarshular
    Как отметил jcmvbkbc, у вас "застревает" код клавиши enter в потоке ввода - это распространённый нюанс работы с потоком на начальных этапах.
    Как вариант, вы можете "вычищать" поток следующей конструкцией:
    while (getchar() != '\n');
    будет происходить считывание ввода посимвольно, отправляя результат "в никуда", пока не будет считан символ '\n' - после цикл завершится, и поток ввода уже не будет содержать данный символ.
    Ответ написан
    Комментировать
  • Сервис по построению блок схем по ГОСТу?

    @Wundarshular
    В чём состоит вопрос? Вы не знаете с чего начать?
    Парсер текста
    Ответ написан
    Комментировать
  • Как записать 2 упорядоченных массива в один общий?

    @Wundarshular
    Вам известно, что длина результирующего массива равна n+m. Исходя из этого, самым примитивным образом заполнить результирующий массив можно так:

    #include <stdio.h>
    
    int main(void)
    {
    	short int n,m,i,k;
    	short int mass1[n],mass2[m],massR[n+m];
    
    	n=4;m=5;
    	k=0; // для заполнения результирующего массива вторым.
    	for(i=0;i<n;i++)
    		mass1[i]=i;
    	for(i=0;i<m;i++)
    		mass2[i]=(i+5)*2;
    	printf("mass1\n", mass1[i]);
    	for(i=0;i<n;i++)
    		printf("%d ", mass1[i]);
    	printf("\nmass2\n", mass1[i]);
    	for(i=0;i<m;i++)
    		printf("%d ", mass2[i]);
    	printf("\n");
    
    	for(i=0;i<n;i++) // заполнение результирующего массива первым
    		massR[i]=mass1[i];
    	for(i=n;i<m+n;i++) // и вторым
    	{
    		massR[i]=mass2[k];
    		k++;
    	}
    	printf("\nResult: ");
    	for(i=0;i<n+m;i++)
    		printf("%d ", massR[i]);
    
    	getchar();
    	return 0;
    }


    Вывод выглядит так:
    mass1
    0 1 2 3
    mass2
    10 12 14 16 18

    Result: 0 1 2 3 10 12 14 16 18
    Ответ написан
    Комментировать
  • Как заполнить квадратную матрицу 8x8 по указанной схеме?

    @Wundarshular
    У вас i и j меняются с 0 на 1 и обратно и с 7 на 8 и обратно соответственно. Элементы массива за пределами указываемых ими диапазонов остаются не инициализированными, поэтому там хранится "мусор". Как отметил SagePtr, вам следует пересмотреть условия, по которым вы перемещаете условный курсор по массиву.
    Ответ написан
    Комментировать
  • Работа с различными типами данных в си?

    @Wundarshular
    Обобщённо говоря, множество комплексных чисел включает в себя вещественные числа, а те, в свою очередь, включают в себя целые. Комплексное число - это число вида "a+bi", где а - действительная часть, выраженная вещественным числом, b - коэффициент мнимой части, выраженный вещественным числом, i = мнимая единица.
    Исходя из этого, можно попробовать использовать массив структур, где каждый элемент, это структура, выражающая собой комплексное число. У вещественных чисел поля b и i будут равны нулю, у целых, при вычислении, придётся игнорировать дробную часть.
    Ответ написан
    Комментировать
  • По какой книге можно хорошо СИ изучить?

    @Wundarshular
    King - C Programming. A Modern Approach - довольно подробно описаны основы и некоторые тонкости. Для стандартов C89 и C99.
    Ответ написан
    Комментировать