Найдите ошибку в программе определения самого длинного слова в строке - 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 - переменная для хранения длины второго слова