Найти в массиве трехзначные числа, сумма которых равна k - C (СИ)
Формулировка задачи:
Привет. Программа компилируется, но не работает предполагаю, что возможно массив также генерируется не так, как должен.
Задается динамический массив из N элементов и заполняется случайными числами. Отсортировать и найти максимальное трехзначное число, сумма цифр которого равна введенному числу k. Числа в массиве от 0 до 100000.
#include <stdio.h> #include <stdlib.h> #include <malloc.h> //Функция по суммированию чисел int SumDigits ( int L ) { int d, sum = 0; while ( L != 0 ) { d = L % 10; sum = sum + d; L = L / 10; } return sum; } int main() { float *mass, tmp; float k, s, max, res=0; int i, j, N; printf("Zadayte chislo k\n"); scanf("%lg",&k); printf("Zadayte kolichestvo elementov massiva\n"); scanf("%d", &N); mass = (float*)malloc(N*sizeof(float)); //резервируем память под массив for (i = 0; i< N; i++) { mass [i] = rand ()%100001; } //заполняем массив случайными числами от 0 до 100 000 //<-сортировка for(i=0;i<N;i++) { for(j=i;j<N;j++) { if(mass[i]>mass[j]) { tmp=mass[i]; mass[i]=mass[j]; mass[j]=tmp; } } } for(i=0;i<N;i++) { if((mass[i]>=100 || mass[i]<=999) && SumDigits(mass[i])==k) { res++; // //res - переменная, в которой запоминаем было ли вообще число, подходящее под условие max=mass[i]; // //запоминаем последнее число } } printf("Your result is %d", max); printf("Vsego ih bilo %d", res); getch(); free(mass); return 0; }
Решение задачи: «Найти в массиве трехзначные числа, сумма которых равна k»
textual
Листинг программы
unsigned long vb6_rand() { static unsigned long r = time(NULL) & 16777215; r *= 1140671485; r += 12820163; r &= 16777215; return r; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д