Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Передача параметров функции


Автор: Novojiloff 26.3.2007, 08:34
Убил несколько часов на поиск проблемы
и так, и сяк... smile

Программа не хочет компилироваться

Код

#include<stdio.h>
#include<conio.h>

      
main()
        
        {
        float cost, discount;
        printf("Введите стоимость единицы товара: ");
        scanf("%f",&cost);
        
        printf("Введите процент скидки (в виде дес. дроби): ");
        scanf("%f",&discount);
        
        price(cost,discount);
        }

price(amount, mrkdown)
float amount, mrkdown;
        {
        float reduced, net;
        reduced = amount * mrkdown;
        net = amount - reduced;
        
        printf("Стоимость с учетом скидки составляет %.2f долларов", net);
        return(0);
        
}     
   



Автор: Greeen 26.3.2007, 08:38
Код

void price(float amount, float mrkdown)
{
        float reduced, net;
        reduced = amount * mrkdown;
        net = amount - reduced;        
        printf("Стоимость с учетом скидки составляет %.2f долларов", net);      
}     

Автор: seacat79 26.3.2007, 08:58
Цитата(Novojiloff @  26.3.2007,  08:34 Найти цитируемый пост)
Программа не хочет компилироваться


Это потому что программа написана на чистом С, а компилировать пытаешься скорее всего как программу на С++

Того, что написал Greeen недостаточно. Надо еще до ф-ции main() написать сделать описание ф-ции price

Код

void price(float, float);
 
int main()
{
...
}


Автор: Greeen 26.3.2007, 09:00
seacat79, ну дал бы человеку хоть чуть самому подумать  smile 

Автор: nerezus 26.3.2007, 09:28
Novojiloff, 
ты не определил тип main(т.к. любое определение ОБЯЗАТЕЛЬНО требует указания типа)

ДАлее, main() должна быть int, а все типы кроме void должны возвращать(return) значение.

Автор: seacat79 26.3.2007, 09:47
Цитата(Greeen @  26.3.2007,  09:00 Найти цитируемый пост)
seacat79, ну дал бы человеку хоть чуть самому подумать  smile  


ОК, в следующий раз так и сделаю  smile 

Автор: Kuvaldis 26.3.2007, 19:35
nerezus, 
Цитата

ты не определил тип main(т.к. любое определение ОБЯЗАТЕЛЬНО требует указания типа)

Не обязательно. Если не указать, ошибки не будет, только warning. Правило неявного int осталось от С

Автор: Novojiloff 26.3.2007, 20:02
Да вот вроде понял, что вы имели ввиду. И картинку могу нарисовать smile
(Надеюсь проблема не в компиляторе? У меня DevCpp 4.9.8.0)

Но вот все равно выдаются ошибки. Вы можете организовать так сказать "эталон"?
Всю программу целиком?

Код

#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
    
    {
    int a;
    coun << "Enter a: ";
    cin >> a;
    
    doubles(a);
    
    system("PAUSE");
    return 0;
    }
    
    doubles(b)
    int b;
        {
        printf("%d",b*2);
        }

Автор: nerezus 26.3.2007, 20:08
Цитата

Правило неявного int осталось от С 
 В C обязательно указывать тип.
Если не веришь — читай ISO 9899, я даже пункт подскажу, ибо там больше полтысячи страниц. Пункт 6.7.2.

Автор: Fazil6 26.3.2007, 20:28
Цитата(nerezus @  26.3.2007,  20:08 Найти цитируемый пост)
Если не веришь — читай ISO 9899, я даже пункт подскажу, ибо там больше полтысячи страниц. Пункт 6.7.2.
ты не открыл Америку, но большинство компилляторов не поддерживают это требование. В стандарте С89 если тип не указан, то это int

Автор: Greeen 26.3.2007, 21:21
Novojiloff, уважаемый ну что же вы никак с функциями не разберетесь. Ну хотя бы для собственного развития. Больно на это смотреть  smile 
Держи:
Код

#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
    
void doubles(int b)
{
    printf("%d", b*2);
}

int main(int nNumberofArgs, char* pszArgs[])
{
    int a;
    cout << "Enter a: ";
    cin >> a;
    
    doubles(a);
    
    system("PAUSE");
    return 0;
}

Автор: nerezus 27.3.2007, 06:41
Цитата

ты не открыл Америку, но большинство компилляторов не поддерживают это требование. В стандарте С89 если тип не указан, то это int
 Т.е. ты считаешь, что правильно нарушать стандарт при любой представившейся возможности?

Автор: Novojiloff 27.3.2007, 07:09
to Greeen
Огромное спасибо.  smile 
Как будет 100 сообщений, обязательно поставлю "+"

Еще раз спасибо

Автор: Kuvaldis 27.3.2007, 22:41
Цитата(Novojiloff @ 27.3.2007,  06:09)
to Greeen
Огромное спасибо.  smile 
Как будет 100 сообщений, обязательно поставлю "+"

Еще раз спасибо

Поставил smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)