Форум программистов, компьютерный форум CyberForum.ru

Ноли вместо значений и нерабочий рандом, запутался с типами данных - C++

Восстановить пароль Регистрация
 
Enzzio
 Аватар для Enzzio
6 / 8 / 0
Регистрация: 29.05.2010
Сообщений: 265
01.11.2011, 05:19     Ноли вместо значений и нерабочий рандом, запутался с типами данных #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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <cstdlib>
#include <ctime>
 
int main()
{   
        FILE *in;//ГґГ*éë èñõîäГ*ûõ äïГ*Г*ûõ
        FILE *out;// ГґГ*éë Г*Г* Г§Г*ГЇГЁГ±Гј
        FILE *ele;//Г§Г*ГЇГЁГ±Гј ГЇГ*Г°Г*ìåòðîâ ýëåìåГ*òîâ
 
        FILE *tinput;//ïðîâåðêГ* ñ÷èòûâГ*Г*ГЁГї èñõîäГ*ûõ Г¤Г*Г*Г*ûõ
        
        double f; //F - ГЅГІГ*ëîГ*
        //Г¬Г*Г±Г±ГЁГўГ»
        int i, j, x[i], x1[5], x2[5];
        
        float p1=0.1;//ïðîöåГ*ГІ îòêëîГ*ГҐГ*ГЁГї ГЁ åìêîñòü
        float Sm, Sd, Me, De;//Г¬Г*Г±Г±ГЁГў ГЁГ*òåðâГ*ëîâ
        float xr0[1000], xr1[1000], xr2[1000], xr3[1000], c[i], e[i], fr[i];
 
        /*Г·ГІГҐГ*ГЁГҐ èñõîäГ*ûõ Г¤Г*Г*Г*ûõ*/
        in = fopen("input.txt", "r");
        for(i=0; i < 5; i++)
        {
                 fscanf(in, "%i", &x[i]);
                 x1[i]=x[i]/10;
                 x2[i]=x[i]-x1[i];
                 x1[i]=x1[i]*2;
        }
        fclose(in);
        /**/
        /*ïðîâåðêГ* ГЁГ*òåðâГ*ëîâ*/
        tinput = fopen("tinput.txt", "w");
        for(i=0; i < 5; i++)
        {
                 fprintf(tinput, "%i ", x[i]);
                 fprintf(tinput, "%i ", x1[i]);
                 fprintf(tinput, "%i\n", x2[i]);
        }
        fclose(tinput);
        /**/
        /*ïîäñ÷èòûâГ*ГҐГ¬ F ГЅГІГ*ëîГ*Г*ГіГѕ*/
        f=2*x[4]*(x[2]+x[3])*log((1+2*((x[1]*x[2]+x[0]*x[3])/(x[0]*(x[2]+x[3])))))/1000000;
        f=f/1000000;
        /**/
        /*Г§Г*ГЇГЁГ±Гј F ГЅГІГ*ëîГ*Г*îé Гў ГґГ*éë*/
        FILE *tfid;
        tfid = fopen("tfid.txt","w");
        fprintf(tfid, "%e", f);
        fclose(tfid);
        /**/
        /*Âûáîð ГЁГ§ ГЁГ*òåðâГ*ëîâ ñëó÷Г*Г©Г*ûõ 1000 Г§Г*Г*Г·ГҐГ*ГЁГ©*/
        srand(time(NULL));
        int ix1[5];
        for(i=0; i<5; i++)
        {
                 ix1[i]=x[i]/10*2;
        }
        ele = fopen("ele.txt","w");//îòêðûòèå ГґГ*éëГ* Г*Г* Г§Г*ГЇГЁГ±Гј ГµГ*Г°Г*êòåðèñòèê ýëåìåГ*òîâ
        for(i=0; i<1000; i++)
        {
                 fprintf(ele, "%f ", rand()%ix1[0] + x2[0]);                 
                 fprintf(ele, "%f ", rand()%ix1[1] + x2[1]);
                 fprintf(ele, "%f ", rand()%ix1[2] + x2[2]);
                 fprintf(ele, "%f ", rand()%ix1[3] + x2[3]);
                 fprintf(ele, "%f \n", rand()%ix1[4] + x2[4]);
        }
        fclose(ele);
Возникла проблема в виде конфликта типа данных, т.е. у меня в некоторых местах выводит 0 вместо числа, а именно значение f. Пришлось переходить на инт по причине, что инт нужен в рандоме после %, так как интервал разный, т.е. считается.

Как решить проблему, чтобы данные выводились корректные, а не нули, и чтобы рандом работал?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2011, 05:19     Ноли вместо значений и нерабочий рандом, запутался с типами данных
Посмотрите здесь:

Помогите разобраться с типами данных C++
C++ Проблема с типами данных
C++ Пoмoгите со строковыми типами данных
C++ Работа с типами данных в массиве
C++ Возможная пробелами с типами данных
Путаница с типами данных TCHAR и char. Какой тип данных выбрать? C++
C++ Работа со структурными типами данных
C++ Ошибка с типами данных в подпрограмме

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.11.2011, 08:09     Ноли вместо значений и нерабочий рандом, запутался с типами данных #2
rand() возвращает int. Поэтому
C++
1
2
3
4
5
fprintf(ele, "%i ", rand()%ix1[0] + x2[0]);                 
fprintf(ele, "%i ", rand()%ix1[1] + x2[1]);
fprintf(ele, "%i ", rand()%ix1[2] + x2[2]);
fprintf(ele, "%i ", rand()%ix1[3] + x2[3]);
fprintf(ele, "%i\n", rand()%ix1[4] + x2[4]);
И проверь значения ix1[0], x2[0], ix1[1], x2[1], ix1[2], x2[2], ix1[3], x2[3], ix1[4], x2[4].
Enzzio
 Аватар для Enzzio
6 / 8 / 0
Регистрация: 29.05.2010
Сообщений: 265
21.11.2011, 22:39  [ТС]     Ноли вместо значений и нерабочий рандом, запутался с типами данных #3
В коде выше вместо f выводит -1.#IND00
Yandex
Объявления
21.11.2011, 22:39     Ноли вместо значений и нерабочий рандом, запутался с типами данных
Ответ Создать тему
Опции темы

Текущее время: 05:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru