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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2009, 16:02   #1
misha-_-
 
Регистрация: 23.04.2009
Сообщений: 6
По умолчанию Структуры + массив в Си

Даны сведения о сотрудниках учреждения: фамилия, инициалы, номер телефона. Выдать на экран сведения о сотрудниках, номер телефона которых содержит одинаковые цифры и подсчитать их количество.

Код программы:

#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>


struct sotr
{char fam [15];
char inic [5];
int nom[6];};

struct sotr N[15];

int main ()
{int i,j,n;
printf("Vvedite kol-vo sotrudnikov - ");
scanf("%d",&n);
for (i=0; i<n; i++)
{printf("familia "); scanf("%s", &N[i].fam);
printf("inic "); scanf("%s", &N[i].inic);
printf("nomer "); for (j=0; j<6; j++){scanf("%d", &N[i].nom[j]);} }

printf("\nSotr: ");
//Здесь нужно вывести на экран сотрудников номера которых содржат одинаковые цифры и их количество.
printf("%s ", N[i].fam);}
printf("\nKol-vo: ");

getch();
return 0;
}

Помогите пожалуйста.
misha-_- вне форума Ответить с цитированием
Старый 02.05.2009, 16:18   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
//Здесь нужно вывести на экран сотрудников номера которых содржат одинаковые цифры и их количество.
Поясните по-подробнее. Что значит содержат одинаковые числа? То есть все 6 элементов массива равны между собой? Или еще что-то?

И, собственно, сразу спрошу: в чем проблема и что у вас не получается?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 20:22   #3
misha-_-
 
Регистрация: 23.04.2009
Сообщений: 6
По умолчанию

Если будет совпадать хотяб одна цифра. У меня не получается сравнить числа массива введеные для разных фамилий, в одном масиве я могу сравнить но 2 и более массива с одинаковым названием не получается.

Было что то вроде этого:

for (i=0; i<n; i++)
if (N[i].nom==N[i].nom)(printf("%s",&N[i].fam));
misha-_- вне форума Ответить с цитированием
Старый 02.05.2009, 20:30   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Что-то так и не понял, что должно с чем совпадать и что нужно выводить.
Приведите пример.
Напишите 5 структур и покажите, какие из них нужно вывести.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 20:51   #5
misha-_-
 
Регистрация: 23.04.2009
Сообщений: 6
По умолчанию

Сначало вводится количество сотрудников - например 3
Пример:
fam lol
inic l
nomer 1 2 3 4 5 6
fam rofl
inic r
nomer 0 0 0 0 0 0
fam xd
inic x
nomer 1 2 3 7 8 9
Нужен код который сравнивает числа в массиве и выведет на экран фамилии и количество этих сотрудников.
В этом примере должны быть выведены на экран эти сотрудники:

sotrydniki: xd lol
kol-vo sotrydnikov: 2

Вот.
misha-_- вне форума Ответить с цитированием
Старый 02.05.2009, 21:19   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>


struct sotr
{
 char fam [15];
 char inic [5];
 int nom[6];
};

struct sotr N[15];

int main ()
{
int i,j,k,l,n,count;
bool fl;

printf("Vvedite kol-vo sotrudnikov - ");
scanf("%d",&n);
for (i=0; i<n; i++)
 {
  printf("familia ");
  scanf("%s", &N[i].fam);
  printf("inic ");
  scanf("%s", &N[i].inic);
  printf("nomer ");
  for (j=0; j<6; j++)
   { scanf("%d", &N[i].nom[j]); }
  }

printf("\nSotr: ");
//Здесь нужно вывести на экран сотрудников номера которых содржат одинаковые цифры и их количество.

count = 0;
fl = false;
for(i=1; i<n && !fl; i++)
  for(j=0; j<6 && !fl; j++)
   for(k=0; k<6 && !fl; k++)
    if(N[0].nom[j]==N[i].nom[k])
     {
      fl=true;
      count++;
      printf("%s ", N[0].fam);
     }
//----------
for(i=1; i<n; i++)
 {
  fl = false;
  for(j=0; j<i && !fl; j++)
    for(k=0; k<6 && !fl; k++)
     for(l=0; l<6 && !fl; l++)
      if(N[i].nom[k]==N[j].nom[l])
       {
        fl=true;
        count++;
        printf("%s ",N[i].fam);
       }

 }

printf("\nKol-vo: %d ",count);

getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 22:16   #7
misha-_-
 
Регистрация: 23.04.2009
Сообщений: 6
По умолчанию

выходят ошибки (

Build
[C++ Error] Unit1.c(20): E2451 Undefined symbol 'bool'
[C++ Error] Unit1.c(20): E2379 Statement missing ;
[C++ Error] Unit1.c(38): E2451 Undefined symbol 'fl'
[C++ Error] Unit1.c(38): E2451 Undefined symbol 'false'
[C++ Error] Unit1.c(44): E2451 Undefined symbol 'true'
misha-_- вне форума Ответить с цитированием
Старый 02.05.2009, 22:19   #8
misha-_-
 
Регистрация: 23.04.2009
Сообщений: 6
По умолчанию

Можно ли обойтись без оператора bool ? Судя по справке он относится к коду Си++, а моя программа должна быть именно в Си.
misha-_- вне форума Ответить с цитированием
Старый 02.05.2009, 22:19   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от misha-_-
выходят ошибки (
Ясно. У вас старый компилятор. Советую перейти на что-нибудь поновее.
Вот для вашего:
Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>


struct sotr
{
 char fam [15];
 char inic [5];
 int nom[6];
};

struct sotr N[15];

int main ()
{
int i,j,k,l,n,count;
int fl;

printf("Vvedite kol-vo sotrudnikov - ");
scanf("%d",&n);
for (i=0; i<n; i++)
 {
  printf("familia ");
  scanf("%s", &N[i].fam);
  printf("inic ");
  scanf("%s", &N[i].inic);
  printf("nomer ");
  for (j=0; j<6; j++)
   { scanf("%d", &N[i].nom[j]); }
  }

printf("\nSotr: ");
//Здесь нужно вывести на экран сотрудников номера которых содржат одинаковые цифры и их количество.

count = 0;
fl = 0;
for(i=1; i<n && !fl; i++)
  for(j=0; j<6 && !fl; j++)
   for(k=0; k<6 && !fl; k++)
    if(N[0].nom[j]==N[i].nom[k])
     {
      fl=1;
      count++;
      printf("%s ", N[0].fam);
     }
//----------
for(i=1; i<n; i++)
 {
  fl = 0;
  for(j=0; j<i && !fl; j++)
    for(k=0; k<6 && !fl; k++)
     for(l=0; l<6 && !fl; l++)
      if(N[i].nom[k]==N[j].nom[l])
       {
        fl=1;
        count++;
        printf("%s ",N[i].fam);
       }

 }

printf("\nKol-vo: %d ",count);

getch();
return 0;
}
----------------
Цитата:
Можно ли обойтись без оператора bool ?
Это логический тип. Можете заменить его на int.
Тогда true меняйте на 1, а false - на 0.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структуры masha.dongyz Помощь студентам 2 19.12.2011 20:29
структуры Dimarik Общие вопросы C/C++ 27 10.05.2009 20:22
Структуры. Влад-mego Помощь студентам 1 12.04.2009 19:24
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06
Массив указателей на структуры SNAKE89 Общие вопросы C/C++ 4 27.12.2007 10:14