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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2013, 23:08   #1
asv1994
Пользователь
 
Регистрация: 28.10.2012
Сообщений: 50
По умолчанию Структуры данных - язык С

Задание: ВАРИАНТ 2

--------------------------------
Прошу подкоректировать если же я пошел в нужном направление, и если здесь хоть что-то правильно. Спасибо.
Код:
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include "time.h"
#include "locale.h"
#include "stdlib.h"
#include "conio.h"
#include <string.h>


int main()
{
{setlocale(LC_ALL,"russian_russia");
struct ats
	{
	int phone;
	int phonezakaza;
	int data;
	int cena;
	float vremya;
	char fio[15];
	char address[10];
	char gorod[10];
	}
tab[100];
FILE *file;
int i=0, j, kol, vremya=0, cena=0;
char nazv[10];
file=fopen("D:\ats.txt", "r");
if (file==NULL)
	{
	printf ("Ошибка при чтении файла");
	return 0;
	}
printf ("Исходная информация:\n");
printf(" Телефон | Ф.И.О | Адрес | Город | Телефон заказа | Дата | Время (с)\n");
printf("\n");
fprintf(file, "\n");
while (!feof(file))
	{
	(fscanf (file, "%d%s%s%s%d%d%d", &tab[i].phone, &tab[i].phonezakaza, &tab[i].data, &tab[i].vremya, &tab[i].fio,
	&tab[i].address, &tab[i].gorod));
	i++;
	}
	kol=i;

for (i=0; i<kol; i++)
	{
	for(j=0;j<kol;j++)
	{
		if (tab[i].vremya*cena)
		{
		cena=tab[i].cena;
		}
	}
	}
	printf ("\n");
	printf ("\nТелефон | Ф.И.О | Адрес | Город | Телефон заказа | Дата | Время (с)\n");
	fclose(file);
	getch();
	return 0;
}
}
Изображения
Тип файла: jpg 1366744107-clip-129kb.jpg (129.2 Кб, 147 просмотров)
asv1994 вне форума Ответить с цитированием
Старый 24.04.2013, 07:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Два момента оф моря:
1) "%d%s%s%s%d%d%d" - чет мне сия маска не нравится...
2) Сортировка в проекте?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2013, 19:32   #3
asv1994
Пользователь
 
Регистрация: 28.10.2012
Сообщений: 50
По умолчанию

Вот код который смог написать, кто может подправить и помочь с сортировкой.

Блокнот с названием АТС прикрепил.
Код:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <locale>
#include <stdlib.h>
#include <windows.h>

int main()
{setlocale(LC_ALL,"russian_russia");
struct ats
	{
	char phone[20];
	char fio[20];
	char address[30];
	char gorod[20];
	char phonezakaza[20];
	char data[20];
	int vremya;
	float stoimost;
	}
tab[100];

FILE *file;
int i=0, j, kol, knopka;
float tarif;
char alfavit[67]="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
file=fopen ("D:\\ats.txt", "r+");
if (file==NULL)
	{
	printf ("Ошибка при чтении файла");
	return 0;
	}
printf ("Введите тариф:\n");
scanf("%f",&tarif);

printf ("Исходная информация:\n");
printf(" Телефон     Ф.И.О         Адрес          Город      Телефон з.   Дата      Время(с)\n");

while (!feof(file))
	{
	(fscanf (file, "%s%s%s%s%s%s%d", &tab[i].phone, &tab[i].fio, &tab[i].address, &tab[i].gorod, &tab[i].phonezakaza,
	&tab[i].data, &tab[i].vremya));
	printf ("\n");
	printf ("%s %s %s %s %s %s %d\n", tab[i].phone, tab[i].fio, tab[i].address,
	tab[i].gorod, tab[i].phonezakaza, tab[i].data, tab[i].vremya);	
	i++;
	}
kol=i;

////////////вычисление и запись стоимости
printf("\nСтоимость разговора каждого абонента\n");
for (i=0; i<kol; i++)
	{
	tab[i].stoimost=tarif*tab[i].vremya;
	fprintf (file, "%f", tab[i].stoimost);
	printf("%s:%.0f\n",tab[i].fio, tab[i].stoimost);
	}
///////////

////////////добавление в файл
printf("\nЕсли вы хотите добавить абонента, введите 1\n");
scanf("%d",&knopka);
if(knopka==1)
	{
	i++;
	printf("\n\nВведите новые сведения об абоненте:\n");
	printf("Введите номер телефона:");
	scanf("%s",&tab[i].phone);
	printf("Введите ФИО:");
	scanf("%s",&tab[i].fio);
	printf("Введите адрес:");
	scanf("%s",&tab[i].address);
	printf("Введите город:");
	scanf("%s",&tab[i].gorod);
	printf("Введите телефон заказа:");
	scanf("%s",&tab[i].phonezakaza);
	printf("Введите дату:");
	scanf("%s",&tab[i].data);
	printf("Введите время:");
	scanf("%d",&tab[i].vremya);

	fprintf (file, "\n%s  %s  %s  %s  %s  %s  %d", tab[i].phone, tab[i].fio, tab[i].address,
	tab[i].gorod, tab[i].phonezakaza, tab[i].data, tab[i].vremya);
	printf("\n Файл перезаписан");
}


fclose (file);
getch();
return 0;
}
Вложения
Тип файла: txt ats.txt (704 байт, 134 просмотров)
asv1994 вне форума Ответить с цитированием
Старый 07.05.2013, 18:47   #4
asv1994
Пользователь
 
Регистрация: 28.10.2012
Сообщений: 50
По умолчанию

никто не может проконсультировать?
asv1994 вне форума Ответить с цитированием
Старый 07.05.2013, 20:59   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
кто может подправить и помочь с сортировкой.
Что поправлять и какой сортировкой?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.05.2013, 22:59   #6
asv1994
Пользователь
 
Регистрация: 28.10.2012
Сообщений: 50
По умолчанию

Дело в том что в файл записывает не русскими буквами, а иероглифами + нужна сортировка ФИО по алфавиту
asv1994 вне форума Ответить с цитированием
Старый 08.05.2013, 08:25   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не русскими буквами, а иероглифами
А ты в чем его открываешь? В блокноте? Открывай в другом редакторе, помошнее - notepad++, AkelPad и т.д. и посмотри какую кодировку он покажет (название)
Цитата:
нужна сортировка ФИО по алфавиту
Код:
void sort(ats* a,int n){
 ats* v=(ats*)malloc(sizeof(ats)); 
 for(int i=0;i<n;i++){
  for(int j=0;j<n;j++){
   if(strcmp(a[i].fio)<strcmp(a[j].fio)){
/* Тут делать перестановку.
    Увы я не знаю можно ли переменные вот так вот друг другу присваивать, 
поэтому пишу не очень красиво:
*/
     memcpy(v,&a[i],sizeof(ats));
     memcpy(&a[i],&a[j],sizeof(ats));
     memcpy(&a[j],v,sizeof(ats));
   }
  }
 }
}
Применять так: sort(&tab,kol);
За код не ручаюсь, но в качестве подсказки думаю сойдет
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.05.2013, 18:23   #8
asv1994
Пользователь
 
Регистрация: 28.10.2012
Сообщений: 50
По умолчанию

спасибо за сортировку попробую ее приварить туда, а вот насчет русского то везде пиште непорусский, кодирвока ANSI же.
asv1994 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) _4Alex4_ Помощь студентам 1 14.11.2012 07:39
чтение структуры из файла (язык С) SamVImes Помощь студентам 5 20.08.2012 19:18
структуры.язык си skauzer_blr Помощь студентам 1 27.04.2012 21:16
язык С. Динамические структуры данных. Виктория Кусяк Помощь студентам 0 26.12.2011 23:51
Файлы,структуры.Язык Си tutis Помощь студентам 1 02.05.2011 20:12