Ошибка в программе "IntelliSense: несовместимые типы операндов" - C (СИ)
Формулировка задачи:
Здравствуйте! В моей программе возникла ошибка: "IntelliSense: несовместимые типы операндов ("char" и "char *")".
Вот сама программа:
Конкретно ошибка в этой строке:
И компилятор подчёркивает знак ">=" в этой строке.
Помогите, пожалуйста, устранить эту ошибку! Заранее спасибо!
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> int getrest(char *s, int k, int m) { char *cp = s + strlen(s) - 2; // char *cp=s; while (*cp >= s && (*cp == '\r' || *cp =='\n')) --cp; int rest = 0; int p = 1; int digit; while (cp >= s) { if (*cp >= '0' && *cp <= '9') digit = *cp - '0'; else if (*cp >= 'A' && *cp <= 'J') digit = *cp - 'A' + 10; else if (*cp >= 'a' && *cp <= 'j') digit = *cp - 'a' + 10; else { printf("Недопустимый символ [%c]!\n", *cp); return -1; } if(digit >= k) { /* цифра получилась больше системы счисления - не допустимо! */ printf("Недопустимый символ <%c>!\n", *cp); return -1; } rest = rest + p * digit % m; p = p * k % m; //printf("%d %d %d\n", digit, rest, p); --cp; } return rest; } int main () { setlocale(LC_ALL, "rus"); char str[101]; /* буфер для строки k-ичных цифр */ fflush(stdin); printf("Введите систему счисления (от 2 до 20): "); fgets(str, 101, stdin); int k = atoi(str); /* считываем систему счисления */ if (k < 2 || k > 20) { /* по условиям может быть от 2 до 20 */ printf("Неверная система счисления!"); return 1; } printf("Введите число m: "); fgets(str, 101, stdin); int m = atoi(str); printf("Введите число n в k-ичной системе счисления, не более 100 разрядов: "); fgets(str, 101, stdin); int rest = getrest(str, k, m); if (rest >= 0) printf("Остаток от деления на m равен %d\n", rest); _getch(); return 0; }
while (*cp >= s && (*cp == '\r' || *cp =='\n')) --cp;
Решение задачи: «Ошибка в программе "IntelliSense: несовместимые типы операндов"»
textual
Листинг программы
while (cp >= s && (*cp == '\r' || *cp =='\n')) --cp;
Объяснение кода листинга программы
В данном коде выполняется проход по строке, начиная с последнего символа, с целью найти последний символ новой строки или символ табуляции. При выполнении этого кода, возможны следующие шаги:
- Переменная
cp
инициализируется значением, равным последнему символу строкиs
. - Условие цикла while проверяет два условия:
cp >= s
иcp == '\r' || cp == '\n'
. - Если первое условие истинно, то происходит проверка второго условия. Если второе условие также истинно, то выполняется уменьшение значения переменной
cp
на единицу. - Если значение переменной
cp
равно нулю, то цикл while завершается. В результате выполнения данного кода, в переменнойcp
будет храниться значение, указывающее на последний символ новой строки или символ табуляции в строкеs
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д