I am trying to write a program which implements the Pop and Push functions. The problem is, I am trying to pass the pointer that points to integer Top to the function, so that this integer keeps changing, but when I try to compile I always get this line:
**error: called object is not a function or function pointer (*t)—
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
int push(int stac[], int *v, int *t)
{
if((*t) == MAX-1)
{
return(0);
}
else
{
(*t)++;
stac[*t] = *v;
return *v;
}
}
int pop(int stac[], int *t)
{
int popped;
if((*t) == -1)
{
return(0);
}
else
{
popped = stac[*t]
(*t)--;
return popped;
}
}
int main()
{
int stack[MAX];
int value;
int choice;
int decision;
int top;
top = -1;
do{
printf("Enter 1 to push the valuen");
printf("Enter 2 to pop the valuen");
printf("Enter 3 to exitn");
scanf("%d", &choice);
if(choice == 1)
{
printf("Enter the value to be pushedn");
scanf("%d", &value);
decision = push(stack, &value, &top);
if(decision == 0)
{
printf("Sorry, but the stack is fulln");
}
else
{
printf("The value which is pushed is: %dn", decision);
}
}
else if(choice == 2)
{
decision = pop(stack, &top);
if(decision == 0)
{
printf("The stack is emptyn");
}
else
{
printf("The value which is popped is: %dn", decision);
}
}
}while(choice != 3);
printf("Top is %dn", top);
}
Loading
|
Smart1706 0 / 0 / 0 Регистрация: 05.10.2017 Сообщений: 6 |
||||
|
1 |
||||
Посмотрите, пожалуйста, что не так, не могу исправить ошибку(05.10.2017, 23:15. Показов 4742. Ответов 7 Метки нет (Все метки)
Задание: решите уравнение x — (x^2 / (1 + sin^2 (x+y+z)) в С а вот, что получилось:
Running «/home/ubuntu/workspace/lab3/task3.c» Process exited with code: 1
0 |
|
3592 / 2264 / 407 Регистрация: 09.09.2017 Сообщений: 9,498 |
|
|
05.10.2017, 23:50 |
2 |
|
у вас sin объявлено локальной переменной, хотя это математическая функция. Еще не помешает указать линкеру -lm если еще не сделано
1 |
|
0 / 0 / 0 Регистрация: 05.10.2017 Сообщений: 6 |
|
|
06.10.2017, 00:29 [ТС] |
3 |
|
COKPOWEHEU, видимо, мой уровень ниже начинающего — даже не представляю, как это всё сделать. Буду учиться. Спасибо
0 |
|
3592 / 2264 / 407 Регистрация: 09.09.2017 Сообщений: 9,498 |
|
|
06.10.2017, 09:25 |
4 |
|
sin как переменная у вас нигде не используется. Зачем она вообще там объявлена? Уберите ее объявление оттуда и все.
1 |
|
0 / 0 / 0 Регистрация: 05.10.2017 Сообщений: 6 |
|
|
06.10.2017, 09:56 [ТС] |
5 |
|
COKPOWEHEU, спасибо, количество ошибок сократилось до одной:
0 |
|
3592 / 2264 / 407 Регистрация: 09.09.2017 Сообщений: 9,498 |
|
|
06.10.2017, 10:05 |
6 |
|
Покажите исправленный код и команду, которой компилируете.
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token «Отсутствует знак равно, запятая, точка с запятой или атрибут перед точкой». Проблема очевидно в исходном коде, но с ходу я точку не нашел. Там точно не указан номер строки?
1 |
|
Smart1706 0 / 0 / 0 Регистрация: 05.10.2017 Сообщений: 6 |
||||
|
06.10.2017, 10:09 [ТС] |
7 |
|||
|
COKPOWEHEU,
Добавлено через 45 секунд
0 |
|
3592 / 2264 / 407 Регистрация: 09.09.2017 Сообщений: 9,498 |
|
|
06.10.2017, 11:10 |
8 |
|
#include <math.h> это прямо в коде программы??? Нет, это нужно указать компилятору!
float x,y,z,F; Либо используйте «%f» (float), либо, если используете «%lf», объявите F как double.
Покажите исправленный код и команду, которой компилируете.
0 |
|
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
06.10.2017, 11:10 |
|
Помогаю со студенческими работами здесь
Пожалуйста посмотрите что тут не так? не могу додумать,посмотрите что не так
int main() { Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 8 |
I try to insert many values into a queue and delete the first value in the queue.
However, I have an error when I want to print the queue after deleting values.
There is my code:
char queue[100];
int i=-1;
int *delete_queue(int value){
int j;
for(j= 0; j< 10; j++){
queue[j]= queue[j+1];
}
return queue;
}
void insert_queue(int value){
i= i + 1;
queue[i] = value;
}
void print_queue(int *p){
int v;
for(v =0; v < 5; v++){
printf(">> %d n", *p(v+1) );
}
}
int main(int argc, char const *argv[])
{
//int v ;
int *new_queue;
insert_queue(33);
insert_queue(22);
insert_queue(11);
new_queue= delete_queue(33);
print_queue(new_queue);
// for(v =0; v < 5; v++){
// printf(">> %d n", *new_queue(v+1) );
// }
return 0;
}
The error is:
delete_queue_test.c: In function ‘print_queue’:
delete_queue_test.c:33:23: error: called object ‘p’ is not a function or
function pointer
printf(">> %d n", *p(v+1) );
^
please help me fix it, thank you.
У меня такой код:
z=x-~y-1;
printf("%d",z);
z=(x^y)+2(x&y);
printf("%d",z);
z=(x|y)+(x&y);
printf("%d",z);
z=2(x|y)-(x^y);
printf("%d",z);
Я получаю это сообщение об ошибке:
10:11: error: called object is not a function or function pointer
z=(x^y)+2(x&y);
^
Язык — C. Почему это произошло?
2 ответа
Лучший ответ
Что касается того, что означает ошибка: 2(x&y) говорит компилятору вызвать функцию 2, передавая x&y в качестве аргумента (точно так же, как printf("hi") означает « call {{ X4}} и передайте "hi" в качестве аргумента «).
Но 2 не является функцией, поэтому вы получаете ошибку типа. Синтаксически говоря, когда у вас есть значение, за которым следует (, это вызов функции.
1
melpomene
2 Мар 2017 в 16:19
+ Изменить
z=(x^y)+2(x&y);
К
z=(x^y)+2*(x&y);
А также
z=2(x|y)-(x^y);
К
z=2*(x|y)-(x^y);
Вам нужен оператор умножения, если умножение — это то, что вы хотели.
1
vatsug
2 Мар 2017 в 16:06


Что здесь не так? Посмотрите пожалуйста