copier des éléments d'un tableau à l'autre
J'ai un crash d'erreur au moment de l'exécution et ne savez pas exactement quoi faire avec la fonction ou comment obtenir les données pour cela.
DÉTAILS DE LA FONCTION
Écrire une fonction qui accepte un int
tableau et size
comme arguments, puis créer un nouveau tableau qui est un élément plus grand que les donné. Le premier élément à 0
, puis de copier sur ce qui est dans le tableau des arguments de la nouvelle pile.
PRINCIPAUX DÉTAILS
Utiliser dans un programme de lecture int n
de l'entrée, puis lire int n
à partir d'un fichier de données nom data
en passant à l'élément de levier de vitesses, puis l'impression à la sortie (une par ligne).
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int element_shift(int elmts[], int size) {
int new_size = size + 1;
int shifter[new_size];
int *elmt_sft;
shifter[0] = 0;
for (int i = 1; i >= new_size; i++) {
shifter[i + 1] = elmts[i];
}
return *elmt_sft;
}
int main() {
fstream infile;
infile.open("D:\\data.txt");
int n, x;
infile >> x;
cout << "size of array: ";
cin >> n;
const int ARRAY_SIZE = n + x;
int elements[ARRAY_SIZE];
element_shift(elements, ARRAY_SIZE);
system("PAUSE");
return EXIT_SUCCESS;
}
- Je vous recommande la lecture d'un livre d'introduction à C++, regarde ici
- Quelques choses à penser: 1.
for(int i=1;i>=new_size;i++)
réfléchir sur les comparaisons (également garder à l'esprit les tableaux commencent à zéro). 2.return *elmt_sft;
Lorsque vous déréférencer ce pointeur, où est-il pointant vers?
Vous devez vous connecter pour publier un commentaire.
Tout d'abord
ARRAY_SIZE
déclaré dans la fonction principale n'est pas une constante mais variable définie au moment de l'exécution selon les entrées de l'utilisateur. Cela signifie que le tableauelements
devraient être créés dynamiquement. D'autre part, vous lire quelquesx
variable qui sert uniquement à définir la taille du tableau et n'a pas initialisé le tableau à tous. Je suppose que l'énoncé du problème est de lire la taille de la matrice à partir de l'entrée, les données du tableau à partir du fichier.Il y a aussi beaucoup d'erreurs dans element_shift fonction.
Votre code devrait ressembler à quelque chose de similaire à ceci:
Tout d'abord, vous passez beaucoup de temps à la création de la nouvelle tableau, mais ne peuvent pas revenir en arrière.
La
elmt_sft
pointeur n'est jamais affecté. Vous essayez d'accéder à la mémoire qui n'est pas là en utilisant*elmt_sft
. Cela peut être la cause de votre erreur. Aussi cette fonction n'a aucun moyen de retour de la nouvelle matrice deshifter
parce que cette variable est déclarés localement et disparaîtra lorsque la fonction se termine. Si vous voulez créer quelque chose de nouveau dans la fonction et en ont encore en mémoire une fois que la fonction se termine, je recommande de la création de la matrice de façon dynamique et en retournant un pointeur.C'est non testé mais devrait démarrer dans la bonne direction. Il sera de retour séparé allouée dynamiquement tableau qui ne sera pas remplacer votre autre.