Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ламерский вопрос по ф-циям, возвращаемое значение? 
V
    Опции темы
Killer_13
Дата 16.5.2009, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



Вот пробую уже че т писать, но вот не могу никак понять.
Вот например возвращаем значение ф-ции, потом с помощью цыкла сравниваем с нулем, пока не выдаст то что нужно, тоисть это как?
Типо true или false 1 или 0?
Может не совсем внятно обьясняю, что спросить хочу, но! вот пример.

Код

#include <stdio.h>
#include <limits.h>
int rekurs (void);
unsigned int myUnsignedIntInput (void); 

int main()
{
    char s[255];
    unsigned int x;
    unsigned int u, divid=0,divis=0,d,rest;
    
    printf("\n-------------------------------------------------\n");
    printf("Geben Sie bitte ein Dividend ein!\n");

    do{
    printf("\nDividend->");
    divid=myUnsignedIntInput(); 
    }
    while(divid==1);

    printf("Geben Sie bitte ein Divisor ein!\n");

    do{
    printf("\nDivisor->");
    divis=myUnsignedIntInput();
    }
    while(divid==1);

    d=divid/divis;
    printf("\nd=%u",d);
    
    
rekurs();

    printf("\n-------------------------------------------------\n");

return 0;
}

unsigned int myUnsignedIntInput (void)
{

    int i,lng,z;
    unsigned int u=0;
    long temp;
    char c,s[255];
    scanf("%s",s);

    lng=strlen(s);
  if (lng-1>10){                           
    printf("Ihre Eingabe ist zu lang!\n\n");
    return 1;
  }

     for (i=0;i<lng;i++){
        if (!isdigit(s[i])) {
            printf("Das ist nicht Zahl!\n");
            return 1;
        }
  }
    u = 0;
  for(i =0; i < lng; i++){
    c = s[i];
    if (u < UINT_MAX/10 || u == UINT_MAX/10 &&  c - '0' <= UINT_MAX%10){
      u = u * 10 + c - '0';
    } 
        else{
        printf("Bitte nur positive ganze Zahlen eingeben!\n\n");
        return 1;
        } 
  }
    printf("This is unsigned %u\n", u); 

return u;
}

int rekurs (void)
{
unsigned int *i_ein, fun=0;
char s[255];

}


Вот программа, я хочу, чтобы введенное с клавиатуры число проверялось на тип, первое число проверяется нормально, тоисть этот код работает, 
Почему так?

Код

do{
    printf("\nDividend->");
    divid=myUnsignedIntInput(); 
    }
    while(divid==1);



а следующий(этот) цикл исполняется только один раз!
Код

do{
    printf("\nDivisor->");
    divis=myUnsignedIntInput();
    }
    while(divid==1);



И почему мы значение фции приравниваем к 1 или не равно 0 например.?

И почему например, если мы в любом цикле возвращаем 1, то он начинает наново исполняться?

Код

for (i=0;i<lng;i++){
        if (!isdigit(s[i])) {
            printf("Das ist nicht Zahl!\n");
            return 1;
        }


Надеюсь, что господа поймут о чем я спрашиваю. Спасибо за ответы на глупый вопрос.

Добавлено через 8 минут и 24 секунды
Нашел одну ошибку

вместо
Код

do{
    printf("\nDivisor->");
    divis=myUnsignedIntInput();
    }
    while(divid==1);


нужно

Код

do{
    printf("\nDivisor->");
    divis=myUnsignedIntInput();
    }
    while(divis==1);


Это сообщение отредактировал(а) Killer_13 - 16.5.2009, 23:40
PM MAIL   Вверх
fry
Дата 17.5.2009, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Думаю на будующее будет полезно.

Многие проблемы решаются трассировкой (пошаговое выполнение). Думаю если погоняешь прогу пошагово (некоторые отладчики, например, GDB могут останавливать выполнение по прошествии некоторого количества циклов выполнения некоторой строки кода, что удобно при отладке циклов) тебе будут ясны решения многих твоих проблем.
Например:
Цитата

почему например, если мы в любом цикле возвращаем 1, то он начинает наново исполняться?

Что значит:
"в любом цикле возвращаем 1". return 1 - выход из функции и возврат числа 1 как возвращаемого значения. 
"то он начинает наново исполняться". Цикл заново выполняться может только при новом вхождении в функцию. Вот этот момент однозначно показал бы отладчик при пошаговом выполнении. И это виноват не return.
Множество других ошибок можно отловить посредством cout (его использование думаю безопаснее будет С'ого варианта с printf, также заменой scanf для С++ будет cin)
Использование отладки сократит тебе время, т.к. перед ответом на вопрос людям надо разобраться в коде, а некоторые моменты не очевидны.
PM MAIL   Вверх
andrew_121
Дата 17.5.2009, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Killer_13, Ты столько текста понаписывал, что влом читать....


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
mes
Дата 17.5.2009, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(andrew_121 @  17.5.2009,  00:10 Найти цитируемый пост)
Killer_13, Ты столько текста понаписывал, что влом читать.... 

да и не зачем уже :
Цитата(Killer_13 @  16.5.2009,  22:35 Найти цитируемый пост)
Добавлено через 8 минут и 24 секунды
Нашел одну ошибку




--------------------
PM MAIL WWW   Вверх
Killer_13
Дата 17.5.2009, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



fry или кому не лень, хотел уже давно научиться пользоваться отладчиком, но никак не мог найти инфу, почитать, - как им пользоваться.
Если кто знает, подскажите где можно почитать - желательно на русском.

спасибо
PM MAIL   Вверх
zim22
Дата 17.5.2009, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Killer_13 @  17.5.2009,  01:43 Найти цитируемый пост)
Если кто знает, подскажите где можно почитать - желательно на русском.

нечего там читать. 
F9 - поставить бряк.
F5 - запустить отладку
F10 - выполнить текущую строку кода
F11 - зайти внутрь функции


--------------------
PM MAIL   Вверх
Killer_13
Дата 17.5.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



zim22  эт о чем идет речь? Я код пишу в Notepad++ и компилирую cygwin.
PM MAIL   Вверх
bsa
Дата 17.5.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Killer_13, а... ну тогда отладка для тебя будет крайне трудоемка...
Поставь какую-нибудь IDE (Code::Blocks, например) и поймешь, сколько ты потерял в своей жизни.
PM   Вверх
Killer_13
Дата 17.5.2009, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



ну тогда подскажите не какую нибудь, а стоящую, что я не перебирал из десятка, а начал сразу с нормальной.
Мне просто оч нравиться подсветка кода в Notepad ++ особо привлекает подсветка когда показывает при наведении на открытую закрытую скобку, при выделении переменной показывает выделением все такие же переменные в коде, и цвета нравятся.
Есть что то похожее. Пасибо.
PM MAIL   Вверх
azesmcar
Дата 17.5.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Killer_13 @  17.5.2009,  12:35 Найти цитируемый пост)
ну тогда подскажите не какую нибудь, а стоящую, что я не перебирал из десятка, а начал сразу с нормальной.
Мне просто оч нравиться подсветка кода в Notepad ++ особо привлекает подсветка когда показывает при наведении на открытую закрытую скобку, при выделении переменной показывает выделением все такие же переменные в коде, и цвета нравятся.
Есть что то похожее. Пасибо. 

