Перенос дробной части из вещественного массива в целый - C (СИ)
Формулировка задачи:
Здраствуйте уважаемые программисты Есть такая задачка.Дан массив из 10 вещественных случайных чисел. Числа принадлежат отрезку[-5.8;5.9].
Сформировать массив из 10 целых чисел, каждый элемент которого вычисляется по следующему правилу: число равно дробной части соответствующего элемента заданного массива и имеет три разряда. как заполнить массив случайными вещественными числами?
и эдак... фигня какая то получается- программа почему то выводит нолики. Подскажите пожалуйста как правильно нужно сделать?
Подскажите хотя бы примерно. просто я пробывал генератор с целыми числами работает, с вещественными уже нет как ее решить?
{srand(time(NULL));
for(i=0; i<M; i++)
{
mass[i]=rand()%100+1;
printf ("\nmass[%d]=%d\n", i, mass[i]);
}
почему не получается создать массив вещественных случайных чисел, я поробывыл поделить на /100. Все равно округляется до целых чисел. Как сделать правильно?
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include <stdlib.h>
main()
{
srand(time(NULL));
int mass[10];
int i;
for(i=0; i<10; i++)
{mass[i]=rand()%58+1/100;
printf("%d\n",mass[i] );
}
getch();}
я уже пробывал и так
main()
{
srand(time(NULL));
int mass[10];
int i;
for(i=0; i<10; i++)
{mass[i]=rand()%58+1/100;
printf("%d\n",float(mass[i]));}
getch();}Решение задачи: «Перенос дробной части из вещественного массива в целый»
textual
Листинг программы
#include<stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
main()
{
srand(time(NULL));
double mass[10];
int mas[10];
int i;
for(i=0; i<10; i++)
{mass[i]=((double)(rand()%(11701)-5800))/1000.;
printf("%.3lf\n",mass[i]);}
printf("Tri razryda drobnoi chasti:\n");
for(i=0; i<10; i++)
{mas[i]=(int)(mass[i]*1000.)-((int)mass[i])*1000;
printf(" %d\n", mas[i]);}
getch();}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем функцию main()
- Инициализируем генератор случайных чисел
- Создаем массив из 10 элементов типа double и int
- Задаем цикл от 0 до 10 для заполнения массива double и вывода его элементов на экран
- Используем функцию rand() для получения случайного числа в диапазоне от 5800 до 11700
- Полученное случайное число приводим к типу double и делим на 1000 для получения десятичной части числа
- Выводим полученное число на экран
- Задаем цикл от 0 до 10 для переноса дробной части из массива double в массив int
- Приводим элемент массива double к типу int, умножаем его на 1000 и вычитаем из него произведение первого элемента массива int на 1000
- Выводим полученное число на экран
- Ждем нажатия клавиши для выхода из программы