Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с задачей по программированию срочно.

Bibisiyna Профи (721), открыт 10 часов назад
Решить задачи на языке Си: 1) Написать и протестировать аналог функции STRCSPN( ). 2) Написать и протестировать функцию, которая по заданному натуральному числу определяет количество цифр в нем и сумму цифр на нечетных местах.
Преподу не понравилось мое решение, он сказал нужно решение с функцией. В программирование не шарю, пожалуйста, решите.
Мое решение на №2, которое не понравилось преподу:
#include <stdio.h>


int main()
{
int n;
printf("n = ");
scanf_s("%d", &n);

if (n <= 0)
{
printf("error\n");
return 0;
}

int count = 0; // счетчик количества цифр
int sum = 0; // сумма нечетных разрядов
int n1 = n; // копия числа, чтобы не повредить его

while (n1 != 0)
{
n1 /= 10; // убираем последний разряд (делим на 10)
count++; // увеличиваем счетчик
}


n1 = n;
// самый младший разряд имеет нечетный номер тогда,
// когда количество цифр нечетное
// поэтому, если цифр четное количетво
// уберем последний разряд, чтобы там теперь стояло число с нечетным номеров

if (count % 2 == 0)
n1 /= 10;

while (n1 != 0)
{
// мы сделали так, что последний разряд
// гарантированно имеет нечетный номер
// прибавим его к sum

sum += n1 % 10;

// уберем последние 2 разряда
// чтобы не нарушить расположение нечетных цифр
n1 /= 100;
}

printf("digits = %d\n", count);
printf("sum = %d\n", sum);

}
1 ответ
Derpy 2.0 Мастер (1880) 10 часов назад
#include <iostream>
#include <cmath>
using namespace std;

int main() {

int num1, num2, i, num, digit, sum, count;

cout << "Enter first number: ";
cin >> num1;

cout << "Enter second number: ";
cin >> num2;

// swap if num1 > num2
if (num1 > num2) {
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;
}

cout << "Armstrong numbers between " << num1 << " and " << num2 << " are: " << endl;

// print Armstrong numbers from num1 to num2
for(i = num1; i <= num2; i++) {

// count gives the number of digits in i
count = 0;

// store value of i in num
num = i;

// count the number of digits in num and i
while(num > 0) {
++count;
num /= 10;
}

// initialize sum to 0
sum = 0;

// store i in num again
num = i;

// get sum of power of all digits of i
while(num > 0) {
digit = num % 10;
sum = sum + pow(digit, count);
num /= 10;
}

// if sum is equal to i, then it is Armstrong
if(sum == i) {
cout << i << ", ";
}
}

return 0;
}
Похожие вопросы