еще один глупый вопрос
Есть желание научиться создавать устройства на МК.
- Сообщения: 86
- Зарегистрирован: Пт янв 21, 2011 07:48:23
- Реклама
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Кажется, я понял, почему я, в отличие от говорящих на "человеческом языке", никогда не могу найти общего языка с девушками...if(PIND & BUTTON_PIN){ как будет звучать это выражение на человеческом языке ?
Проверяет, что конкретный бит, указанный в маске, установлен. Это следует из определения этой операции.что оно делает ?
Все ненужные биты будут обнулены нулями в маске. Далее, если целевой бит - ноль, на выходе получим ноль. Если нет - какое-то ненулевое значение.
Предупреждая следующий вопрос, скажу, что в конструкциях if/while и других условных операторах в Си арифметический ноль (0) приравнивается к false, а что угодно кроме него (30, 100500, -20, etc) - к true.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 13796
- Зарегистрирован: Чт сен 20, 2007 14:08:00
говориш унылым языком логически мыслящих биороботов и бабы засыпают?YS писал(а):Кажется, я понял, почему я, в отличие от говорящих на "человеческом языке", никогда не могу найти общего языка с девушками...
тематические ответы только в форуме, в приват не пишите
- Сообщения: 86
- Зарегистрирован: Пт янв 21, 2011 07:48:23
добрый день
грызу С++, пишу простенькие программки.
Error: 8.c(13,7):Call to undefined function 'getch'
что в 13 строке не нравиться ему "getch", до этого писал и все было нормально, есть еще и "getchar", писал по учебнику первые програмульки использовал его, потом он перестал работать (DOS окно после выполнения кода автозакрывалось). Объясните несведущему на пальцах что это за операторы что они делают почему в одном случае "getch" в другом "getchar"
P.S. запустил снова Borland C++ 5.1 пошла прога, ошибка исчезла
, но усиленно не хочет умножать выражение в скобках на 2
подскажете в чем дело ?
Код: Выделить всё
#include <stdio.h>
main()
{
float x, y, z, s;
printf("vvedite 3 chisa,\n");
scanf(" %f %f f% ", &x, &y, &z);
s=2*(x+y+z);
printf("\n");
printf("otvet=%f", s);
printf("\n ");
getch();
}
что в 13 строке не нравиться ему "getch", до этого писал и все было нормально, есть еще и "getchar", писал по учебнику первые програмульки использовал его, потом он перестал работать (DOS окно после выполнения кода автозакрывалось). Объясните несведущему на пальцах что это за операторы что они делают почему в одном случае "getch" в другом "getchar"
P.S. запустил снова Borland C++ 5.1 пошла прога, ошибка исчезла
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
C++Builder 6 все в порядке:
getchar – чтение символа из стандартного потока ввода http://all-ht.ru/inf/prog/c/func/getchar.html
Спойлер

- Реклама
- Сообщения: 86
- Зарегистрирован: Пт янв 21, 2011 07:48:23
у меня тоже подозрение что глючит прога, скачаю 6oleg110592 писал(а):C++Builder 6 все в порядке:getchar – чтение символа из стандартного потока ввода http://all-ht.ru/inf/prog/c/func/getchar.htmlСпойлер
- Сообщения: 378
- Зарегистрирован: Сб сен 19, 2009 07:02:19
В Borland для getch под DOS всегда было:
getchar - выводит символ, getch - net. google в отпуске, что-ли?
Код: Выделить всё
#include <conio.h>
- Сообщения: 86
- Зарегистрирован: Пт янв 21, 2011 07:48:23
установил, голову сломать можноoleg110592 писал(а):C++Builder 6 все в порядке:getchar – чтение символа из стандартного потока ввода http://all-ht.ru/inf/prog/c/func/getchar.htmlСпойлер
благодарю за подсказкуshindax писал(а):В Borland для getch под DOS всегда было:getchar - выводит символ, getch - net. google в отпуске, что-ли?Код: Выделить всё
#include <conio.h>
при подключение
Код: Выделить всё
#include <conio.h>
Последний раз редактировалось Sam85 Пт авг 22, 2014 11:29:00, всего редактировалось 1 раз.
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
чтоб не исчезало применяют system ("pause");после расчета окно так же мгновенно исчезает
Спойлер

- Сообщения: 86
- Зарегистрирован: Пт янв 21, 2011 07:48:23
Код: Выделить всё
Строка 01 #include<stdio.h>
Строка 02 main()
Строка 03 {
Строка 04 float x, y, z, s; //Значения величин
Строка 05 printf("Введите три вещественных числа x, y, z\n");
Строка 06 scanf("%f %f %f", &x, &y, &z);
Строка 07 printf("\n");
Строка 08 printf("Вы ввели три вещественных числа=%f %f %f", x, y, z);
Строка 09 printf("\n");
Строка 10 getchar();
Строка 11 s=2*(x+y+z); //Вычисление значения
Строка 12 printf("s= %f",s);
Строка 13 printf("\n");
Строка 14 printf("Для выхода нажмите клавишу ");
Строка 15 getchar();
Строка 16 }
Код: Выделить всё
system"pause"
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Программа может выполняться на разных платформах. getchar везде примерно одинаковый, а вот команды pause в оболочке может и не быть...Суть от этого не измениться ведь
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 86
- Зарегистрирован: Пт янв 21, 2011 07:48:23
Добрый день
Ругается на оператор else? не подскажете в чем дело ?
Код: Выделить всё
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <windows.h>
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------------
#pragma argsused
void main()
{
float x, y, c;
char str[50];
textbackground(4);
clrscr();
textcolor(15);
CharToOem("\nÂû÷èñëåíèå ÷àñòíîãî\n", str);
printf(str);
CharToOem("Ââåäèòå â îäíîé ñòðîêå äåëèìîå è äåëèòåëü,\n", str);
printf(str);
CharToOem("Çàòåì íàæìèòå êëàâèøó Enter\n", str);
printf(str);
scanf("%f%f", &x, &y);
CharToOem("Âû ââåëè %5.2f È %5.2f\n", str);
printf(str, x, y);
if(y!=0);
{
c=x/y;
CharToOem("×àñòíîå îò äåëåíèÿ =%5.2f", str);
printf(str, c);
}
else
{
CharToOem("Äåëåíèå íà íîëü íåâîçìîæíî\n", str);
}
system("pause");
}
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
- Сообщения: 86
- Зарегистрирован: Пт янв 21, 2011 07:48:23
Благодарю помоглоoleg110592 писал(а):if(y!=0); - может ; убрать
Код: Выделить всё
getch();}
и еще вопрос
Код: Выделить всё
textbackground(4);
clrscr();
textcolor(15);- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
для билдера можно опять воспользоваться функцией system() типа:
еще есть функция SetConsoleTextAttribute()
Код: Выделить всё
printf("Hello\n");
system("pause");
system("cls");
system("color 24"); // зеленый цвет фона и красный цвет текста
printf("green red Hello\n");
system("pause");- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
oleg110592, почему вы советуете обращаться к сервисам системы напрямую? Это непортируемо.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
разговор начался с Borland C++ 5.1, я так понял автор тренируется в создании консольных программ для Windows. Портировать куда? Проверил на Visual C++ 2008 Express - system() так же работает. Проверил Microsoft Visual Studio Express 2013 для Windows Desktop, Версия 12.0.21005.1 - создал консольное приложение тоже работает.Функция system() передает командному процессору операционной системы команду в строке, на которую указывает параметр str, и возвращает статус выхода команды. Для выполнения команды должен иметься командный процессор.

если что - Windows 8.1 x64
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Пока что некуда. Но использовать без нужды обращения к системе - так себе практика. Мы все же в разделе, посвященном контроллерам, а там системы чаще всего вообще нету. Так что я бы не прививал любовь к системным вызовам.Портировать куда?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Если перейти потом к микроконтроллерам с графическим экраном, придется все равно написать свою или использовать чужую библиотеку GUI. Там функции работы с экраном очень далеки от работы с консолью. Например, если в поисковике набрать "Windows console clear screen" - у меня первая ссылка: http://support.microsoft.com/kb/99261 . Там два способа: 1- system("cls");, 2-думаю не стоит пока начинающему и смотреть. Есть ли еще способы работы с консолью, приближенные к микроконтроллерам, я не знаю.
- Сообщения: 86
- Зарегистрирован: Пт янв 21, 2011 07:48:23
что значит следующие строки ?
Код: Выделить всё
main()
{
char ch;
char str0[50];
char str1[50];
char str2[50];
char str3[50];
char str4[50];
char str5[50];
char str6[50];
char str7[50];
// Очистить экран


