Получить a в степени 21 за шесть операций - C (СИ)

  1. Дано вещественное число а. Пользуясь только операцией умножения, получить a21 за шесть операций. где ошибка?C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include "stdafx.h" #include <conio.h> #include <stdio.h> #include <math.h> #include <clocale>   void main() {  setlocale(LC_ALL,"Russian");  int a,a2,a4,a8,a12,a20,a21;  printf("Введите число a:");  scanf("%d",&a);  a2=a*a;  printf("1:a^2=%d\n",a^2);  a4=a^2*a^2;  printf("2:a^2*a^2=%d\n",a^4);  a8=a^4^a^4;  printf("3:a^4^a^4=%d\n",a^8);  a12=a^8*a^4;  printf("4:a^8*(a^4=%d\n",a^12);  a20=a^12*a^8;  printf("5:a^12*a^8=%d\n",a^20);  a21=a^20*a;  printf("6:a^20*a=%d\n",a^21); getch(); }Добавлено через 5 минут надо в С,а не в C++


textual

Код к задаче: «Получить a в степени 21 за шесть операций - C (СИ)»

#include <stdio.h>
#include <math.h>
#include <clocale>
 
void main()
{
 setlocale(LC_ALL,"Russian");
 double a,a2,a4,a8,a12,a20,a21;
 
 printf("Введите число a:");
 scanf("%lf",&a);
 a2=a*a;
    printf("1:a^2=%lf\n",a2);
 a4=a2*a2;
    printf("2:a^2*a^2=%lf\n",a4);
 a8=a4*a4;
    printf("3:a^4^a^4=%lf\n",a8);
 a12=a8*a4;
    printf("4:a^8*(a^4=%lf\n",a12);
 a20=a12*a8;
    printf("5:a^12*a^8=%lf\n",a20);
 a21=a20*a;
    printf("6:a^20*a=%lf\n",a21);
getch();
}

СДЕЛАЙТЕ РЕПОСТ

7   голосов, оценка 4.429 из 5



