Zmiana funkcji goto na if

0

Mam wielką prosbe musze zmienic wszystkie funkcje goto na if-y czy ktoś był by mi wstanie pomóc ??

/*
Program Kalkulator macierzowy: dodaje, mnoży, odejmuje macierze o rozmiarze 3x3
*/

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<time.h>
using namespace std;

int main()
{
start:
int a=0,b=0,wybormenu=0, wierszA=0, wierszB=0,wa=0, ka=0, wb=0, kb=0, liczba=0;
char odpA;

cout<<"Kalkulator macierzowy"<<endl;

int macierzA[3][3];
int macierzB[3][3];
int macierzC[3][3];

srand(time(NULL));// losowanie liczb
system("cls");
//wypełnianie macierzy A:
for(int i=0;i<3; i++)
{ for(int j=0; j<3; j++)
{ a=rand()%100;
macierzA[i][j]=a;
}
}
//wypełnianie macierzy B:
for(int k=0;k<3;k++)
{ for(int l=0; l<3; l++)
{ b=rand()%100;
macierzB[k][l]=b;
}
}
poczatek:
cout<<"MACIERZ A:"<<endl;
//wypisanie macierzy A:
for(int i=0;i<3; i++)
{ for(int j=0; j<3; j++)
{
cout<<" "<<macierzA[i][j]<<" ";// [i],[j] tablica dwuwymiarowa rozmiar i j
}
cout<<endl;
}
cout<<endl<<"MACIERZ B:"<<endl;
//wypisanie macierzy B:
for(int k=0;k<3;k++)
{ for(int l=0; l<3; l++)
{
cout<<" "<<macierzB[k][l]<<" ";
}
cout<<endl;
}

cout<<"MEMU: "<<endl<<endl;
cout<<"1. Zmiana danych w macierzy A"<<endl;
cout<<"2. Zmiana danych w macierzy B"<<endl;
cout<<"3. Dodawanie obu macierzy"<<endl;
cout<<"4. Odejmowanie obu macierzy"<<endl;
cout<<"5. Mnozenie obu macierzy"<<endl;
cout<<"6. Mnozenie macierzy A przez liczbe"<<endl;
cout<<"7. Mnozenie macierzy B przez liczbe"<<endl;
cout<<"8. Zakoncz program"<<endl;
cout<<"9. Uruchom ponownie program"<<endl;
cout<<"TWOJ WYBOR: ";
cin>>wybormenu;

switch(wybormenu)
{
//zmiana danych w macierzy A
case 1: cout<<endl<<"Podaj jaka zmienna chcesz poprawić: "<<endl;
cout<<"Numer wiersza: "; cin>>wa; cout<<"Numer kolumny: "; cin>>ka;
cout<<endl;
cout<<"Podaj wartosc jaka chcesz wstawic: "; cin>>wierszA;
macierzA[wa-1][ka-1]=wierszA;
system("cls");
goto poczatek;
break;
//zmiana danych w macierzy B
case 2: cout<<endl<<"Podaj jaka zmienna chcesz poprawić: "<<endl;
cout<<"Numer wiersza: "; cin>>wb; cout<<"Numer kolumny: "; cin>>kb;
cout<<endl;
cout<<"Podaj wartosc jaka chcesz wstawic: "; cin>>wierszB;
macierzB[wb-1][kb-1]=wierszB;
system("cls");
goto poczatek;
break;
//doawanie macierzy
case 3: cout<<"Dodawanie macierzy"<<endl;
if(3!=3 || 3!=3)
{ cout<<"Zle dane";}
else
{
for(int i=0; i<3 ; i++)
{
for(int j=0; j<3; j++)
{
macierzC[i][j]=macierzA[i][j]+macierzB[i][j];
cout<<" "<<macierzC[i][j]<<" ";
}
cout<<endl;
}
}
cout<<"Czy podstawic macierz C za macierz A? (t/n)";
cin>>odpA;
if(odpA=='t'||odpA=='T')
{
for(int i=0; i<3 ; i++)
{
for(int j=0; j<3; j++)
{
macierzA[i][j]=macierzC[i][j];
}
}
}
system("cls");
goto poczatek;
break;
//odejmowanie macierzy
case 4: cout<<"Odejmowanie macierzy"<<endl;
if(3!=3 || 3!=3)
{ cout<<"Zle dane";}
else
{
for(int i=0; i<3 ; i++)
{
for(int j=0; j<3; j++)
{
macierzC[i][j]=macierzA[i][j]-macierzB[i][j];
cout<<" "<<macierzC[i][j]<<" ";
}
cout<<endl;
}
}
cout<<"Czy podstawic macierz C za macierz B? (t/n)";
cin>>odpA;
if(odpA=='t'||odpA=='T')
{
for(int i=0; i<3 ; i++)
{
for(int j=0; j<3; j++)
{
macierzB[i][j]=macierzC[i][j];
}
}
}
system("cls");
goto poczatek;
break;

     //mnożenie macierzy

case 5: cout<<"Mnozenie macierzy"<<endl;
if(3!=3 || 3!=3)
{ cout<<"Zle dane";}
else
{
for(int i=0; i<3 ; i++)
{
for(int j=0; j<3; j++)
{
macierzC[i][j]=macierzA[i][j]*macierzB[i][j];
cout<<" "<<macierzC[i][j]<<" ";
}
cout<<endl;
}
}
cout<<"Czy podstawic macierz C za macierz A? (t/n)";
cin>>odpA;
if(odpA=='t'||odpA=='T')
{
for(int i=0; i<3 ; i++)
{
for(int j=0; j<3; j++)
{
macierzA[i][j]=macierzC[i][j];
}
}
}
system("cls");
goto poczatek;
break;

     //mnozenie macierzy A przez liczbe

case 6: cout<<"Mnozenie macierzy A przez liczbe"<<endl;
cout<<"Przez jaka liczbe pomnozyc macierz?: ";
cin>>liczba;
for(int i=0; i<3 ; i++)
{
for(int j=0; j<3; j++)
{
macierzC[i][j]=macierzA[i][j]*liczba;
cout<<" "<<macierzC[i][j]<<" ";
}
cout<<endl;
}
cout<<"Czy podstawić macierz C za macierz A? (t/n)";
cin>>odpA;
if(odpA=='t'||odpA=='T')
{
for(int i=0; i<3 ; i++)
{
for(int j=0; j<3; j++)
{
macierzA[i][j]=macierzC[i][j];
}
}
}
system("cls");
goto poczatek;
break;

     //mnozenie macierzy B przez liczbe

case 7: cout<<"Mnozenie macierzy B przez liczbe"<<endl;
cout<<"Przez jaka liczbe pomnozyc macierz?: ";
cin>>liczba;
for(int i=0; i<3 ; i++)
{
for(int j=0; j<3; j++)
{
macierzC[i][j]=macierzB[i][j]*liczba;
cout<<" "<<macierzC[i][j]<<" ";
}
cout<<endl;
}
cout<<"Czy podstawić macierz C za macierz B? (t/n)";
cin>>odpA;
if(odpA=='t'||odpA=='T')
{
for(int i=0; i<3 ; i++)
{
for(int j=0; j<3; j++)
{
macierzB[i][j]=macierzC[i][j];
}
}
}
system("cls");
goto poczatek;
break;
//kończenie pracy programu
case 8: system("cls");
cout<<"Czy na pewno chcesz zakończyć program? (t/n)";
cin>>odpA;
if(odpA=='t'||odpA=='T')
{ goto koniec; }
else
{ system("cls");
goto poczatek;}
break;
//ponowne uruchomienie programu
case 9: system("cls");
cout<<"Czy na pewno chcesz ponownie uruchomic program? (t/n)";
cin>>odpA;
if(odpA=='t'||odpA=='T')
{ system("cls");
goto start; }
else
{ system("cls");
goto poczatek;}
break;

default: cout<<"Zly wybor, sproboj jeszcze raz:";
}
koniec:
cout<<"......."<<endl
<<"Nacisnij ENTER aby zakonczyc";
getchar();
cin.ignore();
return 0;
}

1

Idę sobie wydłubać oczy...


1.Wrzuć ten kod w odpowiednie znaczniki. 2.Sformatuj go poprawnie. 3.Między innymi to: ```cpp if(3!=3 || 3!=3) ``` Nie ma sensu.
Ten program trzeba cały napisać od nowa, inaczej ciężko będzie wywalić to `goto`.
1
  1. koniec
goto koniec;

możesz spokojnie wywalić bez niczego, bo po prostu wychodzi ci ze switcha, a to samo robi break.

  1. poczatek
poczatek:

zamień na:

do { int again=0; 
goto poczatek;

zamień na

again = 1;

na zaraz za końcem switcha dodaj:

} while(again);
  1. start
goto start;

zamień na:

return main();

albo gdy nie chcesz rekurencji, to na początku main daj:

do { int againMain=0; 

następnie:

goto start;

zamień na:

againMain = 1;

a za:

} while(again); // to co dodales za switchem w punkcie 2

dodaj jeszcze:

} while(againMain);

1 użytkowników online, w tym zalogowanych: 0, gości: 1