Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2010, 20:10   #1
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию векторы и строки С\С++

Дали мне 2 задачи а я сижу и немогу их решить, помогите

1.прочитать из файла массив, элементы занести в вектор, добавить в вектор элементы , пересортировать вектор посчитать сумму всех положительных эелементов

2.текст в файле :"в науке есть радость.Наука приносит удовольствие"
Используя функции обработки строковых и символьных переменных скорректировать текст на "в науке есть радость, она приносит удовольствие"
Айдар вне форума Ответить с цитированием
Старый 16.09.2010, 20:22   #2
vlad_light
Пользователь
 
Регистрация: 27.08.2010
Сообщений: 95
По умолчанию

вектор на С++ - это:
#include <vector> // добавили библиотеку
vector<T> v1;// создаём вектор типа Т
операции с векторами посмотри в гугле.
Во втором задании пробегаешь значение от 1 до длинны строки и заменяешь "." на "," , "Наука" на "она".
vlad_light вне форума Ответить с цитированием
Старый 16.09.2010, 20:52   #3
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

дело в том что у меня тупой старый компилятор ниче не компилируеться
Айдар вне форума Ответить с цитированием
Старый 16.09.2010, 21:02   #4
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

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

Код:
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <ctime>
#include <iterator>
 
class Plus
{
public:
        Plus():sum(0){}
        void operator ()(int f)
        {
                if (f>0)
                        sum+=f;
        }
        const int GetSum()const{return sum;}
private:
        int sum;
};
 
int main()
{
        srand(static_cast<unsigned>(time(NULL)));
    std::ifstream ifs("Test.txt");
        if(!ifs)
        {
                std::cout<<"Can`t open file\n";
                return 1;
        }
    int*Arr;
    int n=0, numb;
    while(!ifs.eof())
    {
         ifs>>numb;
         n++;
    }
        ifs.close();
        std::ifstream ifss("Test.txt");
        if(!ifss)
        {
                std::cout<<"Can`t open file\n";
                return 1;
        }
    Arr=new int[n];
    int i=0;
    while(!ifss.eof())
    {
        ifss>>Arr[i++];
    }
    std::vector<int> Vec(Arr, Arr+n);
        for(int i=1; i<5; ++i)
                Vec.push_back(-rand());
        std::cout<<"Initial vector:\n";
        std::copy(Vec.begin(), Vec.end(), std::ostream_iterator<int>(std::cout, " "));
        std::sort(Vec.begin(), Vec.end());
        std::cout<<std::endl;
        std::cout<<"Sorted vector:\n";
        std::copy(Vec.begin(), Vec.end(), std::ostream_iterator<int>(std::cout, " "));
        Plus sum=std::for_each(Vec.begin(), Vec.end(), Plus());
        std::cout<<std::endl;
        std::cout<<"Sum= "<< sum.GetSum() <<'\n';
}
Айдар вне форума Ответить с цитированием
Старый 16.09.2010, 21:11   #5
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

вот вторая задача только тут слово i mnut убирают можно тоже максим упростить ее и убрать все не нужное

Код:
#include<stdio.h>
#include<conio.h>
#include <string.h>
 
const char * SearchFor = "i mnut";
int main(int argc, char* argv[])
{
        char InputString[255];
        char OutputString[255];
	FILE * Stream = fopen("Test.txt", "r");

	if(fgets(InputString,255,Stream))
	{


		char* Start=NULL;
		if(Start=strstr(InputString,SearchFor))
		{
			printf("Schitano:\n");
			printf("%s\n",InputString);
			memset(OutputString,0x00,strlen(OutputString));
			memcpy(&OutputString[0],&InputString[0],strlen(InputString)-strlen(Start));
			memcpy(&OutputString[strlen(InputString)-strlen(Start)],Start+strlen(SearchFor),strlen(Start)-strlen(SearchFor)+1);
			printf("\nIspravleno:\n");
			printf("%s\n",OutputString);
			fclose(Stream);
			Stream = fopen("Test.txt", "w");
                        fwrite(OutputString,strlen(OutputString),sizeof(char),Stream);
                }
                else
                {
                        printf("Ne naideno stroki\n");
                }
        }
        fclose(Stream);
        getch();
        return 0;
}
//---------------------------------------------------------------------------
Айдар вне форума Ответить с цитированием
Старый 16.09.2010, 22:01   #6
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

ребят ну помогите плиз хотябы с 1 задачей
Айдар вне форума Ответить с цитированием
Старый 16.09.2010, 22:12   #7
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

вообщем 2 задачу я решил, но вот с первой заморочки, можете убрать все лишние в коде я программу буду запускать на консоли (ненужные библ, проверку на сущ файла, std::, классы)
Айдар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
векторы и файлы boomeer Общие вопросы C/C++ 2 05.08.2010 19:15
Векторы, подпрограммы anatoliy_julia Помощь студентам 2 15.09.2009 16:02
Векторы в С++ Many man Помощь студентам 5 26.04.2009 12:35
Паскаль. Векторы. koston Помощь студентам 10 09.04.2008 20:44