проблема со счетчиком - PullRequest
0 голосов
/ 23 ноября 2010

Я имею в виду простую программу, в которой она читает имя и фамилию ввода соответственно и показывает количество символов в каждом, но я получаю оба значения как 5.

Вот код:

#include<stdio.h>
void main()
{
    char fname[20];
    char lname[20];
    int count=0;
    int counter=0;
    printf("enter your  first name");
    scanf("%s",fname);
    printf("enter your last name");
    scanf("%s",lname);

    while((fname[count]>0) && (lname[counter]>0))
    { 
        count++;
        counter++;
    }
    printf("the no of char in ur fname  are %d ",count);
    printf(" the no of char in ur lname are %d ",counter);
}

Любой совет будет очень полезен.

Ответы [ 3 ]

5 голосов
/ 23 ноября 2010

Вы считаете оба в одном цикле.Разделите его на две петли.

2 голосов
/ 23 ноября 2010

Как уже указывалось, вы увеличиваете оба счетчика одновременно - вам нужно разделить счет на два отдельных цикла (по одному для каждой строки)

Попробуйте вместо этого:

while(fname[count] > 0)
{ 
    fnameCount++;
}

while(lname[count] > 0)
{ 
    lnameCount++;
}

printf("the no of characters in your first name is %d ", fnameCount);
printf("the no of characters in your last name is %d ", lnameCount);
0 голосов
/ 23 ноября 2010

Проблема в том, что ваши переменные count и counter оба заканчиваются в одно и то же время и будут иметь одинаковое значение. Ваше условие if говорит об увеличении двух счетчиков до тех пор, пока или из двух массивов символов еще не завершены. В тот момент, когда вы достигаете конца одного из двух массивов символов, обе переменные счетчика устанавливаются на длину более короткого массива.

Вам нужно иметь два for цикла, по одному на каждый массив символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...