imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 11.10.2005, 01:52     # 1
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Проблемма с програмированием

Короче нужно сделать маленькую работу на языке С, я в програминге ничего на шарю. Вот вопрос: я скопировал из инета код вот он
#include <stdio.h>
main()
{
int a,b,c;
printf("\nThe first number is ");
scanf("%d",&a);
printf("The second number is ");
scanf("%d",&b);
c = a + b;
printf("The answer is %d \n",c);
}


Я делаю compile и run, но после ввода первых двух чисел программа просто закрывается, хотя должна выдавать сумму этих двух чисел. Так же происходит и с той работой которую я пытаюсь сделать. (пользуюсь программой devc++) Что может быль не так?
alexksei вне форума  
Старый 11.10.2005, 02:48     # 2
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
очевидно, ты просто не успеваешь прочесть вывод на экран; добавленные строки заставят окно ждать ввода символа и нажатия Enter.

#include <stdio.h>
main()
{
int a,b,c;
char c;
printf("\nThe first number is ");
scanf("%d",&a);
printf("The second number is ");
scanf("%d",&b);
c = a + b;
printf("The answer is %d \n",c);
scanf("%c", &c);
}
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 11.10.2005, 16:39     # 3
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Ага большое спасибо за разяснение
alexksei вне форума  
Старый 11.10.2005, 19:52     # 4
7en
Newbie
 
Регистрация: 11.01.2003
Адрес: c:\windows\system32
Сообщения: 28

7en Путь к славе только начался
также можно добавить в начале #include <conio.h> и в конце (перед скобкой) getch();
Tогда программа будет ждать нажатия клавиши, перед тем как закрыться.
7en вне форума  
Старый 14.10.2005, 02:21     # 5
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Еще один вопрос: Как указать такое дело?

Надо возвести х в степень у при этом если (x=0 AND y≤0) OR (x<0 AND y не целое число)б должно выдавать ОШИБКА. Со всем справился кроме того что у не целое числоб как это указать ? Вообще у любое, так что int y не прдлагать
alexksei вне форума  
Старый 14.10.2005, 10:37     # 6
Vellion
Junior Member
 
Регистрация: 16.04.2004
Сообщения: 53

Vellion Известность не заставит себя ждать
Вот такой вариант могу предложить...
Код:
#include<conio.h>
#include<stdio.h>

void main(void)
{
	float y;
	int tmp;
	
	y = 1.00;
	tmp = y;
	if (y - tmp) printf("Не целое!");
	else printf("Целое!");
	getch();
}
Vellion вне форума  
Старый 14.10.2005, 11:51     # 7
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
Цитата:
Сообщение от Vellion
Вот такой вариант могу предложить...
про переполнение слышал?

Код:
#include <math.h>
#include <stdio.h>
      main()
      {
        double x, y, n;
        x = -41.56789;
        y = modf(x, &n);
        printf("modf(%f)=fractional %f and integer : %f",
                                                  x, y, n);
      }
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 15.10.2005, 20:30     # 8
tiranozaurus
Junior Member
 
Аватар для tiranozaurus
 
Регистрация: 04.05.2005
Сообщения: 59

tiranozaurus Нуль без палочки
а еще можно поставить в конце "return 0"
тоже прет
я только что начал учить, тоже на этом примере
__________________
не поворачивайся к жизни спиной-может отыметь..

Я сказал мне не нужна корона..я передумал...
tiranozaurus вне форума  
Старый 28.10.2005, 01:53     # 9
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Короче у меня снова вопрос. Вот код, судя про всему что то в нём не так, при компиле всё ОК, но если запускаеьш программу, то сразу выдаётся ошибка. Текст не русский в коде присутствует, но я думаю перевод не нужен.

#include<stdio.h>
#include<math.h>
#include<stdlib.h>

int main(float argc, char *argv[]){
void prindi (float celsius, float fahrenheit, float a, float b, float aste, char nimi[20]);
float kraadid (int celsius);
float astmed(float a, float b);

float celsius;
float fahrenheit;
char nimi[20];
float a,b;
float aste;
celsius = atof(argv[1]);
strcpy(nimi, argv[2]);
fahrenheit=kraadid(celsius);
a = atof(argv[3]);
b = atof(argv[4]);
aste=astmed(a,b);
prindi(celsius,fahrenheit,a,b,aste,nimi);
system("PAUSE");
return 0;

}

float kraadid(int celsius) {
float fahrenheit;
fahrenheit=1.8*celsius+32;
return fahrenheit;

}
float astmed(float a, float b){
float aste;
aste= pow(a, b);
return aste;
}

void prindi (float celsius, float fahrenheit, float a, float b, float aste, char nimi[20]){
printf("Nimi on: %s\n%d kraadi Celsiuse skaala on %5.2f kraadi Fahrenheiti skaalal\n%5.2f astmel %5.2f on %5.2f\n", nimi, celsius, fahrenheit, a, b, aste);
}

Последний раз редактировалось alexksei; 28.10.2005 в 02:01.
alexksei вне форума  
Старый 28.10.2005, 02:12     # 10
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
alexksei
Бред у тебя какой-то в функции main в начале написан...

На сколько я понял всё должно выглядеть примерно так:
Код:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

int main(float argc, char *argv[])
{
  float celsius = atoi(argv[1]);
  float fahrenheit = kraadid(celsius);
  char nimi[20];
  float a = atoi(argv[2]), b = atoi(argv[3]);
  float aste = astmed(a,b);
  strcpy(nimi, argv[4]);
  prindi(celsius,fahrenheit,a,b,aste,nimi);
  return 0;
}

