Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Последовательность чисел

Автор: 18192123 6.06.2007 18:32

Вводится последовательность ненулевых целых чисел. Признак конца ввода - 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я 6.06.2007 18:39

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

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

Автор: 18192123 6.06.2007 18:52

Цитата(Ozzя @ 6.06.2007 15:39) *

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

rolleyes.gif эээ....кажется я стормозила....спасибо

Автор: 18192123 6.06.2007 19:34

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


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


Автор: volvo 6.06.2007 19:41

А вот так:

...
do {

scanf("%d", &n);

} while(n);
...
?

Автор: 18192123 7.06.2007 0:26

Почему у меня после ввода элементов ничего не выводится?


#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я 7.06.2007 12:57

Условие окончания ввода - 0. И, насколько я понимаю, n стало равным 0. И в СИ 0 - это false.
Соответственно

 while (n) // здесь сразу ложь  и выскочили из цикла
{
if (n<0)
printf ("%c%d", ' ',n);
}


Автор: volvo 7.06.2007 13:18

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

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

Автор: 18192123 7.06.2007 22:23

Цитата(volvo @ 7.06.2007 10:18) *

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

не...в массив записывать не нужно...