Определить участки постоянства и вывести их на экран - C (СИ)
Формулировка задачи:
Добрый день ! Суть задания такая , необходимо чтобы программа считывала с клавиатуры числа, после того как я ввожу -1 , цикл прерывался и она считала количество постоянств (0000,1111,2222222,33 и т.д.) и выводила их на экран.
С подсчетом проблему я решил, а вот с выводом получается какая то белеберда (
Глаз уже замылился , посмотрите в чем ошибка пожалуйста.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int x,x2,k=0,j=0,i=0;
const int u = 100;
char str[u];
printf("Vvedite chislo :");
scanf("%d",&x);
x2=-1;
for(i; x != -1; i++){
if(x==x2){
k++; /*считаем количество повторов если x==x2 */
str[i]=x2; /*записываем число в строку */
x2=x;
printf("Vvedite chislo :");
scanf("%d",&x);
continue;
}
else{
if(str[i-1]!='\n') /*если \n первый раз то записываем в строку \n */
str[i]='\n';
else
i--;
x2=x;
printf("Vvedite chislo :");
scanf("%d",&x);
}
if(k>0){
j++; /*если счетчик k>0 то плюсуем k+1 */
k=0;/*обнуляем k*/
}
}
if(k>0){
j++;
k=0;
}
str[i]='\0';/*записываем конец строки*/
printf("\n%s",str);
printf("\nUchastkov monotonnosti : %d\n",j);
return 0;
}Решение задачи: «Определить участки постоянства и вывести их на экран»
textual
Листинг программы
str[i]=x2; /*записываем число в строку */