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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2012, 14:26   #1
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию Заполнение и просмотр структуры

Доброе время суток. У меня возникли проблемы с выводом структуры на экран. Возможно неверная загрузка данных.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

#define SIZE 40

typedef struct SvSpis   Spis;  

struct SvSpis{
       int    num;
       char   title[SIZE];
       double price;
       int    sum;
       
       struct SvSpis   *pprev;
       struct SvSpis   *pnext;
       };

void GetStruc(Spis *p);
void review(Spis *p);

int main()
{
    char c;
    Spis sp;
    Spis *begin = NULL, *end = NULL;	
    
    
while(1)
{
     system("cls");
	
     puts("\n ******************************************");
	 puts(" *  1 - Создать              *");
	 puts(" *  2 - Просмотреть                 *");
	 puts(" *  0 - Выход                             *");
	 puts(" ******************************************\n");
	 puts(" Выберите пункт меню: "); 
     c = getch();
	 
	 switch(c){
		  case '1':  GetStruc(&sp);    
		  	   		 if(begin == NULL) begin = end; break;
		  case '2':  review(begin); break;
		  case '0': return 0;
		  default: {system("cls"); 

		  printf("\n * Вы ввели неверное значение *");getch();}
		  }
}
return 0;
}

void GetStruc(Spis *p)
{
 	 Spis tmp;
 	 	 
	
	 printf("Название товара: ");	
  	     fflush(stdin);
		 fgets(tmp.title, SIZE, stdin);
	     tmp.title[strlen(tmp.title)-1] = '\0';    
 	 printf(" Цена: ");		scanf("%g", &tmp.price);
 	 printf("Количество (шт.): ");	scanf("%d", &tmp.sum);
 	// tmp.pnext = tmp.pprev = NULL;
 	 *p = tmp;
}

void review(Spis *p)
{	
	system("cls");
	printf("\n **********************\n");
	printf(" *  Список товаров   *\n");
	printf(" **********************\n");
	
	while(p!=NULL)
	{
 	    printf("*%s %lf %d *\n", p->title, p->price, p->sum);
		p = p->pnext;
	}
	getch();	  	           
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Stilet; 28.10.2012 в 14:33.
Bugrimov вне форума Ответить с цитированием
Старый 28.10.2012, 14:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А какого рода проблемы? Отладчиком по программу проходил?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2012, 14:38   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Отладчиком не проходил. Проблема в следующем: заполняю данные. После того как делаю просмотр, выдает пустой список. (т.е. данных нет, будто и не вводил вовсе)
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 28.10.2012, 14:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Отладчиком не проходил.
Вотъ.
А ты пройди. Вот к примеру:
Цитата:
if(begin == NULL) begin = end;
А где у тебя end присваивается и изменяется, двигаясь к концу списка?
И вообще что-то я в программе не вижу создание элементов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2012, 15:09   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Для создания списка необходимо динамически выделить память, я правильно понял
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 28.10.2012, 15:22   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да. Правильно
А у тебя я чет не увидел такого.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2012, 15:51   #7
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Код:
void GetStruc(Spis *p)
{
 	Spis 	tmp;
 	int		n = 1;
 	
	do{
	    tmp.num = n;
	    p = (Spis*)malloc(sizeof(Spis)); 
		
		printf(" Товар: ");	
	 	    fflush(stdin);
			fgets(tmp.title, SIZE, stdin);
			tmp.title[strlen(tmp.title)-1] = '\0';
		printf(" Цена: ");		scanf("%g", &tmp.price);
 	 	printf(" Количество: ");	scanf("%d", &tmp.sum);
		
		printf("\n Продолжить ввод товаров? (Y/N)");
		n++;
		  	 
	}
	while(getch()!='n' || getch()!='N');}
Пока получается что-то вроде этого. Пока не могу сообразить что с prev и next

Бред какой-то получился
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Stilet; 28.10.2012 в 16:08.
Bugrimov вне форума Ответить с цитированием
Старый 01.11.2012, 23:14   #8
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Спасибо большое, я реализовал функцию добавления и просмотра.....
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RTTI. Заполнение произвольной структуры. Delphi_ProGer Общие вопросы Delphi 4 05.08.2012 10:02
Написание программ (древовидные структуры, структуры неспециального вида и т.д.) Green Gin Фриланс 2 27.04.2012 15:26
Управляющие структуры. Программирование алгоритмов разветвляющейся структуры. Лёнка Компоненты Delphi 1 23.04.2012 15:03
Заполнение массива из структуры через memcpy Master_Devel Visual C++ 0 14.06.2011 17:56
masm+winapi ->>> Заполнение структуры INPUT Wardrag Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 19.08.2010 01:30