Member 13706232 Ответов: 1

Как мне сделать следующую программу Python на языке C ?


#Как я могу получить тот же результат в C...

t=int(input())
for j in range(t):
        s=input()
        def co(a,b):
                c=0
                for i in b:
                        if(i==a):
                                c+=1
                return c

        for i in s:
                if(co(i,s)==len(s)/2):
                        print("YES")
                        break
        else:
                print("NO")


Что я уже пробовал:

#include<stdio.h>
#include<string.h>
int co(char,char);
void main(){
	char s[50];
	int i,c;
	scanf("%s",s);
	while(s[i]!='\0'){
		if(co(s[i],s)==len(s)/2)
			printf("YES");
		else
			printf("NO");
		i++;
	}
}
int co(char a,char b[50]){
	int i,c=0;
	while(b[i]!='\0'){
		if(b[i]==a)
			c++;
	}
	return c;
}

1 Ответов

Рейтинг:
1

Richard MacCutchan

int i,c;
scanf("%s",s);
while(s[i]!='\0'){

Вы не инициализировали переменную индекса (i) до нуля, чтобы начать индексирование массива. Вероятно, ваш код было бы легче отлаживать, если бы вы использовали правильные значимые имена переменных, а не отдельные буквы.


Member 13706232

Я принимаю ваше ценное предложение...Но ошибка, по-видимому, заключается в следующем...

char_occur.с:4:1: предупреждение: возвращаемый тип 'главное' не 'инт'
[-Функции wmain-возвращаемый тип]
пустота главная(){
^
char_occur.с:4:1: Примечание: изменение типа возвращаемого значения в int
пустота главная(){
^~~~
int
char_occur.c:9:14: предупреждение: несовместимый указатель на передачу целочисленного преобразования
'char [50]' к параметру типа 'char' [-Wint-conversion]
если(со(х[я],с)==лен(ы)/2)
^
char_occur.c:3:17: Примечание: передача аргумента параметру здесь
int co(char,char);
^
char_occur.c:9:18: предупреждение: неявное объявление функции 'len' недопустимо в
C99 [-Wimplicit-функция-объявление]
если(со(х[я],с)==лен(ы)/2)
^
char_occur.c:16:5: ошибка: конфликтующие типы для 'co'
int co(char a,char b[50]){
^
char_occur.c:3:5: Примечание: предыдущее объявление находится здесь
int co(char,char);
^
Сгенерировано 3 предупреждения и 1 ошибка.

Richard MacCutchan

Да, ряд других ошибок. Вам необходимо исправить их, как указано в сообщениях об ошибках.

- стандартное объявление для main в C и C++ заключается в том, что оно возвращает целочисленное значение, так что int main()
- Ваша декларация и определение СО не совпадают, они оба должны быть int co(char a,char b[50]) или еще лучше: int co(char a,char *b)
- нет никакой функции len в вашем коде; вы должны использовать стандартную функцию библиотеки Си strlen