Найдите ошибку в программе определения самого длинного слова в строке - C (СИ)

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

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

Программа высчитывает какое слово длиннее и выводит его на экран Проблема в том что она всегда выводит второе слова, независимо от длин слов скажите где ошибка?
#include <conio.h>
#include <stdio.h>
#include <string.h>
void main()
{char c1,c2,*p1,*p2,x,y;
p1=&c1;
p2=&c2;
clrscr();
printf("Vvedite c1\n"); scanf("%s",p1);
printf("Vvedite c2\n"); scanf("%s",p2);
x=strlen(p1);
y=strlen(p2);
 
if (x>y) printf("%s=%d",p1,x); else
if (x<y) printf("%s=%d",p2,y); else
printf("Dlini vvedeonih slov odinakovi");
getch();
}

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

textual
Листинг программы
#include <conio.h>
#include <stdio.h>
#include <string.h>
void main()
{
    
    char *p1 = new char[100];
    char *p2 = new char[100];
    int x,y;
 
    printf("Enter the first word\n"); 
    scanf("%s", p1);
    printf("Enter the second word\n"); 
    scanf("%s", p2);
    
    x = strlen(p1);
    y = strlen(p2);
 
    if (x > y) 
        printf("%s = %d \n", p1 , x); 
    else if (x < y) 
        printf("%s = %d \n", p2, y); 
    else
        printf("Dlini vvedeonih slov odinakovi\n");
    
    getch();
    
    delete [] p1;
    delete [] p2;
}

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

Объяснение действий в коде:

  1. #include - включает библиотеку для работы с консолью
  2. #include - включает библиотеку для работы с вводом/выводом
  3. #include - включает библиотеку для работы со строками
  4. void main() - функция main() является точкой входа в программу
  5. *char p1 = new char[100];** - выделяет память под массив символов (строку) с помощью оператора new
  6. *char p2 = new char[100];** - выделяет память под массив символов (строку) с помощью оператора new
  7. int x,y; - объявляет две переменные типа int для хранения длины слов
  8. printf(Enter the first word\n); - выводит приглашение для ввода первого слова
  9. scanf(%s, p1); - считывает слово из консоли и сохраняет его в переменной p1
  10. printf(Enter the second word\n); - выводит приглашение для ввода второго слова
  11. scanf(%s, p2); - считывает слово из консоли и сохраняет его в переменной p2
  12. x = strlen(p1); - вычисляет длину первого слова с помощью функции strlen()
  13. y = strlen(p2); - вычисляет длину второго слова с помощью функции strlen()
  14. if (x > y) - сравнивает длины слов и выводит сообщение, если первое слово длиннее
  15. printf(%s = %d \n, p1 , x); - выводит сообщение вида Слово p1 имеет длину x
  16. else if (x < y) - сравнивает длины слов и выводит сообщение, если второе слово длиннее
  17. printf(%s = %d \n, p2, y); - выводит сообщение вида Слово p2 имеет длину y
  18. else - выводит сообщение, если слова имеют одинаковую длину
  19. getch(); - получает символ из консоли с помощью функции getch()
  20. delete [] p1; - освобождает память, выделенную под массив p1
  21. delete [] p2; - освобождает память, выделенную под массив p2 Переменные:
    • p1 - указатель на первый массив символов (строку)
    • p2 - указатель на второй массив символов (строку)
    • x - переменная для хранения длины первого слова
    • y - переменная для хранения длины второго слова

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


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

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

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