Ошибка "Too few arguments to function" - C (СИ)
Формулировка задачи:
Дана последовательность из n натуральных чисел.
Для каждого числа исходной последовательности заменить каждую цифру в записи ее дополнением до девяти и подсчитать количество цифр в записи числа.
Сформировать новую последовательность, поместив в неё для каждого исходного числа два значения-преобразованное число и количество цифр в записи числа. Упорядочить новую последовательность по-парно по возрастанию чисел. Вывести исходную и полученную последовательность на экран.
В программе использовать, функцию которая заменяет каждую цифру в записи числа ее дополнением до девяти и возвращает количество цифр в записи числа.
Я написал код выдаёт ошибку: Too few arguments to function. Незнаю как исправить. Код ещё не совсем доработанный.
#include<locale.h>
#include<stdio.h>
//int Vivod(int u[]);
int Obrabotka(int x[],int y[], int z);
int main(){
int a[10],b[10];
int n,i;
setlocale( LC_ALL, ".1251" );
printf("Введите количество чисел массива\n");
scanf("%d",&n);
printf("Введите последовательность из %d натуральных чисел\n",n);
for (i=0;i<n;i++){
scanf("%d",&a[i]);
}
Obrabotka(a);
//Vivod(a);
return 0;
}
int Obrabotka(int x[]){
int i,m,l,p,k;
p=0;
k=0;
m=1;
for(i=0; i<10; i++)
{
while(l=x[i]%10!=0){
p+=m*(9-l);
m*=10;
x[i]/=10;
k=k+1;
}
x[i]=p;
return k;
}
}
//int Vivod(int u[],int z,int y){
//int h;
//z=10;
//for(h=o;h<z;h++)
//printf ("u[%d]=%d",h,u[h]);
//return h;
//}Решение задачи: «Ошибка "Too few arguments to function"»
textual
Листинг программы
#include<locale.h>
#include<stdio.h>
int Obrabotka(int x[],int N);
int main(){
int a[10],b[10];
int n,i;
setlocale( LC_ALL, ".1251" );
printf("Введите количество чисел массива\n");
scanf("%d",&n);
printf("Введите последовательность из %d натуральных чисел\n",n);
for (i=0;i<n;i++){
scanf("%d",&a[i]);
}
Obrabotka(a,n);
printf("Массив:\n");
for (i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
int Obrabotka(int x[],int N){
int s,m,l,p,k;
for(s=0; s<N; s++)
{ p=0;
k=0;
m=1;
for(;x[s];x[s]/=10){
if((l=(x[s]%10))==0||(l=(x[s]%10))!=0){
p=p+(m*(9-l));
m=m*10;
k=k+1;}
}
x[s]=p;
}
return k;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
и . - Определяем функцию с именем Obrabotka, которая принимает два аргумента типа int (x[] и N).
- В функции main() объявляем две массивы a[10] и b[10], а также переменные n и i типа int.
- Устанавливаем локальную настройку на русский язык с помощью функции setlocale().
- Выводим сообщение с просьбой ввести количество чисел в массиве и считываем это количество в переменную n с помощью функции scanf().
- Выводим сообщение с просьбой ввести последовательность из n натуральных чисел и считываем эти числа в массив a с помощью функции scanf().
- Вызываем функцию Obrabotka(a,n) и передаем ей в качестве аргументов массив a и его размер n.
- Выводим содержимое массива a с помощью цикла for и функции printf().
- В функции Obrabotka() объявляем переменные s, m, l, p, k типа int.
- В цикле for перебираем все элементы массива x[].
- Внутри цикла определяем переменную p=0 и инициализируем переменные m=1 и k=0.
- Начинаем цикл while(x[s]), который выполняется до тех пор, пока x[s] не станет равным нулю.
- Внутри цикла while определяем переменную l=(x[s]%10) и проверяем условие (l==0||l!=0).
- Если условие выполняется, то мы добавляем к переменной p значение m*(9-l) и умножаем m на 10.
- После каждой итерации цикла while увеличиваем значение переменной k на 1.
- После окончания цикла while присваиваем значение переменной x[s] значение переменной p.
- По завершении цикла for возвращаем значение переменной k.
- В функции main() возвращаем 0, что означает успешный конец работы программы.
- Запускаем программу.
- Вводим последовательность из 5 натуральных чисел: 12345 и нажимаем Enter.
- Программа выводит на экран массив a: 1 2 3 4 5.