Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2009, 17:57   #1
pixel_
Пользователь
 
Регистрация: 27.12.2008
Сообщений: 27
По умолчанию Программа на C

Цель задачи была такова:

Помогите пожалуйста написать программу на C.

Написать функцию, которая подсчитывает количество слов начинающихся с буквы "к". Текст произвольной длины оканчивающийся ";". Текст состоит из слов разделенных пробелами.

Желательно чтобы программа нормально работала через Turbo C (залил на всякий случай)

Подсказали такой способ

Код:
#include < stdio.h >

int count_sim(char * str, unsigned char sim) {
    int i = 0,
    c = 0;

    while (str[i] != ';') {
        if (str[i] == sim) {
            if ((str[i - 1] == 0x20) || (!str[i - 1])) {
                c++;
            }
        }
        i++;
    }
    return c;
}

int main(int argc, char * argv[]) {
    char string[] = "kakashko lol kaka pipec;";

    printf("slov s k = %d\n", count_sim( & string, 'k'));

    getchar();
    return 0;
}
Ошибки при компиляции через Turbo C(!нужно чтобы программа работала здесь)

pixel_ вне форума Ответить с цитированием
Старый 27.04.2009, 18:02   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Во-первых, уберите пробелы здесь:
Код:
#include <stdio.h>
Во-вторых, измените строку так:
Код:
 printf("slov s k = %d\n", count_sim(string, 'k'));
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.04.2009, 18:53   #3
pixel_
Пользователь
 
Регистрация: 27.12.2008
Сообщений: 27
По умолчанию

Количество ошибок уменьшилось до двух.

pixel_ вне форума Ответить с цитированием
Старый 27.04.2009, 18:55   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Он у вас не может найти stdio.h. Проверьте настройки. Может, неверно прописаны директории.

Два варнинга говорят о том, что у вас не используются argv и argc (параметры в main). Можете не обращать внимания и даже удалить их.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.04.2009, 19:08   #5
pixel_
Пользователь
 
Регистрация: 27.12.2008
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Он у вас не может найти stdio.h. Проверьте настройки. Может, неверно прописаны директории.

Два варнинга говорят о том, что у вас не используются argv и argc (параметры в main). Можете не обращать внимания и даже удалить их.
Не подскажите, где смотреть пути расположения директорий ?
pixel_ вне форума Ответить с цитированием
Старый 27.04.2009, 19:10   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Не подскажите, где смотреть пути расположения директорий ?
Turbo C у меня нет.. Скорее всего, Options -> Dirrectories
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.04.2009, 19:19   #7
pixel_
Пользователь
 
Регистрация: 27.12.2008
Сообщений: 27
По умолчанию

Сказали перенести на диск C (раньше было C:/program files). Говорят проблема с пробелами при прописывании директории.
Теперь ошибок нет.

Но слова на "к" мы должный вводить с клавиатуры.
может эту строку изменить на scanf с парметрами?
как лучше сделать?
char string[] = "kakashko lol kaka pipec;";
pixel_ вне форума Ответить с цитированием
Старый 27.04.2009, 19:26   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
char string[100];
gets(string);
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.04.2009, 19:31   #9
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Код:
char *str;
    scanf("%s", str);
Привыкайте работать с указателями.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 27.04.2009, 19:37   #10
pixel_
Пользователь
 
Регистрация: 27.12.2008
Сообщений: 27
По умолчанию

Sazary, Теперь работает лучше Только подсчитывает слова, в которых есть "k". А нужно слова начинающиеся с "k".
pixel_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа в С++ Clubber Помощь студентам 8 14.05.2011 15:12
1 программа Boris96_2007 Софт 4 17.04.2009 01:32
Программа на ТР zloygeniyrus Помощь студентам 2 22.03.2009 01:27
Программа Fartyna3000 Операционные системы общие вопросы 4 07.12.2008 20:36
Программа Fartyna3000 Операционные системы общие вопросы 4 06.12.2008 23:39