float kraadid(int celsius) 
{
  float fahrenheit;
  fahrenheit = 1.8*celsius+32;
  return fahrenheit;
}

float astmed(float a, float b)
{
  float aste;
  aste = pow(a, b);
  return aste;
}

void prindi (float celsius, float fahrenheit, float a, float b, float aste, char nimi[20])
{
  printf("Nimi on: %s\n%d kraadi Celsiuse skaala on %5.2f kraadi Fahrenheiti skaalal\n%5.2f astmel %5.2f on %5.2f\n", nimi, celsius, fahrenheit, a, b, aste);
}
ЕЖ вне форума  
Старый 28.10.2005, 02:17     # 11
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
вызывает сомнение вот этот блок

int main(float argc, char *argv[]){
void prindi (float celsius, float fahrenheit, float a, float b, float aste, char nimi[20]);
float kraadid (int celsius);
float astmed(float a, float b);

попробуй перенести выделенную строку ВНИЗ блока - тогда объявления функции prindi, kraadid и astmed окажутся вне мэйна, где им собственно и место.
SapeR вне форума  
Старый 28.10.2005, 02:41     # 12
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Цитата:
Сообщение от SapeR
вызывает сомнение вот этот блок

int main(float argc, char *argv[]){
void prindi (float celsius, float fahrenheit, float a, float b, float aste, char nimi[20]);
float kraadid (int celsius);
float astmed(float a, float b);

попробуй перенести выделенную строку ВНИЗ блока - тогда объявления функции prindi, kraadid и astmed окажутся вне мэйна, где им собственно и место.
Перенёс, всё равно таже лажа.

Цитата:
Сообщение от ЕЖ
alexksei
Бред у тебя какой-то в функции main в начале написан...

На сколько я понял всё должно выглядеть примерно так:
Твоё четтоже не помогло.

Я в программинге не очень шарю, так что офомляю всё как учат... Вро де учили так, ничего не получается.
alexksei вне форума  
Старый 28.10.2005, 09:02     # 13
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
alexksei
Пиши _какие_ у тебя ошибки, что происходит... Ты кстати вводишь в параметрах командной строки данные для программы? Программа берет данные именно оттуда, и если ты не задаешь их, а просто запускаешь, то конечно она будет ругаться.

Кстати в функции astmed вообще нет необходимости, она фактически меняет в main строку float aste = pow(a,b) на float aste = astmed(a,b), да плюс ещё лишняя фуцнкция. Функция prindi честно говоря тоже не имеет большого смысла, разве что для многократного её вызова с разными параметрами.
ЕЖ вне форума  
Старый 28.10.2005, 11:05     # 14
_Lynx_
Junior Member
 
Регистрация: 11.10.2005
Сообщения: 63

_Lynx_ Путь к славе только начался
Держи.

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h> //не хватало
//Объявления функций естественно вынесены
void prindi (float celsius, float fahrenheit, float a, float b, float aste, char nimi[20]);
float kraadid (int celsius);
float astmed(float a, float b);

int main(int argc, char *argv[]){ //вообще-то argc это int
float celsius;
float fahrenheit;
char nimi[20];
float a,b;
float aste;
if(argc!=5){ //надо проверить всё таки
printf("Using: %s <celsius> <nimi> <a> <b>\n", argv[0]);
return 1;
}
celsius = atof(argv[1]);
strcpy(nimi, argv[2]);
fahrenheit=kraadid(celsius);
a = atof(argv[3]);
b = atof(argv[4]);
aste=astmed(a,b);
prindi(celsius,fahrenheit,a,b,aste,nimi);
system("PAUSE");
return 0;
}

float kraadid(int celsius) {
float fahrenheit;
fahrenheit=1.8*celsius+32;
return fahrenheit;
}
float astmed(float a, float b){
float aste;
aste=pow(a, b);
return aste;
}

void prindi (float celsius, float fahrenheit, float a, float b, float aste, char nimi[20]){
//celsius - float, а не int
printf("Nimi on: %s\n%5.2f kraadi Celsiuse skaala on %5.2f kraadi Fahrenheiti skaalal\n%5.2f astmel %5.2f on %5.2f\n", nimi, celsius, fahrenheit, a, b, aste);
}
_Lynx_ вне форума  
Старый 28.10.2005, 22:14     # 15
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Цитата:
Сообщение от ЕЖ
alexksei
Пиши _какие_ у тебя ошибки, что происходит... Ты кстати вводишь в параметрах командной строки данные для программы? Программа берет данные именно оттуда, и если ты не задаешь их, а просто запускаешь, то конечно она будет ругаться.

Кстати в функции astmed вообще нет необходимости, она фактически меняет в main строку float aste = pow(a,b) на float aste = astmed(a,b), да плюс ещё лишняя фуцнкция. Функция prindi честно говоря тоже не имеет большого смысла, разве что для многократного её вызова с разными параметрами.
Дело в том что это не я придумал так разделить, а такое задание - разделить всю программу на части, после того как сделал без разделения.

Sorry чуваки, я забыл что надо через командную строку вводить параметры. Оказывается и моя первоначальная была правильная практически. Но всё равно всем THANKS

Последний раз редактировалось alexksei; 28.10.2005 в 21:25.
alexksei вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:44.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.