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

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

Войти
Регистрация
Восстановить пароль
 
2009
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 35
#1

Пoмогите со строками! - C++

11.06.2010, 19:50. Просмотров 444. Ответов 8
Метки нет (Все метки)

Всем привет. В общем, даны 3 задачи:
Дано слово:
1) Подсчитать количество согласных букв.
2) Определить количество вхождений первого символа.
3) Если слово четной длины, то обменять первую половину слова со второй, в противном случае обменять местами первые 2 символа с последними двумя, сохранив порядок следования.

Мои вопросы:
1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<conio.h>
#include<iostream.h>
#include<string.h>
#include<stdio.h>
 
void chet(char a[100])
{ int k=0; char b[]={'a','A','o','O','u','U','y','Y','i','I','E','e'};
  for(int i=0;i<strlen(a);i++)    /*Здесь записана программа для подсчета количества гласных букв*/
   for(int j=0;j<strlen(b);j++)  /*и я думаю, что если сменить условие на if(a[i]!=b[j]) программа будет*/  
     if(a[i]==b[j]) k++;           /*искать количество согласных букв, однако она выводит длину строки.*/ 
  cout<<k;                                                         /* ПОЧЕМУ ТАК?((( */  
}
 
void main()
{ clrscr();
  char a[100];
  gets(a);
  chet(a);
  getch();
}
2) Под словом вхождение понимается сколько раз первая буква встречается в строке?
3) Просмотрите пожалуйста. Вроде всё по-моему правильно, а прога все равно неправильно переставляет...
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
#include<conio.h>
#include<iostream.h>
#include<string.h>
#include<stdio.h>
 
void chet(char a[100])
{ char c=a[0],d=a[1],e=a[strlen(a)],f=a[strlen(a)-1],g;
  if(strlen(a)%2==0) { for(int i=0;i<strlen(a)/2;i++)
             { g=a[i];
               a[i]=a[strlen(a)/2+1];
               a[strlen(a)/2+1]=g;
             }
             }
  else { a[0]=f;
     a[1]=e;
     a[strlen(a)]=c;
     a[strlen(a)-1]=d;}
  puts(a);
}
 
void main()
{ clrscr();
  char a[100];
  gets(a);
  chet(a);
  getch();
}
P.S. Очень нужны ответы ко всем, потому что без них я не сдам зачет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2010, 19:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пoмогите со строками! (C++):

Пoмогите разобраться с рисованием. - Visual C++
Помогите пожалуйста разобраться... Имею такой код: #include &lt;windows.h&gt; #include &quot;windowsx.h&quot; LRESULT CALLBACK WndProc(HWND,...

Пoмогите с VB 6.0 под Windows 7 - Visual Basic
Кинул семерку, а на него мой ВБ 6,0 русский не стает... Плиз киньте если вкогото то есть под 7 или что можна сделать... Помогите!

пoмогите с форматом видео - Видеопрограммы
скачал фильм гол 3,весит окло 250мб Оо файл такой Gol.3.2009.L1.DVDRip.mp4.part какой файл?Почему винамп не читает?думаю надо в диск...

