Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdbool.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <string.h>
- #include "error.h"
- #include "poly.h"
- int i = 0;
- int j = 0;
- typedef struct poly_t poly_t;
- struct poly_t {
- int* coef;
- int* expo;
- char* sign;
- int size;
- };
- poly_t* new_poly_from_string(const char* c){
- poly_t *p = malloc(sizeof(poly_t));
- p->coef = malloc(sizeof(p->coef));
- p->expo = malloc(sizeof(p->expo));
- p->sign = malloc(sizeof(p->sign));
- //int b = 0;
- int size = 0;
- int index = strlen(c);
- for (i = 0; i < index; i++){ //while (c[index] != EOF){
- if (c[i] == '\n'){
- return p;
- }
- //(x^2 - 7x + 1)
- if (c[i] == 'x'){
- if (c[i+1] == '^'){
- printf("c+1: %c\n", c[i+1]);
- printf("c+2: %c\n", c[i+2]); // När denna skrivs ut blir den 2
- p->coef[size] = 1;
- printf("Coeff = 0\n");
- p->expo[size] = c[i+2]; //När denna skrivs ut iraden under blir den 50
- printf("hej:%d\n", p->expo[size]);
- i+=2;
- } else {
- p->coef[size] = 0;
- p->expo[size] = c[0];
- i+=1;
- }
- if (i > 1){
- if (c[i-2] == '+'){
- p->sign[size] = '+';
- }else {
- p->sign[size] = '-';
- }
- }
- }else if (c[i] == ' '){
- size++;
- p->coef = realloc(p->coef, sizeof(int));
- p->expo = realloc(p->expo, sizeof(int));
- p->sign = realloc(p->sign, sizeof(int));
- }
- // printf("hej %c\n", c[i]);
- }
- p->size = size;
- return p;
- }
- void free_poly(poly_t* p){
- free(p->coef);
- free(p->expo);
- free(p->sign);
- free(p);
- }
- poly_t* mul(poly_t* p1, poly_t* p2){
- int s = 0;
- poly_t *p = malloc(sizeof(*p));
- p->coef = malloc(sizeof(p->coef));
- p->expo = malloc(sizeof(p->expo));
- p->sign = malloc(sizeof(p->sign));
- for (i=0; i < p1->size; i ++){
- for (j=0; j < p2->size; i++){
- p->coef[s] = p1->coef[i]*p2->coef[j];
- p->expo[s] = p1->expo[i]+p2->expo[j];
- if (p1->sign[i] != p2->sign[j]){
- p->sign[s] = '-';
- }else {
- p->sign[s] = '+';
- }
- }
- }
- return p;
- }
- void print_poly(poly_t* p){
- int index = p->size;
- printf("storlek: %d\n", index);
- for (i = 0; i < index; i++){
- printf("coef= %d\n", p->coef[i]);
- printf("expo= %d\n", p->expo[i]);
- printf("sign= %d\n", p->sign[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement