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

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

Войти
Регистрация
Восстановить пароль
 
 
hacker13a
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 263
#1

Ошибка в программе (Описать структуру с именем NOTE) - C++

17.04.2013, 20:16. Просмотров 672. Ответов 16

Описать структуру с именем NOTE, содержащую следующие поля:
- фамилия, имя;
- номер телефона;
- дата рождения
Написать программу, выполняющую следующие действия:
- вывод на экран информации о человеке, номер телефона которого введен с клавиатуры;
- если такого нет, выдать на дисплей соответствующее сообщение.

Добавлено через 55 секунд
а вот и сама программа
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
#include <iostream.h>
#include <conio.h>
#include <string.h>
int main() {
    int i;
   char F;
   struct Note {
   char sname_imya [20];
   int nomer [20];
   int data ;
};
    Note A[3];
   for (i=1; i<=3; i++)
   {
   printf("imya"); scanf("%s", & A[i].sname_imya);
   printf("nomer"); scanf("%d", A[i].nomer);
   printf("data"); scanf("%d", & A[i].data);
   }
   printf ("vvedite imya");
   scanf ("%s", &F);
   for (i=1; i<=3; i++)
   {
    if (F == A[i].sname_imya){
      printf ("\n%nomer", A[i].nomer);
      printf ("\n%d", & A[i].data);
      }
   }
   getch();
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2013, 20:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка в программе (Описать структуру с именем NOTE) (C++):

Описать структуру с именем NOTE - C++
Народ почти не знаю С++ но нужно написать вот прогу желательно на Буилдере 1. Описать структуру с именем NOTE, содержащую следующие...

Описать структуру с именем NOTE - C++
Помогите с программой пожалуйста. А. Описать структуру с именем NOTE, содержащую следущие поля: Фамилия, имя; Номер телефона; День...

Описать структуру с именем NOTE - C++
Описать структуру с именем NOTE, содержанию следующие поля: 1) фамилия, имя; 2) номер телефона; 3) дата рождения (массив из трех...

Описать структуру с именем NOTE - C++
Вот такого рода задание: Программа должна запрашивать все необходимые параметры, отслеживая правильность формата ввода. Упорядочивание...

Описать структуру с именем NOTE - C++
2.вывод на экран записей, которые должны быть упорядочены по алфавиту; Не могу понять в чем смысл задания.

Описать структуру с именем NOTE - C++
описать структуру с именем NOTE cодержаще следущее поля 1) фамилия , имя 2) номер телефона 3)дата рождения (массив из трех чисел ) ...

16
hofmn
Helter Skelter
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
17.04.2013, 20:22 #2
Где ошибка-то?
0
alex_04
2 / 2 / 0
Регистрация: 27.01.2013
Сообщений: 5
17.04.2013, 20:23 #3
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
#include <conio.h>
#include <stdio.h>
 
int main() {
    int i;
   char F[20];
   struct Note {
   char sname_imya [20];
   int nomer [20];
   int data ;
};
    Note A[3];
   for (i=1; i<=3; i++)
   {
   printf("imya"); scanf("%c", & A[i].sname_imya);
   printf("nomer"); scanf("%d", A[i].nomer);
   printf("data"); scanf("%d", & A[i].data);
   }
   printf ("vvedite imya");
   scanf ("%c", &F);
   for (i=1; i<=3; i++)
   {
    if (F == A[i].sname_imya){
      printf ("\n%nomer", A[i].nomer);
      printf ("\n%d", & A[i].data);
      }
   }
   getch();
   return 0;
}
1
hacker13a
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 263
17.04.2013, 20:36  [ТС] #4
Алекс, вот что выдает в ответ
0
Миниатюры
Ошибка в программе (Описать структуру с именем NOTE)  
alex_04
2 / 2 / 0
Регистрация: 27.01.2013
Сообщений: 5
17.04.2013, 20:51 #5
"%c"поменяй на "%s"

Добавлено через 6 минут
и for (i=1; i<=3; i++) на for (i=0; i<3; i++) в обоих циклах
0
ValeryS
Модератор
7019 / 5357 / 529
Регистрация: 14.02.2011
Сообщений: 18,072
17.04.2013, 20:54 #6
Цитата Сообщение от hacker13a Посмотреть сообщение
int nomer [20];
массив !!!!
Цитата Сообщение от hacker13a Посмотреть сообщение
printf("nomer"); scanf("%d", A[i].nomer);
вводим одно число в nomer[0]
Цитата Сообщение от hacker13a Посмотреть сообщение
char F;
один char

Цитата Сообщение от hacker13a Посмотреть сообщение
scanf ("%s", &F);
вводим строку
как минимум 2 char

Цитата Сообщение от hacker13a Посмотреть сообщение
if (F == A[i].sname_imya)
если думаешь что этим сравниваешь строки, то глубоко ошибаешься
для сравнения строк strcmp
http://lord-n.narod.ru/download/book.../14/strcmp.htm
Цитата Сообщение от hacker13a Посмотреть сообщение
printf ("\n%nomer", A[i].nomer);
nomer массив !!!
1
hacker13a
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 263
17.04.2013, 20:58  [ТС] #7
alex_04, после того как вводишь имя, он выдает цифры 124558 и т.д..))
0
ValeryS
Модератор
7019 / 5357 / 529
Регистрация: 14.02.2011
Сообщений: 18,072
17.04.2013, 21:02 #8
Цитата Сообщение от hacker13a Посмотреть сообщение
alex_04, после того как вводишь имя, он выдает цифры
потому что портишь стек

Цитата Сообщение от hacker13a Посмотреть сообщение
char F;
Цитата Сообщение от hacker13a Посмотреть сообщение
scanf ("%s", &F);
1
hacker13a
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 263
17.04.2013, 21:04  [ТС] #9
ValeryS,
можете написать исправленную версию, ибо я в пока том сильно слаб... как видите))
0
ValeryS
Модератор
7019 / 5357 / 529
Регистрация: 14.02.2011
Сообщений: 18,072
17.04.2013, 21:09 #10
Цитата Сообщение от hacker13a Посмотреть сообщение
можете написать исправленную версию,
нет
Цитата Сообщение от hacker13a Посмотреть сообщение
ибо я в пока том сильно слаб...
учись
помочь всегда помогу
для начала объяви F массивом
char F [20];
во вторых вынеси описание структуры из функции (не хорошо это)
в третьих решай нужную задачу

Цитата Сообщение от hacker13a Посмотреть сообщение
вывод на экран информации о человеке, номер телефона которого введен с клавиатуры;
а ты что вводишь?
Цитата Сообщение от hacker13a Посмотреть сообщение
printf ("vvedite imya");
* *scanf ("%s", &F);
имя
1
hacker13a
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 263
17.04.2013, 21:27  [ТС] #11
ValeryS, printf ("vvedite nomer"); вот здесь, и if (F == A[i].nomer){
printf ("\n%name", & A[i].sname_imya); здесь кажись я правильно исправил. и char F[20];
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
#include <conio.h>
#include <stdio.h>
 
int main() {
    int i;
   char F[20];
   struct Note {
   char sname_imya [20];
   int nomer [20];
   int data ;
};
    Note A[3];
   for (i=1; i<=3; i++)
   {
   printf("imya"); scanf("%c", & A[i].sname_imya);
   printf("nomer"); scanf("%d", A[i].nomer);
   printf("data"); scanf("%d", & A[i].data);
   }
   printf ("vvedite nomer");
   scanf ("%s", &F);
   for (i=1; i<=3; i++)
   {
    if (F == A[i].nomer){
      printf ("\n%name", & A[i].sname_imya);
      printf ("\n%d", & A[i].data);
      }
   }
   getch();
   return 0;
}
Добавлено через 2 минуты
а как вынести описание структуры из функции я не знаю(. или не понимаю что это означает
0
alex_04
2 / 2 / 0
Регистрация: 27.01.2013
Сообщений: 5
17.04.2013, 21:33 #12
Цитата Сообщение от hacker13a Посмотреть сообщение
for (i=1; i<=3; i++)
выход за пределы массива происходит, необходимо for (i=0; i<3; i++) т.к индексация начинается с 0

Цитата Сообщение от hacker13a Посмотреть сообщение
а как вынести описание структуры из функции я не знаю(. или не понимаю что это означает
вынести структуру из ф-ции main
1
ValeryS
Модератор
7019 / 5357 / 529
Регистрация: 14.02.2011
Сообщений: 18,072
17.04.2013, 21:44 #13
поехали дальше
зачем тебе
Цитата Сообщение от hacker13a Посмотреть сообщение
int nomer [20];
массив на двадцать(телефонные номера 10 значные) интов(каждый может быть до 2 милиардов)
подумай как поменять
и подумай как поменяется логика программы
Цитата Сообщение от hacker13a Посмотреть сообщение
if (F == A[i].nomer){
массивы так не сравнивают
тем более что nomer массив интов а F чаров
1
hacker13a
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 263
17.04.2013, 22:02  [ТС] #14
Цитата Сообщение от ValeryS Посмотреть сообщение
массив на двадцать(телефонные номера 10 значные) интов(каждый может быть до 2 милиардов)
подумай как поменять
т.е нужно просто int nomer;?


Цитата Сообщение от ValeryS Посмотреть сообщение
массивы так не сравнивают
хотите сказать что здесь нужно использовать функцию strcmp?
C++
1
 if(strcmp(F, A[i].nomer))
?
0
ValeryS
Модератор
7019 / 5357 / 529
Регистрация: 14.02.2011
Сообщений: 18,072
17.04.2013, 22:08 #15
Цитата Сообщение от hacker13a Посмотреть сообщение
т.е нужно просто int nomer;?
можно int только unsigned(отрицательных номеров не бывает) и long, в простой int десять цифр не влезут
можно строку так же как для имени
Цитата Сообщение от hacker13a Посмотреть сообщение
хотите сказать что здесь нужно использовать функцию strcmp?
уже нет у тебя типы массивов разные
подумай как будешь хранить номер и после этого будем думать как сравнивать
1
17.04.2013, 22:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2013, 22:08
Привет! Вот еще темы с ответами:

Описать структуру с именем Note - C++
Описать структуру с именем Note, содержащую следующие поля: name-фамилия и имя, tele- номер телефона, bday-день рождения (массив из 3...

Описать структуру с именем NOTE - C++
Помогите пожалуйста с прогой.. В чём ошибка? ии как упорядочить по дате рождения? Задание звучит так: Описать структуру с именем NOTE,...

Описать структуру с именем NOTE - C++
Описать структуру с именем NOTE, с полями: фамилия, номер телефона, год рождения. Сформировать односвязный список. Реализовать про-смотр...

Описать структуру с именем NOTE - C++
1. Описать структуру с именем NOTE, содержащую следующие поля: Фамилия, имя; Номер телефона; День рождения(массив из 3 чисел) 2....


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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