Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2014, 08:35   #1
Bantom
 
Регистрация: 17.03.2014
Сообщений: 4
По умолчанию Динамическое выделение памяти!

Мне надо написать программу на Си.(функцией new нельзя пользоваться).
Сама программа описана во втором кейсе. Задача: Динамически создать и заполнить линейный список любыми данными(в моём случае-цифрами). После этого надо вставить ещё один элемент в начало списка и вывести список на экран. Программа компилится, НО при вводе первой же цифра вылетает ошибка. Не могу понять в чём ошибка. Вроде бы всё правильно, но видимо проблемы в занесении числа в ячейку списка(НО ПОЧЕМУ?)
Помогите пожалуйста)очень нужна помощь)
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define ESC 27
int main(void)
{
	typedef struct nd
	{
		float val;
		struct nd *n;
	}List;
	char c;
	int a1=0,i=1;
	List *head,*current,*next;
	do {
	fflush(stdin);
	system("cls");
		printf("          Laborotory work #6\n");
        printf("     Performed by Anton Bulgakov\n");
        printf("                KM-31\n");
    	printf("             Variant #6\n");
        printf(" Enter - run the program.\n");
        printf(" Esc - exit.\n");
        printf(" Any other key - information about program.\n");
        c=getch();
        system("cls");
		switch (c)
			{
			case 27:
				break;
			case 13:
				{
					fflush(stdin);
					do{					
					printf("--------------------------------\n");
					printf("Enter %d element of lineal list.\n",i);
					printf("(enter only numbers)\n");
					printf("--------------------------------\n");
					if (i==1)
					{
						head = (List*)malloc(sizeof(List));
						scanf("%f",head->val);
						head->n = (List*)malloc(sizeof(List));
						next=head->n;
					}
					else
					{
						current = next;
						scanf("%f",(*current).val);
						current->n=(List*)malloc(sizeof(List));
						next=current->n;					
					}
					printf("If you want to end entering,press ESC.Else - any other key.\n");
					if (getch() == ESC)
					{
						a1 = 1;
						current->n=NULL;
					}
					i++;
					}
					while(a1!=1);
					printf("List: ");
					current=head;
					while(current->n!=NULL)
					{
						printf("%d ",current->val);
						current=current->n;
					}
					break;
			    }
			default:
				{
				printf("--------------------------------------------------------------------------\n");
				printf(" This program makes a lineal list,using information that you enter\n\n"); 
				printf(" You must describe procedure,which insert new element in beginning of list\n");
				printf("--------------------------------------------------------------------------\n");
				break;
				}
			}
	printf("\n\n");
	fflush(stdin);
    printf("If you realy want to exit the program press Esc,else press any key\n");
	if (getch() == ESC)
      a1 = 1;
}while(a1 != 1);
return (0);
}
Bantom вне форума Ответить с цитированием
Старый 07.04.2014, 12:48   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Цитата:
Сообщение от Bantom Посмотреть сообщение
Код:
scanf("%f",&(head->val));
scanf("%f",&((*current).val));
Параметры в функцию scanf передаются по адресу.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое выделение памяти Bantom Помощь студентам 0 02.04.2014 22:35
Динамическое выделение памяти Devdev12 Общие вопросы C/C++ 13 02.08.2013 10:25
Динамическое выделение динамической памяти GAleX1 Общие вопросы C/C++ 3 29.03.2013 23:18
Распределение памяти. Динамическое выделение памяти с++ Tolian92 Помощь студентам 8 14.05.2012 21:44
Динамическое выделение памяти FW-TOT Общие вопросы C/C++ 2 19.12.2008 00:42