2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 14:13 


17/11/13
17
Выдает ошибки при компиляции(я новичок,только начинаю изучать язык си,поэтому не пойму проблему((..)
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
#include<stdio.h>
#include<math.h>
void main(){
double x1,y1,z1;
double x2,y2,z2;
double x3,y3,z3;
printf("x1 y1 z1?\n");
scanf("%lf", &x1 &y1 &z1);
printf("x2 y2 z2 ?\n");
scanf("%lf", &x1 &x2 &y3);
x3=(x1+x2)/2;
y3=(y1+y2)/2;
z3=(z1+z2)/2;
printf("x3 y3 z3");
scanf("%lf", &x3 &y3 &z3);
getchar();}

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 15:22 
Заслуженный участник


09/09/10
3729
Конкретно какие ошибки выдает — это, видимо, военная тайна. Ладно. Во-первых, main возвращает int, а не void, во-вторых, scanf так не вызывают.

scanf("%lf %lf %lf", &x1, &y1, &z1);

В-третьих, вы в конце программы вводите еще три числа и перезаписываете ими значения x3, y3, z3 — уж не знаю зачем. Возможно, вы хотели сделать

printf("x3 y3 z3\n%lf %lf %lf", x3, y3, z3);

?

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 15:36 


17/11/13
17
Спасибо,я и не заметил этих маленьких огрехов,из-за которых программа не работала.... :oops:

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 18:17 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Joker_vD, а почему main не может быть типа void? И тогда уж нужно было подсказать, что в конце должно быть return 0.

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 18:39 
Заслуженный участник


28/04/09
1933
Потому что по стандарту функция main должна возвращать int. А вот return в ней можно и не писать, поскольку код будет выполняться так, как если бы в конце стояло return 0;.
P.S. Разумеется, некоторые компиляторы допускают вольности типа void main(){...}, но лучше не вестись на подобные послабления :-) .

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 18:47 


05/09/12
2587

(Оффтоп)

А еще была дискуссия, что while(1) не по стандарту, хотя так пишут все, но нормальный компилятор должен на это ругаться, а писать надо for(;;)

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 18:57 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
О как. Спасибо.

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 18:59 
Заслуженный участник


04/05/09
4587
_Ivana в сообщении #789749 писал(а):

(Оффтоп)

А еще была дискуссия, что while(1) не по стандарту, хотя так пишут все, но нормальный компилятор должен на это ругаться, а писать надо for(;;)
Пардон, а что не так с while(1)?

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 19:18 


05/09/12
2587
Детали не помню, а навскидку обсуждение не нашел. Речь шла об оптимизации компилятором и соответствии стандартам, типа использование любых четко не оговоренных в стандарте конструкций потенциально опасно. Открыл своего К-Р на 74 странице, действительно (как и говорили) в качестве бесконечного цикла предложен for(;;).

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 19:44 
Заслуженный участник


09/09/10
3729
_Ivana
Что в C89, что в C99 while(1), for(;1;) и for(;;) идентичны, т.к. в обоих редакциях сказано:

Цитата:
The controlling expression of an iteration statement shall have scalar type.
Цитата:
An iteration statement causes a statement called the loop body to be executed repeatedly until the controlling expression compares equal to 0.
Цитата:
Both clause-1 and expression-3 can be omitted. An omitted expression-2 is replaced by a nonzero constant.

Пользуйтесь standard-conformant компиляторами!

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 20:00 


05/09/12
2587
Joker_vD, у меня своих стереотипов по данному вопросу нет (я сам везде while(1) пишу :-) ), но я порой читаю подобное (снизу и на следующей странице), и люди пишут авторитетные в своей области, поэтому доверяю. Кстати, это далеко не единственный акцент на этом моменте на том форуме.
UPD и вот здесь, с примерами

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 20:50 
Заслуженный участник


04/05/09
4587
Я не увидел ни одной ссылки на стандарт, которая бы говорила о том, что while(1) неправильно.
Кому-то не понравилось, что какой-то старый компилятор выдаёт предупреждение, что управляющее выражение - константа.
Предупреждение довольно бессмысленно, т.к. это совершенно стандартная ситуация при работе шаблонами, да и без них встречается при написании переносимого кода.

(Оффтоп)

А гуру бывают разные.

 Профиль  
                  
 
 Re: Как сделать программу рабочей?!?!?
Сообщение17.11.2013, 21:09 
Заслуженный участник
Аватара пользователя


06/10/08
6422
_Ivana в сообщении #789788 писал(а):
Joker_vD, у меня своих стереотипов по данному вопросу нет (я сам везде while(1) пишу :-) ), но я порой читаю подобное
(снизу и на следующей странице), и люди пишут авторитетные в своей области, поэтому доверяю. Кстати, это далеко не единственный акцент на этом моменте на том форуме.
UPD и вот здесь, с примерами
Довольно странное мнение. По мне так понятнее писать #define TRUE 1 и while(TRUE) или #include <stdbool.h> и while(true).

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group