Problem z kodem w ćwiczeniu?
Ostatnio zmodyfikowano 2010-09-22 10:27
rossd2e Temat założony przez niniejszego użytkownika |
Problem z kodem w ćwiczeniu? » 2010-09-21 13:37:00 Mam problem w kodzie do takiej treści zadania.Za alokuj Tablice dynamiczną, za pomocą operatora new , w której wpisujemy wartości typu w kolejności int, char, double. Pierwsza to długość, druga to nazwa, a trzecia to waga.
Problem pojawia się gdy po skompilowaniu programu gdy po kompilacji i uruchomieniu programu zadanie się wykonuje.
Lecz można wpisać więcej niż jedną cyfrę typu długość typu int, jedną literę i normalną ilość cyfr typu double. Jeżeli wpiszemy więcej niż jeden znak w miejscu wpisywanie liter program odrazy przechodzi do kolejnej linijki i kończy program. Problemem są jeszcze zakończenia delete nawet gdy program zadziała, to następuje przeciążenie i pojawia się błąd. Jeżeli ktoś wie jak rozwiązać problem to niech odpiszę z wyjaśnieniem i poprawą kodu. Z góry dziękuje.
#include <iostream> #include <string> #include <cstring> using namespace std;
char * nazwa(); double * waga(); int * srednica();
int main() { int srednica1; char nazwa1; double waga1; int * nazwa = new char[ 80 ]; int * waga = new double[ 20 ]; int * srednica = new int[ 20 ]; cout << "Podas srednice pizzy : "; cin >> srednica1; srednica = & srednica1; cin.get(); cout << "Podaj nazwe pizzy : "; cin >> nazwa1; nazwa = & nazwa1; cout << "Podaj wage pizzy : "; cin >> waga1; waga = & waga1; cout << "A oto wyniki srednica : " << * srednica << " nazwa : " << * nazwa << " waga : " << * waga << endl; system( "pause" ); return 0; } |
|
malan |
» 2010-09-21 20:40:27 #include <iostream>
int main() { int * length = 0; int * wage = 0; char * name = 0; name = new char[ 80 ]; length = new int; wage = new int; std::cout << "Podaj nazwe pizzy: "; std::cin.getline( name, 80 ); std::cout << "Podaj srednice pizzy: "; std::cin >>( * length ); std::cout << "Podaj wage pizzy: "; std::cin >>( * wage ); std::cout << "== Zamowienie ==" << std::endl; std::cout << "Nazwa: " << name << std::endl; std::cout << "Wielkosc: " <<( * length ) << " cm" << std::endl; std::cout << "Waga: " <<( * wage ) << " dag"; delete[] name; delete wage; delete length; return 0; } |
|
rossd2e Temat założony przez niniejszego użytkownika |
» 2010-09-21 22:35:15 No dobrze ten kod działa ale co zrobić aby najpierw można było wpisać średnicę a dopiero później nazwę? |
|
malan |
» 2010-09-21 22:44:17 Wystarczy zamienić cztery wiersze miejscami w kodzie i wywołać dodatkowo jedną metodę. Kombinuj ;). |
|
DejaVu |
» 2010-09-22 10:27:37 Słaby pomysł zaczynać naukę programowania od dynamicznej alokacji pamięci. |
|
« 1 » |