Visual Studio 2008 Express Edition + к нему можно добавить Visual AssistX и редактор сам начнет писать код.. smile 
хотя для новичков я бы не советовал..пишите пока сами, руку набивайте.

Это сообщение отредактировал(а) azesmcar - 17.5.2009, 13:37
PM   Вверх
Killer_13
Дата 17.5.2009, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



Ок, постебаться я тоже люблю. smilesmilesmile
Я сейчас учусь программированию под "С", "С++" будет в сл семестре, но насколько я понял, (хотя там нигде не указано), там сказано только под "С++", думаю под С тоже все гладко и четко пойдет. smile

На счет Visual AssistX - я сам предпочитаю код писать. smile smile  smile 
PM MAIL   Вверх
azesmcar
Дата 17.5.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Killer_13 @  17.5.2009,  15:09 Найти цитируемый пост)
Ок, постебаться я тоже люблю. smilesmilesmile

А кто тут стебался?

Цитата(Killer_13 @  17.5.2009,  15:09 Найти цитируемый пост)
Я сейчас учусь программированию под "С", "С++" будет в сл семестре, но насколько я понял, (хотя там нигде не указано), там сказано только под "С++", думаю под С тоже все гладко и четко пойдет. smile

http://www.microsoft.com/express/vc/
Это ссылка на скачивания Visual C++ 2008 express edition. Эта версия абсолютно бесплатная. 

Цитата(Killer_13 @  17.5.2009,  15:09 Найти цитируемый пост)
На счет Visual AssistX - я сам предпочитаю код писать

когда за эту начнут платить деньги думаю ваши предпочтения сменятся smile а пока как я сказал - лучше писать самому..руку набивать smile 
PM   Вверх
fry
Дата 17.5.2009, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Можешь попробовать Eclipse. Сам им пользуюсь. Есть еще конечно еще среды, NetBeans(по моему как-то так). В Eclipse входят как среда для программирования, так и среда для отладчика, однако в Win ее не пользовал, но думаю должна работать без проблем. ИМХО писать в блокноте проги - садомозахизм, если конечно это не "привет мир". Как правило ошибки не очень крупные, при условии, что понимаешь что делаешь,и с отладчиком их найти как нечего делать.
PM MAIL   Вверх
Killer_13
Дата 17.5.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



Eclipse есть, но подсветка меня там никак не устраивает, я ж говорил, оч нравиться в Notepad++

"
Цитата

Мне просто оч нравиться подсветка кода в Notepad ++ особо привлекает подсветка когда показывает при наведении на открытую закрытую скобку, при выделении переменной показывает выделением все такие же переменные в коде, и цвета нравятся.
"

В еклипс есть создать проект типа "С", качаю щас посмотреть визуал студио, интересно там есть для языка "С" или только для "С++"
PM MAIL   Вверх
cutwater
Дата 17.5.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 2
Всего: 10



А кто мешает настроить подстветку синтаксиса так как в Notepad++ ??
Или чем она не нравится?


--------------------
user posted image
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1079 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.