|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.01.2010, 19:26 | #1 |
Регистрация: 24.01.2010
Сообщений: 6
|
проблема в процедуре.
Составить структуру библиографического описания книги, состоящую из следующих частей:
– АВТОРНАЗВАНИЕ (Автор, название) – МЕСТОГОД (Место издания, издательство, год) – ЧИСЛО СТРАНИЦ В процедуре распечатать название книг и автора, изданных в одном из издательств («Высшая школа», «Мир», «Наука», «Радио и связь» и т.д.). Проблема: не сравнивает izd и s и, как следствие не считает k. //--------------------------------------------------------------------------- #include <clx.h> #pragma hdrstop //#include "stdafx.h" #include <shellapi.h> #include <iostream.h> #include <string.h> #include <stdlib.h> #include <cstdlib.h> #include <conio.h> //--------------------------------------------------------------------------- #pragma argsused const int n = 1;//размерность массива char izd[50]; struct opisanie //структура { char avrnazv[50]; //параметры стуктуры автор, название char mestoizdan[50]; //место издания, издание, год int k; }; opisanie o[n];//задаем массив стуктур int j=0; void print(opisanie o[n], char s[30], int &k) { k = 0; for(int i = 0; i < n; i++) { j=1; while (o[i].mestoizdan[j] != '.' && o[i].mestoizdan[j]) { izd[j]=o[i].mestoizdan[j]; j++; } if(izd == s) { printf("%s", o[i].avrnazv); k++; } } } int main(int argc, char* argv[]) { //int _tmain(int argc, _TCHAR* argv[]) //{ int i, k; char s[50]; printf("‚ўҐ¤ЁвҐ ®ЇЁб**Ёп Є*ЁЈ ў §*¤***®¬ Ї®ап¤ЄҐ, зҐаҐ§ Їа®ЎҐ«:\n1.Ђўв®а.Ќ*§ў**ЁҐ\n2.€§¤*⥠«мбвў®.ЊҐбв® Ё§¤**Ёп.ѓ®¤\n3.—Ёб«® бва**Ёж\n"); for(i = 0; i < n; i++) { scanf("%s%s%d", &o[i].avrnazv, &o[i].mestoizdan, &o[i].k);//считываем данные } system("cls"); printf("%s", o[i].avrnazv); printf("‚ўҐ¤ЁвҐ Ё§¤*⥫мбвў®\n"); scanf("%s", s);//вводим название издательства print(o, s, k); if (k == 0) { printf("’*Є®Ј® Ё§¤вҐ«мбвў* *Ґв\n"); } else // system("pause"); return 0; getch(); //} // return 0; } //--------------------------------------------------------------------------- |
24.01.2010, 19:40 | #2 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
строки сравниваются функцией strcmp
|
24.01.2010, 21:38 | #3 |
Регистрация: 24.01.2010
Сообщений: 6
|
благодарю.
|
24.01.2010, 23:45 | #4 |
Регистрация: 24.01.2010
Сообщений: 6
|
Одну проблему решили, появилась другая:
при сравнении строк, не видит равных строк, т.е. либо выводит всех авторов(если услое задано так: if(strcmp(izd, s)) ), либо ни одного(если так: if(strcmp(izd, s)==0) ). //--------------------------------------------------------------------------- #include <clx.h> #pragma hdrstop //#include "stdafx.h" #include <shellapi.h> #include <iostream.h> #include <string.h> #include <stdlib.h> #include <cstdlib.h> #include <conio.h> //--------------------------------------------------------------------------- #pragma argsused const int n = 2;//размерность массива char izd[50]; struct opisanie //структура { char avrnazv[50]; //параметры стуктуры автор, название char mestoizdan[50]; //место издания, издание, год int k; }; opisanie o[n];//задаем массив стуктур int j=0; void print(opisanie o[n], char s[30], int &k) { k = 0; for(int i = 0; i < n; i++) { j=1; while (o[i].mestoizdan[j] != '.' && o[i].mestoizdan[j]) { izd[j]=o[i].mestoizdan[j]; j++; } if(strcmp(izd, s)) { printf("%s\n", o[i].avrnazv); k++; } } } int main(int argc, char* argv[]) { //int _tmain(int argc, _TCHAR* argv[]) //{ int i, k; char s[50]; printf("‚ўҐ¤ЁвҐ ®ЇЁб**Ёп Є*ЁЈ ў §*¤***®¬ Ї®ап¤ЄҐ, зҐаҐ§ Їа®ЎҐ«:\n1.Ђўв®а.Ќ*§ў**ЁҐ\n2.€§¤*⥠«мбвў®.ЊҐбв® Ё§¤**Ёп.ѓ®¤\n3.—Ёб«® бва**Ёж\n"); for(i = 0; i < n; i++) { scanf("%s%s%d", &o[i].avrnazv, &o[i].mestoizdan, &o[i].k);//считываем данные } system("cls"); printf("%s", o[i].avrnazv); printf("‚ўҐ¤ЁвҐ Ё§¤*⥫мбвў®\n"); scanf("%s", s);//вводим название издательства print(o, s, k); if (k == 0) { printf("’*Є®Ј® Ё§¤вҐ«мбвў* *Ґв\n"); } else system("pause"); return 0; getch(); //} // return 0; } //--------------------------------------------------------------------------- |
25.01.2010, 09:36 | #5 |
Регистрация: 24.01.2010
Сообщений: 6
|
всё, уже не актуально, решил сам.
начальное значение j=0; а не 1. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обращение к объектам в процедуре. | Maxs | Помощь студентам | 5 | 02.05.2009 12:54 |
Вопрос по процедуре | VenMaster | Общие вопросы Delphi | 5 | 13.06.2008 17:37 |
Ошибка в процедуре | GAGARIN-NEW | Помощь студентам | 2 | 21.12.2007 09:23 |