Ввести n строк, найти самую короткую и самую длинную строки - C (СИ)
Формулировка задачи:
Ввести n строк , найти самую короткую и самую длинную строки. Вывести
найденные строки и их длину. Ввод осуществить как аргументы командной строки.
Написал такой код, но он не верно работает, под виндоус выдает 1 и виснет, а на линуксе просто не верно считает...
#include <stdio.h> #include <string.h> void main(int argc, char *argv[]) { int i,j,f=1,w=1; char str[10]; /*f - число повторений. w - номер необходимого аргумента*/ for (j=1;j<argc;j++) { strncat(str, argv[j],strlen(argv[j])); for (i=1;i<strlen(argv[j]);i++) { if (str[i]>str[i-1]) { ++f; } } printf("f= %d",f); printf("\n"); if (f==strlen(argv[j])) { w=j; } f=1; } printf("%d",strlen(argv[w])); printf("\n"); strncat(str, argv[w],strlen(argv[w])); for (i=0;i<strlen(argv[w]);i++) { printf("%c",str[i]); } printf("\n"); }
Решение задачи: «Ввести n строк, найти самую короткую и самую длинную строки»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char* argv[]) { if ( argc < 2 ) { fprintf(stderr, "%s:Error arg\n", argv[0]); exit(1); } else { char *min = argv[1], *max = argv[1]; size_t i; for ( i = 2 ; i < argc ; ++i ) if ( strlen(min) > strlen(argv[i]) ) min = argv[i]; else if ( strlen(max) < strlen(argv[i]) ) max = argv[i]; printf("Max : %s \t Min : %s\n", max, min); } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д