Похожие ответы
  1. В переменной "a" хочу хранить ссылки на адреса памяти значений val. Но выдает ошибки.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include #include #include #include   typedef struct _Key {     char key;     int *a; } Key;   typedef struct _Val {     char val[81]; } Val;   int main(void) {     const int N = 50;     int i, cnt, action;     char ch;     Key keys[N];     Val values[N];     Key key;     FILE *file = fopen("input2.txt", "r");       if (file == NULL)     {         printf("Ошибка при открытии файла\n");           return 0;     }       i = 0;       while (i < N && fscanf(file, "%s", &keys[i].key) == 1)     {         fscanf(file, "%c", &ch);         getRow(file, values[i].val, sizeof(values[i].val));         keys[i].a=&values[i].val;                   i++;     }       fclose(file);       cnt = i; }ошибкаC1 2 3 warning: assignment from incompatible pointer type [enabled by default]    keys[i].a=&(values[i].val);               ^

  1. Точная степень двойки Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае. Операцией возведения в степень пользоваться нельзя! РешениеJava1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public class Solution {     public static int recursion(double n) {         // Базовый случай         if (n == 1) {             return 1;         } // Базовый случай         else if (n > 1 && n < 2) {             return 0;         } // Шаг рекурсии / рекурсивное условие         else {             return recursion(n / 2);         }     }     public static void main(String[] args) {         double n = 64;         // вызов рекурсивной функции         if (recursion(n) == 1) {             System.out.println("Yes");         } else {             System.out.println("No");         }

  1. Описать рекурсивную функцию root(f, a, b, eps), которая методом деления отрезка пополам находит с точностью eps>0 корень уравнения f(x)=0 на отрезке [a,b]. Нужно три функции. Первая - ввод значений, вторая - подсчет весь, третья - вывод значений.

  1. Здравствуйте. Я только учусь и пользуюсь Visual Studio 2015. Почему-то у меня не получается работать в нем с переменными типа char. Вот пример с шифром Цезаря:C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include "stdafx.h"   int main() {     system("chcp 1251");     system("cls");     char a[100];     int i, n;       printf("Здравствуйте, введите ваше сообщение:\n");     scanf_s("%s", a);     printf("\nВведите количество знаков для переноса:\n");     scanf_s("%d", &n);       if (n > 26)         n = n % 26;       for (i = 0; a[i] != '\0'; i++)     {         if (a[i] > (122 - n))             a[i] = a[i] + n - 26;         else             a[i] = a[i] + n;     }     printf("Зашифрованный текст: %s", a);       _getch();     return 0; }После ввода текста вылетает ошибка и открывается файл stdio.h. Код я проверял несколько раз, пробовал даже с обычным вводом/выводом одного символа, ничего не работает. Буду благодарен за помощь.

  1. Выдаёт ошибки. Задача: Условия: даны натуральные числа n, A1, A2, … An Найти: минимальное число записанное в чётную позицию последовательности и максимальное​ число записанное в нечётную позицию последовательности. Есть такой код. При проверке выдает два больших странных числа (1962 и -30374), хотя ввожу числа 12, 13... Пользуюсь Турбо Си. Если нужен скриншот, то закину.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include void main() { double a; // vvedennie 4isla int n=0; // koli4estvo 4isel v posledovatelnosti int i; // s4et4ik posledovatelnosty int min; // sredi 4etnih 4isel int max; // sredi ne4etnih 4isel   printf("Vvedite koli4estvo 4isel:"); scanf("%d",&n);   printf("Vvedite svoi 4isla:"); scanf("%d",&a);   for (i=1;i<=n;i++)  {  if (i%2==0)   {   if (mina)   {   max=a;   }  scanf("%d",&a);  } printf("Minimal - %d, maximum - %d",min,max); getch(); }

  1. Нужно узнать сколько бит в числе, оно может быть любым:1-целое положительное(напр 3),2-целое отрицательное(-3),3-число положительное с дробной частью(3.14)4- число отрицательное с дробной частью Пробовала код реализовать школьным способом(деление на два+остаток с целой частью и умножение с дробной) Оказывается, double в бинарном виде записывается по другому...Например 10.5 в бинарном 1010.1=3 единички а вот в бинарном double это будет 0 10000000010 0101000000000000000000000000000000000000000000000000 - уже 4 единички... Обьясните пожалуйста, как реализовать запись числа по (IEEE754 Double precision 64-bit). Почитала про то, как представляются числа с плавающей точкой, но так и не поняла... формула ((-1)^s)*M*N^e,s — знак, N-основание, e — порядок, а M — мантисса... Ну и как мне по этой формуле записать число например 3.5? Или есть ли способ подсчитать число бит в числе?

  1. Как можно заменить оператор break в множественной структуре выбора switch? Я знаю только такой способ:C1 2 3 if( ) {             continue;        };Может есть еще другие варианты...

  1. Добрый день, именно в С не особо силён, поэтому есть дурацкий вопрос Есть текстовый файл в формате: value-type; value-type; value-type; value-type; Подскажите как при помощи fscanf, либо другой подобной функции получить структуру (состоящую из двух полей: value, type). Сейчас пишу так:C1 2 3 4 while (EOF != fscanf(pFile, "%s-%s;", sValue, sType)) {     printf("[%s][%s]\n", sValue, sType); }Но на выходе получаю:[1-test;][2-test2;] [3-test3;][2-test2;] Что в принципе логично. Подскажите пожалуйста как заставить программу считывать именно в том формате в котором мне нужно? Спасибо!Добавлено через 12 часов 43 минуты Неужели совсем нет идей?

  1. Дана строка. Определить, сколько раз в нее входит группа букв abc.

  1. Есть bstInsert, PKL и bstRemoveC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 int main(void) {     int i, maxBFS;     char cmd[255], arg;     BstNode *root = NULL;       do     {         printf("Введите команду (h - справка):\n");         scanf("%s", cmd);           if (cmd[0] == '+')         {             scanf(" %c", &arg);               if (arg >= 'A' && arg <= 'Z')             {                 bstInsert(&root, arg - 'A');                   printf("Узел %c вставлен\n", arg);             }             else                 printf("Ошибка. Введена недопустимая буква\n");         }         else if (cmd[0] == '-')         {             scanf(" %c", &arg);               if (arg >= 'A' && arg <= 'Z')             {                 if (bstRemove(&root, arg - 'A'))                     printf("Узел %c удален\n", arg);                 else                     printf("Узел %c не найден\n", arg);             }             else                 printf("Ошибка. Введена недопустимая буква\n");         }         else if (cmd[0] == 'p')         {             PKL(&root, 0);         }                 else if (cmd[0] == 't')         {printf("HI\n");}                 else if (cmd[0] == 'h')         {             printf("================================\n");             printf("Список команд:\n");             printf("+ CHAR - вставить узел CHAR (A, B, ..., Z) в двоичное дерево\n");             printf("- CHAR - удалить узел CHAR из двоичного дерева\n");             printf("p - распечатать двоичное дерево\n");             printf("t - выполнить задание над двоичным деревом\n");             printf("q - завершить программу\n");             printf("================================\n");         }         else if (cmd[0] != 'q')         {             printf("Неизвестная команда\n");         }     }     while (cmd[0] != 'q');       bstDestroy(&root);       return 0; } void PKL(BstNode **node, const int level) {     if (*node == NULL)     {         printf("Дерево пусто\n");           return;     }       if ((*node)->_right != NULL)         PKL(&(*node)->_right, level + 1);       printf("%*s%c\n", level * 2, "", (*node)->_key + 'A');       if ((*node)->_left != NULL)         PKL(&(*node)->_left, level + 1); }C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 BstNode *bstInsert(BstNode **node, const kLetters key) {     if (*node == NULL)     {         *node = (BstNode *)malloc(sizeof(BstNode));           (*node)->_key = key;         (*node)->_left = NULL;         (*node)->_right = NULL;           return *node;     }     else if ((*node)->_key == key)         return *node;     else if (key < (*node)->_key)         return bstInsert(&(*node)->_left, key);     else         return bstInsert(&(*node)->_right, key); }     int bstRemove(BstNode **node, const kLetters key) {     BstNode *repl = NULL, *parent = NULL, *tmp = *node;       while (tmp != NULL && tmp->_key != key)     {         parent = tmp;           if (key < tmp->_key)             tmp = tmp->_left;         else             tmp = tmp->_right;     }       if (tmp == NULL)         return 0;       if (tmp->_left != NULL && tmp->_right == NULL)     {         if (parent != NULL)         {             if (parent->_left == tmp)                 parent->_left = tmp->_left;             else                 parent->_right = tmp->_left;         }         else             *node = tmp->_left;           free(tmp);           tmp = NULL;     }     else if (tmp->_left == NULL && tmp->_right != NULL)     {         if (parent != NULL)         {             if (parent->_left == tmp)                 parent->_left = tmp->_right;             else                 parent->_right = tmp->_right;         }         else             *node = tmp->_right;           free(tmp);           tmp = NULL;     }     else if (tmp->_left != NULL && tmp->_right != NULL)     {         repl = tmp->_right;           if (repl->_left == NULL)             tmp->_right = repl->_right;         else         {             while (repl->_left != NULL)             {                 parent = repl;                 repl = repl->_left;             }               parent->_left = repl->_right;         }           tmp->_key = repl->_key;           free(repl);           repl = NULL;     }     else     {         if (parent != NULL)         {             if (parent->_left == tmp)                 parent->_left = NULL;             else                 parent->_right = NULL;         }         else             *node = NULL;           free(tmp);           tmp = NULL;     }       return 1; }   void bstDestroy(BstNode **node) {     if (*node == NULL)         return;       if ((*node)->_left != NULL)         bstDestroy(&(*node)->_left);         if ((*node)->_right != NULL)         bstDestroy(&(*node)->_right);       free(*node);       *node = NULL; }все это для C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 typedef enum _kLetters {     A = 0, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z } kLetters;   typedef struct _BstNode {     kLetters _key;     struct _BstNode *_left;     struct _BstNode *_right; } BstNode;   BstNode *bstInsert(BstNode **node, const kLetters key); int bstRemove(BstNode **node, const kLetters key); void bstDestroy(BstNode **node);А нужно тоже самое дляC1 typedef char _kLetters