66 / 63 / 63
Регистрация: 15.12.2010
Сообщений: 150
1

Выдать 1, если строка t расположена в конце строки s, и нуль в противном случае

01.04.2011, 16:10. Показов 3154. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. Нужно, используя указатели написать функцию strend(s,t), которая выдает 1, если строка t расположена в конце строки s, и нуль в противном случае. Вот пример без указателей.
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
#include <stdio.h>
#include <string.h>
 
void strend(char s[], char t[]);
 
int main(int argc, char **argv)
{
    char s[100], t[100];
    printf("Vvedite dve stroki\n");
    gets(s);
    gets(t);
    strend(s,t);
    return 0;
}
 
void strend(char s[], char t[])
{
    int bool=0;
    int i,j;
    i=strlen(s)-1;
    j=strlen(t)-1;
    while(j>=0)
    {
        if (s[i]==t[j])
        {
            bool=1;
            }
        else {
            bool=0;
            break;
            }
        i--;
        j--;
        }
        
    
    printf("%d\n",bool);
    }
подскажите где и как использовать указатели.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2011, 16:10
Ответы с готовыми решениями:

Написать функцию, которая возвращает 1, если строка str1 расположена в конце строки str2
Написать и протестировать функцию STREND(str1, str2), которая возвращает 1, если строка str1...

Строка: Вывести k-ю степень строки s, если она существует и слово undefined в противном случае.
Пусть имеем строку s и целое число k. Если k - неотрицательно, то k-ой степенью строки s называется...

Выведите YES, если среди введенных чисел есть хотя бы один нуль, или NO в противном случае
Проверьте, есть ли среди данных N чисел нули. Входные данные Вводится число N, а затем N чисел....

Машина Тьюринга должна выдать 0, если число нулей больше и 1 – в противном случае
доброго времени суток Надо написать правила машины Тьюринга для решения задачи: На вход...

2
34 / 34 / 9
Регистрация: 19.03.2010
Сообщений: 136
01.04.2011, 16:28 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
#include <stdio.h>
#include <string.h>
 
void strend(char *, char *);
 
int main(int argc, char **argv) {
    char s[100], t[100];
    printf("Vvedite dve stroki\n");
    gets(s);
    gets(t);
    char *ptr1 = s, *ptr2 = t;
    strend(ptr1, ptr2);
    return 0;
}
 
void strend(char *ptr1, char *ptr2) {
    int b = 0;
    int i, j;
    i = strlen(ptr1) - 1;
    j = strlen(ptr2) - 1;
    while (j >= 0) {
        if (*(ptr1 + i) == *(ptr2 + j)) {
            b = 1;
        } else {
            b = 0;
            break;
        }
        i--;
        j--;
    }
 
 
    printf("%d\n", b);
}
1
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 2
25.02.2019, 19:08 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
/* main.c */
#include "stdio.h"
 
char s[] = "Hello, World";
char t[] = "World";
int y;
 
int strend(char *s, char *t)
{
    int n = 0;
    // передвигаем указатели на последнюю ячейку обоих массивов
    while ( *s ) { s++; }
    while ( *t )
    {
        t++;
        n++;
    }
 
    for (; *s == *t ; s--, t--, n--)
    ;
    
    if (n>=0)
    {
//        printf("Checking stops on the %c symbol \n\n", *s);
        return 0;
    }
    else
    {
//        printf("String s include string t \n\n");
        return 1;
    }
    
}
 
int main (void)
{
    y = strend(s,t);
    return y;
}
Добавлено через 20 минут
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
/* main.c */
#include "stdio.h"
 
char s[] = "Hello, World";
char t[] = "World";
int y;
 
int strend(char *s, char *t)
{
    int n = 0;
    while ( *s ) { s++; } // передвигаем указатели на последнюю ячейку обоих массивов
    while ( *t )
    {
        t++;
        n++;
    }
    for (; *s == *t ; s--, t--, n--)
    ;
    y = (n>=0) ? 0 : 1;
    return y; // возвращает 1, если строка присутствует, 0 если отсутствует.
}
 
int main (void)
{
    return strend(s,t);
}
0
25.02.2019, 19:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2019, 19:08
Помогаю со студенческими работами здесь

Если покупатель запросит более 5 банок ,выдать предупреждение ,в противном случае - сумму покупки
Здравствуйте,Форумчане,я программирую на Паскале, и тут мне девушка подкидывает задачки на Visual...

Рекурсия: выдать синоним слова a, если оно находится в словаре синонимов x, и nil в противном случае
(SINONIM a x) выдает синоним слова a, если находит его в словаре синонимов x, и nil в противном...

дан массив a(20) найти сумму элементов массива , если она превосходит число 50 , в противном случае выдать исх
дан массив a(20) найти сумму элементов массива , если она превосходит число 50 , в противном случае...

Функция, которая возвращает true, если строка состоит только из символов “*”, и false - в противном случае
Напишите функцию isStars(), который возвращает true, если строка состоит только из символов “*”, и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru