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

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

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

помогите с програмкой - C++

01.10.2009, 22:11. Просмотров 491. Ответов 9
Метки нет (Все метки)

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

Помогите пожалуйста с написанием данной программки...

Добавлено через 1 час 6 минут
или подскажите пожалуйста коды знаков препинания

или проще их так перечислить??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2009, 22:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос помогите с програмкой (C++):

Проконсультируйте с програмкой - C++
Ввести строку символов, в которой могут быть символы вернего и нижнего регистров. Нужно символы верхнего регистра заменить символом " * ". ...

Требуется помощь с програмкой - C++
Подскажите пожалуйста что мне изменить в этой программе: #include<reg51.h> #include<lab8.h> #include<ssi.h> #define...

выручите плз с програмкой - C++
Люди добрые, помогите новенькой... Вобщем задали задачку: Дана двумерная матрица m=n. Если максимальный элемент находится выше главной...

что не такс програмкой?я хочу вывести содержимое файла на экран? - C++
#include <iostream> #include <fstream> using namespace std; int main()

Помогите Доброму Человеку с програмкой - Delphi
Есть ли среди вас хоть один человек который может написать простейшую программу под винды (сам то я тока и знаю что веб программирование...

помогите с небольшщй програмкой на java - Java SE
Написать приложение «Калькулятор», выполняющее арифметические операции. Операнды храняться в переменных типа long и float, а тип...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.10.2009, 22:44 #2
для знаков препинания используй обычный массив чаров. или если нужны именно кода, то вот переписывай их отсюда ASCII.rar
batonza
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 5
02.10.2009, 12:07  [ТС] #3
Цитата Сообщение от M128K145 Посмотреть сообщение
для знаков препинания используй обычный массив чаров. или если нужны именно кода, то вот переписывай их отсюда ASCII.rar
А можешь показать как так через массив чаров
это так записывается??:

char []="!" , "," , "." , ":" , ";" , "?";

вроде все знаки препинания

И еще такой вопрос, чтото все на форуме говорят, что нельзя удалить слова и знаки препинания в них в самом файле, это так??
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
02.10.2009, 12:11 #4
Посмотри функцию ispunct().

Добавлено через 2 минуты
И еще такой вопрос, чтото все на форуме говорят, что нельзя удалить слова и знаки препинания в них в самом файле, это так?
А как ты их удалишь из файла ?
Можно прочитать весь файл в массив, изменить массив и записать массив в файл.
batonza
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 5
02.10.2009, 13:25  [ТС] #5
Цитата Сообщение от odip Посмотреть сообщение
Посмотри функцию ispunct().

Добавлено через 2 минуты

А как ты их удалишь из файла ?
Можно прочитать весь файл в массив, изменить массив и записать массив в файл.
нифига себе это я даже не представлюя как весь файл в массив записать
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
02.10.2009, 13:35 #6
Молча.
Выделяешь большой кусок памяти и записываешь.
batonza
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 5
02.10.2009, 15:32  [ТС] #7
Пробовал сделать, но чтото как то плохо
непонимаю куда здесь впихнуть delete
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
#include <stdio.h>
#include <string.h>
 
void main()
{
    int kp;
    char *k, *nf, *kf;
    FILE *f1;
    if ((f1 = fopen("D:\\work\\B.txt", "a")) == 0)
    {
        printf("Ошибка при открытии файла B.txt");
        return 1;
    }
    const int N = 1000;
    char ch[N];
    char s[10]=',','.',':',';','!','?';
    nf = fgets(ch, N, f1);
    if (!nf)
    {
        printf("Ошибка чтения файла B.txt");
        return 1;
    }
    while ((kf = strchr(nf, '.')) != NULL)
    {   kp = 0;
        for (k = nf; k <= kf; k++)
            if (*k == s)  kp++;
            if (kp > 1)
        {
            if (nf != ch) fputc(' ', f2);
            for (k = nf; k <= kf; k++)
                fputc(*k, f2);
        }
        nf = ++kf;
        while (*nf == s) nf++;
    }
    fclose(f1);
    return 0;
}
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
02.10.2009, 17:03 #8
Ты сначала выкини код работы с файлами и просто сделай со строкой.
C
1
2
3
4
5
6
7
8
char ch[1000];
 
strcpy( ch, "тут какой-то текст" );
 
// тут код обработки
 
// печатаем результат
printf( "%s\n", ch );
Добавлено через 38 секунд
А когда заработает - тогда делай с файлом.
Потому что с файлом ты тоже неправильно работаешь.
А так у тебя будет на одну проблему меньше
batonza
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 5
02.10.2009, 21:28  [ТС] #9
Цитата Сообщение от odip Посмотреть сообщение
Ты сначала выкини код работы с файлами и просто сделай со строкой.
C
1
2
3
4
5
6
7
8
char ch[1000];
 
strcpy( ch, "тут какой-то текст" );
 
// тут код обработки
 
// печатаем результат
printf( "%s\n", ch );
Добавлено через 38 секунд
А когда заработает - тогда делай с файлом.
Потому что с файлом ты тоже неправильно работаешь.
А так у тебя будет на одну проблему меньше
попробовал, получилось так
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
#include <string.h>
#include <stdio.h>
#include <conio.h>
void main()
{
int dlin,i,bw,ew, h;
i=0;
char ch[1000], bh[1000];
clrscr();
strcpy( ch, "Razrabotka sposoba, realizacii postavlennoi zadachi." );
dlin=strlen(ch);
ch[dlin]=' ';
ch[dlin+1]='\0';
dlin+=1;
h=0;
i=0;
bw=0;
while(i<dlin)
{
    if (ch[i]=='.' || ch[i]==',' || ch[i]==':' || ch[i]==';' || ch[i]=='!' || ch[i]=='?' || ch[i]=='-') {
        while(ch[i]=' ') {
         i--;
         ew++;
         delete(ch,bw-ew);
        }
      bw++;
     strncpy(bh,&ch[bw],ew-bw+1);
  };
 i++;
}
printf( "%s\n", bh );
getch();
}
но чтото он не компилиться...
вроде по смыслу у меня получилось ищет знак препинания, потом в обратную сторону пробел, и удаляет слово с пробелом
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
02.10.2009, 21:48 #10
Если не компилируется - значит по смыслу ничего не получилось.
Исправляй ошибку.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2009, 21:48
Привет! Вот еще темы с ответами:

Поиогите с програмкой - Pascal
Создать программу, которая сохраняет информацыю в типизированои файле о определенном элементе (использовать структуру и динамичный...

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

прошу совета с простенькой програмкой - C (СИ)
ребята, я новичек, нужна помощь как все это зделать, пробовал разные аврианты, но не правильно, помогите пожайлуста! вообщем надо зделать...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.10.2009, 21:48
Ответ Создать тему
Опции темы

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