С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
1

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

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

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

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

Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов
мне нужна функция, которая во входе получает строку слов и рзделителей (" ",...

Дан текст, найти количество слов и количество слов, у которых первый и последний символ совпадают
Помогите пожалуйста, выполнить задание. Дан текст из N символов. Группы...

Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). ​​Определить количество слов, которые заканчиваются одной и той
Дано строка, состоящая из русских слов, разделенных пробелами (одним или...

Дан набор слов, разделенных точкой с запятой. Определить сколько в нем слов, заканчивающихся буквой 'а'
Дан набор слов, разделенных точкой с запятой ( ; ). Набор заканчивается...

Использование библиотеки STL , контейнер string. Дан массив слов.Надо удалить все цифры из слов
#include "StdAfx.h" #include <string> #include <iostream> #include...

16
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.10.2011, 13:35 2
Цитата Сообщение от juli.ya92 Посмотреть сообщение
на языке Си
Цитата Сообщение от juli.ya92 Посмотреть сообщение
оператора new
Странно как-то...
0
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 13:36  [ТС] 3
Имеется ввиду например
char *j =new char;
0
fasked
Эксперт С++
4984 / 2563 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
02.10.2011, 13:38 4
juli.ya92, так делать в Си нельзя.
0
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 13:40  [ТС] 5
Мда ну незнаю тогда чему нас в универе учат...
0
silent_1991
Эксперт С++
5011 / 3071 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
02.10.2011, 14:13 6
В Си нет оператора new. Есть функции malloc/calloc/realloc, с помощью которых можно добиться того же эффекта.
0
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 14:14  [ТС] 7
Ну а в С++ он есть?
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.10.2011, 14:18 8
Цитата Сообщение от juli.ya92 Посмотреть сообщение
Ну а в С++ он есть?
Есть. Только в с++ лучше использовать std::string.
0
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 14:19  [ТС] 9
Мы такое ещё не проходили это раздел для начинающих или как?
0
silent_1991
Эксперт С++
5011 / 3071 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
02.10.2011, 15:05 10
Цитата Сообщение от juli.ya92 Посмотреть сообщение
Ну а в С++ он есть?
Ну а в С++ он есть. Но вы-то просили на С.

Не по теме:

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

0
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
02.10.2011, 15:10  [ТС] 11
Разработать программу на языке Си++
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 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;
}
0
silent_1991
Эксперт С++
5011 / 3071 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 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ом коды-близнецы)) Только я извратился с вводом бесконечной строки))
0
fasked
02.10.2011, 15:50
  #14

Не по теме:

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

0
silent_1991
Эксперт С++
5011 / 3071 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
02.10.2011, 15:52 15

Не по теме:

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



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

Не по теме:

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

0
fasked
Эксперт С++
4984 / 2563 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
02.10.2011, 15:54 16
silent_1991, для виндузятников tchar есть.
0
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 мне нужно исп какую-то другую переменную только вот не пойму какую которая сохраняет кол-во проходов по циклу....
 Комментарий модератора 
Используйте теги форматирования кода!
0
02.10.2011, 16:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2011, 16:27

Дан текст определить количество слов в нём.
Дан текст определить количество слов в нём.

Дана строка, состоящая из русских слов. Найти количество слов, которые содержат ровно три буквы «А»
Дана строка, состоящая из русских слов, набранных заглавными буквами и...

Дана строка, состоящая из слов, разделённых пробелами(одним или несколькими) . Найти количество слов , которые не содерж
Дана строка, состоящая из слов, разделённых пробелами(одним или несколькими) ....


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

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

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