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

Błędne dane zwracane oraz przesyłane przez funkcje

0 głosów
84 wizyt
pytanie zadane 27 stycznia 2021 w C i C++ przez kacperc317 Początkujący (320 p.)

Witam co jest nie tak w kodzie że te dane  są zwracane błędne chodzi o funkcje pole oraz suma i to co jest w nawiasach , czyli tablice.

#include <iostream>
#include <stdio.h>
#include <cstring>

using namespace std;


int suma(int *tab1,int *tab2,int ile1)
{
   int suma1;
   cout<<tab1[0]<<endl;
   cout<<tab2[0]<<endl;
   for(int i=0;i<ile1/4;i++)
   {
       suma1+=(tab2[i]+tab2[i+1])*(tab1[i+1]-tab1[i]);


   }

        return suma1;
};
void pole1(int *t1,int *t2,int *tablica,int ile)
{



         int liczba=0;

         while(true)
         {


            int *nowy=new int[100];

            cin>>liczba;

            if(cin.fail()) {cin.clear();cin.sync();liczba=0; tablica[0]=ile;break;}

            for(int i=0;i<ile;i++)
            {
                nowy[i]=tablica[i];
            }

            nowy[ile]=liczba;
            tablica[ile]=nowy[ile];

            ile++;





         }





            for(int i=0;i<ile/2;i++)
            {
                if(i<=0)
                {
                    t1[i]=tablica[0];


                    t2[i]=tablica[1];

                }
                else
                {
                   t1[i]=tablica[i*2];
                   t2[i]=tablica[i*2+1];


                }


            }






}




int main()
{

                int tab1[100];
                int tab2[100];
                int taby1[100];
                int taby2[100];
                int ile1=0;
                int ile2=0;

                int tablica1[100];
                int tablica2[100];


               pole1(tab1,tab2,tablica1,ile1);



                pole1(taby1,taby2,tablica2,ile2);

               cout<<tab1[1]<<endl<<tab2[0]<<endl<<tablica1[0]<<endl;
                cout<<taby1[1]<<endl<<taby2[0]<<endl<<tablica2[0]<<endl;
                ile1=tablica1[0];
                ile2=tablica2[0];

                int s;
                 s=suma(tab1,tab2,ile1);
                 int s1;
                 s1=suma(taby1,taby2,ile2);
                cout<<s<<endl;
                cout<<s1<<endl;






        return 1;




};

 

komentarz 27 stycznia 2021 przez kacperc317 Początkujący (320 p.)
edycja 27 stycznia 2021 przez kacperc317
JEDYNE CO NIE DZIALA I PROSZE O POMYSLY TO TO ŻE  int ile nie zwraca wartosci z funkcji pole zamiast np 4 zwraca zawsze 0

1 odpowiedź

0 głosów
odpowiedź 27 stycznia 2021 przez j23 Mędrzec (169,680 p.)

W linii 10 powinieneś wyzerować suma1.

W linii 28 alokujesz pamięć, ale jej nie zwalniasz. Skoro wielkość tej pamięci jest stały, zrób nowy zwykła lokalną tablicą.

Podobne pytania

+1 głos
2 odpowiedzi 85 wizyt
pytanie zadane 25 marca 2021 w C i C++ przez saju13013 Nowicjusz (230 p.)
0 głosów
1 odpowiedź 658 wizyt
pytanie zadane 25 marca 2017 w C i C++ przez Fenix7 Nowicjusz (210 p.)
0 głosów
2 odpowiedzi 279 wizyt
pytanie zadane 16 marca 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)

86,526 zapytań

135,279 odpowiedzi

300,595 komentarzy

57,276 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...