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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Enzzio
67 / 27 / 2
Регистрация: 29.05.2010
Сообщений: 376
Завершенные тесты: 1
#1

Выводит вместо массива е числа от балды. Где проблема? - C++

24.10.2011, 22:05. Просмотров 641. Ответов 5
Метки нет (Все метки)

Пишу программу, попутно сталкиваюсь с проблемами, которые непонятны, ибо что-то подзабыл и не получается никак понять.
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int main()
{   
        FILE *in;//ГґГ*éë èñõîäГ*ûõ äïГ*Г*ûõ
        FILE *out;// ГґГ*éë Г*Г* Г§Г*ГЇГЁГ±Гј
        FILE *t;//òåñòîâûé
        FILE *mx;//Г¬Г*òðèöГ* ïåðåçГ*ãðóçêГ* :D
        FILE *test1;//ïðîâåðêГ* ñ÷èòûâГ*Г*ГЁГї ГЁГ§ ГґГ*éëГ*
        FILE *test2;
        in = fopen("input.txt", "r");
        float f; //F - ГЅГІГ*ëîГ*
        //fscanf(in, "%d\n", &N);
        //Г¬Г*Г±Г±ГЁГўГ»
        int x[4], i;
        double e[4];
        double xx[4];//Г¬Г*Г±Г±ГЁГў ГЁГ*òåðâГ*ëîâ
        //float r[100];
        test2 = fopen("test2.txt", "w");
        for(i=0; i < 4; i++)
        {
                 fscanf(in, "%d ", &x[i]);
                 fscanf(in, "%d", &e[i]);
                 e[i]=e[i]/100;//ïåðåâîä ïðîöåГ*òîâ
                 fprintf(test2, "%d ", e[i]);
        }
        fclose(in);
        //êîðåГ*Гј ïðîãðГ*ììû
        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])))));
        for(i=0; i<2; i++)
        {
                 xx[i]=x[i]-(x[i]*e[i]);
        }
        test1 = fopen("test1.txt", "w");
                for(i=0; i < 4; i++)
        {
                 fprintf(test1, "%d", x[i]);
                 fprintf(test1, "%d", e[i]);
        }
        fclose(in);
        fclose(test1);
Вот код. Выводит вместо массива е числа от балды. Где проблема?


Текстовый файл с входными данными:
10000 10
100000 10
12000 10
240000 10
0.01 10

P.S. Я знаю, что название возможно не соответствует правилам форума, но программа одна, а вопросов по ней точно будет несколько.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2011, 22:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выводит вместо массива е числа от балды. Где проблема? (C++):

Сортировка массива, вместо массива выводит мусор - C++
Здравствуйте Уважаемые жители форума! Есть рабочий код сортируем массив выбором поиск наименьшего значения, но почему выводит какой то...

Вместо массива выводит большие отрицательные чсила - C++
Доброго времени суток! Создан массив в классе (вроде все верно) вот только выводит не тот массив который требуется: #include...

Вместо значений массива в cout выводит адреса - C++
Помогите пожалуйста! Вместо значений массива в cout выводит адреса #include&lt;iostream&gt; #include&lt;conio.h&gt; #include &lt;iomanip&gt; ...

Выводит вместо массива мягко сказать хрень - C++
#include &lt;stdio.h&gt; #include&lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; using namespace std; void main()...

Записать нули вместо чисел в тех строках матрицы, где числа идут по возрастанию - C++
Дан двумерный массив(к примеру 3x4).Числа вводятся с калвиатуры.Нужно записать нули вместо чисел в тех строках,где числа идут по...

Не корректно выводит числа массива - C++
Программа сортирует парные числа по возрастанию, а не парные по убыванию Но проблема в том что в консоле выводит числа типа -84215......

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
VadimTagil
14 / 14 / 1
Регистрация: 15.07.2011
Сообщений: 81
24.10.2011, 22:54 #2
fscanf(in, "%d ", &x[i]);
fscanf(in, "%d", &e[i]);
лучше сделать так
C
1
2
3
4
5
int t;
float u;
fscanf(in, "%d %f\n", &t,&u);
x[i]=t;
e[i]=(double)u;
главное чтобы содержимое файла точно совпапдао с шаблонами scanf. Нельзя пропускать переводы строки. Также если исп. ключ %d, переменная должна иметь тип int и никакой другой.
можно еще вот так
C
1
2
3
4
5
6
7
char s[256];
fgets(s,256,in);
int t;
float u;
sscanf(s, "%d %f", &t,&u);
x[i]=t;
e[i]=(double)u;
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.10.2011, 06:02 #3
Цитата Сообщение от Enzzio
Текстовый файл с входными данными:
надо было написать задание
0
Enzzio
67 / 27 / 2
Регистрация: 29.05.2010
Сообщений: 376
Завершенные тесты: 1
27.10.2011, 21:07  [ТС] #4
Цитата Сообщение от accept Посмотреть сообщение
надо было написать задание
Задание большое. В общем, проблему решил, считает f правильно. Готов практически весь расчет, требуется только реализовать рандом в заданном (рассчитанном) промежутке на 1000 значений.

