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

массив/вхождение заданной строки( программа на си) - C++

Восстановить пароль Регистрация
 
Митричч
0 / 0 / 0
Регистрация: 02.07.2011
Сообщений: 11
02.07.2011, 13:10     массив/вхождение заданной строки( программа на си) #1
Доброе время суток, нуждаюсь в помощи по написанию программы на си:
" Заданы массив строк и строка, составить программу формирования массива целых чисел, элементы которого - количество вхождений заданной строки в соответствующую строку.

произвольно задаваеммый массив
a d f g h d f r s r d f
d f a f r d f s t
a d f b

строка произвольно задаваемая: df

вывести в ответе должно:
3
2
1

по количеству df в каждой строке.

программа должна содержать только функцию main, все массивы размещаются в памяти динамически."

Заранее спасибо, кто чем сможет помочь.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2011, 13:10     массив/вхождение заданной строки( программа на си)
Посмотрите здесь:

Строки : проверка на вхождение слова C++
C++ Удалить из строки каждое вхождение подстроки
Удвоить каждое вхождение заданной буквы в строке C++
Динамический массив. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы C++
Заменить в строке S последнее вхождение строки S1 на строку S2 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
02.07.2011, 16:51     массив/вхождение заданной строки( программа на си) #2
Держи, наляпал вариантик.
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
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
 
 
 
void  main(void)  {
 
   char**    strs = NULL, *iter;
   char       buf[32];
   int size    = 0, i, cnt = 0;
 
   printf("input array size:_ "); // задайте размер массива
   scanf("%d", &size);
   if(! size)
      exit(1);
 
   strs  = (char**) malloc(size); 
   i      = 0;
   while(i < size){
       *((strs) + i) = (char*) malloc(32);
        scanf("%s", *((strs) + i));
       ++i;
   }
   printf("input string any: ");
   scanf("%s", buf);
 
   // вот сам поиск число вхождений подстроки
   for(i = 0; i < size; i++) {
        iter = *((strs) + i);
        while((iter = strstr(iter, buf)) != NULL){
            iter += strlen(buf);
           ++cnt;
        }
        printf("%d\n", cnt);
        cnt = 0;
   }
 
   for(i = 0; i < size; i++) { // чистка
      free( *((strs) + i) );
      *((strs) + i) = NULL;
   }
   free(strs);
   strs = NULL;
 
   system("pause");
}
-=ЮрА=-
Заблокирован
Автор FAQ
02.07.2011, 17:13     массив/вхождение заданной строки( программа на си) #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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <windows.h>
#include <string.h>
#include <stdio.h>
 
int getSubInStr(LPCTSTR str, LPCTSTR fnd);
 
void main()
{
    int nStrings;
    printf("Vvedite chislo strok\t: ");
    scanf("%d",&nStrings);
    char ** chMass = new char * [nStrings];
    int * iMass = new int[nStrings];
    for(int i = 0; i < nStrings; i++)
    {
        //Âûäåëÿåì ГЇГ*ìÿòü ïîä îòäåëüГ*ГіГѕ ñòðîêó
        //Гў ñòðîêå Г¬Г*êñèìóì 256 ñèìâîëîâ
        chMass[i] = new char[256];
        printf("Vvedite %d stroky\t: ", i + 1);
        scanf("%s",chMass[i]);
    }
    printf("Vvedite iskomyu podstroky\t: ");
    char sFind[256];scanf("%s",sFind);
    printf("\tResultati poiska podstroki\r\n");
    for(i = 0; i < nStrings; i++)
        printf(
            "stroka %d naideno : %d\r\n",
            i + 1,
            iMass[i] = getSubInStr(chMass[i], sFind)
            );
    printf("Vvedite luboi simvol\r\n");
    scanf("%c",&sFind[0]);
}
 
int getSubInStr(LPCTSTR str, LPCTSTR fnd)
{
    int RetVal = 0;
    char * chBuf = NULL;
    if(str != NULL && fnd != NULL)
    {
        chBuf = strstr(str,fnd);
        while(chBuf != NULL)
        {
            RetVal++;
            chBuf = strstr(chBuf + 1,fnd);
        }
    }
    return RetVal;
}
Миниатюры
массив/вхождение заданной строки( программа на си)  
Митричч
0 / 0 / 0
Регистрация: 02.07.2011
Сообщений: 11
02.07.2011, 18:46  [ТС]     массив/вхождение заданной строки( программа на си) #4
великий поклон обоим, долгих дней и славных ночей, спасли спасибо=)
easybudda
02.07.2011, 19:56
  #5

Не по теме:

Цитата Сообщение от xAtom Посмотреть сообщение
void main(void)
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
void main()
Да что ж вы нехристи такие...

-=ЮрА=-
Заблокирован
Автор FAQ
02.07.2011, 23:15     массив/вхождение заданной строки( программа на си) #6
easybudda, в чём трабл - в том том что вместо int main() забили void main()???Ну не по стандарту С/С++ немного, ну дык и никак это и не оговорено в условии было, неужели это так критично для столь маханькой програмки???
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.07.2011, 23:32     массив/вхождение заданной строки( программа на си) #7
-=ЮрА=-, фигасе, если в условии не сказано "писать по стандарту", то можно этого не делать? Некоторые компиляторы даже такие с виду безобидные вещи, как void main, не пропускают.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2011, 00:07     массив/вхождение заданной строки( программа на си)
Еще ссылки по теме:

Удалить из строки первое вхождение буквосочетание 'not' C++
Программа должна показать все комбинации заданной суммы чисел заданной точности C++
Даны три строки: S1, S2, S3. Заменить в строке S1 первое вхождение строки S2 на S3 C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
03.07.2011, 00:07     массив/вхождение заданной строки( программа на си) #8
-=ЮрА=-, а в стандарте размер программы никак не оговаривается. Сказано только, что функция, являющаяся точкой входа в программу ( то бишь main() ) должна возвращать целочисленное значение. И, как правильно заметил silent_1991, не каждый компилятор это пропустит. А если пропустит - значит вы пользуетесь плохим компилятором. Больше шансов, что пропустит ещё что-нибудь "не по стандарту", а потом прийдётся долго удивляться, почему всё не так, как задумано... Короче, есть стандарт, и сто'ит стремиться его не нарушать ни в мелочах, ни по крупному, ни в больших программах, ни в маленьких.
Yandex
Объявления
03.07.2011, 00:07     массив/вхождение заданной строки( программа на си)
Ответ Создать тему
Опции темы

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