Деление чисел 15 на 50 в результате дает 0 - C (СИ)

  1. Подскажите пожалуйста, от чего может возникать такая странность?C1 2 float apple; apple = 15/50;В результате, apple = 0 Почему так? Объясните пожалуйста.


textual

Код:

apple = 15.0/50


Похожие ответы
  1. Здравствуйте! Данная "программа" должна обрабатывать числа, расстояние между которыми меньше 5, а также находить среди таких двух чисел самое большее чётное произведение. КОМПИЛИРУЕТСЯ ВСЁ НОРМАЛЬНО, НО ИСПОЛЬНЯТЬ ЭТА ГАДЮКА НИЧО НЕ ХОЧЕТ ИМЕННО В СЛУЧАЕ, КОГДА НА ВХОД ПОСУТПАЕТ БОЛЕЕ 5 ЧИСЕЛ. Т.е. цикл for(i=5;i int main(void) {   char j,c;      int i;      int n;      int a[5];      int x;      int max=-1;           scanf("%d",&n);     for (i=0;i<=4;i++){         scanf("%d",&a[i]);         }     for (i=5;imax )&&  (a[j-1]*a[c]%2 ==0))                     max=a[c]*a[j-1];                                             }                     }                 for (j=0;j<4;j++){             a[j]=a[j+1];         }         a[4]=x;         }      if (max==-1)          printf("-1");     else printf ("%d",max);     getchar();     getchar();     return 0; }Добавлено через 9 минут Тэкс... Счётчик тут должен робить... Тэк... Вывод массива когда у его индекса чото вычитаем тоже работает... Угу... Кажется я как-то выхожу из границ массива, но я в упор не могу разглядеть этого... Так, падажжи еманаДобавлено через 37 секунд лол, разглядеть он не может, у тебя две строки где идут пляски с массивамми, там же очевидно и ошибкаДобавлено через 3 минуты эхх, пойти спать или сожжрать таки хлеб с пащтетом? но тогда изжога будет от паштета с хлебом, я не хочу изжоги, антиацида нет с собой

  1. Решить уравнение ax2+bx+c=0 (a,b,c - заданные коэффициенты) в области действительных чисел (с использованием теор. Виета). Если вводить целые числа, программа считает верно ( для примера ввод 1 5 4) А если вводить -2 5 3, корни должны быть 3 и -0,5, а пишет, что корней нет. Помогите пожалуйста исправить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 #include "stdafx.h" #include #include #include int main(void) {     double  a, b, c, x1, x2;     int k;     setlocale(LC_ALL, "Russian");     printf("Программа ...\n");     printf("Введите значения a,b,c \n");     scanf("%lf", &a);     scanf("%lf", &b);     scanf("%lf", &c);     k = 0;     for (x1 = -10; x1 <= 10; x1++)     {         for (x2 = -10; x2 <= 10; x2++)         {             if ((x1 + x2) == -b / a && (x1*x2) == c / a)             {                         if (x1 == x2) printf("один корень=%.2lf\n", x1);             else             {                 printf("korni x1,  %.2lf \n", x1);                 printf("korni x2,  %.2lf \n", x2);             }             k = 1;             break;             }         }         if (k == 1)             break;     }     if (k == 0) printf("kornej net\n");     return 0; }

  1. Найти максимальный элемент и поменять его местами с последним элементом массива. В программе предусмотреть и реализовать: 1) генерацию элементов исходного массива с помощью датчика случайных чисел; 2) выполнение в соответствии с условием задачи; 3) порядок вывода: • исходный массив, • максимальный или минимальный элемент массива и его номер, • массив, полученный в результате выполнения задания.

  1. Написала программу, она компилируется, но не даёт результат (текстовые файлы я создала). Помогите, пожалуйста C++1 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 #include #include #include FILE *f, *f1; int main() {int x, q=0,  sum=0; double l; f=fopen("D:\\TextFile", "rt"); f1=fopen("D:\\rez", "wt"); if(f == NULL)         {           printf("Problems");           system("pause");           return 1;         } if (fscanf(f,"%d",&x)>0)   {sum+=x; q+=1; l=sum/q; }     fprintf(f1," %3lf",l); fclose(f); fclose(f1);   return 0; }

  1. Мне нужно сделать что-бы было так:Ввод: 3 0.237 1000 12.4Вывод: 0.24 1000.00 12.40 А у меня получается только вот так:Ввод: 3 0.237 1000 12.4Вывод: 0.24 1000.00 12.40C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include   int main() {     int z;     char space = ' ';     scanf("%d", &z);     double mas[z];     for (int i = 0; i < z; i++)     {         scanf("%lf", &mas[i]);     }     for (int i = 0; i < z; i++)     {         printf("%*c%.2lf\n", 7 , space,mas[i]);     }     return 0; }Добавлено через 9 минут ********* Мне нужно сделать что-бы было так:Ввод: 3 0.237 1000 12.4Вывод: .....0.24 1000.00 ...12.40 А у меня получается только вот так:Ввод: 3 0.237 1000 12.4Вывод: .......0.24 .......1000.00 .......12.40 (точки место пробелов а то текст к краям прилипает)

  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 #include #include #define LIM 1000   int main(void) {     int num, divisor, i, j, k = 0;;     _Bool prime = true;     int mass[LIM];       printf("Введите число\n");     scanf("%d", &num);       for(divisor = 1, k = 0; divisor <= 3; ++ divisor)     {         if(num > divisor)         {             mass[k] = divisor;             ++k;         }     }       for(divisor = 4; divisor <= num; ++divisor)     {   for(j = 2; j < divisor/2; ++j)         {             if(divisor % j == 0)             {                 prime = false;                 break;             }             else             {                 prime = true;             }         }                   if(prime == true)         {             mass[k] = divisor;             ++k;         }             }     for(i = 0; i < k; ++i)     {         printf("%d\n", mass[i]);     }   }

  1. Помогите, пожалуйста. Даны два целых неотрицательных числа N и M. N-битовое целое число должно удовлетворять следующим параметрам: 1. Не являться делителем числа M; 2. При смене только одного бита оно станет делителем M. Ведущие нули допустимы. Необходимо найти кол-во всех чисел, удовлетворяющих условие.

  1. Подскажите как действовать. Ошибка появляется при записи во 2ой массив отрицательные эл-ты из 1гоC++1 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 #include // подключение библиотек #include #include #include #include   #define BORDER_HIGH 100  // константы для рандома чисел #define BORDER_LOW -100     bool arrUnic(float *arr, int countValue, float value) // функция на проверку уникальности элементов {       for (int i = 0; i < countValue; i++)     {           if (arr[i] == value)             return false;     }     return true;   }   void main() {     setlocale(LC_ALL, "RUS");     float* arr; // первый массив     float* arr2 ; // второй массив, в который нужно записать отрицательные числа     int length; // кол-во эл-тов массива     int countValue = 0, otrel = 0;     short a;       printf("Введите кол-во эл-тов массива: ");     scanf_s("%d", &length);     arr = (float *)malloc(length * sizeof(float));         printf("Как заполнить массив? \n 1) с клавиатуры \n 2) рандомно \n 3)выйти \n ");     scanf_s("%hd", &a);       switch (a)     {     case 1:     {         printf("Заполните массив: \n");         for (int i = 0; i < length; i++)         {             float value;             scanf_s("%f", &value);             while (!arrUnic(arr, countValue, value))             {                 printf("Введите значение еще раз: ");                 scanf_s("%f", &value);             }             arr[i] = value;             countValue++;         }       }   break;       case 2: {         printf("Массив заполняется рандомно! \n");         srand((unsigned)(time(NULL)));           for (int i = 0; i < length; i++)         {             float value;             value = BORDER_LOW + (BORDER_HIGH - BORDER_LOW)*((float)rand() / RAND_MAX);             while (!arrUnic(arr, countValue, value))             {                 printf("Рандомим еще раз: ");                 value = BORDER_LOW + (BORDER_HIGH - BORDER_LOW)*((float)rand() / RAND_MAX);             }             arr[i] = value;             countValue++;           }       }; break;     case 3: exit(3); break;     default: break;     }       printf("Заполненный массив: \n");     for (int i = 0; i < length; i++)  // выводим массив первый, и одновременно подсчитываем кол-во отрицательных эл-тов, чтобы узнать, сколько памяти нужно выделить для 2го массива     {         if (arr[i] < 0)         {             otrel++;         }         printf("a[%d]=%.2f \n", i, arr[i]);     }       printf("\n\n \n");       arr2 = (float *)malloc(otrel * sizeof(float)); // выделение памяти для 2го массива           for (int i = 0; i < length; i++){ // ищем отрицательные эл-ты и записываем во 2ой массив ( тут как раз и непонятности  появляются )     if (arr[i] < 0)     arr2[i] = arr[i];   }                 printf("Кол-во отрицательных элеметов: %d \n", otrel);     printf("Массив В, в котором хранятся отрицательные элементы \n");       for (int y= 0; y< otrel;y++) // выводим 2ой массив из отрицательных чисел     {         printf("b[%d]=%.2f \n", y, arr2[y]);     }           delete arr;     delete arr2;       system("pause"); } На скриншоте видно, что записывается 1 эл-т, а остальные нет ( вместо них- мусор )

  1. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Есть 3 типа: bool znak; // Хранит знак если число в интервале ( -1 < n < 0 ) Т.к. если -0.1 преобразовать в long, то минус не сохранится. Для этого мы его сохраняем            // true минус        false плюс long a; // Целая часть unsigned short b; // Дробная часть И есть ещё 2 типа, которые нужно преобразовать: double result_one = 1.3; double result_two = -0.1; И вот c & e нужно разделить на 2 типа, как это сделать? // У меня вот есть пример, НО ... if ((-1 < result_one) && (result_one < 0)) znak = 1; // Прекрасно сохраняет знак a = (long)result_one; // ТУТ ПРОБЛЕМА! 1.3 округляет до 2 b = (unsigned short)(result_one - (double)(a)) * 10000; // По логике если целая часть нормально преобразует, то эта строчка сработает нормально ( НО ЭТО НЕ ТОЧНО ) // А с  -0.1  выводит просто  -0   А для вывода на экран использовать обратное преобразование: // оно работает нормально double _converter(bool znak, long a, unsigned shor b) {     double result = ((double)b / 10000) + (double)abs(a);     return znak ? (-1 * result) : (result); }

  1. Помогите решить проблему зацикливания программы. Заранее спасибо В задаче требуется разложить числа в промежутке от n1 до n2 на простые множители.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 int main() {  int n1, n2, div = 2;  scanf ("%d %d", &n1, &n2); while (n1<=n2)  {    printf("\n %d=1",n1);   while (n1 > 1)   {     while (n1 % div == 0)     {       printf("*%d",div);       n1 = n1 / div;     }     div++;   }   n1++;   div=2;   } }