подсчет количества скобок с использованием массива - PullRequest
0 голосов
/ 31 декабря 2018

Я новичок в кодировании и буду очень признателен, если вы поможете мне с этим вопросом.Я не могу понять, почему мой код не дает мне правильный результат.Спасибо за потраченное время !!

В: Используя первый размерный массив, посчитайте количество закрывающих и открытых скобок.Ввод должен быть в одну строку.Ex.Input: (())) Output: 3 2

Я использовал массив для получения ввода в одну строку и цикл for для подсчета количества открывающих / закрывающих скобок.

#include <stdio.h>

int main(){
char str[1000]; int l=0;r=0;

printf("Enter:\t");
gets(str);

int length=sizeof(str)/sizeof(str[0]);

for(int i=0;i!=EOF && i<length;i++)
{
    if(str[i]=='(')
    l++;
    else if(str[i]==')')
    r++;
}
printf("%d %d",l,r);
}

Ожидаемый ввод: (()) Выход: 2 2

Что я получаю Вход: (()) Выход: 6 2

Ответы [ 4 ]

0 голосов
/ 31 декабря 2018

У вас также есть синтаксическая ошибка при объявлении r.Вы бы либо имели int l = 0, r = 0;Или Int l = 0;Int r = 0;Хотя компилятор должен был предупредить вас об этом.

0 голосов
/ 31 декабря 2018

Есть ошибки, которые описаны в базовом обучении C.

sizeof(str)/sizeof(str[0]); возвращает размер массива str, который в вашем случае 1000.Чтобы получить длину пользовательского ввода, используйте функцию strlen: int length = strlen(str).

Позже используйте цикл for как for(int i=0;i<length;i++) или лучше:

//Include string.h on beginning of file
#include <string.h>

size_t length = strlen(str);
for (size_t i = 0; i < length; i++) {
    //Do your if.
}
0 голосов
/ 31 декабря 2018

i!=EOF не требуется, так как это не файл

int length=sizeof(str)/sizeof(str[0]) не дает длину строки strlen() из #include <string.h> делает

0 голосов
/ 31 декабря 2018

Ваш цикл неправильный (на самом деле ваши условия)

for(size_t i = 0; i < strlen(str);i++)
{
    if(str[i]=='(')
    {
        l++;
    }
    if(str[i]==')')
    {
        r++;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...