Пoмогите написать программу пожалуйста - Pascal
Помогите пожалуйста написать, никак не пойму(((

Пoмогите пожалуйста прокомментироват код - Delphi
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; ...

Зaдачи по теме «Развилка» Пoмогите пoжалуйста рeшить. - Turbo Pascal
1)Текстовые задачи Даны две точки А(хи у^ и В(хг, у2). Составить алгоритм, определяющий, которая из точек находится ближе к началу...

8
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
11.06.2010, 20:37 #2
вот основные функции для вашего : второго задания и первого
1
DayFan
19 / 3 / 1
Регистрация: 10.06.2010
Сообщений: 9
11.06.2010, 20:52 #3
к 3 задаче.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void chet(char a[100])
{ char c=a[0],d=a[1],e=a[strlen(a)-1],f=a[strlen(a)-2],g;
  if(strlen(a)%2==0) { for(int i=0;i<strlen(a)/2;i++)
                         { g=a[i];
                           a[i]=a[strlen(a)/2+i];
                           a[strlen(a)/2+i]=g;
                         }
                     }
  else { a[0]=f;
         a[1]=e;
         a[strlen(a)-2]=c;
         a[strlen(a)-1]=d;}
  puts(a);
}
1
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
11.06.2010, 21:04 #4
в 3ей задаче strlen(a) = будет всегда 100. надо взять чистое слово. без пробелов.
для этого в мейне memset (a,' ',100); - заполняем строку нулями.
а внутри chet - создать указатель и присвоить ему чистую лексему без пробелов
char * pch;
pch = strtok (a," "); а дальше работать с ним как с а.
1
DayFan
19 / 3 / 1
Регистрация: 10.06.2010
Сообщений: 9
11.06.2010, 21:05 #5
Цитата Сообщение от mrMRak Посмотреть сообщение
в 3ей задаче strlen(a) = будет всегда 100. надо взять чистое слово. без пробелов.
для этого в мейне memset (a,' ',100); - заполняем строку нулями.
а внутри chet - создать указатель и присвоить ему чистую лексему без пробелов
char * pch;
pch = strtok (a," "); а дальше работать с ним как с а.
Слишком сложно)
1
2009
2 / 2 / 0
Регистрация: 23.11.2009
Сообщений: 35
12.06.2010, 02:40  [ТС] #6
Нет нет..всё правильно DayFan написал,я просто думал что последний элемент строки а будет a[strlen(a)],а оказывается он будет равен a[strlen(a)-1]...с этой задачей разобрались, а как быть с первой? mrMRak, по ссылкам я ничего не нашел...
0
rrrFer
Заблокирован
12.06.2010, 03:57 #7
Цитата Сообщение от 2009 Посмотреть сообщение
Нет нет..всё правильно DayFan написал,я просто думал что последний элемент строки а будет a[strlen(a)],а оказывается он будет равен a[strlen(a)-1]...с этой задачей разобрались, а как быть с первой? mrMRak, по ссылкам я ничего не нашел...
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
/* strpbrk example */
#include <stdio.h>
#include <string.h>
 
int main ()
{
  char str[] = "This is a sample string";
  char key[] = "aeiou";
  char * pch;
  int num;
  printf ("Vowels in '%s': ",str);
  pch = strpbrk (str, key);
  num=0;
  while (pch != NULL)
  {
      num++;
    printf ("%c " , *pch);
    pch = strpbrk (pch+1,key);
  }
  printf ("\n");
  printf("%d",num);
  getchar();
  return 0;
}
почти копипаст отсюда
1
mrMRak
12.06.2010, 03:59
  #8

Не по теме:

rrrFer, угу.. я вот о том же.. все так сложно найти..

1
rrrFer
Заблокирован
12.06.2010, 04:06 #9
только тут для гласных букв,чтобы считала согласные - измени строчку:
char key[] = "aeiou";
тут перечислены гласные буквы, надо перечислить согласные ))

Добавлено через 4 минуты
если очень ленивый то вторую можно решить из первой ))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
int main (){
    char str[] = "ithis is a sample string";
    char key[2];
    key[0]=str[0];
    key[1]=0;
  char * pch;
  int num;
  printf ("Vowels in '%s': ",str);
  pch = strpbrk (str, key);
  num=0;
  while (pch != NULL)
  {
      num++;
    pch = strpbrk (pch+1,key);
  }
  printf ("\n");
  printf("%d",num);
  getchar();
  return 0;
}
Добавлено через 40 секунд
хотя криво это все выглядит
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2010, 04:06
Привет! Вот еще темы с ответами:

ПOМОГИТЕ профи, оптимизация MySQL, есть ли выход??? - MySQL
Существует сайт на котором есть -чаты -гостевая и т.д. Во всех этих модулях используется база данных MySQL Везде запросы...

Работа со строками, заполнить компоненты строками из файла - Delphi
Привет! Нужна помощь в заполнении формы В общем, есть форма отправки письма. У нее есть 2 функции, сохранить письмо и открыть письмо (на...

Работа со строками(операции над строками) - C#
Пусть дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами...

Составить процедуру, которая преобразует исходный текстовый файл FVR со строками различной длины в файл FFIX со строками длиной 80 символов - Turbo Pascal
Составьте процедуру, которая преобразует исходный текстовый файл FVR со строками различной длины в файл FFIX со строками длиной 80 символов...


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

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

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