Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

(C) Есть решение через for,а надо через do{...}while(..);

29K
26 ноября 2007 года
Formula
9 / / 06.11.2007
Код:
#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();
}

Программа находить максимальное число среди положительных четных чисел вводимих с клавиатуры (вводить только три числа). Написал через for, а через do{...}while(..) не получается:confused: . Помогите, пожалуйста, написать через do{...}while(..) ин языке Си. Зарание благодарен.
[COLOR="Red"]Оформляй код по Правилам.Отредактировал.[/COLOR]модератор.
1.9K
26 ноября 2007 года
max_dark
256 / / 11.11.2005
Твой код переделанный под do {} while ();
Код:
#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<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;
}

P.S: Индексы в С/С++ начинаются с нуля
274
26 ноября 2007 года
Lone Wolf
1.3K / / 26.11.2006
В чем проблемма собственно состоит? не можеш for заменитиь другим циклом?
 
Код:
for(i=0;i<n;i++) { ......}

или
 
Код:
i=0;
while(i<n)
{
.......
i++;
}

или
 
Код:
i=0;

do {
....
i++
} while(i<n);

но в общем случае, в последнем варианте нужна дополнительная проверка, так как этот цикл выполнится один раз в любом случае.
З.Ы. а вобще лучше ввод, проверку на правильность данных и сам поиск максимума разделять на независимые блоки.

З.Ы2. Пока писал. меня оперендили )
29K
01 декабря 2007 года
Formula
9 / / 06.11.2007
Большое спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог