то нормально один раз, в чем разница исполнения не пойму, если логически проходить, то вроде не должно быть в первом варианте двойного вывода?
НУ и конечно я поищу, но межет подскажете очистку экрана?
volvo
5.07.2009 21:33
Цитата
в чем разница исполнения не пойму, если логически проходить, то вроде не должно быть в первом варианте двойного вывода?
Ты так думаешь? Ну, хорошо... Смотри: вывелось тебе меню, ты чего нажимаешь, чтобы обозначить свой выбор? Цифру и enter, правда? Вот цифра (отличная от 1) тебе дает первый проход, а enter - второй проход (это тоже символ, '\n', однако). Чтоб не было второго прохода - используй getch(), которая не ждет enter-а, а реагирует сразу после нажатия на кнопку, вместо getchar().
Цитата
подскажете очистку экрана?
25 раз
cout << endl;
?
Account
5.07.2009 21:46
Цитата(volvo @ 5.07.2009 18:33)
25 раз
cout << endl;
?
Такой метод уводит курсор, и вследующий раз уже меню выводится с низу)
Account
5.07.2009 22:27
Решение найдено подсоеденяем
Код
#include <stdlib.h>
и для очистки
Код
system("cls");
Не знаю может было уже где,но вдруг кому понадобится)
Account
9.07.2009 1:44
volvo, подскажи пожайлуста как мне передать в функцию двухмерный массив, естественно в С++ (CodeBlock). Делаю интерполяцию по формуле Лагранжа, данные из файла передал в массив (кстати по этому еще тоже будет вопрос). Есть массив двух мерный mas [6][3], как только не пробовал передавть блин ругается и все,вот например есть функция, передавал просто количество точек для которых надо найти значение функции и массив с данными саму функцию например описываю
Код
double pol_lag(int &kol_x, double *mmas)
Как правильно его передавать из главной функции?
volvo
9.07.2009 2:05
Так что тебе куда передавать надо? Запутал все что можно. Ты толком скажи: что есть, где описано, и куда надо передать.
cout<<"Vvedite kol-vo znacheniy x && y: "; cin>>kol_xy; double mas [kol_xy] [3]; // <---Вот этот массив надо передать в pol_lag(int &kol_xyx, double *mas)
return 0; }
int pol_lag(int &kol_xyx, double *mas) {
return 0; }
РУгается на использование в дальнейшем вот такой записи например mas [i][j] в функциии pol_lag
volvo
9.07.2009 2:16
Во-первых, это не будет компилироваться, пока не залезешь в настройки проекта и не разрешишь принудительно (по Стандарту С++ это запрещено, размер статического массива должен быть константным, а не переменным. Для переменных размеров есть динамические массивы). Но если наплевать на совместимость с ISO, то:
int pol_lag(int&, double *mas[3]);
Account
9.07.2009 2:35
А как с ним тогда потом работать, например на выражение в функции он ругается
Код
p=p*mmas [i][1]
volvo
9.07.2009 2:46
А что такое mmas? Там вообще-то mas был...
Account
9.07.2009 2:49
Ошибся, это старое обозначение но он и на mas ругается, даже пытался полностью определять mas [6][3], все равно не хочет, ругается(( Сделал просто вот так отправил в глобальные переменные
Код
int kol_xy; double mas [6] [3];
не люблю пользоваться глобальными но так вышло пока проще...
P.S Самое интересное решение полинома сделал, теперь вот только выделить в функцию хотел более грамотно))
volvo
9.07.2009 2:54
Что у тебя там ругается - не понимаю:
int pol_lag(int &kol_xyx, double *mas[3]) { double p = 1; for(int i = 0; i < kol_xyx; i++) { p *= mas[i][1]; // это аналог твоего выражения } return 0; }
компилируется прекрасно. Приводи код функции, что-то не то ты делаешь.
int pol_lag(int &kol_xyx, double mas[][3]) { for( int xn=0;xn<kol_xyx;xn++) { double s=0; for(int i=0;i<kol_xyx;i++) { double p=1; for(int j=0;j<kol_xyx;j++) { p *= (i != j) ? ((mas[xn][2] - mas[j][0])/(mas[i][0]-mas[j][0])) : (mas [i][1]); } s+=p; } cout<<"Resul for x"<<xn+1<<": "<<mas[xn][2]<<" | y:"<<s<<"\n"; } return 0; }
Заметь, я не пользуюсь iostream.h и fstream.h, это устаревшие заголовочные файлы. Если ты работаешь с namespace std, то подключай те файлы, в которых этот неймспейс есть, а это как раз файлы без расширения.
Ну, и оператор ? : тоже я по-другому использовал, так лучше будет.
Account
9.07.2009 3:26
volvo, ну как всегда СПАСИБО, держи +. А вот такой метод по стандарту ISO ?
НУ и еще хотел спросить по поводувот считывания файла, хотел в файле еще сверху дописать обозначения над столбиками X Y x, соответсвенно, но вот таким метотодом считывания из файла не как не получилось пропустить строку, так как он после ее считывания просто напросто запинается так сказать, выводит ее и все я сначала пытался сделать считываени
Код
char s[255]; infile.getline(s,255);
но не вышло)))
и еще почемуто опять getchar() не работает, что то попадает под поток не пойму?
volvo
9.07.2009 3:41
Цитата
выводит ее и все я сначала пытался сделать считываени
По стандарту ISO получил размер массива - выделяй памяти под него динамически. Задание НЕконстантой размера массива - это расширение GCC, причем очень нехорошее, потом программу трудно заставить работать под другим компилятором, я этим не пользуюсь, поэтому обычно у меня стоит ключ -ansi, с которым твоя программа не компилируется.
Account
9.07.2009 3:54
Блин вот счас работает, а тогда нет, да если честно у меня тут и винда уже настолько извиняюсь за выражения "сасрана", переустанавливать систему надо и чистить, бардак полный)))) Все нормально считывается и выводится) Но вот getchar() не пашет, потом exe-ник запускаю, просто выполняется и пролетает, не ждет нажатия(
volvo
9.07.2009 4:01
Цитата
exe-ник запускаю, просто выполняется и пролетает, не ждет нажатия(
А, да... Это есть. Потому что после ввода количества данных в буфере остается '\n', я уже говорил об этом. И его надо оттуда убрать. Вот так, например:
cout<<"Vvedite kol-vo znacheniy x && y: "; (cin>>kol_xy).get(); // прочитать число и сразу прочесть '\n'
Account
9.07.2009 4:07
volvo,честно меня поражают твои знания))) Теперь возьмусь за полином Ньютона)
P.S. А если не секрет кем работаешь?
volvo
9.07.2009 4:16
Цитата
А если не секрет кем работаешь?
А ты как думаешь?
Account
9.07.2009 4:19
ДА это понятно уж кем, больше интересует направленность и в какой стране)
Account
9.07.2009 21:31
volvo, вот хотел сделать так что бы перед тем вначале вводился номер способо нахождения 1 или 2 и уже отсюда плясать по считыванию данный толи из например data.txt или data1.txt пытылся делать вот так
int m; //<---какраз номер метода (cin>>m).get();
if (m==1) then ifstream infile("data.txt"); else ifstream infile("data1.txt");
Но тогда он в дальнейшем начинает ругаться на строчки считывания, ту же
infile.getline(s,255);
Я так понимаю потому что компилятор не может определить из какого файла читать, пытался даже делачть переменную типа string, хранившую от выбора имя того или иного файла но тогда начинается проблема с записью ifstream infile(s) , описания данной функции с ее параметрами не нашел, поэтому просто решил вот поэксперементировать, что посоветуешь?
И еще как пользоваться справкой, хемпом в CodeBlock ?
volvo
9.07.2009 22:02
Цитата
просто решил вот поэксперементировать, что посоветуешь?
А заместо хелпа и справки в CodeBlock, ссылка приведенная выше;) Спасибо!
Для себя то можно поэксперементировавть, а серьезно уже заниматься поздно)))
Account
12.07.2009 1:13
Блин не догоняю вчем дело, есть вот такая матрица чисел, содержатся они в файле slu.txt нужно каждый элемет строки разделить на элемент данной строки, который находится на главной диагонали (у меня данный диагональный элемент еще и умножается на -1), далее диагональные элементы обнуляются. Вроде должно работать но почемуто делет деление толькоэлементов до главной диагонали
но почемуто делет деление толькоэлементов до главной диагонали
Оно делит и после, но согласись, делить на 1 - смысла особого нет... Ты ж не проверяешь, и если i = j тоже делишь на mas[ i ][ i ]... А этого делать не надо.
Account
14.07.2009 1:10
volvo, а объекты класса vector это что то типа массивов я так понимаю, и вот посмотрел http://www.cplusplus.com/ , я так понимаю они не совсем относятся к С++, а больше к С#?
-Volvo-
14.07.2009 1:22
Цитата
я так понимаю они не совсем относятся к С++, а больше к С#?
С чего бы это? Открой Стандарт С++ и посмотри, куда относятся vector-ы и все остальные контейнеры... Это вообще-то STL (Standard Template Library), C++ ная библиотека.
Account
14.07.2009 1:25
Понятно, спасибо, постараюсь больше глупых вопросов не задавать)))
sheka
17.07.2009 13:43
Почему int m; (cin>>m).get(); не воспринимает нажатия на Enter, в то же время при нажатии на любую букву - работает? если int меняю на char - то же самое.
как можна сделать ожидание нажатия на Enter без ввода других символов?
volvo
17.07.2009 13:59
Что значит "не воспринимает"? Что по-твоему должно происходить?
sheka
17.07.2009 14:05
char m; (cin>>m).get(); enter - это, ведь, char? а его за char не принимает. хочу сделать подобное ReadLn;
volvo
17.07.2009 14:11
Блин... Когда ж вы задавать вопросы научитесь? Какое подобное? Чему подобное? ReadLn РАЗНЫЙ БЫВАЕТ!!! Какой именно тебя интересует? Тот, который ждет ТОЛЬКО нажатия на Enter? Или тот, который читает значение и потом ждет нажатия на Enter? Как ты хочешь чтобы себя вела программа? Что ты вводишь (с точностью до клавиши), и что НЕПРАВИЛЬНОГО происходит по-твоему?
Это я что, догадаться обо всем вышеперечисленном должен? Извини я не телепат. Нужна помощь - как минимум поставь вопрос корректно.
sheka
17.07.2009 14:22
если я правильно понял, тот, который читает значение и потом ждет нажатия на Enter - это вышеприведенный пример. мне нужен тот, который ждет ТОЛЬКО нажатия на Enter.
begin writeln(' vot takoi '); readln; end.
так как Enter в ASCII имеет номер #13, почему (cin>>с)/*вот здесь не происходит присваивания с:=#13*/.get();
Account
18.07.2009 1:12
volvo, а по работе в IDE QT разбираешься?
volvo
18.07.2009 2:07
QT-шный интерфейс делали как-то, но не на С++ совсем. А почему здесь? Если есть вопросы по QT - надо в отдельную тему.
Account
18.07.2009 2:21
Окей, ветку создам позже, а вот вопрос есть по поводу CodeBlock, создаю файл, пишу допустим прогу, ахочу выполнть пошагово, а отладчик отключен(
volvo
18.07.2009 2:35
1) project -> build options убедись, что генерируется отладочная информация (produce debugging symbols отмечено) 2) settings -> compiler and debugger -> debugger settings -> убедись, что дебаггер НЕ отключен. 3) поставь breakpoint в начало программы и нажми F8 ...
Account
18.07.2009 2:48
Понял когда создаешь просто файл ресурсов он почемуто не включается, а когда проект, то активет, только не пойму, ставлю breakpoint перед объявление главной функции
Код
int main()
, пролетает ее, и пошагово почемуто не активно(
Ну и для sheka
#include <iostream> #include <conio.h>
int main() { getch(); return 0; }
а если создашь переменную типа char и присвоешь ей значение возвращаемое функцией getch(), то получишь свой код Enter (0Dh) )
volvo
18.07.2009 3:31
Цитата
ставлю breakpoint перед объявление главной функции
И чего ты хочешь от дебаггера? Выполнение программы начинается с main(), в любом случае должен получить что-то вроде: Нажмите для просмотра прикрепленного файла (т.е., дебаггер начнет работу с самого начала main). Содержимое вкладки Debugger - в студию.
Если не получается - попробуй создать чистый проект, в нем - самую простую тестовую. программу, и запусти ее... Если и в новом проекте не выходит - то попробуй обновить на последнюю "ночную сборку" у меня nightly build от 21 июня 2009.
Account
18.07.2009 3:46
ВОт создал новый проект, breakpoint пролетает, пошагово выполнить нельзя почему то
volvo
18.07.2009 3:55
Путь к файлу содержит кириллицу? Меняй срочно, создавай проект не там, где тебе предлагается по умолчанию, а где-нибудь по другому пути. Обрати внимание на мой скриншот, и на свой: у тебя breakpoint создается, но в Pending-е, не находит его GDB, вот и выполняется вся программа без брекпойнта.
Account
18.07.2009 4:12
ОК, все пошло, видимо не любит в путях названия на русском, а может и впридачу пробелы)))
Account
19.08.2009 22:27
Итак, вот такая загвоздка, не пойму почему считает не правильно есть вот такая функция, возвращаемое ей значени я сделал для эксперимента, у меня почемуто возвращается только частное, из-за чего, при вставке вычисления именно функции считается неправильно, в чем может быть проблема? БУду сегодня еще пробовать на другой системе конечно, но очень уж интерессно что это за баг такой. среда IDE codeblocks
double func(double &x) { return (9/2); }
volvo
19.08.2009 22:58
Это не Паскаль, где деление возвращает ВСЕГДА вещественный результат. В Сях результат определяется исходя из операндов. Целое делить на целое будет целое. Чтоб получить 4.5 надо: