Не работает простенькая программа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет всем. Я изучаю язык С и сделал вот такую программку(сразу скажу что она запускается и выкидывает):
 #include<stdio.h>
#include<conio.h>
#include<string.h>
 
void udal(char s[],char st[]);
void main()
 
{
char s[]="abcd";
char st[]="bc";

udal(s,st); // из s удаляются все элементы которые имеются в st
printf("%s",s);
getch();
 
}

void udal(char s[],char st[])
{
char res[]="",prom[1];
int i,j,n;
 
n=strlen(s);
    for(i=strlen(st);i>=0;i--){
        for( j=0;j<n;j++)
            if(st[i]!=s[j]) {
            prom[1]=s[j];
            strcat(res,prom);
            }
    strcpy(s,res);
    n=strlen(s);
    strcpy(res,"");
    }
}
Я её отредактировал до тех пор пока она не начнет запускаться. Она запускается и сразу выкидывает меня оттуда. Суть программы такова что она должна оставить в первой строке только те элементы, которые не встречаются во второй строке.Прогонял пошагово через F8 так оно доходит до функции и сразу выкидывает как в неё зашло. Пол дня уже мучаюсь над прогой этой. Оно конечно полезно помучаться когда учишь язык. но уже просто не пойму что можно попробовать чтоб заработало. Может кто-то увидит ошибку. Заранее спасибо.

Решение задачи: «Не работает простенькая программа»

textual
Листинг программы
#include<stdio.h>
#include<conio.h>
#include<string.h>
 
void udal(char s[],char st[]);
int main()
 
{
    char s[]="abcd";
    char st[]="bc";
 
 
    udal(s,st); // из s удаляются все элементы которые имеются в st
    printf("%s",s);
    getch();
    return 0; 
}
 
 
 
void udal(char s[],char st[])
{
    char res[256]="",prom[2];
    prom[1]='\0';
    int i,j,n;
 
    n=strlen(s);
    for(i=strlen(st);i>=0;i--){
        for( j=0;j<n;j++)
            if(st[i]!=s[j]) {
                prom[0]=s[j];
                strcat(res,prom);
            }
        strcpy(s,res);
        n=strlen(s);
        strcpy(res,"");
    }
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: stdio.h, conio.h, string.h
  2. Определяется функция udal с двумя аргументами типа char.
  3. В функции main создаются две строки s и st, и вызывается функция udal.
  4. В функции udal создаются три дополнительные переменные: res, prom, n.
  5. В prom инициализируется пустая строка, а в n записывается длина строки s.
  6. Происходит два вложенных цикла: внешний - перебирает символы строки st, внутренний - перебирает символы строки s.
  7. Если текущий символ строки s соответствует текущему символу строки st, то он добавляется в конец строки res.
  8. После завершения циклов, содержимое строки s заменяется на содержимое строки res.
  9. Функция main завершается возвратом значения 0, что означает успешное выполнение программы.
  10. Программа выводит на экран содержимое строки s.
  11. В функции main вызывается функция getch для приостановки выполнения программы до нажатия клавиши.
  12. В функции udal после завершения циклов, переменная n обнуляется, и строка res инициализируется пустой строкой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы