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

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

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

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

26.09.2013, 23:47. Просмотров 1240. Ответов 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
Помогите
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2013, 23:47     Вывод данных из структуры
Посмотрите здесь:

Вывод данных из структуры - 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 полей данных. ...

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

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

Вывод структуры - C++
Необходимо создать структуру car которая хранит след инф наименование, год выпуска.написать прогр которая запросить пользователя сколько...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
27.09.2013, 00:29     Вывод данных из структуры #2
Ты тут пропустил четвертый параметр:
C++
1
 printf("%s %s %s %d",dan.fam[i],dan.name[i],dan.ot[i]);
Попробуй так printf("%s %s %s %d",dan.fam[i],dan.name[i],dan.ot[i],dan.money[i]);

Добавлено через 38 секунд
Да и другие функции проверь ты и в остальных забыл добавить четвертый параметр!!!

Добавлено через 1 минуту
Тут где четвертый параметр fscanf(buo,"%s %s %s %d",&dan.fam[n],&dan.name[n],&dan.ot[n]) ???
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 467
Записей в блоге: 9
Завершенные тесты: 1
27.09.2013, 00:33  [ТС]     Вывод данных из структуры #3
ой
но все равно не выводит
выводит только <nill> <nill> <nill> 0
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 01:04     Вывод данных из структуры #4
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
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int n = 0, i; 
FILE *buo = NULL;
 
struct kontract
{
    char fam[100];
    char name[100];
    char ot[100];
    int money;
};
 
kontract *dan;
 
int Vvod()
{
    buo = fopen("input.txt","r");
    if (buo == NULL) 
    {
        printf("Error buo!\n");
        getchar();
        return 0;
    }
    
    fscanf(buo,"%d", &n);
    dan = (kontract*)malloc(n * sizeof(kontract));
    
    for (i = 0; i < n; ++i)
    {
        fscanf(buo,"%s%s%s%d", &dan[i].fam, &dan[i].name, &dan[i].ot, &dan[i].money);
    }
    return 1;
}
 
void Min()
{
 
}
 
void Zap()
{
 
}
 
void Out()       //выводим
{
    for(i = 0; i < n; i++)
        printf("%s %s %s %d\n", dan[i].fam, dan[i].name, dan[i].ot, dan[i].money);
}
 
int main()
{
    if (!Vvod()) return 0;
    Min();
    Zap();
    Out();
 
    free(dan);
 
    getch();
    return 0;
}
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
27.09.2013, 01:43     Вывод данных из структуры #5
Наконецто у меня заработало, компилятор по 10 минут код компилирует
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
57
58
59
60
61
62
#pragma hdrstop
#pragma argsused
 
#include <stdio.h>
#include <stdlib.h >
#include <conio.h>
#include <string>
#include <cstdlib>
#include <iostream>
using namespace std;
 
int n=0,p,i; 
FILE *buo;
 
struct kontract
{
   char fam[100][100];
   char name[100][100];
   char ot[100][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],&dan.money[n])!=EOF)
 {
    //cout <<dan.fam[n]<<' '<<dan.name[n]<<' '<<dan.ot[n]<<' '<<dan.money[n]<<endl;
    //exit(1);
    n++;
 }
}
 
void Min()
{
 
}
 
void Zap()
{
 
}
 
void Out()       //выводим
{
    cout <<"mu tyt"<<endl;
for(i=1;i<n;i++)
 printf("%s %s %s %d \n",dan.fam[i],dan.name[i],dan.ot[i],dan.money[i]);
 
}
 
int main()
{
Vvod();
Min();
Zap();
Out();
getch();
return 0;
}
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 467
Записей в блоге: 9
Завершенные тесты: 1
27.09.2013, 11:57  [ТС]     Вывод данных из структуры #6
ninja2, alsav22, да,все работает.
Но Вы не смогли бы объяснить,что не так в моем коде?
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
27.09.2013, 12:32     Вывод данных из структуры #7
Gdasar, Да куча ошибок, я еле разобрался, у меня компилятор почему то по 5 минут минимум компилирует простенькие программы.

1).От здесь почему точка с запятой стоит сразу после цикла?
C++
1
2
3
4
5
void Out()       //выводим
{
for(i=0;i<n;i++);
 printf("%s %s %s %d",dan.fam[i],dan.name[i],dan.ot[i]);
}
2)Эти функции fscanf() и printf() не принимают тип string.

Я не рад был что взялся разбирать код .

Добавлено через 1 минуту
Возможно printf принимает, тести, я с эти функции если честно не использую использую <iostream> или <fstream>

Добавлено через 5 минут
От просто тест у меня уже вылетает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdio>
#include <string>
using std::string;
 
int main()
{
    string s;
    scanf("%s",&s);
    printf("%s",s);
 
    return 0;
}
Такое впечатление, что эту программку не ты писал.
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 467
Записей в блоге: 9
Завершенные тесты: 1
27.09.2013, 15:38  [ТС]     Вывод данных из структуры #8
теперь все норм
больше не буду ночью кодить

Добавлено через 3 часа 1 минуту
ninja2, вопросик,почему
C++
1
2
3
   char fam[100][100];
   char name[100][100];
   char ot[100][100]
а не
C++
1
2
3
   string fam[100];
   string name[100];
   string ot[100];
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
27.09.2013, 16:06     Вывод данных из структуры #9
Цитата Сообщение от Gdasar Посмотреть сообщение
вопросик,почему
у меня не работает со string функция fscanf()

не работает - вылетает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdio>
#include <string>
using std::string;
 
int main()
{
    string s;
    char str[30];
    printf("enter str ... ");
    scanf("%s",&s);
    printf("%s",s);
 
    return 0;
}
А так работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdio>
#include <string>
using std::string;
 
