2013-08-31 3 views
-2

Я не энтузиаст С, и я пишу это, неохотно, как часть моего задания. Программа предназначена для ввода двух полиномов и их добавления и отображения. Я писал модули для ввода и отображения, однако программа не запускается.Моя программа на C не работает

В Dev-C++ говорится, что у меня есть несколько определений основного.

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


// This is my implementation to add and multiply 
// two polynomials using linked list 
// So far, it just inputs and displays the polynomial 
struct term { 
    int exp; 
    int coef; 
    struct term *next; 
}; 

struct term* addTerm(struct term *polynomial,int exp,int coef){ // adds a term to polynomial 
    if(polynomial == NULL){ 
     polynomial = (struct term *)malloc(sizeof(struct term)); 
     polynomial->exp = exp; 
     polynomial->coef = coef; 
    }else{ 
     struct term *newTerm = (struct term *)malloc(sizeof(struct term)); 
     newTerm->exp = exp; 
     newTerm->coef = coef; 
     polynomial->next = newTerm; 
    } 
    return polynomial; 
} 

void display(struct term *polynomial){ // displays the polynomial 
    struct term *p = polynomial; 
    while(p->next != NULL){ 
     printf("+ %dx%d",p->coef,p->exp); p = p->next; 
    } 
} 

void main(){ // run it 
    int i = 5; 
    int coef = 0; 
    int exp = 0; 
    struct term *polynomial = NULL; 
    while(i++ < 5){ 
     printf("Enter CoEfficient and Exponent for Term %d",i); 
     scanf("%d %d",&coef,&exp); 
     polynomial = addTerm(polynomial,exp,coef); 
    } 
    display(polynomial); 
    getch(); 
} 

Как его запустить?

+0

ли что * только * ошибка вы получаете? Вы каким-то образом имеете один и тот же файл в своем проекте дважды? Или несколько источников с функцией 'main' в каждом? –

+0

У вас может быть только один «главный» во всей программе на C, включая все модули '.c'. 'main' является точкой входа для всей программы. Кроме того, цикл while в main не будет выполняться, так как 'i' уже не' <5'. Возможно, вы сделали это для целей отладки ... – lurker

+0

Ваша функция 'display' не проверяет многочлен NULL', поэтому он будет segfault в 'p-> next! = NULL', если' p' сам является 'NULL' , – lurker

ответ

3

У вас есть несколько .c файлов в вашем проекте IDE с более чем одним, содержащим функцию main(). Альтернативно - если ваша IDE разрешает это, вы можете добавить один и тот же файл .c в проект более одного раза.

+0

Да, у меня есть еще один тестовый файл '.c' с основным в нем. Разве это не разрешено? Извините, я программист на Java. –

+0

@LittleChild: Я не знаю, как ваша среда IDE управляет проектами, но у вас обычно есть один 'main()' для каждого проекта, и все в проекте скомпилировано и связано. – NPE

+0

Я хочу использовать 'Dev-C++' для моих назначений. Как управлять несколькими файлами с помощью 'main()'. Я имею в виду, я не хочу создавать несколько проектов для каждой программы. –

1

Изменение имени всех файлов с похожими именами этого же файла, добавляя уникальный числовой символ в конце каждого из них до .c

Откройте терминал и изменить УХО в директории проекта src. Введите следующую команду для компиляции кода: gcc -W -o polynomial test.c

Выполнить код сейчас, введя следующие: ./polynomial

Опубликовать результаты здесь, если вы все еще возникают проблемы с этим

1
#include <stdio.h> 
#include <stdlib.h> 
#pragma DONT include <conio.h> 


// This is my implementation to add and multiply 
// two polynomials using linked list 
// So far, it just inputs and displays the polynomial 
struct term { 
    struct term *next; 
    int exp; 
    int coef; 
}; 

struct term *addTerm(struct term **polynomial, int exp, int coef){ // adds a term to polynomial 

    struct term *newTerm; 
    newTerm = malloc(sizeof *newTerm); 
    newTerm->exp = exp; 
    newTerm->coef = coef; 

#if APPEND_AT_TAIL 
    for (; *polynomial;polynomial = &(*polynomial)->next) {;} 
    newTerm->next = NULL; 
#else 
    newTerm->next = *polynomial; 
#endif 
    *polynomial = newTerm ; 

    return newTerm; 
} 

void display(struct term *polynomial){ // displays the polynomial 
    struct term *p; 
    for(p = polynomial; p; p = p->next){ 
     printf("+ {%d * %d}", p->coef, p->exp); 
    } 
} 

int main(void){ // run it 
    int i ; 
    int coef = 0; 
    int exp = 0; 
    struct term *polynomial = NULL; 

    for(i=0; i < 5; i++){ 
     printf("Enter CoEfficient and Exponent for Term %d> ", i); 
     scanf("%d %d",&coef,&exp); 
     addTerm(&polynomial, exp, coef); 
    } 
    display(polynomial); 
    // getch(); 
    return 0; 
} 
Смежные вопросы