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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2009, 21:32   #1
Gradus
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 35
По умолчанию с php в c++

visual studio 2008 c++
Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;

int prov(char var) // функция проверки вводимых данных
		{
			if(var=="int") int res; // какой тип обьявить
			if(var=="double") double res; 
			cin >> res; // ждём ввода
			bool success = false; // булевая переменная для цикла while
			while (!success) // крутим пока false, в true тормозим
	{
		if((cin.fail()==0) && (res))  success = true;  // если нет ошибок в входном потоке даём true для стопа цикла
		else { // если есть ошибки
		cout << "Invalid format!\n"; //говорим что не коректный формат
		cin.clear(); //очищает ошибки входного потока для флажка cin.fail
		_flushall(); //удалить открытые потоки
		cin >> res; //опять ждём ввода
		}
	}
			return res; // вовзращаем переменную
		}

    int main(void)

    {
		char x; int y; int a; // обьявляем  переменные
		cout <<"Please write var x\n x=";
		x=prov("int"); // обрабатываем переменную функцией prov
		cout <<"Please write var y\n y=";
		y=prov("int"); // обрабатываем переменную функцией prov
		system("cls");  // чистим экран
		a=x+y; // складываем
       cout << "x+y=" << a<<endl<< "error="<<cin.fail(); // выдаём результат
getch(); // нажатием клавиши выходим из программы
    }
В этом варианте компилер ругаеться
Код:
.\2.cpp(8) : error C2446: ==: нет преобразования 'const char *' в 'int'
        Не существует контекста, в котором такое преобразование возможно
.\2.cpp(8) : error C2040: ==: "int" отличается по уровням косвенного обращения от "const char [4]"
.\2.cpp(9) : error C2446: ==: нет преобразования 'const char *' в 'int'
        Не существует контекста, в котором такое преобразование возможно
.\2.cpp(9) : error C2040: ==: "int" отличается по уровням косвенного обращения от "const char [7]"
.\2.cpp(10) : error C2065: res: необъявленный идентификатор
.\2.cpp(14) : error C2065: res: необъявленный идентификатор
.\2.cpp(19) : error C2065: res: необъявленный идентификатор
.\2.cpp(22) : error C2065: res: необъявленный идентификатор
.\2.cpp(30) : error C2664: prov: невозможно преобразовать параметр 1 из 'const char [4]' в 'char'
        Не существует контекста, в котором такое преобразование возможно
.\2.cpp(32) : error C2664: prov: невозможно преобразовать параметр 1 из 'const char [4]' в 'char'
        Не существует контекста, в котором такое преобразование возможно

Далее, цикл while странно себя ведёт когда
Код:
while(false)
{
if((cin.fail()==0) && (res)) true;
else .....
}
Далее, если программа выглядит так
Код:
int prov(int var)
		{
			bool success = false; // булевая переменная для цикла while
			while (!success) // крутим пока false, в true тормозим
	{
		if((cin.fail()==0) && (var))  success = true;  // если нет ошибок в входном потоке даём true для стопа цикла
		else { // если есть ошибки
		cout << "Invalid format!\n"; //говорим что не коректный формат
		cin.clear(); //очищает ошибки входного потока для флажка cin.fail
		_flushall(); //удалить открытые потоки
		cin >> var; //опять ждём ввода
		}
	}
			return var; // вовзращаем переменную
		}

    int main(void)

    {
		char x; int y; int a;
		cout <<"Please write var x\n x=";
                cin >> x;
		x=prov(x); // обрабатываем переменную функцией INT
		cout <<"Please write var y\n y=";
                cin >> y;
		y=prov(y); // обрабатываем переменную функцией INT
		system("cls");  // чистим экран
		a=x+y; // складываем
       cout << "x+y=" << a<<endl<< "error="<<cin.fail(); // выдаём результат
getch(); // нажатием клавиши выходим из программы
    }
то функция prov возращает всегда результат около 50

И ещё проблема что бы проверить каждую переменную мне надо создавать функцию под каждый тип.Потому как функции надо обьявлять какой тип данных вернуть. Не ужели другого варианта нету? куча кода получаеться и не красиво
Коменатрии повесил,для того что если где-то я не так понял,поправьте меня

Далее,когда же наши в футболе выграют чемпионат ?

Последний раз редактировалось Gradus; 10.10.2009 в 21:35.
Gradus вне форума Ответить с цитированием
Старый 10.10.2009, 21:44   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Код:
if(var=="int") int res; // какой тип обьявить
if(var=="double") double res;
Извините, но это бред сивой кобылы)) Переменная res будет уничтожена сразу после выхода из блока if. char - это тип символа, не строки, потому сравнение var == "int" не будет работать как надо. C++ это не PHP. Совсем не PHP. Синтаксис похожий, но принцип работы абсолютно разный, потому Вы бы взяли книжечку по C++ и почитали её, желательно как раз по фундаментальным частям, а не по стандартной библиотеке.
netrino вне форума Ответить с цитированием
Старый 10.10.2009, 22:10   #3
Gradus
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 35
По умолчанию

netrino На счёт char стыдно даже я перепутал стринг )))
Читаю Подбельского только те пункты которые мне в данный момент нужны.
Просто в падлу всю книжку с нуля листать,но видимо придётся.
Кстати можно на таком компилере сделать программу с графикой ? а то я что-то не видел примеров
Gradus вне форума Ответить с цитированием
Старый 10.10.2009, 22:17   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Можно, но только в GUI. В принципе, теоретически можно и в окошке консоли рисовать, но делается это всё равно тем же путём, что и на собственных окнах. Для string надо подключать
Код:
#include <string>
Так как в C++ нет встроенного типа строки )

Последний раз редактировалось netrino; 10.10.2009 в 22:21.
netrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из js в php неботан PHP 4 29.09.2009 14:12
php 3,0,5 Форсировка PHP 8 20.06.2009 22:59
Голосование на php eldar PHP 4 23.05.2009 01:01
Javascript и php konstantinopol JavaScript, Ajax 4 13.03.2009 18:17
PHP сервер Alex2009 PHP 10 10.03.2009 16:28