Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Вниз

В чём ошибка в проекте С++?   Найти похожие ветки 

 
Сишник   (2006-11-26 03:11) [0]

Написал три следующих файла:
1) Main.cpp
#include "H.H"
#include <iostream>

using namespace std;

int main()
{
const int kolbooks=3;
char *tavtor, *tname;
int tkol;
card cards[kolbooks];
cout<<"Enter information about books:\n";

for(int t=0;t<kolbooks;t++)
{
 cin>>cards[t].avtor;
 cin>>cards[t].zagl;
 cin>>cards[t].kol;
}

   for(t=0;t<kolbooks;t++)
{
 cards[t].show;
}
return 0;
}


2) opred.cpp
#include "H.H"
#include <iostream.h>

void card::show()
{
cout<<"Avtor: "<<avtor<<endl;
cout<<"Zagolovok: "<<zagl<<endl;
cout<<"Kolichestvo: "<<kol<<endl;
}

void card::store(char *avtor1,char *zagl1, int kol1)
{
avtor=avtor1;
zagl=zagl1;
kol=kol1;
}


3) H.H
#ifndef _card_
#define _card_

class card
{
public:
void store(char *avtor1,char *zagl, int kol);
void show();

char *zagl,*avtor;
int kol;
};

#endif


При компиляции ошибок нет, но есть предупреждения:

e:\c++\project10\main.cpp(23) : warning C4551: function call missing argument list
e:\c++\project10\main.cpp(10) : warning C4101: "tkol" : unreferenced local variable
e:\с++\project10\main.cpp(9) : warning C4101: "tname" : unreferenced local variable
e:\c++\project10\main.cpp(9) : warning C4101: "tavtor" : unreferenced local variable


После запуска появляется окно с надписью "Enter information about books:"
после ввода информации и нажатия на кнопку Enter, выскакивает ошибка:

"Main.exe has encountered a problem and needs to close.  We are sorry for the inconvenience.

If you were in the middle of something, the information you were working on might be lost.
           
For more information about this error, click here.

Debug                                                         Close"
           

Как исправить ошибку?..

Задание такое:
Создайте класс card, который поддерживает каталог библиотечных карточек. Этот класс должен сохранять заглавие книги, автора и число экземпляров на руках. Заглавие и автора сохраняете в виде строки символов, а количество экземпляров - в виде целого числа. Используйте общедоступную функцию-член store() для запоминания информации о книгах и общедоступную функцию-член show() для выведения информации на экран. Создать массив из объектов класса card и определить автора и название книги с наибольшим тиражом. В функции main() коротко продемонстрируйте работу созданного класса. Программа должна состоять из нескольких файлов.


 
Vga ©   (2006-11-26 03:23) [1]

> e:\c++\project10\main.cpp(23) : warning C4551: function
> call missing argument list

Это еще мягко сказано. GCC тебя бы послал "нет такого поля". В С/С++ функция ВСЕГДА (даже когда не имеет аргументов) вызывается со скобками. Так что в 23 строке в main.cpp дописывай скобки.
> e:\c++\project10\main.cpp(10) : warning C4101: "tkol" :
> unreferenced local variable
> e:\с++\project10\main.cpp(9) : warning C4101: "tname" :
> unreferenced local variable
> e:\c++\project10\main.cpp(9) : warning C4101: "tavtor" :
> unreferenced local variable

В дельфи это хинты о неиспользуемых переменных. В int main объявлены tkol, tavtor & tzagl, которые нигде не используются.


 
Vga ©   (2006-11-26 03:28) [2]

> for(t=0;t<kolbooks;t++)

Надо int t=0, так как обявленная в предыдущем for переменная t только в нем и видна.


 
Vga ©   (2006-11-26 03:46) [3]

> После запуска появляется окно с надписью "Enter information
> about books:"
> после ввода информации и нажатия на кнопку Enter, выскакивает
> ошибка:

А память под строки за тебя Пушкин выделять будет? Под них надо явно выделить память.


 
Vga ©   (2006-11-26 03:54) [4]

Есть и другие ошибки, но:
1) Я плохо знаю С++ (а ты явно еще хуже...)
2) Надоело разбираться


 
SkySpeed   (2006-11-26 04:27) [5]

Спасибо за помощь!!!


> Vga ©   (26.11.06 03:28) [2]
> > for(t=0;t<kolbooks;t++)
>
> Надо int t=0, так как обявленная в предыдущем for переменная
> t только в нем и видна.

Если написать int t=0, то будет ошибка: error C2374: "t" : redefinition; multiple initialization
       e:\c++\project10\main.cpp(12) : see declaration of "t"



> Vga ©   (26.11.06 03:46) [3]
> > После запуска появляется окно с надписью "Enter information
>
> > about books:"
> > после ввода информации и нажатия на кнопку Enter, выскакивает
>
> > ошибка:
>
> А память под строки за тебя Пушкин выделять будет? Под них
> надо явно выделить память.

Подскажи плиз, каким образом выделить память под строки? А то не раздуплюсь


> Есть и другие ошибки, но:
> 1) Я плохо знаю С++ (а ты явно еще хуже...)
> 2) Надоело разбираться

С++ начали изучать, начиная только с этого семестра


 
Zeqfreed ©   (2006-11-26 10:01) [6]


> Подскажи плиз, каким образом выделить память под строки?
>  А то не раздуплюсь


Например, malloc (выделить)/free (освободить). Но, наверное, если этому не учили, то предполагалось, что буферы под строки будут фиксированного размера.


 
Vga ©   (2006-11-27 00:02) [7]

> Если написать int t=0, то будет ошибка: error C2374: "t"
> : redefinition; multiple initialization
>       e:\c++\project10\main.cpp(12) : see declaration of
> "t"

Вот тебе и "стандартный" язык... Такое впечатление, что стандарт ANSI C++ никто из авторов компилеров в глаза не видел.
У тебя какой компилятор? Я проверяю в GCC. Он более-менее стандарту соответствует...
Что до строк - не знаю. Фиксированный буфер char zagl[64] почему-то выдает такую же ошибку.


 
Vga ©   (2006-11-27 00:04) [8]

> [6] Zeqfreed ©   (26.11.06 10:01)

Если С++, то скорее zagl=new char[64], хотя не знаю...


 
Celades ©   (2006-11-27 00:33) [9]


> #include <iostream.h>

".h" зачем?
где после этого using namespace std;


> cards[t].show;

Это вызов метода!? тогда где "()"?!


>  for(t=0;t<kolbooks;t++)

int t=0;


> Вот тебе и "стандартный" язык... Такое впечатление, что
> стандарт ANSI C++ никто из авторов компилеров в глаза не
> видел.

Его не видели те кто пишет ТАКОЙ код.


 
palva ©   (2006-11-27 00:53) [10]

> Подскажи плиз, каким образом выделить память под строки? А то не раздуплюсь
На самом деле вы строки не используете. Вместо них вы пытаетесь использовать "динамические" массивы символов, как это делается в C. Если бы вы использовали строки, вам бы не понадобилось самому писать выделение памяти под них.


 
Vga ©   (2006-11-27 00:54) [11]

> [9] Celades ©   (27.11.06 00:33)
> > Вот тебе и "стандартный" язык... Такое впечатление, что
>
> > стандарт ANSI C++ никто из авторов компилеров в глаза
> не
> > видел.
>
> Его не видели те кто пишет ТАКОЙ код.

Там написано, что КОМПИЛЯТОР не принимает

> >  for(t=0;t<kolbooks;t++)
>
> int t=0;

Кроме того, я не раз слышал, что авторы компиляторов стандарт С++ понимают каждый по своему. Например, в книге Александреску список проверенных совместимых компиляторов невелик и широкоизвестных не включает. Хотя говорят его библиотека (Loki вроде) неплохо работает в GCC.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.046 c
2-1164148382
Евгений Р.
2006-11-22 01:33
2006.12.17
Копирование на FTP


3-1160502902
Lexa11_2002
2006-10-10 21:55
2006.12.17
Помогите написать запрос


15-1164740254
IMHO
2006-11-28 21:57
2006.12.17
28 ноября: В Москве образовались многочисленные пробки


15-1164629343
iZEN
2006-11-27 15:09
2006.12.17
Mozilla: вопросы юзабилити.


15-1164392115
boy
2006-11-24 21:15
2006.12.17
помогите с TwElVe....плизззззззз





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский