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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2014, 21:15   #1
heroys6
Новичок
Джуниор
 
Аватар для heroys6
 
Регистрация: 14.12.2014
Сообщений: 1
По умолчанию Ввод/вывод и работа с ними

Здравствуйте уважаемые про!
Прошу помочь доработать программу. Задача звучит так:

" Написать программу, которая находит наибольшее из целых чисел, встречающихся в тексте. Пользователь вводит текст с клавиатуры. Пользователь завершает ввод нажатием клавиш Ctrl+Z, при этом генерируется значение EOF. Отдельным словом считается набор символов, не содержащий пробелов. Слово может состоять из латиницы, цифр, знаков пунктуации. Число может быть составляющим определённого слова или записываться отдельно. Если встречается точка, то до и после неё - разные числа: addr-15.123 должно интерпретироваться как два числа: -15 и 123
Наибольшее среди распознанных целых чисел записать в файл "

Проблема в том, что мой код анализирует величину по количеству цифр) Т.е. 001 > 99 Вопрос в том, как введённые в массив vvod[] числа сравнивать между собой(123 записывается в три ячейки массива) ?

Код:
#include<stdio.h>
#include<stdlib.h>
#include <ctype.h>

int main(void)
{
    FILE *nfp;

    char vvod[1000];

    int nash_budjet[100];
    int m_word[100];

    char ch;

    int leng=0, Max_leng=0, j, i=0, k;// maximum=-32768;

    printf("Enter the text and use [Enter]+[#]+[Enter] for continue work:\n\n");
    while((ch=getchar())!='#')
    {
        vvod[i]=ch;
        printf("Char in bufer |%c| |i=%d|\n", vvod[i], i);
        i++;
    }

    for (k=0; k<=i; k++)
    {
        if (vvod[k]==' ' || vvod[k]=='\n')
        {
            if (leng>Max_leng)
            {
                Max_leng=leng;

                for (j=0; j<(Max_leng); j++)
                {
                    m_word[j]=nash_budjet[j];
                }
                //if (m_word>maximum)
                  //  maximum=m_word;
            }
            leng=0;
        }
        else if (isdigit(vvod[k]))
        {
            nash_budjet[leng]=vvod[k];
            leng++;
        }
        else if (vvod[k]=='-' && isdigit(vvod[k+1]))
        {
            nash_budjet[leng]=vvod[k];
            leng++;
        }
        else if (vvod[k]=='.')
        {
            if (leng>Max_leng)
            {
                Max_leng=leng;

                for (j=0; j<(Max_leng); j++)
                {
                    m_word[j]=nash_budjet[j];
                }
            }
            leng=0;
        }
    }

    if ((nfp=fopen("OUT.txt", "a+"))==NULL)
    {
        printf("Error in opening OUT.txt!");
        exit(1);
    }
    for (j=0; j<=(Max_leng-1); j++)
        putc(m_word[j], nfp);

    fclose(nfp);

    printf("\nLength digit: %d\n", Max_leng);

    printf("Digit: ");
    //printf("Digit: %d", maximum);
    for (j=0; j<=(Max_leng-1); j++)
        printf("%c", m_word[j]);

    return 0;
}

P.S. На счёт EOF, как его описать?(У меня через '#') ОС: Arch Linux
P.P.S Почему есть разница между вводом:
abc-1# + [Enter]
и
abc-1 + [Enter] + # + [Enter] ?
heroys6 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод записей на главную в несколько рядов, а между ними картирка timedo WordPress и другие CMS 0 23.02.2013 21:36
работа с информацией в текстовом файле(ввод-вывод на языке С#) ~Mi@mi~ Помощь студентам 0 29.11.2010 20:23
Автофильтры и работа с ними Lego Microsoft Office Excel 16 18.10.2010 23:48
Ввод-вывод, работа со строками (ассемблер, DOS) Журенова Катя Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 24.04.2009 22:13
Ввод/Вывод данных.Лабораторная работа. kry Общие вопросы C/C++ 1 03.03.2009 11:03