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

2 разных интервала - C++

Восстановить пароль Регистрация
 
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
31.07.2010, 16:50     2 разных интервала #1
Получается что я код написал для 2 одинаковых интервалов, а как сделать чтобы было правильно для 2 разных
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
#include <stdafx.h>
#include <cmath>
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
    float x, y ,a;
    for (x=1; x<=8; x+=.5)
    {
        cout<<endl;
        for (a=2; a<=10; x+=1)
        {
            if (a>x)
            {
                y=pow(a,2)+x;
                cout<<"x="<<fixed<<setprecision(2)<<x<<"   a="<<a<<"   y="<<y<<endl;
            }
            else if (a=x)
            {
                y=pow(x,2);
                cout<<"x="<<x<<"   a="<<a<<"   y="<<y<<endl;
            }
            else 
            {
                y=pow(a,2)-x;
                cout<<"x="<<x<<"   a="<<a<<"   y="<<y<<endl;
            }
        }
    }
    cin.get();
}
Миниатюры
2 разных интервала  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
31.07.2010, 16:55     2 разных интервала #2
else if (a==x)

Как минимум

Ну и по условию задачи (если я верно понял) y=pow(a,2);
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
31.07.2010, 17:08  [ТС]     2 разных интервала #3
Сделал, как вы сказали (a==x)
Код
#include <stdafx.h>
#include <cmath>
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
	float x, y ,a;
	for (x=1; x<=8; x+=.5)
	{
		cout<<endl;
		for (a=2; a<=10; x+=1)
		{
			if (a>x)
			{
				y=pow(a,2)+x;
				cout<<"x="<<fixed<<setprecision(2)<<x<<"   a="<<a<<"   y="<<y<<endl;
			}
			else if (a==x)
			{
				y=pow(a,2);
				cout<<"x="<<x<<"   a="<<a<<"   y="<<y<<endl;
			}
			else 
			{
				y=pow(a,2)-x;
				cout<<"x="<<x<<"   a="<<a<<"   y="<<y<<endl;
			}	
		}
	}
	cin.get();
}
Тогда получается что программа будет считать до бесконечности( или это не так но очень долго). Можно вставить (return) но тогда на экран выводится только по 1 значению x, y,z... (других вариантов не знаю ) На счет 1 замечания спс, на счет 2 не знаю правы вы или нет... Вот писал до этого что то подобное там со знаками (=) , (!=) вроде работает нормально....
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
31.07.2010, 17:17     2 разных интервала #4
fort-_-minor, В С/С++
= - присваивание.
== - сравнение.
Если учитывать что вам все таки надо сравнивать a и x, то логично что a==x. П.С. насчет второго - нз. По заданию у вас если a=x, тогда a^2.

Добавлено через 4 минуты
Эммм...
А такое условие цикла - нормально? оО
for (a=2; a<=10; x+=1)
Может все же a++?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
31.07.2010, 17:44     2 разных интервала #5
Все как и сказал Lavroff.
Сделал по-своему, вроде работает, выдает результат в виде таблицы:
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
#include <iostream>
#include <iomanip>
#include <string>
 
double f(double x, double a)
{
    return (a > x ? a*a + x : (a == x ? a*a : a*a - x));
}
 
int main()
{
    const double xMin = 1;
    const double xMax = 8;
    const double aMin = 2;
    const double aMax = 10;
    const double hx = .5;
    const double ha = 1;
    double x = xMin;
    double a = aMin;
    std::string line(34, '-');
    std::cout << std::setiosflags(std::ios::left) << '|'
        << std::setw(10) << "x" << '|'
        << std::setw(10) << "a" << '|'
        << std::setw(10) << "y(x, a)" << '|' << std::endl
        << line << std::endl;
    do
    {
        a = aMin;
        do
        {
            double y = f(x, a);
            std::cout << '|' 
                << std::setw(10) << x << '|'
                << std::setw(10) << a << '|'
                << std::setw(10) << y << '|' << std::endl;
            a+=ha;
        }
        while(a <= aMax);
        x+=hx;
    }
    while(x <= xMax);
    std::cout << line << std::endl;
    system("pause");
    return EXIT_SUCCESS;
}
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
31.07.2010, 18:23  [ТС]     2 разных интервала #6
Спасибо за советы ,ребят, просто писал код быстро, поэтому так невнимательно. На счет программы все таки нельзя ли как то сделать без строк (я так поимаю в последнем посте именно они используются). Просто с++ учу буквально с понедельника до строк пока не дошел...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2010, 18:28     2 разных интервала
Еще ссылки по теме:

Расчет интервала C++
C++ Вычислить сумму чисел из интервала
C++ Отсчет временного интервала

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
31.07.2010, 18:28     2 разных интервала #7
Цитата Сообщение от fort-_-minor Посмотреть сообщение
На счет программы все таки нельзя ли как то сделать без строк (я так поимаю в последнем посте именно они используются). Просто с++ учу буквально с понедельника до строк пока не дошел...
Конечно же можно. Здесь строка используется для вывода 34 символов '-' (в принципе, это и есть ее содержимое), что сделано только для более "красивого" табличного вывода программы. Это строка отделяет "шапку" таблицы от собственно табличных данных. Так что можно безболезненно удалить из программы объявление и все упоминания строки line.
Yandex
Объявления
31.07.2010, 18:28     2 разных интервала
Ответ Создать тему
Опции темы

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