EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #200 : Февраль 09, 2009, 09:45:46 » |
|
здесь лучше динамически память с помощью malloc выделять под массив, сколько надо столько и выделяешь. Требование в работе как раз объявить в main (если я не ошибаюсь, и это, действительно, 4-я лаба), чтобы народ прочувствовал тонкости адресации элементов. Думаю, вопрошающий как раз прочувствовал, и мы его обучили, что не может не радовать )))
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
Storm
Верховный
Администратор
Аспирант
Карма: +29/-0
Offline
Пол:
Сообщений: 484
|
|
« Ответ #201 : Февраль 09, 2009, 09:49:20 » |
|
Программа работает правильно, ошибка в алгоритме.
|
|
|
Записан
|
Только две вещи бесконечны: вселенная и тупость, и я еще не уверен по поводу вселенной. (Альберт Эйнштейн) ---------------------------------------------------- "There are two major products that came out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence." (с) Jeremy S. Anderson
Проходит ирландец мимо паба....
|
|
|
SPL
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 57
|
|
« Ответ #202 : Февраль 09, 2009, 09:50:30 » |
|
Спасибо, не подумал здесь лучше динамически память с помощью malloc выделять под массив, сколько надо столько и выделяешь.
Ну это понятно, просто по условию необходимо без динамической памяти реализовать
|
|
|
Записан
|
|
|
|
Артем
sprata
Mодератор
Завкаф
Карма: +40/-5
Offline
Пол:
Сообщений: 1107
|
|
« Ответ #203 : Февраль 24, 2009, 01:09:11 » |
|
Вопрос по компиляции проекта в VC++ 2008 переехал в тему Компиляторы С/С++
|
|
|
Записан
|
|
|
|
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 61
|
|
« Ответ #204 : Март 03, 2009, 11:56:42 » |
|
Всем доброй ночи, помогите решить такую проблему. У меня есть файлик вот такого содержания: Я хочу каждую строчку считать отдельно и для начала вывести ее на экран (далее будут изменения под алгоритм), раньше я особо никогда не сталкивался с позиционированием в файлах поэтому никак не могу выполнить это нормально. Вот код: typedef union bit UBIT;
int main(int argc, char* argv[]) { char path[] = "D:\\File.txt"; char *b;
b = new char[4];
UBIT s; fstream InputFile("D:\\File.txt",ios::in|ios::out); int i,j;
unsigned int buf; buf = 0; for(i=0;i<4;i++) { for(j=0;j<4;j++) { cout<<(char)InputFile.get(); } cout<<endl; InputFile.putback((char)InputFile.get()); }
InputFile.close(); cout<<"press ENTER"<<endl; delete[] b; cin.ignore(); return 0;
} Как бы мне установить правильно позиционирование и считать строки файла? Заранее благодарен
|
|
|
Записан
|
|
|
|
Артем
sprata
Mодератор
Завкаф
Карма: +40/-5
Offline
Пол:
Сообщений: 1107
|
|
« Ответ #205 : Март 04, 2009, 01:18:07 » |
|
Я хочу каждую строчку считать отдельно Магнетон Бора, для этого существует метод getline()char str[5]; while(fin.good()) { fin.getline(str, 5); cout<<str<<endl; } fin.close(); Кстати, в приведенном тобой выше коде, ты выделяешь память под 4 символа в строке b, при этом забыв "забронировать" место для '\0'. Да и вообще, честно говоря, код странный, ведь строка b у тебя даже нигде не используется.
|
|
« Последнее редактирование: Март 04, 2009, 01:40:33 от artem90 »
|
Записан
|
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #206 : Март 04, 2009, 10:11:01 » |
|
Кстати, в приведенном тобой выше коде, ты выделяешь память под 4 символа в строке b, при этом забыв "забронировать" место для '\0'. Да и вообще, честно говоря, код странный, ведь строка b у тебя даже нигде не используется. У него не строки, а массивы char, и читает он данные посимвольно. Так что в плане '\0' ошибки тут как раз нет. Главное потом не использовать переменную b как строку, а работать с ней только как с массивом. Но этого мы пока не увидели ))
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 61
|
|
« Ответ #207 : Март 05, 2009, 07:46:39 » |
|
ммммм спасибо за помощь ))))))))))
|
|
|
Записан
|
|
|
|
Alex08
Абитуриент
Карма: +0/-0
Offline
Сообщений: 2
|
|
« Ответ #208 : Март 08, 2009, 11:27:41 » |
|
Здраствуйте... Возникли проблемы при написании программы((( Задача. найти количество предлогов в тексте по ООП. вот до чего дошел, но оно не считает. предлоги((...помогите пжлста.
|
|
|
Записан
|
|
|
|
Артем
sprata
Mодератор
Завкаф
Карма: +40/-5
Offline
Пол:
Сообщений: 1107
|
|
« Ответ #209 : Март 09, 2009, 01:40:17 » |
|
Alex08, ф-ия strcmp используется для сравнения 2-ух строк, поэтому для поиска предлогов в строке она не подходит. Можно использовать ф-ию для поиска подстроки в строке - strstr. Для этого в коде нужно будет сделать небольшие изменения. char *p; // ... p = strstr(c, a[j]); if(p != NULL) k++;
Но тут есть один важный нюанс, ф-ия strstr возвращает указатель только на ПЕРВОЕ вхождение подстроки в строку. Поэтому, если в тексте будут повторяющиеся предлоги, то эта ф-ия уже не подойдет. В этом случае придется писать собственную ф-ию, которая будет посимвольно перебирать текст в строке, и подсчитывать кол-во предлогов. Кстати, обрати внимание на то, что по заданию нужно работать с ТЕКСТОМ, а не с одной строкой. Поэтому потребуется создать массив строк и доработать лабу. Удачи !
|
|
|
Записан
|
|
|
|
ZaQ
Бакалавр
Карма: +6/-1
Offline
Пол:
Сообщений: 128
|
|
« Ответ #210 : Март 09, 2009, 05:07:09 » |
|
а stl юзать нельзя? Кстати под дос можно OpenWatcom юзать. там и стл и еще куща всяких плюшек.
|
|
|
Записан
|
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #211 : Март 09, 2009, 05:09:51 » |
|
Думаю, это 6-я лаба по по алгоритмизации (дисциплина "Основы программирования...", языка plain C). Вряд ли это по ООП - там классами и не пахнет. А в лабах по plain C используем как раз только этот самый plain C, никаких сторонних библиотек, и уж тем более, нельзя STL.
ZaQ, а оболочка (IDE) там какая-то удобоваримая есть?
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
ZaQ
Бакалавр
Карма: +6/-1
Offline
Пол:
Сообщений: 128
|
|
« Ответ #212 : Март 09, 2009, 05:12:07 » |
|
есть, и хелп есть. Скрины можно у них на сайте поглядеть. кстати кросс-платформенная штука.
|
|
|
Записан
|
|
|
|
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 61
|
|
« Ответ #213 : Март 19, 2009, 11:12:06 » |
|
Коллеги, помогите разобраться у меня есть бинарный файл в которомм зашифровано слово TRUE. Я его читаю, но в конце добавляется какой-то бред не могу понять почему... #include "stdafx.h"
#include "fstream.h" #include "conio.h" #include "stdio.h" #include <iostream> #include <vector> #include "math.h"
int main(int argc, char* argv[]) { char path[] = "D:\\File_In"; char *b; unsigned int zero, one;
fstream InputFile("D:\\File_In",ios::in|ios::binary|ios::out);
if (!InputFile) { cerr<<"Îøèáêà îòêðûòèÿ ôàéëà..."<<endl; }; int i;
unsigned int buf; b = new char[4];
InputFile.read(b,4); cout<<b<<endl;
InputFile.close(); cout<<"press ENTER"<<endl; delete[] b; cin.ignore(); return 0; } Результат: Откуда взялись остальные символы?
|
|
|
Записан
|
|
|
|
Alexandr
|
|
« Ответ #214 : Март 19, 2009, 11:14:25 » |
|
если я не все забыл, то это признак конца файла
|
|
|
Записан
|
Береги себя там среди дорог... ----------------------------- Наркотик трасса-это на всю жизнь...
|
|
|
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 61
|
|
« Ответ #215 : Март 19, 2009, 11:18:20 » |
|
А можно от них как-то при выводе избавиться, не прибегая к работе со строками?
|
|
|
Записан
|
|
|
|
Alexandr
|
|
« Ответ #216 : Март 19, 2009, 11:19:21 » |
|
Магнетон Бора, сначала пусть гуру подтвердят прав ли я;) может я наврал
|
|
|
Записан
|
Береги себя там среди дорог... ----------------------------- Наркотик трасса-это на всю жизнь...
|
|
|
ZaQ
Бакалавр
Карма: +6/-1
Offline
Пол:
Сообщений: 128
|
|
« Ответ #217 : Март 21, 2009, 01:45:57 » |
|
в конце строки b должен в обязательном порядке быть 0. т.е. char b = new char[5]; b[4] = 0; А так это мусор за границей массива.
|
|
|
Записан
|
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #218 : Март 21, 2009, 12:07:57 » |
|
ZaQ, именно так. Уже выяснили в реале.
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
luk4196
All good luck in our not light deal
Абитуриент
Карма: +0/-0
Offline
Пол:
Сообщений: 3
|
|
« Ответ #219 : Июнь 08, 2009, 09:29:42 » |
|
Не знаю что у тебя случилось мой тебе совет скачай DEV C/C++ 4.9.9.2. и небудет никаких проблем,вот ссилочка: http://www.bloodshed.net/dev/devcpp.html сам использую хотя и новичок в програмировании начал изучать С/С++ . Рекламные ссылочки на депозит идут лесом. В следующий раз будет бан. Alder
|
|
« Последнее редактирование: Июнь 08, 2009, 04:01:49 от Alder »
|
Записан
|
All programmer regard
|
|
|
|