konfetka12 Опубликовано 6 ноября, 2013 Жалоба Поделиться Опубликовано 6 ноября, 2013 Спасибо еще раз за помощь, просто преподаватель стал ко всему строго придираться и предупредил что все задания должны быть написаны с помощью функций Ссылка на комментарий Поделиться на другие сайты Поделиться
konfetka12 Опубликовано 16 ноября, 2013 Жалоба Поделиться Опубликовано 16 ноября, 2013 Здравствуйте снова прошу помощи тема "Строковый ввод-вывод" 1) Скопировать из файла F1 в файл F2 все строки, которые содержат только одно слово. 2) Найти самое длинное слово в файле F2. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 16 ноября, 2013 Жалоба Поделиться Опубликовано 16 ноября, 2013 (изменено) konfetka12 #include<iostream>#include<sstream>#include<fstream>#include<string>using namespace std;int main(){int i; string s,sm,ins,outs; cout<<"Name of the input file: "; cin>>ins; ifstream ifs(ins);if(ifs.fail()){cerr<<"Error of opening of the input file "<<endl; cin.get(); return 1;}cout<<"Name of the output file: "; cin>>outs; ofstream ofs(outs); cout<<endl;while(getline(ifs,s)){istringstream ist(s); for(i=0;ist>>sm;i++); if(i==1)ofs<<s<<'\n';}ifs.close(); ofs.close(); ifstream kfs(outs);sm.clear(); while(kfs>>s)if(s.length()>sm.length())sm=s; kfs.close(); cout<<sm<<endl; cout<<"\nPress Enter to exit\n"; cin.get(); cin.get();} Изменено 16 ноября, 2013 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
konfetka12 Опубликовано 16 ноября, 2013 Жалоба Поделиться Опубликовано 16 ноября, 2013 konfetka12 #include<iostream>#include<sstream>#include<fstream>#include<string>using namespace std;int main(){int i; string s,sm,ins,outs; cout<<"Name of the input file: "; cin>>ins; ifstream ifs(ins);if(ifs.fail()){cerr<<"Error of opening of the input file "<<endl; cin.get(); return 1;}cout<<"Name of the output file: "; cin>>outs; ofstream ofs(outs); cout<<endl;while(getline(ifs,s)){istringstream ist(s); for(i=0;ist>>sm;i++); if(i==1)ofs<<s<<'\n';}ifs.close(); ofs.close(); ifstream kfs(outs);sm.clear(); while(kfs>>s)if(s.length()>sm.length())sm=s; kfs.close(); cout<<sm<<endl; cout<<"\nPress Enter to exit\n"; cin.get(); cin.get();} не понимаю что сделать выводит ошибки при компиляции Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 16 ноября, 2013 Жалоба Поделиться Опубликовано 16 ноября, 2013 (изменено) не понимаю что сделать выводит ошибки при компиляции Так у тебя на скрине в программе в начале совсем не те строки, что у меня. Зачем-то подключен заголовочный файл stdio.h от C, тут ненужный, а iostream, sstream, fstream, string не подключены. Скопируй программу целиком, а не ее часть. Изменено 16 ноября, 2013 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
konfetka12 Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 не понимаю что сделать выводит ошибки при компиляции Так у тебя на скрине в программе в начале совсем не те строки, что у меня. Зачем-то подключен заголовочный файл stdio.h от C, тут ненужный, а iostream, sstream, fstream, string не подключены. Скопируй программу целиком, а не ее часть. все равно не распознает Ссылка на комментарий Поделиться на другие сайты Поделиться
Иазяв Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 konfetka12 Иногда такое происходит из-за разных сред разработки. У меня нечто подобное было, когда RAD Studio и VisualStudio не могли договориться между собой. (Переносился только код, а не сам проект.) У них разные библиотеки. Чтобы все работало, в RAD надо было обязательно дописывать одну строчку, но какую не помню. Ссылка на комментарий Поделиться на другие сайты Поделиться
Иазяв Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 Тролль А что такое ifs? Откуда оно берется? if(ifs.fail()) Давно не программировала на C++ и не следила за его развитием. Что делает функция fail(), к какой библиотеке она относится? Я так и не смогла освоить работу с файлами в C++. Ссылка на комментарий Поделиться на другие сайты Поделиться
konfetka12 Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 и как мне подправить это все? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 (изменено) Иазяв ifs у меня имя в программе для входного файла (потока), ifstream ifs(ins); открывает файл с именем из строки ins как входной поток с именем ifs. А ifs.fail() дает как результат булевское значение true или false смотря по тому, удалось открыть файл или нет. konfetka12 Судя по скрину, у тебя C++ Builder, к тому же, похоже, какая то древняя версия... Насколько помнится, там была недоработка, классы fstream не работали со строками класса string. Замени int i; string s,sm,ins,outs; на int i; string s,sm; char ins[ 255],outs[ 255]; И выкинь ненужную чертовщину, которую ты все же оставила зачем-то в начале программы: #include <clx.h> #pragma hdrstop А еще лучше - поставь нормальную простую среду программирования на C++, например, http://orwelldevcpp.blogspot.de/2013/11/dev-c-553-released.html Там есть и удобная портабельная версия размером 17МВ, работающая после распаковки без установки. К сожалению, разные реализации C++ имеют отличающиеся библиотеки, да и сам C++ все время меняется - старое выкидывается, новое добавляется... Кстати, интересно, по какой специальности ты учишься? Изменено 17 ноября, 2013 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
konfetka12 Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 да мы работаем в C++ Builder 6самое грустное что я изначально не хотела разбираться в программировании и теперь жалею а сами файлы я так поняла должны быть уже созданы и один из них заполненпросто теперь программа не находит сам файл, ни с расширением ни без него и ошибки при этом никакой не выводит просто запрашивает имя и все закрывается Ссылка на комментарий Поделиться на другие сайты Поделиться
Иазяв Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 Тролль Спасибо огромное! Я впервые столкнулась с функцией fail. Мы всегда проводили проверку с помощью is_open. Почему-то в msdn нет упоминания этой функции, а в гугле выдается результат всего кроме описания функции. (Наверно, неправильно задаю вопрос.) Не могли бы вы дать ссылку на почитать о функции? А строчку с ifstream ifs(ins); я пропустила, поэтому и спросила, откуда взялась переменная. Извиняюсь за невнимательность. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 (изменено) konfetka12 Если запрашивает имя и закрывается, вероятно, что просто файл не там, где она ищет, а ищет она там, где находится скомпилированный exe-файл. Для простоты можно поместить файл в известное место и указывать при запросе от программы полный путь к нему. Например, поместить файл a.txt в корневую папку диска C и вводить при запросе программой имен файлов C:\a.txt и C:\b.txt А чтобы убедиться, что файл просто не найден, поставь перед return 1; еще один раз cin.get(); - тогда будет выдаваться сообщение. Да, "сами файлы я так поняла должны быть уже созданы и один из них заполнен" - должен быть создан только входной файл, выходной программа создаст самостоятельно, она только запрашивает имя для него. Но если он уже и существует, ничего страшного, он просто будет переписан. "да мы работаем в C++ Builder 6" Интересно, почему вы все же работаете в среде более чем десятилетней давности разработки. Последний номер версии C++ Builder, насколько я помню, 19... ИазявВ C++ одно и то же обычно можно сделать десятком или больше способов, а разных функций как рыбы в океане, так что ничего удивительно, что вы прошли мимо fail. Ссылка - http://www.cplusplus.com/reference/fstream/ifstream/ ее там можно найти в разделе функций, унаследованных от класса ios Изменено 17 ноября, 2013 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
konfetka12 Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 я создавала файл и в той же папке где сохранена программавсе равно не находит и в корневую папку тоже пробовала с охранять ни в какую >А чтобы убедиться, что файл просто не найден, поставь перед return 1; еще один раз cin.get(); - тогда будет выдаваться сообщение.прописала, теперь не закрывает окно и пишет ошибку Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 (изменено) "не закрывает окно и пишет ошибку" - это сообщение программы "Error of opening of the input file" или какую-то свою? Окно после нажатия Enter или на кнопку закрытия окна в верхнем правом углу закрывается? Какая у тебя операционная система? Когда ты создаешь файл в корневой папке, при запросе программой имени файла ты прописываешь путь к этому файлу? Изменено 17 ноября, 2013 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
konfetka12 Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 введите имя> ввожу имя *.txt Enter и выводит сообщение программы "Error of opening of the input file" Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 (изменено) Значит, пока что программа работает правильно, просто не находит файла на положенном ему месте. Что за имя *.txt? Создай текстовый файл, например, с содержанием aaa bbb bbbccc dddd dddd dddи именем a.txt , помести его в корневую папку диска С и напиши в ответ на запрос программы C:\a.txt Изменено 17 ноября, 2013 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
konfetka12 Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 все равно не работает может все таки создание файла программно прописать и ввод содержимого с клавиатуры? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 (изменено) Не вижу смысла. Никакой разницы, программно или в редакторе. Ясно, что программа у тебя почему-то не находит файл, то ли имя неправильно, то ли он не там, где она его ищет. Я за это время скачал C++ Builder, правда несколько более поздней версии, но раз у тебя программа скомпилировалась, это не должно влиять. У меня и в C++ Builder при правильном указании имени файла и пути к нему программа работает, находит файл и выдает результат. Попробуй закинуть в корневую папку диска файлы a.txt и просто а с одинаковым содержанием, как у меня выше, и введи пути C:\a.txt и C:\b.txt P.S. Еще могу предложить запустить C++ Builder с правами администратора - на тот случай, если у тебя на диске стоит защита. Изменено 17 ноября, 2013 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
konfetka12 Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 я не понимаю как это происходит но теперь работает даже если не в корневой папке а в папке с откомпилированным файлом.. очень странно, Спасибо огромное!!!!! а можете еще посмотреть вот эту программу: тема строки задание: Преобразовать строку так, чтобы все слова в ней стали идентификаторами, слова состоящие только из цифр - удалить. мне нужно чтоб слова которые состоят из цифр и букв как-то обрабатывались, либо заменялись на символ либо из них удалялись цифры #pragma argsused #include <cstdlib> #include <iostream> #include <string.h> #include <stdio.h> void ClearString(char string[255]) { int i; for(i=0;i<255;i++) { string='\0'; }} int main(int argc, char *argv[]) { char str[255],s[255]="",t[255]="",c; bool r; int i=0,j=0; printf("Enter text>"); gets(s); strcpy(str,""); do { r=false; do { c=s;i++; if(c>'9'){r=true; } if(c==' '||c=='.'||c=='\0') { if(t[0]>'9'){if® { strcat(str,t); // соед строки strcat(str," "); }} t[j]='\0'; j=0; ClearString(t); break; } else {t[j]=c;j++; }} while(1); } while(c!='.'&&c!='\0'); printf("identifiers:\n"); puts(str); system("PAUSE"); return 0;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 (изменено) konfetka12 "мне нужно чтоб слова которые состоят из цифр и букв как-то обрабатывались, либо заменялись на символ либо из них удалялись цифры" Хорошо, будем удалять цифры. Напишу на С, C++ для такой задачи не дает преимуществ, но компилятор C++ этот код тоже обработает без проблем. #include<stdio.h>#include<ctype.h>void dc(char *s){char *p,*q; for(p=q=s;*p;*p++=*q++)while(isdigit(*q))q++;}int main(){char s[1000]; gets(s); dc(s); puts(s); getchar(); return 0;} Изменено 17 ноября, 2013 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Hidan Опубликовано 17 ноября, 2013 Жалоба Поделиться Опубликовано 17 ноября, 2013 Всем привет. Можете помочь еще с двумя задачами со строками?) 1) Даны натуральное число n, символы S1, ...,Sn. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами.Найти какое-нибудь слово, начинающееся с буквы а. 2)Дан текст. Для каждого из слов указать сколько раз оно встречается среди все слов образованными символами данного текста. Ссылка на комментарий Поделиться на другие сайты Поделиться
konfetka12 Опубликовано 19 ноября, 2013 Жалоба Поделиться Опубликовано 19 ноября, 2013 @Тролль, Огромное просто безграничное спасибо что помогаете!!! но у меня осталась последняя программа которую нужно сделать, если возможно помогите пожалуйста Тема: "Информационные динамические структуры" Порядок выполнения работы 1. Написать функцию для создания списка. Функция может создавать пустой список, а затем добавлять в него элементы. 2. Написать функцию для печати списка. Функция должна предусматривать вывод сообщения, если список пустой. 3. Написать функции для удаления и добавления элементов списка в соответствии со своим вариантом. 4. Выполнить изменения в списке и печать списка после каждого изменения. 5. Написать функцию для записи списка в файл. 6. Написать функцию для уничтожения списка. 7. Записать список в файл, уничтожить его и выполнить печать (при печати должно быть выдано сообщение "Список пустой"). 8. Написать функцию для восстановления списка из файла. 9. Восстановить список и распечатать его. 10. Уничтожить список. Задание: Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. Удалить из него К элементов перед элементом с заданным номером, добавить К элементов в конец списка. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 19 ноября, 2013 Жалоба Поделиться Опубликовано 19 ноября, 2013 (изменено) Hidan Вообще-то задания сформулированы так криво и косо, что их можно не делать, а нужно отдать обратно преподавателю, когда он выйдет из запоя... Ну да ладно. Даны натуральное число n, символы S1, ...,Sn. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами.Найти какое-нибудь слово, начинающееся с буквы а. #include<string.h>#include<stdio.h>int main(){char s[1000],*r=" ,\t\n",*t,b=0; gets(s); t=strtok(s,r);while(t){if(t[0]=='a'){b=1; break;} t=strtok(NULL,r);}puts(b?t:"None :("); getchar(); return 0;} Дан текст. Для каждого из слов указать сколько раз оно встречается среди все слов образованными символами данного текста. #include<string.h>#include<stdio.h>int main(){char s[1000],*p,*q,t[100],c=' '; int i,k,m; s[0]=c; p=s+1; gets(p); p[strlen(p)+1]=0; p[strlen(p)]=c;for(i=1;s[i];i++){ if(s[i-1]==c&&s[i]!=c)k=i-1; if(s[i-1]!=c&&s[i]==c){ strncpy(t,s+k,i-k+1); t[i-k+1]=0; for(m=0;q=strstr(s,t);m++)for(k=0;k<strlen(t);k++)q[k]=c; printf("%3d ",m); puts(t);}}puts("Press Enter for exit"); getchar(); return 0;} konfetka12 Тоже непонятно, что делать. В "Задании" одно, а в "Порядке выполнения работы" совсем другое. Надеюсь, что выполнять надо "Задание", а не "Порядок" - по крайней мере, в задании на восемь пунктов меньше :) Изменено 19 ноября, 2013 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Hidan Опубликовано 20 ноября, 2013 Жалоба Поделиться Опубликовано 20 ноября, 2013 Большое спасибо Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти