при разных значениях srand() появляются разные значения выходной переменной, но при повторном запуске программы они идентичны. Также одинаковые данные при помещении этого кода в тело цикла.
нашел решение: PHP: #include <iostream> using namespace std; main() { int a = 0; for (int i=0;i<10;i++) { srand(i); a = rand() % 21; cout << a << "\n"; } return 0; } за помощь спасибо
Code: i=rand(); ни к чему, все работает и так: =) PHP: #include <iostream> using namespace std; main() { int a = 0; srand(time(0)); for (int i=0;i<10;i++) { a=rand()%21; cout<<a<<"\n"; } return 0; }
Вот нагуглил про AnsiString Я правильно понимаю что место под переменную типа AnsiString поумолчанию выделяется в куче?Если я допустим сделаю структуру в которой все члены будут типа AnsiString место под неё автоматически в куче выделится?Или есть какие то дополнительные ньюансы?
У меня вопрос , вот я не как не пойму .... Я с помощью sprintf формат текста делаю , для него обьявляю char buffer[512] ... Но как же мне узнать размер всего что я занес в buffer если я уже назначил 512 : ( пробывал char* data = buffer , и патом узнать размер ... Но не вышло :\ подскажи пожалуйста
А вот имеется строчка FD_ISSET(n->sock,fds); на нее ругается так: base operand of `->' has non-pointer type `_types_fd_set' . В чем может быть проблема? n - указатель на структуру, содержащуюю поле int sock. Все, решил сам.
FD_ISSET((*n).sock,fds); попробуй сделать так. хоть это и тоже самое но может прокатит. а вообще n точно указатель? и вообще скинь портотип функции FD_ISSET() а лучше весь код
Читай. Я уже решил. Я в аргументах метода, где использую эту функцию указал fd_set &fds, а нужно было fd_set* fds. После этого все заработало.
Доброго времени суток! Однажды я спрашивал здесь по поводу "защиты от дураков" в С, мне ответили, что там её нет как таковой. Но лабораторные мне писАть надо, так что пока у нас вводятся только числа я попробовал, сделать вот такую проверку: Code: # include <stdio.h> # include <string.h> # include <stdlib.h> # define MAXLINE 1000 double protect_double(char str[]){ // функция "защита от дураков" int i; // переменная-счётчик double digit; // возвращаемое значение char str_2[MAXLINE]; // временная строка for(i=0; i<strlen(str); i++){ // цикл проверки каждого введённого символа if ((str[i]>='0'&&str[i]<='9')||(str[i]=='.')){ // определение принадлежности символа к числу или . str_2[i]=str[i]; // если это число, то записываем в переменную строку } else { // если это не число, то выдаём сообщение об ошибке printf("Вы ввели некорректные данные! Пожалуйста введите число."); // сообщение break; // прерываем выполнение функции } } if(i==strlen(str)){ // если все введённые символы - числа, то преобразуем строку в число digit=atof(str_2); // преобразуем... } return digit; // возвращаем число } int main(void){ char s[MAXLINE]; // объявление вводимой строки double a; // строка как число printf("Введите пожалуйста число: \n"); // сообщение о вводе числа (на самом деле строки) scanf("%s", &s); // сканируем вводимую строку a=protect_double(s); // отправляем строку на проверку printf("%f+1=%f\n", a, a+1); // выводим результат сложения, чтобы убедиться, что получили число return 0; // завершение программы } всё бы ничего, но вот возникла проблема, которую я не знаю как решить: функция protect_double должна возвращать занчение типа double, но какое значение она должна возвращать, если она завершилась, но не преобразовала строку (т.е. ввели не число)? Как я понимаю, нужно в ней вместо break написать return <что-то>, что означало бы, что в строке не число, но ведь это <что-то> должно быть double. а как тогда в main отличить double, который с ошибкой от double, который ввели?
Как вариант. Если ничего не хочеш менять в своей программе то можно создать для таких целей структуру вот: struct a { int val1; int flag; }; возвращай ее значения записывай в вал а то что ты определил записывай в флаг. Потом все проверяеш если флаг 1 то число если нет то гриш типо введите число. или введи глобальную переменную.
вообще правильно делать по другому bool protect_double(char* s, double& dbl_val); вот так описываешь функцию. в ней проводишь преобразование. если в строке не дабл число, ты возвращаешь false. иначе true и в переменную dbl_val пишешь полученное число.
Народ, объясните мне разницу в инклуде между <имя>,"имя" и 'имя' В каких случаях какие скобки используются?
Code: Директивы Препроцессора Директивы препроцессора представляют собой инструкции, записанные в тексте программы на СИ, и выполняемые до трансляции программы. Директивы препроцессора позволяют изменить текст программы, например, заменить некоторые лексемы в тексте, вставить текст из другого файла, запретить трансляцию части текста и т.п. Все директивы препроцессора начинаются со знака #. После директив препроцессора точка с запятой не ставятся. Директива #include включает в текст программы содержимое указанного файла. Эта директива имеет две формы: #include "имя файла" #include <имя файла> Имя файла должно соответствовать соглашениям операционной системы и может состоять либо только из имени файла, либо из имени файла с предшествующим ему маршрутом. Если имя файла указано в кавычках, то поиск файла осуществляется в соответствии с заданным маршрутом, а при его отсутствии в текущем каталоге. Если имя файла задано в угловых скобках, то поиск файла производится в стандартных директориях операционной системы, задаваемых командой PATH. Директива #include может быть вложенной, т.е. во включаемом файле тоже может содержаться директива #include, которая замещается после включения файла, содержащего эту директиву. Директива #include широко используется для включения в программу так называемых заголовочных файлов, содержащих прототипы библиотечных функций, и поэтому большинство программ на СИ начинаются с этой директивы. источник
мож не оч по теме, но всё же трабла с устоновкой визуал студио на ноуте.... вот на компе поставил всё ок, а но ноуте всё время такая хрень помагайте плз
пишу на С++ Builder. Программа должна пинговать разные адреса, а также делать преобразование из числового адреса в буквенный и обратно. Командной строкой пользоваться нельзя (так бы,конечно,использовал nslookup или tracert). Как мне это получить? Для пинга использовал IdIcmpClient, но вроде у него нет таких методов и свойств для связи dns...подскажите,пожалуйста