• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

'funkcja_dodawania' was not declared in this scope

Object Storage Arubacloud
0 głosów
1,993 wizyt
pytanie zadane 16 kwietnia 2017 w C i C++ przez Krzychu234 Początkujący (350 p.)

Mam problem, zrobiłem funkcje:

#include <iostreame>

using namespace std;

int main()
{
    funkcja_dodawania(1,2,3)
}

float funkcja_dodawania(float x,float y,float suma)
    {
        cout<<"Podaj 1 liczbe: ";
        cin>> x;
        cout<<"Podaj 2 liczbe: ";
        cin>> y;
        suma=x+y;
        cout<<"Suma wynosi "<<suma;
    }

 

i wyskakuje mi error w 7 linijce: 'funkcja_dodawania' was not declared in this scope

nie mam pojęcia jak to naprawić frown

3 odpowiedzi

0 głosów
odpowiedź 16 kwietnia 2017 przez Wildee Gaduła (3,380 p.)
wybrane 16 kwietnia 2017 przez Krzychu234
 
Najlepsza
#include <iostreamE>? Mała literówka w kodzie zawsze boli :( Zmień to na #include <iostream> i powinno śmigać :)
komentarz 16 kwietnia 2017 przez Krzychu234 Początkujący (350 p.)
to nie pomoże :)
1
komentarz 16 kwietnia 2017 przez Wildee Gaduła (3,380 p.)

To powinno już na 100% działać. Skopiuj :)

#include <iostream>

using namespace std;

void funkcja_dodawania(float x,float y)
{
        float suma;
cout<<"Podaj 1 liczbe: ";
cin>> x;
cout<<"Podaj 2 liczbe: ";
cin>> y;
suma=x+y;
cout<<suma;
}

int main()
{
funkcja_dodawania(1, 2);
}

 

komentarz 16 kwietnia 2017 przez Wildee Gaduła (3,380 p.)
Dawno nie pisałem w C++, ale wydaje mi się, że wiem w czym leżał problem. Funkcja była poniżej funkcji main. Jeśli w C++ chcesz użyć jakiejś funkcji (np. "funkcja_dodawania" w funkcji "main"), to powinieneś napisać funkcję, którą masz zamiar użyć nad funkcją, w której chcesz jej użyć :)
komentarz 16 kwietnia 2017 przez Krzychu234 Początkujący (350 p.)

wielkie dzięki, już wiem co źle robiłem smiley

komentarz 16 kwietnia 2017 przez Krzychu234 Początkujący (350 p.)

mam do ciebie jeszcze jedną prośbę, mógłbyś mi powiedzieć co zrobić żeby ta funkcja nie wyświetlała się w tym pliku, i żebym mógł ją wywołać w innym pliku smiley

komentarz 16 kwietnia 2017 przez Wildee Gaduła (3,380 p.)
Chodzi ci o to, żeby wywołać funkcję, która znajduje się w innym pliku?
komentarz 16 kwietnia 2017 przez Krzychu234 Początkujący (350 p.)
tak, i też jak ją trzeba napisać w tym pliku
komentarz 16 kwietnia 2017 przez Wildee Gaduła (3,380 p.)
Podrozdział 7.4 ładnie wszystko wyjaśnia: http://shebang.pl/kursy/programowanie-cpp/r7-funkcje Osobiście polecam zapoznać się z całością :)
+4 głosów
odpowiedź 16 kwietnia 2017 przez Molester Bywalec (2,920 p.)
edycja 16 kwietnia 2017 przez Molester

Pisz prototypy funkcji , angielskie nazwy zmiennych i funkcji, jedna zmienna jest niepotrzebna , nie używaj przestrzeni nazw std.


#include <iostream>
 
float TotalSum(float x, float y);   // prototyp! 
 
// zamiast przestrzeni nazw ewentualnie ...
// using std::cout;
// using std::cin;
// using std::endl;
 
 
int main(){
   
    std::cout << TotalSum(1,2) << std::endl;  
}
 
float TotalSum(float x,float y){

        std::cout<<"Podaj 1 liczbe: " << std::endl;
        std::cin>> x;
        std::cout<<"Podaj 2 liczbe: " << std::endl;
        std::cin>> y;
        return x+y;
    }

 

komentarz 16 kwietnia 2017 przez Krzychu234 Początkujący (350 p.)
a jeśli bym dał nazwę prototypa funkcji, to też by działało?
1
komentarz 16 kwietnia 2017 przez Molester Bywalec (2,920 p.)
edycja 17 kwietnia 2017 przez Molester
Tzn? Jeżeli chodzi o to czy nalezy wpisywać tylko  nazwę prototypu na początku to nie. Musisz wypisać jaki typ mają argumenty przekazywane (float) i co zwraca funkcja (też float), oraz musi być  jej nazwa. Nazwy zmiennych są opcjonalne, ale pomagają potem się rozeznać w programie.

