Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2009, 17:53   #1
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию С++ Циклические вычислительные процессы.

Я новичек в С++, написал код, а компилятор нашел 12 ошибок.
Укажите на них плиз...
Код:
// lab_1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;

float F,a, b, c, Xn, Xk, dX;


int _tmain(int argc, _TCHAR* argv[])
{
float a,b,c,x,f,xn,xk,dx,p,k,i;

cout<<"a= ";
	cin>>a;
cout<<endl<<"b= ";
	cin>>b;
cout<<endl<<"c= ";
	cin>>c;
cout<<endl<<"xn= ";
	cin>>Xn;
cout<<endl<<"xk= ";
	cin>>xk;
	if (xn==xk){
p=0;
	do
	{ 
		if (p==1) cout<<endl<<"xn не должно быть равно xk";
		if (p==2) cout<<endl<<"Ошибка ввода";
		if (p==3) 
		{
			cout<<endl<<"xn=1, xk=10";
			xn = 1; 
			xk = 10;
		}
		cout<<endl<<"xk= ";
			cin>>xk;
        p=p+1;
	}
	while (xn==xk);}
p=0;
if (((xn>xk)&(dx<0))|((xn<xk)&(dx>0))) {
    do
	{ 
		if (p==1) cout<<endl<<"xn>xk и dx<0 ИЛИ xn<xk и dx>0";
		if (p==2) cout<<endl<<"Ошибка ввода";
		if (p==3) 
			{
				cout<<endl<<"dx=-1";
				xn = 1; 
			}
		cout<<endl<<"dx= ";
			cin>>dx;
        p=p+1;
	}
	while (((xn>xk)&(dx<0))|((xn<xk)&(dx>0))) ;}
cout<<endl<<"----------------------------------------";
cout<<endl<<"¦     x            ¦        f          ¦";
cout<<endl<<"----------------------------------------";
k=3;
	do
	{ 
		{
			cout<<endl<<"| ",!x,"               ",!f);
			cout<<endl<<"|-----------------");
		}
		p=1;
		if ((x>0)&(b!=0)) f=(x-a)/(x-c);
		else {if ((x>0)&(b==0)&((x-c)!=0)) f=(x-a)/(x-c);
			  else {if (c!=0) f=x/c;
					else {f=0;}}}
		if (k>20) 
		{
			cout<<endl<<"Закройте приложение...";
			cout<<endl<<"----------------------------------------";
			cout<<endl<<"¦     x            ¦        f          ¦";
			cout<<endl<<"----------------------------------------";
		k=3;
		}
		if (p==1)
		{
			cout<<endl<<"¦",!x:15:3 ,"  ¦", !f:20:3, "  ¦";
		else {cout<<endl<<"¦",x:15:3 ,"  ¦  Функция не существует  ¦";}
		k=k+1;
		x=x+dx;
		}
	}
	while (((xn<xk)&(dx>0))|((xn>xk)&(dx<0))) ;}
cout<<endl<<"----------------------------------------";
}
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 18.09.2009, 18:19   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Код:
#include <tchar.h>
- подключите эту библиотеку, чтобы использовать TCHAR.

Что вы хотите сделать вот этой вот строкой?
Код:
cout<<endl<<"¦",!x:15:3 ,"  ¦", !f:20:3, "  ¦";
Код:
cout<<endl<<"| ",!x,"               ",!f);
			cout<<endl<<"|-----------------");
Замените на вот это:
Код:
cout<<endl<<"| ",!x,"               ",!f;
			cout<<endl<<"|-----------------";
Жду ответа...

