Ввести 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;
}