float TotalSum (float, float);

Jeżeli zaś chodzi Ci o to czy w ogóle pominąć prototyp to można, wtedy całą funkcje umieszczasz ponad funkcją która ją wywołuje (w tym przypadku main) ale musisz liczyć się z tym że sporo na tym tracisz, może nie w takim małym programie ale w większych owszem. Głownie działa tutaj kontrola błędów, ewentualna konwersja jesli chodzi o zły typ zwracany, oraz kontrola poprawności typów argumentów. Czytelniejszy program itd. Na razie tyle mi przychodzi do głowy.
komentarz 16 kwietnia 2017 przez Krzychu234 Początkujący (350 p.)
a jak mam napisać to żeby ciało funkcji było  w jednym pliku, a jej wywołanie w innym?
1
komentarz 16 kwietnia 2017 przez Molester Bywalec (2,920 p.)

Musisz dołączyć plik .h do .cpp. Zapewne używasz IDE, a ja uzywam do tego linuksowego terminala więc ciężko mi cokolwiek mówić jak masz je dołączyć. Ale podaje te 2 pliki 

SUMMING.CPP

#include "Summing.h"
#include <iostream>
 
int main(){
   
    std::cout << Summing(1,2) << std::endl;  
}
 

 

SUMMING.H

#include <iostream>


 static float Summing(float x,float y){

std::cout<<"Podaj 1 liczbe: " << std::endl;
std::cin>> x;
std::cout<<"Podaj 2 liczbe: " << std::endl;
std::cin>> y;
return x+y;
}

    

 

 

 

+1 głos
odpowiedź 16 kwietnia 2017 przez theochse Obywatel (1,310 p.)
Zmień float na void :) Jeżeli funkcja nie zwraca żadnej wartości, a służy do wypisania czegoś, to powinna być "rodzaje" void. Jeśli chciałbyś, żeby zwracała sumę to musiałbyś napisać return suma; w funkcji i w main napisać cout<<funkcja_dodawania(1, 2); :)

EDIT: Dopiero zauważyłem, że w do metody przekazujesz sume. Dziwna praktyka, ale tak to jest na początku :D Nie wszystko się rozumie. Funkcja ma obliczać wartość sumy, a ty jej nie znasz (po co byłaby ci funkcja do liczenia, jakbyś znał wynik?), więc nie przekazujesz wartości sumy.

Ciężko mi to wytłumaczyć pisząć. Jak chcesz, to mogę z chęcia wytłumaczyć Ci o co w tym biega np. przez skype :) Napisz mi PW, jeśli jesteś zainteresowany :)
komentarz 16 kwietnia 2017 przez theochse Obywatel (1,310 p.)
#include <iostreame>
 
using namespace std;
 
int main()
{
    funkcja_dodawania(1,2);
}
 
void funkcja_dodawania(float x,float y)
    {
float suma;
        cout<<"Podaj 1 liczbe: ";
        cin>> x;
        cout<<"Podaj 2 liczbe: ";
        cin>> y;
        suma=x+y;
        cout<<"Suma wynosi "<<suma;
    }

 

komentarz 16 kwietnia 2017 przez theochse Obywatel (1,310 p.)
Lub tak:

#include <iostreame>
 
using namespace std;
 
int main()
{
    cout<<funkcja_dodawania(1,2);
}
 
float funkcja_dodawania(float x,float y)
    {
float suma;
        cout<<"Podaj 1 liczbe: ";
        cin>> x;
        cout<<"Podaj 2 liczbe: ";
        cin>> y;
        suma=x+y;
        return suma;
    }
komentarz 16 kwietnia 2017 przez Krzychu234 Początkujący (350 p.)

wielkie dzięki laughyes

komentarz 16 kwietnia 2017 przez Krzychu234 Początkujący (350 p.)
napisałem to sobie, i nadal mam ten błąd xd
komentarz 16 kwietnia 2017 przez Molester Bywalec (2,920 p.)
edycja 16 kwietnia 2017 przez Molester
Jak jest możliwość to polecam łączyć deklaracje z przypisaniem (to znaczy razem inicjacja) czyli od razu float suma = x+y;. I jest błąd w dyrektywie preprocesora.

Podobne pytania

–2 głosów
4 odpowiedzi 4,942 wizyt
pytanie zadane 18 kwietnia 2017 w C i C++ przez waski223322 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 1,005 wizyt
pytanie zadane 21 marca 2016 w C i C++ przez korneliusz1999 Nowicjusz (190 p.)
–1 głos
1 odpowiedź 634 wizyt
pytanie zadane 23 sierpnia 2020 w C i C++ przez Drożdżówka Obywatel (1,870 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...