Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
core123
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 15
#1

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

19.06.2010, 04:22. Просмотров 570. Ответов 6
Метки нет (Все метки)

День добрый. Есть две задачи.

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

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

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

Добавлено через 14 часов 29 минут
Upup!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2010, 04:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Символьные строки и текстовые файлы (C++):

нужно переделать код (из Файлы текстовые (FILE*) в Файлы текстовые (потоки)) - C++
вот задание для программы: 6. Задан текстовый файл input.txt. Требуется определить строки этого файла, содержащие максимальную по длине...

Строки и текстовые файлы - C++
Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым...

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

Строки символов . Текстовые файлы... - C++
всем доброго времени суток! Помогите пожалуйста написать программу(кто может)...буду очень благодарен... Выполнить следующие...

Символьные файлы, С++ - C++
Ребят, все перепробовал - не работает, ибо я чайник. Задача: Дан файл f с целыми числами; получить в файле g четные компоненты файла f. ...

Заданы символьные файлы f и g - C++
Заданы символьные файлы f и g. Определить, совпадают компоненты файла f с компонентами файла g. Если нет, то получить номер первого...

6
Aye Aye
369 / 283 / 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;
}
1
core123
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 15
19.06.2010, 19:46  [ТС] #3
Спасибо большое, он кстати не хотел пахать, а через const нормально поехало. А вторая как я понимаю побольше будет...
0
Aye Aye
369 / 283 / 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 - его размер.
1
core123
0 / 0 / 0
Регистрация: 10.11.2009
Сообщений: 15
20.06.2010, 02:08  [ТС] #5
Спасибо, попробуем, напишу сегодня о попытках...

Добавлено через 5 минут
Ну как я понимаю, текстовый файл создаем до проги к примеру с 5 записями, считываем в консоль, а потом уже идет проверка на условие и этот цикл получается в самом конце.
0
Aye Aye
369 / 283 / 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> не забудь
0
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 даты(если брать ваш список), а я хотел бы чтобы он выводил весь список с уже измененными.
0
20.06.2010, 21:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2010, 21:14
Привет! Вот еще темы с ответами:

Текстовые файлы - C++
Помогите пожалуйста с программой. Она должна выводить все числа встеченные в программе (числом считать только те которые состоят только из...

Текстовые файлы в С++ - C++
Дан текстовый файл со строками длиной не более 255 символов. Переписать его содержимое в другой текстовый файл по строкам, начиная с...

Текстовые файлы. - C++
Дано целое число N и текстовый файл с именем Name1, содержащий один абзац текста, выровненный по левому краю. Отформатировать текст так,...

Текстовые файлы - C++
Текстовый файл состоит из нескольких строк. Записать во второй файл последние символы из каждой строки первого файла. Как это решить?...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.