//Pascal //Для натуральных чисел var a, s, p:integer;
begin write('Введите число = '); readln(a); s := 0; p := 1; while (a<>0) do begin p := p * (a mod 10); s := s + (a mod 10); a := a div 10; end; writeln( 'Сумма цифр числа = ', s); writeln( 'Произведение цифр числа = ', p); end.
//Если число отрицательное var s, p, a, b, c: integer; f: boolean; begin write('Введите число = '); readln(a); if a < 0 then f := true; a := abs(a); b := a mod 10; a := a div 10; c := a mod 10; a := a div 10; if f = true then begin p := (-a) * b * c; s := -a + b + c; end else begin s := a + b + c; p := a * b * c; end; writeln('Сумма цифр числа = ', s); writeln('Произведение цифр числа = ', p); end.
Значение переменной i не задано, поэтому выведет что - то произвольное, Почему while (a<N) ? А если первая цифра слева в числе = 1? while (a<N) нужно заменить на while (0<N) Убрать строку a=N%10; перед while После строки min=10; добавить строку i=0;
после изменений будет примерно так:
#include<stdio.h> #include<conio.h>
main() { int N,a, min, i, imin; scanf("%d", &N); min=10; i=0; while (0<N) { i++; a=N%10; N=N/10; if (a<min) { min=a; imin=i; } } printf ("%d", imin); getch(); return 0; }
//Для натуральных чисел
var a, s, p:integer;
begin
write('Введите число = ');
readln(a);
s := 0;
p := 1;
while (a<>0) do
begin
p := p * (a mod 10);
s := s + (a mod 10);
a := a div 10;
end;
writeln( 'Сумма цифр числа = ', s);
writeln( 'Произведение цифр числа = ', p);
end.
//Если число отрицательное
var
s, p, a, b, c: integer;
f: boolean;
begin
write('Введите число = ');
readln(a);
if a < 0 then
f := true;
a := abs(a);
b := a mod 10;
a := a div 10;
c := a mod 10;
a := a div 10;
if f = true then
begin
p := (-a) * b * c;
s := -a + b + c;
end
else
begin
s := a + b + c;
p := a * b * c;
end;
writeln('Сумма цифр числа = ', s);
writeln('Произведение цифр числа = ', p);
end.
Почему while (a<N) ? А если первая цифра слева в числе = 1?
while (a<N) нужно заменить на while (0<N)
Убрать строку a=N%10; перед while
После строки min=10; добавить строку i=0;
после изменений будет примерно так:
#include<stdio.h>
#include<conio.h>
main() {
int N,a, min, i, imin;
scanf("%d", &N);
min=10; i=0;
while (0<N)
{ i++;
a=N%10;
N=N/10;
if (a<min)
{ min=a;
imin=i; }
}
printf ("%d", imin);
getch();
return 0;
}