Я работал над этой программой и попал в контрольно-пропускной пункт.Я сделал все, но одна деталь не работает сразу после компиляции.
Вы должны написать программу, которая читает символы с клавиатуры, используя функцию getch ().Все буквы в нижнем регистре будут преобразованы в верхний регистр и выведены на дисплей с помощью функции putchar ().Все заглавные буквы будут напечатаны с использованием putchar ().Все отдельные цифры будут собраны, а сумма будет напечатана в конце программы с использованием printf ().Вы напишете свою собственную функцию, которая будет возвращать верхний регистр буквы, не будете использовать функции преобразования библиотеки C, а вторая функция, которая получает текущую сумму, используя текущую цифру символа, не будет использовать функции преобразования библиотеки C.Функция преобразования цифр преобразует символьную цифру в десятичное значение и накапливает цифру в сумму, возвращающую новую сумму.Только буквы будут распечатаны больше ничего.Программа будет продолжаться до тех пор, пока возврат не будет получен, и в это время сумма цифр будет напечатана на следующей строке.Что было введено: a9 wF23 '; / 4i То, что на самом деле показывает строка: aAwWFiI Сумма цифр: 18
Ниже я опубликовал то, над чем уже работал.Porgram делает все, кроме той части, где необходимо суммировать целые числа (которые изначально были символами, но были преобразованы).Это дает мне очень большое число, намного большее, чем сумма введенных цифр.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#define ctrlz 26
char cvttoupper(char);
int cvtdigit(int, char);
int main ()
{
int sum, d;
char c, cupper;
sum = 0;
do
{
c = getch();
if (c>='A' && c<='Z' || c>='a' && c<='z' )
{
putch(c);
if(c>='a' && c<='z')
{
cupper = cvttoupper(c);
putch(cvttoupper(c));
}
}
if (c>='0' && c<='9')
{
d=c&0x0F;
sum = cvtdigit(sum,c);
}
} while (c != ctrlz);
printf("\nThe sum of the digits is: %d\n", sum);
system ("PAUSE");
return 0;
}
char cvttoupper(char c)
{
char cupper;
cupper= c & 0x5F;
return (cupper);
}
int cvtdigit(int d, char c)
{
int sum;
sum=sum+d;
return (sum);
}
Буду признателен за любые отзывы о том, как заставить суммирующую часть работать правильно.Я подозреваю, что это способ, которым аргументы перечислены с каждой функцией, которая не является правильной.(Я должен был создать функции сам, не мог использовать функции библиотеки C).
Спасибо.