Вводится последовательность ненулевых целых чисел. Признак конца ввода - 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));
}
насчёт ввода последовательности чисел, заканчивющихся 0 - у меня получается бесконечный ввод....
printf ("vvedite \n");
do
;
while ((n=getchar())!=0);
А вот так:
...?
do {
scanf("%d", &n);
} while(n);
...
Почему у меня после ввода элементов ничего не выводится?
#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 );
}
}
Условие окончания ввода - 0. И, насколько я понимаю, n стало равным 0. И в СИ 0 - это false.
Соответственно
while (n) // здесь сразу ложь и выскочили из цикла
{
if (n<0)
printf ("%c%d", ' ',n);
}