@fewgesto

Почему не правильно выводит значения d?

#include <stdio.h>
#pragma warning(disable : 4996)
int main() {
	unsigned char a[81], perm[256], g[81], d = 0, n = 0;
	for (int f = 0; f < 81; f++) {
		scanf("%[^\n]d", &a);
	}
	int f = 0;
	while (a[f] != '\0') {
		n++; f++;
	}
	for (int b = 0; b < 256; b++) {
		perm[b] = b;
		for (int c = 0; c < n; c++) {
			if (a[c] == perm[b]) {
				g[c] = perm[b];
			}
		}
	}
	for (int c = 0; c < n; c++) {
		if (g[c] == g[c + 1]) {
			d++;
		}
		else d = 1;
		//printf(" %d ", g[c]);
		printf(" %c=%d\n ", g[c], d);
	}

}
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 4
GavriKos
@GavriKos
Вы серьезно предлагаете понять что идет не так в алгоритме, у которого нет ни входных данных, ни описания? Да еще и с нечитаемым кодом?
Ответ написан
CityCat4
@CityCat4 Куратор тега C
//COPY01 EXEC PGM=IEBGENER
Ни единого комментария.

Кому будет интересно разбираться в этой каше? Отладчик в зубы - и по шагам трейсить программу, отслеживая счетчики.
Ответ написан
Комментировать
Видимо, надо так
for (int c = 0; c < n; c++) {
    if (g[c] == g[c + 1]) {
      d++;
      continue;
    }
    else d = 1;
    //printf(" %d ", g[c]);
    printf(" %c=%d\n ", g[c], d);
  }
Ответ написан
Комментировать
%d это int, а передаете unsigned char.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы