Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
1

Return type of 'main' is not `int'

11.02.2012, 22:18. Показов 7068. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Структура .Список помогите розобратся почкму не работает..))
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include <conio.h>
 
 
struct student
{   char prizv[12],group[10];
    int sbal ;
    struct student*nast;
    };struct student*element,*pershij,*poperednij,*novyj;
void Spysok(void);
void Vuvestu(void);
void Newel(void);
 
void main()
{  
    
   printf("dlya zak vvody zmit 0\n");
   Spysok();
 Vuvestu();
 Newel();
 element=pershij;
 novyj->nast=element;
 pershij=novyj;
 printf("new spisok\n");
  Vuvestu();
 
  }
  void Spysok(void){
       element=malloc(sizeof(struct student));
       prshij=element;
       do  {
           poperednij=element;
           printf("prizv,grup and sered bal\n");
           scanf("%s",&element->prizv);
           scanf("%s",&element->group);
           scanf("%s",&element->sbal);
           element->nast=malloc(sizeof(struct student));
           element=element->nast;
           
           }
           while(poperednij->sbal !=0)
           poperednij->nast=NULL;
       
       
       }
  
 void Vuvestu(void){
      
       printf("stvoremo nev spusok\n");
       element=pershij;
       while(element!=NULL)
       {printf("%s\t%s\t%d\n",element->prizv,element->grup,element->sbal);
       element=element->nast;
                           
                           }
      }
      
 
    void Newel(void){
         novij=malloc(sizeof(struct student));
           printf("prizv,grup and sered bal\n");
           scanf("%s",&element->prizv);
           scanf("%s",&element->group);
           scanf("%s",&element->sbal);
         
         }
редактор : Dev-C++

Добавлено через 2 часа 57 минут
м ....да я уже голову всю поломал ..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2012, 22:18
Ответы с готовыми решениями:

Ошибка: 'sleep': no function return type, using 'int'
Пользуюсь DosBox 0.74-QC(поменять не могу,нужно на нем) ,так вот,столкнулся с такой проблемой,что...

Warning: return type defaults to ‘int’ Что значит этот варнинг?
Вот программа #include &lt;stdio.h&gt; main() { float fahr, celsius; int lower, upper, step; ...

Чем отличается int main от void main?
Мне нравится int main можно её всегда использовать а про void main забыть?

Int main или main
нужно ли писать int main? если в функции main есть всё необходимое.

13
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
11.02.2012, 23:24 2
OKS_by_V, какая ошибка вас больше всего волнует?
0
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
11.02.2012, 23:27  [ТС] 3
Цитата Сообщение от remarkes Посмотреть сообщение
OKS_by_V, какая ошибка вас больше всего волнует?
14 \main.c [Warning] return type of 'main' is not `int'
\main.c In function `Spysok':

вот как би мне их исправить .....што то с структкрой не так??
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
11.02.2012, 23:56 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include <stdlib.h>
 
struct student
{   char prizv[12],group[10];
    int sbal ;
    struct student *nast;
    }; struct student *element,*pershij,*poperednij,*novyj;
 
void Spysok(void);
void Vuvestu(void);
void Newel(void);
 
int main()
{  
    
   printf("dlya zak vvody zmit 0\n");
   Spysok();
 Vuvestu();
 Newel();
 element=pershij;
 novyj->nast=element;
 pershij=novyj;
 printf("new spisok\n");
  Vuvestu();
 
  }
  void Spysok(void){
       element=malloc(sizeof(struct student));
       pershij=element;
       do  {
           poperednij=element;
           printf("prizv,grup and sered bal\n");
           scanf("%s", element->prizv );
           scanf("%s", element->group );
           scanf("%i", &element->sbal );
           element->nast=malloc(sizeof(struct student));
           element=element->nast;
           
           }
           while ( poperednij->sbal != 0 );
        poperednij->nast = NULL;
       
       
       }
  
 void Vuvestu(void){
      
       printf("stvoremo nev spusok\n");
       element=pershij;
       while(element!=NULL)
       {printf("%s\t%s\t%d\n",element->prizv,element->group,element->sbal);
       element=element->nast;
                           
                           }
      }
      
 
    void Newel(void){
         novyj=malloc(sizeof(struct student));
           printf("prizv,grup and sered bal\n");
           scanf("%s", element->prizv);
           scanf("%s", element->group);
           scanf("%i", &element->sbal);
         
         }
Добавлено через 5 минут
OKS_by_V, я так понимаю, с английским у тебя неважно...
ошибки:
- много орфографических - сударь, вы пьяны?
- некоторые переменные написаны не так, как объявлены выше.
- в функции список ты делаешь цикл do {} while но не ставишь ; в конце после while.
- забыл #include <stdlib.h> для malloc
- неправильно используешь scanf - для символьных массивов (строк) амперсанд не используется. потому что передается адрес первого элемента - массива (то есть откуда начинается строка).
- для element->sbal необходимо использовать %i или %d

Добавлено через 1 минуту
и кстати, что делает ваш код? к сожалению, в битве экстрасенсов я выбыл в первом раунде

Добавлено через 10 минут
небольшие советы:
- используй чаще клавишу пробел, отделяя элементы.
C
1
element->nast = malloc( sizeof(struct student) );
- после запятой должен быть обязательно пробел.
C
1
printf("%s\t%s\t%d\n", element->prizv, element->group, element->sbal);
- используй комментарии. это очень важно - приучись к ним.
- называй переменные/функции/объекты/классы и т.д. английскими именами (например read_file)
- по возможности не используй библиотеку #include <conio.h>
В IDE:
- используй автозаполнение и автозавершение слов и функций (в Dev-C++ где-то было). тогда орфографических ошибок не будет.

поищи статьи на тему "красивый код" "стили написания кода" и т.д.
1
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
12.02.2012, 00:56  [ТС] 5
remarkes,спасибо ..посмотри в ЛС ....помоги с задачкой на списки што то они у меня не идут ....)))

Создать список название продукции, вес единицы, цена единицы продукции, и вывести на печать товары вес которых больше 5 кг..
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
12.02.2012, 01:21 6
напиши потом - помогло там, что в ЛС писал, или нет.
0
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
12.02.2012, 01:59  [ТС] 7
Цитата Сообщение от remarkes Посмотреть сообщение
напиши потом - помогло там, что в ЛС писал, или нет.
не виводит если товар kg которого больше 5 идет последним в списке...))и не работает почему то функция void Newel(void)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>
#include <stdlib.h>
 
struct prod
{   char nazvaProd[12];
    int kg,cina ;
    struct prod *nast;
    }; struct prod *element,*pershij,*poperednij,*novyj;
 
void Spysok(void);
void Vuvestu(void);
void Newel(void);
 
int main()
{  
    printf("stvorenya spusky\n");
   printf("dlya zak vvody zmit 0\n");
   Spysok();
 Vuvestu();
 Newel();
 element=pershij;
 novyj->nast=element;
 pershij=novyj;
 printf("new spisok\n");
  Vuvestu();
 
   return 0;  
  }
  void Spysok(void){
       element=malloc(sizeof(struct prod));
       pershij=element;
       do  {
           poperednij=element;
           printf("nazva,vaha v KG,cina 1 Prod\n");
           scanf("%s", element->nazvaProd );
           scanf("%d", &element->kg );
           scanf("%d", &element->cina );
           element->nast=malloc(sizeof(struct prod));
           element=element->nast;
           
           }
           while ( poperednij->cina != 0 );
                poperednij->nast = NULL;
       
       
       }
  
void Vuvestu(void){
      
       printf("stvoremo nev spusok\n");
       element=pershij;
        while(element!=NULL)
       if(element->kg >5) {
                printf("%s\t%d\t%d\n",element->nazvaProd, element->kg, element->cina);
       element=element->nast;
        }
}
      
 
    void Newel(void){
         novyj=malloc(sizeof(struct prod));
           printf("nazva,vaha v KG,cina 1 Prod\n");
           scanf("%s", element->nazvaProd );
           scanf("%d", &element->kg );
           scanf("%d", &element->cina );
         
         }
Миниатюры
Return type of 'main' is not `int'  
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
12.02.2012, 12:52 8
хм... я очень тяжело понимаю, что делает твой код, потому как не знаю вашего "польского". Давай проведем небольшой рефакторинг.
Для начала - считается дурным тоном называть имена переменных и функций на родном языке (если это не английский). Тем более без комментариев.
Напиши, пожалуйста, как называются эти объекты, и что ты предполагал с ними делать. также переведи на русский эти "Створения спуски".
C
1
2
3
4
5
6
*element, *pershij, *poperednij, *novyj
void Vuvestu(void);
void Newel(void);
    printf("stvorenya spusky\n");
    printf("dlya zak vvody zmit 0\n");
    printf("nazva,vaha v KG,product_price 1 Prod\n");