Ах, да.
Код:
if (p==1)
{
cout.precision(3);
cout<<endl<<"¦" << !x  << "  ¦" << !f << "  ¦"; //- вот здесь закрывающей скобки явно не хватает
else {cout<<endl<<"¦" << x << "  ¦  Функция не существует  ¦";}
mMAg вне форума Ответить с цитированием
Старый 18.09.2009, 19:21   #3
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Этой строкой я хочу обохначить отступы от символов, чтобы в таблицу выводились ровным столбцом значения x и f.
в Последнем:
Код:
if (p==1)
{
cout.precision(3);
cout<<endl<<"¦" << !x  << "  ¦" << !f << "  ¦"; //- вот здесь закрывающей скобки явно не хватает
else {cout<<endl<<"¦" << x << "  ¦  Функция не существует  ¦";}
- непонятно где и какую закрывающуюся скобку поставить=(. Что такое TCHAR?

З.Ы. Ошибок убавилось до 9, но видимо ещё их много. Подскажите плиз.

За ответ спасибо=)
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 18.09.2009, 19:24   #4
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Нашел ещё ошибки, осталось 2, код прилагаю:
Код:
// lab_1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <tchar.h>
using namespace std;

float F,a, b, c, Xn, Xk, dX;


int _tmain(int argc, _TCHAR* argv[])
{
float a,b,c,x,f,xn,xk,dx,p,k,i;

cout<<"a= ";
	cin>>a;
cout<<endl<<"b= ";
	cin>>b;
cout<<endl<<"c= ";
	cin>>c;
cout<<endl<<"xn= ";
	cin>>Xn;
cout<<endl<<"xk= ";
	cin>>xk;
	if (xn==xk){
p=0;
	do
	{ 
		if (p==1) cout<<endl<<"xn не должно быть равно xk";
		if (p==2) cout<<endl<<"Ошибка ввода";
		if (p==3) 
		{
			cout<<endl<<"xn=1, xk=10";
			xn = 1; 
			xk = 10;
		}
		cout<<endl<<"xk= ";
			cin>>xk;
        p=p+1;
	}
	while (xn==xk);}
p=0;
if (((xn>xk)&(dx<0))|((xn<xk)&(dx>0))) {
    do
	{ 
		if (p==1) cout<<endl<<"xn>xk и dx<0 ИЛИ xn<xk и dx>0";
		if (p==2) cout<<endl<<"Ошибка ввода";
		if (p==3) 
			{
				cout<<endl<<"dx=-1";
				xn = 1; 
			}
		cout<<endl<<"dx= ";
			cin>>dx;
        p=p+1;
	}
	while (((xn>xk)&(dx<0))|((xn<xk)&(dx>0))) ;}
cout<<endl<<"----------------------------------------";
cout<<endl<<"¦     x            ¦        f          ¦";
cout<<endl<<"----------------------------------------";
k=3;
	do
	{ 
		{
			cout<<endl<<"| ",!x,"               ",!f;
			cout<<endl<<"|-----------------";
		}
		p=1;
		if ((x>0)&(b!=0)) f=(x-a)/(x-c);
		else {if ((x>0)&(b==0)&((x-c)!=0)) f=(x-a)/(x-c);
			  else {if (c!=0) f=x/c;
					else {f=0;}}}
		if (k>20) 
		{
			cout<<endl<<"Закройте приложение...";
			cout<<endl<<"----------------------------------------";
			cout<<endl<<"¦     x            ¦        f          ¦";
			cout<<endl<<"----------------------------------------";
		k=3;
		}
		if (p==1)
		{
			cout.precision(3);
			cout<<endl<<"¦",!x ,"  ¦", !f "  ¦";
		else {cout<<endl<<"¦",!x ,"  ¦  Функция не существует  ¦";}
		k=k+1;
		x=x+dx;
		}
	}
	while (((xn<xk)&(dx>0))|((xn>xk)&(dx<0))) ;
cout<<endl<<"----------------------------------------";
}
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 18.09.2009, 20:10   #5
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Код:
#include <stdio.h>
#include <iostream>
#include <tchar.h>
using namespace std;

float F,a, b, c, Xn, Xk, dX;


int _tmain(int argc, _TCHAR* argv[])
{
float a,b,c,x,f,xn,xk,dx,p,k,i;

cout<<"a= ";
	cin>>a;
cout<<endl<<"b= ";
	cin>>b;
cout<<endl<<"c= ";
	cin>>c;
cout<<endl<<"xn= ";
	cin>>Xn;
cout<<endl<<"xk= ";
	cin>>xk;
	if (xn==xk){
p=0;
	do
	{ 
		if (p==1) cout<<endl<<"xn не должно быть равно xk";
		if (p==2) cout<<endl<<"Ошибка ввода";
		if (p==3) 
		{
			cout<<endl<<"xn=1, xk=10";
			xn = 1; 
			xk = 10;
		}
		cout<<endl<<"xk= ";
			cin>>xk;
        p=p+1;
	}
	while (xn==xk);}
p=0;
if (((xn>xk)&(dx<0))|((xn<xk)&(dx>0))) {
    do
	{ 
		if (p==1) cout<<endl<<"xn>xk и dx<0 ИЛИ xn<xk и dx>0";
		if (p==2) cout<<endl<<"Ошибка ввода";
		if (p==3) 
			{
				cout<<endl<<"dx=-1";
				xn = 1; 
			}
		cout<<endl<<"dx= ";
			cin>>dx;
        p=p+1;
	}
	while (((xn>xk)&(dx<0))|((xn<xk)&(dx>0))) ;}
cout<<endl<<"----------------------------------------";
cout<<endl<<"¦     x            ¦        f          ¦";
cout<<endl<<"----------------------------------------";
k=3;
	do
	{ 
		{
			cout<<endl<<"| ",!x,"               ",!f;
			cout<<endl<<"|-----------------";
		}
		p=1;
		if ((x>0)&(b!=0)) f=(x-a)/(x-c);
		else {if ((x>0)&(b==0)&((x-c)!=0)) f=(x-a)/(x-c);
			  else {if (c!=0) f=x/c;
					else {f=0;}}}
		if (k>20) 
		{
			cout<<endl<<"Закройте приложение...";
			cout<<endl<<"----------------------------------------";
			cout<<endl<<"¦     x            ¦        f          ¦";
			cout<<endl<<"----------------------------------------";
		k=3;
		}
		if (p==1)
		{
			cout.precision(3);
			cout<<endl<<"¦" , !x  , "  ¦" ,  !f , "  ¦";
		}
		else {cout<<endl<<"¦",!x ,"  ¦  Функция не существует  ¦";}
		k=k+1;
		x=x+dx;
	}
	while (((xn<xk)&(dx>0))|((xn>xk)&(dx<0))) ;
cout<<endl<<"----------------------------------------";
}
Ну вот в общем рабочий код. Правда мне остается лишь догадываться правильно ли он работает...

P.S. Обновил код bpystep'а.

P.P.S.
Цитата:
- непонятно где и какую закрывающуюся скобку поставить=(. Что такое TCHAR?
Ну вот конструкция if{}else{} у вас нет закрывающей скобки для блока после if. Типа как нету end после begin в Паскале. Про TCHAR почитайте в MSDN. Можете со спокойной душой поставить вместо него char. Вам это вряд ли повредит сейчас...
mMAg вне форума Ответить с цитированием
Старый 18.09.2009, 20:30   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Код:
cout<<endl<<"¦" , !x  , "  ¦" ,  !f , "  ¦";
Так нельзя, надо:
Код:
cout << endl << "|" << !x << " |" << !f << " |";
netrino вне форума Ответить с цитированием
Старый 18.09.2009, 21:21   #7
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Ну вот компиляция проходит, но почему то программа зависает на вводе "xk", почему?

Код:
// lab_1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <tchar.h>
using namespace std;

float F,a, b, c, Xn, Xk, dX;


int _tmain(int argc, _TCHAR* argv[])
{
float a,b,c,x,f,xn,xk,dx,p,k,i;

cout<<"a= ";
	cin>>a;
cout<<endl<<"b= ";
	cin>>b;
cout<<endl<<"c= ";
	cin>>c;
cout<<endl<<"xn= ";
	cin>>Xn;
cout<<endl<<"xk= ";
	cin>>xk;
	if (xn==xk){
p=0;
	do
	{ 
		if (p==1) cout<<endl<<"xn не должно быть равно xk";
		if (p==2) cout<<endl<<"Ошибка ввода";
		if (p==3) 
		{
			cout<<endl<<"xn=1, xk=10";
			xn = 1; 
			xk = 10;
		}
		cout<<endl<<"xk= ";
			cin>>xk;
        p=p+1;
	}
	while (xn==xk);}
p=0;
if (((xn>xk)&(dx<0))|((xn<xk)&(dx>0))) {
    do
	{ 
		if (p==1) cout<<endl<<"xn>xk и dx<0 ИЛИ xn<xk и dx>0";
		if (p==2) cout<<endl<<"Ошибка ввода";
		if (p==3) 
			{
				cout<<endl<<"dx=-1";
				xn = 1; 
			}
		cout<<endl<<"dx= ";
			cin>>dx;
        p=p+1;
	}
	while (((xn>xk)&(dx<0))|((xn<xk)&(dx>0))) ;}
cout<<endl<<"----------------------------------------";
cout<<endl<<"¦     x            ¦        f          ¦";
cout<<endl<<"----------------------------------------";
k=3;
	do
	{ 
		{
			cout<<endl<<"| "<<!x<<"               "<<!f;
			cout<<endl<<"|-----------------";
		}
		p=1;
		if ((x>0)&(b!=0)) f=(x-a)/(x-c);
		else {if ((x>0)&(b==0)&((x-c)!=0)) f=(x-a)/(x-c);
			  else {if (c!=0) f=x/c;
					else {f=0;}}}
		if (k>20) 
		{
			cout<<endl<<"Закройте приложение...";
			cout<<endl<<"----------------------------------------";
			cout<<endl<<"¦     x            ¦        f          ¦";
			cout<<endl<<"----------------------------------------";
		k=3;
		}
		if (p==1)
		{
			cout.precision(3);
			cout << endl << "|" << !x << " |" << !f << " |";
		k=k+1;
		x=x+dx;
		}
		else {cout<<endl<<"¦",!x ,"  ¦  Функция не существует  ¦";}
	}
	while (((xn<xk)&(dx>0))|((xn>xk)&(dx<0))) ;
cout<<endl<<"----------------------------------------";
}
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 18.09.2009, 21:27   #8
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Уберите глобальные переменные, они лишь мешают вам, из-за них код может работать не так, как вы ожидаете... Например:
Код:
cout<<endl<<"xn= ";
	cin>>Xn;
cout<<endl<<"xk= ";
	cin>>xk;
	if (xn==xk)
Читаете в Xn, а сравниваете xn, уже чревато последствиями... И насчёт запятых при использовании cout, я имел ввиду что вообще нельзя так, то есть и здесь:
Код:
else {cout<<endl<<"¦",!x ,"  ¦  Функция не существует  ¦";}
тоже надо заменить их на <<.
netrino вне форума Ответить с цитированием
Старый 18.09.2009, 22:53   #9
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

про запятые понял, просто не увидел=) регистр поменял. как можно убрать глобальные переменные?
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 18.09.2009, 22:57   #10
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Код:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <tchar.h>
using namespace std;

float F,a, b, c, Xn, Xk, dX;
Последнюю строчку из вышеприведённого текста выделите и нажмите Backspace(Delete) )) Глобальные переменные - те, которые объявлены вне тела какой-либо функции, их желательно поменьше использовать
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ Urz-3 Помощь студентам 5 06.12.2011 06:33
Разветвляющиеся вычислительные процессы Freia Помощь студентам 2 11.02.2010 17:33
ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ Urz-3 Помощь студентам 2 07.06.2009 18:56
циклические процессы felmor Помощь студентам 4 05.02.2009 17:24
ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ юра 3 Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2008 16:25