Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для Анёк
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 20

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

07.06.2013, 03:26. Показов 1208. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот задание. Дан текст, содержащий от 2 до 40 слов, в каждом из которых от 1 до 6 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от первого слова и удовлетворяют следующему свойству: в слове встречается хотя бы одна из гласных букв (e, u, i, o, a) .
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 <vcl.h>
#pragma hdrstop
#include <dstring.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
// ïðîâåðÿåò íà ãëàñíûå
bool glasn(char *s)
{
        int i;
        char v[] = "aoiue";     //ìàññèâ ãëàñíûõ
        for (i = 0; i < 6; i++)
                if (strchr(v, s[i]))       //  strchr - ïðîâåðÿåò ñëîâî íà
                        return true;       //  íàëè÷èå ãëàññíûõ
        return false;
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString text;
AnsiString slovo;
char a[40][6];        // â ñòðîêå 40 ñèìâîëîâ ïî 6 ñëîâ
 
    text=Edit1->Text;
    if ( int m=text.Pos('.'))  //ïðîâåðêà íà òî÷êó
     {
    int  i=0;
   int p=text.Pos(' ');
    while (p!=0)
      {
      slovo=text.SubString(1,p-1);       // êîïèðîâàíèå ÷àñòè ñòðîêè
      strncpy(a[i], slovo.c_str(), 6);  //slovo.c_str() - ïðåîáðàçîâàíèå ñòðîêè
      i++;                               // â íóëüòåðìèíàëüíóþ
      text.Delete(1,p);
      p=text.Pos(' ');       // pos - ïîèñê
      }
    text.Delete(text.Length(),1);
    strncpy(a[i],text.c_str(),6);    // strncpy - êîïèðóåò
    Edit2->Text="";
 
    for (int k=1; k<i ;k++)
    if (!strcmp(a[k],a[0]) && glasn(a[k])) // ïðîâåðêà ïåðâîãî ñëîâà è ãëàñíûõ
   Edit2->Text = Edit2->Text+' '+a[k];  // strcmp - îäèíàêîâûå ñòðîêè
     }
     else ShowMessage ("íåò òî÷êè");
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.06.2013, 03:26
Ответы с готовыми решениями:

Знаю , что подобное задание на форуме есть, но подскажите как правильно оформить мой код, пожалуйста
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &quot;locale.h&quot; #include &quot;math.h&quot; #include &quot;ctype.h&quot; //Не правильно считает сумму и в...

Ребята посмотрите код вроде все правильно сделал почему-то не запускается
import random class Railway_ticket: &quot;&quot;&quot;Документация класса билета на поезд id-номер билета price-цена билета ...

Не работает прога, посмотрите пожалуйста код
Необходимо чтобы выбирая элемент (товар) из Комбо 1 стоимость этого товара выводилась в соседнем текст боксе... написал код а почему то...

9
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
07.06.2013, 06:33
"неправильно" понятие растяжимое.
я вот могу утверждать, что программа работает правильно, докажите мне обратное.

первое зерно ошибок заложено в смешанном использовании AnsiString и char*
опасен тот же метод c_str(), в таких делах надо быть осторожным, а если опыта нет, то следует использовать либо то либо то (совет: перепишите код используя только AnsiString и все заработает.)

почувствуйте разницу между
C++
1
text.Delete(1,p);
и
C++
1
text = text.Delete(1,p);
а если не хотите отказываться от мешанины, то убедитесь что strncpy работает как вам надо, возможно вы будете удивлены.
0
 Аватар для Анёк
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 20
07.06.2013, 09:26  [ТС]
Подскажите пожалуйста как переделать в AnsiString
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
07.06.2013, 09:42
подсказать могу.
вместо массива
C++
1
char a[40][6];        // в строке 40 символов по 6 слов
использовать
C++
1
2
TStringList *sl;
sl = new TStringList();
тогда присваивать вместо
C++
1
strncpy(a[i], slovo.c_str(), 6);
так
C++
1
sl->Strings[i] = slovo;
а сравнивать вместо
C++
1
 if (!strcmp(a[k],a[0]))
так
C++
1
if(sl->Strings[k] != sl->Strings[0])
ну и переписать малость bool glasn(char *s) с s как AnsiString
не забывая что индексация AnsiString начинается с 1, а не с 0 как у char*
1
 Аватар для Анёк
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 20
07.06.2013, 10:10  [ТС]
Спасибо большое,но к сожалению ничего не получилось.
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
07.06.2013, 10:12
опять "запускается, работает, но не правильно"?
жаль(
знал бы в чем там дело, может быть помог
0
 Аватар для Анёк
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 20
07.06.2013, 10:23  [ТС]
вообще не работает.
0
6 / 6 / 1
Регистрация: 14.05.2013
Сообщений: 43
07.06.2013, 11:35
Вы сами писали этот код?
C++
1
2
3
4
for (int k=1; k<i ;k++){
   if (!strcmp(a[k],a[0]) && glasn(a[k])) 
   Edit2->Text = Edit2->Text+' '+a[k];  
   }
Проверяете этим !strcmp(a[k],a[0]) что ? сравнивая с первым словом, в случае если они совпадают получите 0, т.е. условие будет false а потом еще инверсию '!'. Получите, что выведуться слова совпадающие с первым. Как у вас работает strchr я вообще не понял
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
07.06.2013, 11:48
Цитата Сообщение от ilya80let Посмотреть сообщение
Получите, что выведуться слова совпадающие с первым
да, кстати, насчет strcmp верно подмечено, но там проблемы начинаются раньше...
а strchr правильно заюзано, - если возвращает не NULL, то символ присутствует в слове.
Цитата Сообщение от ilya80let Посмотреть сообщение
Вы сами писали этот код?
смелое предположение)
0
 Аватар для Анёк
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 20
07.06.2013, 18:31  [ТС]
Сама, ну вчера помог чуть-чуть преподаватель с некоторыми функциями. Ошибку в цикле я сегодня заметила)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.06.2013, 18:31
Помогаю со студенческими работами здесь

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

Пожалуйста посмотрите код, не пойму, что в окончании
дано действительное число х, натуральное число n. вычислить: 1/x+1/x*(x+1)+...+1 x*(x+1)...(x+n) #include &lt;iostream&gt; #include...

Посмотрите,пожалуйста,программку...что-то не работает...
#include&lt;stdio.h&gt; #include&lt;alloc.h&gt; #include&lt;string.h&gt; int main() { struct{ char fam; float ves; int kol; int...

Посмотрите код, подскажите что исправить
Вот 4 дня назад начал изучать C++ Учительница по информатике дала задачу: Вводятся 3 числа. Если положительное - возвести во 2...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru