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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.04.2009, 11:58   #1
Petruha-nsk
Пользователь
 
Аватар для Petruha-nsk
 
Регистрация: 10.04.2009
Сообщений: 69
По умолчанию работа с таблицами

Помогите пожалуйста...

Код:
#include<stdio.h>
#include<conio.h>
#define N 100

struct pole  {char shifr[9]; char name_product[N]; int kol_vo;};
struct table {pole elem[N]; int n;};

void vvod_teksta(table *p, FILE *in, int i)
{
    int j;
    char t;

    j=0;
    if (i==0)
    {
       fscanf(in,"%c",&t);
       while(t!='.')
       {
	p->elem[p->n].shifr[j]=t;
	j++;
	fscanf(in,"%c",&t);
       }
    }
	else
	    {
	      fscanf(in,"%c",&t);
	      while(t!='.')
	      {
		p->elem[p->n].name_product[j]=t;
		j++;
		fscanf(in,"%c",&t);
	      }
	    }
}

void vvod_chisel(table *p, FILE *in)
{
    fscanf(in, "%d", &p->elem[p->n].kol_vo);
}

void obrabotka_tablizy (table *p)
{
    int i,j,g;
    for(i=0;i<p->n-1;i++)
    {
	for(j=i+1;j<p->n;j++)
	{
	    if (p->elem[i].shifr==p->elem[j].shifr)
	    {
		p->elem[i].kol_vo += p->elem[j].kol_vo;
		for(g=j; g<p->n; g++)
		p->elem[g].kol_vo=p->elem[g+1].kol_vo;
		p->n--;
	    }
	}
    }

}

void uporyadyvachenie_tablizy (table *p)
{
    int i,j;
    pole ttt;
    for(i=0;i<p->n-1;i++)
    {
	for(j=0;j<8;j++)
	{
	    if (p->elem[i].shifr[j]>p->elem[i+1].shifr[j])
	    {
		ttt = p->elem[i];
		p->elem[i] = p->elem[i+1];
		p->elem[i+1] = ttt;
	    }
	}
    }
}

void vyvod_teksta(table *p, FILE *out, int i, int j)
{
	int k;
	if (j==0)
	{
		k=0;
		while (p->elem[i].shifr[k]!='\0')
		{
			fprintf (out, "\n %c ", p->elem[i].shifr[k]);
		}
	}
		else
			{
				k=0;
				while (p->elem[i].name_product[k]!='\0')
				{
					fprintf (out, "%c ", p->elem[i].name_product[k]);
				}
			}
}

void vyvod_chisel (table *p, FILE *out, int i)
{
	fprintf (out, "%d", p->elem[i].kol_vo);
}


void main()
{
  int i,j;
  table s;

  FILE *in, *out;
  in = fopen("c:\input.txt", "r");

  i=0; s.n=0;
  while(!feof(in))
  {
    if(i<2) vvod_teksta(&s, in, i);
	    else {vvod_chisel(&s, in); s.n++; i=0;}
    i++;
  }
  fclose(in);

  obrabotka_tablizy(&s);

  uporyadyvachenie_tablizy (&s);

  out = fopen ("d:\output.txt", "w");

  i=0; j=0;
  while(i<s.n)
  {
	if (j<2) vyvod_teksta(&s, out, i, j);
		else { vyvod_chisel(&s, out, i); i++;}
	j++;
  }
  fclose(out);

  getch();
}
но вот в этом месте:

Код:
void vvod_teksta(table *p, FILE *in, int i)
{
    int j;
    char t;

    j=0;
    if (i==0)
    {
       fscanf(in,"%c",&t);
       while(t!='.')
       {
	p->elem[p->n].shifr[j]=t;
	j++;
	fscanf(in,"%c",&t);
       }
программа зацикливается...
Petruha-nsk вне форума
Старый 26.04.2009, 13:10   #2
Petruha-nsk
Пользователь
 
Аватар для Petruha-nsk
 
Регистрация: 10.04.2009
Сообщений: 69
По умолчанию

УВАЖАЕМЫЕ ПРОГРАММЕРЫ!!!
Спасибо Вам всем, что Вы который раз уже меня игнорируете и даже не поможете никаким советом! Не думаю я что слишком что-то заумное спрашиваю!
Модератору отдельное "СПАСИБО!"!
Petruha-nsk вне форума
Старый 26.04.2009, 13:31   #3
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Во первых название темы не отражают смысл сообщения!
Во вторых обясните что ваша програма должна делать и при каком условии она зацикливается.
Строку посимвольно нужно так читать
Код:
 while((c = getc(file)) != EOF)
        if(c != '.') {
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с таблицами DBGridEh feel Помощь студентам 0 03.04.2009 20:52
Работа с таблицами в DBF ИВэТэшка БД в Delphi 1 20.03.2009 20:50
работа с bdf-таблицами???? cherry25 БД в Delphi 5 17.02.2009 15:22
Работа с таблицами БД Rusl92 БД в Delphi 4 10.04.2008 16:58
работа с таблицами Sexyprogrammist Общие вопросы Delphi 1 15.06.2007 01:00