Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Dev-C++] Błąd "Permission denied (...) "

Ostatnio zmodyfikowano 2007-10-21 10:32
Autor Wiadomość
eXtreme
» 2007-10-17 20:59:08
Witajcie
piszę to tu bo nie chcę zaśmiecać tworząc nowy temat.
Zaznaczam że są to moje pierwsze kroki z C++
Tworze coś takiego  :

C/C++
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    float a;
    float b;
   
    cout << "Podaj pierwsza liczbe: ";
    cin >> a;
    cout << "Podaj druga liczbe: ";
    cin >> b;
    cout << "liczba a: " << a << endl;
    cout << "liczba b: " << b << endl;
    cout << "Menu wyboru:" << endl;
    cout << "[1] Oblicz: a+b" << endl;
    cout << "[2] Oblicz: a-b" << endl;
    cout << "[3] Oblicz: a*b" << endl;
    cout << "[4] Oblicz: a/b" << endl;
    cout << "Wpisz numer: ";
   
    int wybor;
    cin >> wybor;
    cout << endl << "Wpisales numer: " << wybor << endl;
    switch( wybor )
    {
    case 1:
        cout << "Opcja " << wybor << " wynik dodawania a+b=" << a + b << endl;
        break;
    case 2:
        cout << "Opcja " << wybor << " wynik odejmowania a-b=" << a - b << endl;
        break;
    case 3:
        cout << "Opcja " << wybor << " wynik mnozenia a*b=" << a * b << endl;
        break;
    case 4:
        cout << "Opcja " << wybor << " wynik dzielenia a/b=" << a / b << endl;
        break;
       
    default:
        cout << "Opcja " << wybor << " taka opcja nie istnieje!" << endl;
        break;
    }
    getch();
    return( 0 );
}

i wszystko pięknie działa ale jeżeli wstawie jakichkolwiek znak np. głupia spację czy enter lub nie daj boże wstawie np.

C/C++
case 5:
cout << "Opcja " << wybor << " wynik mnożenia a*b=" << a * b << endl;
break;
Zaznacza że dokładam jeszcze opcje wyboru 5-tki oraz że ta spacja nie koliduję z żadna komendą itp.


Gdy klikam kompiluj i uruchom pojawiają sie takie błędy:

Permission denied; Id returned 1 exit status; [Build Error] [Projekt5.exe] Error 1
Permission denied; Id returned 1 exit status; [Build Error] [Projekt5.exe] Error 1

a w rozszerzeniu:

Building Makefile: "C:\Dev-Cpp\Makefile.win"
Wykonywanie  make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe pp.o  -o "Projekt5.exe" -L"C:/Dev-Cpp/lib" 

C:\Dev-Cpp\Bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot open output file Projekt5.exe: Permission denied
collect2: ld returned 1 exit status

make.exe: *** [Projekt5.exe] Error 1

Wykonanie zakończone
dodam że nic sam nie blokuje
Podejrzewam że może jakis program blokuje
np. Kaspersky lub spyboot


O co chodzi ?
Dodam że jak już sie raz pokaże ten błąd to już nic nie pomaga  - anulowanie zmian itp.
Trzeba otworzyć plik jeszcze raz by zadziałało !
Pomocy !
P-18589
eXtreme
» 2007-10-18 08:05:10
Zapisuje wszysko w domyślnym katalogu:


C:\Dev-Cpp[/code]

:(
P-18590
eXtreme
» 2007-10-18 13:23:16
Mam
Ale to partycja NTFS
Dowiedziałem się że mogą występować właśnie w niej problemu z uprawnieniami.
W pracy mam FAT i tu nie mam żadnych problemów a w domu ...
P-18591
eXtreme
» 2007-10-20 20:01:37
Dobra poradziłem sobie z tym problemem
Chodziło właśnie o to że w NTFS-ie pojawiaja sie problemy z utratą uprawnień do zmiany plików.
Teraz pracuje na koncie administratora w XP i wszystko jest OK.

A teraz pytanie jest takie
Mając to

C/C++
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main()
{
    int a;
    int b;
   
    cout << "Podaj pierwsza liczbe: ";
    cin >> a;
    cout << "Podaj druga liczbe: ";
    cin >> b;
    cout << "liczba a: " << a << endl;
    cout << "liczba b: " << b << endl;
    cout << "Menu wyboru:" << endl;
    cout << "[1] Oblicz: a+b" << endl;
    cout << "[2] Oblicz: a-b" << endl;
    cout << "[3] Oblicz: a*b" << endl;
    cout << "[4] Oblicz: a/b" << endl;
    cout << "[5] Oblicz: a%b" << endl;
    cout << "Wpisz numer: ";
    int wybor;
   
   
    cin >> wybor;
    cout << endl << "Wpisales numer: " << wybor << endl;
    switch( wybor )
    {
    case 1:
        cout << "Opcja " << wybor << " wynik dodawania a+b=" << a + b << endl;
        break;
    case 2:
        cout << "Opcja " << wybor << " wynik odejmowania a-b=" << a - b << endl;
        break;
    case 3:
        cout << "Opcja " << wybor << " wynik mnozenia a*b=" << a * b << endl;
        break;
    case 4:
        cout << "Opcja " << wybor << " wynik dzielenia a/b=" << a / b << endl;
        break;
    case 5:
        cout << "Opcja " << wybor << " wynik dzielenie modulo a%b=" << a % b << endl;
        break;
    default:
        cout << "Opcja " << wybor << " taka opcja nie istnieje!" << endl;
        break;
    }
    getch();
    return( 0 );
}

Wszystko jest ok do czasu .
+,-,* oraz % działa dobrze ale / nie bo zastosowałem
int a tu nie ma liczb po przecinku które w / są potrzebne.
A w % ( dzieleniu z resztą ) nie są potrzebne
jak to razem połączyć
Czyli jak wykorzystać int i float w jednym programie.
Sorry że tak zawracam głowę ale nie mam sie kogo innego poradzić.

Znalazłem takie coś co chyba oznacza że dobrze jest jak teraz mam ale czy nie może być tak by wynik z dzielenia np. 10/3= 3.33333

To coś:
brak opisu
brak opisu
P-18592
eXtreme
» 2007-10-21 10:32:56
Na początku dziękuje za pomoc i przepraszam, że zawracam głowę mam nadzieje że to już ostatni raz
Pierwsza sprawa: jeśli temat został rozwiązany, napisz to.
Problem został rozwiązany i napisałem o tym w najbliższym  wolnym terminie (praca, praca, praca)
Druga sprawa: zakładaj NOWY temat jeśli masz inny problem niż ten, który został opisany w pierwszym poście.
Zgubiła mnie grzeczność - nie chciałem zakładać 10 nowych tematów jeżeli tytuł tego tematu dotyczy i mojej sprawy "mam problem z Dev-C++"
 ja naprawde mam problem z Dev-C++ :)
Trzecia sprawa: zamień typ zmiennej a i b z int na float, czyli:
C/C++
float a;
float b;
jeżeli tak zrobię - czyli zamienię na początku int na float - to nie mogę skompilować  bo wyskakuje błąd przy dzieleniu z resztą ....

Jeśli chcesz mieć wynik opisany za pomocą liczby rzeczywistej, a liczby wprowadzane mają być całkowite musisz zapisać wtedy:
C/C++
cout <<( float ) a / b << endl; //rzutowanie w stylu C
//lub tak:
cout << static_cast < float >( a ) / b << endl; //rzutowanie w stylu C++

Efekt w obu przypadkach jest ten sam, jednak zaleca się stosowanie drugiego zapisu, ponieważ łatwiej później szukać błędów w kodzie.
Druga metoda rzutowania jest jednak trudniejsza, jednak teraz szczegóły nie są tu istotne.

Zrobiłem tak, że zmieniłem case 4 na takie coś:
C/C++
case 4:
cout << "Opcja " << wybor << " dzielenie a/b=";
cout << static_cast < float >( a ) / b << endl;
cout << "Opcja " << wybor << " dzielenie a/b=" << a / b << endl;
break;
oczywiście wyskakują dwa wyniki jeden całkowity a drugi z liczbą z przecinkiem ale mogę wykasować 4 linijkę i bedzie jedna
Dobrze będzie ?
P-18593
1 « 2 »
Poprzednia strona Strona 2 z 2