Правильно ли составлено условие?
Код:
while ((p1 != x) ||(p2 != x))
{
n_p = n;
printf("Wwedite chislo ");
scanf("%d", &n);
if (n >= 0)
{
if (n_p >= 0)
p1++;
else
p1 = 1;
}
else
{
if (n_p < 0)
{
p2++;
s2 += n;
}
else
{
p2 = 1;
s2 = n;
}
}
}
{
n_p = n;
printf("Wwedite chislo ");
scanf("%d", &n);
if (n >= 0)
{
if (n_p >= 0)
p1++;
else
p1 = 1;
}
else
{
if (n_p < 0)
{
p2++;
s2 += n;
}
else
{
p2 = 1;
s2 = n;
}
}
}
- Опиши, что должно проверять условие, человеческими словами. Синтаксически оно верно. от CassandraDied, 06 июня 2012 года
а почему "while" , а не "for" ?
Код:
#include <stdio.h>
#include <conio.h>
int main()
{
int x, p1, p2, s2, n, n_p;
printf("Wwedite maksimalnoe chislo ");
scanf("%d", &x);
p1 = p2 = s2 = 0;
printf("Wwedite chislo ");
scanf("%d", &n);
while ((p1 != x) || (p2 != x))
{
n_p = n;
printf("Wwedite chislo ");
scanf("%d", &n);
if (n >= 0)
{
if (n_p >= 0)
p1++;
else
p1 = 1;
}
else
{
if (n_p < 0)
{
p2++;
s2 += n;
}
else
{
p2 = 1;
s2 = n;
}
}
}
printf("Summa poslednih otrizatel'nih chisel %d", s2);
getch();
return 0;
}
#include <conio.h>
int main()
{
int x, p1, p2, s2, n, n_p;
printf("Wwedite maksimalnoe chislo ");
scanf("%d", &x);
p1 = p2 = s2 = 0;
printf("Wwedite chislo ");
scanf("%d", &n);
while ((p1 != x) || (p2 != x))
{
n_p = n;
printf("Wwedite chislo ");
scanf("%d", &n);
if (n >= 0)
{
if (n_p >= 0)
p1++;
else
p1 = 1;
}
else
{
if (n_p < 0)
{
p2++;
s2 += n;
}
else
{
p2 = 1;
s2 = n;
}
}
}
printf("Summa poslednih otrizatel'nih chisel %d", s2);
getch();
return 0;
}
P.S.
n – число из последовательности
x – максимальное количество
подряд стоящих чисел
p1– количество подряд стоящих
положительных чисел
p2 – количество подряд стоящих
отрицательных чисел
s2 – сумма последних отрицательных чисел
n_p – предыдущее число последовательности
Очевидно, что ни p1, ни p2 не доходят до х. Это случится, если менять знаки между только что введённым числом и предыдущим введённым числом. То есть, если понял верно, по логике в таком случае должна начинаться новая последовательность(условно)? Попробуй ввести n+1 только положительных чисел или только отрицательных и цикл должен завершиться.
Код:
((p1 != x) || (p2 != x))
Хм, а мне нужно, чтобы цикл завершился когда либо p1 станет равным x, либо p2 станет равным x. Как это тогда сделать? Просто || -это же "или", так?
&& - логическое "и".
Дальше самостоятельно.