Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 483
Записей в блоге: 9
Завершенные тесты: 1
#1

Вывод данных из структуры - C++

26.09.2013, 23:47. Просмотров 1331. Ответов 22
Метки нет (Все метки)

Доброй ночи
Возникла проблема вывода данных из структуры. То бишь совсем ничего не выводится,программа просто зависает и все.
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
#pragma hdrstop
#pragma argsused
 
#include <stdio.h>
#include <stdlib.h >
#include <conio.h>
#include <string>
using namespace std;
 
int n=0,p,i; 
FILE *buo;
 
struct kontract
{
   string fam[100];
   string name[100];
   string ot[100];
   int money[100];
};
kontract dan;
 
void Vvod()
{
buo=fopen("input.txt","r");
fscanf(buo,"%d",&p);
while(fscanf(buo,"%s %s %s %d",&dan.fam[n],&dan.name[n],&dan.ot[n])!=EOF)
 {
    n++;
 }
}
 
void Min()
{
 
}
 
void Zap()
{
 
}
 
void Out()       //выводим
{
for(i=0;i<n;i++);
 printf("%s %s %s %d",dan.fam[i],dan.name[i],dan.ot[i]);
}
 
int main()
{
Vvod();
Min();
Zap();
Out();
getch();
return 0;
}
Входные данные:
HTML5
1
2
3
4
5
6
7
8
7
Kozlov Ivan Aleksandrovich 1000
Neznajkin Nikolaj Sergeevich 2000
Neponjatkin Sergej Ivanovich 1500
Kozlov Ivan Aleksandrovich 12000
Neznajkin Nikolaj Sergeevich 23000
Neponjatkin Sergej Ivanovich 15400
Abramov Evgenij Jurevich 5050
Помогите
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2013, 23:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод данных из структуры (C++):

Вывод данных из структуры - C++
Как сделать чтобы выводились данные заданного дня пользователем из структуры?

Понятие структуры данных. Элементарные структуры данных. Простые структуры данных - C++
Понятие структуры данных. Элементарные структуры данных. Простые структуры данных: методы реализации, особенности в различных языках...

Структуры (данные о студентах) - вывод данных в файл - C++
Здравствуйте, у меня проблема с выводом данных в файл. При проверке нет ни каких замечаний, однако в файл не заносит инфы. Просмотрите на...

Вывод данных структуры (оставление символа '\n' в потоке ввода) - C++
for (int i = 0; i &lt; 8; i++) { cout &lt;&lt; &quot;Введите фамилию и имя&quot; &lt;&lt; endl; getline(cin, BLOCKNOTE.NAME); file &lt;&lt; &quot;Имя и...

Вывод в цикле структуры (структура имеет много полей данных) - C++
Приветствую ))) Подскажите пожалуйста, как бы вы решили данную проблему. Имеется структура данных. Она содержит 30 полей данных. ...

Ввод структуры в текстовый файл столбиком и вывод данных из файла в структуру - C++
Имеется база данных в виде структуры, которая будет постепенно дописываться приблизительно до 1000 элементов. В каждом элементе структуры...

22
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 00:45 #16
Цитата Сообщение от Gdasar Посмотреть сообщение
Суть моего вопроса в другом.
А суть моего - в том же. Если в начале файла пишется количество структур в файле, и под это количество выделяется память, то какой смысл что-то считать? Я понимаю, если бы такой записи в файле не было, то сначала шёл бы подсчёт структур, потом выделение памяти под них. А так - бессмысленность.
0
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 483
Записей в блоге: 9
Завершенные тесты: 1
04.10.2013, 11:01  [ТС] #17
Так лучше?
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
#pragma hdrstop
#pragma argsused
 
#include <stdio.h>
#include <stdlib.h >
#include <conio.h>
#include <string>
using namespace std;
 
struct kontract
{
   char fam[100];
   char name[100];
   char ot[100];
   int money;
};
 
void main()
{
int n=0,p,i,j; string output[100];
FILE *buo;
 
buo=fopen("input.txt","r");
fscanf(buo,"%d",&p);
kontract *dan=new kontract[p];
for(i=0;i<p;i++)
{
 fscanf(buo,"%s %s %s %d",&dan[i].fam,&dan[i].name,&dan[i].ot,&dan[i].money);
}
 
for(i=0;i<p;i++)
{
 if(i+1<p)
 {
 for(j=i+1;j<p;j++)
 {
  if((dan[i].fam==dan[j].fam)&&(dan[i].name==dan[j].name)&&(dan[i].ot==dan[j].ot))
   {
    dan[i].money+=dan[j].money; dan[j].money=0;
   }
 }
 }
}
for(i=0;i<p;i++)
printf("%s %s %s %d\n",dan[i].fam,dan[i].name,dan[i].ot,dan[i].money);
free(dan);
getch();
}
Вопрос все еще открыт. Помогите разобраться с циклом.
0
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 483
Записей в блоге: 9
Завершенные тесты: 1
04.10.2013, 21:00  [ТС] #18
Сделал маленькую проверку циклов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for(i=0;i<p-1;i++)
{
if(i+1<p)
{
printf("YES1\n");
 for(j=i+1;j<p;j++)
 {     printf("YES2\n");
  if((dan[i].fam==dan[j].fam)&&(dan[i].name==dan[j].name)&&(dan[i].ot==dan[j].ot))
   {
    printf("YES3\n");
    dan[i].money+=dan[j].money; dan[j].money=0;
   }
 }
}
}
И получилось так,что у меня ниразу не выполняется условие
Входные данные:
HTML5
1
2
3
4
5
4
Kozlov Ivan Aleksandrovich 1000
Kozlov Ivan Aleksandrovich 12000
Kozlov Ivan Aleksandrovich 2000
Kozlov Ivan Aleksandrovich 3000
Данные на выходе:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
YES1
YES2
YES2
YES2
YES1
YES2
YES2
YES1
YES2
Kozlov Ivan Aleksandrovich 1000
Kozlov Ivan Aleksandrovich 12000
Kozlov Ivan Aleksandrovich 2000
Kozlov Ivan Aleksandrovich 3000
Скажите,почему такое происходит.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 21:28 #19
Цитата Сообщение от Gdasar Посмотреть сообщение
Скажите,почему такое происходит.
Строки С так не сравниваются. Для этого есть функция: strcmp().
1
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 483
Записей в блоге: 9
Завершенные тесты: 1
04.10.2013, 21:40  [ТС] #20
alsav22, спасибо огромное
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 21:52 #21
Цитата Сообщение от alsav22 Посмотреть сообщение
Для этого есть функция: strcmp().
Возвращает 0, если строки равны. Поэтому, в данном случае, нужно использоавть так: if (!strcmp(...) && ...
0
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 483
Записей в блоге: 9
Завершенные тесты: 1
04.10.2013, 22:14  [ТС] #22
C++
1
if(strcmp(dan[i].fam,dan[j].fam)==0&&strcmp(dan[i].name,dan[j].name)==0&&strcmp(dan[i].ot,dan[j].ot)==0)
Так же работает.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 22:18 #23
Цитата Сообщение от Gdasar Посмотреть сообщение
Так же работает.
Можно и так, запись только длиннее, суть та же.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 22:18
Привет! Вот еще темы с ответами:

Ошибка при освобождении памяти (block type is valid) и неправильный вывод структуры данных - C++
Доброго времени суток. У меня есть класс вектор для реализации длинной арифметики. Возникли проблемы с умножением. Я устроил эту...

Вывод структуры, строка как элемент структуры - C++
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения; □ номер поезда; □ время отправления. ...

Структуры данных "Книги", вывод нужной информации - C++
Всем привет. Есть проблемка-надо написать структуру данных про книги в библиотеке - год издан, автор и т.п С этим проблем нет...Проблема...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё. - C++
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...


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

Или воспользуйтесь поиском по форуму:
23
Yandex
Объявления
04.10.2013, 22:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru