#include<stdio.h>
#include<conio.h>
main()
{
clrscr();
int a[3],m=0,i;
for (i=1;i<4;i++)
{printf(" vvedite chislo");
scanf ("%i",&a);}
if (a[1]>0 && a[1]%2==0 && a[1]>a[2])
m=a[1]; else
if (a[2]>0 && a[2]%2==0 && a[1]<a[2])
m=a[2]; else
if (a[3]>0 && a[3]%2==0) m=a[3]; else
printf(" Chisla ne udovletvorayut usloviam \n");
printf(" max=%i",m);
getch();
}
(C) Есть решение через for,а надо через do{...}while(..);
Код:
Программа находить максимальное число среди положительных четных чисел вводимих с клавиатуры (вводить только три числа). Написал через for, а через do{...}while(..) не получается:confused: . Помогите, пожалуйста, написать через do{...}while(..) ин языке Си. Зарание благодарен.
[COLOR="Red"]Оформляй код по Правилам.Отредактировал.[/COLOR]модератор.
Код:
#include<stdio.h>
#include<conio.h>
int main()
{
clrscr();
const int count=3;
int a[count],m=0,i=0;
do
{
printf(" vvedite chislo");
scanf ("%i", a);
i++;
} while (i < count);
if (a[0]>0 && a[0]%2==0 && a[0]>a[1])
m=a[0];
else if (a[1]>0 && a[1]%2==0 && a[0]<a[1])
m=a[1];
else if (a[2]>0 && a[2]%2==0)
m=a[2];
else
printf(" Chisla ne udovletvorayut usloviam \n");
printf(" max=%i",m);
getch();
return 0;
}
#include<conio.h>
int main()
{
clrscr();
const int count=3;
int a[count],m=0,i=0;
do
{
printf(" vvedite chislo");
scanf ("%i", a);
i++;
} while (i < count);
if (a[0]>0 && a[0]%2==0 && a[0]>a[1])
m=a[0];
else if (a[1]>0 && a[1]%2==0 && a[0]<a[1])
m=a[1];
else if (a[2]>0 && a[2]%2==0)
m=a[2];
else
printf(" Chisla ne udovletvorayut usloviam \n");
printf(" max=%i",m);
getch();
return 0;
}
Я бы зделал так
Код:
#include<stdio.h>
#include<conio.h>
int main()
{
clrscr();
const int count=3;
int a,m=0,i=0;
char ok;
do
{
ok = 0;
do
{
printf(" vvedite chislo");
scanf ("%i",a);
if ((a > 0) && (a % 2 == 0)) {
if (a > m)
m = a;
ok = 1;
}
else
puts("Chislo ne sootvetstvuet ucloviuy");
} while (ok == 0);
i++;
} while (i < count);
printf(" max=%i",m);
getch();
return 0;
}
#include<conio.h>
int main()
{
clrscr();
const int count=3;
int a,m=0,i=0;
char ok;
do
{
ok = 0;
do
{
printf(" vvedite chislo");
scanf ("%i",a);
if ((a > 0) && (a % 2 == 0)) {
if (a > m)
m = a;
ok = 1;
}
else
puts("Chislo ne sootvetstvuet ucloviuy");
} while (ok == 0);
i++;
} while (i < count);
printf(" max=%i",m);
getch();
return 0;
}
P.S: Индексы в С/С++ начинаются с нуля
Код:
for(i=0;i<n;i++) { ......}
или
Код:
i=0;
while(i<n)
{
.......
i++;
}
while(i<n)
{
.......
i++;
}
или
Код:
i=0;
do {
....
i++
} while(i<n);
do {
....
i++
} while(i<n);
но в общем случае, в последнем варианте нужна дополнительная проверка, так как этот цикл выполнится один раз в любом случае.
З.Ы. а вобще лучше ввод, проверку на правильность данных и сам поиск максимума разделять на независимые блоки.
З.Ы2. Пока писал. меня оперендили )
Большое спасибо!