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

Only строки* - C++

Восстановить пароль Регистрация
 
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
02.01.2011, 14:41     Only строки* #1
Помогите пожалуйста с написанием программ через библиотеку <stdio.h>

1.Ввести строку и слово. Определить и вывести, сколько раз встречаются
в строке буквы, перечисленные в слове.

2.Ввести строку и два слова. Вывести строку, в которой все
вхождения первого слова заменены на второе слово.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2011, 14:41     Only строки*
Посмотрите здесь:

C++ Как считать строки из файла, если там больше одной строки?
C++ как первые два символа строки переставить в конец этой строки?
Выявить строки, в которых макс. эл-т больше суммы остальных эл-ов строки C++
C++ Переставить строки матрицы по возрастанию максимальных элементов каждой строки
Даны две строки: S и S0. Определить количество вхождений строки S0 в строку S C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
02.01.2011, 14:48     Only строки* #2
Цитата Сообщение от Оленька* Посмотреть сообщение
2.Ввести строку и два слова. Вывести строку, в которой все
вхождения первого слова заменены на второе слово.
http://www.cyberforum.ru/cpp-beginne...ml#post1129916
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
02.01.2011, 15:05  [ТС]     Only строки* #3
Цитата Сообщение от Оленька* Посмотреть сообщение
написанием программ через библиотеку <stdio.h>
.....
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
02.01.2011, 16:06     Only строки* #4
Оленька*,
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
#include <stdio.h>
#include <string.h>
 
#define BUFSIZE 256
#define DELIM " .,"
 
int main(void)
{
    char str[BUFSIZE], word[BUFSIZE],
    _word[BUFSIZE], *temp, *p;
    printf("\n\nEnter string: ");
    scanf("%[^\n]%*c", str);
 
    printf("\n\nEnter first word: ");
    scanf("%s", word);
 
    printf("\n\nEnter second word: ");
    scanf("%s", _word);
 
    for(p = strtok(str, DELIM); p; p = strtok(NULL, DELIM))
    {
        if(!strcmp(p, word))
            printf("%s ", _word);
        else
            printf("%s ", p);
    }
    return 0;
}
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
03.01.2011, 11:49  [ТС]     Only строки* #5
А 1-ую программу можете помочь?..
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
03.01.2011, 12:04     Only строки* #6
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
/*
    Ввести строку и слово. Определить и вывести, сколько раз встречаются
    в строке буквы, перечисленные в слове.
*/
    
#include <stdio.h>
#include <string.h>
 
int main(void){
    char buf[BUFSIZ], wrd[BUFSIZ], * p;
    int counters[256], i;
    
    printf("String: ");
    scanf("%[^\n]%*c", buf);
    printf("Word: ");
    scanf("%s", wrd);
    
    memset(counters, 0, sizeof(counters));
    for ( p = strpbrk(buf, wrd); p; p = strpbrk(p + 1, wrd) )
        counters[*p]++;
        
    printf("char\tcount\n");
    for ( i = 0; i < 256; ++i )
        if ( counters[i] )
            printf("'%c'\t%d\n", i, counters[i]);
    
    return 0;
}
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
03.01.2011, 23:21  [ТС]     Only строки* #7
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
#define N 100
#include <stdio.h>
 
int Wrddel(char mas[])
{
int i,j,k;
for (i=0;mas[i]!='\0';i++)
{
for (j=i+1;mas[j]!='\0';j++)
{
if (mas[i]==mas[j])
{
for (k=j;mas[k]!='\0';k++)
{
mas[k]=mas[k+1];
}
i--;
j--;
}
}
}
return i;
}
 
int numsimb(char s, char mas[])
{
int count=0;
for(int i=0;mas[i]!='\0';i++)
{
if (mas[i]==s)
count++;
}
return count;
}
 
