Как мне заставить работать мои последние 3 цикла for?
Проблема в том, что последние три цикла for моей программы не запускаются. Предполагается, что программа подсчитывает появление символов на входе, отображает количество раз, когда эти символы встречаются, и символы, которые встречаются указанное количество раз
#include<stdio.h> #include<ctype.h> int main(void){ char str[50000]; int x; int lowerCase; int upperCase; int digit; int specialCharacter; int total; int max = 0; printf("Enter a string and press Control-D when done: \n "); scanf(" %c", str); x = lowerCase = upperCase = digit = specialCharacter = total =0; for(;str[x]!='\0';x++){ while ((str[x]= fgetc(stdin)) != EOF){ if(str[x] >= 'A' && str[x] <='Z') upperCase++; else if(str[x] >= 'a' && str[x] <='z') lowerCase++; else if(str[x] >= '0' && str[x] <='9') digit++; else if(str[x] == '\n' || str[x] == '\t' || str[x] == ' '){} else specialCharacter++; } } total = lowerCase + upperCase + digit + specialCharacter; printf("\n%dcharacters\n",total); printf("lowercase= %d , uppercase=%d , digit=%d , special=%d \n", lowerCase,upperCase,digit,specialCharacter ); for(int a=0; a<128; a++){ if(str[a]>max) max=str[a]; } for(int a=max; a>=0; a--){ for(int b=0; b<128; b++){ if(str[b]==a){ printf("\n\nCharacters occuring %d times: ", str[b]); for(int c=33; c<127; c++){ if(str[c]==a){ printf("%c",c); } } printf("\n"); break; } } } } <pre><pre lang="c#">
Что я уже пробовал:
Я пытался изменить свои формулы, но у меня ничего не получилось, я знаю, что циклы работают, но они не показывают весь вывод.
Это мой вывод, который я получаю сейчас:
Введите строку и нажмите Control-D, Когда закончите:
привет
4характеристики
нижний регистр= 4, верхний регистр=0, цифра=0, специальный=0
Символы, встречающиеся 0 раз: ! " #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ [\]^_ ' abcdefghijklmnopqrstuvwxyz { / }~
он должен вывести к этому:
Введите строку и нажмите Control-D, Когда закончите:
привет
4характеристики
нижний регистр= 4, верхний регистр=0, цифра=0, специальный=0
Символы, встречающиеся 2 раза: l
Символы, встречающиеся 1 раз: h, e, o
Символы, встречающиеся 0 раз: ! " #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdfgijkmnpqrstuvwxyz{|}~
Graeme_Grant
Что такое 3-й цикл, требующий, чтобы сделать его циклом? Вы уверены, что требования выполнены?
Знаете ли вы, как использовать отладчик? Знаете ли вы, как устанавливать точки останова и оценивать значения во время работы приложения?
Patrice T
Не все могут или хотят запускать ваш код.
Добавление образца ввода с фактическим выходом и ожидаемым выходом может помочь нам понять, что не так.
Member 13020549
Это мой вывод, который я получаю сейчас:
Введите строку и нажмите Control-D, Когда закончите:
привет
4характеристики
нижний регистр= 4, верхний регистр=0, цифра=0, специальный=0
Символы, встречающиеся 0 раз: ! " #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ [\]^_ ' abcdefghijklmnopqrstuvwxyz { / }~
Patrice T
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.
Member 13020549
я обновил это и прошу прощения за свою медлительность я новичок в программировании и использовании этого сайта
Patrice T
без проблем.
Вы отвечаете, он уже огромен по сравнению с некоторыми другими запросчиками.
Member 13020549
он должен вывести к этому:
Введите строку и нажмите Control-D, Когда закончите:
привет
4характеристики
нижний регистр= 4, верхний регистр=0, цифра=0, специальный=0
Символы, встречающиеся 2 раза: l
Символы, встречающиеся 1 раз: h, e, o
Символы, встречающиеся 0 раз: ! " #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdfgijkmnpqrstuvwxyz{|}~
Graeme_Grant
Установка точек останова, оценка локальных объектов и переступание через код покажут вам, что именно происходит. Это называется "отладка".
sourcebewithyou
Хмм. Это ведь с, верно ?
Member 13020549
да это с
Graeme_Grant
Просто исправил вашу маркировку вопроса с C# на C.