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

otladka programmy - C++

Восстановить пароль Регистрация
 
sonice
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 41
07.10.2011, 16:18     otladka programmy #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
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
#include <iomanip>
#define m 12
using namespace std;
 
void main()
{
        setlocale(LC_ALL,"Russian");
        
        double f[m],y[m];
        int i;
        int n;
        
        do
        {cout<<"Введите размерность массива от 0 до 12:";
                cin>>n;
        }
        
        while ((n>=m)||(n<0));
        
                //const int n=12;
        cout<<" Введите элементы массива y:"<<endl; 
        for (i=0; i<n; i++)
        {   
                cout<<"y["<<i<<"]=" ;
                cin>>y[i];
        }
                cout<<"Array f:"<<endl;
                for (i=0; i<n; i++)
                {
                        f[i]=(1- y[i]/(y[i])*(y[i]));
                        if (2<=y[i])
                                f[i] += y[i]*2;
                        else 
                                f[i] += y[i]*3;
        
        cout <<" индексы:"<<" ";
        for (i=0; i<n; i++)
        {
                cout<<setfill(' ')<<setw(3) << i<<"       ";
        }
        cout <<endl<<"элементы:"<<" ";
        for (i=0; i<n; i++)
        {
        
                cout<<setfill(' ')<<setw(3) << f[i]<<" "; 
                
        }
        
                }
                cout<<"Нажмите любую клавишу ";
    _getch();
        
}
Собственно это сама программа, не могу найти ошибку вроде все норм до вывода результатов, пишет неумоверные числа, думаю ошибка в условии


По условию:Дан массив y1, …, y12.
Сформировать новый массив , f(i)= (1-y(i)/sqr(y(i)) + y(i)*a


где a = 2 если y(i)<=2 , a = 3 если y(i)>2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
07.10.2011, 16:34     otladka programmy #2
Цитата Сообщение от sonice Посмотреть сообщение
for (i=0; i<n; i++)
* * * * * * * * {
* * * * * * * * * * * * f[i]=(1- y[i]/(y[i])*(y[i]));
* * * * * * * * * * * * if (2<=y[i])
* * * * * * * * * * * * * * * * f[i] += y[i]*2;
* * * * * * * * * * * * else
* * * * * * * * * * * * * * * * f[i] += y[i]*3;
- нету закрывающей скобки

Цитата Сообщение от sonice Посмотреть сообщение
}
* * * * * * * * cout<<"Нажмите любую клавишу ";
- она вот сюда затесалась
А вобще решил модернизировать код и снабдить программу возможностью ввода любого кол-ва элементов в массиве f = new double[n]; - так же интересней, а также ввёл перегрузку опрератора вывода - это как ещё один вариант руссификации консоли
Никаких заоблачных чисел - всё работает
Подправленный код
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <iomanip>
using namespace std;
 
//Руссификация
ostream& operator<<(ostream &stream,char* s){
    for(char* ps=s; *ps; ps++){
        if(*ps=='ё')
            stream<<char(241);
        else if(*ps=='Ё')
            stream<<char(240);
        else if(*ps>=-64 && *ps<=-17)           
            stream<<char(*ps+64+128);
        else if(*ps<0)
            stream<<char(*ps+64+176);
        else
            stream<<*ps;
    }
    return stream;
}
 
void main()
{
        
        double *f,*y;
        int i;
        int n;
        
        do
        {
            cout<<"Введите размерность массива:";
            cin>>n;
            f = new double[n];
            y = new double[n];
        }
        
        while (n < 1);
        
        cout<<" Введите элементы массива y:"<<endl; 
        for (i=0; i<n; i++)
        {   
                cout<<"y["<<i<<"]=" ;
                cin>>y[i];
        }
                cout<<"Array f:"<<endl;
                for (i=0; i<n; i++)
                {
                        f[i]=(1- y[i]/(y[i])*(y[i]));
                        if (2<=y[i])
                                f[i] += y[i]*2;
                        else 
                                f[i] += y[i]*3;
                }
        
        cout <<" индексы:"<<" ";
        for (i=0; i<n; i++)
        {
                cout<<setfill(' ')<<setw(3) << i<<"       ";
        }
        cout <<endl<<"элементы:"<<" ";
        for (i=0; i<n; i++)
        {
        
                cout<<setfill(' ')<<setw(3) << f[i]<<" "; 
                
        }
        
                cout<<"Нажмите любую клавишу ";
    _getch();
        
}
Миниатюры
otladka programmy  
Yandex
Объявления
07.10.2011, 16:34     otladka programmy
Ответ Создать тему
Опции темы

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