void main()
{
char str[N],wrd[N];
int i;
printf("String: ");
scanf("%[^\n]%*c", str);
printf("Word: ");
scanf("%s", wrd);
 
for (i=0;wrd[i]!='\0';i++)
{
printf("%c - %i \n",wrd[i],numsimb(wrd[i],str));
}
}
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
09.01.2011, 14:24  [ТС]     Only строки* #8
Можете помочь написать вторую программу, по тому же типу как я написала первую?...
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
09.01.2011, 14:36     Only строки* #9
Цитата Сообщение от Оленька* Посмотреть сообщение
Можете помочь написать вторую программу, по тому же типу как я написала первую?...
См. пост #4
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
09.01.2011, 14:42  [ТС]     Only строки* #10
strtok - разделяет строку на слова ,а !strcmp что делает, я прочитала описание но не поняла?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
09.01.2011, 14:44     Only строки* #11
Цитата Сообщение от Оленька* Посмотреть сообщение
strtok - разделяет строку на слова ,а !strcmp что делает, я прочитала описание но не поняла?
Сравневает две строки.
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
09.01.2011, 19:13  [ТС]     Only строки* #12
У меня есть просто другая идея, но я не могу ее реализавать, то есть сделать так , по массиву на каждое слово, если один массив равен введенному, то заменять .Можете помочь написать..
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
09.01.2011, 19:16     Only строки* #13
Не, такой бред(вы уж извините) не пишу.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.01.2011, 19:25     Only строки* #14
asics, ну а почему бы не разбить строку на слова и не распихать по списку? Так действительно удобней было бы))) Правда не уверен, что списки не вызовут подозрений у препода))
И вообще, физической замены у вас не происходит. Только косметическая.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
09.01.2011, 19:38     Only строки* #15
silent_1991, Ну так по заданию у меня все правильно:
Вывести строку, в которой все
вхождения первого слова заменены на второе слово.
у меня и выводиться строка по условию.
BrumbleHorse
 Аватар для BrumbleHorse
120 / 120 / 11
Регистрация: 18.09.2010
Сообщений: 212
09.01.2011, 20:10     Only строки* #16
Цитата Сообщение от Оленька* Посмотреть сообщение
меня есть просто другая идея, но я не могу ее реализавать, то есть сделать так , по массиву на каждое слово, если один массив равен введенному, то заменять .Можете помочь написать..
Ну если не использовать функции string.h, то можно сделать такую ерунду:
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
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#define MAX 10
int WordComp(char x[],char y[])
{
    int i;
    for(i=0;isgraph(x[i])&&isgraph(y[i]);++i)
    {
      if(x[i]!=y[i])return 0;
    }
    return 1;
}
void main()
{
  int i,a,b;
  char line[MAX*MAX]={};
  char Words[MAX][MAX]={};
  char word1[MAX]={};
  char word2[MAX]={};
  printf("Input your line:\n");
  gets(line);
  printf("Input word 1:\n");
  gets(word1);
  printf("Input word 2:\n");
  gets(word2);
  for(i=0,a=0,b=0;i<MAX*MAX;++i)
  {
      if(line[i]==' ')
      {
          ++a;
          ++i;
          b=0;
      }
      Words[a][b++]=line[i];
  }
printf("Here is your changed string:\n");
 for(i=0;i<a+1;++i)
 {
     if(WordComp(word1,Words[i]))
     printf("%s ",word2);
     else
     printf("%s ",Words[i]);
 }
 getch();
 }
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
10.01.2011, 07:59  [ТС]     Only строки* #17
Без исползования string.h

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
#define N 50
#include <stdio.h>
 
bool wequel(char mas1[N], char mas2[N])
{
int i=0;
bool f=true;
while(1)
{
if (mas1[i]!=mas2[i])
{
f=false;
break;
}
if (mas1[i]=='\0')
break;
i++;
}
return f;
}
void putss(char mas[])
{
for(int i=0;mas[i]!='\0';i++)
{
putchar(mas[i]);
}
putchar(' ');
}
 
void main()
{
char mas[N][N], word1[N], word2[N];
int i=-1,j=-1;
do
{
j=-1;
i++;
do
{
j++;
mas[i][j]=getchar();
}while(mas[i][j]!=' ' && mas[i][j]!='\n');
if (mas[i][j]!='\n') mas[i][j]='\0';
}while(mas[i][j]!='\n');
mas[i][j]='\0';
 
gets(word1);
gets(word2);
 
for (j=0;j<=i;j++)
{
if (wequel(mas[j],word1))
putss(word2);
else
putss(mas[j]);
}
putchar('\n');
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2011, 17:27     Only строки*
Еще ссылки по теме:

C++ Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки.
C++ Упорядочить строки матрицы D (m. n) Лексикографически по неубыванию первых k элементов строки
Прибавить ко всем элементам каждой строки максимальное значение этой строки C++

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

Или воспользуйтесь поиском по форуму:
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
10.01.2011, 17:27     Only строки* #18
Оленька*, В Си нет типа данных bool
Yandex
Объявления
10.01.2011, 17:27     Only строки*
Ответ Создать тему
Опции темы

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