Найдите ошибку в программе определения самого длинного слова в строке - 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; }
Объяснение кода листинга программы
Объяснение действий в коде:
- #include
- включает библиотеку для работы с консолью - #include
- включает библиотеку для работы с вводом/выводом - #include
- включает библиотеку для работы со строками - void main() - функция main() является точкой входа в программу
- *char p1 = new char[100];** - выделяет память под массив символов (строку) с помощью оператора new
- *char p2 = new char[100];** - выделяет память под массив символов (строку) с помощью оператора new
- int x,y; - объявляет две переменные типа int для хранения длины слов
- printf(
Enter the first word\n
); - выводит приглашение для ввода первого слова - scanf(
%s
, p1); - считывает слово из консоли и сохраняет его в переменной p1 - printf(
Enter the second word\n
); - выводит приглашение для ввода второго слова - scanf(
%s
, p2); - считывает слово из консоли и сохраняет его в переменной p2 - x = strlen(p1); - вычисляет длину первого слова с помощью функции strlen()
- y = strlen(p2); - вычисляет длину второго слова с помощью функции strlen()
- if (x > y) - сравнивает длины слов и выводит сообщение, если первое слово длиннее
- printf(
%s = %d \n
, p1 , x); - выводит сообщение видаСлово p1 имеет длину x
- else if (x < y) - сравнивает длины слов и выводит сообщение, если второе слово длиннее
- printf(
%s = %d \n
, p2, y); - выводит сообщение видаСлово p2 имеет длину y
- else - выводит сообщение, если слова имеют одинаковую длину
- getch(); - получает символ из консоли с помощью функции getch()
- delete [] p1; - освобождает память, выделенную под массив p1
- delete [] p2; - освобождает память, выделенную под массив p2
Переменные:
- p1 - указатель на первый массив символов (строку)
- p2 - указатель на второй массив символов (строку)
- x - переменная для хранения длины первого слова
- y - переменная для хранения длины второго слова
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д