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

Stworzenie podprogramu

0 głosów
136 wizyt
pytanie zadane 16 stycznia 2020 w C i C++ przez BloodyBoy89 Początkujący (440 p.)
edycja 16 stycznia 2020 przez BloodyBoy89

Program ma wykonać działanie w zależności od numeru zadania.

#include<iostream>
#include<math.h>
using namespace std;

int main()
{
    char r;
    while(cin>>r)
    {

    switch(r)
{

    case '1':
     int tablica[100],n;

    cin>>n;
    for(int i=0; i<n; i++)
        {
        cin>>tablica[i];
        }
    for (int i=0; i<n-1; i++)
        for (int j=0; j<n-1; j++)
            if (tablica[j]<tablica[j+1])
                swap(tablica[j], tablica[j+1]);

    for (int i = 0; i<n; i++)
        cout << tablica[i]<<" ";
    break;
//////////////////////////////////////////////////////////////////////////////////////////////////////////
    case '7':
         float a,b,c,d;
    float x1,x2,x,cztery,zero;
    cin>>cztery>>zero>>a>>b>>c;
         d=(b*b)-(4*a*c);
            if(d>0)
            {
                x1=(-b-sqrt(d))/(2*a);

                x2=(-b+sqrt(d))/(2*a);

                if(x1>x2)
                {
                    cout<<floor(x2)<<" "<<floor(x1)<<endl;
                }
                if(x2>x1)
                {
                     cout<<floor(x1)<<" "<<floor(x2)<<endl;
                }




            }
             if(d==0)
             {
                  x=-b/(2*a);
                  cout<<x<<endl;
             }
    break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////
    case '4':
    	int tab[100],temp,i,j;


	cin>>n;

	for(i=0;i<n;i++)
	{

		cin>>tab[i];
	}

	for(i=0,j=n-1;i<n/2;i++,j--)
	{
		temp=tab[i];
		tab[i]=tab[j];
		tab[j]=temp;
	}



	for(i=0;i<n;i++)
		cout<<tab[i]<<" ";


    break;
}
    }
    return 0;
}

Program działa ale na stronie gdzie mam go wrzucić wyrzuca mi coś takiego:

main0.cpp(93,16): warning C4456: declaration of 'i' hides previous local declaration

main0.cpp(63,24): note: see declaration of 'i'

main0.cpp(96,21): warning C4456: declaration of 'i' hides previous local declaration

main0.cpp(93,13): note: see declaration of 'i'

Podejrzewam że, nadpisuje wartość "i". Moje pytanie jest takie: Jak zrobić żeby każdy podprogram miał swoje własne wartości typu "i","n","j" które można by było zapisywać na początku każdego z podprogramów jako int/float i,n,j;

Przykładowe dane wejściowe i funkcja podprogramu:

 zad1 Posortuj wejściowy ciąg liczb 1 5 7 9 3 8 1
zad4 Zapisz podany wejściowy ciąg liczbowy w tablicy i odwróć go w miejscu 4 4 3 6 8 9
zad7 Rozwiąż równanie kwadratowe 7 4 0 6 10 1

 

1 odpowiedź

+1 głos
odpowiedź 16 stycznia 2020 przez tangarr Mędrzec (155,140 p.)
wybrane 16 stycznia 2020 przez BloodyBoy89
 
Najlepsza

Opakuj swoje przypadki w osobne bloki nawiasami klamrowymi.

 

#include<iostream>
#include<math.h>

using namespace std;

int main() {
  char r;
  while (cin >> r) {
    switch (r) {
    case '1':
      {
        int tablica[100],
        n;

        cin >> n;
        for (int i = 0; i < n; i++) {
          cin >> tablica[i];
        }
        for (int i = 0; i < n - 1; i++)
          for (int j = 0; j < n - 1; j++)
            if (tablica[j] < tablica[j + 1])
              swap(tablica[j], tablica[j + 1]);

        for (int i = 0; i < n; i++)
          cout << tablica[i] << " ";
      }
      break;
      //////////////////////////////////////////////////////////////////////////////////////////////////////////
    case '7':
      {
        float a,
        b,
        c,
        d;
        float x1,
        x2,
        x,
        cztery,
        zero;
        cin >> cztery >> zero >> a >> b >> c;
        d = (b * b) - (4 * a * c);
        if (d > 0) {
          x1 = (-b - sqrt(d)) / (2 * a);

          x2 = (-b + sqrt(d)) / (2 * a);

          if (x1 > x2) {
            cout << floor(x2) << " " << floor(x1) << endl;
          }
          if (x2 > x1) {
            cout << floor(x1) << " " << floor(x2) << endl;
          }

        }
        if (d == 0) {
          x = -b / (2 * a);
          cout << x << endl;
        }
      }
      break;
      ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    case '4':
      {
        int tab[100],
        temp,
        i,
        j;

        cin >> n;

        for (i = 0; i < n; i++) {
          cin >> tab[i];
        }

        for (i = 0, j = n - 1; i < n / 2; i++, j--) {
          temp = tab[i];
          tab[i] = tab[j];
          tab[j] = temp;
        }

        for (i = 0; i < n; i++)
          cout << tab[i] << " ";

        break;
      }
    }
  }
  return 0;
}

 

komentarz 16 stycznia 2020 przez BloodyBoy89 Początkujący (440 p.)

Dzięki wielkie działa laugh

Podobne pytania

0 głosów
0 odpowiedzi 158 wizyt
0 głosów
1 odpowiedź 721 wizyt
pytanie zadane 5 kwietnia 2020 w C# przez enero Początkujący (330 p.)

93,605 zapytań

142,529 odpowiedzi

322,999 komentarzy

63,094 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

Kursy INF.02 i INF.03
...