Форум программистов, компьютерный форум CyberForum.ru

Символьные строки и текстовые файлы - C++

Восстановить пароль Регистрация
 
core123
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 15
19.06.2010, 04:22     Символьные строки и текстовые файлы #1
День добрый. Есть две задачи.

1. Ввести символьную строку. Перед каждым символом 'а' вставить символ '!'. Дополнительных строк не использовать(При выводе строк использовать функцию puts и дополнительных строк не использовать)

2. В текстовом файле содержатся даты типа Date.
C++
1
2
3
4
5
Struct Date
{
char Month[15];
int Day;
};
заменить все даты, у которых поле Month ровно 'Июнь' или 'Июль' на 'Август'.

Помогите кто чем может, заранее спасибо.

Добавлено через 14 часов 29 минут
Upup!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2010, 04:22     Символьные строки и текстовые файлы
Посмотрите здесь:

C++ Строки символов...текстовые файлы
C++ Текстовые файлы
Строки символов . Текстовые файлы... C++
C++ Символьные файлы, С++
C++ Текстовые файлы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
19.06.2010, 06:36     Символьные строки и текстовые файлы #2
1.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    int sz=128;
    char str[sz];
    gets(str);
    int i=0;
    while (i < sz)
    {
        if(str[i]=='a')
        {
            int save=i; i++; char c='a';
            while(i < sz)
            {
                str[i]=str[i]+c;
                c=str[i]-c;
                str[i]=str[i]-c;
                i++;
            }
            i=save;
            str[i]='!'; i+=2;
        }
        i++;
    }
    puts(str);
    return 0;
}
core123
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 15
19.06.2010, 19:46  [ТС]     Символьные строки и текстовые файлы #3
Спасибо большое, он кстати не хотел пахать, а через const нормально поехало. А вторая как я понимаю побольше будет...
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
20.06.2010, 00:15     Символьные строки и текстовые файлы #4
во второй
просто создаешь массив структур Date, потом заполняешь его, потом в цикле проверяешь поле Month, если оно удовлетворяет условию - меяешь значение
C++
1
2
3
4
5
for(int i=0;i!=n;i++)
{
   if(strcmp(DateArray[i].Month,"Jule")==0 or DateArray[i].Month,"June")==0)
        strcpy(DateArray[i].Month,"August");
}
DateArray - массив структур, n - его размер.
core123
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 15
20.06.2010, 02:08  [ТС]     Символьные строки и текстовые файлы #5
Спасибо, попробуем, напишу сегодня о попытках...

Добавлено через 5 минут
Ну как я понимаю, текстовый файл создаем до проги к примеру с 5 записями, считываем в консоль, а потом уже идет проверка на условие и этот цикл получается в самом конце.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
20.06.2010, 02:37     Символьные строки и текстовые файлы #6
да типа того:
сделай файл, где данные каждой структуры будут располагаться на отдельной строке, первое слово в строке - месяц, второе - день:
January 15
June 4
September 11
October 28
May 9
Jule 15
может я с названиями месяцев ошибся...
затем можно в программе открыть файл на чтение,
и считывать месц, число, месяц, число и т. д.
C++
1
2
3
4
5
6
7
int i=0;
ifstream inputFile("input.txt");
while(!inputFile.eof())
{
    inputFile >> DataArray[i].Month >> DataArray[i].Day;
    ++i;
}
и, наконец, проверка полей структур в массиве и замена, если потребуется, нужных полей. #include <fstream> не забудь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2010, 21:14     Символьные строки и текстовые файлы
Еще ссылки по теме:

Заданы символьные файлы f и g C++
C++ Текстовые файлы
Текстовые файлы в С++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
core123
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 15
20.06.2010, 21:14  [ТС]     Символьные строки и текстовые файлы #7
Спасибо, за помощь, буду пробовать, вечером выложу листинг, для корректировки, потому что уверен, что гладко врятли все пройдет, хотябы та-же среда - 2008, пришлось инт на воид использованную среду комментитьь и тп, чтобы запахало. Кстати, а в первой задаче зачем результат 0?? С ним консоль закрывалась даже с ф-цией гетч. По сути ведь в консоле результат то и должен выводиться

Добавлено через 17 часов 35 минут
Я не совсем понял какие функции нужно объявлять? Нужна ли функция вывода из файла?
Получается Объявляем структуру(файл уже создан) Потом функция вывода из файла, затем основной код программы? То есть после компиляции она должна сразу считывать инфу и выводить уже замененные даты?

Добавлено через 41 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct Date
{
char month[15];
int day;
};
 
Date *dates = NULL;
 
int EnterFromFile(char *name)
{
    
    FILE *fptr;
    if ( !(fptr = fopen(name, "r")))
    return 0;
    int n;
    fscanf(fptr, "%d", &n);
    dates = (Date *)malloc(n * sizeof(Date));
    for ( int i = 0; i < n; i++ )
    {
    fscanf(fptr, "%s", dates[i].month);
    fscanf(fptr, "%d", &(dates[i].day));
    }
    return n;
}
 
void Vivod( Date *o)
{
    printf("Month = %s\n", o->month);
    printf("Day = %d\n", o->day);
}
void main(void)
{
    int n,i;        
    char name[20];
    printf("enter filename = ");
    scanf("%s", name);
    n = EnterFromFile(name);
    printf("\n Izmenennie dati\n\n");
 
    for (i = 0; i < n; i++ )
    {
   if((strcmp(dates[i].month,"Jule")==0) || (strcmp(dates[i].month,"June")==0))
      {  
    strcpy(dates[i].month,"August");
    Vivod( &(dates[i]) );
    printf("\n");
   }
    }
    getch();
}
Только не знаю как сделать, без глобальной переменной, не хочет...

Добавлено через 3 минуты
Он выводит получается только 2 даты(если брать ваш список), а я хотел бы чтобы он выводил весь список с уже измененными.
Yandex
Объявления
20.06.2010, 21:14     Символьные строки и текстовые файлы
Ответ Создать тему
Опции темы

Текущее время: 22:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru