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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
#1

Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». - C++

02.10.2011, 13:31. Просмотров 1317. Ответов 16
Метки нет (Все метки)

Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».

Разработать программу на языке Си. Допускается использование переменных. Все строки должны быть размещены динамически с помощью оператора new. Разделителем слов в предложении считать только пробел. Все остальные символы считать частью слов предложения. Посимвольный доступ к элементам строки должен осуществляться с помощью указателей. Функции для работы со строками использовать можно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 13:31     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».
Посмотрите здесь:

Определить количество слов, которые начинаются и заканчиваются одной и той же буквой C++
C++ Дан текстовый файл. Определить среднее количество слов в строке
C++ Определить количество слов, которые содержат ровно четыре буквы
Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). ​​Определить количество слов, которые заканчиваются одной и той C++
Определить количество слов, которые начинаются и заканчиваются одной той же буквой C++
Определить количество элементов массива, которые являются произведением четного числа на нечетное C++
C++ Определить количество слов, которые содержат введенный символ
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.10.2011, 13:35     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #2
Цитата Сообщение от juli.ya92 Посмотреть сообщение
на языке Си
Цитата Сообщение от juli.ya92 Посмотреть сообщение
оператора new
Странно как-то...
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 13:36  [ТС]     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #3
Имеется ввиду например
char *j =new char;
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.10.2011, 13:38     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #4
juli.ya92, так делать в Си нельзя.
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 13:40  [ТС]     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #5
Мда ну незнаю тогда чему нас в универе учат...
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.10.2011, 14:13     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #6
В Си нет оператора new. Есть функции malloc/calloc/realloc, с помощью которых можно добиться того же эффекта.
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 14:14  [ТС]     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #7
Ну а в С++ он есть?
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.10.2011, 14:18     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #8
Цитата Сообщение от juli.ya92 Посмотреть сообщение
Ну а в С++ он есть?
Есть. Только в с++ лучше использовать std::string.
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 14:19  [ТС]     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #9
Мы такое ещё не проходили это раздел для начинающих или как?
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.10.2011, 15:05     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #10
Цитата Сообщение от juli.ya92 Посмотреть сообщение
Ну а в С++ он есть?
Ну а в С++ он есть. Но вы-то просили на С.

Не по теме:

Цитата Сообщение от juli.ya92 Посмотреть сообщение
это раздел для начинающих или как?
Где та грань, которая разделяет "начинающих" и "не начинающих"?

juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 15:10  [ТС]     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #11
Разработать программу на языке Си++
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.10.2011, 15:27     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #12
Если я правильно понял задание, то как-то так.
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
#include <iostream>
#include <cstring>
 
#define DELIMS " "
 
bool is_pal( const char * word )
{
    for ( const char  *i = word, *j =  word + strlen(word) - 1; i < j ; )
        if ( *i++ != *j-- )
            return false;
    return true;
}
 
int main()
{
    const int MAXSIZE = 128;
    
    char * sentence = new char [ MAXSIZE ];
    std::cin.getline( sentence, MAXSIZE );
    
    int count = 0;
    
    for ( char * p = strtok(sentence, DELIMS ); p ; p = strtok(0, DELIMS) )
    {
        if ( !is_pal( p ) )
            ++count;
    }
    
    delete[] sentence;
    
    std::cout << count;
}
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.10.2011, 15:49     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #13
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
59
60
61
62
63
64
65
66
#include <iostream>
#include <cstring>
 
typedef char char_t;
typedef char_t * str_t;
 
void realloc_str(char_t *&str, size_t new_size)
{
    str_t new_str = new char_t [new_size] ();
 
    strcpy(new_str, str);
 
    delete [] str;
 
    str = new_str;
}
 
str_t get_str()
{
    static const size_t QUANTUM = 32;
 
    str_t str = new char_t [QUANTUM] ();
 
    size_t multiplier = 1;
 
    size_t i = 0;
 
    do
    {
        if (i >= multiplier * QUANTUM - 1)
            realloc_str(str, ++multiplier * QUANTUM);
 
        std::cin.get(str[i]);
    }
    while (str[i++] != '\n');
 
    str[i - 1] = '\0';
 
    return str;
}
 
bool is_palindrome(str_t str)
{
    for (str_t i = str, j = str + strlen(str) - 1; i < j; ++i, --j)
        if (*i != *j)
            return false;
 
    return true;
}
 
int main()
{
    static const str_t delims = " ";
 
    str_t str = get_str();
 
    size_t count = 0;
 
    for (str_t p = strtok(str, delims); p != 0; p = strtok(0, delims))
        if (!is_palindrome(p))
            ++count;
 
    std::cout << "Number of palindromes: " << count << std::endl;
 
    return 0;
}
Добавлено через 1 минуту
Ха, у нас с diagonом коды-близнецы)) Только я извратился с вводом бесконечной строки))
fasked
02.10.2011, 15:50
  #14

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
C++
1
typedef char_t * str_t;
Извращенец

silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.10.2011, 15:52     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #15

Не по теме:

fasked, а вдруг на wchar_t захочется перелезть? Тогда менять только в одном месте



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

Не по теме:

Правда с ним ни одна библиотечная строковая функция работать не будет

fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.10.2011, 15:54     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #16
silent_1991, для виндузятников tchar есть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2011, 16:27     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».
Еще ссылки по теме:

C++ Дан текст определить количество слов в нём.
C++ Использование библиотеки STL , контейнер string. Дан массив слов.Надо удалить все цифры из слов
Определить количество слов в тексте, и вывести слова, которые по длине меньше заданного числа C++
Определить количество элементов массива, которые имеют четные индексы и являются кратными 3 C++
C++ Определить в последовательности количество слов, которые начинаются с буквы a

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

Или воспользуйтесь поиском по форуму:
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 16:27  [ТС]     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». #17
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
59
60
61
62
63
64
65
66
67
68
69
//---------------------------------------------------------------------------
#include<stdio.h>
#include<conio.h>
#include<string.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
 
#pragma argsused
void main()
{
  int ks;
  char *s=new char [150];
  char **MS= new char *[80];
  for(int ii=0;ii<80;ii++)
    MS[ii]=new char[10];
  puts("vvedite text");
  gets(s);
  int f=0;
  char *t=new char;
  char **i ;
  char *j =new char;
  char *k =new  char;
//разбиение на массив
  k=s;
  t=strtok(k," ");
  while(t!=NULL)
  {
   strcpy(*(MS+f),t); //MS[f]
   t=strtok(NULL," ");
   f++;
  }
  ks=f; // количество слов
//  int len=strlen(k);
  int kol=0;
  char *s1=new char[11];
  //s1="0123456789";
  char *g=new char;
  int d1=0,kz=0;
  for(i=MS;i<MS+ks;i++)
    {
      for(j=*i;j<*i+strlen(*i)/2;j++)
    {
      if(*j==*(j+strlen(*i)-d1-1)) kol++;
      if(kol==strlen(*i)/2)
        {
          kz++;
          kol=0;
         int kl=d1;
         d1=d1-kl-2;
        }
       d1+=2;               
     }
    }
    printf("%d",ks-kz);
  getch();
  delete []s;
  for(ii=0;ii<50;ii++)
    delete []MS[ii];
  delete []MS;
  delete []t;
  delete []j;
  delete []k;
  delete []g;
  delete []s1;
 
}
//---------------------------------------------------------------------------
Только вот вместо переменной D1 мне нужно исп какую-то другую переменную только вот не пойму какую которая сохраняет кол-во проходов по циклу....
 Комментарий модератора 
Используйте теги форматирования кода!
Yandex
Объявления
02.10.2011, 16:27     Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».
Ответ Создать тему
Опции темы

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