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

Л/р "Использование строк" - C++

Восстановить пароль Регистрация
 
Getchar
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 16
14.03.2011, 11:00     Л/р "Использование строк" #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
#include "stdafx.h"
#include <stdio.h>
#include <cstring>
#include <iostream>
#include <conio.h> 
#include <windows.h>
#include <ctype.h>
 
 
using namespace std;
int main(){
 
    const int n=100;
    char buf[n],*sl=new char[10];
FILE *in=fopen("Dada.txt","r");
if (!in) return 1;
cout<<(int)'a'<<"==="<<(int)'A';
while (!feof(in))
{
fscanf(in,"%s", &buf);
if ((buf[0]=='a')||(buf[0]=='e')||(buf[0]=='o'))
buf[0]=toupper(buf[0]);
cout<< buf<<' ';
}
return 0;
}

Выполнить упражнения настоящей лабораторной работы, оформив программный продукт в виде многофайлового проекта, используя директивы условной компиляции.
Обработку текста произвести в функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
Определенное Вами значение должно дописываться к исходному текстовому файлу.
При выводе данных на консоль использовать функции консоли для выделения их цветом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2011, 11:00     Л/р "Использование строк"
Посмотрите здесь:

Использование структур, "Результаты зимней сессии" C++
Пожалуйста обьясните что вообще это такое "использование циклов с предпосылками и постпосылками" C++
Вопрос "хорошего тона", "стиля" в программировании - правильное использование #include C++
C++ error C2886: std::cout: использование символа в "using"-объявлении члена не допускается
C++ рекурсивный алгоритм и использование точности "Эпсилон"
C++ количество строк начинающих на "А" и заканчивающиеся на "и"
Объясните использование "double" в данном примере C++
C++ Создание и использование класса "Аквариум"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
14.03.2011, 14:44     Л/р "Использование строк" #2
Если вы используете потоки консольного ввода/вывода cin/cout, то при обработке файлов логичнее пользоваться потоками файлового ввода/вывода ofstream/ifstream.

Пример обработки файла можно посмотреть: В файле заменить каждый символ первого наиболее короткого слова на «*»
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
14.03.2011, 14:51     Л/р "Использование строк" #3
main.c:
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
55
56
57
58
#include <stdio.h>
#include <stdlib.h>
 
#include "handleErrors.h"
#include "capitalizeVowels.h"
 
#define ALLOC_STEP 5
#define safeFree(PTR) free(PTR), (PTR) = NULL
 
int main(int argc, char* argv[])
{
    FILE* fp;
    char** lines;
    char line[BUFSIZ];
    
    size_t currSize, size;
 
    currSize = size = 0;
 
    lines = NULL;
    
    if(argc != 2)
    errExit(1, "Usage: `%s' INPUT_FILE.\n", *argv);
 
    if((fp = fopen(argv[1], "a+b")) == NULL)
    errExit(1, "Can't open file `%s' for input.\n", argv[1]);
 
    while(fgets(line, BUFSIZ, fp))
    {
    if(currSize == size)
    {
        size += ALLOC_STEP;
        if((lines = realloc(lines, size * sizeof(char*))) == NULL)
        errExit(1, "Can't allocate memory.\n");
    }
    if((lines[currSize++] = duplicate(line)) == NULL)
        errExit(1, "Can't duplicate line.\n");
    }
 
    if(ferror(fp))
    errExit(1, "Error reading from file `%s'.\n", argv[1]);
    
    for(size = 0; size < currSize; ++size)
    {
    capitalizeVowels(lines[size]);
    if(fputs(lines[size], fp) == EOF)
        errExit(1, "Error writing to file `%s'.\n", argv[1]);
    if(fputs(lines[size], stdout) == EOF)
        errExit(1, "Error writing to stdout.\n", argv[1]);
    
    safeFree(lines[size]);
    }
    
    safeFree(lines);
        
    fclose(fp);
    exit(0);
}
capitalizeVowels.h:
C
1
2
3
4
5
6
7
#ifndef CAPITALIZE_H
#define CAPITALIZE_H
 