после этого мы сделаем понятный код и начнем искать в нем ошибки.
0
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
12.02.2012, 16:50  [ТС] 9
C
1
2
3
4
5
6
*element, *pershij(*на 1-й елемент списка), *poperednij(*на предварительный елемент списка), *novyj  (*на новый елемент списка)
void Vuvestu(void);////вывод
void Newel(void);///новый список
    printf("Создание списка\n");
    printf("Для окончания воду нажмите 0\n");
    printf("nazva,vaha v KG,product_price 1 Prod(Название, вес (в кг) ,цена)\n");
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
12.02.2012, 20:12 10
программа во вложенном файле.
я поменял названия объектов (по английски и по контексту).
прога работает, только я не понял - зачем последняя процедура.

объясни, что должна делать твоя программа?
1. мы записываем список продуктов в стек.
2. выводим те, у которых цена больше 5
3. ?? функция input_new_list() - записываем один продукт.
4. выводим его.
т.е. - это так и должна работать программа?
Вложения
Тип файла: txt structs2.c.txt (1.7 Кб, 19 просмотров)
1
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
12.02.2012, 21:56  [ТС] 11
да работает хорошо только вот если добавлять новие зачение в список форма зависает у меня ..возможно ето через while ??
смотри на скрине
Миниатюры
Return type of 'main' is not `int'  
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
12.02.2012, 22:54 12
Забыл добавить. Обычно принято освобождать память malloc() (так называемую кучу). Если не освобождать - это приводит к "утечкам памяти". А чтобы указателем нельзя было больше воспользоваться - присваивать NULL.
C
1
2
    free(element); 
    element=NULL;
0
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
12.02.2012, 23:08  [ТС] 13
Цитата Сообщение от remarkes Посмотреть сообщение
Забыл добавить. Обычно принято освобождать память malloc() (так называемую кучу). Если не освобождать - это приводит к "утечкам памяти". А чтобы указателем нельзя было больше воспользоваться - присваивать NULL.
C
1
2
    free(element); 
    element=NULL;

а куда именно добавлять етот код*??
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
12.02.2012, 23:30 14
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от OKS_by_V Посмотреть сообщение
а куда именно добавлять етот код*??
ну грубо говоря перед return 0; в main (перед концом программы), но можешь, когда надо.
то есть функцией malloc ты выделяешь память в куче. когда тебе те данные (переменные), которые ты в нее записал, уже не нужны, ты ее должен "освободить".
я вложил файл с измененным кодом.
я таки понял, что должен был делать твой код.
если бы ты сразу рассказал логику кода, было бы быстрее.

ошибки:
в функции input_new_list()
ты выделял память для product_new, а записывал данные в element->

потом присваивание указателей в этом участке (в мейне)
C
1
2
3
4
5
6
7
8
9
    input_new_list();
    
    element=begin_stack;
    
    begin_stack=product_new;     // было       product_new->next=element;
    product_new->next=element; // наоборот begin_stack=product_new;
    
    printf("new List:\n");
    print_list();
Добавил к маллоку приведение к типу структуры:
C
1
element = (struct product *) malloc( sizeof(struct product) );
т.е. (struct product *)
я правда не помню, насколько это принципиально.
вложенная картинка - это терминал, как видишь УМВР (у меня все работает)
Миниатюры
Return type of 'main' is not `int'  
Вложения
Тип файла: txt structs2.c.txt (1.9 Кб, 11 просмотров)
1
12.02.2012, 23:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2012, 23:30
Помогаю со студенческими работами здесь

Почему в одних случаях пишут void main(), а в других случаях int main() {return 1;}
Препод мне доказывает, что void в main`е писать неправильно, а объяснить не может почему. Кто...

`main' must return `int'
Почему возникает такая ошибка? И я правильно программу написал? Она должна считать сумму двух...

Ошибка main' must return 'int'
Line 6: error: '::main' must return 'int' compilation terminated due to -Wfatal-errors!!! Вот...

int main работает без return
Здравствуйте! Собственно вопрос относительно темы))) почему компилятор пропускает такое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru