Вопрос по Си
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Вопрос по Си
Извините, если я попал не в тот форум. Нужен совет по Си. Мне необходимо, не только, что бы программа при вводе определённой переменной вычисляла по введённой формуле, но и чтобы при определённых значениях переменной считала по определённой формуле. Как это реализовать?
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Re: Вопрос по Си
Если я правильно догадался, о чем Вы спрашиваете...
Код: Выделить всё
//----------
/* Variables */
int Perem;
int Znach;
/* Prototypes */
int formula_1(int x);
int formula_2(int x);
int formula_3(int x);
//----------
//...
if(Perem < 10) // подставить нужное условие
Znach = formula_1(Perem);
else if(Perem < 100) // подставить нужное условие
Znach = formula_2(Perem);
else
Znach = formula_3(Perem);
//...
//----------
int formula_1(int x)
{
return x+10; // подставить нужную формулу №1
}
//----------
int formula_2(int x)
{
return x-10; // подставить нужную формулу №2
}
//----------
int formula_3(int x)
{
return x-100; // подставить нужную формулу №3
}-
kospov
- Открыл глаза
- Сообщения: 71
- Зарегистрирован: Ср янв 20, 2010 20:55:10
- Откуда: Новосибирск
- Контактная информация:
Re: Вопрос по Си
Вот такой конструкцией удобно пользоваться:
unsigned char i; //твоя переменная
switch(i){
case 124: { //при этом значение переменной i ,будет выполнятся код.
//тут типа первый код,
break; }
case 100: { //при этом значение переменной i ,будет выполнятся код.
//тут типа второй код,
break; }
case 2: { //при этом значение переменной i ,будет выполнятся код.
//тут типа третий код,
break; }
case 37: { //при этом значение переменной i ,будет выполнятся код.
//тут типа четвёртый код,
break; }
case 54: { //при этом значение переменной i ,будет выполнятся код.
//тут типа пятый код,
break; }
}
…
unsigned char i; //твоя переменная
switch(i){
case 124: { //при этом значение переменной i ,будет выполнятся код.
//тут типа первый код,
break; }
case 100: { //при этом значение переменной i ,будет выполнятся код.
//тут типа второй код,
break; }
case 2: { //при этом значение переменной i ,будет выполнятся код.
//тут типа третий код,
break; }
case 37: { //при этом значение переменной i ,будет выполнятся код.
//тут типа четвёртый код,
break; }
case 54: { //при этом значение переменной i ,будет выполнятся код.
//тут типа пятый код,
break; }
}
…
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопрос по Си
kospov, тогда уж рассказали бы и про обработку по умолчанию, а то из вашегоо примера не ясно, что будет делать программа, если число окажется не тем, для которых вы задали "типа какой-то код"...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопрос по Си
int x;
int y;
int z;
затем выводим-введите переменную, и водим переменную
if(x<10) // условие
y=100
if(120>x>100)
y=169
примерно так?
int y;
int z;
затем выводим-введите переменную, и водим переменную
if(x<10) // условие
y=100
if(120>x>100)
y=169
примерно так?
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопрос по Си
Помогите ещё раз. Не могу разобраться с циклами. Для чего нужны циклы. Для чего нужны операторы while и for?
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Вопрос по Си
Циклы нужны для организации повторяющихся процессов (например постоянный опрос чего-либо или вычисление функции в каком-либо интервале).
Оператор WHILE служит для организации цикла с условием, то есть цикл будет выполняться пока истинно (или ложно) определенное условие.
Оператор FOR служит для задания заранее определенного количества повторений цикла, как правило для управления служит целочисленная переменная, для которой после слова FOR задан диапазон значений.
Оператор WHILE служит для организации цикла с условием, то есть цикл будет выполняться пока истинно (или ложно) определенное условие.
Оператор FOR служит для задания заранее определенного количества повторений цикла, как правило для управления служит целочисленная переменная, для которой после слова FOR задан диапазон значений.
Re: Вопрос по Си
if(x<10) // условие
y=100
if(120>x>100)
y=169
примерно так?
if(120>x>100) - Это неправильно!
Правильно так:
if(x<10) // условие
y=100;
if((x>100) && (x<120))
y=169;
Не могу разобраться с циклами
Эти книги доступны в сети:
Керниган, Ричи. Язык C
Шилдт C++. Руководство для начинающих
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопрос по Си
спасибо. Ещё вопрос-есть ли в С++ такие команды, чтобы при определённом значении переменной открывалась определённая программа?
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
- РадиоЛоматель
- Мудрый кот
- Сообщения: 1733
- Зарегистрирован: Чт авг 21, 2008 22:03:30
- Откуда: Одесса(Украина)
- Контактная информация:
Re: Вопрос по Си
Как то это странно. Вы об основах спрашиваете (кроме запуска программы). Попробовали бы в гугле хоть найти какой-то учебник, почитать самостоятельно... Так вы язык программирования никогда не выучите.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Люблю Си...
- РадиоЛоматель
- Мудрый кот
- Сообщения: 1733
- Зарегистрирован: Чт авг 21, 2008 22:03:30
- Откуда: Одесса(Украина)
- Контактная информация:
Re: Вопрос по Си
Пожалуйста:
WinExec("c:\\LCD20.exe",SW_SHOW); где "c:\\LCD20.exe" путь к приложению
Но перед этим нужно включить файл "windows.h" Вот так:
#include "windows.h"
Перед всем кодом(вверху файла)
WinExec("c:\\LCD20.exe",SW_SHOW); где "c:\\LCD20.exe" путь к приложению
Но перед этим нужно включить файл "windows.h" Вот так:
#include "windows.h"
Перед всем кодом(вверху файла)
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Люблю Си...
Re: Вопрос по Си
Pika4u писал(а):спасибо. Ещё вопрос-есть ли в С++ такие команды, чтобы при определённом значении переменной открывалась определённая программа?
правильный ответ НЕТ (если отвечать на поставленный вопрос).
Есть в WinAPI (если речь про форточки).
в самом языке нет (как нет и в сях, азме...)
удачи вам
(круглый)
- РадиоЛоматель
- Мудрый кот
- Сообщения: 1733
- Зарегистрирован: Чт авг 21, 2008 22:03:30
- Откуда: Одесса(Украина)
- Контактная информация:
Re: Вопрос по Си
^ Во! Точно. Забыл сказать про это.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Люблю Си...
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопрос по Си
Спасибо. Ещё вопрос. По команде case. Она при определённом значении переменной выполняет программу по определённому пути. Но переменная может быть только целым числом. а как сделать, чтобы переменная могла быть с точкой(целая и дробная часть), но и чтобы выполнялась программа?
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Re: Вопрос по Си
Pika4u писал(а):Спасибо. Ещё вопрос. По команде case. Она при определённом значении переменной выполняет программу по определённому пути. Но переменная может быть только целым числом. а как сделать, чтобы переменная могла быть с точкой(целая и дробная часть), но и чтобы выполнялась программа?
switch()/case - только для целочисленных аргументов, для формата с плавающей запятой (целая и дробная часть), например, так:
float x;
if((x>100.5) && (x<100.6))
{
// здесь сделать что нужно
}
Эти книги все еще доступны в сети:
Керниган, Ричи. Язык C
Шилдт C++. Руководство для начинающих
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопрос по Си
спасибо.А можно так:
float x;
if(x==100.6)
{
//здесь то что нужно сделать
}
??? можно ли так сделать?
float x;
if(x==100.6)
{
//здесь то что нужно сделать
}
??? можно ли так сделать?
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопрос по Си
так сделать можно, но надо четко представлять последствия.Pika4u писал(а):спасибо.А можно так:
float x;
if(x==100.6)
{
//здесь то что нужно сделать
}
??? можно ли так сделать?
дробные числа (т.е. числа в формате с плавающей точкой - float) никогда почти не бывают так точно выражены, как вы думаете, т.е. если в результате ваших вычислений переменная х окажется равной 100.6000001 - это будет не равно 100.6 и ваше условие не выполнится! поэтому проверка на попадание в диапазон значений с учетом допустимой для вашей задачи погрешности - это правильный подход, а проверка на однозначное равенство - неправильный.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопрос по Си
Спасибо. Уже переделал
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопрос по Си
Блин. Глючит программа.
if (nNcnort=4)
{
if (dNre3=14)
{
nNo4ki=70;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=13)
{
nNo4ki=65;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=12)
{
nNo4ki=60;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=11)
{
nNo4ki=55;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=10)
{
nNo4ki=50;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=9)
{
nNo4ki=45;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=8)
{
nNo4ki=41;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=7)
{
nNo4ki=37;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=6)
{
nNo4ki=33;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=5)
{
nNo4ki=29;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=4)
{
nNo4ki=25;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=3)
{
nNo4ki=21;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=2)
{
nNo4ki=17;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=1)
{
nNo4ki=1;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
}
при аставке этого кода программа(она учитывает результаты соревнований) начинает глючить. Остальной код работает нормально(отладил поблочно). И вообще-есть ограничения на кол-во if в коде?
if (nNcnort=4)
{
if (dNre3=14)
{
nNo4ki=70;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=13)
{
nNo4ki=65;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=12)
{
nNo4ki=60;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=11)
{
nNo4ki=55;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=10)
{
nNo4ki=50;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=9)
{
nNo4ki=45;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=8)
{
nNo4ki=41;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=7)
{
nNo4ki=37;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=6)
{
nNo4ki=33;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=5)
{
nNo4ki=29;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=4)
{
nNo4ki=25;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=3)
{
nNo4ki=21;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=2)
{
nNo4ki=17;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
if (dNre3=1)
{
nNo4ki=1;
cout<<"Bawi o4ki: ";
cout<<nNo4ki;
}
}
при аставке этого кода программа(она учитывает результаты соревнований) начинает глючить. Остальной код работает нормально(отладил поблочно). И вообще-есть ограничения на кол-во if в коде?
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопрос по Си
Вопрос решился. Отладил я этот блок как отдельную программу. Оказалось, везде где dNre3 надо было поставить вместо =поставить ==.
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....