int main()
{
    string s;
    char str[30];
    printf("enter str ... ");
    scanf("%s",&str);
    printf("%s",str);
 
    return 0;
}
"s%" соответствует только Си строке (char*).
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.09.2013, 16:14     Вывод данных из структуры #10
Gdasar, не слушай никого, кроме alsav22.
тебе нужен массив структур, а не структура, содержащая массивы! А ниндзя делает всё наоборот.
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
27.09.2013, 16:20     Вывод данных из структуры #11
Kuzia domovenok, Да ладно, у меня мой вариант работает, а что автору нада что бы работал, мой вариант более похож на тот который был изначально у автора .

Добавлено через 3 минуты
Kuzia domovenok, Понабижало тут советчиков... .
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 467
Записей в блоге: 9
Завершенные тесты: 1
03.10.2013, 23:23  [ТС]     Вывод данных из структуры #12
Вот решил переделать свой код+добавил к нему цикл,который не работает.
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
#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];
while(fscanf(buo,"%s %s %s %d",&dan[n].fam,&dan[n].name,&dan[n].ot,&dan[n].money)!=EOF)
 {
    n++;
 }
 
for(i=0;i<n;i++)
{
 if(i+1<n)
 {
 for(j=i+1;j<n;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<n;i++)
printf("%s %s %s %d\n",dan[i].fam,dan[i].name,dan[i].ot,dan[i].money);
free(dan);
getch();
}
HTML5
1
2
3
4
5
6
7
8
9
8
Kozlov Ivan Aleksandrovich 1000
Neznajkin Nikolaj Sergeevich 2000
Neponjatkin Sergej Ivanovich 1500
Kozlov Ivan Aleksandrovich 12000
Neznajkin Nikolaj Sergeevich 23000
Neponjatkin Sergej Ivanovich 15000
Neznajkin Nikolaj Sergeevich 1000
Abramov Evgenij Jurevich 5050
Суть цыкла: нужно найти общую стоимость заказов,которые оформил данный человек(один человек мог совершить несколько заказов) и оставить одну строку с суммой всех его заказов.
например,после первого прохода цикла будет:
HTML5
1
2
3
4
5
6
7
8
Kozlov Ivan Aleksandrovich 13000
Neznajkin Nikolaj Sergeevich 2000
Neponjatkin Sergej Ivanovich 1500
Kozlov Ivan Aleksandrovich 0
Neznajkin Nikolaj Sergeevich 23000
Neponjatkin Sergej Ivanovich 15000
Neznajkin Nikolaj Sergeevich 1000
Abramov Evgenij Jurevich 5050
Скажите,почему цикл не выполняется?
Croessmah
03.10.2013, 23:28
  #13

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Gdasar, не слушай никого, кроме alsav22.
то есть "не слушай ninja2" получается?

alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 00:32     Вывод данных из структуры #14
Вот это зачем сделано?
Цитата Сообщение от Gdasar Посмотреть сообщение
n++;
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 467
Записей в блоге: 9
Завершенные тесты: 1
04.10.2013, 00:38  [ТС]     Вывод данных из структуры #15
alsav22, а вдруг нас обманули?! То есть дали список больше(меньше) заявленного?
Проверку не писал... Суть моего вопроса в другом.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 00:45     Вывод данных из структуры #16
Цитата Сообщение от Gdasar Посмотреть сообщение
Суть моего вопроса в другом.
А суть моего - в том же. Если в начале файла пишется количество структур в файле, и под это количество выделяется память, то какой смысл что-то считать? Я понимаю, если бы такой записи в файле не было, то сначала шёл бы подсчёт структур, потом выделение памяти под них. А так - бессмысленность.
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 467
Записей в блоге: 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();
}
Вопрос все еще открыт. Помогите разобраться с циклом.
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 467
Записей в блоге: 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
Скажите,почему такое происходит.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 21:28     Вывод данных из структуры #19
Цитата Сообщение от Gdasar Посмотреть сообщение
Скажите,почему такое происходит.
Строки С так не сравниваются. Для этого есть функция: strcmp().
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 21:40     Вывод данных из структуры
Еще ссылки по теме:

вывод структуры - C++
В одномерном массиве, элементами являются записи структуры: фамилия, имя, возраст, средняя зарплата.Нужно найти и вывести фамилии и возраст...

Структуры данных (создание, просмотр, дополнение и извлечения данных из файла, содержащего информацию о номерах телефонов сотрудников учреждения,ФИО) - C++
Нужно создать программу, которая бы обеспечивала создание, просмотр, дополнения и извлечения данных из файла содержащего информацию о...

Вывод структуры каталога - C++
Добрый день , нужно получить структуру каталогв к примеру диска C:\ пишу код void find_dir(){ HANDLE hMod; WIN32_FIND_DATA...

Вывод значения из структуры - C++
Никак не могу додуматься как вывести определенные фамилии, если удовлетворяют условию: if ((strcmp(mag.social, soc) == 0) &amp;&amp; mag.vklad &lt;...

Вывод структуры из файла - C++
Подскажите, почему в текстовом файле не появляется текст? Как мне сделать, чтобы в структуре было не один человек? У меня задача стоит,...


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

Или воспользуйтесь поиском по форуму:
Gdasar
186 / 47 / 10
Регистрация: 18.02.2013
Сообщений: 467
Записей в блоге: 9
Завершенные тесты: 1
04.10.2013, 21:40  [ТС]     Вывод данных из структуры #20
alsav22, спасибо огромное
Yandex
Объявления
04.10.2013, 21:40     Вывод данных из структуры
Ответ Создать тему
Опции темы

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