Ошибка "Неправельные операнды для операции %" - C (СИ)
Формулировка задачи:
Здравствуйте! Написала код, но выдает ошибку о invalid operands to binary % (have 'double' and 'int') в строках, где есть операция нахождения остатка от деления. Не знаю, как исправить...
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> int main(int argc, char *argv[]) { setlocale(LC_ALL, "Rus"); FILE *file; char mas[]={'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', '.', ',', '-', '!', '?', ':', ';', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' ', '\0'}; int p=0, q=0, n=0, f=0, e=0, d=0, y1, y2, r, y, nod, i=0, j=0, h1=0, s=0, a, b; char t, w[50]; if ((file = fopen("podpis.txt", "r"))==NULL) { puts ("Cannot open file."); exit (1); } printf ("Please, enter two prime number:\n"); scanf ("%d", &p); scanf ("%d", &q); n=p*q; f=(p-1)*(q-1); printf ("Please, enter public exponent:\n"); scanf ("%d", &e); a=f; b=e; if(b==0) { nod=a; y=0; } else{ y2=0; y1=1; while (b>0) { q=a/b; r=a-q*b; y=y2-q*y1; a=b; b=r; y2=y1; y1=y; } nod=a; y=y2; } d = f+y; printf ("%d\n", d); printf ("The open key is {%d, %d}\n\n", e, n); while((t=fgets(w, 50, file))!=EOF) { w[i]=t; i++; } for (i=0; i<strlen(w); i++) for (j=0; j<strlen(mas); j++) if (w[i]==mas[j]) { printf ("w - %c, mas - %c\n", w[i], mas[j]); h1 = (h1+j)*(h1+j)%n; printf ("%d\n\n", h1); } s=pow(h1,d)%n; printf ("s = %d\n\n\n", s); return 0; }
Решение задачи: «Ошибка "Неправельные операнды для операции %"»
textual
Листинг программы
s=((long int)pow(h1,d))%n;
Объяснение кода листинга программы
- Переменная
s
используется для хранения результата вычисления. - Функция
pow
используется для возведения в степень. - Переменная
h1
представляет собой основание степени. - Переменная
d
представляет собой показатель степени. - Переменная
n
представляет собой модуль, который используется в операции остатка от деления.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д