char* capitalizeVowels(char*);
char* duplicate(const char*);
 
#endif
capitalizeVowels.c:
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
#include "capitalizeVowels.h"
 
#include <string.h>
#include <stdlib.h>
 
#define VOWELS "aeiouy"
#define DELIMS " \t\n,;?.!()'\"+=-*/&^%@#$"
 
static char* nextWord(char*, char*, const char*);
 
char* capitalizeVowels(char* line)
{
    char* word = NULL;
 
    while(word = nextWord(line, word, DELIMS))
    if(strchr(VOWELS, *word))
        *word += 'A' - 'a';
 
    return line;
}
 
char* duplicate(const char* str)
{
    char* dup = malloc(strlen(str) + 1);
    if(dup)
    strcpy(dup, str);
    return dup;
}
 
static char* nextWord(char* line, char* lastWord, const char* delims)
{
    if(lastWord)
    lastWord = strpbrk(lastWord, delims);
    else
    lastWord = line;
    while(lastWord && *lastWord && strchr(delims, *lastWord))
    ++lastWord;
    return (lastWord && *lastWord ? lastWord : NULL);
}
handleErrors.h:
C
1
2
3
4
5
6
#ifndef HANDLE_ERRORS_H
#define HANDLE_ERRORS_H
 
void errExit(int, const char*, ...);
 
#endif
handleErrors.c:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "handleErrors.h"
 
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
 
void errExit(int code, const char* fmt, ...)
{
    va_list ap;
    va_start(ap, fmt);
    vfprintf(stderr, fmt, ap);
    va_end(ap);
    if(code)
    exit(code);
}
Пример работы программы:
Bash
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
nameless@nameless-laptop:~/c-sample$ cat txt.txt
       The mode string can also include the letter 'b' either as a last character or as a character between the characters
       in any of the two-character strings described above.  This is strictly  for  compatibility  with  C89  and  has  no
       effect;  the  'b' is ignored on all POSIX conforming systems, including Linux.  (Other systems may treat text files
       and binary files differently, and adding the 'b' may be a good idea if you do I/O to a binary file and expect  that
       your program may be ported to non-Unix environments.)
 
nameless@nameless-laptop:~/c-sample$ ./c-sample txt.txt
       The mode string can Also Include the letter 'b' Either As A last character Or As A character between the characters
       In Any Of the two-character strings described Above.  This Is strictly  for  compatibility  with  C89  And  has  no
       Effect;  the  'b' Is Ignored On All POSIX conforming systems, Including Linux.  (Other systems may treat text files
       And binary files differently, And Adding the 'b' may be A good Idea If You do I/O to A binary file And Expect  that
       Your program may be ported to non-Unix Environments.)
 
nameless@nameless-laptop:~/c-sample$ cat txt.txt
       The mode string can also include the letter 'b' either as a last character or as a character between the characters
       in any of the two-character strings described above.  This is strictly  for  compatibility  with  C89  and  has  no
       effect;  the  'b' is ignored on all POSIX conforming systems, including Linux.  (Other systems may treat text files
       and binary files differently, and adding the 'b' may be a good idea if you do I/O to a binary file and expect  that
       your program may be ported to non-Unix environments.)
 
       The mode string can Also Include the letter 'b' Either As A last character Or As A character between the characters
       In Any Of the two-character strings described Above.  This Is strictly  for  compatibility  with  C89  And  has  no
       Effect;  the  'b' Is Ignored On All POSIX conforming systems, Including Linux.  (Other systems may treat text files
       And binary files differently, And Adding the 'b' may be A good Idea If You do I/O to A binary file And Expect  that
       Your program may be ported to non-Unix Environments.)
 
nameless@nameless-laptop:~/c-sample$


Вывод в консоль не раскрашиваю, ты уж извини.
Yandex
Объявления
14.03.2011, 14:51     Л/р "Использование строк"
Ответ Создать тему
Опции темы

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