Помощь - Поиск - Пользователи - Календарь
Полная версия: Последовательность чисел
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
18192123
Вводится последовательность ненулевых целых чисел. Признак конца ввода - 0. Напечатать сначала все отрицательные, а затем все положительные числа заданной последовательности.

У меня, чтобы концом ввода сделать 0, числа записываются в строку. Но правильно ли я ищу отрицательные числа.....


#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <conio.h>
char *otr_pol(char *str)
{
char str1[20];
int i, j;
for (i = 0, j = 0;i < strlen(str); i++)
if (str[i] < '0')
str1[j++] = str[i];

for (i = 0; i < strlen(str); i++)
if (str[i] > '0')
str1[j++] = str[i];

return str1;

}


void main()
{
char str[20]; int i = -1;
printf ("vvedite stroky\n");
do
i++;
while ((str[i] = getchar())!='0');

printf("%s",otr_pol(str));


}


Ozzя
Цитата
меня, чтобы концом ввода сделать 0, числа записываются в строку.

А просто числа нельзя вводить? blink.gif
18192123
Цитата(Ozzя @ 6.06.2007 15:39) *

А просто числа нельзя вводить? blink.gif

rolleyes.gif эээ....кажется я стормозила....спасибо
18192123
насчёт ввода последовательности чисел, заканчивющихся 0 - у меня получается бесконечный ввод....


printf ("vvedite \n");
do
;
while ((n=getchar())!=0);

volvo
А вот так:
...
do {

scanf("%d", &n);

} while(n);
...
?
18192123
Почему у меня после ввода элементов ничего не выводится?


#include <stdio.h>
#include <conio.h>
void main()
{
clrscr();
int n;
printf ("vvedite \n");
do {
scanf("%d", &n);
}
while (n);

while (n)
{
if (n<0)
printf ("%c%d", ' ',n);
}

while (n)
{
if (n > 0)
printf("%c%d",' ', n );
}


}

Ozzя
Условие окончания ввода - 0. И, насколько я понимаю, n стало равным 0. И в СИ 0 - это false.
Соответственно
 while (n) // здесь сразу ложь  и выскочили из цикла
{
if (n<0)
printf ("%c%d", ' ',n);
}

volvo
Цитата
Почему у меня после ввода элементов ничего не выводится?
А ты что, что-то где-то сохраняла, чтобы потом выводить? Максимум, что тебе известно - это "последнее число = 0", так для этого цикл ввода вообще не нужен, сразу печатай ноль, и завершай программу.

Задача твоя в чем? Сделать ввод последовательности в массив и его обрабатывать, или все-же работать с вводимыми элементами "на лету"?
18192123
Цитата(volvo @ 7.06.2007 10:18) *

Задача твоя в чем? Сделать ввод последовательности в массив и его обрабатывать, или все-же работать с вводимыми элементами "на лету"?

не...в массив записывать не нужно...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.