Задача с кодом (перестал работать) - C (СИ)
Формулировка задачи:
Написать программу, обрабатывающую введенный пользователем текст, состоящий из слов, записанных через пробелы. Длина текста не больше 255 символов. В тексте могут быть использованы любые симво-лы. Словом считать последовательность символов, не содержащую про-бел. Необходимо введенный текст вывести на экран до и после его пре-образования, выполнив все задания, указанные в индивидуальном зада-нии. Индивидуальное задание выбирается в соответствии с номером ва-рианта из нижеприведённого списка.
Само задание:25. Напечатать в алфавитном порядке все гласные буквы, которые входят в каждое нечетное слово и не входят в хотя бы одно четное сло-во. Подсчитать количество слов между первым и последним цифровым словом.
Выполнил первый пункт с гласными, всё отлично работало, написал ниже подсчет слов между цифровыми словами перестало печатать гласные. Подсчет слов работает.Есть идеи?#include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int func(char mas[],char sumb) { int n; for (n=0; n<strlen(mas); n++) { if (mas[n]==sumb) return 1; } return 0; } int main(int argc, char *argv[]) { char array[254]; char numb[]= {"1234567890"}; int j,count,n,e=0,y=0,u=0,i=0,o=0,a=0,bgn=-1,fnl=0; int e1=0,u1=0,i1=0,o1=0,a1=0,y1=0; /*lokal const*/ count=1; printf ("Vvedite text ne bolshe 255 simbolov\n"); gets(array); array[strlen(array)]=' '; for (j=0; j<strlen(array); j++) { if(array[j]==' ') { if (a1!=0) a++; else { if (count%2==1) a=-255; } if (e1!=0) e++; else { if (count%2==1) e=-255; } if (y1!=0) y++; else { if (count%2==1) y=-255; } if (u1!=0) u++; else { if (count%2==1) u=-255; } if (i1!=0) i++; else { if (count%2==1) i=-255; } if (o1!=0) o++; else { if (count%2==1) o=-255; } e1=0; u1=0; i1=0; o1=0; a1=0; y1=0; count++; } else { if (count%2==1) { switch (array[j]) { case 'a': a1++; break; case 'e': e1++; break; case 'y': y1++; break; case 'u': u1++; break; case 'i': i1++; break; case 'o': o1++; break; } } } } if ((a>0)&&(count/2-a>0)) printf("a"); if ((e>0)&&(count/2-e>0)) printf("e"); if ((i>0)&&(count/2-i>0)) printf("i"); if ((o>0)&&(count/2-o>0)) printf("o"); if ((u>0)&&(count/2-u>0)) printf("u"); if ((y>0)&&(count/2-y>0)) printf("y"); /* mama, eto 2 punkt pomogi*/ a=1; count=1; for (j=0; j<strlen(array); j++) { if(array[j]!=' ') { a=a*func(numb,array[j]); } else { if (a>0) { if(bgn==-1) { bgn=count; } fnl=count; } count++; } } if (fnl-bgn==0) printf ("%i",fnl-bgn); else printf("%i",fnl-bgn-1); return 0; }
Решение задачи: «Задача с кодом (перестал работать)»
array[strlen(array)]=' '; for (j=0; j<strlen(array); j++) {
Объяснение кода листинга программы
- В данном коде имеется массив (или строка) с названием
array
. - В начале кода в массиве
array
присутствует некоторая информация. - Затем происходит проверка длины массива
array
с помощью функцииstrlen()
. - После этого, в самом массиве
array
добавляется символ пробела. - Далее, с помощью цикла
for
происходит обход каждого элемента массиваarray
. - Внутри цикла, для каждого элемента массива выполняется некоторое действие или операция.
- Номер элемента массива, который обрабатывается в данный момент, сохраняется в переменной
j
. - Цикл продолжается до тех пор, пока не будет выполнена проверка условия
j<strlen(array)
, то есть пока не будут обработаны все элементы массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д