Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

Спасибо еще раз за помощь, просто преподаватель стал ко всему строго придираться и предупредил что все задания должны быть написаны с помощью функций

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Здравствуйте снова прошу помощи

тема "Строковый ввод-вывод"

 

1)  Скопировать из файла F1 в файл F2 все строки, которые содержат только одно слово.

2)  Найти самое длинное слово в  файле F2.

Ссылка на комментарий
Поделиться на другие сайты

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();}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

 

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();}

не понимаю что сделать выводит ошибки при компиляции

1.png

post-118460-0-58095800-1384627892_thumb.

Ссылка на комментарий
Поделиться на другие сайты

не понимаю что сделать выводит ошибки при компиляции

Так у тебя на скрине в программе в начале совсем не те строки, что у меня. Зачем-то подключен заголовочный файл stdio.h от C, тут ненужный, а iostream, sstream, fstream, string не подключены. Скопируй программу целиком, а не ее часть.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

 

не понимаю что сделать выводит ошибки при компиляции

Так у тебя на скрине в программе в начале совсем не те строки, что у меня. Зачем-то подключен заголовочный файл stdio.h от C, тут ненужный, а iostream, sstream, fstream, string не подключены. Скопируй программу целиком, а не ее часть.

все равно не распознает

1.png

post-118460-0-47928300-1384669594_thumb.

Ссылка на комментарий
Поделиться на другие сайты

konfetka12

Иногда такое происходит из-за разных сред разработки. У меня нечто подобное было, когда RAD Studio и VisualStudio не могли договориться между собой. (Переносился только код, а не сам проект.) У них разные библиотеки. Чтобы все работало, в RAD надо было обязательно дописывать одну строчку, но какую не помню.

Ссылка на комментарий
Поделиться на другие сайты

Тролль

А что такое ifs? Откуда оно берется?

if(ifs.fail())

Давно не программировала на C++  и не следила за его развитием. Что делает функция fail(), к какой библиотеке она относится? Я так и не смогла освоить работу с файлами в C++.

Ссылка на комментарий
Поделиться на другие сайты

Иазяв

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++ все время меняется - старое выкидывается, новое добавляется...

Кстати, интересно, по какой специальности ты учишься?

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

да мы работаем в C++ Builder 6
самое грустное что я изначально не хотела разбираться в программировании и теперь жалею

 

а сами файлы я так поняла должны быть уже созданы и один из них заполнен
просто теперь программа не находит сам файл, ни с расширением ни без него

и ошибки при этом никакой не выводит просто запрашивает имя и все закрывается

 

Ссылка на комментарий
Поделиться на другие сайты

Тролль

Спасибо огромное! Я впервые столкнулась с функцией fail. Мы всегда проводили проверку с помощью is_open.

Почему-то в msdn нет упоминания этой функции, а в гугле выдается результат всего кроме описания функции. (Наверно, неправильно задаю вопрос.) Не могли бы вы дать ссылку на почитать о функции?

А строчку с ifstream ifs(ins); я пропустила, поэтому и спросила, откуда взялась переменная. Извиняюсь за невнимательность.

Ссылка на комментарий
Поделиться на другие сайты

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

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

я создавала файл и в той же папке где сохранена программа
все равно не находит 
и в корневую папку тоже пробовала с охранять ни в какую

>А чтобы убедиться, что файл просто не найден, поставь перед return 1; еще один раз cin.get(); - тогда будет выдаваться сообщение.
прописала, теперь не закрывает окно и пишет ошибку

Ссылка на комментарий
Поделиться на другие сайты

"не закрывает окно и пишет ошибку" - это сообщение программы "Error of opening of the input file" или какую-то свою? Окно после нажатия Enter или на кнопку закрытия окна в верхнем правом углу закрывается? Какая у тебя операционная система? 

Когда ты создаешь файл в корневой папке, при запросе программой имени файла ты прописываешь путь к этому файлу?

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Значит, пока что программа работает правильно, просто не находит файла на положенном ему месте. Что за имя *.txt? Создай текстовый файл, например, с содержанием

 

 aaa  
 bbb bbb
ccc
 dddd dddd ddd

и именем a.txt , помести его в корневую папку диска С и напиши в ответ на запрос программы C:\a.txt

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

все равно не работает


может все таки создание файла программно прописать и ввод содержимого с клавиатуры?

Ссылка на комментарий
Поделиться на другие сайты

Не вижу смысла. Никакой разницы, программно или в редакторе. Ясно, что программа у тебя почему-то не находит файл, то ли имя неправильно, то ли он не там, где она его ищет. Я за это время скачал C++ Builder, правда несколько более поздней версии, но раз у тебя программа скомпилировалась, это не должно влиять.  У меня и в C++ Builder при правильном указании имени файла и пути к нему программа работает, находит файл и выдает результат. Попробуй закинуть в корневую папку диска файлы a.txt и просто а с одинаковым содержанием, как у меня выше, и введи пути C:\a.txt и C:\b.txt

P.S. Еще могу предложить запустить C++ Builder с правами администратора - на тот случай, если у тебя на диске стоит защита.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

я не понимаю как это происходит но теперь работает даже если не в корневой папке а в папке с откомпилированным файлом.. очень странно, Спасибо огромное!!!!!


а можете еще посмотреть вот эту программу:

тема строки

задание: Преобразовать строку так, чтобы все слова в ней стали идентификаторами, слова состоящие только из цифр - удалить.

 

мне нужно чтоб слова которые состоят из цифр и букв как-то обрабатывались, либо заменялись на символ либо из них удалялись цифры

 

#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;}
Ссылка на комментарий
Поделиться на другие сайты

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;}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Всем привет. Можете помочь еще с двумя задачами со строками?)

1) Даны натуральное число n, символы S1, ...,Sn. Группы символов, разделенные пробелами (одним или не­сколькими) и не содержащие пробелов внутри себя, будем называть словами.Найти какое-нибудь слово, начинающееся с буквы а.

2)Дан текст. Для каждого из слов указать сколько раз оно встречается среди все слов образованными символами данного текста.

Ссылка на комментарий
Поделиться на другие сайты

@Тролль,

Огромное просто безграничное спасибо что помогаете!!!

но у меня осталась последняя программа которую нужно сделать, если возможно помогите пожалуйста 

Тема: "Информационные динамические структуры"
 
Порядок выполнения работы
1. Написать функцию для создания списка. Функция может создавать пустой список, а затем добавлять в него элементы.
2. Написать функцию для печати списка. Функция должна предусматривать вывод сообщения, если список пустой.
3. Написать функции для удаления и добавления элементов списка в соответствии со своим вариантом.
4. Выполнить изменения в списке и печать списка после каждого изменения.
5. Написать функцию для записи списка в файл.
6. Написать функцию для уничтожения списка.
7. Записать список в файл, уничтожить его и выполнить печать
(при печати должно быть выдано сообщение "Список пустой").
8. Написать функцию для восстановления списка из файла.
9. Восстановить список и распечатать его.
10. Уничтожить список.
 
Задание:
Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. 
Удалить из него К элементов перед элементом с заданным номером, добавить К элементов в конец списка.
Ссылка на комментарий
Поделиться на другие сайты

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

Тоже непонятно, что делать. В "Задании" одно, а в "Порядке выполнения работы" совсем другое. Надеюсь, что выполнять надо "Задание", а не "Порядок" - по крайней мере, в задании на восемь пунктов меньше :)

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...