![]() |
Проблемма с програмированием
Короче нужно сделать маленькую работу на языке С, я в програминге ничего на шарю. Вот вопрос: я скопировал из инета код вот он
#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++) Что может быль не так? |
очевидно, ты просто не успеваешь прочесть вывод на экран; добавленные строки заставят окно ждать ввода символа и нажатия 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); } |
Ага большое спасибо за разяснение :)
|
также можно добавить в начале #include <conio.h> и в конце (перед скобкой) getch();
Tогда программа будет ждать нажатия клавиши, перед тем как закрыться. |
Еще один вопрос: Как указать такое дело?
Надо возвести х в степень у при этом если (x=0 AND y≤0) OR (x<0 AND y не целое число)б должно выдавать ОШИБКА. Со всем справился кроме того что у не целое числоб как это указать ? Вообще у любое, так что int y не прдлагать :) |
Вот такой вариант могу предложить...
Код:
#include<conio.h> |
Цитата:
Код:
#include <math.h> |
а еще можно поставить в конце "return 0"
тоже прет я только что начал учить, тоже на этом примере ;) |
Короче у меня снова вопрос. Вот код, судя про всему что то в нём не так, при компиле всё ОК, но если запускаеьш программу, то сразу выдаётся ошибка. Текст не русский в коде присутствует, но я думаю перевод не нужен.
#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
Бред у тебя какой-то в функции main в начале написан... На сколько я понял всё должно выглядеть примерно так: Код:
#include<stdio.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); попробуй перенести выделенную строку ВНИЗ блока - тогда объявления функции prindi, kraadid и astmed окажутся вне мэйна, где им собственно и место. |
Цитата:
Цитата:
Я в программинге не очень шарю, так что офомляю всё как учат... Вро де учили так, ничего не получается. |
alexksei
Пиши _какие_ у тебя ошибки, что происходит... Ты кстати вводишь в параметрах командной строки данные для программы? Программа берет данные именно оттуда, и если ты не задаешь их, а просто запускаешь, то конечно она будет ругаться. Кстати в функции astmed вообще нет необходимости, она фактически меняет в main строку float aste = pow(a,b) на float aste = astmed(a,b), да плюс ещё лишняя фуцнкция. Функция prindi честно говоря тоже не имеет большого смысла, разве что для многократного её вызова с разными параметрами. |
Держи.
#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); } |
Цитата:
Sorry чуваки, я забыл что надо через командную строку вводить параметры. Оказывается и моя первоначальная была правильная практически. Но всё равно всем THANKS :beer: |
| Часовой пояс GMT +4, время: 20:15. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.