Добавлено через 1 час 36 минут
Осталось только по рассчитанному интервал [a; b] и из него надо случайно получить 1000 значений, чтобы они не повторялись.
0
Байт
Эксперт C
16056 / 10325 / 1540
Регистрация: 24.12.2010
Сообщений: 19,446
27.10.2011, 21:20 #5
Осталось только по рассчитанному интервал [a; b] и из него надо случайно получить 1000 значений, чтобы они не повторялись.
А вот это не так тривиально, как кажется. Глянь сюды
Рандом чисел без повтора
0
Enzzio
67 / 27 / 2
Регистрация: 29.05.2010
Сообщений: 376
Завершенные тесты: 1
27.10.2011, 21:43  [ТС] #6
Буду думать, с рандом один раз только сталкивался, чисто шаблонно, то бишь пофантазировать на тему его использования не приходилось.
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int main()
{   
        FILE *in;//файл исходных дпнных
        FILE *out;// файл на запись
        FILE *t;//тестовый
        FILE *mx;//матрица перезагрузка :D
        FILE *test1;//проверка считывания из файла
        FILE *test2;
        in = fopen("input.txt", "r");
        double f; //F - эталон
        //fscanf(in, "%d\n", &N);
        //массивы
        int i, j;
        float p1=0.1;//процент отклонения и емкость
        float x[5];//массивы входных данных
        float x1[5], x2[5];//массив интервалов
        float xr0[1000], xr1[1000], xr2[1000], xr3[1000], c[i], e[i], fr[i];
        //float r[100];
        test2 = fopen("test2.txt", "w");
        for(i=0; i < 5; i++)
        {
                 fscanf(in, "%f", &x[i]);
                 x1[i]=x[i]-(x[i]*p1);
                 x2[i]=x[i]+(x[i]*p1);
        }
        fclose(in);
        //корень программы
        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;
        //for(i=0; i<2; i++)
        //{
          //       x1[i]=x[i]-(x[i]*e[i]);
         //        x2
        //}
        for(i=0; i<1000; i++)
        {
                 fr[i]=2*c[i]*(xr2[i]+xr3[i])*log((1+2*((xr1[i]*xr2[i]+xr0[i]*xr3[i])/(xr0[i]*(xr2[i]+xr3[i])))))/1000000;
                 e[i]=(f-fr[i])/f;
                 
                 }
        test1 = fopen("test1.txt", "w");
                for(i=0; i < 5; i++)
        {
                 fprintf(test1, "%f ", x[i]);
        }
        fprintf(test1, "%f ", p1);
        fclose(in);
        fclose(test1);     
        fprintf(test2, "%f", f); 
        fclose(test2);    
        return 0;
}
x1[i]=x[i]-(x[i]*p1);
x2[i]=x[i]+(x[i]*p1);
Вот это интервалы.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2011, 21:43
Привет! Вот еще темы с ответами:

Вывод одного и того же числа вместо элементов массива - C++
Студия выдает какое-то одинаковое число на всех местах массива,вместо чисел( #include &quot;CArrayDelete.h&quot; #include &lt;stdlib.h&gt; ...

Вместо чисел массива выводятся не понятные длиннющие числа - C++
Вот код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std;

Выводит рандомные числа при передаче массива в функцию - C++
#include &lt;cstdlib&gt; //подключаем библиотесный модуль для того чтобы заполнить массив рандомными числами #include &lt;iostream&gt; #include...

Массив: Написать программу, которая выводит в окне последовательно числа заданного массива. - C++
Написать программу выводящая в окне последовательно числа заданного массива.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.10.2011, 21:43
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru