Я только недавно начал програмировать .Вот возникло несколько вопросов.
1) В каком компиляторе лучше компилировать ?? У мен установлен CodeBlocks, но что то кк то не все он прожевывает .Беру готовые простинькие программы из книжек (типа примеры) встовляю в компилирую ну там ошибки и все такое выдает ,хотя написано законченая программа.вот пример ее решения
Ниже приводится текст простой программы, которая читает файл с именем D://1.txt и выводит все прочитанные из этого файла слова, разделяя их пробелом, в D://2.txt
int main()
{
ifstream infile("D://1.txt");
ofstream outfile("D://2.txt");
if ( ! infile ) {
cerr << "Ошибка открытия входного файла.\n"
return -1;
}
if ( ! outfile ) {
cerr << "Ошибка открытия выходного файла.\n"
return -2;
}
string word;
while ( infile >> word )
outfile << word << ' ';
return 0;
}
2) Второй вопрос плавно вытекает из первого !!Необходимо прочитать из файла к -тую строку и вывести на экран !! пробовал сделать что то неочень получилось ,я брал уже готовые проги и тоже ничего .Незнаю может у меня одного так но что то в CodeBlocks както плохо компилируется все связанное с файлами . Ктонибудь может помочь???можете просто на примере показать простенькую програмку которая бы читала из файла к -тую строку и вывести на экран .
[Ответ]
FooXen 17:08 14.03.2008
Code::Blocks это не компилятор, а IDE. Компилятор скорее всего используется GNU. Ошибки хотя бы написал что-ли...
[Ответ]
Pengvin 18:04 14.03.2008
ну для начала неплохо бы в конце строчек с cerr поставить ; , без них любой компилятор будет ошибки писать.
[Ответ]
максим2007 18:08 14.03.2008
попрбуй заменить
#include <iostream.h>
на
#include <iostream>
using namespace std;
[Ответ]
p51x 22:13 14.03.2008
С каких пор в винде путь к файлу задается, как D://1.txt?
[Ответ]
lermontov 04:52 15.03.2008
программу отладил но все же осталась проблема ,она нехочет работать. Насчет пути вк файлу а как надо его задать?
[Ответ]
Dimbass 13:56 15.03.2008
ну насколько мне известно в винде путь указывается с обратным слешем, тоесть D:\Pr.Files\Programma и так далее
Upd а тебе точно надо строго задавать путь к файлу? Может надо сделать кнопку обзор, как в винде обычно сделано? Тогда он тебе сам напишет путь к файлу[Ответ]
Pengvin 15:16 15.03.2008
путь правильно задается, в С и С++ с \ начинаются спецсимволы вроде \n.
попробуй по старинке прочитать файл .
#include <stdio.h>
int main()
{
FILE* file;
char str[256];
char* fname="D://filename.txt";
if( (file = fopen( fname, "r" )) == NULL )
printf( "The file '%s' was not opened\n",fname );
else
{
printf( "The file '%s' was opened\n",fname );
int numread = fread( str, sizeof( char ), 256, file );
str[numread]=0;
printf("read characters: %d, string: %s",numread,&str);
if ( fclose( file ) )
{
printf( "The file '%s' was not closed\n",fname );
}
}
"Доктор, у меня где-то что-то болит. Помогите мне, доктор!"
[Ответ]
lermontov 16:54 15.03.2008
Сообщение от Pengvin:
путь правильно задается, в С и С++ с \ начинаются спецсимволы вроде \n.
попробуй по старинке прочитать файл .
#include <stdio.h>
int main()
{
FILE* file;
char str[256];
char* fname="D://filename.txt";
if( (file = fopen( fname, "r" )) == NULL )
printf( "The file '%s' was not opened\n",fname );
else
{
printf( "The file '%s' was opened\n",fname );
int numread = fread( str, sizeof( char ), 256, file );
str[numread]=0;
printf("read characters: %d, string: %s",numread,&str);
if ( fclose( file ) )
{
printf( "The file '%s' was not closed\n",fname );
}
}
return 0;
}
Большое спосибо, вроде работает !!!!! Вот и достигнута новая высота !!!!
[Ответ]
lermontov 17:01 15.03.2008
Вот в вопросе о том в чем писать программу,неуверен в терминалогии но поэтому это называется среда .например CodeBlocks.
Ну значит вопрос в следующем:чем лучше пользоватся CodeBlocks ,Borland ,VC ,или ещё чем нибудь ещё???
От себя добавлю пробовал писать в CodeBlocks и в Borland.На мой взгляд для начала удобнее CodeBlocks (приложение командная строка),а вот если надо новичку сделать программу простенькую но чтобы с окошком типа виндосовского с кнопочками и тд то лучше Borland.А каково ваше мнение????И чем вы пользуетесь??
[Ответ]
p51x 17:53 15.03.2008
Сообщение от Pengvin:
в С и С++ с \ начинаются спецсимволы вроде \n.
Вот поэтому он в именах файлов и экранируется (т.е. дублируется).
[Ответ]
lermontov 08:16 31.03.2008
Здравствуйте уважаемые програмисты .Помогите новичку . задача состоит в следующем: есть файл в нем есть 10 строк ,в строке всего по 1 слову , как бы мне забрать информацию из файла и перенести в масив , чтобы было проще дальше работать ,например обратился к элементу a[1] он те выдал что находится во 2 строчке и тд.?????
добавлю от себя : мне кажется что надо как бы в масиве хранить указатели этих строк , но я что то немогу никак составить алгоритм . но возможно и какнить подругому можно это делать .ПОМОГИТЕ ПОЖАЛСТА!!
[Ответ]
manifest 12:16 31.03.2008
Можно хранить и указатели строк в массиве, но в этом случае необходимо будет динамически выделять память под строки, а затем её освобождать. К тому же использовать С-строки в программе на С++ не есть хороший стиль. В стандартной библиотеке С++ есть специальный класс для работы со строками - string.
Сообщение от :
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
Нехотелось бы начинать эту тему, но наверно придется.
Понимаю что лучше сделать самому, заодно и обучится ,но все же приходится прибегнуть к крайним мерам.
НЕОБХОДИМО сделать довольно простенькую программу "Домашний телефонный справочник",с функциями добовления и поиска .ну и еще кое с чем.У меня впринципе сделана готовая программа на 90% и время до сдачи работы еще есть (целя неделя) но все же меня берут сомнения что я смогу осилить эти 10% ,так как загнал себя в тупик.
КТО возьмется сделать такую вот програмку ?????? (за вознаграждение) или просто поможет мне доделать мою, так как без опытного програмиста(ну или среднего) немогу справится .
на данный момент имеется готовая рабочая версия программы в виде консольного приложения, но ее необходимо перенести на нормальное графическое окно с кнопками и окошками. ВОт тут то и возникают главные проблемы: я делал консольное преложение в среде КОДБЛОКС
,затем начал его переносить в БОРЛАНД и там пытатси сделать это в гарафическом окне но ксожелению с борландом я мало знаком и не все кодблоковские конструкции подхходжят к нему!!!
[Ответ]
Ivan XXX 22:24 02.04.2008
ну возьми че-нить похожее на билдер в линухах. и будет тебе щасье! )
[Ответ]
lermontov 08:03 03.04.2008
НЕБОЛЬШОЙ вопросик !!
в билдере дла кнопки задаю вот такую программу (это кусочек из нее)
программа добовляет то что написано в окошке EDIT1 в файл!
float a;
ofstream out1file ("D:\\1.txt",ios::app);
a = StrToFloat(Edit1->Text);
out1file <<a<<endl;
понимаю что это основы основ, которые должен знать кадый, но все же .При таком задании переменной "а" я могу писать в нее только числа .При вписывании строки символов она выдает ошибку .Как мне изменить структуру чтобы можно было записывать "слово".?*???????????????????????????????????????? ?????????????????????????????????????????????????? ??????????????????
a = StrToFloat(Edit1->Text); -все дело вот этой строке(наверно) ,некак немогу найти в книжках как изменить ее на строкувую,замена Float на Char непомогает ,плиз помогите!!!
[Ответ]
Ivan XXX 13:21 03.04.2008
out1file << Edit1->Text <<endl;
а так не ест?
[Ответ]
lermontov 20:58 03.04.2008
Сообщение от Ivan XXX:
out1file << Edit1->Text <<endl;
а так не ест?
к сожалению я такую конструкцию уже пробовал и в обоих случаях выдает [C++ Error] Unit1.cpp(35): E2094 'operator<<' not implemented in type 'ofstream' for arguments of type 'AnsiString'
[Ответ]
Ivan XXX 21:54 03.04.2008
думаю, надо посмотреть какие типы данных понимает ofstream. преобразовать Edit1->Text к наиболее подходящему типу и записать.
[Ответ]
manifest 00:04 04.04.2008
Сообщение от :
Получение символьного массива, содержащего значение AnsiString
Функции библиотеки исполнения C и функции WinAPI требуют, чтобы строки передавались им в виде символьных массивов. В AnsiString для этого предназначены функции c_str и data. Разница между ними в том, что для пустой строки c_str возвращает "", а data - NULL. Это отличие может быть проиллюстрировано следующим примером:
AnsiString ansi_string;
char * str1 = ansi_string.c_str();
char * str2 = (char *)ansi_string.data();
Значит должно работать так:
Сообщение от :
ofstream out1file ("D:\\1.txt",ios::app);
AnsiString str = Edit1->Text;
out1file<<str.c_str()<<endl;
под виндой моё имхо удобен Dev C++(написан толи делфя толи паскаль но не суть в этом) компилятор gcc...как консоль так и окна вин апи фунц оч удобно...
с VC слишком уж громоздко начинать..опять же имхо..
[Ответ]
The_God 10:39 05.04.2008
Сообщение от liness:
с VC слишком уж громоздко начинать..опять же имхо..
старовер
истина в вижуал студии, брат.
в ней всё сделано вместе, и редактор, и компилятор, и отладчик. всё всегда под рукой и у всего один и тотже графический интерфейс, от чего кажется что это всё одна программа.
хотя если твоей рилигии ближе кучка узко-специализированных консольных программ, то студия не для тебя.
[Ответ]
Part!zan 16:27 05.04.2008
The_God, +1. А когда к VS прикручивается Visual Assist, то жизнь превращается в сплошной праздник.
[Ответ]
The_God 16:33 05.04.2008
ага, я уже без Visual Assist как без рук
Visual Assist это:
более продвинутая подсветка синтаксиса
подсказки
рефакторинг
[Ответ]
Akad 02:10 07.04.2008
The_God, Не совсем так. Если человек только начинает программировать. Понимать что такое алгоритм, api, события и т.п. то ИМХО ему лучше начать с чего-нибудь по проще. Типа дельфи. Ну или Borland c++, если важен именно язык. Когда человек поймет основу, ему уже будет пофиг и язык программирования, и IDE, и прочие визуал асисты. Хотя в кодеварриоре мне его сейчас сильно не хватает. ((
Короче lermontov, начинай с чего попроще. Сразу писать какое-то сложное приложение - это очень тяжело. Посмотри лучше в сторону дельфи-подобного языка для начала. А как напишешь какой-нибудь калькулятор, построитель графиков или еще что-нибудь подобное, уже можно и на с++ посмотреть. Для новичка он все-таки имхо сложен. Тут помимо алгоритмики еще нужно понимание архитектуры системы под которую пишешь, двоично/шеснадцатиричного исчисления, и т.п. вещей.
[Ответ]
Ivan XXX 06:14 07.04.2008
турбо си - наш выбор )
аскетичнее некуда ))
[Ответ]
DeniSS1 19:47 07.04.2008
Сообщение от liness:
под виндой моё имхо удобен Dev C++(
С него начинал. Оч удобная вещь! Сейчас пользуюсь в основном Microsoft Visual C++ 6.0
[Ответ]
lermontov 21:28 07.04.2008
А ктонибуть может выложить на торенте DEV C++?? а то я что то поискал там нету его!!
ну кстати, калькулятр я уже могу сотворить!!!
конечно воспользуюсь многими советами и попробую некоторые из предложенных программ.Но както уж очень мне приглянулся билдер и сод блокс,но тут возникает проблема некоторые алгоритмы работают в одной программе но не работают в другой.Например:
//// Теперь можно обращаться к элементам по индексу
cout<<v[0]<<endl;
cout<<v[1]<<endl;
}
ОЧ благодарен FNIFESTу за её составление
но вот в билдоре она не пошла !!!оч жаль !!!так как, чесно говоря, все сводится к ее использованию, но буду пробовать ее на работоспособность в VС !!
[Ответ]